10 #include <Eigen/Sparse>
11 #include <dolfinx/common/types.h>
56 Eigen::Ref<Eigen::Matrix<PetscScalar, Eigen::Dynamic, 1>> b,
const Form& L);
77 Vec b,
const std::vector<std::shared_ptr<const Form>>& a,
78 const std::vector<std::vector<std::shared_ptr<const DirichletBC>>>& bcs1,
79 const std::vector<Vec>& x0,
double scale);
94 Eigen::Ref<Eigen::Matrix<PetscScalar, Eigen::Dynamic, 1>> b,
95 const std::vector<std::shared_ptr<const Form>>& a,
96 const std::vector<std::vector<std::shared_ptr<const DirichletBC>>>& bcs1,
98 Eigen::Ref<
const Eigen::Matrix<PetscScalar, Eigen::Dynamic, 1>>>& x0,
110 const Form& a,
const std::vector<std::shared_ptr<const DirichletBC>>& bcs);
124 Mat A,
const Form& a,
125 const std::vector<std::shared_ptr<const DirichletBC>>& bcs);
138 void assemble_matrix(Mat A,
const Form& a,
const std::vector<bool>& bc0,
139 const std::vector<bool>& bc1);
157 void add_diagonal(Mat A,
const function::FunctionSpace& V,
158 const std::vector<std::shared_ptr<const DirichletBC>>& bcs,
159 PetscScalar diagonal = 1.0);
177 const Eigen::Ref<
const Eigen::Array<std::int32_t, Eigen::Dynamic, 1>>& rows,
178 PetscScalar diagonal = 1.0);
190 void set_bc(Vec b,
const std::vector<std::shared_ptr<const DirichletBC>>& bcs,
191 const Vec x0,
double scale = 1.0);
197 Eigen::Ref<Eigen::Matrix<PetscScalar, Eigen::Dynamic, 1>> b,
198 const std::vector<std::shared_ptr<const DirichletBC>>& bcs,
199 const Eigen::Ref<
const Eigen::Matrix<PetscScalar, Eigen::Dynamic, 1>>& x0,
205 void set_bc(Eigen::Ref<Eigen::Matrix<PetscScalar, Eigen::Dynamic, 1>> b,
206 const std::vector<std::shared_ptr<const DirichletBC>>& bcs,
218 std::vector<std::vector<std::shared_ptr<const fem::DirichletBC>>>
219 bcs_rows(
const std::vector<const Form*>& L,
220 const std::vector<std::shared_ptr<const fem::DirichletBC>>& bcs);
231 std::vector<std::vector<std::vector<std::shared_ptr<const fem::DirichletBC>>>>
232 bcs_cols(
const std::vector<std::vector<std::shared_ptr<const Form>>>& a,
233 const std::vector<std::shared_ptr<const DirichletBC>>& bcs);