|
| 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) |
| | Compute PETSc IndexSets (IS) for a stack of index maps.
|
|
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) |
| | 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_index_sets |
( |
const std::vector< std::pair< std::reference_wrapper< const common::IndexMap >, int > > & | maps | ) |
|
Compute PETSc IndexSets (IS) for a stack of index maps.
If map[0] = {0, 1, 2, 3, 4, 5, 6} and map[1] = {0, 1, 2, 4} (in local indices) then IS[0] = {0, 1, 2, 3, 4, 5, 6} and IS[1] = {7, 8, 9, 10}.
- Todo
- This function could take just the local sizes.
- Note
- The caller is responsible for destruction of each IS.
- Parameters
-
| [in] | maps | Vector of IndexMaps and corresponding block sizes |
- Returns
- Vector of PETSc Index Sets, created on PETSC_COMM_SELF