35 2 NTY ,NIN ,INACTI ,NSN ,
36 3 NMN ,NSV ,MSR ,XSAV ,
37 4 STFA ,XSLV_G ,XMSR_G ,VSLV_G ,
38 5 VMSR_G ,DAANC6 ,DXANC ,DVANC ,
39 6 NSNE ,NMNE ,NLINSA ,NLINMA ,
40 7 NSVE ,MSRE ,XSAVE ,PENISE ,
41 8 PENIME ,STFES ,XA ,VA ,
42 9 NLN ,NLG ,PENIS ,PENIM ,
43 A PENIA ,NRTM ,IXLINS ,DXANCG ,
44 B IKINE ,DIAG_SMS,ALPHAK ,DAANC ,
54#include
"implicit_f.inc"
71 TYPE (OUTPUT_) :: OUTPUT
72 INTEGER NSN,NMN,ITASK,NSV(NSN),MSR(NMN), NIN ,NTY ,INACTI,
73 . NLINSA,NLINMA,NLN,NLG(NLN),NRTM
74 INTEGER NSNE,NMNE,NSVE(NSNE),MSRE(NMNE),IXLINS(2,*),IKINE(NUMNOD)
76 . X(3,*), V(3,*), XSAV(3,*), STFA(*),
77 . XSLV_G(*),XMSR_G(*), VSLV_G(*), VMSR_G(*), MS(*), DIAG_SMS(*),
78 . XSAVE(3,*), STFES(*),PENISE(2,NLINSA),PENIME(2,NLINMA),
79 . PENIS(2,NSN),PENIM(2,NRTM),PENIA(5,NLN),STFAC
81 . DVANC(3,*) ,DXANC(3,*),DAANC(3,*) ,DXANCG(3,*)
83 . va(3,nsn) ,xa(3,nsn),alphak(3,nln)
86 TYPE (H3D_DATABASE) :: H3D_DATA
90 INTEGER NSNF,NMNF,NSNL,NMNL,I, II,NLNF,NLNL,IL,IG,NRTMF,NRTML
91 INTEGER NSNEF,NMNEF,NSNEL,NMNEL,NLINSAF,NLINSAL,NLINMAF,NLINMAL
94 . aaa,da(3), xslv(6), xmsr(6), vslv(6), vmsr(6) ,amass
126 nlnf = 1 + itask*nln / nthread
127 nlnl = (itask+1)*nln / nthread
128 nsnf = 1 + itask*nsn / nthread
129 nsnl = (itask+1)*nsn / nthread
130 nmnf = 1 + itask*nmn / nthread
131 nmnl = (itask+1)*nmn / nthread
133 nrtmf = 1 + itask*nrtm / nthread
134 nrtml = (itask+1)*nrtm / nthread
136 nsnef = 1 + itask*nsne / nthread
137 nsnel = (itask+1)*nsne / nthread
138 nmnef = 1 + itask*nmne / nthread
139 nmnel = (itask+1)*nmne / nthread
141 nlinsaf = 1 + itask * nlinsa / nthread
142 nlinsal = (itask+1) * nlinsa / nthread
143 nlinmaf = 1 + itask * nlinma / nthread
144 nlinmal = (itask+1) * nlinma / nthread
152 amass =
max(two,stfac+sqrt(two*stfac))
156 IF(idtmins==0.AND.idtmins_int==0)
THEN
159 irby = ikine(ig) - (ikine(ig)/2)*2
160 IF(ms(ig) > zero .and. irby /= 1)
THEN
164 aaa = dt12/(amass*ms(ig))
169 IF(alphak(2,i)<zero)
THEN
170 da(1) = daanc6(1,1,i) + daanc6(1,2,i) + daanc6(1,3,i)
171 . + daanc6(1,4,i) + daanc6(1,5,i) + daanc6(1,6,i)
173 da(2) = daanc6(2,1,i) + daanc6(2,2,i) + daanc6(2,3,i)
174 . + daanc6(2,4,i) + daanc6(2,5,i) + daanc6(2,6,i)
176 da(3) = daanc6(3,1,i) + daanc6(3,2,i) + daanc6(3,3,i)
177 . + daanc6(3,4,i) + daanc6(3,5,i) + daanc6(3,6,i)
203 dvanc(1,i) = dvanc(1,i) + da(1)*aaa
204 dvanc(2,i) = dvanc(2,i) + da(2)*aaa
205 dvanc(3,i) = dvanc(3,i) + da(3)*aaa
206 dxanc(1,i) = dxanc(1,i) + dvanc(1,i)*dt1
207 dxanc(2,i) = dxanc(2,i) + dvanc(2,i)*dt1
208 dxanc(3,i) = dxanc(3,i) + dvanc(3,i)*dt1
221 va(1,i) = v(1,ig) + dvanc(1,i)
222 va(2,i) = v(2,ig) + dvanc(2,i)
223 va(3,i) = v(3,ig) + dvanc(3,i)
224 xa(1,i) = x(1,ig) + dxanc(1,i)
225 xa(2,i) = x(2,ig) + dxanc(2,i)
226 xa(3,i) = x(3,ig) + dxanc(3,i)
233 irby = ikine(ig) - (ikine(ig)/2)*2
234 IF(diag_sms(ig) > zero .and. irby /= 1)
THEN
236 aaa = dt12/(amass*diag_sms(ig))
241 IF(alphak(2,i)<zero)
THEN
242 da(1) = daanc6(1,1,i) + daanc6(1,2,i) + daanc6(1,3,i)
243 . + daanc6(1,4,i) + daanc6(1,5,i) + daanc6(1,6,i)
245 da(2) = daanc6(2,1,i) + daanc6(2,2,i) + daanc6(2,3,i)
246 . + daanc6(2,4,i) + daanc6(2,5,i) + daanc6(2,6,i)
248 da(3) = daanc6(3,1,i) + daanc6(3,2,i) + daanc6(3,3,i)
249 . + daanc6(3,4,i) + daanc6(3,5,i) + daanc6(3,6,i)
273 dvanc(1,i) = dvanc(1,i) + da(1)*aaa
274 dvanc(2,i) = dvanc(2,i) + da(2)*aaa
275 dvanc(3,i) = dvanc(3,i) + da(3)*aaa
276 dxanc(1,i) = dxanc(1,i) + dvanc(1,i)*dt1
277 dxanc(2,i) = dxanc(2,i) + dvanc(2,i)*dt1
278 dxanc(3,i) = dxanc(3,i) + dvanc(3,i)*dt1
291 va(1,i) = v(1,ig) + dvanc(1,i)
292 va(2,i) = v(2,ig) + dvanc(2,i)
293 va(3,i) = v(3,ig) + dvanc(3,i)
294 xa(1,i) = x(1,ig) + dxanc(1,i)
295 xa(2,i) = x(2,ig) + dxanc(2,i)
296 xa(3,i) = x(3,ig) + dxanc(3,i)
301 IF(anim_v(15)+outp_v(15)+h3d_data%N_VECT_DXANC >0.AND.
302 . ((tt>=output%TANIM .AND. tt<=output%TANIM_STOP).OR.tt>=toutp.OR.(tt>=h3d_data%TH3D.AND.tt<=h3d_data%TH3D_STOP
303 . (manim>=4.AND.manim<=15).OR.h3d_data%MH3D/=0))
THEN
306 dxancg(1,ig) = dxanc(1,i)
307 dxancg(2,ig) = dxanc(2,i)
308 dxancg(3,ig) = dxanc(3,i)
314 IF(inacti==5.OR.inacti==6)
THEN
315 IF(nspmd > 1 .AND. tt > zero)
THEN
326 penia(4,i) =
min(penia(4,i),penia(5,i))
331 penis(1,i)=
min(penis(1,i),penis(2,i))
335 penim(1,i)=
min(penim(1,i),penim(2,i))
340 penise(1,i)=
min(penise(1,i),penise(2,i))
344 penime(1,i)=
min(penime(1,i),penime(2,i))
374#include "vectorize.inc"
377 IF(stfa(il)/=zero)
THEN
379 xslv(1)=
max(xslv(1),xa(1,il)-xsav(1,i))
380 xslv(2)=
max(xslv(2),xa(2,il)-xsav(2,i))
381 xslv(3)=
max(xslv(3),xa(3,il)-xsav(3,i))
382 xslv(4)=
min(xslv(4),xa(1,il)-xsav(1,i))
383 xslv(5)=
min(xslv(5),xa(2,il)-xsav(2,i))
384 xslv(6)=
min(xslv(6),xa(3,il)-xsav(3,i))
386 vslv(1)=
max(vslv(1),va(1,il))
387 vslv(2)=
max(vslv(2),va(2,il))
388 vslv(3)=
max(vslv(3),va(3,il))
389 vslv(4)=
min(vslv(4),va(1,il))
390 vslv(5)=
min(vslv(5),va(2,il))
391 vslv(6)=
min(vslv(6),va(3,il))
396#include "vectorize.inc"
401 xmsr(1)=
max(xmsr(1),xa(1,il)-xsav(1,ii))
402 xmsr(2)=
max(xmsr(2),xa(2,il)-xsav(2,ii))
403 xmsr(3)=
max(xmsr(3),xa(3,il)-xsav(3,ii))
404 xmsr(4)=
min(xmsr(4),xa(1,il)-xsav(1,ii))
405 xmsr(5)=
min(xmsr(5),xa(2,il)-xsav(2,ii))
406 xmsr(6)=
min(xmsr(6),xa(3,il)-xsav(3,ii))
408 vmsr(1)=
max(vmsr(1),va(1,il))
409 vmsr(2)=
max(vmsr(2),va(2,il))
410 vmsr(3)=
max(vmsr(3),va(3,il))
411 vmsr(4)=
min(vmsr(4),va(1,il))
412 vmsr(5)=
min(vmsr(5),va(2,il))
413 vmsr(6)=
min(vmsr(6),va(3,il))
424 xslv(1)=
max(xslv(1),xa(1,il)-xsave(1,i))
425 xslv(2)=
max(xslv(2),xa(2,il)-xsave(2,i))
426 xslv(3)=
max(xslv(3),xa(3,il)-xsave(3,i))
427 xslv(4)=
min(xslv(4),xa(1,il)-xsave(1,i))
428 xslv(5)=
min(xslv(5),xa(2,il)-xsave(2,i))
429 xslv(6)=
min(xslv(6),xa(3,il)-xsave(3,i))
431 vslv(1)=
max(vslv(1),va(1,il))
432 vslv(2)=
max(vslv(2),va(2,il))
433 vslv(3)=
max(vslv(3),va(3,il))
434 vslv(4)=
min(vslv(4),va(1,il))
435 vslv(5)=
min(vslv(5),va(2,il))
436 vslv(6)=
min(vslv(6),va(3,il))
444 xmsr(1)=
max(xmsr(1),xa(1,il)-xsave(1,ii))
445 xmsr(2)=
max(xmsr(2),xa(2,il)-xsave(2,ii))
446 xmsr(3)=
max(xmsr(3),xa(3,il)-xsave(3,ii))
447 xmsr(4)=
min(xmsr(4),xa(1,il)-xsave(1,ii))
448 xmsr(5)=
min(xmsr(5),xa(2,il)-xsave(2,ii))
449 xmsr(6)=
min(xmsr(6),xa(3,il)-xsave(3,ii))
451 vmsr(1)=
max(vmsr(1),va(1,il))
452 vmsr(2)=
max(vmsr(2),va(2,il))
453 vmsr(3)=
max(vmsr(3),va(3,il))
454 vmsr(4)=
min(vmsr(4),va(1,il))
455 vmsr(5)=
min(vmsr(5),va(2,il))
456 vmsr(6)=
min(vmsr(6),va(3,il))
463 xslv_g(1)=
max(xslv_g(1),xslv(1))
464 xslv_g(2)=
max(xslv_g(2),xslv(2))
465 xslv_g(3)=
max(xslv_g(3),xslv(3))
466 xslv_g(4)=
min(xslv_g(4),xslv(4))
467 xslv_g(5)=
min(xslv_g(5),xslv(5))
468 xslv_g(6)=
min(xslv_g(6),xslv(6))
469 xmsr_g(1)=
max(xmsr_g(1),xmsr(1))
470 xmsr_g(2)=
max(xmsr_g(2),xmsr(2))
471 xmsr_g(3)=
max(xmsr_g(3),xmsr(3))
472 xmsr_g(4)=
min(xmsr_g(4),xmsr(4))
473 xmsr_g(5)=
min(xmsr_g(5),xmsr(5))
474 xmsr_g(6)=
min(xmsr_g(6),xmsr(6))
476 vslv_g(1)=
max(vslv_g(1),vslv(1))
477 vslv_g(2)=
max(vslv_g(2),vslv(2))
478 vslv_g(3)=
max(vslv_g(3),vslv(3))
479 vslv_g(4)=
min(vslv_g(4),vslv(4))
480 vslv_g(5)=
min(vslv_g(5),vslv(5))
481 vslv_g(6)=
min(vslv_g(6),vslv(6))
482 vmsr_g(1)=
max(vmsr_g(1),vmsr(1))
483 vmsr_g(2)=
max(vmsr_g(2),vmsr(2))
484 vmsr_g(3)=
max(vmsr_g(3),vmsr(3))
485 vmsr_g(4)=
min(vmsr_g(4),vmsr(4))
486 vmsr_g(5)=
min(vmsr_g(5),vmsr(5))
487 vmsr_g(6)=
min(vmsr_g(6),vmsr(6))
488#include "lockoff.inc"
497 stfa(i)=
max(stfa(i),zero)
501 stfes(i)=
max(stfes(i),zero)
538 alphak(1,i)=
max(alphak(1,i),alphak(3,i))
539 alphak(1,i)=
min(alphak(1,i),abs(alphak(2,i)))