SCALE-RM
Functions/Subroutines
scale_atmos_dyn_tinteg_large_euler Module Reference

module Atmosphere / Dyn Tinteg More...

Functions/Subroutines

subroutine, public atmos_dyn_tinteg_large_euler_setup (tinteg_type)
 Setup. More...
 
subroutine, public atmos_dyn_tinteg_large_euler (DENS, MOMZ, MOMX, MOMY, RHOT, QTRC, PROG, DENS_av, MOMZ_av, MOMX_av, MOMY_av, RHOT_av, QTRC_av, num_diff, num_diff_q, DENS_tp, MOMZ_tp, MOMX_tp, MOMY_tp, RHOT_tp, RHOQ_tp, CORIOLI, CDZ, CDX, CDY, FDZ, FDX, FDY, RCDZ, RCDX, RCDY, RFDZ, RFDX, RFDY, PHI, GSQRT, J13G, J23G, J33G, MAPF, AQ_R, AQ_CV, AQ_CP, AQ_MASS, REF_dens, REF_pott, REF_qv, REF_pres, BND_W, BND_E, BND_S, BND_N, TwoD, ND_COEF, ND_COEF_Q, ND_LAPLACIAN_NUM, ND_SFC_FACT, ND_USE_RS, BND_QA, BND_IQ, BND_SMOOTHER_FACT, DAMP_DENS, DAMP_VELZ, DAMP_VELX, DAMP_VELY, DAMP_POTT, DAMP_QTRC, DAMP_alpha_DENS, DAMP_alpha_VELZ, DAMP_alpha_VELX, DAMP_alpha_VELY, DAMP_alpha_POTT, DAMP_alpha_QTRC, MFLUX_OFFSET_X, MFLUX_OFFSET_Y, wdamp_coef, divdmp_coef, FLAG_TRACER_SPLIT_TEND, FLAG_FCT_MOMENTUM, FLAG_FCT_T, FLAG_FCT_TRACER, FLAG_FCT_ALONG_STREAM, USE_AVERAGE, I_QV, DTL, DTS)
 RK3. More...
 

Detailed Description

module Atmosphere / Dyn Tinteg

Description
Temporal integration in Dynamical core for Atmospheric process the Euler scheme
Author
Team SCALE

Function/Subroutine Documentation

◆ atmos_dyn_tinteg_large_euler_setup()

subroutine, public scale_atmos_dyn_tinteg_large_euler::atmos_dyn_tinteg_large_euler_setup ( character(len=*)  tinteg_type)

Setup.

Definition at line 61 of file scale_atmos_dyn_tinteg_large_euler.F90.

61  use scale_prc, only: &
62  prc_abort
63  use scale_const, only: &
64  undef => const_undef
65  implicit none
66 
67  character(len=*) :: tinteg_type
68 
69  integer :: iv
70  !---------------------------------------------------------------------------
71 
72  if ( tinteg_type /= 'EULER' ) then
73  log_error("ATMOS_DYN_Tinteg_large_euler_setup",*) 'TINTEG_LARGE_TYPE is not EULER. Check!'
74  call prc_abort
75  end if
76 
77  return

References scale_const::const_undef, and scale_prc::prc_abort().

Referenced by scale_atmos_dyn_tinteg_large::atmos_dyn_tinteg_large_setup().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ atmos_dyn_tinteg_large_euler()

subroutine, public scale_atmos_dyn_tinteg_large_euler::atmos_dyn_tinteg_large_euler ( real(rp), dimension(ka,ia,ja), intent(inout)  DENS,
real(rp), dimension(ka,ia,ja), intent(inout)  MOMZ,
real(rp), dimension(ka,ia,ja), intent(inout)  MOMX,
real(rp), dimension(ka,ia,ja), intent(inout)  MOMY,
real(rp), dimension(ka,ia,ja), intent(inout)  RHOT,
real(rp), dimension(ka,ia,ja,qa), intent(inout)  QTRC,
real(rp), dimension(ka,ia,ja,va), intent(inout)  PROG,
real(rp), dimension(ka,ia,ja), intent(inout)  DENS_av,
real(rp), dimension(ka,ia,ja), intent(inout)  MOMZ_av,
real(rp), dimension(ka,ia,ja), intent(inout)  MOMX_av,
real(rp), dimension(ka,ia,ja), intent(inout)  MOMY_av,
real(rp), dimension(ka,ia,ja), intent(inout)  RHOT_av,
real(rp), dimension(ka,ia,ja,qa), intent(inout)  QTRC_av,
real(rp), dimension (ka,ia,ja,5,3), intent(out)  num_diff,
real(rp), dimension(ka,ia,ja,3), intent(out)  num_diff_q,
real(rp), dimension(ka,ia,ja), intent(in)  DENS_tp,
real(rp), dimension(ka,ia,ja), intent(in)  MOMZ_tp,
real(rp), dimension(ka,ia,ja), intent(in)  MOMX_tp,
real(rp), dimension(ka,ia,ja), intent(in)  MOMY_tp,
real(rp), dimension(ka,ia,ja), intent(in)  RHOT_tp,
real(rp), dimension(ka,ia,ja,qa), intent(in)  RHOQ_tp,
real(rp), dimension(ia,ja), intent(in)  CORIOLI,
real(rp), dimension (ka), intent(in)  CDZ,
real(rp), dimension (ia), intent(in)  CDX,
real(rp), dimension (ja), intent(in)  CDY,
real(rp), dimension (ka-1), intent(in)  FDZ,
real(rp), dimension (ia-1), intent(in)  FDX,
real(rp), dimension (ja-1), intent(in)  FDY,
real(rp), dimension(ka), intent(in)  RCDZ,
real(rp), dimension(ia), intent(in)  RCDX,
real(rp), dimension(ja), intent(in)  RCDY,
real(rp), dimension(ka-1), intent(in)  RFDZ,
real(rp), dimension(ia-1), intent(in)  RFDX,
real(rp), dimension(ja-1), intent(in)  RFDY,
real(rp), dimension (ka,ia,ja), intent(in)  PHI,
real(rp), dimension(ka,ia,ja,7), intent(in)  GSQRT,
real(rp), dimension (ka,ia,ja,7), intent(in)  J13G,
real(rp), dimension (ka,ia,ja,7), intent(in)  J23G,
real(rp), intent(in)  J33G,
real(rp), dimension (ia,ja,2,4), intent(in)  MAPF,
real(rp), dimension (qa), intent(in)  AQ_R,
real(rp), dimension (qa), intent(in)  AQ_CV,
real(rp), dimension (qa), intent(in)  AQ_CP,
real(rp), dimension(qa), intent(in)  AQ_MASS,
real(rp), dimension(ka,ia,ja), intent(in)  REF_dens,
real(rp), dimension(ka,ia,ja), intent(in)  REF_pott,
real(rp), dimension (ka,ia,ja), intent(in)  REF_qv,
real(rp), dimension(ka,ia,ja), intent(in)  REF_pres,
logical, intent(in)  BND_W,
logical, intent(in)  BND_E,
logical, intent(in)  BND_S,
logical, intent(in)  BND_N,
logical, intent(in)  TwoD,
real(rp), intent(in)  ND_COEF,
real(rp), intent(in)  ND_COEF_Q,
integer, intent(in)  ND_LAPLACIAN_NUM,
real(rp), intent(in)  ND_SFC_FACT,
logical, intent(in)  ND_USE_RS,
integer, intent(in)  BND_QA,
integer, dimension(qa), intent(in)  BND_IQ,
real(rp), intent(in)  BND_SMOOTHER_FACT,
real(rp), dimension(ka,ia,ja), intent(in)  DAMP_DENS,
real(rp), dimension(ka,ia,ja), intent(in)  DAMP_VELZ,
real(rp), dimension(ka,ia,ja), intent(in)  DAMP_VELX,
real(rp), dimension(ka,ia,ja), intent(in)  DAMP_VELY,
real(rp), dimension(ka,ia,ja), intent(in)  DAMP_POTT,
real(rp), dimension(ka,ia,ja,bnd_qa), intent(in)  DAMP_QTRC,
real(rp), dimension(ka,ia,ja), intent(in)  DAMP_alpha_DENS,
real(rp), dimension(ka,ia,ja), intent(in)  DAMP_alpha_VELZ,
real(rp), dimension(ka,ia,ja), intent(in)  DAMP_alpha_VELX,
real(rp), dimension(ka,ia,ja), intent(in)  DAMP_alpha_VELY,
real(rp), dimension(ka,ia,ja), intent(in)  DAMP_alpha_POTT,
real(rp), dimension(ka,ia,ja,bnd_qa), intent(in)  DAMP_alpha_QTRC,
real(rp), dimension(ka,ja,2), intent(in)  MFLUX_OFFSET_X,
real(rp), dimension(ka,ia,2), intent(in)  MFLUX_OFFSET_Y,
real(rp), dimension(ka), intent(in)  wdamp_coef,
real(rp), intent(in)  divdmp_coef,
logical, intent(in)  FLAG_TRACER_SPLIT_TEND,
logical, intent(in)  FLAG_FCT_MOMENTUM,
logical, intent(in)  FLAG_FCT_T,
logical, intent(in)  FLAG_FCT_TRACER,
logical, intent(in)  FLAG_FCT_ALONG_STREAM,
logical, intent(in)  USE_AVERAGE,
integer, intent(in)  I_QV,
real(dp), intent(in)  DTL,
real(dp), intent(in)  DTS 
)

RK3.

Parameters
[in]phigeopotential
[in]gsqrtvertical metrics {G}^1/2
[in]j13g(1,3) element of Jacobian matrix
[in]j23g(2,3) element of Jacobian matrix
[in]j33g(3,3) element of Jacobian matrix
[in]mapfmap factor
[in]ref_presreference pressure

Definition at line 110 of file scale_atmos_dyn_tinteg_large_euler.F90.

110 
111  use scale_atmos_dyn_tstep_large, only: &
113 
114  implicit none
115 
116  real(RP), intent(inout) :: DENS(KA,IA,JA)
117  real(RP), intent(inout) :: MOMZ(KA,IA,JA)
118  real(RP), intent(inout) :: MOMX(KA,IA,JA)
119  real(RP), intent(inout) :: MOMY(KA,IA,JA)
120  real(RP), intent(inout) :: RHOT(KA,IA,JA)
121  real(RP), intent(inout) :: QTRC(KA,IA,JA,QA)
122  real(RP), intent(inout) :: PROG(KA,IA,JA,VA)
123 
124  real(RP), intent(inout) :: DENS_av(KA,IA,JA)
125  real(RP), intent(inout) :: MOMZ_av(KA,IA,JA)
126  real(RP), intent(inout) :: MOMX_av(KA,IA,JA)
127  real(RP), intent(inout) :: MOMY_av(KA,IA,JA)
128  real(RP), intent(inout) :: RHOT_av(KA,IA,JA)
129  real(RP), intent(inout) :: QTRC_av(KA,IA,JA,QA)
130 
131  real(RP), intent(out) :: num_diff (KA,IA,JA,5,3)
132  real(RP), intent(out) :: num_diff_q(KA,IA,JA,3)
133 
134  real(RP), intent(in) :: DENS_tp(KA,IA,JA)
135  real(RP), intent(in) :: MOMZ_tp(KA,IA,JA)
136  real(RP), intent(in) :: MOMX_tp(KA,IA,JA)
137  real(RP), intent(in) :: MOMY_tp(KA,IA,JA)
138  real(RP), intent(in) :: RHOT_tp(KA,IA,JA)
139  real(RP), intent(in) :: RHOQ_tp(KA,IA,JA,QA)
140 
141  real(RP), intent(in) :: CORIOLI(IA,JA)
142 
143  real(RP), intent(in) :: CDZ (KA)
144  real(RP), intent(in) :: CDX (IA)
145  real(RP), intent(in) :: CDY (JA)
146  real(RP), intent(in) :: FDZ (KA-1)
147  real(RP), intent(in) :: FDX (IA-1)
148  real(RP), intent(in) :: FDY (JA-1)
149  real(RP), intent(in) :: RCDZ(KA)
150  real(RP), intent(in) :: RCDX(IA)
151  real(RP), intent(in) :: RCDY(JA)
152  real(RP), intent(in) :: RFDZ(KA-1)
153  real(RP), intent(in) :: RFDX(IA-1)
154  real(RP), intent(in) :: RFDY(JA-1)
155 
156  real(RP), intent(in) :: PHI (KA,IA,JA)
157  real(RP), intent(in) :: GSQRT(KA,IA,JA,7)
158  real(RP), intent(in) :: J13G (KA,IA,JA,7)
159  real(RP), intent(in) :: J23G (KA,IA,JA,7)
160  real(RP), intent(in) :: J33G
161  real(RP), intent(in) :: MAPF (IA,JA,2,4)
162 
163  real(RP), intent(in) :: AQ_R (QA)
164  real(RP), intent(in) :: AQ_CV (QA)
165  real(RP), intent(in) :: AQ_CP (QA)
166  real(RP), intent(in) :: AQ_MASS(QA)
167 
168  real(RP), intent(in) :: REF_dens(KA,IA,JA)
169  real(RP), intent(in) :: REF_pott(KA,IA,JA)
170  real(RP), intent(in) :: REF_qv (KA,IA,JA)
171  real(RP), intent(in) :: REF_pres(KA,IA,JA)
172 
173  logical, intent(in) :: BND_W
174  logical, intent(in) :: BND_E
175  logical, intent(in) :: BND_S
176  logical, intent(in) :: BND_N
177  logical, intent(in) :: TwoD
178 
179  real(RP), intent(in) :: ND_COEF
180  real(RP), intent(in) :: ND_COEF_Q
181  integer, intent(in) :: ND_LAPLACIAN_NUM
182  real(RP), intent(in) :: ND_SFC_FACT
183  logical, intent(in) :: ND_USE_RS
184 
185  integer, intent(in) :: BND_QA
186  integer, intent(in) :: BND_IQ(QA)
187  real(RP), intent(in) :: BND_SMOOTHER_FACT
188 
189  real(RP), intent(in) :: DAMP_DENS(KA,IA,JA)
190  real(RP), intent(in) :: DAMP_VELZ(KA,IA,JA)
191  real(RP), intent(in) :: DAMP_VELX(KA,IA,JA)
192  real(RP), intent(in) :: DAMP_VELY(KA,IA,JA)
193  real(RP), intent(in) :: DAMP_POTT(KA,IA,JA)
194  real(RP), intent(in) :: DAMP_QTRC(KA,IA,JA,BND_QA)
195 
196  real(RP), intent(in) :: DAMP_alpha_DENS(KA,IA,JA)
197  real(RP), intent(in) :: DAMP_alpha_VELZ(KA,IA,JA)
198  real(RP), intent(in) :: DAMP_alpha_VELX(KA,IA,JA)
199  real(RP), intent(in) :: DAMP_alpha_VELY(KA,IA,JA)
200  real(RP), intent(in) :: DAMP_alpha_POTT(KA,IA,JA)
201  real(RP), intent(in) :: DAMP_alpha_QTRC(KA,IA,JA,BND_QA)
202  real(RP), intent(in) :: MFLUX_OFFSET_X(KA,JA,2)
203  real(RP), intent(in) :: MFLUX_OFFSET_Y(KA,IA,2)
204 
205  real(RP), intent(in) :: wdamp_coef(KA)
206  real(RP), intent(in) :: divdmp_coef
207 
208  logical, intent(in) :: FLAG_TRACER_SPLIT_TEND
209  logical, intent(in) :: FLAG_FCT_MOMENTUM
210  logical, intent(in) :: FLAG_FCT_T
211  logical, intent(in) :: FLAG_FCT_TRACER
212  logical, intent(in) :: FLAG_FCT_ALONG_STREAM
213 
214  logical, intent(in) :: USE_AVERAGE
215 
216  integer, intent(in) :: I_QV
217 
218  real(DP), intent(in) :: DTL
219  real(DP), intent(in) :: DTS
220 
221  real(RP) :: QTRC0(KA,IA,JA,QA)
222 
223  !$acc data copy(QTRC) create(QTRC0)
224 
225  !$omp workshare
226  !$acc kernels
227  qtrc0(:,:,:,:) = qtrc(:,:,:,:)
228  !$acc end kernels
229  !$omp end workshare
230 
231 
232  call atmos_dyn_tstep_large( &
233  dens, momz, momx, momy, rhot, qtrc, prog, & ! (inout)
234  dens_av, momz_av, momx_av, momy_av, rhot_av, qtrc_av, & ! (inout)
235  num_diff, num_diff_q, & ! (out, work)
236  qtrc0, & ! (in)
237  dens_tp, momz_tp, momx_tp, momy_tp, rhot_tp, rhoq_tp, & ! (in)
238  corioli, & ! (in)
239  cdz, cdx, cdy, fdz, fdx, fdy, & ! (in)
240  rcdz, rcdx, rcdy, rfdz, rfdx, rfdy, & ! (in)
241  phi, gsqrt, & ! (in)
242  j13g, j23g, j33g, mapf, & ! (in)
243  aq_r, aq_cv, aq_cp, aq_mass, & ! (in)
244  ref_dens, ref_pott, ref_qv, ref_pres, & ! (in)
245  bnd_w, bnd_e, bnd_s, bnd_n, twod, & ! (in)
246  nd_coef, nd_coef_q, nd_laplacian_num, & ! (in)
247  nd_sfc_fact, nd_use_rs, & ! (in)
248  bnd_qa, bnd_iq, bnd_smoother_fact, & ! (in)
249  damp_dens, damp_velz, damp_velx, & ! (in)
250  damp_vely, damp_pott, damp_qtrc, & ! (in)
251  damp_alpha_dens, damp_alpha_velz, damp_alpha_velx, & ! (in)
252  damp_alpha_vely, damp_alpha_pott, damp_alpha_qtrc, & ! (in)
253  mflux_offset_x, mflux_offset_y, & ! (in)
254  wdamp_coef, divdmp_coef, & ! (in)
255  flag_tracer_split_tend, & ! (in)
256  flag_fct_momentum, flag_fct_t, flag_fct_tracer, & ! (in)
257  flag_fct_along_stream, & ! (in)
258  use_average, & ! (in)
259  i_qv, & ! (in)
260  dtl, dts, .true. ) ! (in)
261 
262  !$acc end data
263 
264  return

References scale_atmos_dyn_tstep_large::atmos_dyn_tstep_large.

Referenced by scale_atmos_dyn_tinteg_large::atmos_dyn_tinteg_large_setup().

Here is the caller graph for this function:
scale_prc::prc_abort
subroutine, public prc_abort
Abort Process.
Definition: scale_prc.F90:350
scale_atmos_dyn_tstep_large::atmos_dyn_tstep_large
procedure(large), pointer, public atmos_dyn_tstep_large
Definition: scale_atmos_dyn_tstep_large.F90:181
scale_prc
module PROCESS
Definition: scale_prc.F90:11
scale_const
module CONSTANT
Definition: scale_const.F90:11
scale_atmos_dyn_tstep_large
module Atmosphere / Dynamical scheme
Definition: scale_atmos_dyn_tstep_large.F90:12
scale_const::const_undef
real(rp), public const_undef
Definition: scale_const.F90:43