35
36
37
41 USE matparam_def_mod, ONLY : matparam_struct_
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57#include "implicit_f.inc"
58
59
60
61 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
62 INTEGER IOUT, IUNIT
64 TYPE(SUBMODEL_DATA), DIMENSION(NSUBMOD), INTENT(IN) :: LSUBMODEL
65 TYPE(MATPARAM_STRUCT_),INTENT(INOUT) :: MAT_PARAM
66 INTEGER,INTENT(IN) :: IMIDEOS
67 INTEGER,INTENT(INOUT) :: ISFLUID
68
69
70
71#include "param_c.inc"
72
73
74
75 my_real :: c0, c1, c2, c3, c4, c5, c6, e0, psh, rho0,rhor,mu0,mu02,rhoi, g0, ssp0, df, dpdmu
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(
'MAT_C0', c0, is_available,lsubmodel,unitab)
87 CALL hm_get_floatv(
'MAT_C1', c1, is_available,lsubmodel,unitab)
88 CALL hm_get_floatv(
'MAT_C2', c2, is_available,lsubmodel,unitab)
89 CALL hm_get_floatv(
'MAT_C3', c3, is_available,lsubmodel,unitab)
90 CALL hm_get_floatv(
'MAT_C4', c4, is_available,lsubmodel,unitab)
91 CALL hm_get_floatv(
'MAT_C5', c5, is_available,lsubmodel,unitab)
92 CALL hm_get_floatv(
'MAT_C6', c6, is_available,lsubmodel,unitab)
93 CALL hm_get_floatv(
'MAT_EA', e0, is_available,lsubmodel,unitab)
94 CALL hm_get_floatv(
'MAT_PSH', psh, is_available,lsubmodel,unitab)
95 CALL hm_get_floatv(
'Refer_Rho', rho0, is_available_rho0,lsubmodel,unitab)
96
97 rhor = pm(1)
98 rhoi = pm(89)
99
100 IF(rho0 > zero) THEN
101 rhor = rho0
102 pm(1)= rho0
103 mat_param%RHO = rho0
104 ELSE
105 rho0=rhor
106 ENDIF
107
108 pm(23)=e0
109
110 pm(32)=c1+c4*e0
111 pm(88)=psh
112
113 mat_param%EOS%NUPARAM = 7
114 mat_param%EOS%NIPARAM = 0
115 mat_param%EOS%NFUNC = 0
116 mat_param%EOS%NTABLE = 0
117 CALL mat_param%EOS%CONSTRUCT()
118
119 mat_param%EOS%UPARAM(1) = c0-psh
120 mat_param%EOS%UPARAM(2) = c1
121 mat_param%EOS%UPARAM(3) = c2
122 mat_param%EOS%UPARAM(4) = c3
123 mat_param%EOS%UPARAM(5) = c4
124 mat_param%EOS%UPARAM(6) = c5
125 mat_param%EOS%UPARAM(7) = c6
126 mat_param%EOS%PSH = psh
127 mat_param%EOS%E0 = e0
128 IF (mat_param%THERM%TINI == zero) THEN
129 mat_param%THERM%TINI =three100
130 pm(79) = three100
131 END IF
132
133
134 IF(rhoi == zero)THEN
135 mu0 = zero
136 ELSE
137 IF(rhor /= zero)THEN
138 mu0 = rhoi/rhor-one
139 ELSE
140 mu0 = zero
141 ENDIF
142 ENDIF
143 mu02 = mu0*
max(zero,mu0)
144
145 IF(rhoi /= zero)THEN
146 df = rhor/rhoi
147 ELSE
148 df = zero
149 ENDIF
150
151 pm(31) = c0-psh+c1*mu0+c2*mu02+c3*mu0**3+(c4+c5*mu0+c6*mu02)*e0
152 pm(104) = c0-psh
153
154
155 ssp0 = zero
156 g0 = pm(22)
157 rhoi = pm(89)
158 dpdmu = c1 + two*c2*
max(zero,mu0) + three*c3*mu0*mu0 + (c5+c6*
max(zero
159 dpdmu=
max(zero,dpdmu)
160 IF(rhor > zero) ssp0 = sqrt((dpdmu + two_third*g0)/rhor)
161 pm(27)=ssp0
162
163 IF(c1 == zero .AND. c2 == zero .AND. c3 == zero .AND. c4 == c5 .AND. c4 > one .AND. c6 == zero)THEN
164 isfluid = 1
165 ENDIF
166
167 WRITE(iout,1000)
168 IF(is_encrypted)THEN
169 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
170 ELSE
171 WRITE(iout,1500)c0,c1,c2,c3,c4,c5,c6,e0,pm(104),psh
172 IF(is_available_rho0)WRITE(iout,1501)pm(1)
173 ENDIF
174
175 RETURN
176 1000 FORMAT(
177 & 5x,' POLYNOMIAL EOS ',/,
178 & 5x,' -------------- ',/)
179 1500 FORMAT(
180 & 5x,'C0. . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
181 & 5x,'C1. . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
182 & 5x,'C2. . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
183 & 5x,'C3. . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
184 & 5x,'C4. . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
185 & 5x,'C5. . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
186 & 5x,'C6. . . . . . . . . . . . . . . . . . . .=',1pg20.13/,
187 & 5x,'INITIAL INTERNAL ENERGY PER UNIT VOLUME .=',1pg20.13/,
188 & 5x,'INITIAL PRESSURE. . . . . . . . . . . . .=',1pg20.13/,
189 & 5x,'PRESSURE SHIFT. . . . . . . . . . . . . .=',1pg20.13)
190 1501 FORMAT(
191 & 5x,'EOS REFERENCE DENSITY . . . . . . . . . .=',1pg20.13)
192
193 RETURN
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_option_is_encrypted(is_encrypted)