37
38
39
40#include "implicit_f.inc"
41
42
43
44#include "mvsiz_p.inc"
45
46
47
48#include "parit_c.inc"
49
50
51
52 INTEGER, INTENT(IN) :: NFT
53 INTEGER JFT,JLT,IADR(3,*),NUVAR
54 my_real forx(*), fory(*), forz(*), xmom(*), ymom(*), zmom(*),
55 . sti(3,*),stir(3,*),fsky(8,lsky),fskyv(lsky,8),
56 . fx1(*),fx2(*),fy1(*),fy2(*),fz1(*),fz2(*),
57 . mx1(*),mx2(*),my1(*),my2(*),mz1(*),mz2(*),uvar(nuvar,*)
58 DOUBLE PRECISION XL(MVSIZ,3)
59
60
61
62 INTEGER I, II, N,J
63 my_real f11(mvsiz), f21(mvsiz), f31(mvsiz),
64 . m11(mvsiz), m21(mvsiz), m31(mvsiz),
65 . m12(mvsiz), m22(mvsiz), m32(mvsiz),
66 . xmom1, xmom2, ymom1, ymom2, zmom1, zmom2, m1,m2,m3,
67 . ex(9), xx
68
69
70
71
72
73 DO i=jft,jlt
74 DO j=1,9
75 ex(j) = uvar(21+j,i)
76 END DO
77 f11(i)=ex(1)*forx(i)+ex(4)*fory(i)+ex(7)*forz(i)
78 f21(i)=ex(2)*forx(i)+ex(5)*fory(i)+ex(8)*forz(i)
79 f31(i)=ex(3)*forx(i)+ex(6)*fory(i)+ex(9)*forz(i)
80 ENDDO
81
82
83
84 IF(ivector==1) THEN
85#include "vectorize.inc"
86 DO i=jft,jlt
87 ii = i+nft
88 n = iadr(1,ii)
89 fskyv(n,1)=f11(i)
90 fskyv(n,2)=f21(i)
91 fskyv(n,3)=f31(i)
92 fx1(i) = -f11(i)
93 fy1(i) = -f21(i)
94 fz1(i) = -f31(i)
95 fskyv(n,7)=sti(1,i)*two
96 n = iadr(2,ii)
97 fskyv(n,1)=-f11(i)
98 fskyv(n,2)=-f21(i)
99 fskyv(n,3)=-f31(i)
100 fx2(i) = f11(i)
101 fy2(i) = f21(i)
102 fz2(i) = f31(i)
103 fskyv(n,7)=sti(2,i)*two
104 ENDDO
105 ELSE
106 DO i=jft,jlt
107 ii = i+nft
108 n = iadr(1,ii)
109 fsky(1,n)=f11(i)
110 fsky(2,n)=f21(i)
111 fsky(3,n)=f31(i)
112 fx1(i) = -f11(i)
113 fy1(i) = -f21(i)
114 fz1(i) = -f31(i)
115 fsky(7,n)=sti(1,i)*two
116 n = iadr(2,ii)
117 fsky(1,n)=-f11(i)
118 fsky(2,n)=-f21(i)
119 fsky(3,n)=-f31(i)
120 fx2(i) = f11(i)
121 fy2(i) = f21(i)
122 fz2(i) = f31(i)
123 fsky(7,n)=sti(2,i)*two
124 ENDDO
125 ENDIF
126
127
128
129
130
131 DO i=jft,jlt
132 DO j=1,9
133 ex(j) = uvar(21+j,i)
134 END DO
135
136 m1 = half*(xl(i,2)*forz(i)-xl(i,3)*fory(i))
137 m2 = half*(xl(i,3)*forx(i)-xl(i,1)*forz(i))
138 m3 = half*(xl(i,1)*fory(i)-xl(i,2)*forx(i))
139
140 xmom1 = xmom(i) + m1
141 ymom1 = ymom(i) + m2
142 zmom1 = zmom(i) + m3
143 m11(i)=ex(1)*xmom1+ex(4)*ymom1+ex(7)*zmom1
144 m21(i)=ex(2)*xmom1+ex(5)*ymom1+ex(8)*zmom1
145 m31(i)=ex(3)*xmom1+ex(6)*ymom1+ex(9)*zmom1
146
147 xmom2 = xmom(i) - m1
148 ymom2 = ymom(i) - m2
149 zmom2 = zmom(i) - m3
150 m12(i)=ex(1)*xmom2+ex(4)*ymom2+ex(7)*zmom2
151 m22(i)=ex(2)*xmom2+ex(5)*ymom2+ex(8)*zmom2
152 m32(i)=ex(3)*xmom2+ex(6)*ymom2+ex(9)*zmom2
153
154 xx = xl(i,1)*xl(i,1) + xl(i,2)*xl(i,2) + xl(i,3)*xl(i,3)
155 stir(1,i) = stir(1,i) + sti(2,i)*xx
156 stir(2,i) = stir(2,i) + sti(1,i)*xx
157 ENDDO
158
159
160
161 IF(ivector==1) THEN
162#include "vectorize.inc"
163 DO i=jft,jlt
164 ii = i+nft
165 n = iadr(1,ii)
166 fskyv(n,4)=m11(i)
167 fskyv(n,5)=m21(i)
168 fskyv(n,6)=m31(i)
169 mx1(i) = -m11(i)
170 my1(i) = -m21(i)
171 mz1(i) = -m31(i)
172 fskyv(n,8)=stir(1,i)
173 n = iadr(2,ii)
174 fskyv(n,4)=-m12(i)
175 fskyv(n,5)=-m22(i)
176 fskyv(n,6)=-m32(i)
177 mx2(i) = m12(i)
178 my2(i) = m22(i)
179 mz2(i) = m32(i)
180 fskyv(n,8)=stir(2,i)
181 ENDDO
182 ELSE
183 DO i=jft,jlt
184 ii = i+nft
185 n = iadr(1,ii)
186 fsky(4,n)=m11(i)
187 fsky(5,n)=m21(i)
188 fsky(6,n)=m31(i)
189 mx1(i) = -m11(i)
190 my1(i) = -m21(i)
191 mz1(i) = -m31(i)
192 fsky(8,n)=stir(1,i)
193 n = iadr(2,ii)
194 fsky(4,n)=-m12(i)
195 fsky(5,n)=-m22(i)
196 fsky(6,n)=-m32(i)
197 mx2(i) = m12(i)
198 my2(i) = m22(i)
199 mz2(i) = m32(i)
200 fsky(8,n)=stir(2,i)
201 ENDDO
202 ENDIF
203
204 RETURN