openmaterials.ai / codes / AtomisticSkills mat-equation-of-state

mat-equation-of-state: the bulk modulus from an energy-volume curve

An AtomisticSkills skill that scales a cell over a range of volumes, relaxes each point with a machine-learned potential and fits a Birch-Murnaghan equation of state via matcalc.

What it is and how it works

Birch-Murnaghan fit of E(V)

By default the potential relaxes 11 volumes spanning linear strains of plus or minus 10%. matcalc fits energy against volume to the Birch-Murnaghan form. Its minimum gives V0 and E0, its curvature B0 in GPa.

Energy-only potentials

The skill loads MACE, MatGL or FAIRChem. Only total energies enter the fit, so MPtrj models work, but the skill prefers OMAT or MatPES models such as MACE-OMAT-0-small.

Two relaxation stages

--relax_structure relaxes ions and cell first, so the scan is centred on the model's own V0. matcalc then relaxes every strained point, cell shape free at fixed volume.

Inputs and outputs

Input is a relaxed CIF or POSCAR. eos_results.json holds B0 in GPa, V0 in A^3, E0 in eV and the R^2 of the fit. energies_volumes.dat holds the scan for refitting.

What moves B0

The default fmax of 0.1 eV/A is loose for a cell relaxation. A pre-relaxation that stops early shifts the scan window and B0. The skill advises 0.02 to 0.05 eV/A for B0.

What people do with it

Diamond Si with MACE-OMAT-0-small

Seven points at plus or minus 8% give B0 = 96.43 GPa against about 98 GPa measured, V0 = 39.99 A^3 for the two-atom cell (a = 5.426 A against 5.431 A) and R^2 = 0.999988. Si example README

How it is used

  1. Choose a potential

    Pick an OMAT or MatPES model and the mlip or fairchem environment through venv/run.

  2. Relax the input cell

    calculate_eos.py relaxes ions and cell vectors so the scan centres on the model's V0.

  3. Scan the volumes

    --n_points 11 and --max_abs_strain 0.1 set the scan. Each strained cell is relaxed.

  4. Fit and report

    The Birch-Murnaghan fit writes B0, V0, E0 and R^2 to eos_results.json.