49 . UNITAB, LUID, NPC, IGRSURF,
50 . ITAB, X, PM, GEO, IXC, IXTG,LSUBMODEL)
60 use element_mod ,
only : nixc,nixtg
64#include "implicit_f.inc"
78 TYPE(),
INTENT(IN) :: UNITAB
79 INTEGER,
INTENT(IN) :: LUID
80 INTEGER,
INTENT(IN) :: NPC(*), ITAB(*), (NIXC, *), IXTG(NIXTG, *)
81 my_real,
INTENT(IN) :: x(3, *), geo(npropg, *), pm(npropm, *)
82 TYPE (SURF_),
INTENT(INOUT),
DIMENSION(NSURF) :: IGRSURF
84 TYPE(
submodel_data),
DIMENSION(NSUBMOD),
INTENT(IN) :: LSUBMODEL
89 INTEGER :: SURFID, IFUNC, ITYPFUN, LOC_IFUNC
90 my_real :: ffunc, fac_m, fac_l, fac_t, fac_c
91 my_real :: scal_t, scal_p, scal_s, scal_a, scal_d
93 my_real :: sa, rot, vol, vmin, veps, amu, sv
94 LOGICAL :: IS_AVAILABLE
102 CALL hm_get_intv(
'entityiddisplayed', surfid, is_available, lsubmodel
104 CALL hm_get_floatv(
'Scal_T', scal_t, is_available, lsubmodel, unitab)
107 CALL hm_get_floatv(
'Ffunc', ffunc, is_available, lsubmodel, unitab)
108 CALL hm_get_intv(
'Itype', itypfun, is_available, lsubmodel)
113 t_monvoln%IVOLU(4) = 0
116 IF (surfid == igrsurf(ii)%ID)
THEN
117 t_monvoln%IVOLU(4) = ii
118 t_monvoln%EXT_SURFID = ii
123 IF (.NOT. found)
THEN
125 ELSEIF (igrsurf(t_monvoln%EXT_SURFID)%ISH4N3N == 0)
THEN
126 CALL ancmsg(msgid = 18, anmode = aninfo, msgtype = msgerror,
127 . i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, i2 = surfid)
135 . igrsurf(t_monvoln%EXT_SURFID),ixc, ixtg, x, 2)
137 CALL monvol_compute_volume(t_monvoln, t_monvoln%TITLE, t_monvoln%IVOLU, igrsurf(t_monvoln%EXT_SURFID),
138 . itab, x, pm, geo, ixc, ixtg,
139 . sa, rot, vol, vmin, veps, sv)
142 . igrsurf(t_monvoln%EXT_SURFID),ixc,ixtg,vol, x, 2)
148 IF (ifunc == npc(ii))
THEN
154 IF (.NOT. found)
THEN
155 CALL ancmsg(msgid = 9, anmode = aninfo, msgtype = msgerror,
156 . i2 = ifunc, i1 = t_monvoln%ID, c1 = t_monvoln%TITLE, c2 =
'PRESSURE')
161 fac_m = unitab%FAC_M(luid)
162 fac_l = unitab%FAC_L(luid)
163 fac_t = unitab%FAC_T(luid)
164 fac_c = fac_m / (fac_l * fac_t * fac_t)
166 IF (scal_t == zero)
THEN
170 scal_s = one * fac_l * fac_l
174 IF (ffunc == zero)
THEN
181 t_monvoln%RVOLU(15) = ffunc
183 t_monvoln%RVOLU(26) = one / scal_t
184 t_monvoln%RVOLU(27) = one / scal_p
185 t_monvoln%RVOLU(28) = one / scal_s
186 t_monvoln%RVOLU(29) = one / scal_a
187 t_monvoln%RVOLU(30) = one / scal_d
189 t_monvoln%RVOLU(3) = zero
190 veps =
max(zero, vmin - vol)
191 t_monvoln%RVOLU(4) = vol + veps
192 t_monvoln%RVOLU(5) = zero
193 t_monvoln%RVOLU(12) = zero
194 t_monvoln%RVOLU(17) = veps
195 t_monvoln%IVOLU(7) = loc_ifunc
196 t_monvoln%IVOLU(19) = itypfun
199 t_monvoln%RVOLU(2) = amu
200 t_monvoln%RVOLU(16) = vol + veps
201 t_monvoln%RVOLU(18) = sa
202 t_monvoln%RVOLU(21) = rot
203 t_monvoln%RVOLU(22:24) = zero
208 WRITE(iout, 1005) surfid
209 WRITE(iout, 1003) scal_t, scal_p, scal_s, scal_a, scal_d
210 WRITE(iout, 1002) sa, sv, vol
211 WRITE(iout,1200) ifunc, itypfun
218 . /5x,
'INITIAL SURFACE OF MONITORED VOLUME . .=',1pg20.13,
219 . /5x,
'SURFACE ERROR(NE.0 FOR NON CLOSED SURF)=',1pg20.13,
220 . /5x,
'INITIAL VOLUME OF MONITORED VOLUME. . .=',1pg20.13)
222 . 5x,
'UNIT SCALE FOR TIME FUNCTIONS =',1pg20.13,
223 . /5x,
'UNIT SCALE FOR PRESSURE FUNCTIONS =',1pg20.13,
224 . /5x,
'UNIT SCALE FOR AREA FUNCTIONS =',1pg20.13,
225 . /5x,
'UNIT SCALE FOR ANGLE FUNCTIONS =',1pg20.13,
226 . /5x,
'UNIT SCALE FOR DISTANCE FUNCTIONS =',1pg20.13)
227 1005
FORMAT( 5x,
'EXTERNAL SURFACE ID . . . . . . . . . .=',i10)
228 1200
FORMAT( 5x,
'LOAD CURVE NUMBER . . . . . . . . . . .=',i10,
229 . /5x,
'CURVE TYPE . . . . . . . . . . . . . .=',i10,
230 . /5x,
' 0 : P=F(1/V)',
233 . /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)