38
39
40
41
42#include "implicit_f.inc"
43
44
45
46 INTEGER, INTENT(INOUT) :: LFT
47 INTEGER, INTENT(INOUT) :: LLT
48 INTEGER IGIMP,NTY
51 . x1(*), x2(*), x3(*), x4(*), y1(*), y2(*), y3(*), y4(*),
52 . z1(*), z2(*), z3(*), z4(*), xi(*), yi(*), zi(*), xp(*), yp(*),
53 . zp(*), ans(*), alp(*), n1(*), n2(*), n3(*), ssc(*), ttc(*),
54 . xface(*), h1(*), h2(*), h3(*), h4(*)
55
56
57
58
59
60
61
62 INTEGER I
63
64
65
66 DO i=lft,llt
67 h1(i) = zero
68 h2(i) = zero
69 h3(i) = zero
70 h4(i) = zero
71 xp(i) = zero
72 yp(i) = zero
73 zp(i) = zero
74 ans(i) = zero
75 dist(i) = zero
76
77
78 IF (xface(i) == zero) cycle
79 IF (abs(ssc(i))>one+alp(i) .OR. abs(ttc(i))>one+alp(i)) THEN
80 xface(i)=zero
81 ELSE
82 IF(abs(ssc(i)) > one) ssc(i)=ssc(i)/abs(ssc(i))
83 IF(abs(ttc(i)) > one) ttc(i)=ttc(i)/abs(ttc(i))
84 ENDIF
85 END DO
86
87 DO i=lft,llt
88 h1(i) = fourth*(one-ttc(i))*(one-ssc(i))
89 h2(i) = fourth*(one-ttc(i))*(one+ssc(i))
90 h3(i) = fourth*(one+ttc(i))*(one+ssc(i))
91 h4(i) = fourth*(one+ttc(i))*(one-ssc(i))
92 END DO
93
94 DO i=lft,llt
95 xp(i)=h1(i)*x1(i)+h2(i)*x2(i)+h3(i)*x3(i)+h4(i)*x4(i)
96 yp(i)=h1(i)*y1(i)+h2(i)*y2(i)+h3(i)*y3(i)+h4(i)*y4(i)
97 zp(i)=h1(i)*z1(i)+h2(i)*z2(i)+h3(i)*z3(i)+h4(i)*z4(i)
98 END DO
99
100 DO i=lft,llt
101 ans(i)= n1(i)*(xi(i)-xp(i))
102 . +n2(i)*(yi(i)-yp(i))
103 . +n3(i)*(zi(i)-zp(i))
104 END DO
105 IF (nty == 8) THEN
106 DO i=lft,llt
107 dist(i) = ans(i)
108 ENDDO
109 ENDIF
110
111 RETURN