Skip to content

Cubic Elastic Constants

CubicElasticConstantsAnalyzer

CubicElasticConstantsAnalyzer(
    eos_name: Literal[
        "murnaghan",
        "birch",
        "birch_murnaghan",
        "pourier_tarantola",
        "vinet",
        "deltafactor",
        "numerical_eos",
    ] = "birch_murnaghan",
    delta_max: float = 0.05,
    step_size: float = 0.01,
    calculator: BaseCalculator | None = None,
    cubic_transformation: CubicElasticConstantsDeformationTransformation
    | None = None,
)

A class used to calculate cubic elastic constants for a given structure.

Computes the elastic constants (C11, C12, C44) for a cubic crystal structure from deformation and energy-volume data, along with derived mechanical properties such as bulk modulus, shear modulus, Young's modulus, and Poisson's ratio.

Initializes the CubicElasticConstantsAnalyzer object.

Parameters:

Name Type Description Default
eos_name str

The name of the equation of state (EOS) used for fitting energy-volume data. Defaults to "birch_murnaghan".

'birch_murnaghan'
delta_max float

The maximum deformation magnitude. Defaults to 0.05.

0.05
step_size float

The step size for deformations. Defaults to 0.01.

0.01
calculator BaseCalculator | None

The calculator object used for energy calculations.

None
cubic_transformation CubicElasticConstantsDeformationTransformation | None

The transformation object used to apply cubic distortions.

None

calculate

calculate(
    structure: Structure | Atoms, is_relaxed: bool = False
) -> dict[str, float]

Calculates the cubic elastic constants for a given structure.

Applies cubic distortions to the input structure, computes the potential energies of the deformed structures, and derives the elastic constants (C11, C12, C44) and additional mechanical properties from the resulting energy differences.

Parameters:

Name Type Description Default
structure Structure | Atoms

The input structure.

required
is_relaxed bool

Whether the structure is already relaxed. Defaults to False.

False

Returns:

Type Description
dict[str, float]

dict[str, float]: Dictionary with keys: - C11: Elastic constant C11 in GPa. - C12: Elastic constant C12 in GPa. - C44: Elastic constant C44 in GPa. - youngs_modulus: Young's modulus in GPa. - voigt_bulk_modulus: Voigt bulk modulus in GPa. - voigt_shear_modulus: Voigt shear modulus in GPa. - reuss_bulk_modulus: Reuss bulk modulus in GPa. - reuss_shear_modulus: Reuss shear modulus in GPa. - voigt_reuss_hill_bulk_modulus: Voigt-Reuss-Hill bulk modulus in GPa. - voigt_reuss_hill_shear_modulus: Voigt-Reuss-Hill shear modulus in GPa. - poisson_ratio: Poisson ratio. - pugh_ratio: Pugh ratio (G_VRH / K_VRH). - chen_vickers_hardness: Chen-Vickers hardness in GPa.

Raises:

Type Description
ValueError

If the calculator object does not have the 'energy' property implemented.

cubic_transformation

cubic_transformation() -> (
    CubicElasticConstantsDeformationTransformation
)

Returns the cubic transformation object used to generate deformed structures.

Returns:

Name Type Description
CubicElasticConstantsDeformationTransformation CubicElasticConstantsDeformationTransformation

The transformation object used for cubic distortions.