OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_eos_noble_abel.F File Reference
#include "implicit_f.inc"
#include "param_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine hm_read_eos_noble_abel (iout, pm, unitab, iunit, lsubmodel, imideos, mat_param)

Function/Subroutine Documentation

◆ hm_read_eos_noble_abel()

subroutine hm_read_eos_noble_abel ( integer, intent(in) iout,
dimension(npropm), intent(inout) pm,
type (unit_type_), intent(in) unitab,
integer, intent(in) iunit,
type(submodel_data), dimension(nsubmod), intent(in) lsubmodel,
integer, intent(in) imideos,
type(matparam_struct_), intent(inout) mat_param )

Definition at line 34 of file hm_read_eos_noble_abel.F.

35C-----------------------------------------------
36C M o d u l e s
37C-----------------------------------------------
38 USE unitab_mod
39 USE submodel_mod
40 USE message_mod
41 USE matparam_def_mod, ONLY : matparam_struct_
42C-----------------------------------------------
43C D e s c r i p t i o n
44C-----------------------------------------------
45C reading parameters for
46C NOBLE-ABEL EQUATION OF STATE
47C-----------------------------------------------
48C C o m m e n t s
49C-----------------------------------------------
50C RHOI = PM(89) -> provided by /MAT
51C RHOR = PM(01) -> provided by /MAT (can be erased by EOS if present : obsolete)
52C => MU0 = RHO/RHOR-1.
53C PM(31) = P(MU0,E0) -> will be used to initialize diagonal of stress tensor SIG(1:3,*)
54C-----------------------------------------------
55C I m p l i c i t T y p e s
56C-----------------------------------------------
57#include "implicit_f.inc"
58C-----------------------------------------------
59C D u m m y A r g u m e n t s
60C-----------------------------------------------
61 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
62 INTEGER,INTENT(IN) :: IOUT,IUNIT
63 my_real,INTENT(INOUT) :: pm(npropm)
64 TYPE(SUBMODEL_DATA), DIMENSION(NSUBMOD), INTENT(IN) :: LSUBMODEL
65 TYPE(MATPARAM_STRUCT_),INTENT(INOUT) :: MAT_PARAM
66 INTEGER,INTENT(IN) :: IMIDEOS
67C-----------------------------------------------
68C C o m m o n B l o c k s
69C-----------------------------------------------
70#include "param_c.inc"
71C-----------------------------------------------
72C L o c a l V a r i a b l e s
73C-----------------------------------------------
74 my_real :: e0, psh, rho0
75 my_real :: bb,gamma,pp,denom,mu,rhoi,rhor,dpdmu,dpde
76 my_real :: mu0,mu2,df,ssp0,g0
77 LOGICAL :: IS_ENCRYPTED, IS_AVAILABLE, IS_AVAILABLE_RHO0
78C-----------------------------------------------
79C S o u r c e L i n e s
80C-----------------------------------------------
81 is_encrypted = .false.
82 is_available = .false.
83 is_available_rho0 = .false.
84
85 CALL hm_option_is_encrypted(is_encrypted)
86 CALL hm_get_floatv('b_Covolume',bb, is_available,lsubmodel,unitab)
87 CALL hm_get_floatv('Gamma_Constant', gamma, is_available,lsubmodel,unitab)
88 CALL hm_get_floatv('E0', e0, is_available,lsubmodel,unitab)
89 CALL hm_get_floatv('LAW5_PSH', psh ,is_available,lsubmodel,unitab)
90 CALL hm_get_floatv('Refer_Rho', rho0 ,is_available_rho0,lsubmodel,unitab)
91!-------------------------------------------------------------------------------
92 rhor = pm(1)
93 rhoi = pm(89)
94
95 IF(rho0 > zero) THEN
96 rhor = rho0
97 pm(1)= rho0
98 mat_param%RHO = rho0
99 ELSE
100 rho0=rhor
101 ENDIF
102
103 pm(23) = e0
104 pm(32) = (gamma-one)*e0 / (one-bb*rho0)**2 !BULK = (1+ยต)*dP/dmu (partial derivative at constant E)
105 pm(88) = psh
106
107 mat_param%EOS%NUPARAM = 3
108 mat_param%EOS%NIPARAM = 0
109 mat_param%EOS%NFUNC = 0
110 mat_param%EOS%NTABLE = 0
111 CALL mat_param%EOS%CONSTRUCT() !allocations
112
113 mat_param%EOS%UPARAM(1) = bb
114 mat_param%EOS%UPARAM(2) = gamma-one
115 mat_param%EOS%UPARAM(3) = rho0
116 mat_param%EOS%PSH = psh
117 mat_param%EOS%E0 = e0
118 IF (mat_param%THERM%TINI == zero) THEN
119 mat_param%THERM%TINI =three100
120 pm(79) = three100
121 END IF
122
123 !COMPUTING INITIAL PRESSURE : PM(31) -> SIG(1:3,*)
124 mu=rhoi/rhor-one
125 denom = one-bb*rhor*(one+mu)
126 bb = (gamma-one)*(one+mu)/denom
127 pp = bb*e0
128 pm(31) = pp - psh
129 pm(104) = pp - psh
130
131 !SSP0
132 IF(rhoi == zero)THEN
133 mu0 = zero ! error 683 already displayed
134 ELSE
135 IF(rhor /= zero)THEN
136 mu0 = rhoi/rhor-one
137 ELSE
138 mu0 = zero ! error 683 already displayed
139 ENDIF
140 ENDIF
141
142 IF(rhoi /= zero)THEN
143 df = rhor/rhoi
144 ELSE
145 df = zero
146 ENDIF
147
148 mu2 = mu0*mu0
149 pp = pm(31)+psh
150 ssp0 = zero
151 g0 = pm(22)
152 rhoi = pm(89)
153 dpde = (gamma-one)*(one+mu0)/denom
154 dpdmu = (gamma-one)*e0/denom + pp/denom*bb*rhoi + pp*df*df*dpde
155 dpdmu = max(zero,dpdmu)
156
157 IF(rhor > zero) ssp0 = sqrt((dpdmu + two_third*g0)/rhor)
158 pm(27)=ssp0
159
160 WRITE(iout,1000)
161 IF(is_encrypted)THEN
162 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
163 ELSE
164 WRITE(iout,1500)bb,gamma,pm(31),e0,psh
165 IF(is_available_rho0)WRITE(iout,1501)pm(1)
166 ENDIF
167
168 RETURN
169 1000 FORMAT(
170 & 5x,' NOBLE-ABEL EOS ',/,
171 & 5x,' -------------- ',/)
172 1500 FORMAT(
173 & 5x,'COVOLUME. . . . . . . . . . . . . . . . .=',1pg20.13/,
174 & 5x,'GAMMA GAS CONSTANT. . . . . . . . . . . .=',1pg20.13/,
175 & 5x,'INITIAL PRESSURE. . . . . . . . . . . . .=',1pg20.13/,
176 & 5x,'INITIAL INTERNAL ENERGY PER UNIT VOLUME .=',1pg20.13/,
177 & 5x,'PRESSURE SHIFT. . . . . . . . . . . . . .=',1pg20.13)
178 1501 FORMAT(
179 & 5x,'EOS REFERENCE DENSITY . . . . . . . . . .=',1pg20.13)
180
181 RETURN
#define my_real
Definition cppsort.cpp:32
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_option_is_encrypted(is_encrypted)
#define max(a, b)
Definition macros.h:21