SCALE-RM
scale_atmos_dyn_tstep_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 
35  abstract interface
36 
37  subroutine step( &
38  QTRCo, & ! (out)
39  qtrc, qtrc0, rhoq_t, &! (in)
40  dens00, 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(out) :: qtrco (ka,ia,ja)
51  real(RP), intent(in) :: 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) :: dens00 (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,2)
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  real(RP), intent(in) :: dtl
65  logical, intent(in) :: flag_fct_tracer
66  logical, intent(in) :: flag_fct_along_stream
67  end subroutine step
68 
69  end interface
70 
71  procedure(step), pointer :: atmos_dyn_tstep_tracer => null()
72  public :: atmos_dyn_tstep_tracer
73 
74  !-----------------------------------------------------------------------------
75  !
76  !++ Public parameters & variables
77  !
78  !-----------------------------------------------------------------------------
79  !
80  !++ Private procedure
81  !
82  !-----------------------------------------------------------------------------
83  !
84  !++ Private parameters & variables
85  !
86  !-----------------------------------------------------------------------------
87 contains
88  !-----------------------------------------------------------------------------
90  subroutine atmos_dyn_tstep_tracer_setup( &
91  ATMOS_DYN_TSTEP_TRACER_TYPE )
94  use scale_index
95  use scale_process, only: &
100  implicit none
101  character(len=*), intent(in) :: ATMOS_DYN_TSTEP_TRACER_TYPE
102  !---------------------------------------------------------------------------
103 
104  select case ( atmos_dyn_tstep_tracer_type )
105  case ( 'FVM-HEVE', 'HEVE' )
107  atmos_dyn_tstep_tracer_type )
109  case default
110  write(*,*) 'xxx ATMOS_DYN_TSTEP_TRACER_TYPE is invalid: ', atmos_dyn_tstep_tracer_type
111  call prc_mpistop
112  end select
113 
114  return
115  end subroutine atmos_dyn_tstep_tracer_setup
116 
subroutine, public prc_mpistop
Abort MPI.
subroutine, public atmos_dyn_tstep_tracer_fvm_heve(QTRCo, QTRC, QTRC0, RHOQ_t, DENS0, DENS, mflx_hi, num_diff, GSQRT, MAPF, CDZ, RCDZ, RCDX, RCDY, dtl, FLAG_FCT_TRACER, FLAG_FCT_ALONG_STREAM)
subroutine, public atmos_dyn_tstep_tracer_setup(ATMOS_DYN_TSTEP_TRACER_TYPE)
Register.
module STDIO
Definition: scale_stdio.F90:12
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)
module PROCESS
subroutine, public atmos_dyn_tstep_tracer_fvm_heve_setup(type)
Setup.
module profiler
Definition: scale_prof.F90:10
module PRECISION
procedure(step), pointer, public atmos_dyn_tstep_tracer
module Atmosphere / Dynamical scheme
integer, public ja
of y whole cells (local, with HALO)