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

module Atmosphere component More...

Data Types

type  atmoscomponent
 Derived type to manage atmospheric component. More...

Functions/Subroutines

subroutine atmos_setup (this)
 Setup an object to mange atmospheric component.

Detailed Description

module Atmosphere component

Description
Atmosphere component module
Author
Yuta Kawai, Team SCALE
NAMELIST
  • PARAM_ATMOS
    nametypedefault valuecomment
    ACTIVATE_FLAGlogical.true.Flag whether atmospheric component is activated
    TIME_DTreal(DP)UNDEF8Timestep value of atmospheric component
    TIME_DT_UNITcharacter(len=H_SHORT)'SEC'Timestep unit of atmospheric component
    TIME_DT_RESTARTreal(DP)UNDEF8Timestep value when outputting restart file for atmospheric component
    TIME_DT_RESTART_UNITcharacter(len=H_SHORT)'SEC'Timestep unit when outputting restart file for atmospheric component
    ATMOS_MESH_TYPEcharacter(len=H_SHORT)'REGIONAL' !< Name of mesh type for atmospheric component ('REGIONAL' or 'GLOBAL')
    ATMOS_DYN_DOlogical.true.Flag whether dynamics process is considered
    ATMOS_PHY_SF_DOlogical.false.Flag whether surface process is considered
    ATMOS_PHY_TB_DOlogical.false.Flag whether SGS turbulent process is considered
    ATMOS_PHY_MP_DOlogical.false.Flag whether cloud microphysics process is considered
    ATMOS_PHY_RD_DOlogical.false.Flag whether radiation process is considered
    ATMOS_PHY_CP_DOlogical.false.Flag whether cumulus parameterization process is considered
    ATMOS_PHY_BL_DOlogical.false.Flag whether PBL turbulence parameterization process is considered
    ATMOS_USE_QVlogical.false.Flag whether QV is used although cloud microphysics is not considered

History Output
No history output

Function/Subroutine Documentation

◆ atmos_setup()

subroutine mod_atmos_component::atmos_setup ( class(atmoscomponent), intent(inout), target this)

Setup an object to mange atmospheric component.

Definition at line 104 of file mod_atmos_component.F90.

105 use scale_const, only: &
106 undef8 => const_undef8
107
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
115
118 use scale_time_manager, only: &
120
121 implicit none
122
123 class(AtmosComponent), intent(inout), target :: this
124
125 logical :: ACTIVATE_FLAG = .true. !< Flag whether atmospheric component is activated
126
127 real(DP) :: TIME_DT = undef8 !< Timestep value of atmospheric component
128 character(len=H_SHORT) :: TIME_DT_UNIT = 'SEC' !< Timestep unit of atmospheric component
129 real(DP) :: TIME_DT_RESTART = undef8 !< Timestep value when outputting restart file for atmospheric component
130 character(len=H_SHORT) :: TIME_DT_RESTART_UNIT = 'SEC' !< Timestep unit when outputting restart file for atmospheric component
131
132 logical :: ATMOS_DYN_DO = .true. !< Flag whether dynamics process is considered
133 logical :: ATMOS_PHY_SF_DO = .false. !< Flag whether surface process is considered
134 logical :: ATMOS_PHY_TB_DO = .false. !< Flag whether SGS turbulent process is considered
135 logical :: ATMOS_PHY_MP_DO = .false. !< Flag whether cloud microphysics process is considered
136 logical :: ATMOS_PHY_RD_DO = .false. !< Flag whether radiation process is considered
137 logical :: ATMOS_PHY_CP_DO = .false. !< Flag whether cumulus parameterization process is considered
138 logical :: ATMOS_PHY_BL_DO = .false. !< Flag whether PBL turbulence parameterization process is considered
139 character(len=H_SHORT) :: ATMOS_MESH_TYPE = 'REGIONAL' !< Name of mesh type for atmospheric component ('REGIONAL' or 'GLOBAL')
140
141 logical :: ATMOS_USE_QV = .false. !< Flag whether QV is used although cloud microphysics is not considered
142
143
144 namelist / param_atmos / &
145 activate_flag, &
146 time_dt, &
147 time_dt_unit, &
148 time_dt_restart, &
149 time_dt_restart_unit, &
150 atmos_mesh_type, &
151 atmos_dyn_do, &
152 atmos_phy_sf_do, &
153 atmos_phy_tb_do, &
154 atmos_phy_mp_do, &
155 atmos_phy_rd_do, &
156 atmos_phy_cp_do, &
157 atmos_phy_bl_do, &
158 atmos_use_qv
159
160 integer :: ierr
161 !--------------------------------------------------
162 call prof_rapstart( 'ATM_setup', 1)
163 log_info('AtmosComponent_setup',*) 'Atmosphere model components '
164
165 !--- read namelist
166 rewind(io_fid_conf)
167 read(io_fid_conf,nml=param_atmos,iostat=ierr)
168 if( ierr < 0 ) then !--- missing
169 log_info("ATMOS_setup",*) 'Not found namelist. Default used.'
170 elseif( ierr > 0 ) then !--- fatal error
171 log_error("ATM_setup",*) 'Not appropriate names in namelist PARAM_ATMOS. Check!'
172 call prc_abort
173 endif
174 log_nml(param_atmos)
175
176 !************************************************
177 call this%ModelComponent_Init('ATMOS', activate_flag )
178 if ( .not. activate_flag ) return
179
180 !- Setup time manager
181
182 call this%time_manager%Init( this%GetComponentName(), &
183 time_dt, time_dt_unit, &
184 time_dt_restart, time_dt_restart_unit )
185
186 call time_manager_regist_component( this%time_manager )
187
188 !- Setup mesh & file I/O for atmospheric component
189
190 this%mesh_type = atmos_mesh_type
191 select case( this%mesh_type )
192 case('REGIONAL')
193 call this%mesh_rm%Init()
194 call file_history_meshfield_setup( mesh3d_=this%mesh_rm%mesh )
195 this%mesh => this%mesh_rm
196 case('GLOBAL')
197 call this%mesh_gm%Init()
198 call file_history_meshfield_setup( meshcubedsphere3d_=this%mesh_gm%mesh )
199 this%mesh => this%mesh_gm
200 case default
201 log_error("ATM_setup",*) 'Unsupported type of mesh is specified. Check!', this%mesh_type
202 call prc_abort
203 end select
204
205 !- setup common tools for atmospheric model
206
207 call atmos_thermodyn_setup
208 call atmos_saturation_setup
209
210 !- Setup each processes in atmospheric model ------------------------------------
211
212 !- Setup the module for atmosphere / physics / surface
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 )
215
216 !- Setup the module for atmosphere / physics / cloud microphysics
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 )
219
220 !-- Regist qv if needed
221 if ( atmos_hydrometeor_dry .and. atmos_use_qv ) then
222 log_info("ATMOS_setup",*) "Regist QV"
223 call atmos_hydrometeor_regist( 0, 0, & ! (in)
224 (/'QV'/), & ! (in)
225 (/'Ratio of Water Vapor mass to total mass (Specific humidity)'/), & ! (in)
226 (/'kg/kg'/), & ! (in)
227 this%phy_mp_proc%vars%QS ) ! (out)
228
229 this%phy_mp_proc%vars%QA = 1
230 this%phy_mp_proc%vars%QE = this%phy_mp_proc%vars%QS
231 end if
232
233 !- Setup the module for atmosphere / dynamics
234 call this%dyn_proc%ModelComponentProc_Init( 'AtmosDyn', atmos_dyn_do )
235 call this%dyn_proc%setup( this%mesh, this%time_manager )
236
237 !- Setup the module for atmosphere / physics / turbulence
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 )
241
242 !- Setup the module for atmosphere / physics / radiation
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 )
245
246 !- Setup the module for atmosphere / physics / cumulus parameterization
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 )
249
250 !- Setup the module for atmosphere / physics / PBL turbulence parameterization
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 )
254
255 !- Setup
256
257 log_newline
258 log_info('AtmosComponent_setup',*) 'Finish setup of each atmospheric component.'
259
260 call prof_rapend( 'ATM_setup', 1)
261
262 return
subroutine, public file_history_meshfield_setup(mesh1d_, mesh2d_, mesh3d_, meshcubedsphere2d_, meshcubedsphere3d_, dim_name_postfix_, registered_comp_id)
Setup a module for file history.
Module common / time.
subroutine, public time_manager_regist_component(tmanager_comp)

References mod_atmos_vars_container::atmos_auxvars2d_prec_engi_id, mod_atmos_phy_rd_vars::atmos_phy_rd_aux2d_sflx_lw_dn_id, mod_atmos_phy_rd_vars::atmos_phy_rd_aux2d_sflx_sw_dn_id, mod_atmos_phy_sfc_vars::atmos_phy_sf_sflx_lh_id, mod_atmos_phy_sfc_vars::atmos_phy_sf_sflx_mu_id, mod_atmos_phy_sfc_vars::atmos_phy_sf_sflx_mv_id, mod_atmos_phy_sfc_vars::atmos_phy_sf_sflx_mw_id, mod_atmos_phy_sfc_vars::atmos_phy_sf_sflx_qv_id, mod_atmos_phy_sfc_vars::atmos_phy_sf_sflx_sh_id, mod_atmos_phy_sfc_vars::atmos_phy_sf_svar_alb_id, mod_atmos_phy_sfc_vars::atmos_phy_sf_svar_temp_id, mod_atmos_phy_cp_vars::atmosphycpvars_getlocalmeshfields_sfcflx(), mod_atmos_phy_mp_vars::atmosphympvars_getlocalmeshfields_sfcflx(), mod_atmos_vars_container::atmosvars_getlocalmeshsfcvar(), scale_atm_dyn_dgm_nonhydro3d_common::auxvar_denshydro_id, scale_atm_dyn_dgm_nonhydro3d_common::auxvar_pres_id, scale_atm_dyn_dgm_nonhydro3d_common::auxvar_rtot_id, scale_file_history_meshfield::file_history_meshfield_setup(), scale_atm_dyn_dgm_nonhydro3d_common::phytend_dens_id, scale_atm_dyn_dgm_nonhydro3d_common::phytend_momx_id, scale_atm_dyn_dgm_nonhydro3d_common::phytend_momy_id, scale_atm_dyn_dgm_nonhydro3d_common::phytend_momz_id, scale_atm_dyn_dgm_nonhydro3d_common::phytend_num, scale_atm_dyn_dgm_nonhydro3d_common::phytend_rhoh_id, scale_atm_dyn_dgm_nonhydro3d_common::phytend_rhot_id, scale_atm_dyn_dgm_nonhydro3d_common::prgvar_ddens_id, scale_atm_dyn_dgm_nonhydro3d_common::prgvar_momx_id, scale_atm_dyn_dgm_nonhydro3d_common::prgvar_momy_id, scale_atm_dyn_dgm_nonhydro3d_common::prgvar_momz_id, and scale_time_manager::time_manager_regist_component().