|
BSpline Finite Element Exterior Calculus
|
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. | |
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.
| 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.
| bspline | The B-spline space in the direction to check |
| nr_subintervals | The number of subintervals in the direction to check |
| MAX_COMM_NEIGHBOURS | The maximum number of neighbours in the direction to check |
| direction | The direction to check ('x', 'y', or 'z') |
| is_distributed | Wether or not the direction is distributed in memory |
| 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.
| [out] | l0 | The global index of the first B-spline in the current rank's responsible B-spline space |
| [out] | l1 | The global index of the last B-spline in the current rank's responsible B-spline space |
| [in] | bsplines | The B-spline spaces in the x, y, and z directions |
| [in] | domain | The TensorProdDomain defining the decomposition |
| [in] | my_resp_bspline | The responsible B-spline indices for the current rank |
| 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.
| [out] | i0 | The start index of the active B-spline |
| [out] | i1 | The end index of the active B-spline |
| [in] | ii0 | The start index of the responsible interval |
| [in] | ii1 | The end index of the responsible interval |
| [in] | bspline | The B-spline space |
| 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.
| [out] | i0 | The start index of the responsible B-spline |
| [out] | i1 | The end index of the responsible B-spline |
| [in] | bspline | The B-spline space |
| [in] | nr_subintervals | The number of subintervals |
| [in] | my_rank_i | The subinterval index of the current rank |
| [in] | ii0 | The start index of the responsible interval |
| [in] | ii1 | The end index of the responsible interval |
| 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.
| [out] | ii0 | The start index of the responsible interval |
| [out] | ii1 | The end index of the responsible interval |
| [in] | bspline | The B-spline space |
| [in] | nr_subintervals | The number of subintervals |
| [in] | my_rank_i | The subinterval index of the current rank |