13 using typename FullNLProblem::Scalar;
14 using typename FullNLProblem::THessian;
15 using typename FullNLProblem::TVector;
20 const std::vector<int> &boundary_nodes,
21 const std::vector<std::shared_ptr<Form>> &
forms);
25 const std::vector<int> &boundary_nodes,
26 const std::vector<mesh::LocalBoundary> &local_boundary,
27 const int n_boundary_samples,
29 const std::shared_ptr<utils::PeriodicBoundary> &periodic_bc,
31 const std::vector<std::shared_ptr<Form>> &
forms);
34 virtual double value(
const TVector &
x)
override;
35 virtual void gradient(
const TVector &
x, TVector &gradv)
override;
38 virtual bool is_step_valid(
const TVector &x0,
const TVector &x1)
override;
40 virtual double max_step_size(
const TVector &x0,
const TVector &x1)
override;
43 virtual void post_step(
const polysolve::nonlinear::PostStepData &data)
override;
96 template <
class FullMat,
class ReducedMat>
99 template <
class ReducedMat,
class FullMat>
102 template <
class FullMat,
class ReducedMat>
std::vector< std::shared_ptr< Form > > & forms()
const int full_size_
Size of the full problem.
void line_search_begin(const TVector &x0, const TVector &x1) override
void full_to_reduced_aux_grad(const std::vector< int > &boundary_nodes, const int full_size, const int reduced_size, const FullMat &full, ReducedMat &reduced) const
virtual bool is_step_valid(const TVector &x0, const TVector &x1) override
virtual void post_step(const polysolve::nonlinear::PostStepData &data) override
virtual TVector full_to_reduced_grad(const TVector &full) const
const std::vector< mesh::LocalBoundary > * local_boundary_
const int reduced_size_
Size of the reduced problem.
const int n_boundary_samples_
const assembler::RhsAssembler * rhs_assembler_
virtual TVector full_to_reduced(const TVector &full) const
virtual void update_quantities(const double t, const TVector &x)
virtual void gradient(const TVector &x, TVector &gradv) override
void reduced_to_full_aux(const std::vector< int > &boundary_nodes, const int full_size, const int reduced_size, const ReducedMat &reduced, const Eigen::MatrixXd &rhs, FullMat &full) const
void init_lagging(const TVector &x) override
const std::vector< int > full_boundary_nodes_
virtual bool is_step_collision_free(const TVector &x0, const TVector &x1) override
virtual TVector reduced_to_full(const TVector &reduced) const
void full_to_reduced_aux(const std::vector< int > &boundary_nodes, const int full_size, const int reduced_size, const FullMat &full, ReducedMat &reduced) const
void update_lagging(const TVector &x, const int iter_num) override
virtual Eigen::MatrixXd boundary_values() const
virtual void full_hessian_to_reduced_hessian(const THessian &full, THessian &reduced) const
virtual double value(const TVector &x) override
virtual double max_step_size(const TVector &x0, const TVector &x1) override
virtual ~NLProblem()=default
std::shared_ptr< utils::PeriodicBoundary > periodic_bc_
virtual void hessian(const TVector &x, THessian &hessian) override
void solution_changed(const TVector &new_x) override
void set_apply_DBC(const TVector &x, const bool val)
const std::vector< int > boundary_nodes_
CurrentSize current_size_
Current size of the problem (either full or reduced size)