40 . THK ,IPM ,IGEO ,UNITAB,ITAG ,ANGLE ,LSUBMODEL)
70 USE reader_old_mod ,
ONLY : line
71 USE user_id_mod ,
ONLY : id_limit
72 use element_mod ,
only : nixc
81#include "implicit_f.inc"
85#include "analyse_name.inc"
95#include "remesh_c.inc"
100 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
101 INTEGER,
INTENT(IN)::ITAB(*)
102 INTEGER,
INTENT(IN)::ITABM1(*)
103 INTEGER,
INTENT(IN)::IPART(LIPART1,*)
104 INTEGER,
INTENT(IN)::IGEO(NPROPGI,*)
105 INTEGER,
INTENT(IN)::IPM(NPROPMI,*)
108 INTEGER,
INTENT(OUT)::IXC(NIXC,*)
109 INTEGER,
INTENT(OUT)::IPARTC(*)
110 INTEGER,
INTENT(OUT)::ITAG(*)
112 .
INTENT(OUT)::angle(*)
114 .
INTENT(OUT)::thk(*)
118 INTEGER I, J, I1, I2, ID,IDS,IPID,MT,MID,PID,UID,NDEGEN,STAT,
119 . iflagunit,ishxfem,index_part
120 CHARACTER MESS*40, MESS2*40
123 INTEGER,
DIMENSION(:),
ALLOCATABLE :: SUB_SHELL,UID_SHELL
124 real*8,
DIMENSION(:),
ALLOCATABLE :: hm_thk,hm_angle
129 DATA mess/
'3D SHELL ELEMENTS DEFINITION '/
130 DATA mess2/
'3D SHELL ELEMENTS SELECTION FOR TH PLOT '/
136 ALLOCATE (sub_shell(numelc0),stat=stat)
137 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
140 ALLOCATE (uid_shell(numelc0),stat=stat)
141 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
144 ALLOCATE (hm_thk(numelc0),stat=stat)
145 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
148 ALLOCATE (hm_angle(numelc0),stat=stat)
149 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
152 sub_shell(1:numelc0) = 0
153 uid_shell(1:numelc0) = 0
154 hm_thk(1:numelc0) = zero
155 hm_angle(1:numelc0) = zero
162 CALL cpp_shell_read(ixc,nixc,ipartc,hm_angle,hm_thk,sub_shell,uid_shell)
170 angle(i) = hm_angle(i) * pi / hundred80
175 IF(sub_shell(i) /= 0)
THEN
176 IF(uid_shell(i) == 0 .AND. lsubmodel(sub_shell(i))%UID /= 0)
177 . uid_shell(i) = lsubmodel(sub_shell(i))%UID
183 IF(uid_shell(i) /= uid )
THEN
187 IF (unitab%UNIT_ID(j) == uid)
THEN
188 fac_l = unitab%FAC_L(j)
192 IF (uid/=0.AND.iflagunit==0)
THEN
193 CALL ancmsg(msgid=643,anmode=aninfo,msgtype=msgerror,
194 . i1=uid,c1=
'/SHELL')
197 thk(i) = thk(i) * fac_l
201 IF( ipart(4,index_part) /= ipartc(i) )
THEN
203 IF(ipart(4,j)== ipartc(i) ) index_part = j
206 IF(ipart(4,index_part) /= ipartc(i))
THEN
209 . anmode=aninfo_blind_1,
215 ipartc(i) = index_part
217 mt=ipart(1,index_part)
218 ipid=ipart(2,index_part)
221 IF (ixc(nixc,i)>id_limit%GLOBAL)
THEN
222 CALL ancmsg(msgid=509,anmode=aninfo,msgtype=msgerror,
223 . i1=ixc(nixc,i),c1=line,c2=
'/SHELL')
224 ELSEIF (nadmesh/=0.AND.ixc(nixc,i)>id_limit%ADMESH)
THEN
225 CALL ancmsg(msgid=1069,anmode=aninfo,msgtype=msgerror,
226 . i1=ixc(nixc,i),c1=line,c2=
'/SHELL')
228 IF( ( ixc(4,i) == ixc(5,i)) .OR.
229 . ( ixc(5,i) == 0 ))
THEN
232 . msgtype=msgwarning,
234 . anmode=aninfo_blind_2,
238 CALL apartset(index_part, check_thick_shell)
242 ixc(j,i)=usr2sys(ixc(j,i),itabm1,mess,id)
243 CALL anodset(ixc(j,i), check_shell)
246 ishxfem = igeo(19,ipid)
256 IF(
ALLOCATED(sub_shell))
DEALLOCATE(sub_shell)
257 IF(
ALLOCATED(uid_shell))
DEALLOCATE(uid_shell)
258 IF(
ALLOCATED(hm_thk))
DEALLOCATE(hm_thk)
259 IF(
ALLOCATED(hm_angle))
DEALLOCATE(hm_angle)
265 90
WRITE (iout,
'(//A/A//A,A/)')titre(110),titre(111),titre(102),titre(105)
267 mid = ipm(1,ixc(1,i))
268 pid = igeo(1,ixc(6,i))
269 WRITE (iout,fmt=
'(8(I10,1X),1PG20.13,1X,1PG20.13)') ixc(nixc,i),i,mid,pid,
270 . (itab(ixc(j,i)),j=2,5),angle(i),thk(i)
272 IF(i2==numelc0)
GOTO 200
274 i2=min0(i2+50,numelc0)
282 . anmode=aninfo_blind_1,
290 CALL vdouble(ixc(nixc,1),nixc,numelc0,mess,0,bid)
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)