OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_eos_tabulated.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_tabulated (iout, pm, unitab, iunit, lsubmodel, imideos)

Function/Subroutine Documentation

◆ hm_read_eos_tabulated()

subroutine hm_read_eos_tabulated ( integer iout,
pm,
type (unit_type_), intent(in) unitab,
integer iunit,
type(submodel_data), dimension(nsubmod), intent(in) lsubmodel,
integer, intent(in) imideos )

Definition at line 36 of file hm_read_eos_tabulated.F.

37C-----------------------------------------------
38C M o d u l e s
39C-----------------------------------------------
40 USE unitab_mod
41 USE submodel_mod
42 USE message_mod
43C-----------------------------------------------
44C D e s c r i p t i o n
45C-----------------------------------------------
46C reading parameters for
47C IDEAL-GAS EQUATION OF STATE
48C-----------------------------------------------
49C C o m m e n t s
50C-----------------------------------------------
51C RHOI = PM(89) -> provided by /MAT
52C RHOR = PM(01) -> provided by /MAT (can be erased by EOS if present : obsolete)
53C => MU0 = RHO/RHOR-1.
54C PM(31) = P(MU0,E0) -> will be used to initialize diagonal of stress tensor SIG(1:3,*)
55C-----------------------------------------------
56C I m p l i c i t T y p e s
57C-----------------------------------------------
58#include "implicit_f.inc"
59C-----------------------------------------------
60C D u m m y A r g u m e n t s
61C-----------------------------------------------
62 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
63 INTEGER IIN,IOUT,IUNIT
64 my_real pm(npropm)
65 TYPE(SUBMODEL_DATA), DIMENSION(NSUBMOD), INTENT(IN) :: LSUBMODEL
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 :: gamma, p0,t0, e0, psh, rho0,fac_l,fac_t,fac_m,fac_c,cv,mu0,pp,rhoi,rhor,g0,ssp0,dpdmu,df
75 my_real :: xscale_a, xscale_b, fscale_a, fscale_b
76 LOGICAL :: IS_ENCRYPTED, IS_AVAILABLE, IS_AVAILABLE_RHO0
77 INTEGER :: A_FUN_ID, B_FUN_ID
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
87 CALL hm_get_intv ('A_FUNC' ,a_fun_id ,is_available,lsubmodel)
88 CALL hm_get_intv ('B_FUNC' ,b_fun_id ,is_available,lsubmodel)
89
90 CALL hm_get_floatv('XscaleA', xscale_a, is_available,lsubmodel,unitab)
91 CALL hm_get_floatv('XscaleB', xscale_b, is_available,lsubmodel,unitab)
92
93 CALL hm_get_floatv('FscaleA', fscale_a, is_available,lsubmodel,unitab)
94 CALL hm_get_floatv('FscaleB', fscale_b, is_available,lsubmodel,unitab)
95
96 CALL hm_get_floatv('PSH', psh, is_available,lsubmodel,unitab)
97 CALL hm_get_floatv('E0', e0, is_available,lsubmodel,unitab)
98 CALL hm_get_floatv('Refer_Rho', rho0, is_available_rho0,lsubmodel,unitab)
99
100 !MANAGING INPUT ERRORS :
101 IF(a_fun_id+b_fun_id == 0)THEN
102 CALL ancmsg(msgid=67,msgtype=msgerror,anmode=aninfo,
103 . i1=imideos,
104 . c1='/EOS/TABULATED',
105 . c2='NO INPUT FUNCTION')
106 ENDIF
107
108 IF(is_available_rho0 .AND. rho0 < zero)THEN
109 CALL ancmsg(msgid=67,msgtype=msgerror,anmode=aninfo,
110 . i1=imideos,
111 . c1='/EOS/TABULATED',
112 . c2='REFERENCE DENSITY MUST BE STRICTLY POSITIVE')
113 ENDIF
114
115 !REFERENCE DENSITY
116 rhor = pm(1)
117 rhoi = pm(89)
118
119 IF(rho0 > zero) THEN
120 rhor = rho0
121 pm(1)= rho0
122 ELSE
123 rho0=rhor
124 ENDIF
125
126 !COMPUTE P0 (stress tensor)
127 IF(rhoi == zero)THEN
128 mu0 = zero ! error 683 already displayed
129 ELSE
130 IF(rhor /= zero)THEN
131 mu0 = rhoi/rhor-one
132 ELSE
133 mu0 = zero ! error 683 already displayed
134 ENDIF
135 ENDIF
136
137 IF(rhoi /= zero)THEN
138 df = rhor/rhoi
139 ELSE
140 df = zero
141 ENDIF
142
143 p0 = zero ! A(MU0) + B(MU0)*E0
144
145 !SSP0
146 ssp0 = zero
147 g0 = zero
148 rhoi = pm(89)
149 dpdmu = zero ! A'(MU0) + B'(MU0)*E0+B(MU0)/(ONE+MU0)/(ONE+MU0)*P0
150
151 dpdmu=max(zero,dpdmu)
152 IF(rhor > zero) ssp0 = sqrt((dpdmu + two_third*g0)/rhor)
153
154 !STORAGE
155 pm(23) = e0
156 pm(27) = ssp0
157 pm(31) = p0-psh
158 pm(88) = psh
159 pm(33) = xscale_a
160 pm(34) = xscale_b
161 pm(35) = a_fun_id
162 pm(36) = b_fun_id
163 pm(104)= p0-psh
164 pm(160) = fscale_a
165 pm(161) = fscale_b
166
167 WRITE(iout,1000)
168
169 IF(is_encrypted)THEN
170 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
171 ELSE
172 WRITE(iout,1500)a_fun_id,xscale_a,fscale_a,b_fun_id,xscale_b,fscale_b,e0,psh
173 IF(is_available_rho0)WRITE(iout,1501)pm(1)
174 ENDIF
175
176 RETURN
177 1000 FORMAT(
178 & 5x,' TABULATED EOS ',/,
179 & 5x,' ------------- ',/)
180 1500 FORMAT(
181 & 5x,'FUNCTION A IDENTIFIER . . . . . . . . . .=',1pg20.13/,
182 & 5x,'XSCALE_A. . . . . . . . . . . . . . . . .=',1pg20.13/,
183 & 5x,'FSCALE_A. . . . . . . . . . . . . . . . .=',1pg20.13/,
184 & 5x,'FUNCTION B IDENTIFIER . . . . . . . . . .=',1pg20.13/,
185 & 5x,'XSCALE_B. . . . . . . . . . . . . . . . .=',1pg20.13/,
186 & 5x,'FSCALE_B. . . . . . . . . . . . . . . . .=',1pg20.13/,
187 & 5x,'E0. . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
188 & 5x,'PSH . . . . . . . . . . . . . . . . . . .=',1pg20.13)
189 1501 FORMAT(
190 & 5x,'EOS REFERENCE DENSITY . . . . . . . . . .=',1pg20.13)
191
192 RETURN
193
#define my_real
Definition cppsort.cpp:32
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_is_encrypted(is_encrypted)
#define max(a, b)
Definition macros.h:21
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