11#include "scaleFElib.h"
38 atm_vars_container_primary_id
61 character(len=H_SHORT) :: mesh_type
77 procedure,
public :: setup_vars => atmos_setup_vars
78 procedure,
public :: set_coupler => atmos_set_coupler
79 procedure,
public :: calc_tendency => atmos_calc_tendency
80 procedure,
public :: calc_tendency_from_sflux => atmos_calc_tendency_from_sflux
81 procedure,
public :: update => atmos_update
82 procedure,
public :: set_surface => atmos_set_surface
83 procedure,
public :: get_surface => atmos_get_surface
84 procedure,
public :: finalize => atmos_finalize
105 use scale_const,
only: &
106 undef8 => const_undef8
108 use scale_atmos_hydrometeor,
only: &
109 atmos_hydrometeor_dry, &
110 atmos_hydrometeor_regist
111 use scale_atmos_thermodyn,
only: &
112 atmos_thermodyn_setup
113 use scale_atmos_saturation,
only: &
114 atmos_saturation_setup
125 logical :: ACTIVATE_FLAG = .true.
127 real(DP) :: TIME_DT = undef8
128 character(len=H_SHORT) :: TIME_DT_UNIT =
'SEC'
129 real(DP) :: TIME_DT_RESTART = undef8
130 character(len=H_SHORT) :: TIME_DT_RESTART_UNIT =
'SEC'
132 logical :: ATMOS_DYN_DO = .true.
133 logical :: ATMOS_PHY_SF_DO = .false.
134 logical :: ATMOS_PHY_TB_DO = .false.
135 logical :: ATMOS_PHY_MP_DO = .false.
136 logical :: ATMOS_PHY_RD_DO = .false.
137 logical :: ATMOS_PHY_CP_DO = .false.
138 logical :: ATMOS_PHY_BL_DO = .false.
139 character(len=H_SHORT) :: ATMOS_MESH_TYPE =
'REGIONAL'
141 logical :: ATMOS_USE_QV = .false.
144 namelist / param_atmos / &
149 time_dt_restart_unit, &
162 call prof_rapstart(
'ATM_setup', 1)
163 log_info(
'AtmosComponent_setup',*)
'Atmosphere model components '
167 read(io_fid_conf,nml=param_atmos,iostat=ierr)
169 log_info(
"ATMOS_setup",*)
'Not found namelist. Default used.'
170 elseif( ierr > 0 )
then
171 log_error(
"ATM_setup",*)
'Not appropriate names in namelist PARAM_ATMOS. Check!'
177 call this%ModelComponent_Init(
'ATMOS', activate_flag )
178 if ( .not. activate_flag )
return
182 call this%time_manager%Init( this%GetComponentName(), &
183 time_dt, time_dt_unit, &
184 time_dt_restart, time_dt_restart_unit )
190 this%mesh_type = atmos_mesh_type
191 select case( this%mesh_type )
193 call this%mesh_rm%Init()
195 this%mesh => this%mesh_rm
197 call this%mesh_gm%Init()
199 this%mesh => this%mesh_gm
201 log_error(
"ATM_setup",*)
'Unsupported type of mesh is specified. Check!', this%mesh_type
207 call atmos_thermodyn_setup
208 call atmos_saturation_setup
213 call this%phy_sfc_proc%ModelComponentProc_Init(
'AtmosPhysSfc', atmos_phy_sf_do )
214 call this%phy_sfc_proc%setup( this%mesh, this%time_manager )
217 call this%phy_mp_proc%ModelComponentProc_Init(
'AtmosPhysMp', atmos_phy_mp_do )
218 call this%phy_mp_proc%setup( this%mesh, this%time_manager )
221 if ( atmos_hydrometeor_dry .and. atmos_use_qv )
then
222 log_info(
"ATMOS_setup",*)
"Regist QV"
223 call atmos_hydrometeor_regist( 0, 0, &
225 (/
'Ratio of Water Vapor mass to total mass (Specific humidity)'/), &
227 this%phy_mp_proc%vars%QS )
229 this%phy_mp_proc%vars%QA = 1
230 this%phy_mp_proc%vars%QE = this%phy_mp_proc%vars%QS
234 call this%dyn_proc%ModelComponentProc_Init(
'AtmosDyn', atmos_dyn_do )
235 call this%dyn_proc%setup( this%mesh, this%time_manager )
238 call this%phy_tb_proc%ModelComponentProc_Init(
'AtmosPhysTb', atmos_phy_tb_do )
239 call this%phy_tb_proc%setup( this%mesh, this%time_manager )
240 call this%phy_tb_proc%SetDynBC( this%dyn_proc%dyncore_driver%boundary_cond )
243 call this%phy_rd_proc%ModelComponentProc_Init(
'AtmosPhysRd', atmos_phy_rd_do )
244 call this%phy_rd_proc%setup( this%mesh, this%time_manager )
247 call this%phy_cp_proc%ModelComponentProc_Init(
'AtmosPhysCp', atmos_phy_cp_do )
248 call this%phy_cp_proc%setup( this%mesh, this%time_manager )
251 call this%phy_bl_proc%ModelComponentProc_Init(
'AtmosPhysBl', atmos_phy_bl_do )
252 call this%phy_bl_proc%setup( this%mesh, this%time_manager )
253 call this%phy_bl_proc%SetDynBC( this%dyn_proc%dyncore_driver%boundary_cond )
258 log_info(
'AtmosComponent_setup',*)
'Finish setup of each atmospheric component.'
260 call prof_rapend(
'ATM_setup', 1)
267 subroutine atmos_setup_vars( this )
275 call prof_rapstart(
'ATM_setup_vars', 1)
277 log_info(
'AtmosComponent_setup_vars',*)
'Atmosphere model components '
279 call this%vars%Init( this%mesh )
282 if ( this%phy_mp_proc%IsActivated() )
then
283 call this%phy_mp_proc%vars%Setup( this%mesh )
284 call this%phy_mp_proc%Set_primary_atmvars_container( this%vars%container )
286 call this%vars%Regist_physvar_manager( mp_auxvars2d_manager=this%phy_mp_proc%vars%auxvars2D_manager )
287 call this%vars%Setup_container( this%phy_mp_proc%atm_var_container_typeid, this%mesh )
290 if ( this%phy_sfc_proc%IsActivated() )
then
291 call this%phy_sfc_proc%vars%Setup( this%mesh )
293 call this%vars%Setup_container( this%phy_sfc_proc%atm_var_container_typeid, this%mesh )
296 if ( this%phy_tb_proc%IsActivated() )
then
297 call this%phy_tb_proc%vars%Setup( this%mesh )
300 if ( this%phy_rd_proc%IsActivated() )
then
301 if ( .not. this%phy_sfc_proc%IsActivated() )
then
302 log_error(
'ATM_setup_vars',*)
'ATMOS_PHY_RD_DO requires ATMOS_PHY_SF_DO to provide SFC_TEMP.'
305 call this%phy_rd_proc%vars%Setup( this%mesh )
306 call this%phy_rd_proc%SetSfcVars( this%phy_sfc_proc%vars%SFC_VARS(sfctemp_id), &
307 this%phy_sfc_proc%vars%SFC_VARS(sfc_alb_id) )
310 if ( this%phy_cp_proc%IsActivated() )
then
311 call this%phy_cp_proc%vars%Setup( this%mesh )
312 call this%vars%Regist_physvar_manager( cp_auxvars2d_manager=this%phy_cp_proc%vars%auxvars2D_manager )
314 if ( this%phy_mp_proc%IsActivated() )
then
315 call this%phy_mp_proc%Set_CP_tends_manager( this%phy_cp_proc%vars%tends_manager )
319 if ( this%phy_bl_proc%IsActivated() )
then
320 call this%phy_bl_proc%vars%Setup( this%mesh )
323 call prof_rapend(
'ATM_setup_vars', 1)
325 end subroutine atmos_setup_vars
329 subroutine atmos_set_coupler( this, coupler )
334 this%coupler_ptr => coupler
336 if ( this%phy_sfc_proc%IsActivated() )
then
337 call this%phy_sfc_proc%set_coupler_flag( coupler%IsActivated() )
340 end subroutine atmos_set_coupler
344 subroutine atmos_calc_tendency( this, force )
345 use scale_tracer,
only: qa
355 atmosvars_getlocalmeshphytends
359 logical,
intent(in) :: force
366 integer :: tm_process_id
374 class(atmosvarscontainer),
pointer :: vars_primary_container
375 class(atmosvarscontainer),
pointer :: vars_container
379 call prof_rapstart(
'ATM_tendency', 1)
382 call this%mesh%GetModelMesh( mesh )
383 call this%vars%Get_container( atm_vars_container_primary_id, &
384 vars_primary_container )
387 call this%Get_surface()
393 call prof_rapstart(
'ATM_exchange_prgv', 2)
394 call this%vars%container%PROGVARS_manager%MeshFieldComm_Exchange()
395 if ( qa > 0 )
call this%vars%container%QTRCVARS_manager%MeshFieldComm_Exchange()
396 call prof_rapend(
'ATM_exchange_prgv', 2)
403 do n=1, mesh%LOCAL_MESH_NUM
404 call atmosvars_getlocalmeshphytends( n, mesh, this%vars%container%PHYTENDS_manager , &
405 tp_list(dens_tp)%ptr, tp_list(momx_tp)%ptr, tp_list(momy_tp)%ptr, &
406 tp_list(momz_tp)%ptr, tp_list(rhot_tp)%ptr, tp_list(rhoh_p )%ptr, tp_qtrc, &
410 np = lcmesh%refElem%Np
416 do ke=lcmesh%NeS, lcmesh%NeE
419 tp_list(v)%ptr%val(p,ke) = 0.0_rp
432 do ke=lcmesh%NeS, lcmesh%NeE
435 tp_qtrc(iq)%ptr%val(p,ke) = 0.0_rp
448 call prof_rapstart(
'ATM_PreOptrForPhys', 1)
449 call this%vars%PreprocOperationForPhys( this%dyn_proc%dyncore_driver )
450 call prof_rapend(
'ATM_PreOptrForPhys', 1)
454 if ( this%phy_cp_proc%IsActivated() )
then
455 call prof_rapstart(
'ATM_Cumulus', 1)
456 tm_process_id = this%phy_cp_proc%tm_process_id
457 is_update = this%time_manager%Do_process(tm_process_id) .or. force
459 call this%vars%Get_container( this%phy_cp_proc%atm_var_container_typeid, &
462 call this%phy_cp_proc%calc_tendency( &
463 this%mesh, vars_container%PROGVARS_manager, vars_container%QTRCVARS_manager, &
464 vars_container%AUXVARS_manager, vars_primary_container%PHYTENDS_manager, is_update )
465 call prof_rapend(
'ATM_Cumulus', 1)
470 if ( this%phy_mp_proc%IsActivated() )
then
471 call prof_rapstart(
'ATM_Microphysics', 1)
472 tm_process_id = this%phy_mp_proc%tm_process_id
473 is_update = this%time_manager%Do_process(tm_process_id) .or. force
475 call this%vars%Get_container( this%phy_mp_proc%atm_var_container_typeid, &
478 call this%phy_mp_proc%calc_tendency( &
479 this%mesh, vars_container%PROGVARS_manager, vars_container%QTRCVARS_manager, &
480 vars_container%AUXVARS_manager, vars_primary_container%PHYTENDS_manager, is_update )
481 call prof_rapend(
'ATM_Microphysics', 1)
486 if ( this%phy_rd_proc%IsActivated() )
then
487 call prof_rapstart(
'ATM_Radiation', 1)
488 tm_process_id = this%phy_rd_proc%tm_process_id
489 is_update = this%time_manager%Do_process(tm_process_id) .or. force
491 call this%vars%Get_container( this%phy_rd_proc%atm_var_container_typeid, &
494 call this%phy_rd_proc%calc_tendency( &
495 this%mesh, vars_container%PROGVARS_manager, vars_container%QTRCVARS_manager, &
496 vars_container%AUXVARS_manager, vars_primary_container%PHYTENDS_manager, is_update )
497 call prof_rapend(
'ATM_Radiation', 1)
502 if ( this%phy_tb_proc%IsActivated() )
then
503 call prof_rapstart(
'ATM_Turbulence', 1)
504 tm_process_id = this%phy_tb_proc%tm_process_id
505 is_update = this%time_manager%Do_process(tm_process_id) .or. force
507 call this%vars%Get_container( atm_vars_container_primary_id, &
510 call this%phy_tb_proc%calc_tendency( &
511 this%mesh, vars_container%PROGVARS_manager, vars_container%QTRCVARS_manager, &
512 vars_container%AUXVARS_manager, vars_primary_container%PHYTENDS_manager, is_update )
513 call prof_rapend(
'ATM_Turbulence', 1)
517 if ( .not. this%coupler_ptr%IsActivated() )
then
521 if ( this%phy_sfc_proc%IsActivated() )
then
522 call prof_rapstart(
'ATM_SurfaceFlux', 1)
523 tm_process_id = this%phy_sfc_proc%tm_process_id
524 is_update = this%time_manager%Do_process(tm_process_id) .or. force
526 call this%vars%Get_container( this%phy_sfc_proc%atm_var_container_typeid, &
529 call this%phy_sfc_proc%calc_tendency( &
530 this%mesh, vars_container%PROGVARS_manager, vars_container%QTRCVARS_manager, &
531 vars_container%AUXVARS_manager, vars_primary_container%PHYTENDS_manager, is_update )
532 call prof_rapend(
'ATM_SurfaceFlux', 1)
537 if ( this%phy_bl_proc%IsActivated() )
then
538 call prof_rapstart(
'ATM_PBL', 1)
539 tm_process_id = this%phy_bl_proc%tm_process_id
540 is_update = this%time_manager%Do_process(tm_process_id) .or. force
542 call this%vars%Get_container( this%phy_bl_proc%atm_var_container_typeid, &
545 call this%phy_bl_proc%calc_tendency( &
546 this%mesh, vars_container%PROGVARS_manager, vars_container%QTRCVARS_manager, &
547 vars_container%AUXVARS_manager, vars_primary_container%PHYTENDS_manager, is_update )
548 call prof_rapend(
'ATM_PBL', 1)
554 call this%set_surface( countup=.true. )
556 call prof_rapend(
'ATM_tendency', 1)
558 end subroutine atmos_calc_tendency
562 subroutine atmos_calc_tendency_from_sflux( this, force )
563 use scale_tracer,
only: qa
573 atmosvars_getlocalmeshphytends
577 logical,
intent(in) :: force
579 integer :: tm_process_id
582 class(atmosvarscontainer),
pointer :: vars_primary_container
583 class(atmosvarscontainer),
pointer :: vars_container
586 if ( .not. this%coupler_ptr%IsActivated() )
return
588 call this%vars%Get_container( atm_vars_container_primary_id, &
589 vars_primary_container )
592 call this%Get_surface()
596 if ( this%phy_sfc_proc%IsActivated() )
then
597 call prof_rapstart(
'ATM_SurfaceFlux', 1)
598 tm_process_id = this%phy_sfc_proc%tm_process_id
599 is_update = this%time_manager%Do_process(tm_process_id) .or. force
601 call this%vars%Get_container( this%phy_sfc_proc%atm_var_container_typeid, &
604 call this%phy_sfc_proc%calc_tendency( &
605 this%mesh, vars_container%PROGVARS_manager, vars_container%QTRCVARS_manager, &
606 vars_container%AUXVARS_manager, vars_primary_container%PHYTENDS_manager, is_update )
607 call prof_rapend(
'ATM_SurfaceFlux', 1)
612 if ( this%phy_bl_proc%IsActivated() )
then
613 call prof_rapstart(
'ATM_PBL', 1)
614 tm_process_id = this%phy_bl_proc%tm_process_id
615 is_update = this%time_manager%Do_process(tm_process_id) .or. force
617 call this%vars%Get_container( this%phy_bl_proc%atm_var_container_typeid, &
620 call this%phy_bl_proc%calc_tendency( &
621 this%mesh, vars_container%PROGVARS_manager, vars_container%QTRCVARS_manager, &
622 vars_container%AUXVARS_manager, vars_primary_container%PHYTENDS_manager, is_update )
623 call prof_rapend(
'ATM_PBL', 1)
626 end subroutine atmos_calc_tendency_from_sflux
630 subroutine atmos_update( this )
634 integer :: tm_process_id
638 class(atmosvarscontainer),
pointer :: vars_container
640 call prof_rapstart(
'ATM_update', 1)
644 call this%vars%Get_container( atm_vars_container_primary_id, &
647 if ( this%dyn_proc%IsActivated() )
then
648 call prof_rapstart(
'ATM_Dynamics', 1)
649 tm_process_id = this%dyn_proc%tm_process_id
650 is_update = this%time_manager%Do_process( tm_process_id )
652 log_progress(*)
'atmosphere / dynamics'
653 do inner_itr=1, this%time_manager%Get_process_inner_itr_num( tm_process_id )
654 call this%dyn_proc%update( &
655 this%mesh, vars_container%PROGVARS_manager, vars_container%QTRCVARS_manager, &
656 vars_container%AUXVARS_manager, vars_container%PHYTENDS_manager, is_update )
658 call prof_rapend(
'ATM_Dynamics', 1)
663 call vars_container%Calc_diagnostics()
664 call vars_container%AUXVARS_manager%MeshFieldComm_Exchange()
674 call this%vars%Check()
676 call prof_rapend(
'ATM_update', 1)
678 end subroutine atmos_update
682 subroutine atmos_set_surface( this, countup )
683 use scale_atmos_hydrometeor,
only: &
684 atmos_hydrometeor_dry, &
690 atmosvars_getlocalmeshsfcvar
703 logical,
intent(in) :: countup
718 call prof_rapstart(
'ATM_sfc_exch', 1)
720 call this%mesh%GetModelMesh( mesh )
723 call mesh%GetMesh2D( mesh2d )
728 do n=1, mesh2d%LOCAL_MESH_NUM
730 mesh2d, this%vars%container%AUXVARS2D_manager, &
731 prec, prec_engi, lcmesh )
734 do ke=lcmesh%NeS, lcmesh%NeE
735 prec %val(:,ke) = 0.0_rp
736 prec_engi%val(:,ke) = 0.0_rp
739 if ( this%phy_mp_proc%IsActivated() )
then
741 mesh2d, this%phy_mp_proc%vars%auxvars2D_manager, &
742 sflx_rain_mp, sflx_snow_mp, sflx_engi_mp )
745 do ke=lcmesh%NeS, lcmesh%NeE
746 prec %val(:,ke) = prec %val(:,ke) + sflx_rain_mp%val(:,ke) + sflx_snow_mp%val(:,ke)
747 prec_engi%val(:,ke) = prec_engi%val(:,ke) + sflx_engi_mp%val(:,ke)
751 if ( this%phy_cp_proc%IsActivated() )
then
753 mesh2d, this%phy_cp_proc%vars%auxvars2D_manager, &
754 sflx_rain_cp, sflx_snow_cp, sflx_engi_cp )
757 do ke=lcmesh%NeS, lcmesh%NeE
758 prec %val(:,ke) = prec %val(:,ke) + sflx_rain_cp%val(:,ke) + sflx_snow_cp%val(:,ke)
759 prec_engi%val(:,ke) = prec_engi%val(:,ke) + sflx_engi_cp%val(:,ke)
764 if ( this%coupler_ptr%IsActivated() )
then
765 if ( atmos_hydrometeor_dry )
then
770 call this%coupler_ptr%vars%PutAtm( &
775 this%vars%container%QTRC_VARS(iq), &
779 this%phy_rd_proc%vars%auxvars2D(rd_sflx_sw_dir_id), &
780 this%phy_rd_proc%vars%auxvars2D(rd_sflx_lw_dif_id), &
781 this%vars%container%AUX_VARS2D(prec_engi_id), &
785 call prof_rapend(
'ATM_sfc_exch', 1)
788 end subroutine atmos_set_surface
792 subroutine atmos_get_surface( this )
794 atmosvars_getlocalmeshsfcvar
809 if ( .not. this%coupler_ptr%IsActivated() )
return
811 call prof_rapstart(
'ATM_sfc_exch', 1)
812 call this%coupler_ptr%vars%Get_SFC_ATM( &
813 this%phy_sfc_proc%vars%SFC_VARS(sfctemp_id), &
814 this%phy_sfc_proc%vars%SFC_VARS(sfcalb_id), &
815 this%phy_sfc_proc%vars%SFC_FLX(sflx_mw_id), &
816 this%phy_sfc_proc%vars%SFC_FLX(sflx_mu_id), &
817 this%phy_sfc_proc%vars%SFC_FLX(sflx_mv_id), &
818 this%phy_sfc_proc%vars%SFC_FLX(sflx_sh_id), &
819 this%phy_sfc_proc%vars%SFC_FLX(sflx_lh_id), &
820 this%phy_sfc_proc%vars%SFC_FLX(sflx_qv_id) )
821 call prof_rapend(
'ATM_sfc_exch', 1)
823 end subroutine atmos_get_surface
827 subroutine atmos_finalize( this )
832 log_info(
'AtmosComponent_finalize',*)
834 if ( .not. this%IsActivated() )
return
836 call this%dyn_proc%finalize()
837 call this%phy_sfc_proc%finalize()
838 call this%phy_tb_proc%finalize()
839 call this%phy_mp_proc%finalize()
840 call this%phy_rd_proc%finalize()
841 call this%phy_cp_proc%finalize()
842 call this%phy_bl_proc%finalize()
843 call this%vars%Final()
845 select case( this%mesh_type )
847 call this%mesh_rm%Final()
849 call this%mesh_gm%Final()
853 call this%time_manager%Final()
856 end subroutine atmos_finalize
module Atmosphere component
subroutine atmos_setup(this)
Setup an object to mange atmospheric component.
module Atmosphere / Dynamics
module Atmosphere / Physics / Planetary Boundary Layer
module Atmosphere / Physics / Cumulus Parameterization
subroutine, public atmosphycpvars_getlocalmeshfields_sfcflx(domid, mesh, sfcflx_list, sflx_rain, sflx_snow, sflx_engi)
module Atmosphere / Physics / Cumulus Parameterization
module Atmosphere / Physics / Cloud Microphysics
subroutine, public atmosphympvars_getlocalmeshfields_sfcflx(domid, mesh, sfcflx_list, sflx_rain, sflx_snow, sflx_engi)
module Atmosphere / Physics / cloud microphysics
module Atmosphere / Physics / Radiation
integer, parameter, public atmos_phy_rd_aux2d_sflx_sw_dn_id
ID of downward shortwave surface flux.
integer, parameter, public atmos_phy_rd_aux2d_sflx_lw_dn_id
ID of downward longwave surface flux.
module Atmosphere / Physics / Radiation
module Atmosphere / Physics / surface process
integer, parameter, public atmos_phy_sf_sflx_mv_id
integer, parameter, public atmos_phy_sf_sflx_qv_id
integer, parameter, public atmos_phy_sf_svar_alb_id
integer, parameter, public atmos_phy_sf_sflx_mu_id
integer, parameter, public atmos_phy_sf_sflx_sh_id
integer, parameter, public atmos_phy_sf_sflx_lh_id
integer, parameter, public atmos_phy_sf_svar_temp_id
integer, parameter, public atmos_phy_sf_sflx_mw_id
module Atmosphere / Physics / surface process
module Atmosphere / Physics / sub-grid scale turbulence process
module Atmosphere / Variables
subroutine, public atmosvars_getlocalmeshsfcvar(domid, mesh, auxvars2d_list, prec, prec_engi, lcmesh2d)
integer, parameter, public atmos_auxvars2d_prec_engi_id
module Atmosphere / Variables
module FElib / Fluid dyn solver / Atmosphere / Nonhydrostatic model / Common
integer, parameter, public phytend_momz_id
integer, parameter, public prgvar_momy_id
integer, parameter, public prgvar_ddens_id
integer, parameter, public prgvar_momz_id
integer, parameter, public phytend_rhot_id
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 phytend_rhoh_id
integer, parameter, public auxvar_denshydro_id
integer, parameter, public phytend_dens_id
integer, parameter, public auxvar_rtot_id
integer, parameter, public auxvar_pres_id
module FElib / File / History
subroutine, public file_history_meshfield_setup(mesh1d_, mesh2d_, mesh3d_, meshcubedsphere2d_, meshcubedsphere3d_, dim_name_postfix_, registered_comp_id)
Setup a module for file history.
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 / Mesh / Base
FElib / model framework / model component.
FElib / model framework / mesh manager.
subroutine, public time_manager_regist_component(tmanager_comp)
Derived type to manage atmospheric component.
Derived type to manage a component of atmospheric dynamics.
Derived type to manage a computational mesh (base class)
Derived type to manage a computational mesh of global atmospheric model.
Derived type to manage a computational mesh of regional atmospheric model.
Derived type to manage a component of planetary boundary layer (PBL) turbulence parameterization in a...
Derived type to manage a component of cumulus parameterization in atmospheric model.
Derived type to manage a component of cloud microphysics.
Derived type to manage a component of radiation in atmospheric model.
Derived type to manage a component of surface process.
Derived type to manage a component of sub-grid scale turbulent process.
Derived type to manage variables with atmospheric component.
Derived type to manage coupler component.
Derived type representing a local mesh for 2D domain.
Derived type to manage a local 3D computational domain.
Derived type representing a field with local mesh (base type)
Derived type to manage a computational mesh (base type for 2D domain)
Derived type to manage a computational mesh (base type for 3D domain)
Base type to manage a computational mesh.