ForceFieldEosMaker¶
- class atomate2.forcefields.flows.eos.ForceFieldEosMaker(name='Forcefield EOS Maker', initial_relax_maker=<factory>, eos_relax_maker=<factory>, static_maker=None, linear_strain=(-0.05, 0.05), number_of_frames=6, postprocessor=<factory>, _store_transformation_information=False)[source]¶
Bases:
CommonEosMaker
Generate equation of state data using an ML forcefield.
First relax a structure using relax_maker. Then perform a series of deformations on the relaxed structure, and relax atomic positions within the cell. For ML forcefields, there is no distinction between relax and static energies, unlike in a VASP calculation. Therefore these EosMakers default to static_maker = None.
- Parameters:
name (str) – Name of the flows produced by this maker.
initial_relax_maker (.Maker | None) – Maker to relax the input structure, defaults to None (no initial relaxation).
eos_relax_maker (.Maker) – Maker to relax deformed structures for the EOS fit.
static_maker (.Maker | None) – Maker to generate statics after each relaxation, defaults to None.
strain (tuple[float]) – Percentage linear strain to apply as a deformation, default = -5% to 5%.
number_of_frames (int) – Number of strain calculations to do for EOS fit, default = 6.
postprocessor (.job) – Optional postprocessing step, defaults to atomate2.common.jobs.PostProcessEosEnergy.
_store_transformation_information (.bool = False) – Whether to store the information about transformations. Unfortunately needed at present to handle issues with emmet and pydantic validation TODO: remove this when clash is fixed
- classmethod from_force_field_name(force_field_name, relax_initial_structure=True, **kwargs)[source]¶
Create an EOS flow from a forcefield name.
- Parameters:
force_field_name (str or .MLFF) – The name of the force field.
relax_initial_structure (bool = True) – Whether to relax the initial structure before performing an EOS fit.
**kwargs – Additional kwargs to pass to ElasticMaker
- Return type: