38
39
40
41#include "implicit_f.inc"
42
43
44
45#include "mvsiz_p.inc"
46
47
48
49#include "comlock.inc"
50#include "com01_c.inc"
51#include "com08_c.inc"
52#include "param_c.inc"
53
54
55
56 INTEGER LFT, LLT, NFT, NSEG, N1, N2, N3, ITYPE,
57 INTEGER NSTRF(2,*),IXP(NIXP,*),IFRAM,NNOD,NOD(*)
58 INTEGER IPARSENS
59 my_real x(3,*), fsav(nthvki), fopta(6), secfcum(7,*),
60 . fx(mvsiz,2), fy(mvsiz,2), fz(mvsiz,2), mx(mvsiz,2),
61 . my(mvsiz,2), mz(mvsiz,2),
62 . v(3,*), vr(3,*),ms(*),xsec(4,3)
63 DOUBLE PRECISION FBSAV6(12,6)
64
65
66
67 INTEGER JJJ(MVSIZ), UNPACK(3,2),
68 . NSA, , I, K, I1, I2, IPACK, N, JJ
70 . fx1(mvsiz), fy1(mvsiz), fz1(mvsiz),
71 . mx1(mvsiz), my1(mvsiz), mz1(mvsiz
72 . dy1(mvsiz), dz1(mvsiz),fst(16),
73 . msx, msy, msz, xx1, yy1, zz1, xx2, yy2, zz2, xx3, yy3, zz3,
74 . xx4, yy4, zz4, xx5, yy5, zz5, xx6, yy6, zz6, xxn, yyn, zzn,
75 . d13, xxc, yyc, zzc, fsx, fsy, fsz, fn, fsnx, fsny, fsnz, fstx,
76 . fsty, fstz, dmx, dmy, dmz
78 . msxphi, msyphi, mszphi, fsxphi,
79 . fsyphi, fszphi, fnphi, fsnxphi, fsnyphi, fsnzphi, fstxphi,
80 . fstyphi, fstzphi, dmxphi, dmyphi, dmzphi
82 . xx1phi,xx3phi,xx4phi,xx5phi,xx6phi
84 . yy1phi,yy3phi,yy4phi,yy5phi,yy6phi
86 . zz1phi,zz3phi,zz4phi,zz5phi,zz6phi
88 . al4phi,al5phi,al6phi,xx5t,yy5t,zz5t
90 . al4,al5,al6
91 my_real,
DIMENSION(:,:),
ALLOCATABLE :: fstparit
92
93 DATA unpack/1,0,1,
94 . 0,1,1/
95
96 IF(nseg==0)RETURN
97 IF(lft+nft>nstrf(1,nseg))RETURN
98 IF(llt+nft<nstrf(1,1 ))RETURN
99
100 nsa=0
101
102 DO j=1,nseg
103 i=nstrf(1,j)-nft
104 IF (lft>i) cycle
105 IF (llt<i) EXIT
106 nsa=nsa+1
107 jjj(nsa)=j
108 ENDDO
109
110 IF(nsa==0)RETURN
111
112 IF(itype+nsint==0)THEN
113
114 DO i=1,16
115 fst(i)=zero
116 ENDDO
117
118 IF(iparsens/=0) THEN
119 ALLOCATE(fstparit(12,nsa))
120 DO j=1,nsa
121 DO i=1,12
122 fstparit(i,j) = zero
123 ENDDO
124 ENDDO
125 ENDIF
126
127 IF(nspmd==1) THEN
129 2 xx4, yy4, zz4, xx5, yy5, zz5, xx6, yy6, zz6,
130 3 xxn, yyn, zzn,ifram,nnod,nod,ms)
131 ELSE
133 2 xx5, yy5, zz5, xx6 , yy6 , zz6 ,
134 3 xxn, yyn, zzn, ifram, n1 , xsec)
135 END IF
136
137 IF(iparsens==0) THEN
138 DO k=1,nsa
139 j = jjj(k)
140 i = nstrf(1,j)-nft
141 ipack = nstrf(2,j)
142 DO i1 = 1,2
143 IF(unpack(ipack,i1)/=0)THEN
144 fx1(k)=fx(i,i1)
145 fy1(k)=fy(i,i1)
146 fz1(k)=fz(i,i1)
147
148 mx1(k)=mx(i,i1)
149 my1(k)=my(i,i1)
150 mz1(k)=mz(i,i1)
151
152 n = ixp(i1+1,nstrf(1,j))
153 dx1(k)=x(1,n)
154 dy1(k)=x(2,n)
155 dz1(k)=x(3,n)
156
157 fsx=fx1(k)
158 fsy=fy1(k)
159 fsz=fz1(k)
160
161 fn=fsx*xxn+fsy*yyn+fsz*zzn
162 fsnx=fn*xxn
163 fsny=fn*yyn
164 fsnz=fn*zzn
165 fstx=fsx-fsnx
166 fsty=fsy-fsny
167 fstz=fsz-fsnz
168
169 dx1(k)=dx1(k)-xxc
170 dy1(k)=dy1(k)-yyc
171 dz1(k)=dz1(k)-zzc
172
173 msx =dy1(k)*fz1(k)-dz1(k)*fy1(k)
174 msy =dz1(k)*fx1(k)-dx1(k)*fz1(k)
175 msz =dx1(k)*fy1(k)-dy1(k)*fx1(k)
176
177 msx =msx+mx1(k)
178 msy =msy+my1(k)
179 msz =msz+mz1(k)
180
181 dmx =msx*xx4+msy*yy4+msz*zz4
182 dmy =msx*xx5+msy*yy5+msz*zz5
183 dmz =msx*xx6+msy*yy6+msz*zz6
184
185 fst(1)=fst(1)+fsnx
186 fst(2)=fst(2)+fsny
187 fst(3)=fst(3)+fsnz
188 fst(4)=fst(4)+fstx
189 fst(5)=fst(5)+fsty
190 fst(6)=fst(6)+fstz
191 fst(7)=fst(7)+dmx
192 fst(8)=fst(8)+dmy
193 fst(9)=fst(9)+dmz
194 fst(10) = fst(10) + fsx
195 fst(11) = fst(11) + fsy
196 fst(12) = fst(12) + fsz
197 fst(13) = fst(13) + msx
198 fst(14) = fst(14) + msy
199 fst(15) = fst(15) + msz
200 fst(16)=fst(16)
201 . +fx1(k)*v(1,n) +fy1(k)*v(2,n) +fz1(k)*v(3,n)
202 . +mx1(k)*vr(1,n)+my1(k)*vr(2,n)+mz1(k)*vr(3,n)
203
204 ENDIF
205 ENDDO
206 ENDDO
207 ELSE
208 DO k=1,nsa
209 j = jjj(k)
210 i = nstrf(1,j)-nft
211 ipack = nstrf(2,j)
212 DO i1 = 1,2
213 IF(unpack(ipack,i1)/=0)THEN
214 fx1(k)=fx(i,i1)
215 fy1(k)=fy(i,i1)
216 fz1(k)=fz(i,i1)
217
218 mx1(k)=mx(i,i1)
219 my1(k)=my(i,i1)
220 mz1(k)=mz(i,i1)
221
222 n = ixp(i1+1,nstrf(1,j))
223 dx1(k)=x(1,n)
224 dy1(k)=x(2,n)
225 dz1(k)=x(3,n)
226
227 fsx=fx1(k)
228 fsy=fy1(k)
229 fsz=fz1(k)
230
231 fn=fsx*xxn+fsy*yyn+fsz*zzn
232 fsnx=fn*xxn
233 fsny=fn*yyn
234 fsnz=fn*zzn
235 fstx=fsx-fsnx
236 fsty=fsy-fsny
237 fstz=fsz-fsnz
238
239 dx1(k)=dx1(k)-xxc
240 dy1(k)=dy1(k)-yyc
241 dz1(k)=dz1(k)-zzc
242
243 msx =dy1(k)*fz1(k)-dz1(k)*fy1(k)
244 msy =dz1(k)*fx1(k)-dx1(k)*fz1(k)
245 msz =dx1(k)*fy1(k)-dy1(k)*fx1(k)
246
247 msx =msx+mx1(k)
248 msy =msy+my1(k)
249 msz =msz+mz1(k)
250
251 dmx =msx*xx4+msy*yy4+msz*zz4
252 dmy =msx*xx5+msy*yy5+msz*zz5
253 dmz =msx*xx6+msy*yy6+msz*zz6
254
255 fst(1)=fst(1)+fsnx
256 fst(2)=fst(2)+fsny
257 fst(3)=fst(3)+fsnz
258 fst(4)=fst(4)+fstx
259 fst(5)=fst(5)+fsty
260 fst(6)=fst(6)+fstz
261 fst(7)=fst(7)+dmx
262 fst(8)=fst(8)+dmy
263 fst(9)=fst(9)+dmz
264 fst(10) = fst(10) + fsx
265 fst(11) = fst(11) + fsy
266 fst(12) = fst(12) + fsz
267 fst(13) = fst(13) + msx
268 fst(14) = fst(14) + msy
269 fst(15) = fst(15) + msz
270 fst(16)=fst(16)
271 . +fx1(k)*v(1,n) +fy1(k)*v(2,n) +fz1(k)*v(3,n)
272 . +mx1(k)*vr(1,n)+my1(k)*vr(2,n)+mz1(k)*vr(3,n)
273
274 fstparit(1,k)=fstparit(1,k)+fsnx
275 fstparit(2,k)=fstparit(2,k)+fsny
276 fstparit(3,k)=fstparit(3,k)+fsnz
277 fstparit(4,k)=fstparit(4,k)+fstx
278 fstparit(5,k)=fstparit(5,k)+fsty
279 fstparit(6,k)=fstparit(6,k)+fstz
280 fstparit(7,k)=fstparit(7,k)+msx
281 fstparit(8,k)=fstparit(8,k)+msy
282 fstparit(9,k)=fstparit(9,k)+msz
283 fstparit(10,k)=fstparit(10,k) +
284 . ( xx4*(fsnx+fstx) +
285 . yy4*(fsny+fsty) +
286 . zz4*(fsnz+fstz) )
287 fstparit(11,k)=fstparit(11,k) +
288 . ( xx5*(fsnx+fstx) +
289 . yy5*(fsny+fsty) +
290 . zz5*(fsnz+fstz) )
291 fstparit(12,k)=fstparit(12,k) +
292 . ( xx6*(fsnx+fstx) +
293 . yy6*(fsny+fsty) +
294 . zz6*(fsnz+fstz) )
295 ENDIF
296 ENDDO
297 ENDDO
298
300
301 DEALLOCATE(fstparit)
302 ENDIF
303
304#include "lockon.inc"
305 fsav(1)=fsav(1)+dt12*fst(1)
306 fsav(2)=fsav(2)+dt12*fst(2)
307 fsav(3)=fsav(3)+dt12*fst(3)
308 fsav(4)=fsav(4)+dt12*fst(4)
309 fsav(5)=fsav(5)+dt12*fst(5)
310 fsav(6)=fsav(6)+dt12*fst(6)
311 fsav(7)=fsav(7)+dt12*fst(7)
312 fsav(8)=fsav(8)+dt12*fst(8)
313 fsav(9)=fsav(9)+dt12*fst(9)
314 fsav(10)=fsav(10)+dt12*fst(16)
315 fsav(31)=fsav(31)+dt12*fst(13)
316 fsav(32)=fsav(32)+dt12*fst(14)
317 fsav(33)=fsav(33)+dt12*fst(15)
318 fsav(34)=fsav(34) + dt12* (xx4*(fst(1)+fst(4)) +
319 . yy4*(fst(2)+fst(5)) + zz4*(fst(3)+fst(6)))
320 fsav(35)=fsav(35) + dt12* (xx5*(fst(1)+fst(4)) +
321 . yy5*(fst(2)+fst(5)) + zz5*(fst(3)+fst(6)))
322 fsav(36)=fsav(36) + dt12* (xx6*(fst(1)+fst(4)) +
323 . yy6*(fst(2)+fst(5)) + zz6*(fst(3)+fst(6)))
324 fsav(37)=xxc
325 fsav(38)=yyc
326 fsav(39)=zzc
327 fopta(1) = fopta(1) + fst(10)
328 fopta(2) = fopta(2) + fst(11)
329 fopta(3) = fopta(3) + fst(12)
330 fopta(4) = fopta(4) + fst(13)
331 fopta(5) = fopta(5) + fst(14)
332 fopta(6) = fopta(6) + fst(15)
333#include "lockoff.inc"
334
335 ELSE
336
337#include "lockon.inc"
338 DO i1 = 1,2
339 DO k=1,nsa
340 j = jjj(k)
341 i = nstrf(1,j)-nft
342 ipack = nstrf(2,j)
343 IF(unpack(ipack,i1)/=0)THEN
344 n = ixp(i1+1,nstrf(1,j))
345 secfcum(1,n)=secfcum(1,n)+fx(i,i1)
346 secfcum(2,n)=secfcum(2,n)+fy(i,i1)
347 secfcum(3,n)=secfcum(3,n)+fz(i,i1)
348 secfcum(5,n)=secfcum(5,n)+mx(i,i1)
349 secfcum(6,n)=secfcum(6,n)+my(i,i1)
350 secfcum(7,n)=secfcum(7,n)+mz(i,i1)
351 ENDIF
352 ENDDO
353 ENDDO
354#include "lockoff.inc"
355 ENDIF
356
357 RETURN
subroutine sum_6_float_sect(f, a, b, jft, jlt, f6, d, e)
subroutine section_skew(n1, n2, n3, x, xxc, yyc, zzc, xx4, yy4, zz4, xx5, yy5, zz5, xx6, yy6, zz6, xxn, yyn, zzn, ifram, nnod, nod, ms)
subroutine section_skewp(xxc, yyc, zzc, xx4, yy4, zz4, xx5, yy5, zz5, xx6, yy6, zz6, xxn, yyn, zzn, ifram, n1, xsec)