38 . NUVAR ,IFUNC ,MAXFUNC ,NFUNC , PARMAT ,
39 . UNITAB ,MAT_ID ,TITR ,MTAG , LSUBMODEL,
40 . PM ,IPM ,UID ,MATPARAM )
69#include "implicit_f.inc"
78 my_real,
INTENT(INOUT) :: pm(npropm),parmat
79 INTEGER,
INTENT(INOUT) :: IPM(NPROPMI),ISRATE,IFUNC(MAXFUNC),NFUNC,MAXFUNC,MAXUPARAM,NUPARAM, NUVAR,IMATVIS
80 INTEGER,
INTENT(IN) :: UID
82 INTEGER,
INTENT(IN) :: MAT_ID
83 CHARACTER(LEN=NCHARTITLE) ,
INTENT(IN) :: TITR
86 TYPE(matparam_struct_),
INTENT(INOUT) :: MATPARAM
91 . a, b, r1, r2, w, d, pcj, e0, c0, c1, vcj,
93 . psh,reaction_rate,reaction_rate2,a_mil,m_mil,n_mil,alpha_unit,
95 INTEGER :: IBFRAC, QOPT, I_ERROR, IFLAGUNIT, J
97 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
110 reaction_rate2 = zero
120 is_encrypted = .false.
121 is_available = .false.
128 IF (unitab%UNIT_ID(j) == uid)
THEN
137 CALL hm_get_floatv(
'MAT_RHO', rho0, is_available, lsubmodel, unitab)
138 CALL hm_get_floatv(
'Refer_Rho', rhor, is_available, lsubmodel, unitab)
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)
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)
153 IF(qopt < 0 .OR. qopt > 3)
THEN
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)
163 IF((qopt == 0 .OR. qopt == 1 .OR. qopt == 2) .AND. eadd > 0)
THEN
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
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)
182 reaction_rate2 = zero
187 reaction_rate2 = zero
190 reaction_rate = one/(tend-tbegin)
191 reaction_rate2 = zero
194 reaction_rate = two/(tend-tbegin)**2
195 reaction_rate2 = tbegin**2/(tend-tbegin)**2
199 reaction_rate2 = zero
200 IF(alpha_unit == zero)alpha_unit=one
215 IF(rhor == zero)rhor=rho0
230 pm(40) = pm(1)*d**2/pcj
240 pm(163) = reaction_rate
244 pm(167) = reaction_rate2
268 WRITE(iout,1001) trim(titr),mat_id,5
271 WRITE(iout,
'(5X,A,//)')
'CONFIDENTIAL DATA'
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
277 IF(eadd == zero)
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
294 & 5x,
' J.W.L. EXPLOSIVE ',/,
295 & 5x,
' ---------------- ',//)
298 & 5x,
'MATERIAL NUMBER . . . . . . . . . . . . =',i10/,
299 & 5x,
'MATERIAL LAW. . . . . . . . . . . . . . =',i10/)
301 & 5x,
'INITIAL DENSITY . . . . . . . . . . . . =',1pg20.13/,
302 & 5x,
'REFERENCE DENSITY . . . . . . . . . . . =',1pg20.13/)
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//)
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/)
319 & 5x,
'NO AFTERBURNING MODELING '//)
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//)
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//)
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//)
338 & 5x,
'AFTERBURNING : INSTANTANEOUS ',/,
339 & 5x,
'ADDITIONAL ENERGY PER UNIT VOLUME . . .=',e12.4/,
340 & 5x,
'BEGIN TIME. . . . . . . . . . . . . . .=',e12.4//)