Skip to content

Optimisers

optimize

GPU structure relaxations, fixed and variable cell (SPEC §10.3).

This package's namespace is fm.optimize: the public optimiser records (plan task 4-T01, conductor's choice 1), which a Simulation takes as optimizer= (4-T05) and which map onto OptimizerConfig. The implementations (lbfgs.py, 4-T05; fire.py, 4-T06; cell.py, 4-T07) are built by the planner only, over a base.DOFView (SPEC §5); importing this package imports neither them nor torch.

The optimisers take ASE 3.27's arguments and defaults; lengths are Angstrom. FIRE's dt and dtmax are in ASE time units, as ASE's (they are step-size parameters, not physical times). FrechetCell is ASE's FrechetCellFilter with the pressure in GPa.

LBFGS dataclass

ASE 3.27's LBFGS on the graph engine (4-T05): maxstep_A (ASE maxstep), memory, damping and alpha with ASE's defaults. use_line_search is not offered (refused in the fastmace.ase class). cell_filter: None (fixed cell) or FrechetCell(...).

to_config

to_config(
    *, fmax: float = 0.05, steps: int = 100000000
) -> OptimizerConfig

The OptimizerConfig with ASE's run(fmax=, steps=).

FIRE dataclass

ASE 3.27's FIRE on the graph engine (4-T06), with ASE's arguments and defaults: dt and dtmax in ASE time units, maxstep_A (ASE maxstep), Nmin, finc, fdec, astart, fa, a and downhill_check. ASE's deprecated maxmove and position_reset_callback are not offered. cell_filter: None or FrechetCell(...).

to_config

to_config(
    *, fmax: float = 0.05, steps: int = 100000000
) -> OptimizerConfig

The OptimizerConfig with ASE's run(fmax=, steps=).

FrechetCell dataclass

ASE 3.27's FrechetCellFilter on the device (4-T07): positions and the log of the deformation gradient, both optimisers unchanged on it.

scalar_pressure_GPa is ASE's scalar_pressure in GPa; hydrostatic_strain, constant_volume, mask (six Voigt flags or a 3x3 of flags, as ASE) and exp_cell_factor (None: N, ASE's default) as ASE's.