6#include <amdis/common/Index.hpp>
7#include <amdis/linearalgebra/SymmetryStructure.hpp>
8#include <amdis/linearalgebra/petsc/IndexDistribution.hpp>
11#include <amdis/common/parallel/Communicator.hpp>
20 template <
class RowBasis,
class ColBasis>
22 SymmetryStructure
symmetry = SymmetryStructure::unknown)
25 init(rowBasis, rowBasis.indexDistribution(), colBasis, colBasis.indexDistribution());
29 std::vector<PetscInt>
const& d_nnz()
const
35 std::vector<PetscInt>
const&
o_nnz()
const
48 template <
class RowBasis,
class ColBasis,
class LI>
53 template <
class RowBasis,
class ColBasis,
class GID,
class LI>
54 void init(RowBasis
const& rowBasis, PetscParallelIndexDistribution<GID,LI>
const& rowDofMap,
55 ColBasis
const& colBasis, PetscParallelIndexDistribution<GID,LI>
const& colDofMap);
57 std::vector<PetscInt> dnnz_;
58 std::vector<PetscInt> onnz_;
59 SymmetryStructure symmetry_;
62 const Mpi::Tag tag_{916821};
68#include <amdis/linearalgebra/petsc/MatrixNnzStructure.inc.hpp>
Sparsity pattern used to create PETSc matrices.
Definition: MatrixNnzStructure.hpp:18
SymmetryStructure symmetry() const
Symmetry of the matrix entries.
Definition: MatrixNnzStructure.hpp:41
std::vector< PetscInt > const & o_nnz() const
Return Number of nonzeros in the off-diagonal part (overlap part)
Definition: MatrixNnzStructure.hpp:35
Fallback for PetscParallelIndexDistribution in case there is only one mpi core.
Definition: IndexDistribution.hpp:33