FEBio  1.5.0
Public Member Functions | Data Fields
FECore::BFGSSolver Class Reference

#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
LinearSolverm_plinsolve
 pointer to linear solver
NonLinearSystemm_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

Detailed Description

The BFGSSolver solves a nonlinear system of equations using the BFGS method. It depends on the NonLinearSystem to evaluate the function and its jacobian.


Member Function Documentation

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.


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