96 DENS_dt, MOMX_dt, MOMY_dt, MOMZ_dt, ETot_dt, & ! (out)
97 ddens_, momx_, momy_, momz_, etot_, dpres_, &
98 dens_hyd, pres_hyd, pres_hyd_ref, therm_hyd, &
99 coriolis, rtot, cvtot, cptot, dphyddx, dphyddy, &
100 element3d_operation, dx, dy, dz, sx, sy, sz, lift, &
101 lmesh, elem, lmesh2d, elem2d )
105 use,
intrinsic :: ieee_arithmetic, only: isnan => ieee_is_nan
113 type(
sparsemat),
intent(in) :: dx, dy, dz, sx, sy, sz, lift
114 real(rp),
intent(out) :: dens_dt(elem%np,lmesh%nea)
115 real(rp),
intent(out) :: momx_dt(elem%np,lmesh%nea)
116 real(rp),
intent(out) :: momy_dt(elem%np,lmesh%nea)
117 real(rp),
intent(out) :: momz_dt(elem%np,lmesh%nea)
118 real(rp),
intent(out) :: etot_dt(elem%np,lmesh%nea)
119 real(rp),
intent(in) :: ddens_(elem%np,lmesh%nea)
120 real(rp),
intent(in) :: momx_(elem%np,lmesh%nea)
121 real(rp),
intent(in) :: momy_(elem%np,lmesh%nea)
122 real(rp),
intent(in) :: momz_(elem%np,lmesh%nea)
123 real(rp),
intent(in) :: etot_(elem%np,lmesh%nea)
124 real(rp),
intent(in) :: dpres_(elem%np,lmesh%nea)
125 real(rp),
intent(in) :: dens_hyd(elem%np,lmesh%nea)
126 real(rp),
intent(in) :: pres_hyd(elem%np,lmesh%nea)
127 real(rp),
intent(in) :: pres_hyd_ref(elem%np,lmesh%nea)
128 real(rp),
intent(in) :: therm_hyd(elem%np,lmesh%nea)
129 real(rp),
intent(in) :: coriolis(elem2d%np,lmesh2d%nea)
130 real(rp),
intent(in) :: rtot(elem%np,lmesh%nea)
131 real(rp),
intent(in) :: cvtot(elem%np,lmesh%nea)
132 real(rp),
intent(in) :: cptot(elem%np,lmesh%nea)
133 real(rp),
intent(in) :: dphyddx(elem%np,lmesh%nea)
134 real(rp),
intent(in) :: dphyddy(elem%np,lmesh%nea)
136 real(rp) :: fx(elem%np), fy(elem%np), fz(elem%np), liftdelflx(elem%np)
137 real(rp) :: dpres_hyd(elem%np), gradphyd_x(elem%np), gradphyd_y(elem%np)
138 real(rp) :: del_flux(elem%nfptot,lmesh%ne,
prgvar_num)
139 real(rp) :: del_flux_hyd(elem%nfptot,lmesh%ne,2)
140 real(rp) :: rdens_(elem%np), u_(elem%np), v_(elem%np), w_(elem%np), wt_(elem%np)
141 real(rp) :: gsqrtv(elem%np), rgsqrtv(elem%np)
142 real(rp) :: cori(elem%np)
146 real(rp) :: gamm, rgamm
148 real(rp) :: rovp0, p0ovr
150 real(rp) :: enthalpy_(elem%np)
155 call prof_rapstart(
'cal_dyn_tend_bndflux', 3)
156 call get_ebnd_flux( &
157 del_flux, del_flux_hyd, &
158 ddens_, momx_, momy_, momz_, etot_, dpres_, dens_hyd, pres_hyd, &
159 rtot, cvtot, cptot, &
160 lmesh%Gsqrt, lmesh%GI3(:,:,1), lmesh%GI3(:,:,2), lmesh%zlev(:,:), &
161 lmesh%normal_fn(:,:,1), lmesh%normal_fn(:,:,2), lmesh%normal_fn(:,:,3), &
162 lmesh%vmapM, lmesh%vmapP, &
163 lmesh, elem, lmesh2d, elem2d )
164 call prof_rapend(
'cal_dyn_tend_bndflux', 3)
167 call prof_rapstart(
'cal_dyn_tend_interior', 3)
169 rgamm = cvdry / cpdry
170 rp0 = 1.0_rp / pres00
172 p0ovr = pres00 / rdry
180 do ke = lmesh%NeS, lmesh%NeE
182 ke2d = lmesh%EMap3Dto2D(ke)
183 cori(:) = coriolis(elem%IndexH2Dto3D(:),ke2d)
185 gsqrtv(:) = lmesh%Gsqrt(:,ke) / lmesh%GsqrtH(elem%IndexH2Dto3D,ke2d)
186 rgsqrtv(:) = 1.0_rp / gsqrtv(:)
189 rdens_(:) = 1.0_rp / (ddens_(:,ke) + dens_hyd(:,ke))
190 u_(:) = momx_(:,ke) * rdens_(:)
191 v_(:) = momy_(:,ke) * rdens_(:)
192 w_(:) = momz_(:,ke) * rdens_(:)
193 wt_(:) = w_(:) * rgsqrtv(:) + lmesh%GI3(:,ke,1) * u_(:) + lmesh%GI3(:,ke,2) * v_(:)
200 enthalpy_(:) = etot_(:,ke) + pres_hyd(:,ke) + dpres_(:,ke)
204 dpres_hyd(:) = pres_hyd(:,ke) - pres_hyd_ref(:,ke)
208 call sparsemat_matmul(lift, lmesh%Fscale(:,ke) * del_flux_hyd(:,ke,1), liftdelflx)
209 gradphyd_x(:) = lmesh%Escale(:,ke,1,1) * fx(:) &
210 + lmesh%Escale(:,ke,3,3) * fz(:) &
215 call sparsemat_matmul(lift, lmesh%Fscale(:,ke) * del_flux_hyd(:,ke,2), liftdelflx)
216 gradphyd_y(:) = lmesh%Escale(:,ke,2,2) * fy(:) &
217 + lmesh%Escale(:,ke,3,3) * fz(:) &
223 call sparsemat_matmul(lift, lmesh%Fscale(:,ke) * del_flux(:,ke,dens_vid), liftdelflx)
225 dens_dt(:,ke) = - ( &
226 lmesh%Escale(:,ke,1,1) * fx(:) &
227 + lmesh%Escale(:,ke,2,2) * fy(:) &
228 + liftdelflx(:) ) / lmesh%Gsqrt(:,ke)
231 call sparsemat_matmul(dx, lmesh%Gsqrt(:,ke) * ( u_(:) * momx_(:,ke) + dpres_(:,ke) ), fx)
234 + lmesh%GI3(:,ke,1) * dpres_(:,ke) ), fz)
235 call sparsemat_matmul(lift, lmesh%Fscale(:,ke) * del_flux(:,ke,momx_vid), liftdelflx)
238 - ( lmesh%Escale(:,ke,1,1) * fx(:) &
239 + lmesh%Escale(:,ke,2,2) * fy(:) &
240 + lmesh%Escale(:,ke,3,3) * fz(:) &
241 + liftdelflx(:) ) / lmesh%Gsqrt(:,ke) &
242 - gradphyd_x(:) * rgsqrtv(:) &
243 + cori(:) * momy_(:,ke)
247 call sparsemat_matmul(dy, lmesh%Gsqrt(:,ke) * ( v_(:) * momy_(:,ke) + dpres_(:,ke) ), fy)
249 + lmesh%GI3(:,ke,2) * dpres_(:,ke) ), fz)
250 call sparsemat_matmul(lift, lmesh%Fscale(:,ke) * del_flux(:,ke,momy_vid), liftdelflx)
253 - ( lmesh%Escale(:,ke,1,1) * fx(:) &
254 + lmesh%Escale(:,ke,2,2) * fy(:) &
255 + lmesh%Escale(:,ke,3,3) * fz(:) &
256 + liftdelflx(:) ) / lmesh%Gsqrt(:,ke) &
257 - gradphyd_y(:) * rgsqrtv(:) &
258 - cori(:) * momx_(:,ke)
264 call sparsemat_matmul(lift, lmesh%Fscale(:,ke) * del_flux(:,ke,momz_vid), liftdelflx)
267 - ( lmesh%Escale(:,ke,1,1) * fx(:) &
268 + lmesh%Escale(:,ke,2,2) * fy(:) &
269 + lmesh%Escale(:,ke,3,3) * fz(:) &
270 + liftdelflx(:) ) / lmesh%Gsqrt(:,ke)
275 call sparsemat_matmul(lift, lmesh%Fscale(:,ke) * del_flux(:,ke,etot_vid), liftdelflx)
278 - ( lmesh%Escale(:,ke,1,1) * fx(:) &
279 + lmesh%Escale(:,ke,2,2) * fy(:) &
280 + liftdelflx(:) ) / lmesh%Gsqrt(:,ke)
283 call prof_rapend(
'cal_dyn_tend_interior', 3)
292 DENS_dt, MOMX_dt, MOMY_dt, MOMZ_dt, ETOT_dt, & ! (out)
293 ddens_, momx_, momy_, momz_, etot_, dens_hyd, pres_hyd, &
294 ddens0_, momx0_, momy0_, momz0_, etot0_, &
295 rtot, cvtot, cptot, &
296 element3d_operation, dz, lift, &
298 lmesh, elem, lmesh2d, elem2d )
312 real(rp),
intent(out) :: dens_dt(elem%np,lmesh%nea)
313 real(rp),
intent(out) :: momx_dt(elem%np,lmesh%nea)
314 real(rp),
intent(out) :: momy_dt(elem%np,lmesh%nea)
315 real(rp),
intent(out) :: momz_dt(elem%np,lmesh%nea)
316 real(rp),
intent(out) :: etot_dt(elem%np,lmesh%nea)
317 real(rp),
intent(in) :: ddens_(elem%np,lmesh%nea)
318 real(rp),
intent(in) :: momx_(elem%np,lmesh%nea)
319 real(rp),
intent(in) :: momy_(elem%np,lmesh%nea)
320 real(rp),
intent(in) :: momz_(elem%np,lmesh%nea)
321 real(rp),
intent(in) :: etot_(elem%np,lmesh%nea)
322 real(rp),
intent(in) :: dens_hyd(elem%np,lmesh%nea)
323 real(rp),
intent(in) :: pres_hyd(elem%np,lmesh%nea)
324 real(rp),
intent(in) :: ddens0_(elem%np,lmesh%nea)
325 real(rp),
intent(in) :: momx0_(elem%np,lmesh%nea)
326 real(rp),
intent(in) :: momy0_(elem%np,lmesh%nea)
327 real(rp),
intent(in) :: momz0_(elem%np,lmesh%nea)
328 real(rp),
intent(in) :: etot0_(elem%np,lmesh%nea)
329 real(rp),
intent(in) :: rtot(elem%np,lmesh%nea)
330 real(rp),
intent(in) :: cvtot(elem%np,lmesh%nea)
331 real(rp),
intent(in) :: cptot(elem%np,lmesh%nea)
334 real(rp),
intent(in) :: impl_fac
335 real(rp),
intent(in) :: dt
337 real(rp) :: prog_vars (elem%np,lmesh%nez,
prgvar_num,lmesh%nex*lmesh%ney)
338 real(rp) :: dpres (elem%np,lmesh%nez,lmesh%nex*lmesh%ney)
339 real(rp) :: prog_vars0(elem%np,lmesh%nez,
prgvar_num,lmesh%nex*lmesh%ney)
340 real(rp) :: dpres0 (elem%np,lmesh%nez,lmesh%nex*lmesh%ney)
341 real(rp) :: b1d(3,elem%nnode_v,lmesh%nez,elem%nnode_h1d**2,lmesh%nex*lmesh%ney)
342 real(rp) :: geopot (elem%np,lmesh%nez,lmesh%nex*lmesh%ney)
343 real(rp) :: kinhovdens(elem%np,lmesh%nez,lmesh%nex*lmesh%ney)
344 integer :: ipiv(elem%nnode_v*3*lmesh%nez,elem%nnode_h1d**2)
345 real(rp) :: b1d_uv(elem%nnode_v,lmesh%nez,2,elem%nnode_h1d**2,lmesh%nex*lmesh%ney)
346 integer :: ipiv_uv(elem%nnode_v*1*lmesh%nez,elem%nnode_h1d**2)
347 real(rp) :: alph(elem%nfptot,lmesh%nez,lmesh%nex*lmesh%ney)
348 real(rp) :: rtot_z(elem%np,lmesh%nez,lmesh%nex*lmesh%ney)
349 real(rp) :: cptot_ov_cvtot(elem%np,lmesh%nez,lmesh%nex*lmesh%ney)
350 real(rp) :: dens_hyd_z(elem%np,lmesh%nez,lmesh%nex*lmesh%ney)
351 real(rp) :: pres_hyd_z(elem%np,lmesh%nez,lmesh%nex*lmesh%ney)
352 real(rp) :: gnnm_z(elem%np,lmesh%nez,lmesh%nex*lmesh%ney)
353 real(rp) :: g13_z(elem%np,lmesh%nez,lmesh%nex*lmesh%ney)
354 real(rp) :: g23_z(elem%np,lmesh%nez,lmesh%nex*lmesh%ney)
355 real(rp) :: gsqrtv_z(elem%np,lmesh%nez,lmesh%nex*lmesh%ney)
356 real(rp) :: nz(elem%nfptot,lmesh%nez,lmesh%nex*lmesh%ney)
357 integer :: vmapm(elem%nfptot,lmesh%nez)
358 integer :: vmapp(elem%nfptot,lmesh%nez)
359 integer :: colmask(elem%nnode_v)
360 integer :: ke_xy, ke_z, ke, ke2d, v
362 integer :: kl, ku, nz_1d
363 integer :: kl_uv, ku_uv, nz_1d_uv
365 logical :: is_converged
367 real(rp),
allocatable :: pmatbnd(:,:,:)
368 real(rp),
allocatable :: pmatbnd_uv(:,:,:)
370 real(rp) :: dens_(elem%np)
373 call prof_rapstart(
'hevi_cal_vi_prep', 3)
375 nz_1d = elem%Nnode_v * 3 * lmesh%NeZ
376 kl = ( elem%Nnode_v + 1 ) * 3 - 1
378 nz_1d_uv = elem%Nnode_v * 1 * lmesh%NeZ
381 allocate( pmatbnd(2*kl+ku+1,nz_1d,elem%Nnode_h1D**2) )
382 allocate( pmatbnd_uv(2*kl_uv+ku_uv+1,nz_1d_uv,elem%Nnode_h1D**2) )
384 call lmesh%GetVmapZ1D( vmapm, vmapp )
390 do ke_xy=1, lmesh%NeX*lmesh%NeY
392 ke = ke_xy + (ke_z-1)*lmesh%NeX*lmesh%NeY
393 ke2d = lmesh%EMap3Dto2D(ke)
395 prog_vars(:,ke_z,dens_vid,ke_xy) = ddens0_(:,ke)
396 prog_vars(:,ke_z,momx_vid,ke_xy) = momx0_(:,ke)
397 prog_vars(:,ke_z,momy_vid,ke_xy) = momy0_(:,ke)
398 prog_vars(:,ke_z,momz_vid,ke_xy) = momz0_(:,ke)
399 prog_vars(:,ke_z,etot_vid,ke_xy) = etot0_(:,ke)
401 dens_hyd_z(:,ke_z,ke_xy) = dens_hyd(:,ke)
402 pres_hyd_z(:,ke_z,ke_xy) = pres_hyd(:,ke)
403 geopot(:,ke_z,ke_xy) = grav * lmesh%zlev(:,ke)
405 dens_(:) = dens_hyd(:,ke) + ddens0_(:,ke)
406 kinhovdens(:,ke_z,ke_xy) = 0.5_rp * ( &
407 momx0_(:,ke) * ( lmesh%G_ij(elem%IndexH2Dto3D,ke2d,1,1) * momx0_(:,ke) + lmesh%G_ij(elem%IndexH2Dto3D,ke2d,2,1) * momy0_(:,ke) ) &
408 + momy0_(:,ke) * ( lmesh%G_ij(elem%IndexH2Dto3D,ke2d,2,1) * momx0_(:,ke) + lmesh%G_ij(elem%IndexH2Dto3D,ke2d,2,2) * momy0_(:,ke) ) &
412 rtot_z(:,ke_z,ke_xy) = rtot(:,ke)
413 cptot_ov_cvtot(:,ke_z,ke_xy) = cptot(:,ke) / cvtot(:,ke)
415 dpres(:,ke_z,ke_xy) = &
416 ( cptot_ov_cvtot(:,ke_z,ke_xy) - 1.0_rp ) &
417 * ( etot0_(:,ke) - ( dens_(:) * ( kinhovdens(:,ke_z,ke_xy) + geopot(:,ke_z,ke_xy) ) + 0.5_rp * momz0_(:,ke)**2 / dens_(:) ) ) &
420 nz(:,ke_z,ke_xy) = lmesh%normal_fn(:,ke,3)
421 g13_z(:,ke_z,ke_xy) = lmesh%GI3(:,ke,1)
422 g23_z(:,ke_z,ke_xy) = lmesh%GI3(:,ke,2)
423 gsqrtv_z(:,ke_z,ke_xy) = lmesh%Gsqrt(:,ke) / lmesh%GsqrtH(elem%IndexH2Dto3D,ke2d)
425 gnnm_z(:,ke_z,ke_xy) = ( 1.0_rp / gsqrtv_z(:,ke_z,ke_xy)**2 &
426 + g13_z(:,ke_z,ke_xy)**2 + g23_z(:,ke_z,ke_xy) )
431 prog_vars0(:,:,:,:) = prog_vars(:,:,:,:)
432 dpres0(:,:,:) = dpres(:,:,:)
436 call prof_rapend(
'hevi_cal_vi_prep', 3)
440 if ( abs(impl_fac) > 0.0_rp )
then
441 call prof_rapstart(
'hevi_cal_vi_itr', 3)
446 call prof_rapstart(
'hevi_cal_vi_ax', 3)
448 call vi_eval_ax_uv( &
449 momx_dt(:,:), momy_dt(:,:), alph(:,:,:), &
450 prog_vars, dpres, prog_vars0, dpres0, &
451 ddens_, momx_, momy_, momz_, etot_, &
452 dens_hyd_z, pres_hyd_z, &
453 rtot_z, cptot_ov_cvtot, &
455 gnnm_z, g13_z, g23_z, gsqrtv_z, &
457 lmesh, elem, nz, vmapm, vmapp, &
460 call prof_rapend(
'hevi_cal_vi_ax', 3)
462 do ke_xy=1, lmesh%NeX * lmesh%NeY
463 call prof_rapstart(
'hevi_cal_vi_matbnd', 3)
464 call vi_construct_matbnd_uv( pmatbnd_uv(:,:,:), &
465 kl_uv, ku_uv, nz_1d_uv, &
466 prog_vars(:,:,:,ke_xy), kinhovdens(:,:,ke_xy), &
467 dens_hyd_z(:,:,ke_xy), pres_hyd_z(:,:,ke_xy), &
468 g13_z(:,:,ke_xy), g23_z(:,:,ke_xy), gsqrtv_z(:,:,ke_xy), &
470 rtot_z(:,:,ke_xy), cptot_ov_cvtot(:,:,ke_xy), &
474 lmesh, elem, nz(:,:,ke_xy), vmapm, vmapp, ke_xy, 1 )
475 call prof_rapend(
'hevi_cal_vi_matbnd', 3)
477 call prof_rapstart(
'hevi_cal_vi_lin', 3)
480 do ij=1, elem%Nnode_h1D**2
481 call dgbsv( nz_1d_uv, kl_uv, ku_uv, 2, pmatbnd_uv(:,:,ij), 2*kl_uv+ku_uv+1, ipiv_uv(:,ij), b1d_uv(:,:,:,ij,ke_xy), nz_1d_uv, info)
483 colmask(:) = elem%Colmask(:,ij)
485 prog_vars(colmask(:),ke_z,momx_vid,ke_xy) = prog_vars(colmask(:),ke_z,momx_vid,ke_xy) + b1d_uv(:,ke_z,1,ij,ke_xy)
486 prog_vars(colmask(:),ke_z,momy_vid,ke_xy) = prog_vars(colmask(:),ke_z,momy_vid,ke_xy) + b1d_uv(:,ke_z,2,ij,ke_xy)
491 call prof_rapend(
'hevi_cal_vi_lin', 3)
495 call prof_rapstart(
'hevi_cal_vi_ax', 3)
497 dens_dt(:,:), momz_dt(:,:), etot_dt(:,:), &
499 prog_vars, dpres, prog_vars0, dpres0, &
500 ddens_, momx_, momy_, momz_, etot_, &
501 dens_hyd_z, pres_hyd_z, &
502 rtot_z, cptot_ov_cvtot, &
504 gnnm_z, g13_z, g23_z, gsqrtv_z, &
506 lmesh, elem, nz, vmapm, vmapp, &
508 call prof_rapend(
'hevi_cal_vi_ax', 3)
510 do ke_xy=1, lmesh%NeX * lmesh%NeY
511 call prof_rapstart(
'hevi_cal_vi_matbnd', 3)
512 call vi_construct_matbnd( pmatbnd(:,:,:), &
514 prog_vars(:,:,:,ke_xy), kinhovdens(:,:,ke_xy), &
515 dens_hyd_z(:,:,ke_xy), pres_hyd_z(:,:,ke_xy), &
516 g13_z(:,:,ke_xy), g23_z(:,:,ke_xy), gsqrtv_z(:,:,ke_xy), &
518 rtot_z(:,:,ke_xy), cptot_ov_cvtot(:,:,ke_xy), &
522 lmesh, elem, nz(:,:,ke_xy), vmapm, vmapp, ke_xy, 1 )
523 call prof_rapend(
'hevi_cal_vi_matbnd', 3)
525 call prof_rapstart(
'hevi_cal_vi_lin', 3)
528 do ij=1, elem%Nnode_h1D**2
529 call dgbsv( nz_1d, kl, ku, 1, pmatbnd(:,:,ij), 2*kl+ku+1, ipiv(:,ij), b1d(:,:,:,ij,ke_xy), nz_1d, info)
531 colmask(:) = elem%Colmask(:,ij)
533 prog_vars(colmask(:),ke_z,dens_vid,ke_xy) = prog_vars(colmask(:),ke_z,dens_vid,ke_xy) + b1d(1,:,ke_z,ij,ke_xy)
534 prog_vars(colmask(:),ke_z,momz_vid,ke_xy) = prog_vars(colmask(:),ke_z,momz_vid,ke_xy) + b1d(2,:,ke_z,ij,ke_xy)
535 prog_vars(colmask(:),ke_z,etot_vid,ke_xy) = prog_vars(colmask(:),ke_z,etot_vid,ke_xy) + b1d(3,:,ke_z,ij,ke_xy)
541 dens_(:) = dens_hyd_z(:,ke_z,ke_xy) + prog_vars(:,ke_z,dens_vid,ke_xy)
542 dpres(:,ke_z,ke_xy) = &
543 ( cptot_ov_cvtot(:,ke_z,ke_xy) - 1.0_rp ) &
544 * ( prog_vars(:,ke_z,etot_vid,ke_xy) &
545 - ( dens_(:) * ( kinhovdens(:,ke_z,ke_xy) + geopot(:,ke_z,ke_xy) ) + 0.5_rp * prog_vars(:,ke_z,momz_vid,ke_xy)**2 / dens_(:) ) ) &
546 - pres_hyd_z(:,ke_z,ke_xy)
549 call prof_rapend(
'hevi_cal_vi_lin', 3)
554 call prof_rapend(
'hevi_cal_vi_itr', 3)
557 call prof_rapstart(
'hevi_cal_vi_retrun_var', 3)
558 if ( abs(impl_fac) > 0.0_rp)
then
560 do ke_xy=1, lmesh%NeX * lmesh%NeY
562 ke = ke_xy + (ke_z-1)*lmesh%NeX*lmesh%NeY
563 dens_dt(:,ke) = ( prog_vars(:,ke_z,dens_vid,ke_xy) - ddens_(:,ke) ) / impl_fac
564 momx_dt(:,ke) = ( prog_vars(:,ke_z,momx_vid,ke_xy) - momx_(:,ke) ) / impl_fac
565 momy_dt(:,ke) = ( prog_vars(:,ke_z,momy_vid,ke_xy) - momy_(:,ke) ) / impl_fac
566 momz_dt(:,ke) = ( prog_vars(:,ke_z,momz_vid,ke_xy) - momz_(:,ke) ) / impl_fac
567 etot_dt(:,ke) = ( prog_vars(:,ke_z,etot_vid,ke_xy) - etot_(:,ke) ) / impl_fac
571 call vi_eval_ax_uv( &
572 momx_dt(:,:), momy_dt(:,:), alph(:,:,:), &
573 prog_vars, dpres, prog_vars0, dpres0, &
574 ddens_, momx_, momy_, momz_, etot_, &
575 dens_hyd_z, pres_hyd_z, &
576 rtot_z, cptot_ov_cvtot, &
578 gnnm_z, g13_z, g23_z, gsqrtv_z, &
580 lmesh, elem, nz, vmapm, vmapp )
583 dens_dt(:,:), momz_dt(:,:), etot_dt(:,:), &
585 prog_vars, dpres, prog_vars0, dpres0, &
586 ddens_, momx_, momy_, momz_, etot_, &
587 dens_hyd_z, pres_hyd_z, &
588 rtot_z, cptot_ov_cvtot, &
590 gnnm_z, g13_z, g23_z, gsqrtv_z, &
592 lmesh, elem, nz, vmapm, vmapp )
594 call prof_rapend(
'hevi_cal_vi_retrun_var', 3)