SCALE-RM
Functions/Subroutines | Variables
mod_atmos_admin Module Reference

module ATMOS admin More...

Functions/Subroutines

subroutine, public atmos_admin_setup
 Setup. More...
 
subroutine, public atmos_admin_getscheme (component_name, scheme_name)
 Get name of scheme for each component. More...
 

Variables

logical, public atmos_do = .true.
 
character(len=h_short), public atmos_dyn_type = 'NONE'
 
character(len=h_short), public atmos_phy_mp_type = 'NONE'
 
character(len=h_short), public atmos_phy_ae_type = 'NONE'
 
character(len=h_short), public atmos_phy_ch_type = 'NONE'
 
character(len=h_short), public atmos_phy_rd_type = 'NONE'
 
character(len=h_short), public atmos_phy_sf_type = 'NONE'
 
character(len=h_short), public atmos_phy_tb_type = 'NONE'
 
character(len=h_short), public atmos_phy_bl_type = 'NONE'
 
character(len=h_short), public atmos_phy_cp_type = 'NONE'
 
character(len=h_short), public atmos_phy_lt_type = 'NONE'
 
character(len=h_short), public atmos_phy_precip_type = 'Upwind-Euler'
 
logical, public atmos_use_qv = .false.
 
logical, public atmos_use_average = .false.
 
logical, public atmos_sw_dyn
 
logical, public atmos_sw_phy_mp
 
logical, public atmos_sw_phy_ae
 
logical, public atmos_sw_phy_ch
 
logical, public atmos_sw_phy_rd
 
logical, public atmos_sw_phy_sf
 
logical, public atmos_sw_phy_tb
 
logical, public atmos_sw_phy_bl
 
logical, public atmos_sw_phy_cp
 
logical, public atmos_sw_phy_lt
 

Detailed Description

module ATMOS admin

Description
Atmosphere submodel administrator
Author
Team SCALE
NAMELIST
  • PARAM_ATMOS
    nametypedefault valuecomment
    ATMOS_DO logical .true. main switch for the model
    ATMOS_DYN_TYPE character(len=H_SHORT) 'NONE'
    ATMOS_PHY_MP_TYPE character(len=H_SHORT) 'NONE'
    ATMOS_PHY_AE_TYPE character(len=H_SHORT) 'NONE'
    ATMOS_PHY_CH_TYPE character(len=H_SHORT) 'NONE'
    ATMOS_PHY_RD_TYPE character(len=H_SHORT) 'NONE'
    ATMOS_PHY_SF_TYPE character(len=H_SHORT) 'NONE'
    ATMOS_PHY_TB_TYPE character(len=H_SHORT) 'NONE'
    ATMOS_PHY_BL_TYPE character(len=H_SHORT) 'NONE'
    ATMOS_PHY_CP_TYPE character(len=H_SHORT) 'NONE'
    ATMOS_PHY_PRECIP_TYPE character(len=H_SHORT) 'Upwind-Euler'
    ATMOS_USE_QV logical .false.
    ATMOS_PHY_LT_TYPE character(len=H_SHORT) 'NONE'
    ATMOS_USE_AVERAGE logical .false.

History Output
No history output

Function/Subroutine Documentation

◆ atmos_admin_setup()

subroutine, public mod_atmos_admin::atmos_admin_setup

Setup.

Definition at line 75 of file mod_atmos_admin.F90.

75  use scale_prc, only: &
76  prc_abort
77  implicit none
78 
79  namelist / param_atmos / &
80  atmos_do, &
81  atmos_dyn_type, &
82  atmos_phy_mp_type, &
83  atmos_phy_ae_type, &
84  atmos_phy_ch_type, &
85  atmos_phy_rd_type, &
86  atmos_phy_sf_type, &
87  atmos_phy_tb_type, &
88  atmos_phy_bl_type, &
89  atmos_phy_cp_type, &
90  atmos_phy_precip_type, &
91  atmos_use_qv, &
92  atmos_phy_lt_type, &
93  atmos_use_average
94 
95  integer :: ierr
96  !---------------------------------------------------------------------------
97 
98  log_newline
99  log_info("ATMOS_ADMIN_setup",*) 'Setup'
100 
101  !--- read namelist
102  rewind(io_fid_conf)
103  read(io_fid_conf,nml=param_atmos,iostat=ierr)
104  if( ierr < 0 ) then !--- missing
105  log_info("ATMOS_ADMIN_setup",*) 'Not found namelist. Default used.'
106  elseif( ierr > 0 ) then !--- fatal error
107  log_error("ATMOS_ADMIN_setup",*) 'Not appropriate names in namelist PARAM_ATMOS. Check!'
108  call prc_abort
109  endif
110  log_nml(param_atmos)
111 
112  !-----< module component check >-----
113 
114  log_newline
115  log_info("ATMOS_ADMIN_setup",*) 'Atmosphere model components '
116 
117  if ( atmos_do ) then
118  log_info_cont(*) 'Atmosphere model : ON'
119  else
120  log_info_cont(*) 'Atmosphere model : OFF'
121  endif
122 
123  log_info_cont(*) 'Dynamics...'
124 
125  if ( atmos_dyn_type == 'OFF' ) then
126  log_info_cont(*) '+ Dynamical core : OFF'
127  log_info_cont(*) '+ Advection : OFF'
128  atmos_sw_dyn = .false.
129  elseif( atmos_dyn_type == 'NONE' ) then
130  ! The advection is disbled
131  ! The tendencies calculated by physical processed are added
132  log_info_cont(*) '+ Dynamical core : ON, ', trim(atmos_dyn_type)
133  log_info_cont(*) '+ Advection : OFF'
134  atmos_sw_dyn = .true.
135  else ! default
136  log_info_cont(*) '+ Dynamical core : ON, ', trim(atmos_dyn_type)
137  log_info_cont(*) '+ Advection : ON'
138  atmos_sw_dyn = .true.
139  endif
140 
141  log_info_cont(*) 'Physics...'
142 
143  if ( atmos_phy_mp_type /= 'OFF' .AND. atmos_phy_mp_type /= 'NONE' ) then
144  log_info_cont(*) '+ Cloud Microphysics : ON, ', trim(atmos_phy_mp_type)
145  atmos_sw_phy_mp = .true.
146  else
147  log_info_cont(*) '+ Cloud Microphysics : OFF'
148  atmos_sw_phy_mp = .false.
149  endif
150 
151  if ( atmos_phy_ae_type /= 'OFF' .AND. atmos_phy_ae_type /= 'NONE' ) then
152  log_info_cont(*) '+ Aerosol Microphysics : ON, ', trim(atmos_phy_ae_type)
153  atmos_sw_phy_ae = .true.
154  else
155  log_info_cont(*) '+ Aerosol Microphysics : OFF'
156  atmos_sw_phy_ae = .false.
157  endif
158 
159  if ( atmos_phy_ch_type /= 'OFF' .AND. atmos_phy_ch_type /= 'NONE' ) then
160  log_info_cont(*) '+ Chemistry : ON, ', trim(atmos_phy_ch_type)
161  atmos_sw_phy_ch = .true.
162  else
163  log_info_cont(*) '+ Chemistry : OFF'
164  atmos_sw_phy_ch = .false.
165  endif
166 
167  if ( atmos_phy_rd_type /= 'OFF' .AND. atmos_phy_rd_type /= 'NONE' ) then
168  log_info_cont(*) '+ Radiative transfer : ON, ', trim(atmos_phy_rd_type)
169  atmos_sw_phy_rd = .true.
170  else
171  log_info_cont(*) '+ Radiative transfer : OFF'
172  atmos_sw_phy_rd = .false.
173  endif
174 
175  if ( atmos_phy_sf_type /= 'OFF' .AND. atmos_phy_sf_type /= 'NONE' ) then
176  log_info_cont(*) '+ Surface Flux : ON, ', trim(atmos_phy_sf_type)
177  atmos_sw_phy_sf = .true.
178  else
179  log_info_cont(*) '+ Surface Flux : OFF'
180  atmos_sw_phy_sf = .false.
181  endif
182 
183  if ( atmos_phy_tb_type /= 'OFF' .AND. atmos_phy_tb_type /= 'NONE' ) then
184  log_info_cont(*) '+ Sub-grid Turbulence : ON, ', trim(atmos_phy_tb_type)
185  atmos_sw_phy_tb = .true.
186  else
187  log_info_cont(*) '+ Sub-grid Turbulence : OFF'
188  atmos_sw_phy_tb = .false.
189  endif
190 
191  if ( atmos_phy_bl_type /= 'OFF' .AND. atmos_phy_bl_type /= 'NONE' ) then
192  log_info_cont(*) '+ PBL Turbulence : ON, ', trim(atmos_phy_bl_type)
193  atmos_sw_phy_bl = .true.
194  else
195  log_info_cont(*) '+ PBL Turbulence : OFF'
196  atmos_sw_phy_bl = .false.
197  endif
198 
199  if ( atmos_phy_cp_type /= 'OFF' .AND. atmos_phy_cp_type /= 'NONE' ) then
200  log_info_cont(*) '+ Convection Param. : ON, ', trim(atmos_phy_cp_type)
201  atmos_sw_phy_cp = .true.
202  else
203  log_info_cont(*) '+ Convection Param. : OFF'
204  atmos_sw_phy_cp = .false.
205  endif
206 
207  if ( atmos_phy_lt_type /= 'OFF' .AND. atmos_phy_lt_type /= 'NONE' ) then
208  log_info_cont(*) '+ Lightning : ON, ', trim(atmos_phy_lt_type)
209  atmos_sw_phy_lt = .true.
210  else
211  log_info_cont(*) '+ Lightning : OFF'
212  atmos_sw_phy_lt = .false.
213  endif
214 
215  if ( atmos_use_average ) then
216  log_info_cont(*) '+ Use time-averaging value for physics? : YES'
217  else
218  log_info_cont(*) '+ Use time-averaging value for physics? : NO'
219  endif
220 
221  return

References atmos_do, atmos_dyn_type, atmos_phy_ae_type, atmos_phy_bl_type, atmos_phy_ch_type, atmos_phy_cp_type, atmos_phy_lt_type, atmos_phy_mp_type, atmos_phy_precip_type, atmos_phy_rd_type, atmos_phy_sf_type, atmos_phy_tb_type, atmos_sw_dyn, atmos_sw_phy_ae, atmos_sw_phy_bl, atmos_sw_phy_ch, atmos_sw_phy_cp, atmos_sw_phy_lt, atmos_sw_phy_mp, atmos_sw_phy_rd, atmos_sw_phy_sf, atmos_sw_phy_tb, atmos_use_average, atmos_use_qv, scale_io::io_fid_conf, and scale_prc::prc_abort().

Referenced by mod_rm_driver::rm_driver(), and mod_rm_prep::rm_prep().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ atmos_admin_getscheme()

subroutine, public mod_atmos_admin::atmos_admin_getscheme ( character(len=*), intent(in)  component_name,
character(len=h_short), intent(out)  scheme_name 
)

Get name of scheme for each component.

Definition at line 229 of file mod_atmos_admin.F90.

229  use scale_prc, only: &
230  prc_abort
231  implicit none
232 
233  character(len=*), intent(in) :: component_name
234  character(len=H_SHORT), intent(out) :: scheme_name
235  !---------------------------------------------------------------------------
236 
237  select case(component_name)
238  case("DYN")
239  scheme_name = atmos_dyn_type
240  case("PHY_MP")
241  scheme_name = atmos_phy_mp_type
242  case("PHY_AE")
243  scheme_name = atmos_phy_ae_type
244  case("PHY_CH")
245  scheme_name = atmos_phy_ch_type
246  case("PHY_RD")
247  scheme_name = atmos_phy_rd_type
248  case("PHY_SF")
249  scheme_name = atmos_phy_sf_type
250  case("PHY_TB")
251  scheme_name = atmos_phy_tb_type
252  case("PHY_BL")
253  scheme_name = atmos_phy_bl_type
254  case("PHY_CP")
255  scheme_name = atmos_phy_cp_type
256  case("PHY_LT")
257  scheme_name = atmos_phy_lt_type
258  case default
259  log_error("ATMOS_ADMIN_getscheme",*) 'Unsupported component_name. Check!', trim(component_name)
260  call prc_abort
261  end select
262 
263  return

References atmos_dyn_type, atmos_phy_ae_type, atmos_phy_bl_type, atmos_phy_ch_type, atmos_phy_cp_type, atmos_phy_lt_type, atmos_phy_mp_type, atmos_phy_rd_type, atmos_phy_sf_type, atmos_phy_tb_type, and scale_prc::prc_abort().

Here is the call graph for this function:

Variable Documentation

◆ atmos_do

logical, public mod_atmos_admin::atmos_do = .true.

Definition at line 33 of file mod_atmos_admin.F90.

33  logical, public :: ATMOS_do = .true. ! main switch for the model

Referenced by mod_admin_restart::admin_restart_read(), atmos_admin_setup(), mod_rm_driver::restart_read(), mod_rm_driver::rm_driver(), and mod_rm_prep::rm_prep().

◆ atmos_dyn_type

character(len=h_short), public mod_atmos_admin::atmos_dyn_type = 'NONE'

◆ atmos_phy_mp_type

character(len=h_short), public mod_atmos_admin::atmos_phy_mp_type = 'NONE'

◆ atmos_phy_ae_type

character(len=h_short), public mod_atmos_admin::atmos_phy_ae_type = 'NONE'

◆ atmos_phy_ch_type

character(len=h_short), public mod_atmos_admin::atmos_phy_ch_type = 'NONE'

◆ atmos_phy_rd_type

character(len=h_short), public mod_atmos_admin::atmos_phy_rd_type = 'NONE'

Definition at line 39 of file mod_atmos_admin.F90.

39  character(len=H_SHORT), public :: ATMOS_PHY_RD_TYPE = 'NONE'

Referenced by atmos_admin_getscheme(), atmos_admin_setup(), mod_atmos_phy_rd_driver::atmos_phy_rd_driver_calc_tendency(), and mod_atmos_phy_rd_driver::atmos_phy_rd_driver_setup().

◆ atmos_phy_sf_type

character(len=h_short), public mod_atmos_admin::atmos_phy_sf_type = 'NONE'

◆ atmos_phy_tb_type

character(len=h_short), public mod_atmos_admin::atmos_phy_tb_type = 'NONE'

◆ atmos_phy_bl_type

character(len=h_short), public mod_atmos_admin::atmos_phy_bl_type = 'NONE'

◆ atmos_phy_cp_type

character(len=h_short), public mod_atmos_admin::atmos_phy_cp_type = 'NONE'

Definition at line 43 of file mod_atmos_admin.F90.

43  character(len=H_SHORT), public :: ATMOS_PHY_CP_TYPE = 'NONE'

Referenced by atmos_admin_getscheme(), atmos_admin_setup(), mod_atmos_phy_cp_driver::atmos_phy_cp_driver_calc_tendency(), and mod_atmos_phy_cp_driver::atmos_phy_cp_driver_setup().

◆ atmos_phy_lt_type

character(len=h_short), public mod_atmos_admin::atmos_phy_lt_type = 'NONE'

Definition at line 44 of file mod_atmos_admin.F90.

44  character(len=H_SHORT), public :: ATMOS_PHY_LT_TYPE = 'NONE'

Referenced by atmos_admin_getscheme(), atmos_admin_setup(), mod_atmos_phy_lt_driver::atmos_phy_lt_driver_setup(), and mod_atmos_phy_lt_driver::atmos_phy_lt_driver_tracer_setup().

◆ atmos_phy_precip_type

character(len=h_short), public mod_atmos_admin::atmos_phy_precip_type = 'Upwind-Euler'

Definition at line 46 of file mod_atmos_admin.F90.

46  character(len=H_SHORT), public :: ATMOS_PHY_PRECIP_TYPE = 'Upwind-Euler'

Referenced by atmos_admin_setup(), and mod_atmos_phy_mp_driver::atmos_phy_mp_driver_calc_tendency().

◆ atmos_use_qv

logical, public mod_atmos_admin::atmos_use_qv = .false.

Definition at line 48 of file mod_atmos_admin.F90.

48  logical, public :: ATMOS_USE_QV = .false.

Referenced by atmos_admin_setup(), and mod_atmos_driver::atmos_driver_tracer_setup().

◆ atmos_use_average

logical, public mod_atmos_admin::atmos_use_average = .false.

◆ atmos_sw_dyn

logical, public mod_atmos_admin::atmos_sw_dyn

◆ atmos_sw_phy_mp

logical, public mod_atmos_admin::atmos_sw_phy_mp

◆ atmos_sw_phy_ae

logical, public mod_atmos_admin::atmos_sw_phy_ae

◆ atmos_sw_phy_ch

logical, public mod_atmos_admin::atmos_sw_phy_ch

◆ atmos_sw_phy_rd

logical, public mod_atmos_admin::atmos_sw_phy_rd

◆ atmos_sw_phy_sf

logical, public mod_atmos_admin::atmos_sw_phy_sf

◆ atmos_sw_phy_tb

logical, public mod_atmos_admin::atmos_sw_phy_tb

◆ atmos_sw_phy_bl

logical, public mod_atmos_admin::atmos_sw_phy_bl

◆ atmos_sw_phy_cp

logical, public mod_atmos_admin::atmos_sw_phy_cp

◆ atmos_sw_phy_lt

logical, public mod_atmos_admin::atmos_sw_phy_lt
scale_prc::prc_abort
subroutine, public prc_abort
Abort Process.
Definition: scale_prc.F90:342
mod_atmos_admin::atmos_do
logical, public atmos_do
Definition: mod_atmos_admin.F90:33
scale_prc
module PROCESS
Definition: scale_prc.F90:11