22 AdjointNLProblem(std::shared_ptr<AdjointForm> form,
const std::vector<std::shared_ptr<AdjointForm>> &stopping_conditions,
const VariableToSimulationGroup &variables_to_simulation,
const std::vector<std::shared_ptr<State>> &all_states,
const json &args);
25 double value(
const Eigen::VectorXd &
x)
override;
27 void gradient(
const Eigen::VectorXd &
x, Eigen::VectorXd &gradv)
override;
29 void save_to_file(
const int iter_num,
const Eigen::VectorXd &x0);
30 bool is_step_valid(
const Eigen::VectorXd &x0,
const Eigen::VectorXd &x1)
override;
32 double max_step_size(
const Eigen::VectorXd &x0,
const Eigen::VectorXd &x1)
override;
34 void line_search_begin(
const Eigen::VectorXd &x0,
const Eigen::VectorXd &x1)
override;
36 void post_step(
const polysolve::nonlinear::PostStepData &data)
override;
37 bool stop(
const TVector &
x)
override;
44 std::shared_ptr<AdjointForm>
form_;
bool after_line_search_custom_operation(const Eigen::VectorXd &x0, const Eigen::VectorXd &x1) override
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
const bool smooth_line_search
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_
void hessian(const Eigen::VectorXd &x, StiffnessMatrix &hessian) override
void post_step(const polysolve::nonlinear::PostStepData &data) override
void line_search_end() override
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_state_mask
double value(const Eigen::VectorXd &x) override
std::vector< std::shared_ptr< State > > all_states_
std::shared_ptr< AdjointForm > form_
const VariableToSimulationGroup variables_to_simulation_
void line_search_begin(const Eigen::VectorXd &x0, const Eigen::VectorXd &x1) override
const bool solve_in_parallel
virtual ~AdjointNLProblem()=default
A collection of VariableToSimulation.
Eigen::SparseMatrix< double, Eigen::ColMajor > StiffnessMatrix