"""Optimizers for geometry relaxations.This module provides optimization algorithms for atomic structures in a batched format,enabling efficient relaxation of multiple atomic structures simultaneously. It uses afilter-based design where cell optimization constraints and parameterizations arehandled by separate filter functions."""fromcollections.abcimportCallablefromenumimportStrEnumfromtypingimportAny,Final,Literal,get_argsfromtorch_sim.optimizers.bfgsimportbfgs_init,bfgs_stepfromtorch_sim.optimizers.cell_filtersimport(# noqa: F401CellBFGSState,CellFireState,CellLBFGSState,CellOptimState,)fromtorch_sim.optimizers.fireimportfire_init,fire_stepfromtorch_sim.optimizers.gradient_descentimport(gradient_descent_init,gradient_descent_step,)fromtorch_sim.optimizers.lbfgsimportlbfgs_init,lbfgs_stepfromtorch_sim.optimizers.stateimport(# noqa: F401BFGSState,FireState,LBFGSState,OptimState,)FireFlavor=Literal["vv_fire","ase_fire"]vv_fire_key,ase_fire_key=get_args(FireFlavor)
[docs]classOptimizer(StrEnum):"""Enumeration of the optimization flavors."""gradient_descent="gradient_descent"fire="fire"lbfgs="lbfgs"bfgs="bfgs"