EquationsOfStateOfSolids
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:
Murnaghan1st
EOS- Birch–Murnaghan EOS family:
BirchMurnaghan2nd
BirchMurnaghan3rd
BirchMurnaghan4th
Vinet
EOS- Poirier–Tarantola EOS family:
PoirierTarantola2nd
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
.
References
- A. Otero-De-La-Roza, V. Luaña, Comput. Phys. Commun. 182, 1708–1720 (2011).
- R. J. Angel, M. Alvaro, J. Gonzalez-Platas, Zeitschrift Für Kristallographie - Cryst Mater. 229, 405–419 (2014).
Installation
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... ✓ UnPack ✓ Roots ✓ EquationsOfStateOfSolids 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
Documentation
- STABLE — documentation of the most recently tagged version.
- DEV — documentation 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
- Installation guide
- Plotting
- How to use
EquationsOfStateOfSolids
in Python? - How to make your data portable?
- Contributing
- Code of conduct
- Join the community forum
- Improve the documentation
- File a bug report
- Contribute code to
EquationsOfStateOfSolids
- Step 1: decide what to work on
- Step 2: fork
EquationsOfStateOfSolids
- Step 3: install
EquationsOfStateOfSolids
locally - Step 4: checkout a new branch
- Step 5: make changes
- Step 6a: test your code changes
- Step 6b: test your documentation changes
- Step 7: make a pull request
- Step 8: respond to comments
- Step 9: cleaning up
- Style guide and design principles
- Style guide
- Design principles
- Consistency vs Adherence
- Community Contribution Guidelines
- Open source contributions are allowed to start small and grow over time
- Generic code is preferred unless code is known to be specific
- Internal types should match the types used by users when possible
- Trait definition and adherence to generic interface is preferred when possible
- Macros should be limited and only be used for syntactic sugar
- Errors should be caught as high as possible, and error messages should be contextualized for newcomers
- Subpackaging and interface packages is preferred over conditional modules via
Requires.jl
- Functions should either attempt to be non-allocating and reuse caches, or treat inputs as immutable
- Out-Of-Place and Immutability is preferred when sufficient performant
- Tests should attempt to cover a wide gamut of input types
- When in doubt, a submodule should become a subpackage or separate package
- Globals should be avoided whenever possible
- Type-stable and Type-grounded code is preferred wherever possible
- Closures should be avoided whenever possible
- Numerical functionality should use the appropriate generic numerical interfaces
- Functions should capture one underlying principle
- Internal choices should be exposed as options whenever possible
- Prefer code reuse over rewrites whenever possible
- Prefer to not shadow functions
- Troubleshooting
Library outline
Index
EquationsOfStateOfSolids.BirchMurnaghan
EquationsOfStateOfSolids.BirchMurnaghan2nd
EquationsOfStateOfSolids.BirchMurnaghan3rd
EquationsOfStateOfSolids.BirchMurnaghan4th
EquationsOfStateOfSolids.BulkModulusEquation
EquationsOfStateOfSolids.EnergyEquation
EquationsOfStateOfSolids.Murnaghan1st
EquationsOfStateOfSolids.PoirierTarantola
EquationsOfStateOfSolids.PoirierTarantola2nd
EquationsOfStateOfSolids.PoirierTarantola3rd
EquationsOfStateOfSolids.PressureEquation
EquationsOfStateOfSolids.Vinet
Base.float
Base.isreal
Base.real
EquationsOfStateOfSolids.orderof
Unitful.ustrip
EquationsOfStateOfSolids.FiniteStrains.VolumeFrom
EquationsOfStateOfSolids.FiniteStrains.VolumeTo
EquationsOfStateOfSolids.Fitting.fit