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_cp_type = 'NONE'
 
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_cp
 

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_CP_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 67 of file mod_atmos_admin.f90.

References atmos_do, atmos_dyn_type, atmos_phy_ae_type, atmos_phy_ch_type, atmos_phy_cp_type, atmos_phy_mp_type, atmos_phy_rd_type, atmos_phy_sf_type, atmos_phy_tb_type, atmos_sw_dyn, atmos_sw_phy_ae, atmos_sw_phy_ch, atmos_sw_phy_cp, atmos_sw_phy_mp, atmos_sw_phy_rd, atmos_sw_phy_sf, atmos_sw_phy_tb, atmos_use_average, scale_stdio::io_fid_conf, scale_stdio::io_fid_log, scale_stdio::io_fid_nml, scale_stdio::io_l, scale_stdio::io_nml, and scale_process::prc_mpistop().

Referenced by mod_rm_driver::scalerm(), and mod_rm_prep::scalerm_prep().

67  use scale_process, only: &
69  implicit none
70 
71  namelist / param_atmos / &
72  atmos_do, &
73  atmos_dyn_type, &
74  atmos_phy_mp_type, &
75  atmos_phy_ae_type, &
76  atmos_phy_ch_type, &
77  atmos_phy_rd_type, &
78  atmos_phy_sf_type, &
79  atmos_phy_tb_type, &
80  atmos_phy_cp_type, &
81  atmos_use_average
82 
83  integer :: ierr
84  !---------------------------------------------------------------------------
85 
86  if( io_l ) write(io_fid_log,*)
87  if( io_l ) write(io_fid_log,*) '++++++ Module[ADMIN] / Categ[ATMOS] / Origin[SCALE-RM]'
88 
89  !--- read namelist
90  rewind(io_fid_conf)
91  read(io_fid_conf,nml=param_atmos,iostat=ierr)
92  if( ierr < 0 ) then !--- missing
93  if( io_l ) write(io_fid_log,*) '*** Not found namelist. Default used.'
94  elseif( ierr > 0 ) then !--- fatal error
95  write(*,*) 'xxx Not appropriate names in namelist PARAM_ATMOS. Check!'
96  call prc_mpistop
97  endif
98  if( io_nml ) write(io_fid_nml,nml=param_atmos)
99 
100  !-----< module component check >-----
101 
102  if( io_l ) write(io_fid_log,*)
103  if( io_l ) write(io_fid_log,*) '*** Atmosphere model components ***'
104 
105  if ( atmos_do ) then
106  if( io_l ) write(io_fid_log,*) '*** Atmosphere model : ON'
107  else
108  if( io_l ) write(io_fid_log,*) '*** Atmosphere model : OFF'
109  endif
110 
111  if( io_l ) write(io_fid_log,*) '*** Dynamics...'
112 
113  if ( atmos_dyn_type == 'OFF' ) then
114  if( io_l ) write(io_fid_log,*) '*** + Dynamical core : OFF'
115  if( io_l ) write(io_fid_log,*) '*** + Advection : OFF'
116  atmos_sw_dyn = .false.
117  elseif( atmos_dyn_type == 'NONE' ) then
118  ! The advection is disbled
119  ! The tendencies calculated by physical processed are added
120  if( io_l ) write(io_fid_log,*) '*** + Dynamical core : ON, ', trim(atmos_dyn_type)
121  if( io_l ) write(io_fid_log,*) '*** + Advection : OFF'
122  atmos_sw_dyn = .true.
123  else ! default
124  if( io_l ) write(io_fid_log,*) '*** + Dynamical core : ON, ', trim(atmos_dyn_type)
125  if( io_l ) write(io_fid_log,*) '*** + Advection : ON'
126  atmos_sw_dyn = .true.
127  endif
128 
129  if( io_l ) write(io_fid_log,*) '*** Physics...'
130 
131  if ( atmos_phy_mp_type /= 'OFF' .AND. atmos_phy_mp_type /= 'NONE' ) then
132  if( io_l ) write(io_fid_log,*) '*** + Cloud Microphysics : ON, ', trim(atmos_phy_mp_type)
133  atmos_sw_phy_mp = .true.
134  else
135  if( io_l ) write(io_fid_log,*) '*** + Cloud Microphysics : OFF'
136  atmos_sw_phy_mp = .false.
137  endif
138 
139  if ( atmos_phy_ae_type /= 'OFF' .AND. atmos_phy_ae_type /= 'NONE' ) then
140  if( io_l ) write(io_fid_log,*) '*** + Aerosol Microphysics : ON, ', trim(atmos_phy_ae_type)
141  atmos_sw_phy_ae = .true.
142  else
143  if( io_l ) write(io_fid_log,*) '*** + Aerosol Microphysics : OFF'
144  atmos_sw_phy_ae = .false.
145  endif
146 
147  if ( atmos_phy_ch_type /= 'OFF' .AND. atmos_phy_ch_type /= 'NONE' ) then
148  if( io_l ) write(io_fid_log,*) '*** + Chemistry : ON, ', trim(atmos_phy_ch_type)
149  atmos_sw_phy_ch = .true.
150  else
151  if( io_l ) write(io_fid_log,*) '*** + Chemistry : OFF'
152  atmos_sw_phy_ch = .false.
153  endif
154 
155  if ( atmos_phy_rd_type /= 'OFF' .AND. atmos_phy_rd_type /= 'NONE' ) then
156  if( io_l ) write(io_fid_log,*) '*** + Radiative transfer : ON, ', trim(atmos_phy_rd_type)
157  atmos_sw_phy_rd = .true.
158  else
159  if( io_l ) write(io_fid_log,*) '*** + Radiative transfer : OFF'
160  atmos_sw_phy_rd = .false.
161  endif
162 
163  if ( atmos_phy_sf_type /= 'OFF' .AND. atmos_phy_sf_type /= 'NONE' ) then
164  if( io_l ) write(io_fid_log,*) '*** + Surface Flux : ON, ', trim(atmos_phy_sf_type)
165  atmos_sw_phy_sf = .true.
166  else
167  if( io_l ) write(io_fid_log,*) '*** + Surface Flux : OFF'
168  atmos_sw_phy_sf = .false.
169  endif
170 
171  if ( atmos_phy_tb_type /= 'OFF' .AND. atmos_phy_tb_type /= 'NONE' ) then
172  if( io_l ) write(io_fid_log,*) '*** + Sub-grid Turbulence : ON, ', trim(atmos_phy_tb_type)
173  atmos_sw_phy_tb = .true.
174  else
175  if( io_l ) write(io_fid_log,*) '*** + Sub-grid Turbulence : OFF'
176  atmos_sw_phy_tb = .false.
177  endif
178 
179  if ( atmos_phy_cp_type /= 'OFF' .AND. atmos_phy_cp_type /= 'NONE' ) then
180  if( io_l ) write(io_fid_log,*) '*** + Convection Param. : ON, ', trim(atmos_phy_cp_type)
181  atmos_sw_phy_cp = .true.
182  else
183  if( io_l ) write(io_fid_log,*) '*** + Convection Param. : OFF'
184  atmos_sw_phy_cp = .false.
185  endif
186 
187  if ( atmos_use_average ) then
188  if( io_l ) write(io_fid_log,*) '*** + Use time-averaging value for physics? : YES'
189  else
190  if( io_l ) write(io_fid_log,*) '*** + Use time-averaging value for physics? : NO'
191  endif
192 
193  return
subroutine, public prc_mpistop
Abort MPI.
logical, public atmos_do
module PROCESS
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 201 of file mod_atmos_admin.f90.

References atmos_dyn_type, atmos_phy_ae_type, atmos_phy_ch_type, atmos_phy_cp_type, atmos_phy_mp_type, atmos_phy_rd_type, atmos_phy_sf_type, atmos_phy_tb_type, and scale_process::prc_mpistop().

201  use scale_process, only: &
203  implicit none
204 
205  character(len=*), intent(in) :: component_name
206  character(len=H_SHORT), intent(out) :: scheme_name
207  !---------------------------------------------------------------------------
208 
209  select case(component_name)
210  case("DYN")
211  scheme_name = atmos_dyn_type
212  case("PHY_MP")
213  scheme_name = atmos_phy_mp_type
214  case("PHY_AE")
215  scheme_name = atmos_phy_ae_type
216  case("PHY_CH")
217  scheme_name = atmos_phy_ch_type
218  case("PHY_RD")
219  scheme_name = atmos_phy_rd_type
220  case("PHY_SF")
221  scheme_name = atmos_phy_sf_type
222  case("PHY_TB")
223  scheme_name = atmos_phy_tb_type
224  case("PHY_CP")
225  scheme_name = atmos_phy_cp_type
226  case default
227  write(*,*) 'xxx Unsupported component_name. Check!', trim(component_name)
228  call prc_mpistop
229  end select
230 
231  return
subroutine, public prc_mpistop
Abort MPI.
module PROCESS
Here is the call graph for this function:

Variable Documentation

◆ atmos_do

logical, public mod_atmos_admin::atmos_do = .true.

Definition at line 32 of file mod_atmos_admin.f90.

Referenced by mod_admin_restart::admin_restart_read(), atmos_admin_setup(), mod_rm_driver::resume_state(), and mod_rm_driver::scalerm().

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

◆ atmos_dyn_type

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

Definition at line 34 of file mod_atmos_admin.f90.

Referenced by atmos_admin_getscheme(), atmos_admin_setup(), mod_atmos_dyn_driver::atmos_dyn_driver_setup(), and mod_atmos_dyn_vars::atmos_dyn_vars_setup().

34  character(len=H_SHORT), public :: 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'

Definition at line 37 of file mod_atmos_admin.f90.

Referenced by atmos_admin_getscheme(), atmos_admin_setup(), and mod_atmos_phy_ch_driver::atmos_phy_ch_driver_setup().

37  character(len=H_SHORT), public :: 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 38 of file mod_atmos_admin.f90.

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

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

◆ atmos_phy_sf_type

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

Definition at line 39 of file mod_atmos_admin.f90.

Referenced by atmos_admin_getscheme(), atmos_admin_setup(), mod_atmos_phy_sf_driver::atmos_phy_sf_driver_setup(), and mod_cpl_admin::cpl_admin_setup().

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

◆ atmos_phy_tb_type

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

Definition at line 40 of file mod_atmos_admin.f90.

Referenced by atmos_admin_getscheme(), atmos_admin_setup(), and mod_atmos_phy_tb_driver::atmos_phy_tb_driver_config().

40  character(len=H_SHORT), public :: ATMOS_PHY_TB_TYPE = 'NONE'

◆ atmos_phy_cp_type

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

Definition at line 41 of file mod_atmos_admin.f90.

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

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

◆ 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_cp

logical, public mod_atmos_admin::atmos_sw_phy_cp