FE-Project
Loading...
Searching...
No Matches
mod_atmos_vars_container Module Reference

module Atmosphere / Variables More...

Data Types

type  atmosvarscontainer
 Derived type to manage a set of variables (prognostic variables, tracer variables, auxiliary variables, and tendencies of physical processes) with atmospheric component. More...

Functions/Subroutines

subroutine, public atmosvars_getlocalmeshprgvar (domid, mesh, prgvars_list, auxvars_list, varid, var, dens_hyd, pres_hyd, lcmesh3d)
subroutine, public atmosvars_getlocalmeshprgvars (domid, mesh, prgvars_list, auxvars_list, ddens, momx, momy, momz, therm, dens_hyd, pres_hyd, rtot, cvtot, cptot, lcmesh3d)
subroutine, public atmosvars_getlocalmeshsfcvar (domid, mesh, auxvars2d_list, prec, prec_engi, lcmesh2d)
subroutine, public atmosvars_getlocalmeshqtrcvar (domid, mesh, trcvars_list, varid, var, lcmesh3d)
subroutine, public atmosvars_getlocalmeshqtrc_qv (domid, mesh, trcvars_list, forcing_list, var, var_tp, lcmesh3d)
subroutine, public atmosvars_getlocalmeshqtrcvarlist (domid, mesh, trcvars_list, varid_s, var_list, lcmesh3d)
subroutine, public atmosvars_getlocalmeshphyauxvars (domid, mesh, phyauxvars_list, pres, pt, lcmesh3d)
subroutine, public atmosvars_getlocalmeshphytends (domid, mesh, phytends_list, dens_tp, momx_tp, momy_tp, momz_tp, rhot_tp, rhoh_p, rhoq_tp, lcmesh3d)
subroutine, public atmosvars_getlocalmeshqtrcphytend (domid, mesh, phytends_list, qtrcid, rhoq_tp)

Variables

integer, parameter, public atm_vars_container_primary_id = 1
integer, parameter, public atmos_auxvars2d_prec_id = 1
integer, parameter, public atmos_auxvars2d_prec_engi_id = 2
integer, parameter, public atmos_auxvars2d_num = 2
type(variableinfo), dimension(atmos_auxvars2d_num), public atmos_auxvars2d_vinfo

Detailed Description

module Atmosphere / Variables

Description
Container for atmospheric variables
Author
Yuta Kawai, Team SCALE
NAMELIST
  • PARAM_ATMOS_VARS_CONTAINER
    nametypedefault valuecomment
    PHY_PREPROC_OPERATION_TYPEcharacter(len=H_SHORT)'None'ModalFilter / GlobalFilter
    MF_ALPHA_Hreal(RP)
    MF_ORDER_Hinteger
    MF_ALPHA_Vreal(RP)
    MF_ORDER_Vinteger
    GLFILTEROPTRTYPEcharacter(len=H_SHORT)
    GLFILTERSHAPEcharacter(len=H_SHORT)
    GLFILTERWIDTHFACreal(RP)
    NNODE_H1D_RECONSTinteger

History Output
namedescriptionunitvariable
PRECsurface precipitaion fluxkg/m2/sPREC
PREC_ENGIinternal energy of precipitationJ/m2PREC_ENGI

Function/Subroutine Documentation

◆ atmosvars_getlocalmeshprgvar()

subroutine, public mod_atmos_vars_container::atmosvars_getlocalmeshprgvar ( integer, intent(in) domid,
class(meshbase), intent(in) mesh,
class(modelvarmanager), intent(inout) prgvars_list,
class(modelvarmanager), intent(inout) auxvars_list,
integer, intent(in) varid,
class(localmeshfieldbase), intent(out), pointer var,
class(localmeshfieldbase), intent(out), optional, pointer dens_hyd,
class(localmeshfieldbase), intent(out), optional, pointer pres_hyd,
class(localmesh3d), intent(out), optional, pointer lcmesh3d )

Definition at line 641 of file mod_atmos_vars_container.F90.

644
645 implicit none
646
647 integer, intent(in) :: domID
648 class(MeshBase), intent(in) :: mesh
649 class(ModelVarManager), intent(inout) :: prgvars_list
650 class(ModelVarManager), intent(inout) :: auxvars_list
651 integer, intent(in) :: varid
652 class(LocalMeshFieldBase), pointer, intent(out) :: var
653 class(LocalMeshFieldBase), pointer, intent(out), optional :: DENS_hyd, PRES_hyd
654 class(LocalMesh3D), pointer, intent(out), optional :: lcmesh3D
655
656 class(MeshFieldBase), pointer :: field
657 class(LocalMeshBase), pointer :: lcmesh
658 !-------------------------------------------------------
659
660 !--
661 call prgvars_list%Get(varid, field)
662 call field%GetLocalMeshField(domid, var)
663
664 if (present(dens_hyd)) then
665 call auxvars_list%Get(auxvar_denshydro_id, field)
666 call field%GetLocalMeshField(domid, dens_hyd)
667 end if
668 if (present(pres_hyd)) then
669 call auxvars_list%Get(auxvar_preshydro_id, field)
670 call field%GetLocalMeshField(domid, pres_hyd)
671 end if
672
673 if (present(lcmesh3d)) then
674 call mesh%GetLocalMesh( domid, lcmesh )
675 nullify( lcmesh3d )
676
677 select type(lcmesh)
678 type is (localmesh3d)
679 if (present(lcmesh3d)) lcmesh3d => lcmesh
680 end select
681 end if
682
683 return

Referenced by mod_atmos_vars::atmosvars::regist_physvar_manager().

◆ atmosvars_getlocalmeshprgvars()

subroutine, public mod_atmos_vars_container::atmosvars_getlocalmeshprgvars ( integer, intent(in) domid,
class(meshbase), intent(in) mesh,
class(modelvarmanager), intent(inout) prgvars_list,
class(modelvarmanager), intent(inout) auxvars_list,
class(localmeshfieldbase), intent(out), pointer ddens,
class(localmeshfieldbase), intent(out), pointer momx,
class(localmeshfieldbase), intent(out), pointer momy,
class(localmeshfieldbase), intent(out), pointer momz,
class(localmeshfieldbase), intent(out), pointer therm,
class(localmeshfieldbase), intent(out), pointer dens_hyd,
class(localmeshfieldbase), intent(out), pointer pres_hyd,
class(localmeshfieldbase), intent(out), pointer rtot,
class(localmeshfieldbase), intent(out), pointer cvtot,
class(localmeshfieldbase), intent(out), pointer cptot,
class(localmesh3d), intent(out), optional, pointer lcmesh3d )

Definition at line 687 of file mod_atmos_vars_container.F90.

691 implicit none
692 integer, intent(in) :: domID
693 class(MeshBase), intent(in) :: mesh
694 class(ModelVarManager), intent(inout) :: prgvars_list
695 class(ModelVarManager), intent(inout) :: auxvars_list
696 class(LocalMeshFieldBase), pointer, intent(out) :: DDENS, MOMX, MOMY, MOMZ, THERM
697 class(LocalMeshFieldBase), pointer, intent(out) :: DENS_hyd, PRES_hyd
698 class(LocalMeshFieldBase), pointer, intent(out) :: Rtot, CVtot, CPtot
699 class(LocalMesh3D), pointer, intent(out), optional :: lcmesh3D
700
701 class(MeshFieldBase), pointer :: field
702 class(LocalMeshBase), pointer :: lcmesh
703 !-------------------------------------------------------
704
705 !--
706 call prgvars_list%Get(prgvar_ddens_id, field)
707 call field%GetLocalMeshField(domid, ddens)
708
709 call prgvars_list%Get(prgvar_momx_id, field)
710 call field%GetLocalMeshField(domid, momx)
711
712 call prgvars_list%Get(prgvar_momy_id, field)
713 call field%GetLocalMeshField(domid, momy)
714
715 call prgvars_list%Get(prgvar_momz_id, field)
716 call field%GetLocalMeshField(domid, momz)
717
718 call prgvars_list%Get(prgvar_therm_id, field)
719 call field%GetLocalMeshField(domid, therm)
720
721 !--
722 call auxvars_list%Get(auxvar_denshydro_id, field)
723 call field%GetLocalMeshField(domid, dens_hyd)
724
725 call auxvars_list%Get(auxvar_preshydro_id, field)
726 call field%GetLocalMeshField(domid, pres_hyd)
727
728 call auxvars_list%Get(auxvar_rtot_id, field)
729 call field%GetLocalMeshField(domid, rtot)
730
731 call auxvars_list%Get(auxvar_cvtot_id, field)
732 call field%GetLocalMeshField(domid, cvtot)
733
734 call auxvars_list%Get(auxvar_cptot_id, field)
735 call field%GetLocalMeshField(domid, cptot)
736
737 !---
738
739 if ( present(lcmesh3d) ) then
740 call mesh%GetLocalMesh( domid, lcmesh )
741 nullify( lcmesh3d )
742
743 select type(lcmesh)
744 type is (localmesh3d)
745 if (present(lcmesh3d)) lcmesh3d => lcmesh
746 end select
747 end if
748
749 return

Referenced by mod_atmos_vars::atmosvars::regist_physvar_manager().

◆ atmosvars_getlocalmeshsfcvar()

subroutine, public mod_atmos_vars_container::atmosvars_getlocalmeshsfcvar ( integer, intent(in) domid,
class(meshbase), intent(in) mesh,
class(modelvarmanager), intent(inout) auxvars2d_list,
class(localmeshfieldbase), intent(out), pointer prec,
class(localmeshfieldbase), intent(out), pointer prec_engi,
class(localmesh2d), intent(out), optional, pointer lcmesh2d )

Definition at line 753 of file mod_atmos_vars_container.F90.

755
756 implicit none
757 integer, intent(in) :: domID
758 class(MeshBase), intent(in) :: mesh
759 class(ModelVarManager), intent(inout) :: auxvars2D_list
760 class(LocalMeshFieldBase), pointer, intent(out) :: PREC, PREC_ENGI
761 class(LocalMesh2D), pointer, intent(out), optional :: lcmesh2D
762
763 class(MeshFieldBase), pointer :: field
764 class(LocalMeshBase), pointer :: lcmesh
765 !-------------------------------------------------------
766
767 !--
768 call auxvars2d_list%Get(atmos_auxvars2d_prec_id, field)
769 call field%GetLocalMeshField(domid, prec)
770
771 call auxvars2d_list%Get(atmos_auxvars2d_prec_engi_id, field)
772 call field%GetLocalMeshField(domid, prec_engi)
773
774 if (present(lcmesh2d)) then
775 call mesh%GetLocalMesh( domid, lcmesh )
776 nullify( lcmesh2d )
777
778 select type(lcmesh)
779 type is (localmesh2d)
780 if (present(lcmesh2d)) lcmesh2d => lcmesh
781 end select
782 end if
783
784 return

References atmos_auxvars2d_prec_engi_id, and atmos_auxvars2d_prec_id.

Referenced by mod_atmos_component::atmos_setup(), and mod_atmos_vars::atmosvars::regist_physvar_manager().

◆ atmosvars_getlocalmeshqtrcvar()

subroutine, public mod_atmos_vars_container::atmosvars_getlocalmeshqtrcvar ( integer, intent(in) domid,
class(meshbase), intent(in) mesh,
class(modelvarmanager), intent(inout) trcvars_list,
integer, intent(in) varid,
class(localmeshfieldbase), intent(out), pointer var,
class(localmesh3d), intent(out), optional, pointer lcmesh3d )

Definition at line 788 of file mod_atmos_vars_container.F90.

791
792 implicit none
793 integer, intent(in) :: domID
794 class(MeshBase), intent(in) :: mesh
795 class(ModelVarManager), intent(inout) :: trcvars_list
796 integer, intent(in) :: varid
797 class(LocalMeshFieldBase), pointer, intent(out) :: var
798 class(LocalMesh3D), pointer, intent(out), optional :: lcmesh3D
799
800 class(MeshFieldBase), pointer :: field
801 class(LocalMeshBase), pointer :: lcmesh
802 !-------------------------------------------------------
803
804 !--
805 call trcvars_list%Get(varid, field)
806 call field%GetLocalMeshField(domid, var)
807
808 if (present(lcmesh3d)) then
809 call mesh%GetLocalMesh( domid, lcmesh )
810 nullify( lcmesh3d )
811
812 select type(lcmesh)
813 type is (localmesh3d)
814 if (present(lcmesh3d)) lcmesh3d => lcmesh
815 end select
816 end if
817
818 return

Referenced by mod_atmos_vars::atmosvars::regist_physvar_manager().

◆ atmosvars_getlocalmeshqtrc_qv()

subroutine, public mod_atmos_vars_container::atmosvars_getlocalmeshqtrc_qv ( integer, intent(in) domid,
class(meshbase), intent(in) mesh,
class(modelvarmanager), intent(inout) trcvars_list,
class(modelvarmanager), intent(inout) forcing_list,
class(localmeshfieldbase), intent(out), pointer var,
class(localmeshfieldbase), intent(out), optional, pointer var_tp,
class(localmesh3d), intent(out), optional, pointer lcmesh3d )

Definition at line 822 of file mod_atmos_vars_container.F90.

824
825 use scale_atmos_hydrometeor, only: &
826 atmos_hydrometeor_dry, &
827 i_qv
828 implicit none
829 integer, intent(in) :: domID
830 class(MeshBase), intent(in) :: mesh
831 class(ModelVarManager), intent(inout) :: trcvars_list
832 class(ModelVarManager), intent(inout) :: forcing_list
833 class(LocalMeshFieldBase), pointer, intent(out) :: var
834 class(LocalMeshFieldBase), pointer, intent(out), optional :: var_tp
835 class(LocalMesh3D), pointer, intent(out), optional :: lcmesh3D
836
837 class(MeshFieldBase), pointer :: field
838 class(LocalMeshBase), pointer :: lcmesh
839
840 integer :: iq, tend_iq
841 !-------------------------------------------------------
842
843 !--
844
845 if ( atmos_hydrometeor_dry ) then
846 iq = 0; tend_iq = phytend_num1+1
847 else
848 iq = i_qv; tend_iq = phytend_num1 + i_qv
849 end if
850
851 call trcvars_list%Get(iq, field)
852 call field%GetLocalMeshField(domid, var)
853
854 call forcing_list%Get(tend_iq, field)
855 if (present(var_tp)) call field%GetLocalMeshField(domid, var_tp)
856
857 if (present(lcmesh3d)) then
858 call mesh%GetLocalMesh( domid, lcmesh )
859 nullify( lcmesh3d )
860
861 select type(lcmesh)
862 type is (localmesh3d)
863 if (present(lcmesh3d)) lcmesh3d => lcmesh
864 end select
865 end if
866
867 return

Referenced by mod_atmos_vars::atmosvars::regist_physvar_manager().

◆ atmosvars_getlocalmeshqtrcvarlist()

subroutine, public mod_atmos_vars_container::atmosvars_getlocalmeshqtrcvarlist ( integer, intent(in) domid,
class(meshbase), intent(in) mesh,
class(modelvarmanager), intent(inout) trcvars_list,
integer, intent(in) varid_s,
type(localmeshfieldbaselist), dimension(:), intent(out) var_list,
class(localmesh3d), intent(out), optional, pointer lcmesh3d )

Definition at line 871 of file mod_atmos_vars_container.F90.

874
875 implicit none
876 integer, intent(in) :: domID
877 class(MeshBase), intent(in) :: mesh
878 class(ModelVarManager), intent(inout) :: trcvars_list
879 integer, intent(in) :: varid_s
880 type(LocalMeshFieldBaseList), intent(out) :: var_list(:)
881 class(LocalMesh3D), pointer, intent(out), optional :: lcmesh3D
882
883 class(MeshFieldBase), pointer :: field
884 class(LocalMeshBase), pointer :: lcmesh
885
886 integer :: iq
887 !-------------------------------------------------------
888
889 !--
890 do iq = varid_s, varid_s + size(var_list) - 1
891 call trcvars_list%Get(iq, field)
892 call field%GetLocalMeshField(domid, var_list(iq-varid_s+1)%ptr)
893 end do
894 if (present(lcmesh3d)) then
895 call mesh%GetLocalMesh( domid, lcmesh )
896 nullify( lcmesh3d )
897
898 select type(lcmesh)
899 type is (localmesh3d)
900 if (present(lcmesh3d)) lcmesh3d => lcmesh
901 end select
902 end if
903
904 return

Referenced by momtovel(), and mod_atmos_vars::atmosvars::regist_physvar_manager().

◆ atmosvars_getlocalmeshphyauxvars()

subroutine, public mod_atmos_vars_container::atmosvars_getlocalmeshphyauxvars ( integer, intent(in) domid,
class(meshbase), intent(in) mesh,
class(modelvarmanager), intent(inout) phyauxvars_list,
class(localmeshfieldbase), intent(out), pointer pres,
class(localmeshfieldbase), intent(out), pointer pt,
class(localmesh3d), intent(out), optional, pointer lcmesh3d )

Definition at line 908 of file mod_atmos_vars_container.F90.

911
912 implicit none
913 integer, intent(in) :: domID
914 class(MeshBase), intent(in) :: mesh
915 class(ModelVarManager), intent(inout) :: phyauxvars_list
916 class(LocalMeshFieldBase), pointer, intent(out) :: PRES, PT
917 class(LocalMesh3D), pointer, intent(out), optional :: lcmesh3D
918
919 class(MeshFieldBase), pointer :: field
920 class(LocalMeshBase), pointer :: lcmesh
921 !-------------------------------------------------------
922
923 !--
924 call phyauxvars_list%Get(auxvar_pres_id, field)
925 call field%GetLocalMeshField(domid, pres)
926
927 call phyauxvars_list%Get(auxvar_pt_id, field)
928 call field%GetLocalMeshField(domid, pt)
929
930 !---
931
932 if (present(lcmesh3d)) then
933 call mesh%GetLocalMesh( domid, lcmesh )
934 nullify( lcmesh3d )
935
936 select type(lcmesh)
937 type is (localmesh3d)
938 if (present(lcmesh3d)) lcmesh3d => lcmesh
939 end select
940 end if
941
942 return

Referenced by mod_atmos_vars::atmosvars::regist_physvar_manager().

◆ atmosvars_getlocalmeshphytends()

subroutine, public mod_atmos_vars_container::atmosvars_getlocalmeshphytends ( integer, intent(in) domid,
class(meshbase), intent(in) mesh,
class(modelvarmanager), intent(inout) phytends_list,
class(localmeshfieldbase), intent(out), pointer dens_tp,
class(localmeshfieldbase), intent(out), pointer momx_tp,
class(localmeshfieldbase), intent(out), pointer momy_tp,
class(localmeshfieldbase), intent(out), pointer momz_tp,
class(localmeshfieldbase), intent(out), pointer rhot_tp,
class(localmeshfieldbase), intent(out), pointer rhoh_p,
type(localmeshfieldbaselist), dimension(qa), intent(inout), optional rhoq_tp,
class(localmesh3d), intent(out), optional, pointer lcmesh3d )

Definition at line 946 of file mod_atmos_vars_container.F90.

950
951 implicit none
952 integer, intent(in) :: domID
953 class(MeshBase), intent(in) :: mesh
954 class(ModelVarManager), intent(inout) :: phytends_list
955 class(LocalMeshFieldBase), pointer, intent(out) :: DENS_tp, MOMX_tp, MOMY_tp, MOMZ_tp, RHOT_tp
956 class(LocalMeshFieldBase), pointer, intent(out) :: RHOH_p
957 type(LocalMeshFieldBaseList), intent(inout), optional :: RHOQ_tp(QA)
958 class(LocalMesh3D), pointer, intent(out), optional :: lcmesh3D
959
960 class(MeshFieldBase), pointer :: field
961 class(LocalMeshBase), pointer :: lcmesh
962
963 integer :: iq
964 !-------------------------------------------------------
965
966 !--
967 call phytends_list%Get(phytend_dens_id, field)
968 call field%GetLocalMeshField(domid, dens_tp)
969
970 call phytends_list%Get(phytend_momx_id, field)
971 call field%GetLocalMeshField(domid, momx_tp)
972
973 call phytends_list%Get(phytend_momy_id, field)
974 call field%GetLocalMeshField(domid, momy_tp)
975
976 call phytends_list%Get(phytend_momz_id, field)
977 call field%GetLocalMeshField(domid, momz_tp)
978
979 call phytends_list%Get(phytend_rhot_id, field)
980 call field%GetLocalMeshField(domid, rhot_tp)
981
982 call phytends_list%Get(phytend_rhoh_id, field)
983 call field%GetLocalMeshField(domid, rhoh_p)
984
985 if ( present(rhoq_tp) ) then
986 do iq = 1, qa
987 call phytends_list%Get(phytend_num1+iq, field)
988 call field%GetLocalMeshField(domid, rhoq_tp(iq)%ptr)
989 end do
990 end if
991
992 !---
993 if ( present(lcmesh3d) ) then
994 call mesh%GetLocalMesh( domid, lcmesh )
995 nullify( lcmesh3d )
996
997 select type(lcmesh)
998 type is (localmesh3d)
999 if ( present(lcmesh3d) ) lcmesh3d => lcmesh
1000 end select
1001 end if
1002
1003 return

Referenced by mod_atmos_vars::atmosvars::regist_physvar_manager().

◆ atmosvars_getlocalmeshqtrcphytend()

subroutine, public mod_atmos_vars_container::atmosvars_getlocalmeshqtrcphytend ( integer, intent(in) domid,
class(meshbase), intent(in) mesh,
class(modelvarmanager), intent(inout) phytends_list,
integer, intent(in) qtrcid,
class(localmeshfieldbase), intent(out), pointer rhoq_tp )

Definition at line 1007 of file mod_atmos_vars_container.F90.

1010
1011 implicit none
1012 integer, intent(in) :: domID
1013 class(MeshBase), intent(in) :: mesh
1014 class(ModelVarManager), intent(inout) :: phytends_list
1015 integer, intent(in) :: qtrcid
1016 class(LocalMeshFieldBase), pointer, intent(out) :: RHOQ_tp
1017
1018 class(MeshFieldBase), pointer :: field
1019 !-------------------------------------------------------
1020
1021 call phytends_list%Get(phytend_num1 + qtrcid, field)
1022 call field%GetLocalMeshField(domid, rhoq_tp)
1023
1024 return

References atm_vars_container_primary_id.

Referenced by mod_atmos_vars::atmosvars::regist_physvar_manager().

Variable Documentation

◆ atm_vars_container_primary_id

integer, parameter, public mod_atmos_vars_container::atm_vars_container_primary_id = 1

Definition at line 107 of file mod_atmos_vars_container.F90.

107 integer, parameter, public :: ATM_VARS_CONTAINER_PRIMARY_ID = 1

Referenced by atmosvars_getlocalmeshqtrcphytend(), momtovel(), and mod_atmos_vars::atmosvars::regist_physvar_manager().

◆ atmos_auxvars2d_prec_id

integer, parameter, public mod_atmos_vars_container::atmos_auxvars2d_prec_id = 1

Definition at line 131 of file mod_atmos_vars_container.F90.

131 integer, public, parameter :: ATMOS_AUXVARS2D_PREC_ID = 1

Referenced by atmosvars_getlocalmeshsfcvar().

◆ atmos_auxvars2d_prec_engi_id

integer, parameter, public mod_atmos_vars_container::atmos_auxvars2d_prec_engi_id = 2

Definition at line 132 of file mod_atmos_vars_container.F90.

132 integer, public, parameter :: ATMOS_AUXVARS2D_PREC_ENGI_ID = 2

Referenced by mod_atmos_component::atmos_setup(), and atmosvars_getlocalmeshsfcvar().

◆ atmos_auxvars2d_num

integer, parameter, public mod_atmos_vars_container::atmos_auxvars2d_num = 2

Definition at line 133 of file mod_atmos_vars_container.F90.

133 integer, public, parameter :: ATMOS_AUXVARS2D_NUM = 2

◆ atmos_auxvars2d_vinfo

type(variableinfo), dimension(atmos_auxvars2d_num), public mod_atmos_vars_container::atmos_auxvars2d_vinfo

Definition at line 135 of file mod_atmos_vars_container.F90.

135 type(VariableInfo), public :: ATMOS_AUXVARS2D_VINFO(ATMOS_AUXVARS2D_NUM)