|
| std::vector< Vec > | create_vectors (MPI_Comm comm, const std::vector< std::span< const PetscScalar > > &x) |
| | Create PETSc vectors from the local data. The data is copied into the PETSc vectors and is not shared. Each vector's global size is determined by summing the corresponding local size across all ranks in comm.
|
| Vec | create_vector (const common::IndexMap &map, int bs) |
| | Create a ghosted PETSc Vec.
|
| Vec | create_vector (MPI_Comm comm, std::array< std::int64_t, 2 > range, std::span< const std::int64_t > ghosts, int bs) |
| | Create a ghosted PETSc Vec from a local range and ghost indices.
|
| Vec | create_vector_wrap (const common::IndexMap &map, int bs, std::span< const PetscScalar > x) |
| | Create a PETSc Vec that wraps the data in an array.
|
| template<class V> |
| Vec | create_vector_wrap (const la::Vector< V > &x) |
| | Create a PETSc Vec that wraps the data in an array.
|
| std::vector< IS > | create_index_sets (const std::vector< std::pair< std::reference_wrapper< const common::IndexMap >, int > > &maps) |
| | Index sets addressing a stack of index maps in the calling rank's local numbering.
|
| std::vector< IS > | create_global_index_sets (const std::vector< std::pair< std::reference_wrapper< const common::IndexMap >, int > > &maps) |
| | Index sets describing each field of a stack of index maps in the global numbering of the stacked problem.
|
|
std::vector< std::vector< PetscScalar > > | get_local_vectors (const Vec x, const std::vector< std::pair< std::reference_wrapper< const common::IndexMap >, int > > &maps) |
| | Copy blocks from Vec into local arrays.
|
|
void | scatter_local_vectors (Vec x, const std::vector< std::span< const PetscScalar > > &x_b, const std::vector< std::pair< std::reference_wrapper< const common::IndexMap >, int > > &maps) |
| | Scatter local vectors to Vec.
|
| Mat | create_matrix (MPI_Comm comm, const SparsityPattern &sp, std::optional< std::string_view > type=std::nullopt, std::optional< ISLocalToGlobalMapping > rlgmap=std::nullopt, std::optional< ISLocalToGlobalMapping > clgmap=std::nullopt) |
| | Create a PETSc Mat. Caller is responsible for destroying the returned object.
|
| MatNullSpace | create_nullspace (MPI_Comm comm, std::span< const Vec > basis) |
| | Create PETSc MatNullSpace. Caller is responsible for destruction returned object.
|
PETSc linear algebra functions.
| std::vector< IS > create_global_index_sets |
( |
const std::vector< std::pair< std::reference_wrapper< const common::IndexMap >, int > > & | maps | ) |
|
Index sets describing each field of a stack of index maps in the global numbering of the stacked problem.
Each set covers one map's owned entries. Ghosts are excluded, as each is owned by exactly one rank, so the sets of all ranks partition the stacked problem. Preconditioners that split a problem into fields, such as PCBDDC and PCFIELDSPLIT, take sets of this form.
- See also
- create_index_sets for rank-local sets that include ghosts.
- Note
- The caller is responsible for destruction of each IS.
- Parameters
-
| [in] | maps | Index maps and corresponding block sizes. All maps must share a communicator. |
- Returns
- One index set per map, created on the maps' communicator.
- Exceptions
-
| std::invalid_argument | If the maps do not share a communicator. |
| std::vector< IS > create_index_sets |
( |
const std::vector< std::pair< std::reference_wrapper< const common::IndexMap >, int > > & | maps | ) |
|
Index sets addressing a stack of index maps in the calling rank's local numbering.
Each set covers one map's owned and ghost entries, at the offset that map occupies in the stack, so the sets address a rank's local block of a stacked problem, such as a sub-block of a blocked matrix.
If map[0] has 7 local entries (owned plus ghost) and map[1] has 4, then IS[0] = {0, 1, 2, 3, 4, 5, 6} and IS[1] = {7, 8, 9, 10}. The sets are rank-private: every rank numbers from zero.
- See also
- create_global_index_sets for sets that describe a field of the distributed problem in global numbering.
- Todo
- This function could take just the local sizes.
- Note
- The caller is responsible for destruction of each IS.
- Parameters
-
| [in] | maps | Index maps and corresponding block sizes. |
- Returns
- One index set per map, created on PETSC_COMM_SELF.