10#include "scaleFElib.h"
20 use scale_const,
only: &
23 cpdry => const_cpdry, &
24 cvdry => const_cvdry, &
26 use scale_tracer,
only: qa
90 logical :: only_traceradv_flag
94 logical :: disable_limiter
100 integer :: trcvar3d_commid
104 integer :: auxtrcvar3d_commid
108 integer :: auxtrc_flux_var3d_commid
111 logical :: modalfilter_flag
118 procedure :: init => atmdyndgmdriver_trcadv3d_init
119 procedure :: final => atmdyndgmdriver_trcadv3d_final
120 procedure :: update => atmdyndgmdriver_trcadv3d_update
140 '1', 3,
'XYZ',
'' ) /
162 variableinfo(
massflx_z_id,
'MASSFLX_Z',
'flux in z-direction', &
163 'kg/s/m2', 3,
'XYZ',
'' ), &
164 variableinfo(
massflx_x_id,
'MASSFLX_X',
'flux in x-direction', &
165 'kg/s/m2', 3,
'XYZ',
'' ), &
166 variableinfo(
massflx_y_id,
'MASSFLX_Y',
'flux in y-direction', &
167 'kg/s/m2', 3,
'XYZ',
'' ) /
175 private :: setup_modalfilter
179 subroutine atmdyndgmdriver_trcadv3d_init( this, &
180 eqs_type_name, tint_type_name, dtsec, &
181 modal_filter_flag, disable_limiter, &
182 model_mesh3D, boundary_cond, ONLY_TRACERADV_FLAG )
188 character(len=*),
intent(in) :: eqs_type_name
189 character(len=*),
intent(in) :: tint_type_name
190 real(dp),
intent(in) :: dtsec
191 logical,
intent(in) :: modal_filter_flag
192 logical,
intent(in) :: disable_limiter
193 class(
modelmesh3d),
intent(inout),
target :: model_mesh3d
194 class(
atmdynbnd),
intent(in),
target :: boundary_cond
195 logical,
intent(in) :: only_traceradv_flag
205 mesh3d => model_mesh3d%ptr_mesh
209 tint_type_name, dtsec, &
212 select case(eqs_type_name)
214 case(
"TRCADV3D_HEVE")
216 log_error(
"AtmDynDGMDriver_trcadv3d_Init",*)
'Invalid EQS_TYPE in namelist PARAM_ATMOS_DYN. Check!'
220 this%ONLY_TRACERADV_FLAG = only_traceradv_flag
221 this%disable_limiter = disable_limiter
229 call this%TRCVAR3D_manager%Init()
233 call this%TRCVAR3D_manager%Regist( &
235 this%TRCVARS3D(iv), &
236 .false., fill_zero=.true. )
240 call model_mesh3d%Create_communicator( &
242 this%TRCVAR3D_manager, &
243 this%TRCVARS3D(iv:iv), &
244 this%TRCVAR3D_commid )
248 call this%AUXTRC_FLUX_VAR3D_manager%Init()
252 call this%AUXTRC_FLUX_VAR3D_manager%Regist( &
254 this%AUXTRC_FLUX_VARS3D(iv), &
255 .false., fill_zero=.true. )
258 call model_mesh3d%Create_communicator( &
260 this%AUXTRC_FLUX_VAR3D_manager, &
261 this%AUXTRC_FLUX_VARS3D(:), &
262 this%AUXTRC_FLUX_VAR3D_commid )
266 call this%AUXTRCVAR3D_manager%Init()
270 call this%AUXTRCVAR3D_manager%Regist( &
272 this%AUX_TRCVARS3D(iv), &
273 .false., fill_zero=.true. )
276 call model_mesh3d%Create_communicator( &
278 this%AUXTRCVAR3D_manager, &
279 this%AUX_TRCVARS3D(:), &
280 this%AUXTRCVAR3D_commid )
287 do ldomid=1, mesh3d%LOCAL_MESH_NUM
288 this%alphaDensM%local(ldomid)%face_val(:,:) = 0.0_rp
289 this%alphaDensP%local(ldomid)%face_val(:,:) = 0.0_rp
293 this%boundary_cond => boundary_cond
297 this%MODALFILTER_FLAG = modal_filter_flag
298 if (this%MODALFILTER_FLAG)
then
299 refelem => mesh3d%refElem
305 call setup_modalfilter( this, refelem3d, model_mesh3d%element3D_operation )
309 end subroutine atmdyndgmdriver_trcadv3d_init
312 subroutine atmdyndgmdriver_trcadv3d_update( this, &
313 TRC_VARS, PROG_VARS, AUX_VARS, PHYTENDS, &
315 Dx, Dy, Dz, Sx, Sy, Sz, Lift, mesh3D, &
318 use scale_tracer,
only: &
319 tracer_advc, tracer_name
325 class(
meshbase3d),
intent(in),
target :: mesh3d
331 type(
sparsemat),
intent(in) :: dx, dy, dz
332 type(
sparsemat),
intent(in) :: sx, sy, sz
337 integer :: tintbuf_ind
339 real(rp) :: dttmp_trc
345 class(
meshfield3d),
pointer :: ddens, momx, momy, momz, therm
346 class(
meshfield3d),
pointer :: dens_hyd, pres_hyd, rtot, cvtot, cptot, pres
349 class(
meshfield3d),
pointer :: qtrc_tmp, ddens_trc, ddens0_trc
350 class(
meshfield3d),
pointer :: mflx_x_tavg, mflx_y_tavg, mflx_z_tavg
357 call prof_rapstart(
'ATM_DYN_trc_update_pre', 2)
358 call prog_vars%Get3D(dens_vid , ddens)
359 call prog_vars%Get3D(therm_vid, therm)
361 call aux_vars%Get3D( preshyd_vid, pres_hyd )
362 call aux_vars%Get3D( denshyd_vid, dens_hyd )
363 call aux_vars%Get3D( pres_vid, pres )
364 call aux_vars%Get3D( rtot_vid, rtot )
365 call aux_vars%Get3D( cvtot_vid, cvtot )
366 call aux_vars%Get3D( cptot_vid, cptot )
372 call this%AUXTRC_FLUX_VAR3D_manager%Get3D(
massflx_z_id, mflx_z_tavg )
373 call this%AUXTRC_FLUX_VAR3D_manager%Get3D(
massflx_x_id, mflx_x_tavg )
374 call this%AUXTRC_FLUX_VAR3D_manager%Get3D(
massflx_y_id, mflx_y_tavg )
376 if ( this%ONLY_TRACERADV_FLAG )
then
377 call prog_vars%Get3D(momz_vid , momz)
378 call prog_vars%Get3D(momx_vid , momx)
379 call prog_vars%Get3D(momy_vid , momy)
381 do n=1, mesh3d%LOCAL_MESH_NUM
382 lcmesh3d => mesh3d%lcmesh_list(n)
385 do ke=lcmesh3d%NeS, lcmesh3d%NeE
386 ddens0_trc %local(n)%val(:,ke) = ddens%local(n)%val(:,ke)
387 ddens_trc %local(n)%val(:,ke) = ddens%local(n)%val(:,ke)
388 mflx_z_tavg%local(n)%val(:,ke) = momz%local(n)%val(:,ke)
389 mflx_x_tavg%local(n)%val(:,ke) = momx%local(n)%val(:,ke)
390 mflx_y_tavg%local(n)%val(:,ke) = momy%local(n)%val(:,ke)
393 this%alphaDensM%local(n)%face_val, this%alphaDensP%local(n)%face_val, &
394 ddens%local(n)%val, momx%local(n)%val, momy%local(n)%val, momz%local(n)%val, &
395 dens_hyd%local(n)%val, &
397 lcmesh3d%normal_fn(:,:,1), lcmesh3d%normal_fn(:,:,2), lcmesh3d%normal_fn(:,:,3), &
398 lcmesh3d%VMapM, lcmesh3d%VMapP, lcmesh3d, lcmesh3d%refElem3D )
404 call prof_rapstart(
'ATM_DYN_exchange_mflx', 3)
405 call this%AUXTRC_FLUX_VAR3D_manager%MeshFieldComm_Exchange()
406 call prof_rapend(
'ATM_DYN_exchange_mflx', 3)
408 call prof_rapstart(
'ATM_DYN_applyBC_mflux', 3)
409 do n=1, mesh3d%LOCAL_MESH_NUM
410 lcmesh3d => mesh3d%lcmesh_list(n)
412 call this%boundary_cond%ApplyBC_PROGVARS_lc( n, &
413 ddens_trc%local(n)%val(:,:), mflx_x_tavg%local(n)%val, mflx_y_tavg%local(n)%val, mflx_z_tavg%local(n)%val, therm%local(n)%val, &
414 dens_hyd%local(n)%val, pres_hyd%local(n)%val, &
415 lcmesh3d%Gsqrt(:,:), lcmesh3d%GsqrtH(:,:), lcmesh3d%GIJ(:,:,1,1), lcmesh3d%GIJ(:,:,1,2), lcmesh3d%GIJ(:,:,2,2), &
416 lcmesh3d%GI3(:,:,1), lcmesh3d%GI3(:,:,2), &
417 lcmesh3d%normal_fn(:,:,1), lcmesh3d%normal_fn(:,:,2), lcmesh3d%normal_fn(:,:,3), &
418 lcmesh3d%vmapM, lcmesh3d%vmapP, lcmesh3d%vmapB, lcmesh3d, lcmesh3d%refElem3D, lcmesh3d%lcmesh2D, lcmesh3d%lcmesh2D%refElem2D )
420 call prof_rapend(
'ATM_DYN_applyBC_mflux', 3)
422 call prof_rapend(
'ATM_DYN_trc_update_pre', 2)
426 call prof_rapstart(
'ATM_DYN_trc_update', 2)
430 call trc_vars%Get3D( iq, qtrc )
431 call phytends%Get3D( phytend_num1 + iq, rhoq_tp )
433 do n=1, mesh3d%LOCAL_MESH_NUM
434 lcmesh3d => mesh3d%lcmesh_list(n)
437 do ke=lcmesh3d%NeS, lcmesh3d%NeE
438 qtrc_tmp%local(n)%val(:,ke) = qtrc%local(n)%val(:,ke)
442 do rkstage=1, this%tint(1)%nstage
443 if ( tracer_advc(iq) )
then
444 call prof_rapstart(
'ATM_DYN_exchange_trc', 3)
445 call this%TRCVAR3D_manager%MeshFieldComm_Exchange()
446 call prof_rapend(
'ATM_DYN_exchange_trc', 3)
449 do n=1, mesh3d%LOCAL_MESH_NUM
450 lcmesh3d => mesh3d%lcmesh_list(n)
452 dt = this%tint(n)%Get_deltime()
453 dttmp_trc = dt * this%tint(n)%coef_gam_ex(rkstage+1,rkstage) &
454 / this%tint(n)%coef_sig_ex(rkstage+1,rkstage)
458 qtrc_tmp%local(n)%val, &
459 mflx_x_tavg%local(n)%val, mflx_y_tavg%local(n)%val, mflx_z_tavg%local(n)%val, &
460 rhoq_tp%local(n)%val, &
461 this%alphaDensM%local(n)%face_val, this%alphaDensP%local(n)%face_val, &
462 dens_hyd%local(n)%val, ddens_trc%local(n)%val, ddens0_trc%local(n)%val, &
463 this%tint(n)%coef_c_ex(rkstage), dttmp_trc, &
465 lcmesh3d, lcmesh3d%refElem3D, lcmesh3d%lcmesh2D, lcmesh3d%lcmesh2D%refElem2D, &
466 this%disable_limiter )
469 call prof_rapstart(
'ATM_DYN_exchange_trc', 3)
470 call this%AUXTRCVAR3D_manager%MeshFieldComm_Exchange()
471 call prof_rapend(
'ATM_DYN_exchange_trc', 3)
474 do n=1, mesh3d%LOCAL_MESH_NUM
475 lcmesh3d => mesh3d%lcmesh_list(n)
477 tintbuf_ind = this%tint(n)%tend_buf_indmap(rkstage)
479 call prof_rapstart(
'ATM_DYN_update_caltend_ex_trc', 3)
480 if ( tracer_advc(iq) )
then
482 this%tint(n)%tend_buf2D_ex(:,:,1,tintbuf_ind), &
483 qtrc_tmp%local(n)%val, &
484 mflx_x_tavg%local(n)%val, mflx_y_tavg%local(n)%val, mflx_z_tavg%local(n)%val, &
485 this%alphaDensM%local(n)%face_val, this%alphaDensP%local(n)%face_val, &
487 rhoq_tp%local(n)%val, &
488 element_operation, this%FaceIntMat, &
489 lcmesh3d, lcmesh3d%refElem3D, lcmesh3d%lcmesh2D, lcmesh3d%lcmesh2D%refElem2D )
492 do ke=lcmesh3d%NeS, lcmesh3d%NeE
493 this%tint(n)%tend_buf2D_ex(:,ke,1,tintbuf_ind) = rhoq_tp%local(n)%val(:,ke)
496 call prof_rapend(
'ATM_DYN_update_caltend_ex_trc', 3)
498 call prof_rapstart(
'ATM_DYN_update_advance_trc', 3)
499 call this%tint(n)%Advance_trcvar( &
500 rkstage, qtrc_tmp%local(n)%val, 1, &
501 1, lcmesh3d%refElem%Np, lcmesh3d%NeS, lcmesh3d%NeE, &
502 ddens_trc%local(n)%val, ddens0_trc%local(n)%val, dens_hyd%local(n)%val )
503 call prof_rapend(
'ATM_DYN_update_advance_trc', 3)
505 if ( rkstage == this%tint(1)%nstage .and. this%MODALFILTER_FLAG )
then
506 call prof_rapstart(
'ATM_DYN_update_qtrc_modalfilter', 3)
508 qtrc_tmp%local(n)%val, &
509 dens_hyd%local(n)%val, ddens_trc%local(n)%val, ddens%local(n)%val, &
510 lcmesh3d, lcmesh3d%refElem3D, element_operation )
511 call prof_rapend(
'ATM_DYN_update_qtrc_modalfilter', 3)
514 if ( tracer_advc(iq) &
515 .and. rkstage == this%tint(1)%nstage &
516 .and. this%ONLY_TRACERADV_FLAG &
517 .and. ( .not. this%disable_limiter ) )
then
519 call prof_rapstart(
'ATM_DYN_update_trc_TMAR', 3)
521 qtrc_tmp%local(n)%val, &
522 dens_hyd%local(n)%val, ddens_trc%local(n)%val, &
523 lcmesh3d, lcmesh3d%refElem3D, lcmesh3d%lcmesh2D, lcmesh3d%lcmesh2D%refElem2D )
524 call prof_rapend(
'ATM_DYN_update_trc_TMAR', 3)
530 do n=1, mesh3d%LOCAL_MESH_NUM
531 lcmesh3d => mesh3d%lcmesh_list(n)
533 do ke=lcmesh3d%NeS, lcmesh3d%NeE
534 qtrc%local(n)%val(:,ke) = ( dens_hyd%local(n)%val(:,ke) + ddens_trc%local(n)%val(:,ke) ) &
535 / ( dens_hyd%local(n)%val(:,ke) + ddens%local(n)%val(:,ke) ) &
536 * qtrc_tmp%local(n)%val(:,ke)
543 call update_pressure_specific_heat( pres, rtot, cvtot, cptot, &
544 trc_vars, prog_vars, aux_vars, dyn_driver, mesh3d )
547 if ( .not. this%disable_limiter &
548 .and. ( .not. this%ONLY_TRACERADV_FLAG ) )
then
550 call prof_rapstart(
'ATM_DYN_trc_negative_fixer', 2)
551 call fix_negative_val( &
552 trc_vars, ddens, therm, pres, cvtot, cptot, rtot, &
553 dens_hyd, pres_hyd, dt, mesh3d, dyn_driver%Is_THERMVAR_RHOT() )
554 call prof_rapend(
'ATM_DYN_trc_negative_fixer', 2)
557 call prof_rapend(
'ATM_DYN_trc_update', 2)
560 end subroutine atmdyndgmdriver_trcadv3d_update
563 subroutine atmdyndgmdriver_trcadv3d_final( this )
571 nullify( this%boundary_cond )
573 call this%TRCVAR3D_manager%Final()
574 deallocate( this%TRCVARS3D )
576 call this%AUXTRCVAR3D_manager%Final()
577 deallocate( this%AUX_TRCVARS3D )
579 call this%AUXTRC_FLUX_VAR3D_manager%Final()
580 deallocate( this%AUXTRC_FLUX_VARS3D )
582 call this%alphaDensM%Final()
583 call this%alphaDensP%Final()
585 if ( this%MODALFILTER_FLAG )
then
586 call this%modal_filter_3d%Final()
589 call this%FaceIntMat%Final()
593 end subroutine atmdyndgmdriver_trcadv3d_final
597 subroutine fix_negative_val( &
598 TRC_VARS, DDENS, THERM, PRES, CVtot, CPtot, Rtot, & ! (inout)
599 dens_hyd, pres_hyd, dt, mesh3d, is_thermvar_rhot )
600 use scale_atmos_hydrometeor,
only: &
614 real(rp),
intent(in) :: dt
615 class(
meshbase3d),
intent(in),
target :: mesh3d
616 logical,
intent(in) :: is_thermvar_rhot
623 integer :: trcid_list(qa)
624 type(localmeshfieldbaselist) :: lc_qtrc(qa)
631 do n=1, mesh3d%LOCAL_MESH_NUM
632 call trc_vars%GetLocalMeshFieldList( trcid_list, n, lc_qtrc )
633 lcmesh3d => mesh3d%lcmesh_list(n)
635 if ( is_thermvar_rhot )
then
637 lc_qtrc, ddens%local(n)%val, pres%local(n)%val, &
638 cvtot%local(n)%val, cptot%local(n)%val, rtot%local(n)%val, &
639 dens_hyd%local(n)%val, pres_hyd%local(n)%val, &
640 dt, lcmesh3d, lcmesh3d%refElem3D, qa, qla, qia, &
641 drhot=therm%local(n)%val )
644 lc_qtrc, ddens%local(n)%val, pres%local(n)%val, &
645 cvtot%local(n)%val, cptot%local(n)%val, rtot%local(n)%val, &
646 dens_hyd%local(n)%val, pres_hyd%local(n)%val, &
647 dt, lcmesh3d, lcmesh3d%refElem3D, qa, qla, qia )
652 end subroutine fix_negative_val
654 subroutine update_pressure_specific_heat( &
655 PRES, Rtot, CVtot, CPtot, &
656 TRC_VARS, PROG_VARS, AUX_VARS, dyn_driver, mesh3D )
658 use scale_tracer,
only: &
659 tracer_mass, tracer_r, tracer_cv, tracer_cp
660 use scale_atmos_thermodyn,
only: &
661 atmos_thermodyn_specific_heat
674 class(
meshbase3d),
intent(in),
target :: mesh3d
683 real(rp),
allocatable :: q_tmp(:,:)
684 real(rp),
allocatable :: qdry(:)
686 integer :: trcid_list(qa)
687 type(localmeshfieldbaselist) :: lc_qtrc(qa)
694 do n=1, mesh3d%LOCAL_MESH_NUM
695 call trc_vars%GetLocalMeshFieldList( trcid_list, n, lc_qtrc )
697 lcmesh3d => mesh3d%lcmesh_list(n)
698 elem3d => lcmesh3d%refElem3D
699 allocate( q_tmp(elem3d%Np,qa), qdry(elem3d%Np) )
702 do ke = lcmesh3d%NeS, lcmesh3d%NeE
704 q_tmp(:,iq) = lc_qtrc(iq)%ptr%val(:,ke)
706 call atmos_thermodyn_specific_heat( &
707 elem3d%Np, 1, elem3d%Np, qa, &
708 q_tmp(:,:), tracer_mass(:), tracer_r(:), tracer_cv(:), tracer_cp(:), &
709 qdry, rtot%local(n)%val(:,ke), cvtot%local(n)%val(:,ke), cptot%local(n)%val(:,ke) )
711 deallocate(q_tmp, qdry)
714 call dyn_driver%calc_pressure( pres, prog_vars, aux_vars )
717 end subroutine update_pressure_specific_heat
721 subroutine setup_modalfilter( this, refElem3D, element_operation )
729 real(rp) :: mf_etac_h = 2.0_rp/3.0_rp
730 real(rp) :: mf_alpha_h = 36.0_rp
731 integer :: mf_order_h = 16
732 real(rp) :: mf_etac_v = 2.0_rp/3.0_rp
733 real(rp) :: mf_alpha_v = 36.0_rp
734 integer :: mf_order_v = 16
736 namelist /param_atmos_dyn_tracer_modalfilter/ &
737 mf_etac_h, mf_alpha_h, mf_order_h, &
738 mf_etac_v, mf_alpha_v, mf_order_v
746 read(io_fid_conf,nml=param_atmos_dyn_tracer_modalfilter,iostat=ierr)
748 log_info(
"ATMOS_DYN_TRCADV3D_setup_modalfilter",*)
'Not found namelist. Default used.'
749 elseif( ierr > 0 )
then
750 log_error(
"ATMOS_DYN_TRCADV3D_setup_modalfilter",*)
'Invalid names in namelist PARAM_ATMOS_DYN_TRACER_MODALFILTER. Check!'
754 log_nml(param_atmos_dyn_tracer_modalfilter)
756 call this%modal_filter_3d%Init( &
758 mf_etac_h, mf_alpha_h, mf_order_h, &
759 mf_etac_v, mf_alpha_v, mf_order_v )
761 call element_operation%Setup_ModalFilter_tracer( &
762 mf_etac_h, mf_alpha_h, mf_order_h, &
763 mf_etac_v, mf_alpha_v, mf_order_v )
766 end subroutine setup_modalfilter
module FElib / Fluid dyn solver / Atmosphere / Boundary
module FElib / Fluid dyn solver / Atmosphere / driver (base)
subroutine, public atmdyndgmdriver_base3d_final(this)
subroutine, public atmdyndgmdriver_base3d_init(this, prgvar_num, tint_type, dtsec, mesh)
module FElib / Fluid dyn solver / Atmosphere / driver (3D nonhydrostatic model)
module FElib / Fluid dyn solver / Atmosphere / DGM driver (tracer advection)
integer, parameter, public massflx_x_id
type(variableinfo), dimension(trcvars3d_num), public atmos_dyn_trcvars3d_vinfo
integer, parameter, public trcvars3d_num
integer, parameter, public trcvars3d_trcadv_id
integer, parameter, public mass_flux_num
integer, parameter, public trcvars3d_dens0_id
integer, parameter, public eqs_typeid_trcadv3d_heve
type(variableinfo), dimension(mass_flux_num), public atmos_dyn_mass_flux_vinfo
integer, parameter, public trcvars3d_dens_id
integer, parameter, public auxtrcvars3d_fctcoef_id
integer, parameter, public auxtrcvars3d_num
integer, parameter, public massflx_z_id
integer, parameter, public massflx_y_id
type(variableinfo), dimension(auxtrcvars3d_num), public atmos_dyn_auxtrcvars3d_vinfo
module FElib / Fluid dyn solver / Atmosphere / Common / Modal filter
subroutine, public atm_dyn_dgm_tracer_modalfilter_apply(qtrc_, dens_hyd_, ddens0_, ddens_, lmesh, elem, elem_operation)
Apply a modal filtering to tracer variables.
module FElib / Fluid dyn solver / Atmosphere / Nonhydrostatic model / Common
integer, parameter, public prgvar_momy_id
integer, parameter, public auxvar_cptot_id
integer, parameter, public prgvar_therm_id
integer, parameter, public auxvar_cvtot_id
integer, parameter, public prgvar_ddens_id
integer, parameter, public prgvar_momz_id
integer, parameter, public phytend_num
integer, parameter, public prgvar_momx_id
integer, parameter, public auxvar_num
integer, parameter, public prgvar_num
integer, parameter, public auxvar_preshydro_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 auxvar_rtot_id
integer, parameter, public auxvar_pres_id
module FElib / Fluid dyn solver / Atmosphere / Tracer advection
subroutine, public atm_dyn_dgm_trcadvect3d_heve_final()
subroutine, public atm_dyn_dgm_trcadvect3d_tmar(qtrc_, dens_hyd, ddens_, lmesh, elem, lmesh2d, elem2d)
Second Step of limiter in which nonlinear truncation and mass aware rescaling (TMAR)
subroutine, public atm_dyn_dgm_trcadvect3d_save_massflux(mflx_x_tavg, mflx_y_tavg, mflx_z_tavg, alph_dens_m, alph_dens_p, ddens, momx, momy, momz, dpres, dens_hyd, pres_hyd, rtot, cvtot, cptot, lmesh, elem, rkstage, tavg_weight_h, tavg_weight_v, is_hevi)
subroutine, public atm_dyn_dgm_trcadvect3d_heve_calc_fct_coef(fct_coef, qtrc_, momx_, momy_, momz_, rhoq_tp_, alphdens_m, alphdens_p, dens_hyd, ddens_, ddens0_, rk_c_ssm1, dt, faceintmat, lmesh, elem, lmesh2d, elem2d, disable_limiter)
subroutine, public atm_dyn_dgm_trcadvect3d_heve_cal_tend(qtrc_dt, qtrc_, momx_, momy_, momz_, alphdens_m, alphdens_p, fct_coef, rhoq_tp, element3d_operation, faceintmat, lmesh, elem, lmesh2d, elem2d)
subroutine, public atm_dyn_dgm_trcadvect3d_heve_cal_alphdens_advtest(alph_dens_m, alph_dens_p, ddens_, momx_, momy_, momz_, dens_hyd, gsqrt, nx, ny, nz, vmapm, vmapp, lmesh, elem)
subroutine, public atm_dyn_dgm_trcadvect3d_heve_init(mesh, faceintmat)
module FElib / Atmosphere / Physics cloud microphysics / common
subroutine, public atm_phy_mp_dgm_common_negative_fixer(qtrc, ddens, pres, cvtot, cptot, rtot, dens_hyd, pres_hyd, dt, lmesh, elem, qa, qla, qia, drhot)
module FElib / Element / Base
module FElib / Element / hexahedron
module FElib / Element / line
module FElib / Element/ ModalFilter
module FElib / Element / Operation / Base
module FElib / Mesh / Local 2D
module FElib / Mesh / Local 3D
module FElib / Mesh / Local, Base
module FElib / Data / base
integer, parameter, public local_meshfield_type_nodes_faceval
ID of data type with a field on face nodes in local mesh.
module FElib / Mesh / Base 3D
module FElib / Data / base
FElib / model framework / mesh manager.
FElib / model framework / variable manager.
Module common / sparsemat.
Module common / Runge-Kutta scheme.
A derived type useful for apply boundary conditions.
Derived type to provide a driver of dynamical core with the atmospheric nonhydrostatic equations.
Derived type representing a 2D reference element.
Derived type representing a 3D reference element.
Derived type representing an arbitrary finite element.
Derived type representing a hexahedral element.
Derived type representing a line element.
Derived type representing a modal filter.
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 to manage a local computational domain (base type)
Derived type to manage a computational mesh (base type for 3D domain)
Derived type representing a field with 2D mesh.
Derived type representing a field with 3D mesh.
Derived type representing a field (base type)
Derived type to manage a sparse matrix.
Derived type to provide RK scheme.