***resolution bfgs
#
Description#
The BFGS algorithm is a quasi-Newton method of matrix updating which can be used to efficiently solve large non-linear problems. The algorithm consists of two methods of convergence acceleration [U9]. The first is the updating process which corrects an approximation of the inverted non-linear tangent with the history of trail solutions and their errors. The second is a relaxation of the displacement increment to be compatible with the “direction” of the solution. The algorithm requires an initial calculation of the matrix inverse. Further iterations with the BFGS algorithm do not however require additional inversions of the rigidity matrix, making the method very efficient for large non-linear structures.
Given an inverted matrix \(\bf K^{-1}_{ini}\) which could have been calculated at the beginning of an increment, or just one time at the start of the problem (inverted elastic behavior stiffness), one updates the inverse through the course of iterations as follows:
which shows that the storage requirements are simply that of two vectors of size \(N\) (the number of degrees of freedom in the problem). The vectors \(\bf v\) and \(\bf w\) are calculated using the changes in displacement and changes in residual between updates.
Syntax#
The BFGS algorithm allows the following syntax to adjust the solution process:
***resolution bfgs
[ iter ][ no_optimize
]
The parameter iter is an integer specifying the number of iterations
which will performed before the BFGS updates begin. The optional token
no_optimize
indicates that the optimization (line search) procedure
is not desired. The line search adds evaluations of the material law per
iteration which may be very expensive for complex material behaviors.
Caution
The contact solutions are not compatible with the BFGS algorithm. Also,
the use of BFGS requires matrix updating of the types eeeee
,
p1p1p1
or p1p2p2
. Use of p1p1p1
requires the number of
iterations iter to be greater than one, and p1p2p2
requires iter
to be greater than two.