OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_mat24.F File Reference
#include "implicit_f.inc"
#include "scr03_c.inc"
#include "units_c.inc"
#include "param_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine hm_read_mat24 (nuparam, nuvar, nfunc, ipm, pm, mtag, mat_id, titr, unitab, lsubmodel, israte, matparam)

Function/Subroutine Documentation

◆ hm_read_mat24()

subroutine hm_read_mat24 ( integer, intent(inout) nuparam,
integer, intent(inout) nuvar,
integer, intent(inout) nfunc,
integer, dimension(npropmi), intent(inout) ipm,
intent(inout) pm,
type(mlaw_tag_), intent(inout) mtag,
integer, intent(in) mat_id,
character(nchartitle), intent(in) titr,
type (unit_type_), intent(in) unitab,
type(submodel_data), dimension(*), intent(in) lsubmodel,
integer israte,
type(matparam_struct_), intent(inout) matparam )

Definition at line 38 of file hm_read_mat24.F.

42C-----------------------------------------------
43C M o d u l e s
44C-----------------------------------------------
45 USE unitab_mod
46 USE elbuftag_mod
47 USE message_mod
48 USE submodel_mod
49 USE matparam_def_mod
50C-----------------------------------------------
51C ROUTINE DESCRIPTION :
52C ===================
53C READ MAT LAW24 (CONCRETE)
54C-----------------------------------------------
55C DUMMY ARGUMENTS DESCRIPTION:
56C ===================
57C UNITAB UNITS ARRAY
58C ID MATERIAL ID(INTEGER)
59C TITR MATERIAL TITLE
60C LSUBMODEL SUBMODEL STRUCTURE
61C-----------------------------------------------
62C I m p l i c i t T y p e s
63C-----------------------------------------------
64#include "implicit_f.inc"
65C-----------------------------------------------
66C C o m m o n B l o c k s
67C-----------------------------------------------
68#include "scr03_c.inc"
69#include "units_c.inc"
70#include "param_c.inc"
71C-----------------------------------------------
72C D u m m y A r g u m e n t s
73C-----------------------------------------------
74 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
75 INTEGER, INTENT(IN) :: MAT_ID
76 INTEGER, INTENT(INOUT) :: NUPARAM,NUVAR,NFUNC
77 INTEGER, DIMENSION(NPROPMI) ,INTENT(INOUT) :: IPM
78 my_real, DIMENSION(NPROPM) ,INTENT(INOUT) :: pm
79 CHARACTER(nchartitle) ,INTENT(IN) :: TITR
80 TYPE(SUBMODEL_DATA), DIMENSION(*),INTENT(IN) :: LSUBMODEL
81 TYPE(MLAW_TAG_), INTENT(INOUT) :: MTAG
82 TYPE(MATPARAM_STRUCT_) ,INTENT(INOUT) :: MATPARAM
83C-----------------------------------------------
84C L o c a l V a r i a b l e s
85C-----------------------------------------------
86 INTEGER :: ICAP,ILAW,ISRATE
87 my_real :: rho0,rhor,ymc,anuc,fc,ft,fb,f2d,s0,ht,dsup1,epsmax,vky,rt,
88 . rc,hbp,ali,alf,vmax,rok,ro0,hv0,yms,y0s,ets,arm1,arm2,arm3,
89 . etc,bulk,expo,f2d0,aa,cc,bc,bt,ac,eps0,hvfac
90 CHARACTER*64 :: message
91 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
92C=======================================================================
93 is_encrypted = .false.
94 is_available = .false.
95 ilaw = 24
96c
97 eps0 = zero ! not yet supported in cfg
98 hvfac = zero ! not yet supported in cfg
99 israte = 0 ! strain rate will be calculated for output even if not used
100C--------------------------------------------------
101C check crypting
102C--------------------------------------------------
103c
104 CALL hm_option_is_encrypted(is_encrypted)
105c
106c--------------------------------------------------
107c Read DATA
108c--------------------------------------------------
109 CALL hm_get_floatv('MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
110 CALL hm_get_floatv('refer_rho' ,RHOR ,IS_AVAILABLE, LSUBMODEL, UNITAB)
111c
112 CALL HM_GET_FLOATV('mat_e' ,YMC ,IS_AVAILABLE, LSUBMODEL, UNITAB)
113 CALL HM_GET_FLOATV('mat_nu' ,ANUC ,IS_AVAILABLE, LSUBMODEL, UNITAB)
114 CALL HM_GET_INTV ('iflag' ,ICAP ,IS_AVAILABLE, LSUBMODEL)
115c
116 CALL HM_GET_FLOATV('mat_sigy' ,FC ,IS_AVAILABLE, LSUBMODEL, UNITAB)
117 CALL HM_GET_FLOATV('mat_ftfc' ,FT ,IS_AVAILABLE, LSUBMODEL, UNITAB)
118 CALL HM_GET_FLOATV('mat_fbfc' ,FB ,IS_AVAILABLE, LSUBMODEL, UNITAB)
119 CALL HM_GET_FLOATV('mat_f2fc' ,F2D ,IS_AVAILABLE, LSUBMODEL, UNITAB)
120 CALL HM_GET_FLOATV('mat_sofc' ,S0 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
121c
122 CALL HM_GET_FLOATV('mat_etan' ,HT ,IS_AVAILABLE, LSUBMODEL, UNITAB)
123 CALL HM_GET_FLOATV('mat_damage' ,DSUP1 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
124 CALL HM_GET_FLOATV('mat_eps' ,EPSMAX ,IS_AVAILABLE, LSUBMODEL, UNITAB)
125c
126 CALL HM_GET_FLOATV('mat_beta' ,VKY ,IS_AVAILABLE, LSUBMODEL, UNITAB)
127 CALL HM_GET_FLOATV('mat_ppres' ,RT ,IS_AVAILABLE, LSUBMODEL, UNITAB)
128 CALL HM_GET_FLOATV('mat_ypres' ,RC ,IS_AVAILABLE, LSUBMODEL, UNITAB)
129 CALL HM_GET_FLOATV('mat_bpmod' ,HBP ,IS_AVAILABLE, LSUBMODEL, UNITAB)
130 CALL HM_GET_FLOATV('mat_etc' ,ETC ,IS_AVAILABLE, LSUBMODEL, UNITAB)
131c
132 CALL HM_GET_FLOATV('mat_dil_y' ,ALI ,IS_AVAILABLE, LSUBMODEL, UNITAB)
133 CALL HM_GET_FLOATV('mat_dil_f' ,ALF ,IS_AVAILABLE, LSUBMODEL, UNITAB)
134 CALL HM_GET_FLOATV('mat_compac' ,VMAX ,IS_AVAILABLE, LSUBMODEL, UNITAB)
135c
136 CALL HM_GET_FLOATV('mat_cap_beg' ,ROK ,IS_AVAILABLE, LSUBMODEL, UNITAB)
137 CALL HM_GET_FLOATV('mat_cap_end' ,RO0 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
138 CALL HM_GET_FLOATV('mat_tpmod' ,HV0 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
139 CALL HM_GET_FLOATV('mat_eps0' ,EPS0 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
140 CALL HM_GET_FLOATV('mat_hvfac' ,HVFAC ,IS_AVAILABLE, LSUBMODEL, UNITAB)
141c
142 CALL HM_GET_FLOATV('mat_e2' ,YMS ,IS_AVAILABLE, LSUBMODEL, UNITAB) !young modulus
143 CALL HM_GET_FLOATV('mat_ssig' ,Y0S ,IS_AVAILABLE, LSUBMODEL, UNITAB) !yield strength
144 CALL HM_GET_FLOATV('mat_setan' ,ETS ,IS_AVAILABLE, LSUBMODEL, UNITAB) !tangent modulus
145c
146 CALL HM_GET_FLOATV('mat_pdir1' ,ARM1 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
147 CALL HM_GET_FLOATV('mat_pdir2' ,ARM2 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
148 CALL HM_GET_FLOATV('mat_pdir3' ,ARM3 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
149c--------------------------------------------------
150c DEFAULT VALUES
151c--------------------------------------------------
152 IF (RHOR == ZERO) RHOR = RHO0
153c
154 IF (FT == ZERO) FT = EM01
155 IF (FB == ZERO) FB = SIX_OVER_5
156 IF (S0 == ZERO) S0 = FIVE_OVER_4
157 IF (HT >= ZERO) HT =-YMC
158 IF (DSUP1 == ZERO) DSUP1 = ZEP99999
159 IF (VMAX >= ZERO) VMAX =-ZEP35
160 IF (EPSMAX <= ZERO) EPSMAX= EP20
161c
162 IF (VKY == ZERO) VKY = HALF
163 IF (RC == ZERO) RC =-THIRD*FC
164 IF (HBP == ZERO) THEN
165 IF(ETC /= ZERO )THEN
166 IF(ETC < YMC) THEN
167 HBP = YMC*ETC/(YMC-ETC)
168 ELSE
169 CALL ANCMSG(MSGID=2065,
170 . MSGTYPE=MSGERROR,
171 . ANMODE=ANINFO_BLIND_2,
172 . I1=MAT_ID,
173 . C1=TITR)
174 ENDIF
175 ELSEIF (ETC == ZERO )THEN
176 ETC = (ONE-VKY)*YMC*FC/(TWOEM3*YMC-VKY*FC)
177 IF(ETC < YMC) THEN
178 HBP = YMC*ETC/(YMC-ETC)
179 ELSE
180 CALL ANCMSG(MSGID=2066,
181 . MSGTYPE=MSGERROR,
182 . ANMODE=ANINFO_BLIND_2,
183 . I1=MAT_ID,
184 . C1=TITR)
185 ENDIF
186 ENDIF
187 ENDIF
188 BULK = YMC/THREE/(ONE-TWO*ANUC)
189 IF (ROK == ZERO) ROK = RC
190.AND. IF (ICAP == 0 INVERS < 2017) ICAP = 1
191 IF (ICAP == 2) THEN
192 IF (F2D == ZERO) F2D = SEVEN
193 IF (RO0 == ZERO) RO0 =-TWO*FC
194 IF (HV0 == ZERO) HV0 = HALF*BULK
195 IF (EPS0 == ZERO) EPS0 = ZEP02
196 IF (HVFAC== ZERO) HVFAC= ZEP1
197 EXPO = -ONE/EPS0
198 ELSE
199 IF (F2D == ZERO) F2D = FOUR
200 IF (RO0 == ZERO) RO0 =-FOUR_OVER_5*FC
201 IF (HV0 == ZERO) HV0 = YMC/FIVE
202 EXPO = ONE/HV0/VMAX
203 HVFAC = ZERO
204 ENDIF
205 !IF(ALI == ZERO) ALI = -ONE/FIVE
206 !IF(ALF == ZERO) ALF = -ONE/TEN
207 IF (ALI >= ZERO) THEN
208 IF (ICAP == 1) THEN
209 message='cap requires alphai PARAMETER strictly <0 '
210 ELSE
211 message='alphai reset to default -0.2 cap requires alphai <0'
212 ALI =- ONE/FIVE
213 ENDIF
214 CALL ANCMSG(MSGID=1161,
215 . MSGTYPE=MSGWARNING,
216 . ANMODE=ANINFO,
217 . I1=MAT_ID,
218 . C1=TITR,
219 . C2=message)
220 ENDIF
221c
222.OR. IF (DSUP1 >= ONE DSUP1 < ZERO) THEN
223 CALL ANCMSG(MSGID=605,
224 . MSGTYPE=MSGERROR,
225 . ANMODE=ANINFO_BLIND_2,
226 . I1=MAT_ID,
227 . C1=TITR)
228 END IF
229C-----------------------
230C OTTOSEN SURFACE PARAMETERS
231C-----------------------
232C Failure surface: F = R - RF = 0
233C
234C Ottosen surface defined with :
235C -> rf = 1/AA (-BB+SQRT(BB / B2 -AA(SM-CC))
236C where BB = BB(BC,BT) = 1/2[BC(1-CS3T) + BT(1+CS3T)]
237C
238C AA,BC,BT,CC are deduced from material input :
239C
240 F2D0 = F2D - S0
241 AA = THREE_HALF* ( S0 /(F2D0 -ONE) - FT * FB /(FB-FT))/(F2D0 - FB*FT)
242 CC = FB * FT * ( F2D0 /(FB-FT) - S0 /(F2D0-ONE))/(F2D0 - FB*FT)
243 BC = HALF*SQR3_2 * (CC + THIRD - TWO*THIRD*AA)
244 BT = HALF*SQR3_2 * (CC/FT - THIRD - TWO*THIRD*AA*FT)
245 AC = CC*AA
246 AA = AA/FC
247c-----------------
248 PM(1) = RHOR
249 PM(89) = RHO0
250c
251 PM(20) = YMC
252 PM(21) = ANUC
253 PM(22) = YMC/(TWO*(ONE+ANUC))
254 PM(25) = YMC*ANUC/(ONE+ANUC)/(ONE-TWO*ANUC)
255 PM(24) = PM(25) + TWO*PM(22)
256 PM(26) = MAX(ZERO,DSUP1)
257 PM(27) = VMAX
258 PM(28) = ONE-HT/YMC
259C
260 PM(29) = ROK
261 PM(30) = RO0
262C
263 PM(32) = BULK
264 PM(33) = FC
265 PM(34) = RT
266 PM(35) = RC
267 PM(36) = RT*(TWO*RC-RT)
268 PM(37) = (RC-RT)**2
269 PM(38) = AA
270 PM(39) = BC
271 PM(40) = BT
272 PM(41) = AC
273 PM(42) = FT*FC/YMC
274 PM(43) = HBP
275 PM(44) = ALI
276 PM(45) = ALF
277 PM(46) = VKY
278 PM(47) = EPSMAX
279C
280 PM(48) = HV0
281 PM(49) = EXPO
282C
283 PM(50) = YMS
284 PM(51) = Y0S
285 PM(52) = ETS
286 PM(53) = ARM1
287 PM(54) = ARM2
288 PM(55) = ARM3
289 PM(56) = ONE !
290 PM(57) = ICAP+EM01
291 PM(58) = ONE-HVFAC
292 PM(59) = ZERO !
293 PM(105)= TWO*PM(22)/(BULK+FOUR_OVER_3*PM(22)) ! =(1-2*Nuc)/(1-Nuc)
294c---------------------
295 IPM(252)= 2 ! Formulation for solid element time step computation.
296c---------------------
297 NUPARAM = 0
298 NFUNC = 0
299 NUVAR = 0
300c-----------------
301c---- Definition of internal variables (Elementary storage)
302c-----------------
303 MTAG%G_GAMA = 6
304 MTAG%G_PLA = 1
305 MTAG%L_PLA = 7 ! plastic strain tensor for output
306c
307 MTAG%L_SIGA = 3
308 MTAG%L_EPSA = 3
309 MTAG%L_DAM = 3
310 MTAG%L_ANG = 6
311 MTAG%L_SF = 3
312 MTAG%L_VK = 1 ! K0
313 MTAG%L_STRA = 6
314 MTAG%L_CRAK = 3
315 MTAG%L_DSUM = 1
316 MTAG%L_ROB = 1
317 MTAG%L_SIGC = 6
318 MTAG%L_DGLO = 6
319 MTAG%L_RK = 1 ! K
320 MTAG%L_EPE = 1 ! EPSP VOL
321c
322 ! MATPARAM keywords
323 CALL INIT_MAT_KEYWORD(MATPARAM,"ELASTO_PLASTIC")
324 CALL INIT_MAT_KEYWORD(MATPARAM,"HOOK")
325c
326 ! Properties compatibility
327 CALL INIT_MAT_KEYWORD(MATPARAM,"SOLID_ISOTROPIC")
328 CALL INIT_MAT_KEYWORD(MATPARAM,"SPH")
329c
330c-----------------
331 WRITE(IOUT,1100) TRIM(TITR),MAT_ID,24
332 WRITE(IOUT,1000)
333
334 IF (IS_ENCRYPTED) THEN
335 WRITE(IOUT,'(5x,a,//)')'material law confidential data'
336 ELSE
337 WRITE(IOUT,1200) RHO0
338 IF (ICAP == 2) THEN
339 WRITE(IOUT,1300)
340 WRITE(IOUT,1400) YMC,ANUC,FC,FT,FB,F2D,S0,HT,DSUP1,EPSMAX
341 WRITE(IOUT,1500) VKY,RT,RC,ROK,RO0,ETC,HBP,HV0,EPS0,HVFAC,
342 . ALI,ALF,VMAX,YMS,Y0S,ETS,ARM1,ARM2,ARM3,
343 . AA,BC,BT,CC
344 ELSE
345 WRITE(IOUT,1301)
346 WRITE(IOUT,1400) YMC,ANUC,FC,FT,FB,F2D,S0,HT,DSUP1,EPSMAX
347 WRITE(IOUT,1600) VKY,RT,RC,ROK,RO0,ETC,HBP,HV0,ALI,ALF,VMAX,
348 . YMS,Y0S,ETS,ARM1,ARM2,ARM3,
349 . AA,BC,BT,CC
350 ENDIF
351 ENDIF
352C-----------------
353 RETURN
354C-----------------
355 1000 FORMAT
356 & (5X,' material model : concrete ',/,
357 & 5X,' brittle elastic plastic matrix ',/,
358 & 5X,' elastic plastic reinforcement ',/,
359 & 5X,'------------------------------------------',/)
360 1100 FORMAT(/
361 & 5X,A,/,
362 & 5X,'material number . . . . . . . . . . . . . =',I10/,
363 & 5X,'material law. . . . . . . . . . . . . . . =',I10/)
364 1200 FORMAT(
365 & 5X,'initial density . . . . . . . . . . . . . =',1PG20.13/)
366 1300 FORMAT(
367 & 5X,' new cap formulation ',/)
368 1301 FORMAT(
369 & 5X,' original cap formulation ',/)
370 1400 FORMAT(
371 & 5X,' 1. matrix properties ',/,
372 & 5X,'ymc young modulus . . . . . . . . . . . =',E12.4/,
373 & 5X,'nuc poisson ratio . . . . . . . . . . . =',E12.4/,
374 & 5X,'fc uniaxial compression strength . . . =',E12.4/,
375 & 5X,'ft/fc tensile strength . . . . . . . . . =',E12.4/,
376 & 5X,'fb/fc biaxial strength . . . . . . . . . =',E12.4/,
377 & 5X,'f2/fc confined strength . . . . . . . . . =',E12.4/,
378 & 5X,'s0/fc confining stress. . . . . . . . . . =',E12.4/,
379 & 5X,'ht<0 tensile tangent mudulus . . . . . . =',E12.4/,
380 & 5X,'dsup1 maximum damage . . . . . . . . . . =',E12.4/,
381 & 5X,'depsm total failure crack strain . . . . =',E12.4)
382 1500 FORMAT(
383 & 5X,'ky initial hardening PARAMETER . . . . =',E12.4/,
384 & 5X,'rt failure/plastic transition pres . . =',E12.4/,
385 & 5X,'rc proportional yield. . . . . . . . . =',E12.4/,
386 & 5X,'rok beginning of cape . . . . . . . . . =',E12.4/,
387 & 5X,'ro0 END OF INITIAL CAPE . . . . . . . . =',E12.4/,
388 & 5X,'ETC PLASTIC TANGENT MODULUS . . . . . . =',E12.4/,
389 & 5X,'HBP UNIAXIAL PLASTIC MODULUS . . . . . =',E12.4/,
390 & 5X,'HV0 INITIAL TRIAXIAL PLASTIC MODULUS. . =',E12.4/,
391 & 5X,'EPS0 EPS0 FOR HPV HARDENING . . . . . . =',E12.4/,
392 & 5X,'HVFAC REDUCTION COEFFICIENT FOR HPV . . . =',E12.4/,
393 & 5X,'ALI COMPACTANCY FACTOR AT YIELD . . . =',E12.4/,
394 & 5X,'ALF DILATANCY FACTOR AT FAILURE . . . . =',E12.4/,
395 & 5X,'VMAX MAXIMAL COMPACTION VOLUME (<0). . . =',E12.4/,
396 & 5X,' 2. REINFORCEMENT PROPERTIES ',/,
397 & 5X,'YMS YOUNG MODULUS . . . . . . . . . . . =',E12.4/,
398 & 5X,'Y0S YIELD STRESS . . . . . . . . . . . =',E12.4/,
399 & 5X,'ETS TANGENT MODULUS . . . . . . . . . . =',E12.4/,
400 & 5X,'ARM1 PERCENTAGE OF REINFORCEMENT DIR 1 . =',E12.4/,
401 & 5X,'ARM2 PERCENTAGE OF REINFORCEMENT DIR 2 . =',E12.4/,
402 & 5X,'ARM3 PERCENTAGE OF REINFORCEMENT DIR 3 . =',E12.4/,
403 & 5X,'PARAMETER A FOR OTTOSEN SURFACE. . . . . =',E12.4/,
404 & 5X,'PARAMETER BC FOR OTTOSEN SURFACE. . . . . =',E12.4/,
405 & 5X,'PARAMETER BT FOR OTTOSEN SURFACE. . . . . =',E12.4/,
406 & 5X,'PARAMETER C FOR OTTOSEN SURFACE. . . . . =',E12.4)
407 1600 FORMAT(
408 & 5X,'KY INITIAL HARDENING PARAMETER . . . . =',E12.4/,
409 & 5X,'RT FAILURE/PLASTIC TRANSITION PRES . . =',E12.4/,
410 & 5X,'RC PROPORTIONAL YIELD. . . . . . . . . =',E12.4/,
411 & 5X,'ROK BEGINNING OF CAPE . . . . . . . . . =',E12.4/,
412 & 5X,'RO0 END OF INITIAL CAPE . . . . . . . . =',E12.4/,
413 & 5X,'ETC PLASTIC TANGENT MODULUS . . . . . . =',E12.4/,
414 & 5X,'HBP UNIAXIAL PLASTIC MODULUS . . . . . =',E12.4/,
415 & 5X,'HV0 INITIAL TRIAXIAL PLASTIC MODULUS. . =',E12.4/,
416 & 5X,'ALI DILATANCY FACTOR AT YIELD . . . . . =',E12.4/,
417 & 5X,'ALF DILATANCY FACTOR AT FAILURE . . . . =',E12.4/,
418 & 5X,'VMAX MAXIMAL COMPACTION VOLUME (<0). . . =',E12.4//,
419 & 5X,' 2. REINFORCEMENT PROPERTIES ',/,
420 & 5X,'YMS YOUNG MODULUS . . . . . . . . . . . =',E12.4/,
421 & 5X,'Y0S YIELD STRESS . . . . . . . . . . . =',E12.4/,
422 & 5X,'ETS TANGENT MODULUS . . . . . . . . . . =',E12.4/,
423 & 5X,'ARM1 PERCENTAGE OF REINFORCEMENT DIR 1 . =',E12.4/,
424 & 5X,'ARM2 PERCENTAGE OF REINFORCEMENT DIR 2 . =',E12.4/,
425 & 5X,'ARM3 PERCENTAGE OF REINFORCEMENT DIR 3 . =',E12.4/,
426 & 5X,'PARAMETER A FOR OTTOSEN SURFACE. . . . . =',E12.4/,
427 & 5X,'PARAMETER BC FOR OTTOSEN SURFACE. . . . . =',E12.4/,
428 & 5X,'PARAMETER BT FOR OTTOSEN SURFACE. . . . . =',E12.4/,
429 & 5X,'PARAMETER C FOR OTTOSEN SURFACE. . . . . =',E12.4)
430C-----------------
431 RETURN
#define my_real
Definition cppsort.cpp:32
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_option_is_encrypted(is_encrypted)