SCALE-RM
mod_atmos_driver.F90
Go to the documentation of this file.
1 !-------------------------------------------------------------------------------
10 !-------------------------------------------------------------------------------
11 #include "scalelib.h"
13  !-----------------------------------------------------------------------------
14  !
15  !++ used modules
16  !
17  use scale_precision
18  use scale_io
19  use scale_prof
21  !-----------------------------------------------------------------------------
22  implicit none
23  private
24  !-----------------------------------------------------------------------------
25  !
26  !++ Public procedure
27  !
29  public :: atmos_driver_setup
32  public :: atmos_driver_update
33  public :: atmos_driver_finalize
34  public :: atmos_surface_get
35  public :: atmos_surface_set
36 
37  !-----------------------------------------------------------------------------
38  !
39  !++ Public parameters & variables
40  !
41  !-----------------------------------------------------------------------------
42  !
43  !++ Private procedure
44  !
45  !-----------------------------------------------------------------------------
46  !
47  !++ Private parameters & variables
48  !
49  !-----------------------------------------------------------------------------
50 contains
51  !-----------------------------------------------------------------------------
53  subroutine atmos_driver_tracer_setup
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
77  end subroutine atmos_driver_tracer_setup
78 
79  !-----------------------------------------------------------------------------
81  subroutine atmos_driver_setup
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
158  end subroutine atmos_driver_setup
159 
160  !-----------------------------------------------------------------------------
162  subroutine atmos_driver_calc_tendency( force )
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
292  end subroutine atmos_driver_calc_tendency
293 
294  !-----------------------------------------------------------------------------
296  subroutine atmos_driver_calc_tendency_from_sflux( force )
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
336 
337  !-----------------------------------------------------------------------------
339  subroutine atmos_driver_update
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
441  end subroutine atmos_driver_update
442 
443  !-----------------------------------------------------------------------------
445  subroutine atmos_driver_finalize
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
464  end subroutine atmos_driver_finalize
465 
466  !-----------------------------------------------------------------------------
468  subroutine atmos_surface_get
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
517  end subroutine atmos_surface_get
518 
519  !-----------------------------------------------------------------------------
521  subroutine atmos_surface_set( countup )
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
604  end subroutine atmos_surface_set
605 
608  end subroutine atmos_driver_boundary_update
609 end module mod_atmos_driver
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 dens_tp
logical, public atmos_sw_phy_cp
real(rp), dimension(:,:,:), allocatable, public atmos_grid_cartesc_real_phi
geopotential [m2/s2] (cell center)
subroutine, public comm_cartesc_nest_disconnect
[finalize: disconnect] Inter-communication
subroutine, public atmos_phy_ae_driver_calc_tendency(update_flag)
Driver.
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
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_sfc_z0e
subroutine, public atmos_surface_set(countup)
Set surface boundary condition.
logical, public time_doatmos_phy_rd
execute physics in this step? (radiation )
subroutine, public atmos_phy_bl_driver_tracer_setup
Config.
subroutine, public atmos_boundary_driver_update
Update boundary value with a constant time boundary.
subroutine, public atmos_phy_bl_driver_calc_tendency(update_flag)
calculate tendency
subroutine, public atmos_phy_ae_driver_setup
Setup.
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_sflx_mw
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
real(rp), public atmos_grid_cartesc_real_basepoint_lon
position of base point in real world [rad,0-2pi]
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_v10
integer, public ia
of whole cells: x, local, with HALO
module Atmosphere / Physics Cloud Microphysics
module ATMOSPHERE / Physics Cumulus
module atmosphere / bottom boundary extrapolation
logical, public atmos_boundary_update_flag
subroutine, public atmos_boundary_driver_setup
Setup.
module ATMOSPHERE / Physics Radiation
module atmosphere / reference state
module ATMOSPHERIC Variables
module ATMOSPHERE / Physics Surface fluxes
real(dp), public time_nowdaysec
second of current time [sec]
Definition: scale_time.F90:73
subroutine, public atmos_solarins_setup(basepoint_lon, basepoint_lat, iyear)
setup solar incidence module
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_boundary_driver_finalize
Finalize boundary value.
subroutine, public atmos_phy_ch_driver_calc_tendency(update_flag)
Driver.
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_sfc_temp
real(rp), dimension(:,:,:), allocatable, public atmos_grid_cartesc_real_fz
geopotential height [m] (wxy)
logical, public atmos_sw_phy_ae
integer, public ja
of whole cells: y, local, with HALO
logical, public time_doatmos_phy_bl
execute physics in this step? (boudary layer )
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
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_sflx_mv
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)
real(rp), dimension(:,:,:), allocatable, public rhov_tp
subroutine, public atmos_phy_mp_driver_adjustment
adjustment
real(rp), dimension(:,:), allocatable, public atmos_phy_mp_sflx_rain
subroutine, public atmos_driver_calc_tendency_from_sflux(force)
Calculation tendency from surface flux with coupler.
subroutine, public atmos_phy_rd_driver_setup
Setup.
subroutine, public atmos_driver_calc_tendency(force)
Calculation tendency.
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)
real(rp), dimension(:,:,:), allocatable, public rhoh_p
subroutine, public atmos_dyn_driver(do_flag)
Dynamical Process (Wrapper)
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
subroutine, public atmos_phy_ch_driver_tracer_setup
Config.
module ATMOSPHERIC Surface Variables
subroutine, public atmos_dyn_driver_setup
Setup.
real(rp), dimension(:,:), allocatable, public atmos_phy_bl_zi
logical, public atmos_sw_phy_tb
subroutine, public atmos_surface_get
Get surface boundary condition.
real(rp), dimension(:,:,:,:), allocatable, public atmos_phy_sf_sfc_albedo
subroutine, public atmos_phy_ae_driver_adjustment
adjustment
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_u10
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_rcdz
reciprocal of center-dz
logical, public atmos_refstate_update_flag
subroutine, public atmos_phy_cp_driver_setup
Setup.
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_sfc_z0h
subroutine, public atmos_phy_rd_driver_calc_tendency(update_flag)
Driver.
module atmosphere / grid / cartesC index
integer, public ke
end point of inner domain: z, local
subroutine, public atmos_driver_tracer_setup
Tracer setup.
module COUPLER Variables
module ATMOSPHERE / Boundary treatment
real(rp), public atmos_grid_cartesc_real_basepoint_lat
position of base point in real world [rad,-pi,pi]
real(rp), dimension(:,:,:,:), allocatable, public rhoq_tp
subroutine, public atmos_phy_ae_driver_tracer_setup
Setup.
real(rp), dimension(:,:,:), allocatable, target, public temp
logical, public atmos_sw_dyn
module ATMOSPHERE driver
real(rp), dimension(:,:,:), allocatable, target, public w
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_sflx_lh
subroutine, public atmos_phy_sf_driver_setup
Setup.
module atmosphere / physics / PBL
module TIME
Definition: scale_time.F90:16
real(rp), dimension(:,:,:), allocatable, target, public atmos_phy_sf_sflx_qtrc
module atmosphere / grid / cartesC
integer, public ks
start point of inner domain: z, local
subroutine, public atmos_phy_mp_driver_tracer_setup
Config.
subroutine, public atmos_refstate_setup(KA, KS, KE, IA, IS, IE, JA, JS, JE, CZ, FZ, REAL_CZ, REAL_FZ, REAL_PHI)
Setup.
logical, public atmos_sw_phy_sf
subroutine, public atmos_phy_tb_driver_tracer_setup
Tracer setup.
logical, public time_doatmos_phy_ch
execute physics in this step? (chemistry )
real(rp), dimension(:,:,:), allocatable, target, public pott
logical, public atmos_sw_phy_ch
subroutine, public atmos_driver_setup
Setup.
subroutine, public atmos_phy_mp_driver_setup
Setup.
logical, public time_doatmos_phy_cp
execute physics in this step? (cumulus )
logical, public cpl_sw
real(rp), dimension(:,:,:), allocatable, pointer, target, public qv
logical, public atmos_sw_phy_mp
module Communication CartesianC nesting
subroutine, public atmos_phy_tb_driver_setup
Setup.
real(rp), dimension(:,:,:), allocatable, public momx_tp
real(rp), dimension(:,:,:), allocatable, target, public v
subroutine, public prof_rapstart(rapname_base, level)
Start raptime.
Definition: scale_prof.F90:157
subroutine, public atmos_vars_monitor
monitor output
real(rp), dimension(:,:,:), allocatable, target, public u
real(rp), dimension(:,:), allocatable, public atmos_phy_mp_sflx_snow
real(rp), dimension(:,:,:), allocatable, public momz_tp
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_sflx_sh
real(rp), dimension(:,:,:), allocatable, public atmos_grid_cartesc_real_cz
geopotential height [m] (zxy)
module profiler
Definition: scale_prof.F90:11
logical, public time_doatmos_phy_ae
execute physics in this step? (aerosol )
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)
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_q2
module Atmosphere GRID CartesC Real(real space)
subroutine, public atmos_phy_ch_driver_setup
Setup.
subroutine, public atmos_driver_finalize
Finalize.
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 PRECISION
logical, public time_doatmos_phy_tb
execute physics in this step? (turbulence )
real(rp), dimension(:,:), allocatable, public topo_zsfc
absolute ground height [m]
real(rp), dimension(:,:,:), allocatable, public rhou_tp
integer, public ka
of whole cells: z, local, with HALO
logical, public atmos_sw_phy_bl
module TOPOGRAPHY
module atmosphere / SOLARINS
module ADMIN TIME
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_sfc_z0m
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_t2
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 STDIO
Definition: scale_io.F90:10
logical, public time_doatmos_dyn
execute dynamics in this step?
subroutine, public atmos_vars_history
History output set for atmospheric variables.
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
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_sflx_gh
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_sflx_mu
module atmosphere / physics / cloud microphysics
subroutine, public prof_rapend(rapname_base, level)
Save raptime.
Definition: scale_prof.F90:210
subroutine, public atmos_phy_cp_driver_calc_tendency(update_flag)
Driver.
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_cz
center coordinate [m]: z, local
real(rp), dimension(:,:), allocatable, public atmos_phy_cp_sflx_rain
subroutine, public atmos_driver_update
advance atmospheric state
real(rp), dimension(:,:,:), allocatable, target, public pres
subroutine atmos_driver_boundary_update
real(rp), dimension(:,:,:,:), allocatable, target, public qtrc