SCALE-RM
scale_atmos_phy_mp_sdm.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 
26  !-----------------------------------------------------------------------------
27  implicit none
28  private
29  !-----------------------------------------------------------------------------
30  !
31  !++ Public procedure
32  !
33  public :: atmos_phy_mp_sdm_setup
34  public :: atmos_phy_mp_sdm
35 
39 
40  !-----------------------------------------------------------------------------
41  !
42  !++ Public parameters & variables
43  !
44  real(RP), public, target :: atmos_phy_mp_dens(mp_qa) ! hydrometeor density [kg/m3]=[g/L]
45 
46  !-----------------------------------------------------------------------------
47  !
48  !++ Private procedure
49  !
50  !-----------------------------------------------------------------------------
51  !
52  !++ Private parameters & variables
53  !
54  !-----------------------------------------------------------------------------
55 contains
56  !-----------------------------------------------------------------------------
58  !-----------------------------------------------------------------------------
59  subroutine atmos_phy_mp_sdm_setup( MP_TYPE )
60  use scale_process, only: &
62  implicit none
63  character(len=H_SHORT), intent(in) :: MP_TYPE
64  !---------------------------------------------------------------------------
65 
66  if( io_l ) write(io_fid_log,*)
67  if( io_l ) write(io_fid_log,*) '*** SDM not supported.'
68  if( io_l ) write(io_fid_log,*) '*** Please contact SCALE developers'
69  call prc_mpistop
70 
71  return
72  end subroutine atmos_phy_mp_sdm_setup
73 
74  !-----------------------------------------------------------------------------
76  !-----------------------------------------------------------------------------
77  subroutine atmos_phy_mp_sdm( &
78  DENS, &
79  MOMZ, &
80  MOMX, &
81  MOMY, &
82  RHOT, &
83  QTRC, &
84  CCN, &
85  EVAPORATE, &
86  SFLX_rain, &
87  SFLX_snow )
89  use scale_tracer, only: &
90  qad => qa
91  use scale_process, only: &
93  implicit none
94 
95  real(RP), intent(inout) :: DENS(ka,ia,ja)
96  real(RP), intent(inout) :: MOMZ(ka,ia,ja)
97  real(RP), intent(inout) :: MOMX(ka,ia,ja)
98  real(RP), intent(inout) :: MOMY(ka,ia,ja)
99  real(RP), intent(inout) :: RHOT(ka,ia,ja)
100  real(RP), intent(inout) :: QTRC(ka,ia,ja,qad)
101  real(RP), intent(in) :: CCN (ka,ia,ja)
102  real(RP), intent(out) :: EVAPORATE(ka,ia,ja) !---- evaporated cloud number concentration [/m3]
103  real(RP), intent(out) :: SFLX_rain(ia,ja)
104  real(RP), intent(out) :: SFLX_snow(ia,ja)
105  !---------------------------------------------------------------------------
106 
107  if( io_l ) write(io_fid_log,*)
108  if( io_l ) write(io_fid_log,*) '*** SDM not supported.'
109  if( io_l ) write(io_fid_log,*) '*** Please contact SCALE developers'
110  call prc_mpistop
111 
112  return
113  end subroutine atmos_phy_mp_sdm
114 
115  !-----------------------------------------------------------------------------
117  subroutine atmos_phy_mp_sdm_cloudfraction( &
118  cldfrac, &
119  QTRC, &
120  mask_criterion )
122  use scale_tracer, only: &
123  qad => qa
124  implicit none
125 
126  real(RP), intent(out) :: cldfrac(ka,ia,ja)
127  real(RP), intent(in) :: QTRC (ka,ia,ja,qad)
128  real(RP), intent(in) :: mask_criterion ! not used
129  !---------------------------------------------------------------------------
130 
131  cldfrac(:,:,:) = 0.0_rp ! dummy
132 
133  return
134  end subroutine atmos_phy_mp_sdm_cloudfraction
135 
136  !-----------------------------------------------------------------------------
139  Re, &
140  QTRC0, &
141  DENS0, &
142  TEMP0 )
144  use scale_tracer, only: &
145  qad => qa, &
146  mp_qad => mp_qa
147  implicit none
148 
149  real(RP), intent(out) :: Re (ka,ia,ja,mp_qad) ! effective radius
150  real(RP), intent(in) :: QTRC0(ka,ia,ja,qad) ! tracer mass concentration [kg/kg]
151  real(RP), intent(in) :: DENS0(ka,ia,ja) ! Density [kg/m3]
152  real(RP), intent(in) :: TEMP0(ka,ia,ja) ! Temperatuer [K]
153  !---------------------------------------------------------------------------
154 
155  re(:,:,:,:) = 8.e-6_rp ! dummy
156 
157  return
158  end subroutine atmos_phy_mp_sdm_effectiveradius
159  !-----------------------------------------------------------------------------
161  subroutine atmos_phy_mp_sdm_mixingratio( &
162  Qe, &
163  QTRC0 )
164  use scale_const, only: &
165  eps => const_eps
166  use scale_grid_index
167  use scale_tracer, only: &
168  qad => qa, &
169  mp_qad => mp_qa
170  implicit none
171 
172  real(RP), intent(out) :: Qe (ka,ia,ja,mp_qad) ! mixing ratio of each cateory [kg/kg]
173  real(RP), intent(in) :: QTRC0(ka,ia,ja,qad) ! tracer mass concentration [kg/kg]
174 
175  integer :: ihydro
176  !---------------------------------------------------------------------------
177 
178  do ihydro = 1, mp_qa
179  qe(:,:,:,ihydro) = 8.e-6_rp ! dummy
180  enddo
181 
182  return
183 
184  end subroutine atmos_phy_mp_sdm_mixingratio
185 
186 end module scale_atmos_phy_mp_sdm
subroutine, public atmos_phy_mp_sdm_mixingratio(Qe, QTRC0)
Calculate mixing ratio of each category.
subroutine, public atmos_phy_mp_sdm_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:59
module STDIO
Definition: scale_stdio.F90:12
integer, parameter, public mp_qa
integer, public qa
module grid index
module TRACER
integer, public ia
of x whole cells (local, with HALO)
integer, public mp_qa
integer, public ka
of z whole cells (local, with HALO)
module PROCESS
real(rp), dimension(mp_qa), target, public atmos_phy_mp_dens
module CONSTANT
Definition: scale_const.F90:14
subroutine, public atmos_phy_mp_sdm(DENS, MOMZ, MOMX, MOMY, RHOT, QTRC, CCN, EVAPORATE, SFLX_rain, SFLX_snow)
Cloud Microphysics.
module profiler
Definition: scale_prof.F90:10
real(rp), public const_eps
small number
Definition: scale_const.F90:36
module ATMOSPHERE / Physics Cloud Microphysics
module PRECISION
subroutine, public atmos_phy_mp_sdm_setup(MP_TYPE)
Setup Cloud Microphysics.
integer, public io_fid_log
Log file ID.
Definition: scale_stdio.F90:56
subroutine, public atmos_phy_mp_sdm_effectiveradius(Re, QTRC0, DENS0, TEMP0)
Calculate Effective Radius.
integer, public ja
of y whole cells (local, with HALO)