41 . LSUBMODEL,IPART,DEFAULTS_SOLID)
72#include "implicit_f.inc"
81#include "tablen_c.inc"
86 TYPE (UNIT_TYPE_)
INTENT(IN)
87INTEGER,
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, ,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,IPLA_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)
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)
133 CALL hm_get_intv('sphpart_id
',ID_PARTSPH,IS_AVAILABLE,LSUBMODEL)
134 CALL HM_GET_INTV('itetra10
',ITET10,IS_AVAILABLE,LSUBMODEL)
135 CALL HM_GET_INTV('inpts_r
',NPTR,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)
142 CALL HM_GET_FLOATV('qa
',QA,IS_AVAILABLE,LSUBMODEL,UNITAB)
143 CALL HM_GET_FLOATV('qb
',QB,IS_AVAILABLE,LSUBMODEL,UNITAB)
144 CALL HM_GET_FLOATV('lambda
',VNS1,IS_AVAILABLE,LSUBMODEL,UNITAB)
145 CALL HM_GET_FLOATV('mu',vns2,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
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
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(171))
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. . . . . . . . .='
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/)
553 SUBROUTINE hm_read_prop14f(GEO,IGEO,PROP_TAG,MULTI_FVM,IGTYP,IG,TITR,UNITAB,LSUBMODEL,
585#include "implicit_f.inc"
589#include "units_c.inc"
590#include "com01_c.inc"
591#include "param_c.inc"
592#include "tablen_c.inc"
597 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
598 INTEGER,
INTENT(IN)::IG,IGTYP
599 CHARACTER(LEN=NCHARTITLE) ,
INTENT(IN)::TITR
601 TYPE(multi_fvm_struct),
INTENT(IN) :: MULTI_FVM
603 INTEGER,
INTENT(INOUT)::IGEO(NPROPGI)
604 my_real,
INTENT(INOUT)::GEO(NPROPG)
605 TYPE(
prop_tag_) ,
DIMENSION(0:MAXPROP) ::
606 TYPE(solid_defaults_),
INTENT(IN) :: DEFAULTS_SOLID
610 INTEGER IHBE,ISMSTR,IPLAS,ICPRE,ICSTR,IINT,JCVT,NPG,NPT,NPTR,NPTS,NPTT, ,,IHBE_OLD,ID,I8PT,J
611 INTEGER IHBE_DS,ISST_DS,IPLA_DS,IFRAME_DS
612 my_real cvis,qa,qb,qh,vns1,vns2,dtmin
613 LOGICAL IS_AVAILABLE,
617 is_encrypted = .false.
618 is_available = .false.
626 ihbe_ds= defaults_solid%ISOLID
627 isst_ds= defaults_solid%ISMSTR
628 iframe_ds= defaults_solid%IFRAME
633 IF (ismstr == 0) ismstr=4
653 IF (n2d > 0 .AND. ihbe/=0 .AND. ihbe/=2)
THEN
657 . msgtype=msgwarning,
658 . anmode=aninfo_blind_2,
665 IF(n2d > 0 .AND. ihbe /=0 .AND. ihbe /= 2)
THEN
669 . msgtype=msgwarning,
670 . anmode=aninfo_blind_2,
677 IF(qh < zero .OR. qh >= fifteen/hundred)
THEN
679 . msgtype=msgwarning,
680 . anmode=aninfo_blind_1,
686 IF (qh == zero) qh = em01
690 IF(
ale%GLOBAL%ICAA == 0)
THEN
692 IF (qa == zero) qa = onep1
693 IF (qb == zero) qb = fiveem2
715 prop_tag(igtyp)%G_SIG = 6
716 prop_tag(igtyp)%L_SIG = 6
717 prop_tag(igtyp)%G_EINT = 1
718 prop_tag(igtyp)%G_QVIS = 1
719 prop_tag(igtyp)%L_EINT = 1
720 prop_tag(igtyp)%G_VOL = 1
721 prop_tag(igtyp)%L_VOL = 1
722 prop_tag(igtyp)%L_QVIS = 1
723 IF (multi_fvm%IS_USED) prop_tag(igtyp)%G_MOM = 3
724 prop_tag(igtyp)%G_FILL = 1
725 prop_tag(igtyp)%L_STRA = 6
726 IF (n2d /= 0 .AND. multi_fvm%IS_USED) prop_tag(igtyp)%G_AREA = 1
730 IF(geo(39)/=zero.AND.igeo(9)== 0)igeo(9)=nint(geo(39))
731 IF(geo(171)/=zero.AND.igeo(10)== 0)igeo(10)=nint(geo(171))
735 IF(.NOT.is_encrypted)
THEN
736 WRITE(iout,1000)ig,ihbe,ismstr,jcvt,iint,cvis,qa,qb,qh,vns1,vns2
745 & 5x,
'STANDARD FLUID PROPERTY SET'/,
746 & 5x,
'PROPERTY SET NUMBER . . . . . . . . . .=',i10/,
747 & 5x,
'FORMULATION FLAG. . . . . . . . . . . .=',i10/,
748 & 5x,
'SMALL STRAIN FLAG . . . . . . . . . . .=',i10/,
749 & 5x,
'COROTATIONAL SYSTEM FLAG. . . . . . . .=',i10/,
750 & 5x,
'INTEGRATION FORMULATION FLAG. . . . . =',i10/,
751 & 5x,
'HOURGLASS NUMERICAL DAMPING . . . . . .=',1pg20.13/,
752 & 5x,
'QUADRATIC BULK VISCOSITY. . . . . . . .=',1pg20.13/,
753 & 5x,
'LINEAR BULK VISCOSITY . . . . . . . . .=',1pg20.13/,
754 & 5x,
'HOURGLASS VISCOSITY . . . . . . . . . .=',1pg20.13/,
755 & 5x,
'NUMERICAL NAVIER STOKES VISCO. LAMBDA .=',1pg20.13/,
756 & 5x,
'NUMERICAL NAVIER STOKES VISCOSITY MU. .=',1pg20.13/,
757 & 5x,
'BRICK MINIMUM TIME STEP................=',1pg20.13)
759 & 5x,
'NUMBER OF INTEGRATION POINTS. . . . .=',i10/)
762 & 5x,
'STANDARD FLUID PROPERTY SET'/,
763 & 5x,
'PROPERTY SET NUMBER . . . . . . . . . .=',i8/,
764 & 5x,
'CONFIDENTIAL DATA'//)
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)