25 const std::vector<std::shared_ptr<varform::DifferentiableVarForm>> &all_varforms,
26 const std::vector<std::shared_ptr<DiffCache>> &all_diff_caches,
28 std::function<
bool()> remeshing_trigger = {});
30 const std::vector<std::shared_ptr<AdjointForm>> &stopping_conditions,
32 const std::vector<std::shared_ptr<varform::DifferentiableVarForm>> &all_varforms,
33 const std::vector<std::shared_ptr<DiffCache>> &all_diff_caches,
35 std::function<
bool()> remeshing_trigger = {});
37 double value(
const Eigen::VectorXd &
x)
override;
39 void gradient(
const Eigen::VectorXd &
x, Eigen::VectorXd &gradv)
override;
41 void save_to_file(
const int iter_num,
const Eigen::VectorXd &x0);
42 bool is_step_valid(
const Eigen::VectorXd &x0,
const Eigen::VectorXd &x1)
override;
44 double max_step_size(
const Eigen::VectorXd &x0,
const Eigen::VectorXd &x1)
override;
46 void line_search_begin(
const Eigen::VectorXd &x0,
const Eigen::VectorXd &x1)
override;
48 void post_step(
const polysolve::nonlinear::PostStepData &data)
override;
49 bool stop(
const TVector &
x)
override;
56 std::shared_ptr<AdjointForm>
form_;
58 std::vector<std::shared_ptr<varform::DifferentiableVarForm>>
all_varforms_;