Code

AtomisticSkills mat-equation-of-state

An AtomisticSkills skill: the bulk modulus from an equation of state.

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.

What AtomisticSkills mat-equation-of-state is, how it works and what it is used for, from the papers listed as sources. Every number links to its paper.Poster pageDownload the poster (PNG, 1920 x 1080)

What AtomisticSkills mat-equation-of-state is

mat-equation-of-state is one of the AtomisticSkills, packaged calculations an agent can call. It wraps matcalc's EOSCalc: the cell is scaled over a range of volumes, the ions are relaxed at each volume with the chosen potential and the energy taken, and a Birch-Murnaghan equation of state is fitted through pymatgen. The fitted B0 is the bulk modulus the skill reports, in GPa. On the map it serves that quantity.

In more detail

A relaxed scan fitted to Birch-Murnaghan

calculate_eos.py hands the structure and the potential to matcalc's EOSCalc with n_points and max_abs_strain. The strain is linear, so the target volumes are (1+e)^3 times V0 for e between minus and plus 0.1 by default, despite matcalc's docstring calling it volumetric. matcalc relaxes every strained point. With allow_shape_change on (matcalc 0.5 or later) the cell shape relaxes at constant volume as well, which is the E(V) a Birch-Murnaghan fit assumes. Symmetry forbids a shape change in cubic cells, so there the flag changes nothing. For anisotropic cells a frozen shape overestimates B0.

Numerical sensitivity of the fit

The pre-relaxation and the per-point relaxations share one fmax, 0.1 eV/A by default. The SKILL.md calls this loose for a cell relaxation and asks for 0.02 to 0.05 eV/A when B0 matters, since a pre-relaxation that stops early moves the whole scan window. V0 from the fit is far less sensitive than B0. The Si example with seven points at plus or minus 8% reaches R^2 = 0.999988 and B0 = 96.43 GPa against about 98 GPa measured, an error the README puts near 2%.

Interfaces and output files

matcalc exposes the Birch-Murnaghan fit as bulk_modulus_bm and r2_score_bm but not the fitted v0 and e0, and its volume and energy keys describe the relaxed input cell. The script therefore refits the scan with pymatgen's BirchMurnaghan and reads v0 and e0 off the fit. For diamond Si at plus or minus 8% strain the relaxed-cell keys lie 0.88 A^3 and 3 meV away from that minimum. The scan itself is saved to energies_volumes.dat and repeated under energy_volume_curve in eos_results.json. The skill runs in the mlip environment for MACE and MatGL and in fairchem for FairChem or UMA.

What it computes on the map

1 quantity, drawn by tier with the data flow between them. Dashed boxes are intermediate quantities. Select one for its formula and the other codes that compute it.

Open the full mapShare this submap
Embed this submap
<iframe src="https://openmaterials.ai/m/c56731602651/000000000000000040?embed=1" title="AtomisticSkills mat-equation-of-state on the OpenMaterials map" width="100%" height="480" loading="lazy" style="border:1px solid #EBEBEB;border-radius:6px"></iframe>

Each quantity with the interface the representation records.

  • BulkModulusmatcalc EOSCalc(calc).calc(struct)['bulk_modulus_bm'] (pymatgen BirchMurnaghan b0_GPa), GPa (_eos.py:164)GPa

References

No curated reference list yet. The citations recorded on the map representation are listed under How to cite.

How to cite

B. Deng, B. Li, M. Cox, et al., Harnessing AtomisticSkills for Agentic Atomistic Research (2026), arXiv:2605.24002 (mat-equation-of-state skill)

doi.org/10.48550/arXiv.2605.24002