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

Go to the source code of this file.

Functions/Subroutines

subroutine hm_read_mat51 (uparam, maxuparam, nuparam, israte, imatvis, nuvar, ifunc, maxfunc, nfunc, parmat, unitab, mat_id, titr, mtag, lsubmodel, pm, matparam, ipm, nvartmp)

Function/Subroutine Documentation

◆ hm_read_mat51()

subroutine hm_read_mat51 ( 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,
type(matparam_struct_), intent(inout) matparam,
integer, dimension(npropmi), intent(inout) ipm,
integer, intent(inout) nvartmp )

Definition at line 45 of file hm_read_mat51.F.

49C-----------------------------------------------
50C D e s c r i p t i o n
51C-----------------------------------------------
52C READ MATERIAL LAW 51
53C
54C DUMMY ARGUMENTS DESCRIPTION:
55C ===================
56C
57C NAME DESCRIPTION
58C
59C PM MATERIAL ARRAY(REAL)
60C ISRATE FLAG FOR STRAIN RATE FILTERING
61C IMATVIS FLAG FOR VISCOSITY
62C UNITAB UNITS ARRAY
63C MAT_ID MATERIAL ID(INTEGER)
64C TITR MATERIAL TITLE
65C LSUBMODEL SUBMODEL STRUCTURE
66C UPARAM MATERIAL BUFFER
67C PARMAT ADDITIONAL PARAMETER FOR MATERIALS
68C
69C-----------------------------------------------
70C M o d u l e s
71C-----------------------------------------------
72 USE unitab_mod
73 USE elbuftag_mod
74 USE message_mod
75 USE submodel_mod
76 USE matparam_def_mod
78 USE ale_mod
80 USE multimat_param_mod , ONLY : m51_n0phas, m51_nvphas
81C-----------------------------------------------
82C I m p l i c i t T y p e s
83C-----------------------------------------------
84#include "implicit_f.inc"
85C-----------------------------------------------
86C C o m m o n B l o c k s
87C-----------------------------------------------
88#include "units_c.inc"
89#include "com01_c.inc"
90#include "param_c.inc"
91#include "scr03_c.inc"
92C-----------------------------------------------
93C D u m m y A r g u m e n t s
94C-----------------------------------------------
95 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
96 my_real, INTENT(INOUT) :: pm(npropm),parmat(100),uparam(maxuparam)
97 INTEGER,INTENT(INOUT) :: IPM(NPROPMI)
98 INTEGER, INTENT(INOUT) :: ISRATE,IFUNC(MAXFUNC),NFUNC,MAXFUNC,MAXUPARAM,NUPARAM, NUVAR,IMATVIS
99 TYPE(MLAW_TAG_),INTENT(INOUT) :: MTAG
100 INTEGER,INTENT(IN) :: MAT_ID
101 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
102 TYPE(SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(NSUBMOD)
103 TYPE(MATPARAM_STRUCT_) ,INTENT(INOUT) :: MATPARAM
104 INTEGER,INTENT(INOUT) :: NVARTMP
105C-----------------------------------------------
106C L o c a l V a r i a b l e s
107C-----------------------------------------------
108 !---Global parameters
109 my_real vis,visv,pext,pmin
110 INTEGER MIP,NBMAT,IFLAG_BAK,IDX
111 !---EOS parameters
112 my_real :: rho0, rhor, dpdmu(4)
113 my_real :: av(4), rho0_(4),c0(4),c1(4), e0(4),pmin_(4),t0(4),c2(4),c3(4),c4(4),c5(4), gg(4)
114 my_real :: b1,b2,r1,r2,w,vdet,pcj,vcj, p0_glob
115 !---constitutive model
116 !------ Johnson-Cook
117 my_real :: y(4),bb(4),n(4),cc(4),epdr(4),cm(4),tmelt(4),thetl(4),plamx(4),sigmx(4),sph(4), xka(4),xkb(4)
118 !------ units
119 my_real :: fac_unit_time, fac_unit_sph
120 !------ Drucker-PRager
121 my_real :: nu(4),a0(4),a1(4),a2(4),amx(4),bunl(4),mumx(4),pstar(4),det,delta
122 !---nrf
123 my_real :: p0(4),ssp(4),lc(4),tcarp,tcar,abcs
124 !---INLET/OUTLET
125 INTEGER :: IOPT,IAV(4),IRHO(4),IE(4)
126 INTEGER :: I,IFLG,IERROR
127 INTEGER :: NITER
128 INTEGER :: IEXP, N_LC, IPLA_, IPLA(4), IBFRAC
129 INTEGER :: IVEL, IMID
130 INTEGER :: tMID(4)
131 !---temporary working arrays
132 my_real :: tav(4)
133 my_real :: einf(4),pfar,pini(4)
134 my_real :: ie_bound, ratio, sumvf,vel
135 !---messages/output
136 CHARACTER*128 :: chain,chain1
137 CHARACTER*32 :: CAV(4),CRHO0(34),CE0(4),CPM(4),CC0(4),CSSP(4)
138 CHARACTER*32 :: CPEXT,CTCARP,CTCAR
139 !---booleans
140 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED, IFLG6_SUBMAT_DEFINED(4)
141C-----------------------------------------------
142C S o u r c e L i n e s
143C-----------------------------------------------
144 is_encrypted = .false.
145 is_available = .false.
146 israte=0
147 imatvis=0
148 !----------------!
149 mtag%L_SSP = 1
150 mtag%L_SIGV = 1
151 mtag%L_EINS = 1
152 mtag%G_EINS = 1
153 mtag%L_EINT = 1
154 mtag%G_EINT = 1
155 mtag%G_TEMP = 1
156 mtag%L_TEMP = 1
157 mtag%L_VK = 1
158 mtag%G_TB = 1
159 mtag%L_TB = 1
160 nuparam = 280
161 nfunc = 10
162 uparam(1:nuparam) = zero
163 ifunc(1:nfunc) = 0
164 p0(:) = zero
165 IF (alemuscl_param%IALEMUSCl > 0) alemuscl_param%I_LAW = 51 ! Communicate LAW to ALEMUSCL_MOD
166 iflg6_submat_defined(1:4)=.true.
167 !----------------!
168 niter = 10
169 n_lc = 0
170 iopt = 0
171 trimat = 4 !MAX(TRIMAT,3)
172 nuvar = (m51_n0phas + trimat*m51_nvphas)
173 pext = zero
174 pfar = zero
175 vis = zero
176 visv = zero
177 fac_unit_sph = one
178 fac_unit_time = one
179 !----------------!
180 av(1:4) = zero
181 rho0_(1:4) = zero
182 e0(1:4) = zero
183 pmin_(1:4) = zero
184 gg(1:4) = zero
185 c0(1:4) = zero
186 c1(1:4) = zero
187 c2(1:4) = zero
188 c3(1:4) = zero
189 c4(1:4) = zero
190 c5(1:4) = zero
191 !----------------!
192 ssp(1:4) = zero
193 lc(1:4) = zero
194 tcarp = zero
195 tcar = zero
196 abcs = 0
197 iav(1:4) = 0
198 irho(1:4) = 0
199 ie(1:4) = 0
200 ivel = 0
201 vel = zero
202 iopt = 0
203 ratio = zero
204 !----------------!
205 y(1:4) = zero
206 bb(1:4) = zero
207 n(1:4) = zero
208 cc(1:4) = zero
209 epdr(1:4) = zero
210 cm(1:4) = zero
211 tmelt(1:4) = zero
212 thetl(1:4) = zero
213 plamx(1:4) = zero
214 sigmx(1:4) = zero
215 sph(1:4) = zero
216 t0(1:4) = zero
217 !----------------!
218 b1 = zero
219 b2 = zero
220 r1 = zero
221 r2 = zero
222 w = zero
223 vdet = zero
224 pcj = zero
225 vcj = zero
226 iexp = 0
227 ibfrac = 0
228 !----------------!
229 xka(1:4) = zero
230 xkb(1:4) = zero
231 a0(1:4) = zero
232 a1(1:4) = zero
233 a2(1:4) = zero
234 amx(1:4) = zero
235 bunl(1:4) = zero
236 mumx(1:4) = zero
237 pstar(1:4)=-infinity
238 nu(1:4) = zero
239 einf(1:4) =-infinity
240 !====================================================================!
241 ! IFLG == ALL (0,1,2,3,4,5,10,11,12) !
242 ! 0,1,3,10,11 : obsolete !
243 ! 2,4,5 : material boundary (going to be replaced with /EBCS/INLET !
244 ! 12 (new default since 2023.0) !
245 !====================================================================!
246 CALL hm_option_is_encrypted(is_encrypted)
247 !line-1
248 CALL hm_get_floatv('MAT_RHO' ,rho0, is_available, lsubmodel, unitab)
249 CALL hm_get_floatv('Refer_Rho' ,rhor, is_available, lsubmodel, unitab)
250 !line-2
251 ipla_ = 0 !Plasticity Flag > 0 means that at least one plastic submaterial.
252 ipla(1:4) = 0 !1:JCOOK, 2:DPRAG
253 CALL hm_get_intv ('MAT_Iflag' ,iflg ,is_available, lsubmodel)
254 iflag_bak=iflg
255 IF(invers_src >= 2023 .AND. iflg == 0)THEN
256 iflg = 12 !IForm 0,1,10,11 are obsolete input type since 2023.0
257 ! 2023.0 : IFLG=12 is the new default input type
258 ENDIF
259 IF(iflg == 11)THEN
260 CALL hm_get_intv ('Mach1', ipla(1), is_available, lsubmodel)
261 CALL hm_get_intv ('Mach2', ipla(2), is_available, lsubmodel)
262 CALL hm_get_intv ('Mach3', ipla(3), is_available, lsubmodel)
263 ENDIF
264 IF(iflg /= 11)THEN
265 ipla(1:4)=0
266 ENDIF
267 DO i=1,3
268 IF(ipla(i) < 0 .OR. ipla(i) > 2)ipla(i)=0
269 ENDDO
270 !----------------!
271 tav(1:4) = zero
272 tmid(1:4)= 0
273 SELECT CASE(iflg)
274 !============================!
275 ! IFLG == 0 !
276 !============================!
277 CASE(0)
278 !necessarily INVERS_SRC < 2023 : otherwise default leads to IFLG=12
279 !line-3
280 CALL hm_get_floatv('PEXT' , pext , is_available, lsubmodel, unitab)
281 CALL hm_get_floatv('MAT_NU' , vis , is_available, lsubmodel, unitab)
282 CALL hm_get_floatv('MAT_Lamda', visv , is_available, lsubmodel, unitab)
283 DO i=1,3
284 CALL hm_get_float_array_index('MAT_ALPHA_Iflg0_phas' , av(i) ,i ,is_available, lsubmodel, unitab)
285 CALL hm_get_float_array_index('MAT_RHO_Iflg0_phas' , rho0_(i) ,i ,is_available, lsubmodel, unitab)
286 CALL hm_get_float_array_index('MAT_E_Iflg0_phas' , e0(i) ,i ,is_available, lsubmodel, unitab)
287 CALL hm_get_float_array_index('MAT_P_Iflg0_phas' , pmin_(i) ,i ,is_available, lsubmodel, unitab)
288 CALL hm_get_float_array_index('MAT_C0_Iflg0_phas' , c0(i) ,i ,is_available, lsubmodel, unitab)
289 CALL hm_get_float_array_index('MAT_C1_Iflg0_phas' , c1(i) ,i ,is_available, lsubmodel, unitab)
290 CALL hm_get_float_array_index('MAT_C2_Iflg0_phas' , c2(i) ,i ,is_available, lsubmodel, unitab)
291 CALL hm_get_float_array_index('MAT_C3_Iflg0_phas' , c3(i) ,i ,is_available, lsubmodel, unitab)
292 CALL hm_get_float_array_index('MAT_C4_Iflg0_phas' , c4(i) ,i ,is_available, lsubmodel, unitab)
293 CALL hm_get_float_array_index('MAT_C5_Iflg0_phas' , c5(i) ,i ,is_available, lsubmodel, unitab)
294 CALL hm_get_float_array_index('MAT_G_Iflg0_phas' , gg(i) ,i ,is_available, lsubmodel, unitab)
295 ENDDO
296 CALL hm_get_float_array_index_dim('MAT_P_Iflg0_phas' ,fac_unit_sph ,1 ,is_available, lsubmodel, unitab)
297 IF(gg(1)+gg(2)+gg(3)==zero)THEN
298 ipla_=0
299 ELSE
300 ipla_=1
301 IF(gg(1)>zero)ipla(1)=1
302 IF(gg(2)>zero)ipla(2)=1
303 IF(gg(3)>zero)ipla(3)=1
304 ENDIF
305 !============================!
306 ! IFLG == 1 !
307 !============================!
308 CASE(1)
309 iflg = 0
310 !obsolete law51-formulation
311 IF(invers_src>=2023)THEN
312 chain1='INPUT TYPE IFORM=1 IS OBSOLETE SINCE 2023 VERSION : IFORM=12 MUST BE USED'
313 CALL ancmsg(msgid=75, msgtype=msgerror, anmode=aninfo, i1=mat_id,c1=titr,c2=chain1)
314 RETURN
315 ENDIF
316 !line-3
317 CALL hm_get_floatv('PEXT' , pext , is_available, lsubmodel, unitab)
318 CALL hm_get_floatv('MAT_NU' , vis , is_available, lsubmodel, unitab)
319 CALL hm_get_floatv('MAT_Lamda', visv , is_available, lsubmodel, unitab)
320 DO i=1,3
321 CALL hm_get_float_array_index('MAT_ALPHA_Iflg1_phas' ,av(i) ,i ,is_available, lsubmodel, unitab)
322 CALL hm_get_float_array_index('MAT_RHO_Iflg1_phas' ,rho0_(i) ,i ,is_available, lsubmodel, unitab)
323 CALL hm_get_float_array_index('MAT_E_Iflg1_phas' ,e0(i) ,i ,is_available, lsubmodel, unitab)
324 CALL hm_get_float_array_index('MAT_P_Iflg1_phas' ,pmin_(i) ,i ,is_available, lsubmodel, unitab)
325 CALL hm_get_float_array_index('MAT_C0_Iflg1_phas' ,c0(i) ,i ,is_available, lsubmodel, unitab)
326 CALL hm_get_float_array_index('MAT_C1_Iflg1_phas' ,c1(i) ,i ,is_available, lsubmodel, unitab)
327 CALL hm_get_float_array_index('MAT_C2_Iflg1_phas' ,c2(i) ,i ,is_available, lsubmodel, unitab)
328 CALL hm_get_float_array_index('MAT_C3_Iflg1_phas' ,c3(i) ,i ,is_available, lsubmodel, unitab)
329 CALL hm_get_float_array_index('MAT_C4_Iflg1_phas' ,c4(i) ,i ,is_available, lsubmodel, unitab)
330 CALL hm_get_float_array_index('MAT_C5_Iflg1_phas' ,c5(i) ,i ,is_available, lsubmodel, unitab)
331 CALL hm_get_float_array_index('MLAW51_G1' ,gg(i) ,i ,is_available, lsubmodel, unitab)
332 CALL hm_get_float_array_index('Sigma_Y1' ,y(i) ,i ,is_available, lsubmodel, unitab)
333 CALL hm_get_float_array_index('BB1' ,bb(i) ,i ,is_available, lsubmodel, unitab)
334 CALL hm_get_float_array_index('LAW51_N1' ,n(i) ,i ,is_available, lsubmodel, unitab)
335 CALL hm_get_float_array_index('CC1' ,cc(i) ,i ,is_available, lsubmodel, unitab)
336 CALL hm_get_float_array_index('e01' ,epdr(i) ,i ,is_available, lsubmodel, unitab)
337 CALL hm_get_float_array_index('CM1' ,cm(i) ,i ,is_available, lsubmodel, unitab)
338 CALL hm_get_float_array_index('T10' ,t0(i) ,i ,is_available, lsubmodel, unitab)
339 CALL hm_get_float_array_index('T_melt1' ,tmelt(i) ,i ,is_available, lsubmodel, unitab)
340 CALL hm_get_float_array_index('T_limit1' ,thetl(i) ,i ,is_available, lsubmodel, unitab)
341 CALL hm_get_float_array_index('Rhocv' ,sph(i) ,i ,is_available, lsubmodel, unitab)
342 CALL hm_get_float_array_index('e_max1' ,PLAMX(I) ,I ,IS_AVAILABLE, LSUBMODEL, UNITAB)
343 CALL HM_GET_FLOAT_ARRAY_INDEX('sigma_max1' ,SIGMX(I) ,I ,IS_AVAILABLE, LSUBMODEL, UNITAB)
344 CALL HM_GET_FLOAT_ARRAY_INDEX('k_a1' ,XKA(I) ,I ,IS_AVAILABLE, LSUBMODEL, UNITAB)
345 CALL HM_GET_FLOAT_ARRAY_INDEX('k_b1' ,XKB(I) ,I ,IS_AVAILABLE, LSUBMODEL, UNITAB)
346 ENDDO
347 CALL HM_GET_FLOAT_ARRAY_INDEX_DIM('rhocv' ,FAC_UNIT_SPH ,1 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
348 IF(GG(1)+GG(2)+GG(3)==ZERO)THEN
349 IPLA_=0
350 ELSE
351 IPLA_=1
352 IF(GG(1)>ZERO)IPLA(1)=1
353 IF(GG(2)>ZERO)IPLA(2)=1
354 IF(GG(3)>ZERO)IPLA(3)=1
355 ENDIF
356 !============================!
357 ! IFLG == 2 !
358 !============================!
359 CASE(2)
360 ALE%GLOBAL%IS_BOUNDARY_MATERIAL = .TRUE.
361 CALL HM_GET_FLOATV('scale' ,ABCS ,IS_AVAILABLE, LSUBMODEL, UNITAB)
362 CALL HM_GET_FLOATV('pext' ,PEXT ,IS_AVAILABLE, LSUBMODEL, UNITAB)
363 CALL HM_GET_FLOATV('vel_in' ,VEL ,IS_AVAILABLE, LSUBMODEL, UNITAB)
364 CALL HM_GET_INTV ('fct_id_vel' ,IVEL ,IS_AVAILABLE, LSUBMODEL)
365 DO I=1,3
366 CALL HM_GET_FLOAT_ARRAY_INDEX('mat_alpha_iflg2_phas' ,AV(I) ,I ,IS_AVAILABLE, LSUBMODEL, UNITAB)
367 CALL HM_GET_FLOAT_ARRAY_INDEX('mat_rho_iflg2_phas' ,RHO0_(I),I ,IS_AVAILABLE, LSUBMODEL, UNITAB)
368 CALL HM_GET_FLOAT_ARRAY_INDEX('mat_e_iflg2_phas' ,E0(I) ,I ,IS_AVAILABLE, LSUBMODEL, UNITAB)
369 CALL HM_GET_INT_ARRAY_INDEX ('abg_n1' ,IAV(I) ,I ,IS_AVAILABLE, LSUBMODEL)
370 CALL HM_GET_INT_ARRAY_INDEX ('abg_n2' ,IRHO(I) ,I ,IS_AVAILABLE, LSUBMODEL)
371 CALL HM_GET_INT_ARRAY_INDEX ('abg_n3' ,IE(I) ,I ,IS_AVAILABLE, LSUBMODEL)
372 CALL HM_GET_FLOAT_ARRAY_INDEX('mat_c1_iflg2_phas' ,C1(I) ,I ,IS_AVAILABLE, LSUBMODEL, UNITAB)
373 CALL HM_GET_FLOAT_ARRAY_INDEX('mat_c2_iflg2_phas' ,C2(I) ,I ,IS_AVAILABLE, LSUBMODEL, UNITAB)
374 CALL HM_GET_FLOAT_ARRAY_INDEX('mat_c3_iflg2_phas' ,C3(I) ,I ,IS_AVAILABLE, LSUBMODEL, UNITAB)
375 CALL HM_GET_FLOAT_ARRAY_INDEX('mat_c4_iflg2_phas' ,C4(I) ,I ,IS_AVAILABLE, LSUBMODEL, UNITAB)
376 CALL HM_GET_FLOAT_ARRAY_INDEX('mat_c5_iflg2_phas' ,c5(i) ,i ,is_available, lsubmodel, unitab)
377 CALL hm_get_float_array_index('MAT_P_Iflg2_phas' ,pmin_(i),i ,is_available, lsubmodel, unitab)
378 CALL hm_get_float_array_index('MAT_C0_Iflg2_phas' ,c0(i) ,i ,is_available, lsubmodel, unitab)
379 ENDDO
380 CALL hm_get_float_array_index_dim('MAT_P_Iflg2_phas' ,fac_unit_sph ,1 ,is_available, lsubmodel, unitab)
381 CALL hm_get_floatv_dim('SCALE' ,fac_unit_time ,is_available, lsubmodel, unitab)
382 !============================!
383 ! IFLG == 3 !
384 !============================!
385 CASE(3)
386 !OBSOLETE use IFLG=6 instead
387 ale%GLOBAL%IS_BOUNDARY_MATERIAL=.true.
388 IF(invers_src>=2023)THEN
389 chain1='INPUT TYPE IFORM=3 IS OBSOLETE SINCE 2023 VERSION : IFORM=6 MUST BE USED'
390 CALL ancmsg(msgid=75, msgtype=msgerror, anmode=aninfo, i1=mat_id,c1=titr,c2=chain1)
391 RETURN
392 ENDIF
393 DO i=1,3
394 CALL hm_get_float_array_index('MAT_ALPHA_Iflg3_phas' ,av(i) ,i ,is_available, lsubmodel, unitab)
395 CALL hm_get_float_array_index('MAT_RHO_Iflg3_phas' ,rho0_(i),i ,is_available, lsubmodel, unitab)
396 CALL hm_get_float_array_index('MAT_E_Iflg3_phas' ,e0(i) ,i ,is_available, lsubmodel, unitab)
397 CALL hm_get_float_array_index('MAT_P_Iflg3_phas' ,pmin_(i) ,i ,is_available, lsubmodel, unitab)
398 CALL hm_get_float_array_index('MAT_C0_Iflg3_phas' ,c0(i) ,i ,is_available, lsubmodel, unitab)
399 ENDDO
400 CALL hm_get_float_array_index_dim('MAT_P_Iflg3_phas' ,fac_unit_sph ,1 ,is_available, lsubmodel, unitab)
401 !============================!
402 ! IFLG == 4 !
403 !============================!
404 CASE(4)
405 ale%GLOBAL%IS_BOUNDARY_MATERIAL = .true.
406 CALL hm_get_floatv('SCALE' ,abcs ,is_available, lsubmodel, unitab)
407 CALL hm_get_floatv('PEXT' ,pext ,is_available, lsubmodel, unitab)
408 DO i=1,3
409 CALL hm_get_float_array_index('MAT_ALPHA_Iflg2_phas' ,av(i) ,i ,is_available, lsubmodel, unitab)
410 CALL hm_get_float_array_index('MAT_RHO_Iflg2_phas' ,rho0_(i),i ,is_available, lsubmodel, unitab)
411 CALL hm_get_float_array_index('MAT_E_Iflg2_phas' ,e0(i) ,i ,is_available, lsubmodel, unitab)
412 CALL hm_get_int_array_index ('ABG_N1' ,iav(i) ,i ,is_available, lsubmodel)
413 CALL hm_get_int_array_index ('ABG_N2' ,irho(i) ,i ,is_available, lsubmodel)
414 CALL hm_get_int_array_index ('ABG_N3' ,ie(i) ,i ,is_available, lsubmodel)
415 CALL hm_get_float_array_index('MAT_C0_Iflg2_phas' ,c0(i) ,i ,is_available, lsubmodel, unitab)
416 CALL hm_get_float_array_index('MAT_C1_Iflg2_phas' ,c1(i) ,i ,is_available, lsubmodel, unitab)
417 CALL hm_get_float_array_index('MAT_C4_Iflg2_phas' ,c4(i) ,i ,is_available, lsubmodel, unitab)
418 c5(i)=c4(i) ! no need to enter C5 (=C4) since 14.0
419 ENDDO
420 CALL hm_get_float_array_index_dim('MAT_C0_Iflg2_phas' ,fac_unit_sph ,1 ,is_available, lsubmodel, unitab)
421 CALL hm_get_floatv_dim('SCALE' ,fac_unit_time ,is_available, lsubmodel, unitab)
422 !============================!
423 ! IFLG == 5 !
424 !============================!
425 CASE(5)
426 ale%GLOBAL%IS_BOUNDARY_MATERIAL = .true.
427 CALL hm_get_floatv('SCALE' ,abcs ,is_available, lsubmodel, unitab)
428 CALL hm_get_floatv('PEXT' ,pext ,is_available, lsubmodel, unitab)
429 DO i=1,3
430 CALL hm_get_float_array_index('MAT_ALPHA_Iflg2_phas' ,av(i) ,i ,is_available, lsubmodel, unitab)
431 CALL hm_get_float_array_index('MAT_RHO_Iflg2_phas' ,rho0_(i),i ,is_available, lsubmodel, unitab)
432 CALL hm_get_float_array_index('MAT_E_Iflg2_phas' ,e0(i) ,i ,is_available, lsubmodel, unitab)
433 CALL hm_get_int_array_index ('ABG_N1' ,iav(i) ,i ,is_available, lsubmodel)
434 CALL hm_get_int_array_index ('ABG_N2' ,irho(i) ,i ,is_available, lsubmodel)
435 CALL hm_get_int_array_index ('ABG_N3' ,ie(i) ,i ,is_available, lsubmodel)
436 CALL hm_get_float_array_index('MAT_C0_Iflg2_phas' ,c0(i) ,i ,is_available, lsubmodel, unitab)
437 CALL hm_get_float_array_index('MAT_C1_Iflg2_phas' ,c1(i) ,i ,is_available, lsubmodel, unitab)
438 CALL hm_get_float_array_index('MAT_P_Iflg2_phas' ,pmin_(i) ,i ,is_available, lsubmodel, unitab)
439 ENDDO
440 CALL hm_get_float_array_index_dim('MAT_P_Iflg2_phas' ,fac_unit_sph ,1 ,is_available, lsubmodel, unitab)
441 CALL hm_get_floatv_dim('SCALE' ,fac_unit_time ,is_available, lsubmodel, unitab)
442 !============================!
443 ! IFLG == 6 !
444 !============================!
445 CASE(6)
446 ale%GLOBAL%IS_BOUNDARY_MATERIAL = .true.
447 m51_iflg6 = 1
448 ierror = 0
449 CALL hm_get_floatv('PEXT' ,pext ,is_available, lsubmodel, unitab)
450 CALL hm_get_floatv('MAT_TCP' ,tcarp ,is_available, lsubmodel, unitab)
451 CALL hm_get_floatv('MAT_TCALPHA' ,tcar ,is_available, lsubmodel, unitab)
452 DO i=1,3
453 CALL hm_get_float_array_index('MAT_ALPHA_Iflg0_phas' ,av(i) ,i ,is_available, lsubmodel, unitab)
454 CALL hm_get_float_array_index('MAT_RHO_Iflg0_phas' ,rho0_(i),i ,is_available, lsubmodel, unitab)
455 CALL hm_get_float_array_index('MAT_E_Iflg0_phas' ,e0(i) ,i ,is_available, lsubmodel, unitab)
456 CALL hm_get_float_array_index('MAT_P_Iflg0_phas' ,pmin_(i) ,i ,is_available, lsubmodel, unitab)
457 CALL hm_get_float_array_index('MAT_P0_Iflg0_phas' ,c0(i) ,i ,is_available, lsubmodel, unitab)
458 CALL hm_get_float_array_index('MAT_SSP0_Iflg0_phas' ,ssp(i) ,i ,is_available, lsubmodel, unitab)
459 IF(av(i)==zero .AND. rho0_(i)==zero .AND. e0(i)==zero .AND. pmin_(i)==zero .AND. c0(i)==zero .AND. ssp(i)==zero )THEN
460 iflg6_submat_defined(i)=.false.
461 ENDIF
462 ENDDO
463 CALL hm_get_float_array_index_dim('MAT_P0_Iflg0_phas' ,fac_unit_sph ,1 ,is_available, lsubmodel, unitab)
464 IF(tcar == zero)tcar=infinity
465 cpext(1:32) = ' auto ' ;
466 IF (pext /= zero) WRITE(cpext ,fmt='(E12.4)')pext
467 ctcarp(1:32) = ' auto ' ;
468 IF (tcarp /= zero) WRITE(ctcarp ,fmt='(E12.4)')tcarp
469 ctcar(1:32) = ' auto ' ;
470 IF (tcar /= zero) WRITE(ctcar ,fmt='(E12.4)')tcar
471 DO i=1,3
472 cav(i)= ' auto ' ;IF (av(i) /= zero) WRITE(cav(i) ,fmt='(E12.4)')av(i)
473 crho0(i)= ' auto ' ;IF (rho0_(i)/= zero) WRITE(crho0(i) ,fmt='(E12.4)')rho0_(i)
474 ce0(i)= ' auto ' ;IF (e0(i) /= zero) WRITE(ce0(i) ,fmt='(E12.4)')e0(i)
475 cpm(i)= ' auto ' ;IF (pmin_(i) /= zero) WRITE(cpm(i) ,fmt='(E12.4)')pmin_(i)
476 cc0(i)= ' auto ' ;IF (c0(i) /= zero) WRITE(cc0(i) ,fmt='(E12.4)')c0(i)
477 cssp(i)= ' auto ' ;IF (ssp(i) /= zero) WRITE(cssp(i) ,fmt='(E12.4)')ssp(i)
478 ENDDO
479
480 !============================!
481 ! IFLG == 10 !
482 !============================!
483 CASE(10)
484 iflg=1
485 iexp=1
486 !obsolete law51-formulation
487 IF(invers_src>=2023)THEN
488 chain1='INPUT TYPE IFORM=10 IS OBSOLETE SINCE 2023 VERSION : IFORM=12 MUST BE USED'
489 CALL ancmsg(msgid=75, msgtype=msgerror, anmode=aninfo, i1=mat_id,c1=titr,c2=chain1)
490 RETURN
491 ENDIF
492 CALL hm_get_floatv('PEXT' ,pext ,is_available, lsubmodel, unitab)
493 CALL hm_get_floatv('MAT_NU' ,vis ,is_available, lsubmodel, unitab)
494 CALL hm_get_floatv('MAT_Lamda' ,visv ,is_available, lsubmodel, unitab)
495 DO i=1,3
496 CALL hm_get_float_array_index('MAT_ALPHA_Iflg10_phas' ,av(i) ,i ,is_available, lsubmodel, unitab)
497 CALL hm_get_float_array_index('MAT_RHO_Iflg10_phas' ,rho0_(i),i ,is_available, lsubmodel, unitab)
498 CALL hm_get_float_array_index('MAT_E_Iflg10_phas' ,e0(i) ,i ,is_available, lsubmodel, unitab)
499 CALL hm_get_float_array_index('MAT_P_Iflg10_phas' ,pmin_(i) ,i ,is_available, lsubmodel, unitab)
500 CALL hm_get_float_array_index('MAT_C0_Iflg10_phas' ,c0(i) ,i ,is_available, lsubmodel, unitab)
501 CALL hm_get_float_array_index('MAT_C1_Iflg10_phas' ,c1(i) ,i ,is_available, lsubmodel, unitab)
502 CALL hm_get_float_array_index('MAT_C2_Iflg10_phas' ,c2(i) ,i ,is_available, lsubmodel, unitab)
503 CALL hm_get_float_array_index('MAT_C3_Iflg10_phas' ,c3(i) ,i ,is_available, lsubmodel, unitab)
504 CALL hm_get_float_array_index('MAT_C4_Iflg10_phas' ,c4(i) ,i ,is_available, lsubmodel, unitab)
505 CALL hm_get_float_array_index('MAT_C5_Iflg10_phas' ,c5(i) ,i ,is_available, lsubmodel, unitab)
506 CALL hm_get_float_array_index('MLAW51_G10' ,gg(i) ,i ,is_available, lsubmodel, unitab)
507 CALL hm_get_float_array_index('Sigma_Y10' ,y(i) ,i ,is_available, lsubmodel, unitab)
508 CALL hm_get_float_array_index('BB10' ,bb(i) ,i ,is_available, lsubmodel, unitab)
509 CALL hm_get_float_array_index('LAW51_N10' ,n(i) ,i ,is_available, lsubmodel, unitab)
510 CALL hm_get_float_array_index('CC10' ,cc(i) ,i ,is_available, lsubmodel, unitab)
511 CALL hm_get_float_array_index('e010' ,epdr(i) ,i ,is_available, lsubmodel, unitab)
512 CALL hm_get_float_array_index('CM10' ,cm(i) ,i ,is_available, lsubmodel, unitab)
513 CALL hm_get_float_array_index('T10_10' ,t0(i) ,i ,is_available, lsubmodel, unitab)
514 CALL hm_get_float_array_index('T_melt10' ,tmelt(i),i ,is_available, lsubmodel, unitab)
515 CALL hm_get_float_array_index('T_limit10' ,thetl(i),i ,is_available, lsubmodel, unitab)
516 CALL hm_get_float_array_index('Rhocv10' ,sph(i) ,i ,is_available, lsubmodel, unitab)
517 CALL hm_get_float_array_index('E_max10' ,plamx(i) ,i ,is_available, lsubmodel, unitab)
518 CALL hm_get_float_array_index('sigma_max10' ,sigmx(i) ,i ,is_available, lsubmodel, unitab)
519 CALL hm_get_float_array_index('K_A1' ,xka(i) ,i ,is_available, lsubmodel, unitab)
520 CALL hm_get_float_array_index('K_B1' ,xkb(i) ,i ,is_available, lsubmodel, unitab)
521 ENDDO
522 CALL hm_get_float_array_index_dim('Rhocv10' ,fac_unit_sph ,1 ,is_available, lsubmodel, unitab)
523 !High Explosive
524 CALL hm_get_floatv('MLAW51_ALPHA' ,av(4) ,is_available, lsubmodel, unitab)
525 CALL hm_get_floatv('MLAW51_Rho' ,rho0_(4) ,is_available, lsubmodel, unitab)
526 CALL hm_get_floatv('MLAW51_E0' ,e0(4) ,is_available, lsubmodel, unitab)
527 CALL hm_get_floatv('MLAW51_Pmin' ,pmin_(4) ,is_available, lsubmodel, unitab)
528 CALL hm_get_floatv('MLAW51_C0' ,c0(4) ,is_available, lsubmodel, unitab)
529 CALL hm_get_floatv('MLAW51_B1' ,b1 ,is_available, lsubmodel, unitab)
530 CALL hm_get_floatv('MLAW51_B2' ,b2 ,is_available, lsubmodel, unitab)
531 CALL hm_get_floatv('MLAW51_R1' ,r1 ,is_available, lsubmodel, unitab)
532 CALL hm_get_floatv('MLAW51_R2' ,r2 ,is_available, lsubmodel, unitab)
533 CALL hm_get_floatv('MLAW51_W' ,w ,is_available, lsubmodel, unitab)
534 CALL hm_get_floatv('MLAW51_D' ,vdet ,is_available, lsubmodel, unitab)
535 CALL hm_get_floatv('MLAW51_PCJ' ,pcj ,is_available, lsubmodel, unitab)
536 CALL hm_get_floatv('MLAW51_C14' ,c1(4) ,is_available, lsubmodel, unitab)
537 CALL hm_get_intv('MAT_IBFRAC' ,ibfrac ,is_available, lsubmodel)
538 IF(gg(1)+gg(2)+gg(3)==zero)THEN
539 ipla_=0
540 ELSE
541 ipla_=1
542 IF(gg(1)>zero)ipla(1)=1
543 IF(gg(2)>zero)ipla(2)=1
544 IF(gg(3)>zero)ipla(3)=1
545 ENDIF
546 !============================!
547 ! IFLG == 11 !
548 !============================!
549 CASE(11)
550 iflg=1
551 iexp=1
552 !obsolete law51-formulation
553 IF(invers_src>=2023)THEN
554 chain1='INPUT TYPE IFORM=11 IS OBSOLETE SINCE 2023 VERSION : IFORM=12 MUST BE USED'
555 CALL ancmsg(msgid=75, msgtype=msgerror, anmode=aninfo, i1=mat_id,c1=titr,c2=chain1)
556 RETURN
557 ENDIF
559 . av , rho0_ ,e0 , pmin_ , c0 ,
560 . c1 , c2 ,c3 , c4 , c5 ,
561 . ipla , gg ,y , bb , n ,
562 . cc , epdr ,cm , t0 , tmelt ,
563 . thetl , sph ,plamx , sigmx , xka ,
564 . xkb , nu ,a0 , a1 , a2 ,
565 . amx ,
566 . b1 , b2 ,r1 , r2, w,
567 . vdet , pcj ,ibfrac , pext, vis,
568 . visv , lsubmodel, unitab)
569 CALL hm_get_float_array_index_dim('DAMP1' ,fac_unit_sph ,1 ,is_available, lsubmodel, unitab)
570 !Shear Modulus for DPRAG input
571 IF(gg(1)==zero.AND.ipla(1)==2)gg(1)=y(1)/two/(one+nu(1))
572 IF(gg(2)==zero.AND.ipla(2)==2)gg(2)=y(2)/two/(one+nu(2))
573 IF(gg(3)==zero.AND.ipla(3)==2)gg(3)=y(3)/two/(one+nu(3))
574 !Plasticity flags
575 ipla_=0
576 IF(gg(1)+gg(2)+gg(3) /= zero)THEN
577 ipla_=1
578 IF(gg(1)==zero)ipla(1)=0
579 IF(gg(2)==zero)ipla(2)=0
580 IF(gg(3)==zero)ipla(3)=0
581 ENDIF
582 !============================!
583 ! IFLG == 12 !
584 !============================!
585 CASE(12)
586 iflg = 12
587 iexp = 1
588 nbmat = 0
589 tav(1:4) = zero
590 tmid(1:4)= 0
591 nvartmp = 6 ! granular plastic model 3*2
592 CALL hm_get_floatv('MAT_NU' ,vis ,is_available, lsubmodel, unitab)
593 CALL hm_get_floatv('MAT_Lamda' ,visv ,is_available, lsubmodel, unitab)
594 CALL hm_get_intv ('MIP' ,mip ,is_available, lsubmodel)
595 imid = 0
596 sumvf = zero
597 DO i=1,mip
598 CALL hm_get_int_array_index ('materialIds' ,tmid(i) ,i,is_available, lsubmodel)
599 CALL hm_get_float_array_index('MAT_ALPHA_Iflg12_phas' ,tav(i) ,i,is_available, lsubmodel, unitab)
600 ENDDO
601 uparam(09:12) = tmid(1:4)
602 uparam(13:16) = tav(1:4)
603 av(1:4) = tav(1:4)
604 IF(mip==0)THEN
605 chain1='SUBMATERIAL DATA NOT FOUND '
606 CALL ancmsg(msgid=99,msgtype=msgerror,anmode=aninfo,i1=mat_id,c1=titr,c2=chain1)
607 RETURN
608 ENDIF
609 DO i=1,mip
610 IF(tmid(i) <= 0)THEN
611 chain(1:10)=' '
612 write(chain(1:10),'(i10)')tmid(i)
613 chain1='INCORRECT MATERIAL IDENTIFIER '//chain(1:10)
614 CALL ancmsg(msgid=99,msgtype=msgerror,anmode=aninfo,i1=mat_id,c1=titr,c2=chain1)
615 tmid(i)=0
616 RETURN
617 ENDIF
618 ENDDO
619 DO i=1,mip
620 IF(tav(i)<zero .OR. tav(i)>one)THEN
621 chain(1:20)=' '
622 write(chain(1:20),'(e20.14)')tav(i)
623 chain1='VOLUME FRACTION MUST BE BETWEEN 0.0 AND 1.0 , READ VALUE IS '// chain(1:20)
624 CALL ancmsg(msgid=99,msgtype=msgerror,anmode=aninfo,i1=mat_id,c1=titr,c2=chain1)
625 RETURN
626 ENDIF
627 ENDDO
628 sumvf = sum(tav(1:4))
629 IF(sumvf>one)THEN
630 chain(1:20)=' '
631 write(chain(1:20),'(F20.8)')sumvf
632 chain1='SUM OF VOLUME FRACTION MUST BE EQUAL TO 1.0, CURRENT SUM IS '// chain(1:20)
633 CALL ancmsg(msgid=99,msgtype=msgerror,anmode=aninfo,i1=mat_id,c1=titr,c2=chain1)
634 RETURN
635 ENDIF
636 !============================!
637 ! IFLG == NOT VALID !
638 !============================!
639 CASE DEFAULT
640 !not correct iform value
641 chain1='INCORRECT IFORM VALUE '
642 CALL ancmsg(msgid=99,msgtype=msgerror,anmode=aninfo_blind_1,i1=mat_id,c1=titr,c2=chain1)
643 RETURN
644 END SELECT
645 !============================!
646 ! PLASTICITY DEFAULT !
647 !============================!
648 IF(ratio<=zero)THEN
649 ratio = 0.25d00 !ONE is for previous formulation (permitted large volume change)
650 ENDIF
651 IF(ipla_>0)THEN
652 mtag%G_EPSD = 1
653 mtag%L_EPSD = 1
654 mtag%G_PLA = 1
655 mtag%L_PLA = 1
656 IF(ipla(1) == 2 .OR. ipla(2) == 2 .OR. ipla(3) == 2)THEN
657 mtag%G_EPSQ = 1
658 mtag%L_EPSQ = 1
659 ENDIF
660 ENDIF
661 IF(iexp>0)THEN
662 mtag%G_BFRAC = 1
663 mtag%L_BFRAC = 1
664 ENDIF
665 IF(iflg == 12)THEN
666 mtag%G_EPSD = 1
667 mtag%L_EPSD = 1
668 mtag%G_PLA = 1
669 mtag%L_PLA = 1
670 mtag%G_EPSQ = 1
671 mtag%L_EPSQ = 1
672 mtag%G_BFRAC = 1
673 mtag%L_BFRAC = 1
674 ENDIF
675 DO i=1,3
676 IF(ipla(i) == 2)THEN
677 IF(a2(i)==zero.AND.a1(i)/=zero)THEN !(A21=A11=ZERO => error message)
678 pstar(i)=-a0(i)/a1(i)
679 ELSEIF(a2(i)/=zero)THEN
680 delta = a1(i)*a1(i)-four*a0(i)*a2(i)
681 !Si intersection avec l'axe
682 IF(delta >= zero)THEN
683 delta=sqrt(delta)
684 pstar(i) = (-a1(i)+delta)/two/a2(i)
685
686 ELSE
687 ! PSTAR(I) = -A1(I)/TWO/A2(I) !no let user do what he wants
688 pstar(i) = -infinity
689 chain='SUBMAT-0 : YIELD SURFACE HAS NO ROOT. '
690 write(chain(8:8),'(i1.1)')i
691 CALL ancmsg(msgid=829,msgtype=msgwarning,anmode=aninfo,i1=51,i2=mat_id,c1='WARNING',c2=titr,c3=chain)
692 ENDIF
693 ELSE
694 !do nothing let user do what he wants
695 ENDIF
696 ENDIF
697 ENDDO
698C |============================!
699C | DEFAULT FLAGS !
700C !============================!
701 IF(iopt < 0)iopt=0 !check possible values otherwise set to debaut one.
702 !IF(IOPT >= 4)IOPT=0 ! does not exist
703 IF (n_lc <= 0)THEN
704 IF(iopt==1)THEN
705 n_lc=100
706 ELSE
707 n_lc=1000
708 ENDIF
709 ENDIF
710 IF(abcs==zero) abcs= one*fac_unit_time
711 pmin = -pext
712 DO i=1,4
713 ! RhoCp
714 IF(sph(i) == zero) sph(i) = one * fac_unit_sph
715 !JCook exponent
716 IF(n(i) == zero) n(i) = one
717 !Initial Temperature
718 IF(t0(i) == zero) t0(i) = three100
719 !MAximum plastic Strain
720 IF(plamx(i) == zero) plamx(i) = infinity
721 !Maximum Stress
722 IF(sigmx(i) == zero) sigmx(i) = infinity
723 !Melting Temperature
724 IF(tmelt(i) == zero) tmelt(i) = infinity
725 !Limit Temperature
726 IF(thetl(i) == zero) thetl(i) = infinity
727 !Thermal condictivity
728 IF(xka(i) == zero) xka(i) = em20
729 !Johnson-Cook parameters
730 IF(epdr(i) == zero) epdr(i) = one
731 !Drucker-Prager maximum values
732 IF(amx(i) == zero) amx(i) = infinity
733 !Drucker-Prager Poisson's coefficient
734 IF(nu(i) == zero) nu(i) = zep2
735 ENDDO
736 !Drucker-Prager \B5max1, \B5max2, \B5max3
737 DO i=1,3
738 IF(mumx(i) == zero .AND. bunl(i) /= zero)THEN
739 IF(c3(i) == zero)THEN
740 IF(c2(i) == zero)THEN
741 mumx(i)=infinity
742 ELSE
743 mumx(i)=(bunl(i)-c1(i))/(two*c2(i))
744 ENDIF
745 ELSE
746 det=sqrt(c2(i)**2 + three*c3(i)*(bunl(i)-c1(i)))
747 mumx(i)=(det-c2(i))/(three*c3(i))
748 ENDIF
749 ENDIF
750 ENDDO
751 !Drucker-Prager unload modulus
752 DO i=1,3
753 IF(bunl(i) == zero) bunl(i) = c1(i)
754 ENDDO
755 !Minimum Pressure (GGi must be calculated whatever is yield criteria)
756 IF(iflg <= 1.OR.iflg == 11)THEN
757 DO i=1,3
758 IF (pmin_(i) == zero) THEN
759 IF(gg(i) == zero)THEN
760 pmin_(i) = -pext
761 ELSE
762 pmin_(i) = -infinity
763 ENDIF
764 ENDIF
765 ENDDO
766 IF (pmin_(4) == zero) THEN
767 pmin_(4) = -infinity
768 ENDIF
769 ENDIF
770 !EXPLOSIVE C14
771 IF(rho0_(4) > zero)THEN
772 IF(c1(4) <= zero)THEN
773 chain1='BULK MODULUS C14 MUST BE PROVIDED FOR UNREACTED EXPLOSIVE'
774 CALL ancmsg(msgid=99,msgtype=msgerror,anmode=aninfo,i1=mat_id,c1=titr,c2=chain1)
775 RETURN
776 ENDIF
777 IF(vdet <= zero)THEN
778 chain1='DETONATION VELOCITY MUST BE INPUT FOR EXPLOSIVE SUBMATERIAL'
779 CALL ancmsg(msgid=99,msgtype=msgerror,anmode=aninfo,i1=mat_id,c1=titr,c2=chain1)
780 RETURN
781 ENDIF
782 ENDIF
783 !============================!
784 ! CHECKING INITIAL STATE !
785 ! *INITIAL PRESSURE !
786 ! *DENSITIES !
787 ! *VOLUMETRIC FRACTION !
788 !============================!
789 !Check is done only for multimaterial law (iflg=0|1), inlet/outlet are skipped.
790 IF (iflg /= 12) THEN
792 . av, rho0_, c0, c1, c2, c3, c4, c5,
793 . e0, pm, rho0, rhor, iexp, pext, iflg,
794 . a1, a2, ipla,
795 . mat_id ,titr,
796 . ssp(1),ssp(2),ssp(3),ssp(4),
797 . lc(1), lc(2), lc(3), lc(4),
798 . pini)
799 !Inferior Boundary for Energy. It ensure EOS stability.
800 !Inf(Eint), def=-INFINITY
801 !If P0=Pext+C0 >0 then de/d>0 then extremum in expansion and can be calculated (if exists) without C2 and C3
802 !otherwise C2 and C3 are non zero and extremum calculation is complicated.
803 ! It is approximated with C2=C3=0 which is inferior thanks to C2, C3 sign.
804 DO i=1,3
805 einf(i)=ie_bound(pext,pmin_(i),c0(i),c1(i),c2(i),c3(i),c4(i),c5(i),e0(i))
806 ENDDO
807 einf(4)=zero
808 END IF
809 !sound speed initialization loi51
810 IF(iflg == 0 .OR. iflg == 1)THEN
811 DO i=1,3
812 p0(i) = c0(i)+c4(i)*e0(i)
813 dpdmu(i) = (c1(i)+c5(i)*e0(i)) + c4(i)*(pext+p0(i))
814 IF(rho0_(i) /= zero) ssp(i) = sqrt( (dpdmu(i) + two_third*gg(i)) / rho0_(i) ) !warning GG = 2*G => TWO_THIRD*GG = FOUR_OVER_3*G
815 ENDDO
816 p0(4) = c0(4)
817 ssp(4) = vdet
818 ENDIF
819 !============================!
820 ! Output through UPARAM(*) !
821 !============================!
822 uparam(1) = vis
823 uparam(2) = two*vis
824 uparam(3) = (visv-uparam(2))*third
825 uparam(4) = av(1)
826 uparam(5) = av(2)
827 uparam(6) = av(3)
828 uparam(46) = av(4)
829 uparam(7) = pfar
830 uparam(8) = pext
831 uparam(55) = iexp
832 uparam(31) = iflg
833 uparam(73) = niter
834 uparam(74) = ratio
835 IF (iflg /= 12) THEN
836 uparam(9) = rho0_(1)
837 uparam(10) = rho0_(2)
838 uparam(11) = rho0_(3)
839 uparam(47) = rho0_(4)
840 uparam(12) = c1(1)
841 uparam(13) = c1(2)
842 uparam(14) = c1(3)
843 uparam(15) = c2(1)
844 uparam(16) = c2(2)
845 uparam(17) = c2(3)
846 uparam(18) = c3(1)
847 uparam(20) = c3(2)
848 uparam(21) = c3(3)
849 uparam(22) = c4(1)
850 uparam(23) = c4(2)
851 uparam(24) = c4(3)
852 uparam(25) = c5(1)
853 uparam(26) = c5(2)
854 uparam(27) = c5(3)
855 uparam(28) = two*gg(1)
856 uparam(29) = two*gg(2)
857 uparam(30) = two*gg(3)
858 uparam(31) = iflg
859 uparam(32) = e0(1)
860 uparam(33) = e0(2)
861 uparam(34) = e0(3)
862 uparam(35) = c0(1)
863 uparam(36) = c0(2)
864 uparam(37) = c0(3)
865 uparam(38) = abcs
866 uparam(39) = pmin_(1)
867 uparam(40) = pmin_(2)
868 uparam(41) = pmin_(3)
869 uparam(42) = vdet
870 uparam(43) = pcj
871 IF(pcj > em20)THEN
872 uparam(44) = rho0_(4) * vdet**2 / pcj
873 ELSE
874 uparam(44) = infinity
875 END IF
876 vcj = one - one/uparam(44)
877 IF(rho0_(4)==zero) uparam(47) = em20 !RHO0_(4)
878 uparam(48) = e0(4)
879 uparam(49) = c0(4)
880 uparam(50) = c1(4)
881 uparam(45) = b1
882 uparam(51) = b2
883 uparam(52) = r1
884 uparam(53) = r2
885 uparam(54) = w
886 uparam(55) = iexp
887 uparam(56) = pmin_(4)
888 uparam(57) = einf(1)
889 uparam(58) = einf(2)
890 uparam(59) = einf(3)
891 uparam(60) = einf(4)
892 uparam(61) = iopt
893 uparam(62) = one/n_lc
894 uparam(63) = ipla_
895 uparam(64) = ipla(1)
896 uparam(65) = ipla(2)
897 uparam(66) = ipla(3)
898 uparam(67) = ipla(4)
899 uparam(68) = ibfrac
900 uparam(69) = rho0_(1) * av(1) + rho0_(2) * av(2) + rho0_(3) * av(3) + rho0_(4) * av(4)
901 uparam(70) = tcarp
902 uparam(71) = tcar
903 uparam(72) = infinity !P0_NRF
904 uparam(75) = vel
905 uparam(81) = zero !visc1
906 uparam(82) = zero !visc2
907 uparam(83) = zero !visc3
908 uparam(84) = zero !visc4
909 idx=100
910 DO i=1,3
911 uparam(idx+01) = gg(i)
912 uparam(idx+02) = y(i)
913 uparam(idx+03) = bb(i)
914 uparam(idx+04) = n(i)
915 uparam(idx+05) = cc(i)
916 uparam(idx+06) = epdr(i)
917 uparam(idx+07) = cm(i)
918 uparam(idx+08) = tmelt(i)
919 uparam(idx+09) = thetl(i)
920 uparam(idx+10) = plamx(i)
921 uparam(idx+11) = sigmx(i)
922 uparam(idx+12) = sph(i)
923 uparam(idx+13) = t0(i)
924 uparam(idx+14) = xka(i)
925 uparam(idx+15) = xkb(i)
926 uparam(idx+16) = a0(i)
927 uparam(idx+17) = a1(i)
928 uparam(idx+18) = a2(i)
929 uparam(idx+19) = amx(i)
930 uparam(idx+20) = mumx(i)
931 uparam(idx+21) = bunl(i)
932 uparam(idx+22) = nu(i)
933 uparam(idx+23) = pstar(i)
934 uparam(idx+24) = ssp(i)
935 uparam(idx+25) = lc(i)
936 uparam(idx+26) = rho0_(i)*ssp(i)*ssp(i)
937 idx=idx+50
938 ENDDO
939 !I=4
940 uparam(258) = tmelt(4)
941 uparam(259) = thetl(4)
942 uparam(262) = sph(4)
943 uparam(263) = t0(4)
944 uparam(264) = xka(4)
945 uparam(265) = xkb(4)
946 uparam(273) = ssp(4)
947 uparam(274) = lc(4)
948 uparam(275) = rho0_(4)*ssp(4)*ssp(4)
949 uparam(276) = zero
950 !bijective application (in case of new input -iform=12- you must retrieve phase order in legacy buffer)
951 ! jwl is necessarily submat id 4 in legacy buffer, but not necessarily in user input (iform=12)
952 uparam(277) = 1
953 uparam(278) = 2
954 uparam(279) = 3
955 uparam(280) = 4
956 !functions
957 ifunc(01) = iav(1)
958 ifunc(02) = irho(1)
959 ifunc(03) = ie(1)
960 ifunc(04) = iav(2)
961 ifunc(05) = irho(2)
962 ifunc(06) = ie(2)
963 ifunc(07) = iav(3)
964 ifunc(08) = irho(3)
965 ifunc(09) = ie(3)
966 ifunc(10) = ivel
967 ENDIF
968 pm(38) = uparam(42) !VDET
969 parmat(1) = max(c1(1), c1(2), c1(3), c1(4))
970 pm(27) = maxval(ssp(1:4))
971
972 ! Multimaterial data
973 matparam%multimat%nb = 4
974 IF(.NOT.ALLOCATED(matparam%multimat%vfrac))ALLOCATE(matparam%multimat%vfrac(4))
975 IF(.NOT.ALLOCATED(matparam%multimat%mid)) ALLOCATE(matparam%multimat%mid(4))
976 matparam%multimat%vfrac(1:4) = tav(1:4)
977 matparam%multimat%mid(1:4) = tmid(1:4)
978 ipm(20+1:20+4) = tmid(1:4)
979
980 !============================!
981 ! Starter Listing File !
982 !============================!
983 WRITE(iout,997) trim(titr),mat_id,51
984 WRITE(iout,998)
985 IF(is_encrypted)THEN
986 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
987 ELSE
988 IF(iflg /= 12)THEN
989 WRITE(iout, 900)rho0,rhor
990 WRITE(iout,5002)iflag_bak
991 WRITE(iout,5001)pext,vis,visv,av(1),av(2),av(3),av(4)
992 ENDIF
993 !============================!
994 ! IFLG == 0,1,10,11 !
995 !============================!
996 IF(iflg <= 1)THEN
997 p0_glob = p0(1)*av(1)+p0(2)*av(2)+p0(3)*av(3)+p0(4)*av(4)
998 DO i=1,3
999 WRITE(iout,5005)i
1000 WRITE(iout,5010)
1001 WRITE(iout,5011)c0(i),c1(i),c2(i),c3(i),c4(i),c5(i),e0(i),rho0_(i),pmin_(i),p0_glob
1002 IF(y(i) == zero)ipla(i)=0
1003 SELECT CASE(ipla(i))
1004 CASE(0)
1005 IF(gg(i)>zero)THEN
1006 WRITE(iout,5015)
1007 WRITE(iout,5016)gg(i)
1008 ENDIF
1009 CASE(1)
1010 WRITE(iout,5020)
1011 WRITE(iout,5021)y(i),bb(i),n(i),cc(i),epdr(i),cm(i),t0(i),tmelt(i),thetl(i),sph(i),plamx(i),sigmx(i),xka(i),xkb(i)
1012 CASE(2)
1013 WRITE(iout,5025)
1014 WRITE(iout,5026)a0(i),a1(i),a2(i),amx(i),y(i),nu(i),t0(i),tmelt(i),thetl(i),sph(i),plamx(i),sigmx(i),xka(i),xkb(i)
1015 END SELECT
1016 ENDDO
1017 i=4
1018 WRITE(iout,5005)i
1019 WRITE(iout,5030)
1020 WRITE(iout,5031)rho0_(4),e0(4),pmin_(4),c0(4),c1(4),b1,b2,r1,r2,w,vdet,pcj,vcj,ibfrac
1021 !============================!
1022 ! IFLG == 2 !
1023 !============================!
1024 ELSEIF(iflg == 2)THEN
1025 WRITE(iout,1200)abcs,vel,ivel,
1026 & av(1),rho0_(1),e0(1),iav(1),irho(1),ie(1),pmin_(1),c0(1),c1(1),c2(1),c3(1),c4(1),c5(1),
1027 & av(2),rho0_(2),e0(2),iav(2),irho(2),ie(2),pmin_(2),c0(2),c1(2),c2(2),c3(2),c4(2),c5(2),
1028 & av(3),rho0_(3),e0(3),iav(3),irho(3),ie(3),pmin_(3),c0(3),c1(3),c2(3),c3(3),c4(3),c5(3)
1029
1030 !============================!
1031 ! IFLG == 3 !
1032 !============================!
1033 ELSEIF(iflg == 3)THEN
1034 IF(iopt == 1)THEN
1035 WRITE(iout,1299)iopt
1036 ELSE
1037 WRITE(iout,1298)
1038 ENDIF
1039 WRITE(iout,1300)av(1),rho0_(1),e0(1),c0(1),
1040 & av(2),rho0_(2),e0(2),c0(2),
1041 & av(3),rho0_(3),e0(3),c0(3)
1042
1043 !============================!
1044 ! IFLG == 4 !
1045 !============================!
1046 ELSEIF(iflg == 4)THEN
1047 WRITE(iout,1400)abcs,
1048 & av(1),rho0_(1),e0(1),iav(1),irho(1),ie(1),pmin_(1),c0(1),c1(1),c4(1),
1049 & av(2),rho0_(2),e0(2),iav(2),irho(2),ie(2),pmin_(2),c0(2),c1(2),c4(2),
1050 & av(3),rho0_(3),e0(3),iav(3),irho(3),ie(3),pmin_(3),c0(3),c1(3),c4(3)
1051
1052 !============================!
1053 ! IFLG == 5 !
1054 !============================!
1055 ELSEIF(iflg == 5)THEN
1056 WRITE(iout,1500)abcs,
1057 & av(1),rho0_(1),e0(1),iav(1),irho(1),ie(1),pmin_(1),c0(1),c1(1),
1058 & av(2),rho0_(2),e0(2),iav(2),irho(2),ie(2),pmin_(2),c0(2),c1(2),
1059 & av(3),rho0_(3),e0(3),iav(3),irho(3),ie(3),pmin_(3),c0(3),c1(3)
1060 !============================!
1061 ! IFLG == 6 !
1062 !============================!
1063 ELSEIF(iflg == 6)THEN
1064 WRITE(iout,1700)cpext,ctcarp,ctcar
1065 IF(iflg6_submat_defined(1) .OR. iflg6_submat_defined(2) .OR. iflg6_submat_defined(3))
1066 & WRITE(iout,1701)cav(1) ,crho0(1),ce0(1) ,cpm(1) ,cc0(1) ,cssp(1),
1067 & cav(2) ,crho0(2),ce0(2) ,cpm(2) ,cc0(2) ,cssp(2),
1068 & cav(3) ,crho0(3),ce0(3) ,cpm(3) ,cc0(3) ,cssp(3)
1069 !============================!
1070 ! IFLG == 12 !
1071 !============================!
1072 ELSEIF(iflg == 12)THEN
1073 WRITE(iout,5002)12
1074 WRITE(iout,4003)vis,visv
1075 WRITE(iout,4004)
1076 DO i=1,mip
1077 WRITE(iout,4001)i,tmid(i)
1078 ENDDO
1079 WRITE(iout,4004)
1080 DO i=1,mip
1081 WRITE(iout,4002)i,tav(i)
1082 ENDDO
1083 ENDIF
1084 !============================!
1085 IF(niter /= 10)THEN
1086 WRITE(iout,901)niter
1087 ENDIF
1088 ENDIF
1089
1090 pm(38)=vdet
1091 IF(iflg==12)rho0=one
1092 IF(rhor==zero)rhor=rho0
1093 pm(1) =rhor
1094 pm(89)=rho0
1095 pm(91)=maxval(rho0_(1:4))
1096
1097 ! MATPARAM keywords
1098
1099 ! Material compatibility with /EOS option
1100 CALL init_mat_keyword(matparam,"EOS")
1101
1102 ! EOS/Thermo keyword for pressure treatment in elements
1103 CALL init_mat_keyword(matparam,"HYDRO_EOS")
1104
1105 ! Properties compatibility
1106 CALL init_mat_keyword(matparam,"SOLID_ISOTROPIC")
1107
1108 RETURN
1109
1110C======================================================================|
1111 900 FORMAT(
1112 & 5x,'INITIAL DENSITY . . . . . . . . . . . .=',1pg20.13/,
1113 & 5x,'REFERENCE DENSITY . . . . . . . . . . .=',1pg20.13/)
1114 901 FORMAT(
1115 & 5x,'NUMBER OF ITERATION . . . . . . . . . .=',i10/)
1116 997 FORMAT(
1117 & 5x,a,/,
1118 & 5x,'MATERIAL NUMBER . . . . . . . . . . . .=',i10/,
1119 & 5x,'MATERIAL LAW. . . . . . . . . . . . . .=',i10/)
1120 998 FORMAT(
1121 & 5x,' /MAT/LAW51 (MULTIMAT)',/,
1122 & 5x,' ---------------------',/)
1123 1200 FORMAT(
1124 & 5x,'INLET CONDITION------------------------',/
1125 & 5x,'Abcissa scale factor. . . . . . . . . .=',e12.4/
1126 & 5x,'Velocity Scale Factor . . . . . . . . .=',e12.4/
1127 & 5x,'Velocity Function ID. . . . . . . . . .=',i10/
1128 & 5x,'SUBMAT-1 VOLUME RATIO. . . . . . . . . .=',e12.4/
1129 & 5x,'SUBMAT-1 reference DENSITY . . . . . . .=',e12.4/
1130 & 5x,'SUBMAT-1 E0 initial ENERGY/unit volume .=',e12.4/
1131 & 5x,'SUBMAT-1 Volume ratio FUNCTION ID . . . =',i10/
1132 & 5x,'SUBMAT-1 Density FUNCTION ID . . . . . .=',i10/
1133 & 5x,'SUBMAT-1 Energy FUNCTION ID. . . . . . .=',i10/
1134 & 5x,'SUBMAT-1 Minimum PRESSURE. . . . . . . .=',e12.4/
1135 & 5x,'SUBMAT-1 CO initial PRESSURE . . . . . .=',e12.4/
1136 & 5x,' P =C0 +C1 mu +C2 mu^2 +C3 mu^3 + (C4 + C5mu)Eint/Vo '/
1137 & 5x,'SUBMAT-1 C1. . . . . . . . . . . . . . .=',e12.4/
1138 & 5x,'SUBMAT-1 C2. . . . . . . . . . . . . . .=',e12.4/
1139 & 5x,'SUBMAT-1 C3. . . . . . . . . . . . . . .=',e12.4/
1140 & 5x,'SUBMAT-1 C4. . . . . . . . . . . . . . .=',e12.4/
1141 & 5x,'SUBMAT-1 C5. . . . . . . . . . . . . . .=',e12.4/
1142 & 5x,'SUBMAT-2 VOLUME RATIO. . . . . . . . . .=',e12.4/
1143 & 5x,'SUBMAT-2 reference DENSITY . . . . . . .=',e12.4/
1144 & 5x,'SUBMAT-2 E0 initial ENERGY/unit volume .=',e12.4/
1145 & 5x,'SUBMAT-2 Volume ratio FUNCTION ID . . . =',i10/
1146 & 5x,'SUBMAT-2 Density FUNCTION ID . . . . . .=',i10/
1147 & 5x,'SUBMAT-2 Energy FUNCTION ID. . . . . . .=',i10/
1148 & 5x,'SUBMAT-2 Minimum PRESSURE. . . . . . . .=',e12.4/
1149 & 5x,'SUBMAT-2 CO initial PRESSURE . . . . . .=',e12.4/
1150 & 5x,'SUBMAT-2 C1. . . . . . . . . . . . . . .=',e12.4/
1151 & 5x,'SUBMAT-2 C2. . . . . . . . . . . . . . .=',e12.4/
1152 & 5x,'SUBMAT-2 C3. . . . . . . . . . . . . . .=',e12.4/
1153 & 5x,'SUBMAT-2 C4. . . . . . . . . . . . . . .=',e12.4/
1154 & 5x,'SUBMAT-2 C5. . . . . . . . . . . . . . .=',e12.4/
1155 & 5x,'SUBMAT-3 VOLUME RATIO. . . . . . . . . .=',e12.4/
1156 & 5x,'SUBMAT-3 reference DENSITY . . . . . . .=',e12.4/
1157 & 5x,'SUBMAT-3 E0 initial ENERGY/unit volume .=',e12.4/
1158 & 5x,'SUBMAT-3 Volume ratio FUNCTION ID . . . =',i10/
1159 & 5x,'SUBMAT-3 Density FUNCTION ID . . . . . .=',i10/
1160 & 5x,'SUBMAT-3 Energy FUNCTION ID. . . . . . .=',i10/
1161 & 5x,'SUBMAT-3 Minimum PRESSURE. . . . . . . .=',e12.4/
1162 & 5x,'SUBMAT-3 CO initial PRESSURE . . . . . .=',e12.4/
1163 & 5x,'SUBMAT-3 C1. . . . . . . . . . . . . . .=',e12.4/
1164 & 5x,'SUBMAT-3 C2. . . . . . . . . . . . . . .=',e12.4/
1165 & 5x,'SUBMAT-3 C3. . . . . . . . . . . . . . .=',e12.4/
1166 & 5x,'SUBMAT-3 C4. . . . . . . . . . . . . . .=',e12.4/
1167 & 5x,'SUBMAT-3 C5. . . . . . . . . . . . . . .=',e12.4//)
1168 1298 FORMAT(
1169 & 5x,'OUTLET CONDITION-----------------------')
1170 1299 FORMAT(
1171 & 5x,'OUTLET CONDITION-----------------------',/
1172 & 5x,'IOPT FLAG . . . . . . . . . . . . . . .=',i10)
1173 1300 FORMAT(
1174 & 5x,'SUBMAT-1 VOLUME RATIO. . . . . . . . . .=',e12.4/
1175 & 5x,'SUBMAT-1 reference DENSITY . . . . . . .=',e12.4/
1176 & 5x,'SUBMAT-1 E0 initial ENERGY/unit volume .=',e12.4/
1177 & 5x,'SUBMAT-1 PO initial PRESSURE . . . . . .=',e12.4/
1178 & 5x,'SUBMAT-2 VOLUME RATIO. . . . . . . . . .=',e12.4/
1179 & 5x,'SUBMAT-2 reference DENSITY . . . . . . .=',e12.4/
1180 & 5x,'SUBMAT-2 E0 initial ENERGY/unit volume .=',e12.4/
1181 & 5x,'SUBMAT-2 PO initial PRESSURE . . . . . .=',e12.4/
1182 & 5x,'SUBMAT-3 VOLUME RATIO. . . . . . . . . .=',e12.4/
1183 & 5x,'SUBMAT-3 reference DENSITY . . . . . . .=',e12.4/
1184 & 5x,'SUBMAT-3 E0 initial ENERGY/unit volume .=',e12.4/
1185 & 5x,'SUBMAT-3 PO initial PRESSURE . . . . . .=',e12.4//)
1186 1400 FORMAT(
1187 & 5x,'INLET STAGNATION PRESSURE (Perfect Gas)',/
1188 & 5x,'Abcissa scale factor. . . . . . . . . .=',e12.4/
1189 & 5x,'SUBMAT-1 VOLUME RATIO. . . . . . . . . .=',e12.4/
1190 & 5x,'SUBMAT-1 reference DENSITY . . . . . . .=',e12.4/
1191 & 5x,'SUBMAT-1 E0 initial ENERGY/unit volume .=',e12.4/
1192 & 5x,'SUBMAT-1 Volume ratio FUNCTION ID . . . =',i10/
1193 & 5x,'SUBMAT-1 Density FUNCTION ID . . . . . .=',i10/
1194 & 5x,'SUBMAT-1 Energy FUNCTION ID. . . . . . .=',i10/
1195 & 5x,'SUBMAT-1 Minimum PRESSURE. . . . . . . .=',e12.4/
1196 & 5x,' P =C0 +C1 mu +C2 mu^2 +C3 mu^3 + (C4 + C5mu)Eint/Vo '/
1197 & 5x,'SUBMAT-1 CO initial PRESSURE . . . . . .=',e12.4/
1198 & 5x,'SUBMAT-1 C1. . . . . . . . . . . . . . .=',e12.4/
1199 & 5x,'SUBMAT-1 C4 (gamma-1). . . . . . . . . .=',e12.4/
1200 & 5x,'SUBMAT-2 VOLUME RATIO. . . . . . . . . .=',e12.4/
1201 & 5x,'SUBMAT-2 reference DENSITY . . . . . . .=',e12.4/
1202 & 5x,'SUBMAT-2 E0 initial ENERGY/unit volume .=',e12.4/
1203 & 5x,'SUBMAT-2 Volume ratio FUNCTION ID . . . =',i10/
1204 & 5x,'SUBMAT-2 Density FUNCTION ID . . . . . .=',i10/
1205 & 5x,'SUBMAT-2 Energy FUNCTION ID. . . . . . .=',i10/
1206 & 5x,'SUBMAT-2 Minimum PRESSURE. . . . . . . .=',e12.4/
1207 & 5x,'SUBMAT-2 CO initial PRESSURE . . . . . .=',e12.4/
1208 & 5x,'SUBMAT-2 C1. . . . . . . . . . . . . . .=',e12.4/
1209 & 5x,'SUBMAT-2 C4 (gamma-1). . . . . . . . . .=',e12.4/
1210 & 5x,'SUBMAT-3 VOLUME RATIO. . . . . . . . . .=',e12.4/
1211 & 5x,'SUBMAT-3 reference DENSITY . . . . . . .=',e12.4/
1212 & 5x,'SUBMAT-3 E0 initial ENERGY/unit volume .=',e12.4/
1213 & 5x,'SUBMAT-3 Volume ratio FUNCTION ID . . . =',i10/
1214 & 5x,'SUBMAT-3 Density FUNCTION ID . . . . . .=',i10/
1215 & 5x,'SUBMAT-3 Energy FUNCTION ID. . . . . . .=',i10/
1216 & 5x,'SUBMAT-3 Minimum PRESSURE. . . . . . . .=',e12.4/
1217 & 5x,'SUBMAT-3 CO initial PRESSURE . . . . . .=',e12.4/
1218 & 5x,'SUBMAT-3 C1. . . . . . . . . . . . . . .=',e12.4/
1219 & 5x,'SUBMAT-3 C4 (gamma-1). . . . . . . . . .=',e12.4//)
1220 1500 FORMAT(
1221 & 5x,'INLET STAGNATION PRESSURE (Liquid) ----',/
1222 & 5x,'Abcissa scale factor. . . . . . . . . .=',e12.4/
1223 & 5x,'SUBMAT-1 VOLUME RATIO. . . . . . . . . .=',e12.4/
1224 & 5x,'SUBMAT-1 reference DENSITY . . . . . . .=',e12.4/
1225 & 5x,'SUBMAT-1 E0 initial ENERGY/unit volume .=',e12.4/
1226 & 5x,'SUBMAT-1 Volume ratio FUNCTION ID . . . =',i10/
1227 & 5x,'SUBMAT-1 Density FUNCTION ID . . . . . .=',i10/
1228 & 5x,'SUBMAT-1 Energy FUNCTION ID. . . . . . .=',i10/
1229 & 5x,'SUBMAT-1 Minimum PRESSURE. . . . . . . .=',e12.4/
1230 & 5x,' P =C0 +C1 mu +C2 mu^2 +C3 mu^3 + (C4 + C5mu)Eint/Vo '/
1231 & 5x,'SUBMAT-1 CO initial PRESSURE . . . . . .=',e12.4/
1232 & 5x,'SUBMAT-1 C1 (bulk modulus) . . . . . . .=',e12.4/
1233 & 5x,'SUBMAT-2 VOLUME RATIO. . . . . . . . . .=',e12.4/
1234 & 5x,'SUBMAT-2 reference DENSITY . . . . . . .=',e12.4/
1235 & 5x,'SUBMAT-2 E0 initial ENERGY/unit volume .=',e12.4/
1236 & 5x,'SUBMAT-2 Volume ratio FUNCTION ID . . . =',i10/
1237 & 5x,'SUBMAT-2 Density FUNCTION ID . . . . . .=',i10/
1238 & 5x,'SUBMAT-2 Energy FUNCTION ID. . . . . . .=',i10/
1239 & 5x,'SUBMAT-2 Minimum PRESSURE. . . . . . . .=',e12.4/
1240 & 5x,'SUBMAT-2 CO initial PRESSURE . . . . . .=',e12.4/
1241 & 5x,'SUBMAT-2 C1 (bulk modulus) . . . . . . .=',e12.4/
1242 & 5x,'SUBMAT-3 VOLUME RATIO. . . . . . . . . .=',e12.4/
1243 & 5x,'SUBMAT-3 reference DENSITY . . . . . . .=',e12.4/
1244 & 5x,'SUBMAT-3 E0 initial ENERGY/unit volume .=',e12.4/
1245 & 5x,'SUBMAT-3 Volume ratio FUNCTION ID . . . =',i10/
1246 & 5x,'SUBMAT-3 Density FUNCTION ID . . . . . .=',i10/
1247 & 5x,'SUBMAT-3 Energy FUNCTION ID. . . . . . .=',i10/
1248 & 5x,'SUBMAT-3 Minimum PRESSURE. . . . . . . .=',e12.4/
1249 & 5x,'SUBMAT-3 CO initial PRESSURE . . . . . .=',e12.4/
1250 & 5x,'SUBMAT-3 C1 (bulk modulus) . . . . . . .=',e12.4//)
1251 1700 FORMAT(
1252 & 5x,'NON REFLECTING FRONTIER ----------------',/
1253 & 5x,'EXTERNAL PRESSURE . . . . . . . . . . .=',a /
1254 & 5x,'CHARACTERISTIC TIME FOR PRES RELAXATION =',a /
1255 & 5x,'CHARACTERISTIC TIME FOR VFRAC RELAXATION=',a //)
1256 1701 FORMAT(
1257 & 5x,'SUBMAT-1 AV10 VOLUME FRACTION. . . . . .=',a /
1258 & 5x,'SUBMAT-1 RHO10 REFERENCE DENSITY . . . .=',a /
1259 & 5x,'SUBMAT-1 E01 VOLUMETRIC ENERGY . . . . .=',a /
1260 & 5x,'SUBMAT-1 PM1 CUT OFF PRESSURE. . . . . .=',a /
1261 & 5x,'SUBMAT-1 P01 INITIAL PRESSURE. . . . . .=',a /
1262 & 5x,'SUBMAT-1 SSP1 SOUND SPEED. . . . . . . .=',a /
1263 & 5x,'SUBMAT-2 AV20 VOLUME FRACTION. . . . . .=',a /
1264 & 5x,'SUBMAT-2 RHO20 REFERENCE DENSITY . . . .=',a /
1265 & 5x,'SUBMAT-2 E02 VOLUMETRIC ENERGY . . . . .=',a /
1266 & 5x,'SUBMAT-2 PM2 CUT OFF PRESSURE. . . . . .=',a /
1267 & 5x,'SUBMAT-2 P02 INITIAL PRESSURE. . . . . .=',a /
1268 & 5x,'SUBMAT-2 SSP2 SOUND SPEED. . . . . . . .=',a /
1269 & 5x,'SUBMAT-3 AV30 VOLUME FRACTION. . . . . .=',a /
1270 & 5x,'SUBMAT-3 RHO30 REFERENCE DENSITY . . . .=',a /
1271 & 5x,'SUBMAT-3 E03 VOLUMETRIC ENERGY . . . . .=',a /
1272 & 5x,'SUBMAT-3 PM3 CUT OFF PRESSURE. . . . . .=',a /
1273 & 5x,'SUBMAT-3 P03 INITIAL PRESSURE. . . . . .=',a /
1274 & 5x,'SUBMAT-3 SSP3 SOUND SPEED. . . . . . . .=',a //)
1275 4001 FORMAT(
1276 & 5x,'SUBMATERIAL-',i1,' ID = ',i10)
1277 4002 FORMAT(
1278 & 5x,'SUBMATERIAL-',i1,' Volume Fraction = ',f12.10)
1279 4003 FORMAT(
1280 & 5x,'SHEAR KINEMATIC VISCOSITY. . . . . . . =',e12.4/
1281 & 5x,'SPHERICAL KINEMATIC VISCOSITY. . . . . =',e12.4)
1282 4004 FORMAT(
1283 & 5x,'____________________________________________________')
1284 5001 FORMAT(
1285 & 5x,'EXTERNAL PRESSURE. . . . . . . . . . . =',e12.4/
1286 & 5x,'SHEAR KINEMATIC VISCOSITY. . . . . . . =',e12.4/
1287 & 5x,'SPHERICAL KINEMATIC VISCOSITY. . . . . =',e12.4/
1288 & 5x,'____________________________________________________',/
1289 & 5x,'VOLUME FRACTION - SUBMAT-1 . . . . . . =',f12.10/
1290 & 5x,'VOLUME FRACTION - SUBMAT-2 . . . . . . =',f12.10/
1291 & 5x,'VOLUME FRACTION - SUBMAT-3 . . . . . . =',f12.10/
1292 & 5x,'VOLUME FRACTION - SUBMAT-4 . . . . . . =',f12.10)
1293 5002 FORMAT(
1294 & 5x,'FORMULATION FLAG . . . . . . . . . . . = ',i2)
1295 5005 FORMAT(
1296 & 5x,'__________________________',/,
1297 & 5x,'+S U B M A T E R I A L - ',i1)
1298 5010 FORMAT(
1299 & 5x,'|',/,
1300 & 5x,'+----POLYNOMIAL EoS',/,
1301 & 5x,'| --------------')
1302 5011 FORMAT(
1303 & 5x,'| C0 . . . . . . . . . . . . . . . .=',1pg20.13/,
1304 & 5x,'| C1. . . . . . . . . . . . . . . . =',1pg20.13/,
1305 & 5x,'| C2. . . . . . . . . . . . . . . . =',1pg20.13/,
1306 & 5x,'| C3. . . . . . . . . . . . . . . . =',1pg20.13/,
1307 & 5x,'| C4. . . . . . . . . . . . . . . . =',1pg20.13/,
1308 & 5x,'| C5. . . . . . . . . . . . . . . . =',1pg20.13/,
1309 & 5x,'| E0. . . . . . . . . . . . . . . . =',1pg20.13/,
1310 & 5x,'| RHO0. . . . . . . . . . . . . . . =',1pg20.13/,
1311 & 5x,'| PMIN. . . . . . . . . . . . . . . =',1pg20.13/,
1312 & 5x,'| INITIAL PRESSURE (COMPUTED) . . . =',1pg20.13)
1313 5015 FORMAT(
1314 & 5x,'|',/,
1315 & 5x,'+----ELASTIC SOLID',/,
1316 & 5x,'| -------------')
1317 5016 FORMAT(
1318 & 5x,'| G SHEAR MODULUS . . . . . . . . . =',e12.4)
1319 5020 FORMAT(
1320 & 5x,'|',/,
1321 & 5x,'+----JOHNSON-COOK YIELD CRITERIA',/,
1322 & 5x,'| ---------------------------')
1323 5021 FORMAT(
1324 & 5x,'| G SHEAR MODULUS. . . . . . . =',e12.4/
1325 & 5x,'| A YIELD STRESS . . . . . . . =',e12.4/
1326 & 5x,'| B YIELD FACTOR . . . . . . . =',e12.4/
1327 & 5x,'| N YIELD EXPONENT . . . . . . =',e12.4/
1328 & 5x,'| C STRAIN RATE FACTOR . . . . =',e12.4/
1329 & 5x,'| EPS0 REFERENCE STRAIN RATE. . . =',e12.4/
1330 & 5x,'| M THERMAL EXPONENT . . . . . =',e12.4/
1331 & 5x,'| T0 INITIAL TEMPERATURE. . . . =',e12.4/
1332 & 5x,'| TMELT MELTING TEMPERATURE. . . . =',e12.4/
1333 & 5x,'| TLIM TEMPERATURE LIMIT. . . . . =',e12.4/
1334 & 5x,'| RHO.CP SPECIFIC HEAT (rho0 Cv). . =',e12.4/
1335 & 5x,'| MAXIMUM PLASTIC STRAIN. . . . . . =',e12.4/
1336 & 5x,'| MAXIMUM STRESS. . . . . . . . . . =',e12.4/
1337 & 5x,'| KA . . . . . . . . . . . . . . . =',e12.4/
1338 & 5x,'| KB . . . . . . . . . . . . . . . =',e12.4)
1339 5025 FORMAT(
1340 & 5x,'|',/,
1341 & 5x,'+----DRUCKER-PRAGER YIELD CRITERIA ',/,
1342 & 5x,'| ----------------------------- ')
1343 5026 FORMAT(
1344 & 5x,'| A0 YIELD COEFFICIENT 1. . . . =',e12.4/
1345 & 5x,'| A1 YIELD COEFFICIENT 2. . . . =',e12.4/
1346 & 5x,'| A2 YIELD COEFFICIENT 3. . . . =',e12.4/
1347 & 5x,'| A-MAX MAXIMUM YIELD VALUE. . . . =',e12.4/
1348 & 5x,'| E YOUNG MODULUS. . . . . . . =',e12.4/
1349 & 5x,'| NU YOUNG MODULUS. . . . . . . =',e12.4/
1350 & 5x,'| T0 INITIAL TEMPERATURE. . . . =',e12.4/
1351 & 5x,'| TMELT MELTING TEMPERATURE. . . . =',e12.4/
1352 & 5x,'| TLIM TEMPERATURE LIMIT. . . . . =',e12.4/
1353 & 5x,'| RHO.CP SPECIFIC HEAT (rho0 Cv). . =',e12.4/
1354 & 5x,'| MAXIMUM PLASTIC STRAIN. . . . . . =',e12.4/
1355 & 5x,'| MAXIMUM STRESS. . . . . . . . . . =',e12.4/
1356 & 5x,'| KA . . . . . . . . . . . . . . . =',e12.4/
1357 & 5x,'| KB . . . . . . . . . . . . . . . =',e12.4)
1358 5030 FORMAT(
1359 & 5x,'|',/,
1360 & 5x,'+----JWL EoS',/,
1361 & 5x,'| -------')
1362 5031 FORMAT(
1363 & 5x,'| RHO0 INITIAL DENSITY . . . . . . .=',e12.4/
1364 & 5x,'| E0 INITIAL ENERGY/UNIT VOLUME . =',e12.4/
1365 & 5x,'| PMIN MINIMUM PRESSURE. . . . . . .=',e12.4/
1366 & 5x,'| C0 INITIAL PRESSURE . . . . . . =',e12.4/
1367 & 5x,'| C1 UNREACTED BULK MODULUS . . . =',e12.4/
1368 & 5x,'| A . . . . . . . . . . . . . . . . =',e12.4/
1369 & 5x,'| B . . . . . . . . . . . . . . . . =',e12.4/
1370 & 5x,'| R1. . . . . . . . . . . . . . . . =',e12.4/
1371 & 5x,'| R2. . . . . . . . . . . . . . . . =',e12.4/
1372 & 5x,'| W . . . . . . . . . . . . . . . . =',e12.4/
1373 & 5x,'| VDET DETONATION VELOCITY. . . . . =',e12.4/
1374 & 5x,'| PCJ PRESSURE AT C-J STATE . . . .=',e12.4/
1375 & 5x,'| VCJ VOLUME AT C-J STATE . . . . .=',e12.4/
1376 & 5x,'| FLAG FOR BURN FRACTION METHOD . . =',i10)
#define my_real
Definition cppsort.cpp:32
subroutine hm_get_float_array_index(name, rval, index, is_available, lsubmodel, unitab)
subroutine hm_get_float_array_index_dim(name, dim_fac, index, is_available, lsubmodel, unitab)
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_floatv_dim(name, dim_fac, is_available, lsubmodel, unitab)
subroutine hm_get_int_array_index(name, ival, index, is_available, lsubmodel)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_is_encrypted(is_encrypted)
subroutine hm_read_mat51_iform11(av, rho0_, e0, pm, c0, c1, c2, c3, c4, c5, ipla, gg, y, bb, n, cc, epdr, cm, t0, tmelt, thetl, sph, plamx, sigmx, xka, xkb, nu, a0, a1, a2, amx, b1, b2, r1, r2, w, vdet, pcj, ibfrac, pext, vis, visv, lsubmodel, unitab)
function ie_bound(pext, pm, c0, c1, c2, c3, c4, c5, e0)
Definition ie_bound.F:30
subroutine init_mat_keyword(matparam, keyword)
subroutine lecm51__check_initial_state(av, r0, c0, c1, c2, c3, c4, c5, e0, pm, rho0, rhor, iexp, pext, iflg, a1, a2, pla, id, titr, ssp1, ssp2, ssp3, ssp4, lc1, lc2, lc3, lc4, p0a)
#define max(a, b)
Definition macros.h:21
type(ale_) ale
Definition ale_mod.F:249
type(alemuscl_param_) alemuscl_param
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:889