openmaterials.ai / codes / AtomisticSkills mat-equation-of-state
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.
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.
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.
--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.
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.
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.
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
Pick an OMAT or MatPES model and the mlip or fairchem environment through venv/run.
calculate_eos.py relaxes ions and cell vectors so the scan centres on the model's V0.
--n_points 11 and --max_abs_strain 0.1 set the scan. Each strained cell is relaxed.
The Birch-Murnaghan fit writes B0, V0, E0 and R^2 to eos_results.json.