Documentation for EquationsOfStateOfSolids.

See the Index for the complete list of documented functions and types.

The code is hosted on GitHub, with some continuous integration services to test its validity.

This repository is created and maintained by @singularitti. You are very welcome to contribute.

Package Features

This package implements some equations of state (EOS) of solids which are useful in research. It currently includes:

  1. Murnaghan1st EOS
  2. Birch–Murnaghan EOS family:
    1. BirchMurnaghan2nd
    2. BirchMurnaghan3rd
    3. BirchMurnaghan4th
  3. Vinet EOS
  4. Poirier–Tarantola EOS family:
    1. PoirierTarantola2nd
    2. PoirierTarantola3rd

The formulae are referenced from Ref. 1.

This package also includes linear and nonlinear fitting methods, which are also referenced from Ref. 1.

  • Calculate the energy, pressure, and bulk modulus of an EquationOfStateOfSolid on a volume (an array of volumes).
  • Fit an EquationOfStateOfSolid on a series of $E(V)$ data using the least-squares fitting method or a linear fitting method.
  • Find the corresponding volume of energy, or pressure, given an EquationOfStateOfSolid.
  • Handle unit conversion automatically in the above features.

The old EquationsOfState.jl package has been superseded by EquationsOfStateOfSolids.jl. So please just use EquationsOfStateOfSolids.jl.


  1. A. Otero-De-La-Roza, V. Luaña, Comput. Phys. Commun. 182, 1708–1720 (2011).
  2. R. J. Angel, M. Alvaro, J. Gonzalez-Platas, Zeitschrift Für Kristallographie - Cryst Mater. 229, 405–419 (2014).


The package can be installed with the Julia package manager. From the Julia REPL, type ] to enter the Pkg REPL mode and run:

pkg> add EquationsOfStateOfSolids

Or, equivalently, via the Pkg API:

julia> import Pkg; Pkg.add("EquationsOfStateOfSolids")   Resolving package versions...
   Installed Roots ──────────────────── v1.2.0
   Installed UnPack ─────────────────── v1.0.2
   Installed EquationsOfStateOfSolids ─ v0.4.2
    Updating `~/work/EquationsOfStateOfSolids.jl/EquationsOfStateOfSolids.jl/docs/build/developers/Project.toml`
  [1eaa2786] + EquationsOfStateOfSolids v0.4.2
    Updating `~/work/EquationsOfStateOfSolids.jl/EquationsOfStateOfSolids.jl/docs/build/developers/Manifest.toml`
  [30b0a656] + ArrayInterfaceCore v0.1.17
  [49dc2e85] + Calculus v0.5.1
  [d360d2e6] + ChainRulesCore v1.15.3
  [9e997f8a] + ChangesOfVariables v0.1.4
  [38540f10] + CommonSolve v0.2.1
  [bbf7d656] + CommonSubexpressions v0.3.0
  [187b0558] + ConstructionBase v1.4.1
  [9a962f9c] + DataAPI v1.10.0
  [b429d917] + DensityInterface v0.4.0
  [163ba53b] + DiffResults v1.0.3
  [b552c78f] + DiffRules v1.11.1
  [31c24e10] + Distributions v0.25.68
  [ffbed154] + DocStringExtensions v0.9.1
  [fa6b7ba4] + DualNumbers v0.6.8
  [0438fec6] + EquationsOfState v4.0.0
  [1eaa2786] + EquationsOfStateOfSolids v0.4.2
  [1a297f60] + FillArrays v0.13.2
  [6a86dc24] + FiniteDiff v2.15.0
  [f6369f11] + ForwardDiff v0.10.32
  [34004b35] + HypergeometricFunctions v0.3.11
  [3587e190] + InverseFunctions v0.1.7
  [92d709cd] + IrrationalConstants v0.1.1
  [692b3bcd] + JLLWrappers v1.4.1
  [2ab3a3ac] + LogExpFunctions v0.3.18
  [2fda8390] + LsqFit v0.12.1
  [1914dd2f] + MacroTools v0.5.9
  [e1d29d7a] + Missings v1.0.2
  [d41bc354] + NLSolversBase v7.8.2
  [77ba4419] + NaNMath v1.0.1
  [87e2bd06] + OptimBase v2.0.2
  [90014a1f] + PDMats v0.11.16
  [3a141323] + PolynomialRoots v1.0.0
  [f27b6e38] + Polynomials v3.2.0
  [21216c6a] + Preferences v1.3.0
  [1fd47b50] + QuadGK v2.4.2
  [3cdcf5f2] + RecipesBase v1.2.1
  [189a3867] + Reexport v1.2.2
  [ae029012] + Requires v1.3.0
  [79098fc4] + Rmath v0.7.0
⌅ [f2b01f46] + Roots v1.2.0
  [efcf1570] + Setfield v1.1.1
  [a2af1166] + SortingAlgorithms v1.0.1
  [276daf66] + SpecialFunctions v2.1.7
  [90137ffa] + StaticArrays v1.5.6
  [1e83bf80] + StaticArraysCore v1.3.0
  [82ae8749] + StatsAPI v1.5.0
  [2913bbd2] + StatsBase v0.33.21
  [4c63d2b9] + StatsFuns v1.0.1
  [4093c41a] + StructHelpers v0.1.4
  [3a884ed6] + UnPack v1.0.2
  [1986cc42] + Unitful v1.11.0
  [efe28fd5] + OpenSpecFun_jll v0.5.5+0
  [f50d1b31] + Rmath_jll v0.3.0+0
  [8ba89e20] + Distributed
  [9fa8497b] + Future
  [2f01184e] + SparseArrays
  [10745b16] + Statistics
  [4607b0f0] + SuiteSparse
  [8dfed614] + Test
  [05823500] + OpenLibm_jll v0.8.1+0
        Info Packages marked with ⌅ have new versions available but cannot be upgraded. To see why use `status --outdated -m`
Precompiling project...
  3 dependencies successfully precompiled in 7 seconds. 68 already precompiled.
  2 dependencies precompiled but different versions are currently loaded. Restart julia to access the new versions


  • STABLEdocumentation of the most recently tagged version.
  • DEVdocumentation of the in-development version.

Project status

The package is tested against, and being developed for, Julia 1.6 and above on Linux, macOS, and Windows.

Questions and contributions

Usage questions can be posted on our discussion page.

Contributions are very welcome, as are feature requests and suggestions. Please open an issue if you encounter any problems. The contributing page has a few guidelines that should be followed when opening pull requests and contributing code.

Manual outline

Library outline