SCALE-RM
scale_atmos_dyn_tinteg_short.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 short( &
38  DENS, MOMZ, MOMX, MOMY, RHOT, PROG, & ! (inout)
39  mflx_hi, tflx_hi, & ! (inout)
40  dens_t, momz_t, momx_t, momy_t, rhot_t, & ! (in)
41  rtot, cvtot, corioli, & ! (in)
42  num_diff, wdamp_coef, divdmp_coef, ddiv, & ! (in)
43  flag_fct_momentum, flag_fct_t, & ! (in)
44  flag_fct_along_stream, & ! (in)
45  cdz, fdz, fdx, fdy, & ! (in)
46  rcdz, rcdx, rcdy, rfdz, rfdx, rfdy, & ! (in)
47  phi, gsqrt, j13g, j23g, j33g, mapf, & ! (in)
48  ref_pres, ref_dens, & ! (in)
49  bnd_w, bnd_e, bnd_s, bnd_n, & ! (in)
50  dt ) ! (in)
51  use scale_precision
53  use scale_index
54  real(RP), intent(inout) :: DENS(KA,IA,JA)
55  real(RP), intent(inout) :: MOMZ(KA,IA,JA)
56  real(RP), intent(inout) :: MOMX(KA,IA,JA)
57  real(RP), intent(inout) :: MOMY(KA,IA,JA)
58  real(RP), intent(inout) :: RHOT(KA,IA,JA)
59  real(RP), intent(inout) :: PROG(KA,IA,JA,VA)
60 
61  real(RP), intent(inout) :: mflx_hi(KA,IA,JA,3)
62  real(RP), intent(inout) :: tflx_hi(KA,IA,JA,3)
63 
64  real(RP), intent(in) :: DENS_t(KA,IA,JA)
65  real(RP), intent(in) :: MOMZ_t(KA,IA,JA)
66  real(RP), intent(in) :: MOMX_t(KA,IA,JA)
67  real(RP), intent(in) :: MOMY_t(KA,IA,JA)
68  real(RP), intent(in) :: RHOT_t(KA,IA,JA)
69 
70  real(RP), intent(in) :: Rtot(KA,IA,JA)
71  real(RP), intent(in) :: CVtot(KA,IA,JA)
72  real(RP), intent(in) :: CORIOLI(IA,JA)
73 
74  real(RP), intent(in) :: num_diff(KA,IA,JA,5,3)
75  real(RP), intent(in) :: wdamp_coef(KA)
76  real(RP), intent(in) :: divdmp_coef
77  real(RP), intent(in) :: DDIV(KA,IA,JA)
78 
79  logical, intent(in) :: FLAG_FCT_MOMENTUM
80  logical, intent(in) :: FLAG_FCT_T
81  logical, intent(in) :: FLAG_FCT_ALONG_STREAM
82 
83  real(RP), intent(in) :: CDZ (KA)
84  real(RP), intent(in) :: FDZ (KA-1)
85  real(RP), intent(in) :: FDX (IA-1)
86  real(RP), intent(in) :: FDY (JA-1)
87  real(RP), intent(in) :: RCDZ(KA)
88  real(RP), intent(in) :: RCDX(IA)
89  real(RP), intent(in) :: RCDY(JA)
90  real(RP), intent(in) :: RFDZ(KA-1)
91  real(RP), intent(in) :: RFDX(IA-1)
92  real(RP), intent(in) :: RFDY(JA-1)
93 
94  real(RP), intent(in) :: PHI (KA,IA,JA)
95  real(RP), intent(in) :: GSQRT(KA,IA,JA,7)
96  real(RP), intent(in) :: J13G (KA,IA,JA,7)
97  real(RP), intent(in) :: J23G (KA,IA,JA,7)
98  real(RP), intent(in) :: J33G
99  real(RP), intent(in) :: MAPF (IA,JA,2,4)
100 
101  real(RP), intent(in) :: REF_pres(KA,IA,JA)
102  real(RP), intent(in) :: REF_dens(KA,IA,JA)
103 
104  logical, intent(in) :: BND_W
105  logical, intent(in) :: BND_E
106  logical, intent(in) :: BND_S
107  logical, intent(in) :: BND_N
108 
109  real(RP), intent(in) :: dt
110  end subroutine short
111  end interface
112  procedure(short), pointer :: atmos_dyn_tinteg_short => null()
113  public :: atmos_dyn_tinteg_short
114 
115  !-----------------------------------------------------------------------------
116  !
117  !++ Public parameters & variables
118  !
119  !-----------------------------------------------------------------------------
120  !
121  !++ Private procedure
122  !
123  !-----------------------------------------------------------------------------
124  !
125  !++ Private parameters & variables
126  !
127  !-----------------------------------------------------------------------------
128 contains
129  !-----------------------------------------------------------------------------
131  subroutine atmos_dyn_tinteg_short_setup( &
132  ATMOS_DYN_Tinteg_short_TYPE )
134  use scale_precision
135  use scale_grid_index
136  use scale_index
137  use scale_process, only: &
145  implicit none
146 
147  character(len=*), intent(in) :: atmos_dyn_tinteg_short_type
148  !---------------------------------------------------------------------------
149 
150  select case( atmos_dyn_tinteg_short_type )
151  case( 'RK3', 'RK3WS2002' )
153  atmos_dyn_tinteg_short_type )
155  case( 'RK4' )
157  atmos_dyn_tinteg_short_type )
159  case( 'OFF', 'NONE' )
160  ! do nothing
161  case default
162  write(*,*) 'xxx ATMOS_DYN_TINTEG_SHORT_TYPE is invalid: ', atmos_dyn_tinteg_short_type
163  call prc_mpistop
164  end select
165 
166  return
167  end subroutine atmos_dyn_tinteg_short_setup
168 
subroutine, public prc_mpistop
Abort MPI.
subroutine, public atmos_dyn_tinteg_short_rk4_setup(tinteg_type)
Setup.
module STDIO
Definition: scale_stdio.F90:12
module Atmosphere / Dynamics Temporal integration
module grid index
module TRACER
module Index
Definition: scale_index.F90:14
subroutine, public atmos_dyn_tinteg_short_rk3(DENS, MOMZ, MOMX, MOMY, RHOT, PROG, mflx_hi, tflx_hi, DENS_t, MOMZ_t, MOMX_t, MOMY_t, RHOT_t, Rtot, CVtot, CORIOLI, num_diff, wdamp_coef, divdmp_coef, DDIV, FLAG_FCT_MOMENTUM, FLAG_FCT_T, FLAG_FCT_ALONG_STREAM, CDZ, FDZ, FDX, FDY, RCDZ, RCDX, RCDY, RFDZ, RFDX, RFDY, PHI, GSQRT, J13G, J23G, J33G, MAPF, REF_pres, REF_dens, BND_W, BND_E, BND_S, BND_N, dt)
RK3.
module PROCESS
subroutine, public atmos_dyn_tinteg_short_rk3_setup(tinteg_type)
Setup.
module profiler
Definition: scale_prof.F90:10
module PRECISION
subroutine, public atmos_dyn_tinteg_short_rk4(DENS, MOMZ, MOMX, MOMY, RHOT, PROG, mflx_hi, tflx_hi, DENS_t, MOMZ_t, MOMX_t, MOMY_t, RHOT_t, Rtot, CVtot, CORIOLI, num_diff, wdamp_coef, divdmp_coef, DDIV, FLAG_FCT_MOMENTUM, FLAG_FCT_T, FLAG_FCT_ALONG_STREAM, CDZ, FDZ, FDX, FDY, RCDZ, RCDX, RCDY, RFDZ, RFDX, RFDY, PHI, GSQRT, J13G, J23G, J33G, MAPF, REF_pres, REF_dens, BND_W, BND_E, BND_S, BND_N, dt)
RK3.
subroutine, public atmos_dyn_tinteg_short_setup(ATMOS_DYN_Tinteg_short_TYPE)
Register.
procedure(short), pointer, public atmos_dyn_tinteg_short