37 1 X ,NSV ,NELEM ,NSN ,EMINX ,
38 2 NME ,ITASK ,XSAV ,IXS ,IXS16 ,
39 3 IXS20 ,IXS10 ,V ,A ,XMSRG,
43 use element_mod ,
only : nixs
47#include "implicit_f.inc"
67 INTEGER NSN,ITASK,NME,
68 . NSV(*),NELEM(*),IXS(NIXS,*),IXS16(8,*),IXS20(12,*),
71 . x(3,*),v(3,*),a(3,*),xsav(3,*),eminx(6,*)
75 INTEGER NSNF,NMEF,NSNL,NMEL,I, J,I16,I20,LFT16,LLT16,
76 . LFT20,LLT20,LFT8,LLT8,LFT10,LLT10,I8,I10,
77 . INDEX16(MVSIZ),INDEX20(MVSIZ),INDEX8(MVSIZ),INDEX10(MVSIZ)
79 . xmsr(6),xslv(6),size_t ,xx,yy,zz
83 nsnf = 1 + itask*nsn / nthread
84 nsnl = (itask+1)*nsn / nthread
85 nmef = 1 + itask*nme / nthread
86 nmel = (itask+1)*nme / nthread
107 xx=x(1,j)+dt2*(v(1,j)+dt12*a(1,j))
108 yy=x(2,j)+dt2*(v(2,j)+dt12*a(2,j))
109 zz=x(3,j)+dt2*(v(3,j)+dt12*a(3,j))
110 xslv(1)=
max(xslv(1),xx-xsav(1,j))
111 xslv(2)=
max(xslv(2),yy-xsav(2,j))
112 xslv(3)=
max(xslv(3),zz-xsav(3,j))
113 xslv(4)=
min(xslv(4),xx-xsav(1,j))
114 xslv(5)=
min(xslv(5),yy-xsav(2,j))
115 xslv(6)=
min(xslv(6),zz-xsav(3,j))
142 IF(i16>=1.AND.i16<=numels16)
THEN
145 IF(llt16==mvsiz-1)
THEN
147 1 lft16,llt16 ,nelem,eminx,nmef ,nmel ,
148 2 x ,v ,a ,ixs ,ixs16,size_t,
149 3 xmsr ,index16,xsav )
152 ELSEIF(i20>=1.AND.i20<=numels20)
THEN
155 IF(llt20==mvsiz-1)
THEN
157 1 lft20,llt20 ,nelem,eminx,nmef ,nmel ,
158 2 x ,v ,a ,ixs ,ixs20,size_t,
159 3 xmsr ,index20,xsav )
165 IF(llt10==mvsiz-1)
THEN
167 1 lft10,llt10 ,nelem,eminx,nmef ,nmel ,
168 2 x ,v ,a ,ixs ,ixs10,size_t,
169 3 xmsr ,index10,xsav )
175 IF(llt8==mvsiz-1)
THEN
177 1 lft8 ,llt8 ,nelem,eminx,nmef ,nmel ,
178 2 x ,v ,a ,ixs ,size_t,
179 3 xmsr ,index8 ,xsav )
185 1 lft16,llt16 ,nelem,eminx,nmef ,nmel ,
186 2 x ,v ,a ,ixs ,ixs16,size_t,
187 3 xmsr ,index16,xsav )
189 1 lft20,llt20 ,nelem,eminx,nmef ,nmel ,
190 2 x ,v ,a ,ixs ,ixs20,size_t,
191 3 xmsr ,index20,xsav )
192 IF(llt8>0)
CALL i8box(
193 1 lft8 ,llt8 ,nelem,eminx,nmef ,nmel ,
194 2 x ,v ,a ,ixs ,size_t,
195 3 xmsr ,index8 ,xsav )
197 1 lft10,llt10 ,nelem,eminx,nmef ,nmel ,
198 2 x ,v ,a ,ixs ,ixs10,size_t,
199 3 xmsr ,index10,xsav )
202 xslvg(1)=
max(xslvg(1),xslv(1))
203 xslvg(2)=
max(xslvg(2),xslv(2))
204 xslvg(3)=
max(xslvg(3),xslv(3))
205 xslvg(4)=
min(xslvg(4),xslv(4))
206 xslvg(5)=
min(xslvg(5),xslv(5))
207 xslvg(6)=
min(xslvg(6),xslv(6))
208 xmsrg(1)=
max(xmsrg(1),xmsr(1))
209 xmsrg(2)=
max(xmsrg(2),xmsr(2))
210 xmsrg(3)=
max(xmsrg(3),xmsr(3))
211 xmsrg(4)=
min(xmsrg(4),xmsr(4))
212 xmsrg(5)=
min(xmsrg(5),xmsr(5))
213 xmsrg(6)=
min(xmsrg(6),xmsr(6))
215#include "lockoff.inc"
227 SUBROUTINE i16box(LFT ,LLT ,NELEM,EMINX,NMEF,NMEL,
228 2 X ,V ,A ,IXS ,IXS16,SIZE,
230 use element_mod ,
only : nixs
234#include "implicit_f.inc"
238#include "com04_c.inc"
239#include "com08_c.inc"
243 INTEGER LFT ,LLT,NMEF,NMEL,
244 . IXS(NIXS,*),IXS16(8,*),NELEM(*),INDEX(*)
247 . X(3,*),V(3,*),A(3,*),EMINX(6,*),SIZE,XMSR(*),XSAV(3,*)
251 INTEGER I,J,L,NE,IFACE,IDIR,IPERM(8,2),N16
253 . an,ax,bn,bx,cn,cx,dx,dn,d4,d8,x1,x2,x3,x4,
255 DATA iperm / 2, 3, 4, 5, 1, 2, 3, 4,
256 2 6, 7, 8, 9, 5, 6, 7, 8/
461 n16= ne - numels8 - numels10 - numels20
463 j = ixs(iperm(1,iface),ne)
464 x1 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
465 xmsr(idir) =
max(xmsr(idir) ,x1-xsav(idir,j))
466 xmsr(idir+3)=
min(xmsr(idir+3),x1-xsav(idir,j))
467 j = ixs(iperm(2,iface),ne)
468 x2 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
469 xmsr(idir) =
max(xmsr(idir) ,x2-xsav(idir,j))
470 xmsr(idir+3)=
min(xmsr(idir+3),x2-xsav(idir,j))
471 j = ixs(iperm(3,iface),ne)
472 x3 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
473 xmsr(idir) =
max(xmsr(idir) ,x3-xsav(idir,j))
474 xmsr(idir+3)=
min(xmsr(idir+3),x3-xsav(idir,j))
475 j = ixs(iperm(4,iface),ne)
476 x4 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
477 xmsr(idir) =
max(xmsr(idir) ,x4-xsav(idir,j))
478 xmsr(idir+3)=
min(xmsr(idir+3),x4-xsav(idir,j))
479 j = ixs16(iperm(5,iface),n16)
480 x9 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
481 xmsr(idir) =
max(xmsr(idir) ,x9-xsav(idir,j))
482 xmsr(idir+3)=
min(xmsr(idir+3),x9-xsav(idir,j))
483 j = ixs16(iperm(6,iface),n16)
484 x10= x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
485 xmsr(idir) =
max(xmsr(idir) ,x10-xsav(idir,j))
486 xmsr(idir+3)=
min(xmsr(idir+3),x10-xsav(idir,j))
487 j = ixs16(iperm(7,iface),n16)
488 x11= x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
489 xmsr(idir) =
max(xmsr(idir) ,x11-xsav(idir,j))
490 xmsr(idir+3)=
min(xmsr(idir+3),x11-xsav(idir,j))
491 j = ixs16(iperm(8,iface),n16)
492 x12= x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
493 xmsr(idir) =
max(xmsr(idir) ,x12-xsav(idir,j))
494 xmsr(idir+3)=
min(xmsr(idir+3),x12-xsav(idir,j))
496 xc = half*(x9+x10+x11+x12) - fourth*(x1+x2+x3+x4)
498 d4 = fourth * abs(x1-x2)
499 an =
min( x1 , x2 , x9-d4 )
500 ax =
max( x1 , x2 , x9+d4 )
502 d4 = fourth * abs(x3-x4)
503 bn =
min( x3 , x4 , x11-d4 )
504 bx =
max( x3 , x4 , x11+d4 )
506 d4 = fourth * abs(x12-x10)
507 cn =
min( x12 , x10 , xc-d4 )
508 cx =
max( x12 , x10 , xc+d4 )
510 d8 = one_over_8 *
max( ax-bn , bx-an )
512 dn =
max(
min( an , bn , cn-d4 ),
min(an , bn , cn) - d8 )
513 dx =
min(
max( ax , bx , cx+d4 ),
max( ax , bx , cx) + d8 )
515 eminx(idir,i) =
min( eminx(idir,i) , dn )
516 eminx(idir+3,i) =
max( eminx(idir+3,i), dx )
518 SIZE =
SIZE + dx - dn
535 SUBROUTINE i20box(LFT ,LLT ,NELEM,EMINX,NMEF,NMEL,
536 2 X ,V ,A ,IXS ,IXS20,SIZE,
538 use element_mod ,
only : nixs
542#include "implicit_f.inc"
546#include "com04_c.inc"
547#include "com08_c.inc"
551 INTEGER LFT ,LLT,NMEF,NMEL,
552 . IXS(NIXS,*),IXS20(12,*),NELEM(*),INDEX(*)
555 . X(3,*),V(3,*),A(3,*),EMINX(6,*),SIZE,XMSR(*),XSAV(3,*)
559 INTEGER I,J,L,NE,IDIR,N20
561 . AN12,AX12,AN34,AX34,AN56,AX56,AN78,AX78,CN,CX,DX,DN,D4,D8,
562 . x1,x2,x3,x4,x5,x6,x7,x8,
563 . x9,x10,x11,x12,x13,x14,x15,x16,x17,x18,x19,x20,xc
577 n20= ne - numels8 - numels10
580 x1 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
581 xmsr(idir) =
max(xmsr(idir) ,x1-xsav(idir,j))
582 xmsr(idir+3)=
min(xmsr(idir+3),x1-xsav(idir,j))
584 x2 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
585 xmsr(idir) =
max(xmsr(idir) ,x2-xsav(idir,j))
586 xmsr(idir+3)=
min(xmsr(idir+3),x2-xsav(idir,j))
588 x3 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
589 xmsr(idir) =
max(xmsr(idir) ,x3-xsav(idir,j))
590 xmsr(idir+3)=
min(xmsr(idir+3),x3-xsav(idir,j))
592 x4 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
593 xmsr(idir) =
max(xmsr(idir) ,x4-xsav(idir,j))
594 xmsr(idir+3)=
min(xmsr(idir+3),x4-xsav(idir,j))
596 x5 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
597 xmsr(idir) =
max(xmsr(idir) ,x5-xsav(idir,j))
598 xmsr(idir+3)=
min(xmsr(idir+3),x5-xsav(idir,j))
600 x6 = x(idir,j)+dt2*(v(idir,j
601 xmsr(idir) =
max(xmsr(idir) ,x6-xsav(idir,j))
602 xmsr(idir+3)=
min(xmsr(idir+3),x6-xsav(idir,j))
604 x7 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
605 xmsr(idir) =
max(xmsr(idir) ,x7-xsav(idir,j))
606 xmsr(idir+3)=
min(xmsr(idir+3),x7-xsav(idir,j))
608 x8 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
609 xmsr(idir) =
max(xmsr(idir) ,x8-xsav(idir,j))
610 xmsr(idir+3)=
min(xmsr(idir+3),x8-xsav(idir,j))
614 x9 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
615 xmsr(idir) =
max(xmsr(idir) ,x9-xsav(idir,j))
616 xmsr(idir+3)=
min(xmsr(idir+3),x9-xsav(idir,j))
618 x9=0.5*(x(idir,ixs(2,ne))+x(idir,ixs(3,ne)))
622 x10 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
623 xmsr(idir) =
max(xmsr(idir) ,x10-xsav(idir,j))
624 xmsr(idir+3)=
min(xmsr(idir+3),x10-xsav(idir,j))
626 x10=0.5*(x(idir,ixs(3,ne))+x(idir,ixs(4,ne)))
630 x11 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
631 xmsr(idir) =
max(xmsr(idir) ,x11-xsav(idir,j))
632 xmsr(idir+3)=
min(xmsr(idir+3),x11-xsav(idir,j))
634 x11=0.5*(x(idir,ixs(4,ne))+x(idir,ixs(5,ne)))
638 x12 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
639 xmsr(idir) =
max(xmsr(idir) ,x12-xsav(idir,j))
640 xmsr(idir+3)=
min(xmsr(idir+3),x12-xsav(idir,j))
642 x12=0.5*(x(idir,ixs(5,ne))+x(idir,ixs(2,ne)))
646 x13 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
647 xmsr(idir) =
max(xmsr(idir) ,x13-xsav(idir,j))
648 xmsr(idir+3)=
min(xmsr(idir+3),x13-xsav(idir,j))
650 x13=0.5*(x(idir,ixs(2,ne))+x(idir,ixs(6,ne)))
654 x14 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
655 xmsr(idir) =
max(xmsr(idir) ,x14-xsav(idir,j))
656 xmsr(idir+3)=
min(xmsr(idir+3),x14-xsav(idir,j))
658 x14=0.5*(x(idir,ixs(3,ne))+x(idir,ixs(6,ne)))
662 x15 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
663 xmsr(idir) =
max(xmsr(idir) ,x15-xsav(idir,j))
664 xmsr(idir+3)=
min(xmsr(idir+3),x15-xsav(idir,j))
666 x15=0.5*(x(idir,ixs(4,ne))+x(idir,ixs(8,ne)))
670 x16 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
671 xmsr(idir) =
max(xmsr(idir) ,x16-xsav(idir,j))
672 xmsr(idir+3)=
min(xmsr(idir+3),x16-xsav(idir,j))
674 x16=0.5*(x(idir,ixs(5,ne))+x(idir,ixs(9,ne)))
678 x17 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
679 xmsr(idir) =
max(xmsr(idir) ,x17-xsav(idir,j))
680 xmsr(idir+3)=
min(xmsr(idir+3),x17-xsav(idir,j))
682 x17=0.5*(x(idir,ixs(6,ne))+x(idir,ixs(7,ne)))
686 x18 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
687 xmsr(idir) =
max(xmsr(idir) ,x18-xsav(idir,j))
688 xmsr(idir+3)=
min(xmsr(idir+3),x18-xsav(idir,j))
690 x18=0.5*(x(idir,ixs(7,ne))+x(idir,ixs(8,ne)))
694 x19 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
695 xmsr(idir) =
max(xmsr(idir) ,x19-xsav(idir,j))
696 xmsr(idir+3)=
min(xmsr(idir+3),x19-xsav(idir,j))
698 x19=0.5*(x(idir,ixs(8,ne))+x(idir,ixs(9,ne)))
702 x20 = x(idir,j)+dt2*(v(idir
703 xmsr(idir) =
max(xmsr(idir) ,x20-xsav(idir,j))
704 xmsr(idir+3)=
min(xmsr(idir+3),x20-xsav(idir,j))
706 x20=0.5*(x(idir,ixs(6,ne))+x(idir,ixs(9,ne)))
712 xc = half*(x9+x10+x11+x12) - fourth*(x1+x2+x3+x4)
715 an12 =
min( x1 , x2 , x9-d4 )
716 ax12 =
max( x1 , x2 , x9+d4 )
718 d4 = fourth * abs(x3-x4)
719 an34 =
min( x3 , x4 , x11-d4 )
720 ax34 =
max( x3 , x4 , x11+d4 )
722 d4 = fourth * abs(x12-x10)
723 cn =
min( x12 , x10 , xc-d4 )
724 cx =
max( x12 , x10 , xc+d4 )
726 d8 = one_over_8 *
max( ax12-an34 , ax34-an12 )
728 dn =
max(
min(an12 , an34 , cn-d4 ),
729 .
min(an12 , an34 , cn) - d8 )
730 dx =
min(
max(ax12 , ax34 , cx+d4 ),
731 .
max(ax12 , ax34 , cx) + d8 )
733 eminx(idir,i) =
min( eminx(idir,i) , dn )
734 eminx(idir+3,i) =
max( eminx(idir+3,i), dx )
738 xc = half*(x17+x18+x19+x20) - fourth*(x5+x6+x7+x8)
740 d4 = fourth * abs(x5-x6)
741 an56 =
min( x5 , x6 , x17-d4 )
742 ax56 =
max( x5 , x6 , x17+d4 )
744 d4 = fourth * abs(x7-x8)
745 an78 =
min( x7 , x8 , x19-d4 )
746 ax78 =
max( x7 , x8 , x19+d4 )
748 d4 = fourth * abs(x20-x18)
749 cn =
min( x20 , x18 , xc-d4 )
750 cx =
max( x20 , x18 , xc+d4 )
752 d8 = one_over_8 *
max( ax56-an78 , ax78-an56 )
754 dn =
max(
min(an56 , an78 , cn-d4 ),
755 .
min(an56 , an78 , cn) - d8 )
756 dx =
min(
max(ax56 , ax78 , cx+d4 ),
757 .
max(ax56 , ax78 , cx) + d8 )
759 eminx(idir,i) =
min( eminx(idir,i) , dn )
760 eminx(idir+3,i) =
max( eminx(idir+3,i), dx )
764 xc = half*(x9+x14+x17+x13) - fourth*(x1+x2+x6+x5)
766 d4 = fourth * abs(x13-x14)
767 cn =
min( x13 , x14 , xc-d4 )
768 cx =
max( x13 , x14 , xc+d4 )
770 d8 = one_over_8 *
max( ax12-an56 , ax56-an12 )
772 dn =
max(
min(an12 , an56 , cn-d4 ),
773 .
min(an12 , an56 , cn) - d8 )
774 dx =
min(
max(ax12 , ax56 , cx+d4 ),
775 .
max(ax12 , ax56 , cx) + d8 )
777 eminx(idir,i) =
min( eminx(idir,i) , dn )
778 eminx(idir+3,i) =
max( eminx(idir+3,i), dx )
782 xc = half*(x11+x15+x19+x16) - fourth*(x3+x4+x8+x7)
784 d4 = fourth * abs(x16-x15)
785 cn =
min( x15 , x16 , xc-d4 )
786 cx =
max( x15 , x16 , xc+d4 )
788 d8 = one_over_8 *
max( ax34-an78 , ax78-an34 )
790 dn =
max(
min(an34 , an78 , cn-d4 ),
791 .
min(an34 , an78 , cn) - d8 )
792 dx =
min(
max(ax34 , ax78 , cx+d4 ),
793 .
max(ax34 , ax78 , cx) + d8 )
795 eminx(idir,i) =
min( eminx(idir,i) , dn )
796 eminx(idir+3,i) =
max( eminx(idir+3,i), dx )
800 xc = half*(x12+x13+x20+x16) - fourth*(x4+x1+x5+x8)
802 d4 = fourth * abs(x4-x1)
803 an12 =
min( x4 , x1 , x12-d4 )
804 ax12 =
max( x4 , x1 , x12+d4 )
806 d4 = fourth * abs(x8-x5)
807 an34 =
min( x8 , x5 , x20-d4 )
808 ax34 =
max( x8 , x5 , x20+d4 )
810 d4 = fourth * abs(x16-x13)
811 cn =
min( x16 , x13 , xc-d4 )
812 cx =
max( x16 , x13 , xc+d4 )
814 d8 = one_over_8 *
max( ax12-an34 , ax34-an12 )
816 dn =
max(
min(an12 , an34 , cn-d4 ),
817 .
min(an12 , an34 , cn) - d8 )
818 dx =
min(
max(ax12 , ax34 , cx+d4 ),
819 .
max(ax12 , ax34 , cx) + d8 )
821 eminx(idir,i) =
min( eminx(idir,i) , dn )
822 eminx(idir+3,i) =
max( eminx(idir+3,i), dx )
826 xc = half*(x10+x14+x18+x15) - fourth*(x3+x2+x6+x7)
828 d4 = fourth * abs(x3-x2)
829 an12 =
min( x3 , x2 , x10-d4 )
830 ax12 =
max( x3 , x2 , x10+d4 )
832 d4 = fourth * abs(x7-x6)
833 an34 =
min( x7 , x6 , x18-d4 )
834 ax34 =
max( x7 , x6 , x18+d4 )
836 d4 = fourth * abs(x15-x14)
837 cn =
min( x15 , x14 , xc-d4 )
838 cx =
max( x15 , x14 , xc+d4 )
840 d8 = one_over_8*
max( ax12-an34 , ax34-an12 )
842 dn =
max(
min(an12 , an34 , cn-d4 ),
843 .
min(an12 , an34 , cn) - d8 )
844 dx =
min(
max(ax12 , ax34 , cx+d4 ),
845 .
max(ax12 , ax34 , cx) + d8 )
847 eminx(idir,i) =
min( eminx(idir,i) , dn )
848 eminx(idir+3,i) =
max( eminx(idir+3,i), dx )
850 SIZE =
SIZE + dx - dn
865 SUBROUTINE i10box(LFT ,LLT ,NELEM,EMINX,NMEF,NMEL,
866 2 X ,V ,A ,IXS ,IXS10,SIZE,
868 use element_mod ,
only : nixs
872#include "implicit_f.inc"
876#include "com04_c.inc"
877#include "com08_c.inc"
881 INTEGER LFT ,LLT,NMEF,NMEL,
882 . IXS(NIXS,*),IXS10(6,*),NELEM(*),INDEX(*)
885 . X(3,*),V(3,*),A(3,*),EMINX(6,*),SIZE,XMSR(*),XSAV(3,*)
889 INTEGER ,J,L,NE,IDIR,N10
892 . x1,x2,x3,x4,x5,x6,x7,x8,
910 x1 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
911 xmsr(idir) =
max(xmsr(idir) ,x1-xsav(idir,j))
912 xmsr(idir+3)=
min(xmsr(idir+3),x1-xsav(idir,j))
914 x2 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
915 xmsr(idir) =
max(xmsr(idir) ,x2-xsav(idir,j))
916 xmsr(idir+3)=
min(xmsr(idir+3),x2-xsav(idir,j))
918 x3 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
919 xmsr(idir) =
max(xmsr(idir) ,x3-xsav(idir,j))
920 xmsr(idir+3)=
min(xmsr(idir+3),x3-xsav(idir,j))
922 x4 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
923 xmsr(idir) =
max(xmsr(idir) ,x4-xsav(idir,j))
924 xmsr(idir+3)=
min(xmsr(idir+3),x4-xsav(idir,j))
927 x5 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
928 xmsr(idir) =
max(xmsr(idir) ,x5-xsav(idir,j))
929 xmsr(idir+3)=
min(xmsr(idir+3),x5-xsav(idir,j))
931 x6 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
932 xmsr(idir) =
max(xmsr(idir) ,x6-xsav(idir,j))
933 xmsr(idir+3)=
min(xmsr(idir+3),x6-xsav(idir,j))
935 x7 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
936 xmsr(idir) =
max(xmsr(idir) ,x7-xsav(idir,j))
937 xmsr(idir+3)=
min(xmsr(idir+3),x7-xsav(idir,j))
939 x8 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
940 xmsr(idir) =
max(xmsr(idir) ,x8-xsav(idir,j))
941 xmsr(idir+3)=
min(xmsr(idir+3),x8-xsav(idir,j))
943 x9 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
944 xmsr(idir) =
max(xmsr(idir) ,x9-xsav(idir,j))
945 xmsr(idir+3)=
min(xmsr(idir+3),x9-xsav(idir,j))
947 x10 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
948 xmsr(idir) =
max(xmsr(idir) ,x10-xsav(idir,j))
949 xmsr(idir+3)=
min(xmsr(idir+3),x10-xsav(idir,j))
951 xx=
max(x1,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,x9,x10)
952 xn=
min(x1,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,x9,x10)
953 eminx(idir,i) =
min( eminx(idir,i) , xn )
954 eminx(idir+3,i) =
max( eminx(idir+3,i), xx )
958 xc = (two*(x5+x6+x7) - (x1+x2+x3))* third
959 eminx(idir,i) =
min( eminx(idir,i) , xc )
960 eminx(idir+3,i) =
max( eminx(idir+3,i), xc )
962 xc = (two*(x5+x8+x9) - (x1+x2+x4))*third
963 eminx(idir,i) =
min( eminx(idir,i) , xc )
964 eminx(idir+3,i) =
max( eminx(idir+3,i), xc )
966 xc = (two*(x6+x9+x10) - (x2+x3+x4)) * third
967 eminx(idir,i) =
min( eminx(idir,i) , xc )
968 eminx(idir+3,i) =
max( eminx(idir+3,i), xc )
970 xc = (two*(x7+x8+x10) - (x3+x1+x4)) * third
971 eminx(idir,i) =
min( eminx(idir,i) , xc )
972 eminx(idir+3,i) =
max( eminx(idir+3,i), xc )
989 SUBROUTINE i8box(LFT ,LLT ,NELEM,EMINX,NMEF,NMEL,
990 2 X ,V ,A ,IXS ,SIZE,
992 use element_mod ,
only : nixs
996#include "implicit_f.inc"
1000#include "com08_c.inc"
1004 INTEGER LFT ,LLT,NMEF,NMEL,
1005 . IXS(NIXS,*),NELEM(*),INDEX(*)
1008 . X(3,*),V(3,*),A(3,*),EMINX(6,*),SIZE,XMSR(*),XSAV(3,*)
1012 INTEGER I,J,L,NE,IDIR
1015 . X1,X2,X3,X4,X5,X6,X7,X8
1031 x1 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
1032 xmsr(idir) =
max(xmsr(idir) ,x1-xsav(idir,j))
1033 xmsr(idir+3)=
min(xmsr(idir+3),x1-xsav(idir,j))
1035 x2 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
1036 xmsr(idir) =
max(xmsr(idir) ,x2-xsav(idir,j))
1037 xmsr(idir+3)=
min(xmsr(idir+3),x2-xsav(idir,j))
1039 x3 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
1040 xmsr(idir) =
max(xmsr(idir) ,x3-xsav(idir,j))
1041 xmsr(idir+3)=
min(xmsr(idir+3),x3-xsav(idir,j))
1043 x4 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
1044 xmsr(idir) =
max(xmsr(idir) ,x4-xsav(idir,j))
1045 xmsr(idir+3)=
min(xmsr(idir+3),x4-xsav(idir,j))
1047 x5 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
1048 xmsr(idir) =
max(xmsr(idir) ,x5-xsav(idir,j))
1049 xmsr(idir+3)=
min(xmsr(idir+3),x5-xsav(idir,j))
1051 x6 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
1052 xmsr(idir) =
max(xmsr(idir) ,x6-xsav(idir,j))
1053 xmsr(idir+3)=
min(xmsr(idir+3),x6-xsav(idir,j))
1055 x7 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
1056 xmsr(idir) =
max(xmsr(idir) ,x7-xsav(idir,j))
1057 xmsr(idir+3)=
min(xmsr(idir+3),x7-xsav(idir,j))
1059 x8 = x(idir,j)+dt2*(v(idir,j)+dt12*a(idir,j))
1060 xmsr(idir) =
max(xmsr(idir) ,x8-xsav(idir,j))
1061 xmsr(idir+3)=
min(xmsr(idir+3),x8-xsav(idir,j))
1064 dx=
max(x1,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 )
1065 dn=
min(x1,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 )
1067 eminx(idir,i) =
min( eminx(idir,i) , dn )
1068 eminx(idir+3,i) =
max( eminx(idir+3,i), dx )
1070 SIZE =
SIZE + dx - dn