135 DENS_dt, MOMX_dt, MOMY_dt, MOMZ_dt, RHOT_dt, & ! (out)
136 ddens_, momx_, momy_, momz_, drhot_, dpres_, &
137 dens_hyd, pres_hyd, pres_hyd_ref, therm_hyd, &
138 coriolis, rtot, cvtot, cptot, dphyddx, dphyddy, &
139 element3d_operation, dx, dy, dz, sx, sy, sz, lift, &
140 lmesh, elem, lmesh2d, elem2d )
152 type(
sparsemat),
intent(in) :: dx, dy, dz, sx, sy, sz, lift
153 real(rp),
intent(out) :: dens_dt(elem%np,lmesh%nea)
154 real(rp),
intent(out) :: momx_dt(elem%np,lmesh%nea)
155 real(rp),
intent(out) :: momy_dt(elem%np,lmesh%nea)
156 real(rp),
intent(out) :: momz_dt(elem%np,lmesh%nea)
157 real(rp),
intent(out) :: rhot_dt(elem%np,lmesh%nea)
158 real(rp),
intent(in) :: ddens_(elem%np,lmesh%nea)
159 real(rp),
intent(in) :: momx_(elem%np,lmesh%nea)
160 real(rp),
intent(in) :: momy_(elem%np,lmesh%nea)
161 real(rp),
intent(in) :: momz_(elem%np,lmesh%nea)
162 real(rp),
intent(in) :: drhot_(elem%np,lmesh%nea)
163 real(rp),
intent(in) :: dpres_(elem%np,lmesh%nea)
164 real(rp),
intent(in) :: dens_hyd(elem%np,lmesh%nea)
165 real(rp),
intent(in) :: pres_hyd(elem%np,lmesh%nea)
166 real(rp),
intent(in) :: pres_hyd_ref(elem%np,lmesh%nea)
167 real(rp),
intent(in) :: therm_hyd(elem%np,lmesh%nea)
168 real(rp),
intent(in) :: coriolis(elem2d%np,lmesh2d%nea)
169 real(rp),
intent(in) :: rtot(elem%np,lmesh%nea)
170 real(rp),
intent(in) :: cvtot(elem%np,lmesh%nea)
171 real(rp),
intent(in) :: cptot(elem%np,lmesh%nea)
172 real(rp),
intent(in) :: dphyddx(elem%np,lmesh%nea)
173 real(rp),
intent(in) :: dphyddy(elem%np,lmesh%nea)
175 real(rp) :: fx(elem%np), fy(elem%np), fz(elem%np), liftdelflx(elem%np)
176 real(rp) :: fx_sp(elem%np), fy_sp(elem%np), fz_sp(elem%np)
177 real(rp) :: dpres_hyd(elem%np), gradphyd_x(elem%np), gradphyd_y(elem%np)
178 real(rp) :: del_flux(elem%nfptot,lmesh%ne,
prgvar_num)
179 real(rp) :: del_flux_hyd(elem%nfptot,lmesh%ne,2)
180 real(rp) :: gsqrtdens_(elem%np), rdens_(elem%np), rhot_hyd(elem%np), rhot_(elem%np)
181 real(rp) :: u_(elem%np), v_(elem%np), w_(elem%np), wt_(elem%np), pot_(elem%np)
182 real(rp) :: cori(elem%np)
183 real(rp) :: gsqrtv(elem%np), rgsqrtv(elem%np)
187 real(rp) :: gamm, rgamm
189 real(rp) :: rovp0, p0ovr
192 call prof_rapstart(
'cal_dyn_tend_bndflux', 3)
193 call get_ebnd_flux( &
194 del_flux, del_flux_hyd, &
195 ddens_, momx_, momy_, momz_, drhot_, dpres_, dens_hyd, pres_hyd, &
196 rtot, cvtot, cptot, &
197 lmesh%Gsqrt, lmesh%GI3(:,:,1), lmesh%GI3(:,:,2), &
198 lmesh%normal_fn(:,:,1), lmesh%normal_fn(:,:,2), lmesh%normal_fn(:,:,3), &
199 lmesh%vmapM, lmesh%vmapP, &
200 lmesh, elem, lmesh2d, elem2d )
201 call prof_rapend(
'cal_dyn_tend_bndflux', 3)
204 call prof_rapstart(
'cal_dyn_tend_interior', 3)
206 rgamm = cvdry / cpdry
207 rp0 = 1.0_rp / pres00
209 p0ovr = pres00 / rdry
216 do ke = lmesh%NeS, lmesh%NeE
218 ke2d = lmesh%EMap3Dto2D(ke)
219 cori(:) = coriolis(elem%IndexH2Dto3D(:),ke2d)
221 gsqrtv(:) = lmesh%Gsqrt(:,ke) / lmesh%GsqrtH(elem%IndexH2Dto3D,ke2d)
222 rgsqrtv(:) = 1.0_rp / gsqrtv(:)
225 rhot_(:) = p0ovr * (pres_hyd(:,ke) * rp0)**rgamm + drhot_(:,ke)
229 gsqrtdens_(:) = lmesh%Gsqrt(:,ke) * ( ddens_(:,ke) + dens_hyd(:,ke) )
230 rdens_(:) = 1.0_rp / gsqrtdens_(:)
231 u_(:) = momx_(:,ke) * rdens_(:)
232 v_(:) = momy_(:,ke) * rdens_(:)
233 w_(:) = momz_(:,ke) * rdens_(:)
234 wt_(:) = w_(:) * rgsqrtv(:) + lmesh%GI3(:,ke,1) * u_(:) + lmesh%GI3(:,ke,2) * v_(:)
235 pot_(:) = rhot_(:) * rdens_(:)
237 ke2d = lmesh%EMap3Dto2D(ke)
238 cori(:) = coriolis(elem%IndexH2Dto3D(:),ke2d)
242 dpres_hyd(:) = pres_hyd(:,ke) - pres_hyd_ref(:,ke)
246 call sparsemat_matmul(lift, lmesh%Fscale(:,ke) * del_flux_hyd(:,ke,1), liftdelflx)
247 gradphyd_x(:) = lmesh%Escale(:,ke,1,1) * fx(:) &
248 + lmesh%Escale(:,ke,3,3) * fz(:) &
253 call sparsemat_matmul(lift, lmesh%Fscale(:,ke) * del_flux_hyd(:,ke,2), liftdelflx)
254 gradphyd_y(:) = lmesh%Escale(:,ke,2,2) * fy(:) &
255 + lmesh%Escale(:,ke,3,3) * fz(:) &
259 call dx_ab( dxt1d_, gsqrtdens_(:), u_, elem%Nnode_h1D, elem%Nnode_v, fx_sp )
260 call dy_ab( dyt1d_, gsqrtdens_(:), v_, elem%Nnode_h1D, elem%Nnode_v, fy_sp )
261 call dz_ab( dzt1d_, gsqrtdens_(:), wt_(:) - w_(:) * rgsqrtv(:), elem%Nnode_h1D, elem%Nnode_v, fz_sp )
262 call sparsemat_matmul(lift, lmesh%Fscale(:,ke) * del_flux(:,ke,dens_vid), liftdelflx)
264 dens_dt(:,ke) = - ( &
265 lmesh%Escale(:,ke,1,1) * fx_sp(:) &
266 + lmesh%Escale(:,ke,2,2) * fy_sp(:) &
267 + lmesh%Escale(:,ke,3,3) * fz_sp(:) &
271 call dx_abc( dxt1d_, gsqrtdens_, u_, u_, elem%Nnode_h1D, elem%Nnode_v, fx_sp )
272 call dy_abc( dyt1d_, gsqrtdens_, u_, v_, elem%Nnode_h1D, elem%Nnode_v, fy_sp )
273 call dz_abc( dzt1d_, gsqrtdens_, u_, wt_, elem%Nnode_h1D, elem%Nnode_v, fz_sp )
275 call sparsemat_matmul(lift, lmesh%Fscale(:,ke) * del_flux(:,ke,momx_vid), liftdelflx)
278 - ( lmesh%Escale(:,ke,1,1) * ( fx_sp(:) + fx(:) ) &
279 + lmesh%Escale(:,ke,2,2) * fy_sp(:) &
280 + lmesh%Escale(:,ke,3,3) * fz_sp(:) &
281 + liftdelflx(:) ) / lmesh%Gsqrt(:,ke) &
282 - gradphyd_x(:) * rgsqrtv(:) &
283 + cori(:) * momy_(:,ke)
286 call dx_abc( dxt1d_, gsqrtdens_, v_, u_, elem%Nnode_h1D, elem%Nnode_v, fx_sp )
287 call dy_abc( dyt1d_, gsqrtdens_, v_, v_, elem%Nnode_h1D, elem%Nnode_v, fy_sp )
288 call dz_abc( dzt1d_, gsqrtdens_, v_, wt_, elem%Nnode_h1D, elem%Nnode_v, fz_sp )
290 call sparsemat_matmul(lift, lmesh%Fscale(:,ke) * del_flux(:,ke,momy_vid), liftdelflx)
293 - ( lmesh%Escale(:,ke,1,1) * fx_sp(:) &
294 + lmesh%Escale(:,ke,2,2) * ( fy_sp(:) + fy(:) ) &
295 + lmesh%Escale(:,ke,3,3) * fz_sp(:) &
296 + liftdelflx(:) ) / lmesh%Gsqrt(:,ke) &
297 - gradphyd_y(:) * rgsqrtv(:) &
298 - cori(:) * momx_(:,ke)
301 call dx_abc( dxt1d_, gsqrtdens_, w_, u_, elem%Nnode_h1D, elem%Nnode_v, fx_sp )
302 call dy_abc( dyt1d_, gsqrtdens_, w_, v_, elem%Nnode_h1D, elem%Nnode_v, fy_sp )
303 call dz_abc( dzt1d_, gsqrtdens_, w_, wt_, elem%Nnode_h1D, elem%Nnode_v, fz_sp )
304 call sparsemat_matmul(lift, lmesh%Fscale(:,ke) * del_flux(:,ke,momz_vid), liftdelflx)
306 momz_dt(:,ke) = - ( &
307 lmesh%Escale(:,ke,1,1) * fx_sp(:) &
308 + lmesh%Escale(:,ke,2,2) * fy_sp(:) &
309 + lmesh%Escale(:,ke,3,3) * fz_sp(:) &
313 call dx_abc( dxt1d_, gsqrtdens_, pot_, u_, elem%Nnode_h1D, elem%Nnode_v, fx_sp )
314 call dy_abc( dyt1d_, gsqrtdens_, pot_, v_, elem%Nnode_h1D, elem%Nnode_v, fy_sp )
315 call dz_abc( dzt1d_, gsqrtdens_, pot_, wt_(:) - w_(:) * rgsqrtv(:), elem%Nnode_h1D, elem%Nnode_v, fz_sp )
316 call sparsemat_matmul(lift, lmesh%Fscale(:,ke) * del_flux(:,ke,rhot_vid), liftdelflx)
318 rhot_dt(:,ke) = - ( &
319 lmesh%Escale(:,ke,1,1) * fx_sp(:) &
320 + lmesh%Escale(:,ke,2,2) * fy_sp(:) &
321 + lmesh%Escale(:,ke,3,3) * fz_sp(:) &
324 call prof_rapend(
'cal_dyn_tend_interior', 3)
332 DENS_dt, MOMX_dt, MOMY_dt, MOMZ_dt, RHOT_dt, & ! (out)
333 ddens_, momx_, momy_, momz_, drhot_, dens_hyd, pres_hyd, &
334 ddens0_, momx0_, momy0_, momz0_, drhot0_, &
335 rtot, cvtot, cptot, &
336 element3d_operation, dz, lift, &
338 lmesh, elem, lmesh2d, elem2d )
354 real(rp),
intent(out) :: dens_dt(elem%np,lmesh%nea)
355 real(rp),
intent(out) :: momx_dt(elem%np,lmesh%nea)
356 real(rp),
intent(out) :: momy_dt(elem%np,lmesh%nea)
357 real(rp),
intent(out) :: momz_dt(elem%np,lmesh%nea)
358 real(rp),
intent(out) :: rhot_dt(elem%np,lmesh%nea)
359 real(rp),
intent(in) :: ddens_(elem%np,lmesh%nea)
360 real(rp),
intent(in) :: momx_(elem%np,lmesh%nea)
361 real(rp),
intent(in) :: momy_(elem%np,lmesh%nea)
362 real(rp),
intent(in) :: momz_(elem%np,lmesh%nea)
363 real(rp),
intent(in) :: drhot_(elem%np,lmesh%nea)
364 real(rp),
intent(in) :: dens_hyd(elem%np,lmesh%nea)
365 real(rp),
intent(in) :: pres_hyd(elem%np,lmesh%nea)
366 real(rp),
intent(in) :: ddens0_(elem%np,lmesh%nea)
367 real(rp),
intent(in) :: momx0_(elem%np,lmesh%nea)
368 real(rp),
intent(in) :: momy0_(elem%np,lmesh%nea)
369 real(rp),
intent(in) :: momz0_(elem%np,lmesh%nea)
370 real(rp),
intent(in) :: drhot0_(elem%np,lmesh%nea)
371 real(rp),
intent(in) :: rtot(elem%np,lmesh%nea)
372 real(rp),
intent(in) :: cvtot(elem%np,lmesh%nea)
373 real(rp),
intent(in) :: cptot(elem%np,lmesh%nea)
376 real(rp),
intent(in) :: impl_fac
377 real(rp),
intent(in) :: dt
379 real(rp) :: prog_vars (elem%np,lmesh%nez,
prgvar_num,lmesh%nex*lmesh%ney)
380 real(rp) :: prog_vars0(elem%np,lmesh%nez,
prgvar_num,lmesh%nex*lmesh%ney)
381 real(rp) :: b1d(elem%nnode_v,3,lmesh%nez,elem%nnode_h1d**2,lmesh%nex*lmesh%ney)
382 integer :: ipiv(elem%nnode_v*3*lmesh%nez,elem%nnode_h1d**2)
383 real(rp) :: b1d_uv(elem%nnode_v,lmesh%nez,2,elem%nnode_h1d**2,lmesh%nex*lmesh%ney)
384 integer :: ipiv_uv(elem%nnode_v*1*lmesh%nez,elem%nnode_h1d**2)
385 real(rp) :: alph(elem%nfptot,lmesh%nez,lmesh%nex*lmesh%ney)
386 real(rp) :: rtot_z(elem%np,lmesh%nez,lmesh%nex*lmesh%ney)
387 real(rp) :: cptot_ov_cvtot(elem%np,lmesh%nez,lmesh%nex*lmesh%ney)
388 real(rp) :: dens_hyd_z(elem%np,lmesh%nez,lmesh%nex*lmesh%ney)
389 real(rp) :: pres_hyd_z(elem%np,lmesh%nez,lmesh%nex*lmesh%ney)
390 real(rp) :: gnnm_z(elem%np,lmesh%nez,lmesh%nex*lmesh%ney)
391 real(rp) :: g13_z(elem%np,lmesh%nez,lmesh%nex*lmesh%ney)
392 real(rp) :: g23_z(elem%np,lmesh%nez,lmesh%nex*lmesh%ney)
393 real(rp) :: gsqrtv_z(elem%np,lmesh%nez,lmesh%nex*lmesh%ney)
394 real(rp) :: nz(elem%nfptot,lmesh%nez,lmesh%nex*lmesh%ney)
395 integer :: vmapm(elem%nfptot,lmesh%nez)
396 integer :: vmapp(elem%nfptot,lmesh%nez)
397 integer :: colmask(elem%nnode_v)
398 integer :: ke_xy, ke_z, ke, ke2d, v
400 integer :: kl, ku, nz_1d
401 integer :: kl_uv, ku_uv, nz_1d_uv
403 logical :: is_converged
405 real(rp),
allocatable :: pmatbnd(:,:,:)
406 real(rp),
allocatable :: pmatbnd_uv(:,:,:)
410 call prof_rapstart(
'hevi_cal_vi_prep', 3)
412 nz_1d = elem%Nnode_v * 3 * lmesh%NeZ
413 kl = ( elem%Nnode_v + 1 ) * 3 - 1
415 nz_1d_uv = elem%Nnode_v * 1 * lmesh%NeZ
418 allocate( pmatbnd(2*kl+ku+1,nz_1d,elem%Nnode_h1D**2) )
419 allocate( pmatbnd_uv(2*kl_uv+ku_uv+1,nz_1d_uv,elem%Nnode_h1D**2) )
421 call lmesh%GetVmapZ1D( vmapm, vmapp )
427 do ke_xy=1, lmesh%NeX*lmesh%NeY
429 ke = ke_xy + (ke_z-1)*lmesh%NeX*lmesh%NeY
430 ke2d = lmesh%EMap3Dto2D(ke)
432 prog_vars(:,ke_z,dens_vid,ke_xy) = ddens0_(:,ke)
433 prog_vars(:,ke_z,momx_vid,ke_xy) = momx0_(:,ke)
434 prog_vars(:,ke_z,momy_vid,ke_xy) = momy0_(:,ke)
435 prog_vars(:,ke_z,momz_vid,ke_xy) = momz0_(:,ke)
436 prog_vars(:,ke_z,rhot_vid,ke_xy) = drhot0_(:,ke)
438 dens_hyd_z(:,ke_z,ke_xy) = dens_hyd(:,ke)
439 pres_hyd_z(:,ke_z,ke_xy) = pres_hyd(:,ke)
441 rtot_z(:,ke_z,ke_xy) = rtot(:,ke)
442 cptot_ov_cvtot(:,ke_z,ke_xy) = cptot(:,ke) / cvtot(:,ke)
444 nz(:,ke_z,ke_xy) = lmesh%normal_fn(:,ke,3)
445 g13_z(:,ke_z,ke_xy) = lmesh%GI3(:,ke,1)
446 g23_z(:,ke_z,ke_xy) = lmesh%GI3(:,ke,2)
447 gsqrtv_z(:,ke_z,ke_xy) = lmesh%Gsqrt(:,ke) / lmesh%GsqrtH(elem%IndexH2Dto3D,ke2d)
449 gnnm_z(:,ke_z,ke_xy) = ( 1.0_rp / gsqrtv_z(:,ke_z,ke_xy)**2 &
450 + g13_z(:,ke_z,ke_xy)**2 + g23_z(:,ke_z,ke_xy) )
455 prog_vars0(:,:,:,:) = prog_vars(:,:,:,:)
459 call prof_rapend(
'hevi_cal_vi_prep', 3)
463 if ( abs(impl_fac) > 0.0_rp )
then
464 call prof_rapstart(
'hevi_cal_vi_itr', 3)
469 call prof_rapstart(
'hevi_cal_vi_ax', 3)
471 call vi_eval_ax_uv( &
472 momx_dt(:,:), momy_dt(:,:), alph(:,:,:), &
473 prog_vars, prog_vars0, &
474 ddens_, momx_, momy_, momz_, drhot_, &
475 dens_hyd_z, pres_hyd_z, &
476 rtot_z, cptot_ov_cvtot, &
478 gnnm_z, g13_z, g23_z, gsqrtv_z, &
480 lmesh, elem, nz, vmapm, vmapp, &
483 call prof_rapend(
'hevi_cal_vi_ax', 3)
485 do ke_xy=1, lmesh%NeX * lmesh%NeY
486 call prof_rapstart(
'hevi_cal_vi_matbnd', 3)
488 call vi_construct_matbnd_uv( pmatbnd_uv(:,:,:), &
489 kl_uv, ku_uv, nz_1d_uv, &
490 prog_vars(:,:,:,ke_xy), &
491 dens_hyd_z(:,:,ke_xy), pres_hyd_z(:,:,ke_xy), &
492 g13_z(:,:,ke_xy), g23_z(:,:,ke_xy), gsqrtv_z(:,:,ke_xy), &
494 rtot_z(:,:,ke_xy), cptot_ov_cvtot(:,:,ke_xy), &
497 lmesh, elem, nz(:,:,ke_xy), vmapm, vmapp, ke_xy, 1 )
499 call prof_rapend(
'hevi_cal_vi_matbnd', 3)
501 call prof_rapstart(
'hevi_cal_vi_lin', 3)
504 do ij=1, elem%Nnode_h1D**2
506 call linalgebra_solvelineq_bndmat( pmatbnd_uv(:,:,ij), b1d_uv(:,:,:,ij,ke_xy), ipiv_uv(:,ij), nz_1d_uv, kl_uv, ku_uv, 2,
vi_use_lapack_flag )
508 colmask(:) = elem%Colmask(:,ij)
510 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)
511 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)
516 call prof_rapend(
'hevi_cal_vi_lin', 3)
520 call prof_rapstart(
'hevi_cal_vi_ax', 3)
522 dens_dt(:,:), momz_dt(:,:), rhot_dt(:,:), &
524 prog_vars, prog_vars0, &
525 ddens_, momx_, momy_, momz_, drhot_, &
526 dens_hyd_z, pres_hyd_z, &
527 rtot_z, cptot_ov_cvtot, &
529 gnnm_z, g13_z, g23_z, gsqrtv_z, &
531 lmesh, elem, nz, vmapm, vmapp, &
533 call prof_rapend(
'hevi_cal_vi_ax', 3)
535 do ke_xy=1, lmesh%NeX * lmesh%NeY
536 call prof_rapstart(
'hevi_cal_vi_matbnd', 3)
537 call vi_construct_matbnd( pmatbnd(:,:,:), &
539 prog_vars(:,:,:,ke_xy), &
540 dens_hyd_z(:,:,ke_xy), pres_hyd_z(:,:,ke_xy), &
541 g13_z(:,:,ke_xy), g23_z(:,:,ke_xy), gsqrtv_z(:,:,ke_xy), &
543 rtot_z(:,:,ke_xy), cptot_ov_cvtot(:,:,ke_xy), &
546 lmesh, elem, nz(:,:,ke_xy), vmapm, vmapp, ke_xy, 1 )
548 call prof_rapend(
'hevi_cal_vi_matbnd', 3)
550 call prof_rapstart(
'hevi_cal_vi_lin', 3)
553 do ij=1, elem%Nnode_h1D**2
555 call linalgebra_solvelineq_bndmat( pmatbnd(:,:,ij), b1d(:,:,:,ij,ke_xy), ipiv(:,ij), nz_1d, kl, ku, 1,
vi_use_lapack_flag )
557 colmask(:) = elem%Colmask(:,ij)
559 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)
560 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)
561 prog_vars(colmask(:),ke_z,rhot_vid,ke_xy) = prog_vars(colmask(:),ke_z,rhot_vid,ke_xy) + b1d(3,:,ke_z,ij,ke_xy)
566 call prof_rapend(
'hevi_cal_vi_lin', 3)
571 call prof_rapend(
'hevi_cal_vi_itr', 3)
575 call prof_rapstart(
'hevi_cal_vi_retrun_var', 3)
576 if ( abs(impl_fac) > 0.0_rp)
then
578 do ke_xy=1, lmesh%NeX * lmesh%NeY
580 ke = ke_xy + (ke_z-1)*lmesh%NeX*lmesh%NeY
581 dens_dt(:,ke) = ( prog_vars(:,ke_z,dens_vid,ke_xy) - ddens_(:,ke) ) / impl_fac
582 momx_dt(:,ke) = ( prog_vars(:,ke_z,momx_vid,ke_xy) - momx_(:,ke) ) / impl_fac
583 momy_dt(:,ke) = ( prog_vars(:,ke_z,momy_vid,ke_xy) - momy_(:,ke) ) / impl_fac
584 momz_dt(:,ke) = ( prog_vars(:,ke_z,momz_vid,ke_xy) - momz_(:,ke) ) / impl_fac
585 rhot_dt(:,ke) = ( prog_vars(:,ke_z,rhot_vid,ke_xy) - drhot_(:,ke) ) / impl_fac
589 call vi_eval_ax_uv( &
590 momx_dt(:,:), momy_dt(:,:), &
592 prog_vars, prog_vars0, &
593 ddens_, momx_, momy_, momz_, drhot_, &
594 dens_hyd_z, pres_hyd_z, &
595 rtot_z, cptot_ov_cvtot, &
597 gnnm_z, g13_z, g23_z, gsqrtv_z, &
599 lmesh, elem, nz, vmapm, vmapp )
602 dens_dt(:,:), momz_dt(:,:), rhot_dt(:,:), &
604 prog_vars, prog_vars0, &
605 ddens_, momx_, momy_, momz_, drhot_, &
606 dens_hyd_z, pres_hyd_z, &
607 rtot_z, cptot_ov_cvtot, &
609 gnnm_z, g13_z, g23_z, gsqrtv_z, &
611 lmesh, elem, nz, vmapm, vmapp )
613 call prof_rapend(
'hevi_cal_vi_retrun_var', 3)