Loading [MathJax]/extensions/tex2jax.js
PolyFEM
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
polyfem::solver::ALSolver Class Reference

#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 (NLProblem &nl_problem, Eigen::MatrixXd &sol, std::shared_ptr< polysolve::nonlinear::Solver > nl_solver)
 
void solve_al (NLProblem &nl_problem, Eigen::MatrixXd &sol, const json &nl_solver_params, const json &linear_solver, const double characteristic_length, std::shared_ptr< polysolve::nonlinear::Solver > nl_solver=nullptr)
 
void solve_reduced (NLProblem &nl_problem, Eigen::MatrixXd &sol, std::shared_ptr< polysolve::nonlinear::Solver > nl_solver)
 
void solve_reduced (NLProblem &nl_problem, Eigen::MatrixXd &sol, const json &nl_solver_params, const json &linear_solver, const double characteristic_length, std::shared_ptr< polysolve::nonlinear::Solver > nl_solver=nullptr)
 

Public Attributes

std::function< void(const double)> post_subsolve = [](const double) {}
 

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
 

Detailed Description

Definition at line 15 of file ALSolver.hpp.

Member Typedef Documentation

◆ NLSolver

using polyfem::solver::ALSolver::NLSolver = polysolve::nonlinear::Solver
private

Definition at line 17 of file ALSolver.hpp.

Constructor & Destructor Documentation

◆ ALSolver()

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.

◆ ~ALSolver()

virtual polyfem::solver::ALSolver::~ALSolver ( )
virtualdefault

Member Function Documentation

◆ solve_al() [1/2]

◆ solve_al() [2/2]

void polyfem::solver::ALSolver::solve_al ( NLProblem nl_problem,
Eigen::MatrixXd &  sol,
std::shared_ptr< polysolve::nonlinear::Solver >  nl_solver 
)
inline

Definition at line 29 of file ALSolver.hpp.

References solve_al().

Referenced by polyfem::mesh::constrained_L2_projection(), solve_al(), solve_reduced(), and polyfem::State::solve_tensor_nonlinear().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ solve_reduced() [1/2]

void polyfem::solver::ALSolver::solve_reduced ( NLProblem nl_problem,
Eigen::MatrixXd &  sol,
const json nl_solver_params,
const json linear_solver,
const double  characteristic_length,
std::shared_ptr< polysolve::nonlinear::Solver >  nl_solver = nullptr 
)

◆ solve_reduced() [2/2]

void polyfem::solver::ALSolver::solve_reduced ( NLProblem nl_problem,
Eigen::MatrixXd &  sol,
std::shared_ptr< polysolve::nonlinear::Solver >  nl_solver 
)
inline

Definition at line 41 of file ALSolver.hpp.

References solve_al().

Referenced by polyfem::State::solve_tensor_nonlinear().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ alagr_forms

std::vector<std::shared_ptr<AugmentedLagrangianForm> > polyfem::solver::ALSolver::alagr_forms
protected

Definition at line 56 of file ALSolver.hpp.

Referenced by solve_al().

◆ eta_tol

const double polyfem::solver::ALSolver::eta_tol
protected

Definition at line 60 of file ALSolver.hpp.

Referenced by solve_al().

◆ initial_al_weight

const double polyfem::solver::ALSolver::initial_al_weight
protected

Definition at line 57 of file ALSolver.hpp.

Referenced by solve_al().

◆ max_al_weight

const double polyfem::solver::ALSolver::max_al_weight
protected

Definition at line 59 of file ALSolver.hpp.

Referenced by solve_al().

◆ post_subsolve

std::function<void(const double)> polyfem::solver::ALSolver::post_subsolve = [](const double) {}

Definition at line 53 of file ALSolver.hpp.

Referenced by solve_al(), solve_reduced(), and polyfem::State::solve_tensor_nonlinear().

◆ scaling

const double polyfem::solver::ALSolver::scaling
protected

Definition at line 58 of file ALSolver.hpp.

Referenced by solve_al().

◆ update_barrier_stiffness

std::function<void(const Eigen::VectorXd &)> polyfem::solver::ALSolver::update_barrier_stiffness
protected

Definition at line 63 of file ALSolver.hpp.

Referenced by solve_al(), and solve_reduced().


The documentation for this class was generated from the following files: