Source code for atomistics.shared.thermal_expansion
from collections.abc import Iterable
import numpy as np
from atomistics.shared.output import OutputThermalExpansion
[docs]
class ThermalExpansionProperties:
[docs]
def __init__(self, temperatures_lst: np.ndarray, volumes_lst: np.ndarray):
"""
Initialize the ThermalExpansionProperties class.
Parameters:
temperatures_lst (np.ndarray): Array of temperatures.
volumes_lst (np.ndarray): Array of volumes.
"""
self._temperatures_lst = temperatures_lst
self._volumes_lst = volumes_lst
[docs]
def volumes(self) -> np.ndarray:
"""
Get the array of volumes.
Returns:
np.ndarray: Array of volumes.
"""
return self._volumes_lst
[docs]
def temperatures(self) -> np.ndarray:
"""
Get the array of temperatures.
Returns:
np.ndarray: Array of temperatures.
"""
return self._temperatures_lst
[docs]
def get_thermal_expansion_output(
temperatures_lst: np.ndarray, volumes_lst: np.ndarray, output_keys: Iterable[str]
) -> dict:
"""
Get the thermal expansion output.
Parameters:
temperatures_lst (np.ndarray): Array of temperatures.
volumes_lst (np.ndarray): Array of volumes.
output_keys (tuple[str]): Tuple of output keys.
Returns:
dict: Dictionary containing the thermal expansion output.
"""
thermal = ThermalExpansionProperties(
temperatures_lst=temperatures_lst, volumes_lst=volumes_lst
)
return OutputThermalExpansion(
**{k: getattr(thermal, k) for k in OutputThermalExpansion.keys()}
).get(output_keys=output_keys)