45 . IGRQUAD , IGRSH3N, MULTI_FVM, UNITAB, LSUBMODEL)
60#include "implicit_f.inc"
72 INTEGER,
INTENT(IN) :: NPC(*), 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, LNODID1, LNODID2, KK, ID, UID, J
94 INTEGER :: GRBRICID_LOC, GRQUADID_LOC, GRSH3NID_LOC
95 my_real :: x0, y0, z0, x1, y1, z1,
norm, fac1, fac2, fac_vel
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 ==
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
182 CALL ANCMSG(MSGID=1554,
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
198 CALL ANCMSG(MSGID=1554,
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
214 CALL ANCMSG(MSGID=1554,
217 . C1='in /inimap1d option
',
218 . I1=INIMAP1D(KK)%GRSH3NID)
226.NOT.
IF( 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)
265 CALL HM_GET_FLOAT_ARRAY_INDEX('fscalepei
', FAC2, LL, IS_AVAILABLE, LSUBMODEL, UNITAB)
272 DO II = NFUNCT + 2, 2 * NFUNCT + 1
274 IF (NPC(II) == IFUNC1) THEN
275 INIMAP1D(KK)%FUNC_ALPHA(LL) = JJ
280.NOT.
IF ( 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.NOT.
IF ( 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.NOT.
IF ( 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, FAC2
343 ELSEIF(INIMAP1D(KK)%FILE)THEN
344 CALL HM_GET_STRING('filename
', FILENAME, ncharline, IS_AVAILABLE)
345 WRITE(IOUT, 2026)TRIM(FILENAME)
346 CALL LEC_INIMAP1D_FILE(INIMAP1D(KK), FILENAME, ID, TITR)
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 !force to 0.00 instead of epsilon : Y,Z only in 2D
372 ENDDO ! KK = 1, NINIMAP1D
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, 1pg20
subroutine hm_read_inimap1d(inimap1d, npc, itabm1, x, igrbric, igrquad, igrsh3n, multi_fvm, unitab, lsubmodel)