Elastic Tools#
Equation of State Fit#
- elastic_tools.fit_eos(vol, ene, eos='bm', plot=False)#
Fits volume-energy data to the Murnaghan or Birch-Murnaghan equation of state. For an accurate fit, it is recommended that the energy-volume points are distributed evenly about the energy-volume minima.
The Murnaghan equation of state is given by
\[E(V) = E_0 + \frac{K_0 V}{K_0'} \left(\frac{(V_0/V)^{K_0'}}{K_0'-1} + 1 \right) - \frac{K_0V_0}{K_0'-1}\]while the Birch-Murnaghan equation of state is given by
\[E(V) = E_0 + \frac{9 V_0 K_0}{16} \left\{ \left[\left(\frac{V_0}{V}\right)^{2/3}-1\right]^3 K_0' + \left[\left(\frac{V_0}{V}\right)^{2/3}-1\right]^2 \left[6-4\left(\frac{V_0}{V}\right)^{2/3}\right] \right\}\]The parameters are returned in the following order
Equilibrium bulk modulus, \(K_0\) [GPa]
Equilibrium bulk modulus derivative wrt pressure, \(K'_0\) [dimensionless]
Equilibrium energy, \(E_0\) [eV]
Equilibrium volume, \(V_0\) [ų]
- Parameters:
vol (list) – Volumes
ene (list) – Energies
eos (string) –
bm(default) for Birch-Murnaghan ormfor Murnaghanplot (bool) – Whether the volume-energy data points and the fitted curve are plotted
- Returns:
Fitted parameters, Fitting errors
- Return type:
ndarray
Elastic Properties#
The following are various post-processing tools that can be used to convert the 6 x 6 elastic constant matrix of Birch coefficients into various quantities that characterize the elastic properties of the system. An example of how this might be used is given in the elastic constant example.
Reuss Moduli#
- elastic_tools.reuss_moduli(C)#
Processes a 6 x 6 elastic constant matrix into the Reuss bulk and shear moduli, given by
\[1/K_R = (S_{11} + S_{22} + S_{33}) + 2(S_{12} + S_{23} + S_{31})\]and
\[15/ G_R = 4(S_{11} + S_{22} + S_{33}) - 4(S_{12} + S_{23} + S_{31}) + 3(S_{44} + S_{55} + S_{66}),\]where \(S = C^{-1}\).
- Parameters:
C (torch.Tensor) – 6 by 6 matrix of elastic constants
- Returns:
Reuss bulk and shear moduli
- Return type:
torch.Tensor
Voigt Moduli#
- elastic_tools.voigt_moduli(C)#
Processes a 6 x 6 elastic constant matrix into the Voigt bulk and shear moduli, given by
\[9 K_V = (C_{11} + C_{22} + C_{33}) + 2(C_{12} + C_{23} + C_{31})\]and
\[15 G_V = (C_{11} + C_{22} + C_{33}) - (C_{12} + C_{23} + C_{31}) + 3(C_{44} + C_{55} + C_{66}).\]- Parameters:
C (torch.Tensor) – 6 by 6 matrix of elastic constants
- Returns:
Voigt bulk and shear moduli
- Return type:
torch.Tensor
Shear Modulus#
- elastic_tools.shear_average(C, mean_type='arithmetic')#
Processes a 6 x 6 elastic constant matrix into a shear modulus based on the average of the Reuss and Voigt shear moduli, which could be an arithmetic or geometric mean.
- Parameters:
C (torch.Tensor) – 6 by 6 matrix of elastic constants
mean_type (string) –
arithmeticorgeometricmean to be taken
- Returns:
Average shear moduli
- Return type:
torch.Tensor
Young’s Modulus#
- elastic_tools.youngs_modulus(K, G)#
Processes the bulk and shear moduli (\(K\) and \(G\)) into a Young’s modulus (\(E\)) using
\[E = \left(\frac{1}{3G} + \frac{1}{9K} \right)^{-1}\]- Parameters:
K (torch.Tensor or float) – Bulk modulus
G (torch.Tensor or float) – Shear modulus
- Returns:
Young’s modulus
- Return type:
torch.Tensor
Poisson’s Ratio#
- elastic_tools.poissons_ratio(K, G)#
Processes the bulk and shear moduli (\(K\) and \(G\)) into a Poisson’s ratio (\(\nu\)) using
\[\nu = \frac{1}{2} \left(1 - \frac{3G}{3K+G} \right)\]- Parameters:
K (torch.Tensor or float) – Bulk modulus
G (torch.Tensor or float) – Shear modulus
- Returns:
Poissons ratio
- Return type:
torch.Tensor