OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
eosmain.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!|| eosmain_mod ../common_source/eos/eosmain.F
25!||--- called by ------------------------------------------------------
26!|| ebcs8_inlet ../engine/source/boundary_conditions/ebcs/ebcs8_inlet.F90
27!|| inigrav_eos ../starter/source/initial_conditions/inigrav/inigrav_eos.F
28!|| m12law ../engine/source/materials/mat/mat012/m12law.F
29!|| m51init ../starter/source/materials/mat/mat051/m51init.F
30!|| mmain ../engine/source/materials/mat_share/mmain.F90
31!|| multi_solve_eint ../engine/source/multifluid/multi_solve_eint.F90
32!|| multi_submatlaw ../engine/source/multifluid/multi_submatlaw.F
33!|| sigeps75 ../engine/source/materials/mat/mat075/sigeps75.F
34!||====================================================================
36 contains
37!||====================================================================
38!|| eosmain ../common_source/eos/eosmain.F
39!||--- called by ------------------------------------------------------
40!|| ebcs8_inlet ../engine/source/boundary_conditions/ebcs/ebcs8_inlet.F90
41!|| inigrav_eos ../starter/source/initial_conditions/inigrav/inigrav_eos.F
42!|| m12law ../engine/source/materials/mat/mat012/m12law.F
43!|| m51init ../starter/source/materials/mat/mat051/m51init.f
44!|| mmain ../engine/source/materials/mat_share/mmain.F90
45!|| multi_solve_eint ../engine/source/multifluid/multi_solve_eint.F90
46!|| multi_submatlaw ../engine/source/multifluid/multi_submatlaw.F
47!|| sigeps75 ../engine/source/materials/mat/mat075/sigeps75.F
48!||--- calls -----------------------------------------------------
49!|| compaction ../common_source/eos/compaction.F90
50!|| compaction2 ../common_source/eos/compaction2.F90
51!|| compaction_tab ../common_source/eos/compaction_tab.F90
52!|| eosexponential ../common_source/eos/eosexponential.F90
53!|| eoslinear ../common_source/eos/eoslinear.F
54!|| eospolyno ../common_source/eos/eospolyno.F
55!|| gruneisen ../common_source/eos/gruneisen.F
56!|| idealgas ../common_source/eos/idealgas.F
57!|| idealgas_vt ../common_source/eos/idealgas_vt.F
58!|| jwl ../common_source/eos/jwl.F
59!|| lszk ../common_source/eos/lszk.F
60!|| murnaghan ../common_source/eos/murnaghan.F
61!|| nasg ../common_source/eos/nasg.F
62!|| noble_abel ../common_source/eos/noble_abel.F
63!|| osborne ../common_source/eos/osborne.F
64!|| powder_burn ../common_source/eos/powder_burn.F
65!|| puff ../common_source/eos/puff.F
66!|| sesame ../common_source/eos/sesame.F
67!|| stiffgas ../common_source/eos/stiffgas.F
68!|| tabulated ../common_source/eos/tabulated.F
69!|| tillotson ../common_source/eos/tillotson.F
70!||--- uses -----------------------------------------------------
71!|| compaction2_mod ../common_source/eos/compaction2.F90
72!|| compaction_mod ../common_source/eos/compaction.F90
73!|| compaction_tab_mod ../common_source/eos/compaction_tab.F90
74!|| eos_param_mod ../common_source/modules/mat_elem/eos_param_mod.f90
75!|| eosexponential_mod ../common_source/eos/eosexponential.F90
76!|| eoslinear_mod ../common_source/eos/eoslinear.F
77!|| eospolyno_mod ../common_source/eos/eospolyno.F
78!|| gruneisen_mod ../common_source/eos/gruneisen.F
79!|| idealgas_mod ../common_source/eos/idealgas.F
80!|| idealgas_vt_mod ../common_source/eos/idealgas_vt.F
81!|| jwl_mod ../common_source/eos/jwl.F
82!|| lszk_mod ../common_source/eos/lszk.F
83!|| matparam_def_mod ../common_source/modules/mat_elem/matparam_def_mod.F90
84!|| murnaghan_mod ../common_source/eos/murnaghan.F
85!|| nasg_mod ../common_source/eos/nasg.F
86!|| noble_abel_mod ../common_source/eos/noble_abel.F
87!|| osborne_mod ../common_source/eos/osborne.F
88!|| powder_burn_mod ../common_source/eos/powder_burn.F
89!|| puff_mod ../common_source/eos/puff.F
90!|| sesame_mod ../common_source/eos/sesame.F
91!|| stiffgas_mod ../common_source/eos/stiffgas.F
92!|| tabulated_mod ../common_source/eos/tabulated.F
93!|| tillotson_mod ../common_source/eos/tillotson.F
94!||====================================================================
95 SUBROUTINE eosmain(IFLAG ,NEL ,EOSTYP ,PM ,OFF ,EINT ,
96 2 RHO ,RHO0 ,MU ,MU2 ,ESPE ,
97 3 DVOL ,DF ,VNEW ,MAT ,PSH ,
98 4 PNEW ,DPDM ,DPDE ,THETA ,
99 5 BUFMAT,SIG ,MU_BAK ,MLW ,
100 6 NPF ,TF ,VAREOS ,NVAREOS ,MAT_PARAM,
101 7 BFRAC ,NVARTMP,VARTMP)
102C-----------------------------------------------
103C D e s c r i p t i o n
104C-----------------------------------------------
105C This subroutines call the expected EOS solver
106C depending on EOSTYP(INTEGER) value.
107C IFLAG:0 staggered scheme, Cranck-Nicolson scheme / semi-implicit step 0
108C IFLAG:1 sstaggered scheme, Cranck-Nicolson scheme / semi-implicit step 1
109C IFLAG:2 collocated scheme and others, Euler scheme
110 !--------------------------------------------------!--------------------------!-----------!
111 ! MODULE ! IEOS ! EOS ! VERSION !
112 !--------------------------------------------------!--------!-----------------!-----------!
113 USE eospolyno_mod , ONLY : eospolyno ! 1 ! POLYNOMIAL ! 12.0 !
114 USE gruneisen_mod , ONLY : gruneisen ! 2 ! GRUNEISEN ! 12.0 !
115 USE tillotson_mod , ONLY : tillotson ! 3 ! TILLOTSON ! 12.0 !
116 USE puff_mod , ONLY : puff ! 4 ! PUFF ! 12.0 !
117 USE sesame_mod , ONLY : sesame ! 5 ! SESAME ! 12.0 !
118 USE noble_abel_mod , ONLY : noble_abel ! 6 ! NOBLE-ABEL ! 2017.0 !
119 USE idealgas_mod , ONLY : idealgas ! 7 ! IDEAL GAS ! 2018.0 !
120 USE murnaghan_mod , ONLY : murnaghan ! 8 ! MUNAGHAN ! 2018.0 !
121 USE osborne_mod , ONLY : osborne ! 9 ! OSBORNE ! 2018.0 !
122 USE stiffgas_mod , ONLY : stiffgas ! 10 ! STIFFENED GAS ! 2018.0 !
123 USE lszk_mod , ONLY : lszk ! 11 ! LSZK ! 2018.0 !
124 USE powder_burn_mod , ONLY : powder_burn ! 12 ! POWDER-BURN ! 2019.1 !
125 USE compaction_mod , ONLY : compaction ! 13 ! COMPACTION ! 2019.1 !
126 USE nasg_mod , ONLY : nasg ! 14 ! NASG ! 2020.0 !
127 USE jwl_mod , ONLY : jwl ! 15 ! JWL ! internal use : INIMAP
128 USE idealgas_vt_mod , ONLY : idealgas_vt ! 16 ! IDEALGAS_VT ! 2022.0 !
129 USE tabulated_mod , ONLY : tabulated ! 17 ! TABULATED ! 2022.2 !
130 USE eoslinear_mod , ONLY : eoslinear ! 18 ! LINEAR ! 2019.0 !
131 USE eosexponential_mod , ONLY : eosexponential ! 19 ! EXPONENTIAL ! 2024.1 !
132 USE compaction2_mod , ONLY : compaction2 ! 20 ! COMPACTION2 ! 2025.1 !
133 USE compaction_tab_mod , ONLY : compaction_tab ! 21 ! COMPACTION_TAB ! 2026.0 !
134 !--------------------------------------------------!--------!-----------------!-----------!
135!
136! input EINT(:) : rho.e (law151 , unit J/m**3)
137! rho.e.V (other laws, unit J)
138!
139! output EPSE(:) : rho0.e (=E) (all laws, used such as P_eos:=P(mu,E) )
140!
141C-----------------------------------------------
142C M o d u l e s
143C-----------------------------------------------
144 USE eos_param_mod ,ONLY : analy_temp
145 USE matparam_def_mod , ONLY : matparam_struct_
146 USE compaction_mod , ONLY : compaction
147 USE compaction2_mod , ONLY : compaction2
148 USE compaction_tab_mod , ONLY : compaction_tab
149 USE eosexponential_mod , ONLY : eosexponential
150C-----------------------------------------------
151C I m p l i c i t T y p e s
152C-----------------------------------------------
153#include "implicit_f.inc"
154C-----------------------------------------------
155C G l o b a l P a r a m e t e r s
156C-----------------------------------------------
157#include "param_c.inc"
158C-----------------------------------------------
159C C o m m o n B l o c k s
160C-----------------------------------------------
161#include "com04_c.inc"
162#include "com08_c.inc"
163#include "tabsiz_c.inc"
164C-----------------------------------------------
165C D u m m y A r g u m e n t s
166C-----------------------------------------------
167 INTEGER, INTENT(IN) :: IFLAG !< IFLAG 0,1,2 : 0=explicit (or semi-implicit pass 1), 1=semi-implicit (pass2), 2=collocated
168 INTEGER, INTENT(IN) :: NEL !< number of elements
169 INTEGER, INTENT(IN) :: EOSTYP !< EoS identifier (1:polynomial, 2:gruneisen, 3:tillotson, 4:puff, 5:sesame, etc...)
170 my_real, INTENT(IN) :: PM(NPROPM,NUMMAT) !< material properties array
171 my_real, INTENT(IN) :: OFF(NEL) !< Element failure factor (usually 1.0)
172 my_real, INTENT(INOUT) :: EINT(NEL) !< Internal Energy (SI:J)
173 my_real, INTENT(IN) :: rho(nel) !< Mass density
174 my_real, INTENT(IN) :: rho0(nel) !< Reference mass density
175 my_real, INTENT(IN) :: mu(nel) !< volumetric strain
176 my_real, INTENT(INOUT) :: mu2(nel) !< mu*mu
177 my_real, INTENT(INOUT) :: espe(nel) !< rho0.e (used such as P_eos:=P(mu,E) )
178 my_real, INTENT(IN) :: dvol(nel) !< voluem change (including advected flow)
179 my_real, INTENT(IN) :: df(nel) !< rho0/rho
180 my_real, INTENT(IN) :: vnew(nel) !< current volume
181 INTEGER, INTENT(IN) :: MAT(NEL) !< material internal identifier
182 my_real, INTENT(INOUT) :: psh(nel) !< pressure shift
183 my_real, INTENT(INOUT) :: pnew(nel) !< curent pressure
184 my_real, INTENT(INOUT) :: dpdm(nel) !< total derivative dP/d(mu)
185 my_real, INTENT(INOUT) :: dpde(nel) !< partial derivative dP/dE where E=Eint/V0 and V0 such as rho0.V0 = rho.V
186 my_real, INTENT(INOUT) :: theta(nel) !< current temperature
187 my_real, INTENT(IN) :: bufmat(sbufmat) !< buffer array for EOS (used by SESAME)
188 my_real, INTENT(IN) :: sig(nel,6) !< stress tensor (used by ideal gas VT)
189 my_real, INTENT(INOUT) :: mu_bak(nel) !< backup for history (used by COMPACTION)
190 INTEGER, INTENT(IN) :: MLW !< current material law type
191 INTEGER, INTENT(IN) :: NPF(SNPC) !< buffer for functions
192 my_real, INTENT(IN) :: tf(stf) !< buffer for functions
193 my_real, INTENT(INOUT) :: bfrac(nel) !< Burn fractions
194 INTEGER, INTENT(IN) :: NVAREOS !< number of additional variables for EOS
195 my_real, INTENT(INOUT) :: vareos(nvareos*nel) !< additional variables for EOS
196 TYPE(matparam_struct_), INTENT(IN) :: MAT_PARAM !< material parameters structure
197 INTEGER ,INTENT(IN) :: NVARTMP !< NUMBER OF TEMPORARY INTERNAL VARIABLES
198 INTEGER ,DIMENSION(NEL,NVARTMP) ,INTENT(INOUT) :: VARTMP !< TEMPORARY INTERNAL VARIABLES
199C-----------------------------------------------
200C L o c a l V a r i a b l e s
201C-----------------------------------------------
202 INTEGER I,ISFLUID
203 my_real :: dtemp(nel) !< temperature increment
204 my_real :: cv !< specific heat at constant volume
205 my_real :: cp !< specific heat at constant pressure
206 my_real :: tab_temp(nel) !< temporary array,tabulated temperatures
207 my_real :: pmin !< minimum pressure allowed (material parameter)
208 my_real :: pold(nel) !< previous pressure (used by IDEALGAS_VT)
209C-----------------------------------------------
210C S o u r c e L i n e s
211C-----------------------------------------------
212 IF(iflag == 0) THEN
213 DO i=1,nel
214 mu2(i)=max(zero,mu(i))**2
215 espe(i)=df(i)*eint(i)/ max(em15,vnew(i)) !ESPE=rho0.e since EINT=rho.e.V and DF=rho0/rho => DF*EINT/V = E
216 ENDDO
217
218 ELSEIF (iflag == 2) THEN
219 !COLLOCATED SCHEME (LAW151 ONLY)
220 DO i = 1, nel
221 IF (vnew(i) > zero) THEN
222 mu2(i)=max(zero,mu(i))**2
223 ENDIF
224 espe(i) = df(i) * eint(i) !law151 : EINT=rho.e
225 ENDDO
226
227 ENDIF
228
229 pmin = pm(37,mat(1)) ! minimum pressure allowed (material parameter)
230
231 SELECT CASE (eostyp)
232
233 CASE (1)
234 !--------------------------------------------------!
235 ! POLYNOMIAL EOS !
236 !--------------------------------------------------!
237 CALL eospolyno(
238 1 iflag ,nel ,pmin ,off ,eint ,mu ,mu2,
239 2 espe ,dvol ,df ,vnew ,psh ,
240 3 pnew ,dpdm ,dpde ,mat_param%EOS)
241
242 CASE (2)
243 !--------------------------------------------------!
244 ! GRUNEISEN EOS !
245 !--------------------------------------------------!
246 CALL gruneisen(
247 1 iflag ,nel ,pmin ,off ,eint ,mu ,mu2,
248 2 espe ,dvol ,df ,vnew ,rho0,
249 3 pnew ,dpdm ,dpde ,psh ,
250 4 mat_param%EOS)
251
252 CASE (3)
253 !--------------------------------------------------!
254 ! TILLOTSON EOS !
255 !--------------------------------------------------!
256 CALL tillotson(
257 1 iflag ,nel ,pmin ,off ,eint ,mu ,mu2,
258 2 espe ,dvol ,df ,vnew ,psh ,
259 3 pnew ,dpdm ,dpde ,vareos ,nvareos,mat_param%EOS)
260
261 CASE (4)
262 !--------------------------------------------------!
263 ! PUFF EOS !
264 !--------------------------------------------------!
265 CALL puff(
266 1 iflag ,nel ,pmin ,off ,eint ,mu ,mu2,
267 2 espe ,dvol ,df ,vnew ,
268 3 pnew ,dpdm ,dpde ,mat_param%EOS)
269
270 CASE (5)
271 !--------------------------------------------------!
272 ! SESAME EOS !
273 !--------------------------------------------------!
274 tab_temp(1:nel) = theta(1:nel)
275 CALL sesame(
276 1 iflag ,nel ,pmin ,off ,eint ,rho ,rho0 ,
277 2 espe ,dvol ,pnew ,dpdm ,dpde,
278 3 tab_temp ,bufmat ,mat_param%EOS)
279
280 CASE(6)
281 !--------------------------------------------------!
282 ! NOBLE-ABEL EOS (COVOLUME EOS) !
283 !--------------------------------------------------!
284 CALL noble_abel(
285 1 iflag , nel ,off ,eint ,mu ,
286 2 espe , dvol ,df ,vnew ,psh ,
287 3 pnew , dpdm ,dpde ,mat_param%EOS)
288
289 CASE(7)
290 !--------------------------------------------------!
291 ! IDEAL GAS EOS !
292 !--------------------------------------------------!
293 CALL idealgas(
294 1 iflag ,nel ,off ,eint ,mu ,
295 2 espe ,dvol ,df ,vnew ,psh ,
296 3 pnew ,dpdm ,dpde ,mat_param%EOS )
297
298 CASE(8)
299 !--------------------------------------------------!
300 ! MURNAGHAN EOS !
301 !--------------------------------------------------!
302 CALL murnaghan(
303 1 iflag ,nel ,pmin,off ,eint ,mu ,
304 2 dvol ,vnew ,psh ,
305 3 pnew ,dpdm ,dpde ,mat_param%EOS)
306
307 CASE(9)
308 !--------------------------------------------------!
309 ! OSBORNE EOS !
310 !--------------------------------------------------!
311 CALL osborne(
312 1 iflag ,nel ,pmin ,off ,eint ,mu ,
313 2 espe ,dvol ,df ,vnew ,rho0 ,psh ,
314 3 pnew ,dpdm ,dpde ,mat_param%EOS)
315
316 CASE(10)
317 !--------------------------------------------------!
318 ! STIFFENED GAS EOS !
319 !--------------------------------------------------!
320 CALL stiffgas(
321 1 iflag , nel ,pmin ,off ,eint ,mu ,mu2,
322 2 espe , dvol ,df ,vnew ,psh ,
323 3 pnew , dpdm ,dpde ,mat_param%EOS)
324
325 CASE(11)
326 !--------------------------------------------------!
327 ! LSZK EOS !
328 !--------------------------------------------------!
329 CALL lszk(
330 1 iflag , nel ,pmin ,off ,eint ,mu ,
331 2 espe , dvol ,df ,vnew ,psh ,
332 3 pnew , dpdm ,dpde ,mat_param%EOS)
333
334 CASE(12)
335 !--------------------------------------------------!
336 ! POWDER BURN EOS !
337 !--------------------------------------------------!
338 CALL powder_burn(npropm, nummat,
339 1 iflag ,nel ,pm ,off ,eint ,mu ,mu2,
340 2 espe ,dvol ,df ,vnew ,mat ,psh ,
341 3 pnew ,dpdm ,dpde ,mat_param,
342 4 vareos ,nvareos ,dt1 ,rho0 ,bfrac)
343
344 CASE(13)
345 !--------------------------------------------------!
346 ! COMPACTION EOS !
347 !--------------------------------------------------!
348 CALL compaction(
349 1 iflag ,nel ,pmin ,off ,eint ,mu ,mu2,
350 2 dvol ,psh ,
351 3 pnew ,dpdm ,dpde ,mu_bak,
352 4 mat_param%EOS)
353
354 CASE(14)
355 !--------------------------------------------------!
356 ! NASG EOS !
357 !--------------------------------------------------!
358 CALL nasg(
359 1 iflag , nel ,pmin ,off ,eint ,mu ,
360 2 espe , dvol ,vnew ,psh ,
361 3 pnew , dpdm ,dpde ,mat_param%EOS)
362 CASE(15)
363 !--------------------------------------------------!
364 ! JWL EOS (internal use law151) !
365 !--------------------------------------------------!
366 CALL jwl(
367 1 iflag ,nel ,pm ,off , eint ,mu ,mu2,
368 2 espe ,dvol ,df ,vnew , mat ,psh ,
369 3 pnew ,dpdm ,dpde )
370
371 CASE(16)
372 !--------------------------------------------------!
373 ! IDEAL GAS VT EOS !
374 !--------------------------------------------------!
375 DO i=1,nel
376 pold(i) = -third*(sig(i,1)+sig(i,2)+sig(i,3))
377 ENDDO
378 CALL idealgas_vt(
379 1 iflag ,nel ,pmin ,off ,eint ,mu ,mu2,
380 2 espe ,dvol ,df ,vnew ,psh ,rho0,rho,
381 3 pnew ,dpdm ,dpde ,tab_temp,pold ,mat_param%EOS)
382
383 CASE(17)
384 !--------------------------------------------------!
385 ! TABULATED EOS !
386 !--------------------------------------------------!
387 CALL tabulated(
388 1 iflag , nel ,pmin ,off ,eint ,mu ,
389 2 espe , dvol ,df ,vnew ,psh ,
390 3 pnew , dpdm ,dpde ,
391 4 npf , tf ,snpc ,stf ,mat_param%EOS)
392
393 CASE (18)
394 !--------------------------------------------------!
395 ! LINEAR EOS !
396 !--------------------------------------------------!
397 CALL eoslinear(
398 1 iflag ,nel ,pmin ,off ,eint ,mu ,
399 2 dvol ,vnew ,psh ,pnew ,dpdm,
400 3 dpde ,mat_param%EOS, pm(104,mat(1)), pm(32,mat(1)))
401
402 CASE (19)
403 !--------------------------------------------------!
404 ! EXPONENTIAL EOS !
405 !--------------------------------------------------!
406 CALL eosexponential(
407 1 iflag ,nel ,off ,eint ,
408 2 dvol ,vnew ,psh ,
409 3 pnew ,dpdm ,dpde ,tt ,
410 4 mat_param%EOS)
411
412 CASE(20)
413 !--------------------------------------------------!
414 ! COMPACTION EOS !
415 !--------------------------------------------------!
416 CALL compaction2(
417 1 iflag ,nel ,pmin ,off ,eint ,mu ,
418 2 dvol ,psh ,
419 3 pnew ,dpdm ,dpde ,nvareos, vareos ,
420 4 npf ,tf ,snpc ,stf ,
421 5 mat_param%EOS)
422
423 CASE(21)
424 !--------------------------------------------------!
425 ! COMPACTION_TAB EOS !
426 !--------------------------------------------------!
427 CALL compaction_tab(
428 1 iflag ,nel ,pmin ,off ,eint ,
429 2 dvol ,psh ,dt1 ,rho ,rho0 ,
430 3 pnew ,dpdm ,dpde ,
431 4 nvareos,vareos,nvartmp,vartmp,
432 5 mat_param%EOS)
433
434 END SELECT
435
436 !--------------------------------------------------!
437 ! TEMPERATURE FROM EOS !
438 !--------------------------------------------------!
439 IF(iflag == 0) RETURN
440
441 dtemp(1:nel) = zero
442
443 SELECT CASE (eostyp)
444
445 CASE (5,16)
446 !tabulated EoS or formal expression
447 !SESAME(5), IDEAL-GAS-VT(16)
448 DO i=1,nel
449 IF(off(i) == one .AND. vnew(i) > zero) THEN
450 theta(i) = tab_temp(i)
451 dtemp(i) = zero
452 ENDIF
453 ENDDO
454
455 CASE(8,13,18,20)
456 !no depedency on internal energy (we may deduce the EoS from strain tensor if Hooke's law is used)
457 cp = pm(69,mat(1)) / rho0(1)
458 cv = cp !suitable approximation since these EoS are modeling solids
459 IF(cv > zero)THEN
460 DO i=1,nel
461 IF(off(i) == one .AND. vnew(i) > zero) THEN
462 dtemp(i) = (pnew(i)+psh(i))*dvol(i)/cv
463 ENDIF
464 ENDDO
465 ENDIF
466
467 CASE DEFAULT
468 !gruneisen parameter is strictly positive (most of EoS)
469 DO i=1,nel
470 IF(pnew(i) > pmin .AND. vnew(i) > zero) THEN
471 dtemp(i) = -off(i)*(theta(i)*dpde(i)*df(i))*dvol(i)/vnew(i) ! no conduction => Cv does not play any role
472 ENDIF
473 ENDDO
474
475 END SELECT
476
477
478 isfluid = mat_param%eos%isfluid
479 if(isfluid == 0 .AND. analy_temp == 0)then
480 !solid material modeling - cutoff in expansion
481 do i=1,nel
482 IF(mu(i) > zero)THEN
483 theta(i) = theta(i) + dtemp(i)
484 endif
485 theta(i) = max(zero,theta(i))
486 end do
487 else
488 !fluid material modeling
489 do i=1,nel
490 theta(i) = theta(i) + dtemp(i)
491 theta(i) = max(zero,theta(i))
492 end do
493 end if
494
495
496 RETURN
497 END SUBROUTINE eosmain
498 END MODULE eosmain_mod
subroutine m51init(ipm, detonators, pm, tb, nuvar, uvar, uparam, x, mat, iparg, iform, ix, nix, ale_connectivity, bufmat, rho0, gbuf, nel, sig, mat_param, npf, tf)
Definition m51init.F:40
#define max(a, b)
Definition macros.h:21
subroutine eoslinear(iflag, nel, pmin, off, eint, mu, dvol, vnew, psh, pnew, dpdm, dpde, eos_struct, c0, bulk)
Definition eoslinear.F:45
subroutine eosmain(iflag, nel, eostyp, pm, off, eint, rho, rho0, mu, mu2, espe, dvol, df, vnew, mat, psh, pnew, dpdm, dpde, theta, bufmat, sig, mu_bak, mlw, npf, tf, vareos, nvareos, mat_param, bfrac, nvartmp, vartmp)
Definition eosmain.F:102
subroutine eospolyno(iflag, nel, pmin, off, eint, mu, mu2, espe, dvol, df, vnew, psh, pnew, dpdm, dpde, eos_struct)
Definition eospolyno.F:45
subroutine gruneisen(iflag, nel, pmin, off, eint, mu, mu2, espe, dvol, df, vnew, rho0, pnew, dpdm, dpde, psh, eos_struct)
Definition gruneisen.F:46
subroutine idealgas(iflag, nel, off, eint, mu, espe, dvol, df, vnew, psh, pnew, dpdm, dpde, eos_struct)
Definition idealgas.F:45
subroutine idealgas_vt(iflag, nel, pmin, off, eint, mu, mu2, espe, dvol, df, vnew, psh, rho0, rho, pnew, dpdm, dpde, theta, pold, eos_struct)
Definition idealgas_vt.F:45
Definition jwl.F:28
subroutine jwl(iflag, nel, pm, off, eint, mu, mu2, espe, dvol, df, vnew, mat, psh, pnew, dpdm, dpde)
Definition jwl.F:40
subroutine lszk(iflag, nel, pmin, off, eint, mu, espe, dvol, df, vnew, psh, pnew, dpdm, dpde, eos_struct)
Definition lszk.F:45
subroutine murnaghan(iflag, nel, pmin, off, eint, mu, dvol, vnew, psh, pnew, dpdm, dpde, eos_struct)
Definition murnaghan.F:45
subroutine nasg(iflag, nel, pmin, off, eint, mu, espe, dvol, vnew, psh, pnew, dpdm, dpde, eos_struct)
Definition nasg.F:45
subroutine noble_abel(iflag, nel, off, eint, mu, espe, dvol, df, vnew, psh, pnew, dpdm, dpde, eos_struct)
Definition noble_abel.F:45
subroutine osborne(iflag, nel, pmin, off, eint, mu, espe, dvol, df, vnew, rho0, psh, pnew, dpdm, dpde, eos_struct)
Definition osborne.F:45
subroutine powder_burn(npropm, nummat, iflag, nel, pm, off, eint, mu, mu2, espe, dvol, df, vnew, mat, psh, pnew, dpdm, dpde, mat_param, vareos, nvareos, dt1, rho0, bfrac)
Definition powder_burn.F:44
subroutine puff(iflag, nel, pmin, off, eint, mu, mu2, espe, dvol, df, vnew, pnew, dpdm, dpde, eos_struct)
Definition puff.F:45
subroutine sesame(iflag, nel, pmin, off, eint, rho, rho0, espe, dvol, pnew, dpdm, dpde, theta, bufmat, eos_struct)
Definition sesame.F:47
subroutine stiffgas(iflag, nel, pmin, off, eint, mu, mu2, espe, dvol, df, vnew, psh, pnew, dpdm, dpde, eos_struct)
Definition stiffgas.F:45
subroutine tabulated(iflag, nel, pmin, off, eint, mu, espe, dvol, df, vnew, psh, pnew, dpdm, dpde, npf, tf, snpc, stf, eos_struct)
Definition tabulated.F:46
subroutine tillotson(iflag, nel, pmin, off, eint, mu, mu2, espe, dvol, df, vnew, psh, pnew, dpdm, dpde, vareos, nvareos, eos_struct)
Definition tillotson.F:46
program starter
Definition starter.F:39