37
38
39
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
68
69
70#include "param_c.inc"
71
72
73
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
78
79
80
81 is_encrypted = .false.
82 is_available = .false.
83 is_available_rho0 = .false.
84
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
98 CALL hm_get_floatv(
'Refer_Rho', rho0, is_available_rho0,lsubmodel,unitab)
99
100
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
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
127 IF(rhoi == zero)THEN
128 mu0 = zero
129 ELSE
130 IF(rhor /= zero)THEN
131 mu0 = rhoi/rhor-one
132 ELSE
133 mu0 = zero
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
144
145
146 ssp0 = zero
147 g0 = zero
148 rhoi = pm(89)
149 dpdmu = zero
150
151 dpdmu=
max(zero,dpdmu)
152 IF(rhor > zero) ssp0 = sqrt((dpdmu + two_third*g0)/rhor)
153
154
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
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)
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)