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