17 return std::make_unique<PETScMatrix>();
23 return std::make_unique<PETScMatrix>(A);
29 auto const nrows = spec.nrows;
30 auto const ncols = spec.ncols;
32 if (!spec.sparsity_pattern)
35 "PETSc matrix creation requires a sparsity pattern for memory "
38 return std::make_unique<PETScMatrix>(nrows, ncols, *spec.sparsity_pattern);
43 return std::make_unique<PETScVector>();
49 return std::make_unique<PETScVector>(x);
55 auto const is_global_size =
false;
57 if (spec.ghost_indices !=
nullptr)
59 return std::make_unique<PETScVector>(spec.nrows, *spec.ghost_indices,
64 return std::make_unique<PETScVector>(spec.nrows, is_global_size);
71 auto const is_global_size =
false;
73 return std::make_unique<PETScVector>(length, is_global_size);
83 return std::make_unique<EigenMatrix>(0, 0);
89 return std::make_unique<EigenMatrix>(A);
95 auto A = std::make_unique<EigenMatrix>(spec.nrows);
97 if (spec.sparsity_pattern)
107 return std::make_unique<EigenVector>();
113 return std::make_unique<EigenVector>(x);
119 return std::make_unique<EigenVector>(spec.nrows);
123 Eigen::SparseMatrix<double>::Index
const length)
125 return std::make_unique<EigenVector>(length);
Global vector based on Eigen vector.
Wrapper class for PETSc matrix routines for matrix.
Wrapper class for PETSc vector.
void setMatrixSparsity(MATRIX &matrix, SPARSITY_PATTERN const &sparsity_pattern)