SCALE-RM
scale_atmos_phy_mp_dry.F90
Go to the documentation of this file.
1 !-------------------------------------------------------------------------------
14 !-------------------------------------------------------------------------------
16  !-----------------------------------------------------------------------------
17  !
18  !++ used modules
19  !
20  use scale_precision
21  use scale_stdio
22  use scale_prof
24  use scale_atmos_hydrometeor, only: &
25  n_hyd
26  !-----------------------------------------------------------------------------
27  implicit none
28  private
29  !-----------------------------------------------------------------------------
30  !
31  !++ Public procedure
32  !
33  public :: atmos_phy_mp_dry_config
34  public :: atmos_phy_mp_dry_setup
35  public :: atmos_phy_mp_dry
36 
40 
41  !-----------------------------------------------------------------------------
42  !
43  !++ Public parameters & variables
44  !
45  integer, public, parameter :: qa_mp = 0
46 
47  character(len=H_SHORT), public, target :: atmos_phy_mp_dry_name(qa_mp)
48  character(len=H_MID) , public, target :: atmos_phy_mp_dry_desc(qa_mp)
49  character(len=H_SHORT), public, target :: atmos_phy_mp_dry_unit(qa_mp)
50 
51  real(RP), public, target :: atmos_phy_mp_dry_dens(n_hyd)
52 
53  !-----------------------------------------------------------------------------
54  !
55  !++ Private procedure
56  !
57  !-----------------------------------------------------------------------------
58  !
59  !++ Private parameters & variables
60  !
61  !-----------------------------------------------------------------------------
62 contains
63  !-----------------------------------------------------------------------------
65  subroutine atmos_phy_mp_dry_config( &
66  MP_TYPE, &
67  QA, QS )
68  use scale_process, only: &
70  implicit none
71 
72  character(len=*), intent(in) :: mp_type
73  integer, intent(out) :: qa
74  integer, intent(out) :: qs
75  !---------------------------------------------------------------------------
76 
77  if( io_l ) write(io_fid_log,*)
78  if( io_l ) write(io_fid_log,*) '++++++ Module[Cloud Microphysics Tracer] / Categ[ATMOS PHYSICS] / Origin[SCALElib]'
79  if( io_l ) write(io_fid_log,*) '*** No tracers for dummy process (dry Atmosphere)'
80 
81  if ( mp_type /= 'DRY' ) then
82  write(*,*) 'xxx ATMOS_PHY_MP_TYPE is not DRY. Check!'
83  call prc_mpistop
84  endif
85 
86  qs = -1
87  qa = qa_mp
88 
89  return
90  end subroutine atmos_phy_mp_dry_config
91 
92  !-----------------------------------------------------------------------------
94  subroutine atmos_phy_mp_dry_setup
95  implicit none
96 
97  if( io_l ) write(io_fid_log,*)
98  if( io_l ) write(io_fid_log,*) '++++++ Module[Cloud Microphysics] / Categ[ATMOS PHYSICS] / Origin[SCALElib]'
99  if( io_l ) write(io_fid_log,*) '*** dummy process (dry Atmosphere)'
100 
101  return
102  end subroutine atmos_phy_mp_dry_setup
103 
104  !-----------------------------------------------------------------------------
106  subroutine atmos_phy_mp_dry( &
107  DENS, &
108  MOMZ, &
109  MOMX, &
110  MOMY, &
111  RHOT, &
112  QTRC, &
113  CCN , &
114  EVAPORATE, &
115  SFLX_rain, &
116  SFLX_snow )
118  use scale_tracer, only: &
119  qa
120  use scale_const, only: &
121  undef => const_undef
122  implicit none
123 
124  real(RP), intent(inout) :: dens(ka,ia,ja)
125  real(RP), intent(inout) :: momz(ka,ia,ja)
126  real(RP), intent(inout) :: momx(ka,ia,ja)
127  real(RP), intent(inout) :: momy(ka,ia,ja)
128  real(RP), intent(inout) :: rhot(ka,ia,ja)
129  real(RP), intent(inout) :: qtrc(ka,ia,ja,qa)
130  real(RP), intent(in) :: ccn(ka,ia,ja)
131  real(RP), intent(out) :: evaporate(ka,ia,ja)
132  real(RP), intent(out) :: sflx_rain(ia,ja)
133  real(RP), intent(out) :: sflx_snow(ia,ja)
134  !---------------------------------------------------------------------------
135 
136  if( io_l ) write(io_fid_log,*) '*** Atmos physics step: Cloud microphysics(dummy)'
137 
138  atmos_phy_mp_dry_dens(:) = undef
139 
140  evaporate(:,:,:) = 0.0_rp
141  sflx_rain(:,:) = 0.0_rp
142  sflx_snow(:,:) = 0.0_rp
143 
144  return
145  end subroutine atmos_phy_mp_dry
146 
147  !-----------------------------------------------------------------------------
149  subroutine atmos_phy_mp_dry_cloudfraction( &
150  cldfrac, &
151  QTRC, &
152  mask_criterion )
154  use scale_tracer, only: &
155  qa
156  implicit none
157 
158  real(RP), intent(out) :: cldfrac(ka,ia,ja)
159  real(RP), intent(in) :: qtrc (ka,ia,ja,qa)
160  real(RP), intent(in) :: mask_criterion ! not used
161  !---------------------------------------------------------------------------
162 
163  cldfrac(:,:,:) = 0.0_rp ! dummy
164 
165  return
166  end subroutine atmos_phy_mp_dry_cloudfraction
167 
168  !-----------------------------------------------------------------------------
171  Re, &
172  QTRC0, &
173  DENS0, &
174  TEMP0 )
176  use scale_tracer, only: &
177  qa
178  use scale_atmos_hydrometeor, only: &
179  n_hyd
180  implicit none
181 
182  real(RP), intent(out) :: re (ka,ia,ja,n_hyd) ! effective radius [cm]
183  real(RP), intent(in) :: qtrc0(ka,ia,ja,qa) ! tracer mass concentration [kg/kg]
184  real(RP), intent(in) :: dens0(ka,ia,ja) ! density [kg/m3]
185  real(RP), intent(in) :: temp0(ka,ia,ja) ! temperature [K]
186  !---------------------------------------------------------------------------
187 
188  re = 0.0_rp
189 
190  return
191  end subroutine atmos_phy_mp_dry_effectiveradius
192  !-----------------------------------------------------------------------------
194  subroutine atmos_phy_mp_dry_mixingratio( &
195  Qe, &
196  QTRC0 )
198  use scale_tracer, only: &
199  qa
200  use scale_atmos_hydrometeor, only: &
201  n_hyd
202  implicit none
203 
204  real(RP), intent(out) :: qe (ka,ia,ja,n_hyd) ! mixing ratio of each cateory [kg/kg]
205  real(RP), intent(in) :: qtrc0(ka,ia,ja,qa) ! tracer mass concentration [kg/kg]
206  !---------------------------------------------------------------------------
207 
208  qe = 0.0_rp
209 
210  return
211  end subroutine atmos_phy_mp_dry_mixingratio
212 
213 end module scale_atmos_phy_mp_dry
subroutine, public atmos_phy_mp_dry_cloudfraction(cldfrac, QTRC, mask_criterion)
Calculate Cloud Fraction.
subroutine, public prc_mpistop
Abort MPI.
logical, public io_l
output log or not? (this process)
Definition: scale_stdio.F90:61
module STDIO
Definition: scale_stdio.F90:12
integer, public qa
character(len=h_short), dimension(qa_mp), target, public atmos_phy_mp_dry_unit
subroutine, public atmos_phy_mp_dry(DENS, MOMZ, MOMX, MOMY, RHOT, QTRC, CCN, EVAPORATE, SFLX_rain, SFLX_snow)
Cloud Microphysics.
character(len=h_mid), dimension(qa_mp), target, public atmos_phy_mp_dry_desc
character(len=h_short), dimension(qa_mp), target, public atmos_phy_mp_dry_name
real(rp), public const_undef
Definition: scale_const.F90:43
module grid index
module TRACER
integer, public ia
of whole cells: x, local, with HALO
module ATMOSPHERE / Physics Cloud Microphysics
integer, public ka
of whole cells: z, local, with HALO
subroutine, public atmos_phy_mp_dry_setup
Setup.
module PROCESS
module CONSTANT
Definition: scale_const.F90:14
real(rp), dimension(n_hyd), target, public atmos_phy_mp_dry_dens
subroutine, public atmos_phy_mp_dry_config(MP_TYPE, QA, QS)
Configure.
module profiler
Definition: scale_prof.F90:10
integer, parameter, public qa_mp
module PRECISION
integer, public io_fid_log
Log file ID.
Definition: scale_stdio.F90:56
integer, parameter, public n_hyd
subroutine, public atmos_phy_mp_dry_mixingratio(Qe, QTRC0)
Calculate mixing ratio of each category.
integer, public ja
of whole cells: y, local, with HALO
subroutine, public atmos_phy_mp_dry_effectiveradius(Re, QTRC0, DENS0, TEMP0)
Calculate Effective Radius.