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,INBOX,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(NIX,*),NIX1,NIX2,ISURF0,IELTYP,
573 TYPE (BOX_) ,
DIMENSION(NBBOX) :: IBOX
577 INTEGER I,J,JJ,K,N,TAGPOS(NUMEL),TAGNEG(NUMEL),
578 . TAGN(NUMEL),IADB0,IADBOX,IDBX,,
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,,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 :: , 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
922 IF(nod(r) > 0) fac = fac + 1
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,(NIX,*),NIX1,IPARTE(*),IPART(LIPART1,*),
1053 . KLEVTREE,KELTREE,ELTREE(KELTREE,*),NUMEL,
1054 . NADMESH,FLAG,IBOXMAX,IADB,IBUFBOX(
1057TYPE (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
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
1152 . isk,nodinb,skew,ok)
1153 ELSE IF(itype == 2)
THEN
1154 CALL checkcyl(xp1, yp1, zp1 , xp2, yp2, zp2,
1155 . nodinb , diam, ok )
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 !
'SPHER'
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 my_real 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) :: IBOX
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(*),
1442 . x(3,*),skew(lskew,*)
1443 TYPE (BOX_) ,
DIMENSION(NBBOX) :: IBOX
1447 INTEGER I,J,JJ,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
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 . NSEG,,ISKN(LISKN,*),ISURF0,
1639 . ITABM1(*),IBUFBOX(*),
1640 . IADB,SBUFBOX,TAGSHELLBOX(*),NN
1642 CHARACTER KEY*4,MESS*40
1643 CHARACTER(LEN=NCHARTITLE) :: TITR
1645 TYPE (SURF_) :: ISURFLIN
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 MY_REAL 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
1949 . KNOD2ELS,NOD2ELS,IEXT ,FLAG,
1950 . IXS10 ,IXS16 ,IXS20,SKEW ,IBOX,
1951 . ID ,IBUFBOX,IADB ,KEY ,
1952 . SBUFBOX ,TITR ,KNOD2ELC,NOD2ELC,IXC,
1953 . TAGSHELLBOXC,KNOD2ELTG,NOD2ELTG,IXTG ,
1954 . TAGSHELLBOXG,IGRSURF,NN,NSEG0,LSUBMODEL)
1963 use element_mod ,
only : nixs,nixc,nixtg
1967#include "implicit_f.inc"
1971#include "com04_c.inc"
1972#include "param_c.inc"
1976 INTEGER IXS(NIXS,*),,KNOD2ELS(*),
1977 . NOD2ELS(*),IEXT,FLAG,IXS10(6,*),
1978 . ixs16(8,*),ixs20(12,*),
id,ibufbox(*),
1979 . knod2elc(*),nod2elc(*),ixc(nixc,*),tagshellboxc(*),
1980 . knod2eltg(*),nod2eltg(*),ixtg(nixtg,*) ,tagshellboxg(*),
1981 . iadb,sbufbox,nn,nseg0
1983 . x(3,*),skew(lskew,*)
1985 CHARACTER(LEN=NCHARTITLE) :: TITR
1986 TYPE (SURF_) :: IGRSURF
1987 TYPE (BOX_) ,
DIMENSION(NBBOX) :: IBOX
1992 INTEGER I,JREC,IDB,,ISU,ICOUNT,ITER,FLAGG,
1993 . boxseg,iadisu,elstag(numels)
1995 LOGICAL BOOL,IS_AVAILABLE,IS_ENCRYPTED
1998 ibox(i)%NBLEVELS = 0
2001 IF(ibox(i)%NBOXBOX > 0)
THEN
2002 ibox(i)%NBLEVELS = -1
2010 IF(key ==
'BOX')
THEN
2012 ELSE IF(key ==
'BOX2')
THEN
2020 IF(idb == ibox(i)%ID) isu=i
2038 IF(ibox(isu)%NBLEVELS == 0 .AND. ibox(isu)%LEVEL == 1)
THEN
2039 IF(ibox(isu)%NBOXBOX == 0)
THEN
2043 CALL elstagbox(ixs ,elstag ,x ,skew ,boxtype,isu ,ibox )
2047 CALL facebox(ixs ,x ,knod2els ,nod2els,iext ,
2048 . flag ,ixs10 ,ixs16 ,ixs20 ,skew ,
2049 . ibox ,elstag ,ibufbox ,iadb ,isu ,
2050 .
id ,titr ,knod2elc ,nod2elc,ixc ,
2051 . tagshellboxc ,knod2eltg ,nod2eltg ,ixtg ,tagshellboxg,
2053 IF (iadb>sbufbox .OR. iadb<0)
CALL ancmsg(msgid=1007, msgtype=msgerror,anmode=anstop)
2067 DO WHILE (icount == 1)
2072 . ibox ,skew ,flagg ,icount ,iter ,
2073 . boxtype ,ibufbox ,x ,iadb ,ixs ,
2074 . knod2els ,nod2els ,iext ,flag ,ixs10 ,
2075 . ixs16 ,ixs20 ,elstag ,
id ,titr ,
2076 . knod2elc ,nod2elc ,ixc ,tagshellboxc,knod2eltg,
2077 . nod2eltg ,ixtg ,tagshellboxg,0 )
2078 IF (iadb>sbufbox .OR. iadb<0)
2079 .
CALL ancmsg(msgid=1007, msgtype=msgerror,anmode=anstop)
2083 . ibox ,skew ,flagg ,icount ,iter ,
2084 . boxtype ,ibufbox ,x ,iadb ,ixs ,
2085 . knod2els ,nod2els ,iext ,flag ,ixs10 ,
2086 . ixs16 ,ixs20 ,elstag ,
id ,titr ,
2087 . knod2elc ,nod2elc ,ixc ,tagshellboxc,knod2eltg,
2088 . nod2eltg ,ixtg ,tagshellboxg,0 )
2097 boxseg = ibox(isu)%NENTITY
2098 iadisu = ibox(isu)%SURFIAD
2101 ELSE IF(flag == 1)
THEN
2105 CALL boxbufill(iadisu,ibufbox,igrsurf%NODES,nn,nseg0,
2106 . igrsurf%ELTYP,igrsurf%ELEM)
2126 SUBROUTINE facebox(IXS ,X ,KNOD2ELS ,NOD2ELS,IEXT ,
2127 . FLAG ,IXS10 ,IXS16 ,IXS20 ,SKEW ,
2128 . IBOX ,ELSTAG ,IBUFBOX ,IADB ,ISU ,
2129 . ID ,TITR ,KNOD2ELC ,NOD2ELC,IXC ,
2130 . TAGSHELLBOXC,KNOD2ELTG,NOD2ELTG ,IXTG ,TAGSHELLBOXG,
2138 use element_mod ,
only : nixs,nixc,nixtg
2142#include "implicit_f.inc"
2146#include "com04_c.inc"
2147#include "param_c.inc"
2152 INTEGER IXS(NIXS,*),KNOD2ELS(*),
2153 . NOD2ELS(*),IEXT,FLAG,IXS10(6,*),IXS16(8,*),
2154 . IXS20(12,*),IBUFBOX(*),IADB,ISU,ELSTAG(*),
2155 . KNOD2ELC(*),NOD2ELC(*),IXC(NIXC,*),TAGSHELLBOXC(*),KNOD2ELTG(*),
2156 . NOD2ELTG(*),IXTG(NIXTG,*),TAGSHELLBOXG(*)
2158 . X(3,*),SKEW(LSKEW,*)
2159 CHARACTER(LEN=NCHARTITLE)::TITR
2161 TYPE (BOX_) ,
DIMENSION(NBBOX) :: IBOX
2165 INTEGER I,N,J,K,JS,KS,II,JJ,K1,K2,LL,FACE(4),FC10(3),NN,KK,I1,
2166 . NI(4),NS(4),MI(4),MS(4),NMIN,MMIN,NF,MF,IPERM,N1,N2,
2167 . BOXSEG,IADB0,NNS,ISHEL
2168 INTEGER NODTAG(NUMNOD),FASTAG(NUMELS)
2169 INTEGER FACES(4,6),PWR(7),FACES10(3,6)
2182 DATA pwr/1,2,4,8,16,32,64/
2193 IF(elstag(js)/=0)
THEN
2210 DO js=1,numels8+numels10
2212 IF(mod(elstag(js),pwr(jj+1))/pwr(jj)==0)cycle
2214 ns(ii)=ixs(faces(ii,jj)+1,js)
2221 IF(ns(k2)==ns(k1))ns(k2)=0
2238 nmin=
min(nmin,ns(ii))
2241 IF(nmin==ns(iperm).AND.
2242 . ns(mod(iperm,nf)+1)/=ns(iperm))
THEN
2244 ni(ii)=ns(mod(ii+iperm-2,nf)+1)
2252 DO k=knod2els(ni(1))+1,knod2els(ni(1)+1)
2254 IF(ks==js .OR. ks > numels8+numels10 .OR.
2255 . elstag(ks)==0) cycle
2260 nodtag(ixs(ii+1,ks))=1
2264 nn=nn+nodtag(ni(ii))
2269 ms(ii)=ixs(faces(ii,kk)+1,ks)
2276 IF(ms(k2)==ms(k1))ms(k2)=0
2293 mmin=
min(mmin,ms(ii))
2296 IF(mmin==ms(iperm).AND.
2297 . ms(mod(iperm,mf)+1)/=ms(iperm))
THEN
2299 mi(ii)=ms(mod(ii+iperm-2,mf)+1)
2304 IF(mi(1)==ni(1).AND.mi(nf)==ni(2))
THEN
2306 fastag(js)=fastag(js)+pwr(jj)
2320 IF(elstag(js)>0)
THEN
2322 IF(mod(elstag(js),pwr(jj+1))/pwr(jj)/=0 .AND.
2323 . mod(fastag(js),pwr(jj+1))/pwr(jj)==0)
THEN
2336 IF(n2==n1)face(k2)=0
2355 IF(flag == 0 .and. nn == 3)
THEN
2358 DO k=knod2eltg(face(1))+1,knod2eltg(face(1)+1)
2363 IF(face(i) == ixtg(j+1,ks)) ishel = ishel + 1
2372 IF (iext_set > 0) iadb = iadb + 1
2373 ELSEIF(tagshellboxg(ks)==0)
THEN
2376 IF (iext_set > 0) iadb = iadb + 1
2378 ELSEIF(flag == 0 .and. nn == 4)
THEN
2381 DO k=knod2elc(face(1))+1,knod2elc(face(1)+1)
2386 IF(face(i) == ixc(j+1,ks)) ishel = ishel + 1
2395 IF (iext_set > 0) iadb = iadb + 1
2396 ELSEIF(tagshellboxc(ks)==0)
THEN
2399 IF (iext_set > 0) iadb = iadb + 1
2404 DO k=knod2eltg(face(1))+1,knod2eltg(face(1)+1)
2409 IF(face(i) == ixtg(j+1,ks)) ishel = ishel + 1
2417 CALL ssurf10tmp(face(1),face(2),face(3),face(3),
2418 . iadb,js,ibufbox,iext_set)
2419 ELSEIF(tagshellboxg(ks)==0)
THEN
2421 CALL ssurf10tmp(face(1),face(2),face(3),face(3),
2422 . iadb,js,ibufbox,iext_set)
2427 DO k=knod2elc(face(1))+1,knod2elc(face(1)+1)
2432 IF(face(i) == ixc(j+1,ks)) ishel = ishel + 1
2440 CALL ssurf10tmp(face(1),face(2),face(3),face(4),
2441 . iadb,js,ibufbox,iext_set)
2442 ELSEIF(tagshellboxc(ks)==0)
THEN
2444 CALL ssurf10tmp(face(1),face(2),face(3),face(4),
2445 . iadb,js,ibufbox,iext_set)
2459 IF(elstag(js)>0)
THEN
2461 IF(mod(elstag(js),pwr(jj+1))/pwr(jj)/=0 .AND.
2462 . mod(fastag(js),pwr(jj+1))/pwr(jj)==0)
THEN
2467 face(k1)=ixs(faces(k1,jj)+1,js)
2471 IF(face(k2) == face(k1)) face(k2)=0
2476 IF(face(k1) /= 0)
THEN
2484 fc10(1)=ixs10(faces10(1,jj),j)
2485 fc10(2)=ixs10(faces10(2,jj),j)
2486 fc10(3)=ixs10(faces10(3,jj),j)
2487 IF(fc10(1) /= 0)nns=nns+1
2488 IF(fc10(2) /= 0)nns=nns+1
2489 IF(fc10(3) /= 0)nns=nns+1
2500 IF (iext_set > 0) iadb = iadb + 4
2501 ELSEIF (flag == 1)
THEN
2502 CALL ssurf10tmp(face(1),fc10(1),fc10(3),fc10(3),
2503 . iadb,js,ibufbox,iext_set)
2504 CALL ssurf10tmp(face(2),fc10(2),fc10(1),fc10(1),
2505 . iadb,js,ibufbox,iext_set)
2506 CALL ssurf10tmp(face(3),fc10(3),fc10(2),fc10(2),
2507 . iadb,js,ibufbox,iext_set)
2508 CALL ssurf10tmp(fc10(1),fc10(2),fc10(3),fc10(3),
2509 . iadb,js,ibufbox,iext_set)
2511 ELSEIF(nns == 3)
THEN
2516 IF (iext_set > 0) iadb = iadb + 2
2517 ELSEIF (flag == 1)
THEN
2518 IF(fc10(1) == 0)
THEN
2519 CALL ssurf10tmp(face(1),face(2),fc10(2),fc10(3),
2520 . iadb,js,ibufbox,iext_set)
2521 CALL ssurf10tmp(face(3),fc10(3),fc10(2),fc10(2),
2522 . iadb,js,ibufbox,iext_set)
2523 ELSEIF(fc10(2) == 0)
THEN
2524 CALL ssurf10tmp(face(2),face(3),fc10(3),fc10(1),
2525 . iadb,js,ibufbox,iext_set)
2526 CALL ssurf10tmp(face(1),fc10(1),fc10(3),fc10(3),
2527 . iadb,js,ibufbox,iext_set)
2528 ELSEIF(fc10(3) == 0)
THEN
2529 CALL ssurf10tmp(face(3),face(1),fc10(1),fc10(2),
2530 . iadb,js,ibufbox,iext_set)
2531 CALL ssurf10tmp(face(2),fc10(2),fc10(1),fc10(1),
2532 . iadb,js,ibufbox,iext_set)
2535 ELSEIF(nns == 2)
THEN
2540 IF (iext_set > 0) iadb = iadb + 2
2541 ELSEIF (flag == 1)
THEN
2542 IF(fc10(1) /= 0)
THEN
2543 CALL ssurf10tmp(face(3),face(1),fc10(1),fc10(1),
2544 . iadb,js,ibufbox,iext_set)
2545 CALL ssurf10tmp(face(2),face(3),fc10(1),fc10(1),
2546 . iadb,js,ibufbox,iext_set)
2547 ELSEIF(fc10(2) /= 0)
THEN
2548 CALL ssurf10tmp(face(1),face(2),fc10(2),fc10(2),
2549 . iadb,js,ibufbox,iext_set)
2550 CALL ssurf10tmp(face(3),face(1),fc10(2),fc10(2),
2551 . iadb,js,ibufbox,iext_set)
2552 ELSEIF(fc10(3) /= 0)
THEN
2553 CALL ssurf10tmp(face(2),face(3),fc10(3),fc10(3),
2554 . iadb,js,ibufbox,iext_set)
2555 CALL ssurf10tmp(face(1),face(2),fc10(3),fc10(3),
2556 . iadb,js,ibufbox,iext_set)
2559 ELSEIF(nns == 1)
THEN
2564 IF (iext_set > 0) iadb = iadb + 1
2565 ELSEIF (flag == 1)
THEN
2566 CALL ssurf10tmp(face(1),face(2),face(3),face(3),
2567 . iadb,js,ibufbox,iext_set)
2579 IF(ibox(isu)%ID > 0)
THEN
2580 ibox(isu)%NENTITY=boxseg
2581 ibox(isu)%SURFIAD=iadb0