Hessian Updates
The hessian keyword selects how the Hessian (or inverse Hessian) matrix is
stored and updated at each optimization step.
Available Methods
direct_psb — Powell-Symmetric-Broyden (Default)
hessian = direct_psb
Stores the direct Hessian (units: Ha/Ų) and solves the linear system at each step via LU decomposition.
The PSB update formula preserves the secant condition while maintaining symmetry:
where and .
Required when use_gediis = blend. Recommended for all production runs.
inverse_bfgs — Inverse Hessian BFGS
hessian = inverse_bfgs
Stores the inverse Hessian (units: Ų/Ha) and computes steps as via matrix-vector multiply (no linear solve required).
Uses the standard BFGS rank-2 update:
Note: Incompatible with use_gediis = blend. Use direct_psb instead for
the blend optimizer.
bofill — Bofill Update (Experimental)
hessian = bofill
Blends the Powell (SR1) and Murtagh–Sargent updates using a Bofill-style weighting parameter :
The weight is computed from the curvature: is close to 1 when the gradient change is well-described by a symmetric rank-1 correction (Powell), and close to 0 otherwise (Murtagh–Sargent).
Recommended for: TS-like crossing points where the Hessian may have negative eigenvalues.
powell — Powell Symmetric Rank-1 (Experimental)
hessian = powell
Uses the symmetric SR1 update. Unlike BFGS, SR1 can build up negative curvature, which is useful for crossing points with Hessians that have negative eigenvalues.
bfgs_powell_mix — Adaptive Blend (Experimental)
hessian = bfgs_powell_mix
Adaptively switches between BFGS and Powell updates using Bofill-style weighting at each step. Inherits the robustness of Powell near negative curvature and the superlinear convergence of BFGS near positive-definite regions.
Choosing a Method
| Scenario | Recommended |
|---|---|
| Standard MECP optimization | direct_psb (default) |
| GDIIS_blend optimizer | direct_psb (required) |
| TS-like crossing point | bofill |
| Very flat or ill-conditioned PES | powell |
| Uncertain curvature | bfgs_powell_mix |
| Legacy / simple system | inverse_bfgs |