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

Go to the source code of this file.

Functions/Subroutines

subroutine hm_read_mat49 (lsubmodel, mtag, unitab, ipm, pm, mat_id, titr, israte, matparam)

Function/Subroutine Documentation

◆ hm_read_mat49()

subroutine hm_read_mat49 ( type(submodel_data), dimension(nsubmod), intent(in) lsubmodel,
type(mlaw_tag_), intent(inout) mtag,
type(unit_type_), intent(in) unitab,
integer, dimension(npropmi), intent(inout) ipm,
intent(inout) pm,
integer, intent(inout) mat_id,
character(len=nchartitle), intent(in) titr,
integer, intent(inout) israte,
type(matparam_struct_), intent(inout) matparam )

Definition at line 38 of file hm_read_mat49.F.

41C-----------------------------------------------
42C M o d u l e s
43C-----------------------------------------------
44 USE elbuftag_mod
45 USE message_mod
46 USE submodel_mod
47 USE matparam_def_mod
48 USE unitab_mod
50C-----------------------------------------------
51C ROUTINE DESCRIPTION :
52C ===================
53C READ MAT LAW49 WITH HM READER
54C-----------------------------------------------
55C DUMMY ARGUMENTS DESCRIPTION:
56C ===================
57C UNITAB UNITS ARRAY
58C MAT_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 "units_c.inc"
69#include "param_c.inc"
70C-----------------------------------------------
71C D u m m y A r g u m e n t s
72C-----------------------------------------------
73 INTEGER, INTENT(INOUT) :: MAT_ID
74 INTEGER, INTENT(INOUT) :: ISRATE
75 INTEGER, DIMENSION(NPROPMI) ,INTENT(INOUT) :: IPM
76 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
77 my_real, DIMENSION(NPROPM) ,INTENT(INOUT) :: pm
78 TYPE(UNIT_TYPE_), INTENT(in) :: UNITAB
79 TYPE(SUBMODEL_DATA), DIMENSION(NSUBMOD),INTENT(IN) :: LSUBMODEL
80 TYPE(MLAW_TAG_), INTENT(INOUT) :: MTAG
81 TYPE(MATPARAM_STRUCT_) ,INTENT(INOUT) :: MATPARAM
82C-----------------------------------------------
83C L o c a l V a r i a b l e s
84C-----------------------------------------------
85 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
86 INTEGER JTUR, I, IEOS,EMPTY_LINE,COUNT
87 INTEGER JTHE, IFLAGR
89 . young,nu,sig0,cb,cn,sigm,epsm,t0,tmelt,pmin,
90 . sph,cb1,cb2,ch,cf,g0,bulk,
91 . fac_l,fac_t,fac_m,fac_c,
92 . bid2 ,bid3 ,bid4 ,bid5 ,
93 . bid2_,bid3_,bid4_,bid5_,
94 . c0,c1,c2,c3,c4,c5,e0,psh,rho0,rhor
95 CHARACTER*32 :: MTL_MSG
96C-----------------------------------------------
97C S o u r c e L i n e s
98C-----------------------------------------------
99 count = 0
100 ieos = 0
101 bulk=zero
102
103 bulk = zero
104 psh = zero
105
106 is_encrypted=.false.
107 is_available=.false.
108
109 mtl_msg = ''
110
111 CALL HM_OPTION_IS_ENCRYPTED(IS_ENCRYPTED)
112
113 CALL HM_GET_FLOATV('mat_rho' ,RHO0 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
114 CALL HM_GET_FLOATV('refer_rho' ,RHOR ,IS_AVAILABLE, LSUBMODEL, UNITAB)
115
116 CALL HM_GET_FLOATV('mat_e0' ,YOUNG ,IS_AVAILABLE, LSUBMODEL, UNITAB)
117 CALL HM_GET_FLOATV('mat_nu' ,NU ,IS_AVAILABLE, LSUBMODEL, UNITAB)
118
119 CALL HM_GET_FLOATV('mat_sigy' ,SIG0 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
120 CALL HM_GET_FLOATV('mat_beta' ,CB ,IS_AVAILABLE, LSUBMODEL, UNITAB)
121 CALL HM_GET_FLOATV('mat_hard' ,CN ,IS_AVAILABLE, LSUBMODEL, UNITAB)
122 CALL HM_GET_FLOATV('mat_eps' ,EPSM ,IS_AVAILABLE, LSUBMODEL, UNITAB)
123 CALL HM_GET_FLOATV('mat_sig' ,SIGM ,IS_AVAILABLE, LSUBMODEL, UNITAB)
124
125 CALL HM_GET_FLOATV('mat_t0' ,T0 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
126 CALL HM_GET_FLOATV('mat_tmelt' ,TMELT ,IS_AVAILABLE, LSUBMODEL, UNITAB)
127 CALL HM_GET_FLOATV('mat_spheat' ,SPH ,IS_AVAILABLE, LSUBMODEL, UNITAB)
128 CALL HM_GET_FLOATV('mat_pc' ,PMIN ,IS_AVAILABLE, LSUBMODEL, UNITAB)
129
130 CALL HM_GET_FLOATV('mat_b1' ,CB1 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
131 CALL HM_GET_FLOATV('mat_b2' ,CB2 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
132 CALL HM_GET_FLOATV('h' ,CH ,IS_AVAILABLE, LSUBMODEL, UNITAB)
133 CALL HM_GET_FLOATV('mat_f' ,CF ,IS_AVAILABLE, LSUBMODEL, UNITAB)
134
135 CALL HM_GET_INTV ('line_count' ,COUNT ,IS_AVAILABLE, LSUBMODEL)
136
137 !Default EoS
138 IEOS = 18 ! Linear EOS is used by default
139 MATPARAM%IEOS = IEOS
140 IPM(4) = IEOS ! keep this temporarily for output and fluid sections
141
142 IF (PMIN==ZERO) PMIN=-EP20
143 IF (RHOR==ZERO) RHOR=RHO0
144 PM(1) = RHOR
145 PM(89)= RHO0
146
147 IF(CF < ZERO) THEN
148 CALL ANCMSG(MSGID=1513,MSGTYPE=MSGERROR,ANMODE=ANINFO,I1 = MAT_ID,C1 = TITR)
149 ENDIF
150
151.OR. IF(NU<ZERONU>=HALF)THEN
152 MTL_MSG = "LAW49 (STEINBERG GUINAN)"
153 CALL ANCMSG(MSGID=1514,MSGTYPE=MSGERROR,ANMODE=ANINFO,I1=MAT_ID,C1=MTL_MSG,C2=TITR)
154 ENDIF
155
156 IF(EPSM==ZERO) EPSM = EP20
157 IF(SIGM==ZERO) SIGM = EP20
158 IF(TMELT==ZERO)TMELT = EP20
159 IF(PMIN==ZERO) PMIN =-EP20
160 IF(T0==ZERO) T0 = THREE100
161 G0 = YOUNG /TWO / (ONE+NU)
162 BULK=YOUNG/(THREE*(ONE - TWO*NU))
163
164 PM(20) = YOUNG
165 PM(21) = NU
166 PM(22) = G0
167 PM(24) = NU * YOUNG / (ONE-NU*NU)
168 PM(32) = BULK
169 PM(37) = PMIN
170 PM(38) = SIG0
171 PM(39) = CB
172 PM(40) = CN
173 PM(41) = EPSM
174 PM(42) = SIGM
175 PM(43) = CB1
176 PM(44) = CB2
177 PM(45) = CH
178 PM(46) = TMELT
179 PM(69) = SPH
180 PM(77) = CF
181 PM(78) = T0
182 PM(79) = T0
183 PM(80) = TMELT
184
185 !Formulation for solid elements time step computation.
186 IPM(252)= 2
187 PM(105) = TWO*G0/(BULK+FOUR_OVER_3*G0) ! =(1-2*Nu)/(1-Nu)
188
189 ! MATPARAM keywords
190 CALL INIT_MAT_KEYWORD(MATPARAM,"INCOMPRESSIBLE")
191
192 ! Material compatibility with /EOS option
193 CALL INIT_MAT_KEYWORD(MATPARAM,"EOS")
194
195 ! EOS/Thermo keyword for pressure treatment in elements
196 CALL INIT_MAT_KEYWORD(MATPARAM,"HYDRO_EOS")
197
198 ! Properties compatibility
199 CALL INIT_MAT_KEYWORD(MATPARAM,"SOLID_ISOTROPIC")
200 CALL INIT_MAT_KEYWORD(MATPARAM,"SPH")
201
202 WRITE(IOUT,1000)
203 IF(IS_ENCRYPTED)THEN
204 WRITE(IOUT,'(5x,a,//)')'confidential data'
205 ELSE
206 WRITE(IOUT,2001) TITR,MAT_ID,49
207 WRITE(IOUT,2002) RHO0,RHOR
208 WRITE(IOUT,1100)YOUNG,SIG0,NU,CB,CN,SIGM,EPSM,T0,TMELT,SPH,PMIN,CB1,CB2,CH,CF
209 ENDIF
210
211 MTAG%G_PLA = 1
212 MTAG%G_TEMP = 1
213
214 MTAG%L_PLA = 1
215 MTAG%L_TEMP = 1
216 MTAG%L_EPSD = 1
217C--------------------------------
218 1000 FORMAT(
219 & 5X,' steinberg-guinan constitutive law ',/,
220 & 5X,' ---------------------------------- ',//)
221 1100 FORMAT(
222 & 5X,'initial young modulus . . . . . . . . .=',1PG20.13/
223 & 5X,'initial yield stress. . . . . . . . . .=',1PG20.13/
224 & 5X,'poisson ratio . . . . . . . . . . . . .=',1PG20.13/
225 & 5X,'hardening coefficient . . . . . . . . .=',1PG20.13/
226 & 5X,'hardening exponent. . . . . . . . . . .=',1PG20.13/
227 & 5X,'maximum stress. . . . . . . . . . . . .=',1PG20.13/
228 & 5X,'maximum strain. . . . . . . . . . . . .=',1PG20.13/
229 & 5X,'initial temperature . . . . . . . . . .=',1PG20.13/
230 & 5X,'melting temperature . . . . . . . . . .=',1PG20.13/
231 & 5X,'specific heat . . . . . . . . . . . . .=',1PG20.13/
232 & 5X,'minimal pressure. . . . . . . . . . . .=',1PG20.13/
233 & 5X,'b1 coefficient. . . . . . . . . . . . .=',1PG20.13/
234 & 5X,'b2 coefficient. . . . . . . . . . . . .=',1PG20.13/
235 & 5X,'h coefficient . . . . . . . . . . . . .=',1PG20.13/
236 & 5X,'f coefficient . . . . . . . . . . . . .=',1PG20.13//)
237C-----------
238 2000 FORMAT(
239 & 5X,' polynomial eos ',/,
240 & 5X,' -------------- ',/,
241 & 5X,' input 100 is obsolete ',/,
242 & 5X,' it can be replaced by /eos card ',/)
243 2001 FORMAT(/
244 & 5X,A,/,
245 & 5X,' material number . . . . . . . . . . . .=',I10/,
246 & 5X,' material law. . . . . . . . . . . . . .=',I10/)
247 2002 FORMAT(
248 & 5X,' initial density . . . . . . . . . . . .=',1PG20.13/,
249 & 5X,' reference density . . . . . . . . . . .=',1PG20.13/)
250 RETURN
#define my_real
Definition cppsort.cpp:32
integer, parameter nchartitle