![]() |
MFEM v4.9.0
Finite element discretization library
|
Class for interior-point solvers of contact-problems described by a OptContactProblem. More...
#include <ip.hpp>
Public Member Functions | |
| IPSolver (OptContactProblem *) | |
| Construct interior-point solver. | |
| void | Mult (const Vector &, Vector &) |
| Apply the interior-point solver. | |
| void | Mult (const BlockVector &, BlockVector &) |
| Apply the interior-point solver. | |
| void | SetTol (real_t tol) |
| Set absolute tolerance. | |
| void | SetMaxIter (int max_it) |
| Set maximum number of interior-point steps. | |
| void | SetLinearSolver (Solver *solver_) |
| Set linear solver. | |
| void | SetPrintLevel (int print_level_) |
| Set print level. | |
| bool | GetConverged () const |
| Get convergence status of most recent Mult call. | |
| int | GetNumIterations () |
| get number of interior-point iterations of most recent Mult call | |
| Array< int > & | GetLinearSolverIterations () |
| Get solver iteration counts. | |
| virtual | ~IPSolver () |
Class for interior-point solvers of contact-problems described by a OptContactProblem.
IPSolver is an implementation of a primal-dual interior-point algorithm as described in Wächter, Andreas, and Lorenz T. Biegler. "On the implementation of an interior-point filter line-search algorithm for large-scale nonlinear programming." Mathematical programming 106.1 (2006): 25-57.
With inertia-free regularization as described in Chiang, Nai-Yuan, and Victor M. Zavala. "An inertia-free filter line-search algorithm for large-scale nonlinear programming." Computational Optimization and Applications 64.2 (2016): 327-354.
This solver contains less solver options than say ipopt but the user has full control over the linear solver.
This solver is intended to solve problems of the form
\[ \min_{u, m} f(u, m) \qquad \text{s.t.} \quad c(u, m) = 0, m \geq 0 \]
In the context of frictionless quasi-static contact mechanics for the displacement variable \(d\) and slack variable \(s\) we have
\[ \min_{d, s} E(d, s) \qquad \text{s.t.} \quad g(d) - s = 0, \; s \geq 0 \]
| mfem::IPSolver::IPSolver | ( | OptContactProblem * | problem_ | ) |
|
inline |
|
inline |
|
inline |
| void mfem::IPSolver::Mult | ( | const BlockVector & | x0, |
| BlockVector & | xf ) |
|
inline |
|
inline |
|
inline |
|
inline |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
OptContactProblem (not owned).
|
protected |
|
protected |
|
protected |