49 . UNITAB, LUID, NPC, IGRSURF,
50 . ITAB, X, PM, GEO, IXC, IXTG,LSUBMODEL)
63#include "implicit_f.inc"
78 INTEGER,
INTENT(IN) ::
79 INTEGER,
INTENT(IN) :: NPC(*), ITAB(*), IXC(NIXC, *), IXTG(, *)
80 my_real,
INTENT(IN) :: x(3, *), geo(npropg, *), pm(npropm, *)
81 TYPE (),
INTENT(INOUT),
DIMENSION(NSURF) :: IGRSURF
83 TYPE(
submodel_data),
DIMENSION(NSUBMOD),
INTENT(IN) :: LSUBMODEL
88 INTEGER :: SURFID, , ITYPFUN, LOC_IFUNC
89 my_real :: ffunc, fac_m, fac_l, fac_t, fac_c
90 my_real :: scal_t, scal_p, scal_s, scal_a, scal_d
92 my_real :: sa, rot, vol, vmin, veps, amu, sv
93 LOGICAL :: IS_AVAILABLE
101 CALL hm_get_intv(
'entityiddisplayed', surfid, is_available, lsubmodel)
103 CALL hm_get_floatv(
'Scal_T', scal_t, is_available, lsubmodel, unitab)
105 CALL hm_get_intv(
'FUN_A1', ifunc, is_available, lsubmodel)
107 CALL hm_get_intv(
'Itype', itypfun, is_available, lsubmodel)
112 t_monvoln%IVOLU(4) = 0
115 IF (surfid == igrsurf(ii)%ID)
THEN
116 t_monvoln%IVOLU(4) = ii
117 t_monvoln%EXT_SURFID = ii
122 IF (.NOT. found)
THEN
124 ELSEIF (igrsurf(t_monvoln%EXT_SURFID)%ISH4N3N == 0)
THEN
125 CALL ancmsg(msgid = 18, anmode = aninfo, msgtype = msgerror,
126 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, i2 = surfid)
134 . igrsurf(t_monvoln%EXT_SURFID),ixc, ixtg, x, 2)
136 CALL monvol_compute_volume(t_monvoln, t_monvoln%TITLE, t_monvoln%IVOLU, igrsurf(t_monvoln%EXT_SURFID),
137 . itab, x, pm, geo, ixc, ixtg,
138 . sa, rot, vol, vmin, veps, sv)
141 . igrsurf(t_monvoln%EXT_SURFID),ixc,ixtg,vol, x, 2)
147 IF (ifunc == npc(ii))
THEN
153 IF (.NOT. found)
THEN
154 CALL ancmsg(msgid = 9, anmode = aninfo, msgtype = msgerror,
155 . i2 = ifunc, i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, c2 =
'PRESSURE')
160 fac_m = unitab%FAC_M(luid)
161 fac_l = unitab%FAC_L(luid)
162 fac_t = unitab%FAC_T(luid)
163 fac_c = fac_m / (fac_l * fac_t * fac_t)
165 IF (scal_t == zero)
THEN
169 scal_s = one * fac_l * fac_l
173 IF (ffunc == zero)
THEN
180 t_monvoln%RVOLU(15) = ffunc
182 t_monvoln%RVOLU(26) = one / scal_t
183 t_monvoln%RVOLU(27) = one / scal_p
184 t_monvoln%RVOLU(28) = one / scal_s
185 t_monvoln%RVOLU(29) = one / scal_a
186 t_monvoln%RVOLU(30) = one / scal_d
188 t_monvoln%RVOLU(3) = zero
189 veps =
max(zero, vmin - vol)
190 t_monvoln%RVOLU(4) = vol + veps
191 t_monvoln%RVOLU(5) = zero
192 t_monvoln%RVOLU(12) = zero
193 t_monvoln%RVOLU(17) = veps
194 t_monvoln%IVOLU(7) = loc_ifunc
195 t_monvoln%IVOLU(19) = itypfun
198 t_monvoln%RVOLU(2) = amu
199 t_monvoln%RVOLU(16) = vol + veps
200 t_monvoln%RVOLU(18) = sa
201 t_monvoln%RVOLU(21) = rot
202 t_monvoln%RVOLU(22:24) = zero
207 WRITE(iout, 1005) surfid
208 WRITE(iout, 1003) scal_t, scal_p, scal_s, scal_a, scal_d
209 WRITE(iout, 1002) sa, sv, vol
210 WRITE(iout,1200) ifunc, itypfun
217 . /5x,
'INITIAL SURFACE OF MONITORED VOLUME . .=',1pg20.13,
218 . /5x,
'SURFACE ERROR(NE.0 FOR NON CLOSED SURF)=',1pg20.13,
219 . /5x,
'INITIAL VOLUME OF MONITORED VOLUME. . .=',1pg20.13)
221 . 5x,
'UNIT SCALE FOR TIME FUNCTIONS =',1pg20.13,
222 . /5x,
'UNIT SCALE FOR PRESSURE FUNCTIONS =',1pg20.13,
223 . /5x,
'UNIT SCALE FOR AREA FUNCTIONS =',1pg20.13,
224 . /5x,
'UNIT SCALE FOR ANGLE FUNCTIONS =',1pg20.13,
225 . /5x,
'UNIT SCALE FOR DISTANCE FUNCTIONS =',1pg20.13)
226 1005
FORMAT( 5x,
'EXTERNAL SURFACE ID . . . . . . . . . .=',i10)
227 1200
FORMAT( 5x,
'LOAD CURVE NUMBER . . . . . . . . . . .=',i10,
228 . /5x,
'CURVE TYPE . . . . . . . . . . . . . .=',i10,
229 . /5x,
' 0 : P=F(1/V)',
232 . /5x,
' 3 : P=(1/V) F(T)'/)
subroutine read_monvol(t_monvol, t_monvol_metadata, itab, itabm1, ipm, igeo, x, pm, geo, ixc, ixtg, sensors, unitab, npc, npt, pld, igrsurf, igrbric, nom_opt, iframe, xframe, lsubmodel)
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)