FV3DYCORE  Version1.0.0
boundary_mod Module Reference

The module 'boundary' contains utility routines for grid nesting and boundary conditions. More...

Data Types

interface  fill_nested_grid
 The interface 'fill_nested_grid' includes subroutines 'fill_nested_grid_2d' and 'fill_nested_grid_3d' that fill nested-grid data with interpolated data from the coarse grid. More...
 
interface  nested_grid_bc
 interface 'nested_grid_BC' includes subroutines 'nested_grid_BC_2d' and 'nested_grid_BC_3d' that fetch coarse-grid data, interpolate it to nested-grid boundary cells, apply the interpolated data directly to the boundary halo cells without saving the datatype. More...
 
interface  update_coarse_grid
 The interface'update_coarse_grid_mpp'contains subroutines that fetch data from the nested grid and interpolate it to the coarse grid using the method described by [harris2013two]. More...
 

Functions/Subroutines

subroutine, public extrapolation_bc (q, istag, jstag, npx, npy, bd, pd_in, debug_in)
 The subroutine 'extrapolation_BC' performs linear extrapolation into the halo region. More...
 
subroutine fill_nested_grid_2d (var_nest, var_coarse, ind, wt, istag, jstag, isg, ieg, jsg, jeg, bd, istart_in, iend_in, jstart_in, jend_in)
 
subroutine fill_nested_grid_3d (var_nest, var_coarse, ind, wt, istag, jstag, isg, ieg, jsg, jeg, npz, bd, istart_in, iend_in, jstart_in, jend_in)
 
subroutine nested_grid_bc_mpp (var_nest, var_coarse, nest_domain, ind, wt, istag, jstag, npx, npy, npz, bd, isg, ieg, jsg, jeg, nstep_in, nsplit_in, proc_in)
 
subroutine nested_grid_bc_mpp_send (var_coarse, nest_domain, istag, jstag)
 
subroutine nested_grid_bc_2d_mpp (var_nest, var_coarse, nest_domain, ind, wt, istag, jstag, npx, npy, bd, isg, ieg, jsg, jeg, nstep_in, nsplit_in, proc_in)
 
subroutine nested_grid_bc_2d (var_nest, var_coarse, ind, wt, istag, jstag, npx, npy, bd, isg, ieg, jsg, jeg, nstep_in, nsplit_in)
 
subroutine nested_grid_bc_3d (var_nest, var_coarse, ind, wt, istag, jstag, npx, npy, npz, bd, isg, ieg, jsg, jeg, nstep_in, nsplit_in)
 
subroutine, public nested_grid_bc_send (var_coarse, nest_domain, istag, jstag)
 The subroutine 'nested_grid_BC_send' sends coarse-grid data to create boundary conditions. More...
 
subroutine, public nested_grid_bc_recv (nest_domain, istag, jstag, npz, bd, nest_BC_buffers)
 subroutine 'nested_grid_BC_recv' receives coarse-grid data to create boundary conditions. More...
 
subroutine, public nested_grid_bc_save_proc (nest_domain, ind, wt, istag, jstag, npx, npy, npz, bd, nest_BC, nest_BC_buffers, pd_in)
 The subroutine 'nested_grid_BC_save_proc' saves data received by 'nested_grid_BC_recv' into the datatype 'fv_nest_BC_type'. More...
 
subroutine, public nested_grid_bc_apply_intt (var_nest, istag, jstag, npx, npy, npz, bd, step, split, BC, bctype)
 The subroutine 'nested_grid_BC_apply_intT' performs linear interpolation or extrapolation in time for saved BC data, then applies the interlpolated data to nested-grid boundary cells. More...
 
subroutine update_coarse_grid_mpp_2d (var_coarse, var_nest, nest_domain, ind_update, dx, dy, area, isd_p, ied_p, jsd_p, jed_p, is_n, ie_n, js_n, je_n, isu, ieu, jsu, jeu, npx, npy, istag, jstag, r, nestupdate, upoff, nsponge, parent_proc, child_proc, parent_grid)
 
subroutine update_coarse_grid_mpp (var_coarse, var_nest, nest_domain, ind_update, dx, dy, area, isd_p, ied_p, jsd_p, jed_p, is_n, ie_n, js_n, je_n, isu, ieu, jsu, jeu, npx, npy, npz, istag, jstag, r, nestupdate, upoff, nsponge, parent_proc, child_proc, parent_grid)
 

Detailed Description

The module 'boundary' contains utility routines for grid nesting and boundary conditions.

Function/Subroutine Documentation

◆ extrapolation_bc()

subroutine, public boundary_mod::extrapolation_bc ( real, dimension(bd%isd:bd%ied+istag, bd%jsd:bd%jed+jstag), intent(inout)  q,
integer, intent(in)  istag,
integer, intent(in)  jstag,
integer, intent(in)  npx,
integer, intent(in)  npy,
type(fv_grid_bounds_type), intent(in)  bd,
logical, intent(in), optional  pd_in,
logical, intent(in), optional  debug_in 
)

The subroutine 'extrapolation_BC' performs linear extrapolation into the halo region.

Definition at line 118 of file boundary.F90.

◆ fill_nested_grid_2d()

subroutine boundary_mod::fill_nested_grid_2d ( real, dimension(bd%isd:bd%ied+istag,bd%jsd:bd%jed+jstag), intent(inout)  var_nest,
real, dimension(isg:ieg+istag,jsg:jeg+jstag), intent(in)  var_coarse,
integer, dimension(bd%isd:bd%ied+istag,bd%jsd:bd%jed+jstag,2), intent(in)  ind,
real, dimension(bd%isd:bd%ied+istag,bd%jsd:bd%jed+jstag,4), intent(in)  wt,
integer, intent(in)  istag,
integer, intent(in)  jstag,
integer, intent(in)  isg,
integer, intent(in)  ieg,
integer, intent(in)  jsg,
integer, intent(in)  jeg,
type(fv_grid_bounds_type), intent(in)  bd,
integer, intent(in), optional  istart_in,
integer, intent(in), optional  iend_in,
integer, intent(in), optional  jstart_in,
integer, intent(in), optional  jend_in 
)

Definition at line 446 of file boundary.F90.

◆ fill_nested_grid_3d()

subroutine boundary_mod::fill_nested_grid_3d ( real, dimension(bd%isd:bd%ied+istag,bd%jsd:bd%jed+jstag,npz), intent(inout)  var_nest,
real, dimension(isg:ieg+istag,jsg:jeg+jstag,npz), intent(in)  var_coarse,
integer, dimension(bd%isd:bd%ied+istag,bd%jsd:bd%jed+jstag,2), intent(in)  ind,
real, dimension(bd%isd:bd%ied+istag,bd%jsd:bd%jed+jstag,4), intent(in)  wt,
integer, intent(in)  istag,
integer, intent(in)  jstag,
integer, intent(in)  isg,
integer, intent(in)  ieg,
integer, intent(in)  jsg,
integer, intent(in)  jeg,
integer, intent(in)  npz,
type(fv_grid_bounds_type), intent(in)  bd,
integer, intent(in), optional  istart_in,
integer, intent(in), optional  iend_in,
integer, intent(in), optional  jstart_in,
integer, intent(in), optional  jend_in 
)

Definition at line 511 of file boundary.F90.

◆ nested_grid_bc_2d()

subroutine boundary_mod::nested_grid_bc_2d ( real, dimension(bd%isd:bd%ied+istag,bd%jsd:bd%jed+jstag), intent(inout)  var_nest,
real, dimension(isg:ieg+istag,jsg:jeg+jstag), intent(in)  var_coarse,
integer, dimension(bd%isd:bd%ied+istag,bd%jsd:bd%jed+jstag,2), intent(in)  ind,
real, dimension(bd%isd:bd%ied+istag,bd%jsd:bd%jed+jstag,4), intent(in)  wt,
integer, intent(in)  istag,
integer, intent(in)  jstag,
integer, intent(in)  npx,
integer, intent(in)  npy,
type(fv_grid_bounds_type), intent(in)  bd,
integer, intent(in)  isg,
integer, intent(in)  ieg,
integer, intent(in)  jsg,
integer, intent(in)  jeg,
integer, intent(in), optional  nstep_in,
integer, intent(in), optional  nsplit_in 
)

Definition at line 1032 of file boundary.F90.

◆ nested_grid_bc_2d_mpp()

subroutine boundary_mod::nested_grid_bc_2d_mpp ( real, dimension(bd%isd:bd%ied+istag,bd%jsd:bd%jed+jstag), intent(inout)  var_nest,
real, dimension(isg:ieg+istag,jsg:jeg+jstag), intent(in)  var_coarse,
type(nest_domain_type), intent(inout)  nest_domain,
integer, dimension(bd%isd:bd%ied+istag,bd%jsd:bd%jed+jstag,2), intent(in)  ind,
real, dimension(bd%isd:bd%ied+istag,bd%jsd:bd%jed+jstag,4), intent(in)  wt,
integer, intent(in)  istag,
integer, intent(in)  jstag,
integer, intent(in)  npx,
integer, intent(in)  npy,
type(fv_grid_bounds_type), intent(in)  bd,
integer, intent(in)  isg,
integer, intent(in)  ieg,
integer, intent(in)  jsg,
integer, intent(in)  jeg,
integer, intent(in), optional  nstep_in,
integer, intent(in), optional  nsplit_in,
logical, intent(in), optional  proc_in 
)

Definition at line 833 of file boundary.F90.

◆ nested_grid_bc_3d()

subroutine boundary_mod::nested_grid_bc_3d ( real, dimension(bd%isd:bd%ied+istag,bd%jsd:bd%jed+jstag,npz), intent(inout)  var_nest,
real, dimension(isg:ieg+istag,jsg:jeg+jstag,npz), intent(in)  var_coarse,
integer, dimension(bd%isd:bd%ied+istag,bd%jsd:bd%jed+jstag,2), intent(in)  ind,
real, dimension(bd%isd:bd%ied+istag,bd%jsd:bd%jed+jstag,4), intent(in)  wt,
integer, intent(in)  istag,
integer, intent(in)  jstag,
integer, intent(in)  npx,
integer, intent(in)  npy,
integer, intent(in)  npz,
type(fv_grid_bounds_type), intent(in)  bd,
integer, intent(in)  isg,
integer, intent(in)  ieg,
integer, intent(in)  jsg,
integer, intent(in)  jeg,
integer, intent(in), optional  nstep_in,
integer, intent(in), optional  nsplit_in 
)

Definition at line 1167 of file boundary.F90.

◆ nested_grid_bc_apply_intt()

subroutine, public boundary_mod::nested_grid_bc_apply_intt ( real, dimension(bd%isd:bd%ied+istag,bd%jsd:bd%jed+jstag, npz), intent(inout)  var_nest,
integer, intent(in)  istag,
integer, intent(in)  jstag,
integer, intent(in)  npx,
integer, intent(in)  npy,
integer, intent(in)  npz,
type(fv_grid_bounds_type), intent(in)  bd,
real, intent(in)  step,
real, intent(in)  split,
type(fv_nest_bc_type_3d), intent(in), target  BC,
integer, intent(in)  bctype 
)

The subroutine 'nested_grid_BC_apply_intT' performs linear interpolation or extrapolation in time for saved BC data, then applies the interlpolated data to nested-grid boundary cells.

Definition at line 1684 of file boundary.F90.

◆ nested_grid_bc_mpp()

subroutine boundary_mod::nested_grid_bc_mpp ( real, dimension(bd%isd:bd%ied+istag,bd%jsd:bd%jed+jstag,npz), intent(inout)  var_nest,
real, dimension(isg:ieg+istag,jsg:jeg+jstag,npz), intent(in)  var_coarse,
type(nest_domain_type), intent(inout)  nest_domain,
integer, dimension(bd%isd:bd%ied+istag,bd%jsd:bd%jed+jstag,2), intent(in)  ind,
real, dimension(bd%isd:bd%ied+istag,bd%jsd:bd%jed+jstag,4), intent(in)  wt,
integer, intent(in)  istag,
integer, intent(in)  jstag,
integer, intent(in)  npx,
integer, intent(in)  npy,
integer, intent(in)  npz,
type(fv_grid_bounds_type), intent(in)  bd,
integer, intent(in)  isg,
integer, intent(in)  ieg,
integer, intent(in)  jsg,
integer, intent(in)  jeg,
integer, intent(in), optional  nstep_in,
integer, intent(in), optional  nsplit_in,
logical, intent(in), optional  proc_in 
)

Definition at line 580 of file boundary.F90.

◆ nested_grid_bc_mpp_send()

subroutine boundary_mod::nested_grid_bc_mpp_send ( real, dimension(:,:,:), intent(in)  var_coarse,
type(nest_domain_type), intent(inout)  nest_domain,
integer, intent(in)  istag,
integer, intent(in)  jstag 
)

Definition at line 787 of file boundary.F90.

◆ nested_grid_bc_recv()

subroutine, public boundary_mod::nested_grid_bc_recv ( type(nest_domain_type), intent(inout)  nest_domain,
integer, intent(in)  istag,
integer, intent(in)  jstag,
integer, intent(in)  npz,
type(fv_grid_bounds_type), intent(in)  bd,
type(fv_nest_bc_type_3d), intent(inout), target  nest_BC_buffers 
)

subroutine 'nested_grid_BC_recv' receives coarse-grid data to create boundary conditions.

Definition at line 1341 of file boundary.F90.

◆ nested_grid_bc_save_proc()

subroutine, public boundary_mod::nested_grid_bc_save_proc ( type(nest_domain_type), intent(inout)  nest_domain,
integer, dimension(bd%isd:bd%ied+istag,bd%jsd:bd%jed+jstag,2), intent(in)  ind,
real, dimension(bd%isd:bd%ied+istag,bd%jsd:bd%jed+jstag,4), intent(in)  wt,
integer, intent(in)  istag,
integer, intent(in)  jstag,
integer, intent(in)  npx,
integer, intent(in)  npy,
integer, intent(in)  npz,
type(fv_grid_bounds_type), intent(in)  bd,
type(fv_nest_bc_type_3d), intent(inout), target  nest_BC,
type(fv_nest_bc_type_3d), intent(inout), target  nest_BC_buffers,
logical, intent(in), optional  pd_in 
)

The subroutine 'nested_grid_BC_save_proc' saves data received by 'nested_grid_BC_recv' into the datatype 'fv_nest_BC_type'.

Definition at line 1449 of file boundary.F90.

◆ nested_grid_bc_send()

subroutine, public boundary_mod::nested_grid_bc_send ( real, dimension(:,:,:), intent(in)  var_coarse,
type(nest_domain_type), intent(inout)  nest_domain,
integer, intent(in)  istag,
integer, intent(in)  jstag 
)

The subroutine 'nested_grid_BC_send' sends coarse-grid data to create boundary conditions.

Definition at line 1309 of file boundary.F90.

◆ update_coarse_grid_mpp()

subroutine boundary_mod::update_coarse_grid_mpp ( real, dimension(isd_p:ied_p+istag,jsd_p:jed_p+jstag,npz), intent(inout)  var_coarse,
real, dimension(is_n:ie_n+istag,js_n:je_n+jstag,npz), intent(in)  var_nest,
type(nest_domain_type), intent(inout)  nest_domain,
integer, dimension(isd_p:ied_p+1,jsd_p:jed_p+1,2), intent(in)  ind_update,
real, dimension(isd:ied,jsd:jed+1), intent(in)  dx,
real, dimension(isd:ied+1,jsd:jed), intent(in)  dy,
real, dimension(isd:ied,jsd:jed), intent(in)  area,
integer, intent(in)  isd_p,
integer, intent(in)  ied_p,
integer, intent(in)  jsd_p,
integer, intent(in)  jed_p,
integer, intent(in)  is_n,
integer, intent(in)  ie_n,
integer, intent(in)  js_n,
integer, intent(in)  je_n,
integer, intent(in)  isu,
integer, intent(in)  ieu,
integer, intent(in)  jsu,
integer, intent(in)  jeu,
integer, intent(in)  npx,
integer, intent(in)  npy,
integer, intent(in)  npz,
integer, intent(in)  istag,
integer, intent(in)  jstag,
integer, intent(in)  r,
integer, intent(in)  nestupdate,
integer, intent(in)  upoff,
integer, intent(in)  nsponge,
logical, intent(in)  parent_proc,
logical, intent(in)  child_proc,
type(fv_atmos_type), intent(inout)  parent_grid 
)

Definition at line 1838 of file boundary.F90.

◆ update_coarse_grid_mpp_2d()

subroutine boundary_mod::update_coarse_grid_mpp_2d ( real, dimension(isd_p:ied_p+istag,jsd_p:jed_p+jstag), intent(inout)  var_coarse,
real, dimension(is_n:ie_n+istag,js_n:je_n+jstag), intent(in)  var_nest,
type(nest_domain_type), intent(inout)  nest_domain,
integer, dimension(isd_p:ied_p+1,jsd_p:jed_p+1,2), intent(in)  ind_update,
real, dimension(isd:ied,jsd:jed+1), intent(in)  dx,
real, dimension(isd:ied+1,jsd:jed), intent(in)  dy,
real, dimension(isd:ied,jsd:jed), intent(in)  area,
integer, intent(in)  isd_p,
integer, intent(in)  ied_p,
integer, intent(in)  jsd_p,
integer, intent(in)  jed_p,
integer, intent(in)  is_n,
integer, intent(in)  ie_n,
integer, intent(in)  js_n,
integer, intent(in)  je_n,
integer, intent(in)  isu,
integer, intent(in)  ieu,
integer, intent(in)  jsu,
integer, intent(in)  jeu,
integer, intent(in)  npx,
integer, intent(in)  npy,
integer, intent(in)  istag,
integer, intent(in)  jstag,
integer, intent(in)  r,
integer, intent(in)  nestupdate,
integer, intent(in)  upoff,
integer, intent(in)  nsponge,
logical, intent(in)  parent_proc,
logical, intent(in)  child_proc,
type(fv_atmos_type), intent(inout)  parent_grid 
)

Definition at line 1800 of file boundary.F90.