44 . UNITAB ,IXC ,IXTG ,IXS ,X ,
45 . XREFC ,XREFTG ,XREFS ,RTRANS ,LSUBMODEL,
46 . TAGXREF ,IDDLEVEL ,ISOLNOD ,IPM ,IGEO )
55 use element_mod ,
only : nixs,nixc,nixtg
59#include "implicit_f.inc"
75 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
76 INTEGER ITABM1(*),IPART(LIPART1,*),IPARTC(*),IPARTG(*),IPARTS(*),
77 . IXC(NIXC,*),IXTG(NIXTG,*),IXS(NIXS,*),TAGXREF(NUMNOD)
80 . x(3,*),xrefc(4,3,*),xreftg(3,3,*),xrefs(8,3,*),
84 INTEGER,
INTENT(IN)::IGEO(NPROPGI,*)
85 INTEGER,
INTENT(IN)::IPM(NPROPMI,*)
86 INTEGER,
INTENT(IN)::ISOLNOD(*)
91 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ID
92 INTEGER I,J,IE,IN,IP,IR,NN,NITER,PARTID,UID,ITYP,ICOMPA
93 INTEGER SUB_ID,NNOD,SUB_INDEX,IMID, MAT_ID,MTN,NSOLID,NPT,ISMSTR
94 my_real,
dimension(:,:),
allocatable :: xtmp
95 my_real,
DIMENSION(:),
ALLOCATABLE ::
98 CHARACTER(LEN=NCHARTITLE) :: TITR,TITR1
100 LOGICAL :: IS_AVAILABLE
101 integer,
dimension(:),
allocatable :: TAGELC,TAGELTG,TAGELS,TAGNOD
105 INTEGER USR2SYS,R2R_SYS
107 IS_AVAILABLE = .false.
108 ALLOCATE(tagelc(numelc),tageltg(numeltg),tagels(numels),tagnod(numnod))
109 ALLOCATE(xtmp(3,numnod))
116 xrefc(in,j,ie) = x(j,nn)
124 xreftg(in,j,ie) = x(j,nn)
132 xrefs(in,j,ie) = x(j,nn)
137 IF(iddlevel == 0)
WRITE(iout,1000)
159 . submodel_index = sub_index,
160 . submodel_id = sub_id,
161 . option_titr = titr)
163 CALL hm_get_intv(
'Comp_Id',partid,is_available,lsubmodel)
168 IF (unitab%UNIT_ID(j) == uid)
THEN
173 IF (uid/=0.AND.iflagunit==0)
THEN
174 CALL ancmsg(msgid=659,anmode=aninfo,msgtype=msgerror,
175 . i2=uid,i1=partid,c1=
'XREF',
182 IF (ipart(4,i) == partid)
THEN
196 IF (ip == ipartc(ie))
THEN
202 IF (ip == ipartg(ie))
THEN
210 IF (ip == iparts(ie))
THEN
222 IF(mtn /= 35 .AND.mtn /= 38 .AND. mtn /= 42 .AND.
223 . mtn /= 70 .AND. mtn /= 90 .AND. mtn /= 1)
THEN
224 CALL fretitl2(titr1,ipm(npropmi-ltitr+1,imid),ltitr)
225 CALL ancmsg(msgid=2014, msgtype=msgerror, anmode=anstop, i1=mat_id, c1=titr1, i2=mtn )
228 ismstr = igeo(5,ipid)
230 IF (npt==1) icompa = 1
231 IF (ismstr>=10.OR.ismstr<0) icompa = 1
232 IF( ((nsolid /= 8 .AND.nsolid /= 4) .OR. icompa == 0 ))
THEN
233 CALL fretitl2(titr1,igeo(npropgi-ltitr+1,ipid),ltitr)
243 CALL hm_get_intv(
'NITRS',niter,is_available,lsubmodel)
244 nitrs =
max(nitrs,niter)
246 IF(iddlevel == 0)
THEN
247 WRITE(iout,1001) titr,nitrs,partid
248 IF(ipri >= 5)
WRITE(iout,
'(8X,A7,3(18X,A2))')
'NODE-ID',
' X',
' Y',
' Z'
252 CALL hm_get_intv(
'refnodesmax',nnod,is_available,lsubmodel)
253 IF (
ALLOCATED(id))
DEALLOCATE(id)
254 IF (
ALLOCATED(xx))
DEALLOCATE(xx)
255 IF (
ALLOCATED(yy))
DEALLOCATE(yy)
256 IF (
ALLOCATED(zz))
DEALLOCATE(zz)
257 ALLOCATE(xx(nnod),yy(nnod),zz(nnod),id(nnod))
268 .
CALL subrotpoint(xx(j),yy(j),zz(j),rtrans,sub_id,lsubmodel)
270 nn = r2r_sys(id(j),itabm1,mess)
272 nn = usr2sys(id(j),itabm1,mess,partid)
274 IF(iddlevel == 0.AND.ipri >= 5)
WRITE(iout,
'(5X,I10,5X,1P3G20.13)') id(j),xx(j),yy(j),zz
281 IF(iddlevel == 0.AND.ipri < 5)
WRITE(iout,1010) nnod
286 IF (tagelc(ie) == 1)
THEN
289 IF (tagnod(nn) == 1)
THEN
290 xrefc(in,1,ie) = xtmp(1,nn)
291 xrefc(in,2,ie) = xtmp(2,nn)
292 xrefc(in,3,ie) = xtmp(3,nn)
298 IF (tageltg(ie) == 1)
THEN
301 IF (tagnod(nn) == 1)
THEN
302 xreftg(in,1,ie) = xtmp(1,nn)
303 xreftg(in,2,ie) = xtmp(2,nn)
304 xreftg(in,3,ie) = xtmp(3,nn)
311 IF (tagels(ie) == 1)
THEN
314 IF (tagnod(nn) == 1)
THEN
315 xrefs(in,1,ie) = xtmp(1,nn)
316 xrefs(in,2,ie) = xtmp(2,nn)
317 xrefs(in,3,ie) = xtmp(3,nn)
327 IF (
ALLOCATED(id))
DEALLOCATE(id)
328 IF (
ALLOCATED(xx))
DEALLOCATE(xx)
329 IF (
ALLOCATED(yy))
DEALLOCATE(yy)
330 IF (
ALLOCATED(zz))
DEALLOCATE(zz)
332 DEALLOCATE(tagelc,tageltg,tagels,tagnod)
337 & 5x,
' REFERENCE STATE (XREF) ',/
338 & 5x,
' ---------------------- ' )
341 & 5x,
'NUMBER OF ITERATIONS. . . . . . =',i10/
342 & 5x,
'PART ID . . . . . . . . . . . . =',i10)
344 & 5x,
'NUMBER OF NODES . . . . . . . . =',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)