35
36
37
38#include "implicit_f.inc"
39
40
41
42#include "mvsiz_p.inc"
43
44
45
46 INTEGER, INTENT(INOUT) :: LFT
47 INTEGER, INTENT(INOUT) :: LLT
48 INTEGER, INTENT(INOUT) :: NFT
49 INTEGER IRECT(4,*),MSR(*),NSV(*), IRTL(*), IRTLO(*), LOLD(*)
50
52 . v(3,*),cst(2,*),vni(*),vnt(*)
53 my_real,
DIMENSION(MVSIZ),
INTENT(IN) :: n1,n2,n3,ssc,ttc,xface
54 my_real,
DIMENSION(MVSIZ),
INTENT(IN) :: h1,h2,h3,h4
55
56
57
58
59
60
61 INTEGER I,L,IL,IG,NN
62
64 . vpx(llt),vpy(llt),vpz(llt),vix(llt),viy(llt),viz(llt),
65 . vx1(llt),vy1(llt),vz1(llt),vx2(llt),vy2(llt),vz2(llt),
66 . vx3(llt),vy3(llt),vz3(llt),vx4(llt),vy4(llt),vz4(llt)
68 . dvx,dvy,dvz,vtx,vty,vtz
69
70 DO i=lft,llt
71 il = i+nft
72
73 IF (xface(i) == zero) THEN
74 irtlo(il) = 0
75 lold(i) = 0
76 ELSE
77 lold(i) = iabs(irtlo(il))
78 IF (lold(i) == 0) THEN
79 irtlo(il) = irtl(il)*xface(i)
80 cst(1,il) = ssc(i)
81 cst(2,il) = ttc(i)
82 ENDIF
83 ENDIF
84 ENDDO
85
86 DO i=lft,llt
87 il = i+nft
88 IF (lold(i) == 0) THEN
89 vni(i) = zero
90 vnt(i) = zero
91 ELSE
92 ig = nsv(il)
93 l = irtl(il)
94
95 vix(i) = v(1,ig)
96 viy(i) = v(2,ig)
97 viz(i) = v(2,ig)
98
99 nn = msr(irect(1,lold(i)))
100 vx1(i) = v(1,nn)
101 vy1(i) = v(2,nn)
102 vz1(i) = v(2,nn)
103 nn = msr(irect(2,lold(i)))
104 vx2(i) = v(1,nn)
105 vy2(i) = v(2,nn)
106 vz2(i) = v(2,nn)
107 nn = msr(irect(3,lold(i)))
108 vx3(i) = v(1,nn)
109 vy3(i) = v(2,nn)
110 vz3(i) = v(2,nn)
111 nn = msr(irect(4,lold(i)))
112 vx4(i) = v(1,nn)
113 vy4(i) = v(2,nn)
114 vz4(i) = v(2,nn)
115
116 vpx(i) = h1(i)*vx1(i)+h2(i)*vx2(i)+h3(i)*vx3(i)+h4(i)*vx4(i)
117 vpy(i) = h1(i)*vy1(i)+h2(i)*vy2(i)+h3(i)*vy3(i)+h4(i)*vy4(i)
118 vpz(i) = h1(i)*vz1(i)+h2(i)*vz2(i)+h3(i)*vz3(i)+h4(i)*vz4(i)
119 dvx = vix(i)-vpx(i)
120 dvy = viy(i)-vpy(i)
121 dvz = viz(i)-vpz(i)
122
123 vni(i) = n1(i) * dvx + n2(i) * dvy + n3(i) * dvz
124
125 vtx = dvx - vni(i)*n1(i)
126 vty = dvy - vni(i)*n2(i)
127 vtz = dvz - vni(i)*n3(i)
128 vnt(i) = sqrt(vtx**2 + vty**2 + vtz**2)
129 ENDIF
130 ENDDO
131
132 RETURN