41 . IXC ,IXTG ,IXS ,X ,XREFC ,
42 . XREFTG ,XREFS ,LSUBMODEL,IDDLEVEL,ITAB ,
43 . TAGXREF ,TAGREFSTA )
52 use element_mod ,
only : nixs,nixc,nixtg
56#include "implicit_f.inc"
67 INTEGER ITABM1(*),IPART(LIPART1,*),IPARTC(*),IPARTG(*),IPARTS(*)
68 INTEGER IXC(NIXC,*),IXTG(NIXTG,*),IXS(NIXS,*)
69 INTEGER IDDLEVEL,ITAB(NUMNOD),TAGXREF(*),TAGREFSTA(*)
71 . x(3,*),xrefc(4,3,*),xreftg(3,3,*),xrefs(8,3,*)
76 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TAGELC,TAGELTG,TAGELS
77 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TAGNOD
78 INTEGER I,IX(8),IE,J,IN,ID,IP,IR,NN,PARTID,UID,ITYP
79 INTEGER SUB_ID,MM, NEL
80 CHARACTER(LEN=NCHARLINE) :: TITLE
81 CHARACTER(LEN=NCHARKEY) :: KEY1,KEY
83 LOGICAL :: IS_AVAILABLE
84 DATA mess/
'EREF ELEMENT REFERENCE GEOMETRY'/
88 INTEGER USR2SYS, NINTRI
91 ALLOCATE(tagelc(numelc),tageltg(numeltg),tagels(numels8),tagnod(numnod))
93 is_available = .false.
95 IF(nxref == 0 .AND. irefsta == 0)
THEN
100 xrefc(in,j,ie) = x(j,nn)
108 xreftg(in,j,ie) = x(j,nn)
116 xrefs(in,j,ie) = x(j,nn)
122 IF(iddlevel == 0)
WRITE(iout,1000)
132 . submodel_id = sub_id,
133 . option_titr = title,
137 CALL hm_get_intv(
'component',partid,is_available,lsubmodel)
139 IF (key1(1:4) ==
'EREF')
THEN
140 IF(iddlevel == 0)
WRITE(iout,1001) title,partid
143 IF (ipart(4,i) == partid) ip = i
147 tageltg(1:numeltg)= 0
148 tagels(1:numels8) = 0
152 IF (ip == ipartc(ie).OR.ip==0)
THEN
158 IF (ip == ipartg(ie).OR.ip==0)
THEN
165 IF (ip == iparts(ie).OR.ip==0)
THEN
174 IF(key(1:5)==
'SHELL')
THEN
175 IF(iddlevel == 0.AND.ipri >= 5)
WRITE(iout,
'(9X,A7,4(9X,A2))')
'ELEM-ID',
'N1',
'N2',
'N3',
'N4'
176 CALL hm_get_intv(
'table_count',nel,is_available,lsubmodel)
186 ie=nintri(id,ixc,nixc,numelc,nixc)
187 IF(id > 0 .AND. ie == 0)
THEN
192 ELSEIF (id > 0 .AND. tagelc(ie) == 1)
THEN
194 nn = usr2sys(ix(in),itabm1,mess,id)
197 xrefc(in,1,ie) = x(1,nn)
198 xrefc(in,2,ie) = x(2,nn)
199 xrefc(in,3,ie) = x(3,nn)
201 IF(iddlevel == 0.AND.ipri >= 5)
WRITE(iout,
'(5X,5(1X,I10))') id,(ix(in),in=1,4)
204 IF(iddlevel == 0.AND.ipri < 5)
WRITE(iout,1010) nel
206 ELSEIF(key(1:4)==
'SH3N')
THEN
207 IF(iddlevel == 0.AND.ipri >= 5)
WRITE(iout,
'(9X,A7,4(9X,A2))')
'ELEM-ID',
'N1',
'N2',
'N3'
208 CALL hm_get_intv(
'table_count',nel,is_available,lsubmodel)
217 ie=nintri(id,ixtg,nixtg,numeltg,nixtg)
218 IF(id > 0 .AND. ie == 0)
THEN
222 . c1=
'TRIANGLE',i1=id)
223 ELSEIF (id > 0 .AND. tageltg(ie) == 1)
THEN
225 nn = usr2sys(ix(in),itabm1,mess,id)
228 xreftg(in,1,ie) = x(1,nn)
229 xreftg(in,2,ie) = x(2,nn)
230 xreftg(in,3,ie) = x(3,nn)
232 IF(iddlevel == 0.AND.ipri >= 5)
WRITE(iout,
'(5X,4(1X,I10))') id,(ix(in),in=1,3)
235 IF(iddlevel == 0.AND.ipri < 5)
WRITE(iout,1020) nel
239 IF(key(1:5)==
'BRICK')
THEN
241 IF(iddlevel == 0.AND.ipri >= 5)
WRITE(iout,
'(9X,A7,8(9X,A2))')
'ELEM-ID',
'N1',
'N2',
'N3',
'N4',
'N5',
'N6',
'N7',
'N8'
242 CALL hm_get_intv(
'table_count',nel,is_available,lsubmodel)
256 ie=nintri(id,ixs,nixs,numels8,nixs)
257 IF(id > 0 .AND. ie == 0)
THEN
262 ELSEIF (id > 0 .AND. tagels(ie) == 1)
THEN
264 nn = usr2sys(ix(in),itabm1,mess,id)
267 xrefs(in,1,ie) = x(1,nn)
268 xrefs(in,2,ie) = x(2,nn)
269 xrefs(in,3,ie) = x(3,nn)
271 IF(iddlevel == 0.AND.ipri >= 5)
WRITE(iout,
'(5X,9(1X,I10))') id,(ix(in),in=1,8)
274 IF(iddlevel == 0.AND.ipri < 5)
WRITE(iout,1030) nel
275 ELSEIF(key(1:6)==
'TETRA4')
THEN
276 IF(iddlevel == 0.AND.ipri >= 5)
WRITE(iout,
'(9X,A7,4(9X,A2))')
'ELEM-ID',
'N1',
'N2',
'N3',
'N4'
277 CALL hm_get_intv(
'table_count',nel,is_available,lsubmodel)
291 ie=nintri(id,ixs,nixs,numels8,nixs)
293 IF(id > 0 .AND. ie == 0)
THEN
298 ELSEIF (id > 0 .AND. tagels(ie) == 1)
THEN
300 nn = usr2sys(ix(in),itabm1,mess,id)
303 xrefs(in,1,ie) = x(1,nn)
304 xrefs(in,2,ie) = x(2,nn)
305 xrefs(in,3,ie) = x(3,nn)
307 IF(iddlevel == 0.AND.ipri >= 5)
WRITE(iout,
'(5X,5(1X,I10))') id,ix(1),ix(3),ix(6),ix(5)
310 IF(iddlevel == 0.AND.ipri < 5)
WRITE(iout,1040) nel
321 IF(iddlevel == 1)
THEN
326 IF(tagnod(in) == 0) cycle
327 IF(tagxref(in) == 1)
THEN
328 CALL ancmsg(msgid=1098,msgtype=msgerror,anmode=aninfo, i1=itab(in))
332 IF( irefsta /= 0)
THEN
334 IF(tagnod(in) == 0) cycle
335 IF(tagrefsta(in) == 1)
THEN
336 CALL ancmsg(msgid=1099,msgtype=msgerror,anmode=aninfo,i1=itab(in))
342 DEALLOCATE(tagelc,tageltg,tagels,tagnod)
345 & 5x,
' REFERENCE STATE (EREF) ',/
346 & 5x,
' ---------------------- ' )
349 & 5x,
'PART ID . . . . . . . . . . . . =',i10)
351 & 5x,
'NUMBER OF 4-NODES SHELL . . . . =',i10)
353 & 5x,
'NUMBER OF 3-NODES SHELL . . . . =',i10)
355 & 5x,
'NUMBER OF 8-NODES BRICK . . . . =',i10)
357 & 5x,
'NUMBER OF 4-NODES TETRA . . . . =',i10)
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)