45 . IGRQUAD , IGRSH3N, MULTI_FVM, UNITAB, LSUBMODEL)
60#include "implicit_f.inc"
72 INTEGER,
INTENT(IN) :: (*), ITABM1(*)
75 TYPE(multi_fvm_struct),
INTENT(IN) :: MULTI_FVM
77 TYPE (GROUP_) ,
DIMENSION(NGRBRIC) :: IGRBRIC
78 TYPE (GROUP_) ,
DIMENSION(NGRQUAD) :: IGRQUAD
79 TYPE (GROUP_) ,
DIMENSION(NGRSH3N) :: IGRSH3N
80 TYPE (UNIT_TYPE_),
INTENT(IN) :: UNITAB
81 TYPE(
submodel_data),
DIMENSION(NSUBMOD),
INTENT(IN) :: LSUBMODEL
90 CHARACTER(LEN=NCHARLINE) :: KEY2
91 CHARACTER(LEN=NCHARTITLE) :: TITR
92 INTEGER :: II, JJ, IFUNC1, IFUNC2, IFUNC3, IFUNC4, LNODID1, LNODID2, KK, ID, UID, J
94 INTEGER :: GRBRICID_LOC, GRQUADID_LOC, GRSH3NID_LOC, IAD1, IAD2
95 my_real :: x0, y0, z0, x1, y1, z1,
norm, fac1, fac2, fac_vel, dummy
98 CHARACTER(LEN=NCHARLINE) :: FILENAME
99 CHARACTER MSG_DESCRIPTION*32
100 LOGICAL :: IS_AVAILABLE
102 IF (ninimap1d > 0)
THEN
106 is_available = .false.
111 inimap1d(kk)%CORRECTLY_READ=.true.
115 inimap1d(kk)%TITLE = trim(titr)
117 WRITE(iout, 2002) trim(titr)
118 inimap1d(kk)%FILE = .false.
119 IF (key2(1:2) ==
'VP')
THEN
120 inimap1d(kk)%FORMULATION = 1
122 ELSE IF (key2(1:2) ==
'VE')
THEN
123 inimap1d(kk)%FORMULATION = 2
125 ELSE IF (key2(1:5) ==
'FILE ')
THEN
126 inimap1d(kk)%FORMULATION = 1
127 inimap1d(kk)%FILE = .true.
131 inimap1d(kk)%PROJ = -1
132 CALL hm_get_intv(
'type', inimap1d(kk)%PROJ, is_available, lsubmodel)
133 inimap1d(kk)%NODEID1 = -1
134 inimap1d(kk)%NODEID2 = -1
136 IF (inimap1d(kk)%PROJ == 3)
THEN
139 CALL hm_get_intv(
'node_ID1', inimap1d(kk)%NODEID1, is_available, lsubmodel)
140 WRITE(iout, 2030)
"SPHERICAL"
141 ELSE IF (inimap1d(kk)%PROJ == 1)
THEN
144 CALL hm_get_intv(
'node_ID1', inimap1d(kk)%NODEID1, is_available, lsubmodel)
145 CALL hm_get_intv(
'node_ID2', inimap1d(kk)%NODEID2, is_available, lsubmodel
146 WRITE(iout, 2030)
"PLANAR"
147 ELSE IF (inimap1d(kk)%PROJ == 2)
THEN
150 CALL hm_get_intv(
'node_ID1', inimap1d(kk)%NODEID1, is_available, lsubmodel)
151 CALL hm_get_intv(
'node_ID2', inimap1d(kk)%NODEID2, is_available, lsubmodel)
152 WRITE(iout, 2030)
"CYLINDRICAL"
155 inimap1d(kk)%GRBRICID = 0
156 inimap1d(kk)%GRQUADID = 0
157 inimap1d(kk)%GRSH3NID = 0
159 CALL hm_get_intv(
'grbric_ID', inimap1d(kk)%GRBRICID, is_available, lsubmodel)
160 CALL hm_get_intv(
'grquad_ID', inimap1d(kk)%GRQUADID, is_available, lsubmodel)
161 CALL hm_get_intv(
'grtria_ID', inimap1d(kk)%GRSH3NID, is_available, lsubmodel)
166 IF (inimap1d(kk)%GRBRICID + inimap1d(kk)%GRQUADID + inimap1d(kk)%GRSH3NID == 0)
THEN
167 CALL ancmsg(msgid=1554, msgtype=msgwarning, anmode=aninfo,
168 . c1=
'IN /INIMAP1D OPTION')
173 IF (inimap1d(kk)%GRBRICID /= 0)
THEN
175 IF (inimap1d(kk)%GRBRICID == igrbric(j)%ID)
THEN
177 inimap1d(kk)%GRBRICID = j
181 IF (grbricid_loc == -1)
THEN
185 . c1=
'IN /INIMAP1D OPTION',
186 . i1=inimap1d(kk)%GRBRICID)
189 IF (inimap1d(kk)%GRQUADID /= 0)
THEN
191 IF (inimap1d(kk)%GRQUADID == igrquad(j)%ID)
THEN
193 inimap1d(kk)%GRQUADID = j
197 IF (grquadid_loc == -1)
THEN
201 . c1=
'IN /INIMAP1D OPTION',
202 . i1=inimap1d(kk)%GRQUADID)
205 IF (inimap1d(kk)%GRSH3NID /= 0)
THEN
207 IF (inimap1d(kk)%GRSH3NID == igrsh3n(j)%ID)
THEN
209 inimap1d(kk)%GRSH3NID = j
213 IF (grsh3nid_loc == -1)
THEN
217 . c1=
'IN /INIMAP1D OPTION',
218 . i1=inimap1d(kk)%GRSH3NID)
226 IF(.NOT. inimap1d(kk)%FILE)
THEN
227 CALL hm_get_intv('fun_idv
', IFUNC3, IS_AVAILABLE, LSUBMODEL)
228 CALL HM_GET_FLOATV('fscalev
', FAC_VEL, IS_AVAILABLE, LSUBMODEL, UNITAB)
230 MSG_DESCRIPTION = 'cannot
READ velocity
FUNCTION id
'
231 WRITE(IOUT, 2040) IFUNC3, FAC_VEL
235 DO II = NFUNCT + 2, 2 * NFUNCT + 1
237 IF (NPC(II) == IFUNC3) THEN
238 INIMAP1D(KK)%FUNC_VEL = JJ
243.NOT.
IF ( FOUND) THEN
244 CALL ANCMSG(MSGID = 120, MSGTYPE = MSGERROR, ANMODE = ANINFO,
245 . C1 = 'in /inimap1d option
', I1 = IFUNC3)
248 INIMAP1D(KK)%FUNC_VEL = 0
250 IF (FAC_VEL == ZERO) FAC_VEL = ONE
251 INIMAP1D(KK)%FAC_VEL = FAC_VEL
253 CALL HM_GET_INTV('nb_integr
', SIZE, IS_AVAILABLE, LSUBMODEL)
255 INIMAP1D(KK)%NBMAT = SIZE
256 ALLOCATE(INIMAP1D(KK)%FUNC_ALPHA(SIZE), INIMAP1D(KK)%FUNC_RHO(SIZE),
257 . INIMAP1D(KK)%FUNC_ENER(SIZE), INIMAP1D(KK)%FUNC_PRES(SIZE),
258 . INIMAP1D(KK)%FAC_PRES_ENER(SIZE), INIMAP1D(KK)%FAC_RHO(SIZE))
259 INIMAP1D(KK)%FUNC_ALPHA(1:SIZE) = 0
261 CALL HM_GET_INT_ARRAY_INDEX('fct_idvfi
', IFUNC1, LL, IS_AVAILABLE, LSUBMODEL)
262 CALL HM_GET_INT_ARRAY_INDEX('fct_idri
', IFUNC2, LL, IS_AVAILABLE, LSUBMODEL)
263 CALL HM_GET_FLOAT_ARRAY_INDEX('fscalerhoi
', FAC1, LL, IS_AVAILABLE, LSUBMODEL, UNITAB)
264 CALL HM_GET_INT_ARRAY_INDEX('fct_idpei', ifunc3, ll, is_available, lsubmodel)
272 DO ii = nfunct + 2, 2 * nfunct + 1
274 IF (npc(ii) == ifunc1)
THEN
275 inimap1d(kk)%FUNC_ALPHA(ll) = jj
280 IF (.NOT. found)
THEN
281 CALL ancmsg(msgid = 120, msgtype = msgerror, anmode = aninfo
282 . c1 =
'IN /INIMAP1D OPTION', i1 = ifunc3)
285 inimap1d(kk)%FUNC_ALPHA(ll) = 0
290 DO ii = nfunct + 2, 2 * nfunct + 1
292 IF (npc(ii) == ifunc2)
THEN
293 inimap1d(kk)%FUNC_RHO(ll) = jj
298 IF (.NOT. found)
THEN
299 CALL ancmsg(msgid = 120, msgtype = msgerror, anmode = aninfo,
300 . c1 =
'IN /INIMAP1D OPTION', i1 = ifunc3)
303 inimap1d(kk)%FUNC_RHO(ll) = 0
308 DO ii = nfunct + 2, 2 * nfunct + 1
310 IF (npc(ii) == ifunc3)
THEN
311 IF (inimap1d(kk)%FORMULATION == 1)
THEN
312 inimap1d(kk)%FUNC_PRES(ll) = jj
313 inimap1d(kk)%FUNC_ENER(ll) = 0
315 IF (inimap1d(kk)%FORMULATION == 2)
THEN
316 inimap1d(kk)%FUNC_ENER(ll) = jj
317 inimap1d(kk)%FUNC_PRES(ll) = 0
323 IF (.NOT. found)
THEN
324 CALL ancmsg(msgid = 120, msgtype = msgerror, anmode = aninfo,
325 . c1 =
'IN /INIMAP1D OPTION', i1 = ifunc3)
328 inimap1d(kk)%FUNC_PRES(ll) = 0
329 inimap1d(kk)%FUNC_ENER(ll) = 0
331 IF (fac1 == zero) fac1 = one
332 IF (fac2 == zero) fac2 = one
333 inimap1d(kk)%FAC_RHO(ll) = fac1
334 inimap1d(kk)%FAC_PRES_ENER(ll) = fac2
335 IF (inimap1d(kk)%FORMULATION == 1)
THEN
336 WRITE(iout, 2060) ll, ifunc1, ifunc2, fac1, ifunc3, fac2
338 IF (inimap1d(kk)%FORMULATION == 2)
THEN
339 WRITE(iout, 2050) ll, ifunc1, ifunc2, fac1, ifunc3
343 ELSEIF(inimap1d(kk)%FILE)
THEN
345 WRITE(iout, 2026)trim(filename)
349 IF (inimap1d(kk)%NODEID1 > 0)
THEN
350 lnodid1 = usr2sys(inimap1d(kk)%NODEID1, itabm1, mess, inimap1d(kk)%NODEID1)
351 inimap1d(kk)%NODEID1 = lnodid1
353 IF (inimap1d(kk)%NODEID2 > 0)
THEN
354 lnodid2 = usr2sys(inimap1d(kk)%NODEID2, itabm1, mess, inimap1d(kk)%NODEID2)
355 inimap1d(kk)%NODEID2 = lnodid2
357 IF (inimap1d(kk)%PROJ == 1)
THEN
364 norm = sqrt((x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0) +
365 . (z1 - z0) * (z1 - z0))
366 inimap1d(kk)%NX = (x1 - x0) /
norm
367 inimap1d(kk)%NY = (y1 - y0) /
norm
368 inimap1d(kk)%NZ = (z1 - z0) /
norm
369 IF(n2d /=0 )inimap1d(kk)%NX = zero
376 .
' 1D INITIAL MAPPING (/INIMAP1D) '/
377 .
' ------------------------------ ')
378 2001
FORMAT(
' ID : ', 1x, i10)
379 2002
FORMAT(
' TITLE : ', a)
380 2010
FORMAT(
' FORMULATION : VP (INITIALIZATION FROM DENSITY AND PRESSURE FUNCTIONS)')
381 2020
FORMAT(
' FORMULATION : VE (INITIALIZATION FROM DENSITY AND SPECIFIC EINT FUNCTIONS)')
382 2025
FORMAT(
' FORMULATION : FILE (INITIALIZATION FROM STATE FILE)')
383 2026
FORMAT(
' FILENAME : ', a)
384 2030
FORMAT(
' MAPPING TYPE : ', a)
385 2040
FORMAT(
' --VELOCITY FUNCT ID, SCALE FACTOR: ', i10, 1pg20.13)
386 2050
FORMAT(
' PHASE ', i10,
387 . /,
' VOLUME FRACTION FUNCT ID: ', i10,
388 . /,
' MASS DENSITY FUNCT ID, SCALE FACTOR: ', i10, 1pg20.13,
389 . /,
' SPECIFIC ENERGY FUNCT ID, SCALE FACTOR: ', i10, 1pg20.13)
390 2060
FORMAT(
' PHASE ', i10,
391 . /,
' VOLUME FRACTION FUNCT ID: ', i10,
392 . /,
' MASS DENSITY FUNCT ID, SCALE FACTOR: ', i10, 1pg20.13,
393 . /,
' PRESSURE FUNCT ID, SCALE FACTOR: ', i10,
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)