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  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(in) :: qtrc0 (ka,ia,ja)
52  real(RP), intent(in) :: rhoq_t (ka,ia,ja)
53  real(RP), intent(in) :: dens0 (ka,ia,ja)
54  real(RP), intent(in) :: dens (ka,ia,ja)
55  real(RP), intent(in) :: mflx_hi (ka,ia,ja,3)
56  real(RP), intent(in) :: num_diff(ka,ia,ja,3)
57  real(RP), intent(in) :: gsqrt (ka,ia,ja,7)
58  real(RP), intent(in) :: mapf (ia,ja)
59  real(RP), intent(in) :: cdz(ka)
60  real(RP), intent(in) :: rcdz(ka)
61  real(RP), intent(in) :: rcdx(ia)
62  real(RP), intent(in) :: rcdy(ja)
63  real(RP), intent(in) :: dtl
64  logical, intent(in) :: flag_fct_tracer
65  logical, intent(in) :: flag_fct_along_stream
66  end subroutine tinteg
67  end interface
68  procedure(tinteg), pointer :: atmos_dyn_tinteg_tracer => null()
69  public :: atmos_dyn_tinteg_tracer
70 
71  !-----------------------------------------------------------------------------
72  !
73  !++ Public parameters & variables
74  !
75  !-----------------------------------------------------------------------------
76  !
77  !++ Private procedure
78  !
79  !-----------------------------------------------------------------------------
80  !
81  !++ Private parameters & variables
82  !
83  !-----------------------------------------------------------------------------
84 contains
85  !-----------------------------------------------------------------------------
87  subroutine atmos_dyn_tinteg_tracer_setup( &
88  ATMOS_DYN_Tinteg_tracer_TYPE )
89 
90  use scale_precision
92  use scale_index
93  use scale_process, only: &
101  implicit none
102  character(len=*), intent(in) :: ATMOS_DYN_Tinteg_tracer_TYPE
103  !---------------------------------------------------------------------------
104 
105  select case ( atmos_dyn_tinteg_tracer_type )
106  case ( 'EULER' )
108  atmos_dyn_tinteg_tracer_type )
110  case ( 'RK3WS2002' )
112  atmos_dyn_tinteg_tracer_type )
114  case ( 'OFF', 'NONE' )
115  ! do nothing
116  case default
117  write(*,*) 'xxx ATMOS_DYN_TINTEG_TRACER_TYPE is invalid: ', atmos_dyn_tinteg_tracer_type
118  call prc_mpistop
119  end select
120 
121  return
122  end subroutine atmos_dyn_tinteg_tracer_setup
123 
subroutine, public atmos_dyn_tinteg_tracer_rk3(QTRC, QTRC0, RHOQ_t, DENS0, DENS, mflx_hi, num_diff, GSQRT, MAPF, CDZ, RCDZ, RCDX, RCDY, dtl, FLAG_FCT_TRACER, FLAG_FCT_ALONG_STREAM)
RK3.
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_setup(tinteg_type)
Setup.
module grid index
module TRACER
module Index
Definition: scale_index.F90:14
integer, public ia
of x whole cells (local, with HALO)
integer, public ka
of z whole cells (local, with HALO)
procedure(tinteg), pointer, public atmos_dyn_tinteg_tracer
subroutine, public atmos_dyn_tinteg_tracer_euler(QTRC, QTRC0, RHOQ_t, DENS0, DENS, mflx_hi, num_diff, GSQRT, MAPF, CDZ, RCDZ, RCDX, RCDY, dtl, FLAG_FCT_TRACER, FLAG_FCT_ALONG_STREAM)
EULER.
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.
integer, public ja
of y whole cells (local, with HALO)