29 1 NSN ,ITIED,MSR ,MS ,WEIGHT,
30 2 NIMPACT,IMPACT ,NSMS ,NRWL_SMS)
34#include "implicit_f.inc"
46 INTEGER NSN, ITIED, MSR, , NSMS
47 INTEGER NSW(*), WEIGHT(*), IMPACT(*), NRWL_SMS(*)
48 my_real x(*), a(*), v(*), rwl(*), ms(*)
52 INTEGER I, N, N3, N2, N1, K, J, M1, M2, M3
53 my_real XWL, YWL, ZWL, VXW, VYW, VZW,
54 . xl1, yl1, zl1, xl2, yl2, zl2, sx12, sy12, sz12, s12,
55 . vx, vy, vz, ux, uy, uz, xc, yc, zc, dp, dn, xcp, ycp, zcp,
56 . sx1m, sy1m, sz1m, ps, sm1, sxm2, sym2, szm2, sm2, dv, da, dvt,
58 . xwl0, ywl0, zwl0, dp0, xc0, yc0, zc0, tol, vn, vnold,
59 . dp0dt, dvx, dvy, dvz, prec, xprec
92 vn =vxw*rwl(1)+vyw*rwl(2)+vzw*rwl(3)
107 s12=sx12**2+sy12**2+sz12**2
129 dp=xc*rwl(1)+yc*rwl(2)+zc*rwl(3)
133 dp0=xc0*rwl(1)+yc0*rwl(2)+zc0*rwl(3)
135 . abs( (vx-vxw)*rwl(1)+(vy-vyw)*rwl(2)+(vz-vzw)*rwl(3) ),
138 xprec=prec*
max(abs(xwl),abs(ywl),abs(zwl),
139 . abs(x(n1)),abs(x(n2)),abs(x(n3)),
140 . abs(x(n1)-xwl),abs(x(n2)-ywl),abs(x(n3)-zwl))
143 IF(dp>zero.OR.dp0<=-tol)
GOTO 20
152 ps=sx12*sx1m+sy12*sy1m+sz12*sz1m
156 sm1=sx1m**2+sy1m**2+sz1m**2
163 ps=sx12*sxm2+sy12*sym2+sz12*szm2
167 sm2=sxm2**2+sym2**2+szm2**2
171 IF((vx-vxw)*rwl(1)+(vy-vyw)*rwl(2)+(vz-vzw)*rwl(3)>zero
172 . .AND.dp0>zero)
GOTO 20
177 IF(nimpact/=0.AND.itied==2)ifricw=1
187 1 (x ,a ,v ,rwl ,nsw ,
188 2 nsn ,itied ,msr ,ms ,weight ,
189 3 nimpact,impact ,nsms ,nrwl_sms,fsav,
190 4 fopt ,res ,r ,frea )
194#include "implicit_f.inc"
195#include "comlock.inc"
199#include "com08_c.inc"
203 INTEGER NSN, ITIED, MSR, NIMPACT, NSMS
204 INTEGER NSW(*), WEIGHT(*), IMPACT(*), NRWL_SMS(*)
207 . x(*), a(*), v(*), rwl(*), ms(*), fsav(*),
208 . fopt(*), res(*), frea(*), r(*)
212 INTEGER I, N, N3, N2, N1, J, K, M1, M2, M3
216 . xwl, ywl, zwl, vxw, vyw, vzw,
217 . xwl0, ywl0, zwl0, xc0, yc0, zc0, dp0,
218 . dp0dt, dvx, dvy, dvz,
220 . fnxn, fnyn, fnzn, fnxt, fnyt, fnzt, fndfn, ftdft, fric, fric2,
221 . fcoe, fac,
alpha, alphi,
222 . fxn, fyn, fzn, fxt, fyt, fzt
263 fn=res(n1)*rwl(1)+res(n2)*rwl(2)+res(n3)*rwl(3)
268 fnxt=res(n1)*dt12-fnxn
269 fnyt=res(n2)*dt12-fnyn
270 fnzt=res(n3)*dt12-fnzn
273 fndfn=fnxn**2+fnyn**2+fnzn**2
274 ftdft=fnxt**2+fnyt**2+fnzt**2
275 IF(ftdft <= fric2*fndfn)
THEN
279 fcoe=fric*sqrt(fndfn/ftdft)
312 1 (x ,a ,v ,rwl ,nsw ,
313 2 nsn ,itied ,msr ,ms ,weight ,
314 3 nimpact,impact ,nsms ,nrwl_sms)
318#include "implicit_f.inc"
319#include "comlock.inc"
323#include "com08_c.inc"
327 INTEGER NSN, ITIED, MSR, , NSMS
328 INTEGER NSW(*), WEIGHT(*), IMPACT(*), (*)
331 . x(*), a(*), v(*), rwl(*), ms(*)
335 INTEGER I, N, N3, N2, N1, J, K, M1, M2, M3
339 . xwl, ywl, zwl, vxw, vyw, vzw,
340 . xwl0, ywl0, zwl0, xc0, yc0, zc0, dp0,
341 . dv, da, dvt, dp0dt, dvx, dvy, dvz
381 dp0 =xc0*rwl(1)+yc0*rwl(2)+zc0*rwl(3)
382 dp0dt=-
min(dp0,zero)/dt2
384 dv =(v(n1)-vxw)*rwl(1)+(v(n2)-vyw)*rwl(2)+(v(n3)-vzw)*rwl(3)
385 da =a(n1)*rwl(1)+a(n2)*rwl(2)+a(n3)*rwl(3)
386 da =(dv-dp0dt)/dt12+da
388 a(n1)=a(n1)-da*rwl(1)
389 a(n2)=a(n2)-da*rwl(2)
390 a(n3)=a(n3)-da*rwl(3)
405 dp0 =xc0*rwl(1)+yc0*rwl(2)+zc0*rwl(3)
406 dp0dt=-
min(dp0,zero)/dt2
411 a(n1)=(-(v(n1)-vxw)+dvx)/dt12
412 a(n2)=(-(v(n2)-vyw)+dvy)/dt12
413 a(n3)=(-(v(n3)-vzw)+dvz)/dt12
429 dp0 =xc0*rwl(1)+yc0*rwl(2)+zc0*rwl(3)
430 dp0dt=-
min(dp0,zero)/dt2
435 dv=(v(n1)-vxw)*rwl(1)+(v(n2)-vyw)*rwl(2)+(v(n3)-vzw)*rwl(3)
436 da =a(n1)*rwl(1)+a(n2)*rwl(2)+a(n3)*rwl(3)
437 da =(dv-dp0dt)/dt12+da
439 IF(impact(j) > 0)
THEN
441 a(n1)=(-(v(n1)-vxw)+dvx)/dt12
442 a(n2)=(-(v(n2)-vyw)+dvy)/dt12
443 a(n3)=(-(v(n3)-vzw)+dvz)/dt12
446 a(n1)=a(n1)-da*rwl(1)
447 a(n2)=a(n2)-da*rwl(2)
448 a(n3)=a(n3)-da*rwl(3)
461 1 (x ,a ,v ,rwl ,nsw ,
462 2 nsn ,itied ,msr ,ms ,weight ,
463 3 nimpact,impact ,nsms ,nrwl_sms)
467#include "implicit_f.inc"
468#include "comlock.inc"
472 INTEGER , ITIED, MSR, NIMPACT, NSMS
473 INTEGER NSW(*), WEIGHT(*), IMPACT(*), NRWL_SMS(*)
476 . x(*), a(*), v(*), rwl(*), ms(*)
480 INTEGER I, N, N3, N2, N1, J, M1, M2,
497 da =a(n1)*rwl(1)+a(n2)*rwl(2)+a(n3)*rwl(3)
499 a(n1)=a(n1)-da*rwl(1)
500 a(n2)=a(n2)-da*rwl(2)
501 a(n3)=a(n3)-da*rwl(3)
526 da=a(n1)*rwl(1)+a(n2)*rwl(2)+a(n3)*rwl(3)
528 IF(impact(j) > 0)
THEN
535 a(n1)=a(n1)-da*rwl(1)
536 a(n2)=a(n2)-da*rwl(2)
537 a(n3)=a(n3)-da*rwl(3)
552 1 (x ,frea ,v ,rwl ,nsw ,
553 2 nsn ,itied ,msr ,ms ,weight ,
554 3 nimpact,impact ,nsms ,nrwl_sms,fsav ,
555 4 fopt ,frwl6 ,a ,wfext)
559#include "implicit_f.inc"
560#include "comlock.inc"
564#include "com06_c.inc"
565#include "com08_c.inc"
569 INTEGER NSN, ITIED, MSR, NIMPACT, NSMS
570 INTEGER NSW(*), WEIGHT(*), IMPACT(*), NRWL_SMS(*)
572 . x(*), v(*), rwl(*), ms(*), fsav(*), frea(3,*),
574 DOUBLE PRECISION FRWL6(7,6)
575 DOUBLE PRECISION,
INTENT(INOUT) :: WFEXT
579 INTEGER I, N, N3, N2, N1, J, K, M1, M2, M3
581 . vxw, vyw, vzw, vx, vy, vz,
583 . fnxn, fnyn, fnzn, fnxt, fnyt, fnzt, fn,
584 . fxn, fyn, fzn, fxt, fyt, fzt,
585 . f1(nsn), f2(nsn), f3(nsn), f4(nsn), f5(nsn), f6(nsn), f7(nsn)
597 vxw=v(m1)+half*a(m1)*dt12
598 vyw=v(m2)+half*a(m2)*dt12
599 vzw=v(m3)+half*a(m3)*dt12
610 fn=frea(1,n)*rwl(1)+frea(2,n)*rwl(2)+frea(3,n)*rwl
640 fn=frea(1,n)*rwl(1)+frea(2,n)*rwl(2)+frea(3,n)*rwl(3)
654 vx=v(n1)+half*a(n1)*dt12
655 vy=v(n2)+half*a(n2)*dt12
656 vz=v(n3)+half*a(n3)*dt12
660 fxt=weight(n)*frea(1,n)-fxn
661 fyt=weight(n)*frea(2,n)-fyn
662 fzt=weight(n)*frea(3,n)-fzn
666 wfextt = wfextt -dt12*((vx-vxw)*fxt+(vy-vyw)*fyt+(vz-vzw)*fzt)
672#include "lockoff.inc"
subroutine sms_rgwalp_fric(x, a, v, rwl, nsw, nsn, itied, msr, ms, weight, nimpact, impact, nsms, nrwl_sms, fsav, fopt, res, r, frea)
subroutine sms_rgwalp_bilan(x, frea, v, rwl, nsw, nsn, itied, msr, ms, weight, nimpact, impact, nsms, nrwl_sms, fsav, fopt, frwl6, a, wfext)