50 2 NIX1 ,NIX ,NUMEL ,NGRELE ,IELT ,
51 3 IPART ,IPARTE ,X ,ELKEY ,
52 4 ISUBMOD ,FLAG ,KELTREE ,ELTREE ,KSONTREE ,
53 5 NSONTREE,KLEVTREE ,SKEW ,ISKN ,UNITAB ,
54 6 ITABM1 ,IBOX ,RTRANS ,LSUBMODEL,
55 7 IXX_S ,IXX_S_IND,IADBOXMAX,SUBSET , STARTKEY)
70#include "implicit_f.inc"
76#include "remesh_c.inc"
81 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
82 INTEGER NIX1 ,NIX ,NUMEL ,NGRELE,IELT,FLAG
83 INTEGER IPARTE(*),IPART(LIPART1,*),IX(NIX,*),ISUBMOD(*),
84 . KELTREE, ELTREE(KELTREE,*),
85 . KSONTREE, NSONTREE, KLEVTREE,ISKN(LISKN,*),ITABM1(*),
86 . IXX_S(*), IXX_S_IND(*)
88 . x(3,*),skew(lskew,*),rtrans(*)
90 CHARACTER ELKEY*4,STARTKEY*7
92 TYPE (SUBSET_) ,
DIMENSION(NSUBS) :: SUBSET
93 TYPE (GROUP_) ,
TARGET,
DIMENSION(NGRELE) :: IGRELEM
94 TYPE (BOX_) ,
DIMENSION(NBBOX) :: IBOX
98 INTEGER I,J,K,L,II,JJ,KK,ISU,ID,NEL,N1,N2,IGS,JREC,
99 . iad0,iadc,iadfin,it0,it1,it2,it3,it4,it5,
101 . isk,boxtype,j2(2),it6,sub_id,iadbox,nn,iadboxmax,
103 INTEGER NLIST,STAT,LIST_IGR(NGRELE)
104 INTEGER IP, NLEV, MY_LEV,IDMIN,IDMAX,OFFSET,NLINES
106 . xmin,xmax,ymin,
ymax,zmin,zmax,bid,fac_l,
107 . diam,xp1,yp1,zp1,xp2,yp2,zp2
108 CHARACTER(LEN=NCHARTITLE) :: TITR,TITR1
109 CHARACTER(LEN=NCHARKEY) :: KEY, KEY2
111 INTEGER,
DIMENSION(:),
ALLOCATABLE :: BUFTMP
112 INTEGER,
DIMENSION(:),
ALLOCATABLE :: BUFBOX
113 LOGICAL IS_AVAILABLE,IS_ENCRYPTED
115 INTEGER,
DIMENSION(:),
POINTER :: ELEM
116 INTEGER,
DIMENSION(:),
ALLOCATABLE :: LIST_ENTITY
122 INTEGER,
DIMENSION(:),
ALLOCATABLE :: arg1
123 INTEGER,
INTENT(INOUT) :: arg2
130 INTEGER NINTLST,NINTLSTN,LISTCNT
153 mes(05:18) =
' ELEMENT GROUP'
163 titr1=
'ELEMENT GROUP'
164 ALLOCATE(buftmp(
max(numel*5,npart)),stat=stat)
166 CALL ancmsg(msgid=268,anmode=aninfo,msgtype=msgerror,c1=
'BUFTMP')
177 . option_titr = titr ,
187 igrelem(igs)%NENTITY = 0
188 igrelem(igs)%GRTYPE = 0
189 igrelem(igs)%SORTED = 0
190 igrelem(igs)%GRPGRP = 0
191 igrelem(igs)%LEVEL = 0
192 igrelem(igs)%R2R_ALL = 0
193 igrelem(igs)%R2R_SHARE = 0
197 igrelem(igs)%GRTYPE=ielt
199 igrelem(igs)%TITLE=titr
201 IF(key(1:6) == startkey(2:7))
THEN
203 igrelem(igs)%NENTITY=-1
204 igrelem(igs)%GRPGRP=2
207 ELSEIF(key(1:4) == elkey)
THEN
211 igrelem(igs)%NENTITY=0
212 igrelem(igs)%GRPGRP=1
214 ELSEIF(key(1:4) ==
'PART' .OR. key(1:6) ==
'SUBSET' .OR. key(1:3) ==
'MAT' .OR. key(1:4) ==
'PROP')
THEN
218 igrelem(igs)%NENTITY=0
219 igrelem(igs)%GRPGRP=3
221 ELSEIF((key(1:3) ==
'BOX' .AND. nbbox == 0 .AND.(key2(1:5) /=
'RECTA'.AND.
222 . key2(1:5) /=
'CYLIN'.AND.key2(1:5) /=
'SPHER')).OR.key(1:4) ==
'GENE')
THEN
226 igrelem(igs)%NENTITY=0
227 igrelem(igs)%GRPGRP=4
229 ELSEIF(key(1:6) ==
'SUBMOD')
THEN
233 igrelem(igs)%NENTITY=0
234 igrelem(igs)%GRPGRP=5
236 ELSEIF(key(1:3) ==
'BOX'.AND.(key2(1:5) ==
'RECTA'.OR.
237 . key2(1:5) ==
'CYLIN'.OR.key2(1:5) ==
'SPHER'))
THEN
243 igrelem(igs)%NENTITY=0
244 igrelem(igs)%GRPGRP=6
246 ELSEIF(key(1:3) ==
'BOX' .AND. nbbox > 0)
THEN
249 ELSEIF(key(1:8) ==
'GEN_INCR')
THEN
254 igrelem(igs)%NENTITY=0
255 igrelem(igs)%GRPGRP=4
266 list_igr(igs) = igrelem(igs)%ID
281 IF(nadmesh==0.OR.(elkey(1:4)/=
'SHEL'.AND.elkey(1:4)/=
'SH3N'))
THEN
286 . option_titr = titr ,
293 IF(key(1:4) == elkey)
THEN
296 igrelem(igs)%NENTITY=nel
297 CALL my_alloc(igrelem(igs)%ENTITY,nel)
298 igrelem(igs)%ENTITY = 0
299 ELSEIF (flag == 1)
THEN
306 igrelem(igs)%ENTITY(nn) = jj
309 IF(
ALLOCATED(list_entity))
DEALLOCATE (list_entity)
311 IF ( numel == 0 ) igrelem(igs)%NENTITY = 0
312 nel = igrelem(igs)%NENTITY
314 titr = igrelem(igs)%TITLE
315 elem => igrelem(igs)%ENTITY
317 . elem,nel ,ixx_s ,nix ,numel ,
318 . mes,ixx_s_ind,buftmp(1+2*numel),elkey,
319 . igrelem(igs)%ID,titr)
320 igrelem(igs)%NENTITY=nel
333 . option_titr = titr ,
337 IF(key(1:4) == elkey)
THEN
340 titr=igrelem(igs)%TITLE
342 . keltree ,eltree ,ksontree,nsontree,klevtree,
343 . nlist ,mes ,buftmp ,buftmp(1+numel),buftmp(1+2*numel),
344 . kk ,nel ,elkey ,igrelem(igs)%ID,titr,lsubmodel)
346 igrelem(igs)%NENTITY=nel
347 CALL my_alloc(igrelem(igs)%ENTITY,nel)
348 igrelem(igs)%ENTITY = 0
349 ELSEIF (flag == 1)
THEN
350 nel = igrelem(igs)%NENTITY
353 titr=igrelem(igs)%TITLE
354 elem => igrelem(igs)%ENTITY
355 CALL hm_admlist(nix ,ix ,numel ,iparte ,ipart ,
356 . keltree ,eltree ,ksontree,nsontree,klevtree,
357 . nlist ,mes ,buftmp ,buftmp(1+numel),buftmp(1+2*numel),
358 . kk ,nel ,elem,elkey,igrelem(igs)%ID,titr,lsubmodel)
376 . option_titr = titr ,
386 IF(key(1:3) ==
'BOX'.AND.(key2(1:5) /=
'RECTA'.AND.key2(1:5) /=
'CYLIN'.AND.key2(1:5) /=
'SPHER').AND.nbbox == 0)
THEN
392 ELSEIF(key(1:4) ==
'GENE')
THEN
395 CALL hm_get_intv (
'grnodGenArrCnt' ,nentity,is_available,lsubmodel)
402 IF (ix(nix,k) >= n1 .AND. ix(nix,k) <= n2) buftmp(k)=1
411 IF (buftmp(j) == 1) nel=nel+1
413 igrelem(igs)%NENTITY=nel
414 CALL my_alloc(igrelem(igs)%ENTITY,nel)
415 igrelem(igs)%ENTITY = 0
416 ELSEIF (flag == 1)
THEN
418 IF (buftmp(j) == 1)
THEN
420 igrelem(igs)%ENTITY(nn)=j
428 IF (buftmp(j) == 1)
THEN
431 my_lev=eltree(klevtree,j)
432 IF(my_lev < 0) my_lev=-(my_lev+1)
433 IF(my_lev==nlev)nel=nel+1
436 igrelem(igs)%NENTITY=nel
437 CALL my_alloc(igrelem(igs)%ENTITY,nel)
438 igrelem(igs)%ENTITY = 0
439 ELSEIF (flag == 1)
THEN
441 IF (buftmp(j) == 1)
THEN
444 my_lev=eltree(klevtree,j)
445 IF(my_lev < 0) my_lev=-(my_lev+1)
448 igrelem(igs)%ENTITY(nn)=j
478 ELSEIF (flag == 1)
THEN
479 ALLOCATE(bufbox(iadboxmax))
480 bufbox(1:iadboxmax) = 0
487 . option_titr = titr ,
494 IF (key(1:3) ==
'BOX'.AND. nbbox > 0)
THEN
500 IF (unitab%UNIT_ID(j) == uid)
THEN
501 fac_l = unitab%FAC_L(j)
506 IF (uid/=0.AND.iflagunit==0)
THEN
507 CALL ancmsg(msgid=659,anmode=aninfo,msgtype=msgerror,
508 . i2=uid,i1=id,c1=
'ELEMENT GROUP',
509 . c2=
'ELEMENT GROUP',
515 . skew ,igs ,iskn ,itabm1,ibox ,
516 . id ,nadmesh,nix ,ix ,nix1 ,numel ,
517 . iparte ,ipart ,klevtree,eltree,keltree,buftmp,
518 . key ,titr ,mes ,igrelem,ngrele ,nn ,
519 . iadbox ,iadboxmax,bufbox,idb)
521 iadboxmax =
max(iadbox,iadboxmax)
523 igrelem(igs)%NENTITY=nel
524 CALL my_alloc(igrelem(igs)%ENTITY,nel)
525 igrelem(igs)%ENTITY = 0
526 ELSE IF(flag == 1)
THEN
527 igrelem(igs)%NENTITY=nel
533 IF(
ALLOCATED(bufbox))
DEALLOCATE(bufbox)
545 . option_titr = titr ,
552 IF (key(1:6)==
'SUBSET' .OR. key(1:4)==
'PART' .OR. key(1:3)==
'MAT' .OR. key(1:4)==
'PROP')
THEN
555 CALL hm_tagpart(buftmp, ipart, key, igrelem(igs)%ID, titr, titr1, flag, subset, lsubmodel)
560 IF (buftmp(iparte(j)) == 1) nel=nel+1
562 igrelem(igs)%NENTITY=nel
563 CALL my_alloc(igrelem(igs)%ENTITY,nel)
564 igrelem(igs)%ENTITY = 0
565 ELSEIF (flag == 1)
THEN
567 IF (buftmp(iparte(j)) == 1)
THEN
569 igrelem(igs)%ENTITY(nn)=j
577 IF(buftmp(ip) == 1)
THEN
579 my_lev=eltree(klevtree,j)
580 IF(my_lev < 0) my_lev=-(my_lev+1)
581 IF(my_lev==nlev)nel=nel+1
586 igrelem(igs)%ENTITY = 0
587 ELSEIF (flag == 1)
THEN
590 IF (buftmp(ip) == 1)
THEN
592 my_lev=eltree(klevtree,j)
593 IF(my_lev < 0) my_lev=-(my_lev+1)
596 igrelem(igs)%ENTITY(nn)=j
616 . option_titr = titr ,
623 IF (key(1:6) ==
'SUBMOD')
THEN
625 . isubmod ,ix ,nix ,id ,
626 . nel ,numel ,ielt ,mes ,
627 . flag ,titr ,titr1 ,lsubmodel,igrelem ,
630 igrelem(igs)%NENTITY=nel
631 CALL my_alloc(igrelem(igs)%ENTITY,nel)
632 igrelem(igs)%ENTITY = 0
647 . option_titr = titr ,
654 IF(key(1:8) ==
'GEN_INCR')
THEN
657 CALL hm_get_intv (
'grnodGenArrCnt' ,nlines,is_available,lsubmodel)
665 IF(id<idmin .OR. id>idmax)cycle
666 IF(mod(id-idmin,offset)==0)buftmp(k)=1
674 IF (buftmp(j) == 1) nel=nel+1
676 igrelem(igs)%NENTITY=nel
677 CALL my_alloc(igrelem(igs)%ENTITY,nel)
678 igrelem(igs)%ENTITY = 0
679 ELSEIF (flag == 1)
THEN
683 igrelem(igs)%ENTITY(nn)=j
691 IF (buftmp(j) == 1)
THEN
694 my_lev=eltree(klevtree,j)
695 IF(my_lev < 0) my_lev=-(my_lev+1)
696 IF(my_lev==nlev)nel=nel+1
699 igrelem(igs)%NENTITY=nel
700 CALL my_alloc(igrelem(igs)%ENTITY,nel)
701 igrelem(igs)%ENTITY = 0
702 ELSEIF (flag == 1)
THEN
704 IF (buftmp(j) == 1)
THEN
707 my_lev=eltree(klevtree,j)
708 IF(my_lev < 0) my_lev=-(my_lev+1)
711 igrelem(igs)%ENTITY(nn)=j
722 IF (
ALLOCATED(buftmp))
DEALLOCATE(buftmp)
subroutine lecgroup(itab, itabm1, isubmod, x, ixs, ixq, ixc, ixt, ixp, ixr, ixtg, ipart, iparts, ipartq, ipartc, ipartt, ipartp, ipartr, ipartg, flagg, sh4tree, sh3tree, skew, iskn, unitab, ibox, ixs10, ixs16, ixs20, rtrans, lsubmodel, ixs_s, ixs_s_ind, ixq_s, ixq_s_ind, ixc_s, ixc_s_ind, ixt_s, ixt_s_ind, ixp_s, ixp_s_ind, ixr_s, ixr_s_ind, ixtg_s, ixtg_s_ind, iadboxmax, subset, igrbric, igrquad, igrsh4n, igrsh3n, igrtruss, igrbeam, igrspring)
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)