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) |
The module 'boundary' contains utility routines for grid nesting and boundary conditions.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.