OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_mat41.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23!||====================================================================
24!|| hm_read_mat41 ../starter/source/materials/mat/mat041/hm_read_mat41.F
25!||--- called by ------------------------------------------------------
26!|| hm_read_mat ../starter/source/materials/mat/hm_read_mat.F90
27!||--- calls -----------------------------------------------------
28!|| hm_get_floatv ../starter/source/devtools/hm_reader/hm_get_floatv.F
29!|| hm_get_intv ../starter/source/devtools/hm_reader/hm_get_intv.F
30!|| hm_option_is_encrypted ../starter/source/devtools/hm_reader/hm_option_is_encrypted.F
31!|| init_mat_keyword ../starter/source/materials/mat/init_mat_keyword.F
32!||--- uses -----------------------------------------------------
33!|| elbuftag_mod ../starter/share/modules1/elbuftag_mod.F
34!|| submodel_mod ../starter/share/modules1/submodel_mod.F
35!||====================================================================
36 SUBROUTINE hm_read_mat41(UPARAM ,MAXUPARAM ,NUPARAM ,
37 . NUVAR ,IFUNC ,MAXFUNC ,NFUNC ,STIFINT,
38 . ID ,TITR ,UNITAB ,LSUBMODEL ,PM ,
39 . MATPARAM ,MTAG)
40C-----------------------------------------------
41C D e s c r i p t i o n
42C-----------------------------------------------
43C This subroutine read the user material parameters.
44C The material cards that are common for all materials
45C (card 1 to 7 in version 2.2) have previously been read.
46C The NUPARAM material datas have to bee stored in UPARAM array.
47C If some standard radioss functions (time function or
48C x,y function) are needed, this NFUNC function numbers have to
49C bee stored in IFUNC array.
50C----------+---------+---+---+--------------------------------------------
51C VAR | SIZE |TYP| RW| DEFINITION
52C----------+---------+---+---+--------------------------------------------
53C IIN | 1 | I | R | INPUT FILE UNIT (D00 file)
54C IOUT | 1 | I | R | OUTPUT FILE UNIT (L00 file)
55C UPARAM | NUPARAM | F | W | USER MATERIAL PARAMETER ARRAY
56CMAXNUPARAM| 1 | I | R | MAXIMUM SIZE OF UPARAM
57C NUPARAM | 1 | I | W | SIZE OF UPARAM =< MAXNUPARAM
58C NUVAR | 1 | I | W | NUMBER OF USER ELEMENT VARIABLES
59C----------+---------+---+---+--------------------------------------------
60C IFUNC | NFUNC | I | W | FUNCTION NUMBER ARRAY
61C MAXNFUNC | 1 | I | R | MAXIMUM SIZE OF IFUNC
62C NFUNC | 1 | I | W | SIZE OF IFUNC =< MAXFUNC
63C----------+---------+---+---+--------------------------------------------
64C STIFINT | 1 | F | W | STIFNESS MODULUS FOR INTERFACE
65C----------+---------+---+---+--------------------------------------------
66C
67C ________________________________
68C IREAC FLAG
69C
70C *** IREAC = 1 ***
71C ORIGINAL 2-TERM-MODEL --> dF/dT = IGNITION TERM + GROWTH TERM
72C IGNITION TERM : ratei = I * (1.-F)**b * (etar-1.)**x , if P>0
73C GROWTH TERM : rateg = G1 * (1.-F)**b * F**d * pres**y , if P>0
74C
75C *** IREAC = 2 ***
76C EXTENDED 3-TERM-MODEL --> dF/dT = IGNITION TERM + GROWTH TERM 1 + GROWTH TERM 2
77C IGNITION TERM : ratei = I * (1.-F+tol)**b * abs(etar-1.-ccrit)**x , if 0<F<Figmax & P>0 & compression threshold (etar-1>=ccrit)
78C GROWTH TERM 1 : rateg1 = G1 * (1.-F+tol)**c * (F+tol)**d * pres**y , if 0<F<FG1max & P>0
79C GROWTH TERM 2 : rateg2 = G2 * (1.-F+tol)**e * (F+tol)**g * pres**z , if FG2min<F<1 & P>0
80C
81C-----------------------------------------------
82C M o d u l e s
83C-----------------------------------------------
84 USE unitab_mod
85 USE submodel_mod
86 USE matparam_def_mod
87 USE elbuftag_mod
89C-----------------------------------------------
90C I m p l i c i t T y p e s
91C-----------------------------------------------
92#include "implicit_f.inc"
93C-----------------------------------------------
94C C o m m o n B l o c k s
95C-----------------------------------------------
96#include "param_c.inc"
97#include "units_c.inc"
98C-----------------------------------------------
99C D u m m y A r g u m e n t s
100C-----------------------------------------------
101 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
102 INTEGER,INTENT(IN) :: MAXUPARAM,MAXFUNC,IFUNC(MAXFUNC)
103 INTEGER,INTENT(INOUT) :: NUPARAM,NFUNC,NUVAR
104 my_real,INTENT(INOUT) :: uparam(maxuparam),stifint
105 INTEGER,INTENT(IN) :: ID
106 CHARACTER(LEN=NCHARTITLE),INTENT(IN) :: TITR
107 TYPE(submodel_data),INTENT(IN) ::LSUBMODEL(*)
108 my_real, INTENT(INOUT) :: pm(npropm)
109 TYPE(matparam_struct_) ,INTENT(INOUT) :: MATPARAM
110 TYPE(mlaw_tag_),INTENT(INOUT) :: MTAG
111C-----------------------------------------------
112C L o c a l V a r i a b l e s
113C-----------------------------------------------
114 INTEGER ITER,IREAC
115 my_real AR, BR, R1R, R2R, R3R, WR,
116 . AP, BP, R1P, R2P, R3P, WP_COEFF,
117 . cvr, cvp,
118 . enq, epsilon, ftol, i_, b_, x_, g1, d_, y_, cappa, chi, tol,
119 . ccrit, g2, c_, e_, g_, z_, figmax, fg1max, fg2min, shr, t,
120 . rho0, rhor
121 LOGICAL :: IS_ENCRYPTED, IS_AVAILABLE
122C-----------------------------------------------
123C S o u r c e L i n e s
124C-----------------------------------------------
125 is_encrypted = .false.
126 CALL hm_option_is_encrypted(is_encrypted)
127 nuparam = 40
128
129! Automatic Allocation for Elem Buffer : Burn Fraction
130 mtag%G_BFRAC = 1
131 mtag%L_BFRAC = 1
132 mtag%G_TEMP = 1
133 mtag%L_TEMP = 1
134
135! Initial and reference density
136 CALL hm_get_floatv('MAT_RHO', rho0, is_available, lsubmodel, unitab)
137 CALL hm_get_floatv('Refer_Rho', rhor, is_available, lsubmodel, unitab)
138
139 IF (rhor == zero) THEN
140 rhor = rho0
141 ENDIF
142 pm(1) = rhor
143 pm(89) = rho0
144
145 CALL hm_get_intv('Ireac', ireac, is_available, lsubmodel)
146
147 CALL hm_get_floatv('a_r', ar, is_available, lsubmodel, unitab)
148 CALL hm_get_floatv('b_r', br, is_available, lsubmodel, unitab)
149 CALL hm_get_floatv('r_1r', r1r, is_available, lsubmodel, unitab)
150 CALL hm_get_floatv('r_2r', r2r, is_available, lsubmodel, unitab)
151 CALL hm_get_floatv('r_3r', r3r, is_available, lsubmodel, unitab)
152
153 CALL hm_get_floatv('a_p', ap, is_available, lsubmodel, unitab)
154 CALL hm_get_floatv('b_p', bp, is_available, lsubmodel, unitab)
155 CALL hm_get_floatv('r_1p', r1p, is_available, lsubmodel, unitab)
156 CALL hm_get_floatv('r_2p', r2p, is_available, lsubmodel, unitab)
157 CALL hm_get_floatv('r_3p', r3p, is_available, lsubmodel, unitab)
158
159 CALL hm_get_floatv('C_vr', cvr, is_available, lsubmodel, unitab)
160 CALL hm_get_floatv('C_vp', cvp, is_available, lsubmodel, unitab)
161 CALL hm_get_floatv('enq', enq, is_available, lsubmodel, unitab)
162
163 CALL hm_get_intv('NITRS', iter, is_available, lsubmodel)
164 CALL hm_get_floatv('Epsilon_0', epsilon, is_available, lsubmodel, unitab)
165 CALL hm_get_floatv('ftol', ftol, is_available, lsubmodel, unitab)
166
167 CALL hm_get_floatv('I_', i_, is_available, lsubmodel, unitab)
168 CALL hm_get_floatv('b_', b_, is_available, lsubmodel, unitab)
169 CALL hm_get_floatv('x_', x_, is_available, lsubmodel, unitab)
170
171 CALL hm_get_floatv('g1', g1, is_available, lsubmodel, unitab)
172 CALL hm_get_floatv('d_', d_, is_available, lsubmodel, unitab)
173 CALL hm_get_floatv('y_', y_, is_available, lsubmodel, unitab)
174 CALL hm_get_floatv('c_', c_, is_available, lsubmodel, unitab)
175
176 CALL hm_get_floatv('Kn', cappa, is_available, lsubmodel, unitab)
177 CALL hm_get_floatv('chi', chi, is_available, lsubmodel, unitab)
178 CALL hm_get_floatv('MAT_Tol', tol, is_available, lsubmodel, unitab)
179
180 CALL hm_get_floatv('g2', g2, is_available, lsubmodel, unitab)
181 CALL hm_get_floatv('e_', e_, is_available, lsubmodel, unitab)
182 CALL hm_get_floatv('g_', g_, is_available, lsubmodel, unitab)
183 CALL hm_get_floatv('z_', z_, is_available, lsubmodel, unitab)
184
185 CALL hm_get_floatv('ccrit', ccrit, is_available, lsubmodel, unitab)
186 CALL hm_get_floatv('figmax', figmax, is_available, lsubmodel, unitab)
187 CALL hm_get_floatv('fg1max', fg1max, is_available, lsubmodel, unitab)
188 CALL hm_get_floatv('fg2min', fg2min, is_available, lsubmodel, unitab)
189
190 CALL hm_get_floatv('MAT_G0', shr, is_available, lsubmodel, unitab)
191 CALL hm_get_floatv('T_Initial', t, is_available, lsubmodel, unitab)
192
193
194 !------------------------!
195 ! DEFAULTS !
196 !------------------------!
197 !IREAC=1 : ORIGINAL 2 TERM MODEL (ignition + growth)
198 !IREAC=2 : EXTENDED MODEL (3 TERM : ignition, growth1, growth2)
199 IF(ireac/=1 .AND. ireac /=2)ireac=1
200 wr = r3r/cvr !SI : both units are J/m3/K (=Pa/K) ; WR is dimensionless (JWL EoS param)
201 wp_coeff = r3p/cvp !SI : both units are J/m3/K (=Pa/K) ; WR is dimensionless (JWL EoS param)
202 IF (epsilon==zero) epsilon = em3
203 IF (iter==0) iter = 80
204 IF (ftol==zero) ftol = em5
205 IF (cappa==zero) cappa = eighty19
206 IF (chi==zero) chi = eighty19
207 nfunc = 0
208 nuvar = 8
209 stifint = shr
210
211 !------------------------!
212 ! STORAGE !
213 !------------------------!
214 uparam(1) = ireac
215 uparam(2) = ar
216 uparam(3) = br
217 uparam(4) = r1r
218 uparam(5) = r2r
219 uparam(6) = r3r
220 uparam(7) = wr
221 uparam(8) = ap
222 uparam(9) = bp
223 uparam(10) = r1p
224 uparam(11) = r2p
225 uparam(12) = r3p
226 uparam(13) = wp_coeff
227 uparam(14) = cvr
228 uparam(15) = cvp
229 uparam(16) = enq
230 uparam(17) = epsilon
231 uparam(18) = iter
232 uparam(19) = ftol
233 uparam(20) = i_
234 uparam(21) = b_
235 uparam(22) = x_
236 uparam(23) = g1
237 uparam(24) = d_
238 uparam(25) = y_
239 uparam(31) = c_
240 uparam(26) = cappa
241 uparam(27) = chi
242 uparam(28) = tol
243 uparam(32) = e_
244 uparam(33) = g_
245 uparam(34) = z_
246 uparam(30) = g2
247 uparam(29) = ccrit
248 uparam(35) = figmax
249 uparam(36) = fg1max
250 uparam(37) = fg2min
251 uparam(38) = shr
252 uparam(39) = t
253 uparam(40) = zero
254c-----------------
255 CALL init_mat_keyword(matparam,"COMPRESSIBLE")
256
257 ! Material compatibility with /EOS option
258 CALL init_mat_keyword(matparam,"EOS")
259
260 ! EOS/Thermo keyword for pressure treatment in elements
261 CALL init_mat_keyword(matparam,"HYDRO_EOS")
262
263 ! Properties compatibility
264 CALL init_mat_keyword(matparam,"SOLID_ISOTROPIC")
265 CALL init_mat_keyword(matparam,"SPH")
266c-----------------
267 !------------------------!
268 ! LISTING OUTPUT !
269 !------------------------!
270 IF(is_encrypted)THEN
271 WRITE(iout,7000)
272 ELSE
273 WRITE(iout,1000)uparam(1), uparam(2), uparam(3),
274 . uparam(4), uparam(5), uparam(6), uparam(7),
275 . uparam(8), uparam(9), uparam(10), uparam(11),
276 . uparam(12), uparam(13), uparam(14), uparam(15),
277 . uparam(16), uparam(17), uparam(18), uparam(19),
278 . uparam(20), uparam(21), uparam(22), uparam(23),
279 . uparam(24), uparam(25), uparam(26), uparam(27),
280 . uparam(28), uparam(29), uparam(31), uparam(30),
281 . uparam(32), uparam(33), uparam(34), uparam(35),
282 . uparam(36), uparam(37), uparam(38), uparam(39)
283 ENDIF
284
285 7000 FORMAT(
286 & 5x,' LEE TARVER REACTIVE EXPLOSIVE ',/,
287 & 5x,' ----------------------------- ',/,
288 & 5x, 'CONFIDENTIAL DATA'//)
289 1000 FORMAT(
290 & 5x,' LEE TARVER REACTIVE EXPLOSIVE ',/,
291 & 5x,' ----------------------------- ',/,
292 & 5x,'IREAC FLAG. . . . . . . . . . . . . . . =',1pg20.13/,
293 & 5x, ' 1:ORIGINAL 2-TERM-MODEL (1980) ',/,
294 & 5x, ' 2:EXTENDED 3-TERM-MODEL (1985) ',/,
295 & 5x,' REACTIVES JWL EQUATION OF STATES : ',/,
296 & 5x,'AR COEFFICIENT. . . . . . . . . . . . . =',1pg20.13/,
297 & 5x,'BR COEFFICIENT. . . . . . . . . . . . . =',1pg20.13/,
298 & 5x,'R1R COEFFICIENT . . . . . . . . . . . . =',1pg20.13/,
299 & 5x,'R2R COEFFICIENT . . . . . . . . . . . . =',1pg20.13/,
300 & 5x,'R3R COEFFICIENT . . . . . . . . . . . . =',1pg20.13/,
301 & 5x,'WR COEFFICIENT. . . . . . . . . . . . . =',1pg20.13/,
302 & 5x,' PRODUCTS JWL EQUATION OF STATES : ',/,
303 & 5x,'AP COEFFICIENT. . . . . . . . . . . . . =',1pg20.13/,
304 & 5x,'BP COEFFICIENT. . . . . . . . . . . . . =',1pg20.13/,
305 & 5x,'R1P COEFFICIENT . . . . . . . . . . . . =',1pg20.13/,
306 & 5x,'R2P COEFFICIENT . . . . . . . . . . . . =',1pg20.13/,
307 & 5x,'R3P COEFFICIENT . . . . . . . . . . . . =',1pg20.13/,
308 & 5x,'WP COEFFICIENT. . . . . . . . . . . . . =',1pg20.13/,
309 & /,
310 & 5x,'CVR REACTIVE SPECIFIC HEAT. . . . . . . =',1pg20.13/,
311 & 5x,'CVP PRODUCTS SPECIFIC HEAT. . . . . . . =',1pg20.13/,
312 & 5x,'ENQ REACTION ENERGY . . . . . . . . . . =',1pg20.13/,
313 & /,
314 & 5x,'EPSILON . . . . . . . . . . . . . . . . =',1pg20.13/,
315 & 5x,'MAXIMUM NUMBER OF ITERATIONS. . . . . . =',1pg20.13/,
316 & 5x,'FTOL . . . . . . . . . . . . . . . . . =',1pg20.13/,
317 & 5x,' KINETICAL PARAMETERS : ',/,
318 & 5x,' IGNITION TERM : ',/,
319 & 5x,'I COEFFICIENT . . . . . . . . . . . . . =',1pg20.13/,
320 & 5x,'b COEFFICIENT . . . . . . . . . . . . . =',1pg20.13/,
321 & 5x,'x COEFFICIENT . . . . . . . . . . . . . =',1pg20.13/,
322 & 5x,' GROWTH TERM 1 : ',/,
323 & 5x,'G1 COEFFICIENT . . . . . . . . . . . . =',1pg20.13/,
324 & 5x,'d COEFFICIENT . . . . . . . . . . . . . =',1pg20.13/,
325 & 5x,'y COEFFICIENT . . . . . . . . . . . . . =',1pg20.13/,
326 & 5x,' NUMERICAL LIMITORS ',/,
327 & 5x,'CAPPA . . . . . . . . . . . . . . . . . =',1pg20.13/,
328 & 5x,'CHI . . . . . . . . . . . . . . . . . . =',1pg20.13/,
329 & 5x,'TOL . . . . . . . . . . . . . . . . . . =',1pg20.13/,
330 & 5x,'a COEFFICIENT . . . . . . . . . . . . . =',1pg20.13/,
331 & 5x,' GROWTH TERM 2 ',/,
332 & 5x,'c COEFFICIENT . . . . . . . . . . . . . =',1pg20.13/,
333 & 5x,'G2 COEFFICIENT. . . . . . . . . . . . . =',1pg20.13/,
334 & 5x,'e COEFFICIENT . . . . . . . . . . . . . =',1pg20.13/,
335 & 5x,'g COEFFICIENT . . . . . . . . . . . . . =',1pg20.13/,
336 & 5x,'z COEFFICIENT . . . . . . . . . . . . . =',1pg20.13/,
337 & /,
338 & 5x,'Figmax (LIMITER FOR IGNITIONT TERM) . . =',1pg20.13/,
339 & 5x,'FG1max (LIMITER FOR GROWTH TERM 1). . . =',1pg20.13/,
340 & 5x,'FG2min (LIMITER FOR GROWTH TERM 2). . . =',1pg20.13/,
341 & /,
342 & 5x,'SHEAR MODULUS . . . . . . . . . . . . . =',1pg20.13/,
343 & 5x,'INITIAL TEMPERATURE (K) . . . . . . . . =',1pg20.13//)
344
345C-----------------------------------------------
346 RETURN
347 END
#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 hm_read_mat41(uparam, maxuparam, nuparam, nuvar, ifunc, maxfunc, nfunc, stifint, id, titr, unitab, lsubmodel, pm, matparam, mtag)
subroutine init_mat_keyword(matparam, keyword)
integer, parameter nchartitle