module fd4_domain_mod module fd4_block_mod module fd4_globaldef_mod module fd4_vartab_mod module fd4_ghostlist_modSubroutines and functions:
public subroutine fd4_boundary_zerograd (domain, idx, st, opt_dim, opt_dir) public subroutine fd4_boundary_zerograd_block (domain, b, idx, st, opt_dim, opt_dir) private subroutine fd4_boundary_zerograd_set (domain, b, bgb, idx, st) public subroutine fd4_boundary_spec (domain, idx, st, face, dir, values) public subroutine fd4_boundary_spec_block (domain, b, idx, st, face, dir, values) private subroutine fd4_boundary_spec_set (domain, bgb, idx, st, values)
Currently we have zero gradient and a simple method to set specific values.
Author: Matthias Lieber
See also: module fd4_domain_mod
public subroutine fd4_boundary_zerograd (domain, idx, st, opt_dim, opt_dir) type (fd4_domain), intent(inout) :: domain integer (kind=i_k), intent(in), dimension (:) :: idx integer (kind=i_k), intent(in), dimension (:) :: st integer (kind=i_k), optional, intent(in) :: opt_dim integer (kind=i_k), optional, intent(in) :: opt_dir end subroutine fd4_boundary_zerogradParameters:
domain | the domain |
idx | array of field indices |
st | array of time step indices |
opt_dim | optional specification of spatial dimensions |
opt_dir | optional specification of boundary direction (1...lower, 2...upper) |
Sets the given cell-centered vars in the boundary ghost block to the same value as in the cells at domain boundary. Sets the value of the given face variables at domain boundary (within domain) to vnull.
Valid values for opt_dim are FD4_X, FD4_Y, FD4_Z, FD4_XY, FD4_XZ, FD4_YZ, and FD4_XYZ. If no dimensions are specified, than boundary conditions for all 3 spatial dimensions are set (FD4_XYZ).
If opt_dir is not given or is not 1 or 2, both lower and upper boundaries are set.
public subroutine fd4_boundary_zerograd_block (domain, b, idx, st, opt_dim, opt_dir) type (fd4_domain), intent(inout) :: domain type (fd4_block), pointer :: b integer (kind=i_k), intent(in), dimension (:) :: idx integer (kind=i_k), intent(in), dimension (:) :: st integer (kind=i_k), optional, intent(in) :: opt_dim integer (kind=i_k), optional, intent(in) :: opt_dir end subroutine fd4_boundary_zerograd_blockParameters:
domain | the domain |
b | the block |
idx | array of field indices |
st | array of time step indices |
opt_dim | optional specification of spatial dimensions |
opt_dir | optional specification of boundary direction (1...lower, 2...upper) |
Sets the given cell-centered vars in the boundary ghost block to the same value as in the cells at domain boundary. Sets the value of the given face variables at domain boundary (within domain) to vnull.
Valid values for opt_dim are FD4_X, FD4_Y, FD4_Z, FD4_XY, FD4_XZ, FD4_YZ, and FD4_XYZ. If no dimensions are specified, than boundary conditions for all 3 spatial dimensions are set (FD4_XYZ).
If opt_dir is not given or is not 1 or 2, both lower and upper boundaries are set.
private subroutine fd4_boundary_zerograd_set (domain, b, bgb, idx, st) type (fd4_domain), intent(inout) :: domain type (fd4_block), pointer :: b type (fd4_block), pointer :: bgb integer (kind=i_k), intent(in), dimension (:) :: idx integer (kind=i_k), intent(in), dimension (:) :: st end subroutine fd4_boundary_zerograd_setParameters:
domain | the domain |
b | the block |
bgb | the boundary ghost block |
idx | array of field indices |
st | array of time step indices |
Internal subroutine. Used by fd4_boundary_zerograd and fd4_boundary_zerograd_block.
public subroutine fd4_boundary_spec (domain, idx, st, face, dir, values) type (fd4_domain), intent(inout) :: domain integer (kind=i_k), intent(in), dimension (:) :: idx integer (kind=i_k), intent(in), dimension (:) :: st integer (kind=i_k), intent(in) :: face integer (kind=i_k), intent(in) :: dir real (kind=r_k), intent(in), dimension (:) :: values end subroutine fd4_boundary_specParameters:
domain | the domain |
idx | array of field indices |
st | array of time step indices |
face | dimension to process (1,2,3) |
dir | direction to process (1...lower face, 2... upper face) |
values | values for each ghost plane |
values(1) is used for the first boundary layer, values(2) for the second etc. Does only process cell centered variables. Only one spatial dimension and direction (upper, lower) is processed. Sets all variables to the same value.
public subroutine fd4_boundary_spec_block (domain, b, idx, st, face, dir, values) type (fd4_domain), intent(inout) :: domain type (fd4_block), pointer :: b integer (kind=i_k), intent(in), dimension (:) :: idx integer (kind=i_k), intent(in), dimension (:) :: st integer (kind=i_k), intent(in) :: face integer (kind=i_k), intent(in) :: dir real (kind=r_k), intent(in), dimension (:) :: values end subroutine fd4_boundary_spec_blockParameters:
domain | the domain |
b | the block |
idx | array of field indices |
st | array of time step indices |
face | dimension to process (1,2,3) |
dir | direction to process (1...lower face, 2... upper face) |
values | values for each ghost plane |
values(1) is used for the first boundary layer, values(2) for the second etc. Does only process cell centered variables. Only one spatial dimension and direction (upper, lower) is processed. Sets all variables to the same value.
private subroutine fd4_boundary_spec_set (domain, bgb, idx, st, values) type (fd4_domain), intent(inout) :: domain type (fd4_block), pointer :: bgb integer (kind=i_k), intent(in), dimension (:) :: idx integer (kind=i_k), intent(in), dimension (:) :: st real (kind=r_k), target, intent(in), dimension (:) :: values end subroutine fd4_boundary_spec_setParameters:
domain | the domain |
bgb | the boundary ghost block |
idx | array of field indices |
st | array of time step indices |
values | values for each ghost plane |
Internal subroutine. Used by fd4_boundary_spec.