32 SUBROUTINE rgwall(X ,A ,V ,RWL ,NSW ,
33 2 NSN ,ITIED ,MSR ,MS ,WEIGHT,
34 3 ICONT ,RWSAV ,FRWL6 ,IMP_S ,NT_RW ,
35 4 IDDL ,IKC ,NDOF ,NODNX_SMS, WEIGHT_MD,
40#include "implicit_f.inc"
53 INTEGER NSN, ITIED, MSR,ICONT,IMP_S,NT_RW
54 INTEGER NSW(*), WEIGHT(*),IDDL(*),IKC(*),NDOF(*), NODNX_SMS(*)
56 my_real X(*), A(*), V(*), RWL(*), MS(*), RWSAV(*)
57 DOUBLE PRECISION FRWL6(7,6)
61 INTEGER M3, M2, M1, I, N, N3, N2, N1,NINDEX, IFQ, J, K, JJ,
63 my_real XWL, YWL, ZWL, VXW, VYW, VZW, , FACT,
64 . TFXT, VX, VY, VZ, UX, UY, UZ, XC, YC, ZC, DP, DV, DA, DVT,
65 . fnxn, fnyn, fnzn, fnxt, fnyt, fnzt, fndfn, ftdft, fric, fric2,
67 . f1(nsn), f2(nsn), f3(nsn), f4(nsn), f5(nsn), f6(nsn), f7(nsn),
68 . tfxt2, tfxtn2, wewe2
69 DOUBLE PRECISION FRWL6_L(7,6)
70 DOUBLE PRECISION,
INTENT(INOUT) :: WFEXT, WFEXT_MD
72 IF(IDTMINS==0.AND.idtmins_int==0)
THEN
80!
the variables : without barrier icont can be set to 1 by a
127 dp=xc*rwl(1)+yc*rwl(2)+zc*rwl(3)
137 IF((vx-vxw)*rwl(1)+(vy-vyw)*rwl(2)+(vz-vzw)*rwl(3) > zero)
THEN
160 dp=xc*rwl(1)+yc*rwl(2)+zc*rwl(3)
164 IF((vx-vxw)*rwl(1)+(vy-vyw)*rwl(2)+(vz-vzw)*rwl(3) > zero)
THEN
179!
the variables : without barrier icont can be set to 1 by a
214 IF(nodnx_sms(n)/=0)cycle
228 dp=xc*rwl(1)+yc*rwl(2)+zc*rwl(3)
238 IF((vx-vxw)*rwl(1)+(vy-vyw)*rwl(2)+(vz-vzw)*rwl(3) > zero)
THEN
249 IF(nodnx_sms(n)/=0)cycle
263 dp=xc*rwl(1)+yc*rwl(2)+zc*rwl(3)
267 IF((vx-vxw)*rwl(1)+(vy-vyw)*rwl(2)+(vz-vzw)*rwl(3) > zero)
THEN
291 dv=(v(n1)-vxw)*rwl(1)+(v(n2)-vyw)*rwl(2)+(v(n3)-vzw)*rwl(3)
292 da=a(n1)*rwl(1)+a(n2)*rwl(2)+a(n3)*rwl(3)
300 tfxtn = tfxtn - weight_md(n)*fact*((v(n1)-vxw)*fnxn+(v(n2)-vyw)*fnyn+(v(n3)-vzw)*fnzn)
301 wewe2 = (1-weight_md(n))*weight(n)
302 tfxtn2 = tfxtn2 - wewe2*fact*((v(n1)-vxw)*fnxn+(v(n2)-vyw)*fnyn+(v(n3)-vzw)*fnzn)
303 f1(j) = fnxn*weight_md(n)
304 f2(j) = fnyn*weight_md(n)
305 f3(j) = fnzn*weight_md(n)
306 f4(j) = msw*weight_md(n)
310 a(n1)=a(n1)-da*rwl(1)
311 a(n2)=a(n2)-da*rwl(2)
312 a(n3)=a(n3)-da*rwl(3)
313 v(n1)=v(n1)-dv*rwl(1)
314 v(n2)=v(n2)-dv*rwl(2)
315 v(n3)=v(n3)-dv*rwl(3)
316 IF(imp_s == 1) v(n1) = -dv
319 ELSEIF(itied == 1)
THEN
327 dv=(v(n1)-vxw)*rwl(1)+(v(n2)-vyw)*rwl(2)+(v(n3)-vzw)*rwl(3)
328 da=a(n1)*rwl(1)+a(n2)*rwl(2)+a(n3)*rwl(3)
336 tfxtn = tfxtn - weight_md(n)*fact*((v(n1)-vxw)*fnxn+(v(n2)-vyw)*fnyn+(v(n3)-vzw)*fnzn)
337 wewe2 = (1-weight_md(n))*weight(n)
338 tfxtn2 = tfxtn2 - wewe2*fact*((v(n1)-vxw)*fnxn+(v(n2)-vyw)*fnyn+(v(n3)-vzw)*fnzn)
339 f1(j) = fnxn*weight_md(n)
340 f2(j) = fnyn*weight_md(n)
341 f3(j) = fnzn*weight_md(n)
342 f4(j) = msw*weight_md(n)
344 fnxt=((v(n1)-vxw)+a(n1)*dt12)*msw-fnxn
345 fnyt=((v(n2)-vyw)+a(n2)*dt12)*msw-fnyn
346 fnzt=((v(n3)-vzw)+a(n3)*dt12)*msw-fnzn
353 f5(j) = fnxt*weight_md(n)
354 f6(j) = fnyt*weight_md(n)
355 f7(j) = fnzt*weight_md(n)
373 dv=(v(n1)-vxw)*rwl(1)+(v(n2)-vyw)*rwl(2)+(v(n3)-vzw)*rwl(3)
374 da=a(n1)*rwl(1)+a(n2)*rwl(2)+a(n3)*rwl(3)
380 tfxtn = tfxtn - weight_md(n)*fact*((v(n1)-vxw)*fnxn+(v(n2)-vyw)*fnyn+(v(n3)-vzw)*fnzn)
381 wewe2 = (1-weight_md(n))*weight(n)
382 tfxtn2 = tfxtn2 - wewe2*fact*((v(n1)-vxw)*fnxn+(v(n2)-vyw)*fnyn+(v(n3)-vzw)*fnzn)
383 f1(j) = fnxn*weight_md(n)
384 f2(j) = fnyn*weight_md(n)
385 f3(j) = fnzn*weight_md(n)
386 f4(j) = ms(n)*weight_md(n)
387 fnxt=((v(n1)-vxw)+a(n1)*dt12)*ms(n)-fnxn
388 fnyt=((v(n2)-vyw)+a(n2)*dt12)*ms(n)-fnyn
389 fnzt=((v(n3)-vzw)+a(n3)*dt12)*ms(n)-fnzn
392 fnxt = fnxt *
alpha + rwsav(k) * alphi
393 fnyt = fnyt *
alpha + rwsav(k+1) * alphi
394 fnzt = fnzt *
alpha + rwsav(k+2) * alphi
396 fndfn=fnxn**2+fnyn**2+fnzn**2
397 ftdft=fnxt**2+fnyt**2+fnzt**2
407 fcoe=
min(one,fric*sqrt(fndfn/
max(em20,ftdft)))
415 a(n1)=a(n1)-(da*rwl(1)+fnxt*fac)
416 a(n2)=a(n2)-(da*rwl(2)+fnyt*fac)
417 a(n3)=a(n3)-(da*rwl(3)+fnzt*fac)
418 v(n1)=v(n1)-dv*rwl(1)
419 v(n2)=v(n2)-dv*rwl(2)
420 v(n3)=v(n3)-dv*rwl(3)
421 tfxt = tfxt - weight_md(n)*((v(n1)-vxw)*fnxt+(v(n2)-vyw)*fnyt+(v(n3)-vzw)*fnzt)
422 wewe2 = (1-weight_md(n))*weight(n)
423 tfxt2 = tfxt2 - wewe2*((v(n1)-vxw)*fnxt+(v(n2)-vyw)*fnyt+(v(n3)-vzw)*fnzt)
424 f5(j) = fnxt*weight_md(n)
425 f6(j) = fnyt*weight_md(n)
426 f7(j) = fnzt*weight_md(n)
427 IF(imp_s == 1) v(n1) = -dv
439 dv=(v(n1)-vxw)*rwl(1)+(v(n2)-vyw)*rwl(2)+(v(n3)-vzw)*rwl(3)
446 tfxtn = tfxtn - weight_md(n)*fact*((v(n1)-vxw)*fnxn+(v(n2)-vyw)*fnyn+(v(n3)-vzw)*fnzn)
447 wewe2 = (1-weight_md(n))*weight(n)
448 fnxt=((v(n1)-vxw)+a(n1)*dt12)*ms(n)-fnxn
449 fnyt=((v(n2)-vyw)+a(n2)*dt12)*ms(n)-fnyn
450 fnzt=((v(n3)-vzw)+a(n3)*dt12)*ms(n)-fnzn
451 tfxtn2 = tfxtn2 - wewe2*((v(n1)-vxw)*fnxt+(v(n2)-vyw)*fnyt+(v(n3)-vzw)*fnzt)
452 f1(j) = fnxn*weight_md(n)
453 f2(j) = fnyn*weight_md(n)
454 f3(j) = fnzn*weight_md(n)
455 f4(j) = ms(n)*weight_md(n)
456 fndfn=fnxn**2+fnyn**2+fnzn**2
457 ftdft=fnxt**2+fnyt**2+fnzt**2
459 IF(ftdft <= fric2*fndfn)
THEN
468 IF (ndof(n) > 0)
THEN
470 IF (ikc(jj) == 0)ikc(jj)=3
471 IF (ikc(jj+1) == 0)ikc(jj+1)=3
472 IF (ikc(jj+2) == 0)ikc(jj+2)=3
477 fcoe=fric*sqrt(fndfn/ftdft)
483 a(n1)=a(n1)-(da*rwl(1)+fnxt*fac)
484 a(n2)=a(n2)-(da*rwl(2)+fnyt*fac)
485 a(n3)=a(n3)-(da*rwl(3)+fnzt*fac)
486 v(n1)=v(n1)-dv*rwl(1)
487 v(n2)=v(n2)-dv*rwl(2)
488 v(n3)=v(n3)-dv*rwl(3)
490 IF (ndof(n) > 0)
THEN
496 IF (ikc(jj) == 0)ikc(jj)=10
499 tfxt = tfxt - weight_md(n)*((v(n1)-vxw)*fnxt+(v(n2)-vyw)*fnyt+(v(n3)-vzw)*fnzt)
500 wewe2 = (1-weight_md(n))*weight(n)
501 tfxt2 = tfxt2 - wewe2*((v(n1)-vxw)*fnxt+(v(n2)-vyw)*fnyt+(v(n3)-vzw)*fnzt)
503 f5(j) = fnxt*weight_md(n)
504 f6(j) = fnyt*weight_md(n)
505 f7(j) = fnzt*weight_md(n)
511 tfxt=tfxt+half*dt1*tfxtn
512 tfxt2=tfxt2+half*dt1*tfxtn2
515 wfext_md=wfext_md+tfxt2
536 frwl6(1,k) = frwl6(1,k)+frwl6_l(1,k)
537 frwl6(2,k) = frwl6(2,k)+frwl6_l(2,k)
538 frwl6(3,k) = frwl6(3,k)+frwl6_l(3,k)
539 frwl6(4,k) = frwl6(4,k)+frwl6_l(4,k)
540 frwl6(5,k) = frwl6(5,k)+frwl6_l(5,k)
542 frwl6(7,k) = frwl6(7,k)+frwl6_l(7,k)
544#include "lockoff.inc"
552 IF (ndof(n) > 0)
THEN
554 IF (ikc(jj) == 0)ikc(jj)=3
555 IF (ikc(jj+1) == 0)ikc(jj+1)=3
556 IF (ikc(jj+2) == 0)ikc(jj+2)=3
559 ELSEIF(itied == 0.OR.ifq > 0)
THEN
563 IF (ndof(n) > 0)
THEN
571 IF (ikc(jj) == 0)ikc(jj)=10
580 IF (ndof(n) > 0)
THEN