46 . IGRQUAD , IGRSH3N, UNITAB, LSUBMODEL)
61#include
"implicit_f.inc"
71 INTEGER,
INTENT(IN) :: ITABM1(*)
72 my_real,
INTENT(IN) :: xgrid(3, *)
76 TYPE (GROUP_) ,
DIMENSION(NGRBRIC) :: IGRBRIC
77 TYPE (GROUP_) ,
DIMENSION(NGRQUAD) :: IGRQUAD
78 TYPE (GROUP_) ,
DIMENSION(NGRSH3N) :: IGRSH3N
79 TYPE (UNIT_TYPE_),
INTENT(IN) :: UNITAB
80 TYPE(
submodel_data),
DIMENSION(NSUBMOD),
INTENT(IN) :: LSUBMODEL
89 CHARACTER(LEN=NCHARLINE) :: KEY2
90 CHARACTER(LEN=NCHARTITLE) :: TITR
91 INTEGER :: II, , LL, IFUNC1, IFUNC2, IFUNC3, LNODID1, LNODID2, LNODID3, KK, ID, UID, J
94 INTEGER :: GRBRICID_LOC, GRQUADID_LOC, GRSH3NID_LOC, IAD1, IAD2, SIZE
95 my_real :: x0(3), x1(3), x2(3), vec3(3), fac1, fac2, fac_vel
97 CHARACTER(LEN=NCHARLINE) :: FILENAME
98 CHARACTER MSG_DESCRIPTION*32
99 LOGICAL :: IS_AVAILABLE
101 IF (ninimap2d > 0)
THEN
105 is_available = .false.
110 inimap2d(kk)%CORRECTLY_READ=.true.
113 inimap2d(kk)%TITLE = trim(titr)
115 WRITE(iout, 2002) trim(titr)
117 inimap2d(kk)%FILE = .false.
119 IF (key2(1:2) ==
'VP')
THEN
120 inimap2d(kk)%FORMULATION = 1
122 ELSE IF (key2(1:2) ==
'VE')
THEN
123 inimap2d(kk)%FORMULATION = 2
125 ELSE IF (key2(1:5) ==
'FILE ')
THEN
126 inimap2d(kk)%FORMULATION = 1
127 inimap2d(kk)%FILE = .true.
132 CALL hm_get_intv(
'node_ID1', inimap2d(kk)%NODEID1, is_available, lsubmodel)
133 CALL hm_get_intv(
'node_ID2', inimap2d(kk)%NODEID2, is_available, lsubmodel)
134 CALL hm_get_intv(
'node_ID3', inimap2d(kk)%NODEID3, is_available, lsubmodel)
136 inimap2d(kk)%GRBRICID = 0
137 inimap2d(kk)%GRQUADID = 0
138 inimap2d(kk)%GRSH3NID = 0
140 CALL hm_get_intv(
'grbric_ID', inimap2d(kk)%GRBRICID, is_available, lsubmodel)
141 CALL hm_get_intv(
'grquad_ID', inimap2d(kk)%GRQUADID, is_available, lsubmodel)
142 CALL hm_get_intv(
'grtria_ID', inimap2d(kk)%GRSH3NID, is_available, lsubmodel)
147 IF (inimap2d(kk)%GRBRICID + inimap2d(kk)%GRQUADID + inimap2d(kk)%GRSH3NID == 0)
THEN
148 CALL ancmsg(msgid=1554, msgtype=msgwarning, anmode=aninfo,
149 . c1=
'IN /INIMAP2D OPTION')
154 IF (inimap2d(kk)%GRBRICID /= 0)
THEN
156 IF (inimap2d(kk)%GRBRICID == igrbric(j)%ID)
THEN
158 inimap2d(kk)%GRBRICID = j
162 IF (grbricid_loc == -1)
THEN
166 . c1=
'IN /INIMAP2D OPTION',
167 . i1=inimap2d(kk)%GRBRICID)
170 IF (inimap2d(kk)%GRQUADID /= 0)
THEN
172 IF (inimap2d(kk)%GRQUADID == igrquad(j)%ID)
THEN
174 inimap2d(kk)%GRQUADID = j
178 IF (grquadid_loc == -1)
THEN
182 . c1=
'IN /INIMAP2D OPTION',
183 . i1=inimap2d(kk)%GRQUADID)
186 IF (inimap2d(kk)%GRSH3NID /= 0)
THEN
188 IF (inimap2d(kk)%GRSH3NID == igrsh3n(j)%ID)
THEN
190 inimap2d(kk)%GRSH3NID = j
194 IF (grsh3nid_loc == -1)
THEN
198 . c1=
'IN /INIMAP2D OPTION',
199 . i1=inimap2d(kk)%GRSH3NID)
207 IF(.NOT. inimap2d(kk)%FILE)
THEN
208 CALL hm_get_intv(
'FUN_IDV', ifunc3, is_available, lsubmodel)
209 CALL hm_get_floatv(
'FSCALEV', fac_vel, is_available, lsubmodel, unitab)
210 msg_description =
'CANNOT READ VELOCITY FUNCTION ID'
211 IF (fac_vel == zero) fac_vel = one
216 IF (ifunc3 == func2d(jj)%ID)
THEN
217 inimap2d(kk)%FUNC_VEL = jj
222 IF (.NOT. found)
THEN
223 CALL ancmsg(msgid = 120, msgtype = msgerror, anmode = aninfo,
224 . c1 =
'IN /INIMAP2D OPTION', i1 = ifunc3)
227 inimap2d(kk)%FUNC_VEL = 0
229 IF (fac_vel == zero) fac_vel = one
230 inimap2d(kk)%FAC_VEL = fac_vel
232 CALL hm_get_intv(
'Nb_integr',
SIZE, is_available, lsubmodel)
234 inimap2d(kk)%NBMAT =
SIZE
235 ALLOCATE(inimap2d(kk)%FUNC_ALPHA(size), inimap2d(kk)%FUNC_RHO(size),
236 . inimap2d(kk)%FUNC_ENER(size), inimap2d(kk)%FUNC_PRES(size),
237 . inimap2d(kk)%FAC_PRES_ENER(size), inimap2d(kk)%FAC_RHO(size))
238 inimap2d(kk)%FUNC_ALPHA(1:size) = 0
249 IF (ifunc1 == func2d(jj)%ID)
THEN
250 inimap2d(kk)%FUNC_ALPHA(ll) = jj
255 IF (.NOT. found)
THEN
256 CALL ancmsg(msgid = 1734, msgtype = msgerror, anmode = aninfo,
257 . c1 =
'IN /INIMAP2D OPTION', i1 = ifunc1)
260 inimap2d(kk)%FUNC_ALPHA(ll) = 0
265 IF (ifunc2 == func2d(jj)%ID)
THEN
266 inimap2d(kk)%FUNC_RHO(ll) = jj
271 IF (.NOT. found)
THEN
272 CALL ancmsg(msgid = 1734, msgtype = msgerror, anmode = aninfo,
273 . c1 =
'IN /INIMAP2D OPTION', i1 = ifunc2)
276 inimap2d(kk)%FUNC_RHO(ll) = 0
281 IF (ifunc3 == func2d(jj)%ID)
THEN
282 IF (inimap2d(kk)%FORMULATION == 1)
THEN
283 inimap2d(kk)%FUNC_PRES(ll) = jj
284 inimap2d(kk)%FUNC_ENER(ll) = 0
285 ELSE IF (inimap2d(kk)%FORMULATION == 2)
THEN
286 inimap2d(kk)%FUNC_PRES(ll) = 0
287 inimap2d(kk)%FUNC_ENER(ll) = jj
293 IF (.NOT. found)
THEN
294 CALL ancmsg(msgid = 1734, msgtype = msgerror, anmode = aninfo,
295 . c1 =
'IN /INIMAP2D OPTION', i1 = ifunc3)
298 inimap2d(kk)%FUNC_PRES(ll) = 0
299 inimap2d(kk)%FUNC_ENER(ll) = 0
301 IF (fac1 == zero) fac1 = one
302 IF (fac2 == zero) fac2 = one
303 inimap2d(kk)%FAC_RHO(ll) = fac1
304 inimap2d(kk)%FAC_PRES_ENER(ll) = fac2
305 IF (inimap2d(kk)%FORMULATION == 1)
THEN
308 IF (inimap2d(kk)%FORMULATION == 2)
THEN
309 WRITE(iout, 2050) ll, ifunc1, ifunc2, fac1, ifunc3, fac2
313 ELSEIF(key2(1:5) ==
'FILE ')
THEN
315 msg_description =
'CANNOT READ FILENAME '
316 WRITE(iout, 2026)trim(filename)
322 IF (inimap2d(kk)%NODEID1 > 0)
THEN
323 lnodid1 = usr2sys(inimap2d(kk)%NODEID1, itabm1, mess, inimap2d(kk)%NODEID1)
324 inimap2d(kk)%NODEID1 = lnodid1
326 IF (inimap2d(kk)%NODEID2 > 0)
THEN
327 lnodid2 = usr2sys(inimap2d(kk)%NODEID2, itabm1, mess, inimap2d(kk)%NODEID2)
328 inimap2d(kk)%NODEID2 = lnodid2
330 IF (inimap2d(kk)%NODEID3 > 0)
THEN
331 lnodid3 = usr2sys(inimap2d(kk)%NODEID3, itabm1, mess, inimap2d(kk)%NODEID3)
332 inimap2d(kk)%NODEID3 = lnodid3
335 IF (lnodid1==0 .or. lnodid2==0 .or. lnodid3==0)
THEN
338 x0(1:3) = xgrid(1:3, lnodid1)
339 x1(1:3) = xgrid(1:3, lnodid2)
340 x2(1:3) = xgrid(1:3, lnodid3)
341 norm = sqrt(dot_product(x1(1:3) - x0(1:3), x1(1:3) - x0(1:3)))
342 inimap2d(kk)%VEC1(1:3) = (x1(1:3) - x0(1:3)) /
norm
343 norm = sqrt(dot_product(x2(1:3) - x0(1:3), x2(1:3) - x0(1:3)))
344 inimap2d(kk)%VEC2(1:3) = (x2(1:3) - x0(1:3)) /
norm
345 vec3(1) = inimap2d(kk)%VEC1(2) * inimap2d(kk)%VEC2(3) -
346 . inimap2d(kk)%VEC1(3) * inimap2d(kk)%VEC2(2)
347 vec3(2) = -inimap2d(kk)%VEC1(1) * inimap2d(kk)%VEC2(3) +
348 . inimap2d(kk)%VEC1(3) * inimap2d(kk)%VEC2(1)
349 vec3(3) = inimap2d(kk)%VEC1(1) * inimap2d(kk)%VEC2(2) -
350 . inimap2d(kk)%VEC1(2) * inimap2d(kk)%VEC2(1)
352 inimap2d(kk)%VEC2(1) = -inimap2d(kk)%VEC1(2) * vec3(3) +
353 . inimap2d(kk)%VEC1(3) * vec3(2)
354 inimap2d(kk)%VEC2(2) = inimap2d(kk)%VEC1(1) * vec3(3) -
355 . inimap2d(kk)%VEC1(3) * vec3(1)
356 inimap2d(kk)%VEC2(3) = -inimap2d(kk)%VEC1(1) * vec3(2) +
357 . inimap2d(kk)%VEC1(2) * vec3(1)
359 inimap2d(kk)%VEC3(1) = vec3(1)
360 inimap2d(kk)%VEC3(2) = vec3(2)
361 inimap2d(kk)%VEC3(3) = vec3(3)
371 .
' 2D INITIAL MAPPING (/INIMAP2D) '/
372 .
' ------------------------------ ')
373 2001
FORMAT(
' ID : ', 1x, i10)
374 2002
FORMAT(
' TITLE : ', a)
375 2010
FORMAT(
' FORMULATION : VP (INITIALIZATION FROM DENSITY AND PRESSURE FUNCTIONS)')
376 2020
FORMAT(
' FORMULATION : VE (INITIALIZATION FROM DENSITY AND SPECIFIC EINT FUNCTIONS)')
377 2025
FORMAT(
' FORMULATION : FILE (INITIALIZATION FROM STATE FILE)')
378 2026
FORMAT(
' FILENAME : ', a)
379 2040
FORMAT(
' --VELOCITY FUNCT ID, SCALE FACTOR: ', i10, 1pg20.13)
380 2050
FORMAT(
' PHASE ', i10,
381 . /,
' VOLUME FRACTION FUNCT ID: ', i10,
382 . /,
' MASS DENSITY FUNCT ID, SCALE FACTOR: ', i10, 1pg20.13,
383 . /,
' SPECIFIC ENERGY FUNCT ID, SCALE FACTOR: ', i10, 1pg20.13)
384 2060
FORMAT(
' PHASE ', i10,
385 . /,
' VOLUME FRACTION FUNCT ID: ', i10,
386 . /,
' MASS DENSITY FUNCT ID, SCALE FACTOR: ', i10, 1pg20.13,
387 . /,
' PRESSURE FUNCT ID, SCALE FACTOR: ', i10, 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)