PolyFEM
|
#include <ALSolver.hpp>
Public Member Functions | |
ALSolver (const std::vector< std::shared_ptr< AugmentedLagrangianForm > > &alagr_form, const double initial_al_weight, const double scaling, const double max_al_weight, const double eta_tol, const std::function< void(const Eigen::VectorXd &)> &update_barrier_stiffness) | |
virtual | ~ALSolver ()=default |
void | solve_al (std::shared_ptr< NLSolver > nl_solver, NLProblem &nl_problem, Eigen::MatrixXd &sol) |
void | solve_reduced (std::shared_ptr< NLSolver > nl_solver, NLProblem &nl_problem, Eigen::MatrixXd &sol) |
Public Attributes | |
std::function< void(const double)> | post_subsolve = [](const double) {} |
Protected Member Functions | |
void | set_al_weight (NLProblem &nl_problem, const Eigen::VectorXd &x, const double weight) |
Protected Attributes | |
std::vector< std::shared_ptr< AugmentedLagrangianForm > > | alagr_forms |
const double | initial_al_weight |
const double | scaling |
const double | max_al_weight |
const double | eta_tol |
std::function< void(const Eigen::VectorXd &)> | update_barrier_stiffness |
Private Types | |
using | NLSolver = polysolve::nonlinear::Solver |
Definition at line 15 of file ALSolver.hpp.
|
private |
Definition at line 17 of file ALSolver.hpp.
polyfem::solver::ALSolver::ALSolver | ( | const std::vector< std::shared_ptr< AugmentedLagrangianForm > > & | alagr_form, |
const double | initial_al_weight, | ||
const double | scaling, | ||
const double | max_al_weight, | ||
const double | eta_tol, | ||
const std::function< void(const Eigen::VectorXd &)> & | update_barrier_stiffness | ||
) |
Definition at line 7 of file ALSolver.cpp.
|
virtualdefault |
|
protected |
Definition at line 140 of file ALSolver.cpp.
References alagr_forms, polyfem::solver::NLProblem::use_full_size(), and polyfem::solver::NLProblem::use_reduced_size().
Referenced by solve_al().
void polyfem::solver::ALSolver::solve_al | ( | std::shared_ptr< NLSolver > | nl_solver, |
NLProblem & | nl_problem, | ||
Eigen::MatrixXd & | sol | ||
) |
Definition at line 23 of file ALSolver.cpp.
References alagr_forms, eta_tol, polyfem::solver::FullNLProblem::finish(), polyfem::solver::NLProblem::full_size(), polyfem::solver::NLProblem::full_to_reduced(), polyfem::solver::FullNLProblem::init(), initial_al_weight, polyfem::solver::NLProblem::is_step_collision_free(), polyfem::solver::NLProblem::is_step_valid(), polyfem::solver::NLProblem::line_search_begin(), polyfem::solver::FullNLProblem::line_search_end(), polyfem::log_and_throw_error(), polyfem::logger(), max_al_weight, post_subsolve, polyfem::solver::NLProblem::reduced_size(), scaling, set_al_weight(), update_barrier_stiffness, and polyfem::solver::NLProblem::value().
Referenced by polyfem::mesh::constrained_L2_projection(), and polyfem::State::solve_tensor_nonlinear().
void polyfem::solver::ALSolver::solve_reduced | ( | std::shared_ptr< NLSolver > | nl_solver, |
NLProblem & | nl_problem, | ||
Eigen::MatrixXd & | sol | ||
) |
Definition at line 106 of file ALSolver.cpp.
References polyfem::solver::FullNLProblem::finish(), polyfem::solver::NLProblem::full_size(), polyfem::solver::NLProblem::full_to_reduced(), polyfem::solver::FullNLProblem::init(), polyfem::solver::NLProblem::is_step_collision_free(), polyfem::solver::NLProblem::is_step_valid(), polyfem::solver::NLProblem::line_search_begin(), polyfem::log_and_throw_error(), polyfem::logger(), post_subsolve, polyfem::solver::NLProblem::reduced_to_full(), update_barrier_stiffness, and polyfem::solver::NLProblem::value().
Referenced by polyfem::State::solve_tensor_nonlinear().
|
protected |
Definition at line 37 of file ALSolver.hpp.
Referenced by set_al_weight(), and solve_al().
|
protected |
Definition at line 41 of file ALSolver.hpp.
Referenced by solve_al().
|
protected |
Definition at line 38 of file ALSolver.hpp.
Referenced by solve_al().
|
protected |
Definition at line 40 of file ALSolver.hpp.
Referenced by solve_al().
std::function<void(const double)> polyfem::solver::ALSolver::post_subsolve = [](const double) {} |
Definition at line 32 of file ALSolver.hpp.
Referenced by solve_al(), solve_reduced(), and polyfem::State::solve_tensor_nonlinear().
|
protected |
Definition at line 39 of file ALSolver.hpp.
Referenced by solve_al().
|
protected |
Definition at line 44 of file ALSolver.hpp.
Referenced by solve_al(), and solve_reduced().