4#include <polysolve/nonlinear/PostStepData.hpp>
15 virtual std::string
name()
const = 0;
19 virtual void init(
const Eigen::VectorXd &
x) {}
26 inline virtual double value(
const Eigen::VectorXd &
x)
const
42 inline virtual void first_derivative(
const Eigen::VectorXd &
x, Eigen::VectorXd &gradv)
const
62 virtual bool is_step_valid(
const Eigen::VectorXd &x0,
const Eigen::VectorXd &x1)
const {
return true; }
68 virtual double max_step_size(
const Eigen::VectorXd &x0,
const Eigen::VectorXd &x1)
const {
return 1; }
82 virtual void post_step(
const polysolve::nonlinear::PostStepData &data) {}
153 if (
output_dir_.empty() || path.empty() || std::filesystem::path(path).is_absolute())
155 return std::filesystem::weakly_canonical(std::filesystem::path(
output_dir_) / path).string();
168 throw std::runtime_error(
"Not implemented");
Eigen::SparseMatrix< double, Eigen::ColMajor > StiffnessMatrix