OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_mat05.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_mat05 (uparam, maxuparam, nuparam, israte, imatvis, nuvar, ifunc, maxfunc, nfunc, parmat, unitab, mat_id, titr, mtag, lsubmodel, pm, ipm, uid, matparam)

Function/Subroutine Documentation

◆ hm_read_mat05()

subroutine hm_read_mat05 ( dimension(maxuparam), intent(inout) uparam,
integer, intent(inout) maxuparam,
integer, intent(inout) nuparam,
integer, intent(inout) israte,
integer, intent(inout) imatvis,
integer, intent(inout) nuvar,
integer, dimension(maxfunc), intent(inout) ifunc,
integer, intent(inout) maxfunc,
integer, intent(inout) nfunc,
dimension(100), intent(inout) parmat,
type(unit_type_), intent(in) unitab,
integer, intent(in) mat_id,
character(len=nchartitle), intent(in) titr,
type(mlaw_tag_), intent(inout) mtag,
type(submodel_data), dimension(nsubmod), intent(in) lsubmodel,
dimension(npropm), intent(inout) pm,
integer, dimension(npropmi), intent(inout) ipm,
integer, intent(in) uid,
type(matparam_struct_), intent(inout) matparam )

Definition at line 37 of file hm_read_mat05.F.

41C-----------------------------------------------
42C D e s c r i p t i o n
43C-----------------------------------------------
44C READ MAT LAW05 WITH HM READER
45C
46C DUMMY ARGUMENTS DESCRIPTION:
47C ===================
48C
49C NAME DESCRIPTION
50C
51C PM MATERIAL ARRAY(REAL)
52C UNITAB UNITS ARRAY
53C ID MATERIAL ID(INTEGER)
54C TITR MATERIAL TITLE
55C LSUBMODEL SUBMODEL STRUCTURE
56C
57C-----------------------------------------------
58C M o d u l e s
59C-----------------------------------------------
60 USE elbuftag_mod
61 USE message_mod
62 USE submodel_mod
63 USE matparam_def_mod
64 USE unitab_mod
66C-----------------------------------------------
67C I m p l i c i t T y p e s
68C-----------------------------------------------
69#include "implicit_f.inc"
70C-----------------------------------------------
71C C o m m o n B l o c k s
72C-----------------------------------------------
73#include "units_c.inc"
74#include "param_c.inc"
75C-----------------------------------------------
76C D u m m y A r g u m e n t s
77C-----------------------------------------------
78 my_real, INTENT(INOUT) :: pm(npropm),parmat(100),uparam(maxuparam)
79 INTEGER, INTENT(INOUT) :: IPM(NPROPMI),ISRATE,IFUNC(MAXFUNC),NFUNC,MAXFUNC,MAXUPARAM,NUPARAM, NUVAR,IMATVIS
80 INTEGER, INTENT(IN) :: UID
81 TYPE(MLAW_TAG_),INTENT(INOUT) :: MTAG
82 INTEGER,INTENT(IN) :: MAT_ID
83 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
84 TYPE(UNIT_TYPE_), INTENT(IN) :: UNITAB
85 TYPE(SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(NSUBMOD)
86 TYPE(MATPARAM_STRUCT_),INTENT(INOUT) :: MATPARAM
87C-----------------------------------------------
88C L o c a l V a r i a b l e s
89C-----------------------------------------------
91 . a, b, r1, r2, w, d, pcj, e0, c0, c1, vcj,
92 . eadd, tbegin, tend,
93 . psh,reaction_rate,reaction_rate2,a_mil,m_mil,n_mil,alpha_unit,
94 . bid, val(5), bulk
95 INTEGER :: IBID, IBFRAC, QOPT, I_ERROR, IFLAGUNIT, J
96 my_real :: rho0, rhor
97 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
98C-----------------------------------------------
99C S o u r c e L i n e s
100C-----------------------------------------------
101 ipm(4) = 15 ! internal EOS TYPE
102! MATPARAM%IEOS = 15
103 tbegin = zero
104 tend = infinity
105 ibfrac = 0
106 psh = zero
107 c0 = zero
108 eadd = zero
109 reaction_rate = zero
110 reaction_rate2 = zero
111 a_mil = zero
112 m_mil = zero
113 n_mil = zero
114 alpha_unit = zero
115 bid = zero
116 i_error = 0
117 val(1:5) = zero
118 bulk = zero
119
120 is_encrypted = .false.
121 is_available = .false.
122 israte = 0
123 imatvis = 0
124
125 !unit needed for millers extension
126 iflagunit = 0
127 DO j=1,unitab%NUNITS
128 IF (unitab%UNIT_ID(j) == uid) THEN
129 iflagunit = 1
130 EXIT
131 ENDIF
132 ENDDO
133
134 !======== READING INPUT FILE ===========!
135 CALL hm_option_is_encrypted(is_encrypted)
136 !line+1
137 CALL hm_get_floatv('MAT_RHO', rho0, is_available, lsubmodel, unitab)
138 CALL hm_get_floatv('Refer_Rho', rhor, is_available, lsubmodel, unitab)
139 !line-2
140 CALL hm_get_floatv('MAT_A', a, is_available, lsubmodel, unitab)
141 CALL hm_get_floatv('MAT_B', b, is_available, lsubmodel, unitab)
142 CALL hm_get_floatv('MAT_PDIR1', r1, is_available, lsubmodel, unitab)
143 CALL hm_get_floatv('MAT_PDIR2', r2, is_available, lsubmodel, unitab)
144 CALL hm_get_floatv('Omega', w, is_available, lsubmodel, unitab)
145 !line-3
146 CALL hm_get_floatv('MAT_D', d, is_available, lsubmodel, unitab)
147 CALL hm_get_floatv('MAT_PC', pcj, is_available, lsubmodel, unitab)
148 CALL hm_get_floatv('MAT_E0', e0, is_available, lsubmodel, unitab)
149 CALL hm_get_floatv('MAT_E', eadd, is_available, lsubmodel, unitab)
150 CALL hm_get_intv('MAT_IBFRAC', ibfrac, is_available, lsubmodel)
151 CALL hm_get_intv('QOPT', qopt, is_available, lsubmodel)
152
153 IF(qopt < 0 .OR. qopt > 3)THEN
154 qopt = 0
155 ENDIF
156
157 !line-4
158 CALL hm_get_floatv('LAW5_P0', c0, is_available, lsubmodel, unitab)
159 CALL hm_get_floatv('LAW5_PSH', psh, is_available, lsubmodel, unitab)
160 CALL hm_get_floatv('BUNREACTED', bulk, is_available, lsubmodel, unitab)
161
162 !-----AFTERBURNING
163 IF((qopt == 0 .OR. qopt == 1 .OR. qopt == 2) .AND. eadd > 0)THEN
164 !line-4
165 CALL hm_get_floatv('TSTART', tbegin, is_available, lsubmodel, unitab)
166 CALL hm_get_floatv('TSTOP', tend, is_available, lsubmodel, unitab)
167 IF(tend==zero) tend=infinity
168 IF(eadd>zero)THEN
169 IF(tbegin==tend)THEN
170 !Dirac function release : this means instantaneous
171 qopt = 0
172 ENDIF
173 ENDIF
174 ELSEIF(qopt == 3 .AND. eadd > 0)THEN
175 CALL hm_get_floatv('LAW5_A', a_mil, is_available, lsubmodel, unitab)
176 CALL hm_get_floatv('LAW5_M', m_mil, is_available, lsubmodel, unitab)
177 CALL hm_get_floatv('LAW5_N', n_mil, is_available, lsubmodel, unitab)
178 ENDIF
179
180 !========AFTERBURNING REACTION RATE===========!
181 reaction_rate = zero
182 reaction_rate2 = zero
183 SELECT CASE(qopt)
184 CASE(0)
185 !---INSTANTANEOUS
186 reaction_rate = zero
187 reaction_rate2 = zero
188 CASE(1)
189 !---CONSTANT AFTERBURNING RATE
190 reaction_rate = one/(tend-tbegin)
191 reaction_rate2 = zero
192 CASE(2)
193 !---LINEAR AFTERBURNING RATE
194 reaction_rate = two/(tend-tbegin)**2
195 reaction_rate2 = tbegin**2/(tend-tbegin)**2
196 CASE(3)
197 !---MILLER S EXTENSION
198 reaction_rate = zero
199 reaction_rate2 = zero
200 IF(alpha_unit == zero)alpha_unit=one
201 CASE DEFAULT
202 !CLASSICAL MODEL
203 eadd = zero
204 reaction_rate = zero
205 END SELECT
206
207 !========C1: MODULE EQUIVALENT POUR LES RIGIDITES D'INTERFACES
208 IF(bulk>zero)THEN
209 c1 = bulk
210 ELSE
211 c1 = w*(pcj+e0)
212 ENDIF
213
214 !---DEFAULT VALUES
215 IF(rhor == zero)rhor=rho0
216 pm(01) = rhor
217 pm(89) = rho0
218 !========STORAGE
219 pm(23) = e0
220 pm(31) = c0-psh
221 pm(32) = c1
222 pm(33) = a
223 pm(34) = b
224 pm(35) = r1
225 pm(36) = r2
226 pm(37) = -psh
227 pm(45) = w
228 pm(38) = d
229 pm(39) = pcj
230 pm(40) = pm(1)*d**2/pcj
231 pm(41) = ibfrac
232 pm(42) = qopt
233 pm(43) = c0
234 pm(44) = bulk
235 vcj = one-one/pm(40)
236 pm(104) = c0-psh
237 pm(160) = eadd
238 pm(161) = tbegin
239 pm(162) = tend
240 pm(163) = reaction_rate
241 pm(164) = a_mil
242 pm(165) = m_mil
243 pm(166) = n_mil
244 pm(167) = reaction_rate2
245 pm(168) = alpha_unit
246 pm(88) = psh
247 !ssp0
248 pm(27) = d
249
250 !======== BUFFER ALLOCATION SIZES
251 mtag%G_TB = 1
252 mtag%G_TEMP = 1
253 mtag%G_BFRAC = 1
254 mtag%G_ABURN = 1
255 mtag%L_TB = 1
256 mtag%L_TEMP = 1
257 mtag%L_BFRAC = 1
258 mtag%L_ABURN = 1
259
260 !======== MATPARAM KEYWORDS
261 ! EOS/Thermo keyword
262 CALL init_mat_keyword(matparam,"HYDRO_EOS")
263 ! Properties compatibility
264 CALL init_mat_keyword(matparam,"SOLID_ISOTROPIC")
265 CALL init_mat_keyword(matparam,"SPH")
266
267 !======== LISTING OUTPUT
268 WRITE(iout,1001) trim(titr),mat_id,5
269 WRITE(iout,1000)
270 IF(is_encrypted)THEN
271 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
272 ELSE
273 WRITE(iout,1002)rho0,rhor
274 WRITE(iout,1300)a,b,r1,r2,w
275 WRITE(iout,1400)d,pcj,vcj,e0,c0,psh,bulk,ibfrac
276 !AFTERBURNING OPTIONAL MODEL
277 IF(eadd == zero) THEN
278 WRITE(iout,1500)
279 ELSE
280 IF(qopt == 0) THEN
281 WRITE(iout,1504)eadd,tbegin
282 ELSEIF(qopt == 1) THEN
283 WRITE(iout,1501)eadd,tbegin,tend
284 ELSEIF(qopt == 2) THEN
285 WRITE(iout,1502)eadd,tbegin,tend
286 ELSEIF(qopt == 3) THEN
287 WRITE(iout,1503)eadd,a_mil,m_mil,n_mil, alpha_unit
288 ENDIF
289 ENDIF
290 ENDIF
291
292 RETURN
293 1000 FORMAT(
294 & 5x,' J.W.L. EXPLOSIVE ',/,
295 & 5x,' ---------------- ',//)
296 1001 FORMAT(
297 & 5x,a,/,
298 & 5x,'MATERIAL NUMBER . . . . . . . . . . . . =',i10/,
299 & 5x,'MATERIAL LAW. . . . . . . . . . . . . . =',i10/)
300 1002 FORMAT(
301 & 5x,'INITIAL DENSITY . . . . . . . . . . . . =',1pg20.13/,
302 & 5x,'REFERENCE DENSITY . . . . . . . . . . . =',1pg20.13/)
303 1300 FORMAT(
304 & 5x,'A . . . . . . . . . . . . . . . . . . .=',e12.4/,
305 & 5x,'B . . . . . . . . . . . . . . . . . . .=',e12.4/,
306 & 5x,'R1. . . . . . . . . . . . . . . . . . .=',e12.4/,
307 & 5x,'R2. . . . . . . . . . . . . . . . . . .=',e12.4/,
308 & 5x,'W . . . . . . . . . . . . . . . . . . .=',e12.4//)
309 1400 FORMAT(
310 & 5x,'DETONATION VELOCITY . . . . . . . . . .=',e12.4/,
311 & 5x,'CHAPMAN JOUGUET PRESSURE. . . . . . . .=',e12.4/,
312 & 5x,'CHAPMAN JOUGUET VOLUME. . . . . . . . .=',e12.4/,
313 & 5x,'INITIAL ENERGY PER UNIT VOLUME. . . . .=',e12.4/,
314 & 5x,'INITIAL PRESSURE OF UNREACTED EXPLO.. .=',e12.4/,
315 & 5x,'PRESSURE SHIFT. . . . . . . . . . . . .=',e12.4/,
316 & 5x,'UNREACTED EXPLOSIVE BULK MODULUS. . . .=',e12.4/,
317 & 5x,'BURN FRACTION METHOD. . . . . . . . . .=',i12/)
318 1500 FORMAT(
319 & 5x,'NO AFTERBURNING MODELING '//)
320 1501 FORMAT(
321 & 5x,'AFTERBURNING MODEL : CONSTANT REACTION RATE ',/,
322 & 5x,'ADDITIONAL ENERGY PER UNIT VOLUME . . .=',e12.4/,
323 & 5x,'BEGIN TIME. . . . . . . . . . . . . . .=',e12.4/,
324 & 5x,'END TIME. . . . . . . . . . . . . . . .=',e12.4//)
325 1502 FORMAT(
326 & 5x,'AFTERBURNING : LINEAR REACTION RATE ',/,
327 & 5x,'ADDITIONAL ENERGY PER UNIT VOLUME . . .=',e12.4/,
328 & 5x,'BEGIN TIME. . . . . . . . . . . . . . .=',e12.4/,
329 & 5x,'END TIME. . . . . . . . . . . . . . . .=',e12.4//)
330 1503 FORMAT(
331 & 5x,'AFTERBURNING : MILLER S EXTENSION ',/,
332 & 5x,'ADDITIONAL ENERGY PER UNIT VOLUME . . .=',e12.4/,
333 & 5x,'a PARAMETER . . . . . . . . . . . . . .=',E12.4/,
334 & 5X,'m PARAMETER . . . . . . . . . . . . . .=',E12.4/,
335 & 5X,'n PARAMETER . . . . . . . . . . . . . .=',E12.4/,
336 & 5X,'pressure translation factor . . . . . .=',E12.4//)
337 1504 FORMAT(
338 & 5X,'afterburning : instantaneous ',/,
339 & 5X,'additional energy per unit volume . . .=',E12.4/,
340 & 5X,'begin time. . . . . . . . . . . . . . .=',E12.4//)
341 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