38 SUBROUTINE hm_read_mat15(
39 . LSUBMODEL,MTAG ,UNITAB ,IPM ,PM ,
40 . MAT_ID ,TITR ,MATPARAM ,ISRATE ,PARMAT )
57#include "implicit_f.inc"
66 TYPE(SUBMODEL_DATA),
INTENT(IN) :: LSUBMODEL(*)
67 TYPE(MLAW_TAG_),
INTENT(INOUT) :: MTAG
68 CHARACTER(LEN=NCHARTITLE),
INTENT(IN) :: TITR
69 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
70 INTEGER,
INTENT(IN) :: MAT_ID
71 INTEGER,
INTENT(INOUT) :: IPM(NPROPMI),ISRATE
72 my_real,
INTENT(INOUT) :: pm(npropm)
73 TYPE(MATPARAM_STRUCT_) ,
INTENT(INOUT) :: MATPARAM
74 my_real,
DIMENSION(100),
INTENT(INOUT) :: parmat
78 INTEGER IOFF,ICC,IFLAG
80 . n12, n21, e11, e22, g12, g23, g31, cb, cn,
81 . fmax, sigyt1, sigyt2, sigyc1, sigyc2, sigyt12, sigyc12,
82 . c1, ssp, f1, f2, f11, f22, f33, f12, ft1, wplamx,
87 . eps1t1,eps2t1,eps1t2,eps2t2,
90 . beta, tmax,s1,s2,s12,c11,c22,wplaref,rho0,rhor
91 LOGICAL :: IS_ENCRYPTED, IS_AVAILABLE
98 is_encrypted = .false.
99 is_available = .false.
103 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
104 CALL hm_get_floatv(
'Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
105 IF (rhor == zero)
THEN
129 CALL hm_get_floatv(
'MAT_EA', e11, is_available, lsubmodel, unitab)
130 CALL hm_get_floatv(
'MAT_EB', e22, is_available, lsubmodel, unitab)
131 CALL hm_get_floatv(
'MAT_PRAB', n12, is_available, lsubmodel, unitab)
133 CALL hm_get_floatv(
'MAT_GAB', g12, is_available, lsubmodel, unitab)
134 CALL hm_get_floatv(
'MAT_GBC', g23, is_available, lsubmodel, unitab)
135 CALL hm_get_floatv(
'MAT_GCA', g31, is_available, lsubmodel, unitab)
137 CALL hm_get_floatv(
'MAT_BETA', cb, is_available, lsubmodel, unitab)
138 CALL hm_get_floatv(
'MAT_HARD', cn, is_available, lsubmodel, unitab)
139 CALL hm_get_floatv(
'MAT_SIG', fmax, is_available, lsubmodel, unitab)
141 CALL hm_get_floatv(
'WPMAX', wplamx, is_available, lsubmodel, unitab)
142 CALL hm_get_floatv(
'WPREF', wplaref, is_available, lsubmodel, unitab)
143 CALL hm_get_intv(
'Itype', ioff, is_available, lsubmodel)
145 CALL hm_get_floatv(
'MAT_SIGYT1', sigyt1, is_available, lsubmodel, unitab)
146 CALL hm_get_floatv(
'MAT_SIGYT2', sigyt2, is_available, lsubmodel, unitab)
147 CALL hm_get_floatv(
'MAT_SIGYC1', sigyc1, is_available, lsubmodel, unitab)
148 CALL hm_get_floatv(
'MAT_SIGYC2', sigyc2, is_available, lsubmodel, unitab)
151 CALL hm_get_floatv(
'MAT_SIGC12', sigyt12, is_available, lsubmodel, unitab)
152 CALL hm_get_floatv(
'MAT_SIGT12', sigyc12, is_available, lsubmodel, unitab)
153 CALL hm_get_floatv(
'MAT_SRC', cc, is_available, lsubmodel, unitab)
154 CALL hm_get_floatv(
'MAT_SRP', eps0, is_available, lsubmodel, unitab)
155 CALL hm_get_intv(
'STRFLAG', icc, is_available, lsubmodel)
157 CALL hm_get_floatv(
'MAT_Beta', beta, is_available, lsubmodel, unitab)
158 CALL hm_get_floatv(
'MAT_TMAX', tmax, is_available, lsubmodel, unitab)
159 CALL hm_get_floatv'MCHANG_S1', s1, is_available, lsubmodel, unitab)
160 CALL hm_get_floatv('mchang_s2
', S2, IS_AVAILABLE, LSUBMODEL, UNITAB)
161 CALL HM_GET_FLOATV('mchang_s12
', S12, IS_AVAILABLE, LSUBMODEL, UNITAB)
163 CALL HM_GET_INTV('fsmooth
', ISRATE, IS_AVAILABLE, LSUBMODEL)
164 CALL HM_GET_FLOATV('fcut
', FCUT, IS_AVAILABLE, LSUBMODEL, UNITAB)
165 CALL HM_GET_FLOATV('mchang_c1
', C11, IS_AVAILABLE, LSUBMODEL, UNITAB)
166 CALL HM_GET_FLOATV('mchang_c2
', C22, IS_AVAILABLE, LSUBMODEL, UNITAB)
168.OR..OR.
IF(E11==ZERO E22==ZERO
169.OR..OR.
& G12==ZERO G23==ZERO G31==ZERO) THEN
170 CALL ANCMSG(MSGID=306,
176 . C2='e11, e22, g12, g23, g31
')
179.AND..AND.
IF(CC > ZERO EPS0 > ZERO ISRATE == 0) THEN
180 CALL ANCMSG(MSGID=1220,
181 . MSGTYPE=MSGWARNING,
182 . ANMODE=ANINFO_BLIND_1,
187.AND..AND.
IF (ICC/=2ISRATE==0FCUT/=ZERO) ISRATE=1
188.AND.
IF (ISRATE > 0 FCUT == ZERO) FCUT = INFINITY
189 IF(CN==ZERO) CN = ONE
190 IF(FMAX==ZERO) FMAX = INFINITY
191 IF(WPLAMX==ZERO)WPLAMX = INFINITY
192 IF (WPLAREF == ZERO) WPLAREF = ONE
193 WPLAMX = WPLAMX / WPLAREF
194 IF(ALPHA==ZERO)ALPHA = ONE
195 IF(CC==ZERO) EPS0 = ONE
196 IF(ICC==ZERO) ICC = 1
198.AND..AND..AND.
IF(S1==ZEROS2==ZEROS12==ZERO
199.AND.
. C11==ZEROC22==ZERO) IFLAG = 1
201 IF(S1==ZERO) S1 = INFINITY
202 IF(S2==ZERO) S2 = INFINITY
203 IF(S12==ZERO) S12 = INFINITY
204 IF(C11==ZERO) C11= INFINITY
205 IF(C22==ZERO) C22= INFINITY
207 IF(TMAX==ZERO)WRITE(*,*)'stop error in tmax input
'
212 CALL ANCMSG(MSGID=307,
220 CALL ANCMSG(MSGID=213,
229 WRITE(IOUT, 900) TRIM(TITR),MAT_ID,15
232 WRITE(IOUT,'(5x,a,//)
')'confidential data
'
234 WRITE(IOUT, 950) RHO0
235 WRITE(IOUT,1100)E11,E22,N12
236 WRITE(IOUT,1300)G12,G23,G31
238 WRITE(IOUT,1510)CB,CN,FMAX,WPLAMX,WPLAREF,IOFF
239 WRITE(IOUT,1550)SIGYT1,SIGYT2,SIGYC1,SIGYC2,ALPHA
240 WRITE(IOUT,1560)SIGYT12,SIGYC12
241 WRITE(IOUT,1610)CC,EPS0,ICC
242 WRITE(IOUT,1611) ISRATE,FCUT
243 WRITE(IOUT,1600)BETA, TMAX
244 WRITE(IOUT,2700) S1,S2,S12,C11,C22
247 PM(20)= MAX(E11,E22)/DETC
264 PM(22)= THIRD*(G12+G23+G31)
266 C1 = MAX(E11,E22)/DETC
267 SSP = SQRT(MAX(C1,G12,G23,G31)/MAX(PM(1),EM20))
270 PM(52)=ONEP414*PM(17)*PM(1)*SSP
278 CALL ANCMSG(MSGID=538,
286 CALL ANCMSG(MSGID=538,
294 CALL ANCMSG(MSGID=538,
302 CALL ANCMSG(MSGID=538,
309 IF (SIGYT12<=0.) THEN
310 CALL ANCMSG(MSGID=538,
317 IF (SIGYC12<=0.) THEN
318 CALL ANCMSG(MSGID=538,
326.AND.
IF((SIGYC1>0.)(SIGYC2>0.))THEN
327 F1 = ONE/SIGYT1-ONE/SIGYC1
328 F2 = ONE/SIGYT2-ONE/SIGYC2
329 F11 = ONE/(SIGYT1*SIGYC1)
330 F22 = ONE/(SIGYT2*SIGYC2)
331 F33 = ONE/(SIGYT12*SIGYC12)
332 F12 = -ALPHA/(TWO*SQRT(SIGYT1*SIGYC1*SIGYT2*SIGYC2))
334 FT1=F11*F22-FOUR*F12**2
336 WRITE(IOUT,1650) F1,F2,F11,F22,F33,F12
363 CALL ANCMSG(MSGID=298,
387 MTAG%L_PLA = 1 ! NB10
392 CALL INIT_MAT_KEYWORD(MATPARAM,"ORTHOTROPIC")
394 ! Properties compatibility
395 CALL INIT_MAT_KEYWORD(MATPARAM,"SHELL_ORTHOTROPIC")
398 CALL INIT_MAT_KEYWORD(MATPARAM,"ELASTO_PLASTIC")
399 CALL INIT_MAT_KEYWORD(MATPARAM,"COMPRESSIBLE")
404 & 5X,'material number. . . . . . . . . . . . . . .=
',I10/,
405 & 5X,'material law . . . . . . . . . . . . . . . .=
',I10/)
407 & 5X,'initial density . . . . . . . . . . . . .=
',1PG20.13/)
409 & 5X,40H ORTHOTROPIC MATERIAL FOR SHELLS ,/,
410 & 5X,40H ------------------------------- ,//)
412 & 5X,40HYOUNG's modulus e11 . . . . . . . . . .=,e12.4/,
413 & 5x,40hyoung
'S MODULUS E22 . . . . . . . . . .=,E12.4/,
414 & 5X,40HPOISSON's ratio n12 . . . . . . . . . .=,e12.4/)
416 & 5x,40hshear modulus g12 . . . . . . . . . .=,e12.4/,
417 & 5x,40hshear modulus g23 . . . . . . . . . .=,e12.4/,
418 & 5x,40hshear modulus g31 . . . . . . . . . .=,e12.4/)
421 & 5x,
'COMPOSITE HARDENING PARAMETER (B). . .=',1pg20.13/,
422 & 5x,
'COMPOSITE HARDENING PARAMETER (N). . .=',1pg20.13/,
423 & 5x,
'COMPOSITE MAXIMUM YIELD FUNCTION FMAX .=',1pg20.13/,
424 & 5x,
'COMPOSITE MAXIMUM PLASTIC WORK WPLAMX .=',1pg20.13/,
425 & 5x,
'REFERENCE PLASTIC WORK WPLAREF. . . . .=',1pg20.13/,
426 & 5x,
'TOTAL ELEMENT FAILURE CRITERIA IOFF =',i10/,
427 & 5x,
' IOFF=0: SHELL DELETE IF WPLA >= WPLAMX FOR 1 LAYER'/,
428 & 5x,
' IOFF=1: SHELL DELETE IF WPLA >= WPLAMX FOR ALL LAYERS'/,
429 & 5x,
' IOFF=2: SHELL DELETE IF FOR EACH LAYER :'/,
430 & 5x,
' WPLA >= WPLAMX OR TENSILE FAILURE DIR 1'/,
431 & 5x,
' IOFF=3: SHELL DELETE IF FOR EACH LAYER :'/,
432 & 5x,
' WPLA >= WPLAMX OR TENSILE FAILURE DIR 2'/,
433 & 5x,
' IOFF=4: SHELL DELETE IF FOR EACH LAYER :'/,
434 & 5x,
' WPLA >= WPLAMX OR TENSILE FAILURE DIR 1 AND 2'/,
435 & 5x,
' IOFF=5: SHELL DELETE IF FOR ALL LAYERS :'/,
436 & 5x,
' WPLA >= WPLAMX OR TENSILE FAILURE DIR 1'/,
438 & 5x,
' WPLA >= WPLAMX OR TENSILE FAILURE DIR 2'/,
439 & 5x,
' IOFF=6: SHELL DELETE IF FOR EACH LAYER :'/,
440 & 5x,
' WPLA >= WPLAMX OR TENSILE FAILURE DIR 1 OR 2'//)
442 & 5x,
'COMPOSITE YIELD IN TENSION DIR-1 . . . . . .=',1pg20.13/,
443 & 5x,
'COMPOSITE YIELD IN TENSION DIR-2 . . . . . .=',1pg20.13/,
444 & 5x,
'COMPOSITE YIELD IN COMPRESSION DIR-1 . . . .=',1pg20.13/,
445 & 5x,
'COMPOSITE YIELD IN COMPRESSION DIR-2 . . . .=',1pg20.13/,
446 & 5x,
'F12 REDUCTION FACTOR . . . . . . . . . . . .=',1pg20.13//)
448 & 5x,
'COMPOSITE YIELD IN SHEAR (+12) . . . .=',1pg20.13/,
449 & 5x,
'COMPOSITE YIELD IN SHEAR (-12) . . . .=',1pg20.13//)
451 & 5x,
'SHEAR SCALING FACTOR . . . . . . . . . . .=',1pg20.13/,
452 & 5x,
'TIME OF RELAXATION. . . . . . . . . . . . .=',1pg20.13/)
454 & 5x,
' YIELD FUNCTION CONSTANTS '/,
455 & 5x,
' ------------------------ '//,
456 & 5x,
'F1 , F2 . . . . . . . . . . . . . . . .=',2e12.4/,
457 & 5x,
'F11, F22. . . . . . . . . . . . . . . .=',2e12.4/,
458 & 5x,
'F33 . . . . . . . . . . . . . . . . . .=', e12.4/,
459 & 5x,
'F12 . . . . . . . . . . . . . . . . . .=', e12.4//)
461 & 5x,
'STRAIN RATE COEFFICIENT CC. . . . . . .=',1pg20.13/,
462 & 5x,
'REFERENCE STRAIN RATE . . . . . . . . .=',1pg20.13/,
463 & 5x,
'FLAG FOR STRAIN RATE ON F-MAX Wp-MAX. .=',i10//)
465 & 5x,
'SMOOTH STRAIN RATE OPTION . . . . . . .=',i10/,
466 & 5x,
'STRAIN RATE CUTTING FREQUENCY . . . . .=',1pg20.13/)
468 & 5x,
'LONGITUDINAL TENSILE STRENGTH . . . . . .=',1pg20.13/,
469 & 5x,
'TRANSVERSE TENSION STRENGTH . . . . . .=',1pg20.13/,
470 & 5x,
'SHEAR STRENGTH . . . . . . . . . . . . .=',1pg20.13/,
471 & 5x,
' LONGITUDINAL COMPRESSIVE STRENGTH . . .=',1pg20.13/,
472 & 5x,
' TRANSVERSE COMPRESSIVE STRENGTH . . .=',1pg20.13//)
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_is_encrypted(is_encrypted)
integer, parameter nchartitle