SCALE-RM
Functions/Subroutines | Variables
scale_tracer Module Reference

module TRACER More...

Functions/Subroutines

subroutine, public tracer_regist (QS, NQ, NAME, DESC, UNIT, CV, CP, R, ADVC, MASS)
 Regist tracer. More...
 

Variables

integer, public qa = 0
 
real(rp), dimension(qa_max), public tracer_cp
 
real(rp), dimension(qa_max), public tracer_cv
 
real(rp), dimension(qa_max), public tracer_r
 
real(rp), dimension(qa_max), public tracer_mass
 
logical, dimension(qa_max), public tracer_advc
 
character(len=h_short), dimension(qa_max), public tracer_name
 
character(len=h_mid), dimension(qa_max), public tracer_desc
 
character(len=h_short), dimension(qa_max), public tracer_unit
 

Detailed Description

module TRACER

Description
Tracer module
Author
Team SCALE
History
  • 2013-12-04 (S.Nishizawa) [new]
  • 2016-08-02 (S.Nishizawa) [mod] add register

Function/Subroutine Documentation

◆ tracer_regist()

subroutine, public scale_tracer::tracer_regist ( integer, intent(out)  QS,
integer, intent(in)  NQ,
character(len=*), dimension(nq), intent(in)  NAME,
character(len=*), dimension(nq), intent(in)  DESC,
character(len=*), dimension(nq), intent(in)  UNIT,
real(rp), dimension (nq), intent(in), optional  CV,
real(rp), dimension (nq), intent(in), optional  CP,
real(rp), dimension (nq), intent(in), optional  R,
logical, dimension(nq), intent(in), optional  ADVC,
logical, dimension(nq), intent(in), optional  MASS 
)

Regist tracer.

Parameters
[in]advcif .true., the tracer is advected in the dynamical process. (default is .true.)
[in]massif .true., the tracer has mass. (default is .false.)

Definition at line 64 of file scale_tracer.F90.

References scale_stdio::io_fid_log, scale_stdio::io_l, scale_process::prc_mpistop(), qa, tracer_advc, tracer_cp, tracer_cv, tracer_desc, tracer_mass, tracer_name, tracer_r, and tracer_unit.

Referenced by scale_atmos_hydrometeor::atmos_hydrometeor_regist(), scale_atmos_phy_ae_kajino13::atmos_phy_ae_kajino13_config(), scale_atmos_phy_mp_sn14::atmos_phy_mp_sn14_config(), scale_atmos_phy_mp_suzuki10::atmos_phy_mp_suzuki10_config(), scale_atmos_phy_tb_d1980::atmos_phy_tb_d1980_config(), scale_atmos_phy_tb_mynn::atmos_phy_tb_mynn_config(), scale_atmos_phy_tb_smg::atmos_phy_tb_smg_config(), and mod_user::user_config().

64  use scale_process, only: &
66  implicit none
67 
68  integer, intent(out) :: QS
69  integer, intent(in) :: NQ
70  character(len=*), intent(in) :: NAME(NQ)
71  character(len=*), intent(in) :: DESC(NQ)
72  character(len=*), intent(in) :: UNIT(NQ)
73  real(RP), intent(in), optional :: CV (NQ)
74  real(RP), intent(in), optional :: CP (NQ)
75  real(RP), intent(in), optional :: R (NQ)
76  logical, intent(in), optional :: ADVC(NQ)
77  logical, intent(in), optional :: MASS(NQ)
78 
79  real(RP) :: CV_ (NQ)
80  real(RP) :: CP_ (NQ)
81  real(RP) :: R_ (NQ)
82  logical :: ADVC_(NQ)
83  logical :: MASS_(NQ)
84 
85  character(len=24) :: NAME_trim
86 
87  integer :: n
88  !---------------------------------------------------------------------------
89 
90  if ( qa + nq > qa_max ) then
91  write(*,*) 'xxx total number of tracer must be less or equal to ', qa_max
92  call prc_mpistop
93  end if
94 
95  if ( present(cv) ) then
96  cv_(:) = cv(:)
97  else
98  cv_(:) = 0.0_rp
99  end if
100 
101  if ( present(cp) ) then
102  cp_(:) = cp(:)
103  else
104  cp_(:) = 0.0_rp
105  end if
106 
107  if ( present(r) ) then
108  r_(:) = r(:)
109  else
110  r_(:) = 0.0_rp
111  end if
112 
113  if ( present(advc) ) then
114  advc_(:) = advc(:)
115  else
116  advc_(:) = .true.
117  end if
118 
119  if ( present(mass) ) then
120  mass_(:) = mass(:)
121  else
122  mass_(:) = .false.
123  end if
124 
125  if( io_l ) write(io_fid_log,*)
126  do n = 1, nq
127 
128  name_trim = trim(name(n))
129 
130  if( io_l ) write(io_fid_log,'(1x,A,I3,A,A,A,F6.1,A,F6.1,A,L1,A,L1)') &
131  '] Register tracer : No.', qa+n, &
132  ', NAME = ', name_trim, &
133  ', CV = ', cv_(n), &
134  ', CP = ', cp_(n), &
135  ', ADVC = ', advc_(n), &
136  ', MASS = ', mass_(n)
137 
138  tracer_name(qa+n) = name(n)
139  tracer_desc(qa+n) = desc(n)
140  tracer_unit(qa+n) = unit(n)
141  tracer_cv(qa+n) = cv_(n)
142  tracer_cp(qa+n) = cp_(n)
143  tracer_r(qa+n) = r_(n)
144  tracer_advc(qa+n) = advc_(n)
145 
146  if ( mass_(n) ) then
147  tracer_mass(qa+n) = 1.0_rp
148  else
149  tracer_mass(qa+n) = 0.0_rp
150  end if
151  end do
152 
153  qs = qa + 1
154  qa = qa + nq
155 
156  return
subroutine, public prc_mpistop
Abort MPI.
real(rp), dimension(qa_max), public tracer_r
logical, dimension(qa_max), public tracer_advc
character(len=h_short), dimension(qa_max), public tracer_name
real(rp), dimension(qa_max), public tracer_cv
character(len=h_short), dimension(qa_max), public tracer_unit
real(rp), dimension(qa_max), public tracer_cp
module PROCESS
character(len=h_mid), dimension(qa_max), public tracer_desc
real(rp), dimension(qa_max), public tracer_mass
Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ qa

integer, public scale_tracer::qa = 0

Definition at line 35 of file scale_tracer.F90.

Referenced by scale_atmos_adiabat::atmos_adiabat_liftparcel(), scale_atmos_boundary::atmos_boundary_update(), scale_atmos_diagnostic::atmos_diagnostic_get(), scale_atmos_dyn::atmos_dyn(), scale_atmos_dyn::atmos_dyn_setup(), scale_atmos_dyn_tstep_large_fvm_heve::atmos_dyn_tstep_large_fvm_heve(), scale_atmos_dyn_tstep_large_fvm_heve::atmos_dyn_tstep_large_fvm_heve_setup(), scale_atmos_hydrometeor::atmos_hydrometeor_entr_0d(), scale_atmos_hydrometeor::atmos_hydrometeor_entr_2d(), scale_atmos_hydrometeor::atmos_hydrometeor_entr_3d(), scale_atmos_phy_ae_kajino13::atmos_phy_ae_kajino13(), mod_atmos_phy_ch_driver::atmos_phy_ch_driver(), mod_atmos_phy_ch_vars::atmos_phy_ch_vars_setup(), mod_atmos_phy_mp_driver::atmos_phy_mp_driver(), scale_atmos_phy_mp_dry::atmos_phy_mp_dry(), scale_atmos_phy_mp_dry::atmos_phy_mp_dry_cloudfraction(), scale_atmos_phy_mp_dry::atmos_phy_mp_dry_effectiveradius(), scale_atmos_phy_mp_dry::atmos_phy_mp_dry_mixingratio(), scale_atmos_phy_mp_kessler::atmos_phy_mp_kessler(), scale_atmos_phy_mp_kessler::atmos_phy_mp_kessler_cloudfraction(), scale_atmos_phy_mp_kessler::atmos_phy_mp_kessler_effectiveradius(), scale_atmos_phy_mp_kessler::atmos_phy_mp_kessler_mixingratio(), scale_atmos_phy_mp_common::atmos_phy_mp_precipitation(), scale_atmos_phy_mp_common::atmos_phy_mp_saturation_adjustment(), scale_atmos_phy_mp_sdm::atmos_phy_mp_sdm(), scale_atmos_phy_mp_sdm::atmos_phy_mp_sdm_cloudfraction(), scale_atmos_phy_mp_sdm::atmos_phy_mp_sdm_effectiveradius(), scale_atmos_phy_mp_sdm::atmos_phy_mp_sdm_mixingratio(), scale_atmos_phy_mp_sn14::atmos_phy_mp_sn14(), scale_atmos_phy_mp_sn14::atmos_phy_mp_sn14_cloudfraction(), scale_atmos_phy_mp_sn14::atmos_phy_mp_sn14_effectiveradius(), scale_atmos_phy_mp_sn14::atmos_phy_mp_sn14_mixingratio(), scale_atmos_phy_mp_suzuki10::atmos_phy_mp_suzuki10(), scale_atmos_phy_mp_suzuki10::atmos_phy_mp_suzuki10_cloudfraction(), scale_atmos_phy_mp_suzuki10::atmos_phy_mp_suzuki10_effectiveradius(), scale_atmos_phy_mp_suzuki10::atmos_phy_mp_suzuki10_mixingratio(), scale_atmos_phy_mp_suzuki10::atmos_phy_mp_suzuki10_setup(), scale_atmos_phy_mp_tomita08::atmos_phy_mp_tomita08(), scale_atmos_phy_mp_tomita08::atmos_phy_mp_tomita08_cloudfraction(), scale_atmos_phy_mp_tomita08::atmos_phy_mp_tomita08_effectiveradius(), scale_atmos_phy_mp_tomita08::atmos_phy_mp_tomita08_mixingratio(), mod_atmos_phy_sf_driver::atmos_phy_sf_driver(), mod_atmos_phy_sf_vars::atmos_phy_sf_vars_setup(), scale_atmos_phy_tb_d1980::atmos_phy_tb_d1980(), scale_atmos_phy_tb_dns::atmos_phy_tb_dns(), mod_atmos_phy_tb_driver::atmos_phy_tb_driver(), scale_atmos_phy_tb_hybrid::atmos_phy_tb_hybrid(), scale_atmos_phy_tb_mynn::atmos_phy_tb_mynn(), scale_atmos_phy_tb_smg::atmos_phy_tb_smg(), mod_atmos_phy_tb_vars::atmos_phy_tb_vars_setup(), scale_atmos_thermodyn::atmos_thermodyn_setup(), scale_atmos_thermodyn::atmos_thermodyn_tempre(), scale_atmos_thermodyn::atmos_thermodyn_tempre2(), mod_atmos_vars::atmos_vars_fillhalo(), mod_atmos_vars::atmos_vars_history(), mod_atmos_vars::atmos_vars_monitor(), mod_atmos_vars::atmos_vars_restart_check(), mod_atmos_vars::atmos_vars_restart_create(), mod_atmos_vars::atmos_vars_restart_def_var(), mod_atmos_vars::atmos_vars_restart_read(), mod_atmos_vars::atmos_vars_restart_write(), mod_atmos_vars::atmos_vars_setup(), mod_atmos_vars::atmos_vars_total(), scale_atmos_phy_mp_sn14::aut_acc_slc_brk_kij(), scale_comm::comm_setup(), mod_cpl_vars::cpl_getsfc_atm(), scale_atmos_phy_mp_sn14::dep_vapor_melt_ice_kij(), scale_atmos_phy_mp_sn14::freezing_water_kij(), scale_atmos_phy_mp_sn14::ice_multiplication_kij(), scale_atmos_phy_mp_sn14::mixed_phase_collection_kij(), mod_mkinit::mkinit(), scale_atmos_phy_mp_sn14::mp_negativefilter(), scale_atmos_phy_mp_sn14::nucleation_kij(), mod_realinput_grads::parentatominputgrads(), mod_realinput_scale::parentatominputscale(), mod_realinput_wrfarw::parentatominputwrfarw(), mod_realinput::parentatomsetup(), mod_mkinit::read_sounding(), mod_realinput::realinput_atmos(), tracer_regist(), and scale_atmos_phy_mp_sn14::update_by_phase_change_kij().

35  integer, public :: QA = 0

◆ tracer_cp

real(rp), dimension (qa_max), public scale_tracer::tracer_cp

◆ tracer_cv

real(rp), dimension (qa_max), public scale_tracer::tracer_cv

◆ tracer_r

real(rp), dimension (qa_max), public scale_tracer::tracer_r

◆ tracer_mass

real(rp), dimension(qa_max), public scale_tracer::tracer_mass

◆ tracer_advc

logical, dimension(qa_max), public scale_tracer::tracer_advc

◆ tracer_name

character(len=h_short), dimension(qa_max), public scale_tracer::tracer_name

◆ tracer_desc

character(len=h_mid), dimension(qa_max), public scale_tracer::tracer_desc

◆ tracer_unit

character(len=h_short), dimension(qa_max), public scale_tracer::tracer_unit