SCALE-RM
Functions/Subroutines
scale_atmos_dyn_tinteg_large_rk3 Module Reference

module Atmosphere / Dyn Tinteg More...

Functions/Subroutines

subroutine, public atmos_dyn_tinteg_large_rk3_setup (tinteg_type)
 Setup. More...
 
subroutine, public atmos_dyn_tinteg_large_rk3 (DENS, MOMZ, MOMX, MOMY, RHOT, QTRC, PROG, DENS_av, MOMZ_av, MOMX_av, MOMY_av, RHOT_av, QTRC_av, mflx_hi, tflx_hi, 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, ND_COEF, ND_COEF_Q, ND_ORDER, ND_SFC_FACT, ND_USE_RS, 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, wdamp_coef, divdmp_coef, FLAG_FCT_MOMENTUM, FLAG_FCT_T, FLAG_FCT_TRACER, FLAG_FCT_ALONG_STREAM, USE_AVERAGE, DTL, DTS)
 RK3. More...
 

Detailed Description

module Atmosphere / Dyn Tinteg

Description
Temporal integration in Dynamical core for Atmospheric process three step Runge-Kutta scheme
Author
Team SCALE
History
  • 2016-04-18 (S.Nishizawa) [new]

Function/Subroutine Documentation

◆ atmos_dyn_tinteg_large_rk3_setup()

subroutine, public scale_atmos_dyn_tinteg_large_rk3::atmos_dyn_tinteg_large_rk3_setup ( character(len=*)  tinteg_type)

Setup.

Definition at line 64 of file scale_atmos_dyn_tinteg_large_rk3.F90.

References scale_process::prc_mpistop().

Referenced by scale_atmos_dyn_tinteg_large::atmos_dyn_tinteg_large_setup().

64  use scale_process, only: &
66  implicit none
67 
68  character(len=*) :: tinteg_type
69 
70  integer :: iv
71  !---------------------------------------------------------------------------
72 
73  if ( tinteg_type /= 'RK3' ) then
74  write(*,*) 'xxx TINTEG_LARGE_TYPE is not RK3. Check!'
75  call prc_mpistop
76  end if
77 
78  return
subroutine, public prc_mpistop
Abort MPI.
module PROCESS
Here is the call graph for this function:
Here is the caller graph for this function:

◆ atmos_dyn_tinteg_large_rk3()

subroutine, public scale_atmos_dyn_tinteg_large_rk3::atmos_dyn_tinteg_large_rk3 ( 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,3), intent(out)  mflx_hi,
real(rp), dimension(ka,ia,ja,3), intent(out)  tflx_hi,
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,
real(rp), intent(in)  ND_COEF,
real(rp), intent(in)  ND_COEF_Q,
integer, intent(in)  ND_ORDER,
real(rp), intent(in)  ND_SFC_FACT,
logical, intent(in)  ND_USE_RS,
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), intent(in)  wdamp_coef,
real(rp), intent(in)  divdmp_coef,
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,
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 109 of file scale_atmos_dyn_tinteg_large_rk3.F90.

References scale_atmos_boundary::atmos_boundary_smoother_fact, scale_atmos_dyn_common::atmos_dyn_fct(), scale_atmos_dyn_fvm_flux::atmos_dyn_fvm_fluxx_xyz, scale_atmos_dyn_fvm_flux_ud1::atmos_dyn_fvm_fluxx_xyz_ud1(), scale_atmos_dyn_fvm_flux::atmos_dyn_fvm_fluxy_xyz, scale_atmos_dyn_fvm_flux_ud1::atmos_dyn_fvm_fluxy_xyz_ud1(), scale_atmos_dyn_fvm_flux::atmos_dyn_fvm_fluxz_xyz, scale_atmos_dyn_fvm_flux_ud1::atmos_dyn_fvm_fluxz_xyz_ud1(), scale_atmos_dyn_common::atmos_dyn_numfilter_coef(), scale_atmos_dyn_common::atmos_dyn_numfilter_coef_q(), scale_atmos_dyn_tstep_large::atmos_dyn_tstep_large, scale_atmos_boundary::bnd_qa, scale_const::const_cvdry, scale_const::const_rdry, scale_const::const_rvap, scale_gridtrans::i_uy, scale_gridtrans::i_uyz, scale_gridtrans::i_xv, scale_gridtrans::i_xvz, scale_gridtrans::i_xy, scale_gridtrans::i_xyw, scale_gridtrans::i_xyz, scale_prof::prof_rapend(), scale_prof::prof_rapstart(), and scale_index::va.

Referenced by scale_atmos_dyn_tinteg_large::atmos_dyn_tinteg_large_setup().

109  use scale_const, only: &
110  rdry => const_rdry, &
111  rvap => const_rvap, &
112  cvdry => const_cvdry
113  use scale_comm, only: &
114  comm_vars8, &
115  comm_wait
116  use scale_gridtrans, only: &
117  i_xyz, &
118  i_xyw, &
119  i_uyz, &
120  i_xvz, &
121  i_xy, &
122  i_uy, &
123  i_xv
124  use scale_atmos_dyn_common, only: &
128  use scale_atmos_dyn_fvm_flux_ud1, only: &
132  use scale_atmos_dyn_fvm_flux, only: &
136  use scale_atmos_dyn_tstep_large, only: &
138  use scale_atmos_boundary, only: &
139  bnd_qa, &
140  bnd_smoother_fact => atmos_boundary_smoother_fact
141 #ifdef HIST_TEND
142  use scale_history, only: &
143  hist_in
144 #endif
145  implicit none
146 
147  real(RP), intent(inout) :: DENS(KA,IA,JA)
148  real(RP), intent(inout) :: MOMZ(KA,IA,JA)
149  real(RP), intent(inout) :: MOMX(KA,IA,JA)
150  real(RP), intent(inout) :: MOMY(KA,IA,JA)
151  real(RP), intent(inout) :: RHOT(KA,IA,JA)
152  real(RP), intent(inout) :: QTRC(KA,IA,JA,QA)
153 
154  real(RP), intent(inout) :: PROG(KA,IA,JA,VA)
155 
156  real(RP), intent(inout) :: DENS_av(KA,IA,JA)
157  real(RP), intent(inout) :: MOMZ_av(KA,IA,JA)
158  real(RP), intent(inout) :: MOMX_av(KA,IA,JA)
159  real(RP), intent(inout) :: MOMY_av(KA,IA,JA)
160  real(RP), intent(inout) :: RHOT_av(KA,IA,JA)
161  real(RP), intent(inout) :: QTRC_av(KA,IA,JA,QA)
162 
163  real(RP), intent(out) :: mflx_hi(KA,IA,JA,3)
164  real(RP), intent(out) :: tflx_hi(KA,IA,JA,3)
165 
166  real(RP), intent(out) :: num_diff(KA,IA,JA,5,3)
167  real(RP), intent(out) :: num_diff_q(KA,IA,JA,3)
168 
169  real(RP), intent(in) :: DENS_tp(KA,IA,JA)
170  real(RP), intent(in) :: MOMZ_tp(KA,IA,JA)
171  real(RP), intent(in) :: MOMX_tp(KA,IA,JA)
172  real(RP), intent(in) :: MOMY_tp(KA,IA,JA)
173  real(RP), intent(in) :: RHOT_tp(KA,IA,JA)
174  real(RP), intent(in) :: RHOQ_tp(KA,IA,JA,QA)
175 
176  real(RP), intent(in) :: CORIOLI(IA,JA)
177 
178  real(RP), intent(in) :: CDZ (KA)
179  real(RP), intent(in) :: CDX (IA)
180  real(RP), intent(in) :: CDY (JA)
181  real(RP), intent(in) :: FDZ (KA-1)
182  real(RP), intent(in) :: FDX (IA-1)
183  real(RP), intent(in) :: FDY (JA-1)
184  real(RP), intent(in) :: RCDZ(KA)
185  real(RP), intent(in) :: RCDX(IA)
186  real(RP), intent(in) :: RCDY(JA)
187  real(RP), intent(in) :: RFDZ(KA-1)
188  real(RP), intent(in) :: RFDX(IA-1)
189  real(RP), intent(in) :: RFDY(JA-1)
190 
191  real(RP), intent(in) :: PHI (KA,IA,JA)
192  real(RP), intent(in) :: GSQRT(KA,IA,JA,7)
193  real(RP), intent(in) :: J13G (KA,IA,JA,7)
194  real(RP), intent(in) :: J23G (KA,IA,JA,7)
195  real(RP), intent(in) :: J33G
196  real(RP), intent(in) :: MAPF (IA,JA,2,4)
197 
198  real(RP), intent(in) :: AQ_R (QA)
199  real(RP), intent(in) :: AQ_CV (QA)
200  real(RP), intent(in) :: AQ_CP (QA)
201  real(RP), intent(in) :: AQ_MASS(QA)
202 
203  real(RP), intent(in) :: REF_dens(KA,IA,JA)
204  real(RP), intent(in) :: REF_pott(KA,IA,JA)
205  real(RP), intent(in) :: REF_qv (KA,IA,JA)
206  real(RP), intent(in) :: REF_pres(KA,IA,JA)
207 
208  logical, intent(in) :: BND_W
209  logical, intent(in) :: BND_E
210  logical, intent(in) :: BND_S
211  logical, intent(in) :: BND_N
212 
213  real(RP), intent(in) :: ND_COEF
214  real(RP), intent(in) :: ND_COEF_Q
215  integer, intent(in) :: ND_ORDER
216  real(RP), intent(in) :: ND_SFC_FACT
217  logical, intent(in) :: ND_USE_RS
218 
219  real(RP), intent(in) :: DAMP_DENS(KA,IA,JA)
220  real(RP), intent(in) :: DAMP_VELZ(KA,IA,JA)
221  real(RP), intent(in) :: DAMP_VELX(KA,IA,JA)
222  real(RP), intent(in) :: DAMP_VELY(KA,IA,JA)
223  real(RP), intent(in) :: DAMP_POTT(KA,IA,JA)
224  real(RP), intent(in) :: DAMP_QTRC(KA,IA,JA,BND_QA)
225 
226  real(RP), intent(in) :: DAMP_alpha_DENS(KA,IA,JA)
227  real(RP), intent(in) :: DAMP_alpha_VELZ(KA,IA,JA)
228  real(RP), intent(in) :: DAMP_alpha_VELX(KA,IA,JA)
229  real(RP), intent(in) :: DAMP_alpha_VELY(KA,IA,JA)
230  real(RP), intent(in) :: DAMP_alpha_POTT(KA,IA,JA)
231  real(RP), intent(in) :: DAMP_alpha_QTRC(KA,IA,JA,BND_QA)
232 
233  real(RP), intent(in) :: wdamp_coef(KA)
234  real(RP), intent(in) :: divdmp_coef
235 
236  logical, intent(in) :: FLAG_FCT_MOMENTUM
237  logical, intent(in) :: FLAG_FCT_T
238  logical, intent(in) :: FLAG_FCT_TRACER
239  logical, intent(in) :: FLAG_FCT_ALONG_STREAM
240 
241  logical, intent(in) :: USE_AVERAGE
242 
243  real(DP), intent(in) :: DTL
244  real(DP), intent(in) :: DTS
245 
246  ! for time integartion
247  real(RP) :: DENS0 (KA,IA,JA)
248  real(RP) :: MOMZ0 (KA,IA,JA)
249  real(RP) :: MOMX0 (KA,IA,JA)
250  real(RP) :: MOMY0 (KA,IA,JA)
251  real(RP) :: RHOT0 (KA,IA,JA)
252  real(RP) :: QTRC0 (KA,IA,JA,QA)
253  real(RP) :: PROG0 (KA,IA,JA,VA)
254 
255  real(DP) :: dtrk
256 
257  logical :: last
258 
259  integer :: n, iq
260 
261  !---------------------------------------------------------------------------
262 
263  call prof_rapstart("DYN_Large_RK3_Prep", 3)
264 
265  !##### SAVE #####
266 !OCL XFILL
267  dens0(:,:,:) = dens(:,:,:)
268 !OCL XFILL
269  momz0(:,:,:) = momz(:,:,:)
270 !OCL XFILL
271  momx0(:,:,:) = momx(:,:,:)
272 !OCL XFILL
273  momy0(:,:,:) = momy(:,:,:)
274 !OCL XFILL
275  rhot0(:,:,:) = rhot(:,:,:)
276 !OCL XFILL
277  qtrc0(:,:,:,:) = qtrc(:,:,:,:)
278 
279  if ( va > 0 ) then
280 !OCL XFILL
281  prog0(:,:,:,:) = prog(:,:,:,:)
282  end if
283 
284  call prof_rapend ("DYN_Large_RK3_Prep", 3)
285 
286  !------------------------------------------------------------------------
287  ! Start RK
288  !------------------------------------------------------------------------
289 
290  call prof_rapstart("DYN_Large_RK3", 3)
291 
292  do n = 1, 3
293 
294  dtrk = dtl / real( 4-n, kind=dp )
295  last = n == 3
296 
297  if ( n > 1 ) then
298  dens = dens0
299  momz = momz0
300  momx = momx0
301  momy = momy0
302  rhot = rhot0
303  if ( va > 0 ) prog = prog0
304  end if
305 
306  call atmos_dyn_tstep_large( &
307  dens, momz, momx, momy, rhot, qtrc, prog, & ! (inout)
308  dens_av, momz_av, momx_av, momy_av, rhot_av, qtrc_av, & ! (inout)
309  mflx_hi, tflx_hi, & ! (out)
310  num_diff, num_diff_q, & ! (out)
311  qtrc0, & ! (in)
312  dens_tp, momz_tp, momx_tp, momy_tp, rhot_tp, rhoq_tp, & ! (in)
313  corioli, & ! (in)
314  cdz, cdx, cdy, fdz, fdx, fdy, & ! (in)
315  rcdz, rcdx, rcdy, rfdz, rfdx, rfdy, & ! (in)
316  phi, gsqrt, & ! (in)
317  j13g, j23g, j33g, mapf, & ! (in)
318  aq_r, aq_cv, aq_cp, aq_mass, & ! (in)
319  ref_dens, ref_pott, ref_qv, ref_pres, & ! (in)
320  bnd_w, bnd_e, bnd_s, bnd_n, & ! (in)
321  nd_coef, nd_coef_q, nd_order, nd_sfc_fact, nd_use_rs, & ! (in)
322  damp_dens, damp_velz, damp_velx, & ! (in)
323  damp_vely, damp_pott, damp_qtrc, & ! (in)
324  damp_alpha_dens, damp_alpha_velz, damp_alpha_velx, & ! (in)
325  damp_alpha_vely, damp_alpha_pott, damp_alpha_qtrc, & ! (in)
326  wdamp_coef, & ! (in)
327  divdmp_coef, & ! (in)
328  flag_fct_momentum, flag_fct_t, flag_fct_tracer, & ! (in)
329  flag_fct_along_stream, & ! (in)
330  use_average .AND. last, & ! (in)
331  dtrk, dts, last ) ! (in)
332 
333  end do
334 
335  call prof_rapend ("DYN_Large_RK3", 3)
336 
337  return
integer, public i_xvz
real(rp), public const_cvdry
specific heat (dry air,constant volume) [J/kg/K]
Definition: scale_const.F90:59
subroutine, public atmos_dyn_fvm_fluxy_xyz_ud1(flux, mflx, val, GSQRT, num_diff, CDZ, IIS, IIE, JJS, JJE)
calculation Y-flux at XYZ
subroutine, public atmos_dyn_numfilter_coef_q(num_diff_q, DENS, QTRC, CDZ, CDX, CDY, dt, REF_qv, iq, ND_COEF, ND_ORDER, ND_SFC_FACT, ND_USE_RS)
Calc coefficient of numerical filter.
integer, public va
Definition: scale_index.F90:38
subroutine, public atmos_dyn_fvm_fluxz_xyz_ud1(flux, mflx, val, GSQRT, num_diff, CDZ, IIS, IIE, JJS, JJE)
calculation z-flux at XYZ
subroutine, public atmos_dyn_numfilter_coef(num_diff, DENS, MOMZ, MOMX, MOMY, RHOT, CDZ, CDX, CDY, FDZ, FDX, FDY, DT, REF_dens, REF_pott, ND_COEF, ND_ORDER, ND_SFC_FACT, ND_USE_RS)
Calc coefficient of numerical filter.
procedure(flux_phi), pointer, public atmos_dyn_fvm_fluxx_xyz
integer, public i_xy
module Atmosphere / Dynamical scheme
real(rp), public const_rdry
specific gas constant (dry air) [J/kg/K]
Definition: scale_const.F90:57
module GRIDTRANS
integer, public i_uy
integer, public i_xyw
module COMMUNICATION
Definition: scale_comm.F90:23
module Atmosphere / Dynamics common
real(rp), parameter, public const_rvap
specific gas constant (water vapor) [J/kg/K]
Definition: scale_const.F90:65
module CONSTANT
Definition: scale_const.F90:14
integer, public i_xv
module scale_atmos_dyn_fvm_flux
integer, public i_uyz
subroutine, public atmos_dyn_fct(qflx_anti, phi_in, DENS0, DENS, qflx_hi, qflx_lo, mflx_hi, rdz, rdx, rdy, GSQRT, MAPF, dt, flag_vect)
Flux Correction Transport Limiter.
module ATMOSPHERE / Boundary treatment
module HISTORY
integer, public i_xyz
procedure(flux_phi), pointer, public atmos_dyn_fvm_fluxz_xyz
integer, parameter, public dp
procedure(flux_phi), pointer, public atmos_dyn_fvm_fluxy_xyz
procedure(large), pointer, public atmos_dyn_tstep_large
subroutine, public atmos_dyn_fvm_fluxx_xyz_ud1(flux, mflx, val, GSQRT, num_diff, CDZ, IIS, IIE, JJS, JJE)
calculation X-flux at XYZ
module scale_atmos_dyn_fvm_flux_ud1
real(rp), public atmos_boundary_smoother_fact
Here is the call graph for this function:
Here is the caller graph for this function: