FV3DYCORE  Version 1.1.0
fv_nesting_mod Module Reference

The module 'fv_nesting' is a collection of routines pertaining to grid nesting [harris2013two]. More...

Functions/Subroutines

subroutine, public setup_nested_grid_bcs (npx, npy, npz, zvir, ncnst, u, v, w, pt, delp, delz, q, uc, vc, pkz, nested, inline_q, make_nh, ng, gridstruct, flagstruct, neststruct, nest_timestep, tracer_nest_timestep, domain, bd, nwat)
 The subroutine 'setup_nested_grid_BCs' fetches data from the coarse grid to set up the nested-grid boundary conditions. More...
 
subroutine setup_pt_bc (pt_BC, pkz_BC, sphum_BC, npx, npy, npz, zvir, bd)
 
subroutine setup_pt_nh_bc (pt_BC, delp_BC, delz_BC, sphum_BC, q_BC, nq, ifdef USE_COND
 
subroutine set_nh_bcs_t0 (neststruct)
 
subroutine set_bcs_t0 (ncnst, hydrostatic, neststruct)
 
subroutine, public twoway_nesting (Atm, ngrids, grids_on_this_pe, zvir)
 The subroutine'twoway_nesting' performs a two-way update of nested-grid data onto the parent grid. More...
 
subroutine twoway_nest_update (npx, npy, npz, zvir, ncnst, sphum, u, v, w, omga, pt, delp, q, uc, vc, pkz, delz, ps, ptop, gridstruct, flagstruct, neststruct, parent_grid, bd, conv_theta_in)
 
subroutine level_sum (q, area, domain, bd, npz, L_sum)
 
subroutine after_twoway_nest_update (npx, npy, npz, ng, ncnst, u, v, w, delz, pt, delp, q, ps, pe, pk, peln, pkz, phis, ua, va, ptop, gridstruct, flagstruct, domain, bd)
 
subroutine update_remap_tqw (npz, ak, bk, ps, delp, t, q, w, hydrostatic, kmd, ps0, zvir, ptop, nq, kord_tm, kord_tr, kord_wz, is, ie, js, je, isd, ied, jsd, jed, do_q)
 The subroutine 'update_remap_tqw' remaps (interpolated) nested-grid data to the coarse-grid's vertical coordinate. More...
 
subroutine update_remap_uv (npz, ak, bk, ps, u, v, kmd, ps0, kord_mt, is, ie, js, je, isd, ied, jsd, jed, ptop)
 

Variables

logical rf_initialized = .false.
 
logical bad_range
 
real, dimension(:), allocatable rf
 
real, dimension(:), allocatable rw
 
integer kmax =1
 
real, dimension(:,:), allocatable te_2d_coarse
 
real, dimension(:,:,:), allocatable dp1_coarse
 
type(fv_nest_bc_type_3d) u_buf
 
type(fv_nest_bc_type_3d) v_buf
 
type(fv_nest_bc_type_3d) uc_buf
 
type(fv_nest_bc_type_3d) vc_buf
 
type(fv_nest_bc_type_3d) delp_buf
 
type(fv_nest_bc_type_3d) delz_buf
 
type(fv_nest_bc_type_3d) pt_buf
 
type(fv_nest_bc_type_3d) pkz_buf
 
type(fv_nest_bc_type_3d) w_buf
 
type(fv_nest_bc_type_3d) divg_buf
 
type(fv_nest_bc_type_3d), dimension(:), allocatable q_buf
 
real, dimension(:,:,:), allocatable, target dum_west
 
real, dimension(:,:,:), allocatable, target dum_east
 
real, dimension(:,:,:), allocatable, target dum_north
 
real, dimension(:,:,:), allocatable, target dum_south
 

Detailed Description

The module 'fv_nesting' is a collection of routines pertaining to grid nesting [harris2013two].

Function/Subroutine Documentation

◆ after_twoway_nest_update()

subroutine fv_nesting_mod::after_twoway_nest_update ( integer, intent(in)  npx,
integer, intent(in)  npy,
integer, intent(in)  npz,
integer, intent(in)  ng,
integer, intent(in)  ncnst,
real, dimension(bd%isd:bd%ied ,bd%jsd:bd%jed+1,npz), intent(inout)  u,
real, dimension(bd%isd:bd%ied+1,bd%jsd:bd%jed ,npz), intent(inout)  v,
real, dimension( bd%isd: ,bd%jsd: ,1: ), intent(inout)  w,
real, dimension(bd%isd: ,bd%jsd: ,1: ), intent(inout)  delz,
real, dimension( bd%isd:bd%ied ,bd%jsd:bd%jed ,npz), intent(inout)  pt,
real, dimension(bd%isd:bd%ied ,bd%jsd:bd%jed ,npz), intent(inout)  delp,
real, dimension( bd%isd:bd%ied ,bd%jsd:bd%jed ,npz, ncnst), intent(inout)  q,
real, dimension (bd%isd:bd%ied ,bd%jsd:bd%jed), intent(inout)  ps,
real, dimension (bd%is-1:bd%ie+1, npz+1,bd%js-1:bd%je+1), intent(inout)  pe,
real, dimension (bd%is:bd%ie,bd%js:bd%je, npz+1), intent(inout)  pk,
real, dimension(bd%is:bd%ie,npz+1,bd%js:bd%je), intent(inout)  peln,
real, dimension (bd%is:bd%ie,bd%js:bd%je,npz), intent(inout)  pkz,
real, dimension(bd%isd:bd%ied,bd%jsd:bd%jed), intent(inout)  phis,
real, dimension(bd%isd:bd%ied ,bd%jsd:bd%jed ,npz), intent(inout)  ua,
real, dimension(bd%isd:bd%ied ,bd%jsd:bd%jed ,npz), intent(inout)  va,
real, intent(in)  ptop,
type(fv_grid_type), intent(in)  gridstruct,
type(fv_flags_type), intent(in)  flagstruct,
type(domain2d), intent(inout)  domain,
type(fv_grid_bounds_type), intent(in)  bd 
)
private
Parameters
[in,out]uD grid zonal wind (m/s)
[in,out]vD grid meridional wind (m/s)
[in,out]wW (m/s)
[in,out]pttemperature (K)
[in,out]delppressure thickness (pascal)
[in,out]qspecific humidity and constituents
[in,out]delzdelta-height (m); non-hydrostatic only
[in,out]psSurface pressure (pascal)
[in,out]peedge pressure (pascal)
[in,out]pkpe**cappa
[in,out]pelnln(pe)
[in,out]pkzfinite-volume mean pk
[in,out]phisSurface geopotential (g*Z_surf)

Definition at line 1546 of file fv_nesting.F90.

◆ level_sum()

subroutine fv_nesting_mod::level_sum ( real, dimension( bd%isd:bd%ied ,bd%jsd:bd%jed ,npz), intent(in)  q,
real, dimension( bd%isd:bd%ied ,bd%jsd:bd%jed), intent(in)  area,
type(domain2d), intent(in)  domain,
type(fv_grid_bounds_type), intent(in)  bd,
integer, intent(in)  npz,
real, dimension( npz ), intent(out)  L_sum 
)
private

Definition at line 1513 of file fv_nesting.F90.

◆ set_bcs_t0()

subroutine fv_nesting_mod::set_bcs_t0 ( integer, intent(in)  ncnst,
logical, intent(in)  hydrostatic,
type(fv_nest_type), intent(inout)  neststruct 
)
private

Definition at line 948 of file fv_nesting.F90.

◆ set_nh_bcs_t0()

subroutine fv_nesting_mod::set_nh_bcs_t0 ( type(fv_nest_type), intent(inout)  neststruct)
private

Definition at line 930 of file fv_nesting.F90.

◆ setup_nested_grid_bcs()

subroutine, public fv_nesting_mod::setup_nested_grid_bcs ( integer, intent(in)  npx,
integer, intent(in)  npy,
integer, intent(in)  npz,
real, intent(in)  zvir,
integer, intent(in)  ncnst,
real, dimension(bd%isd:bd%ied ,bd%jsd:bd%jed+1,npz), intent(inout)  u,
real, dimension(bd%isd:bd%ied+1,bd%jsd:bd%jed ,npz), intent(inout)  v,
real, dimension( bd%isd: ,bd%jsd: ,1:), intent(inout)  w,
real, dimension( bd%isd:bd%ied ,bd%jsd:bd%jed ,npz), intent(inout)  pt,
real, dimension(bd%isd:bd%ied ,bd%jsd:bd%jed ,npz), intent(inout)  delp,
real, dimension(bd%isd: ,bd%jsd: ,1:), intent(inout)  delz,
real, dimension( bd%isd:bd%ied ,bd%jsd:bd%jed ,npz, ncnst), intent(inout)  q,
real, dimension(bd%isd:bd%ied+1,bd%jsd:bd%jed ,npz), intent(inout)  uc,
real, dimension(bd%isd:bd%ied ,bd%jsd:bd%jed+1,npz), intent(inout)  vc,
real, dimension (bd%is:bd%ie,bd%js:bd%je,npz), intent(inout)  pkz,
logical, intent(in)  nested,
logical, intent(in)  inline_q,
logical, intent(in)  make_nh,
integer, intent(in)  ng,
type(fv_grid_type), intent(inout)  gridstruct,
type(fv_flags_type), intent(inout)  flagstruct,
type(fv_nest_type), intent(inout), target  neststruct,
integer, intent(inout)  nest_timestep,
integer, intent(inout)  tracer_nest_timestep,
type(domain2d), intent(inout)  domain,
type(fv_grid_bounds_type), intent(in)  bd,
integer, intent(in)  nwat 
)

The subroutine 'setup_nested_grid_BCs' fetches data from the coarse grid to set up the nested-grid boundary conditions.

Parameters
[in,out]uD grid zonal wind (m/s)
[in,out]vD grid meridional wind (m/s)
[in,out]wW (m/s)
[in,out]pttemperature (K)
[in,out]delppressure thickness (pascal)
[in,out]delzheight thickness (m)
[in,out]qspecific humidity and constituents
[in,out]uc(uc,vc) mostly used as the C grid winds
[in,out]pkzfinite-volume mean pk

Definition at line 163 of file fv_nesting.F90.

◆ setup_pt_bc()

subroutine fv_nesting_mod::setup_pt_bc ( type(fv_nest_bc_type_3d), intent(inout), target  pt_BC,
type(fv_nest_bc_type_3d), intent(in), target  pkz_BC,
type(fv_nest_bc_type_3d), intent(in), target  sphum_BC,
integer, intent(in)  npx,
integer, intent(in)  npy,
integer, intent(in)  npz,
real, intent(in)  zvir,
type(fv_grid_bounds_type), intent(in)  bd 
)
private

Definition at line 422 of file fv_nesting.F90.

◆ setup_pt_nh_bc()

subroutine fv_nesting_mod::setup_pt_nh_bc ( type(fv_nest_bc_type_3d), intent(inout), target  pt_BC,
type(fv_nest_bc_type_3d), intent(in), target  delp_BC,
type(fv_nest_bc_type_3d), intent(in), target  delz_BC,
type(fv_nest_bc_type_3d), intent(in), target  sphum_BC,
type(fv_nest_bc_type_3d), dimension(nq), intent(in), target  q_BC,
integer, intent(in)  nq,
  ifdef,
  USE_COND 
)
private

Definition at line 531 of file fv_nesting.F90.

◆ twoway_nest_update()

subroutine fv_nesting_mod::twoway_nest_update ( integer, intent(in)  npx,
integer, intent(in)  npy,
integer, intent(in)  npz,
real, intent(in)  zvir,
integer, intent(in)  ncnst,
integer, intent(in)  sphum,
real, dimension(bd%isd:bd%ied ,bd%jsd:bd%jed+1,npz), intent(inout)  u,
real, dimension(bd%isd:bd%ied+1,bd%jsd:bd%jed ,npz), intent(inout)  v,
real, dimension( bd%isd: ,bd%jsd: ,1: ), intent(inout)  w,
real, dimension(bd%isd:bd%ied,bd%jsd:bd%jed,npz), intent(inout)  omga,
real, dimension( bd%isd:bd%ied ,bd%jsd:bd%jed ,npz), intent(inout)  pt,
real, dimension(bd%isd:bd%ied ,bd%jsd:bd%jed ,npz), intent(inout)  delp,
real, dimension( bd%isd:bd%ied ,bd%jsd:bd%jed ,npz, ncnst), intent(inout)  q,
real, dimension(bd%isd:bd%ied+1,bd%jsd:bd%jed ,npz), intent(inout)  uc,
real, dimension(bd%isd:bd%ied ,bd%jsd:bd%jed+1,npz), intent(inout)  vc,
real, dimension (bd%is:bd%ie,bd%js:bd%je,npz), intent(inout)  pkz,
real, dimension(bd%isd: ,bd%jsd: ,1: ), intent(inout)  delz,
real, dimension (bd%isd:bd%ied ,bd%jsd:bd%jed), intent(inout)  ps,
real, intent(in)  ptop,
type(fv_grid_type), intent(inout)  gridstruct,
type(fv_flags_type), intent(inout)  flagstruct,
type(fv_nest_type), intent(inout)  neststruct,
type(fv_atmos_type), intent(inout)  parent_grid,
type(fv_grid_bounds_type), intent(in)  bd,
logical, intent(in), optional  conv_theta_in 
)
private
Parameters
[in,out]uD grid zonal wind (m/s)
[in,out]vD grid meridional wind (m/s)
[in,out]wW (m/s)
[in,out]omgaVertical pressure velocity (pa/s)
[in,out]pttemperature (K)
[in,out]delppressure thickness (pascal)
[in,out]qspecific humidity and constituents
[in,out]uc(uc,vc) C grid winds
[in,out]pkzfinite-volume mean pk
[in,out]delzdelta-height (m); non-hydrostatic only
[in,out]psSurface pressure (pascal)

Definition at line 1095 of file fv_nesting.F90.

◆ twoway_nesting()

subroutine, public fv_nesting_mod::twoway_nesting ( type(fv_atmos_type), dimension(ngrids), intent(inout)  Atm,
integer, intent(in)  ngrids,
logical, dimension(ngrids), intent(in)  grids_on_this_pe,
real, intent(in)  zvir 
)

The subroutine'twoway_nesting' performs a two-way update of nested-grid data onto the parent grid.

Definition at line 1044 of file fv_nesting.F90.

◆ update_remap_tqw()

subroutine fv_nesting_mod::update_remap_tqw ( integer, intent(in)  npz,
real, dimension(npz+1), intent(in)  ak,
real, dimension(npz+1), intent(in)  bk,
real, dimension(isd:ied,jsd:jed), intent(in)  ps,
real, dimension(isd:ied,jsd:jed,npz), intent(in)  delp,
real, dimension(isd:ied,jsd:jed,npz), intent(inout)  t,
real, dimension(isd:ied,jsd:jed,npz,nq), intent(inout)  q,
real, dimension(isd:ied,jsd:jed,npz), intent(inout)  w,
logical, intent(in)  hydrostatic,
integer, intent(in)  kmd,
real, dimension(isd:ied,jsd:jed), intent(in)  ps0,
real, intent(in)  zvir,
real, intent(in)  ptop,
integer, intent(in)  nq,
integer, intent(in)  kord_tm,
integer, intent(in)  kord_tr,
integer, intent(in)  kord_wz,
integer, intent(in)  is,
integer, intent(in)  ie,
integer, intent(in)  js,
integer, intent(in)  je,
integer, intent(in)  isd,
integer, intent(in)  ied,
integer, intent(in)  jsd,
integer, intent(in)  jed,
logical, intent(in)  do_q 
)
private

The subroutine 'update_remap_tqw' remaps (interpolated) nested-grid data to the coarse-grid's vertical coordinate.

Definition at line 1639 of file fv_nesting.F90.

◆ update_remap_uv()

subroutine fv_nesting_mod::update_remap_uv ( integer, intent(in)  npz,
real, dimension(npz+1), intent(in)  ak,
real, dimension(npz+1), intent(in)  bk,
real, dimension(isd:ied,jsd:jed), intent(in)  ps,
real, dimension(isd:ied,jsd:jed+1,npz), intent(inout)  u,
real, dimension(isd:ied+1,jsd:jed,npz), intent(inout)  v,
integer, intent(in)  kmd,
real, dimension(isd:ied,jsd:jed), intent(in)  ps0,
integer, intent(in)  kord_mt,
integer, intent(in)  is,
integer, intent(in)  ie,
integer, intent(in)  js,
integer, intent(in)  je,
integer, intent(in)  isd,
integer, intent(in)  ied,
integer, intent(in)  jsd,
integer, intent(in)  jed,
real, intent(in)  ptop 
)
private

Definition at line 1727 of file fv_nesting.F90.

Variable Documentation

◆ bad_range

logical fv_nesting_mod::bad_range

Definition at line 132 of file fv_nesting.F90.

◆ delp_buf

type(fv_nest_bc_type_3d) fv_nesting_mod::delp_buf

Definition at line 141 of file fv_nesting.F90.

◆ delz_buf

type(fv_nest_bc_type_3d) fv_nesting_mod::delz_buf

Definition at line 141 of file fv_nesting.F90.

◆ divg_buf

type(fv_nest_bc_type_3d) fv_nesting_mod::divg_buf

Definition at line 141 of file fv_nesting.F90.

◆ dp1_coarse

real, dimension(:,:,:), allocatable fv_nesting_mod::dp1_coarse

Definition at line 137 of file fv_nesting.F90.

◆ dum_east

real, dimension(:,:,:), allocatable, target fv_nesting_mod::dum_east

Definition at line 144 of file fv_nesting.F90.

◆ dum_north

real, dimension(:,:,:), allocatable, target fv_nesting_mod::dum_north

Definition at line 144 of file fv_nesting.F90.

◆ dum_south

real, dimension(:,:,:), allocatable, target fv_nesting_mod::dum_south

Definition at line 144 of file fv_nesting.F90.

◆ dum_west

real, dimension(:,:,:), allocatable, target fv_nesting_mod::dum_west

Definition at line 144 of file fv_nesting.F90.

◆ kmax

integer fv_nesting_mod::kmax =1

Definition at line 134 of file fv_nesting.F90.

◆ pkz_buf

type(fv_nest_bc_type_3d) fv_nesting_mod::pkz_buf

Definition at line 141 of file fv_nesting.F90.

◆ pt_buf

type(fv_nest_bc_type_3d) fv_nesting_mod::pt_buf

Definition at line 141 of file fv_nesting.F90.

◆ q_buf

type(fv_nest_bc_type_3d), dimension(:), allocatable fv_nesting_mod::q_buf

Definition at line 142 of file fv_nesting.F90.

◆ rf

real, dimension(:), allocatable fv_nesting_mod::rf

Definition at line 133 of file fv_nesting.F90.

◆ rf_initialized

logical fv_nesting_mod::rf_initialized = .false.

Definition at line 131 of file fv_nesting.F90.

◆ rw

real, dimension(:), allocatable fv_nesting_mod::rw

Definition at line 133 of file fv_nesting.F90.

◆ te_2d_coarse

real, dimension(:,:), allocatable fv_nesting_mod::te_2d_coarse

Definition at line 136 of file fv_nesting.F90.

◆ u_buf

type(fv_nest_bc_type_3d) fv_nesting_mod::u_buf

Definition at line 141 of file fv_nesting.F90.

◆ uc_buf

type(fv_nest_bc_type_3d) fv_nesting_mod::uc_buf

Definition at line 141 of file fv_nesting.F90.

◆ v_buf

type(fv_nest_bc_type_3d) fv_nesting_mod::v_buf

Definition at line 141 of file fv_nesting.F90.

◆ vc_buf

type(fv_nest_bc_type_3d) fv_nesting_mod::vc_buf

Definition at line 141 of file fv_nesting.F90.

◆ w_buf

type(fv_nest_bc_type_3d) fv_nesting_mod::w_buf

Definition at line 141 of file fv_nesting.F90.