|
FEBio
1.5.0
|
#include <BFGSSolver.h>
Public Member Functions | |
| BFGSSolver () | |
| constructor | |
| void | Init (int neq, NonLinearSystem *pNLS, LinearSolver *pls) |
| New initialization method. | |
| bool | Update (double s, vector< double > &ui, vector< double > &R0, vector< double > &R1) |
| perform a BFGS udpate | |
| void | SolveEquations (vector< double > &x, vector< double > &b) |
| solve the equations | |
| void | Solve () |
| Solve the system. | |
| double | LineSearch () |
| Performs a linesearch. | |
Data Fields | |
| int | m_maxups |
| max nr of QN iters permitted between stiffness reformations | |
| int | m_maxref |
| max nr of reformations per time step | |
| double | m_cmax |
| maximum value for the condition number | |
| double | m_LSmin |
| minimum line search step | |
| double | m_LStol |
| line search tolerance | |
| int | m_LSiter |
| max nr of line search iterations | |
| LinearSolver * | m_plinsolve |
| pointer to linear solver | |
| NonLinearSystem * | m_pNLS |
| int | m_neq |
| int | m_nups |
| nr of stiffness updates | |
| vector< double > | m_ui |
| displacement increment vector | |
| vector< double > | m_R0 |
| residual at iteration i-1 | |
| vector< double > | m_R1 |
| residual at iteration i | |
| matrix | m_V |
| matrix | m_W |
| vector< double > | m_D |
| vector< double > | m_G |
| vector< double > | m_H |
| temp vectors for calculating BFGS update vectors | |
The BFGSSolver solves a nonlinear system of equations using the BFGS method. It depends on the NonLinearSystem to evaluate the function and its jacobian.
| bool FECore::BFGSSolver::Update | ( | double | s, |
| vector< double > & | ui, | ||
| vector< double > & | R0, | ||
| vector< double > & | R1 | ||
| ) |
perform a BFGS udpate
This function performs a BFGS stiffness update. The last line search step is input to this function. This function performs the update assuming the stiffness matrix is positive definite. In the case that this is not the case the function returns false. The function also returns false if the condition number is too big. A too big condition number might be an indication of an ill-conditioned matrix and the update should not be performed.
1.7.5.1