39 . THK ,PM ,GEO ,ICNOD ,IGEO ,IPM ,
40 . UNITAB ,ANGLE ,LSUBMODEL)
71 USE reader_old_mod ,
ONLY : line
72 USE user_id_mod ,
ONLY
73 use element_mod ,
only : nixtg
80#include "implicit_f.inc"
84#include
"analyse_name.inc"
93#include "remesh_c.inc"
98 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
99 INTEGER,
INTENT(IN)::ITAB(*)
100 INTEGER,
INTENT(IN)::ITABM1(*)
101 INTEGER,
INTENT(IN)::IPART(LIPART1,*)
102 INTEGER,
INTENT(IN)::IGEO(NPROPGI,NUMGEO)
103 INTEGER,
INTENT(IN)::IPM(NPROPMI,*)
104 my_real,
INTENT(IN)::geo(npropg,*)
105 my_real,
INTENT(IN)::pm(npropm,*)
108 INTEGER,
INTENT(OUT)::IXTG(NIXTG,*)
109 INTEGER,
INTENT(OUT)::IPARTTG(*)
110 INTEGER,
INTENT(OUT)::ICNOD(*)
117 INTEGER I, J, I1, I2, ID,IDS,IPID,MT,N,MID,PID,UID,STAT,IPARTTG_TMP
120 DATA mess /
'3D TRIANGULAR SHELL ELEMENT DEFINITION '/
121 INTEGER ISH3N,KK,IFLAGUNIT
122 INTEGER,
DIMENSION(:),
ALLOCATABLE :: SUB_SH3N,UID_SH3N,TMP_IPARTTG
123 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: TMP_IXTG
124 real*8,
DIMENSION(:),
ALLOCATABLE :: hm_thk,hm_angle
133 ALLOCATE (sub_sh3n(numeltg0),stat=stat)
134 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,msgtype=msgerror
'SUB_SH3N')
135 ALLOCATE (uid_sh3n(numeltg0),stat=stat)
136 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,msgtype=msgerror,c1=
'UID_SH3N')
137 ALLOCATE (hm_thk(numeltg0),stat=stat)
138 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,msgtype=msgerror,c1=
'HM_THK')
139 ALLOCATE (hm_angle(numeltg0),stat=stat)
140 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,msgtype=msgerror,c1=
'HM_ANGLE')
141 ALLOCATE (tmp_ixtg(nixtg,numeltg0),stat=stat)
142 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,msgtype=msgerror,c1=
'TMP_IXTG')
143 ALLOCATE (tmp_iparttg(numeltg0),stat=stat)
144 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,msgtype=msgerror,c1=
'TMP_IPARTTG')
145 sub_sh3n(1:numeltg0) = 0
146 uid_sh3n(1:numeltg0) = 0
147 tmp_ixtg(1:nixtg,1:numeltg0) = 0
148 tmp_iparttg(1:numeltg0) = 0
149 hm_thk(1:numeltg0) = zero
150 hm_angle(1:numeltg0) = zero
158 CALL cpp_sh3n_read(tmp_ixtg,nixtg,tmp_iparttg,hm_angle,hm_thk,sub_sh3n,uid_sh3n)
165 iparttg_tmp = tmp_iparttg(n)
167 IF( ipart(4,index_part) /= iparttg_tmp)
THEN
169 IF(ipart(4,j)== iparttg_tmp )index_part = j
172 ish3n = igeo(18,ipart(2,index_part))
173 IF(kk == 6 .AND. ish3n==31) numeltg6 = numeltg6 + 1
175 IF((kk==3.AND.ish3n/=31).OR.(kk==6.AND.ish3n==31))
THEN
179 ixtg(j,i) = tmp_ixtg(j,n)
181 iparttg(i) = tmp_iparttg(n)
185 angle(i) = hm_angle(n) * pi / hundred80
190 IF(sub_sh3n(n) /= 0)
THEN
191 IF(uid_sh3n(n) == 0 .AND. lsubmodel(sub_sh3n(n))%UID /= 0) uid_sh3n(n) = lsubmodel(sub_sh3n(n))%UID
196 IF(uid_sh3n(n) /= uid )
THEN
200 IF (unitab%UNIT_ID(j) == uid)
THEN
201 fac_l = unitab%FAC_L(j)
205 IF (uid/=0.AND.iflagunit==0)
THEN
206 CALL ancmsg(msgid=643,anmode=aninfo,msgtype=msgerror,i1=uid,c1=
'/SH3N')
209 thk(i) = thk(i) * fac_l
213 IF( ipart(4,index_part) /= iparttg(i) )
THEN
215 IF(ipart(4,j)== iparttg(i) ) index_part = j
218 IF( ipart(4,index_part) /= iparttg(i) )
THEN
219 CALL ancmsg(msgid=402,msgtype=msgerror,anmode=aninfo_blind_1,c1
"SH3N",i1=iparttg(i),i2=iparttg(i),prmod=msg_cumu)
221 iparttg(i) = index_part
223 mt=ipart(1,index_part)
224 ipid=ipart(2,index_part)
227 IF (ixtg(nixtg,i)>id_limit%GLOBAL)
THEN
228 CALL ancmsg(msgid=509,anmode=aninfo,msgtype=msgerror,i1=ixtg(nixtg,i),c1=line,c2=
'/SH3N')
229 ELSEIF (nadmesh/=0.AND.ixtg(nixtg,i)>id_limit%ADMESH)
THEN
230 CALL ancmsg(msgid=1069,anmode=aninfo,msgtype=msgerror,i1=ixtg(nixtg,i),c1=line,c2=
'/SH3N')
233 CALL apartset(index_part, check_thick_shell)
237 ixtg(j,i)=usr2sys(ixtg(j,i),itabm1,mess,id)
238 CALL anodset(ixtg(j,i), check_shell)
241 IF (i == numeltg0) kk = 7
243 IF (i < numeltg0)
THEN
250 IF(
ALLOCATED(sub_sh3n))
DEALLOCATE(sub_sh3n)
251 IF(
ALLOCATED(uid_sh3n))
DEALLOCATE(uid_sh3n)
252 IF(
ALLOCATED(hm_thk))
DEALLOCATE(hm_thk)
253 IF(
ALLOCATED(hm_angle))
DEALLOCATE(hm_angle)
255 IF(
ALLOCATED(tmp_ixtg))
DEALLOCATE(tmp_ixtg)
256 IF(
ALLOCATED(tmp_iparttg))
DEALLOCATE(tmp_iparttg)
262 90
WRITE (iout,
'(//A/A//A/)')
' TRIANGULAR SHELL ELEMENTS ',
' ELEMENT INTERNAL MATER PRSET NODE1 NODE2 NODE3'
264 mid = ipm(1,ixtg(1,i))
265 pid = igeo(1,ixtg(5,i))
266 WRITE (iout,
'(7(I10,1X),1PG20.13,1PG20.13)') ixtg(nixtg,i),i,mid,pid,
267 . (itab(ixtg(j,i)),j=2,4),angle(i),thk(i)
269 IF(i2==numeltg0)
GOTO 200
271 i2=min0(i2+50,numeltg0)
277 CALL ancmsg(msgid=402,msgtype=msgerror,anmode=aninfo_blind_1,prmod=msg_print)
284 CALL vdouble(ixtg(nixtg,1),nixtg,numeltg0,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)