EOS task calculates the equation of state (EOS) for a crystal. It:
- Fully relaxes the input structure (positions + cell) using
OPT. - Generates
npointsuniformly strained copies of the relaxed cell spanning±max_abs_strain. - Relaxes atomic positions inside each strained cell (cell shape fixed).
- Fits a Birch-Murnaghan EOS to the resulting energy-volume data.
Function signature
Parameters
Input structure. A copy is made internally.
ASE calculator for energies and forces.
Optimizer passed to the internal
OPT tasks. See structure optimization for valid values.Extra keyword arguments forwarded to the optimizer.
Cell filter used for the initial full relaxation. Set to
None to skip cell relaxation.Extra keyword arguments forwarded to the filter.
Convergence criterion dict forwarded to each
OPT run (e.g. {"fmax": 0.01}).Maximum absolute volumetric strain applied to the equilibrium cell. A value of
0.1 spans cell scale factors from 0.9^(1/3) to 1.1^(1/3) along each axis.Number of volume points sampled along the strain range, including the endpoints.
If
True, all per-strain OPT tasks are submitted concurrently using OPT.submit() and collected with prefect.futures.wait. Set to False for serial execution.If
True, intermediate OPT results are persisted and cached in Prefect’s result store. Useful when re-running the EOS with the same structure.Return value
Returns adict with the following keys on success, or a Prefect State object if the initial relaxation fails:
| Key | Type | Description |
|---|---|---|
atoms | ase.Atoms | Fully relaxed equilibrium structure |
eos | dict | {"volumes": [...], "energies": [...]} — raw E-V data sorted by volume |
K | float | Bulk modulus in GPa (Birch-Murnaghan B0) |
b0 | float | Bulk modulus in eV/ų |
b1 | float | Pressure derivative of the bulk modulus |
e0 | float | Equilibrium energy in eV |
v0 | float | Equilibrium volume in ų |
Example
The EOS task uses a Birch-Murnaghan fit via
pymatgen.analysis.eos.BirchMurnaghan. At least 4 converged points are needed for a meaningful fit. Increase npoints if you need higher resolution on the E-V curve.