SCALE-RM
scale_atmos_dyn_tinteg_tracer.F90
Go to the documentation of this file.
1 !-------------------------------------------------------------------------------
13 !-------------------------------------------------------------------------------
14 #include "inc_openmp.h"
16  !-----------------------------------------------------------------------------
17  !
18  !++ used modules
19  !
20  use scale_precision
21  use scale_stdio
22  use scale_prof
24  use scale_index
25  use scale_tracer
26  !-----------------------------------------------------------------------------
27  implicit none
28  private
29  !-----------------------------------------------------------------------------
30  !
31  !++ Public procedure
32  !
34 
36  abstract interface
37  subroutine tinteg( &
38  QTRC, & ! (out)
39  qtrc0, rhoq_t, &! (in)
40  dens0, dens, & ! (in)
41  mflx_hi, num_diff, & ! (in)
42  gsqrt, mapf, & ! (in)
43  cdz, rcdz, rcdx, rcdy, & ! (in)
44  bnd_w, bnd_e, bnd_s, bnd_n, & ! (in)
45  dtl, & ! (in)
46  flag_fct_tracer, & ! (in)
47  flag_fct_along_stream ) ! (in)
48  use scale_precision
50  use scale_index
51  real(RP), intent(inout) :: QTRC (KA,IA,JA)
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  real(RP), intent(in) :: dtl
69  logical, intent(in) :: FLAG_FCT_TRACER
70  logical, intent(in) :: FLAG_FCT_ALONG_STREAM
71  end subroutine tinteg
72  end interface
73  procedure(tinteg), pointer :: atmos_dyn_tinteg_tracer => null()
74  public :: atmos_dyn_tinteg_tracer
75 
76  !-----------------------------------------------------------------------------
77  !
78  !++ Public parameters & variables
79  !
80  !-----------------------------------------------------------------------------
81  !
82  !++ Private procedure
83  !
84  !-----------------------------------------------------------------------------
85  !
86  !++ Private parameters & variables
87  !
88  !-----------------------------------------------------------------------------
89 contains
90  !-----------------------------------------------------------------------------
92  subroutine atmos_dyn_tinteg_tracer_setup( &
93  ATMOS_DYN_Tinteg_tracer_TYPE )
94 
95  use scale_precision
97  use scale_index
98  use scale_process, only: &
106  implicit none
107  character(len=*), intent(in) :: atmos_dyn_tinteg_tracer_type
108  !---------------------------------------------------------------------------
109 
110  select case( atmos_dyn_tinteg_tracer_type )
111  case( 'EULER' )
113  atmos_dyn_tinteg_tracer_type )
115  case( 'RK3WS2002' )
117  atmos_dyn_tinteg_tracer_type )
119  case( 'OFF', 'NONE' )
120  ! do nothing
121  case default
122  write(*,*) 'xxx ATMOS_DYN_TINTEG_TRACER_TYPE is invalid: ', atmos_dyn_tinteg_tracer_type
123  call prc_mpistop
124  end select
125 
126  return
127  end subroutine atmos_dyn_tinteg_tracer_setup
128 
subroutine, public prc_mpistop
Abort MPI.
module Atmosphere / Dynamics Temporal integration
module STDIO
Definition: scale_stdio.F90:12
subroutine, public atmos_dyn_tinteg_tracer_euler(QTRC, QTRC0, RHOQ_t, DENS0, DENS, mflx_hi, num_diff, GSQRT, MAPF, CDZ, RCDZ, RCDX, RCDY, BND_W, BND_E, BND_S, BND_N, dtl, FLAG_FCT_TRACER, FLAG_FCT_ALONG_STREAM)
EULER.
subroutine, public atmos_dyn_tinteg_tracer_euler_setup(tinteg_type)
Setup.
module grid index
module TRACER
module Index
Definition: scale_index.F90:14
procedure(tinteg), pointer, public atmos_dyn_tinteg_tracer
module PROCESS
module profiler
Definition: scale_prof.F90:10
module PRECISION
subroutine, public atmos_dyn_tinteg_tracer_rk3_setup(tinteg_type)
Setup.
subroutine, public atmos_dyn_tinteg_tracer_setup(ATMOS_DYN_Tinteg_tracer_TYPE)
Register.
subroutine, public atmos_dyn_tinteg_tracer_rk3(QTRC, QTRC0, RHOQ_t, DENS0, DENS, mflx_hi, num_diff, GSQRT, MAPF, CDZ, RCDZ, RCDX, RCDY, BND_W, BND_E, BND_S, BND_N, dtl, FLAG_FCT_TRACER, FLAG_FCT_ALONG_STREAM)
RK3.