41 . LSUBMODEL,IPART,DEFAULTS_SOLID)
72#include "implicit_f.inc"
81#include "tablen_c.inc"
86 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
87 INTEGER,
INTENT(IN)::IG,IGTYP
88 INTEGER,
INTENT(IN)::IPART(LIPART1,*)
89 CHARACTER(LEN=NCHARTITLE) ,
INTENT(IN)::TITR
91 TYPE(multi_fvm_struct),
INTENT(IN) :: MULTI_FVM
93 INTEGER,
INTENT(INOUT)::IGEO(NPROPGI)
94 my_real,
INTENT(INOUT)::geo(npropg)
95 TYPE(
prop_tag_) ,
DIMENSION(0:MAXPROP) :: PROP_TAG
96 TYPE(solid_defaults_),
INTENT(IN) :: DEFAULTS_SOLID
100 INTEGER IHBE,ISMSTR,IPLAS,ICPRE,ICSTR,IINT,JCVT,NPG,NPT,NPTR,NPTS,NPTT, ISTRAIN,IET,IHBE_OLD,ID
101 INTEGER ITET4,ITET4_PREV,NSPHDIR,ID_SENS,ID_PARTSPH,IPARTSPH,J,ITET10,I_ALE_FLAG,IHBE_PR
102 my_real cvis,qa,qb,qh,vns1,vns2,dtmin,vdefmin,vdefmax,aspmax,asptet
103 INTEGER IHBE_DS,ISST_DS,IFRAME_DS,ITET4_D,ITET10_D,ICPRE_D,ICONTROL_D,ICONTROL
104 LOGICAL IS_AVAILABLE, IS_ENCRYPTED, lFOUND
105 CHARACTER(LEN=NCHARLINE) :: MSGLINE
109 is_encrypted = .false.
110 is_available = .false.
114 ihbe_ds= defaults_solid%ISOLID
115 isst_ds= defaults_solid%ISMSTR
116 icpre_d= defaults_solid%ICPRE
117 itet4_d= defaults_solid%ITETRA4
118 itet10_d= defaults_solid%ITETRA10
119 iframe_ds= defaults_solid%IFRAME
120 icontrol_d=defaults_solid%ICONTROL
126 CALL hm_get_intv(
'ISOLID',ihbe,is_available,lsubmodel)
127 CALL hm_get_intv(
'Ismstr',ismstr,is_available,lsubmodel)
128 CALL hm_get_intv(
'Iale',i_ale_flag,is_available,lsubmodel)
129 CALL hm_get_intv(
'Icpre',icpre,is_available,lsubmodel)
130 CALL hm_get_intv(
'I_rot',itet4,is_available,lsubmodel)
131 CALL hm_get_intv(
'Iframe',jcvt,is_available,lsubmodel)
132 CALL hm_get_intv(
'Ndir',nsphdir,is_available,lsubmodel)
134 CALL hm_get_intv(
'Itetra10',itet10,is_available,lsubmodel)
136 CALL hm_get_intv(
'Inpts_S',npts,is_available,lsubmodel)
137 CALL hm_get_intv(
'Inpts_T',nptt,is_available,lsubmodel)
138 CALL hm_get_intv(
'Icontrol',icontrol,is_available,lsubmodel)
144 CALL hm_get_floatv(
'Lambda',vns1,is_available,lsubmodel,unitab)
148 CALL hm_get_floatv(
'deltaT_min',dtmin,is_available,lsubmodel,unitab)
149 CALL hm_get_floatv(
'vdef_min',vdefmin,is_available,lsubmodel,unitab)
150 CALL hm_get_floatv(
'vdef_max',vdefmax,is_available,lsubmodel,unitab)
151 CALL hm_get_floatv(
'ASP_max',aspmax,is_available,lsubmodel,unitab)
152 CALL hm_get_floatv(
'COL_min',asptet,is_available,lsubmodel,unitab)
167 IF(itet10/=0 .AND. itet10/=2 .AND. itet10/=3 .AND. itet10/=1000)
THEN
173 IF(itet4 == 0 .OR. (itet4 >= 4 .AND. itet4/=1000) )
THEN
181 msgline=
' ITETRA4 IS SET TO 1000'
182 CALL ancmsg(msgid=2027,msgtype=msgwarning,anmode=aninfo,i1=ig,c1=titr,i2=2,c2=trim(msgline))
183 ELSEIF(itet4 >=4 .AND. itet4 /= 1000)
THEN
185 msgline=
' ITETRA4 IS SET TO 1000'
186 CALL ancmsg(msgid=2027,msgtype=msgwarning,anmode=aninfo,i1=ig,c1=titr,i2=itet4,c2=trim(msgline))
188 ELSEIF(itet4_prev >= 4 .AND. itet4_prev/=1000)
THEN
190 msgline=
' ITETRA4 IS SET TO '
191 WRITE(msgline(22:31),fmt=
'(I0)')itet4
192 CALL ancmsg(msgid=2027,msgtype=msgwarning,anmode=aninfo,i1=ig,c1=titr,i2=itet4_prev,c2=trim(msgline))
207 IF(ipart(4,j) == id_partsph)
THEN
213 CALL ancmsg(msgid=1037,msgtype=msgerror,anmode=aninfo,i1=id, c1=titr,i2=id_partsph)
219 IF (ihbe == 0) ihbe = ihbe_ds
222 IF (ihbe == 16 )
THEN
223 IF (iint == 0) iint = 1
224 ELSEIF (n2d ==1.AND.ihbe == 17 )
THEN
225 IF (iint == 0) iint = 1
226 ELSEIF (ihbe == 5 )
THEN
230 IF (ihbe /= 24 ) iint = 1
233 IF (ihbe == 18 ) iint = 2
235 IF (ihbe == 19 )
THEN
241 IF (n2d > 0 .AND. ihbe/=0 .AND. ihbe/=2 .AND. ihbe/=17)
THEN
244 CALL ancmsg(msgid=321,msgtype=msgwarning,anmode=aninfo_blind_2,i1=id,c1=titr,i2=ihbe_old,i3=ihbe)
245 ELSEIF (ihbe / =1 .AND. ihbe/=2 .AND. ihbe/=12 .AND. ihbe / =13 .AND. ihbe /= 14 .AND. ihbe /= 16 .AND.
246 . ihbe /= 24 .AND. ihbe /= 222.AND. ihbe /= 17.AND. ihbe /= 18)
THEN
247 CALL ancmsg(msgid=549, msgtype=msgwarning, anmode=aninfo_blind_1,i1=id,c1=titr,i2=ihbe,i3=14)
255 IF(i_ale_flag <= 0 .OR. i_ale_flag >= 3)
THEN
258 IF(i_ale_flag /= 0)
THEN
259 IF(ihbe /= 0 .AND. ihbe /= 1 .AND. ihbe /= 2 )
THEN
260 CALL ancmsg(msgid=131,msgtype=msgerror,anmode=aninfo_blind_1, i1=id, c1=titr, i2=ihbe)
265 IF(qh < zero .OR. qh >= fifteen/hundred)
THEN
266 CALL ancmsg(msgid=311,msgtype=msgwarning,anmode=aninfo_blind_1, i1=id,c1=titr,r1=qh)
270 IF (jcvt == 0) jcvt = iframe_ds
271 IF (ihbe == 14.OR.ihbe == 18) jcvt = 2
272 IF (ihbe == 15) jcvt = 2
273 IF (ihbe == 16) jcvt = 1
274 IF (ihbe == 24) jcvt = 2
275 IF (iframe_ds == -2.OR.jcvt<0) jcvt = -1
279 IF (ismstr == 0) ismstr=isst_ds
280 IF (ismstr == 0.AND.ihbe /= 18) ismstr=4
281 IF (isst_ds == -2) ismstr = -1
284 IF (icpre == 0) icpre = icpre_d
285 IF((n2d > 0 .AND. ihbe == 17) )
THEN
286 IF(icpre/=1 .AND. icpre/=2) icpre=0
288 IF(n2d == 1 .AND. ihbe == 17) icpre=0
290 IF (ihbe /= 14 .AND. ihbe /= 24 .AND. ihbe /= 17 .AND. ihbe /= 18) icpre = 0
291 IF (ihbe == 17 )
THEN
292 IF (icpre == 0 )
THEN
294 ELSEIF(icpre == 3 )
THEN
298 IF (icpre == 3 .AND. ihbe /= 18) icpre =0
301 IF (icpre_d == -2) icpre = -1
304 npt = nptr*100 + npts*10 + nptt
314 IF (ihbe == 14 .AND.(nptr < 1 .OR. npts < 1 .OR. nptt < 1 .OR.nptr > 9 .OR. npts > 9 .OR. nptt > 9))
THEN
315 CALL ancmsg(msgid=563,msgtype=msgerror,anmode=aninfo_blind_1,i1=id, c1=titr,i2=npt, i3=ihbe)
316 ELSEIF (ihbe == 16 .AND.(nptr < 1 .OR. npts < 1 .OR. nptt < 1 .OR. nptr > 3 .OR. npts > 9 .OR. nptt > 3))
THEN
317 CALL ancmsg(msgid=563,msgtype=msgerror,anmode=aninfo_blind_1, i1=id, c1=titr,i2=npt, i3=ihbe)
327 IF (ihbe == 12 .OR. ihbe == 13 .OR. ihbe == 17 .OR.(n2d == 1 .AND. ihbe == 22))
THEN
337 IF(n2d > 0 .AND. ihbe/=0 .AND. ihbe/=2 .AND. ihbe/=17 .AND. (.NOT.(n2d==1.AND.ihbe==22)))
THEN
340 CALL ancmsg(msgid=324, msgtype=msgwarning, anmode=aninfo_blind_2, i1=id, c1=titr, i2=ihbe_old, i3=ihbe)
342 IF (icontrol==0) icontrol=icontrol_d
343 IF (icontrol>1) icontrol=0
347 IF (qa == zero .AND. qb == zero) igeo(31) = 1
348 IF (qa == zero) qa = onep1
349 IF (qb == zero) qb = fiveem2
353 IF (cvis == zero) cvis = em01
358 ELSEIF (ihbe==1.OR.ihbe==2)
THEN
359 IF (qh == zero.AND.icontrol==0) qh = em01
360 IF (qh == zero.AND.icontrol==1) qh = one
384 igeo(62) = i_ale_flag
401 IF (ihbe==1.AND.iint==3) ihbe_pr=5
402 IF(.NOT.is_encrypted)
THEN
403 IF(igeo(31) == 1)
THEN
404 WRITE(iout,1100)ig,ihbe_pr,ismstr,i_ale_flag,iplas,jcvt,itet4,
405 . itet10,icpre,icstr,cvis,qa,qb,qh,vns1,vns2,dtmin, istrain,icontrol
407 WRITE(iout,1000)ig,ihbe_pr,ismstr,i_ale_flag,iplas,jcvt,itet4,
408 . itet10,icpre,icstr,cvis,qa,qb,qh,vns1,vns2,dtmin, istrain,icontrol
410 IF((vdefmin+vdefmax+aspmax+asptet)>zero)
THEN
411 IF (vdefmax==zero) vdefmax=ep10
412 IF (aspmax==zero) aspmax=ep10
413 WRITE(iout,3000) vdefmin,vdefmax,aspmax,asptet
415 IF (iet > 0)
WRITE(iout,2010) iet
417 WRITE(iout,1001) npg,npt
421 IF(nsphdir/=0)
WRITE(iout,2020)nsphdir, id_partsph, id_sens
426 IF (itet4 == 1000) itet4 = 0
428 IF (itet10 == 1000) itet10 = 0
440 prop_tag(igtyp)%G_SIG = 6
441 prop_tag(igtyp)%L_SIG = 6
442 prop_tag(igtyp)%G_EINT = 1
443 prop_tag(igtyp)%G_QVIS = 1
444 prop_tag(igtyp)%L_EINT = 1
445 prop_tag(igtyp)%G_VOL = 1
446 prop_tag(igtyp)%L_VOL = 1
447 prop_tag(igtyp)%L_QVIS = 1
448 IF (multi_fvm%IS_USED) prop_tag(igtyp)%G_MOM = 3
449 prop_tag(igtyp)%G_FILL = 1
450 prop_tag(igtyp)%L_STRA = 6
451 IF (n2d /= 0 .AND. multi_fvm%IS_USED) prop_tag(igtyp)%G_AREA = 1
452 IF (geo(16) /= zero .OR. geo(17) /= zero)
THEN
458 IF(geo(39)/=zero.AND.igeo(9)== 0)igeo(9)=nint(geo(39))
459 IF(geo(171)/=zero.AND.igeo(10)== 0)igeo(10)=nint(geo
461 IF(
ale%GLOBAL%ICAA==1)
THEN
469 & 5x,
'STANDARD SOLID PROPERTY SET'/,
470 & 5x,
'PROPERTY SET NUMBER . . . . . . . . . .=',i10/,
471 & 5x,
'SOLID FORMULATION FLAG. . . . . . . . .=',i10/,
472 & 5x,
'SMALL STRAIN FLAG . . . . . . . . . . .=',i10/,
473 & 5x,
'IALE FLAG (0:LAGRANGE,1:ALE,2:EULER). .=',i10/,
474 & 5x,
'SOLID STRESS PLASTICITY FLAG. . . . . .=',i10/,
475 & 5x,
'COROTATIONAL SYSTEM FLAG. . . . . . . .=',i10/,
476 & 5x,
'TETRA4 FORMULATION FLAG. . . . . . . .=',i10/,
477 & 5x,
'TETRA10 FORMULATION FLAG . . . . . . .=',i10/,
478 & 5x,
'CONSTANT PRESSURE FLAG. . . . . . . . .=',i10/,
479 & 5x,
'CONSTANT STRESS FLAG. . . . . . . . . .=',i10/,
480 & 5x,
'HOURGLASS NUMERICAL DAMPING . . . . . .=',1pg20.13/,
481 & 5x,
'QUADRATIC BULK VISCOSITY. . . . . . . .=',1pg20.13/,
482 & 5x,
'LINEAR BULK VISCOSITY . . . . . . . . .=',1pg20.13/,
483 & 5x,
'HOURGLASS VISCOSITY . . . . . . . . . .=',1pg20.13/,
484 & 5x,
'NUMERICAL NAVIER STOKES VISCO. LAMBDA .=',1pg20.13/,
485 & 5x,
'NUMERICAL NAVIER STOKES VISCOSITY MU. .=',1pg20.13/,
486 & 5x,
'BRICK MINIMUM TIME STEP................=',1pg20.13/,
487 & 5x,
'POST PROCESSING STRAIN FLAG . . . . . .=',i10/,
488 & 5x,
'SOLID DISTORTION CONTROL FLAG . . . . .=',i10/)
490 & 5x,
'NUMBER OF INTEGRATION POINTS. . . . .=',i3,
493 & 5x,
'NUMBER OF INTEGRATION POINTS. . . . .=',i10/)
495 & 5x,
'STANDARD SOLID PROPERTY SET'/,
496 & 5x,
'PROPERTY SET NUMBER . . . . . . . . . .=',i8/,
497 & 5x,
'CONFIDENTIAL DATA'//)
499 & 5x,
'STANDARD SOLID PROPERTY SET'/,
500 & 5x,
'PROPERTY SET NUMBER . . . . . . . . . .=',i10/,
501 & 5x,
'SOLID FORMULATION FLAG. . . . . . . . .=',i10/,
502 & 5x,
'SMALL STRAIN FLAG . . . . . . . . . . .=',i10/,
503 & 5x,
'IALE FLAG (0:LAGRANGE,1:ALE,2:EULER). .=',i10/,
504 & 5x,
'SOLID STRESS PLASTICITY FLAG. . . . . .=',i10/,
505 & 5x,
'COROTATIONAL SYSTEM FLAG. . . . . . . .=',i10/,
506 & 5x,
'TETRA4 FORMULATION FLAG. . . . . . . .=',i10/,
507 & 5x,
'TETRA10 FORMULATION FLAG . . . . . . .=',i10/,
508 & 5x,
'CONSTANT PRESSURE FLAG. . . . . . . . .=',i10/,
509 & 5x,
'CONSTANT STRESS FLAG. . . . . . . . . .=',i10/,
510 & 5x,
'HOURGLASS NUMERICAL DAMPING . . . . . .=',1pg20.13/,
511 & 5x,
'DEFAULT VALUE FOR QUADRATIC BULK. . . . ',/,
512 & 5x,
' VISCOSITY (QA) WILL BE USED. . . .=',1pg20.13/,
513 & 5x,
'EXCEPT IN CASE LAW 70 QA = 0. ',/,
514 & 5x,
'DEFAULT VALUE FOR LINEAR BULK . . . . . ',/,
515 & 5x,
' VISCOSITY (QB) WILL BE USED . . . =',1pg20.13/,
516 & 5x,'except in
CASE law 70 qb = 0.
',/,
517 & 5X,'hourglass viscosity . . . . . . . . . .=
',1PG20.13/,
518 & 5X,'numerical navier stokes visco. lambda .=
',1PG20.13/,
519 & 5X,'numerical navier stokes viscosity mu. .=
',1PG20.13/,
520 & 5X,'brick minimum time step................=
',1PG20.13/,
521 & 5X,'post processing strain flag . . . . . .=
',I10/,
522 & 5X,'solid distortion control flag . . . . .=
',I10/)
524 & 5X,'hourglass modulus flag. . . . . . . . .=
',I10/)
526 & 5X,'number of sph particles per direction .=
',I10/,
527 & 5X,'corresponding part
for sph particles. .=
',I10/,
528 & 5X,'sensor to activate sph particles ......=
',I10/)
530 & 5X,'solid minimum volumetric strain........=
',1PG20.13/,
531 & 5X,'solid maximum volumetric strain........=
',1PG20.13/,
532 & 5X,'solid maximum aspect ratio.............=
',1PG20.13/,
533 & 5X,'solid minimum collapse ratio...........=
',1PG20.13/)