BSpline Finite Element Exterior Calculus
Loading...
Searching...
No Matches
m_domain_decomp Module Reference

Module for tensor product subdomains (used for MPI parallelisation) More...

Data Types

interface  actv_interval_inds
 Determine the active intervals indices in one direction (based on the responsible B-spline indices). More...
 
interface  domaindecomp
 The B-spline tensor product domain type. More...
 
interface  get_petsc
 
interface  memory_layout_convert
 
interface  tensorproddomain
 The tensor product domain type; contrary to DomainDecomp, this type is specific to tensor product B-spline spaces. More...
 

Functions/Subroutines

pure subroutine, public determine_global_indices (l0, l1, bsplines, domain, my_resp_bspline)
 Determine the global indices l0 and l1 for the responsible B-splines of the current rank.
 
subroutine, public check_decomposition_1d (bspline, nr_subintervals, max_comm_neighbours, direction, is_distributed)
 Verify the decomposition in one direction.
 
pure subroutine, public resp_interval_indices_1d (ii0, ii1, bspline, nr_subintervals, my_rank_i)
 Determine the responsible interval indices for the current rank in one direction.
 
pure subroutine, public resp_bspline_indices_1d (i0, i1, bspline, nr_subintervals, my_rank_i, ii0, ii1)
 Determine the responsible B-spline indices for the current rank in one direction.
 
pure subroutine, public node_actv_bspline_indices_1d (i0, i1, ii0, ii1, bspline)
 Determine the active B-spline indices for the current rank in one direction.
 

Variables

integer, parameter, public max_comm_neighbours_x = CMAKE_BSPLINE_FEEC_MAX_COMM_NEIGHBOURS_X
 Maximum number of neighbours in the z-direction used for distributed MPI communication.
 
integer, parameter, public max_comm_neighbours_y = CMAKE_BSPLINE_FEEC_MAX_COMM_NEIGHBOURS_Y
 Maximum number of neighbours in the y-direction used for distributed MPI communication.
 
integer, parameter, public max_comm_neighbours_z = CMAKE_BSPLINE_FEEC_MAX_COMM_NEIGHBOURS_Z
 Maximum number of neighbours in the z-direction used for distributed MPI communication.
 
integer, parameter, public guard_layer = CMAKE_BSPLINE_FEEC_GUARD_LAYER
 Guard layer size, i.e., the number of additional B-spline indices that are sent to the neighbours.
 

Detailed Description

Module for tensor product subdomains (used for MPI parallelisation)

The parallelisation can be done in 1D, 2D or 3D via user-provided number of subintervals in each direction. Each subdomain is responsible for a subset of tensor product B-splines, and also responsible for a subset of intervals in each direction.

Function/Subroutine Documentation

◆ check_decomposition_1d()

subroutine, public m_domain_decomp::check_decomposition_1d ( type(bsplinespace), intent(in) bspline,
integer, intent(in) nr_subintervals,
integer, intent(in) max_comm_neighbours,
character(1), intent(in) direction,
logical, intent(in) is_distributed )

Verify the decomposition in one direction.

Parameters
bsplineThe B-spline space in the direction to check
nr_subintervalsThe number of subintervals in the direction to check
MAX_COMM_NEIGHBOURSThe maximum number of neighbours in the direction to check
directionThe direction to check ('x', 'y', or 'z')
is_distributedWether or not the direction is distributed in memory

◆ determine_global_indices()

pure subroutine, public m_domain_decomp::determine_global_indices ( integer, intent(out) l0,
integer, intent(out) l1,
type(bsplinespace), dimension(3), intent(in) bsplines,
type(tensorproddomain), intent(in) domain,
type(tensorprodindices), intent(in) my_resp_bspline )

Determine the global indices l0 and l1 for the responsible B-splines of the current rank.

Parameters
[out]l0The global index of the first B-spline in the current rank's responsible B-spline space
[out]l1The global index of the last B-spline in the current rank's responsible B-spline space
[in]bsplinesThe B-spline spaces in the x, y, and z directions
[in]domainThe TensorProdDomain defining the decomposition
[in]my_resp_bsplineThe responsible B-spline indices for the current rank

◆ node_actv_bspline_indices_1d()

pure subroutine, public m_domain_decomp::node_actv_bspline_indices_1d ( integer, intent(out) i0,
integer, intent(out) i1,
integer, intent(in) ii0,
integer, intent(in) ii1,
type(bsplinespace), intent(in) bspline )

Determine the active B-spline indices for the current rank in one direction.

Parameters
[out]i0The start index of the active B-spline
[out]i1The end index of the active B-spline
[in]ii0The start index of the responsible interval
[in]ii1The end index of the responsible interval
[in]bsplineThe B-spline space

◆ resp_bspline_indices_1d()

pure subroutine, public m_domain_decomp::resp_bspline_indices_1d ( integer, intent(out) i0,
integer, intent(out) i1,
type(bsplinespace), intent(in) bspline,
integer, intent(in) nr_subintervals,
integer, intent(in) my_rank_i,
integer, intent(in) ii0,
integer, intent(in) ii1 )

Determine the responsible B-spline indices for the current rank in one direction.

Parameters
[out]i0The start index of the responsible B-spline
[out]i1The end index of the responsible B-spline
[in]bsplineThe B-spline space
[in]nr_subintervalsThe number of subintervals
[in]my_rank_iThe subinterval index of the current rank
[in]ii0The start index of the responsible interval
[in]ii1The end index of the responsible interval

◆ resp_interval_indices_1d()

pure subroutine, public m_domain_decomp::resp_interval_indices_1d ( integer, intent(out) ii0,
integer, intent(out) ii1,
type(bsplinespace), intent(in) bspline,
integer, intent(in) nr_subintervals,
integer, intent(in) my_rank_i )

Determine the responsible interval indices for the current rank in one direction.

Parameters
[out]ii0The start index of the responsible interval
[out]ii1The end index of the responsible interval
[in]bsplineThe B-spline space
[in]nr_subintervalsThe number of subintervals
[in]my_rank_iThe subinterval index of the current rank