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