FV3DYCORE  Version 2.0.0
tp_core_mod Module Reference

The module 'tp_core' is a collection of routines to support FV transport. More...

Functions/Subroutines

subroutine, public fv_tp_2d (q, crx, cry, npx, npy, hord, fx, fy, xfx, yfx, gridstruct, bd, ra_x, ra_y, lim_fac, mfx, mfy, mass, nord, damp_c)
 The subroutine 'fv_tp_2d' contains the FV advection scheme [putman2007finite] [lin1996multiflux]. More...
 
subroutine, public copy_corners (q, npx, npy, dir, bounded_domain, bd, sw_corner, se_corner, nw_corner, ne_corner)
 
subroutine xppm (flux, q, c, iord, is, ie, isd, ied, jfirst, jlast, jsd, jed, npx, npy, dxa, bounded_domain, grid_type, lim_fac)
 
subroutine yppm (flux, q, c, jord, ifirst, ilast, isd, ied, js, je, jsd, jed, npx, npy, dya, bounded_domain, grid_type, lim_fac)
 
subroutine mp_ghost_ew (im, jm, km, nq, ifirst, ilast, jfirst, jlast, kfirst, klast, ng_w, ng_e, ng_s, ng_n, q_ghst, q)
 
subroutine, public pert_ppm (im, a0, al, ar, iv)
 
subroutine deln_flux (nord, is, ie, js, je, npx, npy, damp, q, fx, fy, gridstruct, bd, mass)
 

Variables

real, parameter ppm_fac = 1.5
 nonlinear scheme limiter: between 1 and 2 More...
 
real, parameter r3 = 1./3.
 
real, parameter near_zero = 1.E-25
 
real, parameter ppm_limiter = 2.0
 
real, parameter b1 = 1./30.
 
real, parameter b2 = -13./60.
 
real, parameter b3 = -13./60.
 
real, parameter b4 = 0.45
 
real, parameter b5 = -0.05
 
real, parameter t11 = 27./28.
 
real, parameter t12 = -13./28.
 
real, parameter t13 =3./7.
 
real, parameter s11 = 11./14.
 
real, parameter s14 = 4./7.
 
real, parameter s15 =3./14.
 
real, parameter c1 = -2./14.
 
real, parameter c2 = 11./14.
 
real, parameter c3 = 5./14.
 
real, parameter p1 = 7./12.
 
real, parameter p2 = -1./12.
 

Detailed Description

The module 'tp_core' is a collection of routines to support FV transport.

The module contains the scalar advection scheme and PPM operators.

Function/Subroutine Documentation

◆ copy_corners()

subroutine, public tp_core_mod::copy_corners ( real, dimension(bd%isd:bd%ied,bd%jsd:bd%jed), intent(inout)  q,
integer, intent(in)  npx,
integer, intent(in)  npy,
integer, intent(in)  dir,
logical, intent(in)  bounded_domain,
type(fv_grid_bounds_type), intent(in)  bd,
logical, intent(in)  sw_corner,
logical, intent(in)  se_corner,
logical, intent(in)  nw_corner,
logical, intent(in)  ne_corner 
)

Definition at line 248 of file tp_core.F90.

◆ deln_flux()

subroutine tp_core_mod::deln_flux ( integer, intent(in)  nord,
integer, intent(in)  is,
integer, intent(in)  ie,
integer, intent(in)  js,
integer, intent(in)  je,
integer, intent(in)  npx,
integer, intent(in)  npy,
real, intent(in)  damp,
real, dimension(bd%isd:bd%ied, bd%jsd:bd%jed), intent(in)  q,
real, dimension(bd%is:bd%ie+1,bd%js:bd%je), intent(inout)  fx,
real, dimension(bd%is:bd%ie,bd%js:bd%je+1), intent(inout)  fy,
type(fv_grid_type), intent(in), target  gridstruct,
type(fv_grid_bounds_type), intent(in)  bd,
real, dimension(bd%isd:bd%ied, bd%jsd:bd%jed), intent(in), optional  mass 
)
private
Parameters
[in]bdnord = 0: del-2 nord = 1: del-4 nord = 2: del-6 nord = 3: del-8 –> requires more ghosting than current
[in]norddel-n

Definition at line 1092 of file tp_core.F90.

◆ fv_tp_2d()

subroutine, public tp_core_mod::fv_tp_2d ( real, dimension(bd%isd:bd%ied,bd%jsd:bd%jed), intent(inout)  q,
real, dimension(bd%is:bd%ie+1,bd%jsd:bd%jed), intent(in)  crx,
real, dimension(bd%isd:bd%ied,bd%js:bd%je+1 ), intent(in)  cry,
integer, intent(in)  npx,
integer, intent(in)  npy,
integer, intent(in)  hord,
real, dimension(bd%is:bd%ie+1 ,bd%js:bd%je), intent(out)  fx,
real, dimension(bd%is:bd%ie, bd%js:bd%je+1 ), intent(out)  fy,
real, dimension(bd%is:bd%ie+1,bd%jsd:bd%jed), intent(in)  xfx,
real, dimension(bd%isd:bd%ied,bd%js:bd%je+1 ), intent(in)  yfx,
type(fv_grid_type), intent(in), target  gridstruct,
type(fv_grid_bounds_type), intent(in)  bd,
real, dimension(bd%is:bd%ie,bd%jsd:bd%jed), intent(in)  ra_x,
real, dimension(bd%isd:bd%ied,bd%js:bd%je), intent(in)  ra_y,
real, intent(in)  lim_fac,
real, dimension(bd%is:bd%ie+1,bd%js:bd%je ), intent(in), optional  mfx,
real, dimension(bd%is:bd%ie ,bd%js:bd%je+1), intent(in), optional  mfy,
real, dimension(bd%isd:bd%ied,bd%jsd:bd%jed), intent(in), optional  mass,
integer, intent(in), optional  nord,
real, intent(in), optional  damp_c 
)

The subroutine 'fv_tp_2d' contains the FV advection scheme [putman2007finite] [lin1996multiflux].

It performs 1 time step of the forward advection.

Parameters
[in,out]qtransported scalar
[out]fxFlux in x ( E )
[out]fyFlux in y ( N )
[in]mfxMass Flux X-Dir
[in]mfyMass Flux Y-Dir
[in]nordorder of divergence damping

Definition at line 109 of file tp_core.F90.

◆ mp_ghost_ew()

subroutine tp_core_mod::mp_ghost_ew ( integer, intent(in)  im,
integer, intent(in)  jm,
integer, intent(in)  km,
integer, intent(in)  nq,
integer, intent(in)  ifirst,
integer, intent(in)  ilast,
integer, intent(in)  jfirst,
integer, intent(in)  jlast,
integer, intent(in)  kfirst,
integer, intent(in)  klast,
integer, intent(in)  ng_w,
integer, intent(in)  ng_e,
integer, intent(in)  ng_s,
integer, intent(in)  ng_n,
real, dimension(ifirst-ng_w:ilast+ng_e,jfirst-ng_s:jlast+ng_n,kfirst:klast,nq), intent(inout)  q_ghst,
real, dimension(ifirst:ilast,jfirst:jlast,kfirst:klast,nq), intent(in), optional  q 
)
private
Parameters
[in]ng_eeastern zones to ghost
[in]ng_wwestern zones to ghost
[in]ng_ssouthern zones to ghost
[in]ng_nnorthern zones to ghost

Definition at line 981 of file tp_core.F90.

◆ pert_ppm()

subroutine, public tp_core_mod::pert_ppm ( integer, intent(in)  im,
real, dimension(im), intent(in)  a0,
real, dimension(im), intent(inout)  al,
real, dimension(im), intent(inout)  ar,
integer, intent(in)  iv 
)

Definition at line 1030 of file tp_core.F90.

◆ xppm()

subroutine tp_core_mod::xppm ( real, dimension(is:ie+1,jfirst:jlast), intent(out)  flux,
real, dimension(isd:ied,jfirst:jlast), intent(in)  q,
real, dimension(is:ie+1,jfirst:jlast), intent(in)  c,
integer, intent(in)  iord,
integer, intent(in)  is,
integer, intent(in)  ie,
integer, intent(in)  isd,
integer, intent(in)  ied,
integer, intent(in)  jfirst,
integer, intent(in)  jlast,
integer, intent(in)  jsd,
integer, intent(in)  jed,
integer, intent(in)  npx,
integer, intent(in)  npy,
real, dimension(isd:ied,jsd:jed), intent(in)  dxa,
logical, intent(in)  bounded_domain,
integer, intent(in)  grid_type,
real, intent(in)  lim_fac 
)
private
Parameters
[in]jlastcompute domain
[in]cCourant N (like FLUX)

Definition at line 326 of file tp_core.F90.

◆ yppm()

subroutine tp_core_mod::yppm ( real, dimension(ifirst:ilast,js:je+1), intent(out)  flux,
real, dimension(ifirst:ilast,jsd:jed), intent(in)  q,
real, dimension(isd:ied,js:je+1 ), intent(in)  c,
integer, intent(in)  jord,
integer, intent(in)  ifirst,
integer, intent(in)  ilast,
integer, intent(in)  isd,
integer, intent(in)  ied,
integer, intent(in)  js,
integer, intent(in)  je,
integer, intent(in)  jsd,
integer, intent(in)  jed,
integer, intent(in)  npx,
integer, intent(in)  npy,
real, dimension(isd:ied,jsd:jed), intent(in)  dya,
logical, intent(in)  bounded_domain,
integer, intent(in)  grid_type,
real, intent(in)  lim_fac 
)
private
Parameters
[in]ilastCompute domain
[in]cCourant number

Definition at line 635 of file tp_core.F90.

Variable Documentation

◆ b1

real, parameter tp_core_mod::b1 = 1./30.
private

Definition at line 75 of file tp_core.F90.

◆ b2

real, parameter tp_core_mod::b2 = -13./60.
private

Definition at line 76 of file tp_core.F90.

◆ b3

real, parameter tp_core_mod::b3 = -13./60.
private

Definition at line 77 of file tp_core.F90.

◆ b4

real, parameter tp_core_mod::b4 = 0.45
private

Definition at line 78 of file tp_core.F90.

◆ b5

real, parameter tp_core_mod::b5 = -0.05
private

Definition at line 79 of file tp_core.F90.

◆ c1

real, parameter tp_core_mod::c1 = -2./14.
private

Definition at line 87 of file tp_core.F90.

◆ c2

real, parameter tp_core_mod::c2 = 11./14.
private

Definition at line 88 of file tp_core.F90.

◆ c3

real, parameter tp_core_mod::c3 = 5./14.
private

Definition at line 89 of file tp_core.F90.

◆ near_zero

real, parameter tp_core_mod::near_zero = 1.E-25
private

Definition at line 62 of file tp_core.F90.

◆ p1

real, parameter tp_core_mod::p1 = 7./12.
private

Definition at line 93 of file tp_core.F90.

◆ p2

real, parameter tp_core_mod::p2 = -1./12.
private

Definition at line 94 of file tp_core.F90.

◆ ppm_fac

real, parameter tp_core_mod::ppm_fac = 1.5
private

nonlinear scheme limiter: between 1 and 2

Definition at line 60 of file tp_core.F90.

◆ ppm_limiter

real, parameter tp_core_mod::ppm_limiter = 2.0
private

Definition at line 63 of file tp_core.F90.

◆ r3

real, parameter tp_core_mod::r3 = 1./3.
private

Definition at line 61 of file tp_core.F90.

◆ s11

real, parameter tp_core_mod::s11 = 11./14.
private

Definition at line 82 of file tp_core.F90.

◆ s14

real, parameter tp_core_mod::s14 = 4./7.
private

Definition at line 82 of file tp_core.F90.

◆ s15

real, parameter tp_core_mod::s15 =3./14.
private

Definition at line 82 of file tp_core.F90.

◆ t11

real, parameter tp_core_mod::t11 = 27./28.
private

Definition at line 81 of file tp_core.F90.

◆ t12

real, parameter tp_core_mod::t12 = -13./28.
private

Definition at line 81 of file tp_core.F90.

◆ t13

real, parameter tp_core_mod::t13 =3./7.
private

Definition at line 81 of file tp_core.F90.