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

  1. Equilibrium bulk modulus, \(K_0\) [GPa]

  2. Equilibrium bulk modulus derivative wrt pressure, \(K'_0\) [dimensionless]

  3. Equilibrium energy, \(E_0\) [eV]

  4. Equilibrium volume, \(V_0\) [ų]

Parameters:
  • vol (list) – Volumes

  • ene (list) – Energies

  • eos (string) – bm (default) for Birch-Murnaghan or m for Murnaghan

  • plot (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) – arithmetic or geometric mean 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