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

  • linear_strain (tuple[float, float])

classmethod from_force_field_name(force_field_name, relax_initial_structure=True)[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.

Return type:

ForceFieldEosMaker