35 . SKEW,IGS ,ISKN ,ITABM1,IBOX ,
36 . ID ,IBUFBOX,IADB ,TITR,KEY,NN,
45 USE format_mod ,
ONLY : fmt_i
46 USE reader_old_mod ,
ONLY : line, irec
50#include "implicit_f.inc"
62 . IGS,ISKN(LISKN,*),ITABM1(*),
63 . ID,IBUFBOX(*),IADB,NN,IBOXMAX
65 . x(3,*),skew(lskew,*)
66 CHARACTER(LEN=NCHARTITLE) :: TITR
67 CHARACTER(LEN=NCHARFIELD) :: KEY
68 TYPE (GROUP_) ,
DIMENSION(NGRNOD) :: IGRNOD
69 TYPE (BOX_) ,
DIMENSION(NBBOX) :: IBOX
73 INTEGER I,J,K,N,ISU,JREC,IDB,NBOX,BOXTYPE,IADBOX,
74 . ICOUNT,ITER,FLAGG,,BOXNODS,IADISU
82 IF(ibox(i)%NBOXBOX > 0)
THEN
91 READ(iin,rec=jrec,err=999,fmt=
'(A)')line
92 READ(line,err=999,fmt=fmt_i) idb
98 IF(idb == ibox(i)%ID) isu=i
102 nbox = ibox(isu)%NBOXBOX
104 ibox(isu)%ACTIBOX = 1
120 IF(ibox(isu)%NBLEVELS == 0 .AND. ibox(isu)%LEVEL == 1)
THEN
122 CALL boxtagn(x ,ibufbox,skew,iadb,ibox,isu ,flag,iboxmax)
133 DO WHILE (icount == 1)
138 . flagg ,icount,iter ,ibufbox,
139 . x ,iadb ,id ,titr ,
140 . key ,flag ,iboxmax)
144 . flagg ,icount,iter ,ibufbox,
145 . x ,iadb ,id ,titr ,
146 . key ,flag ,iboxmax)
155 boxnods = ibox(isu)%NENTITY
157 ELSE IF(flag == 1)
THEN
158 boxnods = ibox(isu)%NENTITY
159 iadisu = ibox(isu)%BOXIAD
162 n=ibufbox(iadisu+i-1)
164 igrnod(igs)%ENTITY(nn) = n
552 . NIX ,IX ,NIX1 ,NIX2,ISURF0,IELTYP,
562#include "implicit_f.inc"
566#include "com04_c.inc"
570 INTEGER IBUFBOX(*),IB,IADB,
571 . NUMEL,NIX,IX(,*),NIX1,NIX2,ISURF0,IELTYP,
573 TYPE () ,
DIMENSION(NBBOX) :: IBOX
577 INTEGER I,J,JJ,K,N,TAGPOS(NUMEL),TAGNEG(NUMEL),
578 . TAGN(NUMEL),IADB0,IADBOX,IDBX,NBOX,
579 . jad,ibs,boxseg0,boxseg,dif_nix,kad,pos_iext
582 IF (isurf0 == 0) dif_nix = 4
586 dif_nix = dif_nix + 1
599 nbox = ibox(ib)%NBOXBOX
604 j = ibox(ib)%IBOXBOX(k)
608 . boxseg0 = boxseg0 + ibox(ibs)%NENTITY
611 IF (isurf0 == 0)
THEN
612 iadb = iadb + boxseg0*4
613 IF(iext > 0) iadb = iadb + boxseg0
614 ELSEIF (isurf0 == 1)
THEN
615 iadb = iadb + boxseg0*6
616 IF(iext > 0) iadb = iadb + boxseg0
619 ibox(ib)%NENTITY=boxseg0
620 ibox(ib)%BOXIAD=iadb0
621 IF (ibox(ib)%ACTIBOX == 0) ibox(ib)%ACTIBOX = 1
622 ELSEIF (flag == 1)
THEN
627 j = ibox(ib)%IBOXBOX(k)
630 boxseg0 = ibox(ibs)%NENTITY
631 jad = ibox(ibs)%BOXIAD
633 IF(idbx/=0 .and. j > 0)
THEN
636 kad = jad - 1 + dif_nix - pos_iext
640 IF(tagpos(jj) == 0)
THEN
650 j = ibox(ib)%IBOXBOX(k)
653 boxseg0 = ibox(ibs)%NENTITY
654 jad = ibox(ibs)%BOXIAD
656 IF(idbx/=0 .and. j < 0)
THEN
659 kad = jad - 1 + dif_nix - pos_iext
662 IF(tagneg(jj) == 0)
THEN
672 IF(tagpos(i) > 0 .and. tagneg(i) == 0)tagn(i) = 1
680 ibox(ib)%NENTITY=boxseg
681 ibox(ib)%BOXIAD=iadb0
682 IF(ibox(ib)%ACTIBOX == 0) ibox(ib)%ACTIBOX = 1
690 ibufbox(iadb) = ix(k,i)
694 ibufbox(iadb) = ix(nix1,i)
696 ibufbox(iadb) = ix(nix2,i)
700 ibufbox(iadb) = ibufbox(iadb-1)
727 SUBROUTINE boxassem4(IBOX,IBUFBOX,IB,IADB,FLAG,IEXT_SET)
736#include "implicit_f.inc"
740#include "com04_c.inc"
741#include "param_c.inc"
745 INTEGER IBUFBOX(*),IB,IADB,FLAG,IEXT_SET
746 TYPE (BOX_) ,
DIMENSION(NBBOX) :: IBOX
750 INTEGER I,J,JJ,K,N,JJ_OLD,IADB0,IADBOX,IDBX,NBOX,IS,IIS,r,
751 . jad,ibs,boxseg0,boxseg,dif_nix,
752 . nod(4),nold(4),fac,nfac,idel,jface,
754 INTEGER,
DIMENSION(:,:,:),
ALLOCATABLE :: ELFACE
755 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: TAGFACES, POSFACE, NEGFACE
756 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TAG8, TAG10, IFACE
759 ALLOCATE(ELFACE(4,16,NUMELS),TAGFACES(16,NUMELS))
760 ALLOCATE(posface(16,numels),negface(16,numels))
761 ALLOCATE(tag8(numels),tag10(numels),iface(numels))
765 IF (iext_set > 0)
THEN
766 dif_nix = dif_nix + 1
797 nbox = ibox(ib)%NBOXBOX
802 j = ibox(ib)%IBOXBOX(k)
805 IF (idbx /= 0) boxseg0 = boxseg0 + ibox(ibs)%NENTITY
806 iadb = iadb + boxseg0
810 IF(tag10(j) == 1) nface = 16
813 IF (iext_set > 0) iadb = iadb + 1
818 ibox(ib)%NENTITY=boxseg0
819 ibox(ib)%SURFIAD=iadb0
820 IF (ibox(ib)%ACTIBOX == 0) ibox(ib)%ACTIBOX = 1
821 ELSEIF (flag == 1)
THEN
829 j = ibox(ib)%IBOXBOX(k)
832 boxseg0 = ibox(ibs)%NENTITY
833 jad = ibox(ibs)%SURFIAD
835 IF(idbx/=0 .and. j > 0)
THEN
838 kad = jad - 1 + dif_nix - pos_iext
840 nod(1) = ibufbox(jad)
841 nod(2) = ibufbox(jad+1)
842 nod(3) = ibufbox(jad+2)
843 nod(4) = ibufbox(jad+3)
846 IF(tag10(jj) == 1) nface = 16
850 IF(nod(r) > 0) fac = fac + 1
856 nold(1) = elface(1,iis,jj)
857 nold(2) = elface(2,iis,jj)
858 nold(3) = elface(3,iis,jj)
859 nold(4) = elface(4,iis,jj)
862 IF(nold(r) > 0 .and. nold(r)==nod(r))
866 IF(fac == 4 .and. nfac == 4)
THEN
877 iface(jj) = iface(jj) + 1
881 IF(elface(1,is,jj) == 0)
882 . elface(1,is,jj) = ibufbox(jad)
883 IF(elface(2,is,jj) == 0)
884 . elface(2,is,jj) = ibufbox(jad+1)
885 IF(elface(3,is,jj) == 0)
886 . elface(3,is,jj) = ibufbox(jad+2)
887 IF(elface(4,is,jj) == 0)
888 . elface(4,is,jj) = ibufbox(jad+3)
899 j = ibox(ib)%IBOXBOX(k)
902 boxseg0 = ibox(ibs)%NENTITY
903 jad = ibox(ibs)%SURFIAD
905 IF(idbx/=0 .and. j < 0)
THEN
908 kad = jad - 1 + dif_nix - pos_iext
910 nod(1) = ibufbox(jad)
911 nod(2) = ibufbox(jad+1)
912 nod(3) = ibufbox(jad+2)
913 nod(4) = ibufbox(jad+3)
916 IF(tag10(jj) == 1) nface = 16
928 nold(1) = elface(1,iis,jj)
929 nold(2) = elface(2,iis,jj)
930 nold(3) = elface(3,iis,jj)
931 nold(4) = elface(4,iis,jj)
934 IF(nold(r) > 0 .and. nold(r)==nod(r))
938 IF(fac == 4 .and. nfac == 4)
THEN
964 IF(tag10(jj) == 1) nface = 16
966 IF(posface(is,j)>0 .and. negface(is,j)==0)
THEN
977 IF(tag10(jj) == 1) nface = 16
979 IF(tagfaces(is,j) == 1)
THEN
980 ibufbox(iadb) = elface(1,is,j)
982 ibufbox(iadb) = elface(2,is,j)
984 ibufbox(iadb) = elface(3,is,j)
986 ibufbox(iadb) = elface(4,is,j)
993 IF (iext_set > 0)
THEN
994 ibufbox(iadb) = iext_set
1003 ibox(ib)%NENTITY=boxseg
1004 ibox(ib)%SURFIAD=iadb0
1005 IF(ibox(ib)%ACTIBOX == 0) ibox(ib)%ACTIBOX = 1
1008 DEALLOCATE(elface,tagfaces)
1009 DEALLOCATE(posface,negface)
1010 DEALLOCATE(tag8,tag10,iface)
1029 . ISU ,BOXTYPE,IX ,NIX ,
1030 . NIX1 ,IPARTE ,IPART ,KLEVTREE,ELTREE,
1031 . KELTREE,NUMEL ,NADMESH,FLAG ,IBOXMAX,
1041#include "implicit_f.inc"
1045#include "com04_c.inc"
1046#include "scr17_c.inc"
1047#include "param_c.inc"
1051 INTEGER ISU,BOXTYPE,
1052 . NIX,IX(NIX,*),NIX1,IPARTE(*),IPART(LIPART1,*),
1053 . KLEVTREE,KELTREE,ELTREE(KELTREE,*),NUMEL,
1054 . NADMESH,FLAG,IBOXMAX,IADB,IBUFBOX(*)
1056 . (3,*),SKEW(LSKEW,*)
1057 TYPE (BOX_) ,
DIMENSION(NBBOX) :: IBOX
1061 INTEGER I,J,JJ,K,OK,OK1,ISK,IDBX,NELBOX,TAGELEM(NUMEL),
1062 . JAD,IP,NLEV,MY_LEV,ITYPE,IE,IADB0
1065 . xp1,yp1,zp1,xp2,yp2,zp2,diam,nodinb(3)
1072 tagelem(1:numel) = 0
1075 isk = ibox(isu)%ISKBOX
1076 itype= ibox(isu)%TYPE
1077 diam = ibox(isu)%DIAM
1088 IF (boxtype == 2)
THEN
1098 . isk,nodinb,skew,ok)
1099 ELSE IF(itype == 2)
THEN
1100 CALL checkcyl(xp1, yp1, zp1 , xp2, yp2, zp2,
1101 . nodinb , diam, ok )
1102 ELSE IF(itype == 3)
THEN
1107 IF(tagelem(jj) == 0)
THEN
1113 ELSE IF(boxtype == 1)
THEN
1124 . isk,nodinb,skew,ok)
1125 ELSE IF(itype == 2)
THEN
1126 CALL checkcyl(xp1, yp1, zp1 , xp2, yp2, zp2,
1127 . nodinb , diam, ok )
1128 ELSE IF(itype == 3)
THEN
1131 IF(ok == 1) ok1 = ok1 + 1
1133 IF (ok1 == nix1)
THEN
1134 IF(tagelem(jj) == 0)
THEN
1142 IF (boxtype == 2)
THEN
1153 ELSE IF(itype == 2)
THEN
1154 CALL checkcyl(xp1, yp1, zp1 , xp2, yp2, zp2,
1156 ELSE IF(itype == 3)
THEN
1163 my_lev=eltree(klevtree,jj)
1164 IF(my_lev < 0) my_lev=-(my_lev+1)
1165 IF(my_lev==nlev)
THEN
1166 IF(tagelem(jj) == 0)
THEN
1173 ELSE IF(boxtype == 1)
THEN
1184 . isk,nodinb,skew,ok)
1185 ELSE IF(itype == 2)
THEN
1186 CALL checkcyl(xp1, yp1, zp1 , xp2, yp2, zp2,
1187 . nodinb , diam, ok )
1188 ELSE IF(itype == 3)
THEN
1191 IF(ok == 1) ok1 = ok1 + 1
1193 IF (ok1 == nix1)
THEN
1196 my_lev=eltree(klevtree,jj)
1197 IF(my_lev < 0) my_lev=-(my_lev+1)
1198 IF(my_lev==nlev)
THEN
1199 IF(tagelem(jj) == 0)
THEN
1208 ibox(isu)%NENTITY = nelbox
1209 ibox(isu)%BOXIAD=iadb0
1214 IF(tagelem(i) == 1)
THEN
1218 ELSEIF (flag == 1 .AND. nelbox > 0)
THEN
1220 IF(tagelem(i) == 1)
THEN
1241 . SKEW ,IGS ,ISKN ,ITABM1,IBOX ,
1242 . ID ,NADMESH,NIX ,IX ,NIX1 ,NUMEL ,
1243 . IPARTE ,IPART ,KLEVTREE,ELTREE,KELTREE,BUFTMP,
1244 . KEY ,TITR ,MES ,IGRELEM,NGRELE ,NN ,
1245 . IADB ,IBOXMAX,IBUFBOX)
1252 USE format_mod ,
ONLY : fmt_i
1253 USE reader_old_mod ,
ONLY : line, irec
1257#include "implicit_f.inc"
1261#include "com04_c.inc"
1262#include "scr17_c.inc"
1263#include "units_c.inc"
1264#include "param_c.inc"
1268 INTEGER JREC,FLAG,NEL,IGS,
1269 . ISKN(LISKN,*),ITABM1(*),ID,NADMESH,
1270 . NIX,IX(NIX,*),NIX1,NUMEL,IPARTE(*),IPART(LIPART1,*),
1271 . KLEVTREE,KELTREE,ELTREE(KELTREE,*),
1272 . BUFTMP(NUMEL*5),NGRELE,NN,IBOXMAX,IADB,IBUFBOX(*)
1273 X(3,*),SKEW(LSKEW,*)
1274 CHARACTER KEY*4,MES*40
1275 CHARACTER(LEN=NCHARTITLE) :: TITR
1277 TYPE (GROUP_),
DIMENSION(NGRELE) :: IGRELEM
1278 TYPE (BOX_) ,
DIMENSION(NBBOX) ::
1282 INTEGER I,J,ISU,IDB,ISK,TAGN(NUMEL),BOXTYPE,
1283 . negbox,tagneg(numel),tagpos(numel),
1284 . nbox,boxele,icount,iter,flagg,iadisu
1286 . xp1,yp1,zp1,xp2,yp2,zp2,diam,nodinb(3)
1291 ibox(i)%NBLEVELS = 0
1294 IF(ibox(i)%NBOXBOX > 0)
THEN
1295 ibox(i)%NBLEVELS = -1
1303 READ(iin,rec=jrec,err=999,fmt=
'(A)')line
1304 READ(line,err=999,fmt=fmt_i) idb
1305 IF(key ==
'BOX')
THEN
1307 ELSE IF(key ==
'BOX2')
THEN
1315 IF(idb == ibox(i)%ID)
THEN
1322 nbox = ibox(isu)%NBOXBOX
1324 ibox(isu)%ACTIBOX = 1
1340 IF(ibox(isu)%NBLEVELS == 0 .AND. ibox(isu)%LEVEL == 1)
THEN
1343 . isu ,boxtype,ix ,nix ,
1344 . nix1 ,iparte ,ipart ,klevtree,eltree,
1345 . keltree,numel ,nadmesh,flag ,iboxmax,
1357 DO WHILE (icount == 1)
1362 . flagg ,icount,iter ,boxtype,
1363 . x ,ix ,flag ,iboxmax,
1364 . nix ,nix1 ,iparte ,ipart ,
1365 . klevtree,eltree,keltree ,numel ,
1366 . nadmesh ,id ,titr ,mes ,
1371 . flagg ,icount ,iter ,boxtype,
1372 . x ,ix ,flag ,iboxmax,
1373 . nix ,nix1 ,iparte ,ipart ,
1374 . klevtree,eltree ,keltree ,numel ,
1375 . nadmesh ,id ,titr ,mes ,
1386 boxele = ibox(isu)%NENTITY
1388 ELSE IF(flag == 1)
THEN
1389 boxele = ibox(isu)%NENTITY
1390 iadisu = ibox(isu)%BOXIAD
1393 j=ibufbox(iadisu+i-1)
1395 igrelem(igs)%ENTITY(nn) = j
1418 . IBOX ,ISU ,NUMEL ,NIX ,IX ,
1419 . NIX1 ,NIX2 ,ISURF0,IELTYP ,FLAG ,
1420 . TAGSHELLBOX ,IEXT )
1429#include "implicit_f.inc"
1433#include "com04_c.inc"
1434#include "param_c.inc"
1438 INTEGER IBUFBOX(*),IADB,NUMEL,BOXTYPE,ISURF0,IELTYP,
1439 . ISU,NIX,IX(NIX,*),NIX1,NIX2,
1440 . FLAG , TAGSHELLBOX(*),IEXT
1442 . x(3,*),skew(lskew,*)
1443 TYPE (BOX_) ,
DIMENSION(NBBOX) ::
1447 INTEGER I,J,,K,OK,OK1,ISK,IDBX,BOXSEG,
1448 . IADB0,JAD,ITYPE,DIF_NIX
1451 . XP1,YP1,ZP1,XP2,YP2,ZP2,DIAM,NODINB(3)
1453 DIF_NIX = nix2 - nix1 + 1
1454 IF(isurf0 == 0) dif_nix = nix1
1459 tagshellbox(1:numel) = 0
1462 isk = ibox(isu)%ISKBOX
1463 itype= ibox(isu)%TYPE
1464 diam = ibox(isu)%DIAM
1473 IF (boxtype == 2)
THEN
1483 . isk,nodinb,skew,ok)
1484 ELSE IF(itype == 2)
THEN
1485 CALL checkcyl(xp1, yp1, zp1 , xp2, yp2, zp2,
1486 . nodinb , diam, ok )
1487 ELSE IF(itype == 3)
THEN
1492 IF(tagshellbox(jj) == 0)
THEN
1498 ELSE IF (boxtype == 1)
THEN
1509 . isk,nodinb,skew,ok
1510 ELSE IF(itype == 2)
THEN
1511 CALL checkcyl(xp1, yp1, zp1 , xp2, yp2, zp2,
1512 . nodinb , diam, ok )
1513 ELSE IF(itype == 3)
THEN
1516 IF(ok == 1) ok1 = ok1 + 1
1518 IF (ok1 == dif_nix)
THEN
1519 IF(tagshellbox(jj) == 0)
THEN
1526 ibox(isu)%NENTITY = boxseg
1527 ibox(isu)%BOXIAD = iadb0
1535 IF(tagshellbox(i) == 1)
THEN
1565 ELSEIF (flag == 1 .AND. boxseg > 0)
THEN
1567 IF(tagshellbox(i) == 1)
THEN
1570 ibufbox(iadb) = ix(k,i)
1574 ibufbox(iadb) = ix(nix1,i)
1576 ibufbox(iadb) = ix(nix2,i)
1581 ibufbox(iadb) = ibufbox(iadb-1)
1584 ibufbox(iadb)=ieltyp
1589 ibufbox(iadb) = iext
1609 SUBROUTINE bigsbox(NUMEL ,IX ,NIX ,NIX1 ,NIX2,IELTYP,
1610 . X , NSEG ,FLAG,SKEW ,
1611 . ISKN ,ISURF0 ,ITABM1 ,IBOX,
1612 . ID ,IBUFBOX,ISURFLIN,IADB,KEY ,
1613 . SBUFBOX,TITR ,MESS ,TAGSHELLBOX,
1621 USE format_mod ,
ONLY : fmt_i
1622 USE reader_old_mod ,
ONLY : line, irec
1626#include "implicit_f.inc"
1630#include "com04_c.inc"
1631#include "param_c.inc"
1632#include "scr17_c.inc"
1633#include "units_c.inc"
1637 INTEGER NIX,IX(NIX,*),NIX1,NIX2,NUMEL,IELTYP,
1638 . ,FLAG,ISKN(LISKN,*),ISURF0,
1639 . ITABM1(*),IBUFBOX(*),
1640 . IADB,SBUFBOX,TAGSHELLBOX(*),NN
1642 CHARACTER KEY*4,MESS*40
1643 CHARACTER(LEN=NCHARTITLE) :: TITR
1646 TYPE (BOX_) ,
DIMENSION(NBBOX) :: IBOX
1650 INTEGER I,JJ,K,K1,J,JREC,ISK,BOXTYPE,ISU,TAGN(NUMEL),
1651 . ITYPE,IADBOX,IDB,NBOX,ID,IDBX,BOXSEG,IADISU,
1652 . ICOUNT,ITER,FLAGG,NIXEL
1653 DIAM,XP1,YP1,ZP1,XP2,YP2,ZP2,NODINB(3)
1658 ibox(i)%NBLEVELS = 0
1661 IF(ibox(i)%NBOXBOX > 0)
THEN
1662 ibox(i)%NBLEVELS = -1
1670 READ(iin,rec=jrec,err=999,fmt=
'(A)')line
1671 READ(line,err=999,fmt=fmt_i) idb
1672 IF(key ==
'BOX')
THEN
1674 ELSE IF(key ==
'BOX2')
THEN
1682 IF(idb == ibox(i)%ID) isu=i
1686 nbox = ibox(isu)%NBOXBOX
1688 ibox(isu)%ACTIBOX = 1
1698 ELSE IF(isurf0 == 1)
THEN
1713 IF(ibox(isu)%NBLEVELS == 0 .AND. ibox(isu)%LEVEL == 1)
THEN
1716 . ibox ,isu ,numel ,nix ,ix ,
1717 . nix1 ,nix2 ,isurf0,ieltyp ,flag ,
1729 DO WHILE (icount == 1)
1733 CALL boxboxs(ibox ,skew ,flagg ,icount ,iter ,
1734 . boxtype ,ibufbox ,x ,iadb ,ix ,
1735 . nix ,nix1 ,nix2 ,numel ,isurf0 ,
1736 . ieltyp ,id ,titr ,mess ,flag ,
1738 IF (iadb>sbufbox .OR. iadb<0)
1739 .
CALL ancmsg(msgid=1007, msgtype=msgerror,anmode=anstop)
1742 CALL boxboxs(ibox ,skew ,flagg ,icount ,iter ,
1743 . boxtype ,ibufbox ,x ,iadb ,ix ,
1744 . nix ,nix1 ,nix2 ,numel ,isurf0 ,
1745 . ieltyp ,id ,titr ,mess ,flag ,
1757 boxseg = ibox(isu)%NENTITY
1758 nseg = nseg + boxseg
1759 ELSE IF(flag == 1)
THEN
1760 boxseg = ibox(isu)%NENTITY
1761 iadisu = ibox(isu)%BOXIAD
1762 nseg = nseg + boxseg
1767 j=ibufbox(iadisu+k-2)
1768 isurflin%NODES(nn,k-1) = j
1770 iadisu = iadisu + nix2 - 1
1774 isurflin%NODES(nn,1) = j
1778 isurflin%NODES(nn,2) = j
1784 isurflin%NODES(nn,4) =
1785 . isurflin%NODES(nn,3)
1790 isurflin%ELTYP(nn)= j
1794 isurflin%ELEM(nn) = j
1826#include "implicit_f.inc"
1830#include "com04_c.inc"
1831#include "param_c.inc"
1835 INTEGER IXS(NIXS,*),ELSTAG(*),BOXTYPE,ISU
1837 . X(3,*),SKEW(LSKEW,*)
1838 TYPE (BOX_) ,
DIMENSION(NBBOX) :: IBOX
1842 INTEGER JJ,JS,K,J,OK,OK1,IDBX,ITYPE,ISK,
1845 . XP1,YP1,ZP1,XP2,YP2,ZP2,DIAM,NODINB(
1852 DATA pwr/1,2,4,8,16,32,64/
1858 isk = ibox(isu)%ISKBOX
1859 itype= ibox(isu)%TYPE
1860 diam = ibox(isu)%DIAM
1870 IF (boxtype == 2)
THEN
1876 j=ixs(faces(k,jj)+1,js)
1882 . isk,nodinb,skew,ok)
1883 ELSE IF(itype == 2)
THEN
1884 CALL checkcyl(xp1, yp1, zp1 , xp2, yp2, zp2
1885 . nodinb , diam, ok )
1886 ELSE IF(itype == 3)
THEN
1890 elstag(js)=elstag(js)+pwr(jj)
1897 ELSE IF (boxtype == 1)
THEN
1904 j=ixs(faces(k,jj)+1,js)
1911 ELSE IF(itype == 2)
THEN
1912 CALL checkcyl(xp1, yp1, zp1 , xp2, yp2, zp2,
1913 . nodinb , diam, ok )
1914 ELSE IF(itype == 3)
THEN
1917 IF(ok == 1) ok1 = ok1 + 1
1920 elstag(js)=elstag(js)+pwr(jj)
1948 . KNOD2ELS,NOD2ELS,IEXT ,FLAG,
1949 . IXS10 ,IXS16 ,IXS20,SKEW ,IBOX,
1950 . ID ,IBUFBOX,IADB ,KEY ,
1951 . SBUFBOX ,TITR ,KNOD2ELC,NOD2ELC,IXC,
1952 . TAGSHELLBOXC,KNOD2ELTG,NOD2ELTG,IXTG ,
1953 . TAGSHELLBOXG,IGRSURF,NN,NSEG0,LSUBMODEL)
1965#include "implicit_f.inc"
1969#include "com04_c.inc"
1970#include "param_c.inc"
1974 INTEGER IXS(NIXS,*),NSEG,KNOD2ELS(*),
1975 . NOD2ELS(*),IEXT,FLAG,IXS10(6,*),
1976 . IXS16(8,*),IXS20(12,*),ID,IBUFBOX(*),
1977 . knod2elc(*),nod2elc(*),ixc(nixc,*),tagshellboxc(*),
1978 . knod2eltg(*),nod2eltg(*),ixtg(nixtg,*) ,tagshellboxg(*),
1979 . iadb,sbufbox,nn,nseg0
1981 . x(3,*),skew(lskew,*)
1983 CHARACTER(LEN=NCHARTITLE) :: TITR
1984 TYPE (SURF_) :: IGRSURF
1985 TYPE (BOX_) ,
DIMENSION(NBBOX) :: IBOX
1986 TYPE(SUBMODEL_DATA) LSUBMODEL(NSUBMOD)
1990 INTEGER I,JREC,IDB,BOXTYPE,ISU,ICOUNT,ITER,FLAGG,
1991 . boxseg,iadisu,elstag(numels)
1993 LOGICAL BOOL,IS_AVAILABLE,IS_ENCRYPTED
1996 ibox(i)%NBLEVELS = 0
1999 IF(ibox(i)%NBOXBOX > 0)
THEN
2000 ibox(i)%NBLEVELS = -1
2008 IF(key ==
'BOX')
THEN
2010 ELSE IF(key ==
'BOX2')
THEN
2018 IF(idb == ibox(i)%ID) isu=i
2036 IF(ibox(isu)%NBLEVELS == 0 .AND. ibox(isu)%LEVEL == 1)
THEN
2037 IF(ibox(isu)%NBOXBOX == 0)
THEN
2041 CALL elstagbox(ixs ,elstag ,x ,skew ,boxtype,isu ,ibox )
2045 CALL facebox(ixs ,x ,knod2els ,nod2els,iext ,
2046 . flag ,ixs10 ,ixs16 ,ixs20 ,skew ,
2047 . ibox ,elstag ,ibufbox ,iadb ,isu ,
2048 . id ,titr ,knod2elc ,nod2elc,ixc ,
2049 . tagshellboxc ,knod2eltg ,nod2eltg ,ixtg ,tagshellboxg,
2051 IF (iadb>sbufbox .OR. iadb<0)
CALL ancmsg(msgid=1007, msgtype=msgerror,anmode=anstop)
2065 DO WHILE (icount == 1)
2070 . ibox ,skew ,flagg ,icount ,iter ,
2071 . boxtype ,ibufbox ,x ,iadb ,ixs ,
2072 . knod2els ,nod2els ,iext ,flag ,ixs10 ,
2073 . ixs16 ,ixs20 ,elstag ,id ,titr ,
2074 . knod2elc ,nod2elc ,ixc ,tagshellboxc,knod2eltg,
2075 . nod2eltg ,ixtg ,tagshellboxg,0 )
2076 IF (iadb>sbufbox .OR. iadb<0)
2077 .
CALL ancmsg(msgid=1007, msgtype=msgerror,anmode=anstop)
2081 . ibox ,skew ,flagg ,icount ,iter ,
2082 . boxtype ,ibufbox ,x ,iadb ,ixs ,
2083 . knod2els ,nod2els ,iext ,flag ,ixs10 ,
2084 . ixs16 ,ixs20 ,elstag ,id ,titr ,
2085 . knod2elc ,nod2elc ,ixc ,tagshellboxc,knod2eltg,
2086 . nod2eltg ,ixtg ,tagshellboxg,0 )
2095 boxseg = ibox(isu)%NENTITY
2096 iadisu = ibox(isu)%SURFIAD
2099 ELSE IF(flag == 1)
THEN
2103 CALL boxbufill(iadisu,ibufbox,igrsurf%NODES,nn,nseg0,
2104 . igrsurf%ELTYP,igrsurf%ELEM)
2124 SUBROUTINE facebox(IXS ,X ,KNOD2ELS ,NOD2ELS,IEXT ,
2125 . FLAG ,IXS10 ,IXS16 ,IXS20 ,SKEW ,
2126 . IBOX ,ELSTAG ,IBUFBOX ,IADB ,ISU ,
2127 . ID ,TITR ,KNOD2ELC ,NOD2ELC,IXC ,
2128 . TAGSHELLBOXC,KNOD2ELTG,NOD2ELTG ,IXTG ,TAGSHELLBOXG,
2139#include "implicit_f.inc"
2143#include "com04_c.inc"
2144#include "param_c.inc"
2149 INTEGER IXS(NIXS,*),KNOD2ELS(*),
2150 . NOD2ELS(*),IEXT,FLAG,IXS10(6,*),IXS16(8,*),
2151 . IXS20(12,*),IBUFBOX(*),IADB,ISU,ELSTAG(*),
2152 . KNOD2ELC(*),NOD2ELC(*),IXC(NIXC,*),TAGSHELLBOXC(*),KNOD2ELTG(*),
2153 . NOD2ELTG(*),IXTG(NIXTG,*),TAGSHELLBOXG(*)
2155 . X(3,*),SKEW(LSKEW,*)
2156 CHARACTER(LEN=NCHARTITLE)::TITR
2158 TYPE (BOX_) ,
DIMENSION(NBBOX) :: IBOX
2162 INTEGER I,N,J,K,JS,KS,II,JJ,K1,K2,LL,FACE(4),FC10(3),NN,KK,I1,
2163 . NI(4),NS(4),MI(4),MS(4),NMIN,MMIN,NF,MF,IPERM,N1,N2,
2164 . BOXSEG,IADB0,NNS,ISHEL
2165 INTEGER NODTAG(NUMNOD),FASTAG(NUMELS)
2166 INTEGER FACES(4,6),PWR(7),FACES10(3,6)
2179 DATA pwr/1,2,4,8,16,32,64/
2190 IF(elstag(js)/=0)
THEN
2207 DO js=1,numels8+numels10
2209 IF(mod(elstag(js),pwr(jj+1))/pwr(jj)==0)cycle
2211 ns(ii)=ixs(faces(ii,jj)+1,js)
2218 IF(ns(k2)==ns(k1))ns(k2)=0
2235 nmin=
min(nmin,ns(ii))
2238 IF(nmin==ns(iperm).AND.
2239 . ns(mod(iperm,nf)+1)/=ns(iperm))
THEN
2241 ni(ii)=ns(mod(ii+iperm-2,nf)+1)
2249 DO k=knod2els(ni(1))+1,knod2els(ni(1)+1)
2251 IF(ks==js .OR. ks > numels8+numels10 .OR.
2252 . elstag(ks)==0) cycle
2257 nodtag(ixs(ii+1,ks))=1
2261 nn=nn+nodtag(ni(ii))
2266 ms(ii)=ixs(faces(ii,kk)+1,ks)
2273 IF(ms(k2)==ms(k1))ms(k2)=0
2290 mmin=
min(mmin,ms(ii))
2293 IF(mmin==ms(iperm).AND.
2294 . ms(mod(iperm,mf)+1)/=ms(iperm))
THEN
2296 mi(ii)=ms(mod(ii+iperm-2,mf)+1)
2301 IF(mi(1)==ni(1).AND.mi(nf)==ni(2))
THEN
2303 fastag(js)=fastag(js)+pwr(jj)
2317 IF(elstag(js)>0)
THEN
2319 IF(mod(elstag(js),pwr(jj+1))/pwr(jj)/=0 .AND.
2320 . mod(fastag(js),pwr(jj+1))/pwr(jj)==0)
THEN
2333 IF(n2==n1)face(k2)=0
2352 IF(flag == 0 .and. nn == 3)
THEN
2355 DO k=knod2eltg(face(1))+1,knod2eltg(face(1)+1)
2360 IF(face(i) == ixtg(j+1,ks)) ishel = ishel + 1
2369 IF (iext_set > 0) iadb = iadb + 1
2370 ELSEIF(tagshellboxg(ks)==0)
THEN
2373 IF (iext_set > 0) iadb = iadb + 1
2375 ELSEIF(flag == 0 .and. nn == 4)
THEN
2378 DO k=knod2elc(face(1))+1,knod2elc(face(1)+1)
2383 IF(face(i) == ixc(j+1,ks)) ishel = ishel + 1
2392 IF (iext_set > 0) iadb = iadb + 1
2393 ELSEIF(tagshellboxc(ks)==0)
THEN
2396 IF (iext_set > 0) iadb = iadb + 1
2401 DO k=knod2eltg(face(1))+1,knod2eltg(face(1)+1)
2406 IF(face(i) == ixtg(j+1,ks)) ishel = ishel + 1
2414 CALL ssurf10tmp(face(1),face(2),face(3),face(3),
2415 . iadb,js,ibufbox,iext_set)
2416 ELSEIF(tagshellboxg(ks)==0)
THEN
2418 CALL ssurf10tmp(face(1),face(2),face(3),face(3),
2419 . iadb,js,ibufbox,iext_set)
2424 DO k=knod2elc(face(1))+1,knod2elc(face(1)+1)
2429 IF(face(i) == ixc(j+1,ks)) ishel = ishel + 1
2437 CALL ssurf10tmp(face(1),face(2),face(3),face(4),
2439 ELSEIF(tagshellboxc(ks)==0)
THEN
2441 CALL ssurf10tmp(face(1),face(2),face(3),face(4),
2442 . iadb,js,ibufbox,iext_set)
2456 IF(elstag(js)>0)
THEN
2458 IF(mod(elstag(js),pwr(jj+1))/pwr(jj)/=0 .AND.
2459 . mod(fastag(js),pwr(jj+1))/pwr(jj)==0)
THEN
2464 face(k1)=ixs(faces(k1,jj)+1,js)
2468 IF(face(k2) == face(k1)) face(k2)=0
2473 IF(face(k1) /= 0)
THEN
2481 fc10(1)=ixs10(faces10(1,jj),j)
2482 fc10(2)=ixs10(faces10(2,jj),j)
2483 fc10(3)=ixs10(faces10(3,jj),j)
2484 IF(fc10(1) /= 0)nns=nns+1
2485 IF(fc10(2) /= 0)nns=nns+1
2486 IF(fc10(3) /= 0)nns=nns+1
2497 IF (iext_set > 0) iadb = iadb + 4
2498 ELSEIF (flag == 1)
THEN
2499 CALL ssurf10tmp(face(1),fc10(1),fc10(3),fc10(3),
2500 . iadb,js,ibufbox,iext_set)
2501 CALL ssurf10tmp(face(2),fc10(2),fc10(1),fc10(1),
2502 . iadb,js,ibufbox,iext_set)
2504 . iadb,js,ibufbox,iext_set)
2505 CALL ssurf10tmp(fc10(1),fc10(2),fc10(3),fc10(3),
2506 . iadb,js,ibufbox,iext_set)
2508 ELSEIF(nns == 3)
THEN
2513 IF (iext_set > 0) iadb = iadb + 2
2514 ELSEIF (flag == 1)
THEN
2515 IF(fc10(1) == 0)
THEN
2516 CALL ssurf10tmp(face(1),face(2),fc10(2),fc10(3),
2517 . iadb,js,ibufbox,iext_set)
2518 CALL ssurf10tmp(face(3),fc10(3),fc10(2),fc10(2),
2519 . iadb,js,ibufbox,iext_set)
2520 ELSEIF(fc10(2) == 0)
THEN
2521 CALL ssurf10tmp(face(2),face(3),fc10(3),fc10(1),
2522 . iadb,js,ibufbox,iext_set)
2523 CALL ssurf10tmp(face(1),fc10(1),fc10(3),fc10(3),
2524 . iadb,js,ibufbox,iext_set)
2525 ELSEIF(fc10(3) == 0)
THEN
2526 CALL ssurf10tmp(face(3),face(1),fc10(1),fc10(2),
2527 . iadb,js,ibufbox,iext_set)
2528 CALL ssurf10tmp(face(2),fc10(2),fc10(1),fc10(1),
2529 . iadb,js,ibufbox,iext_set)
2532 ELSEIF(nns == 2)
THEN
2537 IF (iext_set > 0) iadb = iadb + 2
2538 ELSEIF (flag == 1)
THEN
2539 IF(fc10(1) /= 0)
THEN
2540 CALL ssurf10tmp(face(3),face(1),fc10(1),fc10(1),
2541 . iadb,js,ibufbox,iext_set)
2542 CALL ssurf10tmp(face(2),face(3),fc10(1),fc10(1),
2543 . iadb,js,ibufbox,iext_set)
2544 ELSEIF(fc10(2) /= 0)
THEN
2545 CALL ssurf10tmp(face(1),face(2),fc10(2),fc10(2),
2546 . iadb,js,ibufbox,iext_set)
2547 CALL ssurf10tmp(face(3),face(1),fc10(2),fc10(2),
2548 . iadb,js,ibufbox,iext_set)
2549 ELSEIF(fc10(3) /= 0)
THEN
2550 CALL ssurf10tmp(face(2),face(3),fc10(3),fc10(3),
2551 . iadb,js,ibufbox,iext_set)
2552 CALL ssurf10tmp(face(1),face(2),fc10(3),fc10(3),
2553 . iadb,js,ibufbox,iext_set)
2556 ELSEIF(nns == 1)
THEN
2561 IF (iext_set > 0) iadb = iadb + 1
2562 ELSEIF (flag == 1)
THEN
2563 CALL ssurf10tmp(face(1),face(2),face(3),face(3),
2564 . iadb,js,ibufbox,iext_set)
2576 IF(ibox(isu)%ID > 0)
THEN
2577 ibox(isu)%NENTITY=boxseg
2578 ibox(isu)%SURFIAD=iadb0
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)