36
37
38
42 USE matparam_def_mod, ONLY : matparam_struct_
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58#include "implicit_f.inc"
59
60
61
62 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
63 INTEGER IIN,IOUT,IUNIT
65 TYPE(SUBMODEL_DATA), DIMENSION(NSUBMOD), INTENT(IN) :: LSUBMODEL
66 INTEGER,INTENT(IN) :: IMIDEOS
67 TYPE(MATPARAM_STRUCT_),INTENT(INOUT) :: MAT_PARAM
68
69
70
71# "param_c.inc"
72
73
74
75 my_real gamma, p0,t0, e0, psh, rho0,fac_l,fac_t,fac_m,fac_c,cv,mu0,pp,rhoi,rhor,g0
76 LOGICAL :: IS_ENCRYPTED, IS_AVAILABLE, IS_AVAILABLE_RHO0
77
78
79
80 is_encrypted = .false.
81 is_available = .false.
82 is_available_rho0 = .false.
83
85
86 CALL hm_get_floatv(
'Gamma', gamma, is_available,lsubmodel,unitab)
87 CALL hm_get_floatv(
'LAW5_P0', p0, is_available,lsubmodel,unitab)
88 CALL hm_get_floatv(
'LAW5_PSH', psh, is_available,lsubmodel,unitab)
89 CALL hm_get_floatv(
'T_Initial', t0, 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 ELSE
99 rho0=rhor
100 ENDIF
101
102 IF(rhoi == zero)THEN
103 mu0 = zero
104 ELSE
105 IF(rhor /= zero)THEN
106 mu0 = rhoi/rhor-one
107 ELSE
108 mu0 = zero
109 ENDIF
110 ENDIF
111
112 IF(rhoi /= zero)THEN
113 df = rhor/rhoi
114 ELSE
115 df = zero
116 ENDIF
117
118 IF(gamma > one) THEN
119 e0 = p0/(gamma-one)/(one+mu0)
120 ELSE
121 e0 = zero
122 ENDIF
123
124 !erreurs :
125
126
127 IF(p0 <= zero)THEN
128 CALL ancmsg(msgid=67,msgtype=msgerror,anmode=aninfo,
129 . i1=imideos,
130 . c1='/EOS/IDEAL-GAS',
131 . c2='INITIAL PRESSURE MUST BE POSITIVE')
132 ENDIF
133
134 IF(gamma <= one)THEN
135 CALL ancmsg(msgid=67,msgtype=msgerror,anmode=aninfo,
136 . i1=imideos,
137 . c1='/EOS/IDEAL-GAS',
138 . c2='SPECIFIC HEAT RATIO (GAMMA) MUST BE GREATER THAN 1.0')
139 ENDIF
140
141 IF(t0 == zero)t0=three100
142 cv = zero
143 IF(rho0*t0 /= zero) THEN
144
145 cv = e0/rho0/t0
146 ENDIF
147
148 pm(32) = gamma
149 pm(88) = psh
150 pm(23) = e0
151 pm(35) = t0
152 pm(36) = cv
153 pm(31) = p0-psh
154 pm(79) = t0
155 pm(104)=p0-psh
156
157 mat_param%EOS%Cv = cv
158 mat_param%EOS%Cp = gamma * cv
159
160
161 ssp0 = zero
162 g0 = pm(22)
163 rhoi = pm(89)
164 dpdmu = (gamma-one)*e0+(one+mu0)*(gamma-one)*df*df*(pm(31)+psh)
165
166 dpdmu=
max(zero,dpdmu)
167 IF(rhor > zero) ssp0 = sqrt((dpdmu + two_third
168 pm(27)=ssp0
169
170 WRITE(iout,1000)
171
172 IF(is_encrypted)THEN
173 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
174 ELSE
175 WRITE(iout,1500)gamma,p0,psh,t0,e0,cv
176 ENDIF
177 IF(is_available_rho0)WRITE(iout,1501)pm(1)
178
179 RETURN
180 1000 FORMAT(
181 & 5x,' IDEAL GAS EOS ',/,
182 & 5x,' ------------- ',/)
183 1500 FORMAT(
184 & 5x,'GAMMA . . . . . . . . . . . . . . . . . .=',1pg20.13/,
185 & 5x,'P0. . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
186 & 5x,'PSH . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
187 & 5x,'T0. . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
188 & 5x,'E0. . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
189 & 5x,'COMPUTED HEAT CAPACITY (Cv) . . . . . . .=',1pg20.13)
190 1501 FORMAT(
191 & 5x,'EOS REFERENCE DENSITY . . . . . . . . . .=',1pg20.13)
192
193 RETURN
194
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_option_is_encrypted(is_encrypted)
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)