SCALE-RM
Functions/Subroutines
mod_atmos_phy_ae_driver Module Reference

module ATMOSPHERE / Physics Aerosol Microphysics More...

Functions/Subroutines

subroutine, public atmos_phy_ae_driver_setup
 Setup. More...
 
subroutine, public atmos_phy_ae_driver_resume
 Resume. More...
 
subroutine, public atmos_phy_ae_driver (update_flag)
 Driver. More...
 

Detailed Description

module ATMOSPHERE / Physics Aerosol Microphysics

Description
Aerosol Microphysics driver
Author
Team SCALE
History
  • 2013-12-06 (S.Nishizawa) [new]
NAMELIST
  • No namelist group
History Output
namedescriptionunitvariable
CCN cloud condensation nucrei num/cc CCN*1.E-6_RP
CN condensation nucrei num/cc CN *1.E-6_RP

Function/Subroutine Documentation

◆ atmos_phy_ae_driver_setup()

subroutine, public mod_atmos_phy_ae_driver::atmos_phy_ae_driver_setup ( )

Setup.

Definition at line 52 of file mod_atmos_phy_ae_driver.f90.

References scale_atmos_phy_ae::atmos_phy_ae_setup(), mod_atmos_admin::atmos_phy_ae_type, scale_stdio::io_fid_log, and scale_stdio::io_l.

Referenced by mod_atmos_driver::atmos_driver_setup().

52  use scale_atmos_phy_ae, only: &
54  use mod_atmos_admin, only: &
56 ! ATMOS_sw_phy_ae
57  implicit none
58  !---------------------------------------------------------------------------
59 
60  if( io_l ) write(io_fid_log,*)
61  if( io_l ) write(io_fid_log,*) '++++++ Module[DRIVER] / Categ[ATMOS PHY_AE] / Origin[SCALE-RM]'
62 
63  ! note: tentatively, aerosol module should be called at all time. we need dummy subprogram.
64 ! if ( ATMOS_sw_phy_ae ) then
65 
66  ! setup library component
68 
69 ! else
70 ! if( IO_L ) write(IO_FID_LOG,*) '*** this component is never called.'
71 ! endif
72 
73  return
module ATMOS admin
module ATMOSPHERE / Physics Aerosol Microphysics
logical, public io_l
output log or not? (this process)
Definition: scale_stdio.F90:59
character(len=h_short), public atmos_phy_ae_type
subroutine, public atmos_phy_ae_setup(AE_TYPE)
Setup.
integer, public io_fid_log
Log file ID.
Definition: scale_stdio.F90:56
Here is the call graph for this function:
Here is the caller graph for this function:

◆ atmos_phy_ae_driver_resume()

subroutine, public mod_atmos_phy_ae_driver::atmos_phy_ae_driver_resume ( )

Resume.

Definition at line 79 of file mod_atmos_phy_ae_driver.f90.

References atmos_phy_ae_driver(), scale_prof::prof_rapend(), and scale_prof::prof_rapstart().

Referenced by mod_atmos_driver::atmos_driver_resume1().

79 ! use mod_atmos_admin, only: &
80 ! ATMOS_sw_phy_ae
81  implicit none
82 
83  ! note: tentatively, aerosol module should be called at all time. we need dummy subprogram.
84 ! if ( ATMOS_sw_phy_ae ) then
85 
86  ! run once (only for the diagnostic value)
87  call prof_rapstart('ATM_Aerosol', 1)
88  call atmos_phy_ae_driver( update_flag = .true. )
89  call prof_rapend ('ATM_Aerosol', 1)
90 
91 ! endif
92 
93  return
subroutine, public atmos_phy_ae_driver(update_flag)
Driver.
subroutine, public prof_rapstart(rapname_base, level)
Start raptime.
Definition: scale_prof.F90:132
subroutine, public prof_rapend(rapname_base, level)
Save raptime.
Definition: scale_prof.F90:178
Here is the call graph for this function:
Here is the caller graph for this function:

◆ atmos_phy_ae_driver()

subroutine, public mod_atmos_phy_ae_driver::atmos_phy_ae_driver ( logical, intent(in)  update_flag)

Driver.

Definition at line 99 of file mod_atmos_phy_ae_driver.f90.

References scale_tracer::aq_name, scale_atmos_phy_ae::atmos_phy_ae, mod_atmos_phy_ae_vars::atmos_phy_ae_ccn, mod_atmos_phy_ae_vars::atmos_phy_ae_ccn_t, mod_atmos_phy_ae_vars::atmos_phy_ae_emit, mod_atmos_phy_ae_vars::atmos_phy_ae_rhoq_t, mod_atmos_phy_mp_vars::atmos_phy_mp_evaporate, mod_atmos_vars::dens, scale_grid_index::ie, scale_grid_index::is, scale_grid_index::je, scale_grid_index::js, scale_grid_index::ke, scale_grid_index::ks, mod_atmos_vars::momx, mod_atmos_vars::momy, mod_atmos_vars::momz, scale_tracer::qa, mod_atmos_vars::qtrc, mod_atmos_vars::rhoq_tp, mod_atmos_vars::rhot, scale_rm_statistics::statistics_checktotal, and scale_time::time_dtsec_atmos_phy_ae.

Referenced by mod_atmos_driver::atmos_driver(), and atmos_phy_ae_driver_resume().

99  use scale_time, only: &
100  dt_ae => time_dtsec_atmos_phy_ae
101  use scale_rm_statistics, only: &
103  stat_total
104  use scale_history, only: &
105  hist_in
106  use scale_atmos_phy_ae, only: &
108  use mod_atmos_vars, only: &
109  dens, &
110  momz, &
111  momx, &
112  momy, &
113  rhot, &
114  qtrc, &
115  rhoq_t => rhoq_tp
116  use mod_atmos_phy_ae_vars, only: &
117  rhoq_t_ae => atmos_phy_ae_rhoq_t, &
118  ccn => atmos_phy_ae_ccn, &
119  ccn_t => atmos_phy_ae_ccn_t, &
120  ae_emit => atmos_phy_ae_emit
121  use mod_atmos_phy_mp_vars, only: &
122  evaporate => atmos_phy_mp_evaporate
123  implicit none
124 
125  logical, intent(in) :: update_flag
126 
127  real(RP) :: cn(ka,ia,ja)
128  real(RP) :: nreg(ka,ia,ja)
129 
130  real(RP) :: total ! dummy
131 
132  integer :: k, i, j, iq
133  !---------------------------------------------------------------------------
134 
135  if ( update_flag ) then
136 
137 !OCL XFILL
138  ccn(:,:,:) = 0.0_rp ! reset
139 !OCL XFILL
140  ccn_t(:,:,:) = 0.0_rp ! reset
141 !OCL XFILL
142  rhoq_t_ae(:,:,:,:) = 0.0_rp ! reset
143 
144  nreg(:,:,:) = evaporate(:,:,:) * dt_ae
145 
146  call atmos_phy_ae( dens, & ! [IN]
147  momz, & ! [IN]
148  momx, & ! [IN]
149  momy, & ! [IN]
150  rhot, & ! [IN]
151  ae_emit, & ! [IN]
152  nreg, & ! [IN]
153  qtrc, & ! [INOUT]
154  cn , & ! [OUT]
155  ccn, & ! [OUT]
156  rhoq_t_ae ) ! [INOUT]
157 
158  ccn_t(:,:,:) = ccn(:,:,:) / dt_ae
159 
160  call hist_in( cn(:,:,:)*1.e-6_rp, 'CN', 'condensation nucrei', 'num/cc' )
161  call hist_in( ccn(:,:,:)*1.e-6_rp, 'CCN', 'cloud condensation nucrei', 'num/cc' )
162 
163  endif
164 
165  !$omp parallel do private(i,j,k) OMP_SCHEDULE_ collapse(3)
166  do iq = 1, qa
167  do j = js, je
168  do i = is, ie
169  do k = ks, ke
170  rhoq_t(k,i,j,iq) = rhoq_t(k,i,j,iq) + rhoq_t_ae(k,i,j,iq)
171  enddo
172  enddo
173  enddo
174  enddo
175 
176  if ( statistics_checktotal ) then
177  do iq = 1, qa
178  call stat_total( total, rhoq_t_ae(:,:,:,iq), trim(aq_name(iq))//'_t_AE' )
179  enddo
180  endif
181 
182  return
integer, public is
start point of inner domain: x, local
logical, public statistics_checktotal
calc&report variable totals to logfile?
real(rp), dimension(:,:,:), allocatable, target, public momz
integer, public je
end point of inner domain: y, local
module ATMOSPHERE / Physics Aerosol Microphysics
real(rp), dimension(:,:,:), allocatable, target, public rhot
module Atmosphere / Physics Cloud Microphysics
procedure(ae), pointer, public atmos_phy_ae
module ATMOSPHERIC Variables
real(rp), dimension(:,:,:), allocatable, target, public momx
integer, public ke
end point of inner domain: z, local
integer, public qa
real(rp), dimension(:,:,:), allocatable, target, public dens
module Statistics
integer, public ia
of x whole cells (local, with HALO)
integer, public ka
of z whole cells (local, with HALO)
real(rp), dimension(:,:,:,:), allocatable, public atmos_phy_ae_emit
real(rp), dimension(:,:,:,:), allocatable, public rhoq_tp
character(len=h_short), dimension(:), allocatable, public aq_name
integer, public js
start point of inner domain: y, local
module TIME
Definition: scale_time.F90:15
real(rp), dimension(:,:,:,:), allocatable, public atmos_phy_ae_rhoq_t
real(rp), dimension(:,:,:), allocatable, public atmos_phy_ae_ccn
real(dp), public time_dtsec_atmos_phy_ae
time interval of physics(aerosol ) [sec]
Definition: scale_time.F90:46
integer, public ks
start point of inner domain: z, local
real(rp), dimension(:,:,:), allocatable, target, public momy
real(rp), dimension(:,:,:), allocatable, public atmos_phy_mp_evaporate
integer, public ie
end point of inner domain: x, local
module HISTORY
module ATMOSPHERE / Physics Aerosol Microphysics
real(rp), dimension(:,:,:,:), allocatable, target, public qtrc
real(rp), dimension(:,:,:), allocatable, public atmos_phy_ae_ccn_t
integer, public ja
of y whole cells (local, with HALO)
Here is the caller graph for this function: