42 . IG ,IDTITL ,UNITAB ,LSUBMODEL ,RTRANS ,
43 . SUB_ID ,ISKN ,IPART ,SUB_INDEX,DEFAULTS_SOLID)
83#include "implicit_f.inc"
93#include "tablen_c.inc"
94#include "tabsiz_c.inc"
98 INTEGER,
INTENT(INOUT) :: IGEO(NPROPGI)
99 INTEGER,
INTENT(IN) :: IG
100 INTEGER,
INTENT(IN) :: ISKN(LISKN,SISKWN/LISKN)
101 INTEGER,
INTENT(IN) :: IPART(LIPART1,NPART+NTHPART)
102 INTEGER,
INTENT(IN) :: IGTYP
103 INTEGER,
INTENT(IN) :: SUB_ID
104 INTEGER,
INTENT(IN) :: SUB_INDEX
106 my_real,
INTENT(INOUT) :: geo(npropg)
109 CHARACTER(LEN=NCHARTITLE),
INTENT(IN) :: IDTITL
111 TYPE(
prop_tag_) ,
DIMENSION(0:MAXPROP),
INTENT(INOUT) :: PROP_TAG
112 TYPE(MULTI_FVM_STRUCT),
INTENT(IN)
114 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
115 TYPE(solid_defaults_),
INTENT(IN) :: DEFAULTS_SOLID
119 INTEGER IHBE,ISMSTR,IPLAS,ICPRE,ICSTR,IINT,IP,ISK,IREP,JCVT,
120 . NPT,NPTR,NPTS,NPTT,ITET4,IET,ISTR,IHBE_OLD,ITET10,
121 . ishear,isorth,icontrol_d,icontrol
123 . cvis,qa,qb,qh,vx,vy,vz,angle,dtmin,px,py,pz,vn,
124 . vdefmin,vdefmax,aspmax,asptet
125 INTEGER K,NSPHDIR,ID_PARTSPH,IPARTSPH,J
126 INTEGER IHBE_DS,ISST_DS,IPLA_DS,IFRAME_DS, IMAS_DS,
127 . itet4_d,itet10_d,icpre_d
128 LOGICAL IS_AVAILABLE, IS_ENCRYPTED
130 is_encrypted = .false.
131 is_available = .false.
137 ihbe_ds= defaults_solid%ISOLID
138 isst_ds= defaults_solid%ISMSTR
139 icpre_d= defaults_solid%ICPRE
140 itet4_d= defaults_solid%ITETRA4
141 itet10_d= defaults_solid%ITETRA10
142 iframe_ds= defaults_solid%IFRAME
143 icontrol_d=defaults_solid%ICONTROL
162 CALL hm_get_intv(
'ISOLID',ihbe,is_available,lsubmodel)
163 CALL hm_get_intv(
'Ismstr',ismstr,is_available,lsubmodel)
168 CALL hm_get_intv(
'Itetra10',itet10,is_available,lsubmodel)
169 CALL hm_get_intv(
'Itetra4',itet4,is_available,lsubmodel)
170 CALL hm_get_intv(
'Icpre',icpre,is_available,lsubmodel)
171 CALL hm_get_intv(
'Inpts_R',nptr,is_available,lsubmodel)
172 CALL hm_get_intv(
'Inpts_S',npts,is_available,lsubmodel)
174 CALL hm_get_intv(
'SKEW_CSID',isk,is_available,lsubmodel)
175 CALL hm_get_intv(
'REFPLANE',ip,is_available,lsubmodel)
176 CALL hm_get_intv(
'Iframe',jcvt,is_available,lsubmodel)
177 CALL hm_get_intv(
'ORTHTROP',irep,is_available,lsubmodel)
180 CALL hm_get_intv(
'Ndir',nsphdir,is_available,lsubmodel)
181 CALL hm_get_intv(
'SPHPART_ID',id_partsph,is_available,lsubmodel)
182 CALL hm_get_intv(
'Icontrol',icontrol,is_available,lsubmodel)
190 CALL hm_get_floatv(
'MAT_BETA',angle,is_available,lsubmodel,unitab)
194 CALL hm_get_floatv(
'deltaT_min',dtmin,is_available,lsubmodel,unitab)
195 CALL hm_get_floatv(
'vdef_min',vdefmin,is_available,lsubmodel,unitab)
196 CALL hm_get_floatv(
'vdef_max',vdefmax,is_available,lsubmodel,unitab)
197 CALL hm_get_floatv('asp_max
',ASPMAX,IS_AVAILABLE,LSUBMODEL,UNITAB)
198 CALL HM_GET_FLOATV('col_min
',ASPTET,IS_AVAILABLE,LSUBMODEL,UNITAB)
199 CALL HM_GET_FLOATV('px
',PX,IS_AVAILABLE,LSUBMODEL,UNITAB)
200 CALL HM_GET_FLOATV('py
',PY,IS_AVAILABLE,LSUBMODEL,UNITAB)
201 CALL HM_GET_FLOATV('pz
',PZ,IS_AVAILABLE,LSUBMODEL,UNITAB)
203.AND.
IF(ISK == 0 SUB_INDEX /= 0 ) ISK = LSUBMODEL(SUB_INDEX)%SKEW
209 IF(ITET4 == 0) ITET4 = ITET4_D
210 IF(ITET10 == 0) ITET10 = ITET10_D
214 . CALL SUBROTVECT(VX,VY,VZ,RTRANS,SUB_ID,LSUBMODEL)
217 IF(ID_PARTSPH > 0) THEN
219 IF(IPART(4,J)==ID_PARTSPH) THEN
224 CALL ANCMSG(MSGID=1037,
239 IF (IHBE == 18 ) IINT = 2
244 IF (IHBE == 0) IHBE = IHBE_DS
264.AND..AND..AND.
IF(N2D>0 IHBE/=0 IHBE/=2 IHBE/=17)THEN
267 CALL ANCMSG(MSGID=321,
268 . MSGTYPE=MSGWARNING,
269 . ANMODE=ANINFO_BLIND_2,
274.AND..AND..AND.
ELSEIF (IHBE/= 1IHBE/= 2IHBE/=14IHBE/= 24
275.AND..AND.
. IHBE/= 17IHBE/= 18) THEN
276 CALL ANCMSG(MSGID=533,
277 . MSGTYPE=MSGWARNING,
278 . ANMODE=ANINFO_BLIND_1,
287 IF (JCVT == 0) JCVT = IFRAME_DS
288.OR.
IF (IHBE == 14IHBE == 18) JCVT = 2
289 IF (IHBE == 24) JCVT = 2
290.OR.
IF (IFRAME_DS == -2JCVT<0) JCVT = -1
294 IF(ISMSTR == 0) ISMSTR=ISST_DS
295.AND.
IF(ISMSTR == 0IHBE /= 18) ISMSTR=4
296 IF (ISST_DS == -2) ISMSTR = -1
320 IF (ICPRE == 0) ICPRE = ICPRE_D
321.AND.
IF((N2D > 0 IHBE == 17) ) THEN
322.AND.
IF(ICPRE/=1 ICPRE/=2) ICPRE=0
324.AND.
IF(N2D == 1 IHBE == 17) ICPRE=0
326.AND..AND..AND.
IF (IHBE /= 14 IHBE /= 24 IHBE /= 17 IHBE /= 18) ICPRE = 0
327 IF (IHBE == 17 ) THEN
328 IF (ICPRE == 0 ) THEN
330 ELSEIF(ICPRE == 3 ) THEN
334.AND.
IF (ICPRE == 3 IHBE /= 18) ICPRE =0
335.AND..OR.
END IF!((N2D > 0 IHBE == 17)
337 IF (ICPRE_D == -2) ICPRE = -1
343 IF(NPTR == 0) NPTR = 2
344 IF(NPTS == 0) NPTS = 2
345 IF(NPTT == 0) NPTT = 2
346 NPT=NPTR*100+NPTS*10+NPTT
348.OR..OR..OR.
. (NPTR < 1 NPTS < 1 NPTT < 1
349.OR..OR.
. NPTR > 9 NPTS > 9 NPTT > 9)) THEN
350 CALL ANCMSG(MSGID=563,
352 . ANMODE=ANINFO_BLIND_1,
357.AND.
ELSEIF (IHBE == 16
358.OR..OR..OR.
. (NPTR < 1 NPTS < 1 NPTT < 1
359.OR..OR.
. NPTR > 3 NPTS > 9 NPTT > 3)) THEN
360 CALL ANCMSG(MSGID=563,
362 . ANMODE=ANINFO_BLIND_1,
374.AND..OR.
IF((N2D > 0 IHBE == 17)
375.AND.
. (N2D == 1 IHBE == 22)) THEN
382.AND.
IF(QA == ZERO QB == ZERO) IGEO(31) = 1
383 IF (QA == ZERO) QA = ONEP1
384 IF (QB == ZERO) QB = FIVEEM2
385 IF (QH == ZERO) QH = EM01
390 IF (CVIS == ZERO) CVIS = EM01
394.OR.
ELSEIF (IHBE==1IHBE==2) THEN
404.OR.
IF (IP == 23 IP == 24) THEN
406 VN = VX*VX+VY*VY+VZ*VZ
408 CALL ANCMSG(MSGID=1918,
410 . ANMODE=ANINFO_BLIND_1,
417 DO K=0,NUMSKW+MIN(1,NSPCOND)*NUMSPH+NSUBMOD
418 IF(ISK == ISKN(4,K+1)) THEN
424 CALL ANCMSG(MSGID=137,ANMODE=ANINFO,MSGTYPE=MSGERROR,
427 . I1=IG,I2=ISK,C3=IDTITL)
432 IF (ICONTROL==0) ICONTROL=ICONTROL_D
433 IF (ICONTROL>1) ICONTROL=0
465.NOT.
IF( IS_ENCRYPTED)THEN
466 IF(IGEO(31) == 1)THEN
467 WRITE(IOUT,1100)IG,IHBE,ISMSTR,IPLAS,NPT,JCVT,ITET4,ITET10,
468 . ICPRE,ICSTR,CVIS,QA,QB,QH,DTMIN,IREP,ISTR,ICONTROL
470 WRITE(IOUT,1000)IG,IHBE,ISMSTR,IPLAS,NPT,JCVT,ITET4,ITET10,
471 . ICPRE,ICSTR,CVIS,QA,QB,QH,DTMIN,IREP,ISTR,ICONTROL
473 IF((VDEFMIN+VDEFMAX+ASPMAX+ASPTET)>ZERO) THEN
474 IF (VDEFMAX==ZERO) VDEFMAX=EP10
475 IF (ASPMAX==ZERO) ASPMAX=EP10
476 WRITE(IOUT,3000) VDEFMIN,VDEFMAX,ASPMAX,ASPTET
479 WRITE(IOUT,1001) ISKN(4,ISK)
480.OR..OR.
ELSEIF(IP == 1 IP == 2 IP == 3) THEN
481 WRITE(IOUT,1002) IP,ANGLE
482.OR..OR.
ELSEIF(IP == 11 IP == 12 IP == 13) THEN
483 WRITE(IOUT,1003) IP,VX,VY,VZ
484 ELSEIF(IP == 20) THEN
486 ELSEIF(IP == 21) THEN
487 WRITE(IOUT,2002) IP,PX,PY,PZ
488 ELSEIF(IP == 23) THEN
489 WRITE(IOUT,2003) IP,ANGLE,VX,VY,VZ
490 ELSEIF(IP == 24) THEN
491 WRITE(IOUT,2004) IP,PX,PY,PZ,VX,VY,VZ
493 IF (IET > 0) WRITE(IOUT,2010) IET
494 IF(NSPHDIR/=0)WRITE(IOUT,2020)NSPHDIR, ID_PARTSPH
499 IF (ITET4 == 1000) ITET4 = 0
501 IF (ITET10 == 1000) ITET10 = 0
504 PROP_TAG(IGTYP)%G_SIG = 6
505 PROP_TAG(IGTYP)%L_SIG = 6
506 PROP_TAG(IGTYP)%G_EINT = 1
507 PROP_TAG(IGTYP)%G_QVIS = 1
508 PROP_TAG(IGTYP)%L_EINT = 1
509 PROP_TAG(IGTYP)%G_VOL = 1
510 PROP_TAG(IGTYP)%L_VOL = 1
511 PROP_TAG(IGTYP)%L_QVIS = 1
512 IF (MULTI_FVM%IS_USED) THEN
513 PROP_TAG(IGTYP)%G_MOM = 3
516 PROP_TAG(IGTYP)%G_FILL = 1
517 PROP_TAG(IGTYP)%L_STRA = 6
518.AND.
IF (N2D /= 0 MULTI_FVM%IS_USED) THEN
520 PROP_TAG(IGTYP)%G_AREA = 1
522 PROP_TAG(IGTYP)%G_GAMA = 6
523 PROP_TAG(IGTYP)%L_SIGL = 6
524.OR.
IF (GEO(16) /= ZERO GEO(17) /= ZERO) THEN
525 IGEO(33) = 1 ! ISVIS flag
532.AND.
IF(GEO( 3)/=ZEROIGEO( 5)== 0) IGEO( 5)=NINT(GEO( 3))
533.AND.
IF(GEO(39)/=ZEROIGEO( 9)== 0) IGEO( 9)=NINT(GEO(39))
534.AND.
IF(GEO(171)/=ZEROIGEO(10)== 0) IGEO(10)=NINT(GEO(171))
540 & 5X,'orthotropic solid property set
'/,
541 & 5X,'property set number . . . . . . . . . .=
',I10/,
542 & 5X,'solid formulation flag. . . . . . . . .=
',I10/,
543 & 5X,'small strain flag . . . . . . . . . . .=
',I10/,
544 & 5X,'solid stress plasticity flag. . . . . .=
',I10/,
545 & 5X,'number of integration points. . . . .=
',I10/,
546 & 5X,'corotational system flag. . . . . . . .=
',I10/,
547 & 5X,'tetra4 formulation flag. . . . . . . .=
',I10/,
548 & 5X,'tetra10 formulation flag . . . . . . .=
',I10/,
549 & 5X,'constant pressure flag. . . . . . . . .=
',I10/,
550 & 5X,'constant stress flag. . . . . . . . . .=
',I10/,
551 & 5X,'hourglass numerical
damping . . . . . .=',1pg20.13/,
552 & 5x,
'QUADRATIC BULK VISCOSITY. . . . . . . .=',1pg20.13/,
553 & 5x,
'LINEAR BULK VISCOSITY . . . . . . . . .=',1pg20.13/,
554 & 5x,
'HOURGLASS VISCOSITY . . . . . . . . . .=',1pg20.13/,
555 & 5x,
'BRICK MINIMUM TIME STEP................=',1pg20.13/,
556 & 5x,
'LOCAL ORTHOTROPY SYSTEM FORMULATION . .=',i10/,
557 & 5x,
'POST PROCESSING STRAIN FLAG . . . . . .=',i10/,
558 & 5x,
'SOLID DISTORTION CONTROL FLAG . . . . .=',i10/)
560 & 5x,
'ORTHOTROPIC SOLID PROPERTY SET'/,
561 & 5x,
'PROPERTY SET NUMBER . . . . . . . . . .=',i8/,
562 & 5x,
'CONFIDENTIAL DATA'//)
564 & 5x,
'ORTHOTROPIC SOLID PROPERTY SET'/,
565 & 5x,
'PROPERTY SET NUMBER . . . . . . . . . .=',i10/,
566 & 5x,
'SOLID FORMULATION FLAG. . . . . . . . .=',i10/,
567 & 5x,
'SMALL STRAIN FLAG . . . . . . . . . . .=',i10/,
568 & 5x,
'SOLID STRESS PLASTICITY FLAG. . . . . .=',i10/,
569 & 5x,
'NUMBER OF INTEGRATION POINTS. . . . .=',i10/,
570 & 5x,
'COROTATIONAL SYSTEM FLAG. . . . . . . .=',i10/,
571 & 5x,
'TETRA4 FORMULATION FLAG. . . . . . . .=',i10/,
572 & 5x,
'TETRA10 FORMULATION FLAG . . . . . . .=',i10/,
573 & 5x,
'CONSTANT PRESSURE FLAG. . . . . . . . .=',i10/,
574 & 5x,
'CONSTANT STRESS FLAG. . . . . . . . . .=',i10/,
575 & 5x,
'HOURGLASS NUMERICAL DAMPING . . . . . .=',1pg20.13/,
576 & 5x,
'DEFAULT VALUE FOR QUADRATIC BULK. . . . ',/,
577 & 5x,
' VISCOSITY (QA) WILL BE USED. . . .=',1pg20.13/,
578 & 5x,
'EXCEPT IN CASE LAW 70 WHERE QA = 0. ',/,
579 & 5x,
'DEFAULT VALUE FOR LINEAR BULK . . . . . ',/,
580 & 5x,
' VISCOSITY (QB) WILL BE USED . . . =',1pg20.13/,
581 & 5x,
'EXCEPT IN CASE LAW 70 WHERE QB = 0. ',/,
582 & 5x,
'HOURGLASS VISCOSITY . . . . . . . . . .=',1pg20.13/,
583 & 5x,
'BRICK MINIMUM TIME STEP................=',1pg20.13/,
584 & 5x,
'LOCAL ORTHOTROPY SYSTEM FORMULATION . .=',i10/,
585 & 5x,
'POST PROCESSING STRAIN FLAG . . . . . .=',i10/,
586 & 5x,
'SOLID DISTORTION CONTROL FLAG . . . . .=',i10/)
588 & 5x,
'ORTHOTROPIC SKEW FRAME. . . . . . . . .=',i10)
590 & 5x,
'ORTHOTROPIC PLANE NUMBER. . . . . . . .=',i10/,
591 & 5x,
' 1=(R,S) 2=(S,T) 3=(T,R) ',/,
592 & 5x,
'ORTHOTROPIC ANGLE . . . . . . . . . . .=',1pg20.13)
594 & 5x,
'ORTHOTROPIC PLANE NUMBER. . . . . . . .=',i10/,
595 & 5x,
' 1=(R,S) 2=(S,T) 3=(T,R) ',/,
596 & 5x,
'REFERENCE VECTOR VX . . . . . . . . . .=',1pg20.13/,
597 & 5x,
'REFERENCE VECTOR VY . . . . . . . . . .=',1pg20.13/,
598 & 5x,
'REFERENCE VECTOR VZ . . . . . . . . . .=',1pg20.13)
600 & 5x,
'HOURGLASS MODULUS FLAG. . . . . . . . .=',i10/)
602 & 5x,
'NUMBER OF SPH PARTICLES PER DIRECTION .=',i10/,
603 & 5x,
'CORRESPONDING PART FOR SPH PARTICLES. .=',i10/)
605 & 5x,
'ORTHOTROPIC DIRECTIONS BY ELEMENT CONNECTIVITY,IP='i10)
607 & 5x,
'ORTHOTROPIC DIRECTION FLAG IP. . . . . =',i10/,
608 & 5x,
'REFERENCE POINT PX . . . . . . . . . . =',1pg20.13/,
609 & 5x,
'REFERENCE POINT PY . . . . . . . . . . =',1pg20.13/,
610 & 5x,
'REFERENCE POINT PZ . . . . . . . . . . =',1pg20.13)
612 & 5x,
'ORTHOTROPIC DIRECTION FLAG IP . . . . .=',i10/,
613 & 5x,
'ORTHOTROPIC ANGLE . . . . . . . . . . .=',1pg20.13/,
614 & 5x,
'REFERENCE VECTOR VX . . . . . . . . . .=',1pg20.13/,
615 & 5x,
'REFERENCE VECTOR VY . . . . . . . . . .=',1pg20.13/,
616 & 5x,
'REFERENCE VECTOR VZ . . . . . . . . . .=',1pg20.13)
618 & 5x,
'ORTHOTROPIC DIRECTION FLAG IP. . . . . =',i10/,
619 & 5x,
'REFERENCE POINT PX . . . . . . . . . . =',1pg20.13/,
620 & 5x,
'REFERENCE POINT PY . . . . . . . . . . =',1pg20.13/,
621 & 5x,
'REFERENCE POINT PZ . . . . . . . . . . =',1pg20.13/,
622 & 5x,
'REFERENCE VECTOR VX . . . . . . . . . .=',1pg20.13/,
623 & 5x,
'REFERENCE VECTOR VY . . . . . . . . . .=',1pg20.13/,
624 & 5x,
'REFERENCE VECTOR VZ . . . . . . . . . .=',1pg20.13)
626 & 5x,
'SOLID MINIMUM VOLUMETRIC STRAIN........=',1pg20.13/,
627 & 5x,
'SOLID MAXIMUM VOLUMETRIC STRAIN........=',1pg20.13/,
628 & 5x,
'SOLID MAXIMUM ASPECT RATIO.............=',1pg20.13/,
629 & 5x,
'SOLID MINIMUM COLLAPSE RATIO...........=',1pg20.13/)