10#include "scaleFElib.h"
20 use scale_const,
only: &
23 cpdry => const_cpdry, &
24 cvdry => const_cvdry, &
119 elem => mesh%refElem3D
121 call mesh%refElem3D%Generate_ModalTruncationMat( elem%PolyOrder_h, elem%PolyOrder_v-1, &
138 prgvar_info, auxvar_info, phytend_info )
141 type(variableinfo),
intent(out) :: prgvar_info(
prgvar_num)
142 type(variableinfo),
intent(out) :: auxvar_info(
auxvar_num)
143 type(variableinfo),
intent(out),
optional :: phytend_info(
phytend_num)
145 type(variableinfo) :: prgvar_varinfo(
prgvar_num)
146 DATA prgvar_varinfo / &
148 'kg/m3', 3,
'XYZ',
'air_density' ), &
150 '-', 3,
'XYZ',
'' ), &
152 'kg/m2/s', 3,
'XYZ',
'northward_mass_flux_of_air' ), &
154 'kg/m2/s', 3,
'XYZ',
'upward_mass_flux_of_air' ), &
156 'kg/m2/s', 3,
'XYZ',
'eastward_mass_flux_of_air' ) /
158 type(variableinfo) :: auxvar_varinfo(
auxvar_num)
159 DATA auxvar_varinfo / &
161 'Pa', 3,
'XYZ',
'' ), &
163 'kg/m3', 3,
'XYZ',
'' ), &
165 'kg/m3', 3,
'XYZ',
'' ), &
167 'Pa', 3,
'XYZ',
'air_pressure' ), &
168 variableinfo(
auxvar_pt_id ,
'PT',
'potential temperature', &
169 'K', 3,
'XYZ',
'potential_temperature' ), &
171 'J/kg/K', 3,
'XYZ',
'' ), &
173 'J/kg/K', 3,
'XYZ',
'' ), &
175 'J/kg/K', 3,
'XYZ',
'' ), &
177 'kg/kg', 3,
'XYZ',
'' ), &
179 'Pa', 3,
'XYZ',
'' )/
182 DATA phytend_varinfo / &
184 'kg/m3/s', 3,
'XYZ',
'tendency of physical process for DENS' ), &
186 'kg/m2/s', 3,
'XYZ',
'tendency of physical process for MOMX' ), &
188 'kg/m2/s', 3,
'XYZ',
'tendency of physical process for MOMY' ), &
190 'kg/m2/s', 3,
'XYZ',
'tendency of physical process for MOMZ' ), &
192 'kg/m3.K/s', 3,
'XYZ',
'tendency of physical process for RHOT' ), &
194 'kg/m3.J/s', 3,
'XYZ',
'heating of physical process for THERM' ) /
198 prgvar_info(:) = prgvar_varinfo
199 auxvar_info(:) = auxvar_varinfo
200 if (
present(phytend_info) ) phytend_info(:) = phytend_varinfo
207 prgvars, qtrcvars, auxvars, phytends, & ! (inout)
208 prgvar_manager, qtrcvar_manager, auxvar_manager, phytend_manager, &
209 reg_file_hist, do_setup_phytend, phytend_num_tot, mesh3d, &
212 use scale_atmos_hydrometeor,
only: &
213 atmos_hydrometeor_dry
214 use scale_tracer,
only: &
215 qa, tracer_name, tracer_desc, tracer_unit
219 integer,
intent(in) :: phytend_num_tot
223 type(
meshfield3d),
intent(inout) :: phytends(phytend_num_tot)
228 logical,
intent(in) :: reg_file_hist
229 logical,
intent(in) :: do_setup_phytend
231 type(variableinfo),
intent(out) :: prgvar_varinfo(
prgvar_num)
233 type(variableinfo) :: auxvar_varinfo(
auxvar_num)
239 type(variableinfo) :: qtrc_dry_vinfo_tmp
240 type(variableinfo) :: qtrc_dry_tp_vinfo_tmp
241 type(variableinfo) :: qtrc_vinfo_tmp
242 type(variableinfo) :: qtrc_tp_vinfo_tmp
250 call prgvar_manager%Regist( &
251 prgvar_varinfo(iv), mesh3d, &
253 reg_file_hist, monitor_flag=.true., fill_zero=.true. )
261 qtrc_dry_vinfo_tmp%ndims = 3
262 qtrc_dry_vinfo_tmp%dim_type =
'XYZ'
263 qtrc_dry_vinfo_tmp%STDNAME =
''
265 qtrc_dry_vinfo_tmp%keyID = 0
266 qtrc_dry_vinfo_tmp%NAME =
"QV"
267 qtrc_dry_vinfo_tmp%DESC =
"Ratio of Water Vapor mass to total mass (Specific humidity)"
268 qtrc_dry_vinfo_tmp%UNIT =
"kg/kg"
269 call qtrcvar_manager%Regist( &
270 qtrc_dry_vinfo_tmp, mesh3d, &
272 .false., monitor_flag=.false., fill_zero=.true. )
274 qtrc_vinfo_tmp%ndims = 3
275 qtrc_vinfo_tmp%dim_type =
'XYZ'
276 qtrc_vinfo_tmp%STDNAME =
''
279 qtrc_vinfo_tmp%keyID = iq
280 qtrc_vinfo_tmp%NAME = tracer_name(iq)
281 qtrc_vinfo_tmp%DESC = tracer_desc(iq)
282 qtrc_vinfo_tmp%UNIT = tracer_unit(iq)
283 call qtrcvar_manager%Regist( &
284 qtrc_vinfo_tmp, mesh3d, &
286 reg_file_hist, monitor_flag=.true., fill_zero=.true. )
293 call auxvar_manager%Regist( &
294 auxvar_varinfo(iv), mesh3d, &
296 reg_file_hist, fill_zero=.true. )
301 if ( do_setup_phytend )
then
304 call phytend_manager%Regist( &
305 phytend_varinfo(iv), mesh3d, &
307 reg_file_hist, fill_zero=.true. )
312 qtrc_dry_tp_vinfo_tmp%ndims = 3
313 qtrc_dry_tp_vinfo_tmp%dim_type =
'XYZ'
314 qtrc_dry_tp_vinfo_tmp%STDNAME =
''
317 qtrc_dry_tp_vinfo_tmp%keyID = iv
318 qtrc_dry_tp_vinfo_tmp%NAME =
"QV_tp"
319 qtrc_dry_tp_vinfo_tmp%DESC =
"tendency of physical process for QV"
320 qtrc_dry_tp_vinfo_tmp%UNIT =
"kg/m3/s"
321 call phytend_manager%Regist( &
322 qtrc_dry_tp_vinfo_tmp, mesh3d, &
324 .false., fill_zero=.true. )
326 qtrc_tp_vinfo_tmp%ndims = 3
327 qtrc_tp_vinfo_tmp%dim_type =
'XYZ'
328 qtrc_tp_vinfo_tmp%STDNAME =
''
332 qtrc_tp_vinfo_tmp%keyID = iv
333 qtrc_tp_vinfo_tmp%NAME = trim(tracer_name(iq))//
'_tp'
334 qtrc_tp_vinfo_tmp%DESC =
'tendency of physical process for '//trim(tracer_desc(iq))
335 qtrc_tp_vinfo_tmp%UNIT = trim(tracer_unit(iq))//
'/s'
337 call phytend_manager%Regist( &
338 qtrc_tp_vinfo_tmp, mesh3d, &
340 reg_file_hist, fill_zero=.true. )
351 PRES, DPRES, & ! (inout)
352 ddens, momx, momy, momz, therm, &
353 pres_hyd, dens_hyd, therm_hyd, rtot, cvtot, cptot, &
354 mesh3d, entot_conserve_scheme_flag )
357 class(meshfield3d),
intent(inout) :: pres
358 class(meshfield3d),
intent(inout) :: dpres
359 class(meshfield3d),
intent(in) :: ddens
360 class(meshfield3d),
intent(in) :: momx
361 class(meshfield3d),
intent(in) :: momy
362 class(meshfield3d),
intent(in) :: momz
363 class(meshfield3d),
intent(in) :: therm
364 class(meshfield3d),
intent(in) :: pres_hyd
365 class(meshfield3d),
intent(in) :: dens_hyd
366 class(meshfield3d),
intent(in) :: therm_hyd
367 class(meshfield3d),
intent(in) :: rtot
368 class(meshfield3d),
intent(in) :: cvtot
369 class(meshfield3d),
intent(in) :: cptot
370 class(meshbase3d),
intent(in),
target :: mesh3d
371 logical,
intent(in) :: entot_conserve_scheme_flag
377 do n=1, mesh3d%LOCAL_MESH_NUM
378 lcmesh3d => mesh3d%lcmesh_list(n)
380 if ( entot_conserve_scheme_flag )
then
382 ddens%local(n)%val, momx%local(n)%val, momy%local(n)%val, momz%local(n)%val, therm%local(n)%val, &
383 pres_hyd%local(n)%val, dens_hyd%local(n)%val, rtot%local(n)%val, cvtot%local(n)%val, &
384 lcmesh3d, lcmesh3d%refElem3D )
387 therm%local(n)%val, pres_hyd%local(n)%val, therm_hyd%local(n)%val, rtot%local(n)%val, cvtot%local(n)%val, cptot%local(n)%val, &
388 lcmesh3d, lcmesh3d%refElem3D )
397 THERM_hyd, & ! (inout)
398 pres_hyd, dens_hyd, &
399 mesh3d, entot_conserve_scheme_flag )
402 class(meshfield3d),
intent(inout) :: therm_hyd
403 class(meshfield3d),
intent(in) :: pres_hyd
404 class(meshfield3d),
intent(in) :: dens_hyd
405 class(meshbase3d),
intent(in),
target :: mesh3d
406 logical,
intent(in) :: entot_conserve_scheme_flag
412 do n=1, mesh3d%LOCAL_MESH_NUM
413 lcmesh3d => mesh3d%lcmesh_list(n)
415 if ( entot_conserve_scheme_flag )
then
419 pres_hyd%local(n)%val, lcmesh3d, lcmesh3d%refElem3D )
429 DRHOT, PRES_hyd, THERM_hyd, Rtot, CVtot, CPtot, &
432 use scale_const,
only: &
433 rdry => const_rdry, &
434 cpdry => const_cpdry, &
435 cvdry => const_cvdry, &
436 pres00 => const_pre00
441 real(rp),
intent(out) :: pres(elem3d%np,lcmesh%nea)
442 real(rp),
intent(out) :: dpres(elem3d%np,lcmesh%nea)
443 real(rp),
intent(in) :: drhot(elem3d%np,lcmesh%nea)
444 real(rp),
intent(in) :: pres_hyd(elem3d%np,lcmesh%nea)
445 real(rp),
intent(in) :: therm_hyd(elem3d%np,lcmesh%nea)
446 real(rp),
intent(in) :: rtot(elem3d%np,lcmesh%nea)
447 real(rp),
intent(in) :: cvtot(elem3d%np,lcmesh%nea)
448 real(rp),
intent(in) :: cptot(elem3d%np,lcmesh%nea)
451 real(rp) :: rhot(elem3d%np)
456 rp0 = 1.0_rp / pres00
459 do ke=lcmesh%NeS, lcmesh%NeE
465 rhot_ = pres00 / rdry * ( pres_hyd(p,ke) / pres00 )**(cvdry/cpdry) + drhot(p,ke)
467 pres(p,ke) = pres00 * ( rtot(p,ke) * rp0 * rhot_ )**( cptot(p,ke) / cvtot(p,ke) )
468 dpres(p,ke) = pres(p,ke) - pres_hyd(p,ke)
471 rhot(:) = therm_hyd(:,ke) + drhot(:,ke)
473 pres(:,ke) = pres00 * ( rtot(:,ke) * rp0 * rhot(:) )**( cptot(:,ke) / cvtot(:,ke) )
474 dpres(:,ke) = pres(:,ke) - pres_hyd(:,ke)
483 DDENS, MOMX, MOMY, MOMZ, DRHOT, &
484 DENS_hyd, PRES_hyd, THERM_hyd, Rtot, CVtot, CPtot, &
487 use scale_const,
only: &
493 real(rp),
intent(out) :: entot(elem3d%np,lcmesh%nea)
494 real(rp),
intent(in) :: ddens(elem3d%np,lcmesh%nea)
495 real(rp),
intent(in) :: momx(elem3d%np,lcmesh%nea)
496 real(rp),
intent(in) :: momy(elem3d%np,lcmesh%nea)
497 real(rp),
intent(in) :: momz(elem3d%np,lcmesh%nea)
498 real(rp),
intent(in) :: drhot(elem3d%np,lcmesh%nea)
499 real(rp),
intent(in) :: dens_hyd(elem3d%np,lcmesh%nea)
500 real(rp),
intent(in) :: pres_hyd(elem3d%np,lcmesh%nea)
501 real(rp),
intent(in) :: therm_hyd(elem3d%np,lcmesh%nea)
502 real(rp),
intent(in) :: rtot(elem3d%np,lcmesh%nea)
503 real(rp),
intent(in) :: cvtot(elem3d%np,lcmesh%nea)
504 real(rp),
intent(in) :: cptot(elem3d%np,lcmesh%nea)
508 real(rp) :: dens(elem3d%np)
509 real(rp) :: mom_u1(elem3d%np), mom_u2(elem3d%np)
511 real(rp) :: pres(elem3d%np,lcmesh%nea)
512 real(rp) :: dpres(elem3d%np,lcmesh%nea)
516 drhot, pres_hyd, therm_hyd, rtot, cvtot, cptot, &
520 do ke=lcmesh%NeS, lcmesh%NeE
521 ke2d = lcmesh%EMap3Dto2D(ke)
523 dens(:) = dens_hyd(:,ke) + ddens(:,ke)
524 mom_u1(:) = lcmesh%G_ij(lcmesh%refElem3D%IndexH2Dto3D,ke2d,1,1) * momx(:,ke) + lcmesh%G_ij(lcmesh%refElem3D%IndexH2Dto3D,ke2d,2,1) * momy(:,ke)
525 mom_u2(:) = lcmesh%G_ij(lcmesh%refElem3D%IndexH2Dto3D,ke2d,2,1) * momx(:,ke) + lcmesh%G_ij(lcmesh%refElem3D%IndexH2Dto3D,ke2d,2,2) * momy(:,ke)
527 entot(:,ke) = pres(:,ke) * cvtot(:,ke) / rtot(:,ke) &
528 + 0.5_rp * ( momx(:,ke) * mom_u1(:) + momy(:,ke) * mom_u2(:) + momz(:,ke)**2 ) / dens(:) &
529 + grav * dens(:) * lcmesh%zlev(:,ke)
537 DDENS, MOMX, MOMY, MOMZ, EnTot, &
538 PRES_hyd, DENS_hyd, Rtot, CVtot, &
541 use scale_const,
only: &
547 real(rp),
intent(out) :: pres(elem3d%np,lcmesh%nea)
548 real(rp),
intent(out) :: dpres(elem3d%np,lcmesh%nea)
549 real(rp),
intent(in) :: ddens(elem3d%np,lcmesh%nea)
550 real(rp),
intent(in) :: momx(elem3d%np,lcmesh%nea)
551 real(rp),
intent(in) :: momy(elem3d%np,lcmesh%nea)
552 real(rp),
intent(in) :: momz(elem3d%np,lcmesh%nea)
553 real(rp),
intent(in) :: entot(elem3d%np,lcmesh%nea)
554 real(rp),
intent(in) :: pres_hyd(elem3d%np,lcmesh%nea)
555 real(rp),
intent(in) :: dens_hyd(elem3d%np,lcmesh%nea)
556 real(rp),
intent(in) :: rtot(elem3d%np,lcmesh%nea)
557 real(rp),
intent(in) :: cvtot(elem3d%np,lcmesh%nea)
561 real(rp) :: dens(elem3d%np)
562 real(rp) :: mom_u1(elem3d%np), mom_u2(elem3d%np)
566 do ke=lcmesh%NeS, lcmesh%NeE
567 ke2d = lcmesh%EMap3Dto2D(ke)
569 dens(:) = dens_hyd(:,ke) + ddens(:,ke)
570 mom_u1(:) = lcmesh%G_ij(lcmesh%refElem3D%IndexH2Dto3D,ke2d,1,1) * momx(:,ke) + lcmesh%G_ij(lcmesh%refElem3D%IndexH2Dto3D,ke2d,2,1) * momy(:,ke)
571 mom_u2(:) = lcmesh%G_ij(lcmesh%refElem3D%IndexH2Dto3D,ke2d,2,1) * momx(:,ke) + lcmesh%G_ij(lcmesh%refElem3D%IndexH2Dto3D,ke2d,2,2) * momy(:,ke)
573 pres(:,ke) = ( entot(:,ke) - grav * dens(:) * lcmesh%zlev(:,ke) &
574 - 0.5_rp * ( momx(:,ke) * mom_u1(:) + momy(:,ke) * mom_u2(:) + momz(:,ke)**2 ) / dens(:) &
575 ) * rtot(:,ke) / cvtot(:,ke)
577 dpres(:,ke) = pres(:,ke) - pres_hyd(:,ke)
588 use scale_const,
only: &
589 rdry => const_rdry, &
590 cpdry => const_cpdry, &
591 cvdry => const_cvdry, &
592 pres00 => const_pre00
597 real(rp),
intent(out) :: rhot_hyd(elem3d%np,lcmesh%nea)
598 real(rp),
intent(in) :: pres_hyd(elem3d%np,lcmesh%nea)
604 rp0 = 1.0_rp / pres00
608 do ke=lcmesh%NeS, lcmesh%NeE
611 rhot_hyd(p,ke) = pres00 / rdry * ( pres_hyd(p,ke) / pres00 )**(cvdry/cpdry)
614 rhot_hyd(:,ke) = pres00 / rdry * ( pres_hyd(:,ke) / pres00 )**(cvdry/cpdry)
625 PRES_hyd, PRES_hyd_ref, &
626 element3D_operation, lmesh, elem )
630 real(rp),
intent(out) :: dphyddx(elem%np,lmesh%nea)
631 real(rp),
intent(out) :: dphyddy(elem%np,lmesh%nea)
632 real(rp),
intent(in) :: pres_hyd(elem%np,lmesh%nea)
633 real(rp),
intent(in) :: pres_hyd_ref(elem%np,lmesh%nea)
636 integer :: ke, ke2d, p
638 real(rp) :: flux(elem%np,3), fz(elem%np), dflux(elem%np,4,2)
639 real(rp) :: del_flux_hyd(elem%nfptot,2,lmesh%ne)
640 real(rp) :: gsqrtv, rgsqrtv(elem%np)
643 real(rp) :: gradphyd_x, gradphyd_y
646 call get_phyd_hgrad_numflux_generalhvc( del_flux_hyd, &
647 pres_hyd, pres_hyd_ref, &
648 lmesh%Gsqrt, lmesh%GsqrtH, lmesh%gam, lmesh%GI3(:,:,1), lmesh%GI3(:,:,2), &
649 lmesh%normal_fn(:,:,1), lmesh%normal_fn(:,:,2), lmesh%normal_fn(:,:,3), &
650 lmesh%vmapM, lmesh%vmapP, elem%IndexH2Dto3D_bnd, &
651 lmesh, elem, lmesh%lcmesh2D, lmesh%lcmesh2D%refElem2D )
656 do ke = lmesh%NeS, lmesh%NeE
657 ke2d = lmesh%EMap3Dto2D(ke)
660 gsqrtv = lmesh%Gsqrt(p,ke) / ( lmesh%gam(p,ke)**2 * lmesh%GsqrtH(elem%IndexH2Dto3D(p),ke2d) )
662 rgsqrtv(p) = 1.0_rp / gsqrtv
663 flux(p,1) = gsqrtv * ( pres_hyd(p,ke) - pres_hyd_ref(p,ke) )
667 flux(p,2) = flux(p,1)
668 flux(p,3) = lmesh%GI3(p,ke,1) * flux(p,1)
669 fz(p) = lmesh%GI3(p,ke,2) * flux(p,1)
672 call element3d_operation%Div( flux, del_flux_hyd(:,1,ke), &
674 call element3d_operation%Dz( fz, dflux(:,3,2) )
675 call element3d_operation%Lift( del_flux_hyd(:,2,ke), dflux(:,4,2) )
678 e33 = lmesh%Escale(p,ke,3,3)
680 gradphyd_x = lmesh%Escale(p,ke,1,1) * dflux(p,1,1) &
681 + e33 * dflux(p,3,1) &
684 gradphyd_y = lmesh%Escale(p,ke,2,2) * dflux(p,2,1) &
685 + e33 * dflux(p,3,2) &
688 dphyddx(p,ke) = gradphyd_x * rgsqrtv(p)
689 dphyddy(p,ke) = gradphyd_y * rgsqrtv(p)
699 subroutine get_phyd_hgrad_numflux_generalhvc( &
700 del_flux_hyd, & ! (out)
701 pres_hyd, pres_hyd_ref, &
702 gsqrt, gsqrth, gam, g13, g23, nx, ny, nz, &
703 vmapm, vmapp, im2dto3d, lmesh, elem, lmesh2d, elem2d )
711 real(rp),
intent(out) :: del_flux_hyd(elem%nfptot,2,lmesh%ne)
712 real(rp),
intent(in) :: pres_hyd(elem%np*lmesh%nea)
713 real(rp),
intent(in) :: pres_hyd_ref(elem%np*lmesh%nea)
714 real(rp),
intent(in) :: gsqrth(elem2d%np,lmesh2d%ne)
715 real(rp),
intent(in) :: gsqrt(elem%np*lmesh%nea)
716 real(rp),
intent(in) :: gam(elem%np*lmesh%nea)
717 real(rp),
intent(in) :: g13(elem%np*lmesh%nea)
718 real(rp),
intent(in) :: g23(elem%np*lmesh%nea)
719 real(rp),
intent(in) :: nx(elem%nfptot,lmesh%ne)
720 real(rp),
intent(in) :: ny(elem%nfptot,lmesh%ne)
721 real(rp),
intent(in) :: nz(elem%nfptot,lmesh%ne)
722 integer,
intent(in) :: vmapm(elem%nfptot,lmesh%ne)
723 integer,
intent(in) :: vmapp(elem%nfptot,lmesh%ne)
724 integer,
intent(in) :: im2dto3d(elem%nfptot)
726 integer :: ke, fp, i, ip(elem%nfptot), im(elem%nfptot)
728 real(rp) :: dpres_hyd(elem%nfptot,2)
729 real(rp) :: gsqrt_(elem%nfptot,2)
730 real(rp) :: gsqrtv_(elem%nfptot,2)
731 real(rp) :: g13_(elem%nfptot,2)
732 real(rp) :: g23_(elem%nfptot,2)
734 integer,
parameter :: in = 1
735 integer,
parameter :: ex = 2
737 real(rp) :: tmp1, tmp2
745 do ke=lmesh%NeS, lmesh%NeE
746 im(:) = vmapm(:,ke); ip(:) = vmapp(:,ke)
747 ke2d = lmesh%EMap3Dto2D(ke)
749 gsqrt_(:,in) = gsqrt(im)
750 gsqrt_(:,ex) = gsqrt(ip)
751 gsqrtv_(:,in) = gsqrt_(:,in) / gam(im)**2 / gsqrth(im2dto3d(:),ke2d)
752 gsqrtv_(:,ex) = gsqrt_(:,ex) / gam(ip)**2 / gsqrth(im2dto3d(:),ke2d)
759 dpres_hyd(:,in) = pres_hyd(im) - pres_hyd_ref(im)
760 dpres_hyd(:,ex) = pres_hyd(ip) - pres_hyd_ref(ip)
763 tmp1 = lmesh%Fscale(fp,ke) * 0.5_rp * gsqrtv_(fp,ex) * dpres_hyd(fp,ex)
764 tmp2 = lmesh%Fscale(fp,ke) * 0.5_rp * gsqrtv_(fp,in) * dpres_hyd(fp,in)
766 del_flux_hyd(fp,1,ke) = &
767 ( nx(fp,ke) + g13_(fp,ex) * nz(fp,ke) ) * tmp1 &
768 - ( nx(fp,ke) + g13_(fp,in) * nz(fp,ke) ) * tmp2
770 del_flux_hyd(fp,2,ke) = &
771 ( ny(fp,ke) + g23_(fp,ex) * nz(fp,ke) ) * tmp1 &
772 - ( ny(fp,ke) + g23_(fp,in) * nz(fp,ke) ) * tmp2
777 end subroutine get_phyd_hgrad_numflux_generalhvc
module FElib / Fluid dyn solver / Atmosphere / Nonhydrostatic model / Common
integer, parameter, public prgvar_scalar_num
integer, parameter, public phytend_momz_id
subroutine, public atm_dyn_dgm_nonhydro3d_common_drhot2entot(entot, ddens, momx, momy, momz, drhot, dens_hyd, pres_hyd, therm_hyd, rtot, cvtot, cptot, lcmesh, elem3d)
integer, parameter, public prgvar_momy_id
integer, parameter, public prgvar_etot_id
integer, parameter, public auxvar_cptot_id
integer, parameter, public prgvar_therm_id
integer, parameter, public auxvar_qdry_id
subroutine, public atm_dyn_dgm_nonhydro3d_common_drhot2pres(pres, dpres, drhot, pres_hyd, therm_hyd, rtot, cvtot, cptot, lcmesh, elem3d)
Calculate pressure from the deviation of density-weighted potential temperature (DRHOT)
integer, parameter, public auxvar_cvtot_id
integer, parameter, public prgvar_ddens_id
integer, parameter, public prgvar_momz_id
subroutine, public atm_dyn_dgm_nonhydro3d_common_init(mesh)
Initialize a common module for atmospheric nonhydrostatic dynamical core.
integer, parameter, public phytend_rhot_id
subroutine, public atm_dyn_dgm_nonhydro3d_common_calc_phyd_hgrad_lc(dphyddx, dphyddy, pres_hyd, pres_hyd_ref, element3d_operation, lmesh, elem)
Calculate horizontal graidient of hydrostatic pressure In this calculation, we assume that PRES_hyd_r...
integer, parameter, public phytend_momx_id
integer, parameter, public phytend_num
integer, parameter, public phytend_momy_id
integer, parameter, public prgvar_momx_id
integer, parameter, public auxvar_num
subroutine, public atm_dyn_dgm_nonhydro3d_common_setup_variables(prgvars, qtrcvars, auxvars, phytends, prgvar_manager, qtrcvar_manager, auxvar_manager, phytend_manager, reg_file_hist, do_setup_phytend, phytend_num_tot, mesh3d, prgvar_varinfo)
Setup variable managers for atmospheric nonhydrostatic dynamical core.
integer, parameter, public prgvar_drhot_id
subroutine, public atm_dyn_dgm_nonhydro3d_common_get_varinfo(prgvar_info, auxvar_info, phytend_info)
Get variable information for atmospheric nonhydrostatic dynamical core.
integer, parameter, public auxvar_pt_id
integer, parameter, public prgvar_hvec_num
integer, parameter, public prgvar_num
integer, parameter, public phytend_rhoh_id
integer, parameter, public auxvar_preshydro_id
real(rp), dimension(:,:), allocatable, public intrpmat_vpordm1
integer, parameter, public auxvar_thermhydro_id
subroutine, public atm_dyn_dgm_nonhydro3d_common_calc_pressure(pres, dpres, ddens, momx, momy, momz, therm, pres_hyd, dens_hyd, therm_hyd, rtot, cvtot, cptot, mesh3d, entot_conserve_scheme_flag)
integer, parameter, public auxvar_denshydro_id
integer, parameter, public phytend_dens_id
integer, parameter, public auxvar_rtot_id
subroutine, public atm_dyn_dgm_nonhydro3d_common_calc_rhot_hyd(rhot_hyd, pres_hyd, lcmesh, elem3d)
subroutine, public atm_dyn_dgm_nonhydro3d_common_entot2pres(pres, dpres, ddens, momx, momy, momz, entot, pres_hyd, dens_hyd, rtot, cvtot, lcmesh, elem3d)
subroutine, public atm_dyn_dgm_nonhydro3d_common_final()
Finalize a common module for atmospheric nonhydrostatic dynamical core.
subroutine, public atm_dyn_dgm_nonhydro3d_common_calc_therm_phyd(therm_hyd, pres_hyd, dens_hyd, mesh3d, entot_conserve_scheme_flag)
integer, parameter, public auxvar_preshydro_ref_id
integer, parameter, public auxvar_pres_id
module FElib / Element / Base
module FElib / Element / hexahedron
module FElib / Element / Operation / Base
module FElib / Mesh / Local 2D
module FElib / Mesh / Local 3D
module FElib / Data / base
module FElib / Mesh / Base 2D
module FElib / Mesh / Base 3D
module FElib / Data / base
FElib / model framework / variable manager.
Module common / sparsemat.
Derived type representing a 2D reference element.
Derived type representing a 3D reference element.
Derived type representing a hexahedral element.
Base type for elementwise operations.
Derived type representing a local mesh for 2D domain.
Derived type to manage a local 3D computational domain.
Derived type representing a field with 3D local mesh.
Derived type to manage a computational mesh (base type for 2D domain)
Derived type to manage a computational mesh (base type for 3D domain)
Derived type representing a field with 3D mesh.