46 . UNITAB,LSUBMODEL,MULTI_FVM,MLAW_TAG,
47 . MAT_PARAM,GLOB_THERM)
83#include "implicit_f.inc"
91#include "com_xfem1.inc"
97 TYPE (UNIT_TYPE_),
INTENT(IN) ::
98 my_real,
INTENT(IN)::GEO(NPROPG,NUMGEO)
101 INTEGER,
INTENT(OUT)::IPART(LIPART1,*)
102 INTEGER,
INTENT(OUT)::IWA(
103INTENT(OUT)::thk_part(*)
105 INTEGER,
INTENT(INOUT)::IGEO(NPROPGI,NUMGEO)
106 INTEGER,
INTENT(INOUT)::IPM(NPROPMI,NUMMAT)
107 my_real,
INTENT(INOUT)::pm(npropm,nummat)
108 TYPE(multi_fvm_struct),
INTENT(INOUT)::MULTI_FVM
109 TYPE(
mlaw_tag_) ,
DIMENSION(NUMMAT) ,
INTENT(INOUT) ::
110 TYPE (MATPARAM_STRUCT_) ,
DIMENSION(NUMMAT) ,
INTENT(INOUT) :: MAT_PARAM
111 type (glob_therm_) ,
intent(inout) :: glob_therm
116 CHARACTER(LEN=NCHARTITLE) :: TITR,TITR1,TITR2,LINE1
117 CHARACTER*5 CHAR_PROP,CHAR_MAT
118 CHARACTER*7::CHAR_MAT_TYPE,CHAR_PROP_TYPE
119 LOGICAL IS_AVAILABLE, USER_LAW, IS_ASSOCIATED_LAW51
120 INTEGER PID,MID,SID,ID,ID1,ID2,I,IMID,IPID,ISID,K,ITH, IGTYP,XFEMFLG,
121 . ixfem,ihbe,ilaw,uid,iflagunit,j,idmat_ply,
122 . ilaw_ply,ipmat,npt,idpartsph,sub_index,
SIZE, ids, cnt,
123 . ifix_tmp,stat,jale_from_prop,jale_from_mat
124 my_real bid, thick,fac_l,mp,vol,diam
131 DATA mess/
' PART DEFINITION '/
140 char_prop = repeat(
" ",5)
141 char_mat = repeat(
" ",5)
142 char_mat_type = repeat(
" ",7)
143 char_prop_type = repeat(
" ",7)
146 is_associated_law51 = .false.
147 is_available = .false.
154 WRITE(iout,
'(//A)')
' PARTS'
155 WRITE(iout,
'(A//)')
' -----'
166 ale%GLOBAL%CODV(1:
ale%GLOBAL%LCONV)=0
182 . submodel_index = sub_index
187 CALL hm_get_intv(
'propertyid',pid,is_available,lsubmodel)
188 CALL hm_get_intv(
'materialid',mid,is_available,lsubmodel)
189 CALL hm_get_intv(
'subsetid',sid,is_available,lsubmodel)
193 CALL hm_get_floatv(
'THICK',thick,is_available,lsubmodel,unitab)
196 CALL fretitl(titr,ipart(lipart1-ltitr+1,i),ltitr)
203 ipid = nintri(pid,igeo,npropgi,numgeo,1)
206 CALL ancmsg(msgid=178,msgtype=msgerror,anmode=aninfo,i1=id,c1=titr,i2=pid)
209 CALL fretitl2(titr1,igeo(npropgi-ltitr+1,ipid),ltitr)
212 igtyp=nint(geo(12,ipid))
213 IF(igtyp == 17 .OR. igtyp == 51) ipart_stack = 1
214 IF(igtyp == 52) ipart_pcompp = 1
216 . (igtyp == 1).OR.(igtyp == 2).OR.(igtyp == 3).OR.
217 . (igtyp == 6).OR.(igtyp == 9).OR.(igtyp == 10).OR.
218 . (igtyp == 11).OR.(igtyp == 14).OR.(igtyp == 16).OR.
219 . (igtyp == 18).OR.(igtyp == 20).OR.(igtyp == 21).OR.
220 . (igtyp == 22).OR.(igtyp == 34).OR.(igtyp == 11).OR.
221 . (igtyp == 17).OR.(igtyp == 51).OR.(igtyp == 52).OR.
222 . (igtyp == 23).OR.(igtyp == 43))
THEN
238 imid = nintri(mid,ipm,npropmi,nummat,1)
249 ixfem = mat_param(imid)%IXFEM
250 CALL fretitl2(titr2,ipm(npropmi-ltitr+1,imid),ltitr)
253 IF(ilaw == 151)is_associated_law51=.true.
257 IF(ipid > 0) igtyp=igeo(11,ipid)
258 IF (ixfem > 0 .and. (igtyp==1 .or.
259 . igtyp==11 .or. igtyp==51))
THEN
260 xfemflg = xfemflg + ixfem
262 IF (ilaw == 99.AND.igtyp == 14)
THEN
279 IF (ilaw==29 .or. ilaw==30 .or. ilaw==31 .or. ilaw==99)
THEN
286 IF (((igtyp==43) .and. ((ilaw/=59 .and. ilaw/=83 .and. ilaw/=116 .and. ilaw/=117 .AND. ilaw /=120.AND.ilaw/=169) .and.
287 . (user_law .eqv. .false. ) ).eqv. .true.) .or.
288 . ((ilaw==59 .or. ilaw==83 .or. ilaw==116 .or. ilaw==117) .and. igtyp/=43) .or.
289 . (ilaw==1 .and. (igtyp==9.OR.igtyp==10.OR.igtyp==11.OR.igtyp==16.OR.
290 . igtyp==17.OR.igtyp==51.OR.igtyp==52) .eqv. .true.) .eqv. .true.)
THEN
293 . anmode=aninfo_blind_2,
301 IF (ilaw == 87 .AND. igtyp /= 9)
THEN
303 . msgtype=msgwarning,
304 . anmode=aninfo_blind_1,
310 IF (ilaw == 187 .AND. igtyp /= 6)
THEN
312 . msgtype=msgwarning,
313 . anmode=aninfo_blind_1,
321 IF(ilaw == 13 .AND. iroddl == 0) iroddl = 1
330 idmat_ply= igeo(ipmat+j,ipid)
331 ilaw_ply = ipm(2,idmat_ply)
332 IF(ilaw_ply /= ilaw)
THEN
348 imid = nintri(mid,ipm,npropmi,nummat,1)
350 IF(ilaw /= 108 .AND. ilaw /=113.AND. ilaw /=114 .AND. ilaw /= 0 )
THEN
360 IF(ilaw == 70 .AND. igeo(31,ipid) == 1)
WRITE(iout,2000)
367 . id,ilaw,mid,imid,pid,ipid,jale_from_prop,jale_from_mat,
368 . glob_therm%ITHERM,glob_therm%ITHERM_FE)
373 WRITE(iout,
'(/A,I10,2A)')'part:
',ID,',
',TRIM(TITR)
374 WRITE(IOUT,'(a)
') '----
'
377 CHAR_PROP_TYPE='TYPE ?
'
379 WRITE(CHAR_PROP_TYPE(5:7),FMT='(i3)
')IGTYP
380 IF(IGTYP<10)WRITE(CHAR_PROP_TYPE(6:6),FMT='(a1)
') '0
'
382 WRITE(IOUT,'(a,i10,4a)
')' property :
',PID,' (
',TRIM(CHAR_PROP_TYPE),'),
',TRIM(TITR1)
385 CHAR_MAT_TYPE='law ?
'
387 WRITE(CHAR_MAT_TYPE(5:7),FMT='(i3)
')ILAW
388 IF(ILAW<10)WRITE(CHAR_MAT_TYPE(6:6),FMT='(a1)
') '0'
390 IF( imid /= 0)
WRITE(iout,
'(A,I10,4A)')
' MATERIAL :',mid,
' (',trim(char_mat_type),
'),',trim(titr2)
393 WRITE(iout,
'(A,I10,2A)')
' SUBSET :',sid
396 IF(jale_from_prop==1 .OR. jale_from_mat==1)
THEN
397 WRITE(iout,
'(A)')
' FRAMEWORK : ALE'
398 ELSEIF(jale_from_prop==2 .OR. jale_from_mat==2)
THEN
399 WRITE(iout,
'(A)')
' FRAMEWORK : EULER'
401 WRITE(iout,
'(A)')
' FRAMEWORK : LAGRANGE'
406 . (igtyp == 1).OR.(igtyp == 9).OR.(igtyp == 10).OR.
407 . (igtyp == 11).OR.(igtyp == 16).OR.(igtyp == 17).OR.
408 . (igtyp == 19).OR.(igtyp == 51).OR.(igtyp == 52))
THEN
409 WRITE(iout,
'(A,1PG20.13,2A)')
' VIRT. THICKN: ',thk_part(i)
412 IF( thk_part(i)>zero .AND. ((igtyp == 3).OR.(igtyp == 2).OR.
413 . (igtyp == 18).OR.(igtyp == 4).OR.(igtyp == 8).OR.
414 . (igtyp == 12).OR.(igtyp == 13).OR.(igtyp == 23).OR.
415 . (igtyp == 25).OR.(igtyp == 26).OR.(igtyp == 27)))
THEN
416 WRITE(iout,
'(A,1PG20.13,2A)')
' VIRT. THICKN: ',thk_part(i)
420 IF (igeo(11,ipid) == 34)
THEN
421 diam =get_u_geo(6,ipid)
422 IF(diam == zero)
THEN
423 mp = get_u_geo(1,ipid)
425 diam= (sqr2*vol)**third
426 WRITE(iout,
'(A,1PG20.13,2A)')
' SPH SMOOTHING LENGTH: ',diam
446 IF(ipart(4,i) == 0)
THEN
447 CALL ancmsg(msgid=494,msgtype=msgerror,anmode=aninfo_blind_1,c1=line1)
456 DO i=1,
ale%GLOBAL%LCONV
457 IF(
ale%GLOBAL%CODV(i) == 1)
THEN
458 ale%GLOBAL%NVCONV=
ale%GLOBAL%NVCONV+1
459 ale%GLOBAL%CODV(i)=
ale%GLOBAL%NVCONV
465 multi_fvm%IS_USED = is_associated_law51
467 IF (multi_fvm%IS_USED)
THEN
472 ALLOCATE(multi_fvm%VEL(3, numelq + numeltg), stat=stat)
474 IF(stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,msgtype=msgerror,c1=
'MULTI_FVM%VEL')
475 multi_fvm%VEL(: ,:) = zero
478 IF (xfemflg == 0) icrack3d = 0
482 iwa(numgeo+ipart(1,i)) = 1
487 IF (iwa(i) == 0) cnt = cnt+1
492 IF (iwa(numgeo+i) == 0) cnt = cnt+1
499 idpartsph = igeo(38,ipart(2,i))
500 IF (idpartsph > 0)
THEN
501 igeo(17,ipart(2,idpartsph)) = igeo(17,ipart(2,i))
507 CALL udouble(ipart(4,1),lipart1,npart,mess,0,bid)
510 2000
FORMAT(5x,'
for law 70
the default
VALUE of qa and qb is 0
' )
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)