OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_mat03.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_mat03 (lsubmodel, mtag, unitab, ipm, pm, mat_id, titr, israte, matparam)

Function/Subroutine Documentation

◆ hm_read_mat03()

subroutine hm_read_mat03 ( 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_mat03.F.

41C-----------------------------------------------
42C M o d u l e s
43C-----------------------------------------------
44 USE elbuftag_mod !MAXEOS
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 LAW03 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 "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 INTEGER, INTENT(INOUT) :: MAT_ID
75 INTEGER, INTENT(INOUT) :: ISRATE
76 INTEGER, DIMENSION(NPROPMI) ,INTENT(INOUT) :: IPM
77 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
78 my_real, DIMENSION(NPROPM) ,INTENT(INOUT) :: pm
79 TYPE(UNIT_TYPE_) ,INTENT(IN) :: UNITAB
80 TYPE(SUBMODEL_DATA), DIMENSION(NSUBMOD),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 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED,IS_EOS, EOS_EMBEDDED
87 INTEGER COUNT, IEOS
89 . young, anu, ca, cb, cn, epsm, sigm, bulk,
90 . pmin, e0, g,
91 .
92 .
93 . c0,c1,c2,c3,c4,c5,psh,rho0,rhor
94C-----------------------------------------------
95C S o u r c e L i n e s
96C-----------------------------------------------
97 count = 0
98 is_eos=.false.
99 ieos=0
100 eos_embedded=.false.
101 bulk=zero
102 is_encrypted = .false.
103 is_available = .false.
104!---
105 CALL hm_option_is_encrypted(is_encrypted)
106
107 CALL hm_get_floatv('MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
108 CALL hm_get_floatv('Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
109
110 CALL hm_get_floatv('MAT_E' ,young ,is_available, lsubmodel, unitab)
111 CALL hm_get_floatv('MAT_NU' ,anu ,is_available, lsubmodel, unitab)
112
113 CALL hm_get_floatv('MAT_SIGY' ,ca ,is_available, lsubmodel, unitab)
114 CALL hm_get_floatv('MAT_BETA' ,cb ,is_available, lsubmodel, unitab)
115 CALL hm_get_floatv('MAT_HARD' ,cn ,is_available, lsubmodel, unitab)
116 CALL hm_get_floatv('MAT_EPS' ,epsm ,is_available, lsubmodel, unitab)
117 CALL hm_get_floatv('MAT_SIG' ,sigm ,is_available, lsubmodel, unitab)
118
119 CALL hm_get_floatv('MAT_PC' ,pmin ,is_available, lsubmodel, unitab)
120
121 CALL hm_get_intv ('Line_count' ,count ,is_available, lsubmodel)
122
123 IF(invers_init>=2018)THEN
124 eos_embedded=.false.
125 ELSEIF(invers_init>=110)THEN
126 IF(count==3)eos_embedded=.true.
127 ELSE
128 eos_embedded=.true.
129 ENDIF
130
131 !----------------------------------------------------
132 !CHECK IF OLD CARD FORMAT 100 IS USED (OBSOLETE)
133 ! MAKES IT COMPATIBLE + WARNING
134 !----------------------------------------------------
135 IF(eos_embedded)THEN ! POLYNOMIAL EOS
136 IF(invers_init>=140) THEN
137 CALL ancmsg(msgid=1072,
138 . msgtype=msgerror,
139 . anmode=aninfo,
140 . i1 = mat_id,
141 . c1 = titr)
142 RETURN
143 ENDIF
144 CALL hm_get_floatv('MAT_C0' ,c0 ,is_available, lsubmodel, unitab)
145 CALL hm_get_floatv('MAT_C1' ,c1 ,is_available, lsubmodel, unitab)
146 CALL hm_get_floatv('MAT_C2' ,c2 ,is_available, lsubmodel, unitab)
147 CALL hm_get_floatv('MAT_C3' ,c3 ,is_available, lsubmodel, unitab)
148 CALL hm_get_floatv('MAT_C4' ,c4 ,is_available, lsubmodel, unitab)
149 CALL hm_get_floatv('MAT_C5' ,c5 ,is_available, lsubmodel, unitab)
150 CALL hm_get_floatv('MAT_E0' ,e0 ,is_available, lsubmodel, unitab)
151 CALL hm_get_floatv('MAT_PSH' ,psh ,is_available, lsubmodel, unitab)
152 ! allocate EoS data structure
153 matparam%IEOS = 1
154 matparam%EOS%NUPARAM = 7
155 matparam%EOS%NIPARAM = 0
156 matparam%EOS%NFUNC = 0
157 matparam%EOS%NTABLE = 0
158 CALL matparam%EOS%CONSTRUCT() !allocations
159 matparam%EOS%UPARAM(1) = c0-psh
160 matparam%EOS%UPARAM(2) = c1
161 matparam%EOS%UPARAM(3) = c2
162 matparam%EOS%UPARAM(4) = c3
163 matparam%EOS%UPARAM(5) = c4
164 matparam%EOS%UPARAM(6) = c5
165 matparam%EOS%UPARAM(7) = zero
166 matparam%EOS%PSH = psh
167 matparam%EOS%E0 = e0
168 bulk = c1
169 pm(23)= e0
170 pm(31)= c0-psh
171 pm(32) = c1 !legacy value
172 !!PM(32)= C1+C4*ABS(E0) ! bulk modulus
173 pm(88)= psh
174 ieos = 1 ! POLYNOMIAL EOS
175 ELSE
176 ieos = 18 ! linear EOS is used by default
177 ENDIF
178!
179 matparam%IEOS = ieos
180 ipm(4) = ieos ! keep this temporarily for output and fluid sections
181
182 IF (pmin==zero) pmin=-ep20
183 IF (rhor==zero) rhor=rho0
184 pm(1) = rhor
185 pm(89)= rho0
186 IF(cn==zero.OR.cn==one) cn = onep0001
187 IF(epsm==zero) epsm = ep20
188 IF(sigm==zero) sigm = ep20
189 g = young/(two*(one +anu))
190 IF(.NOT.eos_embedded)bulk = young/(three*(one - two*anu))
191 IF(.NOT.eos_embedded)e0 = zero
192
193 pm(20)=young
194 pm(21)=anu
195 pm(22)=g
196 pm(23)=e0
197 pm(32)=bulk
198 pm(37)=pmin
199 pm(38)=ca
200 pm(39)=cb
201 pm(40)=cn
202 pm(41)=epsm
203 pm(42)=sigm
204 pm(79)=three100
205 !Formulation for solid elements time step computation.
206 ipm(252)= 2
207 pm(105) = (one -two*anu)/(one - anu) ! TWO*G/(BULK + FOUR_OVER_3*G)
208
209 mtag%G_PLA = 1
210 mtag%L_PLA = 1
211 mtag%G_TEMP = 1
212 mtag%L_TEMP = 1
213
214 CALL init_mat_keyword(matparam,"ELASTO_PLASTIC")
215 CALL init_mat_keyword(matparam,"INCREMENTAL")
216 CALL init_mat_keyword(matparam,"LARGE_STRAIN")
217 ! Material compatibility with /EOS
218 CALL init_mat_keyword(matparam,"EOS")
219
220 ! EOS/Thermo keyword
221 CALL init_mat_keyword(matparam,"HYDRO_EOS")
222
223 ! properties compatibility
224 CALL init_mat_keyword(matparam,"SOLID_ISOTROPIC")
225 CALL init_mat_keyword(matparam,"SPH")
226
227 WRITE(iout,2001) titr,mat_id,3
228 WRITE(iout,1000)
229
230 IF(is_encrypted)THEN
231 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
232 ELSE
233 WRITE(iout,2002)rho0,rhor
234 WRITE(iout,1300)young,anu,g,bulk
235 WRITE(iout,1400)ca,cb,cn,epsm,sigm
236 WRITE(iout,1500)pmin
237 ENDIF
238 !--------------------------------------------------!
239 ! OLD FORMAT 100 (OBSOLETE) !
240 !--------------------------------------------------!
241 IF(eos_embedded)THEN !
242 WRITE(iout,2000) !
243 IF(is_encrypted)THEN !
244 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA' !
245 ELSE !
246 WRITE(iout,2500)c0,c1,c2,c3,c4,c5,e0,pm(1),psh !
247 ENDIF !
248 ENDIF !
249 !--------------------------------------------------!
250C-----------
251 RETURN
252 1000 FORMAT(
253 & 5x,' ELASTIC PLASTIC HYDRODYNAMIC ',/,
254 & 5x,' ---------------------------- ',//)
255 1300 FORMAT(
256 & 5x,'YOUNG',1h','s modulus . . . . . . . . . . . .=',1PG20.13/,
257 & 5X,'poisson',1H','S RATIO . . . . . . . . . . . .=',1pg20.13/,
258 & 5x,'SHEAR MODULUS . . . . . . . . . . . . . .=',1pg20.13/,
259 & 5x,'BULK MODULUS . . . . . . . . . . . . . .=',1pg20.13//)
260 1400 FORMAT(
261 & 5x,'YIELD COEFFICIENT CA. . . . . . . . . .=',1pg20.13/,
262 & 5x,'YIELD COEFFICIENT CB. . . . . . . . . .=',1pg20.13/,
263 & 5x,'YIELD COEFFICIENT CN. . . . . . . . . .=',1pg20.13/,
264 & 5x,'EPS-MAX . . . . . . . . . . . . . . . .=',1pg20.13/,
265 & 5x,'SIG-MAX . . . . . . . . . . . . . . . .=',1pg20.13//)
266 1500 FORMAT(
267 & 5x,'PRESSURE CUTOFF . . . . . . . . . . . .=',1pg20.13//)
268 2000 FORMAT(
269 & 5x,' POLYNOMIAL EOS ',/,
270 & 5x,' -------------- ',/,
271 & 5x,' INPUT 100 IS OBSOLETE ',/,
272 & 5x,' IT CAN BE ERASED BY /EOS CARD ',/)
273 2500 FORMAT(
274 & 5x,'c0. . . . . . . . . . . . . . . . . . . .=',1PG20.13/,
275 & 5X,'c1. . . . . . . . . . . . . . . . . . . .=',1PG20.13/,
276 & 5X,'c2. . . . . . . . . . . . . . . . . . . .=',1PG20.13/,
277 & 5X,'c3. . . . . . . . . . . . . . . . . . . .=',1PG20.13/,
278 & 5X,'c4. . . . . . . . . . . . . . . . . . . .=',1PG20.13/,
279 & 5X,'c5. . . . . . . . . . . . . . . . . . . .=',1PG20.13/,
280 & 5X,'initial internal energy per unit volume .=',1PG20.13/,
281 & 5X,'reference density . . . . . . . . . . . .=',1PG20.13/,
282 & 5X,'pressure shift. . . . . . . . . . . . . .=',1PG20.13//)
283 2001 FORMAT(/
284 & 5X,A,/,
285 & 5X,' material number . . . . . . . . . . . .=',I10/,
286 & 5X,' material law. . . . . . . . . . . . . .=',I10/)
287 2002 FORMAT(
288 & 5X,' initial density . . . . . . . . . . . .=',1PG20.13/,
289 & 5X,' reference density . . . . . . . . . . .=',1PG20.13/)
290
291 RETURN
#define my_real
Definition cppsort.cpp:32
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)
subroutine init_mat_keyword(matparam, keyword)
integer, parameter nchartitle
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)
Definition message.F:895