31 std::string
name()
const override {
return "stacked"; }
34 void add(
const Block &block, std::shared_ptr<Form> form);
35 void add(
const Block &a,
const Block &b, std::shared_ptr<Form> form);
39 void init(
const Eigen::VectorXd &
x)
override;
41 bool is_step_valid(
const Eigen::VectorXd &x0,
const Eigen::VectorXd &x1)
const override;
43 double max_step_size(
const Eigen::VectorXd &x0,
const Eigen::VectorXd &x1)
const override;
44 void line_search_begin(
const Eigen::VectorXd &x0,
const Eigen::VectorXd &x1)
override;
46 void post_step(
const polysolve::nonlinear::PostStepData &data)
override;
51 void update_lagging(
const Eigen::VectorXd &
x,
const int iter_num)
override;
65 std::shared_ptr<Form>
form;
72 Eigen::VectorXd
gather(
const Eigen::VectorXd &
x,
const Term &term)
const;
73 int global_index(
const Term &term,
const int local_index)
const;
Eigen::SparseMatrix< double, Eigen::ColMajor > StiffnessMatrix