SCALE-RM
Functions/Subroutines
mod_atmos_driver Module Reference

module ATMOSPHERE driver More...

Functions/Subroutines

subroutine, public atmos_driver_tracer_setup
 Tracer setup. More...
 
subroutine, public atmos_driver_setup
 Setup. More...
 
subroutine, public atmos_driver_calc_tendency (force)
 Calculation tendency. More...
 
subroutine, public atmos_driver_calc_tendency_from_sflux (force)
 Calculation tendency from surface flux with coupler. More...
 
subroutine, public atmos_driver_update
 advance atmospheric state More...
 
subroutine, public atmos_driver_finalize
 Finalize. More...
 
subroutine, public atmos_surface_get
 Get surface boundary condition. More...
 
subroutine, public atmos_surface_set (countup)
 Set surface boundary condition. More...
 
subroutine atmos_driver_boundary_update
 

Detailed Description

module ATMOSPHERE driver

Description
Atmosphere module
Author
Team SCALE

Function/Subroutine Documentation

◆ atmos_driver_tracer_setup()

subroutine, public mod_atmos_driver::atmos_driver_tracer_setup ( )

Tracer setup.

Definition at line 54 of file mod_atmos_driver.F90.

References mod_atmos_phy_ae_driver::atmos_phy_ae_driver_tracer_setup(), mod_atmos_phy_bl_driver::atmos_phy_bl_driver_tracer_setup(), mod_atmos_phy_ch_driver::atmos_phy_ch_driver_tracer_setup(), mod_atmos_phy_mp_driver::atmos_phy_mp_driver_tracer_setup(), and mod_atmos_phy_tb_driver::atmos_phy_tb_driver_tracer_setup().

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

54  use mod_atmos_phy_mp_driver, only: &
56  use mod_atmos_phy_ae_driver, only: &
58  use mod_atmos_phy_ch_driver, only: &
60  use mod_atmos_phy_tb_driver, only: &
62  use mod_atmos_phy_bl_driver, only: &
64  implicit none
65  !---------------------------------------------------------------------------
66 
67  log_newline
68  log_info("ATMOS_driver_tracer_setup",*) 'Setup'
69 
75 
76  return
subroutine, public atmos_phy_bl_driver_tracer_setup
Config.
module ATMOSPHERE / Physics Turbulence
module atmosphere / physics / PBL
module ATMOSPHERE / Physics Chemistry
module ATMOSPHERE / Physics Aerosol Microphysics
subroutine, public atmos_phy_ch_driver_tracer_setup
Config.
subroutine, public atmos_phy_ae_driver_tracer_setup
Setup.
subroutine, public atmos_phy_mp_driver_tracer_setup
Config.
subroutine, public atmos_phy_tb_driver_tracer_setup
Tracer setup.
module atmosphere / physics / cloud microphysics
Here is the call graph for this function:
Here is the caller graph for this function:

◆ atmos_driver_setup()

subroutine, public mod_atmos_driver::atmos_driver_setup ( )

Setup.

Definition at line 82 of file mod_atmos_driver.F90.

References mod_atmos_bnd_driver::atmos_boundary_driver_setup(), mod_atmos_dyn_driver::atmos_dyn_driver_setup(), scale_atmos_grid_cartesc::atmos_grid_cartesc_cz, scale_atmos_grid_cartesc::atmos_grid_cartesc_fz, scale_atmos_grid_cartesc_real::atmos_grid_cartesc_real_basepoint_lat, scale_atmos_grid_cartesc_real::atmos_grid_cartesc_real_basepoint_lon, scale_atmos_grid_cartesc_real::atmos_grid_cartesc_real_cz, scale_atmos_grid_cartesc_real::atmos_grid_cartesc_real_fz, scale_atmos_grid_cartesc_real::atmos_grid_cartesc_real_phi, mod_atmos_phy_ae_driver::atmos_phy_ae_driver_setup(), mod_atmos_phy_bl_driver::atmos_phy_bl_driver_setup(), mod_atmos_phy_ch_driver::atmos_phy_ch_driver_setup(), mod_atmos_phy_cp_driver::atmos_phy_cp_driver_setup(), mod_atmos_phy_mp_driver::atmos_phy_mp_driver_setup(), mod_atmos_phy_rd_driver::atmos_phy_rd_driver_setup(), mod_atmos_phy_sf_driver::atmos_phy_sf_driver_setup(), mod_atmos_phy_tb_driver::atmos_phy_tb_driver_setup(), scale_atmos_refstate::atmos_refstate_setup(), scale_atmos_solarins::atmos_solarins_setup(), scale_atmos_grid_cartesc_index::ia, scale_atmos_grid_cartesc_index::ieb, scale_atmos_grid_cartesc_index::isb, scale_atmos_grid_cartesc_index::ja, scale_atmos_grid_cartesc_index::jeb, scale_atmos_grid_cartesc_index::jsb, scale_atmos_grid_cartesc_index::ka, scale_atmos_grid_cartesc_index::ke, scale_atmos_grid_cartesc_index::ks, scale_prof::prof_rapend(), scale_prof::prof_rapstart(), mod_atmos_phy_mp_vars::qa_mp, mod_atmos_phy_mp_vars::qe_mp, mod_atmos_phy_mp_vars::qs_mp, and scale_time::time_nowdate.

Referenced by mod_rm_driver::rm_driver().

82  use scale_time, only: &
84  use scale_atmos_solarins, only: &
86  use scale_atmos_refstate, only: &
88  use mod_atmos_bnd_driver, only: &
90  use mod_atmos_dyn_driver, only: &
92  use mod_atmos_phy_mp_driver, only: &
94  use mod_atmos_phy_mp_vars, only: &
95  qa_mp, &
96  qs_mp, &
97  qe_mp
98  use mod_atmos_phy_ch_driver, only: &
100  use mod_atmos_phy_ae_driver, only: &
102  use mod_atmos_phy_rd_driver, only: &
104  use mod_atmos_phy_sf_driver, only: &
106  use mod_atmos_phy_tb_driver, only: &
108  use mod_atmos_phy_bl_driver, only: &
110  use mod_atmos_phy_cp_driver, only: &
112  use scale_atmos_grid_cartesc, only: &
113  cz => atmos_grid_cartesc_cz, &
115  use scale_atmos_grid_cartesc_real, only: &
118  real_cz => atmos_grid_cartesc_real_cz, &
119  real_fz => atmos_grid_cartesc_real_fz, &
120  real_phi => atmos_grid_cartesc_real_phi
121  implicit none
122  !---------------------------------------------------------------------------
123 
124  log_newline
125  log_info("ATMOS_driver_setup",*) 'Setup'
126 
127  log_newline
128  log_info("ATMOS_driver_setup",*) 'Setup each atmospheric components ...'
129 
130  !--- setup solar insolation
131  call atmos_solarins_setup( base_lon, base_lat, time_nowdate(1) )
132 
133  call prof_rapstart('ATM_Refstate', 2)
134  call atmos_refstate_setup( ka, ks, ke, ia, isb, ieb, ja, jsb, jeb, &
135  cz(:), fz(:), real_cz(:,:,:), real_fz(:,:,:), real_phi(:,:,:) )
136 
137  call prof_rapend ('ATM_Refstate', 2)
138 
139  call prof_rapstart('ATM_Boundary', 2)
141  call prof_rapend ('ATM_Boundary', 2)
142 
143  ! setup each components
153 
154  log_newline
155  log_info("ATMOS_driver_setup",*) 'Finish setup of each atmospheric components.'
156 
157  return
real(rp), dimension(:,:,:), allocatable, public atmos_grid_cartesc_real_phi
geopotential [m2/s2] (cell center)
subroutine, public atmos_phy_ae_driver_setup
Setup.
module ATMOSPHERE / Physics Turbulence
real(rp), public atmos_grid_cartesc_real_basepoint_lon
position of base point in real world [rad,0-2pi]
module Atmosphere / Physics Cloud Microphysics
module ATMOSPHERE / Physics Cumulus
subroutine, public atmos_boundary_driver_setup
Setup.
module ATMOSPHERE / Physics Radiation
module atmosphere / reference state
module ATMOSPHERE / Physics Surface fluxes
subroutine, public atmos_solarins_setup(basepoint_lon, basepoint_lat, iyear)
setup solar incidence module
module atmosphere / physics / PBL
module ATMOSPHERE / Physics Chemistry
real(rp), dimension(:,:,:), allocatable, public atmos_grid_cartesc_real_fz
geopotential height [m] (wxy)
module Atmosphere / Dynamics
module ATMOSPHERE / Physics Aerosol Microphysics
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_fz
face coordinate [m]: z, local
subroutine, public atmos_phy_rd_driver_setup
Setup.
subroutine, public atmos_dyn_driver_setup
Setup.
subroutine, public atmos_phy_cp_driver_setup
Setup.
module ATMOSPHERE / Boundary treatment
real(rp), public atmos_grid_cartesc_real_basepoint_lat
position of base point in real world [rad,-pi,pi]
subroutine, public atmos_phy_sf_driver_setup
Setup.
module TIME
Definition: scale_time.F90:16
module atmosphere / grid / cartesC
subroutine, public atmos_refstate_setup(KA, KS, KE, IA, IS, IE, JA, JS, JE, CZ, FZ, REAL_CZ, REAL_FZ, REAL_PHI)
Setup.
subroutine, public atmos_phy_mp_driver_setup
Setup.
subroutine, public atmos_phy_tb_driver_setup
Setup.
real(rp), dimension(:,:,:), allocatable, public atmos_grid_cartesc_real_cz
geopotential height [m] (zxy)
module Atmosphere GRID CartesC Real(real space)
subroutine, public atmos_phy_ch_driver_setup
Setup.
module atmosphere / SOLARINS
integer, dimension(6), public time_nowdate
current time [YYYY MM DD HH MM SS]
Definition: scale_time.F90:69
subroutine, public atmos_phy_bl_driver_setup
Setup.
module atmosphere / physics / cloud microphysics
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_cz
center coordinate [m]: z, local
Here is the call graph for this function:
Here is the caller graph for this function:

◆ atmos_driver_calc_tendency()

subroutine, public mod_atmos_driver::atmos_driver_calc_tendency ( logical, intent(in)  force)

Calculation tendency.

Definition at line 163 of file mod_atmos_driver.F90.

References mod_atmos_phy_ae_driver::atmos_phy_ae_driver_calc_tendency(), mod_atmos_phy_bl_driver::atmos_phy_bl_driver_calc_tendency(), mod_atmos_phy_ch_driver::atmos_phy_ch_driver_calc_tendency(), mod_atmos_phy_cp_driver::atmos_phy_cp_driver_calc_tendency(), mod_atmos_phy_mp_driver::atmos_phy_mp_driver_calc_tendency(), mod_atmos_phy_rd_driver::atmos_phy_rd_driver_calc_tendency(), mod_atmos_phy_sf_driver::atmos_phy_sf_driver_calc_tendency(), mod_atmos_phy_tb_driver::atmos_phy_tb_driver_calc_tendency(), atmos_surface_get(), atmos_surface_set(), mod_atmos_admin::atmos_sw_phy_ae, mod_atmos_admin::atmos_sw_phy_bl, mod_atmos_admin::atmos_sw_phy_ch, mod_atmos_admin::atmos_sw_phy_cp, mod_atmos_admin::atmos_sw_phy_mp, mod_atmos_admin::atmos_sw_phy_rd, mod_atmos_admin::atmos_sw_phy_sf, mod_atmos_admin::atmos_sw_phy_tb, mod_cpl_admin::cpl_sw, mod_atmos_vars::dens_tp, mod_atmos_vars::momx_tp, mod_atmos_vars::momy_tp, mod_atmos_vars::momz_tp, scale_prof::prof_rapend(), scale_prof::prof_rapstart(), mod_atmos_vars::rhoh_p, mod_atmos_vars::rhoq_tp, mod_atmos_vars::rhot_tp, mod_atmos_vars::rhou_tp, mod_atmos_vars::rhov_tp, mod_admin_time::time_doatmos_phy_ae, mod_admin_time::time_doatmos_phy_bl, mod_admin_time::time_doatmos_phy_ch, mod_admin_time::time_doatmos_phy_cp, mod_admin_time::time_doatmos_phy_mp, mod_admin_time::time_doatmos_phy_rd, mod_admin_time::time_doatmos_phy_sf, and mod_admin_time::time_doatmos_phy_tb.

Referenced by mod_rm_driver::restart_read(), and mod_rm_driver::rm_driver().

163  use mod_atmos_vars, only: &
164  dens_tp, &
165  momz_tp, &
166  rhou_tp, &
167  rhov_tp, &
168  rhot_tp, &
169  rhoh_p, &
170  rhoq_tp, &
171  momx_tp, &
172  momy_tp
173  use mod_atmos_phy_mp_driver, only: &
175  use mod_atmos_phy_ch_driver, only: &
177  use mod_atmos_phy_ae_driver, only: &
179  use mod_atmos_phy_rd_driver, only: &
181  use mod_atmos_phy_sf_driver, only: &
183  use mod_atmos_phy_tb_driver, only: &
185  use mod_atmos_phy_cp_driver, only: &
187  use mod_atmos_phy_bl_driver, only: &
189  use mod_admin_time, only: &
190  do_phy_mp => time_doatmos_phy_mp, &
191  do_phy_ae => time_doatmos_phy_ae, &
192  do_phy_ch => time_doatmos_phy_ch, &
193  do_phy_rd => time_doatmos_phy_rd, &
194  do_phy_sf => time_doatmos_phy_sf, &
195  do_phy_tb => time_doatmos_phy_tb, &
196  do_phy_bl => time_doatmos_phy_bl, &
197  do_phy_cp => time_doatmos_phy_cp
198  use mod_atmos_admin, only: &
199  atmos_sw_phy_mp, &
200  atmos_sw_phy_ae, &
201  atmos_sw_phy_ch, &
202  atmos_sw_phy_rd, &
203  atmos_sw_phy_sf, &
204  atmos_sw_phy_tb, &
205  atmos_sw_phy_bl, &
207  use mod_cpl_admin, only: &
208  cpl_sw
209  implicit none
210  logical, intent(in) :: force
211  !---------------------------------------------------------------------------
212 
213  !########## Get Surface Boundary from coupler ##########
214  call atmos_surface_get
215 
216  !########## calculate tendency ##########
217  ! reset tendencies
218 !OCL XFILL
219  dens_tp(:,:,:) = 0.0_rp
220 !OCL XFILL
221  momz_tp(:,:,:) = 0.0_rp
222 !OCL XFILL
223  rhou_tp(:,:,:) = 0.0_rp
224 !OCL XFILL
225  rhov_tp(:,:,:) = 0.0_rp
226 !OCL XFILL
227  rhot_tp(:,:,:) = 0.0_rp
228 !OCL XFILL
229  rhoh_p(:,:,:) = 0.0_rp
230 !OCL XFILL
231  rhoq_tp(:,:,:,:) = 0.0_rp
232 !OCL XFILL
233  momx_tp(:,:,:) = 0.0_rp
234 !OCL XFILL
235  momy_tp(:,:,:) = 0.0_rp
236 
237  ! Microphysics
238  if ( atmos_sw_phy_mp ) then
239  call prof_rapstart('ATM_Microphysics', 1)
240  call atmos_phy_mp_driver_calc_tendency( update_flag = do_phy_mp .or. force )
241  call prof_rapend ('ATM_Microphysics', 1)
242  endif
243  ! Aerosol
244  if ( atmos_sw_phy_ae ) then
245  call prof_rapstart('ATM_Aerosol', 1)
246  call atmos_phy_ae_driver_calc_tendency( update_flag = do_phy_ae .or. force )
247  call prof_rapend ('ATM_Aerosol', 1)
248  endif
249  ! Chemistry
250  if ( atmos_sw_phy_ch ) then
251  call prof_rapstart('ATM_Chemistry', 1)
252  call atmos_phy_ch_driver_calc_tendency( update_flag = do_phy_ch .or. force )
253  call prof_rapend ('ATM_Chemistry', 1)
254  endif
255  ! Radiation
256  if ( atmos_sw_phy_rd ) then
257  call prof_rapstart('ATM_Radiation', 1)
258  call atmos_phy_rd_driver_calc_tendency( update_flag = do_phy_rd .or. force )
259  call prof_rapend ('ATM_Radiation', 1)
260  endif
261  ! Turbulence
262  if ( atmos_sw_phy_tb ) then
263  call prof_rapstart('ATM_Turbulence', 1)
264  call atmos_phy_tb_driver_calc_tendency( update_flag = do_phy_tb .or. force )
265  call prof_rapend ('ATM_Turbulence', 1)
266  endif
267  ! Cumulus
268  if ( atmos_sw_phy_cp ) then
269  call prof_rapstart('ATM_Cumulus', 1)
270  call atmos_phy_cp_driver_calc_tendency( update_flag = do_phy_cp .or. force )
271  call prof_rapend ('ATM_Cumulus', 1)
272  endif
273  if ( .not. cpl_sw ) then
274  ! Surface Flux
275  if ( atmos_sw_phy_sf ) then
276  call prof_rapstart('ATM_SurfaceFlux', 1)
277  call atmos_phy_sf_driver_calc_tendency( update_flag = do_phy_sf .or. force )
278  call prof_rapend ('ATM_SurfaceFlux', 1)
279  endif
280  ! Planetary Boundary layer
281  if ( atmos_sw_phy_bl ) then
282  call prof_rapstart('ATM_PBL', 1)
283  call atmos_phy_bl_driver_calc_tendency( update_flag = do_phy_bl .or. force )
284  call prof_rapend ('ATM_PBL', 1)
285  endif
286  end if
287 
288  !########## Set Surface Boundary Condition ##########
289  call atmos_surface_set( countup = .true. )
290 
291  return
module ATMOS admin
real(rp), dimension(:,:,:), allocatable, public dens_tp
logical, public atmos_sw_phy_cp
subroutine, public atmos_phy_ae_driver_calc_tendency(update_flag)
Driver.
logical, public time_doatmos_phy_rd
execute physics in this step? (radiation )
subroutine, public atmos_phy_bl_driver_calc_tendency(update_flag)
calculate tendency
logical, public atmos_sw_phy_rd
real(rp), dimension(:,:,:), allocatable, public momy_tp
module ATMOSPHERE / Physics Turbulence
subroutine, public atmos_phy_sf_driver_calc_tendency(update_flag)
calculation tendency
module ATMOSPHERE / Physics Cumulus
module ATMOSPHERE / Physics Radiation
module ATMOSPHERIC Variables
module ATMOSPHERE / Physics Surface fluxes
subroutine, public atmos_phy_mp_driver_calc_tendency(update_flag)
calculate tendency
module atmosphere / physics / PBL
real(rp), dimension(:,:,:), allocatable, public rhot_tp
module ATMOSPHERE / Physics Chemistry
subroutine, public atmos_phy_ch_driver_calc_tendency(update_flag)
Driver.
logical, public atmos_sw_phy_ae
logical, public time_doatmos_phy_bl
execute physics in this step? (boudary layer )
module ATMOSPHERE / Physics Aerosol Microphysics
logical, public time_doatmos_phy_mp
execute physics in this step? (microphysics)
real(rp), dimension(:,:,:), allocatable, public rhov_tp
real(rp), dimension(:,:,:), allocatable, public rhoh_p
logical, public atmos_sw_phy_tb
subroutine, public atmos_phy_rd_driver_calc_tendency(update_flag)
Driver.
real(rp), dimension(:,:,:,:), allocatable, public rhoq_tp
logical, public atmos_sw_phy_sf
logical, public time_doatmos_phy_ch
execute physics in this step? (chemistry )
logical, public atmos_sw_phy_ch
logical, public time_doatmos_phy_cp
execute physics in this step? (cumulus )
logical, public cpl_sw
logical, public atmos_sw_phy_mp
real(rp), dimension(:,:,:), allocatable, public momx_tp
real(rp), dimension(:,:,:), allocatable, public momz_tp
logical, public time_doatmos_phy_ae
execute physics in this step? (aerosol )
logical, public time_doatmos_phy_tb
execute physics in this step? (turbulence )
real(rp), dimension(:,:,:), allocatable, public rhou_tp
logical, public atmos_sw_phy_bl
module ADMIN TIME
subroutine, public atmos_phy_tb_driver_calc_tendency(update_flag)
calclate tendency
logical, public time_doatmos_phy_sf
execute physics in this step? (surface flux)
module Coupler admin
module atmosphere / physics / cloud microphysics
subroutine, public atmos_phy_cp_driver_calc_tendency(update_flag)
Driver.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ atmos_driver_calc_tendency_from_sflux()

subroutine, public mod_atmos_driver::atmos_driver_calc_tendency_from_sflux ( logical, intent(in)  force)

Calculation tendency from surface flux with coupler.

Definition at line 297 of file mod_atmos_driver.F90.

References mod_atmos_phy_bl_driver::atmos_phy_bl_driver_calc_tendency(), mod_atmos_phy_sf_driver::atmos_phy_sf_driver_calc_tendency(), atmos_surface_get(), mod_atmos_admin::atmos_sw_phy_bl, mod_atmos_admin::atmos_sw_phy_sf, mod_cpl_admin::cpl_sw, scale_prof::prof_rapend(), scale_prof::prof_rapstart(), mod_admin_time::time_doatmos_phy_bl, and mod_admin_time::time_doatmos_phy_sf.

Referenced by mod_rm_driver::restart_read(), and mod_rm_driver::rm_driver().

297  use mod_atmos_phy_sf_driver, only: &
299  use mod_atmos_phy_bl_driver, only: &
301  use mod_cpl_admin, only: &
302  cpl_sw
303  use mod_atmos_admin, only: &
304  atmos_sw_phy_sf, &
306  use mod_admin_time, only: &
307  do_phy_sf => time_doatmos_phy_sf, &
308  do_phy_bl => time_doatmos_phy_bl
309  implicit none
310  logical, intent(in) :: force
311  !---------------------------------------------------------------------------
312 
313  if ( cpl_sw ) then
314 
315  !########## Get Surface Boundary Condition ##########
316  call atmos_surface_get
317 
318  ! Surface Flux
319  if ( atmos_sw_phy_sf ) then
320  call prof_rapstart('ATM_SurfaceFlux', 1)
321  call atmos_phy_sf_driver_calc_tendency( update_flag = do_phy_sf .or. force )
322  call prof_rapend ('ATM_SurfaceFlux', 1)
323  endif
324 
325  ! Planetary Boundary layer
326  if ( atmos_sw_phy_bl ) then
327  call prof_rapstart('ATM_PBL', 1)
328  call atmos_phy_bl_driver_calc_tendency( update_flag = do_phy_bl .or. force )
329  call prof_rapend ('ATM_PBL', 1)
330  endif
331 
332  end if
333 
334  return
module ATMOS admin
subroutine, public atmos_phy_bl_driver_calc_tendency(update_flag)
calculate tendency
subroutine, public atmos_phy_sf_driver_calc_tendency(update_flag)
calculation tendency
module ATMOSPHERE / Physics Surface fluxes
module atmosphere / physics / PBL
logical, public time_doatmos_phy_bl
execute physics in this step? (boudary layer )
logical, public atmos_sw_phy_sf
logical, public cpl_sw
logical, public atmos_sw_phy_bl
module ADMIN TIME
logical, public time_doatmos_phy_sf
execute physics in this step? (surface flux)
module Coupler admin
Here is the call graph for this function:
Here is the caller graph for this function:

◆ atmos_driver_update()

subroutine, public mod_atmos_driver::atmos_driver_update ( )

advance atmospheric state

Definition at line 340 of file mod_atmos_driver.F90.

References mod_atmos_bnd_driver::atmos_boundary_driver_update(), mod_atmos_bnd_driver::atmos_boundary_update_flag, mod_atmos_dyn_driver::atmos_dyn_driver(), scale_atmos_grid_cartesc::atmos_grid_cartesc_cz, scale_atmos_grid_cartesc::atmos_grid_cartesc_fdz, scale_atmos_grid_cartesc::atmos_grid_cartesc_fz, scale_atmos_grid_cartesc::atmos_grid_cartesc_rcdz, scale_atmos_grid_cartesc_real::atmos_grid_cartesc_real_area, scale_atmos_grid_cartesc_real::atmos_grid_cartesc_real_cz, scale_atmos_grid_cartesc_real::atmos_grid_cartesc_real_fz, scale_atmos_grid_cartesc_real::atmos_grid_cartesc_real_phi, mod_atmos_phy_ae_driver::atmos_phy_ae_driver_adjustment(), mod_atmos_phy_mp_driver::atmos_phy_mp_driver_adjustment(), scale_atmos_refstate::atmos_refstate_update(), scale_atmos_refstate::atmos_refstate_update_flag, mod_atmos_admin::atmos_sw_dyn, mod_atmos_admin::atmos_sw_phy_ae, mod_atmos_admin::atmos_sw_phy_mp, mod_atmos_vars::atmos_vars_calc_diagnostics(), mod_atmos_vars::atmos_vars_history(), mod_atmos_vars::atmos_vars_history_setpres(), mod_atmos_vars::atmos_vars_monitor(), mod_atmos_vars::dens, scale_atmos_grid_cartesc_index::ia, scale_atmos_grid_cartesc_index::ieb, scale_atmos_grid_cartesc_index::isb, scale_atmos_grid_cartesc_index::ja, scale_atmos_grid_cartesc_index::jeb, scale_atmos_grid_cartesc_index::jsb, scale_atmos_grid_cartesc_index::ka, scale_atmos_grid_cartesc_index::ke, scale_atmos_grid_cartesc_index::ks, mod_atmos_vars::pott, mod_atmos_vars::pres, scale_prof::prof_rapend(), scale_prof::prof_rapstart(), mod_atmos_vars::qv, mod_atmos_vars::temp, mod_admin_time::time_doatmos_dyn, mod_admin_time::time_doatmos_phy_ae, mod_admin_time::time_doatmos_phy_mp, and scale_time::time_nowdaysec.

Referenced by mod_rm_driver::rm_driver().

340  use mod_atmos_admin, only: &
341  atmos_sw_dyn, &
342  atmos_sw_phy_mp, &
344  use mod_admin_time, only: &
345  do_dyn => time_doatmos_dyn, &
346  do_phy_mp => time_doatmos_phy_mp, &
347  do_phy_ae => time_doatmos_phy_ae
348  use scale_atmos_refstate, only: &
351  use mod_atmos_vars, only: &
356  dens, &
357  temp, &
358  pres, &
359  pott, &
360  qv
361  use mod_atmos_bnd_driver, only: &
364  use mod_atmos_dyn_driver, only: &
366  use mod_atmos_phy_mp_driver, only: &
368  use mod_atmos_phy_ae_driver, only: &
370  use scale_atmos_grid_cartesc, only: &
371  cz => atmos_grid_cartesc_cz, &
372  fz => atmos_grid_cartesc_fz, &
373  fdz => atmos_grid_cartesc_fdz, &
375  use scale_atmos_grid_cartesc_real, only: &
376  real_cz => atmos_grid_cartesc_real_cz, &
377  real_fz => atmos_grid_cartesc_real_fz, &
378  real_phi => atmos_grid_cartesc_real_phi, &
380  use scale_time, only: &
382  implicit none
383  !---------------------------------------------------------------------------
384 
385  !########## Dynamics ##########
386  if ( atmos_sw_dyn ) then
387  call prof_rapstart('ATM_Dynamics', 1)
388  call atmos_dyn_driver( do_dyn )
389  call prof_rapend ('ATM_Dynamics', 1)
390  endif
391 
392  !########## Lateral/Top Boundary Condition ###########
393  if ( atmos_boundary_update_flag ) then
394  call prof_rapstart('ATM_Boundary', 2)
396  call prof_rapend ('ATM_Boundary', 2)
397  endif
398 
399  !########## Calculate diagnostic variables ##########
401 
402 
403  !########## Adjustment ##########
404  ! Microphysics
405  if ( atmos_sw_phy_mp .and. do_phy_mp ) then
406  call prof_rapstart('ATM_Microphysics', 1)
408  call prof_rapend ('ATM_Microphysics', 1)
410  endif
411  ! Aerosol
412  if ( atmos_sw_phy_ae .and. do_phy_ae ) then
413  call prof_rapstart('ATM_Aerosol', 1)
415  call prof_rapend ('ATM_Aerosol', 1)
417  endif
418 
419 
420  !########## Reference State ###########
421  if ( atmos_refstate_update_flag ) then
422  call prof_rapstart('ATM_Refstate', 2)
423  call atmos_refstate_update( ka, ks, ke, ia, isb, ieb, ja, jsb, jeb, &
424  dens(:,:,:), pott(:,:,:), temp(:,:,:), pres(:,:,:), qv(:,:,:), & ! [IN]
425  cz(:), fz(:), fdz(:), rcdz(:), & ! [IN]
426  real_cz(:,:,:), real_fz(:,:,:), real_phi(:,:,:), area(:,:), & ! [IN]
427  time_nowdaysec ) ! [IN]
428  call prof_rapend ('ATM_Refstate', 2)
429  endif
430 
431 
432  !########## Set hydrostatic pressure coordinate ##########
434 
435 
436  !########## History & Monitor ##########
437  call atmos_vars_history
438  call atmos_vars_monitor
439 
440  return
module ATMOS admin
subroutine, public atmos_refstate_update(KA, KS, KE, IA, IS, IE, JA, JS, JE, DENS, POTT, TEMP, PRES, QV, CZ, FZ, FDZ, RCDZ, REAL_CZ, REAL_FZ, REAL_PHI, AREA, nowsec, force)
Update reference state profile (Horizontal average)
real(rp), dimension(:,:,:), allocatable, public atmos_grid_cartesc_real_phi
geopotential [m2/s2] (cell center)
subroutine, public atmos_boundary_driver_update
Update boundary value with a constant time boundary.
logical, public atmos_boundary_update_flag
module atmosphere / reference state
module ATMOSPHERIC Variables
real(dp), public time_nowdaysec
second of current time [sec]
Definition: scale_time.F90:73
real(rp), dimension(:,:,:), allocatable, public atmos_grid_cartesc_real_fz
geopotential height [m] (wxy)
logical, public atmos_sw_phy_ae
subroutine, public atmos_vars_calc_diagnostics
Calc diagnostic variables.
module Atmosphere / Dynamics
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_fdz
z-length of grid(i+1) to grid(i) [m]
real(rp), dimension(:,:,:), allocatable, target, public dens
module ATMOSPHERE / Physics Aerosol Microphysics
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_fz
face coordinate [m]: z, local
logical, public time_doatmos_phy_mp
execute physics in this step? (microphysics)
subroutine, public atmos_phy_mp_driver_adjustment
adjustment
subroutine, public atmos_dyn_driver(do_flag)
Dynamical Process (Wrapper)
subroutine, public atmos_phy_ae_driver_adjustment
adjustment
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_rcdz
reciprocal of center-dz
logical, public atmos_refstate_update_flag
module ATMOSPHERE / Boundary treatment
real(rp), dimension(:,:,:), allocatable, target, public temp
logical, public atmos_sw_dyn
module TIME
Definition: scale_time.F90:16
module atmosphere / grid / cartesC
real(rp), dimension(:,:,:), allocatable, target, public pott
real(rp), dimension(:,:,:), allocatable, pointer, target, public qv
logical, public atmos_sw_phy_mp
subroutine, public atmos_vars_monitor
monitor output
real(rp), dimension(:,:,:), allocatable, public atmos_grid_cartesc_real_cz
geopotential height [m] (zxy)
logical, public time_doatmos_phy_ae
execute physics in this step? (aerosol )
module Atmosphere GRID CartesC Real(real space)
real(rp), dimension(:,:), allocatable, public atmos_grid_cartesc_real_area
horizontal area ( xy, normal z) [m2]
subroutine, public atmos_vars_history_setpres
Set pressure for history output.
module ADMIN TIME
logical, public time_doatmos_dyn
execute dynamics in this step?
subroutine, public atmos_vars_history
History output set for atmospheric variables.
module atmosphere / physics / cloud microphysics
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_cz
center coordinate [m]: z, local
real(rp), dimension(:,:,:), allocatable, target, public pres
Here is the call graph for this function:
Here is the caller graph for this function:

◆ atmos_driver_finalize()

subroutine, public mod_atmos_driver::atmos_driver_finalize ( )

Finalize.

Definition at line 446 of file mod_atmos_driver.F90.

References mod_atmos_bnd_driver::atmos_boundary_driver_finalize(), mod_atmos_bnd_driver::atmos_boundary_update_flag, and scale_comm_cartesc_nest::comm_cartesc_nest_disconnect().

Referenced by mod_rm_driver::rm_driver().

446  use mod_atmos_bnd_driver, only: &
449  use scale_comm_cartesc_nest, only: &
450  nest_comm_disconnect => comm_cartesc_nest_disconnect
451  implicit none
452  !---------------------------------------------------------------------------
453 
454  !########## Lateral/Top Boundary Condition ###########
455  if ( atmos_boundary_update_flag ) then
456  ! If this run is parent of online nesting, boundary data must be sent
458 
459  ! Finialize Inter-Communicators
460  call nest_comm_disconnect
461  endif
462 
463  return
subroutine, public comm_cartesc_nest_disconnect
[finalize: disconnect] Inter-communication
logical, public atmos_boundary_update_flag
subroutine, public atmos_boundary_driver_finalize
Finalize boundary value.
module ATMOSPHERE / Boundary treatment
module Communication CartesianC nesting
Here is the call graph for this function:
Here is the caller graph for this function:

◆ atmos_surface_get()

subroutine, public mod_atmos_driver::atmos_surface_get ( )

Get surface boundary condition.

Definition at line 469 of file mod_atmos_driver.F90.

References mod_atmos_phy_sf_vars::atmos_phy_sf_q2, mod_atmos_phy_sf_vars::atmos_phy_sf_sfc_albedo, mod_atmos_phy_sf_vars::atmos_phy_sf_sfc_temp, mod_atmos_phy_sf_vars::atmos_phy_sf_sfc_z0e, mod_atmos_phy_sf_vars::atmos_phy_sf_sfc_z0h, mod_atmos_phy_sf_vars::atmos_phy_sf_sfc_z0m, mod_atmos_phy_sf_vars::atmos_phy_sf_sflx_gh, mod_atmos_phy_sf_vars::atmos_phy_sf_sflx_lh, mod_atmos_phy_sf_vars::atmos_phy_sf_sflx_mu, mod_atmos_phy_sf_vars::atmos_phy_sf_sflx_mv, mod_atmos_phy_sf_vars::atmos_phy_sf_sflx_mw, mod_atmos_phy_sf_vars::atmos_phy_sf_sflx_qtrc, mod_atmos_phy_sf_vars::atmos_phy_sf_sflx_sh, mod_atmos_phy_sf_vars::atmos_phy_sf_t2, mod_atmos_phy_sf_vars::atmos_phy_sf_u10, mod_atmos_phy_sf_vars::atmos_phy_sf_v10, mod_cpl_vars::cpl_getsfc_atm(), mod_cpl_admin::cpl_sw, scale_prof::prof_rapend(), and scale_prof::prof_rapstart().

Referenced by atmos_driver_calc_tendency(), atmos_driver_calc_tendency_from_sflux(), and mod_rm_prep::rm_prep().

469  use mod_atmos_phy_sf_vars, only: &
470  sfc_temp => atmos_phy_sf_sfc_temp, &
471  sfc_albedo => atmos_phy_sf_sfc_albedo, &
472  sfc_z0m => atmos_phy_sf_sfc_z0m, &
473  sfc_z0h => atmos_phy_sf_sfc_z0h, &
474  sfc_z0e => atmos_phy_sf_sfc_z0e, &
475  sflx_mw => atmos_phy_sf_sflx_mw, &
476  sflx_mu => atmos_phy_sf_sflx_mu, &
477  sflx_mv => atmos_phy_sf_sflx_mv, &
478  sflx_sh => atmos_phy_sf_sflx_sh, &
479  sflx_lh => atmos_phy_sf_sflx_lh, &
480  sflx_gh => atmos_phy_sf_sflx_gh, &
481  sflx_qtrc => atmos_phy_sf_sflx_qtrc, &
482  u10 => atmos_phy_sf_u10, &
483  v10 => atmos_phy_sf_v10, &
484  t2 => atmos_phy_sf_t2, &
485  q2 => atmos_phy_sf_q2
486  use mod_cpl_admin, only: &
487  cpl_sw
488  use mod_cpl_vars, only: &
490  implicit none
491  !---------------------------------------------------------------------------
492 
493  call prof_rapstart('ATM_SfcExch', 2)
494 
495  if ( cpl_sw ) then
496  call cpl_getsfc_atm( sfc_temp(:,:), & ! [OUT]
497  sfc_albedo(:,:,:,:), & ! [OUT]
498  sfc_z0m(:,:), & ! [OUT]
499  sfc_z0h(:,:), & ! [OUT]
500  sfc_z0e(:,:), & ! [OUT]
501  sflx_mw(:,:), & ! [OUT]
502  sflx_mu(:,:), & ! [OUT]
503  sflx_mv(:,:), & ! [OUT]
504  sflx_sh(:,:), & ! [OUT]
505  sflx_lh(:,:), & ! [OUT]
506  sflx_gh(:,:), & ! [OUT]
507  sflx_qtrc(:,:,:), & ! [OUT]
508  u10(:,:), & ! [OUT]
509  v10(:,:), & ! [OUT]
510  t2(:,:), & ! [OUT]
511  q2(:,:) ) ! [OUT]
512  endif
513 
514  call prof_rapend ('ATM_SfcExch', 2)
515 
516  return
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_sfc_z0e
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_sflx_mw
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_v10
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_sfc_temp
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_sflx_mv
subroutine, public cpl_getsfc_atm(SFC_TEMP, SFC_albedo, SFC_Z0M, SFC_Z0H, SFC_Z0E, SFLX_MW, SFLX_MU, SFLX_MV, SFLX_SH, SFLX_LH, SFLX_G, SFLX_QTRC, U10, V10, T2, Q2)
module ATMOSPHERIC Surface Variables
real(rp), dimension(:,:,:,:), allocatable, public atmos_phy_sf_sfc_albedo
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_u10
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_sfc_z0h
module COUPLER Variables
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_sflx_lh
real(rp), dimension(:,:,:), allocatable, target, public atmos_phy_sf_sflx_qtrc
logical, public cpl_sw
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_sflx_sh
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_q2
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_sfc_z0m
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_t2
module Coupler admin
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_sflx_gh
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_sflx_mu
Here is the call graph for this function:
Here is the caller graph for this function:

◆ atmos_surface_set()

subroutine, public mod_atmos_driver::atmos_surface_set ( logical, intent(in)  countup)

Set surface boundary condition.

Definition at line 522 of file mod_atmos_driver.F90.

References scale_atmos_bottom::atmos_bottom_estimate(), scale_atmos_grid_cartesc_real::atmos_grid_cartesc_real_cz, scale_atmos_grid_cartesc_real::atmos_grid_cartesc_real_z1, mod_atmos_phy_bl_vars::atmos_phy_bl_zi, mod_atmos_phy_cp_vars::atmos_phy_cp_sflx_rain, mod_atmos_phy_mp_vars::atmos_phy_mp_sflx_rain, mod_atmos_phy_mp_vars::atmos_phy_mp_sflx_snow, mod_atmos_phy_rd_vars::atmos_phy_rd_cossza, mod_atmos_phy_rd_vars::atmos_phy_rd_sflx_down, mod_cpl_vars::cpl_putatm(), mod_cpl_admin::cpl_sw, mod_atmos_vars::dens, scale_atmos_grid_cartesc_index::ia, scale_atmos_grid_cartesc_index::ieb, scale_atmos_grid_cartesc_index::isb, scale_atmos_grid_cartesc_index::ja, scale_atmos_grid_cartesc_index::jeb, scale_atmos_grid_cartesc_index::jsb, scale_atmos_grid_cartesc_index::ka, scale_atmos_grid_cartesc_index::ke, scale_atmos_grid_cartesc_index::ks, mod_atmos_vars::pres, scale_prof::prof_rapend(), scale_prof::prof_rapstart(), mod_atmos_vars::qtrc, mod_atmos_vars::temp, scale_topography::topo_zsfc, mod_atmos_vars::u, mod_atmos_vars::v, and mod_atmos_vars::w.

Referenced by atmos_driver_calc_tendency(), and mod_rm_driver::restart_read().

522  use scale_atmos_grid_cartesc_real, only: &
523  real_cz => atmos_grid_cartesc_real_cz, &
524  real_z1 => atmos_grid_cartesc_real_z1
525  use scale_topography, only: &
526  topo_zsfc
527  use scale_atmos_bottom, only: &
528  bottom_estimate => atmos_bottom_estimate
529  use mod_atmos_vars, only: &
530  dens, &
531  qtrc, &
532  temp, &
533  pres, &
534  w, &
535  u, &
536  v
537  use mod_atmos_phy_mp_vars, only: &
538  sflx_rain_mp => atmos_phy_mp_sflx_rain, &
539  sflx_snow_mp => atmos_phy_mp_sflx_snow
540  use mod_atmos_phy_cp_vars, only: &
541  sflx_rain_cp => atmos_phy_cp_sflx_rain
542  use mod_atmos_phy_rd_vars, only: &
543  sflx_rad_dn => atmos_phy_rd_sflx_down, &
544  cossza => atmos_phy_rd_cossza
545  use mod_atmos_phy_bl_vars, only: &
546  atm_pbl => atmos_phy_bl_zi
547  use mod_cpl_admin, only: &
548  cpl_sw
549  use mod_cpl_vars, only: &
550  cpl_putatm
551  implicit none
552 
553  ! arguments
554  logical, intent(in) :: countup
555 
556  ! works
557  real(RP) :: sfc_dens(ia,ja)
558  real(RP) :: sfc_pres(ia,ja)
559 
560  real(RP) :: sflx_rain(ia,ja)
561  real(RP) :: sflx_snow(ia,ja)
562 
563  integer :: i,j
564  !---------------------------------------------------------------------------
565 
566  call prof_rapstart('ATM_SfcExch', 2)
567 
568  if ( cpl_sw ) then
569  ! sum of rainfall from mp and cp
570  !$omp parallel do private(i,j) OMP_SCHEDULE_
571  do j = 1, ja
572  do i = 1, ia
573  sflx_rain(i,j) = sflx_rain_mp(i,j) + sflx_rain_cp(i,j)
574  sflx_snow(i,j) = sflx_snow_mp(i,j)
575  enddo
576  enddo
577 
578  ! planetary boundary layer
579  call bottom_estimate( ka, ks, ke, ia, isb, ieb, ja, jsb, jeb, &
580  dens(:,:,:), pres(:,:,:), & ! [IN]
581  real_cz(:,:,:), topo_zsfc(:,:), real_z1(:,:), & ! [IN]
582  sfc_dens(:,:), sfc_pres(:,:) ) ! [OUT]
583 
584  call cpl_putatm( temp(ks,:,:), & ! [IN]
585  pres(ks,:,:), & ! [IN]
586  w(ks,:,:), & ! [IN]
587  u(ks,:,:), & ! [IN]
588  v(ks,:,:), & ! [IN]
589  dens(ks,:,:), & ! [IN]
590  qtrc(ks,:,:,:), & ! [IN]
591  atm_pbl(:,:), & ! [IN]
592  sfc_dens(:,:), & ! [IN]
593  sfc_pres(:,:), & ! [IN]
594  sflx_rad_dn(:,:,:,:), & ! [IN]
595  cossza(:,:), & ! [IN]
596  sflx_rain(:,:), & ! [IN]
597  sflx_snow(:,:), & ! [IN]
598  countup ) ! [IN]
599  endif
600 
601  call prof_rapend ('ATM_SfcExch', 2)
602 
603  return
real(rp), dimension(:,:,:,:), allocatable, public atmos_phy_rd_sflx_down
subroutine, public atmos_bottom_estimate(KA, KS, KE, IA, IS, IE, JA, JS, JE, DENS, PRES, CZ, Zsfc, Z1, SFC_DENS, SFC_PRES)
Calc bottom boundary of atmosphere (just above surface)
module Atmosphere / Physics Cumulus
module Atmosphere / Physics Cloud Microphysics
module atmosphere / bottom boundary extrapolation
module ATMOSPHERIC Variables
real(rp), dimension(:,:,:), allocatable, target, public dens
real(rp), dimension(:,:), allocatable, public atmos_phy_mp_sflx_rain
real(rp), dimension(:,:), allocatable, public atmos_grid_cartesc_real_z1
Height of the lowermost grid from surface (cell center) [m].
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_cossza
module Atmosphere / Physics Radiation
real(rp), dimension(:,:), allocatable, public atmos_phy_bl_zi
module COUPLER Variables
real(rp), dimension(:,:,:), allocatable, target, public temp
real(rp), dimension(:,:,:), allocatable, target, public w
module atmosphere / physics / PBL
logical, public cpl_sw
real(rp), dimension(:,:,:), allocatable, target, public v
real(rp), dimension(:,:,:), allocatable, target, public u
real(rp), dimension(:,:), allocatable, public atmos_phy_mp_sflx_snow
real(rp), dimension(:,:,:), allocatable, public atmos_grid_cartesc_real_cz
geopotential height [m] (zxy)
subroutine, public cpl_putatm(TEMP, PRES, W, U, V, DENS, QV, PBL, SFC_DENS, SFC_PRES, SFLX_rad_dn, cosSZA, SFLX_rain, SFLX_snow, countup)
module Atmosphere GRID CartesC Real(real space)
real(rp), dimension(:,:), allocatable, public topo_zsfc
absolute ground height [m]
module TOPOGRAPHY
module Coupler admin
real(rp), dimension(:,:), allocatable, public atmos_phy_cp_sflx_rain
real(rp), dimension(:,:,:), allocatable, target, public pres
real(rp), dimension(:,:,:,:), allocatable, target, public qtrc
Here is the call graph for this function:
Here is the caller graph for this function:

◆ atmos_driver_boundary_update()

subroutine mod_atmos_driver::atmos_driver_boundary_update ( )

Definition at line 607 of file mod_atmos_driver.F90.

607