50 SUBROUTINE hm_read_monvol_type10(T_MONVOLN, UNITAB, NPC, IGRSURF, ITAB, X, PM, GEO, IXC, IXTG, LSUBMODEL)
59 use element_mod ,
only : nixc,nixtg
63#include "implicit_f.inc"
78 INTEGER,
INTENT(IN) :: NPC(*), ITAB(*), IXC(NIXC, *), IXTG(NIXTG, *)
79 my_real,
INTENT(IN) :: x(3, *), geo(npropg, *), pm(npropm, *)
80 TYPE (SURF_),
INTENT(INOUT),
DIMENSION(NSURF) :: IGRSURF
87 INTEGER :: SURFID, IFUNCT_ID(6), IFBULK, IFMIN, IFMOUTT, IFMOUTP, IFP0, IFPMAX
90 my_real :: sa, rot, vol, vmin, veps, amu, sv
91 my_real :: rhoi, sfbulk, sfmin, sfmoutt, sfmoutp, sfp0, sfpmax
93 LOGICAL :: IS_AVAILABLE
101 CALL hm_get_intv(
'surf_IDex', surfid, is_available, lsubmodel)
103 CALL hm_get_floatv(
'Ascalet', scal_t, is_available, lsubmodel, unitab)
104 CALL hm_get_floatv(
'AscaleP', scal_p, is_available, lsubmodel, unitab)
106 CALL hm_get_floatv(
'Rho', rhoi, is_available, lsubmodel, unitab)
108 CALL hm_get_intv(
'fct_K', ifbulk, is_available, lsubmodel)
109 CALL hm_get_intv(
'fct_Mtin', ifmin, is_available, lsubmodel)
110 CALL hm_get_floatv(
'Fscale_K', sfbulk, is_available, lsubmodel, unitab)
111 CALL hm_get_floatv(
'Fscale_Mtin', sfmin, is_available, lsubmodel, unitab)
113 CALL hm_get_intv(
'fct_Mtout', ifmoutt, is_available, lsubmodel)
114 CALL hm_get_intv(
'fct_Mpout', ifmoutp, is_available, lsubmodel)
115 CALL hm_get_floatv(
'Fscale_Mtout', sfmoutt, is_available, lsubmodel, unitab)
116 CALL hm_get_floatv(
'Fscale_Mpout', sfmoutp, is_available, lsubmodel, unitab)
118 CALL hm_get_intv(
'fct_Padd', ifp0, is_available, lsubmodel)
119 CALL hm_get_intv(
'fct_Pmax', ifpmax, is_available, lsubmodel)
120 CALL hm_get_floatv(
'Fscale_Padd', sfp0, is_available, lsubmodel, unitab)
121 CALL hm_get_floatv(
'Fscale_Pmax', sfpmax, is_available, lsubmodel, unitab)
126 t_monvoln%IVOLU(4) = 0
129 IF (surfid == igrsurf(ii)%ID)
THEN
130 t_monvoln%IVOLU(4) = ii
131 t_monvoln%EXT_SURFID = ii
136 IF (.NOT. found)
THEN
138 ELSEIF (igrsurf(t_monvoln%EXT_SURFID)%ISH4N3N == 0)
THEN
139 CALL ancmsg(msgid = 18, anmode = aninfo, msgtype = msgerror,
140 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, i2 = surfid)
148 . igrsurf(t_monvoln%EXT_SURFID),ixc, ixtg, x, 10)
150 CALL monvol_compute_volume(t_monvoln, t_monvoln%TITLE, t_monvoln%IVOLU, igrsurf(t_monvoln%EXT_SURFID),
151 . itab, x, pm, geo, ixc, ixtg,
152 . sa, rot, vol, vmin, veps, sv)
155 . igrsurf(t_monvoln%EXT_SURFID),ixc,ixtg,vol, x, 10)
161 IF (.NOT. found)
THEN
162 CALL ancmsg(msgid = 9, anmode = aninfo, msgtype = msgerror,
163 . i2 = ifbulk, i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, c2 =
'BULK')
168 IF (.NOT. found)
THEN
169 CALL ancmsg(msgid = 9, anmode = aninfo, msgtype = msgerror,
170 . i2 = ifmin, i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, c2 =
'MASS FLOW')
173 IF (ifmoutt > 0)
THEN
175 IF (.NOT. found)
THEN
176 CALL ancmsg(msgid = 9, anmode = aninfo, msgtype = msgerror,
177 . i2 = ifmoutt, i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, c2 =
'MASS FLOW')
180 IF (ifmoutp > 0)
THEN
182 IF (.NOT. found)
THEN
183 CALL ancmsg(msgid = 9, anmode = aninfo, msgtype = msgerror,
184 . i2 = ifmoutp, i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, c2 =
'MASS FLOW')
189 IF (.NOT. found)
THEN
190 CALL ancmsg(msgid = 9, anmode = aninfo, msgtype = msgerror,
191 . i2 = ifp0, i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, c2 =
'PRESSURE')
196 IF (.NOT. found)
THEN
197 CALL ancmsg(msgid = 9, anmode = aninfo, msgtype = msgerror,
198 . i2 = ifpmax, i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, c2 =
'PRESSURE')
204 IF (scal_t == zero)
THEN
206 scal_t = one * fac_gen
208 IF (scal_p == zero)
THEN
210 scal_p = one * fac_gen
214 IF (sfbulk == zero)
THEN
216 sfbulk = one * fac_gen
220 IF (sfmin == zero)
THEN
222 sfmin = one * fac_gen
225 IF (ifmoutt > 0)
THEN
226 IF (sfmoutt == zero)
THEN
228 sfmoutt = one * fac_gen
231 IF (ifmoutp > 0)
THEN
232 IF (sfmoutp == zero)
THEN
234 sfmoutp = one * fac_gen
238 IF (sfp0 == zero)
THEN
245 IF (sfpmax == zero)
THEN
246 sfpmax = one * fac_gen
249 sfpmax = infinity * fac_gen
255 t_monvoln%IVOLU(21) = ifunct_id(1)
256 t_monvoln%RVOLU(35) = sfbulk
257 t_monvoln%IVOLU(22) = ifunct_id(2)
258 t_monvoln%RVOLU(36) = sfmin
259 t_monvoln%IVOLU(23) = ifunct_id(3)
260 t_monvoln%RVOLU(37) = sfmoutt
261 t_monvoln%IVOLU(24) = ifunct_id(4)
262 t_monvoln%RVOLU(38) = sfmoutp
263 t_monvoln%IVOLU(25) = ifunct_id(5)
264 t_monvoln%RVOLU(39) = sfp0
265 t_monvoln%IVOLU(26) = ifunct_id(6)
266 t_monvoln%RVOLU(40) = sfpmax
268 t_monvoln%RVOLU(26) = one / scal_t
269 t_monvoln%RVOLU(27) = one / scal_p
270 t_monvoln%RVOLU(28) = one
271 t_monvoln%RVOLU(29) = one
272 t_monvoln%RVOLU(30) = one
274 t_monvoln%RVOLU(34) = rhoi
276 veps =
max(zero, vmin - vol)
277 t_monvoln%RVOLU(4) = vol + veps
278 t_monvoln%RVOLU(17) = veps
279 t_monvoln%RVOLU(20)= rhoi*vol
282 t_monvoln%RVOLU(2) = amu
283 t_monvoln%RVOLU(16) = vol + veps
284 t_monvoln%RVOLU(18) = sa
285 t_monvoln%RVOLU(21) = rot
286 t_monvoln%RVOLU(22:24) = zero
291 WRITE(iout, 1005) surfid
292 WRITE(iout, 1003) scal_t, scal_p
293 WRITE(iout, 1002) sa, sv, vol
294 WRITE(iout,1800) rhoi, ifbulk, sfbulk, ifmin, sfmin, ifmoutt, sfmoutt,
295 . ifmoutp, sfmoutp, ifp0, sfp0, ifpmax, sfpmax
302 . /5x,
'INITIAL SURFACE OF MONITORED VOLUME . .=',1pg20.13,
303 . /5x,
'SURFACE ERROR(NE.0 FOR NON CLOSED SURF)=',1pg20.13,
304 . /5x,
'INITIAL VOLUME OF MONITORED VOLUME. . .=',1pg20.13)
306 . 5x,
'UNIT SCALE FOR TIME FUNCTIONS =',1pg20.13,
307 . /5x,
'UNIT SCALE FOR PRESSURE FUNCTIONS =',1pg20.13)
308 1005
FORMAT( 5x,
'EXTERNAL SURFACE ID . . . . . . . . . .=',i10)
311 . 5x,
'FLUID DENSITY. . . . . . . . . . . . . . . . . . . . . =',1pg20.13,
312 . /5x,
'BULK TIME FUNCTION. . . . . . . . . . . . . . . . . . .=',i10,
313 . /5x,
'BULK TIME FUNCTION SCALE FACTOR. . . . . . . . . . . . =',1pg20.13,
314 . /5x,
'INPUT MASS FLOW RATE TIME FUNCTION. . . . . . . . . . .=',i10,
315 . /5x,
'INPUT MASS FLOW RATE TIME FUNCTION SCALE FACTOR. . . . =',1pg20.13,
316 . /5x,
'OUTPUT MASS FLOW RATE TIME FUNCTION. . . . . . . . . . =',i10,
317 . /5x,
'OUTPUT MASS FLOW RATE TIME FUNCTION SCALE FACTOR. . . .=',1pg20.13,
318 . /5x,
'OUTPUT MASS FLOW RATE PRESSURE FUNCTION. . . . . . . . =',i10,
319 . /5x,
'OUTPUT MASS FLOW RATE PRESSURE FUNCTION SCALE FACTOR. .=',1pg20.13,
320 . /5x,
'ADDITIONAL PRESSURE TIME FUNCTION. . . . . . . . . . . =',i10,
321 . /5x,
'ADDITIONAL PRESSURE TIME FUNCTION SCALE FACTOR. . . . .=',1pg20.13,
322 . /5x,
'MAXIMUM PRESSURE TIME FUNCTION. . . . . . . . . . . . .=',i10,
323 . /5x,
'MAXIMUM PRESSURE TIME FUNCTION SCALE FACTOR. . . . . . =',1pg20.13)
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)