40 . SH4TREE,SH3TREE,SH4TRIM,SH3TRIM,LSUBMODEL)
49 use element_mod ,
only : nixc,nixtg
53#include "implicit_f.inc"
60#include "remesh_c.inc"
64 INTEGER IPART(LIPART1,*), IPARTC(*), IPARTTG(*),
65 . ixc(nixc,*), ixtg(nixtg,*),
66 . sh4tree(ksh4tree,*), sh3tree(ksh3tree,*),
67 . sh4trim(*), sh3trim(*)
72 INTEGER ID,ID1,ID2,ID3,ID4,II,I1,I2,I3,I4,NLIST,N,LEVEL,NN,
74 INTEGER IERROR, NINTLST2,ERRORADJ,NSHELL,NSH3N
75 INTEGER,
DIMENSION(:),
ALLOCATABLE :: LIST,INDEXL
76 INTEGER IX1(MAX(NUMELC,NUMELTG)),
77 . ix2(max(numelc,numeltg)),
78 . index(2*max(numelc,numeltg))
80 CHARACTER(LEN=NCHARTITLE) :: TITR
81 CHARACTER(LEN=NCHARKEY) :: KEY,KEY2
84 DATA mess /
'ADAPTIVE MESHING STATE DEFINITION '/
102 IF(key2(1:len_trim(key2))==
'SHELL')
THEN
105 is_available = .false.
109 CALL hm_get_intv(
'NSHELL',nshell,is_available,lsubmodel)
110 nlist = nlist + nshell
116 ALLOCATE(list(5*nlist),stat=ierror)
117 IF(ierror/=0)
CALL ancmsg(msgid=268,anmode=aninfo,
120 ALLOCATE(indexl(10*nlist),stat=ierror)
121 IF(ierror/=0)
CALL ancmsg(msgid=268,anmode=aninfo,
136 CALL HM_OPTION_READ_KEY(LSUBMODEL,
137 . OPTION_TITR = TITR,
141 IF(KEY2(1:LEN_TRIM(KEY2))=='shell
')THEN
144 IS_AVAILABLE = .FALSE.
148 CALL HM_GET_INTV('nshell
',NSHELL,IS_AVAILABLE,LSUBMODEL)
152 CALL HM_GET_INT_ARRAY_INDEX('shell_id
',ID,I,IS_AVAILABLE,LSUBMODEL)
153 CALL HM_GET_INT_ARRAY_INDEX('shell_id1
',ID1,I,IS_AVAILABLE,LSUBMODEL)
154 CALL HM_GET_INT_ARRAY_INDEX('shell_id2
',ID2,I,IS_AVAILABLE,LSUBMODEL)
155 CALL HM_GET_INT_ARRAY_INDEX('shell_id3
',ID3,I,IS_AVAILABLE,LSUBMODEL)
156 CALL HM_GET_INT_ARRAY_INDEX('shell_id4
',ID4,I,IS_AVAILABLE,LSUBMODEL)
173 NN=NINTLST2(LIST,NLIST,INDEXL,IXC,NIXC,NUMELC,
174 . MESS,IX1,IX2,INDEX,0)
183 CALL HM_OPTION_START('/admesh/state
')
188 CALL HM_OPTION_READ_KEY(LSUBMODEL,
189 . OPTION_TITR = TITR,
193 IF(KEY2(1:LEN_TRIM(KEY2))=='shell
')THEN
196 IS_AVAILABLE = .FALSE.
200 CALL HM_GET_INTV('nshell
',NSHELL,IS_AVAILABLE,LSUBMODEL)
205 CALL HM_GET_INT_ARRAY_INDEX('shell_id
',ID,I,IS_AVAILABLE,LSUBMODEL)
206 CALL HM_GET_INT_ARRAY_INDEX('shell_id1
',ID1,I,IS_AVAILABLE,LSUBMODEL)
207 CALL HM_GET_INT_ARRAY_INDEX('shell_id2
',ID2,I,IS_AVAILABLE,LSUBMODEL)
208 CALL HM_GET_INT_ARRAY_INDEX('shell_id3
',ID3,I,IS_AVAILABLE,LSUBMODEL)
209 CALL HM_GET_INT_ARRAY_INDEX('shell_id4
',ID4,I,IS_AVAILABLE,LSUBMODEL)
210 CALL HM_GET_INT_ARRAY_INDEX('actlev
',LEVEL,I,IS_AVAILABLE,LSUBMODEL)
211 CALL HM_GET_INT_ARRAY_INDEX('imapping
',ITRIM,I,IS_AVAILABLE,LSUBMODEL)
223.AND.
IF(I1+I2+I3+I4 /=0
224.OR..OR.
. (I2-I1/=1 I3-I1 /= 2 I4-I1 /= 3))THEN
225 CALL ANCMSG(MSGID=654,
235 IF(I1+I2+I3+I4 /=0) THEN
237.OR.
IF(IXC(2,II) /= IXC(2,I1)IXC(3,II) /= IXC(3,I2)
238.OR..OR.
. IXC(4,II) /= IXC(4,I3)IXC(5,II) /= IXC(5,I4)) THEN
240.OR.
ELSEIF(IXC(4,I1) /= IXC(5,I2)IXC(5,I2) /= IXC(2,I3)
241.OR..OR.
. IXC(2,I3) /= IXC(3,I4)IXC(4,I1) /= IXC(3,I4)) THEN
243.OR.
ELSEIF(IXC(3,I1) /= IXC(2,I2)IXC(4,I2) /= IXC(3,I3)
244.OR..OR.
. IXC(5,I3) /= IXC(4,I4)IXC(5,I1) /= IXC(2,I4)) THEN
248.AND.
IF(ERRORADJ ==1ABS(LEVEL)<LEVELMAX) THEN
249 CALL ANCMSG(MSGID=1023,
259.OR.
IF(LEVEL<-LEVELMAX-1LEVEL>LEVELMAX)THEN
260 CALL ANCMSG(MSGID=656,
291 CALL HM_OPTION_START('/admesh/state
')
296 CALL HM_OPTION_READ_KEY(LSUBMODEL,
297 . OPTION_TITR = TITR,
301 IF(KEY2(1:LEN_TRIM(KEY2))=='sh3n
')THEN
304 IS_AVAILABLE = .FALSE.
308 CALL HM_GET_INTV('nsh3n
',NSH3N,IS_AVAILABLE,LSUBMODEL)
309 NLIST = NLIST + NSH3N
317 ALLOCATE(LIST(5*NLIST),STAT=IERROR)
318 IF(IERROR/=0) CALL ANCMSG(MSGID=268,ANMODE=ANINFO,
321 ALLOCATE(INDEXL(10*NLIST),STAT=IERROR)
322 IF(IERROR/=0) CALL ANCMSG(MSGID=268,ANMODE=ANINFO,
334 CALL HM_OPTION_START('/admesh/state
')
339 CALL HM_OPTION_READ_KEY(LSUBMODEL,
340 . OPTION_TITR = TITR,
344 IF(KEY2(1:LEN_TRIM(KEY2))=='sh3n
')THEN
346 IS_AVAILABLE = .FALSE.
350 CALL HM_GET_INTV('nsh3n
',NSH3N,IS_AVAILABLE,LSUBMODEL)
354 CALL HM_GET_INT_ARRAY_INDEX('sh3n_id
',ID,I,IS_AVAILABLE,LSUBMODEL)
355 CALL HM_GET_INT_ARRAY_INDEX('sh3n_id1
',ID1,I,IS_AVAILABLE,LSUBMODEL)
356 CALL HM_GET_INT_ARRAY_INDEX('sh3n_id2
',ID2,I,IS_AVAILABLE,LSUBMODEL)
357 CALL HM_GET_INT_ARRAY_INDEX('sh3n_id3
',ID3,I,IS_AVAILABLE,LSUBMODEL)
358 CALL HM_GET_INT_ARRAY_INDEX('sh3n_id4
',ID4,I,IS_AVAILABLE,LSUBMODEL)
377 NN=NINTLST2(LIST,NLIST,INDEXL,IXTG,NIXTG,NUMELTG,
378 . MESS,IX1,IX2,INDEX,0)
385 CALL HM_OPTION_START('/admesh/state
')
392 CALL HM_OPTION_READ_KEY(LSUBMODEL,
393 . OPTION_TITR = TITR,
397 IF(KEY2(1:LEN_TRIM(KEY2))=='sh3n
')THEN
400 IS_AVAILABLE = .FALSE.
404 CALL HM_GET_INTV('nsh3n
',NSH3N,IS_AVAILABLE,LSUBMODEL)
408 CALL HM_GET_INT_ARRAY_INDEX('sh3n_id',id,i,is_available,lsubmodel
428 IF(i1+i2+i3+i4 /=0 .AND.
429 . (i2-i1/=1 .OR. i3-i1 /= 2 .OR. i4-i1 /= 3))
THEN
440 IF(i1+i2+i3+i4 /=0)
THEN
442 IF(ixtg(2,ii) /= ixtg(2,i1).OR.ixtg(3,ii) /= ixtg(3,i2)
443 . .OR.ixtg(4,ii) /= ixtg(4,i3))
THEN
445 ELSEIF(ixtg(3,i1) /= ixtg(2,i2).OR.ixtg(4,i2) /= ixtg(3,i3)
446 . .OR.ixtg(2,i3) /= ixtg(3,i4))
THEN
448 ELSEIF(ixtg(4,i1) /= ixtg(2,i3).OR.ixtg(4,i1) /= ixtg(3,i4)
449 . .OR.ixtg(4,i2) /= ixtg(2,i4).OR.ixtg(4,i4) /= ixtg(2,i2).OR.
450 . ixtg(4,i4) /= ixtg(3,i1))
THEN
454 IF(erroradj ==1.AND.abs(level)<levelmax)
THEN
465 IF(level<-levelmax-1.OR.level>levelmax)
THEN
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)