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 INTEGER NSN,NMN,ITASK,NSV(NSN),MSR(NMN), NIN ,NTY ,INACTI,
72 . NLINSA,NLINMA,NLN,NLG(NLN),NRTM
73 INTEGER NSNE,NSVE(NSNE),MSRE(NMNE),IXLINS(2,*),IKINE(NUMNOD)
75 . X(3,*), V(3,*), XSAV(3,*), STFA(*),
76 . XSLV_G(*),XMSR_G(*), VSLV_G(*), VMSR_G(*), MS(*), DIAG_SMS(*),
77 . XSAVE(3,*), STFES(*),PENISE(2,NLINSA),PENIME(2,NLINMA),
78 . PENIS(2,NSN),PENIM(2,NRTM),PENIA(5,NLN),STFAC
80 . DVANC(3,*) ,DXANC(3,*),DAANC(3,*) ,DXANCG(3,*)
82 . VA(3,NSN) ,XA(3,NSN),ALPHAK(3,NLN)
89 INTEGER ,NMNF,NSNL,NMNL,I, II, N,NLNF,NLNL,IL,IG,NRTMF,NRTML
90 INTEGER NSNEF,NMNEF,NSNEL,NMNEL,NLINSAF,NLINSAL,NLINMAF,NLINMAL
93 . aaa,da(3), xslv(6), xmsr(6), vslv(6), vmsr(6) ,amass
125 nlnf = 1 + itask*nln / nthread
126 nlnl = (itask+1)*nln / nthread
127 nsnf = 1 + itask*nsn / nthread
128 nsnl = (itask+1)*nsn / nthread
129 nmnf = 1 + itask*nmn / nthread
130 nmnl = (itask+1)*nmn / nthread
132 nrtmf = 1 + itask*nrtm / nthread
133 nrtml = (itask+1)*nrtm / nthread
135 nsnef = 1 + itask*nsne / nthread
136 nsnel = (itask+1)*nsne / nthread
137 nmnef = 1 + itask*nmne / nthread
138 nmnel = (itask+1)*nmne / nthread
140 nlinsaf = 1 + itask * nlinsa / nthread
141 nlinsal = (itask+1) * nlinsa / nthread
142 nlinmaf = 1 + itask * nlinma / nthread
143 nlinmal = (itask+1) * nlinma / nthread
151 amass =
max(two,stfac+sqrt(two*stfac))
155 IF(idtmins==0.AND.idtmins_int==0)
THEN
158 irby = ikine(ig) - (ikine(ig)/2)*2
159 IF(ms(ig) > zero .and. irby /= 1)
THEN
163 aaa = dt12/(amass*ms(ig))
168 IF(alphak(2,i)<zero)
THEN
169 da(1) = daanc6(1,1,i) + daanc6(1,2,i) + daanc6(1,3,i)
170 . + daanc6(1,4,i) + daanc6(1,5,i) + daanc6(1,6,i)
172 da(2) = daanc6(2,1,i) + daanc6(2,2,i) + daanc6(2,3,i)
173 . + daanc6(2,4,i) + daanc6(2,5,i) + daanc6(2,6,i)
175 da(3) = daanc6(3,1,i) + daanc6(3,2,i) + daanc6(3,3,i)
176 . + daanc6(3,4,i) + daanc6(3,5,i) + daanc6(3,6,i)
202 dvanc(1,i) = dvanc(1,i) + da(1)*aaa
203 dvanc(2,i) = dvanc(2,i) + da(2)*aaa
204 dvanc(3,i) = dvanc(3,i) + da(3)*aaa
205 dxanc(1,i) = dxanc(1,i) + dvanc(1,i)*dt1
206 dxanc(2,i) = dxanc(2,i) + dvanc(2,i)*dt1
207 dxanc(3,i) = dxanc(3,i) + dvanc(3,i)*dt1
220 va(1,i) = v(1,ig) + dvanc(1,i)
221 va(2,i) = v(2,ig) + dvanc(2,i)
222 va(3,i) = v(3,ig) + dvanc(3,i)
223 xa(1,i) = x(1,ig) + dxanc(1,i)
224 xa(2,i) = x(2,ig) + dxanc(2,i)
225 xa(3,i) = x(3,ig) + dxanc(3,i)
233 IF(diag_sms(ig) > zero .and. irby /= 1)
THEN
235 aaa = dt12/(amass*diag_sms(ig))
240 IF(alphak(2,i)<zero)
THEN
241 da(1) = daanc6(1,1,i) + daanc6(1,2,i) + daanc6(1,3,i)
242 . + daanc6(1,4,i) + daanc6(1,5,i) + daanc6(1
244 da(2) = daanc6(2,1,i) + daanc6(2,2,i) + daanc6(2,3,i)
245 . + daanc6(2,4,i) + daanc6(2,5,i) + daanc6(2,6,i)
247 da(3) = daanc6(3,1,i) + daanc6(3,2,i) + daanc6(3,3,i)
248 . + daanc6(3,4,i) + daanc6(3,5,i) + daanc6(3,6,i)
272 dvanc(1,i) = dvanc(1,i) + da(1)*aaa
273 dvanc(2,i) = dvanc(2,i) + da(2)*aaa
274 dvanc(3,i) = dvanc(3,i) + da(3)*aaa
275 dxanc(1,i) = dxanc(1,i) + dvanc(1,i)*dt1
276 dxanc(2,i) = dxanc(2,i) + dvanc(2,i)*dt1
277 dxanc(3,i) = dxanc(3,i) + dvanc(3,i)*dt1
290 va(1,i) = v(1,ig) + dvanc(1,i)
291 va(2,i) = v(2,ig) + dvanc(2,i)
292 va(3,i) = v(3,ig) + dvanc(3,i)
293 xa(1,i) = x(1,ig) + dxanc(1,i)
294 xa(2,i) = x(2,ig) + dxanc(2,i)
295 xa(3,i) = x(3,ig) + dxanc(3,i)
300 IF(anim_v(15)+outp_v(15)+h3d_data%N_VECT_DXANC >0.AND.
301 . ((tt>=tanim .AND. tt<=tanim_stop).OR.tt>=toutp.OR.(tt>=h3d_data%TH3D.AND.tt<=h3d_data%TH3D_STOP).OR.
302 . (manim>=4.AND.manim<=15).OR.h3d_data%MH3D/=0))
THEN
305 dxancg(1,ig) = dxanc(1,i)
306 dxancg(2,ig) = dxanc(2,i)
307 dxancg(3,ig) = dxanc(3,i)
313 IF(inacti==5.OR.inacti==6)
THEN
314 IF(nspmd > 1 .AND. tt > zero)
THEN
325 penia(4,i) =
min(penia(4,i),penia(5,i))
330 penis(1,i)=
min(penis(1,i),penis(2,i))
334 penim(1,i)=
min(penim(1,i),penim(2,i))
339 penise(1,i)=
min(penise(1,i),penise(2,i))
343 penime(1,i)=
min(penime(1,i),penime(2,i))
373#include "vectorize.inc"
376 IF(stfa(il)/=zero)
THEN
378 xslv(1)=
max(xslv(1),xa(1,il)-xsav(1,i))
379 xslv(2)=
max(xslv(2),xa(2,il)-xsav(2,i))
380 xslv(3)=
max(xslv(3),xa(3,il)-xsav(3,i))
381 xslv(4)=
min(xslv(4),xa(1,il)-xsav(1,i))
382 xslv(5)=
min(xslv(5),xa(2,il)-xsav(2,i))
383 xslv(6)=
min(xslv(6),xa(3,il)-xsav(3,i))
385 vslv(1)=
max(vslv(1),va(1,il))
386 vslv(2)=
max(vslv(2),va(2,il))
387 vslv(3)=
max(vslv(3),va(3,il))
388 vslv(4)=
min(vslv(4),va(1,il))
389 vslv(5)=
min(vslv(5),va(2,il))
390 vslv(6)=
min(vslv(6),va(3,il))
395#include "vectorize.inc"
400 xmsr(1)=
max(xmsr(1),xa(1,il)-xsav(1,ii))
401 xmsr(2)=
max(xmsr(2),xa(2,il)-xsav(2,ii))
402 xmsr(3)=
max(xmsr(3),xa(3,il)-xsav(3,ii))
403 xmsr(4)=
min(xmsr(4),xa(1,il)-xsav(1,ii))
404 xmsr(5)=
min(xmsr(5),xa(2,il)-xsav(2,ii))
405 xmsr(6)=
min(xmsr(6),xa(3,il)-xsav(3,ii))
407 vmsr(1)=
max(vmsr(1),va(1,il))
408 vmsr(2)=
max(vmsr(2),va(2,il))
409 vmsr(3)=
max(vmsr(3),va(3,il))
410 vmsr(4)=
min(vmsr(4),va(1,il))
411 vmsr(5)=
min(vmsr(5),va(2,il))
412 vmsr(6)=
min(vmsr(6),va(3,il))
423 xslv(1)=
max(xslv(1),xa(1,il)-xsave(1,i))
424 xslv(2)=
max(xslv(2),xa(2,il)-xsave(2,i))
425 xslv(3)=
max(xslv(3),xa(3,il)-xsave(3,i)
426 xslv(4)=
min(xslv(4),xa(1,il)-xsave(1,i
427 xslv(5)=
min(xslv(5),xa(2,il)-xsave(2,i))
428 xslv(6)=
min(xslv(6),xa(3,il
430 vslv(1)=
max(vslv(1),va(1,il))
431 vslv(2)=
max(vslv(2),va(2,il))
432 vslv(3)=
max(vslv(3),va(3,il))
433 vslv(4)=
min(vslv(4),va(1,il))
434 vslv(5)=
min(vslv(5),va(2,il))
435 vslv(6)=
min(vslv(6),va(3,il))
443 xmsr(1)=
max(xmsr(1),xa(1,il)-xsave(1,ii))
444 xmsr(2)=
max(xmsr(2),xa(2,il)-xsave(2,ii))
445 xmsr(3)=
max(xmsr(3),xa(3,il)-xsave(3,ii))
446 xmsr(4)=
min(xmsr(4),xa(1,il)-xsave(1,ii))
447 xmsr(5)=
min(xmsr(5),xa(2,il)-xsave(2,ii))
448 xmsr(6)=
min(xmsr(6),xa(3,il)-xsave(3,ii))
450 vmsr(1)=
max(vmsr(1),va(1,il))
452 vmsr(3)=
max(vmsr(3),va(3,il))
453 vmsr(4)=
min(vmsr(4),va(1,il))
454 vmsr(5)=
min(vmsr(5),va(2,il))
455 vmsr(6)=
min(vmsr(6),va(3,il))
462 xslv_g(1)=
max(xslv_g(1),xslv(1))
463 xslv_g(2)=
max(xslv_g(2),xslv(2))
464 xslv_g(3)=
max(xslv_g(3),xslv(3))
465 xslv_g(4)=
min(xslv_g(4),xslv(4))
466 xslv_g(5)=
min(xslv_g(5),xslv(5))
467 xslv_g(6)=
min(xslv_g(6),xslv(6))
468 xmsr_g(1)=
max(xmsr_g(1),xmsr(1))
469 xmsr_g(2)=
max(xmsr_g(2),xmsr(2))
470 xmsr_g(3)=
max(xmsr_g(3),xmsr(3))
471 xmsr_g(4)=
min(xmsr_g(4),xmsr(4))
472 xmsr_g(5)=
min(xmsr_g(5),xmsr(5))
473 xmsr_g(6)=
min(xmsr_g(6),xmsr(6))
475 vslv_g(1)=
max(vslv_g(1),vslv(1))
476 vslv_g(2)=
max(vslv_g(2),vslv(2))
477 vslv_g(3)=
max(vslv_g(3),vslv(3))
478 vslv_g(4)=
min(vslv_g(4),vslv(4))
480 vslv_g(6)=
min(vslv_g(6),vslv(6))
481 vmsr_g(1)=
max(vmsr_g(1),vmsr(1))
482 vmsr_g(2)=
max(vmsr_g(2),vmsr(2))
483 vmsr_g(3)=
max(vmsr_g(3),vmsr(3))
484 vmsr_g(4)=
min(vmsr_g(4),vmsr(4))
485 vmsr_g(5)=
min(vmsr_g(5),vmsr(5))
486 vmsr_g(6)=
min(vmsr_g(6),vmsr(6))
487#include "lockoff.inc"
496 stfa(i)=
max(stfa(i),zero)
500 stfes(i)=
max(stfes(i),zero)
537 alphak(1,i)=
max(alphak