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_;
bool after_line_search_custom_operation(const Eigen::VectorXd &x0, const Eigen::VectorXd &x1) override
std::function< bool()> remeshing_trigger_
double max_step_size(const Eigen::VectorXd &x0, const Eigen::VectorXd &x1) override
void gradient(const Eigen::VectorXd &x, Eigen::VectorXd &gradv) override
std::ofstream solution_ostream
void save_to_file(const int iter_num, const Eigen::VectorXd &x0)
bool stop(const TVector &x) override
bool is_step_valid(const Eigen::VectorXd &x0, const Eigen::VectorXd &x1) override
std::vector< std::shared_ptr< AdjointForm > > stopping_conditions_
std::vector< std::shared_ptr< DiffCache > > all_diff_caches_
std::vector< int > initial_guess_sources_
Source state for initial guess.
void hessian(const Eigen::VectorXd &x, StiffnessMatrix &hessian) override
void post_step(const polysolve::nonlinear::PostStepData &data) override
void line_search_end() override
std::vector< std::shared_ptr< varform::DifferentiableVarForm > > all_varforms_
void solution_changed(const Eigen::VectorXd &new_x) override
bool is_step_collision_free(const Eigen::VectorXd &x0, const Eigen::VectorXd &x1) override
std::vector< int > solve_in_order
std::vector< bool > active_varform_mask
VariableToSimulationGroup variables_to_simulation_
double value(const Eigen::VectorXd &x) override
std::shared_ptr< AdjointForm > form_
void line_search_begin(const Eigen::VectorXd &x0, const Eigen::VectorXd &x1) override
Eigen::SparseMatrix< double, Eigen::ColMajor > StiffnessMatrix