SCALE-RM
scale_atmos_dyn_tinteg_tracer.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  use scale_index
22  use scale_tracer
23  !-----------------------------------------------------------------------------
24  implicit none
25  private
26  !-----------------------------------------------------------------------------
27  !
28  !++ Public procedure
29  !
31 
33  abstract interface
34  subroutine tinteg( &
35  QTRC, & ! (out)
36  qflx, & ! (out)
37  qtrc0, rhoq_t, &! (in)
38  dens0, dens, & ! (in)
39  mflx_hi, num_diff, & ! (in)
40  gsqrt, mapf, & ! (in)
41  cdz, rcdz, rcdx, rcdy, & ! (in)
42  bnd_w, bnd_e, bnd_s, bnd_n, & ! (in)
43  twod, & ! (in)
44  dtl, & ! (in)
45  flag_fct_tracer, & ! (in)
46  flag_fct_along_stream ) ! (in)
47  use scale_precision
49  use scale_index
50  real(RP), intent(inout) :: QTRC (KA,IA,JA)
51  real(RP), intent(out) :: qflx (KA,IA,JA,3)
52  real(RP), intent(in) :: QTRC0 (KA,IA,JA)
53  real(RP), intent(in) :: RHOQ_t (KA,IA,JA)
54  real(RP), intent(in) :: DENS0 (KA,IA,JA)
55  real(RP), intent(in) :: DENS (KA,IA,JA)
56  real(RP), intent(in) :: mflx_hi (KA,IA,JA,3)
57  real(RP), intent(in) :: num_diff(KA,IA,JA,3)
58  real(RP), intent(in) :: GSQRT (KA,IA,JA,7)
59  real(RP), intent(in) :: MAPF (IA,JA)
60  real(RP), intent(in) :: CDZ(KA)
61  real(RP), intent(in) :: RCDZ(KA)
62  real(RP), intent(in) :: RCDX(IA)
63  real(RP), intent(in) :: RCDY(JA)
64  logical, intent(in) :: BND_W
65  logical, intent(in) :: BND_E
66  logical, intent(in) :: BND_S
67  logical, intent(in) :: BND_N
68  logical, intent(in) :: TwoD
69  real(RP), intent(in) :: dtl
70  logical, intent(in) :: FLAG_FCT_TRACER
71  logical, intent(in) :: FLAG_FCT_ALONG_STREAM
72  end subroutine tinteg
73  end interface
74  procedure(tinteg), pointer :: atmos_dyn_tinteg_tracer => null()
75  public :: atmos_dyn_tinteg_tracer
76 
77  !-----------------------------------------------------------------------------
78  !
79  !++ Public parameters & variables
80  !
81  !-----------------------------------------------------------------------------
82  !
83  !++ Private procedure
84  !
85  !-----------------------------------------------------------------------------
86  !
87  !++ Private parameters & variables
88  !
89  !-----------------------------------------------------------------------------
90 contains
91  !-----------------------------------------------------------------------------
93  subroutine atmos_dyn_tinteg_tracer_setup( &
94  ATMOS_DYN_Tinteg_tracer_TYPE )
95 
96  use scale_precision
98  use scale_index
99  use scale_prc, only: &
100  prc_abort
110  implicit none
111  character(len=*), intent(in) :: atmos_dyn_tinteg_tracer_type
112 
113  character(len=H_SHORT) :: tinteg_type
114  !---------------------------------------------------------------------------
115 
116 
117  if (atmos_dyn_tinteg_tracer_type(1:5) == 'LINRK') then
118  tinteg_type = 'LINRK'
119  else
120  tinteg_type = atmos_dyn_tinteg_tracer_type
121  end if
122 
123  select case( tinteg_type )
124  case( 'EULER' )
126  atmos_dyn_tinteg_tracer_type )
128  case( 'RK3WS2002' )
130  atmos_dyn_tinteg_tracer_type )
132  case( 'LINRK' )
134  atmos_dyn_tinteg_tracer_type )
136  case( 'OFF', 'NONE' )
137  ! do nothing
138  case default
139  log_error("ATMOS_DYN_Tinteg_tracer_setup",*) 'ATMOS_DYN_TINTEG_TRACER_TYPE is invalid: ', atmos_dyn_tinteg_tracer_type
140  call prc_abort
141  end select
142 
143  return
144  end subroutine atmos_dyn_tinteg_tracer_setup
145 
scale_atmos_dyn_tinteg_tracer_linrk
module Atmosphere / Dyn Tinteg
Definition: scale_atmos_dyn_tinteg_tracer_linrk.F90:17
scale_prc::prc_abort
subroutine, public prc_abort
Abort Process.
Definition: scale_prc.F90:342
scale_atmos_dyn_tinteg_tracer::atmos_dyn_tinteg_tracer
procedure(tinteg), pointer, public atmos_dyn_tinteg_tracer
Definition: scale_atmos_dyn_tinteg_tracer.F90:74
scale_atmos_dyn_tinteg_tracer_rk3::atmos_dyn_tinteg_tracer_rk3_setup
subroutine, public atmos_dyn_tinteg_tracer_rk3_setup(tinteg_type)
Setup.
Definition: scale_atmos_dyn_tinteg_tracer_rk3.F90:65
scale_index
module Index
Definition: scale_index.F90:11
scale_atmos_dyn_tinteg_tracer_rk3
module Atmosphere / Dyn Tinteg
Definition: scale_atmos_dyn_tinteg_tracer_rk3.F90:13
scale_atmos_dyn_tinteg_tracer_euler
module Atmosphere / Dyn Tinteg
Definition: scale_atmos_dyn_tinteg_tracer_euler.F90:13
scale_precision
module PRECISION
Definition: scale_precision.F90:14
scale_atmos_dyn_tinteg_tracer_linrk::atmos_dyn_tinteg_tracer_linrk
subroutine, public atmos_dyn_tinteg_tracer_linrk(QTRC, qflx, QTRC0, RHOQ_t, DENS0, DENS, mflx_hi, num_diff, GSQRT, MAPF, CDZ, RCDZ, RCDX, RCDY, BND_W, BND_E, BND_S, BND_N, TwoD, dtl, FLAG_FCT_TRACER, FLAG_FCT_ALONG_STREAM)
linear case RK
Definition: scale_atmos_dyn_tinteg_tracer_linrk.F90:105
scale_prc
module PROCESS
Definition: scale_prc.F90:11
scale_io
module STDIO
Definition: scale_io.F90:10
scale_atmos_grid_cartesc_index
module atmosphere / grid / cartesC index
Definition: scale_atmos_grid_cartesC_index.F90:12
scale_atmos_dyn_tinteg_tracer_euler::atmos_dyn_tinteg_tracer_euler
subroutine, public atmos_dyn_tinteg_tracer_euler(QTRC, qflx, QTRC0, RHOQ_t, DENS0, DENS, mflx_hi, num_diff, GSQRT, MAPF, CDZ, RCDZ, RCDX, RCDY, BND_W, BND_E, BND_S, BND_N, TwoD, dtl, FLAG_FCT_TRACER, FLAG_FCT_ALONG_STREAM)
EULER.
Definition: scale_atmos_dyn_tinteg_tracer_euler.F90:93
scale_atmos_dyn_tinteg_tracer_rk3::atmos_dyn_tinteg_tracer_rk3
subroutine, public atmos_dyn_tinteg_tracer_rk3(QTRC, qflx, QTRC0, RHOQ_t, DENS0, DENS, mflx_hi, num_diff, GSQRT, MAPF, CDZ, RCDZ, RCDX, RCDY, BND_W, BND_E, BND_S, BND_N, TwoD, dtl, FLAG_FCT_TRACER, FLAG_FCT_ALONG_STREAM)
RK3.
Definition: scale_atmos_dyn_tinteg_tracer_rk3.F90:109
scale_prof
module profiler
Definition: scale_prof.F90:11
scale_atmos_dyn_tinteg_tracer_linrk::atmos_dyn_tinteg_tracer_linrk_setup
subroutine, public atmos_dyn_tinteg_tracer_linrk_setup(tinteg_type)
Setup.
Definition: scale_atmos_dyn_tinteg_tracer_linrk.F90:69
scale_atmos_dyn_tinteg_tracer_euler::atmos_dyn_tinteg_tracer_euler_setup
subroutine, public atmos_dyn_tinteg_tracer_euler_setup(tinteg_type)
Setup.
Definition: scale_atmos_dyn_tinteg_tracer_euler.F90:61
scale_tracer
module TRACER
Definition: scale_tracer.F90:12
scale_atmos_dyn_tinteg_tracer
module Atmosphere / Dynamics Temporal integration
Definition: scale_atmos_dyn_tinteg_tracer.F90:12
scale_atmos_dyn_tinteg_tracer::atmos_dyn_tinteg_tracer_setup
subroutine, public atmos_dyn_tinteg_tracer_setup(ATMOS_DYN_Tinteg_tracer_TYPE)
Register.
Definition: scale_atmos_dyn_tinteg_tracer.F90:95