30 SUBROUTINE i15for1(NDEB, NSC, STFAC,X ,V ,
31 2 KSURF ,IGRSURF ,BUFSF ,KSC ,KSI ,
32 3 IACTIV ,IOLD ,HOLD ,NOLD ,DOLD ,
33 4 XP1 ,XP2 ,XP3 ,XP4 ,GX ,
34 5 XTK ,YTK ,ZTK ,NTX ,NTY ,
35 6 NTZ ,PENET ,DEPTH ,XI ,YI ,
36 7 ZI ,NXI ,NYI ,NZI ,MS ,
37 8 DE ,NPC ,PLD ,WNF ,WTF ,
38 9 WNS ,FNORMX,FNORMY,FNORMZ,FTANGX,
39 A FTANGY,FTANGZ,DT2T ,NOINT ,NELTST ,
48#include "implicit_f.inc"
65 . KSI(4,*),IACTIV(4,*),NPC(*),KSC(*),
66 . NOINT,NELTST,ITYPTST
68 my_real STFAC, BUFSF(*),
69 . X(3,*) , IOLD(3,*), HOLD(3,*), NOLD(3,*) ,DOLD(3,*),
70 . MS(*) , V(3,*), DE, PLD(*), XTK(4,*),
71 . YTK(4,*) ,ZTK(4,*) ,NTX(4,*) ,NTY(4,*) ,NTZ(4,*) ,
72 . PENET(4,*),DEPTH(4,*),
73 . xi(4,*) ,yi(4,*) ,zi(4,*) ,nxi(4,*) ,
74 . nyi(4,*) ,nzi(4,*) ,wnf(3,*) ,wtf(3,*) , wns(*),
75 . xp1(3,*) ,xp2(3,*) ,xp3(3,*) ,xp4(3,*) ,gx(3,*),
76 . fnormx,fnormy,fnormz,ftangx,ftangy,ftangz,
78 TYPE (SURF_) ,
DIMENSION(NSURF) :: IGRSURF
82 INTEGER ADRBUF, I, IL, IN1, IN2, IN3, IN4, NLS
84 . ROT(9), X1, X2, X3, XM, YM, ZM,
85 . V1, V2, V3, VXM, VYM, VZM, VRX, VRY, VRZ,
86 . V1X2, V2X1, V1X3, V3X1, V2X3, V3X2,
87 . DELTX, , DELTZ, ND, PN, SCALE, NV,
88 . vxk, vyk, vzk, dvx, dvy, dvz, xh, yh, zh,
89 . dx1, dy1, dz1, dx2, dy2, dz2, dx3, dy3, dz3,
92 . f1, f2, f3, f4, f1g, f11, f12, f2g, f22, f23, f3g, f33, f34,
94 . st1, st2, st3, st4, st1g, st11, st12, st2g, st22, st23, st3g,
95 . st33, st34, st4g, st44, st41, stg,
96 . ftx, fty, ftz, fnx, fny, fnz, ftn, fmax,fn,
99 . fxn(4,mvsiz),fyn(4,mvsiz),fzn(4,mvsiz),stf(4,mvsiz),
100 . fxt(4,mvsiz),fyt(4,mvsiz),fzt(4,mvsiz),
101 . l1(mvsiz),l2(mvsiz),l3(mvsiz),
102 . vxg(mvsiz),vyg(mvsiz),vzg(mvsiz),
103 . vx1(mvsiz),vy1(mvsiz),vz1(mvsiz),
104 . vx2(mvsiz),vy2(mvsiz),vz2(mvsiz),
105 . vx3(mvsiz),vy3(mvsiz),vz3(mvsiz),
106 . vx4(mvsiz),vy4(mvsiz),vz4(mvsiz),
107 . vxh(4,mvsiz),vyh(4,mvsiz),vzh(4,mvsiz)
109 adrbuf=igrsurf(ksurf)%IAD_BUFR
111 rot(i)=bufsf(adrbuf+7+i-1)
116 x1=bufsf(adrbuf+16)-bufsf(adrbuf+4)
117 x2=bufsf(adrbuf+17)-bufsf(adrbuf+5)
118 x3=bufsf(adrbuf+18)-bufsf(adrbuf+6)
119 xm=rot(1)*x1+rot(2)*x2+rot(3)*x3
120 ym=rot(4)*x1+rot(5)*x2+rot(6)*x3
121 zm=rot(7)*x1+rot(8)*x2+rot(9)*x3
128 vxm=rot(1)*v1+rot(2)*v2+rot(3)*v3
130 vzm=rot(7)*v1+rot(8)*v2+rot(9)*v3
137 vrx=rot(1)*v1+rot(2)*v2+rot(3)*v3
138 vry=rot(4)*v1+rot(5)*v2+rot(6)*v3
139 vrz=rot(7)*v1+rot(8)*v2+rot(9)*v3
144 DO 100 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
152 vx1(i)=rot(1)*v1+rot(2)*v2+rot(3)*v3
153 vy1(i)=rot(4)*v1+rot(5)*v2+rot(6)*v3
154 vz1(i)=rot(7)*v1+rot(8)*v2+rot(9)*v3
160 vx2(i)=rot(1)*v1+rot(2)*v2+rot(3)*v3
161 vy2(i)=rot(4)*v1+rot(5)*v2+rot(6)*v3
162 vz2(i)=rot(7)*v1+rot(8)*v2+rot(9)*v3
168 vx3(i)=rot(1)*v1+rot(2)*v2+rot(3)*v3
169 vy3(i)=rot(4)*v1+rot(5)*v2+rot(6)*v3
170 vz3(i)=rot(7)*v1+rot(8)*v2+rot(9)*v3
176 vx4(i)=rot(1)*v1+rot(2)*v2+rot(3)*v3
177 vy4(i)=rot(4)*v1+rot(5)*v2+rot(6)*v3
178 vz4(i)=rot(7)*v1+rot(8)*v2+rot(9)*v3
180 vxg(i)=fourth*(vx1(i)+vx2(i)+vx3(i)+vx4(i))
181 vyg(i)=fourth*(vy1(i)+vy2(i)+vy3(i)+vy4(i))
182 vzg(i)=fourth*(vz1(i)+vz2(i)+vz3(i)+vz4(i))
187 DO 200 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
189 IF (iactiv(1,il)<=0)
GOTO 200
192 stf(1,i)=stfac*depth(1,i)**2/
max((depth(1,i)-penet(1,i))**2,em20)
193 fxn(1,i)=stf(1,i)*penet(1,i)*nxi(1,i)
194 fyn(1,i)=stf(1,i)*penet(1,i)*nyi(1,i)
195 fzn(1,i)=stf(1,i)*penet(1,i)*nzi(1,i)
200 DO 250 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
202 IF (iactiv(1,il)<=0)
GOTO 250
205 l1(i)=iold(1,4*(il-1)+1)
206 l2(i)=iold(2,4*(il-1)+1)
207 l3(i)=iold(3,4*(il-1)+1)
212#include "vectorize.inc"
213 DO 275 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
215 IF (iactiv(1,il)<=0)
GOTO 275
224 IF (iactiv(1,il)>2)
THEN
225 deltx=dold(1,4*(il-1)+1)
226 delty=dold(2,4*(il-1)+1)
227 deltz=dold(3,4*(il-1)+1)
228 nd =sqrt(deltx*deltx+delty*delty+deltz*deltz)
230 pn=deltx*nxi(1,i)+delty*nyi(1,i)+deltz*nzi(1,i)
231 deltx=deltx-pn*nxi(1,i)
232 delty=delty-pn*nyi(1,i)
233 deltz=deltz-pn*nzi(1,i)
234 scale=nd/sqrt(deltx*deltx+delty*delty+deltz*deltz)
247 xh=hold(1,4*(il-1)+1)
248 yh=hold(2,4*(il-1)+1)
249 zh=hold(3,4*(il-1)+1)
262 IF (iactiv(1,il)>=2)
THEN
263 vxk=l1(i)*vxg(i)+l2(i)*vx1(i)+l3(i)*vx2(i)
264 vyk=l1(i)*vyg(i)+l2(i)*vy1(i)+l3(i)*vy2(i)
265 vzk=l1(i)*vzg(i)+l2(i)*vz1(i)+l3(i)*vz2(i)
269 pn=dvx*nxi(1,i)+dvy*nyi(1,i)+dvz*nzi(1,i)
280 dold(1,4*(il-1)+1)=deltx+dvx*dt1
281 dold(2,4*(il-1)+1)=delty+dvy*dt1
282 dold(3,4*(il-1)+1)=deltz+dvz*dt1
283 fxt(1,i)=stf(1,i)*dold(1,4*(il-1)+1)
284 fyt(1,i)=stf(1,i)*dold(2,4*(il-1)+1)
285 fzt(1,i)=stf(1,i)*dold(3,4*(il-1)+1)
291 DO 300 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
293 IF (iactiv(2,il)<=0)
GOTO 300
296 stf(2,i)=stfac*depth(2,i)**2/
max((depth(2,i)-penet(2,i))**2,em20)
297 fxn(2,i)=stf(2,i)*penet(2,i)*nxi(2,i)
298 fyn(2,i)=stf(2,i)*penet(2,i)*nyi(2,i)
299 fzn(2,i)=stf(2,i)*penet(2,i)*nzi(2,i)
304 DO 350 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
306 IF (iactiv(2,il)<=0)
GOTO 350
309 l1(i)=iold(1,4*(il-1)+2)
310 l2(i)=iold(2,4*(il-1)+2)
311 l3(i)=iold(3,4*(il-1)+2)
316#include "vectorize.inc"
317 DO 375 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
319 IF (iactiv(2,il)<=0)
GOTO 375
327 IF (iactiv(2,il)>2)
THEN
328 deltx=dold(1,4*(il-1)+2)
329 delty=dold(2,4*(il-1)+2)
330 deltz=dold(3,4*(il-1)+2)
331 nd =sqrt(deltx*deltx+delty*delty+deltz*deltz)
333 pn=deltx*nxi(2,i)+delty*nyi(2,i)+deltz*nzi(2,i)
334 deltx=deltx-pn*nxi(2,i)
335 delty=delty-pn*nyi(2,i)
336 deltz=deltz-pn*nzi(2,i)
337 scale=nd/sqrt(deltx*deltx+delty*delty+deltz*deltz)
350 xh=hold(1,4*(il-1)+2)
351 yh=hold(2,4*(il-1)+2)
352 zh=hold(3,4*(il-1)+2)
365 IF (iactiv(2,il)>=2)
THEN
366 vxk=l1(i)*vxg(i)+l2(i)*vx2(i)+l3(i)*vx3(i)
367 vyk=l1(i)*vyg(i)+l2(i)*vy2(i)+l3(i)*vy3(i)
372 pn=dvx*nxi(2,i)+dvy*nyi(2,i)+dvz*nzi(2,i)
383 dold(1,4*(il-1)+2)=deltx+dvx*dt1
384 dold(2,4*(il-1)+2)=delty+dvy*dt1
385 dold(3,4*(il-1)+2)=deltz+dvz*dt1
386 fxt(2,i)=stf(2,i)*dold(1,4*(il-1)+2)
387 fyt(2,i)=stf(2,i)*dold(2,4*(il-1)+2)
388 fzt(2,i)=stf(2,i)*dold(3,4*(il-1)+2)
394 DO 400 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
396 IF (iactiv(3,il)<=0)
GOTO 400
399 stf(3,i)=stfac*depth(3,i)**2/
max((depth(3,i)-penet(3,i))**2,em20)
400 fxn(3,i)=stf(3,i)*penet(3,i)*nxi(3,i)
401 fyn(3,i)=stf(3,i)*penet(3,i)*nyi(3,i)
402 fzn(3,i)=stf(3,i)*penet(3,i)*nzi(3,i)
407 DO 450 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
409 IF (iactiv(3,il)<=0)
GOTO 450
412 l1(i)=iold(1,4*(il-1)+3)
413 l2(i)=iold(2,4*(il-1)+3)
414 l3(i)=iold(3,4*(il-1)+3)
419#include "vectorize.inc"
420 DO 475 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
422 IF (iactiv(3,il)<=0)
GOTO 475
431 IF (iactiv(3,il)>2)
THEN
432 deltx=dold(1,4*(il-1)+3)
433 delty=dold(2,4*(il-1)+3)
434 deltz=dold(3,4*(il-1)+3)
435 nd =sqrt(deltx*deltx+delty*delty+deltz*deltz)
437 pn=deltx*nxi(3,i)+delty*nyi(3,i)+deltz*nzi(3,i)
438 deltx=deltx-pn*nxi(3,i)
439 delty=delty-pn*nyi(3,i)
440 deltz=deltz-pn*nzi(3,i)
441 scale=nd/sqrt(deltx*deltx+delty*delty+deltz*deltz)
454 xh=hold(1,4*(il-1)+3)
455 yh=hold(2,4*(il-1)+3)
456 zh=hold(3,4*(il-1)+3)
469 IF (iactiv(3,il)>=2)
THEN
470 vxk=l1(i)*vxg(i)+l2(i)*vx3(i)+l3(i)*vx4(i)
471 vyk=l1(i)*vyg(i)+l2(i)*vy3(i)+l3(i)*vy4(i)
472 vzk=l1(i)*vzg(i)+l2(i)*vz3(i)+l3(i)*vz4(i)
476 pn=dvx*nxi(3,i)+dvy*nyi(3,i)+dvz*nzi(3,i)
487 dold(1,4*(il-1)+3)=deltx+dvx*dt1
488 dold(2,4*(il-1)+3)=delty+dvy*dt1
489 dold(3,4*(il-1)+3)=deltz+dvz*dt1
490 fxt(3,i)=stf(3,i)*dold(1,4*(il-1)+3)
491 fyt(3,i)=stf(3,i)*dold(2,4*(il-1)+3)
492 fzt(3,i)=stf(3,i)*dold(3,4*(il-1)+3)
498 DO 500 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
500 IF (iactiv(4,il)<=0)
GOTO 500
503 stf(4,i)=stfac*depth(4,i)**2/
max((depth(4,i)-penet(4,i))**2,em20)
504 fxn(4,i)=stf(4,i)*penet(4,i)*nxi(4,i)
505 fyn(4,i)=stf(4,i)*penet(4,i)*nyi(4,i)
506 fzn(4,i)=stf(4,i)*penet(4,i)*nzi(4,i)
511 DO 550 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
513 IF (iactiv(4,il)<=0)
GOTO 550
516 l1(i)=iold(1,4*(il-1)+4)
517 l2(i)=iold(2,4*(il-1)+4)
518 l3(i)=iold(3,4*(il-1)+4)
523#include "vectorize.inc"
524 DO 575 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
535 IF (iactiv(4,il)>2)
THEN
536 deltx=dold(1,4*(il-1)+4)
538 deltz=dold(3,4*(il-1)+4)
539 nd =sqrt(deltx*deltx+delty*delty+deltz*deltz)
541 pn=deltx*nxi(4,i)+delty*nyi(4,i)+deltz*nzi(4,i)
542 deltx=deltx-pn*nxi(4,i)
543 delty=delty-pn*nyi(4,i)
544 deltz=deltz-pn*nzi(4,i)
545 scale=nd/sqrt(deltx*deltx+delty*delty+deltz*deltz)
558 xh=hold(1,4*(il-1)+4)
559 yh=hold(2,4*(il-1)+4)
560 zh=hold(3,4*(il-1)+4)
573 IF (iactiv(4,il)>=2)
THEN
574 vxk=l1(i)*vxg(i)+l2(i)*vx4(i)+l3(i)*vx1(i)
575 vyk=l1(i)*vyg(i)+l2(i)*vy4(i)+l3(i)*vy1(i)
576 vzk=l1(i)*vzg(i)+l2(i)*vz4(i)+l3(i)*vz1(i)
580 pn=dvx*nxi(4,i)+dvy*nyi(4,i)+dvz*nzi(4,i)
591 dold(1,4*(il-1)+4)=deltx+dvx*dt1
592 dold(2,4*(il-1)+4)=delty+dvy*dt1
593 dold(3,4*(il-1)+4)=deltz+dvz*dt1
594 fxt(4,i)=stf(4,i)*dold(1,4*(il-1)+4)
595 fyt(4,i)=stf(4,i)*dold(2,4*(il-1)+4)
596 fzt(4,i)=stf(4,i)*dold(3,4*(il-1)+4)
605#include "vectorize.inc"
606 DO 580 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
608 IF (iactiv(1,il)<=0)
GOTO 580
617 ftn=sqrt(ftx*ftx+fty*fty+ftz*ftz)
618 fn =sqrt(fnx*fnx+fny*fny+fnz*fnz)
619 fmax=
max(vfric*fn,zero)
628 IF (iactiv(1,il)>1)
THEN
630 deltx=scale*dold(1,4*(il-1)+1)
631 delty=scale*dold(2,4*(il-1)+1)
632 deltz=scale*dold(3,4*(il-1)+1)
634 dold(1,4*(il-1)+1)=deltx
635 dold(2,4*(il-1)+1)=delty
636 dold(3,4*(il-1)+1)=deltz
645#include "vectorize.inc"
646 DO 585 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
648 IF (iactiv(2,il)<=0)
GOTO 585
657 ftn=sqrt(ftx*ftx+fty*fty+ftz*ftz)
658 fn =sqrt(fnx*fnx+fny*fny+fnz*fnz)
659 fmax=
max(vfric*fn,zero)
668 IF (iactiv(2,il)>1)
THEN
670 deltx=scale*dold(1,4*(il-1)+2)
671 delty=scale*dold(2,4*(il-1)+2)
672 deltz=scale*dold(3,4*(il-1)+2)
674 dold(1,4*(il-1)+2)=deltx
675 dold(2,4*(il-1)+2)=delty
676 dold(3,4*(il-1)+2)=deltz
685#include "vectorize.inc"
686 DO 590 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
688 IF (iactiv(3,il)<=0)
GOTO 590
697 ftn=sqrt(ftx*ftx+fty*fty+ftz*ftz)
698 fn =sqrt(fnx*fnx+fny*fny+fnz*fnz)
699 fmax=
max(vfric*fn,zero)
708 IF (iactiv(3,il)>1)
THEN
710 deltx=scale*dold(1,4*(il-1)+3)
711 delty=scale*dold(2,4*(il-1)+3)
712 deltz=scale*dold(3,4*(il-1)+3)
714 dold(1,4*(il-1)+3)=deltx
715 dold(2,4*(il-1)+3)=delty
716 dold(3,4*(il-1)+3)=deltz
725#include "vectorize.inc"
726 DO 595 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
728 IF (iactiv(4,il)<=0)
GOTO 595
737 ftn=sqrt(ftx*ftx+fty*fty+ftz*ftz)
738 fn =sqrt(fnx*fnx+fny*fny+fnz*fnz)
739 fmax=
max(vfric*fn,zero)
748 IF (iactiv(4,il)>1)
THEN
750 deltx=scale*dold(1,4*(il-1)+4)
751 delty=scale*dold(2,4*(il-1)+4)
752 deltz=scale*dold(3,4*(il-1)+4)
754 dold(1,4*(il-1)+4)=deltx
755 dold(2,4*(il-1)+4)=delty
756 dold(3,4*(il-1)+4)=deltz
766 DO 650 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
768 IF (iactiv(1,il)<=0)
GOTO 650
771 dx2=xp1(1,i)-xtk(1,i)
772 dy2=xp1(2,i)-ytk(1,i)
773 dz2=xp1(3,i)-ztk(1,i)
775 dy3=xp2(2,i)-ytk(1,i)
776 dz3=xp2(3,i)-ztk(1,i)
780 s1=half*sqrt(dx*dx+dy*dy+dz*dz)
782 dx1=gx(1,i) -xtk(1,i)
783 dy1=gx(2,i) -ytk(1,i)
784 dz1=gx(3,i) -ztk(1,i)
788 s2=half*sqrt(dx*dx+dy*dy+dz*dz)
793 s3=half*sqrt(dx*dx+dy*dy+dz*dz)
797 iold(1,4*(il-1)+1)=s1*s
798 iold(2,4*(il-1)+1)=s2*s
799 iold(3,4*(il-1)+1)=s3*s
803 DO 660 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
805 IF (iactiv(2,il)<=0)
GOTO 660
808 dx2=xp2(1,i)-xtk(2,i)
809 dy2=xp2(2,i)-ytk(2,i)
810 dz2=xp2(3,i)-ztk(2,i)
811 dx3=xp3(1,i)-xtk(2,i)
812 dy3=xp3(2,i)-ytk(2,i)
813 dz3=xp3(3,i)-ztk(2,i)
817 s1=half*sqrt(dx*dx+dy*dy+dz*dz)
819 dx1=gx(1,i) -xtk(2,i)
820 dy1=gx(2,i) -ytk(2,i)
825 s2=half*sqrt(dx*dx+dy*dy+dz*dz)
830 s3=half*sqrt(dx*dx+dy*dy+dz*dz)
834 iold(1,4*(il-1)+2)=s1*s
835 iold(2,4*(il-1)+2)=s2*s
836 iold(3,4*(il-1)+2)=s3*s
840 DO 670 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
842 IF (iactiv(3,il)<=0)
GOTO 670
845 dx2=xp3(1,i)-xtk(3,i)
846 dy2=xp3(2,i)-ytk(3,i)
847 dz2=xp3(3,i)-ztk(3,i)
848 dx3=xp4(1,i)-xtk(3,i)
849 dy3=xp4(2,i)-ytk(3,i)
850 dz3=xp4(3,i)-ztk(3,i)
854 s1=half*sqrt(dx*dx+dy*dy+dz*dz)
856 dx1=gx(1,i) -xtk(3,i)
857 dy1=gx(2,i) -ytk(3,i)
858 dz1=gx(3,i) -ztk(3,i)
862 s2=half*sqrt(dx*dx+dy*dy+dz*dz)
867 s3=half*sqrt(dx*dx+dy*dy+dz*dz)
871 iold(1,4*(il-1)+3)=s1*s
872 iold(2,4*(il-1)+3)=s2*s
873 iold(3,4*(il-1)+3)=s3*s
877 DO 680 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
879 IF (iactiv(4,il)<=0)
GOTO 680
882 dx2=xp4(1,i)-xtk(4,i)
883 dy2=xp4(2,i)-ytk(4,i)
884 dz2=xp4(3,i)-ztk(4,i)
885 dx3=xp1(1,i)-xtk(4,i)
886 dy3=xp1(2,i)-ytk(4,i)
887 dz3=xp1(3,i)-ztk(4,i)
891 s1=half*sqrt(dx*dx+dy*dy+dz*dz)
893 dx1=gx(1,i) -xtk(4,i)
894 dy1=gx(2,i) -ytk(4,i)
895 dz1=gx(3,i) -ztk(4,i)
899 s2=half*sqrt(dx*dx+dy*dy+dz*dz)
904 s3=half*sqrt(dx*dx+dy*dy+dz*dz)
908 iold(1,4*(il-1)+4)=s1*s
909 iold(2,4*(il-1)+4)=s2*s
910 iold(3,4*(il-1)+4)=s3*s
915#include "vectorize.inc"
916 DO 700 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
920 IF (iactiv(1,il)>0)
THEN
921 hold(1,4*(il-1)+1)=xi(1,i)
922 hold(2,4*(il-1)+1)=yi(1,i)
923 hold(3,4*(il-1)+1)=zi(1,i)
924 nold(1,4*(il-1)+1)=nxi(1,i)
925 nold(2,4*(il-1)+1)=nyi(1,i)
926 nold(3,4*(il-1)+1)=nzi(1,i)
928 IF (iactiv(2,il)>0)
THEN
929 hold(1,4*(il-1)+2)=xi(2,i)
930 hold(2,4*(il-1)+2)=yi(2,i)
931 hold(3,4*(il-1)+2)=zi(2,i)
932 nold(1,4*(il-1)+2)=nxi(2,i)
933 nold(2,4*(il-1)+2)=nyi(2,i)
934 nold(3,4*(il-1)+2)=nzi(2,i)
936 IF (iactiv(3,il)>0)
THEN
937 hold(1,4*(il-1)+3)=xi(3,i)
938 hold(2,4*(il-1)+3)=yi(3,i)
939 hold(3,4*(il-1)+3)=zi(3,i)
940 nold(1,4*(il-1)+3)=nxi(3,i)
941 nold(2,4*(il-1)+3)=nyi(3,i)
942 nold(3,4*(il-1)+3)=nzi(3,i)
944 IF (iactiv(4,il)>0)
THEN
945 hold(1,4*(il-1)+4)=xi(4,i)
946 hold(2,4*(il-1)+4)=yi(4,i)
947 hold(3,4*(il-1)+4)=zi(4,i)
948 nold(1,4*(il-1)+4)=nxi(4,i)
949 nold(2,4*(il-1)+4)=nyi(4,i)
950 nold(3,4*(il-1)+4)=nzi(4,i)
957 DO 600 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
966 IF (iactiv(1,il)>0)
THEN
971 IF (iactiv(2,il)>0)
THEN
976 IF (iactiv(3,il)>0)
THEN
981 IF (iactiv(4,il)>0)
THEN
986 st1g=iold(1,4*(il-1)+1)*st1
987 st11=iold(2,4*(il-1)+1)*st1
988 st12=iold(3,4*(il-1)+1)*st1
989 st2g=iold(1,4*(il-1)+2)*st2
990 st22=iold(2,4*(il-1)+2)*st2
991 st23=iold(3,4*(il-1)+2)*st2
992 st3g=iold(1,4*(il-1)+3)*st3
993 st33=iold(2,4*(il-1)+3)*st3
994 st34=iold(3,4*(il-1)+3)*st3
995 st4g=iold(1,4*(il-1)+4)*st4
996 st44=iold(2,4*(il-1)+4)*st4
997 st41=iold(3,4*(il-1)+4)*st4
998 stg =fourth*(st1g+st2g+st3g+st4g)
999 wns(in1)=wns(in1)+st11+st41+stg
1000 wns(in2)=wns(in2)+st12+st22+stg
1001 wns(in3)=wns(in3)+st23+st33+stg
1002 wns(in4)=wns(in4)+st34+st44+stg
1007 DO 800 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
1016 IF (iactiv(1,il)>0)
THEN
1021 IF (iactiv(2,il)>0)
THEN
1026 IF (iactiv(3,il)>0)
THEN
1031 IF (iactiv(4,il)>0)
THEN
1037 fnormx=fnormx+f1+f2+f3+f4
1039 f1g=iold(1,4*(il-1)+1)*f1
1040 f11=iold(2,4*(il-1)+1)*f1
1041 f12=iold(3,4*(il-1)+1)*f1
1042 f2g=iold(1,4*(il-1)+2)*f2
1043 f22=iold(2,4*(il-1)+2)*f2
1044 f23=iold(3,4*(il-1)+2)*f2
1045 f3g=iold(1,4*(il-1)+3)*f3
1046 f33=iold(2,4*(il-1)+3)*f3
1047 f34=iold(3,4*(il-1)+3)*f3
1048 f4g=iold(1,4*(il-1)+4)*f4
1049 f44=iold(2,4*(il-1)+4)*f4
1050 f41=iold(3,4*(il-1)+4)*f4
1051 fg =fourth*(f1g+f2g+f3g+f4g)
1052 wnf(1,in1)=wnf(1,in1)+f11+f41+fg
1053 wnf(1,in2)=wnf(1,in2)+f12+f22+fg
1054 wnf(1,in3)=wnf(1,in3)+f23+f33+fg
1055 wnf(1,in4)=wnf(1,in4)+f34+f44+fg
1057 IF (iactiv(1,il)>0)
THEN
1062 IF (iactiv(2,il)>0)
THEN
1067 IF (iactiv(3,il)>0)
THEN
1072 IF (iactiv(4,il)>0)
THEN
1078 fnormy=fnormy+f1+f2+f3+f4
1080 f1g=iold(1,4*(il-1)+1)*f1
1081 f11=iold(2,4*(il-1)+1)*f1
1082 f12=iold(3,4*(il-1)+1)*f1
1083 f2g=iold(1,4*(il-1)+2)*f2
1084 f22=iold(2,4*(il-1)+2)*f2
1085 f23=iold(3,4*(il-1)+2)*f2
1086 f3g=iold(1,4*(il-1)+3)*f3
1087 f33=iold(2,4*(il-1)+3)*f3
1088 f34=iold(3,4*(il-1)+3)*f3
1089 f4g=iold(1,4*(il-1)+4)*f4
1090 f44=iold(2,4*(il-1)+4)*f4
1091 f41=iold(3,4*(il-1)+4)*f4
1092 fg =fourth*(f1g+f2g+f3g+f4g)
1093 wnf(2,in1)=wnf(2,in1)+f11+f41+fg
1094 wnf(2,in2)=wnf(2,in2)+f12+f22+fg
1095 wnf(2,in3)=wnf(2,in3)+f23+f33+fg
1096 wnf(2,in4)=wnf(2,in4)+f34+f44+fg
1098 IF (iactiv(1,il)>0)
THEN
1103 IF (iactiv(2,il)>0)
THEN
1108 IF (iactiv(3,il)>0)
THEN
1113 IF (iactiv(4,il)>0)
THEN
1119 fnormz=fnormz+f1+f2+f3+f4
1121 f1g=iold(1,4*(il-1)+1)*f1
1122 f11=iold(2,4*(il-1)+1)*f1
1123 f12=iold(3,4*(il-1)+1)*f1
1124 f2g=iold(1,4*(il-1)+2)*f2
1125 f22=iold(2,4*(il-1)+2)*f2
1126 f23=iold(3,4*(il-1)+2)*f2
1127 f3g=iold(1,4*(il-1)+3)*f3
1128 f33=iold(2,4*(il-1)+3)*f3
1129 f34=iold(3,4*(il-1)+3)*f3
1130 f4g=iold(1,4*(il-1)+4)*f4
1131 f44=iold(2,4*(il-1)+4)*f4
1133 fg =fourth*(f1g+f2g+f3g+f4g)
1134 wnf(3,in1)=wnf(3,in1)+f11+f41+fg
1135 wnf(3,in2)=wnf(3,in2)+f12+f22+fg
1136 wnf(3,in3)=wnf(3,in3)+f23+f33+fg
1137 wnf(3,in4)=wnf(3,in4)+f34+f44+fg
1142 DO 825 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
1151 IF (iactiv(1,il)>0)
THEN
1156 IF (iactiv(2,il)>0)
THEN
1161 IF (iactiv(3,il)>0)
THEN
1166 IF (iactiv(4,il)>0)
THEN
1172 ftangx=ftangx+f1+f2+f3+f4
1174 f1g=iold(1,4*(il-1)+1)*f1
1175 f11=iold(2,4*(il-1)+1)*f1
1176 f12=iold(3,4*(il-1)+1)*f1
1177 f2g=iold(1,4*(il-1)+2)*f2
1178 f22=iold(2,4*(il-1)+2)*f2
1179 f23=iold(3,4*(il-1)+2)*f2
1180 f3g=iold(1,4*(il-1)+3)*f3
1181 f33=iold(2,4*(il-1)+3)*f3
1182 f34=iold(3,4*(il-1)+3)*f3
1183 f4g=iold(1,4*(il-1)+4)*f4
1184 f44=iold(2,4*(il-1)+4)*f4
1185 f41=iold(3,4*(il-1)+4)*f4
1186 fg =fourth*(f1g+f2g+f3g+f4g)
1187 wtf(1,in1)=wtf(1,in1)+f11+f41+fg
1188 wtf(1,in2)=wtf(1,in2)+f12+f22+fg
1189 wtf(1,in3)=wtf(1,in3)+f23+f33+fg
1190 wtf(1,in4)=wtf(1,in4)+f34
1192 IF (iactiv(1,il)>0)
THEN
1197 IF (iactiv(2,il)>0)
THEN
1202 IF (iactiv(3,il)>0)
THEN
1207 IF (iactiv(4,il)>0)
THEN
1213 ftangy=ftangy+f1+f2+f3+f4
1215 f1g=iold(1,4*(il-1)+1)*f1
1216 f11=iold(2,4*(il-1)+1)*f1
1217 f12=iold(3,4*(il-1)+1)*f1
1218 f2g=iold(1,4*(il-1)+2)*f2
1219 f22=iold(2,4*(il-1)+2)*f2
1220 f23=iold(3,4*(il-1)+2)*f2
1221 f3g=iold(1,4*(il-1)+3)*f3
1222 f33=iold(2,4*(il-1)+3)*f3
1223 f34=iold(3,4*(il-1)+3)*f3
1224 f4g=iold(1,4*(il-1)+4)*f4
1225 f44=iold(2,4*(il-1)+4)*f4
1226 f41=iold(3,4*(il-1)+4)*f4
1227 fg =fourth*(f1g+f2g+f3g+f4g)
1228 wtf(2,in1)=wtf(2,in1)+f11+f41+fg
1229 wtf(2,in2)=wtf(2,in2)+f12+f22+fg
1230 wtf(2,in3)=wtf(2,in3)+f23+f33+fg
1231 wtf(2,in4)=wtf(2,in4)+f34+f44+fg
1233 IF (iactiv(1,il)>0)
THEN
1238 IF (iactiv(2,il)>0)
THEN
1243 IF (iactiv(3,il)>0)
THEN
1248 IF (iactiv(4,il)>0)
THEN
1254 ftangz=ftangz+f1+f2+f3+f4
1256 f1g=iold(1,4*(il-1)+1)*f1
1257 f11=iold(2,4*(il-1)+1)*f1
1258 f12=iold(3,4*(il-1)+1)*f1
1259 f2g=iold(1,4*(il-1)+2)*f2
1260 f22=iold(2,4*(il-1)+2)*f2
1261 f23=iold(3,4*(il-1)+2)*f2
1262 f3g=iold(1,4*(il-1)+3)*f3
1263 f33=iold(2,4*(il-1)+3)*f3
1264 f34=iold(3,4*(il-1)+3)*f3
1265 f4g=iold(1,4*(il-1)+4)*f4
1266 f44=iold(2,4*(il-1)+4)*f4
1267 f41=iold(3,4*(il-1)+4)*f4
1268 fg =fourth*(f1g+f2g+f3g+f4g)
1269 wtf(3,in1)=wtf(3,in1)+f11+f41+fg
1270 wtf(3,in2)=wtf(3,in2)+f12+f22+fg
1271 wtf(3,in3)=wtf(3,in3)+f23+f33+fg
1272 wtf(3,in4)=wtf(3,in4)+f34+f44+fg
1279 DO 900 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
1282 IF (iactiv(1,il)>0)
THEN
1286 pn=dvx*nxi(1,i)+dvy*nyi(1,i)+dvz*nzi(1,i)
1288 h =xp1(1,i)*nxi(1,i)+xp1(2,i)*nyi(1,i)+xp1(3,i)*nzi(1,i)
1289 dti=
min(dti,half*h/
max(em20,-pn))
1294 pn=dvx*nxi(1,i)+dvy*nyi(1,i)+dvz*nzi(1,i)
1296 h =xp2(1,i)*nxi(1,i)+xp2(2,i)*nyi(1,i)+xp2(3,i)*nzi(1,i)
1297 dti=
min(dti,half*h/
max(em20,-pn))
1302 pn=dvx*nxi(1,i)+dvy*nyi(1,i)+dvz*nzi(1,i)
1304 h =gx(1,i)*nxi(1,i)+gx(2,i)*nyi(1,i)+gx(3,i)*nzi(1,i)
1305 dti=
min(dti,half*h/
max(em20,-pn))
1308 IF (iactiv(2,il)>0)
THEN
1312 pn=dvx*nxi(2,i)+dvy*nyi(2,i)+dvz*nzi(2,i)
1314 h =xp2(1,i)*nxi(2,i)+xp2(2,i)*nyi(2,i)+xp2(3,i)*nzi(2,i)
1315 dti=
min(dti,half*h/
max(em20,-pn))
1320 pn=dvx*nxi(2,i)+dvy*nyi(2,i)+dvz*nzi(2,i)
1322 h =xp3(1,i)*nxi(2,i)+xp3(2,i)*nyi(2,i)+xp3(3,i)*nzi(2,i)
1323 dti=
min(dti,half*h/
max(em20,-pn))
1328 pn=dvx*nxi(2,i)+dvy*nyi(2,i)+dvz*nzi(2,i)
1330 h =gx(1,i)*nxi(2,i)+gx(2,i)*nyi(2,i)+gx(3,i)*nzi(2,i)
1331 dti=
min(dti,half*h/
max(em20,-pn))
1334 IF (iactiv(3,il)>0)
THEN
1338 pn=dvx*nxi(3,i)+dvy*nyi(3,i)+dvz*nzi(3,i)
1340 h =xp3(1,i)*nxi(3,i)+xp3(2,i)*nyi(3,i)+xp3(3,i)*nzi(3,i)
1341 dti=
min(dti,half*h/
max(em20,-pn))
1346 pn=dvx*nxi(3,i)+dvy*nyi(3,i)+dvz*nzi(3,i)
1348 h =xp4(1,i)*nxi(3,i)+xp4(2,i)*nyi(3,i)+xp4(3,i)*nzi(3,i)
1349 dti=
min(dti,half*h/
max(em20,-pn))
1354 pn=dvx*nxi(3,i)+dvy*nyi(3,i)+dvz*nzi(3,i)
1356 h =gx(1,i)*nxi(3,i)+gx(2,i)*nyi(3,i)+gx(3,i)*nzi(3,i)
1357 dti=
min(dti,half*h/
max(em20,-pn))
1360 IF (iactiv(4,il)>0)
THEN
1364 pn=dvx*nxi(4,i)+dvy*nyi(4,i)+dvz*nzi(4,i)
1366 h =xp1(1,i)*nxi(4,i)+xp1(2,i)*nyi(4,i)+xp1(3,i)*nzi(4,i)
1367 dti=
min(dti,half*h/
max(em20,-pn))
1372 pn=dvx*nxi(4,i)+dvy*nyi(4,i)+dvz*nzi(4,i)
1374 h =xp4(1,i)*nxi(4,i)+xp4(2,i)*nyi(4,i)+xp4(3,i)*nzi(4,i)
1375 dti=
min(dti,half*h/
max(em20,-pn))
1380 pn=dvx*nxi(4,i)+dvy*nyi(4,i)+dvz*nzi(4,i)
1382 h =gx(1,i)*nxi(4,i)+gx(2,i)*nyi(4,i)+gx(3,i)*nzi(4,i)
1383 dti=
min(dti,half*h/
max(em20,-pn))
1396 DO 950 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
1405 h =xp1(1,i)*nxi(1,i)+xp1(2,i)*nyi(1,i)+xp1(3,i)*nzi(1,i)
1406 dti=
min(dti,half*h/
max(em20,-pn))
1411 pn=dvx*nxi(1,i)+dvy*nyi(1,i)+dvz*nzi(1,i)
1413 h =xp2(1,i)*nxi(1,i)+xp2(2,i)*nyi(1,i)+xp2(3,i)*nzi(1,i)
1414 dti=
min(dti,half*h/
max(em20,-pn))
1419 pn=dvx*nxi(1,i)+dvy*nyi(1,i)+dvz*nzi(1,i)
1421 h =gx(1,i)*nxi(1,i)+gx(2,i)*nyi(1,i)+gx(3,i)*nzi(1,i)
1422 dti=
min(dti,half*h/
max(em20,-pn))
1425 IF (iactiv(2,il)>0)
THEN
1429 pn=dvx*nxi(2,i)+dvy*nyi(2,i)+dvz*nzi(2,i)
1431 h =xp2(1,i)*nxi(2,i)+xp2(2,i)*nyi(2,i)+xp2(3,i)*nzi(2,i)
1432 dti=
min(dti,half*h/
max(em20,-pn))
1437 pn=dvx*nxi(2,i)+dvy*nyi(2,i)+dvz*nzi(2,i)
1439 h =xp3(1,i)*nxi(2,i)+xp3(2,i)*nyi(2,i)+xp3(3,i)*nzi(2,i)
1440 dti=
min(dti,half*h/
max(em20,-pn))
1445 pn=dvx*nxi(2,i)+dvy*nyi(2,i)+dvz*nzi(2,i)
1447 h =gx(1,i)*nxi(2,i)+gx(2,i)*nyi(2,i)+gx(3,i)*nzi(2,i)
1448 dti=
min(dti,half*h/
max(em20,-pn))
1451 IF (iactiv(3,il)>0)
THEN
1455 pn=dvx*nxi(3,i)+dvy*nyi(3,i)+dvz*nzi(3,i)
1457 h =xp3(1,i)*nxi(3,i)+xp3(2,i)*nyi(3,i)+xp3(3,i)*nzi(3,i)
1458 dti=
min(dti,half*h/
max(em20,-pn))
1463 pn=dvx*nxi(3,i)+dvy*nyi(3,i)+dvz*nzi(3,i)
1465 h =xp4(1,i)*nxi(3,i)+xp4(2,i)*nyi(3,i)+xp4(3,i)*nzi(3,i)
1466 dti=
min(dti,half*h/
max(em20,-pn))
1471 pn=dvx*nxi(3,i)+dvy*nyi(3,i)+dvz*nzi(3,i)
1473 h =gx(1,i)*nxi(3,i)+gx(2,i)*nyi(3,i)+gx(3,i)*nzi(3,i)
1474 dti=
min(dti,half*h/
max(em20,-pn))
1477 IF (iactiv(4,il)>0)
THEN
1481 pn=dvx*nxi(4,i)+dvy*nyi(4,i)+dvz*nzi(4,i)
1483 h =xp1(1,i)*nxi(4,i)+xp1(2,i)*nyi(4,i)+xp1(3,i)*nzi(4,i)
1484 dti=
min(dti,half*h/
max(em20,-pn))
1489 pn=dvx*nxi(4,i)+dvy*nyi
1491 h =xp4(1,i)*nxi(4,i)+xp4(2,i)*nyi(4,i)+xp4(3,i)*nzi(4,i)
1492 dti=
min(dti,half*h/
max(em20,-pn))
1497 pn=dvx*nxi(4,i)+dvy*nyi(4,i)+dvz*nzi(4,i)
1499 h =gx(1,i)*nxi(4,i)+gx(2,i)*nyi(4,i)+gx(3,i)*nzi(4,i)
1500 dti=
min(dti,half*h/
max(em20,-pn))
1508#include "lockon.inc"
1509 WRITE(istdo,
'(A,E12.4,A,I8)')
1510 .
' **WARNING MINIMUM TIME STEP ',dti,
' IN INTERFACE ',noint
1511 WRITE(iout ,
'(A,E12.4,A,I8)')
1512 .
' **WARNING MINIMUM TIME STEP ',dti,
' IN INTERFACE ',noint
1513 WRITE(iout,
'(A,4I8)')
' ELEMENT/SEGMENT NODES :',
1515#include "lockoff.inc"