diff --git a/.ci_support/environment-lammps.yml b/.ci_support/environment-lammps.yml index 5da41f9f..b99b1a2e 100644 --- a/.ci_support/environment-lammps.yml +++ b/.ci_support/environment-lammps.yml @@ -1,7 +1,8 @@ channels: - conda-forge dependencies: -- lammps =2024.06.27 +- lammps =2024.06.27=*openmpi* +- openmpi =4.1.6 - pandas =2.2.2 - pylammpsmpi =0.2.23 - jinja2 =3.1.4 diff --git a/atomistics/calculators/ase.py b/atomistics/calculators/ase.py index ff42eb4a..911e89f9 100644 --- a/atomistics/calculators/ase.py +++ b/atomistics/calculators/ase.py @@ -1,14 +1,17 @@ from __future__ import annotations -from typing import TYPE_CHECKING +from typing import List import numpy as np from ase import units +from ase.atoms import Atoms +from ase.calculators.calculator import Calculator as ASECalculator from ase.calculators.calculator import PropertyNotImplementedError from ase.constraints import UnitCellFilter from ase.md.langevin import Langevin from ase.md.npt import NPT from ase.md.velocitydistribution import MaxwellBoltzmannDistribution +from ase.optimize.optimize import Optimizer from atomistics.calculators.interface import get_quantities_from_tasks from atomistics.calculators.wrapper import as_task_dict_evaluator @@ -20,69 +23,148 @@ from atomistics.shared.thermal_expansion import get_thermal_expansion_output from atomistics.shared.tqdm_iterator import get_tqdm_iterator -if TYPE_CHECKING: - from ase.atoms import Atoms - from ase.calculators.calculator import Calculator as ASECalculator - from ase.optimize.optimize import Optimizer - - from atomistics.calculators.interface import TaskName - class ASEExecutor(object): - def __init__(self, ase_structure, ase_calculator): + def __init__(self, ase_structure: Atoms, ase_calculator: ASECalculator) -> None: + """ + Initialize the ASEExecutor. + + Args: + ase_structure (Atoms): The ASE structure object. + ase_calculator (ASECalculator): The ASE calculator object. + """ self.structure = ase_structure self.structure.calc = ase_calculator def forces(self) -> np.ndarray: + """ + Get the forces on the atoms. + + Returns: + np.ndarray: The forces on the atoms. + """ return self.structure.get_forces() def energy(self) -> float: + """ + Get the potential energy of the system. + + Returns: + float: The potential energy of the system. + """ return self.structure.get_potential_energy() def energy_pot(self) -> float: + """ + Get the potential energy of the system. + + Returns: + float: The potential energy of the system. + """ return self.structure.get_potential_energy() def energy_tot(self) -> float: + """ + Get the total energy of the system. + + Returns: + float: The total energy of the system. + """ return ( self.structure.get_potential_energy() + self.structure.get_kinetic_energy() ) def stress(self) -> np.ndarray: + """ + Get the stress tensor of the system. + + Returns: + np.ndarray: The stress tensor of the system. + """ try: return self.structure.get_stress(voigt=False) except PropertyNotImplementedError: return None def pressure(self) -> np.ndarray: + """ + Get the pressure of the system. + + Returns: + np.ndarray: The pressure of the system. + """ try: return self.structure.get_stress(voigt=False) except PropertyNotImplementedError: return None def cell(self) -> np.ndarray: + """ + Get the cell parameters of the system. + + Returns: + np.ndarray: The cell parameters of the system. + """ return self.structure.get_cell() def positions(self) -> np.ndarray: + """ + Get the atomic positions of the system. + + Returns: + np.ndarray: The atomic positions of the system. + """ return self.structure.get_positions() def velocities(self) -> np.ndarray: + """ + Get the atomic velocities of the system. + + Returns: + np.ndarray: The atomic velocities of the system. + """ return self.structure.get_velocities() def temperature(self) -> float: + """ + Get the temperature of the system. + + Returns: + float: The temperature of the system. + """ return self.structure.get_temperature() def volume(self) -> float: + """ + Get the volume of the system. + + Returns: + float: The volume of the system. + """ return self.structure.get_volume() @as_task_dict_evaluator def evaluate_with_ase( structure: Atoms, - tasks: list[TaskName], + tasks: List[str], ase_calculator: ASECalculator, ase_optimizer: Optimizer = None, ase_optimizer_kwargs: dict = {}, ) -> dict: + """ + Evaluate tasks using ASE calculator. + + Args: + structure (Atoms): The ASE structure object. + tasks (list[TaskName]): List of tasks to evaluate. + ase_calculator (ASECalculator): The ASE calculator object. + ase_optimizer (Optimizer, optional): The ASE optimizer object. Defaults to None. + ase_optimizer_kwargs (dict, optional): Keyword arguments for the ASE optimizer. Defaults to {}. + + Returns: + dict: Dictionary containing the results of the evaluated tasks. + """ results = {} if "optimize_positions" in tasks: results["structure_with_optimized_positions"] = optimize_positions_with_ase( @@ -114,48 +196,71 @@ def evaluate_with_ase( def calc_static_with_ase( structure: Atoms, ase_calculator: ASECalculator, - output_keys=OutputStatic.keys(), -): + output_keys: list[str] = OutputStatic.keys(), +) -> dict: + """ + Calculate static properties using ASE calculator. + + Args: + structure (Atoms): The ASE structure object. + ase_calculator (ASECalculator): The ASE calculator object. + output_keys (list[str], optional): List of output keys. Defaults to OutputStatic.keys(). + + Returns: + dict: Dictionary containing the calculated static properties. + """ ase_exe = ASEExecutor(ase_structure=structure, ase_calculator=ase_calculator) return OutputStatic(**{k: getattr(ase_exe, k) for k in OutputStatic.keys()}).get( output_keys=output_keys ) -def calc_molecular_dynamics_npt_with_ase( +def optimize_positions_with_ase( structure: Atoms, ase_calculator: ASECalculator, - run: int = 100, - thermo: int = 100, - timestep: float = 1 * units.fs, - ttime: float = 100 * units.fs, - pfactor: float = 2e6 * units.GPa * (units.fs**2), - temperature: float = 100.0, - externalstress: np.ndarray = np.array([0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) * units.bar, - output_keys=OutputMolecularDynamics.keys(), -) -> dict: - return _calc_molecular_dynamics_with_ase( - dyn=NPT( - atoms=structure, - timestep=timestep, - temperature=None, - externalstress=externalstress, - ttime=ttime, - pfactor=pfactor, - temperature_K=temperature, - mask=None, - trajectory=None, - logfile=None, - loginterval=1, - append_trajectory=False, - ), - structure=structure, - ase_calculator=ase_calculator, - temperature=temperature, - run=run, - thermo=thermo, - output_keys=output_keys, - ) + ase_optimizer: Optimizer, + ase_optimizer_kwargs: dict, +) -> Atoms: + """ + Optimize the atomic positions of the structure using ASE optimizer. + + Args: + structure (Atoms): The ASE structure object. + ase_calculator (ASECalculator): The ASE calculator object. + ase_optimizer (Optimizer): The ASE optimizer object. + ase_optimizer_kwargs (dict): Keyword arguments for the ASE optimizer. + + Returns: + Atoms: The optimized structure. + """ + structure.set_calculator(ase_calculator) + dyn = ase_optimizer(structure, **ase_optimizer_kwargs) + dyn.run(fmax=0.05) + return structure + + +def optimize_positions_and_volume_with_ase( + structure: Atoms, + ase_calculator: ASECalculator, + ase_optimizer: Optimizer, + ase_optimizer_kwargs: dict, +) -> Atoms: + """ + Optimize the atomic positions and cell volume of the structure using ASE optimizer. + + Args: + structure (Atoms): The ASE structure object. + ase_calculator (ASECalculator): The ASE calculator object. + ase_optimizer (Optimizer): The ASE optimizer object. + ase_optimizer_kwargs (dict): Keyword arguments for the ASE optimizer. + + Returns: + Atoms: The optimized structure. + """ + structure.set_calculator(ase_calculator) + dyn = ase_optimizer(structure, **ase_optimizer_kwargs) + dyn.run(fmax=0.05, volume=True) + return structure def calc_molecular_dynamics_langevin_with_ase( @@ -163,11 +268,27 @@ def calc_molecular_dynamics_langevin_with_ase( ase_calculator: ASECalculator, run: int = 100, thermo: int = 100, - timestep: float = 1 * units.fs, + timestep: float = 1.0, temperature: float = 100.0, friction: float = 0.002, - output_keys=OutputMolecularDynamics.keys(), -): + output_keys: List[str] = OutputMolecularDynamics.keys(), +) -> dict: + """ + Perform molecular dynamics simulation using the Langevin algorithm with ASE. + + Parameters: + - structure (Atoms): The atomic structure to simulate. + - ase_calculator (Calculator): The ASE calculator to use for energy and force calculations. + - run (int): The number of MD steps to perform. + - thermo (int): The interval at which to print thermodynamic properties. + - timestep (float): The time step size in fs. + - temperature (float): The desired temperature in Kelvin. + - friction (float): The friction coefficient for the Langevin thermostat. + - output_keys (List[str]): The keys of the properties to include in the output dictionary. + + Returns: + - dict: A dictionary containing the calculated properties at each MD step. + """ return _calc_molecular_dynamics_with_ase( dyn=Langevin( atoms=structure, @@ -189,7 +310,19 @@ def optimize_positions_with_ase( ase_calculator: ASECalculator, ase_optimizer: Optimizer, ase_optimizer_kwargs: dict, -): +) -> Atoms: + """ + Optimize the atomic positions of the structure using ASE optimizer. + + Args: + structure (Atoms): The ASE structure object. + ase_calculator (ASECalculator): The ASE calculator object. + ase_optimizer (Optimizer): The ASE optimizer object. + ase_optimizer_kwargs (dict): Keyword arguments for the ASE optimizer. + + Returns: + Atoms: The optimized structure. + """ structure_optimized = structure.copy() structure_optimized.calc = ase_calculator ase_optimizer_obj = ase_optimizer(structure_optimized) @@ -202,7 +335,19 @@ def optimize_positions_and_volume_with_ase( ase_calculator: ASECalculator, ase_optimizer: Optimizer, ase_optimizer_kwargs: dict, -): +) -> Atoms: + """ + Optimize the atomic positions and cell volume of the structure using ASE optimizer. + + Args: + structure (Atoms): The ASE structure object. + ase_calculator (ASECalculator): The ASE calculator object. + ase_optimizer (Optimizer): The ASE optimizer object. + ase_optimizer_kwargs (dict): Keyword arguments for the ASE optimizer. + + Returns: + Atoms: The optimized structure. + """ structure_optimized = structure.copy() structure_optimized.calc = ase_calculator ase_optimizer_obj = ase_optimizer(UnitCellFilter(structure_optimized)) @@ -222,8 +367,28 @@ def calc_molecular_dynamics_thermal_expansion_with_ase( ttime: float = 100 * units.fs, pfactor: float = 2e6 * units.GPa * (units.fs**2), externalstress: np.ndarray = np.array([0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) * units.bar, - output_keys=OutputThermalExpansion.keys(), -): + output_keys: List[str] = OutputThermalExpansion.keys(), +) -> dict: + """ + Calculate thermal expansion using molecular dynamics simulation with ASE. + + Args: + structure (Atoms): The atomic structure to simulate. + ase_calculator (ASECalculator): The ASE calculator to use for energy and force calculations. + temperature_start (float, optional): The starting temperature in Kelvin. Defaults to 15.0. + temperature_stop (float, optional): The stopping temperature in Kelvin. Defaults to 1500.0. + temperature_step (float, optional): The temperature step size in Kelvin. Defaults to 5.0. + run (int, optional): The number of MD steps to perform. Defaults to 100. + thermo (int, optional): The interval at which to print thermodynamic properties. Defaults to 100. + timestep (float, optional): The time step size in fs. Defaults to 1 * units.fs. + ttime (float, optional): The total time for the simulation in fs. Defaults to 100 * units.fs. + pfactor (float, optional): The pressure factor in GPa * fs^2. Defaults to 2e6 * units.GPa * (units.fs**2). + externalstress (np.ndarray, optional): The external stress tensor in bar. Defaults to np.array([0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) * units.bar. + output_keys (List[str], optional): The keys of the properties to include in the output dictionary. Defaults to OutputThermalExpansion.keys(). + + Returns: + dict: A dictionary containing the calculated thermal expansion properties. + """ structure_current = structure.copy() temperature_lst = np.arange( temperature_start, temperature_stop + temperature_step, temperature_step @@ -251,6 +416,60 @@ def calc_molecular_dynamics_thermal_expansion_with_ase( ) +def calc_molecular_dynamics_npt_with_ase( + structure: Atoms, + ase_calculator: ASECalculator, + run: int = 100, + thermo: int = 100, + timestep: float = 1 * units.fs, + ttime: float = 100 * units.fs, + pfactor: float = 2e6 * units.GPa * (units.fs**2), + temperature: float = 300.0, + externalstress: np.ndarray = np.array([0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) * units.bar, + output_keys: List[str] = OutputMolecularDynamics.keys(), +) -> dict: + """ + Perform NPT molecular dynamics simulation using ASE. + + Args: + structure (Atoms): The atomic structure to simulate. + ase_calculator (ASECalculator): The ASE calculator to use for energy and force calculations. + run (int, optional): The number of MD steps to perform. Defaults to 100. + thermo (int, optional): The interval at which to print thermodynamic properties. Defaults to 100. + timestep (float, optional): The time step size in fs. Defaults to 1 * units.fs. + ttime (float, optional): The total time for the simulation in fs. Defaults to 100 * units.fs. + pfactor (float, optional): The pressure factor in GPa * fs^2. Defaults to 2e6 * units.GPa * (units.fs**2). + temperature (float, optional): The desired temperature in Kelvin. Defaults to 300.0. + externalstress (np.ndarray, optional): The external stress tensor in bar. Defaults to np.array([0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) * units.bar. + output_keys (List[str], optional): The keys of the properties to include in the output dictionary. Defaults to OutputMolecularDynamics.keys(). + + Returns: + dict: A dictionary containing the calculated properties at each MD step. + """ + return _calc_molecular_dynamics_with_ase( + dyn=NPT( + atoms=structure, + timestep=timestep, + temperature=None, + externalstress=externalstress, + ttime=ttime, + pfactor=pfactor, + temperature_K=temperature, + mask=None, + trajectory=None, + logfile=None, + loginterval=1, + append_trajectory=False, + ), + structure=structure, + ase_calculator=ase_calculator, + temperature=temperature, + run=run, + thermo=thermo, + output_keys=output_keys, + ) + + def _calc_molecular_dynamics_with_ase( dyn, structure: Atoms, @@ -258,8 +477,23 @@ def _calc_molecular_dynamics_with_ase( temperature: float, run: int, thermo: int, - output_keys: tuple[str], -): + output_keys: List[str], +) -> dict: + """ + Perform molecular dynamics simulation using ASE. + + Args: + dyn: The ASE dynamics object. + structure (Atoms): The atomic structure to simulate. + ase_calculator (ASECalculator): The ASE calculator to use for energy and force calculations. + temperature (float): The desired temperature in Kelvin. + run (int): The number of MD steps to perform. + thermo (int): The interval at which to print thermodynamic properties. + output_keys (List[str]): The keys of the properties to include in the output dictionary. + + Returns: + dict: A dictionary containing the calculated properties at each MD step. + """ structure.calc = ase_calculator MaxwellBoltzmannDistribution(atoms=structure, temperature_K=temperature) cache = {q: [] for q in output_keys} diff --git a/atomistics/calculators/hessian.py b/atomistics/calculators/hessian.py index b3db195a..95165f5d 100644 --- a/atomistics/calculators/hessian.py +++ b/atomistics/calculators/hessian.py @@ -1,3 +1,5 @@ +from typing import Tuple, Union + import numpy as np from ase.atoms import Atoms @@ -5,9 +7,24 @@ def check_force_constants(structure: Atoms, force_constants: np.ndarray) -> np.ndarray: + """ + Check the shape of the force constants array and return a valid force constants array. + + Args: + structure (Atoms): The reference structure. + force_constants (np.ndarray): The force constants array. + + Returns: + np.ndarray: The valid force constants array. + + Raises: + ValueError: If the reference structure is not set or the force constants shape is not recognized. + """ if structure is None: raise ValueError("Set reference structure via set_reference_structure() first") + n_atom = len(structure.positions) + if len(np.array([force_constants]).flatten()) == 1: return force_constants * np.eye(3 * n_atom) elif np.array(force_constants).shape == (3 * n_atom, 3 * n_atom): @@ -33,6 +50,16 @@ def check_force_constants(structure: Atoms, force_constants: np.ndarray) -> np.n def get_displacement(structure_equilibrium: Atoms, structure: Atoms) -> np.ndarray: + """ + Calculate the displacements between two structures. + + Args: + structure_equilibrium (Atoms): The equilibrium structure. + structure (Atoms): The current structure. + + Returns: + np.ndarray: The displacements between the two structures. + """ displacements = structure.get_scaled_positions() displacements -= structure_equilibrium.get_scaled_positions() displacements -= np.rint(displacements) @@ -41,17 +68,41 @@ def get_displacement(structure_equilibrium: Atoms, structure: Atoms) -> np.ndarr def calc_forces_transformed( force_constants: np.ndarray, structure_equilibrium: Atoms, structure: Atoms -) -> np.ndarray: +) -> Tuple[np.ndarray, np.ndarray]: + """ + Calculate the transformed forces and displacements. + + Args: + force_constants (np.ndarray): The force constants array. + structure_equilibrium (Atoms): The equilibrium structure. + structure (Atoms): The current structure. + + Returns: + Tuple[np.ndarray, np.ndarray]: The transformed forces and displacements. + """ displacements = get_displacement(structure_equilibrium, structure) position_transformed = displacements.reshape( displacements.shape[0] * displacements.shape[1] ) - return -np.dot(force_constants, position_transformed), displacements + forces_transformed = -np.dot(force_constants, position_transformed) + return forces_transformed, displacements def get_forces( force_constants: np.ndarray, structure_equilibrium: Atoms, structure: Atoms ) -> np.ndarray: + """ + Calculate the forces on atoms based on the force constants, equilibrium structure, and current structure. + + Args: + force_constants (np.ndarray): The force constants array. + structure_equilibrium (Atoms): The equilibrium structure. + structure (Atoms): The current structure. + + Returns: + np.ndarray: The forces on atoms. + + """ displacements = get_displacement(structure_equilibrium, structure) position_transformed = displacements.reshape( displacements.shape[0] * displacements.shape[1] @@ -67,6 +118,19 @@ def get_energy_pot( bulk_modulus: float = 0.0, shear_modulus: float = 0.0, ) -> float: + """ + Calculate the potential energy of the system. + + Args: + force_constants (np.ndarray): The force constants array. + structure_equilibrium (Atoms): The equilibrium structure. + structure (Atoms): The current structure. + bulk_modulus (float, optional): The bulk modulus. Defaults to 0.0. + shear_modulus (float, optional): The shear modulus. Defaults to 0.0. + + Returns: + float: The potential energy of the system. + """ displacements = get_displacement(structure_equilibrium, structure) position_transformed = displacements.reshape( displacements.shape[0] * displacements.shape[1] @@ -86,6 +150,17 @@ def get_energy_pot( def get_stiffness_tensor( bulk_modulus: float = 0.0, shear_modulus: float = 0.0 ) -> np.ndarray: + """ + Calculate the stiffness tensor based on the bulk modulus and shear modulus. + + Args: + bulk_modulus (float, optional): The bulk modulus. Defaults to 0.0. + shear_modulus (float, optional): The shear modulus. Defaults to 0.0. + + Returns: + np.ndarray: The stiffness tensor. + + """ stiffness_tensor = np.zeros((6, 6)) stiffness_tensor[:3, :3] = bulk_modulus - 2 * shear_modulus / 3 stiffness_tensor[:3, :3] += np.eye(3) * 2 * shear_modulus @@ -96,6 +171,17 @@ def get_stiffness_tensor( def get_pressure_times_volume( stiffness_tensor: np.ndarray, structure_equilibrium: Atoms, structure: Atoms ) -> float: + """ + Calculate the pressure times volume. + + Args: + stiffness_tensor (np.ndarray): The stiffness tensor. + structure_equilibrium (Atoms): The equilibrium structure. + structure (Atoms): The current structure. + + Returns: + float: The pressure times volume. + """ if np.sum(stiffness_tensor) != 0: epsilon = np.einsum( "ij,jk->ik", @@ -120,7 +206,24 @@ def evaluate_with_hessian( force_constants: np.ndarray, bulk_modulus: float = 0.0, shear_modulus: float = 0.0, -): +) -> dict[str, Union[float, np.ndarray]]: + """ + Evaluate the specified tasks using the Hessian calculator. + + Args: + structure (Atoms): The current structure. + tasks (dict[str, dict]): The tasks to evaluate. + structure_equilibrium (Atoms): The equilibrium structure. + force_constants (np.ndarray): The force constants array. + bulk_modulus (float, optional): The bulk modulus. Defaults to 0.0. + shear_modulus (float, optional): The shear modulus. Defaults to 0.0. + + Returns: + dict[str, Union[float, np.ndarray]]: The results of the evaluated tasks. + + Raises: + ValueError: If the specified tasks are not supported. + """ results = {} if "calc_energy" in tasks or "calc_forces" in tasks: force_constants = check_force_constants( diff --git a/atomistics/calculators/interface.py b/atomistics/calculators/interface.py index 59b1e68c..cabc50cf 100644 --- a/atomistics/calculators/interface.py +++ b/atomistics/calculators/interface.py @@ -47,6 +47,16 @@ class TaskOutputEnum(Enum): def get_quantities_from_tasks(tasks: dict) -> list: + """ + Get a list of quantities based on the given tasks. + + Args: + tasks (dict): A dictionary of tasks. + + Returns: + list: A list of quantities. + + """ quantities = [] if "calc_energy" in tasks: quantities.append("energy") diff --git a/atomistics/calculators/qe.py b/atomistics/calculators/qe.py index 5684041e..05992365 100644 --- a/atomistics/calculators/qe.py +++ b/atomistics/calculators/qe.py @@ -11,24 +11,68 @@ from atomistics.shared.output import OutputStatic -class QEStaticParser(object): - def __init__(self, filename): +class QEStaticParser: + """ + Class for parsing Quantum Espresso static calculations output file. + """ + + def __init__(self, filename: str): + """ + Initialize the QEStaticParser. + + Args: + filename (str): The path to the Quantum Espresso output file. + """ self.parser = io.read_pw_scf(filename=filename, use_alat=True) def forces(self) -> np.ndarray: + """ + Get the forces from the calculation. + + Returns: + np.ndarray: The forces array. + """ return self.parser.forces def energy(self) -> float: + """ + Get the total energy from the calculation. + + Returns: + float: The total energy. + """ return self.parser.etot def stress(self) -> np.ndarray: + """ + Get the stress tensor from the calculation. + + Returns: + np.ndarray: The stress tensor. + """ return self.parser.stress def volume(self) -> float: + """ + Get the volume from the calculation. + + Returns: + float: The volume. + """ return self.parser.volume -def call_qe_via_ase_command(calculation_name: str, working_directory: str): +def call_qe_via_ase_command(calculation_name: str, working_directory: str) -> None: + """ + Call Quantum Espresso via ASE command. + + Args: + calculation_name (str): The name of the calculation. + working_directory (str): The working directory. + + Returns: + None + """ subprocess.check_output( os.environ["ASE_ESPRESSO_COMMAND"].replace("PREFIX", calculation_name), shell=True, @@ -37,7 +81,17 @@ def call_qe_via_ase_command(calculation_name: str, working_directory: str): ) -def set_pseudo_potentials(pseudopotentials: dict, structure: Atoms): +def set_pseudo_potentials(pseudopotentials: dict, structure: Atoms) -> dict: + """ + Set the pseudopotentials for the given structure. + + Args: + pseudopotentials (dict): A dictionary mapping element symbols to pseudopotential filenames. + structure (Atoms): The atomic structure. + + Returns: + dict: A dictionary mapping element symbols to pseudopotential filenames. + """ if pseudopotentials is not None: return pseudopotentials else: @@ -134,7 +188,16 @@ def set_pseudo_potentials(pseudopotentials: dict, structure: Atoms): } -def generate_input_data(**kwargs): +def generate_input_data(**kwargs) -> dict: + """ + Generate input data for Quantum Espresso calculation. + + Args: + **kwargs: Additional keyword arguments. + + Returns: + dict: The input data dictionary. + """ return kwargs @@ -147,7 +210,23 @@ def optimize_positions_and_volume_with_qe( tstress: bool = True, tprnfor: bool = True, **kwargs, -): +) -> Atoms: + """ + Optimize the positions and volume of a structure using Quantum Espresso. + + Args: + structure (Atoms): The atomic structure. + calculation_name (str, optional): The name of the calculation. Defaults to "espresso". + working_directory (str, optional): The working directory. Defaults to ".". + kpts (tuple[int], optional): The k-points for the calculation. Defaults to (3, 3, 3). + pseudopotentials (dict, optional): A dictionary mapping element symbols to pseudopotential filenames. Defaults to None. + tstress (bool, optional): Whether to calculate the stress. Defaults to True. + tprnfor (bool, optional): Whether to print forces. Defaults to True. + **kwargs: Additional keyword arguments. + + Returns: + Atoms: The optimized atomic structure. + """ input_file_name = os.path.join(working_directory, calculation_name + ".pwi") output_file_name = os.path.join(working_directory, calculation_name + ".pwo") input_data = generate_input_data( @@ -185,7 +264,24 @@ def calc_static_with_qe( tprnfor: bool = True, output_keys: tuple[str] = OutputStatic.keys(), **kwargs, -): +) -> OutputStatic: + """ + Calculate static properties of a structure using Quantum Espresso. + + Args: + structure (Atoms): The atomic structure. + calculation_name (str, optional): The name of the calculation. Defaults to "espresso". + working_directory (str, optional): The working directory. Defaults to ".". + kpts (tuple[int], optional): The k-points for the calculation. Defaults to (3, 3, 3). + pseudopotentials (dict, optional): A dictionary mapping element symbols to pseudopotential filenames. Defaults to None. + tstress (bool, optional): Whether to calculate the stress. Defaults to True. + tprnfor (bool, optional): Whether to print forces. Defaults to True. + output_keys (tuple[str], optional): The keys of the output properties to retrieve. Defaults to OutputStatic.keys(). + **kwargs: Additional keyword arguments. + + Returns: + OutputStatic: The static output properties. + """ input_file_name = os.path.join(working_directory, calculation_name + ".pwi") output_file_name = os.path.join(working_directory, calculation_name + ".pwo") os.makedirs(working_directory, exist_ok=True) @@ -227,6 +323,23 @@ def evaluate_with_qe( tprnfor: bool = True, **kwargs, ) -> dict: + """ + Evaluate tasks using Quantum Espresso. + + Args: + structure (Atoms): The atomic structure. + tasks (dict): The tasks to evaluate. + calculation_name (str, optional): The name of the calculation. Defaults to "espresso". + working_directory (str, optional): The working directory. Defaults to ".". + kpts (tuple[int], optional): The k-points for the calculation. Defaults to (3, 3, 3). + pseudopotentials (dict, optional): A dictionary mapping element symbols to pseudopotential filenames. Defaults to None. + tstress (bool, optional): Whether to calculate the stress. Defaults to True. + tprnfor (bool, optional): Whether to print forces. Defaults to True. + **kwargs: Additional keyword arguments. + + Returns: + dict: The results of the evaluated tasks. + """ results = {} if "optimize_positions_and_volume" in tasks: results["structure_with_optimized_positions_and_volume"] = ( diff --git a/atomistics/shared/output.py b/atomistics/shared/output.py index 43ce213f..620e4de5 100644 --- a/atomistics/shared/output.py +++ b/atomistics/shared/output.py @@ -3,11 +3,30 @@ @dataclasses.dataclass class Output: + """ + Base class for output data. + """ + @classmethod - def keys(cls): + def keys(cls) -> tuple: + """ + Get the keys of the output data class. + + Returns: + tuple: The keys of the output data class. + """ return tuple(field.name for field in dataclasses.fields(cls)) def get(self, output_keys: tuple) -> dict: + """ + Get the specified output data. + + Args: + output_keys (tuple): The keys of the output data to retrieve. + + Returns: + dict: The output data. + """ return {q: getattr(self, q)() for q in output_keys} diff --git a/atomistics/shared/thermal_expansion.py b/atomistics/shared/thermal_expansion.py index 9b7e1442..b714c14a 100644 --- a/atomistics/shared/thermal_expansion.py +++ b/atomistics/shared/thermal_expansion.py @@ -5,19 +5,49 @@ class ThermalExpansionProperties: 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 def volumes(self) -> np.ndarray: + """ + Get the array of volumes. + + Returns: + np.ndarray: Array of volumes. + """ return self._volumes_lst def temperatures(self) -> np.ndarray: + """ + Get the array of temperatures. + + Returns: + np.ndarray: Array of temperatures. + """ return self._temperatures_lst def get_thermal_expansion_output( temperatures_lst: np.ndarray, volumes_lst: np.ndarray, output_keys: tuple[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 ) diff --git a/atomistics/shared/tqdm_iterator.py b/atomistics/shared/tqdm_iterator.py index 6d05ff06..e41697cf 100644 --- a/atomistics/shared/tqdm_iterator.py +++ b/atomistics/shared/tqdm_iterator.py @@ -9,6 +9,15 @@ def get_tqdm_iterator(lst: list) -> Iterator: + """ + Returns an iterator with tqdm progress bar if tqdm is available, otherwise returns the original list iterator. + + Args: + lst (list): The list to iterate over. + + Returns: + Iterator: An iterator with tqdm progress bar if tqdm is available, otherwise the original list iterator. + """ if tqdm_available: return tqdm(lst) else: diff --git a/atomistics/workflows/elastic/elastic_moduli.py b/atomistics/workflows/elastic/elastic_moduli.py index 1350d162..a4536fdb 100644 --- a/atomistics/workflows/elastic/elastic_moduli.py +++ b/atomistics/workflows/elastic/elastic_moduli.py @@ -1,4 +1,5 @@ from functools import cache +from typing import Tuple import numpy as np @@ -6,6 +7,15 @@ def get_bulkmodul_voigt(elastic_matrix: np.ndarray) -> float: + """ + Calculate the Voigt average of the bulk modulus. + + Parameters: + elastic_matrix (np.ndarray): The elastic matrix. + + Returns: + float: The Voigt average of the bulk modulus. + """ return ( elastic_matrix[0, 0] + elastic_matrix[1, 1] @@ -15,6 +25,15 @@ def get_bulkmodul_voigt(elastic_matrix: np.ndarray) -> float: def get_shearmodul_voigt(elastic_matrix: np.ndarray) -> float: + """ + Calculate the Voigt average of the shear modulus. + + Parameters: + elastic_matrix (np.ndarray): The elastic matrix. + + Returns: + float: The Voigt average of the shear modulus. + """ return ( (elastic_matrix[0, 0] + elastic_matrix[1, 1] + elastic_matrix[2, 2]) - (elastic_matrix[0, 1] + elastic_matrix[0, 2] + elastic_matrix[1, 2]) @@ -23,18 +42,47 @@ def get_shearmodul_voigt(elastic_matrix: np.ndarray) -> float: def get_youngsmodul_voigt(bulkmodul_voigt: float, shearmodul_voigt: float) -> float: + """ + Calculates the Young's modulus using the Voigt notation. + + Parameters: + bulkmodul_voigt (float): The bulk modulus in Voigt notation. + shearmodul_voigt (float): The shear modulus in Voigt notation. + + Returns: + float: The Young's modulus calculated using the Voigt notation. + """ return (9 * bulkmodul_voigt * shearmodul_voigt) / ( 3 * bulkmodul_voigt + shearmodul_voigt ) def get_poissonsratio_voigt(bulkmodul_voigt: float, shearmodul_voigt: float) -> float: + """ + Calculate the Poisson's ratio using the Voigt notation. + + Parameters: + bulkmodul_voigt (float): The bulk modulus in Voigt notation. + shearmodul_voigt (float): The shear modulus in Voigt notation. + + Returns: + float: The Poisson's ratio calculated using the Voigt notation. + """ return (1.5 * bulkmodul_voigt - shearmodul_voigt) / ( 3 * bulkmodul_voigt + shearmodul_voigt ) def get_bulkmodul_reuss(elastic_matrix_inverse: np.ndarray) -> float: + """ + Calculate the Reuss average of the bulk modulus. + + Parameters: + elastic_matrix_inverse (np.ndarray): The inverse of the elastic matrix. + + Returns: + float: The Reuss average of the bulk modulus. + """ return 1 / ( elastic_matrix_inverse[0, 0] + elastic_matrix_inverse[1, 1] @@ -49,6 +97,15 @@ def get_bulkmodul_reuss(elastic_matrix_inverse: np.ndarray) -> float: def get_shearmodul_reuss(elastic_matrix_inverse: np.ndarray) -> float: + """ + Calculate the Reuss average of the shear modulus. + + Parameters: + elastic_matrix_inverse (np.ndarray): The inverse of the elastic matrix. + + Returns: + float: The Reuss average of the shear modulus. + """ return 15 / ( 4 * ( @@ -72,38 +129,110 @@ def get_shearmodul_reuss(elastic_matrix_inverse: np.ndarray) -> float: def get_youngsmodul_reuss(bulkmodul_reuss: float, shearmodul_reuss: float) -> float: + """ + Calculates the Young's modulus using the Reuss approximation. + + Parameters: + bulkmodul_reuss (float): The bulk modulus in Reuss approximation. + shearmodul_reuss (float): The shear modulus in Reuss approximation. + + Returns: + float: The calculated Young's modulus. + + """ return (9 * bulkmodul_reuss * shearmodul_reuss) / ( 3 * bulkmodul_reuss + shearmodul_reuss ) def get_poissonsratio_reuss(bulkmodul_reuss: float, shearmodul_reuss: float) -> float: + """ + Calculate the Poisson's ratio using the Reuss approximation. + + Parameters: + bulkmodul_reuss (float): The bulk modulus in Reuss approximation. + shearmodul_reuss (float): The shear modulus in Reuss approximation. + + Returns: + float: The Poisson's ratio calculated using the Reuss approximation. + """ return (1.5 * bulkmodul_reuss - shearmodul_reuss) / ( 3 * bulkmodul_reuss + shearmodul_reuss ) def get_bulkmodul_hill(bulkmodul_voigt: float, bulkmodul_reuss: float) -> float: + """ + Calculate the Hill average of the bulk modulus. + + Parameters: + bulkmodul_voigt (float): The bulk modulus in Voigt notation. + bulkmodul_reuss (float): The bulk modulus in Reuss approximation. + + Returns: + float: The Hill average of the bulk modulus. + """ return _hill_approximation(voigt=bulkmodul_voigt, reuss=bulkmodul_reuss) def get_shearmodul_hill(shearmodul_voigt: float, shearmodul_reuss: float) -> float: + """ + Calculate the shear modulus using the Hill approximation. + + Args: + shearmodul_voigt (float): The shear modulus calculated using the Voigt approximation. + shearmodul_reuss (float): The shear modulus calculated using the Reuss approximation. + + Returns: + float: The shear modulus calculated using the Hill approximation. + """ return _hill_approximation(voigt=shearmodul_voigt, reuss=shearmodul_reuss) def get_youngsmodul_hill(bulkmodul_hill: float, shearmodul_hill: float) -> float: + """ + Calculate the Young's modulus using the Hill approximation. + + Parameters: + bulkmodul_hill (float): The bulk modulus. + shearmodul_hill (float): The shear modulus. + + Returns: + float: The calculated Young's modulus. + + """ return (9.0 * bulkmodul_hill * shearmodul_hill) / ( 3.0 * bulkmodul_hill + shearmodul_hill ) def get_poissonsratio_hill(bulkmodul_hill: float, shearmodul_hill: float) -> float: + """ + Calculate the Poisson's ratio using Hill's approximation. + + Parameters: + bulkmodul_hill (float): The bulk modulus calculated using Hill's approximation. + shearmodul_hill (float): The shear modulus calculated using Hill's approximation. + + Returns: + float: The Poisson's ratio calculated using Hill's approximation. + """ return (1.5 * bulkmodul_hill - shearmodul_hill) / ( 3.0 * bulkmodul_hill + shearmodul_hill ) def get_AVR(shearmodul_voigt: float, shearmodul_reuss: float) -> float: + """ + Calculate the average value ratio (AVR) of the shear modulus. + + Parameters: + shearmodul_voigt (float): The shear modulus calculated using the Voigt approximation. + shearmodul_reuss (float): The shear modulus calculated using the Reuss approximation. + + Returns: + float: The average value ratio (AVR) of the shear modulus. + """ return ( 100.0 * (shearmodul_voigt - shearmodul_reuss) @@ -111,49 +240,127 @@ def get_AVR(shearmodul_voigt: float, shearmodul_reuss: float) -> float: ) -def get_elastic_matrix_eigval(elastic_matrix: np.ndarray): +def get_elastic_matrix_eigval( + elastic_matrix: np.ndarray, +) -> Tuple[np.ndarray, np.ndarray]: + """ + Calculate the eigenvalues and eigenvectors of the elastic matrix. + + Parameters: + elastic_matrix (np.ndarray): The elastic matrix. + + Returns: + Tuple[np.ndarray, np.ndarray]: The eigenvalues and eigenvectors of the elastic matrix. + """ return np.linalg.eig(elastic_matrix) def get_elastic_matrix_inverse(elastic_matrix: np.ndarray) -> np.ndarray: + """ + Calculate the inverse of the elastic matrix. + + Parameters: + elastic_matrix (np.ndarray): The elastic matrix. + + Returns: + np.ndarray: The inverse of the elastic matrix. + """ return np.linalg.inv(elastic_matrix) def _hill_approximation(voigt: float, reuss: float) -> float: + """ + Calculate the Hill approximation of a property. + + Parameters: + voigt (float): The property calculated using the Voigt approximation. + reuss (float): The property calculated using the Reuss approximation. + + Returns: + float: The Hill approximation of the property. + """ return 0.50 * (voigt + reuss) class ElasticProperties: - def __init__(self, elastic_matrix): + def __init__(self, elastic_matrix: np.ndarray): + """ + Initialize the ElasticProperties class. + + Parameters: + elastic_matrix (np.ndarray): The elastic matrix. + """ self._elastic_matrix = elastic_matrix def elastic_matrix(self) -> np.ndarray: + """ + Get the elastic matrix. + + Returns: + np.ndarray: The elastic matrix. + """ return self._elastic_matrix @cache def elastic_matrix_inverse(self) -> np.ndarray: + """ + Calculate the inverse of the elastic matrix. + + Returns: + np.ndarray: The inverse of the elastic matrix. + """ return get_elastic_matrix_inverse(elastic_matrix=self.elastic_matrix()) @cache def bulkmodul_voigt(self) -> float: + """ + Calculate the bulk modulus in Voigt notation. + + Returns: + float: The bulk modulus in Voigt notation. + """ return get_bulkmodul_voigt(elastic_matrix=self.elastic_matrix()) @cache def shearmodul_voigt(self) -> float: + """ + Calculate the shear modulus in Voigt notation. + + Returns: + float: The shear modulus in Voigt notation. + """ return get_shearmodul_voigt(elastic_matrix=self.elastic_matrix()) @cache def bulkmodul_reuss(self) -> float: + """ + Calculate the Reuss average of the bulk modulus. + + Returns: + float: The Reuss average of the bulk modulus. + """ return get_bulkmodul_reuss(elastic_matrix_inverse=self.elastic_matrix_inverse()) @cache def shearmodul_reuss(self) -> float: + """ + Calculate the Reuss average of the shear modulus. + + Returns: + float: The Reuss average of the shear modulus. + """ return get_shearmodul_reuss( elastic_matrix_inverse=self.elastic_matrix_inverse() ) @cache def bulkmodul_hill(self) -> float: + """ + Calculate the Hill average of the bulk modulus. + + Returns: + float: The Hill average of the bulk modulus. + """ return get_bulkmodul_hill( bulkmodul_voigt=self.bulkmodul_voigt(), bulkmodul_reuss=self.bulkmodul_reuss(), @@ -161,6 +368,12 @@ def bulkmodul_hill(self) -> float: @cache def shearmodul_hill(self) -> float: + """ + Calculate the shear modulus using the Hill approximation. + + Returns: + float: The shear modulus calculated using the Hill approximation. + """ return get_shearmodul_hill( shearmodul_voigt=self.shearmodul_voigt(), shearmodul_reuss=self.shearmodul_reuss(), @@ -168,6 +381,12 @@ def shearmodul_hill(self) -> float: @cache def youngsmodul_voigt(self) -> float: + """ + Calculate the Young's modulus using the Voigt approximation. + + Returns: + float: The calculated Young's modulus. + """ return get_youngsmodul_voigt( bulkmodul_voigt=self.bulkmodul_voigt(), shearmodul_voigt=self.shearmodul_voigt(), @@ -175,6 +394,12 @@ def youngsmodul_voigt(self) -> float: @cache def poissonsratio_voigt(self) -> float: + """ + Calculate the Poisson's ratio using the Voigt approximation. + + Returns: + float: The Poisson's ratio calculated using the Voigt approximation. + """ return get_poissonsratio_voigt( bulkmodul_voigt=self.bulkmodul_voigt(), shearmodul_voigt=self.shearmodul_voigt(), @@ -182,6 +407,12 @@ def poissonsratio_voigt(self) -> float: @cache def youngsmodul_reuss(self) -> float: + """ + Calculate the Young's modulus using the Reuss approximation. + + Returns: + float: The calculated Young's modulus. + """ return get_youngsmodul_reuss( bulkmodul_reuss=self.bulkmodul_reuss(), shearmodul_reuss=self.shearmodul_reuss(), @@ -189,6 +420,12 @@ def youngsmodul_reuss(self) -> float: @cache def poissonsratio_reuss(self) -> float: + """ + Calculate the Poisson's ratio using the Reuss approximation. + + Returns: + float: The Poisson's ratio calculated using the Reuss approximation. + """ return get_poissonsratio_reuss( bulkmodul_reuss=self.bulkmodul_reuss(), shearmodul_reuss=self.shearmodul_reuss(), @@ -196,28 +433,61 @@ def poissonsratio_reuss(self) -> float: @cache def youngsmodul_hill(self) -> float: + """ + Calculate the Young's modulus using the Hill approximation. + + Returns: + float: The calculated Young's modulus. + """ return get_youngsmodul_hill( bulkmodul_hill=self.bulkmodul_hill(), shearmodul_hill=self.shearmodul_hill() ) @cache def poissonsratio_hill(self) -> float: + """ + Calculate the Poisson's ratio using Hill's approximation. + + Returns: + float: The Poisson's ratio calculated using Hill's approximation. + """ return get_poissonsratio_hill( bulkmodul_hill=self.bulkmodul_hill(), shearmodul_hill=self.shearmodul_hill() ) @cache def AVR(self) -> float: + """ + Calculate the average value ratio (AVR) of the shear modulus. + + Returns: + float: The average value ratio (AVR) of the shear modulus. + """ return get_AVR( shearmodul_voigt=self.shearmodul_voigt(), shearmodul_reuss=self.shearmodul_reuss(), ) @cache - def elastic_matrix_eigval(self): + def elastic_matrix_eigval(self) -> Tuple[np.ndarray, np.ndarray]: + """ + Calculate the eigenvalues and eigenvectors of the elastic matrix. + + Returns: + Tuple[np.ndarray, np.ndarray]: The eigenvalues and eigenvectors of the elastic matrix. + """ return get_elastic_matrix_eigval(elastic_matrix=self.elastic_matrix()) def to_dict(self, output_keys: tuple = OutputElastic.keys()) -> dict: + """ + Convert the ElasticProperties object to a dictionary. + + Parameters: + output_keys (tuple): The keys to include in the output dictionary. + + Returns: + dict: The ElasticProperties object as a dictionary. + """ return OutputElastic(**{k: getattr(self, k) for k in OutputElastic.keys()}).get( output_keys=output_keys ) diff --git a/atomistics/workflows/elastic/helper.py b/atomistics/workflows/elastic/helper.py index 8b7d183f..529e1d3a 100644 --- a/atomistics/workflows/elastic/helper.py +++ b/atomistics/workflows/elastic/helper.py @@ -1,4 +1,5 @@ from collections import OrderedDict +from typing import Any, Dict, List, Optional, Tuple import ase.atoms import numpy as np @@ -19,11 +20,19 @@ def generate_structures_helper( num_of_point: int, zero_strain_job_name: str = "s_e_0", sqrt_eta: bool = True, -): +) -> Tuple[Dict[str, int], Dict[str, ase.atoms.Atoms]]: """ + Generate structures for elastic analysis. - Returns: + Args: + structure (ase.atoms.Atoms): The input structure. + eps_range (float): The range of strain. + num_of_point (int): The number of points in the strain range. + zero_strain_job_name (str, optional): The name of the zero strain job. Defaults to "s_e_0". + sqrt_eta (bool, optional): Whether to take the square root of the eta matrix. Defaults to True. + Returns: + Tuple[Dict[str, int], Dict[str, ase.atoms.Atoms]]: A tuple containing the symmetry dictionary and the structure dictionary. """ SGN, v0, LC, Lag_strain_list, epss = symmetry_analysis( structure=structure, @@ -96,7 +105,20 @@ def analyse_structures_helper( fit_order: int = 2, zero_strain_job_name: str = "s_e_0", output_keys: tuple = OutputElastic.keys(), -): +) -> Tuple[Dict[str, Any], Dict[str, Any]]: + """ + Analyze structures and calculate elastic properties. + + Args: + output_dict (dict): The dictionary containing the output data. + sym_dict (dict): The symmetry dictionary. + fit_order (int, optional): The order of the polynomial fit. Defaults to 2. + zero_strain_job_name (str, optional): The name of the zero strain job. Defaults to "s_e_0". + output_keys (tuple, optional): The keys to include in the output dictionary. Defaults to OutputElastic.keys(). + + Returns: + Tuple[Dict[str, Any], Dict[str, Any]]: A tuple containing the updated symmetry dictionary and the elastic properties dictionary. + """ elastic_matrix, A2, strain_energy, ene0 = _get_elastic_matrix( output_dict=output_dict, Lag_strain_list=sym_dict["Lag_strain_list"], @@ -122,15 +144,21 @@ def _get_elastic_matrix( LC: str, fit_order: int = 2, zero_strain_job_name: str = "s_e_0", -): +) -> Tuple[np.ndarray, np.ndarray, List[List[Tuple[float, float]]], Optional[float]]: """ + Calculate the elastic matrix and other properties. Args: - output_dict (dict): - output (tuple): + output_dict (dict): The dictionary containing the output data. + Lag_strain_list (list[float]): The list of Lagrangian strains. + epss (float): The list of strains. + v0 (float): The volume of the unit cell. + LC (str): The lattice constant. + fit_order (int, optional): The order of the polynomial fit. Defaults to 2. + zero_strain_job_name (str, optional): The name of the zero strain job. Defaults to "s_e_0". Returns: - + Tuple[np.ndarray, np.ndarray, List[List[Tuple[float, float]]], Optional[float]]: A tuple containing the elastic matrix, A2 coefficients, strain energy data, and ene0 value. """ if "energy" in output_dict.keys(): output_dict = output_dict["energy"] @@ -156,24 +184,34 @@ def _get_elastic_matrix( return elastic_matrix, A2, strain_energy, ene0 -def _subjob_name(i: int, eps: float): +def _subjob_name(i: int, eps: float) -> str: """ + Generate the subjob name. Args: - i: - eps: + i (int): The index. + eps (float): The strain value. Returns: - + str: The subjob name. """ return ("s_%s_e_%.5f" % (i, eps)).replace(".", "_").replace("-", "m") -def _fit_elastic_matrix(strain_ene: list, v0: float, LC: str, fit_order: int): +def _fit_elastic_matrix( + strain_ene: list[list[tuple[float, float]]], v0: float, LC: str, fit_order: int +) -> Tuple[np.ndarray, np.ndarray]: """ + Fit the elastic matrix from strain-energy data. - Returns: + Args: + strain_ene (list[list[tuple[float, float]]]): The strain-energy data. + v0 (float): The volume of the unit cell. + LC (str): The lattice constant. + fit_order (int): The order of the polynomial fit. + Returns: + Tuple[np.ndarray, np.ndarray]: A tuple containing the elastic matrix and the A2 coefficients. """ A2 = [] for s_e in strain_ene: diff --git a/atomistics/workflows/elastic/symmetry.py b/atomistics/workflows/elastic/symmetry.py index 95d2a9c0..712284b6 100644 --- a/atomistics/workflows/elastic/symmetry.py +++ b/atomistics/workflows/elastic/symmetry.py @@ -1,3 +1,5 @@ +from typing import List, Tuple + import numpy as np import spglib from ase.atoms import Atoms @@ -19,6 +21,15 @@ def ase_to_spglib(structure: Atoms) -> tuple: def find_symmetry_group_number(struct: tuple) -> int: + """ + Find the symmetry group number (SGN) of a given structure. + + Parameters: + struct (tuple): The structure in the format of (basis vectors, atomic points, types). + + Returns: + int: The symmetry group number (SGN) of the structure. + """ dataset = spglib.get_symmetry_dataset(cell=ase_to_spglib(struct)) SGN = dataset["number"] return SGN @@ -74,6 +85,15 @@ def find_symmetry_group_number(struct: tuple) -> int: def get_symmetry_family_from_SGN(SGN: int) -> str: + """ + Get the symmetry family (LC) from the symmetry group number (SGN). + + Parameters: + SGN (int): The symmetry group number. + + Returns: + str: The symmetry family (LC). + """ if 1 <= SGN <= 2: # Triclinic LC = "N" elif 3 <= SGN <= 15: # Monoclinic @@ -102,6 +122,15 @@ def get_symmetry_family_from_SGN(SGN: int) -> str: def get_LAG_Strain_List(LC: str) -> list[str]: + """ + Get the Lag_strain_list based on the symmetry family (LC). + + Parameters: + LC (str): The symmetry family. + + Returns: + list[str]: The Lag_strain_list. + """ if LC == "CI" or LC == "CII": Lag_strain_list = ["01", "08", "23"] elif LC == "HI" or LC == "HII": @@ -335,11 +364,20 @@ def get_C_from_A2(A2: np.ndarray, LC: str) -> np.ndarray: return C -def symmetry_analysis(structure: Atoms, eps_range: float, num_of_point: int): +def symmetry_analysis( + structure: Atoms, eps_range: float, num_of_point: int +) -> Tuple[int, float, str, List[str], np.ndarray]: """ + Perform symmetry analysis on a given atomic structure. - Returns: + Parameters: + structure (Atoms): The atomic structure. + eps_range (float): The range of epsilon values. + num_of_point (int): The number of points to evaluate. + Returns: + Tuple[int, float, str, List[str], np.ndarray]: The symmetry group number, volume, symmetry family, + list of Lagrangian strain types, and array of epsilon values. """ SGN = find_symmetry_group_number(structure) v0 = structure.get_volume() diff --git a/atomistics/workflows/elastic/workflow.py b/atomistics/workflows/elastic/workflow.py index 83a5d89a..7f5bc609 100644 --- a/atomistics/workflows/elastic/workflow.py +++ b/atomistics/workflows/elastic/workflow.py @@ -18,6 +18,16 @@ def __init__( sqrt_eta: bool = True, fit_order: int = 2, ): + """ + Initialize the ElasticMatrixWorkflow object. + + Args: + structure (Atoms): The atomic structure. + num_of_point (int, optional): The number of strain points. Defaults to 5. + eps_range (float, optional): The range of strain. Defaults to 0.005. + sqrt_eta (bool, optional): Whether to take the square root of eta. Defaults to True. + fit_order (int, optional): The order of polynomial fit. Defaults to 2. + """ self.structure = structure.copy() self.num_of_point = num_of_point self.eps_range = eps_range @@ -31,9 +41,10 @@ def __init__( def generate_structures(self) -> dict: """ + Generate the structures for elastic matrix calculation. Returns: - + dict: The generated structures. """ self._data, self._structure_dict = generate_structures_helper( structure=self.structure, @@ -48,13 +59,15 @@ def analyse_structures( self, output_dict: dict, output_keys: tuple = OutputElastic.keys() ) -> dict: """ + Analyze the structures and calculate the elastic matrix. Args: - output_dict (dict): - output_keys (tuple): + output_dict (dict): The output dictionary. + output_keys (tuple, optional): The keys to extract from the output dictionary. + Defaults to OutputElastic.keys(). Returns: - + dict: The calculated elastic matrix. """ self._data, elastic_dict = analyse_structures_helper( output_dict=output_dict, diff --git a/atomistics/workflows/evcurve/debye.py b/atomistics/workflows/evcurve/debye.py index 5d59ffe7..fa182cda 100644 --- a/atomistics/workflows/evcurve/debye.py +++ b/atomistics/workflows/evcurve/debye.py @@ -1,3 +1,5 @@ +from typing import Dict, List + import numpy as np import scipy.constants import scipy.optimize @@ -19,6 +21,19 @@ def __init__( constant_volume: bool = False, num_steps: int = 50, ): + """ + Initialize the DebyeThermalProperties class. + + Parameters: + - fit_dict (dict): The fit dictionary containing the volume and bulk modulus information. + - masses (list[float]): The masses of the atoms in the system. + - t_min (float): The minimum temperature in Kelvin. Default is 1.0. + - t_max (float): The maximum temperature in Kelvin. Default is 1500.0. + - t_step (float): The temperature step size in Kelvin. Default is 50.0. + - temperatures (np.ndarray): The array of temperatures. If None, it will be generated based on t_min, t_max, and t_step. Default is None. + - constant_volume (bool): Whether to calculate properties at constant volume. Default is False. + - num_steps (int): The number of steps for volume interpolation. Default is 50. + """ if temperatures is None: temperatures = np.arange(t_min, t_max + t_step, t_step) self._temperatures = temperatures @@ -32,15 +47,33 @@ def __init__( self._constant_volume = constant_volume def free_energy(self) -> np.ndarray: + """ + Calculate the free energy. + + Returns: + - np.ndarray: The array of free energy values. + """ return ( self._pes.get_free_energy_p() - self._debye_model.interpolate(volumes=self._pes.get_minimum_energy_path()) ) / self._pes.num_atoms def temperatures(self) -> np.ndarray: + """ + Get the array of temperatures. + + Returns: + - np.ndarray: The array of temperatures. + """ return self._temperatures def entropy(self) -> np.ndarray: + """ + Calculate the entropy. + + Returns: + - np.ndarray: The array of entropy values. + """ if not self._constant_volume: return ( self._pes.eV_to_J_per_mol @@ -55,6 +88,12 @@ def entropy(self) -> np.ndarray: ) def heat_capacity(self) -> np.ndarray: + """ + Calculate the heat capacity. + + Returns: + - np.ndarray: The array of heat capacity values. + """ if not self._constant_volume: heat_capacity = ( self._pes.eV_to_J_per_mol @@ -70,6 +109,12 @@ def heat_capacity(self) -> np.ndarray: return np.array(heat_capacity.tolist() + [np.nan, np.nan]) def volumes(self) -> np.ndarray: + """ + Get the array of volumes. + + Returns: + - np.ndarray: The array of volumes. + """ if not self._constant_volume: return self._pes.get_minimum_energy_path() else: @@ -77,14 +122,41 @@ def volumes(self) -> np.ndarray: def _debye_kernel(xi: np.ndarray) -> np.ndarray: + """ + Calculate the Debye kernel. + + Parameters: + - xi (np.ndarray): The array of values. + + Returns: + - np.ndarray: The array of Debye kernel values. + """ return xi**3 / (np.exp(xi) - 1) def debye_integral(x: np.ndarray) -> np.ndarray: + """ + Calculate the Debye integral for a given array of values. + + Parameters: + x (np.ndarray): Array of values for which the Debye integral is calculated. + + Returns: + np.ndarray: Array of Debye integral values corresponding to the input values. + """ return scipy.integrate.quad(_debye_kernel, 0, x)[0] def debye_function(x: np.ndarray) -> np.ndarray: + """ + Calculate the Debye function for a given array of values. + + Parameters: + x (np.ndarray): Array of values for which the Debye function is calculated. + + Returns: + np.ndarray: Array of Debye function values corresponding to the input values. + """ if hasattr(x, "__len__"): return np.array([3 / xx**3 * debye_integral(xx) for xx in x]) return 3 / x**3 * debye_integral(x) @@ -96,10 +168,17 @@ class DebyeModel(object): """ def __init__(self, fit_dict: dict, masses: list[float], num_steps: int = 50): + """ + Initialize the DebyeModel class. + + Parameters: + - fit_dict (dict): The fit dictionary containing the volume and bulk modulus information. + - masses (list[float]): The masses of the atoms in the system. + - num_steps (int): The number of steps for volume interpolation. Default is 50. + """ self._fit_dict = fit_dict self._masses = masses - # self._atoms_per_cell = len(murnaghan.structure) self._v_min = None self._v_max = None self._num_steps = None @@ -112,25 +191,49 @@ def __init__(self, fit_dict: dict, masses: list[float], num_steps: int = 50): self._debye_T = None def _init_volume(self): + """ + Initialize the minimum and maximum volume values. + """ vol = self._fit_dict["volume"] self._v_min, self._v_max = np.min(vol), np.max(vol) def _set_volume(self): + """ + Set the volume array based on the minimum and maximum volume values. + """ if self._v_min and self._v_max and self._num_steps: self._volume = np.linspace(self._v_min, self._v_max, self._num_steps) self._reset() @property def num_steps(self) -> int: + """ + Get the number of steps for volume interpolation. + + Returns: + - int: The number of steps. + """ return self._num_steps @num_steps.setter def num_steps(self, val: int): + """ + Set the number of steps for volume interpolation. + + Parameters: + - val (int): The number of steps. + """ self._num_steps = val self._set_volume() @property def volume(self) -> np.ndarray: + """ + Get the array of volumes. + + Returns: + - np.ndarray: The array of volumes. + """ if self._volume is None: self._init_volume() self._set_volume() @@ -138,21 +241,45 @@ def volume(self) -> np.ndarray: @volume.setter def volume(self, volume_lst: np.ndarray): + """ + Set the array of volumes. + + Parameters: + - volume_lst (np.ndarray): The array of volumes. + """ self._volume = volume_lst self._v_min = np.min(volume_lst) self._v_max = np.max(volume_lst) self._reset() def _reset(self): + """ + Reset the Debye temperature. + """ self._debye_T = None def interpolate(self, volumes: np.ndarray = None) -> np.ndarray: + """ + Interpolate the energy based on the fit dictionary and volumes. + + Parameters: + - volumes (np.ndarray): The array of volumes. If None, use the volume array of the DebyeModel. + + Returns: + - np.ndarray: The interpolated energy values. + """ if volumes is None: volumes = self.volume return interpolate_energy(fit_dict=self._fit_dict, volumes=volumes) @property def debye_temperature(self) -> tuple[float]: + """ + Get the Debye temperature. + + Returns: + - tuple[float]: The Debye temperature values. + """ if self._debye_T is not None: return self._debye_T @@ -180,9 +307,7 @@ def debye_temperature(self) -> tuple[float]: r0 = (3 * V0 * Ang3_to_Bohr3 / (4 * np.pi)) ** (1.0 / 3.0) debye_zero = empirical * convert * np.sqrt(r0 * B0 * GPaTokBar / mass) - # print('r0, B0, Bp, mass, V0', r0, B0, Bp, mass, V0) - # print('gamma_low, gamma_high: ', gamma_low, gamma_high) - # print('debye_zero, V0: ', debye_zero, V0) + if vol is None: print("WARNING: vol: ", vol) @@ -195,6 +320,17 @@ def debye_temperature(self) -> tuple[float]: def energy_vib( self, T: np.ndarray, debye_T: tuple[float] = None, low_T_limit: bool = True ): + """ + Calculate the vibrational energy. + + Parameters: + - T (np.ndarray): The array of temperatures. + - debye_T (tuple[float]): The Debye temperature values. If None, use the Debye temperature of the DebyeModel. + - low_T_limit (bool): Whether to use the low temperature limit. Default is True. + + Returns: + - np.ndarray: The array of vibrational energy values. + """ kB = scipy.constants.physical_constants["Boltzmann constant in eV/K"][0] if debye_T is None: if low_T_limit: @@ -216,7 +352,20 @@ def energy_vib( return atoms_per_cell * val -def get_debye_model(fit_dict: dict, masses: list[float], num_steps: int = 50): +def get_debye_model( + fit_dict: Dict[str, float], masses: List[float], num_steps: int = 50 +) -> DebyeModel: + """ + Create a DebyeModel object with the given parameters. + + Args: + fit_dict (Dict[str, float]): A dictionary containing the fit parameters. + masses (List[float]): A list of masses for the atoms in the system. + num_steps (int, optional): The number of steps to use in the Debye model. Defaults to 50. + + Returns: + DebyeModel: A DebyeModel object initialized with the given parameters. + """ return DebyeModel(fit_dict=fit_dict, masses=masses, num_steps=num_steps) @@ -231,6 +380,23 @@ def get_thermal_properties( num_steps: int = 50, output_keys: tuple = OutputThermodynamic.keys(), ) -> dict: + """ + Calculate the thermal properties based on the Debye model. + + Parameters: + - fit_dict (dict): The fit dictionary containing the volume and bulk modulus information. + - masses (list[float]): The masses of the atoms in the system. + - t_min (float): The minimum temperature. Default is 1.0. + - t_max (float): The maximum temperature. Default is 1500.0. + - t_step (float): The temperature step. Default is 50.0. + - temperatures (np.ndarray): The array of temperatures. If None, it will be generated based on t_min, t_max, and t_step. + - constant_volume (bool): Whether to calculate the properties at constant volume. Default is False. + - num_steps (int): The number of steps for volume interpolation. Default is 50. + - output_keys (tuple): The keys of the output properties to include in the result. Default is OutputThermodynamic.keys(). + + Returns: + - dict: A dictionary containing the calculated thermal properties. + """ debye_model = DebyeThermalProperties( fit_dict=fit_dict, masses=masses, diff --git a/atomistics/workflows/evcurve/fit.py b/atomistics/workflows/evcurve/fit.py index f4a1f62f..e888b3a5 100644 --- a/atomistics/workflows/evcurve/fit.py +++ b/atomistics/workflows/evcurve/fit.py @@ -11,7 +11,19 @@ def birchmurnaghan_energy( V: np.ndarray, E0: float, B0: float, BP: float, V0: float ) -> np.ndarray: - "BirchMurnaghan equation from PRB 70, 224107" + """ + BirchMurnaghan equation from PRB 70, 224107 + + Args: + V (np.ndarray): Array of volumes + E0 (float): Energy at equilibrium volume + B0 (float): Bulk modulus at equilibrium volume + BP (float): Pressure derivative of bulk modulus + V0 (float): Equilibrium volume + + Returns: + np.ndarray: Array of energies + """ eta = (V0 / V) ** (1 / 3) return E0 + 9 * B0 * V0 / 16 * (eta**2 - 1) ** 2 * ( 6 + BP * (eta**2 - 1) - 4 * eta**2 @@ -21,7 +33,19 @@ def birchmurnaghan_energy( def vinet_energy( V: np.ndarray, E0: float, B0: float, BP: float, V0: float ) -> np.ndarray: - "Vinet equation from PRB 70, 224107" + """ + Vinet equation from PRB 70, 224107 + + Args: + V (np.ndarray): Array of volumes + E0 (float): Energy at equilibrium volume + B0 (float): Bulk modulus at equilibrium volume + BP (float): Pressure derivative of bulk modulus + V0 (float): Equilibrium volume + + Returns: + np.ndarray: Array of energies + """ eta = (V / V0) ** (1 / 3) return E0 + 2 * B0 * V0 / (BP - 1) ** 2 * ( 2 - (5 + 3 * BP * (eta - 1) - 3 * eta) * np.exp(-3 * (BP - 1) * (eta - 1) / 2) @@ -29,18 +53,37 @@ def vinet_energy( def murnaghan(V: np.ndarray, E0: float, B0: float, BP: float, V0: float) -> np.ndarray: - "From PRB 28,5480 (1983" + """ + Murnaghan equation from PRB 28, 5480 (1983) + + Args: + V (np.ndarray): Array of volumes + E0 (float): Energy at equilibrium volume + B0 (float): Bulk modulus at equilibrium volume + BP (float): Pressure derivative of bulk modulus + V0 (float): Equilibrium volume + + Returns: + np.ndarray: Array of energies + """ E = E0 + B0 * V / BP * (((V0 / V) ** BP) / (BP - 1) + 1) - V0 * B0 / (BP - 1) return E def birch(V: np.ndarray, E0: float, B0: float, BP: float, V0: float) -> np.ndarray: """ - From Intermetallic compounds: Principles and Practice, Vol. I: Principles + Birch equation from Intermetallic compounds: Principles and Practice, Vol. I: Principles Chapter 9 pages 195-210 by M. Mehl. B. Klein, D. Papaconstantopoulos - paper downloaded from Web - case where n=0 + Args: + V (np.ndarray): Array of volumes + E0 (float): Energy at equilibrium volume + B0 (float): Bulk modulus at equilibrium volume + BP (float): Pressure derivative of bulk modulus + V0 (float): Equilibrium volume + + Returns: + np.ndarray: Array of energies """ E = ( E0 @@ -53,7 +96,19 @@ def birch(V: np.ndarray, E0: float, B0: float, BP: float, V0: float) -> np.ndarr def pouriertarantola( V: np.ndarray, E0: float, B0: float, BP: float, V0: float ) -> np.ndarray: - "Pourier-Tarantola equation from PRB 70, 224107" + """ + Pourier-Tarantola equation from PRB 70, 224107 + + Args: + V (np.ndarray): Array of volumes + E0 (float): Energy at equilibrium volume + B0 (float): Bulk modulus at equilibrium volume + BP (float): Pressure derivative of bulk modulus + V0 (float): Equilibrium volume + + Returns: + np.ndarray: Array of energies + """ eta = (V / V0) ** (1 / 3) squiggle = -3 * np.log(eta) @@ -95,6 +150,16 @@ def fitfunction( def interpolate_energy(fit_dict: dict, volumes: np.ndarray) -> np.ndarray: + """ + Interpolate the energy values for given volumes using the fit_dict. + + Args: + fit_dict (dict): Dictionary containing the fit results + volumes (np.ndarray): Array of volumes for which to interpolate energy values + + Returns: + np.ndarray: Array of interpolated energy values + """ if fit_dict["fit_dict"]["fit_type"] == "polynomial": return np.poly1d(fit_dict["fit_dict"]["poly_fit"])(volumes) elif fit_dict["fit_dict"]["fit_type"] in [ @@ -189,14 +254,15 @@ def fit_leastsq_eos( def get_error(x_lst: np.ndarray, y_lst: np.ndarray, p_fit) -> float: """ + Calculate the mean squared error between the observed and predicted values. Args: - x_lst: - y_lst: - p_fit: + x_lst (np.ndarray): Array of x values + y_lst (np.ndarray): Array of observed y values + p_fit (np.poly1d): Polynomial fit function Returns: - numpy.dnarray + float: Mean squared error """ y_fit_lst = np.array(p_fit(x_lst)) error_lst = (y_lst - y_fit_lst) ** 2 @@ -206,6 +272,17 @@ def get_error(x_lst: np.ndarray, y_lst: np.ndarray, p_fit) -> float: def fit_equation_of_state( volume_lst: np.ndarray, energy_lst: np.ndarray, fittype: str ) -> dict: + """ + Fit the equation of state to the given volume and energy data. + + Args: + volume_lst (np.ndarray): Array of volumes + energy_lst (np.ndarray): Array of energies + fittype (str): Type of fit to perform + + Returns: + dict: Dictionary containing the fit results + """ fit_dict = {} pfit_leastsq, perr_leastsq = fit_leastsq_eos( volume_lst=volume_lst, energy_lst=energy_lst, fittype=fittype @@ -225,6 +302,17 @@ def fit_equation_of_state( def fit_polynomial( volume_lst: np.ndarray, energy_lst: np.ndarray, fit_order: int ) -> dict: + """ + Fit a polynomial to the given volume and energy data. + + Args: + volume_lst (np.ndarray): Array of volumes + energy_lst (np.ndarray): Array of energies + fit_order (int): Order of the polynomial fit + + Returns: + dict: Dictionary containing the fit results + """ fit_dict = {} # compute a polynomial fit @@ -237,7 +325,6 @@ def fit_polynomial( p_deriv_1 = np.polyder(p_fit, 1) roots = np.roots(p_deriv_1) - # volume_eq_lst = np.array([np.real(r) for r in roots if np.abs(np.imag(r)) < 1e-10]) volume_eq_lst = np.array( [ np.real(r) @@ -252,7 +339,6 @@ def fit_polynomial( e_eq_lst = p_fit(volume_eq_lst) arg = np.argsort(e_eq_lst) - # print ("v_eq:", arg, e_eq_lst) if len(e_eq_lst) == 0: return None e_eq = e_eq_lst[arg][0] @@ -302,28 +388,65 @@ class EnergyVolumeFit(object): """ def __init__(self, volume_lst: np.ndarray = None, energy_lst: np.ndarray = None): + """ + Initialize the EnergyVolumeFit object. + + Args: + volume_lst (np.ndarray, optional): Vector of volumes. Defaults to None. + energy_lst (np.ndarray, optional): Vector of energies. Defaults to None. + """ self._volume_lst = volume_lst self._energy_lst = energy_lst self._fit_dict = None @property def volume_lst(self) -> np.ndarray: + """ + Get the vector of volumes. + + Returns: + np.ndarray: Vector of volumes. + """ return self._volume_lst @volume_lst.setter def volume_lst(self, vol_lst: np.ndarray): + """ + Set the vector of volumes. + + Args: + vol_lst (np.ndarray): Vector of volumes. + """ self._volume_lst = vol_lst @property def energy_lst(self) -> np.ndarray: + """ + Get the vector of energies. + + Returns: + np.ndarray: Vector of energies. + """ return self._energy_lst @energy_lst.setter def energy_lst(self, eng_lst: np.ndarray): + """ + Set the vector of energies. + + Args: + eng_lst (np.ndarray): Vector of energies. + """ self._energy_lst = eng_lst @property def fit_dict(self) -> dict: + """ + Get the fit dictionary. + + Returns: + dict: Fit dictionary. + """ return self._fit_dict def _get_volume_and_energy_lst( @@ -350,6 +473,16 @@ def _get_volume_and_energy_lst( return volume_lst, energy_lst def fit(self, fit_type: str = "polynomial", fit_order: int = 3) -> dict: + """ + Fit the energy volume curves. + + Args: + fit_type (str, optional): Type of fit to perform. Defaults to "polynomial". + fit_order (int, optional): Order of the polynomial fit. Defaults to 3. + + Returns: + dict: Dictionary containing the fit results. + """ if fit_type == "polynomial": self._fit_dict = self.fit_polynomial(fit_order=fit_order) elif fit_type in [ @@ -374,17 +507,17 @@ def fit_eos_general( volume_lst: np.ndarray = None, energy_lst: np.ndarray = None, fittype: str = "birchmurnaghan", - ): + ) -> dict: """ - Fit on of the equations of state + Fit one of the equations of state. Args: - volume_lst (list/numpy.dnarray/None): vector of volumes - energy_lst (list/numpy.dnarray/None): vector of energies - fittype (str): on of the following ['birch', 'birchmurnaghan', 'murnaghan', 'pouriertarantola', 'vinet'] + volume_lst (np.ndarray, optional): Vector of volumes. Defaults to None. + energy_lst (np.ndarray, optional): Vector of energies. Defaults to None. + fittype (str, optional): Type of fit to perform. Defaults to "birchmurnaghan". Returns: - dict: dictionary with fit results + dict: Dictionary containing the fit results. """ volume_lst, energy_lst = self._get_volume_and_energy_lst( volume_lst=volume_lst, energy_lst=energy_lst @@ -398,17 +531,17 @@ def fit_polynomial( volume_lst: np.ndarray = None, energy_lst: np.ndarray = None, fit_order: int = 3, - ): + ) -> dict: """ - Fit a polynomial + Fit a polynomial. Args: - volume_lst (list/numpy.dnarray/None): vector of volumes - energy_lst (list/numpy.dnarray/None): vector of energies - fit_order (int): Degree of the polynomial + volume_lst (np.ndarray, optional): Vector of volumes. Defaults to None. + energy_lst (np.ndarray, optional): Vector of energies. Defaults to None. + fit_order (int, optional): Order of the polynomial fit. Defaults to 3. Returns: - dict: dictionary with fit results + dict: Dictionary containing the fit results. """ volume_lst, energy_lst = self._get_volume_and_energy_lst( volume_lst=volume_lst, energy_lst=energy_lst @@ -419,14 +552,13 @@ def fit_polynomial( def interpolate_energy(self, volume_lst: np.ndarray) -> np.ndarray: """ - Gives the energy value for the corresponding energy volume fit defined in the fit dictionary. + Interpolate the energy values for the corresponding energy volume fit defined in the fit dictionary. Args: - volume_lst: list of volumes + volume_lst (np.ndarray): List of volumes. Returns: - list of energies - + np.ndarray: List of energies. """ if not self._fit_dict: return ValueError("parameter 'fit_dict' has to be defined!") @@ -438,6 +570,16 @@ def birchmurnaghan_energy( ) -> np.ndarray: """ BirchMurnaghan equation from PRB 70, 224107 + + Args: + V (np.ndarray): Vector of volumes. + E0 (float): Energy at equilibrium volume. + B0 (float): Bulk modulus at equilibrium volume. + BP (float): Pressure derivative of bulk modulus at equilibrium volume. + V0 (float): Equilibrium volume. + + Returns: + np.ndarray: Vector of energies. """ return birchmurnaghan_energy(V, E0, B0, BP, V0) @@ -447,6 +589,16 @@ def vinet_energy( ) -> np.ndarray: """ Vinet equation from PRB 70, 224107 + + Args: + V (np.ndarray): Vector of volumes. + E0 (float): Energy at equilibrium volume. + B0 (float): Bulk modulus at equilibrium volume. + BP (float): Pressure derivative of bulk modulus at equilibrium volume. + V0 (float): Equilibrium volume. + + Returns: + np.ndarray: Vector of energies. """ return vinet_energy(V, E0, B0, BP, V0) @@ -455,18 +607,38 @@ def murnaghan( V: np.ndarray, E0: float, B0: float, BP: float, V0: float ) -> np.ndarray: """ - From PRB 28,5480 (1983) + Murnaghan equation from PRB 28,5480 (1983) + + Args: + V (np.ndarray): Vector of volumes. + E0 (float): Energy at equilibrium volume. + B0 (float): Bulk modulus at equilibrium volume. + BP (float): Pressure derivative of bulk modulus at equilibrium volume. + V0 (float): Equilibrium volume. + + Returns: + np.ndarray: Vector of energies. """ return murnaghan(V, E0, B0, BP, V0) @staticmethod def birch(V: np.ndarray, E0: float, B0: float, BP: float, V0: float) -> np.ndarray: """ - From Intermetallic compounds: Principles and Practice, Vol. I: Principles + Birch equation from Intermetallic compounds: Principles and Practice, Vol. I: Principles Chapter 9 pages 195-210 by M. Mehl. B. Klein, D. Papaconstantopoulos paper downloaded from Web case where n=0 + + Args: + V (np.ndarray): Vector of volumes. + E0 (float): Energy at equilibrium volume. + B0 (float): Bulk modulus at equilibrium volume. + BP (float): Pressure derivative of bulk modulus at equilibrium volume. + V0 (float): Equilibrium volume. + + Returns: + np.ndarray: Vector of energies. """ return birch(V, E0, B0, BP, V0) @@ -474,10 +646,33 @@ def birch(V: np.ndarray, E0: float, B0: float, BP: float, V0: float) -> np.ndarr def pouriertarantola( V: np.ndarray, E0: float, B0: float, BP: float, V0: float ) -> np.ndarray: + """ + Pouriertarantola equation + + Args: + V (np.ndarray): Vector of volumes. + E0 (float): Energy at equilibrium volume. + B0 (float): Bulk modulus at equilibrium volume. + BP (float): Pressure derivative of bulk modulus at equilibrium volume. + V0 (float): Equilibrium volume. + + Returns: + np.ndarray: Vector of energies. + """ return pouriertarantola(V, E0, B0, BP, V0) def get_energy_volume_curve_fit( volume_lst: np.ndarray = None, energy_lst: np.ndarray = None -): +) -> EnergyVolumeFit: + """ + Create an instance of EnergyVolumeFit class with the given volume and energy lists. + + Args: + volume_lst (np.ndarray, optional): Vector of volumes. Defaults to None. + energy_lst (np.ndarray, optional): Vector of energies. Defaults to None. + + Returns: + EnergyVolumeFit: Instance of EnergyVolumeFit class. + """ return EnergyVolumeFit(volume_lst=volume_lst, energy_lst=energy_lst) diff --git a/atomistics/workflows/evcurve/helper.py b/atomistics/workflows/evcurve/helper.py index 8e42b7b6..0cb287ce 100644 --- a/atomistics/workflows/evcurve/helper.py +++ b/atomistics/workflows/evcurve/helper.py @@ -1,4 +1,4 @@ -from typing import List, Optional +from typing import List, Optional, Union import numpy as np from ase.atoms import Atoms @@ -11,20 +11,35 @@ def _strain_axes( structure: Atoms, volume_strain: float, axes: tuple[str, str, str] = ("x", "y", "z") ) -> Atoms: """ - Strain box along given axes to achieve given *volumetric* strain. + Strain the box along the given axes to achieve the given volumetric strain. + + Args: + structure (Atoms): The input structure. + volume_strain (float): The desired volumetric strain. + axes (tuple[str, str, str], optional): The axes along which to strain the box. Defaults to ("x", "y", "z"). + + Returns: + Atoms: The strained structure. + + Raises: + ValueError: If the number of axes is zero. - Returns a copy. """ axes = np.array([a in axes for a in ("x", "y", "z")]) num_axes = sum(axes) - # formula calculates the strain along each axis to achieve the overall volumetric strain - # beware that: (1+e)**x - 1 != e**x + if num_axes == 0: + raise ValueError("At least one axis must be selected.") + # Formula calculates the strain along each axis to achieve the overall volumetric strain. + # Beware that: (1+e)**x - 1 != e**x strains = axes * ((1 + volume_strain) ** (1.0 / num_axes) - 1) return apply_strain(structure=structure, epsilon=strains, return_box=True) def apply_strain( - structure: Atoms, epsilon: float, return_box: bool = False, mode: str = "linear" + structure: Atoms, + epsilon: Union[float, List[float], np.ndarray], + return_box: bool = False, + mode: str = "linear", ) -> Atoms: """ Apply a given strain on the structure. It applies the matrix `F` in the manner: @@ -34,14 +49,23 @@ def apply_strain( ``` Args: - epsilon (float/list/ndarray): epsilon matrix. If a single number is set, the same + structure (Atoms): The input structure. + epsilon (float/list/ndarray): The epsilon matrix. If a single number is set, the same strain is applied in each direction. If a 3-dim vector is set, it will be multiplied by a unit matrix. - return_box (bool): whether to return a box. If set to True, only the returned box will - have the desired strain and the original box will stay unchanged. - mode (str): `linear` or `lagrangian`. If `linear`, `F` is equal to the epsilon - 1. - If `lagrangian`, epsilon is given by `(F^T * F - 1) / 2`. It raises an error if - the strain is not symmetric (if the shear components are given). + return_box (bool, optional): Whether to return a box. If set to True, only the returned box will + have the desired strain and the original box will stay unchanged. Defaults to False. + mode (str, optional): The mode of strain application. Can be 'linear' or 'lagrangian'. + If 'linear', `F` is equal to the epsilon - 1. If 'lagrangian', epsilon is given by + `(F^T * F - 1) / 2`. It raises an error if the strain is not symmetric (if the shear + components are given). Defaults to 'linear'. + + Returns: + Atoms: The structure with the applied strain. + + Raises: + ValueError: If the strain value is too negative or if the strain is not symmetric in 'lagrangian' mode. + """ epsilon = np.array([epsilon]).flatten() if len(epsilon) == 3 or len(epsilon) == 1: @@ -69,17 +93,51 @@ def apply_strain( return structure_copy -def get_energy_lst(output_dict: dict, structure_dict: dict) -> list: +def get_energy_lst(output_dict: dict, structure_dict: dict) -> List[float]: + """ + Get a list of energy values from the output dictionary for each structure in the structure dictionary. + + Args: + output_dict (dict): The output dictionary containing energy values. + structure_dict (dict): The structure dictionary containing structure keys. + + Returns: + List[float]: A list of energy values. + + """ return [output_dict["energy"][k] for k in structure_dict.keys()] -def get_volume_lst(structure_dict: dict) -> list: +def get_volume_lst(structure_dict: dict) -> List[float]: + """ + Get a list of volume values from the structure dictionary. + + Args: + structure_dict (dict): The structure dictionary containing structure keys. + + Returns: + List[float]: A list of volume values. + + """ return [structure.get_volume() for structure in structure_dict.values()] def fit_ev_curve_internal( volume_lst: np.ndarray, energy_lst: np.ndarray, fit_type: str, fit_order: int ) -> EnergyVolumeFit: + """ + Fit an energy-volume curve using the given volume and energy arrays. + + Args: + volume_lst (np.ndarray): The array of volume values. + energy_lst (np.ndarray): The array of energy values. + fit_type (str): The type of fit to perform. Can be 'polynomial' or 'birch_murnaghan'. + fit_order (int): The order of the polynomial fit. Only applicable if fit_type is 'polynomial'. + + Returns: + EnergyVolumeFit: The fitted energy-volume curve. + + """ fit_module = EnergyVolumeFit( volume_lst=volume_lst, energy_lst=energy_lst, @@ -91,6 +149,19 @@ def fit_ev_curve_internal( def fit_ev_curve( volume_lst: np.ndarray, energy_lst: np.ndarray, fit_type: str, fit_order: int ) -> dict: + """ + Fit an energy-volume curve using the given volume and energy arrays. + + Args: + volume_lst (np.ndarray): The array of volume values. + energy_lst (np.ndarray): The array of energy values. + fit_type (str): The type of fit to perform. Can be 'polynomial' or 'birch_murnaghan'. + fit_order (int): The order of the polynomial fit. Only applicable if fit_type is 'polynomial'. + + Returns: + dict: The fitted energy-volume curve. + + """ return fit_ev_curve_internal( volume_lst=volume_lst, energy_lst=energy_lst, @@ -104,6 +175,21 @@ def get_strains( num_points: Optional[int] = None, strain_lst: Optional[List[float]] = None, ) -> np.ndarray: + """ + Generate an array of strain values. + + Args: + vol_range (float, optional): The range of volumetric strain. Defaults to None. + num_points (int, optional): The number of points to generate. Defaults to None. + strain_lst (List[float], optional): A list of predefined strain values. Defaults to None. + + Returns: + np.ndarray: An array of strain values. + + Raises: + ValueError: If neither strain_lst nor vol_range and num_points are defined. + + """ if strain_lst is None and (vol_range is None or num_points is None): raise ValueError( "Either the strain_lst parameter or the vol_range and the num_points parameter have to be defined." @@ -115,7 +201,7 @@ def get_strains( int(num_points), ) else: - return strain_lst + return np.array(strain_lst) def generate_structures_helper( @@ -125,6 +211,23 @@ def generate_structures_helper( strain_lst: Optional[List[float]] = None, axes: tuple[str, str, str] = ("x", "y", "z"), ) -> dict: + """ + Generate a dictionary of strained structures. + + Args: + structure (Atoms): The input structure. + vol_range (float, optional): The range of volumetric strain. Defaults to None. + num_points (int, optional): The number of points to generate. Defaults to None. + strain_lst (List[float], optional): A list of predefined strain values. Defaults to None. + axes (tuple[str, str, str], optional): The axes along which to strain the box. Defaults to ("x", "y", "z"). + + Returns: + dict: A dictionary of strained structures, where the keys are the strain values and the values are the strained structures. + + Raises: + ValueError: If neither strain_lst nor vol_range and num_points are defined. + + """ strain_lst = get_strains( vol_range=vol_range, num_points=num_points, strain_lst=strain_lst ) @@ -143,6 +246,22 @@ def analyse_structures_helper( fit_order: int = 3, output_keys: tuple = OutputEnergyVolumeCurve.keys(), ) -> dict: + """ + Analyze structures using the output and structure dictionaries. + + Args: + output_dict (dict): The output dictionary containing energy values. + structure_dict (dict): The structure dictionary containing structure keys. + fit_type (str, optional): The type of fit to perform. Can be 'polynomial' or 'birch_murnaghan'. + Defaults to 'polynomial'. + fit_order (int, optional): The order of the polynomial fit. Only applicable if fit_type is 'polynomial'. + Defaults to 3. + output_keys (tuple, optional): The keys to include in the output dictionary. Defaults to OutputEnergyVolumeCurve.keys(). + + Returns: + dict: The analyzed structures. + + """ return EnergyVolumeCurveProperties( fit_module=fit_ev_curve_internal( volume_lst=get_volume_lst(structure_dict=structure_dict), @@ -156,28 +275,76 @@ def analyse_structures_helper( class EnergyVolumeCurveProperties: - def __init__(self, fit_module): + def __init__(self, fit_module: EnergyVolumeFit) -> None: + """ + Initialize the EnergyVolumeCurveProperties class. + + Args: + fit_module (EnergyVolumeFit): The fitted energy-volume curve module. + """ self._fit_module = fit_module def volume_eq(self) -> float: + """ + Get the equilibrium volume. + + Returns: + float: The equilibrium volume. + """ return self._fit_module.fit_dict["volume_eq"] def energy_eq(self) -> float: + """ + Get the equilibrium energy. + + Returns: + float: The equilibrium energy. + """ return self._fit_module.fit_dict["energy_eq"] def bulkmodul_eq(self) -> float: + """ + Get the equilibrium bulk modulus. + + Returns: + float: The equilibrium bulk modulus. + """ return self._fit_module.fit_dict["bulkmodul_eq"] def b_prime_eq(self) -> float: + """ + Get the equilibrium derivative of bulk modulus with respect to pressure. + + Returns: + float: The equilibrium derivative of bulk modulus with respect to pressure. + """ return self._fit_module.fit_dict["b_prime_eq"] def volume(self) -> np.ndarray: + """ + Get the array of volume values. + + Returns: + np.ndarray: The array of volume values. + """ return self._fit_module.fit_dict["volume"] def energy(self) -> np.ndarray: + """ + Get the array of energy values. + + Returns: + np.ndarray: The array of energy values. + """ return self._fit_module.fit_dict["energy"] def fit_dict(self) -> dict: + """ + Get the fit dictionary. + + Returns: + dict: The fit dictionary. + """ return { k: self._fit_module.fit_dict[k] for k in ["fit_type", "least_square_error", "poly_fit", "fit_order"] @@ -185,6 +352,16 @@ def fit_dict(self) -> dict: } def to_dict(self, output_keys: tuple = OutputEnergyVolumeCurve.keys()) -> dict: + """ + Convert the EnergyVolumeCurveProperties object to a dictionary. + + Args: + output_keys (tuple, optional): The keys to include in the output dictionary. + Defaults to OutputEnergyVolumeCurve.keys(). + + Returns: + dict: The converted dictionary. + """ return OutputEnergyVolumeCurve( **{k: getattr(self, k) for k in OutputEnergyVolumeCurve.keys()} ).get(output_keys=output_keys) diff --git a/atomistics/workflows/evcurve/thermo.py b/atomistics/workflows/evcurve/thermo.py index a8e27072..f204cc24 100644 --- a/atomistics/workflows/evcurve/thermo.py +++ b/atomistics/workflows/evcurve/thermo.py @@ -6,35 +6,29 @@ import scipy.constants -class ThermoBulk(object): +class ThermoBulk: """ Class should provide all tools to compute bulk thermodynamic quantities. Central quantity is the Free Energy F(V,T). ToDo: Make it a (light weight) pyiron object (introduce a new tool rather than job object). - - Args: - project: - name: - """ eV_to_J_per_mol = scipy.constants.electron_volt * scipy.constants.Avogadro kB = 1 / scipy.constants.physical_constants["Boltzmann constant in eV/K"][0] def __init__(self): - self._volumes = None - self._temperatures = None - self._energies = None - self._entropy = None - self._pressure = None - self._num_atoms = None + self._volumes: Optional[np.ndarray] = None + self._temperatures: Optional[np.ndarray] = None + self._energies: Optional[np.ndarray] = None + self._entropy: Optional[np.ndarray] = None + self._pressure: Optional[np.ndarray] = None + self._num_atoms: Optional[int] = None self._fit_order = 3 - def copy(self): + def copy(self) -> "ThermoBulk": """ - Returns: - + A copy of the ThermoBulk object. """ cls = self.__class__ result = cls.__new__(cls) @@ -47,9 +41,7 @@ def copy(self): def _reset_energy(self): """ - - Returns: - + Reset the energy array. """ if self._volumes is not None: if self._temperatures is not None: @@ -59,9 +51,10 @@ def _reset_energy(self): @property def num_atoms(self) -> int: """ + Get the number of atoms. Returns: - + The number of atoms. """ if self._num_atoms is None: return 1 # normalize per cell if number of atoms unknown @@ -70,60 +63,60 @@ def num_atoms(self) -> int: @num_atoms.setter def num_atoms(self, num: int): """ + Set the number of atoms. Args: - num: - - Returns: - + num: The number of atoms. """ self._num_atoms = num @property - def _coeff(self): + def _coeff(self) -> np.ndarray: """ + Get the coefficients of the polynomial fit. Returns: - + The coefficients of the polynomial fit. """ return np.polyfit(self._volumes, self._energies.T, deg=self._fit_order) @property def temperatures(self) -> np.ndarray: """ + Get the temperatures. Returns: - + The temperatures. """ return self._temperatures @property def _d_temp(self) -> float: """ + Get the temperature step size. Returns: - + The temperature step size. """ return self.temperatures[1] - self.temperatures[0] @property def _d_vol(self) -> float: """ + Get the volume step size. Returns: - + The volume step size. """ return self.volumes[1] - self.volumes[0] @temperatures.setter def temperatures(self, temp_lst: np.ndarray): """ + Set the temperatures. Args: - temp_lst: - - Returns: - + temp_lst: The temperatures. """ if not hasattr(temp_lst, "__len__"): raise ValueError("Requires list as input parameter") @@ -137,21 +130,20 @@ def temperatures(self, temp_lst: np.ndarray): @property def volumes(self) -> np.ndarray: """ + Get the volumes. Returns: - + The volumes. """ return self._volumes @volumes.setter def volumes(self, volume_lst: np.ndarray): """ + Set the volumes. Args: - volume_lst: - - Returns: - + volume_lst: The volumes. """ if not hasattr(volume_lst, "__len__"): raise ValueError("Requires list as input parameter") @@ -165,9 +157,10 @@ def volumes(self, volume_lst: np.ndarray): @property def entropy(self) -> np.ndarray: """ + Get the entropy. Returns: - + The entropy. """ if self._entropy is None: self._compute_thermo() @@ -176,9 +169,10 @@ def entropy(self) -> np.ndarray: @property def pressure(self) -> np.ndarray: """ + Get the pressure. Returns: - + The pressure. """ if self._pressure is None: self._compute_thermo() @@ -187,21 +181,20 @@ def pressure(self) -> np.ndarray: @property def energies(self) -> np.ndarray: """ + Get the energies. Returns: - + The energies. """ return self._energies @energies.setter def energies(self, erg_lst: np.ndarray): """ + Set the energies. Args: - erg_lst: - - Returns: - + erg_lst: The energies. """ if np.ndim(erg_lst) == 2: self._energies = erg_lst @@ -222,14 +215,12 @@ def set_temperatures( temperature_steps: float = 50.0, ): """ + Set the temperatures. Args: - temperature_min: - temperature_max: - temperature_steps: - - Returns: - + temperature_min: The minimum temperature. + temperature_max: The maximum temperature. + temperature_steps: The number of temperature steps. """ self.temperatures = np.linspace( temperature_min, temperature_max, temperature_steps @@ -239,14 +230,12 @@ def set_volumes( self, volume_min: float, volume_max: float = None, volume_steps: int = 10 ): """ + Set the volumes. Args: - volume_min: - volume_max: - volume_steps: - - Returns: - + volume_min: The minimum volume. + volume_max: The maximum volume. + volume_steps: The number of volume steps. """ if volume_max is None: volume_max = 1.1 * volume_min @@ -254,20 +243,22 @@ def set_volumes( def meshgrid(self) -> np.ndarray: """ + Create a meshgrid of volumes and temperatures. Returns: - + The meshgrid of volumes and temperatures. """ return np.meshgrid(self.volumes, self.temperatures) def get_minimum_energy_path(self, pressure: np.ndarray = None) -> np.ndarray: """ + Get the minimum energy path. Args: - pressure: + pressure: The pressure. Returns: - + The minimum energy path. """ if pressure is not None: raise NotImplementedError() @@ -287,13 +278,14 @@ def get_free_energy( self, vol: np.ndarray, pressure: np.ndarray = None ) -> np.ndarray: """ + Get the free energy. Args: - vol: - pressure: + vol: The volume. + pressure: The pressure. Returns: - + The free energy. """ if not pressure: return np.polyval(self._coeff, vol) @@ -302,13 +294,14 @@ def get_free_energy( def interpolate_volume(self, volumes: np.ndarray, fit_order: int = None): """ + Interpolate the volumes. Args: - volumes: - fit_order: + volumes: The volumes. + fit_order: The order of the polynomial fit. Returns: - + The interpolated volume. """ if fit_order is not None: self._fit_order = fit_order @@ -319,9 +312,7 @@ def interpolate_volume(self, volumes: np.ndarray, fit_order: int = None): def _compute_thermo(self): """ - - Returns: - + Compute the thermodynamic quantities. """ self._entropy, self._pressure = np.gradient( -self.energies, self._d_temp, self._d_vol @@ -329,27 +320,30 @@ def _compute_thermo(self): def get_free_energy_p(self) -> np.ndarray: """ + Get the free energy at the minimum energy path. Returns: - + The free energy at the minimum energy path. """ coeff = np.polyfit(self._volumes, self.energies.T, deg=self._fit_order) return np.polyval(coeff, self.get_minimum_energy_path()) def get_entropy_p(self) -> np.ndarray: """ + Get the entropy at the minimum energy path. Returns: - + The entropy at the minimum energy path. """ s_coeff = np.polyfit(self._volumes, self.entropy.T, deg=self._fit_order) return np.polyval(s_coeff, self.get_minimum_energy_path()) def get_entropy_v(self) -> np.ndarray: """ + Get the entropy at constant volume. Returns: - + The entropy at constant volume. """ eq_volume = self.volumes[0] s_coeff = np.polyfit(self.volumes, self.entropy.T, deg=self._fit_order) @@ -358,9 +352,7 @@ def get_entropy_v(self) -> np.ndarray: def plot_free_energy(self): """ - - Returns: - + Plot the free energy. """ try: import pylab as plt @@ -372,9 +364,7 @@ def plot_free_energy(self): def plot_entropy(self): """ - - Returns: - + Plot the entropy. """ try: import pylab as plt @@ -396,12 +386,10 @@ def plot_entropy(self): def plot_heat_capacity(self, to_kB: bool = True): """ + Plot the heat capacity. Args: - to_kB: - - Returns: - + to_kB: Convert the heat capacity to kB units. """ try: import pylab as plt @@ -421,11 +409,9 @@ def plot_heat_capacity(self, to_kB: bool = True): plt.legend(loc="lower right") plt.xlabel("Temperature [K]") - def contour_pressure(self): + def contour_pressure(self) -> None: """ - - Returns: - + Plot the contour of pressure. """ try: import pylab as plt @@ -439,11 +425,9 @@ def contour_pressure(self): plt.xlabel("Volume [$\AA^3$]") plt.ylabel("Temperature [K]") - def contour_entropy(self): + def contour_entropy(self) -> None: """ - - Returns: - + Plot the contour of entropy. """ try: import pylab as plt @@ -459,13 +443,14 @@ def contour_entropy(self): def plot_contourf(self, ax=None, show_min_erg_path=False): """ + Plot the contourf of energies. Args: - ax: - show_min_erg_path: + ax: The matplotlib axes object. + show_min_erg_path: Whether to show the minimum energy path. Returns: - + The matplotlib axes object. """ try: import pylab as plt @@ -483,14 +468,15 @@ def plot_contourf(self, ax=None, show_min_erg_path=False): def plot_min_energy_path(self, *args, ax=None, **qwargs): """ + Plot the minimum energy path. Args: - *args: - ax: - **qwargs: + *args: Additional arguments to pass to the plot function. + ax: The matplotlib axes object. + **qwargs: Additional keyword arguments to pass to the plot function. Returns: - + The matplotlib axes object. """ try: import pylab as plt @@ -504,7 +490,17 @@ def plot_min_energy_path(self, *args, ax=None, **qwargs): return ax -def get_thermo_bulk_model(temperatures: np.ndarray, debye_model): +def get_thermo_bulk_model(temperatures: np.ndarray, debye_model) -> ThermoBulk: + """ + Get the thermo bulk model. + + Args: + temperatures: The temperatures. + debye_model: The Debye model. + + Returns: + The thermo bulk model. + """ thermo = ThermoBulk() thermo.temperatures = temperatures thermo.volumes = debye_model.volume diff --git a/atomistics/workflows/evcurve/workflow.py b/atomistics/workflows/evcurve/workflow.py index fd3e6f96..b98ef317 100644 --- a/atomistics/workflows/evcurve/workflow.py +++ b/atomistics/workflows/evcurve/workflow.py @@ -26,6 +26,18 @@ def __init__( axes: tuple[str, str, str] = ("x", "y", "z"), strains: list = None, ): + """ + Initialize the EnergyVolumeCurveWorkflow object. + + Args: + structure (Atoms): The atomic structure. + num_points (int, optional): The number of points in the energy-volume curve. Defaults to 11. + fit_type (str, optional): The type of fitting function. Defaults to "polynomial". + fit_order (int, optional): The order of the fitting function. Defaults to 3. + vol_range (float, optional): The range of volume variation. Defaults to 0.05. + axes (tuple[str, str, str], optional): The axes along which to vary the volume. Defaults to ("x", "y", "z"). + strains (list, optional): The list of strains to apply. Defaults to None. + """ self.structure = structure self.num_points = num_points self.fit_type = fit_type @@ -38,13 +50,20 @@ def __init__( @property def fit_dict(self) -> dict: + """ + Get the fit dictionary. + + Returns: + dict: The fit dictionary. + """ return self._fit_dict def generate_structures(self) -> dict: """ + Generate the structures for the energy-volume curve. Returns: - (dict) + dict: The generated structures. """ self._structure_dict = OrderedDict( generate_structures_helper( @@ -60,6 +79,16 @@ def generate_structures(self) -> dict: def analyse_structures( self, output_dict: dict, output_keys: tuple = OutputEnergyVolumeCurve.keys() ) -> dict: + """ + Analyse the structures and fit the energy-volume curve. + + Args: + output_dict (dict): The output dictionary. + output_keys (tuple, optional): The keys to include in the output. Defaults to OutputEnergyVolumeCurve.keys(). + + Returns: + dict: The fit dictionary. + """ self._fit_dict = analyse_structures_helper( output_dict=output_dict, structure_dict=self._structure_dict, @@ -78,6 +107,20 @@ def get_thermal_properties( constant_volume: bool = False, output_keys: tuple[str] = OutputThermodynamic.keys(), ) -> dict: + """ + Get the thermal properties of the system. + + Args: + t_min (float, optional): The minimum temperature. Defaults to 1.0. + t_max (float, optional): The maximum temperature. Defaults to 1500.0. + t_step (float, optional): The temperature step. Defaults to 50.0. + temperatures (np.ndarray, optional): The array of temperatures. Defaults to None. + constant_volume (bool, optional): Whether to calculate properties at constant volume. Defaults to False. + output_keys (tuple[str], optional): The keys to include in the output. Defaults to OutputThermodynamic.keys(). + + Returns: + dict: The thermal properties. + """ return get_thermal_properties( fit_dict=self.fit_dict, masses=self.structure.get_masses(), diff --git a/atomistics/workflows/interface.py b/atomistics/workflows/interface.py index 7cfe4a5b..6f26591d 100644 --- a/atomistics/workflows/interface.py +++ b/atomistics/workflows/interface.py @@ -3,7 +3,19 @@ class Workflow(ABC): def generate_structures(self) -> dict: + """ + Generate structures for the workflow. + + Returns: + A dictionary containing the generated structures. + """ raise NotImplementedError def analyse_structures(self, output_dict: dict): + """ + Analyse the generated structures. + + Args: + output_dict: A dictionary containing the generated structures. + """ raise NotImplementedError diff --git a/atomistics/workflows/langevin.py b/atomistics/workflows/langevin.py index f92751c6..76678a77 100644 --- a/atomistics/workflows/langevin.py +++ b/atomistics/workflows/langevin.py @@ -1,3 +1,5 @@ +from typing import Dict + import numpy as np from ase.atoms import Atoms from scipy.constants import physical_constants @@ -15,15 +17,17 @@ def langevin_delta_v( masses: np.ndarray, velocities: np.ndarray, damping_timescale: float = None, -) -> float: +) -> np.ndarray: """ Velocity changes due to the Langevin thermostat. + Args: temperature (float): The target temperature in K. time_step (float): The MD time step in fs. masses (numpy.ndarray): Per-atom masses in u with a shape (N_atoms, 1). damping_timescale (float): The characteristic timescale of the thermostat in fs. velocities (numpy.ndarray): Per-atom velocities in angstrom/fs. + Returns: (numpy.ndarray): Per atom accelerations to use for changing velocities. """ @@ -43,12 +47,33 @@ def langevin_delta_v( def convert_to_acceleration(forces: np.ndarray, masses: np.ndarray) -> np.ndarray: + """ + Convert forces to accelerations. + + Args: + forces (numpy.ndarray): Per-atom forces in eV/angstrom. + masses (numpy.ndarray): Per-atom masses in u. + + Returns: + (numpy.ndarray): Per-atom accelerations in angstrom/fs^2. + """ return forces * EV_TO_U_ANGSQ_PER_FSSQ / masses def get_initial_velocities( temperature: float, masses: np.ndarray, overheat_fraction: float = 2.0 ) -> np.ndarray: + """ + Generate initial velocities for the Langevin thermostat. + + Args: + temperature (float): The target temperature in K. + masses (numpy.ndarray): Per-atom masses in u with a shape (N_atoms, 1). + overheat_fraction (float): The factor to overheat the system by (default: 2.0). + + Returns: + (numpy.ndarray): Per-atom velocities in angstrom/fs. + """ vel_scale = np.sqrt(EV_TO_U_ANGSQ_PER_FSSQ * KB * temperature / masses) * np.sqrt( overheat_fraction ) @@ -61,11 +86,51 @@ def get_initial_velocities( def get_first_half_step( forces: np.ndarray, masses: np.ndarray, time_step: float, velocities: np.ndarray ) -> np.ndarray: + """ + Calculate the velocities at the first half step of the Langevin workflow. + + Args: + forces (numpy.ndarray): Per-atom forces in eV/angstrom. + masses (numpy.ndarray): Per-atom masses in u. + time_step (float): The MD time step in fs. + velocities (numpy.ndarray): Per-atom velocities in angstrom/fs. + + Returns: + (numpy.ndarray): Per-atom velocities at the first half step in angstrom/fs. + """ acceleration = convert_to_acceleration(forces, masses) return velocities + 0.5 * acceleration * time_step class LangevinWorkflow(Workflow): + """ + LangevinWorkflow class represents a workflow for performing Langevin dynamics simulation. + + Args: + structure (ase.Atoms): The atomic structure. + temperature (float, optional): The temperature in Kelvin. Default is 1000.0. + overheat_fraction (float, optional): The fraction by which to overheat the system. Default is 2.0. + damping_timescale (float, optional): The damping timescale in fs. Default is 100.0. + time_step (int, optional): The time step in fs. Default is 1. + + Attributes: + structure (ase.Atoms): The atomic structure. + temperature (float): The temperature in Kelvin. + overheat_fraction (float): The fraction by which the system is overheated. + damping_timescale (float): The damping timescale in fs. + time_step (int): The time step in fs. + masses (numpy.ndarray): The masses of the atoms. + positions (numpy.ndarray): The positions of the atoms. + velocities (numpy.ndarray): The velocities of the atoms. + gamma (numpy.ndarray): The damping coefficients of the atoms. + forces (numpy.ndarray): The forces on the atoms. + + Methods: + generate_structures: Generates the structures for the Langevin dynamics simulation. + analyse_structures: Analyzes the structures generated in the Langevin dynamics simulation. + + """ + def __init__( self, structure: Atoms, @@ -89,11 +154,12 @@ def __init__( self.gamma = self.masses / self.damping_timescale self.forces = None - def generate_structures(self) -> dict: + def generate_structures(self) -> Dict[str, Dict[int, Atoms]]: """ + Generates the structures for the Langevin dynamics simulation. Returns: - (dict) + dict: A dictionary containing the generated structures. """ if self.forces is not None: # first half step @@ -121,7 +187,16 @@ def generate_structures(self) -> dict: structure = self.structure return {"calc_forces": {0: structure}, "calc_energy": {0: structure}} - def analyse_structures(self, output_dict: dict): + def analyse_structures(self, output_dict: Dict[str, Dict[int, Atoms]]): + """ + Analyzes the structures generated in the Langevin dynamics simulation. + + Args: + output_dict (dict): A dictionary containing the output structures. + + Returns: + tuple: A tuple containing the potential energy and kinetic energy. + """ self.forces, eng_pot = output_dict["forces"][0], output_dict["energy"][0] # second half step diff --git a/atomistics/workflows/molecular_dynamics.py b/atomistics/workflows/molecular_dynamics.py index 7cc9799a..f0f0eab1 100644 --- a/atomistics/workflows/molecular_dynamics.py +++ b/atomistics/workflows/molecular_dynamics.py @@ -2,4 +2,14 @@ def calc_molecular_dynamics_thermal_expansion(structure: Atoms) -> dict: + """ + Calculate the thermal expansion of a given structure using molecular dynamics. + + Parameters: + structure (Atoms): The atomic structure for which to calculate the thermal expansion. + + Returns: + dict: A dictionary containing the calculated thermal expansion. + + """ return {"calc_molecular_dynamics_thermal_expansion": structure} diff --git a/atomistics/workflows/phonons/helper.py b/atomistics/workflows/phonons/helper.py index dfd3fc28..81d9cc61 100644 --- a/atomistics/workflows/phonons/helper.py +++ b/atomistics/workflows/phonons/helper.py @@ -1,4 +1,4 @@ -from typing import Optional +from typing import Any, Dict, Optional, Tuple import numpy as np import scipy.constants @@ -15,20 +15,40 @@ def __init__( self, phonopy_instance: Phonopy, dos_mesh: np.ndarray, - shift=None, + shift: Optional[np.ndarray] = None, is_time_reversal: bool = True, is_mesh_symmetry: bool = True, with_eigenvectors: bool = False, with_group_velocities: bool = False, is_gamma_center: bool = False, - number_of_snapshots: int = None, - sigma: float = None, - freq_min: float = None, - freq_max: float = None, - freq_pitch: float = None, + number_of_snapshots: Optional[int] = None, + sigma: Optional[float] = None, + freq_min: Optional[float] = None, + freq_max: Optional[float] = None, + freq_pitch: Optional[float] = None, use_tetrahedron_method: bool = True, npoints: int = 101, ): + """ + Initialize the PhonopyProperties object. + + Args: + phonopy_instance (Phonopy): The Phonopy instance. + dos_mesh (np.ndarray): The mesh for density of states calculations. + shift (np.ndarray, optional): The shift for mesh calculations. Defaults to None. + is_time_reversal (bool, optional): Whether to use time reversal symmetry. Defaults to True. + is_mesh_symmetry (bool, optional): Whether to use mesh symmetry. Defaults to True. + with_eigenvectors (bool, optional): Whether to calculate eigenvectors. Defaults to False. + with_group_velocities (bool, optional): Whether to calculate group velocities. Defaults to False. + is_gamma_center (bool, optional): Whether to use gamma center. Defaults to False. + number_of_snapshots (int, optional): The number of snapshots. Defaults to None. + sigma (float, optional): The sigma value for total DOS calculations. Defaults to None. + freq_min (float, optional): The minimum frequency for total DOS calculations. Defaults to None. + freq_max (float, optional): The maximum frequency for total DOS calculations. Defaults to None. + freq_pitch (float, optional): The frequency pitch for total DOS calculations. Defaults to None. + use_tetrahedron_method (bool, optional): Whether to use the tetrahedron method for DOS calculations. Defaults to True. + npoints (int, optional): The number of points for band structure calculations. Defaults to 101. + """ self._phonopy = phonopy_instance self._sigma = sigma self._freq_min = freq_min @@ -52,6 +72,9 @@ def __init__( self._force_constants = None def _calc_band_structure(self): + """ + Calculate the band structure. + """ self._phonopy.auto_band_structure( npoints=self._npoints, with_eigenvectors=self._with_eigenvectors, @@ -60,12 +83,21 @@ def _calc_band_structure(self): self._band_structure_dict = self._phonopy.get_band_structure_dict() def _calc_force_constants(self): + """ + Calculate the force constants. + """ self._phonopy.produce_force_constants( fc_calculator=None if self._number_of_snapshots is None else "alm" ) self._force_constants = self._phonopy.force_constants def mesh_dict(self) -> dict: + """ + Get the mesh dictionary. + + Returns: + dict: The mesh dictionary. + """ if self._force_constants is None: self._calc_force_constants() if self._mesh_dict is None: @@ -82,11 +114,23 @@ def mesh_dict(self) -> dict: return self._mesh_dict def band_structure_dict(self) -> dict: + """ + Get the band structure dictionary. + + Returns: + dict: The band structure dictionary. + """ if self._band_structure_dict is None: self._calc_band_structure() return self._band_structure_dict def total_dos_dict(self) -> dict: + """ + Get the total DOS dictionary. + + Returns: + dict: The total DOS dictionary. + """ if self._total_dos is None: self._phonopy.run_total_dos( sigma=self._sigma, @@ -99,11 +143,23 @@ def total_dos_dict(self) -> dict: return self._total_dos def dynamical_matrix(self) -> np.ndarray: + """ + Get the dynamical matrix. + + Returns: + np.ndarray: The dynamical matrix. + """ if self._band_structure_dict is None: self._calc_band_structure() return self._phonopy.dynamical_matrix.dynamical_matrix def force_constants(self) -> np.ndarray: + """ + Get the force constants. + + Returns: + np.ndarray: The force constants. + """ if self._force_constants is None: self._calc_force_constants() return self._force_constants @@ -111,22 +167,58 @@ def force_constants(self) -> np.ndarray: class PhonopyThermalProperties(object): def __init__(self, phonopy_instance: Phonopy): + """ + Initialize the PhonopyThermalProperties object. + + Args: + phonopy_instance (Phonopy): The Phonopy instance. + """ self._phonopy = phonopy_instance self._thermal_properties = phonopy_instance.get_thermal_properties_dict() def free_energy(self) -> np.ndarray: + """ + Get the free energy. + + Returns: + np.ndarray: The free energy. + """ return self._thermal_properties["free_energy"] * kJ_mol_to_eV def temperatures(self) -> np.ndarray: + """ + Get the temperatures. + + Returns: + np.ndarray: The temperatures. + """ return self._thermal_properties["temperatures"] def entropy(self) -> np.ndarray: + """ + Get the entropy. + + Returns: + np.ndarray: The entropy. + """ return self._thermal_properties["entropy"] def heat_capacity(self) -> np.ndarray: + """ + Get the heat capacity. + + Returns: + np.ndarray: The heat capacity. + """ return self._thermal_properties["heat_capacity"] def volumes(self) -> np.ndarray: + """ + Get the volumes. + + Returns: + np.ndarray: The volumes. + """ return np.array( [self._phonopy.unitcell.get_volume()] * len(self._thermal_properties["temperatures"]) @@ -140,14 +232,16 @@ def restore_magmoms( cell: np.ndarray, ) -> Atoms: """ + Restore the magnetic moments to the structure. + Args: - structure_with_magmoms (ase.atoms.Atoms): input structure with magnetic moments - structure (ase.atoms.Atoms): input structure without magnetic moments - interaction_range (float): - cell (np.ndarray): + structure_with_magmoms (ase.atoms.Atoms): The input structure with magnetic moments. + structure (ase.atoms.Atoms): The input structure without magnetic moments. + interaction_range (float): The interaction range. + cell (np.ndarray): The cell. Returns: - structure (ase.atoms.Atoms): output structure with magnetic moments + ase.atoms.Atoms: The output structure with magnetic moments. """ if structure_with_magmoms.has("initial_magmoms"): magmoms = structure_with_magmoms.get_initial_magnetic_moments() @@ -168,12 +262,26 @@ def restore_magmoms( def generate_structures_helper( structure: Atoms, - primitive_matrix: np.ndarray = None, + primitive_matrix: Optional[np.ndarray] = None, displacement: float = 0.01, - number_of_snapshots: int = None, + number_of_snapshots: Optional[int] = None, interaction_range: float = 10.0, factor: float = VaspToTHz, -): +) -> Tuple[Phonopy, Dict[int, Atoms]]: + """ + Generate structures with displacements for phonon calculations. + + Args: + structure (ase.atoms.Atoms): The input structure. + primitive_matrix (np.ndarray, optional): The primitive matrix. Defaults to None. + displacement (float, optional): The displacement distance. Defaults to 0.01. + number_of_snapshots (int, optional): The number of snapshots. Defaults to None. + interaction_range (float, optional): The interaction range. Defaults to 10.0. + factor (float, optional): The conversion factor. Defaults to VaspToTHz. + + Returns: + Tuple[Phonopy, Dict[int, Atoms]]: The Phonopy object and the dictionary of structures. + """ unitcell = structuretoolkit.common.atoms_to_phonopy(structure) phonopy_obj = Phonopy( unitcell=unitcell, @@ -208,9 +316,17 @@ def analyse_structures_helper( output_keys: tuple[str] = OutputPhonons.keys(), ) -> dict: """ + Analyze structures and calculate phonon properties. - Returns: + Args: + phonopy (Phonopy): The Phonopy object. + output_dict (dict): The output dictionary. + dos_mesh (int, optional): The DOS mesh. Defaults to 20. + number_of_snapshots (int, optional): The number of snapshots. Defaults to None. + output_keys (tuple[str], optional): The output keys. Defaults to OutputPhonons.keys(). + Returns: + dict: The calculated phonon properties. """ if "forces" in output_dict.keys(): output_dict = output_dict["forces"] @@ -251,18 +367,23 @@ def get_thermal_properties( output_keys: tuple[str] = OutputThermodynamic.keys(), ) -> dict: """ - Returns thermal properties at constant volume in the given temperature range. Can only be called after job + Returns thermal properties at constant volume in the given temperature range. Can only be called after job successfully ran. Args: - t_min (float): minimum sample temperature - t_max (float): maximum sample temperature - t_step (int): tempeature sample interval - temperatures (array_like, float): custom array of temperature samples, if given t_min, t_max, t_step are - ignored. + phonopy (Phonopy): The Phonopy object. + t_min (float): The minimum sample temperature. + t_max (float): The maximum sample temperature. + t_step (float): The temperature sample interval. + temperatures (np.ndarray, optional): Custom array of temperature samples. If given, t_min, t_max, and t_step are ignored. + cutoff_frequency (float, optional): The cutoff frequency. + pretend_real (bool, optional): Whether to pretend the calculation is real. + band_indices (np.ndarray, optional): The band indices. + is_projection (bool, optional): Whether to use projection. + output_keys (tuple[str], optional): The output keys. Returns: - :class:`Thermal`: thermal properties as returned by Phonopy + dict: The thermal properties as returned by Phonopy. """ phonopy.run_thermal_properties( t_step=t_step, @@ -281,6 +402,16 @@ def get_thermal_properties( def get_supercell_matrix(interaction_range: float, cell: np.ndarray) -> np.ndarray: + """ + Calculate the supercell matrix based on the interaction range and cell. + + Args: + interaction_range (float): The interaction range. + cell (np.ndarray): The cell. + + Returns: + np.ndarray: The supercell matrix. + """ supercell_range = np.ceil( interaction_range / np.array([np.linalg.norm(vec) for vec in cell]) ) @@ -289,9 +420,13 @@ def get_supercell_matrix(interaction_range: float, cell: np.ndarray) -> np.ndarr def get_hesse_matrix(force_constants: np.ndarray) -> np.ndarray: """ + Calculate the Hesse matrix from the force constants. - Returns: + Args: + force_constants (np.ndarray): The force constants. + Returns: + np.ndarray: The Hesse matrix. """ unit_conversion = ( scipy.constants.physical_constants["Hartree energy in eV"][0] @@ -309,7 +444,11 @@ def get_hesse_matrix(force_constants: np.ndarray) -> np.ndarray: def plot_dos( - dos_energies: np.ndarray, dos_total: np.ndarray, *args, axis=None, **kwargs + dos_energies: np.ndarray, + dos_total: np.ndarray, + *args, + axis: Optional[Any] = None, + **kwargs, ): """ Plot the DOS. @@ -317,6 +456,8 @@ def plot_dos( If "label" is present in `kwargs` a legend is added to the plot automatically. Args: + dos_energies (np.ndarray): The array of DOS energies. + dos_total (np.ndarray): The array of total DOS. axis (optional): matplotlib axis to use, if None create a new one *args: passed to `axis.plot` **kwargs: passed to `axis.plot` @@ -342,31 +483,32 @@ def get_band_structure( npoints: int = 101, with_eigenvectors: bool = False, with_group_velocities: bool = False, -): +) -> dict: """ Calculate band structure with automatic path through reciprocal space. Can only be called after job is finished. Args: - npoints (int, optional): Number of sample points between high symmetry points. - with_eigenvectors (boolean, optional): Calculate eigenvectors, too - with_group_velocities (boolean, optional): Calculate group velocities, too + phonopy (Phonopy): The Phonopy object. + npoints (int, optional): Number of sample points between high symmetry points. Defaults to 101. + with_eigenvectors (bool, optional): Calculate eigenvectors, too. Defaults to False. + with_group_velocities (bool, optional): Calculate group velocities, too. Defaults to False. Returns: - :class:`dict` of the results from phonopy under the following keys - - 'qpoints': list of (npoints, 3), samples paths in reciprocal space - - 'distances': list of (npoints,), distance along the paths in reciprocal space - - 'frequencies': list of (npoints, band), phonon frequencies - - 'eigenvectors': list of (npoints, band, band//3, 3), phonon eigenvectors + dict: The results from Phonopy under the following keys: + - 'qpoints': list of (npoints, 3), samples paths in reciprocal space + - 'distances': list of (npoints,), distance along the paths in reciprocal space + - 'frequencies': list of (npoints, band), phonon frequencies + - 'eigenvectors': list of (npoints, band, band//3, 3), phonon eigenvectors - 'group_velocities': list of (npoints, band), group velocities - where band is the number of bands (number of atoms * 3). Each entry is a list of arrays, and each array + where band is the number of bands (number of atoms * 3). Each entry is a list of arrays, and each array corresponds to one path between two high-symmetry points automatically picked by Phonopy and may be of - different length than other paths. As compared to the phonopy output this method also reshapes the + different length than other paths. As compared to the phonopy output this method also reshapes the eigenvectors so that they directly have the same shape as the underlying structure. Raises: - :exception:`ValueError`: method is called on a job that is not finished or aborted + ValueError: Method is called on a job that is not finished or aborted. """ phonopy.auto_band_structure( npoints, @@ -388,7 +530,7 @@ def plot_band_structure( results: dict, path_connections: list[str], labels: str, - axis=None, + axis: Optional[Any] = None, *args, label: Optional[str] = None, **kwargs, @@ -401,16 +543,17 @@ def plot_band_structure( If `label` is passed a legend is added automatically. Args: - axis (matplotlib axis, optional): plot to this axis, if not given a new one is created. - *args: passed through to matplotlib.pyplot.plot when plotting the dispersion - label (str, optional): label for dispersion line - **kwargs: passed through to matplotlib.pyplot.plot when plotting the dispersion + results (dict): The results from :meth:`.get_band_structure`. + path_connections (list[str]): List of path connections. + labels (str): Labels for the bandpath. + axis (matplotlib.axes._subplots.AxesSubplot, optional): Plot to this axis, if not given a new one is created. + *args: Passed through to matplotlib.pyplot.plot when plotting the dispersion. + label (str, optional): Label for dispersion line. + **kwargs: Passed through to matplotlib.pyplot.plot when plotting the dispersion. Returns: - matplib axis: the axis the figure has been drawn to, if axis is given the same object is returned + matplotlib.axes._subplots.AxesSubplot: The axis the figure has been drawn to, if axis is given the same object is returned. """ - # label is it's own argument because if you try to pass it via **kwargs every line would get the label giving a - # messy legend import matplotlib.pyplot as plt if axis is None: diff --git a/atomistics/workflows/phonons/workflow.py b/atomistics/workflows/phonons/workflow.py index 14a3f66f..abdc5967 100644 --- a/atomistics/workflows/phonons/workflow.py +++ b/atomistics/workflows/phonons/workflow.py @@ -43,9 +43,21 @@ def __init__( factor: float = VaspToTHz, displacement: float = 0.01, dos_mesh: int = 20, - primitive_matrix: np.ndarray = None, - number_of_snapshots: int = None, + primitive_matrix: Optional[np.ndarray] = None, + number_of_snapshots: Optional[int] = None, ): + """ + Initialize the PhonopyWorkflow. + + Args: + structure (Atoms): The structure used in the reference job. + interaction_range (float, optional): The interaction range. Defaults to 10.0. + factor (float, optional): The conversion factor. Defaults to VaspToTHz. + displacement (float, optional): The displacement. Defaults to 0.01. + dos_mesh (int, optional): The DOS mesh. Defaults to 20. + primitive_matrix (np.ndarray, optional): The primitive matrix. Defaults to None. + number_of_snapshots (int, optional): The number of snapshots. Defaults to None. + """ self._interaction_range = interaction_range self._displacement = displacement self._dos_mesh = dos_mesh @@ -57,6 +69,12 @@ def __init__( self._phonopy_dict = {} def generate_structures(self) -> dict: + """ + Generate structures. + + Returns: + dict: The generated structures. + """ self.phonopy, structure_dict = generate_structures_helper( structure=self.structure, primitive_matrix=self._primitive_matrix, @@ -71,9 +89,14 @@ def analyse_structures( self, output_dict: dict, output_keys: tuple[str] = OutputPhonons.keys() ) -> dict: """ + Analyse structures. - Returns: + Args: + output_dict (dict): The output dictionary. + output_keys (tuple[str], optional): The output keys. Defaults to OutputPhonons.keys(). + Returns: + dict: The analysed structures. """ self._phonopy_dict = analyse_structures_helper( phonopy=self.phonopy, @@ -89,26 +112,29 @@ def get_thermal_properties( t_min: float = 1.0, t_max: float = 1500.0, t_step: float = 50.0, - temperatures: np.ndarray = None, - cutoff_frequency: float = None, + temperatures: Optional[np.ndarray] = None, + cutoff_frequency: Optional[float] = None, pretend_real: bool = False, - band_indices: np.ndarray = None, + band_indices: Optional[np.ndarray] = None, is_projection: bool = False, output_keys: tuple[str] = OutputThermodynamic.keys(), ) -> dict: """ - Returns thermal properties at constant volume in the given temperature range. Can only be called after job - successfully ran. + Get thermal properties. Args: - t_min (float): minimum sample temperature - t_max (float): maximum sample temperature - t_step (int): tempeature sample interval - temperatures (array_like, float): custom array of temperature samples, if given t_min, t_max, t_step are - ignored. + t_min (float, optional): The minimum sample temperature. Defaults to 1.0. + t_max (float, optional): The maximum sample temperature. Defaults to 1500.0. + t_step (float, optional): The temperature sample interval. Defaults to 50.0. + temperatures (np.ndarray, optional): Custom array of temperature samples. Defaults to None. + cutoff_frequency (float, optional): The cutoff frequency. Defaults to None. + pretend_real (bool, optional): Whether to pretend real. Defaults to False. + band_indices (np.ndarray, optional): The band indices. Defaults to None. + is_projection (bool, optional): Whether it is a projection. Defaults to False. + output_keys (tuple[str], optional): The output keys. Defaults to OutputThermodynamic.keys(). Returns: - :class:`Thermal`: thermal properties as returned by Phonopy + dict: The thermal properties. """ return get_thermal_properties( phonopy=self.phonopy, @@ -125,9 +151,13 @@ def get_thermal_properties( def get_dynamical_matrix(self, npoints: int = 101) -> np.ndarray: """ + Get the dynamical matrix. - Returns: + Args: + npoints (int, optional): The number of points. Defaults to 101. + Returns: + np.ndarray: The dynamical matrix. """ self.phonopy.auto_band_structure( npoints=npoints, @@ -141,26 +171,25 @@ def get_dynamical_matrix(self, npoints: int = 101) -> np.ndarray: def dynamical_matrix_at_q(self, q: np.ndarray) -> np.ndarray: """ + Get the dynamical matrix at a given q. Args: - q: + q (np.ndarray): The q value. Returns: - + np.ndarray: The dynamical matrix. """ return np.real_if_close(self.phonopy.get_dynamical_matrix_at_q(q)) def write_phonopy_force_constants( - self, file_name: str = "FORCE_CONSTANTS", cwd: str = None + self, file_name: str = "FORCE_CONSTANTS", cwd: Optional[str] = None ): """ + Write the Phonopy force constants. Args: - file_name: - cwd: - - Returns: - + file_name (str, optional): The file name. Defaults to "FORCE_CONSTANTS". + cwd (str, optional): The current working directory. Defaults to None. """ if cwd is not None: file_name = posixpath.join(cwd, file_name) @@ -169,6 +198,12 @@ def write_phonopy_force_constants( ) def get_hesse_matrix(self) -> np.ndarray: + """ + Get the Hesse matrix. + + Returns: + np.ndarray: The Hesse matrix. + """ return get_hesse_matrix(force_constants=self.phonopy.force_constants) def get_band_structure( @@ -177,6 +212,17 @@ def get_band_structure( with_eigenvectors: bool = False, with_group_velocities: bool = False, ): + """ + Get the band structure. + + Args: + npoints (int, optional): The number of points. Defaults to 101. + with_eigenvectors (bool, optional): Whether to include eigenvectors. Defaults to False. + with_group_velocities (bool, optional): Whether to include group velocities. Defaults to False. + + Returns: + [type]: [description] + """ return get_band_structure( phonopy=self.phonopy, npoints=npoints, @@ -187,6 +233,16 @@ def get_band_structure( def plot_band_structure( self, axis=None, *args, label: Optional[str] = None, **kwargs ): + """ + Plot the band structure. + + Args: + axis ([type], optional): The axis. Defaults to None. + label (str, optional): The label. Defaults to None. + + Returns: + [type]: [description] + """ try: results = self.phonopy.get_band_structure_dict() except RuntimeError: @@ -206,6 +262,15 @@ def plot_band_structure( ) def plot_dos(self, *args, axis=None, **kwargs): + """ + Plot the DOS. + + Args: + axis ([type], optional): The axis. Defaults to None. + + Returns: + [type]: [description] + """ return plot_dos( dos_energies=self._phonopy_dict["total_dos_dict"]["frequency_points"], dos_total=self._phonopy_dict["total_dos_dict"]["total_dos"], diff --git a/atomistics/workflows/quasiharmonic.py b/atomistics/workflows/quasiharmonic.py index b826f872..e7f03d94 100644 --- a/atomistics/workflows/quasiharmonic.py +++ b/atomistics/workflows/quasiharmonic.py @@ -35,6 +35,16 @@ def get_free_energy_classical( frequency: np.ndarray, temperature: np.ndarray ) -> np.ndarray: + """ + Calculate the classical free energy. + + Args: + frequency (np.ndarray): Array of frequencies. + temperature (np.ndarray): Array of temperatures. + + Returns: + np.ndarray: Array of classical free energies. + """ return kb * temperature * np.log(frequency / (kb * temperature)) @@ -57,18 +67,29 @@ def get_thermal_properties( output_keys: tuple[str] = OutputThermodynamic.keys(), ) -> dict: """ - Returns thermal properties at constant volume in the given temperature range. Can only be called after job + Returns thermal properties at constant volume in the given temperature range. Can only be called after job successfully ran. Args: - t_min (float): minimum sample temperature - t_max (float): maximum sample temperature - t_step (int): temperature sample interval - temperatures (array_like, float): custom array of temperature samples, if given t_min, t_max, t_step are - ignored. + eng_internal_dict (dict): Dictionary of internal energies for different strains. + phonopy_dict (dict): Dictionary of Phonopy objects for different strains. + structure_dict (dict): Dictionary of structures for different strains. + repeat_vector (np.ndarray): Array of repeat vectors. + fit_type (str): Type of fitting for energy-volume curve. + fit_order (int): Order of fitting for energy-volume curve. + t_min (float, optional): Minimum sample temperature. Defaults to 1.0. + t_max (float, optional): Maximum sample temperature. Defaults to 1500.0. + t_step (float, optional): Temperature sample interval. Defaults to 50.0. + temperatures (np.ndarray, optional): Custom array of temperature samples. If given, t_min, t_max, t_step are ignored. + cutoff_frequency (float, optional): Cutoff frequency. Defaults to None. + pretend_real (bool, optional): Whether to pretend real. Defaults to False. + band_indices (np.ndarray, optional): Array of band indices. Defaults to None. + is_projection (bool, optional): Whether it is a projection. Defaults to False. + quantum_mechanical (bool, optional): Whether to use quantum mechanical approach. Defaults to True. + output_keys (tuple[str], optional): Output keys. Defaults to OutputThermodynamic.keys(). Returns: - :class:`Thermal`: thermal properties as returned by Phonopy + dict: Thermal properties as returned by Phonopy. """ volume_lst = np.array(get_volume_lst(structure_dict=structure_dict)) / np.prod( repeat_vector @@ -159,18 +180,23 @@ def _get_thermal_properties_quantum_mechanical( output_keys: tuple[str] = OutputThermodynamic.keys(), ) -> dict: """ - Returns thermal properties at constant volume in the given temperature range. Can only be called after job + Returns thermal properties at constant volume in the given temperature range. Can only be called after job successfully ran. Args: - t_min (float): minimum sample temperature - t_max (float): maximum sample temperature - t_step (int): temperature sample interval - temperatures (array_like, float): custom array of temperature samples, if given t_min, t_max, t_step are - ignored. + phonopy_dict (dict): Dictionary of Phonopy objects for different strains. + t_min (float, optional): Minimum sample temperature. Defaults to 1.0. + t_max (float, optional): Maximum sample temperature. Defaults to 1500.0. + t_step (float, optional): Temperature sample interval. Defaults to 50.0. + temperatures (np.ndarray, optional): Custom array of temperature samples. If given, t_min, t_max, t_step are ignored. + cutoff_frequency (float, optional): Cutoff frequency. Defaults to None. + pretend_real (bool, optional): Whether to pretend real. Defaults to False. + band_indices (np.ndarray, optional): Array of band indices. Defaults to None. + is_projection (bool, optional): Whether it is a projection. Defaults to False. + output_keys (tuple[str], optional): Output keys. Defaults to OutputThermodynamic.keys(). Returns: - :class:`Thermal`: thermal properties as returned by Phonopy + dict: Thermal properties as returned by Phonopy. """ return { strain: get_thermal_properties_phonopy( @@ -198,18 +224,19 @@ def _get_thermal_properties_classical( cutoff_frequency: float = None, ) -> dict: """ - Returns thermal properties at constant volume in the given temperature range. Can only be called after job + Returns thermal properties at constant volume in the given temperature range. Can only be called after job successfully ran. Args: - t_min (float): minimum sample temperature - t_max (float): maximum sample temperature - t_step (int): temperature sample interval - temperatures (array_like, float): custom array of temperature samples, if given t_min, t_max, t_step are - ignored. + phonopy_dict (dict): Dictionary of Phonopy objects for different strains. + t_min (float, optional): Minimum sample temperature. Defaults to 1.0. + t_max (float, optional): Maximum sample temperature. Defaults to 1500.0. + t_step (float, optional): Temperature sample interval. Defaults to 50.0. + temperatures (np.ndarray, optional): Custom array of temperature samples. If given, t_min, t_max, t_step are ignored. + cutoff_frequency (float, optional): Cutoff frequency. Defaults to None. Returns: - :class:`Thermal`: thermal properties as returned by Phonopy + dict: Thermal properties as returned by Phonopy. """ if temperatures is None: temperatures = np.arange(t_min, t_max, t_step) @@ -248,6 +275,16 @@ def __init__( volumes_lst: np.ndarray, volumes_selected_lst: np.ndarray, ): + """ + Initialize the QuasiHarmonicThermalProperties object. + + Args: + temperatures (np.ndarray): Array of temperatures. + thermal_properties_dict (dict): Dictionary of thermal properties. + strain_lst (np.ndarray): Array of strains. + volumes_lst (np.ndarray): Array of volumes. + volumes_selected_lst (np.ndarray): Array of selected volumes. + """ self._temperatures = temperatures self._thermal_properties_dict = thermal_properties_dict self._strain_lst = strain_lst @@ -255,6 +292,15 @@ def __init__( self._volumes_selected_lst = volumes_selected_lst def get_property(self, thermal_property: str) -> np.ndarray: + """ + Get the specified thermal property. + + Args: + thermal_property (str): The thermal property to retrieve. + + Returns: + np.ndarray: Array of the specified thermal property. + """ return np.array( [ np.poly1d(np.polyfit(self._volumes_lst, q_over_v, 1))(vol_opt) @@ -271,18 +317,48 @@ def get_property(self, thermal_property: str) -> np.ndarray: ) def free_energy(self) -> np.ndarray: + """ + Get the free energy. + + Returns: + np.ndarray: Array of free energies. + """ return self.get_property(thermal_property="free_energy") def temperatures(self) -> np.ndarray: + """ + Get the array of temperatures. + + Returns: + np.ndarray: Array of temperatures. + """ return self._temperatures def entropy(self) -> np.ndarray: + """ + Get the entropy. + + Returns: + np.ndarray: Array of entropies. + """ return self.get_property(thermal_property="entropy") def heat_capacity(self) -> np.ndarray: + """ + Get the heat capacity. + + Returns: + np.ndarray: Array of heat capacities. + """ return self.get_property(thermal_property="heat_capacity") def volumes(self) -> np.ndarray: + """ + Get the array of volumes. + + Returns: + np.ndarray: Array of volumes. + """ return self._volumes_selected_lst @@ -295,12 +371,27 @@ def generate_structures_helper( number_of_snapshots: int = None, interaction_range: float = 10.0, factor: float = VaspToTHz, -): - # Phonopy internally repeats structures that are "too small" - # Here we manually guarantee that all structures passed are big enough - # This provides some computational efficiency for classical calculations - # And for quantum calculations _ensures_ that force matrices and energy/atom - # get treated with the same kmesh +) -> tuple[dict, np.ndarray, dict, dict]: + """ + Generate structures for the QuasiHarmonicWorkflow. + + Args: + structure (Atoms): The input structure. + vol_range (float, optional): The range of volume strain. Defaults to None. + num_points (int, optional): The number of volume strain points. Defaults to None. + strain_lst (List[float], optional): The list of volume strains. Defaults to None. + displacement (float, optional): The displacement for finite difference calculation. Defaults to 0.01. + number_of_snapshots (int, optional): The number of snapshots for each structure. Defaults to None. + interaction_range (float, optional): The interaction range for supercell generation. Defaults to 10.0. + factor (float, optional): The conversion factor from Vasp to THz. Defaults to VaspToTHz. + + Returns: + tuple[dict, np.ndarray, dict, dict]: A tuple containing the following: + - phonopy_dict (dict): Dictionary of Phonopy objects for different strains. + - repeat_vector (np.ndarray): Array representing the repeat vector for supercell generation. + - structure_energy_dict (dict): Dictionary of structure energies for different strains. + - structure_forces_dict (dict): Dictionary of structure forces for different strains. + """ repeat_vector = np.array( np.diag( get_supercell_matrix( @@ -344,7 +435,22 @@ def analyse_structures_helper( dos_mesh: int = 20, number_of_snapshots: int = None, output_keys: tuple[str] = ("force_constants", "mesh_dict"), -): +) -> tuple[dict, dict]: + """ + Analyze structures using Phonopy. + + Args: + phonopy_dict (dict): Dictionary of Phonopy objects for different strains. + output_dict (dict): Dictionary of output data for different strains. + dos_mesh (int, optional): Density of states mesh. Defaults to 20. + number_of_snapshots (int, optional): Number of snapshots. Defaults to None. + output_keys (tuple[str], optional): Keys to include in the output dictionary. Defaults to ("force_constants", "mesh_dict"). + + Returns: + tuple[dict, dict]: A tuple containing the following: + - eng_internal_dict (dict): Dictionary of internal energies for different strains. + - phonopy_collect_dict (dict): Dictionary of Phonopy analysis results for different strains. + """ eng_internal_dict = output_dict["energy"] phonopy_collect_dict = { strain: analyse_structures_phonopy_helper( @@ -374,6 +480,22 @@ def __init__( primitive_matrix: np.ndarray = None, number_of_snapshots: int = None, ): + """ + Initialize the QuasiHarmonicWorkflow. + + Args: + structure (Atoms): The input structure. + num_points (int, optional): The number of points for the energy-volume curve. Defaults to 11. + vol_range (float, optional): The range of volume strain. Defaults to 0.05. + fit_type (str, optional): The type of fitting for the energy-volume curve. Defaults to "polynomial". + fit_order (int, optional): The order of the fitting polynomial. Defaults to 3. + interaction_range (float, optional): The interaction range for supercell generation. Defaults to 10.0. + factor (float, optional): The conversion factor from Vasp to THz. Defaults to VaspToTHz. + displacement (float, optional): The displacement for finite difference calculation. Defaults to 0.01. + dos_mesh (int, optional): The density of states mesh. Defaults to 20. + primitive_matrix (np.ndarray, optional): The primitive matrix for supercell generation. Defaults to None. + number_of_snapshots (int, optional): The number of snapshots for each structure. Defaults to None. + """ super().__init__( structure=structure, num_points=num_points, @@ -394,6 +516,12 @@ def __init__( self._repeat_vector = None def generate_structures(self) -> dict: + """ + Generate structures for the QuasiHarmonicWorkflow. + + Returns: + dict: A dictionary containing the calculated energies and forces for different strains. + """ ( self._phonopy_dict, self._repeat_vector, @@ -419,7 +547,19 @@ def analyse_structures( self, output_dict: dict, output_keys: tuple[str] = ("force_constants", "mesh_dict"), - ): + ) -> tuple[dict, dict]: + """ + Analyze structures using Phonopy. + + Args: + output_dict (dict): Dictionary of output data for different strains. + output_keys (tuple[str], optional): Keys to include in the output dictionary. Defaults to ("force_constants", "mesh_dict"). + + Returns: + tuple[dict, dict]: A tuple containing the following: + - eng_internal_dict (dict): Dictionary of internal energies for different strains. + - phonopy_collect_dict (dict): Dictionary of Phonopy analysis results for different strains. + """ self._eng_internal_dict, phonopy_collect_dict = analyse_structures_helper( phonopy_dict=self._phonopy_dict, output_dict=output_dict, @@ -441,9 +581,9 @@ def get_thermal_properties( is_projection: bool = False, quantum_mechanical: bool = True, output_keys: tuple[str] = OutputThermodynamic.keys(), - ): + ) -> dict: """ - Returns thermal properties at constant volume in the given temperature range. Can only be called after job + Returns thermal properties at constant volume in the given temperature range. Can only be called after job successfully ran. Args: @@ -452,9 +592,15 @@ def get_thermal_properties( t_step (int): temperature sample interval temperatures (array_like, float): custom array of temperature samples, if given t_min, t_max, t_step are ignored. + cutoff_frequency (float): cutoff frequency for phonon modes + pretend_real (bool): if True, the real part of the phonon frequencies is returned + band_indices (array_like, int): indices of bands to calculate + is_projection (bool): if True, the phonon DOS is projected onto the band structure + quantum_mechanical (bool): if True, the quantum mechanical partition function is used + output_keys (tuple[str]): keys to include in the output dictionary Returns: - :class:`Thermal`: thermal properties as returned by Phonopy + Thermal: thermal properties as returned by Phonopy """ if self._eng_internal_dict is None: raise ValueError( @@ -476,5 +622,5 @@ def get_thermal_properties( band_indices=band_indices, is_projection=is_projection, quantum_mechanical=quantum_mechanical, - output_keys=OutputThermodynamic.keys(), + output_keys=output_keys, ) diff --git a/atomistics/workflows/structure_optimization.py b/atomistics/workflows/structure_optimization.py index f2f4beab..a38d4ef0 100644 --- a/atomistics/workflows/structure_optimization.py +++ b/atomistics/workflows/structure_optimization.py @@ -2,8 +2,28 @@ def optimize_positions_and_volume(structure: Atoms) -> dict: + """ + Optimize the positions and volume of the given structure. + + Parameters: + structure (Atoms): The structure to be optimized. + + Returns: + dict: A dictionary containing the optimized structure. + + """ return {"optimize_positions_and_volume": structure} def optimize_positions(structure: Atoms) -> dict: + """ + Optimize the positions of the given structure. + + Parameters: + structure (Atoms): The structure to be optimized. + + Returns: + dict: A dictionary containing the optimized structure. + + """ return {"optimize_positions": structure} diff --git a/notebooks/lammps_workflows.ipynb b/notebooks/lammps_workflows.ipynb index 01705872..82abb7e3 100644 --- a/notebooks/lammps_workflows.ipynb +++ b/notebooks/lammps_workflows.ipynb @@ -1 +1 @@ -{"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.10.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat_minor":5,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# Workflows\nTo demonstrate the workflows implemented in the `atomistics` package, the [LAMMPS](https://www.lammps.org/) molecular \ndynamics simulation code is used in the following demonstrations. Still the same `workflows` can also be used with other\nsimulation codes:","metadata":{},"id":"29680e01-8658-4085-aada-eaaa9d8705be"},{"cell_type":"code","source":"from atomistics.calculators import evaluate_with_lammps, get_potential_by_name\n\npotential_dataframe = get_potential_by_name(\n potential_name='1999--Mishin-Y--Al--LAMMPS--ipr1',\n resource_path=\"static/lammps\"\n)\nresult_dict = evaluate_with_lammps(\n task_dict={},\n potential_dataframe=potential_dataframe,\n)","metadata":{"trusted":true},"execution_count":1,"outputs":[{"name":"stderr","text":"[jupyter-pyiron-2datomistics-2dloteusr2:00647] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\n","output_type":"stream"}],"id":"76ec535d-d9cb-4d68-9208-c9b0c029c402"},{"cell_type":"markdown","source":"The interatomic potential for Aluminium from Mishin named `1999--Mishin-Y--Al--LAMMPS--ipr1` is used in the evaluation\nwith [LAMMPS](https://www.lammps.org/) `evaluate_with_lammps()`. ","metadata":{},"id":"d813a092-a7d8-49e6-8914-02c1b9e105f6"},{"cell_type":"markdown","source":"## Elastic Matrix \nThe elastic constants and elastic moduli can be calculated using the `ElasticMatrixWorkflow`: ","metadata":{},"id":"70bac169-3b94-486f-afa9-efe5005f1cf0"},{"cell_type":"code","source":"from ase.build import bulk\nfrom atomistics.calculators import evaluate_with_lammps, get_potential_by_name\nfrom atomistics.workflows import ElasticMatrixWorkflow\n\npotential_dataframe = get_potential_by_name(\n potential_name='1999--Mishin-Y--Al--LAMMPS--ipr1',\n resource_path=\"static/lammps\"\n)\nworkflow = ElasticMatrixWorkflow(\n structure=bulk(\"Al\", cubic=True), \n num_of_point=5, \n eps_range=0.005, \n sqrt_eta=True, \n fit_order=2,\n)\ntask_dict = workflow.generate_structures()\nresult_dict = evaluate_with_lammps(\n task_dict=task_dict,\n potential_dataframe=potential_dataframe,\n)\nfit_dict = workflow.analyse_structures(output_dict=result_dict)\nprint(fit_dict)","metadata":{"trusted":true},"execution_count":2,"outputs":[{"name":"stdout","text":"{'elastic_matrix': array([[114.10393023, 60.51098897, 60.51098897, 0. ,\n 0. , 0. ],\n [ 60.51098897, 114.10393023, 60.51098897, 0. ,\n 0. , 0. ],\n [ 60.51098897, 60.51098897, 114.10393023, 0. ,\n 0. , 0. ],\n [ 0. , 0. , 0. , 51.23931149,\n 0. , 0. ],\n [ 0. , 0. , 0. , 0. ,\n 51.23931149, 0. ],\n [ 0. , 0. , 0. , 0. ,\n 0. , 51.23931149]]), 'elastic_matrix_inverse': array([[ 0.01385713, -0.00480204, -0.00480204, 0. , 0. ,\n 0. ],\n [-0.00480204, 0.01385713, -0.00480204, 0. , 0. ,\n 0. ],\n [-0.00480204, -0.00480204, 0.01385713, 0. , 0. ,\n 0. ],\n [ 0. , 0. , 0. , 0.01951627, 0. ,\n 0. ],\n [ 0. , 0. , 0. , 0. , 0.01951627,\n 0. ],\n [ 0. , 0. , 0. , 0. , 0. ,\n 0.01951627]]), 'bulkmodul_voigt': 78.37530272473929, 'bulkmodul_reuss': 78.37530272473931, 'bulkmodul_hill': 78.3753027247393, 'shearmodul_voigt': 41.462175146677424, 'shearmodul_reuss': 37.54162684596518, 'shearmodul_hill': 39.501900996321304, 'youngsmodul_voigt': 105.74025607889799, 'youngsmodul_reuss': 97.1183728107761, 'youngsmodul_hill': 101.46008564559224, 'poissonsratio_voigt': 0.2751412064710683, 'poissonsratio_reuss': 0.29347581564934205, 'poissonsratio_hill': 0.2842430754793411, 'AVR': 4.962480541224269, 'elastic_matrix_eigval': EigResult(eigenvalues=array([ 53.59294126, 235.12590817, 53.59294126, 51.23931149,\n 51.23931149, 51.23931149]), eigenvectors=array([[-0.81649658, 0.57735027, 0.11541902, 0. , 0. ,\n 0. ],\n [ 0.40824829, 0.57735027, -0.75771582, 0. , 0. ,\n 0. ],\n [ 0.40824829, 0.57735027, 0.6422968 , 0. , 0. ,\n 0. ],\n [ 0. , 0. , 0. , 1. , 0. ,\n 0. ],\n [ 0. , 0. , 0. , 0. , 1. ,\n 0. ],\n [ 0. , 0. , 0. , 0. , 0. ,\n 1. ]]))}\n","output_type":"stream"}],"id":"f26f2645-e1c7-4b7e-8414-e4632b1439f9"},{"cell_type":"markdown","source":"The `ElasticMatrixWorkflow` takes an `ase.atoms.Atoms` object as `structure` input as well as the number of points \n`num_of_point` for each compression direction. Depending on the symmetry of the input `structure` the number of \ncalculations required to calculate the elastic matrix changes. The compression and elongation range is defined by the\n`eps_range` parameter. Furthermore, `sqrt_eta` and `fit_order` describe how the change in energy over compression and\nelongation is fitted to calculate the resulting pressure. ","metadata":{},"id":"262aefd1-9cf9-4b35-8d94-03996b21166b"},{"cell_type":"markdown","source":"## Energy Volume Curve\nThe `EnergyVolumeCurveWorkflow` can be used to calculate the equilibrium properties: equilibrium volume, equilibrium \nenergy, equilibrium bulk modulus and the pressure derivative of the equilibrium bulk modulus. ","metadata":{},"id":"dc5356a8-0b07-4a0a-a549-9a20cf3c64cc"},{"cell_type":"code","source":"from ase.build import bulk\nfrom atomistics.calculators import evaluate_with_lammps, get_potential_by_name\nfrom atomistics.workflows import EnergyVolumeCurveWorkflow\n\npotential_dataframe = get_potential_by_name(\n potential_name='1999--Mishin-Y--Al--LAMMPS--ipr1',\n resource_path=\"static/lammps\"\n)\nworkflow = EnergyVolumeCurveWorkflow(\n structure=bulk(\"Al\", cubic=True), \n num_points=11,\n fit_type=\"polynomial\",\n fit_order=3,\n vol_range=0.05,\n axes=(\"x\", \"y\", \"z\"),\n strains=None,\n)\ntask_dict = workflow.generate_structures()\nresult_dict = evaluate_with_lammps(\n task_dict=task_dict,\n potential_dataframe=potential_dataframe,\n)\nfit_dict = workflow.analyse_structures(output_dict=result_dict)\nprint(fit_dict)","metadata":{"trusted":true},"execution_count":3,"outputs":[{"name":"stdout","text":"{'b_prime_eq': 1.279502459079921, 'bulkmodul_eq': 77.7250135953191, 'volume_eq': 66.43019853103964, 'energy_eq': -13.43996804374383, 'fit_dict': {'fit_type': 'polynomial', 'least_square_error': 3.225313797039607e-10, 'poly_fit': array([-4.17645808e-05, 1.19746500e-02, -1.03803906e+00, 1.49168639e+01]), 'fit_order': 3}, 'energy': [-13.398169481534445, -13.413389552957456, -13.425112589013958, -13.433411420804067, -13.438357630783006, -13.439999952539933, -13.438383476946305, -13.433607982916406, -13.425774537190858, -13.414961805921427, -13.401233093668836], 'volume': [63.10861874999998, 63.77291999999998, 64.43722124999998, 65.1015225, 65.76582375000004, 66.43012500000002, 67.09442624999994, 67.75872750000002, 68.42302874999999, 69.08732999999997, 69.75163125000002]}\n","output_type":"stream"}],"id":"720a7662-fdee-496d-b355-ff4881f5c633"},{"cell_type":"markdown","source":"The input parameters for the `EnergyVolumeCurveWorkflow` in addition to the `ase.atoms.Atoms` object defined \nas `structure` are: \n\n* `num_points` the number of strains to calculate energies and volumes. \n* `fit_type` the type of the fit which should be used to calculate the equilibrium properties. This can either be a \n `polynomial` fit or a specific equation of state like the Birch equation (`birch`), the Birch-Murnaghan equation \n (`birchmurnaghan`) the Murnaghan equation (`murnaghan`), the Pourier Tarnatola eqaution (`pouriertarantola`) or the\n Vinet equation (`vinet`). \n* `fit_order` for the `polynomial` fit type the order of the polynomial can be set, for the other fit types this \n parameter is ignored. \n* `vol_range` specifies the amount of compression and elongation to be applied relative to the absolute volume. \n* `axes` specifies the axes which are compressed, typically a uniform compression is applied. \n* `strains` specifies the strains directly rather than deriving them from the range of volume compression `vol_range`. \n\nBeyond calculating the equilibrium properties the `EnergyVolumeCurveWorkflow` can also be used to calculate the thermal\nproperties using the [Moruzzi, V. L. et al.](https://link.aps.org/doi/10.1103/PhysRevB.37.790) model: ","metadata":{},"id":"13c95c80-137d-49bf-8016-b3c15279fbcf"},{"cell_type":"code","source":"tp_dict = workflow.get_thermal_properties(\n t_min=1,\n t_max=1500,\n t_step=50,\n temperatures=None,\n constant_volume=False,\n)\nprint(tp_dict)","metadata":{"trusted":true},"execution_count":4,"outputs":[{"name":"stdout","text":"{'temperatures': array([ 1, 51, 101, 151, 201, 251, 301, 351, 401, 451, 501,\n 551, 601, 651, 701, 751, 801, 851, 901, 951, 1001, 1051,\n 1101, 1151, 1201, 1251, 1301, 1351, 1401, 1451, 1501]), 'volumes': array([66.48459155, 66.48492729, 66.48841343, 66.49613572, 66.50654263,\n 66.51846055, 66.53126421, 66.5446199 , 66.55833931, 66.57230985,\n 66.58646057, 66.6007448 , 66.61513063, 66.6295956 , 66.64412341,\n 66.65870199, 66.6733222 , 66.68797701, 66.70266093, 66.71736958,\n 66.73209946, 66.74684773, 66.76161205, 66.77639048, 66.79118142,\n 66.8059835 , 66.82079558, 66.83561668, 66.85044595, 66.86528267,\n 66.88012622]), 'free_energy': array([ 0.18879418, 0.18840183, 0.18352524, 0.16909367, 0.1440755 ,\n 0.10931095, 0.06593656, 0.01498215, -0.04269081, -0.1063728 ,\n -0.1754776 , -0.24951635, -0.328077 , -0.41080851, -0.49740877,\n -0.58761537, -0.68119851, -0.77795536, -0.87770572, -0.98028844,\n -1.08555864, -1.19338539, -1.3036498 , -1.41624343, -1.53106703,\n -1.6480294 , -1.76704645, -1.88804043, -2.01093923, -2.13567578,\n -2.26218757]), 'entropy': array([ 0.75685476, 5.08219062, 18.62461552, 38.05446426,\n 57.6693229 , 75.37710506, 90.99476554, 104.78762778,\n 117.06473011, 128.09164494, 138.08127289, 147.20167195,\n 155.58579193, 163.33970927, 170.54896552, 177.28330938,\n 183.60022562, 189.54757244, 195.16556897, 200.48830826,\n 205.54492122, 210.36048158, 214.95671661, 219.35257076,\n 223.56465688, 227.60762034, 231.49443548, 235.23664867,\n 238.84457908, 242.32748555, 244.0403182 ]), 'heat_capacity': array([8.65067172e-02, 9.11255799e+00, 3.33019964e+01, 5.89575081e+01,\n 7.50185080e+01, 8.36468610e+01, 8.85256734e+01, 9.15055757e+01,\n 9.34491088e+01, 9.47846079e+01, 9.57412353e+01, 9.64498999e+01,\n 9.69896043e+01, 9.74102601e+01, 9.77446368e+01, 9.80149634e+01,\n 9.82367471e+01, 9.84210719e+01, 9.85760297e+01, 9.87076399e+01,\n 9.88204550e+01, 9.89179695e+01, 9.90029019e+01, 9.90773926e+01,\n 9.91431454e+01, 9.92015302e+01, 9.92536586e+01, 9.93004401e+01,\n 9.93426247e+01, nan, nan])}\n","output_type":"stream"}],"id":"8a9a8e77-a6f0-4466-8c3d-fc1ca6ebbaf0"},{"cell_type":"markdown","source":"Or alternatively directly calculate the thermal expansion:","metadata":{},"id":"ebebb63f-3897-4028-ad23-708aaaf9cc26"},{"cell_type":"code","source":"thermal_properties_dict = workflow.get_thermal_properties( \n t_min=1, \n t_max=1500, \n t_step=50, \n constant_volume=False,\n output_keys=[\"temperatures\", \"volumes\"],\n)\ntemperatures, volumes = thermal_properties_dict[\"temperatures\"], thermal_properties_dict[\"volumes\"]","metadata":{"trusted":true},"execution_count":5,"outputs":[],"id":"6e963779-cd59-4985-9a72-9652dd1f1408"},{"cell_type":"markdown","source":"The [Moruzzi, V. L. et al.](https://link.aps.org/doi/10.1103/PhysRevB.37.790) model is a quantum mechanical approximation, so the equilibrium volume at 0K is not\nthe same as the equilibrium volume calculated by fitting the equation of state. ","metadata":{},"id":"e3f4357d-8b81-41bd-a90b-556f231b9766"},{"cell_type":"markdown","source":"## Molecular Dynamics \nJust like the structure optimization also the molecular dynamics calculation can either be implemented inside the\nsimulation code or in the `atomistics` package. The latter has the advantage that it is the same implementation for all\ndifferent simulation codes, while the prior has the advantage that it is usually faster and computationally more efficient.","metadata":{},"id":"ac4095fb-0e11-46bc-8c8d-54bc97ddfe18"},{"cell_type":"markdown","source":"### Implemented in Simulation Code \nThe [LAMMPS](https://lammps.org/) simulation code implements a wide range of different simulation workflows, this \nincludes molecular dynamics. In the `atomistics` package these can be directly accessed via the python interface. ","metadata":{},"id":"1cfe604e-1e02-4a64-a49b-eccd1b32c9fc"},{"cell_type":"markdown","source":"#### Langevin Thermostat\nThe Langevin thermostat is currently the only thermostat which is available as both a stand-alone python interface and\nan integrated interface inside the [LAMMPS](https://lammps.org/) simulation code. The latter is introduced here:","metadata":{},"id":"0e52ed95-1510-4944-a5a6-8ea9d49c906f"},{"cell_type":"code","source":"from ase.build import bulk\nfrom atomistics.calculators import (\n calc_molecular_dynamics_langevin_with_lammps, \n get_potential_by_name,\n)\n\npotential_dataframe = get_potential_by_name(\n potential_name='1999--Mishin-Y--Al--LAMMPS--ipr1',\n resource_path=\"static/lammps\"\n)\nresult_dict = calc_molecular_dynamics_langevin_with_lammps(\n structure=bulk(\"Al\", cubic=True).repeat([10, 10, 10]),\n potential_dataframe=potential_dataframe,\n Tstart=100,\n Tstop=100,\n Tdamp=0.1,\n run=100,\n thermo=10,\n timestep=0.001,\n seed=4928459,\n dist=\"gaussian\",\n output_keys=(\"positions\", \"cell\", \"forces\", \"temperature\", \"energy_pot\", \"energy_tot\", \"pressure\", \"velocities\"),\n)","metadata":{"trusted":true},"execution_count":6,"outputs":[],"id":"2e0c22ea-562b-4669-a34b-1d60a8bd1e2c"},{"cell_type":"markdown","source":"In addition to the typical LAMMPS input parameters like the atomistic structure `structure` as `ase.atoms.Atoms` object\nand the `pandas.DataFrame` for the interatomic potential `potential_dataframe` are: \n\n* `Tstart` start temperature \n* `Tstop` end temperature\n* `Tdamp` temperature damping parameter \n* `run` number of molecular dynamics steps to be executed during one temperature step\n* `thermo` refresh rate for the thermo dynamic properties, this should typically be the same as the number of molecular\n dynamics steps. \n* `timestep` time step - typically 1fs defined as `0.001`.\n* `seed` random seed for the molecular dynamics \n* `dist` initial velocity distribution \n* `lmp` Lammps library instance as `pylammpsmpi.LammpsASELibrary` object \n* `output` the output quantities which are extracted from the molecular dynamics simulation","metadata":{},"id":"e21267cb-9fb6-4c1f-8912-c281dc899323"},{"cell_type":"markdown","source":"#### Nose Hoover Thermostat\nCanonical ensemble (nvt) - volume and temperature constraints molecular dynamics:","metadata":{},"id":"be5d582d-9952-4a5b-b704-1a9acdb8b306"},{"cell_type":"code","source":"from ase.build import bulk\nfrom atomistics.calculators import (\n calc_molecular_dynamics_nvt_with_lammps, \n get_potential_by_name,\n)\n\npotential_dataframe = get_potential_by_name(\n potential_name='1999--Mishin-Y--Al--LAMMPS--ipr1',\n resource_path=\"static/lammps\"\n)\nresult_dict = calc_molecular_dynamics_nvt_with_lammps(\n structure=bulk(\"Al\", cubic=True).repeat([10, 10, 10]),\n potential_dataframe=potential_dataframe,\n Tstart=100,\n Tstop=100,\n Tdamp=0.1,\n run=100,\n thermo=10,\n timestep=0.001,\n seed=4928459,\n dist=\"gaussian\",\n output_keys=(\"positions\", \"cell\", \"forces\", \"temperature\", \"energy_pot\", \"energy_tot\", \"pressure\"),\n)","metadata":{"trusted":true},"execution_count":7,"outputs":[],"id":"9717893e-4dea-46f7-9317-bb314bc5bbdd"},{"cell_type":"markdown","source":"In addition to the typical LAMMPS input parameters like the atomistic structure `structure` as `ase.atoms.Atoms` object\nand the `pandas.DataFrame` for the interatomic potential `potential_dataframe` are: \n\n* `Tstart` start temperature \n* `Tstop` end temperature\n* `Tdamp` temperature damping parameter \n* `run` number of molecular dynamics steps to be executed during one temperature step\n* `thermo` refresh rate for the thermo dynamic properties, this should typically be the same as the number of molecular\n dynamics steps. \n* `timestep` time step - typically 1fs defined as `0.001`.\n* `seed` random seed for the molecular dynamics \n* `dist` initial velocity distribution \n* `lmp` Lammps library instance as `pylammpsmpi.LammpsASELibrary` object \n* `output` the output quantities which are extracted from the molecular dynamics simulation","metadata":{},"id":"72797e59-72f5-4d32-b7cf-5ad806b91909"},{"cell_type":"markdown","source":"Isothermal-isobaric ensemble (npt) - pressure and temperature constraints molecular dynamics:","metadata":{},"id":"8356bf7f-bf7d-40e0-8f3c-02309cd74d92"},{"cell_type":"code","source":"from ase.build import bulk\nfrom atomistics.calculators import (\n calc_molecular_dynamics_npt_with_lammps, \n get_potential_by_name,\n)\n\npotential_dataframe = get_potential_by_name(\n potential_name='1999--Mishin-Y--Al--LAMMPS--ipr1',\n resource_path=\"static/lammps\"\n)\nresult_dict = calc_molecular_dynamics_npt_with_lammps(\n structure=bulk(\"Al\", cubic=True).repeat([10, 10, 10]),\n potential_dataframe=potential_dataframe,\n Tstart=100,\n Tstop=100,\n Tdamp=0.1,\n run=100,\n thermo=100,\n timestep=0.001,\n Pstart=0.0,\n Pstop=0.0,\n Pdamp=1.0,\n seed=4928459,\n dist=\"gaussian\",\n output_keys=(\"positions\", \"cell\", \"forces\", \"temperature\", \"energy_pot\", \"energy_tot\", \"pressure\"),\n)","metadata":{"trusted":true},"execution_count":8,"outputs":[],"id":"1327d554-0df1-45fa-b35c-ec4955ce756f"},{"cell_type":"markdown","source":"The input parameters for the isothermal-isobaric ensemble (npt) are the same as for the canonical ensemble (nvt) plus:\n\n* `Pstart` start pressure \n* `Pstop` end pressure \n* `Pdamp` pressure damping parameter ","metadata":{},"id":"e6aeb0fe-ace6-4e55-a3c2-06be85aaf05e"},{"cell_type":"markdown","source":"Isenthalpic ensemble (nph) - pressure and helmholtz-energy constraints molecular dynamics:","metadata":{},"id":"04f5854b-d803-4023-af04-55efc22ee1e3"},{"cell_type":"code","source":"from ase.build import bulk\nfrom atomistics.calculators import (\n calc_molecular_dynamics_nph_with_lammps, \n get_potential_by_name,\n)\n\npotential_dataframe = get_potential_by_name(\n potential_name='1999--Mishin-Y--Al--LAMMPS--ipr1',\n resource_path=\"static/lammps\"\n)\nresult_dict = calc_molecular_dynamics_nph_with_lammps(\n structure=bulk(\"Al\", cubic=True).repeat([10, 10, 10]),\n potential_dataframe=potential_dataframe,\n run=100,\n thermo=100,\n timestep=0.001,\n Tstart=100,\n Pstart=0.0,\n Pstop=0.0,\n Pdamp=1.0,\n seed=4928459,\n dist=\"gaussian\",\n output_keys=(\"positions\", \"cell\", \"forces\", \"temperature\", \"energy_pot\", \"energy_tot\", \"pressure\"),\n)","metadata":{"trusted":true},"execution_count":9,"outputs":[],"id":"5f64f60c-89ce-423b-a487-ea96780b1c20"},{"cell_type":"markdown","source":"#### Thermal Expansion\nOne example of a molecular dynamics calculation with the LAMMPS simulation code is the calculation of the thermal \nexpansion: ","metadata":{},"id":"3b4c6022-e1d5-467b-ac1b-d3617670fe67"},{"cell_type":"code","source":"from ase.build import bulk\nfrom atomistics.calculators import (\n calc_molecular_dynamics_thermal_expansion_with_lammps, \n evaluate_with_lammps, \n get_potential_by_name,\n)\n\npotential_dataframe = get_potential_by_name(\n potential_name='1999--Mishin-Y--Al--LAMMPS--ipr1',\n resource_path=\"static/lammps\"\n)\ntemperatures_md, volumes_md = calc_molecular_dynamics_thermal_expansion_with_lammps(\n structure=bulk(\"Al\", cubic=True).repeat([10, 10, 10]),\n potential_dataframe=potential_dataframe,\n Tstart=100,\n Tstop=1000,\n Tstep=100,\n Tdamp=0.1,\n run=100,\n thermo=100,\n timestep=0.001,\n Pstart=0.0,\n Pstop=0.0,\n Pdamp=1.0,\n seed=4928459,\n dist=\"gaussian\",\n lmp=None,\n)","metadata":{"trusted":true},"execution_count":10,"outputs":[{"name":"stderr","text":"100%|██████████| 10/10 [00:05<00:00, 1.69it/s]\n","output_type":"stream"}],"id":"d3e4bda7-9aa4-4a82-8c51-9606b0e77f75"},{"cell_type":"markdown","source":"In addition to the typical LAMMPS input parameters like the atomistic structure `structure` as `ase.atoms.Atoms` object\nand the `pandas.DataFrame` for the interatomic potential `potential_dataframe` are: \n\n* `Tstart` start temperature \n* `Tstop` end temperature \n* `Tstep` temperature step \n* `Tdamp` temperature damping parameter \n* `run` number of molecular dynamics steps to be executed during one temperature step\n* `thermo` refresh rate for the thermo dynamic properties, this should typically be the same as the number of molecular\n dynamics steps. \n* `timestep` time step - typically 1fs defined as `0.001`.\n* `Pstart` start pressure \n* `Pstop` end pressure \n* `Pdamp` pressure damping parameter \n* `seed` random seed for the molecular dynamics \n* `dist` initial velocity distribution \n* `lmp` Lammps library instance as `pylammpsmpi.LammpsASELibrary` object \n\nThese input parameters are based on the LAMMPS fix `nvt/npt`, you can read more about the specific implementation on the\n[LAMMPS website](https://docs.lammps.org/fix_nh.html). \n","metadata":{},"id":"08c20c91-9e7c-4770-b01f-1765064797dd"},{"cell_type":"markdown","source":"#### Phonons from Molecular Dynamics\nThe softening of the phonon modes is calculated for Silicon using the [Tersoff interatomic potential](https://journals.aps.org/prb/abstract/10.1103/PhysRevB.38.9902) \nwhich is available via the [NIST potentials repository](https://www.ctcms.nist.gov/potentials/entry/1988--Tersoff-J--Si-c/). \nSilicon is chosen based on its diamond crystal lattice which requires less calculation than the face centered cubic (fcc)\ncrystal of Aluminium. The simulation workflow consists of three distinct steps:\n\n* Starting with the optimization of the equilibrium structure. \n* Followed by the calculation of the 0K phonon spectrum. \n* Finally, the finite temperature phonon spectrum is calculated using molecular dynamics. \n\nThe finite temperature phonon spectrum is calculated using the [DynaPhoPy](https://abelcarreras.github.io/DynaPhoPy/)\npackage, which is integrated inside the `atomistics` package. As a prerequisite the dependencies, imported and the bulk \nsilicon diamond structure is created and the Tersoff interatomic potential is loaded: ","metadata":{},"id":"e57a6740-8546-4763-a9b3-140f0cae1543"},{"cell_type":"code","source":"from ase.build import bulk\nfrom atomistics.calculators import (\n calc_molecular_dynamics_phonons_with_lammps,\n evaluate_with_lammps, \n)\nfrom atomistics.workflows import optimize_positions_and_volume, PhonopyWorkflow\nfrom dynaphopy import Quasiparticle\nimport pandas\nfrom phonopy.units import VaspToTHz\nimport spglib\n\nstructure_bulk = bulk(\"Si\", cubic=True)\npotential_dataframe = get_potential_by_name(\n potential_name='1988--Tersoff-J--Si-c--LAMMPS--ipr1',\n resource_path=\"static/lammps\"\n)","metadata":{"trusted":true},"execution_count":11,"outputs":[],"id":"793b72ff-6b0b-46d8-a121-2c93ea6e7a32"},{"cell_type":"markdown","source":"The first step is optimizing the Silicon diamond structure to match the lattice specifications implemented in the Tersoff \ninteratomic potential:","metadata":{},"id":"743dce70-a4f0-4063-b353-51d26def4005"},{"cell_type":"code","source":"task_dict = optimize_positions_and_volume(structure=structure_bulk)\nresult_dict = evaluate_with_lammps(\n task_dict=task_dict,\n potential_dataframe=potential_dataframe,\n)\nstructure_ase = result_dict[\"structure_with_optimized_positions_and_volume\"]","metadata":{"trusted":true},"execution_count":12,"outputs":[],"id":"e96fb9d9-da43-49cb-8383-5eb93eea9dc1"},{"cell_type":"markdown","source":"As a second step the 0K phonons are calculated using the `PhonopyWorkflow` which is explained in more detail below in \nthe section on [Phonons](https://atomistics.readthedocs.io/en/latest/workflows.html#phonons). ","metadata":{},"id":"c54c83b5-e710-405f-846b-e270267f8646"},{"cell_type":"code","source":"cell = (structure_ase.cell.array, structure_ase.get_scaled_positions(), structure_ase.numbers)\nprimitive_matrix = spglib.standardize_cell(cell=cell, to_primitive=True)[0] / structure_ase.get_volume() ** (1/3)\nworkflow = PhonopyWorkflow(\n structure=structure_ase,\n interaction_range=10,\n factor=VaspToTHz,\n displacement=0.01,\n dos_mesh=20,\n primitive_matrix=primitive_matrix,\n number_of_snapshots=None,\n)\ntask_dict = workflow.generate_structures()\nresult_dict = evaluate_with_lammps(\n task_dict=task_dict,\n potential_dataframe=potential_dataframe,\n)\nworkflow.analyse_structures(output_dict=result_dict)","metadata":{"trusted":true},"execution_count":13,"outputs":[{"execution_count":13,"output_type":"execute_result","data":{"text/plain":"{'mesh_dict': {'qpoints': array([[0.025, 0.025, 0.025],\n [0.075, 0.025, 0.025],\n [0.125, 0.025, 0.025],\n ...,\n [0.525, 0.525, 0.425],\n [0.475, 0.475, 0.475],\n [0.525, 0.475, 0.475]]),\n 'weights': array([ 2, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,\n 6, 6, 6, 6, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,\n 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,\n 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,\n 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,\n 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,\n 12, 12, 12, 6, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,\n 6, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12,\n 12, 12, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12, 12, 12, 12,\n 12, 12, 6, 12, 12, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12,\n 12, 12, 6, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12, 6, 12,\n 12, 12, 12, 6, 12, 12, 12, 6, 12, 12, 6, 12, 6, 2, 6, 6, 6,\n 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 12, 12,\n 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 6, 12, 12,\n 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12,\n 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12,\n 12, 12, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12, 12, 12, 12,\n 12, 12, 12, 12, 6, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 6,\n 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12, 12,\n 12, 12, 12, 6, 12, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12,\n 12, 6, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 6, 12, 12, 12, 6,\n 12, 12, 6, 12, 6, 2, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,\n 6, 6, 6, 6, 6, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,\n 12, 12, 6, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 6,\n 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12,\n 12, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12, 12, 12, 12, 12,\n 12, 6, 12, 12, 12, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12,\n 12, 12, 12, 6, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12, 6,\n 12, 12, 12, 12, 6, 12, 12, 12, 6, 12, 12, 6, 12, 6, 2, 6, 6,\n 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 12, 12, 12, 12, 12,\n 12, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12, 12, 12, 12, 12,\n 12, 12, 6, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12,\n 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12, 12, 12, 12, 6, 12,\n 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12,\n 6, 12, 12, 12, 6, 12, 12, 6, 12, 6, 2, 6, 6, 6, 6, 6, 6,\n 6, 6, 6, 6, 6, 6, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 6,\n 12, 12, 12, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12, 12, 12,\n 12, 6, 12, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12, 12, 6,\n 12, 12, 12, 12, 6, 12, 12, 12, 6, 12, 12, 6, 12, 6, 2, 6, 6,\n 6, 6, 6, 6, 6, 6, 6, 6, 12, 12, 12, 12, 12, 12, 12, 12, 6,\n 12, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12, 12, 6, 12, 12,\n 12, 12, 12, 6, 12, 12, 12, 6, 12, 12, 6, 12, 6, 2, 6, 6, 6,\n 6, 6, 6, 6, 6, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12,\n 6, 12, 12, 12, 12, 6, 12, 12, 6, 12, 6, 2, 6, 6, 6, 6, 6,\n 6, 12, 12, 12, 12, 6, 12, 12, 12, 6, 12, 6, 2, 6, 6, 6, 6,\n 12, 12, 6, 2, 6]),\n 'frequencies': array([[ 0.35167322, 0.35167322, 0.71941397, 16.05999349, 16.06435417,\n 16.06435417],\n [ 0.7810313 , 1.04550359, 1.76442286, 16.01908158, 16.04238401,\n 16.0474694 ],\n [ 1.43010566, 1.69629248, 3.13109956, 15.91248433, 15.99513531,\n 16.00361669],\n ...,\n [ 4.89126604, 5.30105813, 11.18409265, 13.02666668, 15.38025565,\n 15.46187631],\n [ 4.65215064, 4.65215064, 11.21184039, 13.22967807, 15.43087981,\n 15.43087981],\n [ 4.71432047, 4.84620075, 11.26998698, 13.12729988, 15.41640899,\n 15.43613968]]),\n 'eigenvectors': None,\n 'group_velocities': None},\n 'band_structure_dict': {'qpoints': [array([[0. , 0. , 0. ],\n [0.00531915, 0. , 0.00531915],\n [0.0106383 , 0. , 0.0106383 ],\n [0.01595745, 0. , 0.01595745],\n [0.0212766 , 0. , 0.0212766 ],\n [0.02659574, 0. , 0.02659574],\n [0.03191489, 0. , 0.03191489],\n [0.03723404, 0. , 0.03723404],\n [0.04255319, 0. , 0.04255319],\n [0.04787234, 0. , 0.04787234],\n [0.05319149, 0. , 0.05319149],\n [0.05851064, 0. , 0.05851064],\n [0.06382979, 0. , 0.06382979],\n [0.06914894, 0. , 0.06914894],\n [0.07446809, 0. , 0.07446809],\n [0.07978723, 0. , 0.07978723],\n [0.08510638, 0. , 0.08510638],\n [0.09042553, 0. , 0.09042553],\n [0.09574468, 0. , 0.09574468],\n [0.10106383, 0. , 0.10106383],\n [0.10638298, 0. , 0.10638298],\n [0.11170213, 0. , 0.11170213],\n [0.11702128, 0. , 0.11702128],\n [0.12234043, 0. , 0.12234043],\n [0.12765957, 0. , 0.12765957],\n [0.13297872, 0. , 0.13297872],\n [0.13829787, 0. , 0.13829787],\n [0.14361702, 0. , 0.14361702],\n [0.14893617, 0. , 0.14893617],\n [0.15425532, 0. , 0.15425532],\n [0.15957447, 0. , 0.15957447],\n [0.16489362, 0. , 0.16489362],\n [0.17021277, 0. , 0.17021277],\n [0.17553191, 0. , 0.17553191],\n [0.18085106, 0. , 0.18085106],\n [0.18617021, 0. , 0.18617021],\n [0.19148936, 0. , 0.19148936],\n [0.19680851, 0. , 0.19680851],\n [0.20212766, 0. , 0.20212766],\n [0.20744681, 0. , 0.20744681],\n [0.21276596, 0. , 0.21276596],\n [0.21808511, 0. , 0.21808511],\n [0.22340426, 0. , 0.22340426],\n [0.2287234 , 0. , 0.2287234 ],\n [0.23404255, 0. , 0.23404255],\n [0.2393617 , 0. , 0.2393617 ],\n [0.24468085, 0. , 0.24468085],\n [0.25 , 0. , 0.25 ],\n [0.25531915, 0. , 0.25531915],\n [0.2606383 , 0. , 0.2606383 ],\n [0.26595745, 0. , 0.26595745],\n [0.2712766 , 0. , 0.2712766 ],\n [0.27659574, 0. , 0.27659574],\n [0.28191489, 0. , 0.28191489],\n [0.28723404, 0. , 0.28723404],\n [0.29255319, 0. , 0.29255319],\n [0.29787234, 0. , 0.29787234],\n [0.30319149, 0. , 0.30319149],\n [0.30851064, 0. , 0.30851064],\n [0.31382979, 0. , 0.31382979],\n [0.31914894, 0. , 0.31914894],\n [0.32446809, 0. , 0.32446809],\n [0.32978723, 0. , 0.32978723],\n [0.33510638, 0. , 0.33510638],\n [0.34042553, 0. , 0.34042553],\n [0.34574468, 0. , 0.34574468],\n [0.35106383, 0. , 0.35106383],\n [0.35638298, 0. , 0.35638298],\n [0.36170213, 0. , 0.36170213],\n [0.36702128, 0. , 0.36702128],\n [0.37234043, 0. , 0.37234043],\n [0.37765957, 0. , 0.37765957],\n [0.38297872, 0. , 0.38297872],\n [0.38829787, 0. , 0.38829787],\n [0.39361702, 0. , 0.39361702],\n [0.39893617, 0. , 0.39893617],\n [0.40425532, 0. , 0.40425532],\n [0.40957447, 0. , 0.40957447],\n [0.41489362, 0. , 0.41489362],\n [0.42021277, 0. , 0.42021277],\n [0.42553191, 0. , 0.42553191],\n [0.43085106, 0. , 0.43085106],\n [0.43617021, 0. , 0.43617021],\n [0.44148936, 0. , 0.44148936],\n [0.44680851, 0. , 0.44680851],\n [0.45212766, 0. , 0.45212766],\n [0.45744681, 0. , 0.45744681],\n [0.46276596, 0. , 0.46276596],\n [0.46808511, 0. , 0.46808511],\n [0.47340426, 0. , 0.47340426],\n [0.4787234 , 0. , 0.4787234 ],\n [0.48404255, 0. , 0.48404255],\n [0.4893617 , 0. , 0.4893617 ],\n [0.49468085, 0. , 0.49468085],\n [0.5 , 0. , 0.5 ]]),\n array([[0.5 , 0. , 0.5 ],\n [0.50378788, 0.00757576, 0.50378788],\n [0.50757576, 0.01515152, 0.50757576],\n [0.51136364, 0.02272727, 0.51136364],\n [0.51515152, 0.03030303, 0.51515152],\n [0.51893939, 0.03787879, 0.51893939],\n [0.52272727, 0.04545455, 0.52272727],\n [0.52651515, 0.0530303 , 0.52651515],\n [0.53030303, 0.06060606, 0.53030303],\n [0.53409091, 0.06818182, 0.53409091],\n [0.53787879, 0.07575758, 0.53787879],\n [0.54166667, 0.08333333, 0.54166667],\n [0.54545455, 0.09090909, 0.54545455],\n [0.54924242, 0.09848485, 0.54924242],\n [0.5530303 , 0.10606061, 0.5530303 ],\n [0.55681818, 0.11363636, 0.55681818],\n [0.56060606, 0.12121212, 0.56060606],\n [0.56439394, 0.12878788, 0.56439394],\n [0.56818182, 0.13636364, 0.56818182],\n [0.5719697 , 0.14393939, 0.5719697 ],\n [0.57575758, 0.15151515, 0.57575758],\n [0.57954545, 0.15909091, 0.57954545],\n [0.58333333, 0.16666667, 0.58333333],\n [0.58712121, 0.17424242, 0.58712121],\n [0.59090909, 0.18181818, 0.59090909],\n [0.59469697, 0.18939394, 0.59469697],\n [0.59848485, 0.1969697 , 0.59848485],\n [0.60227273, 0.20454545, 0.60227273],\n [0.60606061, 0.21212121, 0.60606061],\n [0.60984848, 0.21969697, 0.60984848],\n [0.61363636, 0.22727273, 0.61363636],\n [0.61742424, 0.23484848, 0.61742424],\n [0.62121212, 0.24242424, 0.62121212],\n [0.625 , 0.25 , 0.625 ]]),\n array([[0.375 , 0.375 , 0.75 ],\n [0.37125, 0.37125, 0.7425 ],\n [0.3675 , 0.3675 , 0.735 ],\n [0.36375, 0.36375, 0.7275 ],\n [0.36 , 0.36 , 0.72 ],\n [0.35625, 0.35625, 0.7125 ],\n [0.3525 , 0.3525 , 0.705 ],\n [0.34875, 0.34875, 0.6975 ],\n [0.345 , 0.345 , 0.69 ],\n [0.34125, 0.34125, 0.6825 ],\n [0.3375 , 0.3375 , 0.675 ],\n [0.33375, 0.33375, 0.6675 ],\n [0.33 , 0.33 , 0.66 ],\n [0.32625, 0.32625, 0.6525 ],\n [0.3225 , 0.3225 , 0.645 ],\n [0.31875, 0.31875, 0.6375 ],\n [0.315 , 0.315 , 0.63 ],\n [0.31125, 0.31125, 0.6225 ],\n [0.3075 , 0.3075 , 0.615 ],\n [0.30375, 0.30375, 0.6075 ],\n [0.3 , 0.3 , 0.6 ],\n [0.29625, 0.29625, 0.5925 ],\n [0.2925 , 0.2925 , 0.585 ],\n [0.28875, 0.28875, 0.5775 ],\n [0.285 , 0.285 , 0.57 ],\n [0.28125, 0.28125, 0.5625 ],\n [0.2775 , 0.2775 , 0.555 ],\n [0.27375, 0.27375, 0.5475 ],\n [0.27 , 0.27 , 0.54 ],\n [0.26625, 0.26625, 0.5325 ],\n [0.2625 , 0.2625 , 0.525 ],\n [0.25875, 0.25875, 0.5175 ],\n [0.255 , 0.255 , 0.51 ],\n [0.25125, 0.25125, 0.5025 ],\n [0.2475 , 0.2475 , 0.495 ],\n [0.24375, 0.24375, 0.4875 ],\n [0.24 , 0.24 , 0.48 ],\n [0.23625, 0.23625, 0.4725 ],\n [0.2325 , 0.2325 , 0.465 ],\n [0.22875, 0.22875, 0.4575 ],\n [0.225 , 0.225 , 0.45 ],\n [0.22125, 0.22125, 0.4425 ],\n [0.2175 , 0.2175 , 0.435 ],\n [0.21375, 0.21375, 0.4275 ],\n [0.21 , 0.21 , 0.42 ],\n [0.20625, 0.20625, 0.4125 ],\n [0.2025 , 0.2025 , 0.405 ],\n [0.19875, 0.19875, 0.3975 ],\n [0.195 , 0.195 , 0.39 ],\n [0.19125, 0.19125, 0.3825 ],\n [0.1875 , 0.1875 , 0.375 ],\n [0.18375, 0.18375, 0.3675 ],\n [0.18 , 0.18 , 0.36 ],\n [0.17625, 0.17625, 0.3525 ],\n [0.1725 , 0.1725 , 0.345 ],\n [0.16875, 0.16875, 0.3375 ],\n [0.165 , 0.165 , 0.33 ],\n [0.16125, 0.16125, 0.3225 ],\n [0.1575 , 0.1575 , 0.315 ],\n [0.15375, 0.15375, 0.3075 ],\n [0.15 , 0.15 , 0.3 ],\n [0.14625, 0.14625, 0.2925 ],\n [0.1425 , 0.1425 , 0.285 ],\n [0.13875, 0.13875, 0.2775 ],\n [0.135 , 0.135 , 0.27 ],\n [0.13125, 0.13125, 0.2625 ],\n [0.1275 , 0.1275 , 0.255 ],\n [0.12375, 0.12375, 0.2475 ],\n [0.12 , 0.12 , 0.24 ],\n [0.11625, 0.11625, 0.2325 ],\n [0.1125 , 0.1125 , 0.225 ],\n [0.10875, 0.10875, 0.2175 ],\n [0.105 , 0.105 , 0.21 ],\n [0.10125, 0.10125, 0.2025 ],\n [0.0975 , 0.0975 , 0.195 ],\n [0.09375, 0.09375, 0.1875 ],\n [0.09 , 0.09 , 0.18 ],\n [0.08625, 0.08625, 0.1725 ],\n [0.0825 , 0.0825 , 0.165 ],\n [0.07875, 0.07875, 0.1575 ],\n [0.075 , 0.075 , 0.15 ],\n [0.07125, 0.07125, 0.1425 ],\n [0.0675 , 0.0675 , 0.135 ],\n [0.06375, 0.06375, 0.1275 ],\n [0.06 , 0.06 , 0.12 ],\n [0.05625, 0.05625, 0.1125 ],\n [0.0525 , 0.0525 , 0.105 ],\n [0.04875, 0.04875, 0.0975 ],\n [0.045 , 0.045 , 0.09 ],\n [0.04125, 0.04125, 0.0825 ],\n [0.0375 , 0.0375 , 0.075 ],\n [0.03375, 0.03375, 0.0675 ],\n [0.03 , 0.03 , 0.06 ],\n [0.02625, 0.02625, 0.0525 ],\n [0.0225 , 0.0225 , 0.045 ],\n [0.01875, 0.01875, 0.0375 ],\n [0.015 , 0.015 , 0.03 ],\n [0.01125, 0.01125, 0.0225 ],\n [0.0075 , 0.0075 , 0.015 ],\n [0.00375, 0.00375, 0.0075 ],\n [0. , 0. , 0. ]]),\n array([[0. , 0. , 0. ],\n [0.00617284, 0.00617284, 0.00617284],\n [0.01234568, 0.01234568, 0.01234568],\n [0.01851852, 0.01851852, 0.01851852],\n [0.02469136, 0.02469136, 0.02469136],\n [0.0308642 , 0.0308642 , 0.0308642 ],\n [0.03703704, 0.03703704, 0.03703704],\n [0.04320988, 0.04320988, 0.04320988],\n [0.04938272, 0.04938272, 0.04938272],\n [0.05555556, 0.05555556, 0.05555556],\n [0.0617284 , 0.0617284 , 0.0617284 ],\n [0.06790123, 0.06790123, 0.06790123],\n [0.07407407, 0.07407407, 0.07407407],\n [0.08024691, 0.08024691, 0.08024691],\n [0.08641975, 0.08641975, 0.08641975],\n [0.09259259, 0.09259259, 0.09259259],\n [0.09876543, 0.09876543, 0.09876543],\n [0.10493827, 0.10493827, 0.10493827],\n [0.11111111, 0.11111111, 0.11111111],\n [0.11728395, 0.11728395, 0.11728395],\n [0.12345679, 0.12345679, 0.12345679],\n [0.12962963, 0.12962963, 0.12962963],\n [0.13580247, 0.13580247, 0.13580247],\n [0.14197531, 0.14197531, 0.14197531],\n [0.14814815, 0.14814815, 0.14814815],\n [0.15432099, 0.15432099, 0.15432099],\n [0.16049383, 0.16049383, 0.16049383],\n [0.16666667, 0.16666667, 0.16666667],\n [0.17283951, 0.17283951, 0.17283951],\n [0.17901235, 0.17901235, 0.17901235],\n [0.18518519, 0.18518519, 0.18518519],\n [0.19135802, 0.19135802, 0.19135802],\n [0.19753086, 0.19753086, 0.19753086],\n [0.2037037 , 0.2037037 , 0.2037037 ],\n [0.20987654, 0.20987654, 0.20987654],\n [0.21604938, 0.21604938, 0.21604938],\n [0.22222222, 0.22222222, 0.22222222],\n [0.22839506, 0.22839506, 0.22839506],\n [0.2345679 , 0.2345679 , 0.2345679 ],\n [0.24074074, 0.24074074, 0.24074074],\n [0.24691358, 0.24691358, 0.24691358],\n [0.25308642, 0.25308642, 0.25308642],\n [0.25925926, 0.25925926, 0.25925926],\n [0.2654321 , 0.2654321 , 0.2654321 ],\n [0.27160494, 0.27160494, 0.27160494],\n [0.27777778, 0.27777778, 0.27777778],\n [0.28395062, 0.28395062, 0.28395062],\n [0.29012346, 0.29012346, 0.29012346],\n [0.2962963 , 0.2962963 , 0.2962963 ],\n [0.30246914, 0.30246914, 0.30246914],\n [0.30864198, 0.30864198, 0.30864198],\n [0.31481481, 0.31481481, 0.31481481],\n [0.32098765, 0.32098765, 0.32098765],\n [0.32716049, 0.32716049, 0.32716049],\n [0.33333333, 0.33333333, 0.33333333],\n [0.33950617, 0.33950617, 0.33950617],\n [0.34567901, 0.34567901, 0.34567901],\n [0.35185185, 0.35185185, 0.35185185],\n [0.35802469, 0.35802469, 0.35802469],\n [0.36419753, 0.36419753, 0.36419753],\n [0.37037037, 0.37037037, 0.37037037],\n [0.37654321, 0.37654321, 0.37654321],\n [0.38271605, 0.38271605, 0.38271605],\n [0.38888889, 0.38888889, 0.38888889],\n [0.39506173, 0.39506173, 0.39506173],\n [0.40123457, 0.40123457, 0.40123457],\n [0.40740741, 0.40740741, 0.40740741],\n [0.41358025, 0.41358025, 0.41358025],\n [0.41975309, 0.41975309, 0.41975309],\n [0.42592593, 0.42592593, 0.42592593],\n [0.43209877, 0.43209877, 0.43209877],\n [0.4382716 , 0.4382716 , 0.4382716 ],\n [0.44444444, 0.44444444, 0.44444444],\n [0.45061728, 0.45061728, 0.45061728],\n [0.45679012, 0.45679012, 0.45679012],\n [0.46296296, 0.46296296, 0.46296296],\n [0.4691358 , 0.4691358 , 0.4691358 ],\n [0.47530864, 0.47530864, 0.47530864],\n [0.48148148, 0.48148148, 0.48148148],\n [0.48765432, 0.48765432, 0.48765432],\n [0.49382716, 0.49382716, 0.49382716],\n [0.5 , 0.5 , 0.5 ]]),\n array([[0.5 , 0.5 , 0.5 ],\n [0.5 , 0.49621212, 0.50378788],\n [0.5 , 0.49242424, 0.50757576],\n [0.5 , 0.48863636, 0.51136364],\n [0.5 , 0.48484848, 0.51515152],\n [0.5 , 0.48106061, 0.51893939],\n [0.5 , 0.47727273, 0.52272727],\n [0.5 , 0.47348485, 0.52651515],\n [0.5 , 0.46969697, 0.53030303],\n [0.5 , 0.46590909, 0.53409091],\n [0.5 , 0.46212121, 0.53787879],\n [0.5 , 0.45833333, 0.54166667],\n [0.5 , 0.45454545, 0.54545455],\n [0.5 , 0.45075758, 0.54924242],\n [0.5 , 0.4469697 , 0.5530303 ],\n [0.5 , 0.44318182, 0.55681818],\n [0.5 , 0.43939394, 0.56060606],\n [0.5 , 0.43560606, 0.56439394],\n [0.5 , 0.43181818, 0.56818182],\n [0.5 , 0.4280303 , 0.5719697 ],\n [0.5 , 0.42424242, 0.57575758],\n [0.5 , 0.42045455, 0.57954545],\n [0.5 , 0.41666667, 0.58333333],\n [0.5 , 0.41287879, 0.58712121],\n [0.5 , 0.40909091, 0.59090909],\n [0.5 , 0.40530303, 0.59469697],\n [0.5 , 0.40151515, 0.59848485],\n [0.5 , 0.39772727, 0.60227273],\n [0.5 , 0.39393939, 0.60606061],\n [0.5 , 0.39015152, 0.60984848],\n [0.5 , 0.38636364, 0.61363636],\n [0.5 , 0.38257576, 0.61742424],\n [0.5 , 0.37878788, 0.62121212],\n [0.5 , 0.375 , 0.625 ],\n [0.5 , 0.37121212, 0.62878788],\n [0.5 , 0.36742424, 0.63257576],\n [0.5 , 0.36363636, 0.63636364],\n [0.5 , 0.35984848, 0.64015152],\n [0.5 , 0.35606061, 0.64393939],\n [0.5 , 0.35227273, 0.64772727],\n [0.5 , 0.34848485, 0.65151515],\n [0.5 , 0.34469697, 0.65530303],\n [0.5 , 0.34090909, 0.65909091],\n [0.5 , 0.33712121, 0.66287879],\n [0.5 , 0.33333333, 0.66666667],\n [0.5 , 0.32954545, 0.67045455],\n [0.5 , 0.32575758, 0.67424242],\n [0.5 , 0.3219697 , 0.6780303 ],\n [0.5 , 0.31818182, 0.68181818],\n [0.5 , 0.31439394, 0.68560606],\n [0.5 , 0.31060606, 0.68939394],\n [0.5 , 0.30681818, 0.69318182],\n [0.5 , 0.3030303 , 0.6969697 ],\n [0.5 , 0.29924242, 0.70075758],\n [0.5 , 0.29545455, 0.70454545],\n [0.5 , 0.29166667, 0.70833333],\n [0.5 , 0.28787879, 0.71212121],\n [0.5 , 0.28409091, 0.71590909],\n [0.5 , 0.28030303, 0.71969697],\n [0.5 , 0.27651515, 0.72348485],\n [0.5 , 0.27272727, 0.72727273],\n [0.5 , 0.26893939, 0.73106061],\n [0.5 , 0.26515152, 0.73484848],\n [0.5 , 0.26136364, 0.73863636],\n [0.5 , 0.25757576, 0.74242424],\n [0.5 , 0.25378788, 0.74621212],\n [0.5 , 0.25 , 0.75 ]]),\n array([[0.5 , 0.25 , 0.75 ],\n [0.5 , 0.24468085, 0.74468085],\n [0.5 , 0.2393617 , 0.7393617 ],\n [0.5 , 0.23404255, 0.73404255],\n [0.5 , 0.2287234 , 0.7287234 ],\n [0.5 , 0.22340426, 0.72340426],\n [0.5 , 0.21808511, 0.71808511],\n [0.5 , 0.21276596, 0.71276596],\n [0.5 , 0.20744681, 0.70744681],\n [0.5 , 0.20212766, 0.70212766],\n [0.5 , 0.19680851, 0.69680851],\n [0.5 , 0.19148936, 0.69148936],\n [0.5 , 0.18617021, 0.68617021],\n [0.5 , 0.18085106, 0.68085106],\n [0.5 , 0.17553191, 0.67553191],\n [0.5 , 0.17021277, 0.67021277],\n [0.5 , 0.16489362, 0.66489362],\n [0.5 , 0.15957447, 0.65957447],\n [0.5 , 0.15425532, 0.65425532],\n [0.5 , 0.14893617, 0.64893617],\n [0.5 , 0.14361702, 0.64361702],\n [0.5 , 0.13829787, 0.63829787],\n [0.5 , 0.13297872, 0.63297872],\n [0.5 , 0.12765957, 0.62765957],\n [0.5 , 0.12234043, 0.62234043],\n [0.5 , 0.11702128, 0.61702128],\n [0.5 , 0.11170213, 0.61170213],\n [0.5 , 0.10638298, 0.60638298],\n [0.5 , 0.10106383, 0.60106383],\n [0.5 , 0.09574468, 0.59574468],\n [0.5 , 0.09042553, 0.59042553],\n [0.5 , 0.08510638, 0.58510638],\n [0.5 , 0.07978723, 0.57978723],\n [0.5 , 0.07446809, 0.57446809],\n [0.5 , 0.06914894, 0.56914894],\n [0.5 , 0.06382979, 0.56382979],\n [0.5 , 0.05851064, 0.55851064],\n [0.5 , 0.05319149, 0.55319149],\n [0.5 , 0.04787234, 0.54787234],\n [0.5 , 0.04255319, 0.54255319],\n [0.5 , 0.03723404, 0.53723404],\n [0.5 , 0.03191489, 0.53191489],\n [0.5 , 0.02659574, 0.52659574],\n [0.5 , 0.0212766 , 0.5212766 ],\n [0.5 , 0.01595745, 0.51595745],\n [0.5 , 0.0106383 , 0.5106383 ],\n [0.5 , 0.00531915, 0.50531915],\n [0.5 , 0. , 0.5 ]])],\n 'distances': [array([0. , 0.00195846, 0.00391691, 0.00587537, 0.00783383,\n 0.00979229, 0.01175074, 0.0137092 , 0.01566766, 0.01762611,\n 0.01958457, 0.02154303, 0.02350149, 0.02545994, 0.0274184 ,\n 0.02937686, 0.03133531, 0.03329377, 0.03525223, 0.03721068,\n 0.03916914, 0.0411276 , 0.04308606, 0.04504451, 0.04700297,\n 0.04896143, 0.05091988, 0.05287834, 0.0548368 , 0.05679526,\n 0.05875371, 0.06071217, 0.06267063, 0.06462908, 0.06658754,\n 0.068546 , 0.07050446, 0.07246291, 0.07442137, 0.07637983,\n 0.07833828, 0.08029674, 0.0822552 , 0.08421366, 0.08617211,\n 0.08813057, 0.09008903, 0.09204748, 0.09400594, 0.0959644 ,\n 0.09792285, 0.09988131, 0.10183977, 0.10379823, 0.10575668,\n 0.10771514, 0.1096736 , 0.11163205, 0.11359051, 0.11554897,\n 0.11750743, 0.11946588, 0.12142434, 0.1233828 , 0.12534125,\n 0.12729971, 0.12925817, 0.13121663, 0.13317508, 0.13513354,\n 0.137092 , 0.13905045, 0.14100891, 0.14296737, 0.14492583,\n 0.14688428, 0.14884274, 0.1508012 , 0.15275965, 0.15471811,\n 0.15667657, 0.15863503, 0.16059348, 0.16255194, 0.1645104 ,\n 0.16646885, 0.16842731, 0.17038577, 0.17234422, 0.17430268,\n 0.17626114, 0.1782196 , 0.18017805, 0.18213651, 0.18409497]),\n array([0.18409497, 0.18606731, 0.18803966, 0.190012 , 0.19198435,\n 0.19395669, 0.19592904, 0.19790139, 0.19987373, 0.20184608,\n 0.20381842, 0.20579077, 0.20776311, 0.20973546, 0.2117078 ,\n 0.21368015, 0.21565249, 0.21762484, 0.21959719, 0.22156953,\n 0.22354188, 0.22551422, 0.22748657, 0.22945891, 0.23143126,\n 0.2334036 , 0.23537595, 0.23734829, 0.23932064, 0.24129299,\n 0.24326533, 0.24523768, 0.24721002, 0.24918237]),\n array([0.24918237, 0.25113499, 0.25308761, 0.25504023, 0.25699286,\n 0.25894548, 0.2608981 , 0.26285072, 0.26480334, 0.26675597,\n 0.26870859, 0.27066121, 0.27261383, 0.27456645, 0.27651908,\n 0.2784717 , 0.28042432, 0.28237694, 0.28432956, 0.28628219,\n 0.28823481, 0.29018743, 0.29214005, 0.29409267, 0.2960453 ,\n 0.29799792, 0.29995054, 0.30190316, 0.30385578, 0.30580841,\n 0.30776103, 0.30971365, 0.31166627, 0.31361889, 0.31557152,\n 0.31752414, 0.31947676, 0.32142938, 0.323382 , 0.32533463,\n 0.32728725, 0.32923987, 0.33119249, 0.33314511, 0.33509774,\n 0.33705036, 0.33900298, 0.3409556 , 0.34290822, 0.34486085,\n 0.34681347, 0.34876609, 0.35071871, 0.35267133, 0.35462396,\n 0.35657658, 0.3585292 , 0.36048182, 0.36243444, 0.36438707,\n 0.36633969, 0.36829231, 0.37024493, 0.37219755, 0.37415018,\n 0.3761028 , 0.37805542, 0.38000804, 0.38196066, 0.38391329,\n 0.38586591, 0.38781853, 0.38977115, 0.39172377, 0.3936764 ,\n 0.39562902, 0.39758164, 0.39953426, 0.40148688, 0.40343951,\n 0.40539213, 0.40734475, 0.40929737, 0.41124999, 0.41320262,\n 0.41515524, 0.41710786, 0.41906048, 0.4210131 , 0.42296573,\n 0.42491835, 0.42687097, 0.42882359, 0.43077621, 0.43272884,\n 0.43468146, 0.43663408, 0.4385867 , 0.44053932, 0.44249194,\n 0.44444457]),\n array([0.44444457, 0.44641285, 0.44838113, 0.45034942, 0.4523177 ,\n 0.45428598, 0.45625426, 0.45822255, 0.46019083, 0.46215911,\n 0.4641274 , 0.46609568, 0.46806396, 0.47003225, 0.47200053,\n 0.47396881, 0.47593709, 0.47790538, 0.47987366, 0.48184194,\n 0.48381023, 0.48577851, 0.48774679, 0.48971507, 0.49168336,\n 0.49365164, 0.49561992, 0.49758821, 0.49955649, 0.50152477,\n 0.50349306, 0.50546134, 0.50742962, 0.5093979 , 0.51136619,\n 0.51333447, 0.51530275, 0.51727104, 0.51923932, 0.5212076 ,\n 0.52317588, 0.52514417, 0.52711245, 0.52908073, 0.53104902,\n 0.5330173 , 0.53498558, 0.53695387, 0.53892215, 0.54089043,\n 0.54285871, 0.544827 , 0.54679528, 0.54876356, 0.55073185,\n 0.55270013, 0.55466841, 0.55663669, 0.55860498, 0.56057326,\n 0.56254154, 0.56450983, 0.56647811, 0.56844639, 0.57041468,\n 0.57238296, 0.57435124, 0.57631952, 0.57828781, 0.58025609,\n 0.58222437, 0.58419266, 0.58616094, 0.58812922, 0.5900975 ,\n 0.59206579, 0.59403407, 0.59600235, 0.59797064, 0.59993892,\n 0.6019072 , 0.60387549]),\n array([0.60387549, 0.60584783, 0.60782018, 0.60979252, 0.61176487,\n 0.61373721, 0.61570956, 0.6176819 , 0.61965425, 0.62162659,\n 0.62359894, 0.62557129, 0.62754363, 0.62951598, 0.63148832,\n 0.63346067, 0.63543301, 0.63740536, 0.6393777 , 0.64135005,\n 0.64332239, 0.64529474, 0.64726709, 0.64923943, 0.65121178,\n 0.65318412, 0.65515647, 0.65712881, 0.65910116, 0.6610735 ,\n 0.66304585, 0.66501819, 0.66699054, 0.66896289, 0.67093523,\n 0.67290758, 0.67487992, 0.67685227, 0.67882461, 0.68079696,\n 0.6827693 , 0.68474165, 0.68671399, 0.68868634, 0.69065869,\n 0.69263103, 0.69460338, 0.69657572, 0.69854807, 0.70052041,\n 0.70249276, 0.7044651 , 0.70643745, 0.70840979, 0.71038214,\n 0.71235449, 0.71432683, 0.71629918, 0.71827152, 0.72024387,\n 0.72221621, 0.72418856, 0.7261609 , 0.72813325, 0.73010559,\n 0.73207794, 0.73405029]),\n array([0.73405029, 0.73600874, 0.7379672 , 0.73992566, 0.74188411,\n 0.74384257, 0.74580103, 0.74775948, 0.74971794, 0.7516764 ,\n 0.75363486, 0.75559331, 0.75755177, 0.75951023, 0.76146868,\n 0.76342714, 0.7653856 , 0.76734406, 0.76930251, 0.77126097,\n 0.77321943, 0.77517788, 0.77713634, 0.7790948 , 0.78105326,\n 0.78301171, 0.78497017, 0.78692863, 0.78888708, 0.79084554,\n 0.792804 , 0.79476246, 0.79672091, 0.79867937, 0.80063783,\n 0.80259628, 0.80455474, 0.8065132 , 0.80847166, 0.81043011,\n 0.81238857, 0.81434703, 0.81630548, 0.81826394, 0.8202224 ,\n 0.82218085, 0.82413931, 0.82609777])],\n 'frequencies': [array([[2.18701057e-06, 2.19691522e-06, 2.20369934e-06, 1.60678991e+01,\n 1.60678991e+01, 1.60678991e+01],\n [1.06625590e-01, 1.06625590e-01, 1.53239098e-01, 1.60675081e+01,\n 1.60676418e+01, 1.60676418e+01],\n [2.13231909e-01, 2.13231909e-01, 3.06460038e-01, 1.60663351e+01,\n 1.60668701e+01, 1.60668701e+01],\n [3.19799678e-01, 3.19799678e-01, 4.59644667e-01, 1.60643797e+01,\n 1.60655844e+01, 1.60655844e+01],\n [4.26309607e-01, 4.26309607e-01, 6.12774843e-01, 1.60616416e+01,\n 1.60637853e+01, 1.60637853e+01],\n [5.32742383e-01, 5.32742383e-01, 7.65832440e-01, 1.60581201e+01,\n 1.60614737e+01, 1.60614737e+01],\n [6.39078667e-01, 6.39078667e-01, 9.18799354e-01, 1.60538144e+01,\n 1.60586506e+01, 1.60586506e+01],\n [7.45299086e-01, 7.45299086e-01, 1.07165751e+00, 1.60487235e+01,\n 1.60553175e+01, 1.60553175e+01],\n [8.51384225e-01, 8.51384225e-01, 1.22438885e+00, 1.60428463e+01,\n 1.60514759e+01, 1.60514759e+01],\n [9.57314622e-01, 9.57314622e-01, 1.37697538e+00, 1.60361814e+01,\n 1.60471277e+01, 1.60471277e+01],\n [1.06307076e+00, 1.06307076e+00, 1.52939913e+00, 1.60287272e+01,\n 1.60422751e+01, 1.60422751e+01],\n [1.16863306e+00, 1.16863306e+00, 1.68164218e+00, 1.60204822e+01,\n 1.60369205e+01, 1.60369205e+01],\n [1.27398186e+00, 1.27398186e+00, 1.83368666e+00, 1.60114444e+01,\n 1.60310665e+01, 1.60310665e+01],\n [1.37909745e+00, 1.37909745e+00, 1.98551477e+00, 1.60016119e+01,\n 1.60247161e+01, 1.60247161e+01],\n [1.48396001e+00, 1.48396001e+00, 2.13710877e+00, 1.59909824e+01,\n 1.60178724e+01, 1.60178724e+01],\n [1.58854964e+00, 1.58854964e+00, 2.28845098e+00, 1.59795536e+01,\n 1.60105390e+01, 1.60105390e+01],\n [1.69284632e+00, 1.69284632e+00, 2.43952381e+00, 1.59673229e+01,\n 1.60027197e+01, 1.60027197e+01],\n [1.79682995e+00, 1.79682995e+00, 2.59030972e+00, 1.59542878e+01,\n 1.59944185e+01, 1.59944185e+01],\n [1.90048030e+00, 1.90048030e+00, 2.74079128e+00, 1.59404453e+01,\n 1.59856398e+01, 1.59856398e+01],\n [2.00377700e+00, 2.00377700e+00, 2.89095116e+00, 1.59257926e+01,\n 1.59763882e+01, 1.59763882e+01],\n [2.10669956e+00, 2.10669956e+00, 3.04077208e+00, 1.59103264e+01,\n 1.59666687e+01, 1.59666687e+01],\n [2.20922736e+00, 2.20922736e+00, 3.19023691e+00, 1.58940435e+01,\n 1.59564867e+01, 1.59564867e+01],\n [2.31133960e+00, 2.31133960e+00, 3.33932858e+00, 1.58769405e+01,\n 1.59458477e+01, 1.59458477e+01],\n [2.41301534e+00, 2.41301534e+00, 3.48803016e+00, 1.58590139e+01,\n 1.59347578e+01, 1.59347578e+01],\n [2.51423346e+00, 2.51423346e+00, 3.63632482e+00, 1.58402599e+01,\n 1.59232232e+01, 1.59232232e+01],\n [2.61497266e+00, 2.61497266e+00, 3.78419585e+00, 1.58206748e+01,\n 1.59112506e+01, 1.59112506e+01],\n [2.71521144e+00, 2.71521144e+00, 3.93162667e+00, 1.58002545e+01,\n 1.58988470e+01, 1.58988470e+01],\n [2.81492813e+00, 2.81492813e+00, 4.07860083e+00, 1.57789952e+01,\n 1.58860198e+01, 1.58860198e+01],\n [2.91410081e+00, 2.91410081e+00, 4.22510199e+00, 1.57568925e+01,\n 1.58727768e+01, 1.58727768e+01],\n [3.01270737e+00, 3.01270737e+00, 4.37111398e+00, 1.57339422e+01,\n 1.58591262e+01, 1.58591262e+01],\n [3.11072544e+00, 3.11072544e+00, 4.51662075e+00, 1.57101400e+01,\n 1.58450764e+01, 1.58450764e+01],\n [3.20813243e+00, 3.20813243e+00, 4.66160641e+00, 1.56854812e+01,\n 1.58306367e+01, 1.58306367e+01],\n [3.30490548e+00, 3.30490548e+00, 4.80605520e+00, 1.56599614e+01,\n 1.58158162e+01, 1.58158162e+01],\n [3.40102147e+00, 3.40102147e+00, 4.94995155e+00, 1.56335759e+01,\n 1.58006249e+01, 1.58006249e+01],\n [3.49645700e+00, 3.49645700e+00, 5.09328001e+00, 1.56063199e+01,\n 1.57850732e+01, 1.57850732e+01],\n [3.59118839e+00, 3.59118839e+00, 5.23602533e+00, 1.55781885e+01,\n 1.57691716e+01, 1.57691716e+01],\n [3.68519163e+00, 3.68519163e+00, 5.37817241e+00, 1.55491768e+01,\n 1.57529316e+01, 1.57529316e+01],\n [3.77844244e+00, 3.77844244e+00, 5.51970631e+00, 1.55192800e+01,\n 1.57363649e+01, 1.57363649e+01],\n [3.87091618e+00, 3.87091618e+00, 5.66061230e+00, 1.54884928e+01,\n 1.57194835e+01, 1.57194835e+01],\n [3.96258789e+00, 3.96258789e+00, 5.80087581e+00, 1.54568102e+01,\n 1.57023004e+01, 1.57023004e+01],\n [4.05343226e+00, 4.05343226e+00, 5.94048245e+00, 1.54242271e+01,\n 1.56848288e+01, 1.56848288e+01],\n [4.14342363e+00, 4.14342363e+00, 6.07941802e+00, 1.53907382e+01,\n 1.56670824e+01, 1.56670824e+01],\n [4.23253595e+00, 4.23253595e+00, 6.21766853e+00, 1.53563383e+01,\n 1.56490757e+01, 1.56490757e+01],\n [4.32074280e+00, 4.32074280e+00, 6.35522016e+00, 1.53210221e+01,\n 1.56308235e+01, 1.56308235e+01],\n [4.40801738e+00, 4.40801738e+00, 6.49205931e+00, 1.52847843e+01,\n 1.56123413e+01, 1.56123413e+01],\n [4.49433246e+00, 4.49433246e+00, 6.62817257e+00, 1.52476196e+01,\n 1.55936453e+01, 1.55936453e+01],\n [4.57966044e+00, 4.57966044e+00, 6.76354674e+00, 1.52095227e+01,\n 1.55747520e+01, 1.55747520e+01],\n [4.66397327e+00, 4.66397327e+00, 6.89816884e+00, 1.51704881e+01,\n 1.55556788e+01, 1.55556788e+01],\n [4.74724248e+00, 4.74724248e+00, 7.03202608e+00, 1.51305106e+01,\n 1.55364436e+01, 1.55364436e+01],\n [4.82943918e+00, 4.82943918e+00, 7.16510590e+00, 1.50895847e+01,\n 1.55170649e+01, 1.55170649e+01],\n [4.91053403e+00, 4.91053403e+00, 7.29739597e+00, 1.50477052e+01,\n 1.54975617e+01, 1.54975617e+01],\n [4.99049726e+00, 4.99049726e+00, 7.42888415e+00, 1.50048667e+01,\n 1.54779540e+01, 1.54779540e+01],\n [5.06929865e+00, 5.06929865e+00, 7.55955856e+00, 1.49610639e+01,\n 1.54582620e+01, 1.54582620e+01],\n [5.14690753e+00, 5.14690753e+00, 7.68940753e+00, 1.49162915e+01,\n 1.54385069e+01, 1.54385069e+01],\n [5.22329282e+00, 5.22329282e+00, 7.81841962e+00, 1.48705443e+01,\n 1.54187103e+01, 1.54187103e+01],\n [5.29842297e+00, 5.29842297e+00, 7.94658362e+00, 1.48238171e+01,\n 1.53988946e+01, 1.53988946e+01],\n [5.37226600e+00, 5.37226600e+00, 8.07388856e+00, 1.47761047e+01,\n 1.53790827e+01, 1.53790827e+01],\n [5.44478953e+00, 5.44478953e+00, 8.20032372e+00, 1.47274020e+01,\n 1.53592983e+01, 1.53592983e+01],\n [5.51596076e+00, 5.51596076e+00, 8.32587860e+00, 1.46777039e+01,\n 1.53395654e+01, 1.53395654e+01],\n [5.58574651e+00, 5.58574651e+00, 8.45054294e+00, 1.46270056e+01,\n 1.53199089e+01, 1.53199089e+01],\n [5.65411319e+00, 5.65411319e+00, 8.57430676e+00, 1.45753020e+01,\n 1.53003542e+01, 1.53003542e+01],\n [5.72102691e+00, 5.72102691e+00, 8.69716027e+00, 1.45225884e+01,\n 1.52809272e+01, 1.52809272e+01],\n [5.78645342e+00, 5.78645342e+00, 8.81909398e+00, 1.44688599e+01,\n 1.52616544e+01, 1.52616544e+01],\n [5.85035821e+00, 5.85035821e+00, 8.94009862e+00, 1.44141121e+01,\n 1.52425628e+01, 1.52425628e+01],\n [5.91270648e+00, 5.91270648e+00, 9.06016518e+00, 1.43583401e+01,\n 1.52236797e+01, 1.52236797e+01],\n [5.97346325e+00, 5.97346325e+00, 9.17928491e+00, 1.43015397e+01,\n 1.52050331e+01, 1.52050331e+01],\n [6.03259336e+00, 6.03259336e+00, 9.29744928e+00, 1.42437065e+01,\n 1.51866511e+01, 1.51866511e+01],\n [6.09006155e+00, 6.09006155e+00, 9.41465007e+00, 1.41848361e+01,\n 1.51685625e+01, 1.51685625e+01],\n [6.14583250e+00, 6.14583250e+00, 9.53087927e+00, 1.41249246e+01,\n 1.51507959e+01, 1.51507959e+01],\n [6.19987090e+00, 6.19987090e+00, 9.64612916e+00, 1.40639678e+01,\n 1.51333805e+01, 1.51333805e+01],\n [6.25214152e+00, 6.25214152e+00, 9.76039224e+00, 1.40019619e+01,\n 1.51163455e+01, 1.51163455e+01],\n [6.30260929e+00, 6.30260929e+00, 9.87366131e+00, 1.39389032e+01,\n 1.50997202e+01, 1.50997202e+01],\n [6.35123937e+00, 6.35123937e+00, 9.98592942e+00, 1.38747880e+01,\n 1.50835337e+01, 1.50835337e+01],\n [6.39799726e+00, 6.39799726e+00, 1.00971898e+01, 1.38096130e+01,\n 1.50678154e+01, 1.50678154e+01],\n [6.44284885e+00, 6.44284885e+00, 1.02074362e+01, 1.37433748e+01,\n 1.50525941e+01, 1.50525941e+01],\n [6.48576059e+00, 6.48576059e+00, 1.03166622e+01, 1.36760703e+01,\n 1.50378985e+01, 1.50378985e+01],\n [6.52669951e+00, 6.52669951e+00, 1.04248621e+01, 1.36076964e+01,\n 1.50237569e+01, 1.50237569e+01],\n [6.56563338e+00, 6.56563338e+00, 1.05320301e+01, 1.35382504e+01,\n 1.50101972e+01, 1.50101972e+01],\n [6.60253081e+00, 6.60253081e+00, 1.06381608e+01, 1.34677297e+01,\n 1.49972465e+01, 1.49972465e+01],\n [6.63736135e+00, 6.63736135e+00, 1.07432492e+01, 1.33961316e+01,\n 1.49849313e+01, 1.49849313e+01],\n [6.67009563e+00, 6.67009563e+00, 1.08472903e+01, 1.33234540e+01,\n 1.49732773e+01, 1.49732773e+01],\n [6.70070547e+00, 6.70070547e+00, 1.09502796e+01, 1.32496947e+01,\n 1.49623091e+01, 1.49623091e+01],\n [6.72916397e+00, 6.72916397e+00, 1.10522127e+01, 1.31748518e+01,\n 1.49520504e+01, 1.49520504e+01],\n [6.75544567e+00, 6.75544567e+00, 1.11530855e+01, 1.30989236e+01,\n 1.49425237e+01, 1.49425237e+01],\n [6.77952663e+00, 6.77952663e+00, 1.12528941e+01, 1.30219085e+01,\n 1.49337500e+01, 1.49337500e+01],\n [6.80138457e+00, 6.80138457e+00, 1.13516350e+01, 1.29438053e+01,\n 1.49257493e+01, 1.49257493e+01],\n [6.82099896e+00, 6.82099896e+00, 1.14493049e+01, 1.28646126e+01,\n 1.49185396e+01, 1.49185396e+01],\n [6.83835113e+00, 6.83835113e+00, 1.15459006e+01, 1.27843298e+01,\n 1.49121375e+01, 1.49121375e+01],\n [6.85342435e+00, 6.85342435e+00, 1.16414194e+01, 1.27029559e+01,\n 1.49065581e+01, 1.49065581e+01],\n [6.86620396e+00, 6.86620396e+00, 1.17358587e+01, 1.26204906e+01,\n 1.49018144e+01, 1.49018144e+01],\n [6.87667737e+00, 6.87667737e+00, 1.18292162e+01, 1.25369336e+01,\n 1.48979177e+01, 1.48979177e+01],\n [6.88483424e+00, 6.88483424e+00, 1.19214899e+01, 1.24522848e+01,\n 1.48948771e+01, 1.48948771e+01],\n [6.89066641e+00, 6.89066641e+00, 1.20126778e+01, 1.23665443e+01,\n 1.48927000e+01, 1.48927000e+01],\n [6.89416806e+00, 6.89416806e+00, 1.21027784e+01, 1.22797127e+01,\n 1.48913917e+01, 1.48913917e+01],\n [6.89533567e+00, 6.89533567e+00, 1.21917904e+01, 1.21917904e+01,\n 1.48909552e+01, 1.48909552e+01]]),\n array([[ 6.89533567, 6.89533567, 12.19179039, 12.19179039, 14.89095524,\n 14.89095524],\n [ 6.89476599, 6.89721307, 12.19035931, 12.19131253, 14.89109076,\n 14.89177681],\n [ 6.8930571 , 6.90283616, 12.18607431, 12.18988157, 14.8914973 ,\n 14.89423361],\n [ 6.89020956, 6.91217764, 12.17895978, 12.18750534, 14.89217481,\n 14.89830206],\n [ 6.88622426, 6.92519216, 12.16905574, 12.18419693, 14.89312318,\n 14.90394357],\n [ 6.88110243, 6.9418166 , 12.15641674, 12.17997485, 14.89434227,\n 14.91110552],\n [ 6.8748457 , 6.96197032, 12.1411106 , 12.17486306, 14.89583189,\n 14.9197226 ],\n [ 6.86745601, 6.98555564, 12.1232168 , 12.16889124, 14.89759181,\n 14.92971834],\n [ 6.85893568, 7.0124582 , 12.10282475, 12.16209492, 14.89962177,\n 14.94100685],\n [ 6.84928737, 7.04254753, 12.08003199, 12.15451577, 14.90192145,\n 14.9534946 ],\n [ 6.83851409, 7.07567754, 12.05494232, 12.14620185, 14.90449047,\n 14.96708225],\n [ 6.8266192 , 7.11168706, 12.02766403, 12.13720797, 14.90732842,\n 14.98166641],\n [ 6.81360641, 7.1504004 , 11.99830825, 12.12759601, 14.91043482,\n 14.99714124],\n [ 6.79947975, 7.19162786, 11.96698741, 12.11743535, 14.91380915,\n 15.01339997],\n [ 6.78424361, 7.23516623, 11.93381387, 12.10680327, 14.91745083,\n 15.03033626],\n [ 6.7679027 , 7.28079926, 11.89889873, 12.0957854 , 14.9213592 ,\n 15.04784527],\n [ 6.75046209, 7.32829805, 11.86235086, 12.08447621, 14.92553355,\n 15.06582469],\n [ 6.73192714, 7.3774215 , 11.82427602, 12.07297947, 14.92997311,\n 15.0841755 ],\n [ 6.71230356, 7.42791658, 11.78477623, 12.06140874, 14.93467703,\n 15.1028026 ],\n [ 6.69159738, 7.47951874, 11.74394921, 12.0498878 , 14.93964437,\n 15.12161529],\n [ 6.66981492, 7.53195215, 11.701888 , 12.03855107, 14.94487413,\n 15.14052765],\n [ 6.64696284, 7.58493013, 11.65868065, 12.02754391, 14.95036522,\n 15.15945873],\n [ 6.62304809, 7.6381555 , 11.61441001, 12.01702285, 14.95611647,\n 15.17833279],\n [ 6.59807794, 7.69132112, 11.5691536 , 12.0071556 , 14.96212661,\n 15.19707928],\n [ 6.57205993, 7.74411056, 11.52298356, 11.99812092, 14.96839427,\n 15.21563293],\n [ 6.5450019 , 7.79619897, 11.47596658, 11.99010811, 14.974918 ,\n 15.23393372],\n [ 6.51691198, 7.8472543 , 11.42816396, 11.98331627, 14.98169623,\n 15.25192677],\n [ 6.48779857, 7.89693879, 11.3796316 , 11.9779531 , 14.98872728,\n 15.26956229],\n [ 6.45767036, 7.94491097, 11.33042012, 11.97423316, 14.99600936,\n 15.28679543],\n [ 6.42653627, 7.99082805, 11.28057486, 11.97237575, 15.00354058,\n 15.30358621],\n [ 6.39440553, 8.03434895, 11.23013602, 11.97260212, 15.01131889,\n 15.31989932],\n [ 6.36128757, 8.07513774, 11.17913872, 11.97513212, 15.01934216,\n 15.33570402],\n [ 6.3271921 , 8.11286763, 11.12761311, 11.98018037, 15.02760809,\n 15.35097401],\n [ 6.29212906, 8.1472254 , 11.07558447, 11.98795191, 15.03611427,\n 15.36568722]]),\n array([[6.29212906e+00, 8.14722540e+00, 1.10755845e+01, 1.19879519e+01,\n 1.50361143e+01, 1.53656872e+01],\n [6.25647352e+00, 8.17762824e+00, 1.10236007e+01, 1.19985158e+01,\n 1.50447695e+01, 1.53796873e+01],\n [6.21988972e+00, 8.20417287e+00, 1.09711594e+01, 1.20121030e+01,\n 1.50536551e+01, 1.53931105e+01],\n [6.18238794e+00, 8.22662180e+00, 1.09182714e+01, 1.20288578e+01,\n 1.50627683e+01, 1.54059471e+01],\n [6.14397867e+00, 8.24476801e+00, 1.08649436e+01, 1.20488984e+01,\n 1.50721062e+01, 1.54181907e+01],\n [6.10467261e+00, 8.25843843e+00, 1.08111782e+01, 1.20723127e+01,\n 1.50816657e+01, 1.54298385e+01],\n [6.06448062e+00, 8.26749638e+00, 1.07569737e+01, 1.20991563e+01,\n 1.50914436e+01, 1.54408909e+01],\n [6.02341375e+00, 8.27184310e+00, 1.07023245e+01, 1.21294507e+01,\n 1.51014366e+01, 1.54513515e+01],\n [5.98148322e+00, 8.27141809e+00, 1.06472210e+01, 1.21631830e+01,\n 1.51116412e+01, 1.54612269e+01],\n [5.93870041e+00, 8.26619826e+00, 1.05916501e+01, 1.22003070e+01,\n 1.51220536e+01, 1.54705266e+01],\n [5.89507685e+00, 8.25619607e+00, 1.05355947e+01, 1.22407444e+01,\n 1.51326701e+01, 1.54792629e+01],\n [5.85062423e+00, 8.24145671e+00, 1.04790345e+01, 1.22843880e+01,\n 1.51434866e+01, 1.54874505e+01],\n [5.80535435e+00, 8.22205454e+00, 1.04219458e+01, 1.23311050e+01,\n 1.51544990e+01, 1.54951070e+01],\n [5.75927918e+00, 8.19808909e+00, 1.03643013e+01, 1.23807412e+01,\n 1.51657030e+01, 1.55022519e+01],\n [5.71241078e+00, 8.16968082e+00, 1.03060712e+01, 1.24331247e+01,\n 1.51770940e+01, 1.55089071e+01],\n [5.66476132e+00, 8.13696682e+00, 1.02472222e+01, 1.24880707e+01,\n 1.51886673e+01, 1.55150965e+01],\n [5.61634311e+00, 8.10009673e+00, 1.01877186e+01, 1.25453849e+01,\n 1.52004182e+01, 1.55208458e+01],\n [5.56716850e+00, 8.05922898e+00, 1.01275221e+01, 1.26048678e+01,\n 1.52123416e+01, 1.55261825e+01],\n [5.51724999e+00, 8.01452741e+00, 1.00665919e+01, 1.26663173e+01,\n 1.52244322e+01, 1.55311356e+01],\n [5.46660010e+00, 7.96615838e+00, 1.00048851e+01, 1.27295323e+01,\n 1.52366848e+01, 1.55357354e+01],\n [5.41523147e+00, 7.91428833e+00, 9.94235680e+00, 1.27943144e+01,\n 1.52490938e+01, 1.55400135e+01],\n [5.36315676e+00, 7.85908189e+00, 9.87896026e+00, 1.28604702e+01,\n 1.52616534e+01, 1.55440024e+01],\n [5.31038872e+00, 7.80070024e+00, 9.81464731e+00, 1.29278126e+01,\n 1.52743579e+01, 1.55477354e+01],\n [5.25694012e+00, 7.73930008e+00, 9.74936842e+00, 1.29961616e+01,\n 1.52872010e+01, 1.55512465e+01],\n [5.20282376e+00, 7.67503275e+00, 9.68307301e+00, 1.30653456e+01,\n 1.53001767e+01, 1.55545700e+01],\n [5.14805250e+00, 7.60804370e+00, 9.61570966e+00, 1.31352015e+01,\n 1.53132784e+01, 1.55577406e+01],\n [5.09263918e+00, 7.53847222e+00, 9.54722637e+00, 1.32055749e+01,\n 1.53264997e+01, 1.55607929e+01],\n [5.03659669e+00, 7.46645125e+00, 9.47757079e+00, 1.32763204e+01,\n 1.53398339e+01, 1.55637613e+01],\n [4.97993788e+00, 7.39210746e+00, 9.40669052e+00, 1.33473013e+01,\n 1.53532739e+01, 1.55666801e+01],\n [4.92267563e+00, 7.31556132e+00, 9.33453328e+00, 1.34183894e+01,\n 1.53668129e+01, 1.55695827e+01],\n [4.86482279e+00, 7.23692730e+00, 9.26104725e+00, 1.34894651e+01,\n 1.53804435e+01, 1.55725021e+01],\n [4.80639218e+00, 7.15631413e+00, 9.18618123e+00, 1.35604165e+01,\n 1.53941585e+01, 1.55754701e+01],\n [4.74739660e+00, 7.07382508e+00, 9.10988493e+00, 1.36311397e+01,\n 1.54079504e+01, 1.55785176e+01],\n [4.68784882e+00, 6.98955824e+00, 9.03210916e+00, 1.37015378e+01,\n 1.54218114e+01, 1.55816741e+01],\n [4.62776153e+00, 6.90360685e+00, 8.95280611e+00, 1.37715211e+01,\n 1.54357340e+01, 1.55849678e+01],\n [4.56714742e+00, 6.81605958e+00, 8.87192951e+00, 1.38410062e+01,\n 1.54497101e+01, 1.55884254e+01],\n [4.50601906e+00, 6.72700084e+00, 8.78943483e+00, 1.39099162e+01,\n 1.54637317e+01, 1.55920716e+01],\n [4.44438898e+00, 6.63651108e+00, 8.70527953e+00, 1.39781798e+01,\n 1.54777906e+01, 1.55959297e+01],\n [4.38226965e+00, 6.54466702e+00, 8.61942314e+00, 1.40457313e+01,\n 1.54918787e+01, 1.56000208e+01],\n [4.31967342e+00, 6.45154194e+00, 8.53182751e+00, 1.41125102e+01,\n 1.55059874e+01, 1.56043639e+01],\n [4.25661258e+00, 6.35720591e+00, 8.44245688e+00, 1.41784608e+01,\n 1.55201084e+01, 1.56089764e+01],\n [4.19309930e+00, 6.26172600e+00, 8.35127806e+00, 1.42435321e+01,\n 1.55342331e+01, 1.56138729e+01],\n [4.12914566e+00, 6.16516649e+00, 8.25826052e+00, 1.43076773e+01,\n 1.55483527e+01, 1.56190663e+01],\n [4.06476362e+00, 6.06758902e+00, 8.16337647e+00, 1.43708539e+01,\n 1.55624585e+01, 1.56245671e+01],\n [3.99996504e+00, 5.96905281e+00, 8.06660096e+00, 1.44330230e+01,\n 1.55765418e+01, 1.56303834e+01],\n [3.93476163e+00, 5.86961477e+00, 7.96791195e+00, 1.44941494e+01,\n 1.55905936e+01, 1.56365214e+01],\n [3.86916501e+00, 5.76932964e+00, 7.86729031e+00, 1.45542014e+01,\n 1.56046049e+01, 1.56429847e+01],\n [3.80318663e+00, 5.66825013e+00, 7.76471990e+00, 1.46131503e+01,\n 1.56185667e+01, 1.56497750e+01],\n [3.73683782e+00, 5.56642700e+00, 7.66018754e+00, 1.46709706e+01,\n 1.56324701e+01, 1.56568916e+01],\n [3.67012976e+00, 5.46390917e+00, 7.55368306e+00, 1.47276397e+01,\n 1.56463058e+01, 1.56643318e+01],\n [3.60307349e+00, 5.36074380e+00, 7.44519925e+00, 1.47831375e+01,\n 1.56600648e+01, 1.56720909e+01],\n [3.53567988e+00, 5.25697637e+00, 7.33473184e+00, 1.48374466e+01,\n 1.56737379e+01, 1.56801621e+01],\n [3.46795965e+00, 5.15265073e+00, 7.22227948e+00, 1.48905521e+01,\n 1.56873160e+01, 1.56885369e+01],\n [3.39992337e+00, 5.04780917e+00, 7.10784369e+00, 1.49424412e+01,\n 1.56972047e+01, 1.57007899e+01],\n [3.33158144e+00, 4.94249245e+00, 6.99142877e+00, 1.49931033e+01,\n 1.57061535e+01, 1.57141505e+01],\n [3.26294407e+00, 4.83673984e+00, 6.87304180e+00, 1.50425299e+01,\n 1.57153696e+01, 1.57273887e+01],\n [3.19402132e+00, 4.73058919e+00, 6.75269253e+00, 1.50907144e+01,\n 1.57248376e+01, 1.57404953e+01],\n [3.12482308e+00, 4.62407689e+00, 6.63039332e+00, 1.51376519e+01,\n 1.57345411e+01, 1.57534612e+01],\n [3.05535904e+00, 4.51723796e+00, 6.50615903e+00, 1.51833393e+01,\n 1.57444621e+01, 1.57662775e+01],\n [2.98563873e+00, 4.41010602e+00, 6.38000697e+00, 1.52277750e+01,\n 1.57545816e+01, 1.57789351e+01],\n [2.91567149e+00, 4.30271333e+00, 6.25195683e+00, 1.52709592e+01,\n 1.57648794e+01, 1.57914252e+01],\n [2.84546649e+00, 4.19509079e+00, 6.12203053e+00, 1.53128930e+01,\n 1.57753347e+01, 1.58037389e+01],\n [2.77503270e+00, 4.08726795e+00, 5.99025217e+00, 1.53535793e+01,\n 1.57859255e+01, 1.58158673e+01],\n [2.70437890e+00, 3.97927300e+00, 5.85664796e+00, 1.53930220e+01,\n 1.57966294e+01, 1.58278019e+01],\n [2.63351372e+00, 3.87113280e+00, 5.72124608e+00, 1.54312262e+01,\n 1.58074231e+01, 1.58395340e+01],\n [2.56244556e+00, 3.76287285e+00, 5.58407662e+00, 1.54681979e+01,\n 1.58182831e+01, 1.58510552e+01],\n [2.49118267e+00, 3.65451734e+00, 5.44517149e+00, 1.55039443e+01,\n 1.58291854e+01, 1.58623571e+01],\n [2.41973308e+00, 3.54608907e+00, 5.30456433e+00, 1.55384733e+01,\n 1.58401057e+01, 1.58734313e+01],\n [2.34810468e+00, 3.43760952e+00, 5.16229042e+00, 1.55717939e+01,\n 1.58510196e+01, 1.58842699e+01],\n [2.27630514e+00, 3.32909882e+00, 5.01838660e+00, 1.56039154e+01,\n 1.58619024e+01, 1.58948649e+01],\n [2.20434195e+00, 3.22057576e+00, 4.87289117e+00, 1.56348481e+01,\n 1.58727296e+01, 1.59052083e+01],\n [2.13222245e+00, 3.11205777e+00, 4.72584387e+00, 1.56646028e+01,\n 1.58834767e+01, 1.59152926e+01],\n [2.05995377e+00, 3.00356093e+00, 4.57728573e+00, 1.56931907e+01,\n 1.58941193e+01, 1.59251103e+01],\n [1.98754288e+00, 2.89509999e+00, 4.42725903e+00, 1.57206235e+01,\n 1.59046335e+01, 1.59346539e+01],\n [1.91499656e+00, 2.78668835e+00, 4.27580725e+00, 1.57469133e+01,\n 1.59149954e+01, 1.59439165e+01],\n [1.84232146e+00, 2.67833808e+00, 4.12297496e+00, 1.57720725e+01,\n 1.59251816e+01, 1.59528909e+01],\n [1.76952401e+00, 2.57005993e+00, 3.96880779e+00, 1.57961136e+01,\n 1.59351692e+01, 1.59615704e+01],\n [1.69661051e+00, 2.46186333e+00, 3.81335233e+00, 1.58190493e+01,\n 1.59449357e+01, 1.59699486e+01],\n [1.62358710e+00, 2.35375641e+00, 3.65665612e+00, 1.58408924e+01,\n 1.59544591e+01, 1.59780189e+01],\n [1.55045976e+00, 2.24574602e+00, 3.49876755e+00, 1.58616557e+01,\n 1.59637183e+01, 1.59857754e+01],\n [1.47723431e+00, 2.13783775e+00, 3.33973581e+00, 1.58813519e+01,\n 1.59726925e+01, 1.59932120e+01],\n [1.40391643e+00, 2.03003593e+00, 3.17961087e+00, 1.58999937e+01,\n 1.59813619e+01, 1.60003231e+01],\n [1.33051166e+00, 1.92234372e+00, 3.01844339e+00, 1.59175935e+01,\n 1.59897072e+01, 1.60071033e+01],\n [1.25702542e+00, 1.81476304e+00, 2.85628468e+00, 1.59341635e+01,\n 1.59977100e+01, 1.60135473e+01],\n [1.18346297e+00, 1.70729471e+00, 2.69318669e+00, 1.59497156e+01,\n 1.60053528e+01, 1.60196502e+01],\n [1.10982948e+00, 1.59993840e+00, 2.52920191e+00, 1.59642614e+01,\n 1.60126188e+01, 1.60254073e+01],\n [1.03612996e+00, 1.49269275e+00, 2.36438337e+00, 1.59778120e+01,\n 1.60194921e+01, 1.60308142e+01],\n [9.62369353e-01, 1.38555533e+00, 2.19878458e+00, 1.59903781e+01,\n 1.60259578e+01, 1.60358666e+01],\n [8.88552464e-01, 1.27852278e+00, 2.03245949e+00, 1.60019699e+01,\n 1.60320020e+01, 1.60405607e+01],\n [8.14684015e-01, 1.17159077e+00, 1.86546247e+00, 1.60125969e+01,\n 1.60376114e+01, 1.60448929e+01],\n [7.40768631e-01, 1.06475413e+00, 1.69784826e+00, 1.60222682e+01,\n 1.60427741e+01, 1.60488597e+01],\n [6.66810854e-01, 9.58006865e-01, 1.52967192e+00, 1.60309922e+01,\n 1.60474790e+01, 1.60524581e+01],\n [5.92815147e-01, 8.51342252e-01, 1.36098882e+00, 1.60387766e+01,\n 1.60517159e+01, 1.60556853e+01],\n [5.18785904e-01, 7.44752868e-01, 1.19185462e+00, 1.60456283e+01,\n 1.60554758e+01, 1.60585387e+01],\n [4.44727457e-01, 6.38230684e-01, 1.02232518e+00, 1.60515536e+01,\n 1.60587508e+01, 1.60610163e+01],\n [3.70644079e-01, 5.31767125e-01, 8.52456593e-01, 1.60565579e+01,\n 1.60615337e+01, 1.60631159e+01],\n [2.96540000e-01, 4.25353148e-01, 6.82305119e-01, 1.60606459e+01,\n 1.60638187e+01, 1.60648360e+01],\n [2.22419407e-01, 3.18979315e-01, 5.11927163e-01, 1.60638214e+01,\n 1.60656010e+01, 1.60661753e+01],\n [1.48286457e-01, 2.12635869e-01, 3.41379243e-01, 1.60660875e+01,\n 1.60668768e+01, 1.60671327e+01],\n [7.41452829e-02, 1.06312817e-01, 1.70717968e-01, 1.60674463e+01,\n 1.60676434e+01, 1.60677074e+01],\n [2.18701057e-06, 2.19691522e-06, 2.20369934e-06, 1.60678991e+01,\n 1.60678991e+01, 1.60678991e+01]]),\n array([[2.18701057e-06, 2.19691522e-06, 2.20369934e-06, 1.60678991e+01,\n 1.60678991e+01, 1.60678991e+01],\n [8.68987455e-02, 8.68987455e-02, 1.77711678e-01, 1.60674173e+01,\n 1.60676826e+01, 1.60676826e+01],\n [1.73771843e-01, 1.73771843e-01, 3.55392732e-01, 1.60659718e+01,\n 1.60670336e+01, 1.60670336e+01],\n [2.60593637e-01, 2.60593637e-01, 5.33012548e-01, 1.60635622e+01,\n 1.60659527e+01, 1.60659527e+01],\n [3.47338458e-01, 3.47338458e-01, 7.10540526e-01, 1.60601876e+01,\n 1.60644410e+01, 1.60644410e+01],\n [4.33980615e-01, 4.33980615e-01, 8.87946095e-01, 1.60558468e+01,\n 1.60625002e+01, 1.60625002e+01],\n [5.20494388e-01, 5.20494388e-01, 1.06519872e+00, 1.60505385e+01,\n 1.60601324e+01, 1.60601324e+01],\n [6.06854021e-01, 6.06854021e-01, 1.24226790e+00, 1.60442608e+01,\n 1.60573401e+01, 1.60573401e+01],\n [6.93033715e-01, 6.93033715e-01, 1.41912319e+00, 1.60370117e+01,\n 1.60541264e+01, 1.60541264e+01],\n [7.79007624e-01, 7.79007624e-01, 1.59573422e+00, 1.60287888e+01,\n 1.60504947e+01, 1.60504947e+01],\n [8.64749842e-01, 8.64749842e-01, 1.77207066e+00, 1.60195894e+01,\n 1.60464489e+01, 1.60464489e+01],\n [9.50234402e-01, 9.50234402e-01, 1.94810227e+00, 1.60094105e+01,\n 1.60419936e+01, 1.60419936e+01],\n [1.03543527e+00, 1.03543527e+00, 2.12379889e+00, 1.59982489e+01,\n 1.60371336e+01, 1.60371336e+01],\n [1.12032632e+00, 1.12032632e+00, 2.29913045e+00, 1.59861010e+01,\n 1.60318742e+01, 1.60318742e+01],\n [1.20488137e+00, 1.20488137e+00, 2.47406698e+00, 1.59729630e+01,\n 1.60262213e+01, 1.60262213e+01],\n [1.28907413e+00, 1.28907413e+00, 2.64857859e+00, 1.59588309e+01,\n 1.60201811e+01, 1.60201811e+01],\n [1.37287823e+00, 1.37287823e+00, 2.82263554e+00, 1.59437003e+01,\n 1.60137605e+01, 1.60137605e+01],\n [1.45626718e+00, 1.45626718e+00, 2.99620815e+00, 1.59275668e+01,\n 1.60069667e+01, 1.60069667e+01],\n [1.53921441e+00, 1.53921441e+00, 3.16926692e+00, 1.59104255e+01,\n 1.59998074e+01, 1.59998074e+01],\n [1.62169322e+00, 1.62169322e+00, 3.34178242e+00, 1.58922716e+01,\n 1.59922907e+01, 1.59922907e+01],\n [1.70367680e+00, 1.70367680e+00, 3.51372537e+00, 1.58730998e+01,\n 1.59844254e+01, 1.59844254e+01],\n [1.78513824e+00, 1.78513824e+00, 3.68506663e+00, 1.58529049e+01,\n 1.59762205e+01, 1.59762205e+01],\n [1.86605049e+00, 1.86605049e+00, 3.85577716e+00, 1.58316813e+01,\n 1.59676856e+01, 1.59676856e+01],\n [1.94638637e+00, 1.94638637e+00, 4.02582809e+00, 1.58094236e+01,\n 1.59588308e+01, 1.59588308e+01],\n [2.02611858e+00, 2.02611858e+00, 4.19519065e+00, 1.57861259e+01,\n 1.59496667e+01, 1.59496667e+01],\n [2.10521970e+00, 2.10521970e+00, 4.36383622e+00, 1.57617825e+01,\n 1.59402042e+01, 1.59402042e+01],\n [2.18366216e+00, 2.18366216e+00, 4.53173632e+00, 1.57363875e+01,\n 1.59304548e+01, 1.59304548e+01],\n [2.26141827e+00, 2.26141827e+00, 4.69886256e+00, 1.57099349e+01,\n 1.59204304e+01, 1.59204304e+01],\n [2.33846020e+00, 2.33846020e+00, 4.86518671e+00, 1.56824189e+01,\n 1.59101434e+01, 1.59101434e+01],\n [2.41475999e+00, 2.41475999e+00, 5.03068062e+00, 1.56538334e+01,\n 1.58996067e+01, 1.58996067e+01],\n [2.49028953e+00, 2.49028953e+00, 5.19531627e+00, 1.56241727e+01,\n 1.58888336e+01, 1.58888336e+01],\n [2.56502062e+00, 2.56502062e+00, 5.35906572e+00, 1.55934309e+01,\n 1.58778377e+01, 1.58778377e+01],\n [2.63892491e+00, 2.63892491e+00, 5.52190112e+00, 1.55616024e+01,\n 1.58666334e+01, 1.58666334e+01],\n [2.71197391e+00, 2.71197391e+00, 5.68379466e+00, 1.55286816e+01,\n 1.58552351e+01, 1.58552351e+01],\n [2.78413905e+00, 2.78413905e+00, 5.84471859e+00, 1.54946631e+01,\n 1.58436580e+01, 1.58436580e+01],\n [2.85539161e+00, 2.85539161e+00, 6.00464518e+00, 1.54595418e+01,\n 1.58319175e+01, 1.58319175e+01],\n [2.92570282e+00, 2.92570282e+00, 6.16354668e+00, 1.54233130e+01,\n 1.58200294e+01, 1.58200294e+01],\n [2.99504375e+00, 2.99504375e+00, 6.32139531e+00, 1.53859722e+01,\n 1.58080101e+01, 1.58080101e+01],\n [3.06338544e+00, 3.06338544e+00, 6.47816320e+00, 1.53475153e+01,\n 1.57958762e+01, 1.57958762e+01],\n [3.13069883e+00, 3.13069883e+00, 6.63382235e+00, 1.53079386e+01,\n 1.57836448e+01, 1.57836448e+01],\n [3.19695480e+00, 3.19695480e+00, 6.78834460e+00, 1.52672393e+01,\n 1.57713331e+01, 1.57713331e+01],\n [3.26212420e+00, 3.26212420e+00, 6.94170153e+00, 1.52254148e+01,\n 1.57589589e+01, 1.57589589e+01],\n [3.32617785e+00, 3.32617785e+00, 7.09386444e+00, 1.51824635e+01,\n 1.57465403e+01, 1.57465403e+01],\n [3.38908653e+00, 3.38908653e+00, 7.24480421e+00, 1.51383844e+01,\n 1.57340955e+01, 1.57340955e+01],\n [3.45082108e+00, 3.45082108e+00, 7.39449126e+00, 1.50931777e+01,\n 1.57216433e+01, 1.57216433e+01],\n [3.51135231e+00, 3.51135231e+00, 7.54289542e+00, 1.50468445e+01,\n 1.57092025e+01, 1.57092025e+01],\n [3.57065115e+00, 3.57065115e+00, 7.68998576e+00, 1.49993872e+01,\n 1.56967922e+01, 1.56967922e+01],\n [3.62868855e+00, 3.62868855e+00, 7.83573054e+00, 1.49508094e+01,\n 1.56844317e+01, 1.56844317e+01],\n [3.68543561e+00, 3.68543561e+00, 7.98009691e+00, 1.49011166e+01,\n 1.56721405e+01, 1.56721405e+01],\n [3.74086353e+00, 3.74086353e+00, 8.12305082e+00, 1.48503158e+01,\n 1.56599383e+01, 1.56599383e+01],\n [3.79494372e+00, 3.79494372e+00, 8.26455669e+00, 1.47984162e+01,\n 1.56478448e+01, 1.56478448e+01],\n [3.84764774e+00, 3.84764774e+00, 8.40457720e+00, 1.47454295e+01,\n 1.56358798e+01, 1.56358798e+01],\n [3.89894744e+00, 3.89894744e+00, 8.54307290e+00, 1.46913700e+01,\n 1.56240633e+01, 1.56240633e+01],\n [3.94881489e+00, 3.94881489e+00, 8.68000183e+00, 1.46362550e+01,\n 1.56124152e+01, 1.56124152e+01],\n [3.99722251e+00, 3.99722251e+00, 8.81531907e+00, 1.45801056e+01,\n 1.56009552e+01, 1.56009552e+01],\n [4.04414305e+00, 4.04414305e+00, 8.94897617e+00, 1.45229472e+01,\n 1.55897031e+01, 1.55897031e+01],\n [4.08954967e+00, 4.08954967e+00, 9.08092045e+00, 1.44648099e+01,\n 1.55786787e+01, 1.55786787e+01],\n [4.13341596e+00, 4.13341596e+00, 9.21109424e+00, 1.44057295e+01,\n 1.55679014e+01, 1.55679014e+01],\n [4.17571599e+00, 4.17571599e+00, 9.33943387e+00, 1.43457486e+01,\n 1.55573906e+01, 1.55573906e+01],\n [4.21642438e+00, 4.21642438e+00, 9.46586854e+00, 1.42849178e+01,\n 1.55471651e+01, 1.55471651e+01],\n [4.25551631e+00, 4.25551631e+00, 9.59031884e+00, 1.42232967e+01,\n 1.55372439e+01, 1.55372439e+01],\n [4.29296759e+00, 4.29296759e+00, 9.71269507e+00, 1.41609564e+01,\n 1.55276452e+01, 1.55276452e+01],\n [4.32875473e+00, 4.32875473e+00, 9.83289509e+00, 1.40979808e+01,\n 1.55183871e+01, 1.55183871e+01],\n [4.36285493e+00, 4.36285493e+00, 9.95080172e+00, 1.40344699e+01,\n 1.55094870e+01, 1.55094870e+01],\n [4.39524622e+00, 4.39524622e+00, 1.00662796e+01, 1.39705427e+01,\n 1.55009619e+01, 1.55009619e+01],\n [4.42590741e+00, 4.42590741e+00, 1.01791712e+01, 1.39063409e+01,\n 1.54928283e+01, 1.54928283e+01],\n [4.45481822e+00, 4.45481822e+00, 1.02892922e+01, 1.38420341e+01,\n 1.54851020e+01, 1.54851020e+01],\n [4.48195930e+00, 4.48195930e+00, 1.03964254e+01, 1.37778256e+01,\n 1.54777983e+01, 1.54777983e+01],\n [4.50731227e+00, 4.50731227e+00, 1.05003136e+01, 1.37139594e+01,\n 1.54709315e+01, 1.54709315e+01],\n [4.53085979e+00, 4.53085979e+00, 1.06006514e+01, 1.36507288e+01,\n 1.54645154e+01, 1.54645154e+01],\n [4.55258558e+00, 4.55258558e+00, 1.06970744e+01, 1.35884865e+01,\n 1.54585629e+01, 1.54585629e+01],\n [4.57247450e+00, 4.57247450e+00, 1.07891482e+01, 1.35276567e+01,\n 1.54530860e+01, 1.54530860e+01],\n [4.59051254e+00, 4.59051254e+00, 1.08763552e+01, 1.34687473e+01,\n 1.54480960e+01, 1.54480960e+01],\n [4.60668693e+00, 4.60668693e+00, 1.09580822e+01, 1.34123627e+01,\n 1.54436029e+01, 1.54436029e+01],\n [4.62098611e+00, 4.62098611e+00, 1.10336096e+01, 1.33592147e+01,\n 1.54396162e+01, 1.54396162e+01],\n [4.63339981e+00, 4.63339981e+00, 1.11021066e+01, 1.33101273e+01,\n 1.54361441e+01, 1.54361441e+01],\n [4.64391906e+00, 4.64391906e+00, 1.11626377e+01, 1.32660299e+01,\n 1.54331937e+01, 1.54331937e+01],\n [4.65253622e+00, 4.65253622e+00, 1.12141885e+01, 1.32279317e+01,\n 1.54307713e+01, 1.54307713e+01],\n [4.65924501e+00, 4.65924501e+00, 1.12557173e+01, 1.31968704e+01,\n 1.54288819e+01, 1.54288819e+01],\n [4.66404052e+00, 4.66404052e+00, 1.12862369e+01, 1.31738300e+01,\n 1.54275295e+01, 1.54275295e+01],\n [4.66691923e+00, 4.66691923e+00, 1.13049205e+01, 1.31596347e+01,\n 1.54267169e+01, 1.54267169e+01],\n [4.66787904e+00, 4.66787904e+00, 1.13112137e+01, 1.31548379e+01,\n 1.54264459e+01, 1.54264459e+01]]),\n array([[ 4.66787904, 4.66787904, 11.31121369, 13.15483786, 15.42644585,\n 15.42644585],\n [ 4.66883944, 4.67093501, 11.31069683, 13.15420714, 15.42624753,\n 15.42662672],\n [ 4.6717197 , 4.68008535, 11.30914699, 13.15231706, 15.42565317,\n 15.42716712],\n [ 4.67651706, 4.69527771, 11.30656644, 13.14917383, 15.42466453,\n 15.42806041],\n [ 4.68322686, 4.71642595, 11.30295898, 13.14478769, 15.42328455,\n 15.42929564],\n [ 4.69184265, 4.74341172, 11.29832994, 13.13917277, 15.42151735,\n 15.43085774],\n [ 4.70235612, 4.77608661, 11.2926863 , 13.13234687, 15.41936818,\n 15.43272765],\n [ 4.71475714, 4.8142747 , 11.28603666, 13.12433117, 15.41684348,\n 15.43488268],\n [ 4.72903381, 4.85777545, 11.2783914 , 13.11514998, 15.4139508 ,\n 15.43729674],\n [ 4.74517241, 4.90636678, 11.26976269, 13.10483036, 15.41069884,\n 15.43994075],\n [ 4.7631575 , 4.95980823, 11.26016464, 13.09340178, 15.40709737,\n 15.44278297],\n [ 4.78297187, 5.01784414, 11.2496134 , 13.08089571, 15.40315728,\n 15.44578941],\n [ 4.80459662, 5.08020666, 11.2381273 , 13.06734527, 15.39889052,\n 15.4489242 ],\n [ 4.82801117, 5.14661861, 11.22572702, 13.0527848 , 15.39431009,\n 15.45215004],\n [ 4.85319328, 5.21679606, 11.21243575, 13.0372495 , 15.38943 ,\n 15.45542857],\n [ 4.88011907, 5.29045068, 11.1982794 , 13.02077504, 15.38426525,\n 15.45872076],\n [ 4.90876308, 5.36729169, 11.18328681, 13.00339721, 15.37883182,\n 15.46198731],\n [ 4.93909829, 5.44702758, 11.16749005, 12.98515157, 15.3731466 ,\n 15.46518895],\n [ 4.97109613, 5.5293674 , 11.15092462, 12.96607314, 15.3672274 ,\n 15.46828687],\n [ 5.00472652, 5.61402185, 11.13362983, 12.94619611, 15.36109287,\n 15.47124292],\n [ 5.03995793, 5.700704 , 11.11564913, 12.92555359, 15.35476249,\n 15.47401998],\n [ 5.07675735, 5.78912978, 11.09703046, 12.90417733, 15.34825653,\n 15.47658222],\n [ 5.11509038, 5.87901817, 11.07782674, 12.88209755, 15.34159598,\n 15.47889527],\n [ 5.15492119, 5.97009122, 11.05809624, 12.85934274, 15.33480255,\n 15.48092653],\n [ 5.19621261, 6.06207386, 11.03790317, 12.83593951, 15.32789857,\n 15.48264529],\n [ 5.23892611, 6.15469351, 11.01731817, 12.81191244, 15.32090699,\n 15.48402293],\n [ 5.28302184, 6.24767954, 10.99641896, 12.78728396, 15.3138513 ,\n 15.48503308],\n [ 5.32845864, 6.34076267, 10.9752909 , 12.76207432, 15.30675548,\n 15.48565171],\n [ 5.37519406, 6.43367414, 10.9540277 , 12.73630143, 15.29964395,\n 15.48585731],\n [ 5.42318436, 6.52614493, 10.93273212, 12.7099809 , 15.2925415 ,\n 15.48563092],\n [ 5.47238454, 6.61790486, 10.91151663, 12.68312596, 15.28547325,\n 15.48495625],\n [ 5.52274835, 6.7086817 , 10.89050415, 12.65574747, 15.27846454,\n 15.48381973],\n [ 5.57422825, 6.79820026, 10.86982865, 12.62785393, 15.27154095,\n 15.48221057],\n [ 5.62677547, 6.88618163, 10.84963575, 12.5994515 , 15.26472812,\n 15.48012081],\n [ 5.68033995, 6.97234249, 10.83008312, 12.57054404, 15.25805176,\n 15.47754532],\n [ 5.73487036, 7.05639464, 10.81134075, 12.5411332 , 15.25153756,\n 15.47448184],\n [ 5.79031407, 7.13804489, 10.7935908 , 12.51121847, 15.24521107,\n 15.47093096],\n [ 5.84661715, 7.21699523, 10.77702722, 12.4807973 , 15.23909766,\n 15.46689616],\n [ 5.90372431, 7.2929437 , 10.76185465, 12.44986521, 15.23322244,\n 15.46238371],\n [ 5.96157886, 7.36558575, 10.74828691, 12.41841593, 15.22761012,\n 15.45740272],\n [ 6.0201227 , 7.43461652, 10.73654446, 12.38644156, 15.22228498,\n 15.45196503],\n [ 6.07929625, 7.49973393, 10.72685125, 12.35393277, 15.21727073,\n 15.44608518],\n [ 6.13903837, 7.56064276, 10.71943035, 12.32087899, 15.21259043,\n 15.43978036],\n [ 6.19928628, 7.61705972, 10.71449888, 12.28726865, 15.20826641,\n 15.43307027],\n [ 6.25997552, 7.66871935, 10.71226189, 12.25308943, 15.2043201 ,\n 15.42597708],\n [ 6.32103977, 7.71538058, 10.71290574, 12.21832858, 15.20077199,\n 15.41852527],\n [ 6.3824108 , 7.75683366, 10.71659108, 12.1829732 , 15.19764149,\n 15.41074154],\n [ 6.44401828, 7.79290678, 10.72344609, 12.14701063, 15.1949468 ,\n 15.40265463],\n [ 6.50578968, 7.82347218, 10.73356042, 12.11042881, 15.19270483,\n 15.39429522],\n [ 6.56765 , 7.84845077, 10.74698037, 12.07321672, 15.19093108,\n 15.3856957 ],\n [ 6.62952167, 7.86781512, 10.76370597, 12.03536482, 15.18963947,\n 15.37689002],\n [ 6.69132422, 7.88159025, 10.78369008, 11.99686561, 15.18884231,\n 15.36791351],\n [ 6.75297411, 7.88985221, 10.80683981, 11.95771409, 15.18855011,\n 15.35880262],\n [ 6.81438433, 7.89272444, 10.83302013, 11.91790844, 15.18877153,\n 15.34959476],\n [ 6.87546417, 7.8903724 , 10.86205919, 11.87745058, 15.18951322,\n 15.34032804],\n [ 6.93611876, 7.88299691, 10.89375497, 11.83634691, 15.19077974,\n 15.33104105],\n [ 6.99624871, 7.87082671, 10.92788271, 11.79460901, 15.19257349,\n 15.32177261],\n [ 7.05574959, 7.85411092, 10.9642024 , 11.75225444, 15.19489459,\n 15.31256153],\n [ 7.11451149, 7.83311182, 11.00246595, 11.70930758, 15.1977408 ,\n 15.30344637],\n [ 7.17241836, 7.80809838, 11.04242367, 11.66580048, 15.2011075 ,\n 15.29446521],\n [ 7.22934748, 7.77934065, 11.08382976, 11.62177384, 15.2049876 ,\n 15.2856554 ],\n [ 7.28516874, 7.7471053 , 11.12644676, 11.57727795, 15.20937152,\n 15.27705331],\n [ 7.33974397, 7.7116521 , 11.17004895, 11.53237371, 15.21424716,\n 15.26869413],\n [ 7.39292613, 7.67323138, 11.21442482, 11.48713365, 15.21959992,\n 15.26061169],\n [ 7.44455862, 7.6320824 , 11.25937862, 11.44164301, 15.22541272,\n 15.25283819],\n [ 7.49447447, 7.58843228, 11.30473122, 11.39600072, 15.23166602,\n 15.24540409],\n [ 7.54249562, 7.54249562, 11.3503204 , 11.3503204 , 15.23833788,\n 15.23833788]]),\n array([[ 7.54249562, 7.54249562, 11.3503204 , 11.3503204 , 15.23833788,\n 15.23833788],\n [ 7.54166641, 7.54166641, 11.35130975, 11.35130975, 15.23801134,\n 15.23801134],\n [ 7.53918446, 7.53918446, 11.35427194, 11.35427194, 15.23703255,\n 15.23703255],\n [ 7.53506676, 7.53506676, 11.35918952, 11.35918952, 15.23540407,\n 15.23540407],\n [ 7.52934132, 7.52934132, 11.36603365, 11.36603365, 15.23313011,\n 15.23313011],\n [ 7.52204673, 7.52204673, 11.37476455, 11.37476455, 15.23021665,\n 15.23021665],\n [ 7.51323165, 7.51323165, 11.38533198, 11.38533198, 15.22667136,\n 15.22667136],\n [ 7.50295407, 7.50295407, 11.39767597, 11.39767597, 15.22250365,\n 15.22250365],\n [ 7.49128048, 7.49128048, 11.41172752, 11.41172752, 15.21772475,\n 15.21772475],\n [ 7.47828508, 7.47828508, 11.42740943, 11.42740943, 15.21234764,\n 15.21234764],\n [ 7.46404878, 7.46404878, 11.44463718, 11.44463718, 15.20638716,\n 15.20638716],\n [ 7.44865827, 7.44865827, 11.46331976, 11.46331976, 15.19986003,\n 15.19986003],\n [ 7.43220511, 7.43220511, 11.48336059, 11.48336059, 15.19278485,\n 15.19278485],\n [ 7.41478473, 7.41478473, 11.50465834, 11.50465834, 15.18518221,\n 15.18518221],\n [ 7.39649562, 7.39649562, 11.5271077 , 11.5271077 , 15.17707467,\n 15.17707467],\n [ 7.3774384 , 7.3774384 , 11.55060018, 11.55060018, 15.16848683,\n 15.16848683],\n [ 7.35771513, 7.35771513, 11.57502474, 11.57502474, 15.15944541,\n 15.15944541],\n [ 7.33742851, 7.33742851, 11.60026839, 11.60026839, 15.14997924,\n 15.14997924],\n [ 7.3166813 , 7.3166813 , 11.62621676, 11.62621676, 15.14011934,\n 15.14011934],\n [ 7.29557569, 7.29557569, 11.65275454, 11.65275454, 15.12989893,\n 15.12989893],\n [ 7.27421283, 7.27421283, 11.6797659 , 11.6797659 , 15.11935352,\n 15.11935352],\n [ 7.25269237, 7.25269237, 11.7071348 , 11.7071348 , 15.10852087,\n 15.10852087],\n [ 7.23111204, 7.23111204, 11.73474528, 11.73474528, 15.09744106,\n 15.09744106],\n [ 7.20956738, 7.20956738, 11.76248171, 11.76248171, 15.08615647,\n 15.08615647],\n [ 7.1881514 , 7.1881514 , 11.79022897, 11.79022897, 15.07471177,\n 15.07471177],\n [ 7.16695438, 7.16695438, 11.81787268, 11.81787268, 15.06315389,\n 15.06315389],\n [ 7.14606363, 7.14606363, 11.84529928, 11.84529928, 15.05153196,\n 15.05153196],\n [ 7.12556335, 7.12556335, 11.87239625, 11.87239625, 15.03989724,\n 15.03989724],\n [ 7.10553446, 7.10553446, 11.89905224, 11.89905224, 15.02830298,\n 15.02830298],\n [ 7.08605448, 7.08605448, 11.92515725, 11.92515725, 15.01680429,\n 15.01680429],\n [ 7.06719745, 7.06719745, 11.95060282, 11.95060282, 15.00545792,\n 15.00545792],\n [ 7.0490338 , 7.0490338 , 11.97528226, 11.97528226, 14.994322 ,\n 14.994322 ],\n [ 7.0316303 , 7.0316303 , 11.99909093, 11.99909093, 14.98345578,\n 14.98345578],\n [ 7.01504997, 7.01504997, 12.02192655, 12.02192655, 14.97291925,\n 14.97291925],\n [ 6.99935206, 6.99935206, 12.04368954, 12.04368954, 14.96277273,\n 14.96277273],\n [ 6.98459195, 6.98459195, 12.0642835 , 12.0642835 , 14.9530764 ,\n 14.9530764 ],\n [ 6.97082113, 6.97082113, 12.08361559, 12.08361559, 14.94388978,\n 14.94388978],\n [ 6.95808712, 6.95808712, 12.10159715, 12.10159715, 14.93527117,\n 14.93527117],\n [ 6.94643348, 6.94643348, 12.1181442 , 12.1181442 , 14.92727697,\n 14.92727697],\n [ 6.93589974, 6.93589974, 12.13317811, 12.13317811, 14.91996108,\n 14.91996108],\n [ 6.92652136, 6.92652136, 12.14662617, 12.14662617, 14.91337418,\n 14.91337418],\n [ 6.9183297 , 6.9183297 , 12.15842227, 12.15842227, 14.90756307,\n 14.90756307],\n [ 6.91135203, 6.91135203, 12.16850756, 12.16850756, 14.90256997,\n 14.90256997],\n [ 6.90561144, 6.90561144, 12.17683102, 12.17683102, 14.89843186,\n 14.89843186],\n [ 6.90112687, 6.90112687, 12.18335004, 12.18335004, 14.89517991,\n 14.89517991],\n [ 6.89791305, 6.89791305, 12.18803092, 12.18803092, 14.89283897,\n 14.89283897],\n [ 6.89598055, 6.89598055, 12.19084928, 12.19084928, 14.89142709,\n 14.89142709],\n [ 6.89533567, 6.89533567, 12.19179039, 12.19179039, 14.89095524,\n 14.89095524]])],\n 'eigenvectors': None,\n 'group_velocities': None},\n 'total_dos_dict': {'frequency_points': array([-1.21959488e+00, -1.12531879e+00, -1.03104271e+00, -9.36766620e-01,\n -8.42490534e-01, -7.48214449e-01, -6.53938363e-01, -5.59662277e-01,\n -4.65386192e-01, -3.71110106e-01, -2.76834020e-01, -1.82557935e-01,\n -8.82818488e-02, 5.99423689e-03, 1.00270323e-01, 1.94546408e-01,\n 2.88822494e-01, 3.83098580e-01, 4.77374665e-01, 5.71650751e-01,\n 6.65926837e-01, 7.60202922e-01, 8.54479008e-01, 9.48755094e-01,\n 1.04303118e+00, 1.13730727e+00, 1.23158335e+00, 1.32585944e+00,\n 1.42013552e+00, 1.51441161e+00, 1.60868769e+00, 1.70296378e+00,\n 1.79723987e+00, 1.89151595e+00, 1.98579204e+00, 2.08006812e+00,\n 2.17434421e+00, 2.26862029e+00, 2.36289638e+00, 2.45717246e+00,\n 2.55144855e+00, 2.64572464e+00, 2.74000072e+00, 2.83427681e+00,\n 2.92855289e+00, 3.02282898e+00, 3.11710506e+00, 3.21138115e+00,\n 3.30565724e+00, 3.39993332e+00, 3.49420941e+00, 3.58848549e+00,\n 3.68276158e+00, 3.77703766e+00, 3.87131375e+00, 3.96558984e+00,\n 4.05986592e+00, 4.15414201e+00, 4.24841809e+00, 4.34269418e+00,\n 4.43697026e+00, 4.53124635e+00, 4.62552244e+00, 4.71979852e+00,\n 4.81407461e+00, 4.90835069e+00, 5.00262678e+00, 5.09690286e+00,\n 5.19117895e+00, 5.28545504e+00, 5.37973112e+00, 5.47400721e+00,\n 5.56828329e+00, 5.66255938e+00, 5.75683546e+00, 5.85111155e+00,\n 5.94538764e+00, 6.03966372e+00, 6.13393981e+00, 6.22821589e+00,\n 6.32249198e+00, 6.41676806e+00, 6.51104415e+00, 6.60532024e+00,\n 6.69959632e+00, 6.79387241e+00, 6.88814849e+00, 6.98242458e+00,\n 7.07670066e+00, 7.17097675e+00, 7.26525284e+00, 7.35952892e+00,\n 7.45380501e+00, 7.54808109e+00, 7.64235718e+00, 7.73663326e+00,\n 7.83090935e+00, 7.92518544e+00, 8.01946152e+00, 8.11373761e+00,\n 8.20801369e+00, 8.30228978e+00, 8.39656586e+00, 8.49084195e+00,\n 8.58511804e+00, 8.67939412e+00, 8.77367021e+00, 8.86794629e+00,\n 8.96222238e+00, 9.05649846e+00, 9.15077455e+00, 9.24505064e+00,\n 9.33932672e+00, 9.43360281e+00, 9.52787889e+00, 9.62215498e+00,\n 9.71643106e+00, 9.81070715e+00, 9.90498323e+00, 9.99925932e+00,\n 1.00935354e+01, 1.01878115e+01, 1.02820876e+01, 1.03763637e+01,\n 1.04706397e+01, 1.05649158e+01, 1.06591919e+01, 1.07534680e+01,\n 1.08477441e+01, 1.09420202e+01, 1.10362963e+01, 1.11305723e+01,\n 1.12248484e+01, 1.13191245e+01, 1.14134006e+01, 1.15076767e+01,\n 1.16019528e+01, 1.16962289e+01, 1.17905049e+01, 1.18847810e+01,\n 1.19790571e+01, 1.20733332e+01, 1.21676093e+01, 1.22618854e+01,\n 1.23561615e+01, 1.24504375e+01, 1.25447136e+01, 1.26389897e+01,\n 1.27332658e+01, 1.28275419e+01, 1.29218180e+01, 1.30160941e+01,\n 1.31103701e+01, 1.32046462e+01, 1.32989223e+01, 1.33931984e+01,\n 1.34874745e+01, 1.35817506e+01, 1.36760267e+01, 1.37703027e+01,\n 1.38645788e+01, 1.39588549e+01, 1.40531310e+01, 1.41474071e+01,\n 1.42416832e+01, 1.43359593e+01, 1.44302353e+01, 1.45245114e+01,\n 1.46187875e+01, 1.47130636e+01, 1.48073397e+01, 1.49016158e+01,\n 1.49958919e+01, 1.50901679e+01, 1.51844440e+01, 1.52787201e+01,\n 1.53729962e+01, 1.54672723e+01, 1.55615484e+01, 1.56558245e+01,\n 1.57501005e+01, 1.58443766e+01, 1.59386527e+01, 1.60329288e+01,\n 1.61272049e+01, 1.62214810e+01, 1.63157571e+01, 1.64100331e+01,\n 1.65043092e+01, 1.65985853e+01, 1.66928614e+01, 1.67871375e+01,\n 1.68814136e+01, 1.69756897e+01, 1.70699657e+01, 1.71642418e+01,\n 1.72585179e+01, 1.73527940e+01, 1.74470701e+01, 1.75413462e+01,\n 1.76356223e+01]),\n 'total_dos': array([0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n 0.00000000e+00, 3.17526949e-04, 1.35171618e-03, 2.50831797e-03,\n 3.78733233e-03, 5.26373813e-03, 6.90328284e-03, 8.78451412e-03,\n 1.08845716e-02, 1.31202482e-02, 1.58239881e-02, 1.84817583e-02,\n 2.14099537e-02, 2.44295300e-02, 2.78000795e-02, 3.14939706e-02,\n 3.52413320e-02, 3.92909859e-02, 4.36423577e-02, 4.83495504e-02,\n 5.31903107e-02, 5.81462801e-02, 6.35669356e-02, 6.94844360e-02,\n 7.55171874e-02, 8.19720137e-02, 8.86760193e-02, 9.58023138e-02,\n 1.03099606e-01, 1.11366958e-01, 1.19969573e-01, 1.28656383e-01,\n 1.38210214e-01, 1.48087177e-01, 1.58993039e-01, 1.70577194e-01,\n 1.82773665e-01, 1.96102840e-01, 2.10318186e-01, 2.25609695e-01,\n 2.42775583e-01, 2.61718244e-01, 2.82966510e-01, 3.07071183e-01,\n 3.35572804e-01, 3.71503640e-01, 4.23538191e-01, 5.01245367e-01,\n 5.06757340e-01, 5.10673514e-01, 5.13884731e-01, 5.18635687e-01,\n 5.22215630e-01, 5.26790868e-01, 5.30317993e-01, 5.33703746e-01,\n 5.38149099e-01, 5.41609848e-01, 5.45017573e-01, 5.48177732e-01,\n 5.52308667e-01, 5.54935999e-01, 5.58609041e-01, 5.61624143e-01,\n 5.64469403e-01, 5.68022742e-01, 5.70890330e-01, 5.72980739e-01,\n 5.77439994e-01, 5.83268678e-01, 5.49870464e-01, 4.81961887e-01,\n 4.49243839e-01, 4.26254220e-01, 4.10187378e-01, 3.95199652e-01,\n 3.98624284e-01, 4.05995249e-01, 4.25103229e-01, 4.54252120e-01,\n 4.65563502e-01, 3.65773926e-01, 2.85541037e-01, 2.23526600e-01,\n 1.44473263e-01, 1.04439534e-01, 1.08917911e-01, 1.13417776e-01,\n 1.18953226e-01, 1.24441198e-01, 1.29621905e-01, 1.36164980e-01,\n 1.42605861e-01, 1.49045426e-01, 1.56851391e-01, 1.64582559e-01,\n 1.72682584e-01, 1.82141611e-01, 1.91321788e-01, 2.02261449e-01,\n 2.13762731e-01, 2.26135950e-01, 2.40393404e-01, 2.55442497e-01,\n 2.74046636e-01, 2.93902607e-01, 3.19085171e-01, 3.48960866e-01,\n 3.91473391e-01, 4.54354038e-01, 5.99226889e-01, 6.56603266e-01,\n 4.43486451e-01, 3.58148235e-01, 2.92612110e-01, 2.34458733e-01,\n 1.57664249e-01, 9.44996839e-02, 7.64989495e-02, 6.21782198e-02,\n 7.46273535e-02, 8.86461614e-02, 1.06333999e-01, 1.36147948e-01,\n 1.87831258e-01, 2.67221370e-01, 2.89615750e-01, 3.09688343e-01,\n 3.30425521e-01, 3.30668402e-01, 3.40062237e-01, 3.45284499e-01,\n 3.55917538e-01, 3.60077500e-01, 3.69186627e-01, 3.71502854e-01,\n 3.72120651e-01, 3.48181936e-01, 3.16317708e-01, 2.98435672e-01,\n 2.84862196e-01, 2.74096441e-01, 2.64721157e-01, 2.56360104e-01,\n 2.48761334e-01, 2.41852996e-01, 2.35018844e-01, 2.28859604e-01,\n 2.22571780e-01, 2.16655364e-01, 2.10807826e-01, 2.04860365e-01,\n 1.99221497e-01, 1.93100666e-01, 1.87355107e-01, 2.53244401e-01,\n 8.43177422e-01, 1.43196664e+00, 3.18170027e+00, 2.79552678e+00,\n 3.13543115e+00, 4.55809708e+00, 2.72396129e+00, 1.52338820e+00,\n 1.06733102e+00, 7.67955185e-01, 5.18138351e-01, 2.28096624e-01,\n 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n 0.00000000e+00])},\n 'dynamical_matrix': array([[ 5.50912534e-01-0.00000000e+00j, 1.87768043e-17-4.38872430e-34j,\n 1.92709307e-17+5.81987920e-18j, -3.23420540e-17+4.98906381e-17j,\n -1.68412801e-30+5.84523400e-17j, -3.95652763e-17-3.56372327e-01j],\n [ 1.87768043e-17+4.38872430e-34j, 6.08181944e-01-0.00000000e+00j,\n -1.56143951e-16-1.15555797e-33j, -7.84788746e-30+5.84523400e-17j,\n -3.23420540e-17+2.45450096e-18j, 4.20932852e-30+1.58872850e-17j],\n [ 1.92709307e-17-5.81987920e-18j, -1.56143951e-16+1.15555797e-33j,\n 5.50912534e-01-0.00000000e+00j, -3.95652763e-17-3.56372327e-01j,\n 8.83023845e-30+1.58872850e-17j, -3.23420540e-17-3.36800318e-19j],\n [-3.23420540e-17-4.98906381e-17j, -7.84788746e-30-5.84523400e-17j,\n -3.95652763e-17+3.56372327e-01j, 5.50912534e-01-0.00000000e+00j,\n -9.24016421e-17-9.32340591e-30j, -8.30132400e-17-1.39858661e-29j],\n [-1.68412801e-30-5.84523400e-17j, -3.23420540e-17-2.45450096e-18j,\n 8.83023845e-30-1.58872850e-17j, -9.24016421e-17+9.32340591e-30j,\n 6.08181944e-01-0.00000000e+00j, -1.49226181e-16+4.66355445e-30j],\n [-3.95652763e-17+3.56372327e-01j, 4.20932852e-30-1.58872850e-17j,\n -3.23420540e-17+3.36800318e-19j, -8.30132400e-17+1.39858661e-29j,\n -1.49226181e-16-4.66355445e-30j, 5.50912534e-01-0.00000000e+00j]]),\n 'force_constants': array([[[[ 1.57151912e+01, 9.62277932e-16, 9.62277932e-16],\n [ 2.01508898e-31, 1.57151912e+01, -3.56057418e-15],\n [-6.31781728e-30, -4.83151945e-15, 1.57151912e+01]],\n \n [[-8.88178420e-13, -2.31481372e-29, -6.32321319e-29],\n [ 8.33886532e-31, 1.11022302e-12, -2.01086934e-28],\n [ 3.91666326e-46, -3.53409686e-28, 1.11022302e-12]],\n \n [[ 1.11022302e-12, 7.59032102e-29, 1.18329136e-28],\n [-1.78078948e-29, -8.88178420e-13, -4.17598292e-28],\n [ 5.04870979e-29, 2.72945873e-28, 1.11022302e-12]],\n \n ...,\n \n [[-6.32890635e-13, 5.20587829e-13, -5.20587829e-13],\n [-1.25573862e-13, -5.61838490e-13, -2.31561886e-13],\n [ 1.25573862e-13, -2.31561886e-13, -5.61838490e-13]],\n \n [[-5.61838490e-13, -1.25573862e-13, -2.31561886e-13],\n [ 5.20587829e-13, -6.32890635e-13, -5.20587829e-13],\n [-2.31561886e-13, 1.25573862e-13, -5.61838490e-13]],\n \n [[-1.15412764e-12, -4.39732284e-13, 3.10095250e-14],\n [-4.39732284e-13, -1.15412764e-12, 3.10095250e-14],\n [ 1.56993370e-13, 1.56993370e-13, -7.37047351e-13]]],\n \n \n [[[-8.88178420e-13, -2.31481372e-29, -6.32321319e-29],\n [ 8.33886532e-31, 1.11022302e-12, -2.01086934e-28],\n [ 1.63734993e-45, -3.53409686e-28, 1.11022302e-12]],\n \n [[ 1.57151912e+01, 9.62277932e-16, 9.62277932e-16],\n [ 2.19141532e-31, 1.57151912e+01, -3.56057418e-15],\n [-6.30018465e-30, -4.83151945e-15, 1.57151912e+01]],\n \n [[ 1.59872116e-12, 7.17863424e-29, 1.13595970e-28],\n [ 2.73057674e-29, 1.59872116e-12, -1.11175775e-27],\n [ 5.04870979e-29, -4.03896783e-28, 4.08562073e-12]],\n \n ...,\n \n [[-3.70859075e+00, -2.50222375e+00, 2.50222375e+00],\n [-2.50222375e+00, -3.70859075e+00, 2.50222375e+00],\n [ 2.50222375e+00, 2.50222375e+00, -3.70859075e+00]],\n \n [[-1.15412764e-12, -4.39732284e-13, 3.10095250e-14],\n [-4.39732284e-13, -1.15412764e-12, 3.10095250e-14],\n [ 1.56993370e-13, 1.56993370e-13, -7.37047351e-13]],\n \n [[-5.61838490e-13, -1.25573862e-13, -2.31561886e-13],\n [ 5.20587829e-13, -6.32890635e-13, -5.20587829e-13],\n [-2.31561886e-13, 1.25573862e-13, -5.61838490e-13]]],\n \n \n [[[ 1.11022302e-12, 7.59032102e-29, 1.18329136e-28],\n [-1.78078948e-29, -8.88178420e-13, -4.17598292e-28],\n [ 5.04870979e-29, 2.72945873e-28, 1.11022302e-12]],\n \n [[ 1.59872116e-12, 7.17863424e-29, 1.13595970e-28],\n [ 2.73057674e-29, 1.59872116e-12, -1.11175775e-27],\n [ 5.04870979e-29, -4.03896783e-28, 4.08562073e-12]],\n \n [[ 1.57151912e+01, 9.62277932e-16, 9.62277932e-16],\n [ 2.19141532e-31, 1.57151912e+01, -3.56057418e-15],\n [-6.30018465e-30, -4.83151945e-15, 1.57151912e+01]],\n \n ...,\n \n [[-1.15412764e-12, -4.39732284e-13, 3.10095250e-14],\n [-4.39732284e-13, -1.15412764e-12, 3.10095250e-14],\n [ 1.56993370e-13, 1.56993370e-13, -7.37047351e-13]],\n \n [[-3.70859075e+00, -2.50222375e+00, 2.50222375e+00],\n [-2.50222375e+00, -3.70859075e+00, 2.50222375e+00],\n [ 2.50222375e+00, 2.50222375e+00, -3.70859075e+00]],\n \n [[-6.32890635e-13, 5.20587829e-13, -5.20587829e-13],\n [-1.25573862e-13, -5.61838490e-13, -2.31561886e-13],\n [ 1.25573862e-13, -2.31561886e-13, -5.61838490e-13]]],\n \n \n ...,\n \n \n [[[-6.32890635e-13, 5.20587829e-13, -5.20587829e-13],\n [-1.25573862e-13, -5.61838490e-13, -2.31561886e-13],\n [ 1.25573862e-13, -2.31561886e-13, -5.61838490e-13]],\n \n [[-3.70859075e+00, -2.50222375e+00, 2.50222375e+00],\n [-2.50222375e+00, -3.70859075e+00, 2.50222375e+00],\n [ 2.50222375e+00, 2.50222375e+00, -3.70859075e+00]],\n \n [[-1.15412764e-12, -4.39732284e-13, 3.10095250e-14],\n [-4.39732284e-13, -1.15412764e-12, 3.10095250e-14],\n [ 1.56993370e-13, 1.56993370e-13, -7.37047351e-13]],\n \n ...,\n \n [[ 1.57151912e+01, -2.88683380e-15, -2.88683380e-15],\n [-1.92455586e-15, 1.57151912e+01, -4.83151945e-15],\n [-1.92455586e-15, -3.56057418e-15, 1.57151912e+01]],\n \n [[ 1.59872116e-12, -2.84139296e-28, -6.91248574e-28],\n [-1.83165100e-28, 1.59872116e-12, -1.36396903e-27],\n [-4.81749809e-28, -2.63475263e-28, 4.08562073e-12]],\n \n [[ 1.11022302e-12, 4.85458861e-29, -1.58051213e-28],\n [ 9.61487114e-29, -8.88178420e-13, -4.50532933e-28],\n [-1.17892900e-28, 2.33671810e-28, 1.11022302e-12]]],\n \n \n [[[-5.61838490e-13, -1.25573862e-13, -2.31561886e-13],\n [ 5.20587829e-13, -6.32890635e-13, -5.20587829e-13],\n [-2.31561886e-13, 1.25573862e-13, -5.61838490e-13]],\n \n [[-1.15412764e-12, -4.39732284e-13, 3.10095250e-14],\n [-4.39732284e-13, -1.15412764e-12, 3.10095250e-14],\n [ 1.56993370e-13, 1.56993370e-13, -7.37047351e-13]],\n \n [[-3.70859075e+00, -2.50222375e+00, 2.50222375e+00],\n [-2.50222375e+00, -3.70859075e+00, 2.50222375e+00],\n [ 2.50222375e+00, 2.50222375e+00, -3.70859075e+00]],\n \n ...,\n \n [[ 1.59872116e-12, -2.84139296e-28, -6.91248574e-28],\n [-1.83165100e-28, 1.59872116e-12, -1.36396903e-27],\n [-4.81749809e-28, -2.63475263e-28, 4.08562073e-12]],\n \n [[ 1.57151912e+01, -2.88683380e-15, -2.88683380e-15],\n [-1.92455586e-15, 1.57151912e+01, -4.83151945e-15],\n [-1.92455586e-15, -3.56057418e-15, 1.57151912e+01]],\n \n [[-8.88178420e-13, -7.27309754e-29, -1.12814970e-28],\n [-1.35963107e-28, 1.11022302e-12, -3.53409686e-28],\n [-1.36796994e-28, -2.01086934e-28, 1.11022302e-12]]],\n \n \n [[[-1.15412764e-12, -4.39732284e-13, 3.10095250e-14],\n [-4.39732284e-13, -1.15412764e-12, 3.10095250e-14],\n [ 1.56993370e-13, 1.56993370e-13, -7.37047351e-13]],\n \n [[-5.61838490e-13, -1.25573862e-13, -2.31561886e-13],\n [ 5.20587829e-13, -6.32890635e-13, -5.20587829e-13],\n [-2.31561886e-13, 1.25573862e-13, -5.61838490e-13]],\n \n [[-6.32890635e-13, 5.20587829e-13, -5.20587829e-13],\n [-1.25573862e-13, -5.61838490e-13, -2.31561886e-13],\n [ 1.25573862e-13, -2.31561886e-13, -5.61838490e-13]],\n \n ...,\n \n [[ 1.11022302e-12, 4.85458861e-29, -1.58051213e-28],\n [ 9.61487114e-29, -8.88178420e-13, -4.50532933e-28],\n [-1.17892900e-28, 2.33671810e-28, 1.11022302e-12]],\n \n [[-8.88178420e-13, -7.27309754e-29, -1.12814970e-28],\n [-1.35963107e-28, 1.11022302e-12, -3.53409686e-28],\n [-1.36796994e-28, -2.01086934e-28, 1.11022302e-12]],\n \n [[ 1.57151912e+01, -2.88683380e-15, -2.88683380e-15],\n [-1.92455586e-15, 1.57151912e+01, -4.83151945e-15],\n [-1.92455586e-15, -3.56057418e-15, 1.57151912e+01]]]])}"},"metadata":{}}],"id":"b7532997-2cc3-4404-b108-3c599e4f92e8"},{"cell_type":"markdown","source":"The calcualtion of the finite temperature phonons starts by computing the molecular dynamics trajectory using the \n`calc_molecular_dynamics_phonons_with_lammps()` function. This function is internally linked to [DynaPhoPy](https://abelcarreras.github.io/DynaPhoPy/)\nto return an `dynaphopy.dynamics.Dynamics` object: ","metadata":{},"id":"9080af2d-65ef-4710-80c3-66fd5bad9a76"},{"cell_type":"code","source":"trajectory = calc_molecular_dynamics_phonons_with_lammps(\n structure_ase=structure_ase,\n potential_dataframe=potential_dataframe,\n force_constants=workflow.phonopy.get_force_constants(), \n phonopy_unitcell=workflow.phonopy.get_unitcell(),\n phonopy_primitive_matrix=workflow.phonopy.get_primitive_matrix(),\n phonopy_supercell_matrix=workflow.phonopy.get_supercell_matrix(),\n total_time=2, # ps\n time_step=0.001, # ps\n relaxation_time=5, # ps\n silent=True,\n supercell=[2, 2, 2],\n memmap=False,\n velocity_only=True,\n temperature=600,\n)","metadata":{"trusted":true},"execution_count":14,"outputs":[],"id":"f2aada6d-89de-4fc0-a93d-f6fb43e33e8c"},{"cell_type":"markdown","source":"When a total of 2 picoseconds is selected to compute the finite temperature phonons with a timestep of 1 femto second\nthen this results in a total of 2000 molecular dynamics steps. While more molecular dynamics steps result in more precise\npredictions they also require more computational resources. ","metadata":{},"id":"5b533910-8e65-4c57-91bc-ccfa1e49d4ce"},{"cell_type":"markdown","source":"The postprocessing is executed using the [DynaPhoPy](https://abelcarreras.github.io/DynaPhoPy/) package: ","metadata":{},"id":"58cbd845-ad6e-41e1-b37c-dcc426e110c1"},{"cell_type":"code","source":"calculation = Quasiparticle(trajectory)\ncalculation.select_power_spectra_algorithm(2) # select FFT algorithm\ncalculation.get_renormalized_phonon_dispersion_bands()\nrenormalized_force_constants = calculation.get_renormalized_force_constants().get_array()\nrenormalized_force_constants","metadata":{"trusted":true},"execution_count":15,"outputs":[{"name":"stdout","text":"Using 2000 steps\nUsing Fast Fourier transform (Numpy) function\nset frequency range: 0.0 - 21.200000000000003\n\nQ-point: 1 / 32 [ 0.00000 0.00000 0.00000 ]\nHarmonic frequencies (THz):\n[2.18910938e-06 2.19854601e-06 2.20383682e-06 1.60678991e+01\n 1.60678991e+01 1.60678991e+01]\nCalculating phonon projection power spectra\nProjecting into phonon mode\nProjecting into wave vector\nMD cell size relation: [2 2 2]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\n\nPeak # 1\n----------------------------------------------\nWidth 0.472941 THz\nPosition 0.032545 THz\nArea () (Lorentzian) 0.000000 eV\nArea () (Total) 0.000000 eV\n<|dQ/dt|^2> 0.000000 eV\nOccupation number -0.500000\nFit temperature nan K\nBase line -0.000000 eV * ps\nMaximum height 0.000000 eV * ps\nFitting global error 534601240663.551514\nFrequency shift 0.032543 THz\n\nPeak # 2\n----------------------------------------------\nWidth 0.472941 THz\nPosition 0.032545 THz\nArea () (Lorentzian) 0.000000 eV\nArea () (Total) 0.000000 eV\n<|dQ/dt|^2> 0.000000 eV\nOccupation number -0.500000\nFit temperature nan K\nBase line -0.000000 eV * ps\nMaximum height 0.000000 eV * ps\nFitting global error 534601240663.551514\nFrequency shift 0.032543 THz\n\nPeak # 3\n----------------------------------------------\nWidth 0.472941 THz\nPosition 0.032545 THz\nArea () (Lorentzian) 0.000000 eV\nArea () (Total) 0.000000 eV\n<|dQ/dt|^2> 0.000000 eV\nOccupation number -0.500000\nFit temperature nan K\nBase line -0.000000 eV * ps\nMaximum height 0.000000 eV * ps\nFitting global error 534601240663.551514\nFrequency shift 0.032543 THz\n\nPeak # 4\n----------------------------------------------\nWidth 0.786715 THz\nPosition 15.561772 THz\nArea () (Lorentzian) 0.014497 eV\nArea () (Total) 0.013722 eV\n<|dQ/dt|^2> 0.028993 eV\nOccupation number 2.330539\nFit temperature 332.921392 K\nBase line -0.000016 eV * ps\nMaximum height 0.011731 eV * ps\nFitting global error 0.033291\nFrequency shift -0.506127 THz\n\nPeak # 5\n----------------------------------------------\nWidth 0.786715 THz\nPosition 15.561772 THz\nArea () (Lorentzian) 0.014497 eV\nArea () (Total) 0.013722 eV\n<|dQ/dt|^2> 0.028993 eV\nOccupation number 2.330539\nFit temperature 332.921392 K\nBase line -0.000016 eV * ps\nMaximum height 0.011731 eV * ps\nFitting global error 0.033291\nFrequency shift -0.506127 THz\n\nPeak # 6\n----------------------------------------------\nWidth 0.786715 THz\nPosition 15.561772 THz\nArea () (Lorentzian) 0.014497 eV\nArea () (Total) 0.013722 eV\n<|dQ/dt|^2> 0.028993 eV\nOccupation number 2.330539\nFit temperature 332.921392 K\nBase line -0.000016 eV * ps\nMaximum height 0.011731 eV * ps\nFitting global error 0.033291\nFrequency shift -0.506127 THz\nFixing gamma point 0 frequencies\n\nQ-point: 2 / 32 [ 0.00000 0.25000 0.25000 ]\nHarmonic frequencies (THz):\n[ 4.66397327 4.66397327 6.89816884 15.17048811 15.55567884 15.55567884]\nCalculating phonon projection power spectra\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66397327 4.66397327 6.89816884 15.17048811 15.55567884 15.55567884]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66397327 4.66397327 6.89816884 15.17048811 15.55567884 15.55567884]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66397327 4.66397327 6.89816884 15.17048811 15.55567884 15.55567884]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\n\nPeak # 1\n----------------------------------------------\nWidth 0.520799 THz\nPosition 4.512511 THz\nArea () (Lorentzian) 0.018113 eV\nArea () (Total) 0.016786 eV\n<|dQ/dt|^2> 0.036226 eV\nOccupation number 11.696398\nFit temperature 420.145058 K\nBase line -0.000042 eV * ps\nMaximum height 0.022141 eV * ps\nFitting global error 0.016919\nFrequency shift -0.151463 THz\n\nPeak # 2\n----------------------------------------------\nWidth 0.520799 THz\nPosition 4.512511 THz\nArea () (Lorentzian) 0.018113 eV\nArea () (Total) 0.016786 eV\n<|dQ/dt|^2> 0.036226 eV\nOccupation number 11.696398\nFit temperature 420.145058 K\nBase line -0.000042 eV * ps\nMaximum height 0.022141 eV * ps\nFitting global error 0.016919\nFrequency shift -0.151463 THz\n\nPeak # 3\n----------------------------------------------\nWidth 0.884643 THz\nPosition 6.802090 THz\nArea () (Lorentzian) 0.034381 eV\nArea () (Total) 0.042075 eV\n<|dQ/dt|^2> 0.068762 eV\nOccupation number 14.858240\nFit temperature 797.669964 K\nBase line 0.000413 eV * ps\nMaximum height 0.024742 eV * ps\nFitting global error 0.034947\nFrequency shift -0.096079 THz\n\nPeak # 4\n----------------------------------------------\nWidth 0.816224 THz\nPosition 14.710909 THz\nArea () (Lorentzian) 0.050561 eV\nArea () (Total) 0.056117 eV\n<|dQ/dt|^2> 0.101122 eV\nOccupation number 9.943370\nFit temperature 1172.575784 K\nBase line 0.000331 eV * ps\nMaximum height 0.039435 eV * ps\nFitting global error 0.029537\nFrequency shift -0.459579 THz\n\nPeak # 5\n----------------------------------------------\nWidth 0.906396 THz\nPosition 15.069443 THz\nArea () (Lorentzian) 0.021839 eV\nArea () (Total) 0.023547 eV\n<|dQ/dt|^2> 0.043678 eV\nOccupation number 3.903565\nFit temperature 504.681860 K\nBase line 0.000115 eV * ps\nMaximum height 0.015339 eV * ps\nFitting global error 0.023072\nFrequency shift -0.486236 THz\n\nPeak # 6\n----------------------------------------------\nWidth 0.906396 THz\nPosition 15.069443 THz\nArea () (Lorentzian) 0.021839 eV\nArea () (Total) 0.023547 eV\n<|dQ/dt|^2> 0.043678 eV\nOccupation number 3.903565\nFit temperature 504.681860 K\nBase line 0.000115 eV * ps\nMaximum height 0.015339 eV * ps\nFitting global error 0.023072\nFrequency shift -0.486236 THz\n\nQ-point: 3 / 32 [ 0.00000 0.50000 0.50000 ]\nHarmonic frequencies (THz):\n[ 6.89533567 6.89533567 12.19179039 12.19179039 14.89095524 14.89095524]\nCalculating phonon projection power spectra\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 6.89533567 6.89533567 12.19179039 12.19179039 14.89095524 14.89095524]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 6.89533567 6.89533567 12.19179039 12.19179039 14.89095524 14.89095524]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 6.89533567 6.89533567 12.19179039 12.19179039 14.89095524 14.89095524]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nHarmonic frequencies (THz):\n[ 6.89533567 6.89533567 12.19179039 12.19179039 14.89095524 14.89095524]\n\nPeak # 1\n----------------------------------------------\nWidth 0.579259 THz\nPosition 6.561490 THz\nArea () (Lorentzian) 0.025327 eV\nArea () (Total) 0.027369 eV\n<|dQ/dt|^2> 0.050654 eV\nOccupation number 11.228659\nFit temperature 587.462942 K\nBase line 0.000121 eV * ps\nMaximum height 0.027835 eV * ps\nFitting global error 0.025639\nFrequency shift -0.333845 THz\n\nPeak # 2\n----------------------------------------------\nWidth 0.579259 THz\nPosition 6.561490 THz\nArea () (Lorentzian) 0.025327 eV\nArea () (Total) 0.027369 eV\n<|dQ/dt|^2> 0.050654 eV\nOccupation number 11.228659\nFit temperature 587.462942 K\nBase line 0.000121 eV * ps\nMaximum height 0.027835 eV * ps\nFitting global error 0.025639\nFrequency shift -0.333845 THz\n\nPeak # 3\n----------------------------------------------\nWidth 0.605260 THz\nPosition 11.933579 THz\nArea () (Lorentzian) 0.030516 eV\nArea () (Total) 0.034730 eV\n<|dQ/dt|^2> 0.061032 eV\nOccupation number 7.270035\nFit temperature 707.271378 K\nBase line 0.000225 eV * ps\nMaximum height 0.032097 eV * ps\nFitting global error 0.023688\nFrequency shift -0.258211 THz\n\nPeak # 4\n----------------------------------------------\nWidth 0.605260 THz\nPosition 11.933579 THz\nArea () (Lorentzian) 0.030516 eV\nArea () (Total) 0.034730 eV\n<|dQ/dt|^2> 0.061032 eV\nOccupation number 7.270035\nFit temperature 707.271378 K\nBase line 0.000225 eV * ps\nMaximum height 0.032097 eV * ps\nFitting global error 0.023688\nFrequency shift -0.258211 THz\n\nPeak # 5\n----------------------------------------------\nWidth 0.634083 THz\nPosition 14.446261 THz\nArea () (Lorentzian) 0.042334 eV\nArea () (Total) 0.048339 eV\n<|dQ/dt|^2> 0.084669 eV\nOccupation number 8.404323\nFit temperature 981.504236 K\nBase line 0.000327 eV * ps\nMaximum height 0.042504 eV * ps\nFitting global error 0.015367\nFrequency shift -0.444694 THz\n\nPeak # 6\n----------------------------------------------\nWidth 0.634083 THz\nPosition 14.446261 THz\nArea () (Lorentzian) 0.042334 eV\nArea () (Total) 0.048339 eV\n<|dQ/dt|^2> 0.084669 eV\nOccupation number 8.404323\nFit temperature 981.504236 K\nBase line 0.000327 eV * ps\nMaximum height 0.042504 eV * ps\nFitting global error 0.015367\nFrequency shift -0.444694 THz\n\nQ-point: 4 / 32 [ 0.00000 0.75000 0.75000 ]\nHarmonic frequencies (THz):\n[ 4.66397327 4.66397327 6.89816884 15.17048811 15.55567884 15.55567884]\nCalculating phonon projection power spectra\nProjecting into phonon mode\nProjecting into wave vector\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66397327 4.66397327 6.89816884 15.17048811 15.55567884 15.55567884]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66397327 4.66397327 6.89816884 15.17048811 15.55567884 15.55567884]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nHarmonic frequencies (THz):\n[ 4.66397327 4.66397327 6.89816884 15.17048811 15.55567884 15.55567884]\n\nPeak # 1\n----------------------------------------------\nWidth 0.513715 THz\nPosition 4.501773 THz\nArea () (Lorentzian) 0.024073 eV\nArea () (Total) 0.021107 eV\n<|dQ/dt|^2> 0.048147 eV\nOccupation number 15.748632\nFit temperature 558.542395 K\nBase line -0.000113 eV * ps\nMaximum height 0.029833 eV * ps\nFitting global error 0.014530\nFrequency shift -0.162201 THz\n\nPeak # 2\n----------------------------------------------\nWidth 0.513715 THz\nPosition 4.501773 THz\nArea () (Lorentzian) 0.024073 eV\nArea () (Total) 0.021107 eV\n<|dQ/dt|^2> 0.048147 eV\nOccupation number 15.748632\nFit temperature 558.542395 K\nBase line -0.000113 eV * ps\nMaximum height 0.029833 eV * ps\nFitting global error 0.014530\nFrequency shift -0.162201 THz\n\nPeak # 3\n----------------------------------------------\nWidth 0.840450 THz\nPosition 6.833587 THz\nArea () (Lorentzian) 0.047750 eV\nArea () (Total) 0.056965 eV\n<|dQ/dt|^2> 0.095499 eV\nOccupation number 20.731750\nFit temperature 1108.018836 K\nBase line 0.000500 eV * ps\nMaximum height 0.036169 eV * ps\nFitting global error 0.027488\nFrequency shift -0.064582 THz\n\nPeak # 4\n----------------------------------------------\nWidth 0.864892 THz\nPosition 14.761576 THz\nArea () (Lorentzian) 0.036911 eV\nArea () (Total) 0.042399 eV\n<|dQ/dt|^2> 0.073823 eV\nOccupation number 7.097870\nFit temperature 855.439740 K\nBase line 0.000312 eV * ps\nMaximum height 0.027169 eV * ps\nFitting global error 0.033172\nFrequency shift -0.408912 THz\n\nPeak # 5\n----------------------------------------------\nWidth 0.690963 THz\nPosition 15.047965 THz\nArea () (Lorentzian) 0.029989 eV\nArea () (Total) 0.029744 eV\n<|dQ/dt|^2> 0.059977 eV\nOccupation number 5.555378\nFit temperature 694.419722 K\nBase line 0.000024 eV * ps\nMaximum height 0.027630 eV * ps\nFitting global error 0.016899\nFrequency shift -0.507714 THz\n\nPeak # 6\n----------------------------------------------\nWidth 0.690963 THz\nPosition 15.047965 THz\nArea () (Lorentzian) 0.029989 eV\nArea () (Total) 0.029744 eV\n<|dQ/dt|^2> 0.059977 eV\nOccupation number 5.555378\nFit temperature 694.419722 K\nBase line 0.000024 eV * ps\nMaximum height 0.027630 eV * ps\nFitting global error 0.016899\nFrequency shift -0.507714 THz\n\nQ-point: 5 / 32 [ 0.25000 0.00000 0.25000 ]\nHarmonic frequencies (THz):\n[ 4.66397327 4.66397327 6.89816884 15.17048811 15.55567884 15.55567884]\nSkipped, equivalent to [0. 0.25 0.25]\n\nQ-point: 6 / 32 [ 0.25000 0.25000 0.50000 ]\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nCalculating phonon projection power spectra\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\n\nPeak # 1\n----------------------------------------------\nWidth 0.528069 THz\nPosition 4.477183 THz\nArea () (Lorentzian) 0.042227 eV\nArea () (Total) 0.040708 eV\n<|dQ/dt|^2> 0.084453 eV\nOccupation number 28.158070\nFit temperature 979.942696 K\nBase line -0.000024 eV * ps\nMaximum height 0.050907 eV * ps\nFitting global error 0.012211\nFrequency shift -0.190696 THz\n\nPeak # 2\n----------------------------------------------\nWidth 0.890764 THz\nPosition 6.695151 THz\nArea () (Lorentzian) 0.080890 eV\nArea () (Total) 0.093342 eV\n<|dQ/dt|^2> 0.161780 eV\nOccupation number 36.211198\nFit temperature 1877.262480 K\nBase line 0.000706 eV * ps\nMaximum height 0.057811 eV * ps\nFitting global error 0.020823\nFrequency shift -0.265939 THz\n\nPeak # 3\n----------------------------------------------\nWidth 0.879866 THz\nPosition 8.803246 THz\nArea () (Lorentzian) 0.043886 eV\nArea () (Total) 0.052217 eV\n<|dQ/dt|^2> 0.087772 eV\nOccupation number 14.647678\nFit temperature 1018.178741 K\nBase line 0.000449 eV * ps\nMaximum height 0.031753 eV * ps\nFitting global error 0.028094\nFrequency shift -0.202601 THz\n\nPeak # 4\n----------------------------------------------\nWidth 0.757650 THz\nPosition 13.371395 THz\nArea () (Lorentzian) 0.021906 eV\nArea () (Total) 0.026391 eV\n<|dQ/dt|^2> 0.043812 eV\nOccupation number 4.477924\nFit temperature 506.700041 K\nBase line 0.000237 eV * ps\nMaximum height 0.018407 eV * ps\nFitting global error 0.037761\nFrequency shift -0.353521 THz\n\nPeak # 5\n----------------------------------------------\nWidth 0.668122 THz\nPosition 14.983805 THz\nArea () (Lorentzian) 0.023784 eV\nArea () (Total) 0.024310 eV\n<|dQ/dt|^2> 0.047568 eV\nOccupation number 4.323155\nFit temperature 550.026025 K\nBase line 0.000052 eV * ps\nMaximum height 0.022663 eV * ps\nFitting global error 0.013903\nFrequency shift -0.442641 THz\n\nPeak # 6\n----------------------------------------------\nWidth 0.793991 THz\nPosition 15.147433 THz\nArea () (Lorentzian) 0.067893 eV\nArea () (Total) 0.078771 eV\n<|dQ/dt|^2> 0.135785 eV\nOccupation number 13.119087\nFit temperature 1575.015042 K\nBase line 0.000607 eV * ps\nMaximum height 0.054436 eV * ps\nFitting global error 0.022076\nFrequency shift -0.435323 THz\n\nQ-point: 7 / 32 [ 0.25000 0.50000 0.75000 ]\nHarmonic frequencies (THz):\n[ 7.54249562 7.54249562 11.3503204 11.3503204 15.23833788 15.23833788]\nCalculating phonon projection power spectra\nProjecting into phonon mode\nProjecting into wave vector\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 7.54249562 7.54249562 11.3503204 11.3503204 15.23833788 15.23833788]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 7.54249562 7.54249562 11.3503204 11.3503204 15.23833788 15.23833788]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 7.54249562 7.54249562 11.3503204 11.3503204 15.23833788 15.23833788]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 7.54249562 7.54249562 11.3503204 11.3503204 15.23833788 15.23833788]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 7.54249562 7.54249562 11.3503204 11.3503204 15.23833788 15.23833788]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 7.54249562 7.54249562 11.3503204 11.3503204 15.23833788 15.23833788]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 7.54249562 7.54249562 11.3503204 11.3503204 15.23833788 15.23833788]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 7.54249562 7.54249562 11.3503204 11.3503204 15.23833788 15.23833788]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 7.54249562 7.54249562 11.3503204 11.3503204 15.23833788 15.23833788]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nHarmonic frequencies (THz):\n[ 7.54249562 7.54249562 11.3503204 11.3503204 15.23833788 15.23833788]\n\nPeak # 1\n----------------------------------------------\nWidth 0.907126 THz\nPosition 7.246330 THz\nArea () (Lorentzian) 0.086024 eV\nArea () (Total) 0.104037 eV\n<|dQ/dt|^2> 0.172047 eV\nOccupation number 35.571453\nFit temperature 1996.396673 K\nBase line 0.000973 eV * ps\nMaximum height 0.060371 eV * ps\nFitting global error 0.020717\nFrequency shift -0.296166 THz\n\nPeak # 2\n----------------------------------------------\nWidth 0.907126 THz\nPosition 7.246330 THz\nArea () (Lorentzian) 0.086024 eV\nArea () (Total) 0.104037 eV\n<|dQ/dt|^2> 0.172047 eV\nOccupation number 35.571453\nFit temperature 1996.396673 K\nBase line 0.000973 eV * ps\nMaximum height 0.060371 eV * ps\nFitting global error 0.020717\nFrequency shift -0.296166 THz\n\nPeak # 3\n----------------------------------------------\nWidth 0.639111 THz\nPosition 11.064519 THz\nArea () (Lorentzian) 0.021923 eV\nArea () (Total) 0.025269 eV\n<|dQ/dt|^2> 0.043847 eV\nOccupation number 5.520612\nFit temperature 507.650279 K\nBase line 0.000178 eV * ps\nMaximum height 0.021838 eV * ps\nFitting global error 0.024793\nFrequency shift -0.285801 THz\n\nPeak # 4\n----------------------------------------------\nWidth 0.639111 THz\nPosition 11.064519 THz\nArea () (Lorentzian) 0.021923 eV\nArea () (Total) 0.025269 eV\n<|dQ/dt|^2> 0.043847 eV\nOccupation number 5.520612\nFit temperature 507.650279 K\nBase line 0.000178 eV * ps\nMaximum height 0.021838 eV * ps\nFitting global error 0.024793\nFrequency shift -0.285801 THz\n\nPeak # 5\n----------------------------------------------\nWidth 0.828868 THz\nPosition 14.801411 THz\nArea () (Lorentzian) 0.039716 eV\nArea () (Total) 0.043893 eV\n<|dQ/dt|^2> 0.079432 eV\nOccupation number 7.653201\nFit temperature 920.616703 K\nBase line 0.000252 eV * ps\nMaximum height 0.030504 eV * ps\nFitting global error 0.031513\nFrequency shift -0.436927 THz\n\nPeak # 6\n----------------------------------------------\nWidth 0.828868 THz\nPosition 14.801411 THz\nArea () (Lorentzian) 0.039716 eV\nArea () (Total) 0.043893 eV\n<|dQ/dt|^2> 0.079432 eV\nOccupation number 7.653201\nFit temperature 920.616703 K\nBase line 0.000252 eV * ps\nMaximum height 0.030504 eV * ps\nFitting global error 0.031513\nFrequency shift -0.436927 THz\n\nQ-point: 8 / 32 [ 0.25000 0.75000 0.00000 ]\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nCalculating phonon projection power spectra\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\n\nPeak # 1\n----------------------------------------------\nWidth 0.522556 THz\nPosition 4.483775 THz\nArea () (Lorentzian) 0.037188 eV\nArea () (Total) 0.034635 eV\n<|dQ/dt|^2> 0.074376 eV\nOccupation number 24.701308\nFit temperature 862.984199 K\nBase line -0.000079 eV * ps\nMaximum height 0.045305 eV * ps\nFitting global error 0.012393\nFrequency shift -0.184104 THz\n\nPeak # 2\n----------------------------------------------\nWidth 0.898262 THz\nPosition 6.707279 THz\nArea () (Lorentzian) 0.067887 eV\nArea () (Total) 0.079212 eV\n<|dQ/dt|^2> 0.135775 eV\nOccupation number 30.254428\nFit temperature 1575.464581 K\nBase line 0.000635 eV * ps\nMaximum height 0.048114 eV * ps\nFitting global error 0.023773\nFrequency shift -0.253812 THz\n\nPeak # 3\n----------------------------------------------\nWidth 0.835420 THz\nPosition 8.803037 THz\nArea () (Lorentzian) 0.013150 eV\nArea () (Total) 0.016324 eV\n<|dQ/dt|^2> 0.026301 eV\nOccupation number 4.039095\nFit temperature 303.968669 K\nBase line 0.000166 eV * ps\nMaximum height 0.010021 eV * ps\nFitting global error 0.059276\nFrequency shift -0.202810 THz\n\nPeak # 4\n----------------------------------------------\nWidth 0.730369 THz\nPosition 13.368389 THz\nArea () (Lorentzian) 0.016678 eV\nArea () (Total) 0.021238 eV\n<|dQ/dt|^2> 0.033357 eV\nOccupation number 3.290872\nFit temperature 384.834117 K\nBase line 0.000234 eV * ps\nMaximum height 0.014538 eV * ps\nFitting global error 0.045590\nFrequency shift -0.356527 THz\n\nPeak # 5\n----------------------------------------------\nWidth 0.674322 THz\nPosition 14.951363 THz\nArea () (Lorentzian) 0.036155 eV\nArea () (Total) 0.038613 eV\n<|dQ/dt|^2> 0.072311 eV\nOccupation number 6.847775\nFit temperature 837.833762 K\nBase line 0.000157 eV * ps\nMaximum height 0.034134 eV * ps\nFitting global error 0.014619\nFrequency shift -0.475083 THz\n\nPeak # 6\n----------------------------------------------\nWidth 0.902049 THz\nPosition 15.073779 THz\nArea () (Lorentzian) 0.021209 eV\nArea () (Total) 0.022490 eV\n<|dQ/dt|^2> 0.042418 eV\nOccupation number 3.775244\nFit temperature 489.986369 K\nBase line 0.000094 eV * ps\nMaximum height 0.014968 eV * ps\nFitting global error 0.022499\nFrequency shift -0.508977 THz\n\nQ-point: 9 / 32 [ 0.50000 0.00000 0.50000 ]\nHarmonic frequencies (THz):\n[ 6.89533567 6.89533567 12.19179039 12.19179039 14.89095524 14.89095524]\nSkipped, equivalent to [0. 0.5 0.5]\n\nQ-point: 10 / 32 [ 0.50000 0.25000 0.75000 ]\nHarmonic frequencies (THz):\n[ 7.54249562 7.54249562 11.3503204 11.3503204 15.23833788 15.23833788]\nSkipped, equivalent to [0.25 0.5 0.75]\n\nQ-point: 11 / 32 [ 0.50000 0.50000 0.00000 ]\nHarmonic frequencies (THz):\n[ 6.89533567 6.89533567 12.19179039 12.19179039 14.89095524 14.89095524]\nSkipped, equivalent to [0. 0.5 0.5]\n\nQ-point: 12 / 32 [ 0.50000 0.75000 0.25000 ]\nHarmonic frequencies (THz):\n[ 7.54249562 7.54249562 11.3503204 11.3503204 15.23833788 15.23833788]\nSkipped, equivalent to [0.25 0.5 0.75]\n\nQ-point: 13 / 32 [ 0.75000 0.00000 0.75000 ]\nHarmonic frequencies (THz):\n[ 4.66397327 4.66397327 6.89816884 15.17048811 15.55567884 15.55567884]\nSkipped, equivalent to [0. 0.75 0.75]\n\nQ-point: 14 / 32 [ 0.75000 0.25000 0.00000 ]\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nCalculating phonon projection power spectra\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\n\nPeak # 1\n----------------------------------------------\nWidth 0.521991 THz\nPosition 4.484158 THz\nArea () (Lorentzian) 0.036566 eV\nArea () (Total) 0.033926 eV\n<|dQ/dt|^2> 0.073131 eV\nOccupation number 24.277431\nFit temperature 848.537722 K\nBase line -0.000083 eV * ps\nMaximum height 0.044595 eV * ps\nFitting global error 0.012530\nFrequency shift -0.183721 THz\n\nPeak # 2\n----------------------------------------------\nWidth 0.899617 THz\nPosition 6.704187 THz\nArea () (Lorentzian) 0.061915 eV\nArea () (Total) 0.071943 eV\n<|dQ/dt|^2> 0.123830 eV\nOccupation number 27.561609\nFit temperature 1436.830957 K\nBase line 0.000565 eV * ps\nMaximum height 0.043814 eV * ps\nFitting global error 0.025259\nFrequency shift -0.256903 THz\n\nPeak # 3\n----------------------------------------------\nWidth 0.840794 THz\nPosition 8.777709 THz\nArea () (Lorentzian) 0.009473 eV\nArea () (Total) 0.011919 eV\n<|dQ/dt|^2> 0.018945 eV\nOccupation number 2.779076\nFit temperature 218.134959 K\nBase line 0.000127 eV * ps\nMaximum height 0.007172 eV * ps\nFitting global error 0.078651\nFrequency shift -0.228137 THz\n\nPeak # 4\n----------------------------------------------\nWidth 0.814357 THz\nPosition 13.294667 THz\nArea () (Lorentzian) 0.012215 eV\nArea () (Total) 0.016240 eV\n<|dQ/dt|^2> 0.024429 eV\nOccupation number 2.291679\nFit temperature 280.431129 K\nBase line 0.000205 eV * ps\nMaximum height 0.009549 eV * ps\nFitting global error 0.061800\nFrequency shift -0.430249 THz\n\nPeak # 5\n----------------------------------------------\nWidth 0.706639 THz\nPosition 14.920962 THz\nArea () (Lorentzian) 0.033379 eV\nArea () (Total) 0.034927 eV\n<|dQ/dt|^2> 0.066758 eV\nOccupation number 6.297384\nFit temperature 773.297146 K\nBase line 0.000113 eV * ps\nMaximum height 0.030072 eV * ps\nFitting global error 0.021423\nFrequency shift -0.505484 THz\n\nPeak # 6\n----------------------------------------------\nWidth 0.901748 THz\nPosition 15.110122 THz\nArea () (Lorentzian) 0.021178 eV\nArea () (Total) 0.023049 eV\n<|dQ/dt|^2> 0.042356 eV\nOccupation number 3.758704\nFit temperature 489.249960 K\nBase line 0.000121 eV * ps\nMaximum height 0.014951 eV * ps\nFitting global error 0.028888\nFrequency shift -0.472634 THz\n\nQ-point: 15 / 32 [ 0.75000 0.50000 0.25000 ]\nHarmonic frequencies (THz):\n[ 7.54249562 7.54249562 11.3503204 11.3503204 15.23833788 15.23833788]\nSkipped, equivalent to [0.25 0.5 0.75]\n\nQ-point: 16 / 32 [ 0.75000 0.75000 0.50000 ]\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nCalculating phonon projection power spectra\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\n\nPeak # 1\n----------------------------------------------\nWidth 0.521626 THz\nPosition 4.484270 THz\nArea () (Lorentzian) 0.040369 eV\nArea () (Total) 0.037483 eV\n<|dQ/dt|^2> 0.080738 eV\nOccupation number 26.853838\nFit temperature 936.816651 K\nBase line -0.000091 eV * ps\nMaximum height 0.049268 eV * ps\nFitting global error 0.011912\nFrequency shift -0.183609 THz\n\nPeak # 2\n----------------------------------------------\nWidth 0.898998 THz\nPosition 6.706088 THz\nArea () (Lorentzian) 0.060155 eV\nArea () (Total) 0.069989 eV\n<|dQ/dt|^2> 0.120310 eV\nOccupation number 26.756362\nFit temperature 1395.986799 K\nBase line 0.000553 eV * ps\nMaximum height 0.042598 eV * ps\nFitting global error 0.025425\nFrequency shift -0.255003 THz\n\nPeak # 3\n----------------------------------------------\nWidth 0.847729 THz\nPosition 8.762397 THz\nArea () (Lorentzian) 0.009423 eV\nArea () (Total) 0.011871 eV\n<|dQ/dt|^2> 0.018846 eV\nOccupation number 2.767683\nFit temperature 216.985862 K\nBase line 0.000127 eV * ps\nMaximum height 0.007077 eV * ps\nFitting global error 0.078128\nFrequency shift -0.243450 THz\n\nPeak # 4\n----------------------------------------------\nWidth 0.822505 THz\nPosition 13.296042 THz\nArea () (Lorentzian) 0.012441 eV\nArea () (Total) 0.016789 eV\n<|dQ/dt|^2> 0.024882 eV\nOccupation number 2.343156\nFit temperature 285.744350 K\nBase line 0.000221 eV * ps\nMaximum height 0.009629 eV * ps\nFitting global error 0.060141\nFrequency shift -0.428874 THz\n\nPeak # 5\n----------------------------------------------\nWidth 0.692941 THz\nPosition 14.927237 THz\nArea () (Lorentzian) 0.037140 eV\nArea () (Total) 0.038953 eV\n<|dQ/dt|^2> 0.074280 eV\nOccupation number 7.060040\nFit temperature 860.720270 K\nBase line 0.000129 eV * ps\nMaximum height 0.034121 eV * ps\nFitting global error 0.019502\nFrequency shift -0.499209 THz\n\nPeak # 6\n----------------------------------------------\nWidth 0.873800 THz\nPosition 15.089642 THz\nArea () (Lorentzian) 0.020289 eV\nArea () (Total) 0.022192 eV\n<|dQ/dt|^2> 0.040578 eV\nOccupation number 3.585462\nFit temperature 468.522604 K\nBase line 0.000120 eV * ps\nMaximum height 0.014782 eV * ps\nFitting global error 0.026540\nFrequency shift -0.493114 THz\n\nQ-point: 17 / 32 [ 0.25000 0.25000 0.00000 ]\nHarmonic frequencies (THz):\n[ 4.66397327 4.66397327 6.89816884 15.17048811 15.55567884 15.55567884]\nSkipped, equivalent to [0.25 0. 0.25]\n\nQ-point: 18 / 32 [ 0.25000 0.50000 0.25000 ]\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nSkipped, equivalent to [0.25 0.25 0.5 ]\n\nQ-point: 19 / 32 [ 0.25000 0.75000 0.50000 ]\nHarmonic frequencies (THz):\n[ 7.54249562 7.54249562 11.3503204 11.3503204 15.23833788 15.23833788]\nSkipped, equivalent to [0.25 0.5 0.75]\n\nQ-point: 20 / 32 [ 0.25000 0.00000 0.75000 ]\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nSkipped, equivalent to [0.75 0.75 0.5 ]\n\nQ-point: 21 / 32 [ 0.50000 0.25000 0.25000 ]\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nSkipped, equivalent to [0.25 0.5 0.25]\n\nQ-point: 22 / 32 [ 0.50000 0.50000 0.50000 ]\nHarmonic frequencies (THz):\n[ 4.66787904 4.66787904 11.31121369 13.15483786 15.42644585 15.42644585]\nCalculating phonon projection power spectra\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 4.66787904 11.31121369 13.15483786 15.42644585 15.42644585]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 4.66787904 11.31121369 13.15483786 15.42644585 15.42644585]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 4.66787904 11.31121369 13.15483786 15.42644585 15.42644585]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 4.66787904 11.31121369 13.15483786 15.42644585 15.42644585]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 4.66787904 11.31121369 13.15483786 15.42644585 15.42644585]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 4.66787904 11.31121369 13.15483786 15.42644585 15.42644585]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 4.66787904 11.31121369 13.15483786 15.42644585 15.42644585]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nHarmonic frequencies (THz):\n[ 4.66787904 4.66787904 11.31121369 13.15483786 15.42644585 15.42644585]\n\nPeak # 1\n----------------------------------------------\nWidth 0.531374 THz\nPosition 4.473540 THz\nArea () (Lorentzian) 0.029343 eV\nArea () (Total) 0.027597 eV\n<|dQ/dt|^2> 0.058686 eV\nOccupation number 19.430578\nFit temperature 680.883835 K\nBase line -0.000049 eV * ps\nMaximum height 0.035155 eV * ps\nFitting global error 0.015967\nFrequency shift -0.194339 THz\n\nPeak # 2\n----------------------------------------------\nWidth 0.531374 THz\nPosition 4.473540 THz\nArea () (Lorentzian) 0.029343 eV\nArea () (Total) 0.027597 eV\n<|dQ/dt|^2> 0.058686 eV\nOccupation number 19.430578\nFit temperature 680.883835 K\nBase line -0.000049 eV * ps\nMaximum height 0.035155 eV * ps\nFitting global error 0.015967\nFrequency shift -0.194339 THz\n\nPeak # 3\n----------------------------------------------\nWidth 0.538267 THz\nPosition 10.993312 THz\nArea () (Lorentzian) 0.062518 eV\nArea () (Total) 0.058145 eV\n<|dQ/dt|^2> 0.125036 eV\nOccupation number 16.779904\nFit temperature 1450.579488 K\nBase line -0.000158 eV * ps\nMaximum height 0.073941 eV * ps\nFitting global error 0.008088\nFrequency shift -0.317902 THz\n\nPeak # 4\n----------------------------------------------\nWidth 0.776728 THz\nPosition 12.855329 THz\nArea () (Lorentzian) 0.017087 eV\nArea () (Total) 0.019549 eV\n<|dQ/dt|^2> 0.034174 eV\nOccupation number 3.538695\nFit temperature 394.533163 K\nBase line 0.000136 eV * ps\nMaximum height 0.014005 eV * ps\nFitting global error 0.044153\nFrequency shift -0.299509 THz\n\nPeak # 5\n----------------------------------------------\nWidth 0.629022 THz\nPosition 14.951429 THz\nArea () (Lorentzian) 0.062984 eV\nArea () (Total) 0.068437 eV\n<|dQ/dt|^2> 0.125967 eV\nOccupation number 12.300000\nFit temperature 1461.048221 K\nBase line 0.000325 eV * ps\nMaximum height 0.063744 eV * ps\nFitting global error 0.012067\nFrequency shift -0.475017 THz\n\nPeak # 6\n----------------------------------------------\nWidth 0.629022 THz\nPosition 14.951429 THz\nArea () (Lorentzian) 0.062984 eV\nArea () (Total) 0.068437 eV\n<|dQ/dt|^2> 0.125967 eV\nOccupation number 12.300000\nFit temperature 1461.048221 K\nBase line 0.000325 eV * ps\nMaximum height 0.063744 eV * ps\nFitting global error 0.012067\nFrequency shift -0.475017 THz\n\nQ-point: 23 / 32 [ 0.50000 0.75000 0.75000 ]\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nSkipped, equivalent to [0.25 0. 0.75]\n\nQ-point: 24 / 32 [ 0.50000 0.00000 0.00000 ]\nHarmonic frequencies (THz):\n[ 4.66787904 4.66787904 11.31121369 13.15483786 15.42644585 15.42644585]\nSkipped, equivalent to [0.5 0.5 0.5]\n\nQ-point: 25 / 32 [ 0.75000 0.25000 0.50000 ]\nHarmonic frequencies (THz):\n[ 7.54249562 7.54249562 11.3503204 11.3503204 15.23833788 15.23833788]\nSkipped, equivalent to [0.25 0.5 0.75]\n\nQ-point: 26 / 32 [ 0.75000 0.50000 0.75000 ]\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nSkipped, equivalent to [0.25 0. 0.75]\n\nQ-point: 27 / 32 [ 0.75000 0.75000 0.00000 ]\nHarmonic frequencies (THz):\n[ 4.66397327 4.66397327 6.89816884 15.17048811 15.55567884 15.55567884]\nSkipped, equivalent to [0. 0.75 0.75]\n\nQ-point: 28 / 32 [ 0.75000 0.00000 0.25000 ]\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nSkipped, equivalent to [0.75 0.5 0.75]\n\nQ-point: 29 / 32 [ 0.00000 0.25000 0.75000 ]\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nSkipped, equivalent to [0.75 0.5 0.75]\n\nQ-point: 30 / 32 [ 0.00000 0.50000 0.00000 ]\nHarmonic frequencies (THz):\n[ 4.66787904 4.66787904 11.31121369 13.15483786 15.42644585 15.42644585]\nSkipped, equivalent to [0.5 0.5 0.5]\n\nQ-point: 31 / 32 [ 0.00000 0.75000 0.25000 ]\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nSkipped, equivalent to [0.75 0.5 0.75]\n\nQ-point: 32 / 32 [ 0.00000 0.00000 0.50000 ]\nHarmonic frequencies (THz):\n[ 4.66787904 4.66787904 11.31121369 13.15483786 15.42644585 15.42644585]\nSkipped, equivalent to [0.5 0.5 0.5]\n","output_type":"stream"},{"execution_count":15,"output_type":"execute_result","data":{"text/plain":"array([[[[ 1.47903370e+01, -7.27856464e-04, 8.95058148e-04],\n [-7.27856464e-04, 1.47903370e+01, 8.95058148e-04],\n [ 8.95058148e-04, 8.95058148e-04, 1.47889684e+01]],\n\n [[-8.53720262e-03, 7.27856464e-04, -8.95058148e-04],\n [ 7.27856464e-04, 7.22093450e-03, 8.95058148e-04],\n [-8.95058148e-04, 8.95058148e-04, 8.58955541e-03]],\n\n [[ 7.22093450e-03, 7.27856464e-04, 8.95058148e-04],\n [ 7.27856464e-04, -8.53720262e-03, -8.95058148e-04],\n [ 8.95058148e-04, -8.95058148e-04, 8.58955541e-03]],\n\n ...,\n\n [[-4.44967060e-03, 1.03899911e-04, -2.92254418e-03],\n [ 1.03899911e-04, 3.86955298e-03, 9.18164273e-03],\n [-2.92254418e-03, 9.18164273e-03, 2.64253878e-03]],\n\n [[ 3.86955298e-03, 1.03899911e-04, 9.18164273e-03],\n [ 1.03899911e-04, -4.44967060e-03, -2.92254418e-03],\n [ 9.18164273e-03, -2.92254418e-03, 2.64253878e-03]],\n\n [[ 4.35320043e-03, -8.69200588e-04, 7.43830393e-03],\n [-8.69200588e-04, 4.35320043e-03, 7.43830393e-03],\n [ 7.43830393e-03, 7.43830393e-03, 1.98168743e-03]]],\n\n\n [[[-8.53720262e-03, 7.27856464e-04, -8.95058148e-04],\n [ 7.27856464e-04, 7.22093450e-03, 8.95058148e-04],\n [-8.95058148e-04, 8.95058148e-04, 8.58955541e-03]],\n\n [[ 1.47903370e+01, -7.27856464e-04, 8.95058148e-04],\n [-7.27856464e-04, 1.47903370e+01, 8.95058148e-04],\n [ 8.95058148e-04, 8.95058148e-04, 1.47889684e+01]],\n\n [[ 5.72248779e-03, -7.27856464e-04, -8.95058148e-04],\n [-7.27856464e-04, 5.72248779e-03, -8.95058148e-04],\n [-8.95058148e-04, -8.95058148e-04, 1.30276827e-02]],\n\n ...,\n\n [[-3.48139117e+00, -2.36186546e+00, 2.36468410e+00],\n [-2.36186546e+00, -3.48139117e+00, 2.36468410e+00],\n [ 2.36468410e+00, 2.36468410e+00, -3.48016416e+00]],\n\n [[ 4.35320043e-03, -8.69200588e-04, 7.43830393e-03],\n [-8.69200588e-04, 4.35320043e-03, 7.43830393e-03],\n [ 7.43830393e-03, 7.43830393e-03, 1.98168743e-03]],\n\n [[ 3.86955298e-03, 1.03899911e-04, 9.18164273e-03],\n [ 1.03899911e-04, -4.44967060e-03, -2.92254418e-03],\n [ 9.18164273e-03, -2.92254418e-03, 2.64253878e-03]]],\n\n\n [[[ 7.22093450e-03, 7.27856464e-04, 8.95058148e-04],\n [ 7.27856464e-04, -8.53720262e-03, -8.95058148e-04],\n [ 8.95058148e-04, -8.95058148e-04, 8.58955541e-03]],\n\n [[ 5.72248779e-03, -7.27856464e-04, -8.95058148e-04],\n [-7.27856464e-04, 5.72248779e-03, -8.95058148e-04],\n [-8.95058148e-04, -8.95058148e-04, 1.30276827e-02]],\n\n [[ 1.47903370e+01, -7.27856464e-04, 8.95058148e-04],\n [-7.27856464e-04, 1.47903370e+01, 8.95058148e-04],\n [ 8.95058148e-04, 8.95058148e-04, 1.47889684e+01]],\n\n ...,\n\n [[ 4.35320043e-03, -8.69200588e-04, 7.43830393e-03],\n [-8.69200588e-04, 4.35320043e-03, 7.43830393e-03],\n [ 7.43830393e-03, 7.43830393e-03, 1.98168743e-03]],\n\n [[-3.48139117e+00, -2.36186546e+00, 2.36468410e+00],\n [-2.36186546e+00, -3.48139117e+00, 2.36468410e+00],\n [ 2.36468410e+00, 2.36468410e+00, -3.48016416e+00]],\n\n [[-4.44967060e-03, 1.03899911e-04, -2.92254418e-03],\n [ 1.03899911e-04, 3.86955298e-03, 9.18164273e-03],\n [-2.92254418e-03, 9.18164273e-03, 2.64253878e-03]]],\n\n\n ...,\n\n\n [[[-4.44967060e-03, 1.03899911e-04, -2.92254418e-03],\n [ 1.03899911e-04, 3.86955298e-03, 9.18164273e-03],\n [-2.92254418e-03, 9.18164273e-03, 2.64253878e-03]],\n\n [[-3.48139117e+00, -2.36186546e+00, 2.36468410e+00],\n [-2.36186546e+00, -3.48139117e+00, 2.36468410e+00],\n [ 2.36468410e+00, 2.36468410e+00, -3.48016416e+00]],\n\n [[ 4.35320043e-03, -8.69200588e-04, 7.43830393e-03],\n [-8.69200588e-04, 4.35320043e-03, 7.43830393e-03],\n [ 7.43830393e-03, 7.43830393e-03, 1.98168743e-03]],\n\n ...,\n\n [[ 1.47903370e+01, -7.27856464e-04, 8.95058148e-04],\n [-7.27856464e-04, 1.47903370e+01, 8.95058148e-04],\n [ 8.95058148e-04, 8.95058148e-04, 1.47889684e+01]],\n\n [[ 5.72248779e-03, -7.27856464e-04, -8.95058148e-04],\n [-7.27856464e-04, 5.72248779e-03, -8.95058148e-04],\n [-8.95058148e-04, -8.95058148e-04, 1.30276827e-02]],\n\n [[ 7.22093450e-03, 7.27856464e-04, 8.95058148e-04],\n [ 7.27856464e-04, -8.53720262e-03, -8.95058148e-04],\n [ 8.95058148e-04, -8.95058148e-04, 8.58955541e-03]]],\n\n\n [[[ 3.86955298e-03, 1.03899911e-04, 9.18164273e-03],\n [ 1.03899911e-04, -4.44967060e-03, -2.92254418e-03],\n [ 9.18164273e-03, -2.92254418e-03, 2.64253878e-03]],\n\n [[ 4.35320043e-03, -8.69200588e-04, 7.43830393e-03],\n [-8.69200588e-04, 4.35320043e-03, 7.43830393e-03],\n [ 7.43830393e-03, 7.43830393e-03, 1.98168743e-03]],\n\n [[-3.48139117e+00, -2.36186546e+00, 2.36468410e+00],\n [-2.36186546e+00, -3.48139117e+00, 2.36468410e+00],\n [ 2.36468410e+00, 2.36468410e+00, -3.48016416e+00]],\n\n ...,\n\n [[ 5.72248779e-03, -7.27856464e-04, -8.95058148e-04],\n [-7.27856464e-04, 5.72248779e-03, -8.95058148e-04],\n [-8.95058148e-04, -8.95058148e-04, 1.30276827e-02]],\n\n [[ 1.47903370e+01, -7.27856464e-04, 8.95058148e-04],\n [-7.27856464e-04, 1.47903370e+01, 8.95058148e-04],\n [ 8.95058148e-04, 8.95058148e-04, 1.47889684e+01]],\n\n [[-8.53720262e-03, 7.27856464e-04, -8.95058148e-04],\n [ 7.27856464e-04, 7.22093450e-03, 8.95058148e-04],\n [-8.95058148e-04, 8.95058148e-04, 8.58955541e-03]]],\n\n\n [[[ 4.35320043e-03, -8.69200588e-04, 7.43830393e-03],\n [-8.69200588e-04, 4.35320043e-03, 7.43830393e-03],\n [ 7.43830393e-03, 7.43830393e-03, 1.98168743e-03]],\n\n [[ 3.86955298e-03, 1.03899911e-04, 9.18164273e-03],\n [ 1.03899911e-04, -4.44967060e-03, -2.92254418e-03],\n [ 9.18164273e-03, -2.92254418e-03, 2.64253878e-03]],\n\n [[-4.44967060e-03, 1.03899911e-04, -2.92254418e-03],\n [ 1.03899911e-04, 3.86955298e-03, 9.18164273e-03],\n [-2.92254418e-03, 9.18164273e-03, 2.64253878e-03]],\n\n ...,\n\n [[ 7.22093450e-03, 7.27856464e-04, 8.95058148e-04],\n [ 7.27856464e-04, -8.53720262e-03, -8.95058148e-04],\n [ 8.95058148e-04, -8.95058148e-04, 8.58955541e-03]],\n\n [[-8.53720262e-03, 7.27856464e-04, -8.95058148e-04],\n [ 7.27856464e-04, 7.22093450e-03, 8.95058148e-04],\n [-8.95058148e-04, 8.95058148e-04, 8.58955541e-03]],\n\n [[ 1.47903370e+01, -7.27856464e-04, 8.95058148e-04],\n [-7.27856464e-04, 1.47903370e+01, 8.95058148e-04],\n [ 8.95058148e-04, 8.95058148e-04, 1.47889684e+01]]]])"},"metadata":{}}],"id":"54169376-3978-4c25-b1d6-509030a4cea7"},{"cell_type":"markdown","source":"It calculates the re-normalized force constants which can then be used to calculate the finite temperature properties. ","metadata":{},"id":"2eb26d68-9d7e-45de-9b97-013a8e7e11bb"},{"cell_type":"markdown","source":"In addition the [DynaPhoPy](https://abelcarreras.github.io/DynaPhoPy/) package can be used to directly compare the \nfinite temperature phonon spectrum with the 0K phonon spectrum calulated with the finite displacement method: ","metadata":{},"id":"30bdcd29-a41b-4781-a2cd-6af0ba290883"},{"cell_type":"code","source":"calculation.plot_renormalized_phonon_dispersion_bands()","metadata":{"trusted":true},"execution_count":16,"outputs":[{"output_type":"display_data","data":{"text/plain":"
","image/png":"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"},"metadata":{}}],"id":"8d8239ad-30eb-4f7a-a5aa-91e5030fa74d"},{"cell_type":"markdown","source":"### Langevin Thermostat \nIn addition to the molecular dynamics implemented in the LAMMPS simulation code, the `atomistics` package also provides\nthe `LangevinWorkflow` which implements molecular dynamics independent of the specific simulation code. \n","metadata":{},"id":"c5bada5c-706c-4d5c-9141-1d6bd146d445"},{"cell_type":"code","source":"from ase.build import bulk\nfrom atomistics.calculators import evaluate_with_lammps_library, get_potential_by_name\nfrom atomistics.workflows import LangevinWorkflow\nfrom pylammpsmpi import LammpsASELibrary\n\nsteps = 300\npotential_dataframe = get_potential_by_name(\n potential_name='1999--Mishin-Y--Al--LAMMPS--ipr1',\n resource_path=\"static/lammps\"\n)\nworkflow = LangevinWorkflow(\n structure=bulk(\"Al\", cubic=True).repeat([2, 2, 2]), \n temperature=1000.0,\n overheat_fraction=2.0,\n damping_timescale=100.0,\n time_step=1,\n)\nlmp = LammpsASELibrary(\n working_directory=None,\n cores=1,\n comm=None,\n logger=None,\n log_file=None,\n library=None,\n diable_log_file=True,\n)\neng_pot_lst, eng_kin_lst = [], []\nfor i in range(steps):\n task_dict = workflow.generate_structures()\n result_dict = evaluate_with_lammps_library(\n task_dict=task_dict,\n potential_dataframe=potential_dataframe,\n lmp=lmp,\n )\n eng_pot, eng_kin = workflow.analyse_structures(output_dict=result_dict)\n eng_pot_lst.append(eng_pot)\n eng_kin_lst.append(eng_kin)\nlmp.close()","metadata":{"trusted":true},"execution_count":17,"outputs":[],"id":"fa69a7f8-940a-4fb9-aae3-1ac68d4255f2"},{"cell_type":"markdown","source":"The advantage of this implementation is that the user can directly interact with the simulation between the individual\nmolecular dynamics simulation steps. This provides a lot of flexibility to prototype new simulation methods. The input\nparameters of the `LangevinWorkflow` are:\n\n* `structure` the `ase.atoms.Atoms` object which is used as initial structure for the molecular dynamics calculation \n* `temperature` the temperature of the molecular dynamics calculation given in Kelvin\n* `overheat_fraction` the over heating fraction of the Langevin thermostat\n* `damping_timescale` the damping timescale of the Langevin thermostat \n* `time_step` the time steps of the Langevin thermostat\n","metadata":{},"id":"d77f71c6-7afd-496d-a3bf-db517623d159"},{"cell_type":"markdown","source":"## Harmonic Approximation \nThe harmonic approximation is implemented in two variations, once with constant volume and once including the volume \nexpansion at finite temperature also known as quasi-harmonic approximation. Both of these are based on the [phonopy](https://phonopy.github.io/phonopy/)\npackage. ","metadata":{},"id":"6944d8c5-718d-4d87-956c-d456c151c331"},{"cell_type":"markdown","source":"### Phonons \nTo calculate the phonons at a fixed volume the `PhonopyWorkflow` is used:","metadata":{},"id":"4f699026-d1a8-47a3-b354-6c8572550a50"},{"cell_type":"code","source":"from ase.build import bulk\nfrom atomistics.calculators import evaluate_with_lammps, get_potential_by_name\nfrom atomistics.workflows import PhonopyWorkflow\nfrom phonopy.units import VaspToTHz\n\npotential_dataframe = get_potential_by_name(\n potential_name='1999--Mishin-Y--Al--LAMMPS--ipr1',\n resource_path=\"static/lammps\"\n)\nworkflow = PhonopyWorkflow(\n structure=bulk(\"Al\", cubic=True), \n interaction_range=10,\n factor=VaspToTHz,\n displacement=0.01,\n dos_mesh=20,\n primitive_matrix=None,\n number_of_snapshots=None,\n)\ntask_dict = workflow.generate_structures()\nresult_dict = evaluate_with_lammps(\n task_dict=task_dict,\n potential_dataframe=potential_dataframe,\n)\nphonopy_dict = workflow.analyse_structures(output_dict=result_dict)","metadata":{"trusted":true},"execution_count":18,"outputs":[],"id":"7ac74f80-d613-4a96-b841-5a2973b949a9"},{"cell_type":"markdown","source":"The `PhonopyWorkflow` takes the following inputs: \n\n* `structure` the `ase.atoms.Atoms` object to calculate the phonon spectrum\n* `interaction_range` the cutoff radius to consider for identifying the interaction between the atoms\n* `factor` conversion factor, typically just `phonopy.units.VaspToTHz` \n* `displacement` displacement to calculate the forces \n* `dos_mesh` mesh for the density of states \n* `primitive_matrix` primitive matrix\n* `number_of_snapshots` number of snapshots to calculate\n\nIn addition to the phonon properties, the `PhonopyWorkflow` also enables the calculation of thermal properties: ","metadata":{},"id":"0528bcb2-55ea-4df0-a0b6-71c99dbd9f57"},{"cell_type":"code","source":"tp_dict = workflow.get_thermal_properties(\n t_min=1, \n t_max=1500, \n t_step=50, \n temperatures=None,\n cutoff_frequency=None,\n pretend_real=False,\n band_indices=None,\n is_projection=False,\n)\nprint(tp_dict)","metadata":{"trusted":true},"execution_count":19,"outputs":[{"name":"stdout","text":"{'temperatures': array([1.000e+00, 5.100e+01, 1.010e+02, 1.510e+02, 2.010e+02, 2.510e+02,\n 3.010e+02, 3.510e+02, 4.010e+02, 4.510e+02, 5.010e+02, 5.510e+02,\n 6.010e+02, 6.510e+02, 7.010e+02, 7.510e+02, 8.010e+02, 8.510e+02,\n 9.010e+02, 9.510e+02, 1.001e+03, 1.051e+03, 1.101e+03, 1.151e+03,\n 1.201e+03, 1.251e+03, 1.301e+03, 1.351e+03, 1.401e+03, 1.451e+03,\n 1.501e+03]), 'volumes': array([66.430125, 66.430125, 66.430125, 66.430125, 66.430125, 66.430125,\n 66.430125, 66.430125, 66.430125, 66.430125, 66.430125, 66.430125,\n 66.430125, 66.430125, 66.430125, 66.430125, 66.430125, 66.430125,\n 66.430125, 66.430125, 66.430125, 66.430125, 66.430125, 66.430125,\n 66.430125, 66.430125, 66.430125, 66.430125, 66.430125, 66.430125,\n 66.430125]), 'free_energy': array([ 0.14914132, 0.14837894, 0.13954171, 0.11738723, 0.08264779,\n 0.03712237, -0.01759836, -0.08025513, -0.14986079, -0.22563203,\n -0.30693668, -0.39325592, -0.48415731, -0.57927552, -0.67829812,\n -0.78095507, -0.88701079, -0.99625805, -1.10851315, -1.22361223,\n -1.3414082 , -1.46176834, -1.58457228, -1.70971039, -1.8370824 ,\n -1.96659625, -2.09816715, -2.23171671, -2.3671723 , -2.5044664 ,\n -2.64353611]), 'entropy': array([1.10364016e-08, 5.98829810e+00, 2.96478195e+01, 5.54593816e+01,\n 7.80099308e+01, 9.71787932e+01, 1.13608521e+02, 1.27894607e+02,\n 1.40492150e+02, 1.51738264e+02, 1.61883985e+02, 1.71119149e+02,\n 1.79589851e+02, 1.87410480e+02, 1.94672040e+02, 2.01447985e+02,\n 2.07798389e+02, 2.13772961e+02, 2.19413270e+02, 2.24754417e+02,\n 2.29826293e+02, 2.34654555e+02, 2.39261386e+02, 2.43666089e+02,\n 2.47885561e+02, 2.51934678e+02, 2.55826598e+02, 2.59573021e+02,\n 2.63184393e+02, 2.66670075e+02, 2.70038493e+02]), 'heat_capacity': array([1.78544597e-07, 1.73410821e+01, 5.37349237e+01, 7.35976295e+01,\n 8.34733324e+01, 8.87978444e+01, 9.19287453e+01, 9.39060819e+01,\n 9.52277477e+01, 9.61520364e+01, 9.68225162e+01, 9.73237288e+01,\n 9.77079209e+01, 9.80087218e+01, 9.82485402e+01, 9.84427587e+01,\n 9.86022130e+01, 9.87347097e+01, 9.88459861e+01, 9.89403338e+01,\n 9.90210141e+01, 9.90905402e+01, 9.91508741e+01, 9.92035655e+01,\n 9.92498509e+01, 9.92907269e+01, 9.93270039e+01, 9.93593459e+01,\n 9.93883017e+01, 9.94143276e+01, 9.94378055e+01])}\n","output_type":"stream"}],"id":"467a9752-e842-43ef-9233-96663b7086dd"},{"cell_type":"markdown","source":"The calculation of the thermal properties takes additional inputs: \n\n* `t_min` minimum temperature\n* `t_max` maximum temperature\n* `t_step` temperature step \n* `temperatures` alternative to `t_min`, `t_max` and `t_step` the array of temperatures can be defined directly\n* `cutoff_frequency` cutoff frequency to exclude the contributions of frequencies below a certain cut off\n* `pretend_real` use the absolute values of the phonon frequencies\n* `band_indices` select bands based on their indices \n* `is_projection` multiplies the squared eigenvectors - not recommended\n\nFurthermore, also the dynamical matrix can be directly calculated with the `PhonopyWorkflow`:\n","metadata":{},"id":"d8c4ac48-293a-45f9-bf77-cca3cc275e52"},{"cell_type":"code","source":"mat = workflow.get_dynamical_matrix()\nmat","metadata":{"trusted":true},"execution_count":20,"outputs":[{"execution_count":20,"output_type":"execute_result","data":{"text/plain":"array([[ 1.72794621e-01, 6.42929783e-20, -6.22838227e-20,\n -1.55150365e-18, 1.42759084e-35, -1.50515236e-19,\n 4.11475061e-18, 4.82197337e-20, 9.98736570e-02,\n 8.87128656e-18, -1.02675017e-33, -1.50493730e-19],\n [ 6.42929783e-20, 1.40379905e-01, 6.83112895e-20,\n 2.05216191e-35, 8.80589092e-18, 1.94854949e-33,\n 1.60732446e-20, 1.02868765e-18, -1.60732446e-20,\n -1.10192213e-34, 8.80589092e-18, 2.23061078e-36],\n [-6.22838227e-20, 6.83112895e-20, 1.72794621e-01,\n -1.50493730e-19, 1.25694783e-34, 8.87128656e-18,\n 9.98736570e-02, 3.21464892e-20, 0.00000000e+00,\n -1.50515236e-19, 1.47219713e-35, -1.55150365e-18],\n [-1.55150365e-18, 2.05216191e-35, -1.50493730e-19,\n 1.72794621e-01, -6.63021339e-20, 6.42929783e-20,\n 8.87128656e-18, -1.03065371e-33, -1.50493730e-19,\n 1.85163778e-17, 8.03662229e-20, 9.98736570e-02],\n [ 1.42759084e-35, 8.80589092e-18, 1.25694783e-34,\n -6.63021339e-20, 1.40379905e-01, 6.42929783e-20,\n -2.28392231e-33, 8.80589092e-18, 2.67635707e-36,\n 0.00000000e+00, 0.00000000e+00, -1.60732446e-20],\n [-1.50515236e-19, 1.94854949e-33, 8.87128656e-18,\n 6.42929783e-20, 6.42929783e-20, 1.72794621e-01,\n -1.50515236e-19, -4.46122155e-37, -1.55150365e-18,\n 9.98736570e-02, 0.00000000e+00, -1.85163778e-17],\n [ 4.11475061e-18, 1.60732446e-20, 9.98736570e-02,\n 8.87128656e-18, -2.28392231e-33, -1.50515236e-19,\n 1.72794621e-01, 6.63021339e-20, -6.42929783e-20,\n -1.55150365e-18, 6.24500783e-36, -1.50493730e-19],\n [ 4.82197337e-20, 1.02868765e-18, 3.21464892e-20,\n -1.03065371e-33, 8.80589092e-18, -4.46122155e-37,\n 6.63021339e-20, 1.40379905e-01, 6.83112895e-20,\n 1.07069317e-35, 8.80589092e-18, -6.89481791e-34],\n [ 9.98736570e-02, -1.60732446e-20, 0.00000000e+00,\n -1.50493730e-19, 2.67635707e-36, -1.55150365e-18,\n -6.42929783e-20, 6.83112895e-20, 1.72794621e-01,\n -1.50515236e-19, 1.81950725e-33, 8.87128656e-18],\n [ 8.87128656e-18, -1.10192213e-34, -1.50515236e-19,\n 1.85163778e-17, 0.00000000e+00, 9.98736570e-02,\n -1.55150365e-18, 1.07069317e-35, -1.50515236e-19,\n 1.72794621e-01, 6.42929783e-20, -6.22838227e-20],\n [-1.02675017e-33, 8.80589092e-18, 1.47219713e-35,\n 8.03662229e-20, 0.00000000e+00, 0.00000000e+00,\n 6.24500783e-36, 8.80589092e-18, 1.81950725e-33,\n 6.42929783e-20, 1.40379905e-01, 6.83112895e-20],\n [-1.50493730e-19, 2.23061078e-36, -1.55150365e-18,\n 9.98736570e-02, -1.60732446e-20, -1.85163778e-17,\n -1.50493730e-19, -6.89481791e-34, 8.87128656e-18,\n -6.22838227e-20, 6.83112895e-20, 1.72794621e-01]])"},"metadata":{}}],"id":"0856938b-b1cd-40ce-95b7-4605f10ee7a4"},{"cell_type":"markdown","source":"Or alternatively the hesse matrix:","metadata":{},"id":"93bc3fbe-fe43-42d4-aaf9-12ef9994e923"},{"cell_type":"code","source":"mat = workflow.get_hesse_matrix()\nmat","metadata":{"trusted":true},"execution_count":21,"outputs":[{"execution_count":21,"output_type":"execute_result","data":{"text/plain":"array([[ 4.50127147e-02, -1.92714960e-33, 8.52306995e-33, ...,\n -6.63514216e-05, 8.82979633e-06, 5.93920137e-05],\n [-5.07378488e-34, 4.50127147e-02, 5.07378488e-34, ...,\n 8.82979633e-06, -6.63514216e-05, 5.93920137e-05],\n [ 5.07378488e-34, -5.07378488e-34, 4.50127147e-02, ...,\n 5.93659141e-05, 5.93659141e-05, 1.73512126e-05],\n ...,\n [-6.63514216e-05, 8.82979633e-06, 5.93920137e-05, ...,\n 4.50127147e-02, -1.92714960e-33, 8.52306995e-33],\n [ 8.82979633e-06, -6.63514216e-05, 5.93920137e-05, ...,\n -5.07378488e-34, 4.50127147e-02, 5.07378488e-34],\n [ 5.93659141e-05, 5.93659141e-05, 1.73512126e-05, ...,\n 5.07378488e-34, -5.07378488e-34, 4.50127147e-02]])"},"metadata":{}}],"id":"c3154b6d-50c1-4327-b7cc-00f48b31fd37"},{"cell_type":"markdown","source":"Finally, also the function to calculate the band structure is directly available on the `PhonopyWorkflow`: ","metadata":{},"id":"ebc0a064-af95-42e4-854e-67bdb1065ac6"},{"cell_type":"code","source":"band_structure = workflow.get_band_structure(\n npoints=101, \n with_eigenvectors=False, \n with_group_velocities=False\n)","metadata":{"trusted":true},"execution_count":22,"outputs":[],"id":"a9655fa5-bf39-47f2-ae30-0450b40bf252"},{"cell_type":"markdown","source":"This band structure can also be visualised using the built-in plotting function: ","metadata":{},"id":"e8d2dcce-a5c6-4301-8c0e-bf0ca11043e9"},{"cell_type":"code","source":"workflow.plot_band_structure()","metadata":{"trusted":true},"execution_count":23,"outputs":[{"execution_count":23,"output_type":"execute_result","data":{"text/plain":""},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"
","image/png":"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"},"metadata":{}}],"id":"4ad1f1e4-9496-4e99-afa0-fd67c72c26f4"},{"cell_type":"markdown","source":"Just like the desnsity of states which can be plotted using:","metadata":{},"id":"ae251474-875a-4af2-9290-74e9785490cd"},{"cell_type":"code","source":"workflow.plot_dos()","metadata":{"trusted":true},"execution_count":24,"outputs":[{"execution_count":24,"output_type":"execute_result","data":{"text/plain":""},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"
","image/png":"iVBORw0KGgoAAAANSUhEUgAAAjcAAAHFCAYAAAAOmtghAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAABz+ElEQVR4nO3deXhTdfY/8HeWNt13utEWWpayyo6WHcEiKIiow7iCjuMXd+0wKurMOPob66COjKIwjAgyuKCDC64DyibKvsu+tLSULnRNm7ZJk9zfH8m9bejeJrm56fv1PH0em9ykn4banJ5zPuejEgRBABEREZGXUMu9ACIiIiJnYnBDREREXoXBDREREXkVBjdERETkVRjcEBERkVdhcENERERehcENEREReRUGN0RERORVGNwQERGRV2FwQ+Qiq1evhkqlkj60Wi0SEhJw7733Ii8vr9F1+/btk3G1rrV161aH18LX1xfdunXD2LFj8dxzz+HChQvNPnbXrl247bbbEBcXB19fX8TGxuLWW2/Fzp07m7x+9+7duPnmm5GUlASdToeYmBikpaXhD3/4g6u+vTabP3++w+tw5QcROYdW7gUQebtVq1ahX79+qKmpwfbt25GZmYlt27bh6NGjCAwMlHt5bvXyyy9j8uTJsFgsKCkpwe7du/Hee+/hjTfewL///W/ceeedDte/9dZbeOKJJzB69GgsXrwYPXr0QE5ODt5++22MGzcO//znP/HII49I13/zzTeYNWsWJk2ahMWLFyMuLg75+fnYt28fPv74Y7z++uvu/pYb8ff3x+bNm+VeBpF3E4jIJVatWiUAEPbu3etw+5/+9CcBgLB27doWr/MmW7ZsEQAIn376aaP7SkpKhGHDhglarVY4cuSIdPuOHTsEtVot3HjjjUJdXZ3DY+rq6oQbb7xRUKvVwo4dO6TbJ0yYIPTq1avR9YIgCBaLxYnfUcfMmzdPCAwMlHsZEoPBIPcSiFyCZSkiN7vmmmsAoFEpprKyEg8++CCioqIQGRmJOXPm4NKlSw7XWK1WLF68GP369YNOp0N0dDTuueceXLx40eG6SZMmYdCgQdi7dy/Gjx+PgIAApKSk4JVXXoHVanW4NicnB3fddReio6Oh0+nQv39/vP766w7XZWdnQ6VS4bXXXsM//vEPJCcnIygoCGlpadi1a1enXo+IiAj861//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dgKVIAiCTHEVERERkdOx54aIiIi8CoMbIiIi8ioMboiIiMirMLghIiIir8LghoiIiLwKgxsiIiLyKgxuiIiIyKswuCEiasX8+fOhUqmgUqnwxRdfdLmvT6Q0DG6IuqCGb5YNPxqOaSdH119/PfLz8zF9+nSsXr26ydev4cfWrVuxevVqhIWFNfl87QlU/vnPfyI/P9953wyRl+PZUkRd1PXXX49Vq1Y53NatW7dG15lMJvj6+rprWR5Lp9NJpyjPnTsX119/vXTfnDlzMGjQILz44ovSbREREcjOznbK1w4NDUVoaKhTnouoK2DmhqiLEt+sG35oNBpMmjQJjzzyCDIyMhAVFYXrrrsOAHD8+HHMmDEDQUFBiImJwd13343i4mLp+QwGA+655x4EBQUhLi4Or7/+OiZNmoQnnnhCuqapbEVYWBhWr14tfZ6Xl4e5c+ciPDwckZGRuOmmmxyChPnz52P27Nl47bXXEBcXh8jISDz88MOoq6uTrjEajXjqqaeQmJgInU6HPn36YOXKlRAEAb1798Zrr73msIZff/0VarUa586da9Nr5+/v7/C6+fr6IiAgoNFtbfXCCy80mf1p+LoQUdsxuCGiRt5//31otVr8/PPP+Ne//oX8/HxMnDgRQ4cOxb59+/D999+jsLAQv/nNb6TH/PGPf8SWLVvw+eefY+PGjdi6dSv279/frq9bXV2NyZMnIygoCNu3b8eOHTsQFBSE66+/HiaTSbpuy5YtOHfuHLZs2YL3338fq1evdggE7rnnHnz88cd48803ceLECSxfvhxBQUFQqVS47777GmWs3nvvPYwfPx69evXq2AvWSQsXLkR+fr708dprryEgIAAjR46UZT1ESseyFFEX9fXXXyMoKEj6fPr06fj0008BAL1798bixYul+/785z9j+PDhePnll6Xb3nvvPSQmJuL06dOIj4/HypUrsWbNGinT8/777yMhIaFda/r444+hVqvx7rvvQqVSAQBWrVqFsLAwbN26Fenp6QCA8PBwLF26FBqNBv369cMNN9yAH3/8Eb///e9x+vRpfPLJJ9i0aROmTp0KAEhJSZG+xr333os///nP2LNnD0aPHo26ujqsXbsWr776arvW2lYVFRUOr3NTgoKCpGt27dqF559/Hu+//z4GDRrkkjUReTsGN0Rd1OTJk7Fs2TLp88DAQOm/r8wY7N+/H1u2bGnyTfrcuXOoqamByWRCWlqadHtERARSU1Pbtab9+/fj7NmzCA4Odri9trbWoWQ0cOBAaDQa6fO4uDgcPXoUAHDo0CFoNBpMnDixya8RFxeHG264Ae+99x5Gjx6Nr7/+GrW1tbjtttvatda2Cg4OxoEDBxrd3qdPn0a35eTkYPbs2Vi4cKFDVoyI2ofBDVEXFRgYiN69ezd7X0NWqxUzZ87E3//+90bXxsXF4cyZM236miqVCoIgONzWsFfGarVixIgR+OCDDxo9tmGzs4+PT6PntVqtAGz9MK25//77cffdd+ONN97AqlWrMHfuXAQEBLTpe2gvtVrd7OvckMFgwKxZs5CWlubQmExE7cfghohaNXz4cKxfvx49e/aEVtv410bv3r3h4+ODXbt2ISkpCQBQVlaG06dPO2RQunXr5rCl+cyZM6iurnb4OuvWrUN0dDRCQkI6tNbBgwfDarVi27ZtUlnqSjNmzEBgYCCWLVuG7777Dtu3b+/Q13IWQRBw1113wWq14j//+Y9UkiOijmFDMRG16uGHH0ZpaSluv/127NmzB+fPn8fGjRtx3333wWKxICgoCL/73e/wxz/+ET/++CN+/fVXzJ8/H2q146+Ya6+9FkuXLsWBAwewb98+LFiwwCELc+eddyIqKgo33XQTfvrpJ2RlZWHbtm14/PHHcfHixTattWfPnpg3bx7uu+8+fPHFF8jKysLWrVvxySefSNdoNBrMnz8fixYtQu/evR3KaXJ44YUX8MMPP+Bf//oXqqqqUFBQgIKCAtTU1Mi6LiKlYnBDRK2Kj4/Hzz//DIvFgmnTpmHQoEF4/PHHERoaKgUwr776KiZMmIBZs2Zh6tSpGDduHEaMGOHwPK+//joSExMxYcIE3HHHHVi4cKFDOSggIADbt29HUlIS5syZg/79++O+++5DTU1NuzI5y5Ytw6233oqHHnoI/fr1w+9//3sYDAaHa373u9/BZDLhvvvu68Qr4xzbtm1DVVUVxowZg7i4OOlj3bp1ci+NSJFUwpUFcCIiJ5k0aRKGDh2KJUuWyL2URn7++WdMmjQJFy9eRExMTIvXzp8/H+Xl5bIffaBSqfD5559j9uzZsq6DyNMxc0NEXYrRaMTZs2fxpz/9Cb/5zW9aDWxE4tb5r7/+2sUrbGzBggWtbicnonrM3BCRy3hi5mb16tX43e9+h6FDh2LDhg3o3r17q48pKiqCXq8HYNsdduVuMleT++sTKQ2DGyIiIvIqLEsRERGRV2FwQ0RERF6FwQ0RERF5FQY3RERE5FUY3BAREZFXYXBDREREXoXBDREREXkVBjdERETkVRjcEBERkVf5/zo08WksLTeaAAAAAElFTkSuQmCC"},"metadata":{}}],"id":"82da60b3-3930-4ff1-879e-65895112aecb"},{"cell_type":"markdown","source":"### Quasi-harmonic Approximation \nTo include the volume expansion with finite temperature the `atomistics` package implements the `QuasiHarmonicWorkflow`:","metadata":{},"id":"93e6fb35-cc50-4235-9885-406c41c6a486"},{"cell_type":"code","source":"from ase.build import bulk\nfrom atomistics.calculators import evaluate_with_lammps, get_potential_by_name\nfrom atomistics.workflows import QuasiHarmonicWorkflow\n\npotential_dataframe = get_potential_by_name(\n potential_name='1999--Mishin-Y--Al--LAMMPS--ipr1',\n resource_path=\"static/lammps\"\n)\nworkflow = QuasiHarmonicWorkflow(\n structure=bulk(\"Al\", cubic=True), \n num_points=11,\n vol_range=0.05,\n interaction_range=10,\n factor=VaspToTHz,\n displacement=0.01,\n dos_mesh=20,\n primitive_matrix=None,\n number_of_snapshots=None,\n)\ntask_dict = workflow.generate_structures()\nresult_dict = evaluate_with_lammps(\n task_dict=task_dict,\n potential_dataframe=potential_dataframe,\n)\nfit_dict = workflow.analyse_structures(output_dict=result_dict)","metadata":{"trusted":true},"execution_count":25,"outputs":[],"id":"9387e3aa-b349-49a9-b7b9-0ac1d7f209d5"},{"cell_type":"markdown","source":"The `QuasiHarmonicWorkflow` is a combination of the `EnergyVolumeCurveWorkflow` and the `PhonopyWorkflow`. Consequently, \nthe inputs are a superset of the inputs of these two workflows. ","metadata":{},"id":"b5167f8d-c90f-4bf0-a7c0-fd4dfdd35667"},{"cell_type":"markdown","source":"Based on the `QuasiHarmonicWorkflow` the thermal properties can be calculated:","metadata":{},"id":"169ddaf9-7f5d-4126-babf-9f2de3793128"},{"cell_type":"code","source":"tp_dict = workflow.get_thermal_properties(\n t_min=1, \n t_max=1500, \n t_step=50, \n temperatures=None,\n cutoff_frequency=None,\n pretend_real=False,\n band_indices=None,\n is_projection=False,\n quantum_mechanical=True,\n)\nprint(tp_dict)","metadata":{"trusted":true},"execution_count":26,"outputs":[{"name":"stdout","text":"{'temperatures': array([1.000e+00, 5.100e+01, 1.010e+02, 1.510e+02, 2.010e+02, 2.510e+02,\n 3.010e+02, 3.510e+02, 4.010e+02, 4.510e+02, 5.010e+02, 5.510e+02,\n 6.010e+02, 6.510e+02, 7.010e+02, 7.510e+02, 8.010e+02, 8.510e+02,\n 9.010e+02, 9.510e+02, 1.001e+03, 1.051e+03, 1.101e+03, 1.151e+03,\n 1.201e+03, 1.251e+03, 1.301e+03, 1.351e+03, 1.401e+03, 1.451e+03,\n 1.501e+03]), 'volumes': [66.71710763927429, 66.7217721669909, 66.7588030456557, 66.82252047263532, 66.89849494958942, 66.9796340113892, 67.06260790999332, 67.14571406293086, 67.22800412575396, 67.30891433769602, 67.38809533263267, 67.46532691223801, 67.54047194450261, 67.61344961442688, 67.68421888050003, 67.7527676376025, 67.81910525012583, 67.88325718224746, 67.94526099996934, 68.00516331349996, 68.06301739227649, 68.11888127927111, 68.1728162874363, 68.22488579579438, 68.27515428480372, 68.32368656530063, 68.3705471654382, 68.41579984727981, 68.45950723009813, 68.50173050155158, 68.54252920118272], 'free_energy': array([ 0.14903662, 0.14826796, 0.13934608, 0.1169922 , 0.08193524,\n 0.03597463, -0.01929655, -0.08261538, -0.15299036, -0.22963345,\n -0.31190757, -0.39928889, -0.49134004, -0.5876908 , -0.68802399,\n -0.79206502, -0.89957393, -1.01033927, -1.12417341, -1.24090869,\n -1.36039449, -1.48249475, -1.60708597, -1.73405557, -1.86330055,\n -1.99472628, -2.12824554, -2.26377775, -2.40124816, -2.54058732,\n -2.6817305 ]), 'entropy': array([1.02970750e-08, 5.98072651e+00, 2.96865053e+01, 5.55852668e+01,\n 7.82409727e+01, 9.75218995e+01, 1.14065625e+02, 1.28465273e+02,\n 1.41174728e+02, 1.52530436e+02, 1.62783056e+02, 1.72122199e+02,\n 1.80693841e+02, 1.88612312e+02, 1.95968600e+02, 2.02836175e+02,\n 2.09275150e+02, 2.15335286e+02, 2.21058222e+02, 2.26479132e+02,\n 2.31627991e+02, 2.36530543e+02, 2.41209060e+02, 2.45682935e+02,\n 2.49969156e+02, 2.54082691e+02, 2.58036788e+02, 2.61843234e+02,\n 2.65512561e+02, 2.69054215e+02, 2.72476702e+02]), 'heat_capacity': array([1.67065980e-07, 1.73540235e+01, 5.38037700e+01, 7.36871465e+01,\n 8.35644372e+01, 8.88841670e+01, 9.20085315e+01, 9.39792227e+01,\n 9.52946945e+01, 9.62133951e+01, 9.68788951e+01, 9.73756862e+01,\n 9.77559504e+01, 9.80532534e+01, 9.82899463e+01, 9.84813619e+01,\n 9.86382931e+01, 9.87685101e+01, 9.88777197e+01, 9.89701872e+01,\n 9.90491516e+01, 9.91171073e+01, 9.91760000e+01, 9.92273651e+01,\n 9.92724273e+01, 9.93121724e+01, 9.93474017e+01, 9.93787712e+01,\n 9.94068224e+01, 9.94320054e+01, 9.94546967e+01])}\n","output_type":"stream"}],"id":"07cc0818-15a8-4508-ba97-c3a95eaa72b1"},{"cell_type":"markdown","source":"This requires the same inputs as the calculation of the thermal properties `get_thermal_properties()` with the \n`PhonopyWorkflow`. The additional parameter `quantum_mechanical` specifies whether the classical harmonic oscillator or \nthe quantum mechanical harmonic oscillator is used to calculate the free energy. ","metadata":{},"id":"1fb5c6e3-83a4-4503-a0f1-4958ebc6361c"},{"cell_type":"markdown","source":"And finally also the thermal expansion can be calculated:","metadata":{},"id":"3e6cc3bd-5f7c-4462-8083-5111dc5d4577"},{"cell_type":"code","source":"tp_dict = workflow.get_thermal_properties(\n t_min=1, \n t_max=1500, \n t_step=50, \n temperatures=None,\n cutoff_frequency=None,\n pretend_real=False,\n band_indices=None,\n is_projection=False,\n quantum_mechanical=True,\n output_keys=[\"temperatures\", \"volumes\"],\n)\ntemperatures, volumes = tp_dict[\"temperatures\"], tp_dict[\"volumes\"]","metadata":{"trusted":true},"execution_count":27,"outputs":[],"id":"76426cc0-38c8-480e-9fd1-fbcb41c8afec"},{"cell_type":"markdown","source":"## Structure Optimization \nIn analogy to the molecular dynamics calculation also the structure optimization could in principle be defined inside \nthe simulation code or on the python level. Still currently the `atomistics` package only supports the structure \noptimization defined inside the simulation codes. ","metadata":{},"id":"3cf34091-d7f5-464a-b386-9b81c1fa853a"},{"cell_type":"markdown","source":"### Volume and Positions \nTo optimize both the volume of the supercell as well as the positions inside the supercell the `atomistics` package\nimplements the `optimize_positions_and_volume()` workflow:","metadata":{},"id":"e58b5d2e-8839-48c6-b72e-0fa09ace20ce"},{"cell_type":"code","source":"from ase.build import bulk\nfrom atomistics.calculators import evaluate_with_lammps, get_potential_by_name\nfrom atomistics.workflows import optimize_positions_and_volume\n\nstructure = bulk(\"Al\", a=4.0, cubic=True)\npotential_dataframe = get_potential_by_name(\n potential_name='1999--Mishin-Y--Al--LAMMPS--ipr1',\n resource_path=\"static/lammps\"\n)\nresult_dict = evaluate_with_lammps(\n task_dict=optimize_positions_and_volume(structure=structure),\n potential_dataframe=potential_dataframe,\n)\nstructure_opt = result_dict[\"structure_with_optimized_positions_and_volume\"]\nstructure_opt","metadata":{"trusted":true},"execution_count":28,"outputs":[{"execution_count":28,"output_type":"execute_result","data":{"text/plain":"Atoms(symbols='Al4', pbc=True, cell=[[4.05000466219724, 2.4799126230458533e-16, 2.4799126230458533e-16], [0.0, 4.05000466219724, 2.4799126230458533e-16], [0.0, 0.0, 4.05000466219724]])"},"metadata":{}}],"id":"a7f38a78-11b9-41c2-82c9-7c30b3a9b005"},{"cell_type":"markdown","source":"The result is the optimized atomistic structure as part of the result dictionary. ","metadata":{},"id":"c375f310-78c2-426a-8f77-669e9bec855f"},{"cell_type":"markdown","source":"### Positions \nThe optimization of the positions inside the supercell without the optimization of the supercell volume is possible with\nthe `optimize_positions()` workflow:","metadata":{},"id":"6d4ef070-f0f1-4f56-afff-ff6322d3729a"},{"cell_type":"code","source":"from ase.build import bulk\nfrom atomistics.calculators import evaluate_with_lammps, get_potential_by_name\nfrom atomistics.workflows import optimize_positions\n\nstructure = bulk(\"Al\", a=4.0, cubic=True)\npotential_dataframe = get_potential_by_name(\n potential_name='1999--Mishin-Y--Al--LAMMPS--ipr1',\n resource_path=\"static/lammps\"\n)\nresult_dict = evaluate_with_lammps(\n task_dict=optimize_positions(structure=structure),\n potential_dataframe=potential_dataframe,\n)\nstructure_opt = result_dict[\"structure_with_optimized_positions\"]\nstructure_opt","metadata":{"trusted":true},"execution_count":29,"outputs":[{"execution_count":29,"output_type":"execute_result","data":{"text/plain":"Atoms(symbols='Al4', pbc=True, cell=[4.0, 4.0, 4.0])"},"metadata":{}}],"id":"9a50125b-a97a-4445-b140-b8019c035902"},{"cell_type":"markdown","source":"The result is the optimized atomistic structure as part of the result dictionary. ","metadata":{},"id":"d027161c-abd3-4267-a10f-cb404c3ebbfd"},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[],"id":"a84ef4fc-a9a7-4386-921f-7b77af81a166"}]} \ No newline at end of file +{"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.10.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat_minor":5,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# Workflows\nTo demonstrate the workflows implemented in the `atomistics` package, the [LAMMPS](https://www.lammps.org/) molecular \ndynamics simulation code is used in the following demonstrations. Still the same `workflows` can also be used with other\nsimulation codes:","metadata":{},"id":"29680e01-8658-4085-aada-eaaa9d8705be"},{"cell_type":"code","source":"from atomistics.calculators import evaluate_with_lammps, get_potential_by_name\n\npotential_dataframe = get_potential_by_name(\n potential_name='1999--Mishin-Y--Al--LAMMPS--ipr1',\n resource_path=\"static/lammps\"\n)\nresult_dict = evaluate_with_lammps(\n task_dict={},\n potential_dataframe=potential_dataframe,\n)","metadata":{"trusted":true},"execution_count":1,"outputs":[{"name":"stderr","text":"[jupyter-pyiron-2datomistics-2dloteusr2:00647] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\n","output_type":"stream"}],"id":"76ec535d-d9cb-4d68-9208-c9b0c029c402"},{"cell_type":"markdown","source":"The interatomic potential for Aluminium from Mishin named `1999--Mishin-Y--Al--LAMMPS--ipr1` is used in the evaluation\nwith [LAMMPS](https://www.lammps.org/) `evaluate_with_lammps()`. ","metadata":{},"id":"d813a092-a7d8-49e6-8914-02c1b9e105f6"},{"cell_type":"markdown","source":"## Elastic Matrix \nThe elastic constants and elastic moduli can be calculated using the `ElasticMatrixWorkflow`: ","metadata":{},"id":"70bac169-3b94-486f-afa9-efe5005f1cf0"},{"cell_type":"code","source":"from ase.build import bulk\nfrom atomistics.calculators import evaluate_with_lammps, get_potential_by_name\nfrom atomistics.workflows import ElasticMatrixWorkflow\n\npotential_dataframe = get_potential_by_name(\n potential_name='1999--Mishin-Y--Al--LAMMPS--ipr1',\n resource_path=\"static/lammps\"\n)\nworkflow = ElasticMatrixWorkflow(\n structure=bulk(\"Al\", cubic=True), \n num_of_point=5, \n eps_range=0.005, \n sqrt_eta=True, \n fit_order=2,\n)\ntask_dict = workflow.generate_structures()\nresult_dict = evaluate_with_lammps(\n task_dict=task_dict,\n potential_dataframe=potential_dataframe,\n)\nfit_dict = workflow.analyse_structures(output_dict=result_dict)\nprint(fit_dict)","metadata":{"trusted":true},"execution_count":2,"outputs":[{"name":"stdout","text":"{'elastic_matrix': array([[114.10393023, 60.51098897, 60.51098897, 0. ,\n 0. , 0. ],\n [ 60.51098897, 114.10393023, 60.51098897, 0. ,\n 0. , 0. ],\n [ 60.51098897, 60.51098897, 114.10393023, 0. ,\n 0. , 0. ],\n [ 0. , 0. , 0. , 51.23931149,\n 0. , 0. ],\n [ 0. , 0. , 0. , 0. ,\n 51.23931149, 0. ],\n [ 0. , 0. , 0. , 0. ,\n 0. , 51.23931149]]), 'elastic_matrix_inverse': array([[ 0.01385713, -0.00480204, -0.00480204, 0. , 0. ,\n 0. ],\n [-0.00480204, 0.01385713, -0.00480204, 0. , 0. ,\n 0. ],\n [-0.00480204, -0.00480204, 0.01385713, 0. , 0. ,\n 0. ],\n [ 0. , 0. , 0. , 0.01951627, 0. ,\n 0. ],\n [ 0. , 0. , 0. , 0. , 0.01951627,\n 0. ],\n [ 0. , 0. , 0. , 0. , 0. ,\n 0.01951627]]), 'bulkmodul_voigt': 78.37530272473929, 'bulkmodul_reuss': 78.37530272473931, 'bulkmodul_hill': 78.3753027247393, 'shearmodul_voigt': 41.462175146677424, 'shearmodul_reuss': 37.54162684596518, 'shearmodul_hill': 39.501900996321304, 'youngsmodul_voigt': 105.74025607889799, 'youngsmodul_reuss': 97.1183728107761, 'youngsmodul_hill': 101.46008564559224, 'poissonsratio_voigt': 0.2751412064710683, 'poissonsratio_reuss': 0.29347581564934205, 'poissonsratio_hill': 0.2842430754793411, 'AVR': 4.962480541224269, 'elastic_matrix_eigval': EigResult(eigenvalues=array([ 53.59294126, 235.12590817, 53.59294126, 51.23931149,\n 51.23931149, 51.23931149]), eigenvectors=array([[-0.81649658, 0.57735027, 0.11541902, 0. , 0. ,\n 0. ],\n [ 0.40824829, 0.57735027, -0.75771582, 0. , 0. ,\n 0. ],\n [ 0.40824829, 0.57735027, 0.6422968 , 0. , 0. ,\n 0. ],\n [ 0. , 0. , 0. , 1. , 0. ,\n 0. ],\n [ 0. , 0. , 0. , 0. , 1. ,\n 0. ],\n [ 0. , 0. , 0. , 0. , 0. ,\n 1. ]]))}\n","output_type":"stream"}],"id":"f26f2645-e1c7-4b7e-8414-e4632b1439f9"},{"cell_type":"markdown","source":"The `ElasticMatrixWorkflow` takes an `ase.atoms.Atoms` object as `structure` input as well as the number of points \n`num_of_point` for each compression direction. Depending on the symmetry of the input `structure` the number of \ncalculations required to calculate the elastic matrix changes. The compression and elongation range is defined by the\n`eps_range` parameter. Furthermore, `sqrt_eta` and `fit_order` describe how the change in energy over compression and\nelongation is fitted to calculate the resulting pressure. ","metadata":{},"id":"262aefd1-9cf9-4b35-8d94-03996b21166b"},{"cell_type":"markdown","source":"## Energy Volume Curve\nThe `EnergyVolumeCurveWorkflow` can be used to calculate the equilibrium properties: equilibrium volume, equilibrium \nenergy, equilibrium bulk modulus and the pressure derivative of the equilibrium bulk modulus. ","metadata":{},"id":"dc5356a8-0b07-4a0a-a549-9a20cf3c64cc"},{"cell_type":"code","source":"from ase.build import bulk\nfrom atomistics.calculators import evaluate_with_lammps, get_potential_by_name\nfrom atomistics.workflows import EnergyVolumeCurveWorkflow\n\npotential_dataframe = get_potential_by_name(\n potential_name='1999--Mishin-Y--Al--LAMMPS--ipr1',\n resource_path=\"static/lammps\"\n)\nworkflow = EnergyVolumeCurveWorkflow(\n structure=bulk(\"Al\", cubic=True), \n num_points=11,\n fit_type=\"polynomial\",\n fit_order=3,\n vol_range=0.05,\n axes=(\"x\", \"y\", \"z\"),\n strains=None,\n)\ntask_dict = workflow.generate_structures()\nresult_dict = evaluate_with_lammps(\n task_dict=task_dict,\n potential_dataframe=potential_dataframe,\n)\nfit_dict = workflow.analyse_structures(output_dict=result_dict)\nprint(fit_dict)","metadata":{"trusted":true},"execution_count":3,"outputs":[{"name":"stdout","text":"{'b_prime_eq': 1.279502459079921, 'bulkmodul_eq': 77.7250135953191, 'volume_eq': 66.43019853103964, 'energy_eq': -13.43996804374383, 'fit_dict': {'fit_type': 'polynomial', 'least_square_error': 3.225313797039607e-10, 'poly_fit': array([-4.17645808e-05, 1.19746500e-02, -1.03803906e+00, 1.49168639e+01]), 'fit_order': 3}, 'energy': [-13.398169481534445, -13.413389552957456, -13.425112589013958, -13.433411420804067, -13.438357630783006, -13.439999952539933, -13.438383476946305, -13.433607982916406, -13.425774537190858, -13.414961805921427, -13.401233093668836], 'volume': [63.10861874999998, 63.77291999999998, 64.43722124999998, 65.1015225, 65.76582375000004, 66.43012500000002, 67.09442624999994, 67.75872750000002, 68.42302874999999, 69.08732999999997, 69.75163125000002]}\n","output_type":"stream"}],"id":"720a7662-fdee-496d-b355-ff4881f5c633"},{"cell_type":"markdown","source":"The input parameters for the `EnergyVolumeCurveWorkflow` in addition to the `ase.atoms.Atoms` object defined \nas `structure` are: \n\n* `num_points` the number of strains to calculate energies and volumes. \n* `fit_type` the type of the fit which should be used to calculate the equilibrium properties. This can either be a \n `polynomial` fit or a specific equation of state like the Birch equation (`birch`), the Birch-Murnaghan equation \n (`birchmurnaghan`) the Murnaghan equation (`murnaghan`), the Pourier Tarnatola eqaution (`pouriertarantola`) or the\n Vinet equation (`vinet`). \n* `fit_order` for the `polynomial` fit type the order of the polynomial can be set, for the other fit types this \n parameter is ignored. \n* `vol_range` specifies the amount of compression and elongation to be applied relative to the absolute volume. \n* `axes` specifies the axes which are compressed, typically a uniform compression is applied. \n* `strains` specifies the strains directly rather than deriving them from the range of volume compression `vol_range`. \n\nBeyond calculating the equilibrium properties the `EnergyVolumeCurveWorkflow` can also be used to calculate the thermal\nproperties using the [Moruzzi, V. L. et al.](https://link.aps.org/doi/10.1103/PhysRevB.37.790) model: ","metadata":{},"id":"13c95c80-137d-49bf-8016-b3c15279fbcf"},{"cell_type":"code","source":"tp_dict = workflow.get_thermal_properties(\n t_min=1,\n t_max=1500,\n t_step=50,\n temperatures=None,\n constant_volume=False,\n)\nprint(tp_dict)","metadata":{"trusted":true},"execution_count":4,"outputs":[{"name":"stdout","text":"{'temperatures': array([ 1, 51, 101, 151, 201, 251, 301, 351, 401, 451, 501,\n 551, 601, 651, 701, 751, 801, 851, 901, 951, 1001, 1051,\n 1101, 1151, 1201, 1251, 1301, 1351, 1401, 1451, 1501]), 'volumes': array([66.48459155, 66.48492729, 66.48841343, 66.49613572, 66.50654263,\n 66.51846055, 66.53126421, 66.5446199 , 66.55833931, 66.57230985,\n 66.58646057, 66.6007448 , 66.61513063, 66.6295956 , 66.64412341,\n 66.65870199, 66.6733222 , 66.68797701, 66.70266093, 66.71736958,\n 66.73209946, 66.74684773, 66.76161205, 66.77639048, 66.79118142,\n 66.8059835 , 66.82079558, 66.83561668, 66.85044595, 66.86528267,\n 66.88012622]), 'free_energy': array([ 0.18879418, 0.18840183, 0.18352524, 0.16909367, 0.1440755 ,\n 0.10931095, 0.06593656, 0.01498215, -0.04269081, -0.1063728 ,\n -0.1754776 , -0.24951635, -0.328077 , -0.41080851, -0.49740877,\n -0.58761537, -0.68119851, -0.77795536, -0.87770572, -0.98028844,\n -1.08555864, -1.19338539, -1.3036498 , -1.41624343, -1.53106703,\n -1.6480294 , -1.76704645, -1.88804043, -2.01093923, -2.13567578,\n -2.26218757]), 'entropy': array([ 0.75685476, 5.08219062, 18.62461552, 38.05446426,\n 57.6693229 , 75.37710506, 90.99476554, 104.78762778,\n 117.06473011, 128.09164494, 138.08127289, 147.20167195,\n 155.58579193, 163.33970927, 170.54896552, 177.28330938,\n 183.60022562, 189.54757244, 195.16556897, 200.48830826,\n 205.54492122, 210.36048158, 214.95671661, 219.35257076,\n 223.56465688, 227.60762034, 231.49443548, 235.23664867,\n 238.84457908, 242.32748555, 244.0403182 ]), 'heat_capacity': array([8.65067172e-02, 9.11255799e+00, 3.33019964e+01, 5.89575081e+01,\n 7.50185080e+01, 8.36468610e+01, 8.85256734e+01, 9.15055757e+01,\n 9.34491088e+01, 9.47846079e+01, 9.57412353e+01, 9.64498999e+01,\n 9.69896043e+01, 9.74102601e+01, 9.77446368e+01, 9.80149634e+01,\n 9.82367471e+01, 9.84210719e+01, 9.85760297e+01, 9.87076399e+01,\n 9.88204550e+01, 9.89179695e+01, 9.90029019e+01, 9.90773926e+01,\n 9.91431454e+01, 9.92015302e+01, 9.92536586e+01, 9.93004401e+01,\n 9.93426247e+01, nan, nan])}\n","output_type":"stream"}],"id":"8a9a8e77-a6f0-4466-8c3d-fc1ca6ebbaf0"},{"cell_type":"markdown","source":"Or alternatively directly calculate the thermal expansion:","metadata":{},"id":"ebebb63f-3897-4028-ad23-708aaaf9cc26"},{"cell_type":"code","source":"thermal_properties_dict = workflow.get_thermal_properties( \n t_min=1, \n t_max=1500, \n t_step=50, \n constant_volume=False,\n output_keys=[\"temperatures\", \"volumes\"],\n)\ntemperatures, volumes = thermal_properties_dict[\"temperatures\"], thermal_properties_dict[\"volumes\"]","metadata":{"trusted":true},"execution_count":5,"outputs":[],"id":"6e963779-cd59-4985-9a72-9652dd1f1408"},{"cell_type":"markdown","source":"The [Moruzzi, V. L. et al.](https://link.aps.org/doi/10.1103/PhysRevB.37.790) model is a quantum mechanical approximation, so the equilibrium volume at 0K is not\nthe same as the equilibrium volume calculated by fitting the equation of state. ","metadata":{},"id":"e3f4357d-8b81-41bd-a90b-556f231b9766"},{"cell_type":"markdown","source":"## Molecular Dynamics \nJust like the structure optimization also the molecular dynamics calculation can either be implemented inside the\nsimulation code or in the `atomistics` package. The latter has the advantage that it is the same implementation for all\ndifferent simulation codes, while the prior has the advantage that it is usually faster and computationally more efficient.","metadata":{},"id":"ac4095fb-0e11-46bc-8c8d-54bc97ddfe18"},{"cell_type":"markdown","source":"### Implemented in Simulation Code \nThe [LAMMPS](https://lammps.org/) simulation code implements a wide range of different simulation workflows, this \nincludes molecular dynamics. In the `atomistics` package these can be directly accessed via the python interface. ","metadata":{},"id":"1cfe604e-1e02-4a64-a49b-eccd1b32c9fc"},{"cell_type":"markdown","source":"#### Langevin Thermostat\nThe Langevin thermostat is currently the only thermostat which is available as both a stand-alone python interface and\nan integrated interface inside the [LAMMPS](https://lammps.org/) simulation code. The latter is introduced here:","metadata":{},"id":"0e52ed95-1510-4944-a5a6-8ea9d49c906f"},{"cell_type":"code","source":"from ase.build import bulk\nfrom atomistics.calculators import (\n calc_molecular_dynamics_langevin_with_lammps, \n get_potential_by_name,\n)\n\npotential_dataframe = get_potential_by_name(\n potential_name='1999--Mishin-Y--Al--LAMMPS--ipr1',\n resource_path=\"static/lammps\"\n)\nresult_dict = calc_molecular_dynamics_langevin_with_lammps(\n structure=bulk(\"Al\", cubic=True).repeat([10, 10, 10]),\n potential_dataframe=potential_dataframe,\n Tstart=100,\n Tstop=100,\n Tdamp=0.1,\n run=100,\n thermo=10,\n timestep=0.001,\n seed=4928459,\n dist=\"gaussian\",\n output_keys=(\"positions\", \"cell\", \"forces\", \"temperature\", \"energy_pot\", \"energy_tot\", \"pressure\", \"velocities\"),\n)","metadata":{"trusted":true},"execution_count":6,"outputs":[],"id":"2e0c22ea-562b-4669-a34b-1d60a8bd1e2c"},{"cell_type":"markdown","source":"In addition to the typical LAMMPS input parameters like the atomistic structure `structure` as `ase.atoms.Atoms` object\nand the `pandas.DataFrame` for the interatomic potential `potential_dataframe` are: \n\n* `Tstart` start temperature \n* `Tstop` end temperature\n* `Tdamp` temperature damping parameter \n* `run` number of molecular dynamics steps to be executed during one temperature step\n* `thermo` refresh rate for the thermo dynamic properties, this should typically be the same as the number of molecular\n dynamics steps. \n* `timestep` time step - typically 1fs defined as `0.001`.\n* `seed` random seed for the molecular dynamics \n* `dist` initial velocity distribution \n* `lmp` Lammps library instance as `pylammpsmpi.LammpsASELibrary` object \n* `output` the output quantities which are extracted from the molecular dynamics simulation","metadata":{},"id":"e21267cb-9fb6-4c1f-8912-c281dc899323"},{"cell_type":"markdown","source":"#### Nose Hoover Thermostat\nCanonical ensemble (nvt) - volume and temperature constraints molecular dynamics:","metadata":{},"id":"be5d582d-9952-4a5b-b704-1a9acdb8b306"},{"cell_type":"code","source":"from ase.build import bulk\nfrom atomistics.calculators import (\n calc_molecular_dynamics_nvt_with_lammps, \n get_potential_by_name,\n)\n\npotential_dataframe = get_potential_by_name(\n potential_name='1999--Mishin-Y--Al--LAMMPS--ipr1',\n resource_path=\"static/lammps\"\n)\nresult_dict = calc_molecular_dynamics_nvt_with_lammps(\n structure=bulk(\"Al\", cubic=True).repeat([10, 10, 10]),\n potential_dataframe=potential_dataframe,\n Tstart=100,\n Tstop=100,\n Tdamp=0.1,\n run=100,\n thermo=10,\n timestep=0.001,\n seed=4928459,\n dist=\"gaussian\",\n output_keys=(\"positions\", \"cell\", \"forces\", \"temperature\", \"energy_pot\", \"energy_tot\", \"pressure\"),\n)","metadata":{"trusted":true},"execution_count":7,"outputs":[],"id":"9717893e-4dea-46f7-9317-bb314bc5bbdd"},{"cell_type":"markdown","source":"In addition to the typical LAMMPS input parameters like the atomistic structure `structure` as `ase.atoms.Atoms` object\nand the `pandas.DataFrame` for the interatomic potential `potential_dataframe` are: \n\n* `Tstart` start temperature \n* `Tstop` end temperature\n* `Tdamp` temperature damping parameter \n* `run` number of molecular dynamics steps to be executed during one temperature step\n* `thermo` refresh rate for the thermo dynamic properties, this should typically be the same as the number of molecular\n dynamics steps. \n* `timestep` time step - typically 1fs defined as `0.001`.\n* `seed` random seed for the molecular dynamics \n* `dist` initial velocity distribution \n* `lmp` Lammps library instance as `pylammpsmpi.LammpsASELibrary` object \n* `output` the output quantities which are extracted from the molecular dynamics simulation","metadata":{},"id":"72797e59-72f5-4d32-b7cf-5ad806b91909"},{"cell_type":"markdown","source":"Isothermal-isobaric ensemble (npt) - pressure and temperature constraints molecular dynamics:","metadata":{},"id":"8356bf7f-bf7d-40e0-8f3c-02309cd74d92"},{"cell_type":"code","source":"from ase.build import bulk\nfrom atomistics.calculators import (\n calc_molecular_dynamics_npt_with_lammps, \n get_potential_by_name,\n)\n\npotential_dataframe = get_potential_by_name(\n potential_name='1999--Mishin-Y--Al--LAMMPS--ipr1',\n resource_path=\"static/lammps\"\n)\nresult_dict = calc_molecular_dynamics_npt_with_lammps(\n structure=bulk(\"Al\", cubic=True).repeat([10, 10, 10]),\n potential_dataframe=potential_dataframe,\n Tstart=100,\n Tstop=100,\n Tdamp=0.1,\n run=100,\n thermo=100,\n timestep=0.001,\n Pstart=0.0,\n Pstop=0.0,\n Pdamp=1.0,\n seed=4928459,\n dist=\"gaussian\",\n output_keys=(\"positions\", \"cell\", \"forces\", \"temperature\", \"energy_pot\", \"energy_tot\", \"pressure\"),\n)","metadata":{"trusted":true},"execution_count":8,"outputs":[],"id":"1327d554-0df1-45fa-b35c-ec4955ce756f"},{"cell_type":"markdown","source":"The input parameters for the isothermal-isobaric ensemble (npt) are the same as for the canonical ensemble (nvt) plus:\n\n* `Pstart` start pressure \n* `Pstop` end pressure \n* `Pdamp` pressure damping parameter ","metadata":{},"id":"e6aeb0fe-ace6-4e55-a3c2-06be85aaf05e"},{"cell_type":"markdown","source":"Isenthalpic ensemble (nph) - pressure and helmholtz-energy constraints molecular dynamics:","metadata":{},"id":"04f5854b-d803-4023-af04-55efc22ee1e3"},{"cell_type":"code","source":"from ase.build import bulk\nfrom atomistics.calculators import (\n calc_molecular_dynamics_nph_with_lammps, \n get_potential_by_name,\n)\n\npotential_dataframe = get_potential_by_name(\n potential_name='1999--Mishin-Y--Al--LAMMPS--ipr1',\n resource_path=\"static/lammps\"\n)\nresult_dict = calc_molecular_dynamics_nph_with_lammps(\n structure=bulk(\"Al\", cubic=True).repeat([10, 10, 10]),\n potential_dataframe=potential_dataframe,\n run=100,\n thermo=100,\n timestep=0.001,\n Tstart=100,\n Pstart=0.0,\n Pstop=0.0,\n Pdamp=1.0,\n seed=4928459,\n dist=\"gaussian\",\n output_keys=(\"positions\", \"cell\", \"forces\", \"temperature\", \"energy_pot\", \"energy_tot\", \"pressure\"),\n)","metadata":{"trusted":true},"execution_count":9,"outputs":[],"id":"5f64f60c-89ce-423b-a487-ea96780b1c20"},{"cell_type":"markdown","source":"#### Thermal Expansion\nOne example of a molecular dynamics calculation with the LAMMPS simulation code is the calculation of the thermal \nexpansion: ","metadata":{},"id":"3b4c6022-e1d5-467b-ac1b-d3617670fe67"},{"cell_type":"code","source":"from ase.build import bulk\nfrom atomistics.calculators import (\n calc_molecular_dynamics_thermal_expansion_with_lammps, \n evaluate_with_lammps, \n get_potential_by_name,\n)\n\npotential_dataframe = get_potential_by_name(\n potential_name='1999--Mishin-Y--Al--LAMMPS--ipr1',\n resource_path=\"static/lammps\"\n)\ntemperatures_md, volumes_md = calc_molecular_dynamics_thermal_expansion_with_lammps(\n structure=bulk(\"Al\", cubic=True).repeat([10, 10, 10]),\n potential_dataframe=potential_dataframe,\n Tstart=100,\n Tstop=1000,\n Tstep=100,\n Tdamp=0.1,\n run=100,\n thermo=100,\n timestep=0.001,\n Pstart=0.0,\n Pstop=0.0,\n Pdamp=1.0,\n seed=4928459,\n dist=\"gaussian\",\n lmp=None,\n)","metadata":{"trusted":true},"execution_count":10,"outputs":[{"name":"stderr","text":"100%|██████████| 10/10 [00:05<00:00, 1.69it/s]\n","output_type":"stream"}],"id":"d3e4bda7-9aa4-4a82-8c51-9606b0e77f75"},{"cell_type":"markdown","source":"In addition to the typical LAMMPS input parameters like the atomistic structure `structure` as `ase.atoms.Atoms` object\nand the `pandas.DataFrame` for the interatomic potential `potential_dataframe` are: \n\n* `Tstart` start temperature \n* `Tstop` end temperature \n* `Tstep` temperature step \n* `Tdamp` temperature damping parameter \n* `run` number of molecular dynamics steps to be executed during one temperature step\n* `thermo` refresh rate for the thermo dynamic properties, this should typically be the same as the number of molecular\n dynamics steps. \n* `timestep` time step - typically 1fs defined as `0.001`.\n* `Pstart` start pressure \n* `Pstop` end pressure \n* `Pdamp` pressure damping parameter \n* `seed` random seed for the molecular dynamics \n* `dist` initial velocity distribution \n* `lmp` Lammps library instance as `pylammpsmpi.LammpsASELibrary` object \n\nThese input parameters are based on the LAMMPS fix `nvt/npt`, you can read more about the specific implementation on the\n[LAMMPS website](https://docs.lammps.org/fix_nh.html). \n","metadata":{},"id":"08c20c91-9e7c-4770-b01f-1765064797dd"},{"cell_type":"markdown","source":"#### Phonons from Molecular Dynamics\nThe softening of the phonon modes is calculated for Silicon using the [Tersoff interatomic potential](https://journals.aps.org/prb/abstract/10.1103/PhysRevB.38.9902) \nwhich is available via the [NIST potentials repository](https://www.ctcms.nist.gov/potentials/entry/1988--Tersoff-J--Si-c/). \nSilicon is chosen based on its diamond crystal lattice which requires less calculation than the face centered cubic (fcc)\ncrystal of Aluminium. The simulation workflow consists of three distinct steps:\n\n* Starting with the optimization of the equilibrium structure. \n* Followed by the calculation of the 0K phonon spectrum. \n* Finally, the finite temperature phonon spectrum is calculated using molecular dynamics. \n\nThe finite temperature phonon spectrum is calculated using the [DynaPhoPy](https://abelcarreras.github.io/DynaPhoPy/)\npackage, which is integrated inside the `atomistics` package. As a prerequisite the dependencies, imported and the bulk \nsilicon diamond structure is created and the Tersoff interatomic potential is loaded: ","metadata":{},"id":"e57a6740-8546-4763-a9b3-140f0cae1543"},{"cell_type":"code","source":"from ase.build import bulk\nfrom atomistics.calculators import (\n calc_molecular_dynamics_phonons_with_lammps,\n evaluate_with_lammps, \n)\nfrom atomistics.workflows import optimize_positions_and_volume, PhonopyWorkflow\nfrom dynaphopy import Quasiparticle\nimport pandas\nfrom phonopy.units import VaspToTHz\nimport spglib\n\nstructure_bulk = bulk(\"Si\", cubic=True)\npotential_dataframe = get_potential_by_name(\n potential_name='1988--Tersoff-J--Si-c--LAMMPS--ipr1',\n resource_path=\"static/lammps\"\n)","metadata":{"trusted":true},"execution_count":11,"outputs":[],"id":"793b72ff-6b0b-46d8-a121-2c93ea6e7a32"},{"cell_type":"markdown","source":"The first step is optimizing the Silicon diamond structure to match the lattice specifications implemented in the Tersoff \ninteratomic potential:","metadata":{},"id":"743dce70-a4f0-4063-b353-51d26def4005"},{"cell_type":"code","source":"task_dict = optimize_positions_and_volume(structure=structure_bulk)\nresult_dict = evaluate_with_lammps(\n task_dict=task_dict,\n potential_dataframe=potential_dataframe,\n)\nstructure_ase = result_dict[\"structure_with_optimized_positions_and_volume\"]","metadata":{"trusted":true},"execution_count":12,"outputs":[],"id":"e96fb9d9-da43-49cb-8383-5eb93eea9dc1"},{"cell_type":"markdown","source":"As a second step the 0K phonons are calculated using the `PhonopyWorkflow` which is explained in more detail below in \nthe section on [Phonons](https://atomistics.readthedocs.io/en/latest/workflows.html#phonons). ","metadata":{},"id":"c54c83b5-e710-405f-846b-e270267f8646"},{"cell_type":"code","source":"cell = (structure_ase.cell.array, structure_ase.get_scaled_positions(), structure_ase.numbers)\nprimitive_matrix = spglib.standardize_cell(cell=cell, to_primitive=True)[0] / structure_ase.get_volume() ** (1/3)\nworkflow = PhonopyWorkflow(\n structure=structure_ase,\n interaction_range=10,\n factor=VaspToTHz,\n displacement=0.01,\n dos_mesh=20,\n primitive_matrix=primitive_matrix,\n number_of_snapshots=None,\n)\ntask_dict = workflow.generate_structures()\nresult_dict = evaluate_with_lammps(\n task_dict=task_dict,\n potential_dataframe=potential_dataframe,\n)\nworkflow.analyse_structures(output_dict=result_dict)","metadata":{"trusted":true},"execution_count":13,"outputs":[{"execution_count":13,"output_type":"execute_result","data":{"text/plain":"{'mesh_dict': {'qpoints': array([[0.025, 0.025, 0.025],\n [0.075, 0.025, 0.025],\n [0.125, 0.025, 0.025],\n ...,\n [0.525, 0.525, 0.425],\n [0.475, 0.475, 0.475],\n [0.525, 0.475, 0.475]]),\n 'weights': array([ 2, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,\n 6, 6, 6, 6, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,\n 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,\n 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,\n 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,\n 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,\n 12, 12, 12, 6, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,\n 6, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12,\n 12, 12, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12, 12, 12, 12,\n 12, 12, 6, 12, 12, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12,\n 12, 12, 6, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12, 6, 12,\n 12, 12, 12, 6, 12, 12, 12, 6, 12, 12, 6, 12, 6, 2, 6, 6, 6,\n 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 12, 12,\n 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 6, 12, 12,\n 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12,\n 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12,\n 12, 12, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12, 12, 12, 12,\n 12, 12, 12, 12, 6, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 6,\n 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12, 12,\n 12, 12, 12, 6, 12, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12,\n 12, 6, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 6, 12, 12, 12, 6,\n 12, 12, 6, 12, 6, 2, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,\n 6, 6, 6, 6, 6, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,\n 12, 12, 6, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 6,\n 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12,\n 12, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12, 12, 12, 12, 12,\n 12, 6, 12, 12, 12, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12,\n 12, 12, 12, 6, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12, 6,\n 12, 12, 12, 12, 6, 12, 12, 12, 6, 12, 12, 6, 12, 6, 2, 6, 6,\n 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 12, 12, 12, 12, 12,\n 12, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12, 12, 12, 12, 12,\n 12, 12, 6, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12,\n 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12, 12, 12, 12, 6, 12,\n 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12,\n 6, 12, 12, 12, 6, 12, 12, 6, 12, 6, 2, 6, 6, 6, 6, 6, 6,\n 6, 6, 6, 6, 6, 6, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 6,\n 12, 12, 12, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12, 12, 12,\n 12, 6, 12, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12, 12, 6,\n 12, 12, 12, 12, 6, 12, 12, 12, 6, 12, 12, 6, 12, 6, 2, 6, 6,\n 6, 6, 6, 6, 6, 6, 6, 6, 12, 12, 12, 12, 12, 12, 12, 12, 6,\n 12, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12, 12, 6, 12, 12,\n 12, 12, 12, 6, 12, 12, 12, 6, 12, 12, 6, 12, 6, 2, 6, 6, 6,\n 6, 6, 6, 6, 6, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12,\n 6, 12, 12, 12, 12, 6, 12, 12, 6, 12, 6, 2, 6, 6, 6, 6, 6,\n 6, 12, 12, 12, 12, 6, 12, 12, 12, 6, 12, 6, 2, 6, 6, 6, 6,\n 12, 12, 6, 2, 6]),\n 'frequencies': array([[ 0.35167322, 0.35167322, 0.71941397, 16.05999349, 16.06435417,\n 16.06435417],\n [ 0.7810313 , 1.04550359, 1.76442286, 16.01908158, 16.04238401,\n 16.0474694 ],\n [ 1.43010566, 1.69629248, 3.13109956, 15.91248433, 15.99513531,\n 16.00361669],\n ...,\n [ 4.89126604, 5.30105813, 11.18409265, 13.02666668, 15.38025565,\n 15.46187631],\n [ 4.65215064, 4.65215064, 11.21184039, 13.22967807, 15.43087981,\n 15.43087981],\n [ 4.71432047, 4.84620075, 11.26998698, 13.12729988, 15.41640899,\n 15.43613968]]),\n 'eigenvectors': None,\n 'group_velocities': None},\n 'band_structure_dict': {'qpoints': [array([[0. , 0. , 0. ],\n [0.00531915, 0. , 0.00531915],\n [0.0106383 , 0. , 0.0106383 ],\n [0.01595745, 0. , 0.01595745],\n [0.0212766 , 0. , 0.0212766 ],\n [0.02659574, 0. , 0.02659574],\n [0.03191489, 0. , 0.03191489],\n [0.03723404, 0. , 0.03723404],\n [0.04255319, 0. , 0.04255319],\n [0.04787234, 0. , 0.04787234],\n [0.05319149, 0. , 0.05319149],\n [0.05851064, 0. , 0.05851064],\n [0.06382979, 0. , 0.06382979],\n [0.06914894, 0. , 0.06914894],\n [0.07446809, 0. , 0.07446809],\n [0.07978723, 0. , 0.07978723],\n [0.08510638, 0. , 0.08510638],\n [0.09042553, 0. , 0.09042553],\n [0.09574468, 0. , 0.09574468],\n [0.10106383, 0. , 0.10106383],\n [0.10638298, 0. , 0.10638298],\n [0.11170213, 0. , 0.11170213],\n [0.11702128, 0. , 0.11702128],\n [0.12234043, 0. , 0.12234043],\n [0.12765957, 0. , 0.12765957],\n [0.13297872, 0. , 0.13297872],\n [0.13829787, 0. , 0.13829787],\n [0.14361702, 0. , 0.14361702],\n [0.14893617, 0. , 0.14893617],\n [0.15425532, 0. , 0.15425532],\n [0.15957447, 0. , 0.15957447],\n [0.16489362, 0. , 0.16489362],\n [0.17021277, 0. , 0.17021277],\n [0.17553191, 0. , 0.17553191],\n [0.18085106, 0. , 0.18085106],\n [0.18617021, 0. , 0.18617021],\n [0.19148936, 0. , 0.19148936],\n [0.19680851, 0. , 0.19680851],\n [0.20212766, 0. , 0.20212766],\n [0.20744681, 0. , 0.20744681],\n [0.21276596, 0. , 0.21276596],\n [0.21808511, 0. , 0.21808511],\n [0.22340426, 0. , 0.22340426],\n [0.2287234 , 0. , 0.2287234 ],\n [0.23404255, 0. , 0.23404255],\n [0.2393617 , 0. , 0.2393617 ],\n [0.24468085, 0. , 0.24468085],\n [0.25 , 0. , 0.25 ],\n [0.25531915, 0. , 0.25531915],\n [0.2606383 , 0. , 0.2606383 ],\n [0.26595745, 0. , 0.26595745],\n [0.2712766 , 0. , 0.2712766 ],\n [0.27659574, 0. , 0.27659574],\n [0.28191489, 0. , 0.28191489],\n [0.28723404, 0. , 0.28723404],\n [0.29255319, 0. , 0.29255319],\n [0.29787234, 0. , 0.29787234],\n [0.30319149, 0. , 0.30319149],\n [0.30851064, 0. , 0.30851064],\n [0.31382979, 0. , 0.31382979],\n [0.31914894, 0. , 0.31914894],\n [0.32446809, 0. , 0.32446809],\n [0.32978723, 0. , 0.32978723],\n [0.33510638, 0. , 0.33510638],\n [0.34042553, 0. , 0.34042553],\n [0.34574468, 0. , 0.34574468],\n [0.35106383, 0. , 0.35106383],\n [0.35638298, 0. , 0.35638298],\n [0.36170213, 0. , 0.36170213],\n [0.36702128, 0. , 0.36702128],\n [0.37234043, 0. , 0.37234043],\n [0.37765957, 0. , 0.37765957],\n [0.38297872, 0. , 0.38297872],\n [0.38829787, 0. , 0.38829787],\n [0.39361702, 0. , 0.39361702],\n [0.39893617, 0. , 0.39893617],\n [0.40425532, 0. , 0.40425532],\n [0.40957447, 0. , 0.40957447],\n [0.41489362, 0. , 0.41489362],\n [0.42021277, 0. , 0.42021277],\n [0.42553191, 0. , 0.42553191],\n [0.43085106, 0. , 0.43085106],\n [0.43617021, 0. , 0.43617021],\n [0.44148936, 0. , 0.44148936],\n [0.44680851, 0. , 0.44680851],\n [0.45212766, 0. , 0.45212766],\n [0.45744681, 0. , 0.45744681],\n [0.46276596, 0. , 0.46276596],\n [0.46808511, 0. , 0.46808511],\n [0.47340426, 0. , 0.47340426],\n [0.4787234 , 0. , 0.4787234 ],\n [0.48404255, 0. , 0.48404255],\n [0.4893617 , 0. , 0.4893617 ],\n [0.49468085, 0. , 0.49468085],\n [0.5 , 0. , 0.5 ]]),\n array([[0.5 , 0. , 0.5 ],\n [0.50378788, 0.00757576, 0.50378788],\n [0.50757576, 0.01515152, 0.50757576],\n [0.51136364, 0.02272727, 0.51136364],\n [0.51515152, 0.03030303, 0.51515152],\n [0.51893939, 0.03787879, 0.51893939],\n [0.52272727, 0.04545455, 0.52272727],\n [0.52651515, 0.0530303 , 0.52651515],\n [0.53030303, 0.06060606, 0.53030303],\n [0.53409091, 0.06818182, 0.53409091],\n [0.53787879, 0.07575758, 0.53787879],\n [0.54166667, 0.08333333, 0.54166667],\n [0.54545455, 0.09090909, 0.54545455],\n [0.54924242, 0.09848485, 0.54924242],\n [0.5530303 , 0.10606061, 0.5530303 ],\n [0.55681818, 0.11363636, 0.55681818],\n [0.56060606, 0.12121212, 0.56060606],\n [0.56439394, 0.12878788, 0.56439394],\n [0.56818182, 0.13636364, 0.56818182],\n [0.5719697 , 0.14393939, 0.5719697 ],\n [0.57575758, 0.15151515, 0.57575758],\n [0.57954545, 0.15909091, 0.57954545],\n [0.58333333, 0.16666667, 0.58333333],\n [0.58712121, 0.17424242, 0.58712121],\n [0.59090909, 0.18181818, 0.59090909],\n [0.59469697, 0.18939394, 0.59469697],\n [0.59848485, 0.1969697 , 0.59848485],\n [0.60227273, 0.20454545, 0.60227273],\n [0.60606061, 0.21212121, 0.60606061],\n [0.60984848, 0.21969697, 0.60984848],\n [0.61363636, 0.22727273, 0.61363636],\n [0.61742424, 0.23484848, 0.61742424],\n [0.62121212, 0.24242424, 0.62121212],\n [0.625 , 0.25 , 0.625 ]]),\n array([[0.375 , 0.375 , 0.75 ],\n [0.37125, 0.37125, 0.7425 ],\n [0.3675 , 0.3675 , 0.735 ],\n [0.36375, 0.36375, 0.7275 ],\n [0.36 , 0.36 , 0.72 ],\n [0.35625, 0.35625, 0.7125 ],\n [0.3525 , 0.3525 , 0.705 ],\n [0.34875, 0.34875, 0.6975 ],\n [0.345 , 0.345 , 0.69 ],\n [0.34125, 0.34125, 0.6825 ],\n [0.3375 , 0.3375 , 0.675 ],\n [0.33375, 0.33375, 0.6675 ],\n [0.33 , 0.33 , 0.66 ],\n [0.32625, 0.32625, 0.6525 ],\n [0.3225 , 0.3225 , 0.645 ],\n [0.31875, 0.31875, 0.6375 ],\n [0.315 , 0.315 , 0.63 ],\n [0.31125, 0.31125, 0.6225 ],\n [0.3075 , 0.3075 , 0.615 ],\n [0.30375, 0.30375, 0.6075 ],\n [0.3 , 0.3 , 0.6 ],\n [0.29625, 0.29625, 0.5925 ],\n [0.2925 , 0.2925 , 0.585 ],\n [0.28875, 0.28875, 0.5775 ],\n [0.285 , 0.285 , 0.57 ],\n [0.28125, 0.28125, 0.5625 ],\n [0.2775 , 0.2775 , 0.555 ],\n [0.27375, 0.27375, 0.5475 ],\n [0.27 , 0.27 , 0.54 ],\n [0.26625, 0.26625, 0.5325 ],\n [0.2625 , 0.2625 , 0.525 ],\n [0.25875, 0.25875, 0.5175 ],\n [0.255 , 0.255 , 0.51 ],\n [0.25125, 0.25125, 0.5025 ],\n [0.2475 , 0.2475 , 0.495 ],\n [0.24375, 0.24375, 0.4875 ],\n [0.24 , 0.24 , 0.48 ],\n [0.23625, 0.23625, 0.4725 ],\n [0.2325 , 0.2325 , 0.465 ],\n [0.22875, 0.22875, 0.4575 ],\n [0.225 , 0.225 , 0.45 ],\n [0.22125, 0.22125, 0.4425 ],\n [0.2175 , 0.2175 , 0.435 ],\n [0.21375, 0.21375, 0.4275 ],\n [0.21 , 0.21 , 0.42 ],\n [0.20625, 0.20625, 0.4125 ],\n [0.2025 , 0.2025 , 0.405 ],\n [0.19875, 0.19875, 0.3975 ],\n [0.195 , 0.195 , 0.39 ],\n [0.19125, 0.19125, 0.3825 ],\n [0.1875 , 0.1875 , 0.375 ],\n [0.18375, 0.18375, 0.3675 ],\n [0.18 , 0.18 , 0.36 ],\n [0.17625, 0.17625, 0.3525 ],\n [0.1725 , 0.1725 , 0.345 ],\n [0.16875, 0.16875, 0.3375 ],\n [0.165 , 0.165 , 0.33 ],\n [0.16125, 0.16125, 0.3225 ],\n [0.1575 , 0.1575 , 0.315 ],\n [0.15375, 0.15375, 0.3075 ],\n [0.15 , 0.15 , 0.3 ],\n [0.14625, 0.14625, 0.2925 ],\n [0.1425 , 0.1425 , 0.285 ],\n [0.13875, 0.13875, 0.2775 ],\n [0.135 , 0.135 , 0.27 ],\n [0.13125, 0.13125, 0.2625 ],\n [0.1275 , 0.1275 , 0.255 ],\n [0.12375, 0.12375, 0.2475 ],\n [0.12 , 0.12 , 0.24 ],\n [0.11625, 0.11625, 0.2325 ],\n [0.1125 , 0.1125 , 0.225 ],\n [0.10875, 0.10875, 0.2175 ],\n [0.105 , 0.105 , 0.21 ],\n [0.10125, 0.10125, 0.2025 ],\n [0.0975 , 0.0975 , 0.195 ],\n [0.09375, 0.09375, 0.1875 ],\n [0.09 , 0.09 , 0.18 ],\n [0.08625, 0.08625, 0.1725 ],\n [0.0825 , 0.0825 , 0.165 ],\n [0.07875, 0.07875, 0.1575 ],\n [0.075 , 0.075 , 0.15 ],\n [0.07125, 0.07125, 0.1425 ],\n [0.0675 , 0.0675 , 0.135 ],\n [0.06375, 0.06375, 0.1275 ],\n [0.06 , 0.06 , 0.12 ],\n [0.05625, 0.05625, 0.1125 ],\n [0.0525 , 0.0525 , 0.105 ],\n [0.04875, 0.04875, 0.0975 ],\n [0.045 , 0.045 , 0.09 ],\n [0.04125, 0.04125, 0.0825 ],\n [0.0375 , 0.0375 , 0.075 ],\n [0.03375, 0.03375, 0.0675 ],\n [0.03 , 0.03 , 0.06 ],\n [0.02625, 0.02625, 0.0525 ],\n [0.0225 , 0.0225 , 0.045 ],\n [0.01875, 0.01875, 0.0375 ],\n [0.015 , 0.015 , 0.03 ],\n [0.01125, 0.01125, 0.0225 ],\n [0.0075 , 0.0075 , 0.015 ],\n [0.00375, 0.00375, 0.0075 ],\n [0. , 0. , 0. ]]),\n array([[0. , 0. , 0. ],\n [0.00617284, 0.00617284, 0.00617284],\n [0.01234568, 0.01234568, 0.01234568],\n [0.01851852, 0.01851852, 0.01851852],\n [0.02469136, 0.02469136, 0.02469136],\n [0.0308642 , 0.0308642 , 0.0308642 ],\n [0.03703704, 0.03703704, 0.03703704],\n [0.04320988, 0.04320988, 0.04320988],\n [0.04938272, 0.04938272, 0.04938272],\n [0.05555556, 0.05555556, 0.05555556],\n [0.0617284 , 0.0617284 , 0.0617284 ],\n [0.06790123, 0.06790123, 0.06790123],\n [0.07407407, 0.07407407, 0.07407407],\n [0.08024691, 0.08024691, 0.08024691],\n [0.08641975, 0.08641975, 0.08641975],\n [0.09259259, 0.09259259, 0.09259259],\n [0.09876543, 0.09876543, 0.09876543],\n [0.10493827, 0.10493827, 0.10493827],\n [0.11111111, 0.11111111, 0.11111111],\n [0.11728395, 0.11728395, 0.11728395],\n [0.12345679, 0.12345679, 0.12345679],\n [0.12962963, 0.12962963, 0.12962963],\n [0.13580247, 0.13580247, 0.13580247],\n [0.14197531, 0.14197531, 0.14197531],\n [0.14814815, 0.14814815, 0.14814815],\n [0.15432099, 0.15432099, 0.15432099],\n [0.16049383, 0.16049383, 0.16049383],\n [0.16666667, 0.16666667, 0.16666667],\n [0.17283951, 0.17283951, 0.17283951],\n [0.17901235, 0.17901235, 0.17901235],\n [0.18518519, 0.18518519, 0.18518519],\n [0.19135802, 0.19135802, 0.19135802],\n [0.19753086, 0.19753086, 0.19753086],\n [0.2037037 , 0.2037037 , 0.2037037 ],\n [0.20987654, 0.20987654, 0.20987654],\n [0.21604938, 0.21604938, 0.21604938],\n [0.22222222, 0.22222222, 0.22222222],\n [0.22839506, 0.22839506, 0.22839506],\n [0.2345679 , 0.2345679 , 0.2345679 ],\n [0.24074074, 0.24074074, 0.24074074],\n [0.24691358, 0.24691358, 0.24691358],\n [0.25308642, 0.25308642, 0.25308642],\n [0.25925926, 0.25925926, 0.25925926],\n [0.2654321 , 0.2654321 , 0.2654321 ],\n [0.27160494, 0.27160494, 0.27160494],\n [0.27777778, 0.27777778, 0.27777778],\n [0.28395062, 0.28395062, 0.28395062],\n [0.29012346, 0.29012346, 0.29012346],\n [0.2962963 , 0.2962963 , 0.2962963 ],\n [0.30246914, 0.30246914, 0.30246914],\n [0.30864198, 0.30864198, 0.30864198],\n [0.31481481, 0.31481481, 0.31481481],\n [0.32098765, 0.32098765, 0.32098765],\n [0.32716049, 0.32716049, 0.32716049],\n [0.33333333, 0.33333333, 0.33333333],\n [0.33950617, 0.33950617, 0.33950617],\n [0.34567901, 0.34567901, 0.34567901],\n [0.35185185, 0.35185185, 0.35185185],\n [0.35802469, 0.35802469, 0.35802469],\n [0.36419753, 0.36419753, 0.36419753],\n [0.37037037, 0.37037037, 0.37037037],\n [0.37654321, 0.37654321, 0.37654321],\n [0.38271605, 0.38271605, 0.38271605],\n [0.38888889, 0.38888889, 0.38888889],\n [0.39506173, 0.39506173, 0.39506173],\n [0.40123457, 0.40123457, 0.40123457],\n [0.40740741, 0.40740741, 0.40740741],\n [0.41358025, 0.41358025, 0.41358025],\n [0.41975309, 0.41975309, 0.41975309],\n [0.42592593, 0.42592593, 0.42592593],\n [0.43209877, 0.43209877, 0.43209877],\n [0.4382716 , 0.4382716 , 0.4382716 ],\n [0.44444444, 0.44444444, 0.44444444],\n [0.45061728, 0.45061728, 0.45061728],\n [0.45679012, 0.45679012, 0.45679012],\n [0.46296296, 0.46296296, 0.46296296],\n [0.4691358 , 0.4691358 , 0.4691358 ],\n [0.47530864, 0.47530864, 0.47530864],\n [0.48148148, 0.48148148, 0.48148148],\n [0.48765432, 0.48765432, 0.48765432],\n [0.49382716, 0.49382716, 0.49382716],\n [0.5 , 0.5 , 0.5 ]]),\n array([[0.5 , 0.5 , 0.5 ],\n [0.5 , 0.49621212, 0.50378788],\n [0.5 , 0.49242424, 0.50757576],\n [0.5 , 0.48863636, 0.51136364],\n [0.5 , 0.48484848, 0.51515152],\n [0.5 , 0.48106061, 0.51893939],\n [0.5 , 0.47727273, 0.52272727],\n [0.5 , 0.47348485, 0.52651515],\n [0.5 , 0.46969697, 0.53030303],\n [0.5 , 0.46590909, 0.53409091],\n [0.5 , 0.46212121, 0.53787879],\n [0.5 , 0.45833333, 0.54166667],\n [0.5 , 0.45454545, 0.54545455],\n [0.5 , 0.45075758, 0.54924242],\n [0.5 , 0.4469697 , 0.5530303 ],\n [0.5 , 0.44318182, 0.55681818],\n [0.5 , 0.43939394, 0.56060606],\n [0.5 , 0.43560606, 0.56439394],\n [0.5 , 0.43181818, 0.56818182],\n [0.5 , 0.4280303 , 0.5719697 ],\n [0.5 , 0.42424242, 0.57575758],\n [0.5 , 0.42045455, 0.57954545],\n [0.5 , 0.41666667, 0.58333333],\n [0.5 , 0.41287879, 0.58712121],\n [0.5 , 0.40909091, 0.59090909],\n [0.5 , 0.40530303, 0.59469697],\n [0.5 , 0.40151515, 0.59848485],\n [0.5 , 0.39772727, 0.60227273],\n [0.5 , 0.39393939, 0.60606061],\n [0.5 , 0.39015152, 0.60984848],\n [0.5 , 0.38636364, 0.61363636],\n [0.5 , 0.38257576, 0.61742424],\n [0.5 , 0.37878788, 0.62121212],\n [0.5 , 0.375 , 0.625 ],\n [0.5 , 0.37121212, 0.62878788],\n [0.5 , 0.36742424, 0.63257576],\n [0.5 , 0.36363636, 0.63636364],\n [0.5 , 0.35984848, 0.64015152],\n [0.5 , 0.35606061, 0.64393939],\n [0.5 , 0.35227273, 0.64772727],\n [0.5 , 0.34848485, 0.65151515],\n [0.5 , 0.34469697, 0.65530303],\n [0.5 , 0.34090909, 0.65909091],\n [0.5 , 0.33712121, 0.66287879],\n [0.5 , 0.33333333, 0.66666667],\n [0.5 , 0.32954545, 0.67045455],\n [0.5 , 0.32575758, 0.67424242],\n [0.5 , 0.3219697 , 0.6780303 ],\n [0.5 , 0.31818182, 0.68181818],\n [0.5 , 0.31439394, 0.68560606],\n [0.5 , 0.31060606, 0.68939394],\n [0.5 , 0.30681818, 0.69318182],\n [0.5 , 0.3030303 , 0.6969697 ],\n [0.5 , 0.29924242, 0.70075758],\n [0.5 , 0.29545455, 0.70454545],\n [0.5 , 0.29166667, 0.70833333],\n [0.5 , 0.28787879, 0.71212121],\n [0.5 , 0.28409091, 0.71590909],\n [0.5 , 0.28030303, 0.71969697],\n [0.5 , 0.27651515, 0.72348485],\n [0.5 , 0.27272727, 0.72727273],\n [0.5 , 0.26893939, 0.73106061],\n [0.5 , 0.26515152, 0.73484848],\n [0.5 , 0.26136364, 0.73863636],\n [0.5 , 0.25757576, 0.74242424],\n [0.5 , 0.25378788, 0.74621212],\n [0.5 , 0.25 , 0.75 ]]),\n array([[0.5 , 0.25 , 0.75 ],\n [0.5 , 0.24468085, 0.74468085],\n [0.5 , 0.2393617 , 0.7393617 ],\n [0.5 , 0.23404255, 0.73404255],\n [0.5 , 0.2287234 , 0.7287234 ],\n [0.5 , 0.22340426, 0.72340426],\n [0.5 , 0.21808511, 0.71808511],\n [0.5 , 0.21276596, 0.71276596],\n [0.5 , 0.20744681, 0.70744681],\n [0.5 , 0.20212766, 0.70212766],\n [0.5 , 0.19680851, 0.69680851],\n [0.5 , 0.19148936, 0.69148936],\n [0.5 , 0.18617021, 0.68617021],\n [0.5 , 0.18085106, 0.68085106],\n [0.5 , 0.17553191, 0.67553191],\n [0.5 , 0.17021277, 0.67021277],\n [0.5 , 0.16489362, 0.66489362],\n [0.5 , 0.15957447, 0.65957447],\n [0.5 , 0.15425532, 0.65425532],\n [0.5 , 0.14893617, 0.64893617],\n [0.5 , 0.14361702, 0.64361702],\n [0.5 , 0.13829787, 0.63829787],\n [0.5 , 0.13297872, 0.63297872],\n [0.5 , 0.12765957, 0.62765957],\n [0.5 , 0.12234043, 0.62234043],\n [0.5 , 0.11702128, 0.61702128],\n [0.5 , 0.11170213, 0.61170213],\n [0.5 , 0.10638298, 0.60638298],\n [0.5 , 0.10106383, 0.60106383],\n [0.5 , 0.09574468, 0.59574468],\n [0.5 , 0.09042553, 0.59042553],\n [0.5 , 0.08510638, 0.58510638],\n [0.5 , 0.07978723, 0.57978723],\n [0.5 , 0.07446809, 0.57446809],\n [0.5 , 0.06914894, 0.56914894],\n [0.5 , 0.06382979, 0.56382979],\n [0.5 , 0.05851064, 0.55851064],\n [0.5 , 0.05319149, 0.55319149],\n [0.5 , 0.04787234, 0.54787234],\n [0.5 , 0.04255319, 0.54255319],\n [0.5 , 0.03723404, 0.53723404],\n [0.5 , 0.03191489, 0.53191489],\n [0.5 , 0.02659574, 0.52659574],\n [0.5 , 0.0212766 , 0.5212766 ],\n [0.5 , 0.01595745, 0.51595745],\n [0.5 , 0.0106383 , 0.5106383 ],\n [0.5 , 0.00531915, 0.50531915],\n [0.5 , 0. , 0.5 ]])],\n 'distances': [array([0. , 0.00195846, 0.00391691, 0.00587537, 0.00783383,\n 0.00979229, 0.01175074, 0.0137092 , 0.01566766, 0.01762611,\n 0.01958457, 0.02154303, 0.02350149, 0.02545994, 0.0274184 ,\n 0.02937686, 0.03133531, 0.03329377, 0.03525223, 0.03721068,\n 0.03916914, 0.0411276 , 0.04308606, 0.04504451, 0.04700297,\n 0.04896143, 0.05091988, 0.05287834, 0.0548368 , 0.05679526,\n 0.05875371, 0.06071217, 0.06267063, 0.06462908, 0.06658754,\n 0.068546 , 0.07050446, 0.07246291, 0.07442137, 0.07637983,\n 0.07833828, 0.08029674, 0.0822552 , 0.08421366, 0.08617211,\n 0.08813057, 0.09008903, 0.09204748, 0.09400594, 0.0959644 ,\n 0.09792285, 0.09988131, 0.10183977, 0.10379823, 0.10575668,\n 0.10771514, 0.1096736 , 0.11163205, 0.11359051, 0.11554897,\n 0.11750743, 0.11946588, 0.12142434, 0.1233828 , 0.12534125,\n 0.12729971, 0.12925817, 0.13121663, 0.13317508, 0.13513354,\n 0.137092 , 0.13905045, 0.14100891, 0.14296737, 0.14492583,\n 0.14688428, 0.14884274, 0.1508012 , 0.15275965, 0.15471811,\n 0.15667657, 0.15863503, 0.16059348, 0.16255194, 0.1645104 ,\n 0.16646885, 0.16842731, 0.17038577, 0.17234422, 0.17430268,\n 0.17626114, 0.1782196 , 0.18017805, 0.18213651, 0.18409497]),\n array([0.18409497, 0.18606731, 0.18803966, 0.190012 , 0.19198435,\n 0.19395669, 0.19592904, 0.19790139, 0.19987373, 0.20184608,\n 0.20381842, 0.20579077, 0.20776311, 0.20973546, 0.2117078 ,\n 0.21368015, 0.21565249, 0.21762484, 0.21959719, 0.22156953,\n 0.22354188, 0.22551422, 0.22748657, 0.22945891, 0.23143126,\n 0.2334036 , 0.23537595, 0.23734829, 0.23932064, 0.24129299,\n 0.24326533, 0.24523768, 0.24721002, 0.24918237]),\n array([0.24918237, 0.25113499, 0.25308761, 0.25504023, 0.25699286,\n 0.25894548, 0.2608981 , 0.26285072, 0.26480334, 0.26675597,\n 0.26870859, 0.27066121, 0.27261383, 0.27456645, 0.27651908,\n 0.2784717 , 0.28042432, 0.28237694, 0.28432956, 0.28628219,\n 0.28823481, 0.29018743, 0.29214005, 0.29409267, 0.2960453 ,\n 0.29799792, 0.29995054, 0.30190316, 0.30385578, 0.30580841,\n 0.30776103, 0.30971365, 0.31166627, 0.31361889, 0.31557152,\n 0.31752414, 0.31947676, 0.32142938, 0.323382 , 0.32533463,\n 0.32728725, 0.32923987, 0.33119249, 0.33314511, 0.33509774,\n 0.33705036, 0.33900298, 0.3409556 , 0.34290822, 0.34486085,\n 0.34681347, 0.34876609, 0.35071871, 0.35267133, 0.35462396,\n 0.35657658, 0.3585292 , 0.36048182, 0.36243444, 0.36438707,\n 0.36633969, 0.36829231, 0.37024493, 0.37219755, 0.37415018,\n 0.3761028 , 0.37805542, 0.38000804, 0.38196066, 0.38391329,\n 0.38586591, 0.38781853, 0.38977115, 0.39172377, 0.3936764 ,\n 0.39562902, 0.39758164, 0.39953426, 0.40148688, 0.40343951,\n 0.40539213, 0.40734475, 0.40929737, 0.41124999, 0.41320262,\n 0.41515524, 0.41710786, 0.41906048, 0.4210131 , 0.42296573,\n 0.42491835, 0.42687097, 0.42882359, 0.43077621, 0.43272884,\n 0.43468146, 0.43663408, 0.4385867 , 0.44053932, 0.44249194,\n 0.44444457]),\n array([0.44444457, 0.44641285, 0.44838113, 0.45034942, 0.4523177 ,\n 0.45428598, 0.45625426, 0.45822255, 0.46019083, 0.46215911,\n 0.4641274 , 0.46609568, 0.46806396, 0.47003225, 0.47200053,\n 0.47396881, 0.47593709, 0.47790538, 0.47987366, 0.48184194,\n 0.48381023, 0.48577851, 0.48774679, 0.48971507, 0.49168336,\n 0.49365164, 0.49561992, 0.49758821, 0.49955649, 0.50152477,\n 0.50349306, 0.50546134, 0.50742962, 0.5093979 , 0.51136619,\n 0.51333447, 0.51530275, 0.51727104, 0.51923932, 0.5212076 ,\n 0.52317588, 0.52514417, 0.52711245, 0.52908073, 0.53104902,\n 0.5330173 , 0.53498558, 0.53695387, 0.53892215, 0.54089043,\n 0.54285871, 0.544827 , 0.54679528, 0.54876356, 0.55073185,\n 0.55270013, 0.55466841, 0.55663669, 0.55860498, 0.56057326,\n 0.56254154, 0.56450983, 0.56647811, 0.56844639, 0.57041468,\n 0.57238296, 0.57435124, 0.57631952, 0.57828781, 0.58025609,\n 0.58222437, 0.58419266, 0.58616094, 0.58812922, 0.5900975 ,\n 0.59206579, 0.59403407, 0.59600235, 0.59797064, 0.59993892,\n 0.6019072 , 0.60387549]),\n array([0.60387549, 0.60584783, 0.60782018, 0.60979252, 0.61176487,\n 0.61373721, 0.61570956, 0.6176819 , 0.61965425, 0.62162659,\n 0.62359894, 0.62557129, 0.62754363, 0.62951598, 0.63148832,\n 0.63346067, 0.63543301, 0.63740536, 0.6393777 , 0.64135005,\n 0.64332239, 0.64529474, 0.64726709, 0.64923943, 0.65121178,\n 0.65318412, 0.65515647, 0.65712881, 0.65910116, 0.6610735 ,\n 0.66304585, 0.66501819, 0.66699054, 0.66896289, 0.67093523,\n 0.67290758, 0.67487992, 0.67685227, 0.67882461, 0.68079696,\n 0.6827693 , 0.68474165, 0.68671399, 0.68868634, 0.69065869,\n 0.69263103, 0.69460338, 0.69657572, 0.69854807, 0.70052041,\n 0.70249276, 0.7044651 , 0.70643745, 0.70840979, 0.71038214,\n 0.71235449, 0.71432683, 0.71629918, 0.71827152, 0.72024387,\n 0.72221621, 0.72418856, 0.7261609 , 0.72813325, 0.73010559,\n 0.73207794, 0.73405029]),\n array([0.73405029, 0.73600874, 0.7379672 , 0.73992566, 0.74188411,\n 0.74384257, 0.74580103, 0.74775948, 0.74971794, 0.7516764 ,\n 0.75363486, 0.75559331, 0.75755177, 0.75951023, 0.76146868,\n 0.76342714, 0.7653856 , 0.76734406, 0.76930251, 0.77126097,\n 0.77321943, 0.77517788, 0.77713634, 0.7790948 , 0.78105326,\n 0.78301171, 0.78497017, 0.78692863, 0.78888708, 0.79084554,\n 0.792804 , 0.79476246, 0.79672091, 0.79867937, 0.80063783,\n 0.80259628, 0.80455474, 0.8065132 , 0.80847166, 0.81043011,\n 0.81238857, 0.81434703, 0.81630548, 0.81826394, 0.8202224 ,\n 0.82218085, 0.82413931, 0.82609777])],\n 'frequencies': [array([[2.18701057e-06, 2.19691522e-06, 2.20369934e-06, 1.60678991e+01,\n 1.60678991e+01, 1.60678991e+01],\n [1.06625590e-01, 1.06625590e-01, 1.53239098e-01, 1.60675081e+01,\n 1.60676418e+01, 1.60676418e+01],\n [2.13231909e-01, 2.13231909e-01, 3.06460038e-01, 1.60663351e+01,\n 1.60668701e+01, 1.60668701e+01],\n [3.19799678e-01, 3.19799678e-01, 4.59644667e-01, 1.60643797e+01,\n 1.60655844e+01, 1.60655844e+01],\n [4.26309607e-01, 4.26309607e-01, 6.12774843e-01, 1.60616416e+01,\n 1.60637853e+01, 1.60637853e+01],\n [5.32742383e-01, 5.32742383e-01, 7.65832440e-01, 1.60581201e+01,\n 1.60614737e+01, 1.60614737e+01],\n [6.39078667e-01, 6.39078667e-01, 9.18799354e-01, 1.60538144e+01,\n 1.60586506e+01, 1.60586506e+01],\n [7.45299086e-01, 7.45299086e-01, 1.07165751e+00, 1.60487235e+01,\n 1.60553175e+01, 1.60553175e+01],\n [8.51384225e-01, 8.51384225e-01, 1.22438885e+00, 1.60428463e+01,\n 1.60514759e+01, 1.60514759e+01],\n [9.57314622e-01, 9.57314622e-01, 1.37697538e+00, 1.60361814e+01,\n 1.60471277e+01, 1.60471277e+01],\n [1.06307076e+00, 1.06307076e+00, 1.52939913e+00, 1.60287272e+01,\n 1.60422751e+01, 1.60422751e+01],\n [1.16863306e+00, 1.16863306e+00, 1.68164218e+00, 1.60204822e+01,\n 1.60369205e+01, 1.60369205e+01],\n [1.27398186e+00, 1.27398186e+00, 1.83368666e+00, 1.60114444e+01,\n 1.60310665e+01, 1.60310665e+01],\n [1.37909745e+00, 1.37909745e+00, 1.98551477e+00, 1.60016119e+01,\n 1.60247161e+01, 1.60247161e+01],\n [1.48396001e+00, 1.48396001e+00, 2.13710877e+00, 1.59909824e+01,\n 1.60178724e+01, 1.60178724e+01],\n [1.58854964e+00, 1.58854964e+00, 2.28845098e+00, 1.59795536e+01,\n 1.60105390e+01, 1.60105390e+01],\n [1.69284632e+00, 1.69284632e+00, 2.43952381e+00, 1.59673229e+01,\n 1.60027197e+01, 1.60027197e+01],\n [1.79682995e+00, 1.79682995e+00, 2.59030972e+00, 1.59542878e+01,\n 1.59944185e+01, 1.59944185e+01],\n [1.90048030e+00, 1.90048030e+00, 2.74079128e+00, 1.59404453e+01,\n 1.59856398e+01, 1.59856398e+01],\n [2.00377700e+00, 2.00377700e+00, 2.89095116e+00, 1.59257926e+01,\n 1.59763882e+01, 1.59763882e+01],\n [2.10669956e+00, 2.10669956e+00, 3.04077208e+00, 1.59103264e+01,\n 1.59666687e+01, 1.59666687e+01],\n [2.20922736e+00, 2.20922736e+00, 3.19023691e+00, 1.58940435e+01,\n 1.59564867e+01, 1.59564867e+01],\n [2.31133960e+00, 2.31133960e+00, 3.33932858e+00, 1.58769405e+01,\n 1.59458477e+01, 1.59458477e+01],\n [2.41301534e+00, 2.41301534e+00, 3.48803016e+00, 1.58590139e+01,\n 1.59347578e+01, 1.59347578e+01],\n [2.51423346e+00, 2.51423346e+00, 3.63632482e+00, 1.58402599e+01,\n 1.59232232e+01, 1.59232232e+01],\n [2.61497266e+00, 2.61497266e+00, 3.78419585e+00, 1.58206748e+01,\n 1.59112506e+01, 1.59112506e+01],\n [2.71521144e+00, 2.71521144e+00, 3.93162667e+00, 1.58002545e+01,\n 1.58988470e+01, 1.58988470e+01],\n [2.81492813e+00, 2.81492813e+00, 4.07860083e+00, 1.57789952e+01,\n 1.58860198e+01, 1.58860198e+01],\n [2.91410081e+00, 2.91410081e+00, 4.22510199e+00, 1.57568925e+01,\n 1.58727768e+01, 1.58727768e+01],\n [3.01270737e+00, 3.01270737e+00, 4.37111398e+00, 1.57339422e+01,\n 1.58591262e+01, 1.58591262e+01],\n [3.11072544e+00, 3.11072544e+00, 4.51662075e+00, 1.57101400e+01,\n 1.58450764e+01, 1.58450764e+01],\n [3.20813243e+00, 3.20813243e+00, 4.66160641e+00, 1.56854812e+01,\n 1.58306367e+01, 1.58306367e+01],\n [3.30490548e+00, 3.30490548e+00, 4.80605520e+00, 1.56599614e+01,\n 1.58158162e+01, 1.58158162e+01],\n [3.40102147e+00, 3.40102147e+00, 4.94995155e+00, 1.56335759e+01,\n 1.58006249e+01, 1.58006249e+01],\n [3.49645700e+00, 3.49645700e+00, 5.09328001e+00, 1.56063199e+01,\n 1.57850732e+01, 1.57850732e+01],\n [3.59118839e+00, 3.59118839e+00, 5.23602533e+00, 1.55781885e+01,\n 1.57691716e+01, 1.57691716e+01],\n [3.68519163e+00, 3.68519163e+00, 5.37817241e+00, 1.55491768e+01,\n 1.57529316e+01, 1.57529316e+01],\n [3.77844244e+00, 3.77844244e+00, 5.51970631e+00, 1.55192800e+01,\n 1.57363649e+01, 1.57363649e+01],\n [3.87091618e+00, 3.87091618e+00, 5.66061230e+00, 1.54884928e+01,\n 1.57194835e+01, 1.57194835e+01],\n [3.96258789e+00, 3.96258789e+00, 5.80087581e+00, 1.54568102e+01,\n 1.57023004e+01, 1.57023004e+01],\n [4.05343226e+00, 4.05343226e+00, 5.94048245e+00, 1.54242271e+01,\n 1.56848288e+01, 1.56848288e+01],\n [4.14342363e+00, 4.14342363e+00, 6.07941802e+00, 1.53907382e+01,\n 1.56670824e+01, 1.56670824e+01],\n [4.23253595e+00, 4.23253595e+00, 6.21766853e+00, 1.53563383e+01,\n 1.56490757e+01, 1.56490757e+01],\n [4.32074280e+00, 4.32074280e+00, 6.35522016e+00, 1.53210221e+01,\n 1.56308235e+01, 1.56308235e+01],\n [4.40801738e+00, 4.40801738e+00, 6.49205931e+00, 1.52847843e+01,\n 1.56123413e+01, 1.56123413e+01],\n [4.49433246e+00, 4.49433246e+00, 6.62817257e+00, 1.52476196e+01,\n 1.55936453e+01, 1.55936453e+01],\n [4.57966044e+00, 4.57966044e+00, 6.76354674e+00, 1.52095227e+01,\n 1.55747520e+01, 1.55747520e+01],\n [4.66397327e+00, 4.66397327e+00, 6.89816884e+00, 1.51704881e+01,\n 1.55556788e+01, 1.55556788e+01],\n [4.74724248e+00, 4.74724248e+00, 7.03202608e+00, 1.51305106e+01,\n 1.55364436e+01, 1.55364436e+01],\n [4.82943918e+00, 4.82943918e+00, 7.16510590e+00, 1.50895847e+01,\n 1.55170649e+01, 1.55170649e+01],\n [4.91053403e+00, 4.91053403e+00, 7.29739597e+00, 1.50477052e+01,\n 1.54975617e+01, 1.54975617e+01],\n [4.99049726e+00, 4.99049726e+00, 7.42888415e+00, 1.50048667e+01,\n 1.54779540e+01, 1.54779540e+01],\n [5.06929865e+00, 5.06929865e+00, 7.55955856e+00, 1.49610639e+01,\n 1.54582620e+01, 1.54582620e+01],\n [5.14690753e+00, 5.14690753e+00, 7.68940753e+00, 1.49162915e+01,\n 1.54385069e+01, 1.54385069e+01],\n [5.22329282e+00, 5.22329282e+00, 7.81841962e+00, 1.48705443e+01,\n 1.54187103e+01, 1.54187103e+01],\n [5.29842297e+00, 5.29842297e+00, 7.94658362e+00, 1.48238171e+01,\n 1.53988946e+01, 1.53988946e+01],\n [5.37226600e+00, 5.37226600e+00, 8.07388856e+00, 1.47761047e+01,\n 1.53790827e+01, 1.53790827e+01],\n [5.44478953e+00, 5.44478953e+00, 8.20032372e+00, 1.47274020e+01,\n 1.53592983e+01, 1.53592983e+01],\n [5.51596076e+00, 5.51596076e+00, 8.32587860e+00, 1.46777039e+01,\n 1.53395654e+01, 1.53395654e+01],\n [5.58574651e+00, 5.58574651e+00, 8.45054294e+00, 1.46270056e+01,\n 1.53199089e+01, 1.53199089e+01],\n [5.65411319e+00, 5.65411319e+00, 8.57430676e+00, 1.45753020e+01,\n 1.53003542e+01, 1.53003542e+01],\n [5.72102691e+00, 5.72102691e+00, 8.69716027e+00, 1.45225884e+01,\n 1.52809272e+01, 1.52809272e+01],\n [5.78645342e+00, 5.78645342e+00, 8.81909398e+00, 1.44688599e+01,\n 1.52616544e+01, 1.52616544e+01],\n [5.85035821e+00, 5.85035821e+00, 8.94009862e+00, 1.44141121e+01,\n 1.52425628e+01, 1.52425628e+01],\n [5.91270648e+00, 5.91270648e+00, 9.06016518e+00, 1.43583401e+01,\n 1.52236797e+01, 1.52236797e+01],\n [5.97346325e+00, 5.97346325e+00, 9.17928491e+00, 1.43015397e+01,\n 1.52050331e+01, 1.52050331e+01],\n [6.03259336e+00, 6.03259336e+00, 9.29744928e+00, 1.42437065e+01,\n 1.51866511e+01, 1.51866511e+01],\n [6.09006155e+00, 6.09006155e+00, 9.41465007e+00, 1.41848361e+01,\n 1.51685625e+01, 1.51685625e+01],\n [6.14583250e+00, 6.14583250e+00, 9.53087927e+00, 1.41249246e+01,\n 1.51507959e+01, 1.51507959e+01],\n [6.19987090e+00, 6.19987090e+00, 9.64612916e+00, 1.40639678e+01,\n 1.51333805e+01, 1.51333805e+01],\n [6.25214152e+00, 6.25214152e+00, 9.76039224e+00, 1.40019619e+01,\n 1.51163455e+01, 1.51163455e+01],\n [6.30260929e+00, 6.30260929e+00, 9.87366131e+00, 1.39389032e+01,\n 1.50997202e+01, 1.50997202e+01],\n [6.35123937e+00, 6.35123937e+00, 9.98592942e+00, 1.38747880e+01,\n 1.50835337e+01, 1.50835337e+01],\n [6.39799726e+00, 6.39799726e+00, 1.00971898e+01, 1.38096130e+01,\n 1.50678154e+01, 1.50678154e+01],\n [6.44284885e+00, 6.44284885e+00, 1.02074362e+01, 1.37433748e+01,\n 1.50525941e+01, 1.50525941e+01],\n [6.48576059e+00, 6.48576059e+00, 1.03166622e+01, 1.36760703e+01,\n 1.50378985e+01, 1.50378985e+01],\n [6.52669951e+00, 6.52669951e+00, 1.04248621e+01, 1.36076964e+01,\n 1.50237569e+01, 1.50237569e+01],\n [6.56563338e+00, 6.56563338e+00, 1.05320301e+01, 1.35382504e+01,\n 1.50101972e+01, 1.50101972e+01],\n [6.60253081e+00, 6.60253081e+00, 1.06381608e+01, 1.34677297e+01,\n 1.49972465e+01, 1.49972465e+01],\n [6.63736135e+00, 6.63736135e+00, 1.07432492e+01, 1.33961316e+01,\n 1.49849313e+01, 1.49849313e+01],\n [6.67009563e+00, 6.67009563e+00, 1.08472903e+01, 1.33234540e+01,\n 1.49732773e+01, 1.49732773e+01],\n [6.70070547e+00, 6.70070547e+00, 1.09502796e+01, 1.32496947e+01,\n 1.49623091e+01, 1.49623091e+01],\n [6.72916397e+00, 6.72916397e+00, 1.10522127e+01, 1.31748518e+01,\n 1.49520504e+01, 1.49520504e+01],\n [6.75544567e+00, 6.75544567e+00, 1.11530855e+01, 1.30989236e+01,\n 1.49425237e+01, 1.49425237e+01],\n [6.77952663e+00, 6.77952663e+00, 1.12528941e+01, 1.30219085e+01,\n 1.49337500e+01, 1.49337500e+01],\n [6.80138457e+00, 6.80138457e+00, 1.13516350e+01, 1.29438053e+01,\n 1.49257493e+01, 1.49257493e+01],\n [6.82099896e+00, 6.82099896e+00, 1.14493049e+01, 1.28646126e+01,\n 1.49185396e+01, 1.49185396e+01],\n [6.83835113e+00, 6.83835113e+00, 1.15459006e+01, 1.27843298e+01,\n 1.49121375e+01, 1.49121375e+01],\n [6.85342435e+00, 6.85342435e+00, 1.16414194e+01, 1.27029559e+01,\n 1.49065581e+01, 1.49065581e+01],\n [6.86620396e+00, 6.86620396e+00, 1.17358587e+01, 1.26204906e+01,\n 1.49018144e+01, 1.49018144e+01],\n [6.87667737e+00, 6.87667737e+00, 1.18292162e+01, 1.25369336e+01,\n 1.48979177e+01, 1.48979177e+01],\n [6.88483424e+00, 6.88483424e+00, 1.19214899e+01, 1.24522848e+01,\n 1.48948771e+01, 1.48948771e+01],\n [6.89066641e+00, 6.89066641e+00, 1.20126778e+01, 1.23665443e+01,\n 1.48927000e+01, 1.48927000e+01],\n [6.89416806e+00, 6.89416806e+00, 1.21027784e+01, 1.22797127e+01,\n 1.48913917e+01, 1.48913917e+01],\n [6.89533567e+00, 6.89533567e+00, 1.21917904e+01, 1.21917904e+01,\n 1.48909552e+01, 1.48909552e+01]]),\n array([[ 6.89533567, 6.89533567, 12.19179039, 12.19179039, 14.89095524,\n 14.89095524],\n [ 6.89476599, 6.89721307, 12.19035931, 12.19131253, 14.89109076,\n 14.89177681],\n [ 6.8930571 , 6.90283616, 12.18607431, 12.18988157, 14.8914973 ,\n 14.89423361],\n [ 6.89020956, 6.91217764, 12.17895978, 12.18750534, 14.89217481,\n 14.89830206],\n [ 6.88622426, 6.92519216, 12.16905574, 12.18419693, 14.89312318,\n 14.90394357],\n [ 6.88110243, 6.9418166 , 12.15641674, 12.17997485, 14.89434227,\n 14.91110552],\n [ 6.8748457 , 6.96197032, 12.1411106 , 12.17486306, 14.89583189,\n 14.9197226 ],\n [ 6.86745601, 6.98555564, 12.1232168 , 12.16889124, 14.89759181,\n 14.92971834],\n [ 6.85893568, 7.0124582 , 12.10282475, 12.16209492, 14.89962177,\n 14.94100685],\n [ 6.84928737, 7.04254753, 12.08003199, 12.15451577, 14.90192145,\n 14.9534946 ],\n [ 6.83851409, 7.07567754, 12.05494232, 12.14620185, 14.90449047,\n 14.96708225],\n [ 6.8266192 , 7.11168706, 12.02766403, 12.13720797, 14.90732842,\n 14.98166641],\n [ 6.81360641, 7.1504004 , 11.99830825, 12.12759601, 14.91043482,\n 14.99714124],\n [ 6.79947975, 7.19162786, 11.96698741, 12.11743535, 14.91380915,\n 15.01339997],\n [ 6.78424361, 7.23516623, 11.93381387, 12.10680327, 14.91745083,\n 15.03033626],\n [ 6.7679027 , 7.28079926, 11.89889873, 12.0957854 , 14.9213592 ,\n 15.04784527],\n [ 6.75046209, 7.32829805, 11.86235086, 12.08447621, 14.92553355,\n 15.06582469],\n [ 6.73192714, 7.3774215 , 11.82427602, 12.07297947, 14.92997311,\n 15.0841755 ],\n [ 6.71230356, 7.42791658, 11.78477623, 12.06140874, 14.93467703,\n 15.1028026 ],\n [ 6.69159738, 7.47951874, 11.74394921, 12.0498878 , 14.93964437,\n 15.12161529],\n [ 6.66981492, 7.53195215, 11.701888 , 12.03855107, 14.94487413,\n 15.14052765],\n [ 6.64696284, 7.58493013, 11.65868065, 12.02754391, 14.95036522,\n 15.15945873],\n [ 6.62304809, 7.6381555 , 11.61441001, 12.01702285, 14.95611647,\n 15.17833279],\n [ 6.59807794, 7.69132112, 11.5691536 , 12.0071556 , 14.96212661,\n 15.19707928],\n [ 6.57205993, 7.74411056, 11.52298356, 11.99812092, 14.96839427,\n 15.21563293],\n [ 6.5450019 , 7.79619897, 11.47596658, 11.99010811, 14.974918 ,\n 15.23393372],\n [ 6.51691198, 7.8472543 , 11.42816396, 11.98331627, 14.98169623,\n 15.25192677],\n [ 6.48779857, 7.89693879, 11.3796316 , 11.9779531 , 14.98872728,\n 15.26956229],\n [ 6.45767036, 7.94491097, 11.33042012, 11.97423316, 14.99600936,\n 15.28679543],\n [ 6.42653627, 7.99082805, 11.28057486, 11.97237575, 15.00354058,\n 15.30358621],\n [ 6.39440553, 8.03434895, 11.23013602, 11.97260212, 15.01131889,\n 15.31989932],\n [ 6.36128757, 8.07513774, 11.17913872, 11.97513212, 15.01934216,\n 15.33570402],\n [ 6.3271921 , 8.11286763, 11.12761311, 11.98018037, 15.02760809,\n 15.35097401],\n [ 6.29212906, 8.1472254 , 11.07558447, 11.98795191, 15.03611427,\n 15.36568722]]),\n array([[6.29212906e+00, 8.14722540e+00, 1.10755845e+01, 1.19879519e+01,\n 1.50361143e+01, 1.53656872e+01],\n [6.25647352e+00, 8.17762824e+00, 1.10236007e+01, 1.19985158e+01,\n 1.50447695e+01, 1.53796873e+01],\n [6.21988972e+00, 8.20417287e+00, 1.09711594e+01, 1.20121030e+01,\n 1.50536551e+01, 1.53931105e+01],\n [6.18238794e+00, 8.22662180e+00, 1.09182714e+01, 1.20288578e+01,\n 1.50627683e+01, 1.54059471e+01],\n [6.14397867e+00, 8.24476801e+00, 1.08649436e+01, 1.20488984e+01,\n 1.50721062e+01, 1.54181907e+01],\n [6.10467261e+00, 8.25843843e+00, 1.08111782e+01, 1.20723127e+01,\n 1.50816657e+01, 1.54298385e+01],\n [6.06448062e+00, 8.26749638e+00, 1.07569737e+01, 1.20991563e+01,\n 1.50914436e+01, 1.54408909e+01],\n [6.02341375e+00, 8.27184310e+00, 1.07023245e+01, 1.21294507e+01,\n 1.51014366e+01, 1.54513515e+01],\n [5.98148322e+00, 8.27141809e+00, 1.06472210e+01, 1.21631830e+01,\n 1.51116412e+01, 1.54612269e+01],\n [5.93870041e+00, 8.26619826e+00, 1.05916501e+01, 1.22003070e+01,\n 1.51220536e+01, 1.54705266e+01],\n [5.89507685e+00, 8.25619607e+00, 1.05355947e+01, 1.22407444e+01,\n 1.51326701e+01, 1.54792629e+01],\n [5.85062423e+00, 8.24145671e+00, 1.04790345e+01, 1.22843880e+01,\n 1.51434866e+01, 1.54874505e+01],\n [5.80535435e+00, 8.22205454e+00, 1.04219458e+01, 1.23311050e+01,\n 1.51544990e+01, 1.54951070e+01],\n [5.75927918e+00, 8.19808909e+00, 1.03643013e+01, 1.23807412e+01,\n 1.51657030e+01, 1.55022519e+01],\n [5.71241078e+00, 8.16968082e+00, 1.03060712e+01, 1.24331247e+01,\n 1.51770940e+01, 1.55089071e+01],\n [5.66476132e+00, 8.13696682e+00, 1.02472222e+01, 1.24880707e+01,\n 1.51886673e+01, 1.55150965e+01],\n [5.61634311e+00, 8.10009673e+00, 1.01877186e+01, 1.25453849e+01,\n 1.52004182e+01, 1.55208458e+01],\n [5.56716850e+00, 8.05922898e+00, 1.01275221e+01, 1.26048678e+01,\n 1.52123416e+01, 1.55261825e+01],\n [5.51724999e+00, 8.01452741e+00, 1.00665919e+01, 1.26663173e+01,\n 1.52244322e+01, 1.55311356e+01],\n [5.46660010e+00, 7.96615838e+00, 1.00048851e+01, 1.27295323e+01,\n 1.52366848e+01, 1.55357354e+01],\n [5.41523147e+00, 7.91428833e+00, 9.94235680e+00, 1.27943144e+01,\n 1.52490938e+01, 1.55400135e+01],\n [5.36315676e+00, 7.85908189e+00, 9.87896026e+00, 1.28604702e+01,\n 1.52616534e+01, 1.55440024e+01],\n [5.31038872e+00, 7.80070024e+00, 9.81464731e+00, 1.29278126e+01,\n 1.52743579e+01, 1.55477354e+01],\n [5.25694012e+00, 7.73930008e+00, 9.74936842e+00, 1.29961616e+01,\n 1.52872010e+01, 1.55512465e+01],\n [5.20282376e+00, 7.67503275e+00, 9.68307301e+00, 1.30653456e+01,\n 1.53001767e+01, 1.55545700e+01],\n [5.14805250e+00, 7.60804370e+00, 9.61570966e+00, 1.31352015e+01,\n 1.53132784e+01, 1.55577406e+01],\n [5.09263918e+00, 7.53847222e+00, 9.54722637e+00, 1.32055749e+01,\n 1.53264997e+01, 1.55607929e+01],\n [5.03659669e+00, 7.46645125e+00, 9.47757079e+00, 1.32763204e+01,\n 1.53398339e+01, 1.55637613e+01],\n [4.97993788e+00, 7.39210746e+00, 9.40669052e+00, 1.33473013e+01,\n 1.53532739e+01, 1.55666801e+01],\n [4.92267563e+00, 7.31556132e+00, 9.33453328e+00, 1.34183894e+01,\n 1.53668129e+01, 1.55695827e+01],\n [4.86482279e+00, 7.23692730e+00, 9.26104725e+00, 1.34894651e+01,\n 1.53804435e+01, 1.55725021e+01],\n [4.80639218e+00, 7.15631413e+00, 9.18618123e+00, 1.35604165e+01,\n 1.53941585e+01, 1.55754701e+01],\n [4.74739660e+00, 7.07382508e+00, 9.10988493e+00, 1.36311397e+01,\n 1.54079504e+01, 1.55785176e+01],\n [4.68784882e+00, 6.98955824e+00, 9.03210916e+00, 1.37015378e+01,\n 1.54218114e+01, 1.55816741e+01],\n [4.62776153e+00, 6.90360685e+00, 8.95280611e+00, 1.37715211e+01,\n 1.54357340e+01, 1.55849678e+01],\n [4.56714742e+00, 6.81605958e+00, 8.87192951e+00, 1.38410062e+01,\n 1.54497101e+01, 1.55884254e+01],\n [4.50601906e+00, 6.72700084e+00, 8.78943483e+00, 1.39099162e+01,\n 1.54637317e+01, 1.55920716e+01],\n [4.44438898e+00, 6.63651108e+00, 8.70527953e+00, 1.39781798e+01,\n 1.54777906e+01, 1.55959297e+01],\n [4.38226965e+00, 6.54466702e+00, 8.61942314e+00, 1.40457313e+01,\n 1.54918787e+01, 1.56000208e+01],\n [4.31967342e+00, 6.45154194e+00, 8.53182751e+00, 1.41125102e+01,\n 1.55059874e+01, 1.56043639e+01],\n [4.25661258e+00, 6.35720591e+00, 8.44245688e+00, 1.41784608e+01,\n 1.55201084e+01, 1.56089764e+01],\n [4.19309930e+00, 6.26172600e+00, 8.35127806e+00, 1.42435321e+01,\n 1.55342331e+01, 1.56138729e+01],\n [4.12914566e+00, 6.16516649e+00, 8.25826052e+00, 1.43076773e+01,\n 1.55483527e+01, 1.56190663e+01],\n [4.06476362e+00, 6.06758902e+00, 8.16337647e+00, 1.43708539e+01,\n 1.55624585e+01, 1.56245671e+01],\n [3.99996504e+00, 5.96905281e+00, 8.06660096e+00, 1.44330230e+01,\n 1.55765418e+01, 1.56303834e+01],\n [3.93476163e+00, 5.86961477e+00, 7.96791195e+00, 1.44941494e+01,\n 1.55905936e+01, 1.56365214e+01],\n [3.86916501e+00, 5.76932964e+00, 7.86729031e+00, 1.45542014e+01,\n 1.56046049e+01, 1.56429847e+01],\n [3.80318663e+00, 5.66825013e+00, 7.76471990e+00, 1.46131503e+01,\n 1.56185667e+01, 1.56497750e+01],\n [3.73683782e+00, 5.56642700e+00, 7.66018754e+00, 1.46709706e+01,\n 1.56324701e+01, 1.56568916e+01],\n [3.67012976e+00, 5.46390917e+00, 7.55368306e+00, 1.47276397e+01,\n 1.56463058e+01, 1.56643318e+01],\n [3.60307349e+00, 5.36074380e+00, 7.44519925e+00, 1.47831375e+01,\n 1.56600648e+01, 1.56720909e+01],\n [3.53567988e+00, 5.25697637e+00, 7.33473184e+00, 1.48374466e+01,\n 1.56737379e+01, 1.56801621e+01],\n [3.46795965e+00, 5.15265073e+00, 7.22227948e+00, 1.48905521e+01,\n 1.56873160e+01, 1.56885369e+01],\n [3.39992337e+00, 5.04780917e+00, 7.10784369e+00, 1.49424412e+01,\n 1.56972047e+01, 1.57007899e+01],\n [3.33158144e+00, 4.94249245e+00, 6.99142877e+00, 1.49931033e+01,\n 1.57061535e+01, 1.57141505e+01],\n [3.26294407e+00, 4.83673984e+00, 6.87304180e+00, 1.50425299e+01,\n 1.57153696e+01, 1.57273887e+01],\n [3.19402132e+00, 4.73058919e+00, 6.75269253e+00, 1.50907144e+01,\n 1.57248376e+01, 1.57404953e+01],\n [3.12482308e+00, 4.62407689e+00, 6.63039332e+00, 1.51376519e+01,\n 1.57345411e+01, 1.57534612e+01],\n [3.05535904e+00, 4.51723796e+00, 6.50615903e+00, 1.51833393e+01,\n 1.57444621e+01, 1.57662775e+01],\n [2.98563873e+00, 4.41010602e+00, 6.38000697e+00, 1.52277750e+01,\n 1.57545816e+01, 1.57789351e+01],\n [2.91567149e+00, 4.30271333e+00, 6.25195683e+00, 1.52709592e+01,\n 1.57648794e+01, 1.57914252e+01],\n [2.84546649e+00, 4.19509079e+00, 6.12203053e+00, 1.53128930e+01,\n 1.57753347e+01, 1.58037389e+01],\n [2.77503270e+00, 4.08726795e+00, 5.99025217e+00, 1.53535793e+01,\n 1.57859255e+01, 1.58158673e+01],\n [2.70437890e+00, 3.97927300e+00, 5.85664796e+00, 1.53930220e+01,\n 1.57966294e+01, 1.58278019e+01],\n [2.63351372e+00, 3.87113280e+00, 5.72124608e+00, 1.54312262e+01,\n 1.58074231e+01, 1.58395340e+01],\n [2.56244556e+00, 3.76287285e+00, 5.58407662e+00, 1.54681979e+01,\n 1.58182831e+01, 1.58510552e+01],\n [2.49118267e+00, 3.65451734e+00, 5.44517149e+00, 1.55039443e+01,\n 1.58291854e+01, 1.58623571e+01],\n [2.41973308e+00, 3.54608907e+00, 5.30456433e+00, 1.55384733e+01,\n 1.58401057e+01, 1.58734313e+01],\n [2.34810468e+00, 3.43760952e+00, 5.16229042e+00, 1.55717939e+01,\n 1.58510196e+01, 1.58842699e+01],\n [2.27630514e+00, 3.32909882e+00, 5.01838660e+00, 1.56039154e+01,\n 1.58619024e+01, 1.58948649e+01],\n [2.20434195e+00, 3.22057576e+00, 4.87289117e+00, 1.56348481e+01,\n 1.58727296e+01, 1.59052083e+01],\n [2.13222245e+00, 3.11205777e+00, 4.72584387e+00, 1.56646028e+01,\n 1.58834767e+01, 1.59152926e+01],\n [2.05995377e+00, 3.00356093e+00, 4.57728573e+00, 1.56931907e+01,\n 1.58941193e+01, 1.59251103e+01],\n [1.98754288e+00, 2.89509999e+00, 4.42725903e+00, 1.57206235e+01,\n 1.59046335e+01, 1.59346539e+01],\n [1.91499656e+00, 2.78668835e+00, 4.27580725e+00, 1.57469133e+01,\n 1.59149954e+01, 1.59439165e+01],\n [1.84232146e+00, 2.67833808e+00, 4.12297496e+00, 1.57720725e+01,\n 1.59251816e+01, 1.59528909e+01],\n [1.76952401e+00, 2.57005993e+00, 3.96880779e+00, 1.57961136e+01,\n 1.59351692e+01, 1.59615704e+01],\n [1.69661051e+00, 2.46186333e+00, 3.81335233e+00, 1.58190493e+01,\n 1.59449357e+01, 1.59699486e+01],\n [1.62358710e+00, 2.35375641e+00, 3.65665612e+00, 1.58408924e+01,\n 1.59544591e+01, 1.59780189e+01],\n [1.55045976e+00, 2.24574602e+00, 3.49876755e+00, 1.58616557e+01,\n 1.59637183e+01, 1.59857754e+01],\n [1.47723431e+00, 2.13783775e+00, 3.33973581e+00, 1.58813519e+01,\n 1.59726925e+01, 1.59932120e+01],\n [1.40391643e+00, 2.03003593e+00, 3.17961087e+00, 1.58999937e+01,\n 1.59813619e+01, 1.60003231e+01],\n [1.33051166e+00, 1.92234372e+00, 3.01844339e+00, 1.59175935e+01,\n 1.59897072e+01, 1.60071033e+01],\n [1.25702542e+00, 1.81476304e+00, 2.85628468e+00, 1.59341635e+01,\n 1.59977100e+01, 1.60135473e+01],\n [1.18346297e+00, 1.70729471e+00, 2.69318669e+00, 1.59497156e+01,\n 1.60053528e+01, 1.60196502e+01],\n [1.10982948e+00, 1.59993840e+00, 2.52920191e+00, 1.59642614e+01,\n 1.60126188e+01, 1.60254073e+01],\n [1.03612996e+00, 1.49269275e+00, 2.36438337e+00, 1.59778120e+01,\n 1.60194921e+01, 1.60308142e+01],\n [9.62369353e-01, 1.38555533e+00, 2.19878458e+00, 1.59903781e+01,\n 1.60259578e+01, 1.60358666e+01],\n [8.88552464e-01, 1.27852278e+00, 2.03245949e+00, 1.60019699e+01,\n 1.60320020e+01, 1.60405607e+01],\n [8.14684015e-01, 1.17159077e+00, 1.86546247e+00, 1.60125969e+01,\n 1.60376114e+01, 1.60448929e+01],\n [7.40768631e-01, 1.06475413e+00, 1.69784826e+00, 1.60222682e+01,\n 1.60427741e+01, 1.60488597e+01],\n [6.66810854e-01, 9.58006865e-01, 1.52967192e+00, 1.60309922e+01,\n 1.60474790e+01, 1.60524581e+01],\n [5.92815147e-01, 8.51342252e-01, 1.36098882e+00, 1.60387766e+01,\n 1.60517159e+01, 1.60556853e+01],\n [5.18785904e-01, 7.44752868e-01, 1.19185462e+00, 1.60456283e+01,\n 1.60554758e+01, 1.60585387e+01],\n [4.44727457e-01, 6.38230684e-01, 1.02232518e+00, 1.60515536e+01,\n 1.60587508e+01, 1.60610163e+01],\n [3.70644079e-01, 5.31767125e-01, 8.52456593e-01, 1.60565579e+01,\n 1.60615337e+01, 1.60631159e+01],\n [2.96540000e-01, 4.25353148e-01, 6.82305119e-01, 1.60606459e+01,\n 1.60638187e+01, 1.60648360e+01],\n [2.22419407e-01, 3.18979315e-01, 5.11927163e-01, 1.60638214e+01,\n 1.60656010e+01, 1.60661753e+01],\n [1.48286457e-01, 2.12635869e-01, 3.41379243e-01, 1.60660875e+01,\n 1.60668768e+01, 1.60671327e+01],\n [7.41452829e-02, 1.06312817e-01, 1.70717968e-01, 1.60674463e+01,\n 1.60676434e+01, 1.60677074e+01],\n [2.18701057e-06, 2.19691522e-06, 2.20369934e-06, 1.60678991e+01,\n 1.60678991e+01, 1.60678991e+01]]),\n array([[2.18701057e-06, 2.19691522e-06, 2.20369934e-06, 1.60678991e+01,\n 1.60678991e+01, 1.60678991e+01],\n [8.68987455e-02, 8.68987455e-02, 1.77711678e-01, 1.60674173e+01,\n 1.60676826e+01, 1.60676826e+01],\n [1.73771843e-01, 1.73771843e-01, 3.55392732e-01, 1.60659718e+01,\n 1.60670336e+01, 1.60670336e+01],\n [2.60593637e-01, 2.60593637e-01, 5.33012548e-01, 1.60635622e+01,\n 1.60659527e+01, 1.60659527e+01],\n [3.47338458e-01, 3.47338458e-01, 7.10540526e-01, 1.60601876e+01,\n 1.60644410e+01, 1.60644410e+01],\n [4.33980615e-01, 4.33980615e-01, 8.87946095e-01, 1.60558468e+01,\n 1.60625002e+01, 1.60625002e+01],\n [5.20494388e-01, 5.20494388e-01, 1.06519872e+00, 1.60505385e+01,\n 1.60601324e+01, 1.60601324e+01],\n [6.06854021e-01, 6.06854021e-01, 1.24226790e+00, 1.60442608e+01,\n 1.60573401e+01, 1.60573401e+01],\n [6.93033715e-01, 6.93033715e-01, 1.41912319e+00, 1.60370117e+01,\n 1.60541264e+01, 1.60541264e+01],\n [7.79007624e-01, 7.79007624e-01, 1.59573422e+00, 1.60287888e+01,\n 1.60504947e+01, 1.60504947e+01],\n [8.64749842e-01, 8.64749842e-01, 1.77207066e+00, 1.60195894e+01,\n 1.60464489e+01, 1.60464489e+01],\n [9.50234402e-01, 9.50234402e-01, 1.94810227e+00, 1.60094105e+01,\n 1.60419936e+01, 1.60419936e+01],\n [1.03543527e+00, 1.03543527e+00, 2.12379889e+00, 1.59982489e+01,\n 1.60371336e+01, 1.60371336e+01],\n [1.12032632e+00, 1.12032632e+00, 2.29913045e+00, 1.59861010e+01,\n 1.60318742e+01, 1.60318742e+01],\n [1.20488137e+00, 1.20488137e+00, 2.47406698e+00, 1.59729630e+01,\n 1.60262213e+01, 1.60262213e+01],\n [1.28907413e+00, 1.28907413e+00, 2.64857859e+00, 1.59588309e+01,\n 1.60201811e+01, 1.60201811e+01],\n [1.37287823e+00, 1.37287823e+00, 2.82263554e+00, 1.59437003e+01,\n 1.60137605e+01, 1.60137605e+01],\n [1.45626718e+00, 1.45626718e+00, 2.99620815e+00, 1.59275668e+01,\n 1.60069667e+01, 1.60069667e+01],\n [1.53921441e+00, 1.53921441e+00, 3.16926692e+00, 1.59104255e+01,\n 1.59998074e+01, 1.59998074e+01],\n [1.62169322e+00, 1.62169322e+00, 3.34178242e+00, 1.58922716e+01,\n 1.59922907e+01, 1.59922907e+01],\n [1.70367680e+00, 1.70367680e+00, 3.51372537e+00, 1.58730998e+01,\n 1.59844254e+01, 1.59844254e+01],\n [1.78513824e+00, 1.78513824e+00, 3.68506663e+00, 1.58529049e+01,\n 1.59762205e+01, 1.59762205e+01],\n [1.86605049e+00, 1.86605049e+00, 3.85577716e+00, 1.58316813e+01,\n 1.59676856e+01, 1.59676856e+01],\n [1.94638637e+00, 1.94638637e+00, 4.02582809e+00, 1.58094236e+01,\n 1.59588308e+01, 1.59588308e+01],\n [2.02611858e+00, 2.02611858e+00, 4.19519065e+00, 1.57861259e+01,\n 1.59496667e+01, 1.59496667e+01],\n [2.10521970e+00, 2.10521970e+00, 4.36383622e+00, 1.57617825e+01,\n 1.59402042e+01, 1.59402042e+01],\n [2.18366216e+00, 2.18366216e+00, 4.53173632e+00, 1.57363875e+01,\n 1.59304548e+01, 1.59304548e+01],\n [2.26141827e+00, 2.26141827e+00, 4.69886256e+00, 1.57099349e+01,\n 1.59204304e+01, 1.59204304e+01],\n [2.33846020e+00, 2.33846020e+00, 4.86518671e+00, 1.56824189e+01,\n 1.59101434e+01, 1.59101434e+01],\n [2.41475999e+00, 2.41475999e+00, 5.03068062e+00, 1.56538334e+01,\n 1.58996067e+01, 1.58996067e+01],\n [2.49028953e+00, 2.49028953e+00, 5.19531627e+00, 1.56241727e+01,\n 1.58888336e+01, 1.58888336e+01],\n [2.56502062e+00, 2.56502062e+00, 5.35906572e+00, 1.55934309e+01,\n 1.58778377e+01, 1.58778377e+01],\n [2.63892491e+00, 2.63892491e+00, 5.52190112e+00, 1.55616024e+01,\n 1.58666334e+01, 1.58666334e+01],\n [2.71197391e+00, 2.71197391e+00, 5.68379466e+00, 1.55286816e+01,\n 1.58552351e+01, 1.58552351e+01],\n [2.78413905e+00, 2.78413905e+00, 5.84471859e+00, 1.54946631e+01,\n 1.58436580e+01, 1.58436580e+01],\n [2.85539161e+00, 2.85539161e+00, 6.00464518e+00, 1.54595418e+01,\n 1.58319175e+01, 1.58319175e+01],\n [2.92570282e+00, 2.92570282e+00, 6.16354668e+00, 1.54233130e+01,\n 1.58200294e+01, 1.58200294e+01],\n [2.99504375e+00, 2.99504375e+00, 6.32139531e+00, 1.53859722e+01,\n 1.58080101e+01, 1.58080101e+01],\n [3.06338544e+00, 3.06338544e+00, 6.47816320e+00, 1.53475153e+01,\n 1.57958762e+01, 1.57958762e+01],\n [3.13069883e+00, 3.13069883e+00, 6.63382235e+00, 1.53079386e+01,\n 1.57836448e+01, 1.57836448e+01],\n [3.19695480e+00, 3.19695480e+00, 6.78834460e+00, 1.52672393e+01,\n 1.57713331e+01, 1.57713331e+01],\n [3.26212420e+00, 3.26212420e+00, 6.94170153e+00, 1.52254148e+01,\n 1.57589589e+01, 1.57589589e+01],\n [3.32617785e+00, 3.32617785e+00, 7.09386444e+00, 1.51824635e+01,\n 1.57465403e+01, 1.57465403e+01],\n [3.38908653e+00, 3.38908653e+00, 7.24480421e+00, 1.51383844e+01,\n 1.57340955e+01, 1.57340955e+01],\n [3.45082108e+00, 3.45082108e+00, 7.39449126e+00, 1.50931777e+01,\n 1.57216433e+01, 1.57216433e+01],\n [3.51135231e+00, 3.51135231e+00, 7.54289542e+00, 1.50468445e+01,\n 1.57092025e+01, 1.57092025e+01],\n [3.57065115e+00, 3.57065115e+00, 7.68998576e+00, 1.49993872e+01,\n 1.56967922e+01, 1.56967922e+01],\n [3.62868855e+00, 3.62868855e+00, 7.83573054e+00, 1.49508094e+01,\n 1.56844317e+01, 1.56844317e+01],\n [3.68543561e+00, 3.68543561e+00, 7.98009691e+00, 1.49011166e+01,\n 1.56721405e+01, 1.56721405e+01],\n [3.74086353e+00, 3.74086353e+00, 8.12305082e+00, 1.48503158e+01,\n 1.56599383e+01, 1.56599383e+01],\n [3.79494372e+00, 3.79494372e+00, 8.26455669e+00, 1.47984162e+01,\n 1.56478448e+01, 1.56478448e+01],\n [3.84764774e+00, 3.84764774e+00, 8.40457720e+00, 1.47454295e+01,\n 1.56358798e+01, 1.56358798e+01],\n [3.89894744e+00, 3.89894744e+00, 8.54307290e+00, 1.46913700e+01,\n 1.56240633e+01, 1.56240633e+01],\n [3.94881489e+00, 3.94881489e+00, 8.68000183e+00, 1.46362550e+01,\n 1.56124152e+01, 1.56124152e+01],\n [3.99722251e+00, 3.99722251e+00, 8.81531907e+00, 1.45801056e+01,\n 1.56009552e+01, 1.56009552e+01],\n [4.04414305e+00, 4.04414305e+00, 8.94897617e+00, 1.45229472e+01,\n 1.55897031e+01, 1.55897031e+01],\n [4.08954967e+00, 4.08954967e+00, 9.08092045e+00, 1.44648099e+01,\n 1.55786787e+01, 1.55786787e+01],\n [4.13341596e+00, 4.13341596e+00, 9.21109424e+00, 1.44057295e+01,\n 1.55679014e+01, 1.55679014e+01],\n [4.17571599e+00, 4.17571599e+00, 9.33943387e+00, 1.43457486e+01,\n 1.55573906e+01, 1.55573906e+01],\n [4.21642438e+00, 4.21642438e+00, 9.46586854e+00, 1.42849178e+01,\n 1.55471651e+01, 1.55471651e+01],\n [4.25551631e+00, 4.25551631e+00, 9.59031884e+00, 1.42232967e+01,\n 1.55372439e+01, 1.55372439e+01],\n [4.29296759e+00, 4.29296759e+00, 9.71269507e+00, 1.41609564e+01,\n 1.55276452e+01, 1.55276452e+01],\n [4.32875473e+00, 4.32875473e+00, 9.83289509e+00, 1.40979808e+01,\n 1.55183871e+01, 1.55183871e+01],\n [4.36285493e+00, 4.36285493e+00, 9.95080172e+00, 1.40344699e+01,\n 1.55094870e+01, 1.55094870e+01],\n [4.39524622e+00, 4.39524622e+00, 1.00662796e+01, 1.39705427e+01,\n 1.55009619e+01, 1.55009619e+01],\n [4.42590741e+00, 4.42590741e+00, 1.01791712e+01, 1.39063409e+01,\n 1.54928283e+01, 1.54928283e+01],\n [4.45481822e+00, 4.45481822e+00, 1.02892922e+01, 1.38420341e+01,\n 1.54851020e+01, 1.54851020e+01],\n [4.48195930e+00, 4.48195930e+00, 1.03964254e+01, 1.37778256e+01,\n 1.54777983e+01, 1.54777983e+01],\n [4.50731227e+00, 4.50731227e+00, 1.05003136e+01, 1.37139594e+01,\n 1.54709315e+01, 1.54709315e+01],\n [4.53085979e+00, 4.53085979e+00, 1.06006514e+01, 1.36507288e+01,\n 1.54645154e+01, 1.54645154e+01],\n [4.55258558e+00, 4.55258558e+00, 1.06970744e+01, 1.35884865e+01,\n 1.54585629e+01, 1.54585629e+01],\n [4.57247450e+00, 4.57247450e+00, 1.07891482e+01, 1.35276567e+01,\n 1.54530860e+01, 1.54530860e+01],\n [4.59051254e+00, 4.59051254e+00, 1.08763552e+01, 1.34687473e+01,\n 1.54480960e+01, 1.54480960e+01],\n [4.60668693e+00, 4.60668693e+00, 1.09580822e+01, 1.34123627e+01,\n 1.54436029e+01, 1.54436029e+01],\n [4.62098611e+00, 4.62098611e+00, 1.10336096e+01, 1.33592147e+01,\n 1.54396162e+01, 1.54396162e+01],\n [4.63339981e+00, 4.63339981e+00, 1.11021066e+01, 1.33101273e+01,\n 1.54361441e+01, 1.54361441e+01],\n [4.64391906e+00, 4.64391906e+00, 1.11626377e+01, 1.32660299e+01,\n 1.54331937e+01, 1.54331937e+01],\n [4.65253622e+00, 4.65253622e+00, 1.12141885e+01, 1.32279317e+01,\n 1.54307713e+01, 1.54307713e+01],\n [4.65924501e+00, 4.65924501e+00, 1.12557173e+01, 1.31968704e+01,\n 1.54288819e+01, 1.54288819e+01],\n [4.66404052e+00, 4.66404052e+00, 1.12862369e+01, 1.31738300e+01,\n 1.54275295e+01, 1.54275295e+01],\n [4.66691923e+00, 4.66691923e+00, 1.13049205e+01, 1.31596347e+01,\n 1.54267169e+01, 1.54267169e+01],\n [4.66787904e+00, 4.66787904e+00, 1.13112137e+01, 1.31548379e+01,\n 1.54264459e+01, 1.54264459e+01]]),\n array([[ 4.66787904, 4.66787904, 11.31121369, 13.15483786, 15.42644585,\n 15.42644585],\n [ 4.66883944, 4.67093501, 11.31069683, 13.15420714, 15.42624753,\n 15.42662672],\n [ 4.6717197 , 4.68008535, 11.30914699, 13.15231706, 15.42565317,\n 15.42716712],\n [ 4.67651706, 4.69527771, 11.30656644, 13.14917383, 15.42466453,\n 15.42806041],\n [ 4.68322686, 4.71642595, 11.30295898, 13.14478769, 15.42328455,\n 15.42929564],\n [ 4.69184265, 4.74341172, 11.29832994, 13.13917277, 15.42151735,\n 15.43085774],\n [ 4.70235612, 4.77608661, 11.2926863 , 13.13234687, 15.41936818,\n 15.43272765],\n [ 4.71475714, 4.8142747 , 11.28603666, 13.12433117, 15.41684348,\n 15.43488268],\n [ 4.72903381, 4.85777545, 11.2783914 , 13.11514998, 15.4139508 ,\n 15.43729674],\n [ 4.74517241, 4.90636678, 11.26976269, 13.10483036, 15.41069884,\n 15.43994075],\n [ 4.7631575 , 4.95980823, 11.26016464, 13.09340178, 15.40709737,\n 15.44278297],\n [ 4.78297187, 5.01784414, 11.2496134 , 13.08089571, 15.40315728,\n 15.44578941],\n [ 4.80459662, 5.08020666, 11.2381273 , 13.06734527, 15.39889052,\n 15.4489242 ],\n [ 4.82801117, 5.14661861, 11.22572702, 13.0527848 , 15.39431009,\n 15.45215004],\n [ 4.85319328, 5.21679606, 11.21243575, 13.0372495 , 15.38943 ,\n 15.45542857],\n [ 4.88011907, 5.29045068, 11.1982794 , 13.02077504, 15.38426525,\n 15.45872076],\n [ 4.90876308, 5.36729169, 11.18328681, 13.00339721, 15.37883182,\n 15.46198731],\n [ 4.93909829, 5.44702758, 11.16749005, 12.98515157, 15.3731466 ,\n 15.46518895],\n [ 4.97109613, 5.5293674 , 11.15092462, 12.96607314, 15.3672274 ,\n 15.46828687],\n [ 5.00472652, 5.61402185, 11.13362983, 12.94619611, 15.36109287,\n 15.47124292],\n [ 5.03995793, 5.700704 , 11.11564913, 12.92555359, 15.35476249,\n 15.47401998],\n [ 5.07675735, 5.78912978, 11.09703046, 12.90417733, 15.34825653,\n 15.47658222],\n [ 5.11509038, 5.87901817, 11.07782674, 12.88209755, 15.34159598,\n 15.47889527],\n [ 5.15492119, 5.97009122, 11.05809624, 12.85934274, 15.33480255,\n 15.48092653],\n [ 5.19621261, 6.06207386, 11.03790317, 12.83593951, 15.32789857,\n 15.48264529],\n [ 5.23892611, 6.15469351, 11.01731817, 12.81191244, 15.32090699,\n 15.48402293],\n [ 5.28302184, 6.24767954, 10.99641896, 12.78728396, 15.3138513 ,\n 15.48503308],\n [ 5.32845864, 6.34076267, 10.9752909 , 12.76207432, 15.30675548,\n 15.48565171],\n [ 5.37519406, 6.43367414, 10.9540277 , 12.73630143, 15.29964395,\n 15.48585731],\n [ 5.42318436, 6.52614493, 10.93273212, 12.7099809 , 15.2925415 ,\n 15.48563092],\n [ 5.47238454, 6.61790486, 10.91151663, 12.68312596, 15.28547325,\n 15.48495625],\n [ 5.52274835, 6.7086817 , 10.89050415, 12.65574747, 15.27846454,\n 15.48381973],\n [ 5.57422825, 6.79820026, 10.86982865, 12.62785393, 15.27154095,\n 15.48221057],\n [ 5.62677547, 6.88618163, 10.84963575, 12.5994515 , 15.26472812,\n 15.48012081],\n [ 5.68033995, 6.97234249, 10.83008312, 12.57054404, 15.25805176,\n 15.47754532],\n [ 5.73487036, 7.05639464, 10.81134075, 12.5411332 , 15.25153756,\n 15.47448184],\n [ 5.79031407, 7.13804489, 10.7935908 , 12.51121847, 15.24521107,\n 15.47093096],\n [ 5.84661715, 7.21699523, 10.77702722, 12.4807973 , 15.23909766,\n 15.46689616],\n [ 5.90372431, 7.2929437 , 10.76185465, 12.44986521, 15.23322244,\n 15.46238371],\n [ 5.96157886, 7.36558575, 10.74828691, 12.41841593, 15.22761012,\n 15.45740272],\n [ 6.0201227 , 7.43461652, 10.73654446, 12.38644156, 15.22228498,\n 15.45196503],\n [ 6.07929625, 7.49973393, 10.72685125, 12.35393277, 15.21727073,\n 15.44608518],\n [ 6.13903837, 7.56064276, 10.71943035, 12.32087899, 15.21259043,\n 15.43978036],\n [ 6.19928628, 7.61705972, 10.71449888, 12.28726865, 15.20826641,\n 15.43307027],\n [ 6.25997552, 7.66871935, 10.71226189, 12.25308943, 15.2043201 ,\n 15.42597708],\n [ 6.32103977, 7.71538058, 10.71290574, 12.21832858, 15.20077199,\n 15.41852527],\n [ 6.3824108 , 7.75683366, 10.71659108, 12.1829732 , 15.19764149,\n 15.41074154],\n [ 6.44401828, 7.79290678, 10.72344609, 12.14701063, 15.1949468 ,\n 15.40265463],\n [ 6.50578968, 7.82347218, 10.73356042, 12.11042881, 15.19270483,\n 15.39429522],\n [ 6.56765 , 7.84845077, 10.74698037, 12.07321672, 15.19093108,\n 15.3856957 ],\n [ 6.62952167, 7.86781512, 10.76370597, 12.03536482, 15.18963947,\n 15.37689002],\n [ 6.69132422, 7.88159025, 10.78369008, 11.99686561, 15.18884231,\n 15.36791351],\n [ 6.75297411, 7.88985221, 10.80683981, 11.95771409, 15.18855011,\n 15.35880262],\n [ 6.81438433, 7.89272444, 10.83302013, 11.91790844, 15.18877153,\n 15.34959476],\n [ 6.87546417, 7.8903724 , 10.86205919, 11.87745058, 15.18951322,\n 15.34032804],\n [ 6.93611876, 7.88299691, 10.89375497, 11.83634691, 15.19077974,\n 15.33104105],\n [ 6.99624871, 7.87082671, 10.92788271, 11.79460901, 15.19257349,\n 15.32177261],\n [ 7.05574959, 7.85411092, 10.9642024 , 11.75225444, 15.19489459,\n 15.31256153],\n [ 7.11451149, 7.83311182, 11.00246595, 11.70930758, 15.1977408 ,\n 15.30344637],\n [ 7.17241836, 7.80809838, 11.04242367, 11.66580048, 15.2011075 ,\n 15.29446521],\n [ 7.22934748, 7.77934065, 11.08382976, 11.62177384, 15.2049876 ,\n 15.2856554 ],\n [ 7.28516874, 7.7471053 , 11.12644676, 11.57727795, 15.20937152,\n 15.27705331],\n [ 7.33974397, 7.7116521 , 11.17004895, 11.53237371, 15.21424716,\n 15.26869413],\n [ 7.39292613, 7.67323138, 11.21442482, 11.48713365, 15.21959992,\n 15.26061169],\n [ 7.44455862, 7.6320824 , 11.25937862, 11.44164301, 15.22541272,\n 15.25283819],\n [ 7.49447447, 7.58843228, 11.30473122, 11.39600072, 15.23166602,\n 15.24540409],\n [ 7.54249562, 7.54249562, 11.3503204 , 11.3503204 , 15.23833788,\n 15.23833788]]),\n array([[ 7.54249562, 7.54249562, 11.3503204 , 11.3503204 , 15.23833788,\n 15.23833788],\n [ 7.54166641, 7.54166641, 11.35130975, 11.35130975, 15.23801134,\n 15.23801134],\n [ 7.53918446, 7.53918446, 11.35427194, 11.35427194, 15.23703255,\n 15.23703255],\n [ 7.53506676, 7.53506676, 11.35918952, 11.35918952, 15.23540407,\n 15.23540407],\n [ 7.52934132, 7.52934132, 11.36603365, 11.36603365, 15.23313011,\n 15.23313011],\n [ 7.52204673, 7.52204673, 11.37476455, 11.37476455, 15.23021665,\n 15.23021665],\n [ 7.51323165, 7.51323165, 11.38533198, 11.38533198, 15.22667136,\n 15.22667136],\n [ 7.50295407, 7.50295407, 11.39767597, 11.39767597, 15.22250365,\n 15.22250365],\n [ 7.49128048, 7.49128048, 11.41172752, 11.41172752, 15.21772475,\n 15.21772475],\n [ 7.47828508, 7.47828508, 11.42740943, 11.42740943, 15.21234764,\n 15.21234764],\n [ 7.46404878, 7.46404878, 11.44463718, 11.44463718, 15.20638716,\n 15.20638716],\n [ 7.44865827, 7.44865827, 11.46331976, 11.46331976, 15.19986003,\n 15.19986003],\n [ 7.43220511, 7.43220511, 11.48336059, 11.48336059, 15.19278485,\n 15.19278485],\n [ 7.41478473, 7.41478473, 11.50465834, 11.50465834, 15.18518221,\n 15.18518221],\n [ 7.39649562, 7.39649562, 11.5271077 , 11.5271077 , 15.17707467,\n 15.17707467],\n [ 7.3774384 , 7.3774384 , 11.55060018, 11.55060018, 15.16848683,\n 15.16848683],\n [ 7.35771513, 7.35771513, 11.57502474, 11.57502474, 15.15944541,\n 15.15944541],\n [ 7.33742851, 7.33742851, 11.60026839, 11.60026839, 15.14997924,\n 15.14997924],\n [ 7.3166813 , 7.3166813 , 11.62621676, 11.62621676, 15.14011934,\n 15.14011934],\n [ 7.29557569, 7.29557569, 11.65275454, 11.65275454, 15.12989893,\n 15.12989893],\n [ 7.27421283, 7.27421283, 11.6797659 , 11.6797659 , 15.11935352,\n 15.11935352],\n [ 7.25269237, 7.25269237, 11.7071348 , 11.7071348 , 15.10852087,\n 15.10852087],\n [ 7.23111204, 7.23111204, 11.73474528, 11.73474528, 15.09744106,\n 15.09744106],\n [ 7.20956738, 7.20956738, 11.76248171, 11.76248171, 15.08615647,\n 15.08615647],\n [ 7.1881514 , 7.1881514 , 11.79022897, 11.79022897, 15.07471177,\n 15.07471177],\n [ 7.16695438, 7.16695438, 11.81787268, 11.81787268, 15.06315389,\n 15.06315389],\n [ 7.14606363, 7.14606363, 11.84529928, 11.84529928, 15.05153196,\n 15.05153196],\n [ 7.12556335, 7.12556335, 11.87239625, 11.87239625, 15.03989724,\n 15.03989724],\n [ 7.10553446, 7.10553446, 11.89905224, 11.89905224, 15.02830298,\n 15.02830298],\n [ 7.08605448, 7.08605448, 11.92515725, 11.92515725, 15.01680429,\n 15.01680429],\n [ 7.06719745, 7.06719745, 11.95060282, 11.95060282, 15.00545792,\n 15.00545792],\n [ 7.0490338 , 7.0490338 , 11.97528226, 11.97528226, 14.994322 ,\n 14.994322 ],\n [ 7.0316303 , 7.0316303 , 11.99909093, 11.99909093, 14.98345578,\n 14.98345578],\n [ 7.01504997, 7.01504997, 12.02192655, 12.02192655, 14.97291925,\n 14.97291925],\n [ 6.99935206, 6.99935206, 12.04368954, 12.04368954, 14.96277273,\n 14.96277273],\n [ 6.98459195, 6.98459195, 12.0642835 , 12.0642835 , 14.9530764 ,\n 14.9530764 ],\n [ 6.97082113, 6.97082113, 12.08361559, 12.08361559, 14.94388978,\n 14.94388978],\n [ 6.95808712, 6.95808712, 12.10159715, 12.10159715, 14.93527117,\n 14.93527117],\n [ 6.94643348, 6.94643348, 12.1181442 , 12.1181442 , 14.92727697,\n 14.92727697],\n [ 6.93589974, 6.93589974, 12.13317811, 12.13317811, 14.91996108,\n 14.91996108],\n [ 6.92652136, 6.92652136, 12.14662617, 12.14662617, 14.91337418,\n 14.91337418],\n [ 6.9183297 , 6.9183297 , 12.15842227, 12.15842227, 14.90756307,\n 14.90756307],\n [ 6.91135203, 6.91135203, 12.16850756, 12.16850756, 14.90256997,\n 14.90256997],\n [ 6.90561144, 6.90561144, 12.17683102, 12.17683102, 14.89843186,\n 14.89843186],\n [ 6.90112687, 6.90112687, 12.18335004, 12.18335004, 14.89517991,\n 14.89517991],\n [ 6.89791305, 6.89791305, 12.18803092, 12.18803092, 14.89283897,\n 14.89283897],\n [ 6.89598055, 6.89598055, 12.19084928, 12.19084928, 14.89142709,\n 14.89142709],\n [ 6.89533567, 6.89533567, 12.19179039, 12.19179039, 14.89095524,\n 14.89095524]])],\n 'eigenvectors': None,\n 'group_velocities': None},\n 'total_dos_dict': {'frequency_points': array([-1.21959488e+00, -1.12531879e+00, -1.03104271e+00, -9.36766620e-01,\n -8.42490534e-01, -7.48214449e-01, -6.53938363e-01, -5.59662277e-01,\n -4.65386192e-01, -3.71110106e-01, -2.76834020e-01, -1.82557935e-01,\n -8.82818488e-02, 5.99423689e-03, 1.00270323e-01, 1.94546408e-01,\n 2.88822494e-01, 3.83098580e-01, 4.77374665e-01, 5.71650751e-01,\n 6.65926837e-01, 7.60202922e-01, 8.54479008e-01, 9.48755094e-01,\n 1.04303118e+00, 1.13730727e+00, 1.23158335e+00, 1.32585944e+00,\n 1.42013552e+00, 1.51441161e+00, 1.60868769e+00, 1.70296378e+00,\n 1.79723987e+00, 1.89151595e+00, 1.98579204e+00, 2.08006812e+00,\n 2.17434421e+00, 2.26862029e+00, 2.36289638e+00, 2.45717246e+00,\n 2.55144855e+00, 2.64572464e+00, 2.74000072e+00, 2.83427681e+00,\n 2.92855289e+00, 3.02282898e+00, 3.11710506e+00, 3.21138115e+00,\n 3.30565724e+00, 3.39993332e+00, 3.49420941e+00, 3.58848549e+00,\n 3.68276158e+00, 3.77703766e+00, 3.87131375e+00, 3.96558984e+00,\n 4.05986592e+00, 4.15414201e+00, 4.24841809e+00, 4.34269418e+00,\n 4.43697026e+00, 4.53124635e+00, 4.62552244e+00, 4.71979852e+00,\n 4.81407461e+00, 4.90835069e+00, 5.00262678e+00, 5.09690286e+00,\n 5.19117895e+00, 5.28545504e+00, 5.37973112e+00, 5.47400721e+00,\n 5.56828329e+00, 5.66255938e+00, 5.75683546e+00, 5.85111155e+00,\n 5.94538764e+00, 6.03966372e+00, 6.13393981e+00, 6.22821589e+00,\n 6.32249198e+00, 6.41676806e+00, 6.51104415e+00, 6.60532024e+00,\n 6.69959632e+00, 6.79387241e+00, 6.88814849e+00, 6.98242458e+00,\n 7.07670066e+00, 7.17097675e+00, 7.26525284e+00, 7.35952892e+00,\n 7.45380501e+00, 7.54808109e+00, 7.64235718e+00, 7.73663326e+00,\n 7.83090935e+00, 7.92518544e+00, 8.01946152e+00, 8.11373761e+00,\n 8.20801369e+00, 8.30228978e+00, 8.39656586e+00, 8.49084195e+00,\n 8.58511804e+00, 8.67939412e+00, 8.77367021e+00, 8.86794629e+00,\n 8.96222238e+00, 9.05649846e+00, 9.15077455e+00, 9.24505064e+00,\n 9.33932672e+00, 9.43360281e+00, 9.52787889e+00, 9.62215498e+00,\n 9.71643106e+00, 9.81070715e+00, 9.90498323e+00, 9.99925932e+00,\n 1.00935354e+01, 1.01878115e+01, 1.02820876e+01, 1.03763637e+01,\n 1.04706397e+01, 1.05649158e+01, 1.06591919e+01, 1.07534680e+01,\n 1.08477441e+01, 1.09420202e+01, 1.10362963e+01, 1.11305723e+01,\n 1.12248484e+01, 1.13191245e+01, 1.14134006e+01, 1.15076767e+01,\n 1.16019528e+01, 1.16962289e+01, 1.17905049e+01, 1.18847810e+01,\n 1.19790571e+01, 1.20733332e+01, 1.21676093e+01, 1.22618854e+01,\n 1.23561615e+01, 1.24504375e+01, 1.25447136e+01, 1.26389897e+01,\n 1.27332658e+01, 1.28275419e+01, 1.29218180e+01, 1.30160941e+01,\n 1.31103701e+01, 1.32046462e+01, 1.32989223e+01, 1.33931984e+01,\n 1.34874745e+01, 1.35817506e+01, 1.36760267e+01, 1.37703027e+01,\n 1.38645788e+01, 1.39588549e+01, 1.40531310e+01, 1.41474071e+01,\n 1.42416832e+01, 1.43359593e+01, 1.44302353e+01, 1.45245114e+01,\n 1.46187875e+01, 1.47130636e+01, 1.48073397e+01, 1.49016158e+01,\n 1.49958919e+01, 1.50901679e+01, 1.51844440e+01, 1.52787201e+01,\n 1.53729962e+01, 1.54672723e+01, 1.55615484e+01, 1.56558245e+01,\n 1.57501005e+01, 1.58443766e+01, 1.59386527e+01, 1.60329288e+01,\n 1.61272049e+01, 1.62214810e+01, 1.63157571e+01, 1.64100331e+01,\n 1.65043092e+01, 1.65985853e+01, 1.66928614e+01, 1.67871375e+01,\n 1.68814136e+01, 1.69756897e+01, 1.70699657e+01, 1.71642418e+01,\n 1.72585179e+01, 1.73527940e+01, 1.74470701e+01, 1.75413462e+01,\n 1.76356223e+01]),\n 'total_dos': array([0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n 0.00000000e+00, 3.17526949e-04, 1.35171618e-03, 2.50831797e-03,\n 3.78733233e-03, 5.26373813e-03, 6.90328284e-03, 8.78451412e-03,\n 1.08845716e-02, 1.31202482e-02, 1.58239881e-02, 1.84817583e-02,\n 2.14099537e-02, 2.44295300e-02, 2.78000795e-02, 3.14939706e-02,\n 3.52413320e-02, 3.92909859e-02, 4.36423577e-02, 4.83495504e-02,\n 5.31903107e-02, 5.81462801e-02, 6.35669356e-02, 6.94844360e-02,\n 7.55171874e-02, 8.19720137e-02, 8.86760193e-02, 9.58023138e-02,\n 1.03099606e-01, 1.11366958e-01, 1.19969573e-01, 1.28656383e-01,\n 1.38210214e-01, 1.48087177e-01, 1.58993039e-01, 1.70577194e-01,\n 1.82773665e-01, 1.96102840e-01, 2.10318186e-01, 2.25609695e-01,\n 2.42775583e-01, 2.61718244e-01, 2.82966510e-01, 3.07071183e-01,\n 3.35572804e-01, 3.71503640e-01, 4.23538191e-01, 5.01245367e-01,\n 5.06757340e-01, 5.10673514e-01, 5.13884731e-01, 5.18635687e-01,\n 5.22215630e-01, 5.26790868e-01, 5.30317993e-01, 5.33703746e-01,\n 5.38149099e-01, 5.41609848e-01, 5.45017573e-01, 5.48177732e-01,\n 5.52308667e-01, 5.54935999e-01, 5.58609041e-01, 5.61624143e-01,\n 5.64469403e-01, 5.68022742e-01, 5.70890330e-01, 5.72980739e-01,\n 5.77439994e-01, 5.83268678e-01, 5.49870464e-01, 4.81961887e-01,\n 4.49243839e-01, 4.26254220e-01, 4.10187378e-01, 3.95199652e-01,\n 3.98624284e-01, 4.05995249e-01, 4.25103229e-01, 4.54252120e-01,\n 4.65563502e-01, 3.65773926e-01, 2.85541037e-01, 2.23526600e-01,\n 1.44473263e-01, 1.04439534e-01, 1.08917911e-01, 1.13417776e-01,\n 1.18953226e-01, 1.24441198e-01, 1.29621905e-01, 1.36164980e-01,\n 1.42605861e-01, 1.49045426e-01, 1.56851391e-01, 1.64582559e-01,\n 1.72682584e-01, 1.82141611e-01, 1.91321788e-01, 2.02261449e-01,\n 2.13762731e-01, 2.26135950e-01, 2.40393404e-01, 2.55442497e-01,\n 2.74046636e-01, 2.93902607e-01, 3.19085171e-01, 3.48960866e-01,\n 3.91473391e-01, 4.54354038e-01, 5.99226889e-01, 6.56603266e-01,\n 4.43486451e-01, 3.58148235e-01, 2.92612110e-01, 2.34458733e-01,\n 1.57664249e-01, 9.44996839e-02, 7.64989495e-02, 6.21782198e-02,\n 7.46273535e-02, 8.86461614e-02, 1.06333999e-01, 1.36147948e-01,\n 1.87831258e-01, 2.67221370e-01, 2.89615750e-01, 3.09688343e-01,\n 3.30425521e-01, 3.30668402e-01, 3.40062237e-01, 3.45284499e-01,\n 3.55917538e-01, 3.60077500e-01, 3.69186627e-01, 3.71502854e-01,\n 3.72120651e-01, 3.48181936e-01, 3.16317708e-01, 2.98435672e-01,\n 2.84862196e-01, 2.74096441e-01, 2.64721157e-01, 2.56360104e-01,\n 2.48761334e-01, 2.41852996e-01, 2.35018844e-01, 2.28859604e-01,\n 2.22571780e-01, 2.16655364e-01, 2.10807826e-01, 2.04860365e-01,\n 1.99221497e-01, 1.93100666e-01, 1.87355107e-01, 2.53244401e-01,\n 8.43177422e-01, 1.43196664e+00, 3.18170027e+00, 2.79552678e+00,\n 3.13543115e+00, 4.55809708e+00, 2.72396129e+00, 1.52338820e+00,\n 1.06733102e+00, 7.67955185e-01, 5.18138351e-01, 2.28096624e-01,\n 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n 0.00000000e+00])},\n 'dynamical_matrix': array([[ 5.50912534e-01-0.00000000e+00j, 1.87768043e-17-4.38872430e-34j,\n 1.92709307e-17+5.81987920e-18j, -3.23420540e-17+4.98906381e-17j,\n -1.68412801e-30+5.84523400e-17j, -3.95652763e-17-3.56372327e-01j],\n [ 1.87768043e-17+4.38872430e-34j, 6.08181944e-01-0.00000000e+00j,\n -1.56143951e-16-1.15555797e-33j, -7.84788746e-30+5.84523400e-17j,\n -3.23420540e-17+2.45450096e-18j, 4.20932852e-30+1.58872850e-17j],\n [ 1.92709307e-17-5.81987920e-18j, -1.56143951e-16+1.15555797e-33j,\n 5.50912534e-01-0.00000000e+00j, -3.95652763e-17-3.56372327e-01j,\n 8.83023845e-30+1.58872850e-17j, -3.23420540e-17-3.36800318e-19j],\n [-3.23420540e-17-4.98906381e-17j, -7.84788746e-30-5.84523400e-17j,\n -3.95652763e-17+3.56372327e-01j, 5.50912534e-01-0.00000000e+00j,\n -9.24016421e-17-9.32340591e-30j, -8.30132400e-17-1.39858661e-29j],\n [-1.68412801e-30-5.84523400e-17j, -3.23420540e-17-2.45450096e-18j,\n 8.83023845e-30-1.58872850e-17j, -9.24016421e-17+9.32340591e-30j,\n 6.08181944e-01-0.00000000e+00j, -1.49226181e-16+4.66355445e-30j],\n [-3.95652763e-17+3.56372327e-01j, 4.20932852e-30-1.58872850e-17j,\n -3.23420540e-17+3.36800318e-19j, -8.30132400e-17+1.39858661e-29j,\n -1.49226181e-16-4.66355445e-30j, 5.50912534e-01-0.00000000e+00j]]),\n 'force_constants': array([[[[ 1.57151912e+01, 9.62277932e-16, 9.62277932e-16],\n [ 2.01508898e-31, 1.57151912e+01, -3.56057418e-15],\n [-6.31781728e-30, -4.83151945e-15, 1.57151912e+01]],\n \n [[-8.88178420e-13, -2.31481372e-29, -6.32321319e-29],\n [ 8.33886532e-31, 1.11022302e-12, -2.01086934e-28],\n [ 3.91666326e-46, -3.53409686e-28, 1.11022302e-12]],\n \n [[ 1.11022302e-12, 7.59032102e-29, 1.18329136e-28],\n [-1.78078948e-29, -8.88178420e-13, -4.17598292e-28],\n [ 5.04870979e-29, 2.72945873e-28, 1.11022302e-12]],\n \n ...,\n \n [[-6.32890635e-13, 5.20587829e-13, -5.20587829e-13],\n [-1.25573862e-13, -5.61838490e-13, -2.31561886e-13],\n [ 1.25573862e-13, -2.31561886e-13, -5.61838490e-13]],\n \n [[-5.61838490e-13, -1.25573862e-13, -2.31561886e-13],\n [ 5.20587829e-13, -6.32890635e-13, -5.20587829e-13],\n [-2.31561886e-13, 1.25573862e-13, -5.61838490e-13]],\n \n [[-1.15412764e-12, -4.39732284e-13, 3.10095250e-14],\n [-4.39732284e-13, -1.15412764e-12, 3.10095250e-14],\n [ 1.56993370e-13, 1.56993370e-13, -7.37047351e-13]]],\n \n \n [[[-8.88178420e-13, -2.31481372e-29, -6.32321319e-29],\n [ 8.33886532e-31, 1.11022302e-12, -2.01086934e-28],\n [ 1.63734993e-45, -3.53409686e-28, 1.11022302e-12]],\n \n [[ 1.57151912e+01, 9.62277932e-16, 9.62277932e-16],\n [ 2.19141532e-31, 1.57151912e+01, -3.56057418e-15],\n [-6.30018465e-30, -4.83151945e-15, 1.57151912e+01]],\n \n [[ 1.59872116e-12, 7.17863424e-29, 1.13595970e-28],\n [ 2.73057674e-29, 1.59872116e-12, -1.11175775e-27],\n [ 5.04870979e-29, -4.03896783e-28, 4.08562073e-12]],\n \n ...,\n \n [[-3.70859075e+00, -2.50222375e+00, 2.50222375e+00],\n [-2.50222375e+00, -3.70859075e+00, 2.50222375e+00],\n [ 2.50222375e+00, 2.50222375e+00, -3.70859075e+00]],\n \n [[-1.15412764e-12, -4.39732284e-13, 3.10095250e-14],\n [-4.39732284e-13, -1.15412764e-12, 3.10095250e-14],\n [ 1.56993370e-13, 1.56993370e-13, -7.37047351e-13]],\n \n [[-5.61838490e-13, -1.25573862e-13, -2.31561886e-13],\n [ 5.20587829e-13, -6.32890635e-13, -5.20587829e-13],\n [-2.31561886e-13, 1.25573862e-13, -5.61838490e-13]]],\n \n \n [[[ 1.11022302e-12, 7.59032102e-29, 1.18329136e-28],\n [-1.78078948e-29, -8.88178420e-13, -4.17598292e-28],\n [ 5.04870979e-29, 2.72945873e-28, 1.11022302e-12]],\n \n [[ 1.59872116e-12, 7.17863424e-29, 1.13595970e-28],\n [ 2.73057674e-29, 1.59872116e-12, -1.11175775e-27],\n [ 5.04870979e-29, -4.03896783e-28, 4.08562073e-12]],\n \n [[ 1.57151912e+01, 9.62277932e-16, 9.62277932e-16],\n [ 2.19141532e-31, 1.57151912e+01, -3.56057418e-15],\n [-6.30018465e-30, -4.83151945e-15, 1.57151912e+01]],\n \n ...,\n \n [[-1.15412764e-12, -4.39732284e-13, 3.10095250e-14],\n [-4.39732284e-13, -1.15412764e-12, 3.10095250e-14],\n [ 1.56993370e-13, 1.56993370e-13, -7.37047351e-13]],\n \n [[-3.70859075e+00, -2.50222375e+00, 2.50222375e+00],\n [-2.50222375e+00, -3.70859075e+00, 2.50222375e+00],\n [ 2.50222375e+00, 2.50222375e+00, -3.70859075e+00]],\n \n [[-6.32890635e-13, 5.20587829e-13, -5.20587829e-13],\n [-1.25573862e-13, -5.61838490e-13, -2.31561886e-13],\n [ 1.25573862e-13, -2.31561886e-13, -5.61838490e-13]]],\n \n \n ...,\n \n \n [[[-6.32890635e-13, 5.20587829e-13, -5.20587829e-13],\n [-1.25573862e-13, -5.61838490e-13, -2.31561886e-13],\n [ 1.25573862e-13, -2.31561886e-13, -5.61838490e-13]],\n \n [[-3.70859075e+00, -2.50222375e+00, 2.50222375e+00],\n [-2.50222375e+00, -3.70859075e+00, 2.50222375e+00],\n [ 2.50222375e+00, 2.50222375e+00, -3.70859075e+00]],\n \n [[-1.15412764e-12, -4.39732284e-13, 3.10095250e-14],\n [-4.39732284e-13, -1.15412764e-12, 3.10095250e-14],\n [ 1.56993370e-13, 1.56993370e-13, -7.37047351e-13]],\n \n ...,\n \n [[ 1.57151912e+01, -2.88683380e-15, -2.88683380e-15],\n [-1.92455586e-15, 1.57151912e+01, -4.83151945e-15],\n [-1.92455586e-15, -3.56057418e-15, 1.57151912e+01]],\n \n [[ 1.59872116e-12, -2.84139296e-28, -6.91248574e-28],\n [-1.83165100e-28, 1.59872116e-12, -1.36396903e-27],\n [-4.81749809e-28, -2.63475263e-28, 4.08562073e-12]],\n \n [[ 1.11022302e-12, 4.85458861e-29, -1.58051213e-28],\n [ 9.61487114e-29, -8.88178420e-13, -4.50532933e-28],\n [-1.17892900e-28, 2.33671810e-28, 1.11022302e-12]]],\n \n \n [[[-5.61838490e-13, -1.25573862e-13, -2.31561886e-13],\n [ 5.20587829e-13, -6.32890635e-13, -5.20587829e-13],\n [-2.31561886e-13, 1.25573862e-13, -5.61838490e-13]],\n \n [[-1.15412764e-12, -4.39732284e-13, 3.10095250e-14],\n [-4.39732284e-13, -1.15412764e-12, 3.10095250e-14],\n [ 1.56993370e-13, 1.56993370e-13, -7.37047351e-13]],\n \n [[-3.70859075e+00, -2.50222375e+00, 2.50222375e+00],\n [-2.50222375e+00, -3.70859075e+00, 2.50222375e+00],\n [ 2.50222375e+00, 2.50222375e+00, -3.70859075e+00]],\n \n ...,\n \n [[ 1.59872116e-12, -2.84139296e-28, -6.91248574e-28],\n [-1.83165100e-28, 1.59872116e-12, -1.36396903e-27],\n [-4.81749809e-28, -2.63475263e-28, 4.08562073e-12]],\n \n [[ 1.57151912e+01, -2.88683380e-15, -2.88683380e-15],\n [-1.92455586e-15, 1.57151912e+01, -4.83151945e-15],\n [-1.92455586e-15, -3.56057418e-15, 1.57151912e+01]],\n \n [[-8.88178420e-13, -7.27309754e-29, -1.12814970e-28],\n [-1.35963107e-28, 1.11022302e-12, -3.53409686e-28],\n [-1.36796994e-28, -2.01086934e-28, 1.11022302e-12]]],\n \n \n [[[-1.15412764e-12, -4.39732284e-13, 3.10095250e-14],\n [-4.39732284e-13, -1.15412764e-12, 3.10095250e-14],\n [ 1.56993370e-13, 1.56993370e-13, -7.37047351e-13]],\n \n [[-5.61838490e-13, -1.25573862e-13, -2.31561886e-13],\n [ 5.20587829e-13, -6.32890635e-13, -5.20587829e-13],\n [-2.31561886e-13, 1.25573862e-13, -5.61838490e-13]],\n \n [[-6.32890635e-13, 5.20587829e-13, -5.20587829e-13],\n [-1.25573862e-13, -5.61838490e-13, -2.31561886e-13],\n [ 1.25573862e-13, -2.31561886e-13, -5.61838490e-13]],\n \n ...,\n \n [[ 1.11022302e-12, 4.85458861e-29, -1.58051213e-28],\n [ 9.61487114e-29, -8.88178420e-13, -4.50532933e-28],\n [-1.17892900e-28, 2.33671810e-28, 1.11022302e-12]],\n \n [[-8.88178420e-13, -7.27309754e-29, -1.12814970e-28],\n [-1.35963107e-28, 1.11022302e-12, -3.53409686e-28],\n [-1.36796994e-28, -2.01086934e-28, 1.11022302e-12]],\n \n [[ 1.57151912e+01, -2.88683380e-15, -2.88683380e-15],\n [-1.92455586e-15, 1.57151912e+01, -4.83151945e-15],\n [-1.92455586e-15, -3.56057418e-15, 1.57151912e+01]]]])}"},"metadata":{}}],"id":"b7532997-2cc3-4404-b108-3c599e4f92e8"},{"cell_type":"markdown","source":"The calcualtion of the finite temperature phonons starts by computing the molecular dynamics trajectory using the \n`calc_molecular_dynamics_phonons_with_lammps()` function. This function is internally linked to [DynaPhoPy](https://abelcarreras.github.io/DynaPhoPy/)\nto return an `dynaphopy.dynamics.Dynamics` object: ","metadata":{},"id":"9080af2d-65ef-4710-80c3-66fd5bad9a76"},{"cell_type":"code","source":"trajectory = calc_molecular_dynamics_phonons_with_lammps(\n structure_ase=structure_ase,\n potential_dataframe=potential_dataframe,\n force_constants=workflow.phonopy.get_force_constants(), \n phonopy_unitcell=workflow.phonopy.get_unitcell(),\n phonopy_primitive_matrix=workflow.phonopy.get_primitive_matrix(),\n phonopy_supercell_matrix=workflow.phonopy.get_supercell_matrix(),\n total_time=2, # ps\n time_step=0.001, # ps\n relaxation_time=5, # ps\n silent=True,\n supercell=[2, 2, 2],\n memmap=False,\n velocity_only=True,\n temperature=600,\n)","metadata":{"trusted":true},"execution_count":14,"outputs":[],"id":"f2aada6d-89de-4fc0-a93d-f6fb43e33e8c"},{"cell_type":"markdown","source":"When a total of 2 picoseconds is selected to compute the finite temperature phonons with a timestep of 1 femto second\nthen this results in a total of 2000 molecular dynamics steps. While more molecular dynamics steps result in more precise\npredictions they also require more computational resources. ","metadata":{},"id":"5b533910-8e65-4c57-91bc-ccfa1e49d4ce"},{"cell_type":"markdown","source":"The postprocessing is executed using the [DynaPhoPy](https://abelcarreras.github.io/DynaPhoPy/) package: ","metadata":{},"id":"58cbd845-ad6e-41e1-b37c-dcc426e110c1"},{"cell_type":"code","source":"calculation = Quasiparticle(trajectory)\ncalculation.select_power_spectra_algorithm(2) # select FFT algorithm\ncalculation.get_renormalized_phonon_dispersion_bands()\nrenormalized_force_constants = calculation.get_renormalized_force_constants().get_array()\nrenormalized_force_constants","metadata":{"trusted":true},"execution_count":15,"outputs":[{"name":"stdout","text":"Using 2000 steps\nUsing Fast Fourier transform (Numpy) function\nset frequency range: 0.0 - 21.200000000000003\n\nQ-point: 1 / 32 [ 0.00000 0.00000 0.00000 ]\nHarmonic frequencies (THz):\n[2.18910938e-06 2.19854601e-06 2.20383682e-06 1.60678991e+01\n 1.60678991e+01 1.60678991e+01]\nCalculating phonon projection power spectra\nProjecting into phonon mode\nProjecting into wave vector\nMD cell size relation: [2 2 2]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\n\nPeak # 1\n----------------------------------------------\nWidth 0.472941 THz\nPosition 0.032545 THz\nArea () (Lorentzian) 0.000000 eV\nArea () (Total) 0.000000 eV\n<|dQ/dt|^2> 0.000000 eV\nOccupation number -0.500000\nFit temperature nan K\nBase line -0.000000 eV * ps\nMaximum height 0.000000 eV * ps\nFitting global error 534601240663.551514\nFrequency shift 0.032543 THz\n\nPeak # 2\n----------------------------------------------\nWidth 0.472941 THz\nPosition 0.032545 THz\nArea () (Lorentzian) 0.000000 eV\nArea () (Total) 0.000000 eV\n<|dQ/dt|^2> 0.000000 eV\nOccupation number -0.500000\nFit temperature nan K\nBase line -0.000000 eV * ps\nMaximum height 0.000000 eV * ps\nFitting global error 534601240663.551514\nFrequency shift 0.032543 THz\n\nPeak # 3\n----------------------------------------------\nWidth 0.472941 THz\nPosition 0.032545 THz\nArea () (Lorentzian) 0.000000 eV\nArea () (Total) 0.000000 eV\n<|dQ/dt|^2> 0.000000 eV\nOccupation number -0.500000\nFit temperature nan K\nBase line -0.000000 eV * ps\nMaximum height 0.000000 eV * ps\nFitting global error 534601240663.551514\nFrequency shift 0.032543 THz\n\nPeak # 4\n----------------------------------------------\nWidth 0.786715 THz\nPosition 15.561772 THz\nArea () (Lorentzian) 0.014497 eV\nArea () (Total) 0.013722 eV\n<|dQ/dt|^2> 0.028993 eV\nOccupation number 2.330539\nFit temperature 332.921392 K\nBase line -0.000016 eV * ps\nMaximum height 0.011731 eV * ps\nFitting global error 0.033291\nFrequency shift -0.506127 THz\n\nPeak # 5\n----------------------------------------------\nWidth 0.786715 THz\nPosition 15.561772 THz\nArea () (Lorentzian) 0.014497 eV\nArea () (Total) 0.013722 eV\n<|dQ/dt|^2> 0.028993 eV\nOccupation number 2.330539\nFit temperature 332.921392 K\nBase line -0.000016 eV * ps\nMaximum height 0.011731 eV * ps\nFitting global error 0.033291\nFrequency shift -0.506127 THz\n\nPeak # 6\n----------------------------------------------\nWidth 0.786715 THz\nPosition 15.561772 THz\nArea () (Lorentzian) 0.014497 eV\nArea () (Total) 0.013722 eV\n<|dQ/dt|^2> 0.028993 eV\nOccupation number 2.330539\nFit temperature 332.921392 K\nBase line -0.000016 eV * ps\nMaximum height 0.011731 eV * ps\nFitting global error 0.033291\nFrequency shift -0.506127 THz\nFixing gamma point 0 frequencies\n\nQ-point: 2 / 32 [ 0.00000 0.25000 0.25000 ]\nHarmonic frequencies (THz):\n[ 4.66397327 4.66397327 6.89816884 15.17048811 15.55567884 15.55567884]\nCalculating phonon projection power spectra\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66397327 4.66397327 6.89816884 15.17048811 15.55567884 15.55567884]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66397327 4.66397327 6.89816884 15.17048811 15.55567884 15.55567884]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66397327 4.66397327 6.89816884 15.17048811 15.55567884 15.55567884]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\n\nPeak # 1\n----------------------------------------------\nWidth 0.520799 THz\nPosition 4.512511 THz\nArea () (Lorentzian) 0.018113 eV\nArea () (Total) 0.016786 eV\n<|dQ/dt|^2> 0.036226 eV\nOccupation number 11.696398\nFit temperature 420.145058 K\nBase line -0.000042 eV * ps\nMaximum height 0.022141 eV * ps\nFitting global error 0.016919\nFrequency shift -0.151463 THz\n\nPeak # 2\n----------------------------------------------\nWidth 0.520799 THz\nPosition 4.512511 THz\nArea () (Lorentzian) 0.018113 eV\nArea () (Total) 0.016786 eV\n<|dQ/dt|^2> 0.036226 eV\nOccupation number 11.696398\nFit temperature 420.145058 K\nBase line -0.000042 eV * ps\nMaximum height 0.022141 eV * ps\nFitting global error 0.016919\nFrequency shift -0.151463 THz\n\nPeak # 3\n----------------------------------------------\nWidth 0.884643 THz\nPosition 6.802090 THz\nArea () (Lorentzian) 0.034381 eV\nArea () (Total) 0.042075 eV\n<|dQ/dt|^2> 0.068762 eV\nOccupation number 14.858240\nFit temperature 797.669964 K\nBase line 0.000413 eV * ps\nMaximum height 0.024742 eV * ps\nFitting global error 0.034947\nFrequency shift -0.096079 THz\n\nPeak # 4\n----------------------------------------------\nWidth 0.816224 THz\nPosition 14.710909 THz\nArea () (Lorentzian) 0.050561 eV\nArea () (Total) 0.056117 eV\n<|dQ/dt|^2> 0.101122 eV\nOccupation number 9.943370\nFit temperature 1172.575784 K\nBase line 0.000331 eV * ps\nMaximum height 0.039435 eV * ps\nFitting global error 0.029537\nFrequency shift -0.459579 THz\n\nPeak # 5\n----------------------------------------------\nWidth 0.906396 THz\nPosition 15.069443 THz\nArea () (Lorentzian) 0.021839 eV\nArea () (Total) 0.023547 eV\n<|dQ/dt|^2> 0.043678 eV\nOccupation number 3.903565\nFit temperature 504.681860 K\nBase line 0.000115 eV * ps\nMaximum height 0.015339 eV * ps\nFitting global error 0.023072\nFrequency shift -0.486236 THz\n\nPeak # 6\n----------------------------------------------\nWidth 0.906396 THz\nPosition 15.069443 THz\nArea () (Lorentzian) 0.021839 eV\nArea () (Total) 0.023547 eV\n<|dQ/dt|^2> 0.043678 eV\nOccupation number 3.903565\nFit temperature 504.681860 K\nBase line 0.000115 eV * ps\nMaximum height 0.015339 eV * ps\nFitting global error 0.023072\nFrequency shift -0.486236 THz\n\nQ-point: 3 / 32 [ 0.00000 0.50000 0.50000 ]\nHarmonic frequencies (THz):\n[ 6.89533567 6.89533567 12.19179039 12.19179039 14.89095524 14.89095524]\nCalculating phonon projection power spectra\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 6.89533567 6.89533567 12.19179039 12.19179039 14.89095524 14.89095524]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 6.89533567 6.89533567 12.19179039 12.19179039 14.89095524 14.89095524]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 6.89533567 6.89533567 12.19179039 12.19179039 14.89095524 14.89095524]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nHarmonic frequencies (THz):\n[ 6.89533567 6.89533567 12.19179039 12.19179039 14.89095524 14.89095524]\n\nPeak # 1\n----------------------------------------------\nWidth 0.579259 THz\nPosition 6.561490 THz\nArea () (Lorentzian) 0.025327 eV\nArea () (Total) 0.027369 eV\n<|dQ/dt|^2> 0.050654 eV\nOccupation number 11.228659\nFit temperature 587.462942 K\nBase line 0.000121 eV * ps\nMaximum height 0.027835 eV * ps\nFitting global error 0.025639\nFrequency shift -0.333845 THz\n\nPeak # 2\n----------------------------------------------\nWidth 0.579259 THz\nPosition 6.561490 THz\nArea () (Lorentzian) 0.025327 eV\nArea () (Total) 0.027369 eV\n<|dQ/dt|^2> 0.050654 eV\nOccupation number 11.228659\nFit temperature 587.462942 K\nBase line 0.000121 eV * ps\nMaximum height 0.027835 eV * ps\nFitting global error 0.025639\nFrequency shift -0.333845 THz\n\nPeak # 3\n----------------------------------------------\nWidth 0.605260 THz\nPosition 11.933579 THz\nArea () (Lorentzian) 0.030516 eV\nArea () (Total) 0.034730 eV\n<|dQ/dt|^2> 0.061032 eV\nOccupation number 7.270035\nFit temperature 707.271378 K\nBase line 0.000225 eV * ps\nMaximum height 0.032097 eV * ps\nFitting global error 0.023688\nFrequency shift -0.258211 THz\n\nPeak # 4\n----------------------------------------------\nWidth 0.605260 THz\nPosition 11.933579 THz\nArea () (Lorentzian) 0.030516 eV\nArea () (Total) 0.034730 eV\n<|dQ/dt|^2> 0.061032 eV\nOccupation number 7.270035\nFit temperature 707.271378 K\nBase line 0.000225 eV * ps\nMaximum height 0.032097 eV * ps\nFitting global error 0.023688\nFrequency shift -0.258211 THz\n\nPeak # 5\n----------------------------------------------\nWidth 0.634083 THz\nPosition 14.446261 THz\nArea () (Lorentzian) 0.042334 eV\nArea () (Total) 0.048339 eV\n<|dQ/dt|^2> 0.084669 eV\nOccupation number 8.404323\nFit temperature 981.504236 K\nBase line 0.000327 eV * ps\nMaximum height 0.042504 eV * ps\nFitting global error 0.015367\nFrequency shift -0.444694 THz\n\nPeak # 6\n----------------------------------------------\nWidth 0.634083 THz\nPosition 14.446261 THz\nArea () (Lorentzian) 0.042334 eV\nArea () (Total) 0.048339 eV\n<|dQ/dt|^2> 0.084669 eV\nOccupation number 8.404323\nFit temperature 981.504236 K\nBase line 0.000327 eV * ps\nMaximum height 0.042504 eV * ps\nFitting global error 0.015367\nFrequency shift -0.444694 THz\n\nQ-point: 4 / 32 [ 0.00000 0.75000 0.75000 ]\nHarmonic frequencies (THz):\n[ 4.66397327 4.66397327 6.89816884 15.17048811 15.55567884 15.55567884]\nCalculating phonon projection power spectra\nProjecting into phonon mode\nProjecting into wave vector\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66397327 4.66397327 6.89816884 15.17048811 15.55567884 15.55567884]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66397327 4.66397327 6.89816884 15.17048811 15.55567884 15.55567884]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nHarmonic frequencies (THz):\n[ 4.66397327 4.66397327 6.89816884 15.17048811 15.55567884 15.55567884]\n\nPeak # 1\n----------------------------------------------\nWidth 0.513715 THz\nPosition 4.501773 THz\nArea () (Lorentzian) 0.024073 eV\nArea () (Total) 0.021107 eV\n<|dQ/dt|^2> 0.048147 eV\nOccupation number 15.748632\nFit temperature 558.542395 K\nBase line -0.000113 eV * ps\nMaximum height 0.029833 eV * ps\nFitting global error 0.014530\nFrequency shift -0.162201 THz\n\nPeak # 2\n----------------------------------------------\nWidth 0.513715 THz\nPosition 4.501773 THz\nArea () (Lorentzian) 0.024073 eV\nArea () (Total) 0.021107 eV\n<|dQ/dt|^2> 0.048147 eV\nOccupation number 15.748632\nFit temperature 558.542395 K\nBase line -0.000113 eV * ps\nMaximum height 0.029833 eV * ps\nFitting global error 0.014530\nFrequency shift -0.162201 THz\n\nPeak # 3\n----------------------------------------------\nWidth 0.840450 THz\nPosition 6.833587 THz\nArea () (Lorentzian) 0.047750 eV\nArea () (Total) 0.056965 eV\n<|dQ/dt|^2> 0.095499 eV\nOccupation number 20.731750\nFit temperature 1108.018836 K\nBase line 0.000500 eV * ps\nMaximum height 0.036169 eV * ps\nFitting global error 0.027488\nFrequency shift -0.064582 THz\n\nPeak # 4\n----------------------------------------------\nWidth 0.864892 THz\nPosition 14.761576 THz\nArea () (Lorentzian) 0.036911 eV\nArea () (Total) 0.042399 eV\n<|dQ/dt|^2> 0.073823 eV\nOccupation number 7.097870\nFit temperature 855.439740 K\nBase line 0.000312 eV * ps\nMaximum height 0.027169 eV * ps\nFitting global error 0.033172\nFrequency shift -0.408912 THz\n\nPeak # 5\n----------------------------------------------\nWidth 0.690963 THz\nPosition 15.047965 THz\nArea () (Lorentzian) 0.029989 eV\nArea () (Total) 0.029744 eV\n<|dQ/dt|^2> 0.059977 eV\nOccupation number 5.555378\nFit temperature 694.419722 K\nBase line 0.000024 eV * ps\nMaximum height 0.027630 eV * ps\nFitting global error 0.016899\nFrequency shift -0.507714 THz\n\nPeak # 6\n----------------------------------------------\nWidth 0.690963 THz\nPosition 15.047965 THz\nArea () (Lorentzian) 0.029989 eV\nArea () (Total) 0.029744 eV\n<|dQ/dt|^2> 0.059977 eV\nOccupation number 5.555378\nFit temperature 694.419722 K\nBase line 0.000024 eV * ps\nMaximum height 0.027630 eV * ps\nFitting global error 0.016899\nFrequency shift -0.507714 THz\n\nQ-point: 5 / 32 [ 0.25000 0.00000 0.25000 ]\nHarmonic frequencies (THz):\n[ 4.66397327 4.66397327 6.89816884 15.17048811 15.55567884 15.55567884]\nSkipped, equivalent to [0. 0.25 0.25]\n\nQ-point: 6 / 32 [ 0.25000 0.25000 0.50000 ]\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nCalculating phonon projection power spectra\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\n\nPeak # 1\n----------------------------------------------\nWidth 0.528069 THz\nPosition 4.477183 THz\nArea () (Lorentzian) 0.042227 eV\nArea () (Total) 0.040708 eV\n<|dQ/dt|^2> 0.084453 eV\nOccupation number 28.158070\nFit temperature 979.942696 K\nBase line -0.000024 eV * ps\nMaximum height 0.050907 eV * ps\nFitting global error 0.012211\nFrequency shift -0.190696 THz\n\nPeak # 2\n----------------------------------------------\nWidth 0.890764 THz\nPosition 6.695151 THz\nArea () (Lorentzian) 0.080890 eV\nArea () (Total) 0.093342 eV\n<|dQ/dt|^2> 0.161780 eV\nOccupation number 36.211198\nFit temperature 1877.262480 K\nBase line 0.000706 eV * ps\nMaximum height 0.057811 eV * ps\nFitting global error 0.020823\nFrequency shift -0.265939 THz\n\nPeak # 3\n----------------------------------------------\nWidth 0.879866 THz\nPosition 8.803246 THz\nArea () (Lorentzian) 0.043886 eV\nArea () (Total) 0.052217 eV\n<|dQ/dt|^2> 0.087772 eV\nOccupation number 14.647678\nFit temperature 1018.178741 K\nBase line 0.000449 eV * ps\nMaximum height 0.031753 eV * ps\nFitting global error 0.028094\nFrequency shift -0.202601 THz\n\nPeak # 4\n----------------------------------------------\nWidth 0.757650 THz\nPosition 13.371395 THz\nArea () (Lorentzian) 0.021906 eV\nArea () (Total) 0.026391 eV\n<|dQ/dt|^2> 0.043812 eV\nOccupation number 4.477924\nFit temperature 506.700041 K\nBase line 0.000237 eV * ps\nMaximum height 0.018407 eV * ps\nFitting global error 0.037761\nFrequency shift -0.353521 THz\n\nPeak # 5\n----------------------------------------------\nWidth 0.668122 THz\nPosition 14.983805 THz\nArea () (Lorentzian) 0.023784 eV\nArea () (Total) 0.024310 eV\n<|dQ/dt|^2> 0.047568 eV\nOccupation number 4.323155\nFit temperature 550.026025 K\nBase line 0.000052 eV * ps\nMaximum height 0.022663 eV * ps\nFitting global error 0.013903\nFrequency shift -0.442641 THz\n\nPeak # 6\n----------------------------------------------\nWidth 0.793991 THz\nPosition 15.147433 THz\nArea () (Lorentzian) 0.067893 eV\nArea () (Total) 0.078771 eV\n<|dQ/dt|^2> 0.135785 eV\nOccupation number 13.119087\nFit temperature 1575.015042 K\nBase line 0.000607 eV * ps\nMaximum height 0.054436 eV * ps\nFitting global error 0.022076\nFrequency shift -0.435323 THz\n\nQ-point: 7 / 32 [ 0.25000 0.50000 0.75000 ]\nHarmonic frequencies (THz):\n[ 7.54249562 7.54249562 11.3503204 11.3503204 15.23833788 15.23833788]\nCalculating phonon projection power spectra\nProjecting into phonon mode\nProjecting into wave vector\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 7.54249562 7.54249562 11.3503204 11.3503204 15.23833788 15.23833788]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 7.54249562 7.54249562 11.3503204 11.3503204 15.23833788 15.23833788]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 7.54249562 7.54249562 11.3503204 11.3503204 15.23833788 15.23833788]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 7.54249562 7.54249562 11.3503204 11.3503204 15.23833788 15.23833788]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 7.54249562 7.54249562 11.3503204 11.3503204 15.23833788 15.23833788]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 7.54249562 7.54249562 11.3503204 11.3503204 15.23833788 15.23833788]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 7.54249562 7.54249562 11.3503204 11.3503204 15.23833788 15.23833788]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 7.54249562 7.54249562 11.3503204 11.3503204 15.23833788 15.23833788]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 7.54249562 7.54249562 11.3503204 11.3503204 15.23833788 15.23833788]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nHarmonic frequencies (THz):\n[ 7.54249562 7.54249562 11.3503204 11.3503204 15.23833788 15.23833788]\n\nPeak # 1\n----------------------------------------------\nWidth 0.907126 THz\nPosition 7.246330 THz\nArea () (Lorentzian) 0.086024 eV\nArea () (Total) 0.104037 eV\n<|dQ/dt|^2> 0.172047 eV\nOccupation number 35.571453\nFit temperature 1996.396673 K\nBase line 0.000973 eV * ps\nMaximum height 0.060371 eV * ps\nFitting global error 0.020717\nFrequency shift -0.296166 THz\n\nPeak # 2\n----------------------------------------------\nWidth 0.907126 THz\nPosition 7.246330 THz\nArea () (Lorentzian) 0.086024 eV\nArea () (Total) 0.104037 eV\n<|dQ/dt|^2> 0.172047 eV\nOccupation number 35.571453\nFit temperature 1996.396673 K\nBase line 0.000973 eV * ps\nMaximum height 0.060371 eV * ps\nFitting global error 0.020717\nFrequency shift -0.296166 THz\n\nPeak # 3\n----------------------------------------------\nWidth 0.639111 THz\nPosition 11.064519 THz\nArea () (Lorentzian) 0.021923 eV\nArea () (Total) 0.025269 eV\n<|dQ/dt|^2> 0.043847 eV\nOccupation number 5.520612\nFit temperature 507.650279 K\nBase line 0.000178 eV * ps\nMaximum height 0.021838 eV * ps\nFitting global error 0.024793\nFrequency shift -0.285801 THz\n\nPeak # 4\n----------------------------------------------\nWidth 0.639111 THz\nPosition 11.064519 THz\nArea () (Lorentzian) 0.021923 eV\nArea () (Total) 0.025269 eV\n<|dQ/dt|^2> 0.043847 eV\nOccupation number 5.520612\nFit temperature 507.650279 K\nBase line 0.000178 eV * ps\nMaximum height 0.021838 eV * ps\nFitting global error 0.024793\nFrequency shift -0.285801 THz\n\nPeak # 5\n----------------------------------------------\nWidth 0.828868 THz\nPosition 14.801411 THz\nArea () (Lorentzian) 0.039716 eV\nArea () (Total) 0.043893 eV\n<|dQ/dt|^2> 0.079432 eV\nOccupation number 7.653201\nFit temperature 920.616703 K\nBase line 0.000252 eV * ps\nMaximum height 0.030504 eV * ps\nFitting global error 0.031513\nFrequency shift -0.436927 THz\n\nPeak # 6\n----------------------------------------------\nWidth 0.828868 THz\nPosition 14.801411 THz\nArea () (Lorentzian) 0.039716 eV\nArea () (Total) 0.043893 eV\n<|dQ/dt|^2> 0.079432 eV\nOccupation number 7.653201\nFit temperature 920.616703 K\nBase line 0.000252 eV * ps\nMaximum height 0.030504 eV * ps\nFitting global error 0.031513\nFrequency shift -0.436927 THz\n\nQ-point: 8 / 32 [ 0.25000 0.75000 0.00000 ]\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nCalculating phonon projection power spectra\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\n\nPeak # 1\n----------------------------------------------\nWidth 0.522556 THz\nPosition 4.483775 THz\nArea () (Lorentzian) 0.037188 eV\nArea () (Total) 0.034635 eV\n<|dQ/dt|^2> 0.074376 eV\nOccupation number 24.701308\nFit temperature 862.984199 K\nBase line -0.000079 eV * ps\nMaximum height 0.045305 eV * ps\nFitting global error 0.012393\nFrequency shift -0.184104 THz\n\nPeak # 2\n----------------------------------------------\nWidth 0.898262 THz\nPosition 6.707279 THz\nArea () (Lorentzian) 0.067887 eV\nArea () (Total) 0.079212 eV\n<|dQ/dt|^2> 0.135775 eV\nOccupation number 30.254428\nFit temperature 1575.464581 K\nBase line 0.000635 eV * ps\nMaximum height 0.048114 eV * ps\nFitting global error 0.023773\nFrequency shift -0.253812 THz\n\nPeak # 3\n----------------------------------------------\nWidth 0.835420 THz\nPosition 8.803037 THz\nArea () (Lorentzian) 0.013150 eV\nArea () (Total) 0.016324 eV\n<|dQ/dt|^2> 0.026301 eV\nOccupation number 4.039095\nFit temperature 303.968669 K\nBase line 0.000166 eV * ps\nMaximum height 0.010021 eV * ps\nFitting global error 0.059276\nFrequency shift -0.202810 THz\n\nPeak # 4\n----------------------------------------------\nWidth 0.730369 THz\nPosition 13.368389 THz\nArea () (Lorentzian) 0.016678 eV\nArea () (Total) 0.021238 eV\n<|dQ/dt|^2> 0.033357 eV\nOccupation number 3.290872\nFit temperature 384.834117 K\nBase line 0.000234 eV * ps\nMaximum height 0.014538 eV * ps\nFitting global error 0.045590\nFrequency shift -0.356527 THz\n\nPeak # 5\n----------------------------------------------\nWidth 0.674322 THz\nPosition 14.951363 THz\nArea () (Lorentzian) 0.036155 eV\nArea () (Total) 0.038613 eV\n<|dQ/dt|^2> 0.072311 eV\nOccupation number 6.847775\nFit temperature 837.833762 K\nBase line 0.000157 eV * ps\nMaximum height 0.034134 eV * ps\nFitting global error 0.014619\nFrequency shift -0.475083 THz\n\nPeak # 6\n----------------------------------------------\nWidth 0.902049 THz\nPosition 15.073779 THz\nArea () (Lorentzian) 0.021209 eV\nArea () (Total) 0.022490 eV\n<|dQ/dt|^2> 0.042418 eV\nOccupation number 3.775244\nFit temperature 489.986369 K\nBase line 0.000094 eV * ps\nMaximum height 0.014968 eV * ps\nFitting global error 0.022499\nFrequency shift -0.508977 THz\n\nQ-point: 9 / 32 [ 0.50000 0.00000 0.50000 ]\nHarmonic frequencies (THz):\n[ 6.89533567 6.89533567 12.19179039 12.19179039 14.89095524 14.89095524]\nSkipped, equivalent to [0. 0.5 0.5]\n\nQ-point: 10 / 32 [ 0.50000 0.25000 0.75000 ]\nHarmonic frequencies (THz):\n[ 7.54249562 7.54249562 11.3503204 11.3503204 15.23833788 15.23833788]\nSkipped, equivalent to [0.25 0.5 0.75]\n\nQ-point: 11 / 32 [ 0.50000 0.50000 0.00000 ]\nHarmonic frequencies (THz):\n[ 6.89533567 6.89533567 12.19179039 12.19179039 14.89095524 14.89095524]\nSkipped, equivalent to [0. 0.5 0.5]\n\nQ-point: 12 / 32 [ 0.50000 0.75000 0.25000 ]\nHarmonic frequencies (THz):\n[ 7.54249562 7.54249562 11.3503204 11.3503204 15.23833788 15.23833788]\nSkipped, equivalent to [0.25 0.5 0.75]\n\nQ-point: 13 / 32 [ 0.75000 0.00000 0.75000 ]\nHarmonic frequencies (THz):\n[ 4.66397327 4.66397327 6.89816884 15.17048811 15.55567884 15.55567884]\nSkipped, equivalent to [0. 0.75 0.75]\n\nQ-point: 14 / 32 [ 0.75000 0.25000 0.00000 ]\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nCalculating phonon projection power spectra\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\n\nPeak # 1\n----------------------------------------------\nWidth 0.521991 THz\nPosition 4.484158 THz\nArea () (Lorentzian) 0.036566 eV\nArea () (Total) 0.033926 eV\n<|dQ/dt|^2> 0.073131 eV\nOccupation number 24.277431\nFit temperature 848.537722 K\nBase line -0.000083 eV * ps\nMaximum height 0.044595 eV * ps\nFitting global error 0.012530\nFrequency shift -0.183721 THz\n\nPeak # 2\n----------------------------------------------\nWidth 0.899617 THz\nPosition 6.704187 THz\nArea () (Lorentzian) 0.061915 eV\nArea () (Total) 0.071943 eV\n<|dQ/dt|^2> 0.123830 eV\nOccupation number 27.561609\nFit temperature 1436.830957 K\nBase line 0.000565 eV * ps\nMaximum height 0.043814 eV * ps\nFitting global error 0.025259\nFrequency shift -0.256903 THz\n\nPeak # 3\n----------------------------------------------\nWidth 0.840794 THz\nPosition 8.777709 THz\nArea () (Lorentzian) 0.009473 eV\nArea () (Total) 0.011919 eV\n<|dQ/dt|^2> 0.018945 eV\nOccupation number 2.779076\nFit temperature 218.134959 K\nBase line 0.000127 eV * ps\nMaximum height 0.007172 eV * ps\nFitting global error 0.078651\nFrequency shift -0.228137 THz\n\nPeak # 4\n----------------------------------------------\nWidth 0.814357 THz\nPosition 13.294667 THz\nArea () (Lorentzian) 0.012215 eV\nArea () (Total) 0.016240 eV\n<|dQ/dt|^2> 0.024429 eV\nOccupation number 2.291679\nFit temperature 280.431129 K\nBase line 0.000205 eV * ps\nMaximum height 0.009549 eV * ps\nFitting global error 0.061800\nFrequency shift -0.430249 THz\n\nPeak # 5\n----------------------------------------------\nWidth 0.706639 THz\nPosition 14.920962 THz\nArea () (Lorentzian) 0.033379 eV\nArea () (Total) 0.034927 eV\n<|dQ/dt|^2> 0.066758 eV\nOccupation number 6.297384\nFit temperature 773.297146 K\nBase line 0.000113 eV * ps\nMaximum height 0.030072 eV * ps\nFitting global error 0.021423\nFrequency shift -0.505484 THz\n\nPeak # 6\n----------------------------------------------\nWidth 0.901748 THz\nPosition 15.110122 THz\nArea () (Lorentzian) 0.021178 eV\nArea () (Total) 0.023049 eV\n<|dQ/dt|^2> 0.042356 eV\nOccupation number 3.758704\nFit temperature 489.249960 K\nBase line 0.000121 eV * ps\nMaximum height 0.014951 eV * ps\nFitting global error 0.028888\nFrequency shift -0.472634 THz\n\nQ-point: 15 / 32 [ 0.75000 0.50000 0.25000 ]\nHarmonic frequencies (THz):\n[ 7.54249562 7.54249562 11.3503204 11.3503204 15.23833788 15.23833788]\nSkipped, equivalent to [0.25 0.5 0.75]\n\nQ-point: 16 / 32 [ 0.75000 0.75000 0.50000 ]\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nCalculating phonon projection power spectra\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\n\nPeak # 1\n----------------------------------------------\nWidth 0.521626 THz\nPosition 4.484270 THz\nArea () (Lorentzian) 0.040369 eV\nArea () (Total) 0.037483 eV\n<|dQ/dt|^2> 0.080738 eV\nOccupation number 26.853838\nFit temperature 936.816651 K\nBase line -0.000091 eV * ps\nMaximum height 0.049268 eV * ps\nFitting global error 0.011912\nFrequency shift -0.183609 THz\n\nPeak # 2\n----------------------------------------------\nWidth 0.898998 THz\nPosition 6.706088 THz\nArea () (Lorentzian) 0.060155 eV\nArea () (Total) 0.069989 eV\n<|dQ/dt|^2> 0.120310 eV\nOccupation number 26.756362\nFit temperature 1395.986799 K\nBase line 0.000553 eV * ps\nMaximum height 0.042598 eV * ps\nFitting global error 0.025425\nFrequency shift -0.255003 THz\n\nPeak # 3\n----------------------------------------------\nWidth 0.847729 THz\nPosition 8.762397 THz\nArea () (Lorentzian) 0.009423 eV\nArea () (Total) 0.011871 eV\n<|dQ/dt|^2> 0.018846 eV\nOccupation number 2.767683\nFit temperature 216.985862 K\nBase line 0.000127 eV * ps\nMaximum height 0.007077 eV * ps\nFitting global error 0.078128\nFrequency shift -0.243450 THz\n\nPeak # 4\n----------------------------------------------\nWidth 0.822505 THz\nPosition 13.296042 THz\nArea () (Lorentzian) 0.012441 eV\nArea () (Total) 0.016789 eV\n<|dQ/dt|^2> 0.024882 eV\nOccupation number 2.343156\nFit temperature 285.744350 K\nBase line 0.000221 eV * ps\nMaximum height 0.009629 eV * ps\nFitting global error 0.060141\nFrequency shift -0.428874 THz\n\nPeak # 5\n----------------------------------------------\nWidth 0.692941 THz\nPosition 14.927237 THz\nArea () (Lorentzian) 0.037140 eV\nArea () (Total) 0.038953 eV\n<|dQ/dt|^2> 0.074280 eV\nOccupation number 7.060040\nFit temperature 860.720270 K\nBase line 0.000129 eV * ps\nMaximum height 0.034121 eV * ps\nFitting global error 0.019502\nFrequency shift -0.499209 THz\n\nPeak # 6\n----------------------------------------------\nWidth 0.873800 THz\nPosition 15.089642 THz\nArea () (Lorentzian) 0.020289 eV\nArea () (Total) 0.022192 eV\n<|dQ/dt|^2> 0.040578 eV\nOccupation number 3.585462\nFit temperature 468.522604 K\nBase line 0.000120 eV * ps\nMaximum height 0.014782 eV * ps\nFitting global error 0.026540\nFrequency shift -0.493114 THz\n\nQ-point: 17 / 32 [ 0.25000 0.25000 0.00000 ]\nHarmonic frequencies (THz):\n[ 4.66397327 4.66397327 6.89816884 15.17048811 15.55567884 15.55567884]\nSkipped, equivalent to [0.25 0. 0.25]\n\nQ-point: 18 / 32 [ 0.25000 0.50000 0.25000 ]\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nSkipped, equivalent to [0.25 0.25 0.5 ]\n\nQ-point: 19 / 32 [ 0.25000 0.75000 0.50000 ]\nHarmonic frequencies (THz):\n[ 7.54249562 7.54249562 11.3503204 11.3503204 15.23833788 15.23833788]\nSkipped, equivalent to [0.25 0.5 0.75]\n\nQ-point: 20 / 32 [ 0.25000 0.00000 0.75000 ]\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nSkipped, equivalent to [0.75 0.75 0.5 ]\n\nQ-point: 21 / 32 [ 0.50000 0.25000 0.25000 ]\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nSkipped, equivalent to [0.25 0.5 0.25]\n\nQ-point: 22 / 32 [ 0.50000 0.50000 0.50000 ]\nHarmonic frequencies (THz):\n[ 4.66787904 4.66787904 11.31121369 13.15483786 15.42644585 15.42644585]\nCalculating phonon projection power spectra\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 4.66787904 11.31121369 13.15483786 15.42644585 15.42644585]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 4.66787904 11.31121369 13.15483786 15.42644585 15.42644585]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 4.66787904 11.31121369 13.15483786 15.42644585 15.42644585]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 4.66787904 11.31121369 13.15483786 15.42644585 15.42644585]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 4.66787904 11.31121369 13.15483786 15.42644585 15.42644585]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 4.66787904 11.31121369 13.15483786 15.42644585 15.42644585]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nProjecting into phonon mode\nProjecting into wave vector\nHarmonic frequencies (THz):\n[ 4.66787904 4.66787904 11.31121369 13.15483786 15.42644585 15.42644585]\nPower spectrum resolution requested unavailable, using maximum: 0.500000 THz\nIf you need higher resolution increase the number of data\nFFT: [##############################] 100.00% Done...\nHarmonic frequencies (THz):\n[ 4.66787904 4.66787904 11.31121369 13.15483786 15.42644585 15.42644585]\n\nPeak # 1\n----------------------------------------------\nWidth 0.531374 THz\nPosition 4.473540 THz\nArea () (Lorentzian) 0.029343 eV\nArea () (Total) 0.027597 eV\n<|dQ/dt|^2> 0.058686 eV\nOccupation number 19.430578\nFit temperature 680.883835 K\nBase line -0.000049 eV * ps\nMaximum height 0.035155 eV * ps\nFitting global error 0.015967\nFrequency shift -0.194339 THz\n\nPeak # 2\n----------------------------------------------\nWidth 0.531374 THz\nPosition 4.473540 THz\nArea () (Lorentzian) 0.029343 eV\nArea () (Total) 0.027597 eV\n<|dQ/dt|^2> 0.058686 eV\nOccupation number 19.430578\nFit temperature 680.883835 K\nBase line -0.000049 eV * ps\nMaximum height 0.035155 eV * ps\nFitting global error 0.015967\nFrequency shift -0.194339 THz\n\nPeak # 3\n----------------------------------------------\nWidth 0.538267 THz\nPosition 10.993312 THz\nArea () (Lorentzian) 0.062518 eV\nArea () (Total) 0.058145 eV\n<|dQ/dt|^2> 0.125036 eV\nOccupation number 16.779904\nFit temperature 1450.579488 K\nBase line -0.000158 eV * ps\nMaximum height 0.073941 eV * ps\nFitting global error 0.008088\nFrequency shift -0.317902 THz\n\nPeak # 4\n----------------------------------------------\nWidth 0.776728 THz\nPosition 12.855329 THz\nArea () (Lorentzian) 0.017087 eV\nArea () (Total) 0.019549 eV\n<|dQ/dt|^2> 0.034174 eV\nOccupation number 3.538695\nFit temperature 394.533163 K\nBase line 0.000136 eV * ps\nMaximum height 0.014005 eV * ps\nFitting global error 0.044153\nFrequency shift -0.299509 THz\n\nPeak # 5\n----------------------------------------------\nWidth 0.629022 THz\nPosition 14.951429 THz\nArea () (Lorentzian) 0.062984 eV\nArea () (Total) 0.068437 eV\n<|dQ/dt|^2> 0.125967 eV\nOccupation number 12.300000\nFit temperature 1461.048221 K\nBase line 0.000325 eV * ps\nMaximum height 0.063744 eV * ps\nFitting global error 0.012067\nFrequency shift -0.475017 THz\n\nPeak # 6\n----------------------------------------------\nWidth 0.629022 THz\nPosition 14.951429 THz\nArea () (Lorentzian) 0.062984 eV\nArea () (Total) 0.068437 eV\n<|dQ/dt|^2> 0.125967 eV\nOccupation number 12.300000\nFit temperature 1461.048221 K\nBase line 0.000325 eV * ps\nMaximum height 0.063744 eV * ps\nFitting global error 0.012067\nFrequency shift -0.475017 THz\n\nQ-point: 23 / 32 [ 0.50000 0.75000 0.75000 ]\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nSkipped, equivalent to [0.25 0. 0.75]\n\nQ-point: 24 / 32 [ 0.50000 0.00000 0.00000 ]\nHarmonic frequencies (THz):\n[ 4.66787904 4.66787904 11.31121369 13.15483786 15.42644585 15.42644585]\nSkipped, equivalent to [0.5 0.5 0.5]\n\nQ-point: 25 / 32 [ 0.75000 0.25000 0.50000 ]\nHarmonic frequencies (THz):\n[ 7.54249562 7.54249562 11.3503204 11.3503204 15.23833788 15.23833788]\nSkipped, equivalent to [0.25 0.5 0.75]\n\nQ-point: 26 / 32 [ 0.75000 0.50000 0.75000 ]\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nSkipped, equivalent to [0.25 0. 0.75]\n\nQ-point: 27 / 32 [ 0.75000 0.75000 0.00000 ]\nHarmonic frequencies (THz):\n[ 4.66397327 4.66397327 6.89816884 15.17048811 15.55567884 15.55567884]\nSkipped, equivalent to [0. 0.75 0.75]\n\nQ-point: 28 / 32 [ 0.75000 0.00000 0.25000 ]\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nSkipped, equivalent to [0.75 0.5 0.75]\n\nQ-point: 29 / 32 [ 0.00000 0.25000 0.75000 ]\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nSkipped, equivalent to [0.75 0.5 0.75]\n\nQ-point: 30 / 32 [ 0.00000 0.50000 0.00000 ]\nHarmonic frequencies (THz):\n[ 4.66787904 4.66787904 11.31121369 13.15483786 15.42644585 15.42644585]\nSkipped, equivalent to [0.5 0.5 0.5]\n\nQ-point: 31 / 32 [ 0.00000 0.75000 0.25000 ]\nHarmonic frequencies (THz):\n[ 4.66787904 6.96109048 9.00584683 13.72491589 15.42644585 15.58275543]\nSkipped, equivalent to [0.75 0.5 0.75]\n\nQ-point: 32 / 32 [ 0.00000 0.00000 0.50000 ]\nHarmonic frequencies (THz):\n[ 4.66787904 4.66787904 11.31121369 13.15483786 15.42644585 15.42644585]\nSkipped, equivalent to [0.5 0.5 0.5]\n","output_type":"stream"},{"execution_count":15,"output_type":"execute_result","data":{"text/plain":"array([[[[ 1.47903370e+01, -7.27856464e-04, 8.95058148e-04],\n [-7.27856464e-04, 1.47903370e+01, 8.95058148e-04],\n [ 8.95058148e-04, 8.95058148e-04, 1.47889684e+01]],\n\n [[-8.53720262e-03, 7.27856464e-04, -8.95058148e-04],\n [ 7.27856464e-04, 7.22093450e-03, 8.95058148e-04],\n [-8.95058148e-04, 8.95058148e-04, 8.58955541e-03]],\n\n [[ 7.22093450e-03, 7.27856464e-04, 8.95058148e-04],\n [ 7.27856464e-04, -8.53720262e-03, -8.95058148e-04],\n [ 8.95058148e-04, -8.95058148e-04, 8.58955541e-03]],\n\n ...,\n\n [[-4.44967060e-03, 1.03899911e-04, -2.92254418e-03],\n [ 1.03899911e-04, 3.86955298e-03, 9.18164273e-03],\n [-2.92254418e-03, 9.18164273e-03, 2.64253878e-03]],\n\n [[ 3.86955298e-03, 1.03899911e-04, 9.18164273e-03],\n [ 1.03899911e-04, -4.44967060e-03, -2.92254418e-03],\n [ 9.18164273e-03, -2.92254418e-03, 2.64253878e-03]],\n\n [[ 4.35320043e-03, -8.69200588e-04, 7.43830393e-03],\n [-8.69200588e-04, 4.35320043e-03, 7.43830393e-03],\n [ 7.43830393e-03, 7.43830393e-03, 1.98168743e-03]]],\n\n\n [[[-8.53720262e-03, 7.27856464e-04, -8.95058148e-04],\n [ 7.27856464e-04, 7.22093450e-03, 8.95058148e-04],\n [-8.95058148e-04, 8.95058148e-04, 8.58955541e-03]],\n\n [[ 1.47903370e+01, -7.27856464e-04, 8.95058148e-04],\n [-7.27856464e-04, 1.47903370e+01, 8.95058148e-04],\n [ 8.95058148e-04, 8.95058148e-04, 1.47889684e+01]],\n\n [[ 5.72248779e-03, -7.27856464e-04, -8.95058148e-04],\n [-7.27856464e-04, 5.72248779e-03, -8.95058148e-04],\n [-8.95058148e-04, -8.95058148e-04, 1.30276827e-02]],\n\n ...,\n\n [[-3.48139117e+00, -2.36186546e+00, 2.36468410e+00],\n [-2.36186546e+00, -3.48139117e+00, 2.36468410e+00],\n [ 2.36468410e+00, 2.36468410e+00, -3.48016416e+00]],\n\n [[ 4.35320043e-03, -8.69200588e-04, 7.43830393e-03],\n [-8.69200588e-04, 4.35320043e-03, 7.43830393e-03],\n [ 7.43830393e-03, 7.43830393e-03, 1.98168743e-03]],\n\n [[ 3.86955298e-03, 1.03899911e-04, 9.18164273e-03],\n [ 1.03899911e-04, -4.44967060e-03, -2.92254418e-03],\n [ 9.18164273e-03, -2.92254418e-03, 2.64253878e-03]]],\n\n\n [[[ 7.22093450e-03, 7.27856464e-04, 8.95058148e-04],\n [ 7.27856464e-04, -8.53720262e-03, -8.95058148e-04],\n [ 8.95058148e-04, -8.95058148e-04, 8.58955541e-03]],\n\n [[ 5.72248779e-03, -7.27856464e-04, -8.95058148e-04],\n [-7.27856464e-04, 5.72248779e-03, -8.95058148e-04],\n [-8.95058148e-04, -8.95058148e-04, 1.30276827e-02]],\n\n [[ 1.47903370e+01, -7.27856464e-04, 8.95058148e-04],\n [-7.27856464e-04, 1.47903370e+01, 8.95058148e-04],\n [ 8.95058148e-04, 8.95058148e-04, 1.47889684e+01]],\n\n ...,\n\n [[ 4.35320043e-03, -8.69200588e-04, 7.43830393e-03],\n [-8.69200588e-04, 4.35320043e-03, 7.43830393e-03],\n [ 7.43830393e-03, 7.43830393e-03, 1.98168743e-03]],\n\n [[-3.48139117e+00, -2.36186546e+00, 2.36468410e+00],\n [-2.36186546e+00, -3.48139117e+00, 2.36468410e+00],\n [ 2.36468410e+00, 2.36468410e+00, -3.48016416e+00]],\n\n [[-4.44967060e-03, 1.03899911e-04, -2.92254418e-03],\n [ 1.03899911e-04, 3.86955298e-03, 9.18164273e-03],\n [-2.92254418e-03, 9.18164273e-03, 2.64253878e-03]]],\n\n\n ...,\n\n\n [[[-4.44967060e-03, 1.03899911e-04, -2.92254418e-03],\n [ 1.03899911e-04, 3.86955298e-03, 9.18164273e-03],\n [-2.92254418e-03, 9.18164273e-03, 2.64253878e-03]],\n\n [[-3.48139117e+00, -2.36186546e+00, 2.36468410e+00],\n [-2.36186546e+00, -3.48139117e+00, 2.36468410e+00],\n [ 2.36468410e+00, 2.36468410e+00, -3.48016416e+00]],\n\n [[ 4.35320043e-03, -8.69200588e-04, 7.43830393e-03],\n [-8.69200588e-04, 4.35320043e-03, 7.43830393e-03],\n [ 7.43830393e-03, 7.43830393e-03, 1.98168743e-03]],\n\n ...,\n\n [[ 1.47903370e+01, -7.27856464e-04, 8.95058148e-04],\n [-7.27856464e-04, 1.47903370e+01, 8.95058148e-04],\n [ 8.95058148e-04, 8.95058148e-04, 1.47889684e+01]],\n\n [[ 5.72248779e-03, -7.27856464e-04, -8.95058148e-04],\n [-7.27856464e-04, 5.72248779e-03, -8.95058148e-04],\n [-8.95058148e-04, -8.95058148e-04, 1.30276827e-02]],\n\n [[ 7.22093450e-03, 7.27856464e-04, 8.95058148e-04],\n [ 7.27856464e-04, -8.53720262e-03, -8.95058148e-04],\n [ 8.95058148e-04, -8.95058148e-04, 8.58955541e-03]]],\n\n\n [[[ 3.86955298e-03, 1.03899911e-04, 9.18164273e-03],\n [ 1.03899911e-04, -4.44967060e-03, -2.92254418e-03],\n [ 9.18164273e-03, -2.92254418e-03, 2.64253878e-03]],\n\n [[ 4.35320043e-03, -8.69200588e-04, 7.43830393e-03],\n [-8.69200588e-04, 4.35320043e-03, 7.43830393e-03],\n [ 7.43830393e-03, 7.43830393e-03, 1.98168743e-03]],\n\n [[-3.48139117e+00, -2.36186546e+00, 2.36468410e+00],\n [-2.36186546e+00, -3.48139117e+00, 2.36468410e+00],\n [ 2.36468410e+00, 2.36468410e+00, -3.48016416e+00]],\n\n ...,\n\n [[ 5.72248779e-03, -7.27856464e-04, -8.95058148e-04],\n [-7.27856464e-04, 5.72248779e-03, -8.95058148e-04],\n [-8.95058148e-04, -8.95058148e-04, 1.30276827e-02]],\n\n [[ 1.47903370e+01, -7.27856464e-04, 8.95058148e-04],\n [-7.27856464e-04, 1.47903370e+01, 8.95058148e-04],\n [ 8.95058148e-04, 8.95058148e-04, 1.47889684e+01]],\n\n [[-8.53720262e-03, 7.27856464e-04, -8.95058148e-04],\n [ 7.27856464e-04, 7.22093450e-03, 8.95058148e-04],\n [-8.95058148e-04, 8.95058148e-04, 8.58955541e-03]]],\n\n\n [[[ 4.35320043e-03, -8.69200588e-04, 7.43830393e-03],\n [-8.69200588e-04, 4.35320043e-03, 7.43830393e-03],\n [ 7.43830393e-03, 7.43830393e-03, 1.98168743e-03]],\n\n [[ 3.86955298e-03, 1.03899911e-04, 9.18164273e-03],\n [ 1.03899911e-04, -4.44967060e-03, -2.92254418e-03],\n [ 9.18164273e-03, -2.92254418e-03, 2.64253878e-03]],\n\n [[-4.44967060e-03, 1.03899911e-04, -2.92254418e-03],\n [ 1.03899911e-04, 3.86955298e-03, 9.18164273e-03],\n [-2.92254418e-03, 9.18164273e-03, 2.64253878e-03]],\n\n ...,\n\n [[ 7.22093450e-03, 7.27856464e-04, 8.95058148e-04],\n [ 7.27856464e-04, -8.53720262e-03, -8.95058148e-04],\n [ 8.95058148e-04, -8.95058148e-04, 8.58955541e-03]],\n\n [[-8.53720262e-03, 7.27856464e-04, -8.95058148e-04],\n [ 7.27856464e-04, 7.22093450e-03, 8.95058148e-04],\n [-8.95058148e-04, 8.95058148e-04, 8.58955541e-03]],\n\n [[ 1.47903370e+01, -7.27856464e-04, 8.95058148e-04],\n [-7.27856464e-04, 1.47903370e+01, 8.95058148e-04],\n [ 8.95058148e-04, 8.95058148e-04, 1.47889684e+01]]]])"},"metadata":{}}],"id":"54169376-3978-4c25-b1d6-509030a4cea7"},{"cell_type":"markdown","source":"It calculates the re-normalized force constants which can then be used to calculate the finite temperature properties. ","metadata":{},"id":"2eb26d68-9d7e-45de-9b97-013a8e7e11bb"},{"cell_type":"markdown","source":"In addition the [DynaPhoPy](https://abelcarreras.github.io/DynaPhoPy/) package can be used to directly compare the \nfinite temperature phonon spectrum with the 0K phonon spectrum calulated with the finite displacement method: ","metadata":{},"id":"30bdcd29-a41b-4781-a2cd-6af0ba290883"},{"cell_type":"code","source":"calculation.plot_renormalized_phonon_dispersion_bands()","metadata":{"trusted":true},"execution_count":16,"outputs":[{"output_type":"display_data","data":{"text/plain":"
","image/png":"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"},"metadata":{}}],"id":"8d8239ad-30eb-4f7a-a5aa-91e5030fa74d"},{"cell_type":"markdown","source":"### Langevin Thermostat \nIn addition to the molecular dynamics implemented in the LAMMPS simulation code, the `atomistics` package also provides\nthe `LangevinWorkflow` which implements molecular dynamics independent of the specific simulation code. \n","metadata":{},"id":"c5bada5c-706c-4d5c-9141-1d6bd146d445"},{"cell_type":"code","source":"from ase.build import bulk\nfrom atomistics.calculators import evaluate_with_lammps_library, get_potential_by_name\nfrom atomistics.workflows import LangevinWorkflow\nfrom pylammpsmpi import LammpsASELibrary\n\nsteps = 300\npotential_dataframe = get_potential_by_name(\n potential_name='1999--Mishin-Y--Al--LAMMPS--ipr1',\n resource_path=\"static/lammps\"\n)\nworkflow = LangevinWorkflow(\n structure=bulk(\"Al\", cubic=True).repeat([2, 2, 2]), \n temperature=1000.0,\n overheat_fraction=2.0,\n damping_timescale=100.0,\n time_step=1,\n)\nlmp = LammpsASELibrary(\n working_directory=None,\n cores=1,\n comm=None,\n logger=None,\n log_file=None,\n library=None,\n diable_log_file=True,\n)\neng_pot_lst, eng_kin_lst = [], []\nfor i in range(steps):\n task_dict = workflow.generate_structures()\n result_dict = evaluate_with_lammps_library(\n task_dict=task_dict,\n potential_dataframe=potential_dataframe,\n lmp=lmp,\n )\n eng_pot, eng_kin = workflow.analyse_structures(output_dict=result_dict)\n eng_pot_lst.append(eng_pot)\n eng_kin_lst.append(eng_kin)\nlmp.close()","metadata":{"trusted":true},"execution_count":17,"outputs":[],"id":"fa69a7f8-940a-4fb9-aae3-1ac68d4255f2"},{"cell_type":"markdown","source":"The advantage of this implementation is that the user can directly interact with the simulation between the individual\nmolecular dynamics simulation steps. This provides a lot of flexibility to prototype new simulation methods. The input\nparameters of the `LangevinWorkflow` are:\n\n* `structure` the `ase.atoms.Atoms` object which is used as initial structure for the molecular dynamics calculation \n* `temperature` the temperature of the molecular dynamics calculation given in Kelvin\n* `overheat_fraction` the over heating fraction of the Langevin thermostat\n* `damping_timescale` the damping timescale of the Langevin thermostat \n* `time_step` the time steps of the Langevin thermostat\n","metadata":{},"id":"d77f71c6-7afd-496d-a3bf-db517623d159"},{"cell_type":"markdown","source":"## Harmonic Approximation \nThe harmonic approximation is implemented in two variations, once with constant volume and once including the volume \nexpansion at finite temperature also known as quasi-harmonic approximation. Both of these are based on the [phonopy](https://phonopy.github.io/phonopy/)\npackage. ","metadata":{},"id":"6944d8c5-718d-4d87-956c-d456c151c331"},{"cell_type":"markdown","source":"### Phonons \nTo calculate the phonons at a fixed volume the `PhonopyWorkflow` is used:","metadata":{},"id":"4f699026-d1a8-47a3-b354-6c8572550a50"},{"cell_type":"code","source":"from ase.build import bulk\nfrom atomistics.calculators import evaluate_with_lammps, get_potential_by_name\nfrom atomistics.workflows import PhonopyWorkflow\nfrom phonopy.units import VaspToTHz\n\npotential_dataframe = get_potential_by_name(\n potential_name='1999--Mishin-Y--Al--LAMMPS--ipr1',\n resource_path=\"static/lammps\"\n)\nworkflow = PhonopyWorkflow(\n structure=bulk(\"Al\", cubic=True), \n interaction_range=10,\n factor=VaspToTHz,\n displacement=0.01,\n dos_mesh=20,\n primitive_matrix=None,\n number_of_snapshots=None,\n)\ntask_dict = workflow.generate_structures()\nresult_dict = evaluate_with_lammps(\n task_dict=task_dict,\n potential_dataframe=potential_dataframe,\n)\nphonopy_dict = workflow.analyse_structures(output_dict=result_dict)","metadata":{"trusted":true},"execution_count":18,"outputs":[],"id":"7ac74f80-d613-4a96-b841-5a2973b949a9"},{"cell_type":"markdown","source":"The `PhonopyWorkflow` takes the following inputs: \n\n* `structure` the `ase.atoms.Atoms` object to calculate the phonon spectrum\n* `interaction_range` the cutoff radius to consider for identifying the interaction between the atoms\n* `factor` conversion factor, typically just `phonopy.units.VaspToTHz` \n* `displacement` displacement to calculate the forces \n* `dos_mesh` mesh for the density of states \n* `primitive_matrix` primitive matrix\n* `number_of_snapshots` number of snapshots to calculate\n\nIn addition to the phonon properties, the `PhonopyWorkflow` also enables the calculation of thermal properties: ","metadata":{},"id":"0528bcb2-55ea-4df0-a0b6-71c99dbd9f57"},{"cell_type":"code","source":"tp_dict = workflow.get_thermal_properties(\n t_min=1, \n t_max=1500, \n t_step=50, \n temperatures=None,\n cutoff_frequency=None,\n pretend_real=False,\n band_indices=None,\n is_projection=False,\n)\nprint(tp_dict)","metadata":{"trusted":true},"execution_count":19,"outputs":[{"name":"stdout","text":"{'temperatures': array([1.000e+00, 5.100e+01, 1.010e+02, 1.510e+02, 2.010e+02, 2.510e+02,\n 3.010e+02, 3.510e+02, 4.010e+02, 4.510e+02, 5.010e+02, 5.510e+02,\n 6.010e+02, 6.510e+02, 7.010e+02, 7.510e+02, 8.010e+02, 8.510e+02,\n 9.010e+02, 9.510e+02, 1.001e+03, 1.051e+03, 1.101e+03, 1.151e+03,\n 1.201e+03, 1.251e+03, 1.301e+03, 1.351e+03, 1.401e+03, 1.451e+03,\n 1.501e+03]), 'volumes': array([66.430125, 66.430125, 66.430125, 66.430125, 66.430125, 66.430125,\n 66.430125, 66.430125, 66.430125, 66.430125, 66.430125, 66.430125,\n 66.430125, 66.430125, 66.430125, 66.430125, 66.430125, 66.430125,\n 66.430125, 66.430125, 66.430125, 66.430125, 66.430125, 66.430125,\n 66.430125, 66.430125, 66.430125, 66.430125, 66.430125, 66.430125,\n 66.430125]), 'free_energy': array([ 0.14914132, 0.14837894, 0.13954171, 0.11738723, 0.08264779,\n 0.03712237, -0.01759836, -0.08025513, -0.14986079, -0.22563203,\n -0.30693668, -0.39325592, -0.48415731, -0.57927552, -0.67829812,\n -0.78095507, -0.88701079, -0.99625805, -1.10851315, -1.22361223,\n -1.3414082 , -1.46176834, -1.58457228, -1.70971039, -1.8370824 ,\n -1.96659625, -2.09816715, -2.23171671, -2.3671723 , -2.5044664 ,\n -2.64353611]), 'entropy': array([1.10364016e-08, 5.98829810e+00, 2.96478195e+01, 5.54593816e+01,\n 7.80099308e+01, 9.71787932e+01, 1.13608521e+02, 1.27894607e+02,\n 1.40492150e+02, 1.51738264e+02, 1.61883985e+02, 1.71119149e+02,\n 1.79589851e+02, 1.87410480e+02, 1.94672040e+02, 2.01447985e+02,\n 2.07798389e+02, 2.13772961e+02, 2.19413270e+02, 2.24754417e+02,\n 2.29826293e+02, 2.34654555e+02, 2.39261386e+02, 2.43666089e+02,\n 2.47885561e+02, 2.51934678e+02, 2.55826598e+02, 2.59573021e+02,\n 2.63184393e+02, 2.66670075e+02, 2.70038493e+02]), 'heat_capacity': array([1.78544597e-07, 1.73410821e+01, 5.37349237e+01, 7.35976295e+01,\n 8.34733324e+01, 8.87978444e+01, 9.19287453e+01, 9.39060819e+01,\n 9.52277477e+01, 9.61520364e+01, 9.68225162e+01, 9.73237288e+01,\n 9.77079209e+01, 9.80087218e+01, 9.82485402e+01, 9.84427587e+01,\n 9.86022130e+01, 9.87347097e+01, 9.88459861e+01, 9.89403338e+01,\n 9.90210141e+01, 9.90905402e+01, 9.91508741e+01, 9.92035655e+01,\n 9.92498509e+01, 9.92907269e+01, 9.93270039e+01, 9.93593459e+01,\n 9.93883017e+01, 9.94143276e+01, 9.94378055e+01])}\n","output_type":"stream"}],"id":"467a9752-e842-43ef-9233-96663b7086dd"},{"cell_type":"markdown","source":"The calculation of the thermal properties takes additional inputs: \n\n* `t_min` minimum temperature\n* `t_max` maximum temperature\n* `t_step` temperature step \n* `temperatures` alternative to `t_min`, `t_max` and `t_step` the array of temperatures can be defined directly\n* `cutoff_frequency` cutoff frequency to exclude the contributions of frequencies below a certain cut off\n* `pretend_real` use the absolute values of the phonon frequencies\n* `band_indices` select bands based on their indices \n* `is_projection` multiplies the squared eigenvectors - not recommended\n\nFurthermore, also the dynamical matrix can be directly calculated with the `PhonopyWorkflow`:\n","metadata":{},"id":"d8c4ac48-293a-45f9-bf77-cca3cc275e52"},{"cell_type":"code","source":"mat = workflow.get_dynamical_matrix()\nmat","metadata":{"trusted":true},"execution_count":20,"outputs":[{"execution_count":20,"output_type":"execute_result","data":{"text/plain":"array([[ 1.72794621e-01, 6.42929783e-20, -6.22838227e-20,\n -1.55150365e-18, 1.42759084e-35, -1.50515236e-19,\n 4.11475061e-18, 4.82197337e-20, 9.98736570e-02,\n 8.87128656e-18, -1.02675017e-33, -1.50493730e-19],\n [ 6.42929783e-20, 1.40379905e-01, 6.83112895e-20,\n 2.05216191e-35, 8.80589092e-18, 1.94854949e-33,\n 1.60732446e-20, 1.02868765e-18, -1.60732446e-20,\n -1.10192213e-34, 8.80589092e-18, 2.23061078e-36],\n [-6.22838227e-20, 6.83112895e-20, 1.72794621e-01,\n -1.50493730e-19, 1.25694783e-34, 8.87128656e-18,\n 9.98736570e-02, 3.21464892e-20, 0.00000000e+00,\n -1.50515236e-19, 1.47219713e-35, -1.55150365e-18],\n [-1.55150365e-18, 2.05216191e-35, -1.50493730e-19,\n 1.72794621e-01, -6.63021339e-20, 6.42929783e-20,\n 8.87128656e-18, -1.03065371e-33, -1.50493730e-19,\n 1.85163778e-17, 8.03662229e-20, 9.98736570e-02],\n [ 1.42759084e-35, 8.80589092e-18, 1.25694783e-34,\n -6.63021339e-20, 1.40379905e-01, 6.42929783e-20,\n -2.28392231e-33, 8.80589092e-18, 2.67635707e-36,\n 0.00000000e+00, 0.00000000e+00, -1.60732446e-20],\n [-1.50515236e-19, 1.94854949e-33, 8.87128656e-18,\n 6.42929783e-20, 6.42929783e-20, 1.72794621e-01,\n -1.50515236e-19, -4.46122155e-37, -1.55150365e-18,\n 9.98736570e-02, 0.00000000e+00, -1.85163778e-17],\n [ 4.11475061e-18, 1.60732446e-20, 9.98736570e-02,\n 8.87128656e-18, -2.28392231e-33, -1.50515236e-19,\n 1.72794621e-01, 6.63021339e-20, -6.42929783e-20,\n -1.55150365e-18, 6.24500783e-36, -1.50493730e-19],\n [ 4.82197337e-20, 1.02868765e-18, 3.21464892e-20,\n -1.03065371e-33, 8.80589092e-18, -4.46122155e-37,\n 6.63021339e-20, 1.40379905e-01, 6.83112895e-20,\n 1.07069317e-35, 8.80589092e-18, -6.89481791e-34],\n [ 9.98736570e-02, -1.60732446e-20, 0.00000000e+00,\n -1.50493730e-19, 2.67635707e-36, -1.55150365e-18,\n -6.42929783e-20, 6.83112895e-20, 1.72794621e-01,\n -1.50515236e-19, 1.81950725e-33, 8.87128656e-18],\n [ 8.87128656e-18, -1.10192213e-34, -1.50515236e-19,\n 1.85163778e-17, 0.00000000e+00, 9.98736570e-02,\n -1.55150365e-18, 1.07069317e-35, -1.50515236e-19,\n 1.72794621e-01, 6.42929783e-20, -6.22838227e-20],\n [-1.02675017e-33, 8.80589092e-18, 1.47219713e-35,\n 8.03662229e-20, 0.00000000e+00, 0.00000000e+00,\n 6.24500783e-36, 8.80589092e-18, 1.81950725e-33,\n 6.42929783e-20, 1.40379905e-01, 6.83112895e-20],\n [-1.50493730e-19, 2.23061078e-36, -1.55150365e-18,\n 9.98736570e-02, -1.60732446e-20, -1.85163778e-17,\n -1.50493730e-19, -6.89481791e-34, 8.87128656e-18,\n -6.22838227e-20, 6.83112895e-20, 1.72794621e-01]])"},"metadata":{}}],"id":"0856938b-b1cd-40ce-95b7-4605f10ee7a4"},{"cell_type":"markdown","source":"Or alternatively the hesse matrix:","metadata":{},"id":"93bc3fbe-fe43-42d4-aaf9-12ef9994e923"},{"cell_type":"code","source":"mat = workflow.get_hesse_matrix()\nmat","metadata":{"trusted":true},"execution_count":21,"outputs":[{"execution_count":21,"output_type":"execute_result","data":{"text/plain":"array([[ 4.50127147e-02, -1.92714960e-33, 8.52306995e-33, ...,\n -6.63514216e-05, 8.82979633e-06, 5.93920137e-05],\n [-5.07378488e-34, 4.50127147e-02, 5.07378488e-34, ...,\n 8.82979633e-06, -6.63514216e-05, 5.93920137e-05],\n [ 5.07378488e-34, -5.07378488e-34, 4.50127147e-02, ...,\n 5.93659141e-05, 5.93659141e-05, 1.73512126e-05],\n ...,\n [-6.63514216e-05, 8.82979633e-06, 5.93920137e-05, ...,\n 4.50127147e-02, -1.92714960e-33, 8.52306995e-33],\n [ 8.82979633e-06, -6.63514216e-05, 5.93920137e-05, ...,\n -5.07378488e-34, 4.50127147e-02, 5.07378488e-34],\n [ 5.93659141e-05, 5.93659141e-05, 1.73512126e-05, ...,\n 5.07378488e-34, -5.07378488e-34, 4.50127147e-02]])"},"metadata":{}}],"id":"c3154b6d-50c1-4327-b7cc-00f48b31fd37"},{"cell_type":"markdown","source":"Finally, also the function to calculate the band structure is directly available on the `PhonopyWorkflow`: ","metadata":{},"id":"ebc0a064-af95-42e4-854e-67bdb1065ac6"},{"cell_type":"code","source":"band_structure = workflow.get_band_structure(\n npoints=101, \n with_eigenvectors=False, \n with_group_velocities=False\n)","metadata":{"trusted":true},"execution_count":22,"outputs":[],"id":"a9655fa5-bf39-47f2-ae30-0450b40bf252"},{"cell_type":"markdown","source":"This band structure can also be visualised using the built-in plotting function: ","metadata":{},"id":"e8d2dcce-a5c6-4301-8c0e-bf0ca11043e9"},{"cell_type":"code","source":"workflow.plot_band_structure()","metadata":{"trusted":true},"execution_count":23,"outputs":[{"execution_count":23,"output_type":"execute_result","data":{"text/plain":""},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"
","image/png":"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"},"metadata":{}}],"id":"4ad1f1e4-9496-4e99-afa0-fd67c72c26f4"},{"cell_type":"markdown","source":"Just like the desnsity of states which can be plotted using:","metadata":{},"id":"ae251474-875a-4af2-9290-74e9785490cd"},{"cell_type":"code","source":"workflow.plot_dos()","metadata":{"trusted":true},"execution_count":24,"outputs":[{"execution_count":24,"output_type":"execute_result","data":{"text/plain":""},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"
","image/png":"iVBORw0KGgoAAAANSUhEUgAAAjcAAAHFCAYAAAAOmtghAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAABz+ElEQVR4nO3deXhTdfY/8HeWNt13utEWWpayyo6WHcEiKIiow7iCjuMXd+0wKurMOPob66COjKIwjAgyuKCDC64DyibKvsu+tLSULnRNm7ZJk9zfH8m9bejeJrm56fv1PH0em9ykn4banJ5zPuejEgRBABEREZGXUMu9ACIiIiJnYnBDREREXoXBDREREXkVBjdERETkVRjcEBERkVdhcENERERehcENEREReRUGN0RERORVGNwQERGRV2FwQ+Qiq1evhkqlkj60Wi0SEhJw7733Ii8vr9F1+/btk3G1rrV161aH18LX1xfdunXD2LFj8dxzz+HChQvNPnbXrl247bbbEBcXB19fX8TGxuLWW2/Fzp07m7x+9+7duPnmm5GUlASdToeYmBikpaXhD3/4g6u+vTabP3++w+tw5QcROYdW7gUQebtVq1ahX79+qKmpwfbt25GZmYlt27bh6NGjCAwMlHt5bvXyyy9j8uTJsFgsKCkpwe7du/Hee+/hjTfewL///W/ceeedDte/9dZbeOKJJzB69GgsXrwYPXr0QE5ODt5++22MGzcO//znP/HII49I13/zzTeYNWsWJk2ahMWLFyMuLg75+fnYt28fPv74Y7z++uvu/pYb8ff3x+bNm+VeBpF3E4jIJVatWiUAEPbu3etw+5/+9CcBgLB27doWr/MmW7ZsEQAIn376aaP7SkpKhGHDhglarVY4cuSIdPuOHTsEtVot3HjjjUJdXZ3DY+rq6oQbb7xRUKvVwo4dO6TbJ0yYIPTq1avR9YIgCBaLxYnfUcfMmzdPCAwMlHsZEoPBIPcSiFyCZSkiN7vmmmsAoFEpprKyEg8++CCioqIQGRmJOXPm4NKlSw7XWK1WLF68GP369YNOp0N0dDTuueceXLx40eG6SZMmYdCgQdi7dy/Gjx+PgIAApKSk4JVXXoHVanW4NicnB3fddReio6Oh0+nQv39/vP766w7XZWdnQ6VS4bXXXsM//vEPJCcnIygoCGlpadi1a1enXo+IiAj861//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dgKVIAiCTHEVERERkdOx54aIiIi8CoMbIiIi8ioMboiIiMirMLghIiIir8LghoiIiLwKgxsiIiLyKgxuiIiIyKswuCEiasX8+fOhUqmgUqnwxRdfdLmvT6Q0DG6IuqCGb5YNPxqOaSdH119/PfLz8zF9+nSsXr26ydev4cfWrVuxevVqhIWFNfl87QlU/vnPfyI/P9953wyRl+PZUkRd1PXXX49Vq1Y53NatW7dG15lMJvj6+rprWR5Lp9NJpyjPnTsX119/vXTfnDlzMGjQILz44ovSbREREcjOznbK1w4NDUVoaKhTnouoK2DmhqiLEt+sG35oNBpMmjQJjzzyCDIyMhAVFYXrrrsOAHD8+HHMmDEDQUFBiImJwd13343i4mLp+QwGA+655x4EBQUhLi4Or7/+OiZNmoQnnnhCuqapbEVYWBhWr14tfZ6Xl4e5c+ciPDwckZGRuOmmmxyChPnz52P27Nl47bXXEBcXh8jISDz88MOoq6uTrjEajXjqqaeQmJgInU6HPn36YOXKlRAEAb1798Zrr73msIZff/0VarUa586da9Nr5+/v7/C6+fr6IiAgoNFtbfXCCy80mf1p+LoQUdsxuCGiRt5//31otVr8/PPP+Ne//oX8/HxMnDgRQ4cOxb59+/D999+jsLAQv/nNb6TH/PGPf8SWLVvw+eefY+PGjdi6dSv279/frq9bXV2NyZMnIygoCNu3b8eOHTsQFBSE66+/HiaTSbpuy5YtOHfuHLZs2YL3338fq1evdggE7rnnHnz88cd48803ceLECSxfvhxBQUFQqVS47777GmWs3nvvPYwfPx69evXq2AvWSQsXLkR+fr708dprryEgIAAjR46UZT1ESseyFFEX9fXXXyMoKEj6fPr06fj0008BAL1798bixYul+/785z9j+PDhePnll6Xb3nvvPSQmJuL06dOIj4/HypUrsWbNGinT8/777yMhIaFda/r444+hVqvx7rvvQqVSAQBWrVqFsLAwbN26Fenp6QCA8PBwLF26FBqNBv369cMNN9yAH3/8Eb///e9x+vRpfPLJJ9i0aROmTp0KAEhJSZG+xr333os///nP2LNnD0aPHo26ujqsXbsWr776arvW2lYVFRUOr3NTgoKCpGt27dqF559/Hu+//z4GDRrkkjUReTsGN0Rd1OTJk7Fs2TLp88DAQOm/r8wY7N+/H1u2bGnyTfrcuXOoqamByWRCWlqadHtERARSU1Pbtab9+/fj7NmzCA4Odri9trbWoWQ0cOBAaDQa6fO4uDgcPXoUAHDo0CFoNBpMnDixya8RFxeHG264Ae+99x5Gjx6Nr7/+GrW1tbjtttvatda2Cg4OxoEDBxrd3qdPn0a35eTkYPbs2Vi4cKFDVoyI2ofBDVEXFRgYiN69ezd7X0NWqxUzZ87E3//+90bXxsXF4cyZM236miqVCoIgONzWsFfGarVixIgR+OCDDxo9tmGzs4+PT6PntVqtAGz9MK25//77cffdd+ONN97AqlWrMHfuXAQEBLTpe2gvtVrd7OvckMFgwKxZs5CWlubQmExE7cfghohaNXz4cKxfvx49e/aEVtv410bv3r3h4+ODXbt2ISkpCQBQVlaG06dPO2RQunXr5rCl+cyZM6iurnb4OuvWrUN0dDRCQkI6tNbBgwfDarVi27ZtUlnqSjNmzEBgYCCWLVuG7777Dtu3b+/Q13IWQRBw1113wWq14j//+Y9UkiOijmFDMRG16uGHH0ZpaSluv/127NmzB+fPn8fGjRtx3333wWKxICgoCL/73e/wxz/+ET/++CN+/fVXzJ8/H2q146+Ya6+9FkuXLsWBAwewb98+LFiwwCELc+eddyIqKgo33XQTfvrpJ2RlZWHbtm14/PHHcfHixTattWfPnpg3bx7uu+8+fPHFF8jKysLWrVvxySefSNdoNBrMnz8fixYtQu/evR3KaXJ44YUX8MMPP+Bf//oXqqqqUFBQgIKCAtTU1Mi6LiKlYnBDRK2Kj4/Hzz//DIvFgmnTpmHQoEF4/PHHERoaKgUwr776KiZMmIBZs2Zh6tSpGDduHEaMGOHwPK+//joSExMxYcIE3HHHHVi4cKFDOSggIADbt29HUlIS5syZg/79++O+++5DTU1NuzI5y5Ytw6233oqHHnoI/fr1w+9//3sYDAaHa373u9/BZDLhvvvu68Qr4xzbtm1DVVUVxowZg7i4OOlj3bp1ci+NSJFUwpUFcCIiJ5k0aRKGDh2KJUuWyL2URn7++WdMmjQJFy9eRExMTIvXzp8/H+Xl5bIffaBSqfD5559j9uzZsq6DyNMxc0NEXYrRaMTZs2fxpz/9Cb/5zW9aDWxE4tb5r7/+2sUrbGzBggWtbicnonrM3BCRy3hi5mb16tX43e9+h6FDh2LDhg3o3r17q48pKiqCXq8HYNsdduVuMleT++sTKQ2DGyIiIvIqLEsRERGRV2FwQ0RERF6FwQ0RERF5FQY3RERE5FUY3BAREZFXYXBDREREXoXBDREREXkVBjdERETkVRjcEBERkVf5/zo08WksLTeaAAAAAElFTkSuQmCC"},"metadata":{}}],"id":"82da60b3-3930-4ff1-879e-65895112aecb"},{"cell_type":"markdown","source":"### Quasi-harmonic Approximation \nTo include the volume expansion with finite temperature the `atomistics` package implements the `QuasiHarmonicWorkflow`:","metadata":{},"id":"93e6fb35-cc50-4235-9885-406c41c6a486"},{"cell_type":"code","source":"from ase.build import bulk\nfrom atomistics.calculators import evaluate_with_lammps, get_potential_by_name\nfrom atomistics.workflows import QuasiHarmonicWorkflow\n\npotential_dataframe = get_potential_by_name(\n potential_name='1999--Mishin-Y--Al--LAMMPS--ipr1',\n resource_path=\"static/lammps\"\n)\nworkflow = QuasiHarmonicWorkflow(\n structure=bulk(\"Al\", cubic=True), \n num_points=11,\n vol_range=0.05,\n interaction_range=10,\n factor=VaspToTHz,\n displacement=0.01,\n dos_mesh=20,\n primitive_matrix=None,\n number_of_snapshots=None,\n)\ntask_dict = workflow.generate_structures()\nresult_dict = evaluate_with_lammps(\n task_dict=task_dict,\n potential_dataframe=potential_dataframe,\n)\nfit_dict = workflow.analyse_structures(output_dict=result_dict)","metadata":{"trusted":true},"execution_count":25,"outputs":[],"id":"9387e3aa-b349-49a9-b7b9-0ac1d7f209d5"},{"cell_type":"markdown","source":"The `QuasiHarmonicWorkflow` is a combination of the `EnergyVolumeCurveWorkflow` and the `PhonopyWorkflow`. Consequently, \nthe inputs are a superset of the inputs of these two workflows. ","metadata":{},"id":"b5167f8d-c90f-4bf0-a7c0-fd4dfdd35667"},{"cell_type":"markdown","source":"Based on the `QuasiHarmonicWorkflow` the thermal properties can be calculated:","metadata":{},"id":"169ddaf9-7f5d-4126-babf-9f2de3793128"},{"cell_type":"code","source":"tp_dict = workflow.get_thermal_properties(\n t_min=1, \n t_max=1500, \n t_step=50, \n temperatures=None,\n cutoff_frequency=None,\n pretend_real=False,\n band_indices=None,\n is_projection=False,\n quantum_mechanical=True,\n)\nprint(tp_dict)","metadata":{"trusted":true},"execution_count":26,"outputs":[{"name":"stdout","text":"{'temperatures': array([1.000e+00, 5.100e+01, 1.010e+02, 1.510e+02, 2.010e+02, 2.510e+02,\n 3.010e+02, 3.510e+02, 4.010e+02, 4.510e+02, 5.010e+02, 5.510e+02,\n 6.010e+02, 6.510e+02, 7.010e+02, 7.510e+02, 8.010e+02, 8.510e+02,\n 9.010e+02, 9.510e+02, 1.001e+03, 1.051e+03, 1.101e+03, 1.151e+03,\n 1.201e+03, 1.251e+03, 1.301e+03, 1.351e+03, 1.401e+03, 1.451e+03,\n 1.501e+03]), 'volumes': [66.71710763927429, 66.7217721669909, 66.7588030456557, 66.82252047263532, 66.89849494958942, 66.9796340113892, 67.06260790999332, 67.14571406293086, 67.22800412575396, 67.30891433769602, 67.38809533263267, 67.46532691223801, 67.54047194450261, 67.61344961442688, 67.68421888050003, 67.7527676376025, 67.81910525012583, 67.88325718224746, 67.94526099996934, 68.00516331349996, 68.06301739227649, 68.11888127927111, 68.1728162874363, 68.22488579579438, 68.27515428480372, 68.32368656530063, 68.3705471654382, 68.41579984727981, 68.45950723009813, 68.50173050155158, 68.54252920118272], 'free_energy': array([ 0.14903662, 0.14826796, 0.13934608, 0.1169922 , 0.08193524,\n 0.03597463, -0.01929655, -0.08261538, -0.15299036, -0.22963345,\n -0.31190757, -0.39928889, -0.49134004, -0.5876908 , -0.68802399,\n -0.79206502, -0.89957393, -1.01033927, -1.12417341, -1.24090869,\n -1.36039449, -1.48249475, -1.60708597, -1.73405557, -1.86330055,\n -1.99472628, -2.12824554, -2.26377775, -2.40124816, -2.54058732,\n -2.6817305 ]), 'entropy': array([1.02970750e-08, 5.98072651e+00, 2.96865053e+01, 5.55852668e+01,\n 7.82409727e+01, 9.75218995e+01, 1.14065625e+02, 1.28465273e+02,\n 1.41174728e+02, 1.52530436e+02, 1.62783056e+02, 1.72122199e+02,\n 1.80693841e+02, 1.88612312e+02, 1.95968600e+02, 2.02836175e+02,\n 2.09275150e+02, 2.15335286e+02, 2.21058222e+02, 2.26479132e+02,\n 2.31627991e+02, 2.36530543e+02, 2.41209060e+02, 2.45682935e+02,\n 2.49969156e+02, 2.54082691e+02, 2.58036788e+02, 2.61843234e+02,\n 2.65512561e+02, 2.69054215e+02, 2.72476702e+02]), 'heat_capacity': array([1.67065980e-07, 1.73540235e+01, 5.38037700e+01, 7.36871465e+01,\n 8.35644372e+01, 8.88841670e+01, 9.20085315e+01, 9.39792227e+01,\n 9.52946945e+01, 9.62133951e+01, 9.68788951e+01, 9.73756862e+01,\n 9.77559504e+01, 9.80532534e+01, 9.82899463e+01, 9.84813619e+01,\n 9.86382931e+01, 9.87685101e+01, 9.88777197e+01, 9.89701872e+01,\n 9.90491516e+01, 9.91171073e+01, 9.91760000e+01, 9.92273651e+01,\n 9.92724273e+01, 9.93121724e+01, 9.93474017e+01, 9.93787712e+01,\n 9.94068224e+01, 9.94320054e+01, 9.94546967e+01])}\n","output_type":"stream"}],"id":"07cc0818-15a8-4508-ba97-c3a95eaa72b1"},{"cell_type":"markdown","source":"This requires the same inputs as the calculation of the thermal properties `get_thermal_properties()` with the \n`PhonopyWorkflow`. The additional parameter `quantum_mechanical` specifies whether the classical harmonic oscillator or \nthe quantum mechanical harmonic oscillator is used to calculate the free energy. ","metadata":{},"id":"1fb5c6e3-83a4-4503-a0f1-4958ebc6361c"},{"cell_type":"markdown","source":"And finally also the thermal expansion can be calculated:","metadata":{},"id":"3e6cc3bd-5f7c-4462-8083-5111dc5d4577"},{"cell_type":"code","source":"tp_dict = workflow.get_thermal_properties(\n t_min=1, \n t_max=1500, \n t_step=50, \n temperatures=None,\n cutoff_frequency=None,\n pretend_real=False,\n band_indices=None,\n is_projection=False,\n quantum_mechanical=True,\n output_keys=[\"free_energy\", \"temperatures\", \"volumes\"],\n)\ntemperatures, volumes = tp_dict[\"temperatures\"], tp_dict[\"volumes\"]","metadata":{"trusted":true},"execution_count":27,"outputs":[],"id":"76426cc0-38c8-480e-9fd1-fbcb41c8afec"},{"cell_type":"markdown","source":"## Structure Optimization \nIn analogy to the molecular dynamics calculation also the structure optimization could in principle be defined inside \nthe simulation code or on the python level. Still currently the `atomistics` package only supports the structure \noptimization defined inside the simulation codes. ","metadata":{},"id":"3cf34091-d7f5-464a-b386-9b81c1fa853a"},{"cell_type":"markdown","source":"### Volume and Positions \nTo optimize both the volume of the supercell as well as the positions inside the supercell the `atomistics` package\nimplements the `optimize_positions_and_volume()` workflow:","metadata":{},"id":"e58b5d2e-8839-48c6-b72e-0fa09ace20ce"},{"cell_type":"code","source":"from ase.build import bulk\nfrom atomistics.calculators import evaluate_with_lammps, get_potential_by_name\nfrom atomistics.workflows import optimize_positions_and_volume\n\nstructure = bulk(\"Al\", a=4.0, cubic=True)\npotential_dataframe = get_potential_by_name(\n potential_name='1999--Mishin-Y--Al--LAMMPS--ipr1',\n resource_path=\"static/lammps\"\n)\nresult_dict = evaluate_with_lammps(\n task_dict=optimize_positions_and_volume(structure=structure),\n potential_dataframe=potential_dataframe,\n)\nstructure_opt = result_dict[\"structure_with_optimized_positions_and_volume\"]\nstructure_opt","metadata":{"trusted":true},"execution_count":28,"outputs":[{"execution_count":28,"output_type":"execute_result","data":{"text/plain":"Atoms(symbols='Al4', pbc=True, cell=[[4.05000466219724, 2.4799126230458533e-16, 2.4799126230458533e-16], [0.0, 4.05000466219724, 2.4799126230458533e-16], [0.0, 0.0, 4.05000466219724]])"},"metadata":{}}],"id":"a7f38a78-11b9-41c2-82c9-7c30b3a9b005"},{"cell_type":"markdown","source":"The result is the optimized atomistic structure as part of the result dictionary. ","metadata":{},"id":"c375f310-78c2-426a-8f77-669e9bec855f"},{"cell_type":"markdown","source":"### Positions \nThe optimization of the positions inside the supercell without the optimization of the supercell volume is possible with\nthe `optimize_positions()` workflow:","metadata":{},"id":"6d4ef070-f0f1-4f56-afff-ff6322d3729a"},{"cell_type":"code","source":"from ase.build import bulk\nfrom atomistics.calculators import evaluate_with_lammps, get_potential_by_name\nfrom atomistics.workflows import optimize_positions\n\nstructure = bulk(\"Al\", a=4.0, cubic=True)\npotential_dataframe = get_potential_by_name(\n potential_name='1999--Mishin-Y--Al--LAMMPS--ipr1',\n resource_path=\"static/lammps\"\n)\nresult_dict = evaluate_with_lammps(\n task_dict=optimize_positions(structure=structure),\n potential_dataframe=potential_dataframe,\n)\nstructure_opt = result_dict[\"structure_with_optimized_positions\"]\nstructure_opt","metadata":{"trusted":true},"execution_count":29,"outputs":[{"execution_count":29,"output_type":"execute_result","data":{"text/plain":"Atoms(symbols='Al4', pbc=True, cell=[4.0, 4.0, 4.0])"},"metadata":{}}],"id":"9a50125b-a97a-4445-b140-b8019c035902"},{"cell_type":"markdown","source":"The result is the optimized atomistic structure as part of the result dictionary. ","metadata":{},"id":"d027161c-abd3-4267-a10f-cb404c3ebbfd"},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[],"id":"a84ef4fc-a9a7-4386-921f-7b77af81a166"}]} diff --git a/notebooks/thermal_expansion_with_lammps.ipynb b/notebooks/thermal_expansion_with_lammps.ipynb index 086d4d59..40d094df 100644 --- a/notebooks/thermal_expansion_with_lammps.ipynb +++ b/notebooks/thermal_expansion_with_lammps.ipynb @@ -1 +1 @@ -{"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.10.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat_minor":5,"nbformat":4,"cells":[{"cell_type":"markdown","source":"## Thermal Expansion \nCalculate the thermal expansion for a Morse Pair potential using the [LAMMPS](https://www.lammps.org/) molecular dynamics\nsimulation code. In the following three methods to calculate the thermal expansion are introduced and compared for a \nMorse Pair Potential for Aluminium. \n\nAs a first step the potential is defined for the [LAMMPS](https://www.lammps.org/) molecular dynamics simulation code \nby specifying the `pair_style` and `pair_coeff` commands for the [Morse Pair Potential](https://docs.lammps.org/pair_morse.html)\nas well as the Aluminium bulk structure: ","metadata":{},"id":"ce2efe0c-f86c-4cbd-ab3f-2aae9c5a574d"},{"cell_type":"code","source":"from ase.build import bulk\nimport pandas\n\npotential_dataframe = pandas.DataFrame({\n \"Config\": [[\n \"pair_style morse/smooth/linear 9.0\",\n \"pair_coeff * * 0.5 1.8 2.95\"\n ]],\n \"Filename\": [[]],\n \"Model\": [\"Morse\"],\n \"Name\": [\"Morse\"],\n \"Species\": [[\"Al\"]],\n})\n\nstructure = bulk(\"Al\", cubic=True)","metadata":{"trusted":true},"execution_count":1,"outputs":[],"id":"7a96bac5-5afe-4924-90e5-04f6e6b2bedb"},{"cell_type":"markdown","source":"The `pandas.DataFrame` based format to specify interatomic potentials is the same `pylammpsmpi` uses to interface with \nthe [NIST database for interatomic potentials](https://www.ctcms.nist.gov/potentials). In comparison to just providing\nthe `pair_style` and `pair_coeff` commands, this extended format enables referencing specific files for the interatomic\npotentials `\"Filename\": [[]],` as well as the atomic species `\"Species\": [[\"Al\"]],` to enable consistency checks if the \ninteratomic potential implements all the interactions to simulate a given atomic structure. ","metadata":{},"id":"fe980834-e174-464a-8c07-04db9889a8c6"},{"cell_type":"markdown","source":"Finally, the last step of the preparation before starting the actual calculation is optimizing the interatomic structure. \nWhile for the Morse potential used in this example this is not necessary, it is essential for extending this example to\nother interactomic potentials. For the structure optimization the `optimize_positions_and_volume()` function is imported\nand applied on the `ase.atoms.Atoms` bulk structure for Aluminium:","metadata":{},"id":"b825e555-5e3d-43c2-8c51-50207ead60b5"},{"cell_type":"code","source":"from atomistics.workflows import optimize_positions_and_volume\n\ntask_dict = optimize_positions_and_volume(structure=structure)\ntask_dict","metadata":{"trusted":true},"execution_count":2,"outputs":[{"execution_count":2,"output_type":"execute_result","data":{"text/plain":"{'optimize_positions_and_volume': Atoms(symbols='Al4', pbc=True, cell=[4.05, 4.05, 4.05])}"},"metadata":{}}],"id":"7bd4ed1a-bffe-40f9-99f8-706797418877"},{"cell_type":"markdown","source":"It returns a `task_dict` with a single task, the optimization of the positions and the volume of the Aluminium structure.\nThis task is executed with the [LAMMPS](https://www.lammps.org/) molecular dynamics simulation code using the \n`evaluate_with_lammps()` function:","metadata":{},"id":"ed380b51-efa8-4ebb-bb27-b4aca90b21ec"},{"cell_type":"code","source":"from atomistics.calculators import evaluate_with_lammps\n\nresult_dict = evaluate_with_lammps(\n task_dict=task_dict,\n potential_dataframe=potential_dataframe,\n)\nstructure_opt = result_dict[\"structure_with_optimized_positions_and_volume\"]\nstructure_opt","metadata":{"trusted":true},"execution_count":3,"outputs":[{"name":"stderr","text":"[jupyter-pyiron-2datomistics-2djetdbyfr:00796] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\n/srv/conda/envs/notebook/lib/python3.10/site-packages/pylammpsmpi/wrapper/ase.py:165: UserWarning: Warning: setting upper trangular matrix might slow down the calculation\n warnings.warn(\n","output_type":"stream"},{"execution_count":3,"output_type":"execute_result","data":{"text/plain":"Atoms(symbols='Al4', pbc=True, cell=[[4.047310585424964, 2.478262976797941e-16, 2.478262976797941e-16], [0.0, 4.047310585424964, 2.478262976797941e-16], [0.0, 0.0, 4.047310585424964]])"},"metadata":{}}],"id":"991eaf43-0c4b-4ca2-8494-2b11684f4a79"},{"cell_type":"markdown","source":"The `result_dict` just contains a single element, the `ase.atoms.Atoms` structure object with optimized positions and \nvolume. After this step the preparation is completed and the three different approximations can be compared in the following.","metadata":{},"id":"6750cc4c-106f-4066-80ad-860bf6980732"},{"cell_type":"markdown","source":"### Equation of State \nThe first approximation to calculate the thermal expansion is based on the Equation of State derived by [Moruzzi, V. L. et al.](https://link.aps.org/doi/10.1103/PhysRevB.37.790).\nSo in analogy to the previous example of calculating the elastic properties from the Equation of State, the `EnergyVolumeCurveWorkflow`\nis initialized with the default parameters: ","metadata":{},"id":"6c120581-efd6-4204-8413-75ee81065db1"},{"cell_type":"code","source":"from atomistics.workflows import EnergyVolumeCurveWorkflow\n\nworkflow_ev = EnergyVolumeCurveWorkflow(\n structure=structure_opt.copy(),\n num_points=11,\n fit_type='birchmurnaghan',\n vol_range=0.05,\n axes=['x', 'y', 'z'],\n strains=None,\n)\nstructure_dict = workflow_ev.generate_structures()\nstructure_dict","metadata":{"trusted":true},"execution_count":4,"outputs":[{"execution_count":4,"output_type":"execute_result","data":{"text/plain":"{'calc_energy': OrderedDict([(0.95,\n Atoms(symbols='Al4', pbc=True, cell=[[3.9786988461213992, 2.43625040333692e-16, 2.43625040333692e-16], [0.0, 3.9786988461213992, 2.43625040333692e-16], [0.0, 0.0, 3.9786988461213992]])),\n (0.96,\n Atoms(symbols='Al4', pbc=True, cell=[[3.992610493736228, 2.4447688306981026e-16, 2.4447688306981026e-16], [0.0, 3.992610493736228, 2.4447688306981026e-16], [0.0, 0.0, 3.992610493736228]])),\n (0.97,\n Atoms(symbols='Al4', pbc=True, cell=[[4.00642586504517, 2.4532283058243666e-16, 2.4532283058243666e-16], [0.0, 4.00642586504517, 2.4532283058243666e-16], [0.0, 0.0, 4.00642586504517]])),\n (0.98,\n Atoms(symbols='Al4', pbc=True, cell=[[4.020146608667117, 2.461629838203636e-16, 2.461629838203636e-16], [0.0, 4.020146608667117, 2.461629838203636e-16], [0.0, 0.0, 4.020146608667117]])),\n (0.99,\n Atoms(symbols='Al4', pbc=True, cell=[[4.033774328510742, 2.469974409946722e-16, 2.469974409946722e-16], [0.0, 4.033774328510742, 2.469974409946722e-16], [0.0, 0.0, 4.033774328510742]])),\n (1.0,\n Atoms(symbols='Al4', pbc=True, cell=[[4.047310585424964, 2.478262976797941e-16, 2.478262976797941e-16], [0.0, 4.047310585424964, 2.478262976797941e-16], [0.0, 0.0, 4.047310585424964]])),\n (1.01,\n Atoms(symbols='Al4', pbc=True, cell=[[4.060756898772644, 2.486496469098726e-16, 2.486496469098726e-16], [0.0, 4.060756898772644, 2.486496469098726e-16], [0.0, 0.0, 4.060756898772644]])),\n (1.02,\n Atoms(symbols='Al4', pbc=True, cell=[[4.074114747931804, 2.494675792706855e-16, 2.494675792706855e-16], [0.0, 4.074114747931804, 2.494675792706855e-16], [0.0, 0.0, 4.074114747931804]])),\n (1.03,\n Atoms(symbols='Al4', pbc=True, cell=[[4.087385573728375, 2.5028018298737613e-16, 2.5028018298737613e-16], [0.0, 4.087385573728375, 2.5028018298737613e-16], [0.0, 0.0, 4.087385573728375]])),\n (1.04,\n Atoms(symbols='Al4', pbc=True, cell=[[4.100570779804249, 2.51087544008222e-16, 2.51087544008222e-16], [0.0, 4.100570779804249, 2.51087544008222e-16], [0.0, 0.0, 4.100570779804249]])),\n (1.05,\n Atoms(symbols='Al4', pbc=True, cell=[[4.113671733924125, 2.518897460846561e-16, 2.518897460846561e-16], [0.0, 4.113671733924125, 2.518897460846561e-16], [0.0, 0.0, 4.113671733924125]]))])}"},"metadata":{}}],"id":"b69b6ee2-b526-4913-a6c7-36018e8960af"},{"cell_type":"markdown","source":"After the initialization the `generate_structures()` function is called to generate the atomistic structures which are\nthen in the second step evaluated with the [LAMMPS](https://www.lammps.org/) molecular dynamics simulation code to derive\nthe equilibrium properties:","metadata":{},"id":"8f5d1e8d-0204-4dca-9298-878b9b2f6406"},{"cell_type":"code","source":"result_dict = evaluate_with_lammps(\n task_dict=structure_dict, \n potential_dataframe=potential_dataframe\n)\nresult_dict","metadata":{"trusted":true},"execution_count":5,"outputs":[{"execution_count":5,"output_type":"execute_result","data":{"text/plain":"{'energy': {0.95: -14.609207927145926,\n 0.96: -14.656740101454448,\n 0.97: -14.692359030099395,\n 0.98: -14.716883724875528,\n 0.99: -14.731079276327009,\n 1.0: -14.735659820057942,\n 1.01: -14.731295089579728,\n 1.02: -14.718611862249286,\n 1.03: -14.698196715842329,\n 1.04: -14.670598736769112,\n 1.05: -14.636332030744796}}"},"metadata":{}}],"id":"7d1f126e-4fd0-41c5-986b-91d3b5910e3e"},{"cell_type":"markdown","source":"While in the previous example the fit of the energy volume curve was used directly, here the output of the fit, in\nparticular the derived equilibrium properties are the input for the Debye model as defined by [Moruzzi, V. L. et al.](https://link.aps.org/doi/10.1103/PhysRevB.37.790):","metadata":{},"id":"fb679eb1-338f-4485-a953-791e147fe632"},{"cell_type":"code","source":"structure_opt.get_volume()","metadata":{"trusted":true},"execution_count":6,"outputs":[{"execution_count":6,"output_type":"execute_result","data":{"text/plain":"66.29787349319821"},"metadata":{}}],"id":"2e0f7aab-6744-4b6f-a454-38c28833a3ac"},{"cell_type":"code","source":"fit_dict = workflow_ev.analyse_structures(output_dict=result_dict)\nfit_dict","metadata":{"trusted":true},"execution_count":7,"outputs":[{"execution_count":7,"output_type":"execute_result","data":{"text/plain":"{'b_prime_eq': 6.2365371733275845,\n 'bulkmodul_eq': 216.057292780608,\n 'volume_eq': 66.29790137569191,\n 'energy_eq': -14.735658078942949,\n 'fit_dict': {'fit_type': 'birchmurnaghan',\n 'least_square_error': array([8.12779273e-07, 2.83453476e-03, 1.45091623e-03, 3.00518393e-05])},\n 'energy': [-14.609207927145926,\n -14.656740101454448,\n -14.692359030099395,\n -14.716883724875528,\n -14.731079276327009,\n -14.735659820057942,\n -14.731295089579728,\n -14.718611862249286,\n -14.698196715842329,\n -14.670598736769112,\n -14.636332030744796],\n 'volume': [62.98297981853827,\n 63.645958553470244,\n 64.30893728840229,\n 64.97191602333424,\n 65.63489475826624,\n 66.29787349319821,\n 66.96085222813018,\n 67.62383096306218,\n 68.28680969799419,\n 68.94978843292616,\n 69.61276716785807]}"},"metadata":{}}],"id":"11c8b18d-64ff-4c93-b646-668b00eb1cf8"},{"cell_type":"code","source":"import numpy as np\n\nworkflow_ev.analyse_structures(output_dict=result_dict)\nthermal_properties_dict = workflow_ev.get_thermal_properties(\n temperatures=np.arange(1, 1500, 50),\n output_keys=[\"temperatures\", \"volumes\"],\n)\ntemperatures_ev, volume_ev = thermal_properties_dict[\"temperatures\"], thermal_properties_dict[\"volumes\"]","metadata":{"trusted":true},"execution_count":8,"outputs":[{"name":"stderr","text":"/srv/conda/envs/notebook/lib/python3.10/site-packages/atomistics/workflows/evcurve/debye.py:80: RuntimeWarning: overflow encountered in exp\n return xi**3 / (np.exp(xi) - 1)\n","output_type":"stream"}],"id":"9c7cd51c-6058-4d1d-8948-56d29c3b13e7"},{"cell_type":"markdown","source":"The output of the Debye model provides the change of the temperature specific optimal volume `volume_ev`\nwhich can be plotted over the temperature `temperatures_ev` to determine the thermal expansion. ","metadata":{},"id":"35ab7b86-0688-4520-ad47-ea54b4bfde86"},{"cell_type":"markdown","source":"### Quasi-Harmonic Approximation \nWhile the [Moruzzi, V. L. et al.](https://link.aps.org/doi/10.1103/PhysRevB.37.790) approach based on the Einstein crystal\nis limited to a single frequency, the quasi-harmonic model includes the volume dependent free energy. Inside the \n`atomistics` package the harmonic and quasi-harmonic model are implemented based on an interface to the [Phonopy](https://phonopy.github.io/phonopy/)\nframework. Still the user interface is still structured in the same three steps of (1) generating structures, (2) evaluating \nthese structures and (3) fitting the corresponding model. Starting with the initialization of the `QuasiHarmonicWorkflow`\nwhich combines the `PhonopyWorkflow` with the `EnergyVolumeCurveWorkflow`:","metadata":{},"id":"88ccd1f0-98c5-4e13-ab2c-febe5d3f235b"},{"cell_type":"code","source":"from atomistics.workflows import QuasiHarmonicWorkflow\nfrom phonopy.units import VaspToTHz\n\nworkflow_qh = QuasiHarmonicWorkflow(\n structure=structure_opt.copy(),\n num_points=11,\n vol_range=0.10,\n # fit_type='birchmurnaghan',\n interaction_range=10,\n factor=VaspToTHz,\n displacement=0.01,\n dos_mesh=20,\n primitive_matrix=None,\n number_of_snapshots=None,\n)\nstructure_dict = workflow_qh.generate_structures()\nstructure_dict","metadata":{"trusted":true},"execution_count":9,"outputs":[{"execution_count":9,"output_type":"execute_result","data":{"text/plain":"{'calc_energy': {0.9: Atoms(symbols='Al108', pbc=True, cell=[[11.7229062192894, 7.178209789078681e-16, 7.178209789078681e-16], [0.0, 11.7229062192894, 7.178209789078681e-16], [0.0, 0.0, 11.7229062192894]]),\n 0.92: Atoms(symbols='Al108', pbc=True, cell=[[11.80910715486485, 7.230992638996672e-16, 7.230992638996672e-16], [0.0, 11.80910715486485, 7.230992638996672e-16], [0.0, 0.0, 11.80910715486485]]),\n 0.94: Atoms(symbols='Al108', pbc=True, cell=[[11.894067681419225, 7.283015957446018e-16, 7.283015957446018e-16], [0.0, 11.894067681419225, 7.283015957446018e-16], [0.0, 0.0, 11.894067681419225]]),\n 0.96: Atoms(symbols='Al108', pbc=True, cell=[[11.977831481208684, 7.334306492094308e-16, 7.334306492094308e-16], [0.0, 11.977831481208684, 7.334306492094308e-16], [0.0, 0.0, 11.977831481208684]]),\n 0.98: Atoms(symbols='Al108', pbc=True, cell=[[12.060439826001351, 7.384889514610908e-16, 7.384889514610908e-16], [0.0, 12.060439826001351, 7.384889514610908e-16], [0.0, 0.0, 12.060439826001351]]),\n 1.0: Atoms(symbols='Al108', pbc=True, cell=[[12.141931756274893, 7.434788930393824e-16, 7.434788930393824e-16], [0.0, 12.141931756274893, 7.434788930393824e-16], [0.0, 0.0, 12.141931756274893]]),\n 1.02: Atoms(symbols='Al108', pbc=True, cell=[[12.222344243795412, 7.484027378120565e-16, 7.484027378120565e-16], [0.0, 12.222344243795412, 7.484027378120565e-16], [0.0, 0.0, 12.222344243795412]]),\n 1.04: Atoms(symbols='Al108', pbc=True, cell=[[12.301712339412747, 7.53262632024666e-16, 7.53262632024666e-16], [0.0, 12.301712339412747, 7.53262632024666e-16], [0.0, 0.0, 12.301712339412747]]),\n 1.06: Atoms(symbols='Al108', pbc=True, cell=[[12.38006930767338, 7.580606125432298e-16, 7.580606125432298e-16], [0.0, 12.38006930767338, 7.580606125432298e-16], [0.0, 0.0, 12.38006930767338]]),\n 1.08: Atoms(symbols='Al108', pbc=True, cell=[[12.457446749652004, 7.627986143754963e-16, 7.627986143754963e-16], [0.0, 12.457446749652004, 7.627986143754963e-16], [0.0, 0.0, 12.457446749652004]]),\n 1.1: Atoms(symbols='Al108', pbc=True, cell=[[12.533874715230777, 7.674784775460657e-16, 7.674784775460657e-16], [0.0, 12.533874715230777, 7.674784775460657e-16], [0.0, 0.0, 12.533874715230777]])},\n 'calc_forces': {(0.9,\n 0): Atoms(symbols='Al108', pbc=True, cell=[[11.7229062192894, 7.178209789078681e-16, 7.178209789078681e-16], [0.0, 11.7229062192894, 7.178209789078681e-16], [0.0, 0.0, 11.7229062192894]]),\n (0.92,\n 0): Atoms(symbols='Al108', pbc=True, cell=[[11.80910715486485, 7.230992638996672e-16, 7.230992638996672e-16], [0.0, 11.80910715486485, 7.230992638996672e-16], [0.0, 0.0, 11.80910715486485]]),\n (0.94,\n 0): Atoms(symbols='Al108', pbc=True, cell=[[11.894067681419225, 7.283015957446018e-16, 7.283015957446018e-16], [0.0, 11.894067681419225, 7.283015957446018e-16], [0.0, 0.0, 11.894067681419225]]),\n (0.96,\n 0): Atoms(symbols='Al108', pbc=True, cell=[[11.977831481208684, 7.334306492094308e-16, 7.334306492094308e-16], [0.0, 11.977831481208684, 7.334306492094308e-16], [0.0, 0.0, 11.977831481208684]]),\n (0.98,\n 0): Atoms(symbols='Al108', pbc=True, cell=[[12.060439826001351, 7.384889514610908e-16, 7.384889514610908e-16], [0.0, 12.060439826001351, 7.384889514610908e-16], [0.0, 0.0, 12.060439826001351]]),\n (1.0,\n 0): Atoms(symbols='Al108', pbc=True, cell=[[12.141931756274893, 7.434788930393824e-16, 7.434788930393824e-16], [0.0, 12.141931756274893, 7.434788930393824e-16], [0.0, 0.0, 12.141931756274893]]),\n (1.02,\n 0): Atoms(symbols='Al108', pbc=True, cell=[[12.222344243795412, 7.484027378120565e-16, 7.484027378120565e-16], [0.0, 12.222344243795412, 7.484027378120565e-16], [0.0, 0.0, 12.222344243795412]]),\n (1.04,\n 0): Atoms(symbols='Al108', pbc=True, cell=[[12.301712339412747, 7.53262632024666e-16, 7.53262632024666e-16], [0.0, 12.301712339412747, 7.53262632024666e-16], [0.0, 0.0, 12.301712339412747]]),\n (1.06,\n 0): Atoms(symbols='Al108', pbc=True, cell=[[12.38006930767338, 7.580606125432298e-16, 7.580606125432298e-16], [0.0, 12.38006930767338, 7.580606125432298e-16], [0.0, 0.0, 12.38006930767338]]),\n (1.08,\n 0): Atoms(symbols='Al108', pbc=True, cell=[[12.457446749652004, 7.627986143754963e-16, 7.627986143754963e-16], [0.0, 12.457446749652004, 7.627986143754963e-16], [0.0, 0.0, 12.457446749652004]]),\n (1.1,\n 0): Atoms(symbols='Al108', pbc=True, cell=[[12.533874715230777, 7.674784775460657e-16, 7.674784775460657e-16], [0.0, 12.533874715230777, 7.674784775460657e-16], [0.0, 0.0, 12.533874715230777]])}}"},"metadata":{}}],"id":"493663b9-ea0c-4234-87ef-8f70774794f4"},{"cell_type":"markdown","source":"In contrast to the previous workflows which only used the `calc_energy` function of the simulation codes the `PhonopyWorkflow`\nand correspondingly also the `QuasiHarmonicWorkflow` require the calculation of the forces `calc_forces` in addition to\nthe calculation of the energy. Still the general steps of the workflow remain the same: ","metadata":{},"id":"9dcd4a1e-7122-4f57-93c1-bd9267084f70"},{"cell_type":"code","source":"result_dict = evaluate_with_lammps(\n task_dict=structure_dict,\n potential_dataframe=potential_dataframe,\n)","metadata":{"trusted":true},"execution_count":10,"outputs":[],"id":"2e96e588-e279-4d6c-8f40-2eafa982933b"},{"cell_type":"markdown","source":"The `structure_dict` is evaluated with the [LAMMPS](https://www.lammps.org/) molecular dynamics simulation code to \ncalculate the corresponding energies and forces. The output is not plotted here as the forces for the 108 atom cells \nresult in 3x108 outputs per cell. Still the structure of the `result_dict` again follows the labels of the `structure_dict`\nas explained before. Finally, in the third step the individual free energy curves at the different temperatures are \nfitted to determine the equilibrium volume at the given temperature using the `analyse_structures()` \nand `get_thermal_properties()` functions:","metadata":{},"id":"8fa40f79-f919-47df-ab07-c9a9dcd04b3d"},{"cell_type":"code","source":"workflow_qh.analyse_structures(output_dict=result_dict)\nthermal_properties_dict_qm = workflow_qh.get_thermal_properties(\n temperatures=np.arange(1, 1500, 50),\n output_keys=[\"temperatures\", \"volumes\"],\n quantum_mechanical=True\n)\ntemperatures_qh_qm, volume_qh_qm = thermal_properties_dict_qm[\"temperatures\"], thermal_properties_dict_qm[\"volumes\"]","metadata":{"trusted":true},"execution_count":11,"outputs":[],"id":"371977fd-cd4e-469f-8955-17a2946c8629"},{"cell_type":"markdown","source":"The optimal volume at the different `temperatures` is stored in the `volume_qh_qm` in analogy to the previous section. Here the extension `_qm` indicates that the quantum-mechanical harmonic oszillator is used. ","metadata":{},"id":"6c7145b4-9a55-4212-a34f-a1300f7b440f"},{"cell_type":"code","source":"thermal_properties_dict_cl = workflow_qh.get_thermal_properties(\n temperatures=np.arange(1, 1500, 50),\n output_keys=[\"temperatures\", \"volumes\"],\n quantum_mechanical=False,\n)\ntemperatures_qh_cl, volume_qh_cl = thermal_properties_dict_cl[\"temperatures\"], thermal_properties_dict_cl[\"volumes\"]","metadata":{"trusted":true},"execution_count":12,"outputs":[],"id":"70002fc3-2436-43ed-8a4c-0b3c1f9a3812"},{"cell_type":"markdown","source":"For the classical harmonic oszillator the resulting volumes are stored as `volume_qh_cl`. ","metadata":{},"id":"bb0db978-365f-43af-9a20-6ebb58fb8da9"},{"cell_type":"markdown","source":"### Molecular Dynamics\nFinally, the third and most commonly used method to determine the volume expansion is using a molecular dynamics \ncalculation. While the `atomistics` package already includes a `LangevinWorkflow` at this point we use the [Nose-Hoover\nthermostat implemented in LAMMPS](https://docs.lammps.org/fix_nh.html) directly via the LAMMPS calculator interface. ","metadata":{},"id":"eb795fbd-0477-492a-b883-9cb31b58d3e2"},{"cell_type":"code","source":"from atomistics.calculators import calc_molecular_dynamics_thermal_expansion_with_lammps\n\nstructure_md = structure_opt.copy().repeat(11)\nresult_dict = calc_molecular_dynamics_thermal_expansion_with_lammps(\n structure=structure_md, # atomistic structure\n potential_dataframe=potential_dataframe, # interatomic potential defined as pandas.DataFrame \n Tstart=15, # temperature to for initial velocity distribution\n Tstop=1500, # final temperature\n Tstep=5, # temperature step\n Tdamp=0.1, # temperature damping of the thermostat \n run=100, # number of MD steps for each temperature\n thermo=100, # print out from the thermostat\n timestep=0.001, # time step for molecular dynamics \n Pstart=0.0, # initial pressure\n Pstop=0.0, # final pressure \n Pdamp=1.0, # barostat damping \n seed=4928459, # random seed \n dist=\"gaussian\", # Gaussian velocity distribution \n)\ntemperature_md_lst, volume_md_lst = result_dict[\"temperatures\"], result_dict[\"volumes\"]","metadata":{"trusted":true},"execution_count":13,"outputs":[{"name":"stderr","text":"100%|██████████| 298/298 [06:54<00:00, 1.39s/it]\n","output_type":"stream"}],"id":"a41d36c9-34eb-46e0-b713-57941dfb0296"},{"cell_type":"markdown","source":"The `calc_molecular_dynamics_thermal_expansion_with_lammps()` function defines a loop over a vector of temperatures in \n5K steps. For each step 100 molecular dynamics steps are executed before the temperature is again increased by 5K. For \n~280 steps with the Morse Pair Potential this takes approximately 5 minutes on a single core. These simulations can be \nfurther accelerated by adding the `cores` parameter. The increase in computational cost is on the one hand related to \nthe large number of force and energy calls and on the other hand to the size of the atomistic structure, as these \nsimulations are typically executed with >5000 atoms rather than the 4 or 108 atoms in the other approximations. The \nvolume for the individual temperatures is stored in the `volume_md_lst` list. ","metadata":{},"id":"d2efeb52-ee54-4eb0-878a-184f353941bf"},{"cell_type":"markdown","source":"### Summary\nTo visually compare the thermal expansion predicted by the three different approximations, the [matplotlib](https://matplotlib.org)\nis used to plot the volume over the temperature:","metadata":{},"id":"eff137a4-61fc-4cbe-8c60-b0dc534a5f3f"},{"cell_type":"code","source":"import matplotlib.pyplot as plt\nplt.plot(temperature_md_lst, np.array(volume_md_lst)/len(structure_md) * len(structure_opt), label=\"Molecular Dynamics\", color=\"C2\")\nplt.plot(temperatures_qh_qm, volume_qh_qm, label=\"Quasi-Harmonic (qm)\", color=\"C3\")\nplt.plot(temperatures_qh_cl, volume_qh_cl, label=\"Quasi-Harmonic (classic)\", color=\"C0\")\nplt.plot(temperatures_ev, volume_ev, label=\"Moruzzi Model\", color=\"C1\")\nplt.axhline(structure_opt.get_volume(), linestyle=\"--\", color=\"red\")\nplt.legend()\nplt.xlabel(\"Temperature (K)\")\nplt.ylabel(\"Volume ($\\AA^3$)\")","metadata":{"trusted":true},"execution_count":14,"outputs":[{"execution_count":14,"output_type":"execute_result","data":{"text/plain":"Text(0, 0.5, 'Volume ($\\\\AA^3$)')"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"
","image/png":"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"},"metadata":{}}],"id":"da8f641d-c5e6-4c10-8aeb-c891109e2e6d"},{"cell_type":"markdown","source":"Both the [Moruzzi, V. L. et al.](https://link.aps.org/doi/10.1103/PhysRevB.37.790) and the quantum mechanical version of the quasi-harmonic approach start at a larger equilibrium volume as they include the zero point vibrations, resulting in an over-prediction of the volume expansion with increasing temperature. The equilibrium volume is indicated by the dashed red line. Finally, the quasi-harmonic approach with the classical harmonic oszillator agrees very well with the thermal expansion calculated from molecular dynamics for this example of using the Morse Pair Potential. ","metadata":{},"id":"03887d0e-da24-49ca-9bd8-9452fd666b3c"},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[],"id":"e7aeb2f2-12c5-492a-a821-384b030b4a68"}]} \ No newline at end of file +{"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.10.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat_minor":5,"nbformat":4,"cells":[{"cell_type":"markdown","source":"## Thermal Expansion \nCalculate the thermal expansion for a Morse Pair potential using the [LAMMPS](https://www.lammps.org/) molecular dynamics\nsimulation code. In the following three methods to calculate the thermal expansion are introduced and compared for a \nMorse Pair Potential for Aluminium. \n\nAs a first step the potential is defined for the [LAMMPS](https://www.lammps.org/) molecular dynamics simulation code \nby specifying the `pair_style` and `pair_coeff` commands for the [Morse Pair Potential](https://docs.lammps.org/pair_morse.html)\nas well as the Aluminium bulk structure: ","metadata":{},"id":"ce2efe0c-f86c-4cbd-ab3f-2aae9c5a574d"},{"cell_type":"code","source":"from ase.build import bulk\nimport pandas\n\npotential_dataframe = pandas.DataFrame({\n \"Config\": [[\n \"pair_style morse/smooth/linear 9.0\",\n \"pair_coeff * * 0.5 1.8 2.95\"\n ]],\n \"Filename\": [[]],\n \"Model\": [\"Morse\"],\n \"Name\": [\"Morse\"],\n \"Species\": [[\"Al\"]],\n})\n\nstructure = bulk(\"Al\", cubic=True)","metadata":{"trusted":true},"execution_count":1,"outputs":[],"id":"7a96bac5-5afe-4924-90e5-04f6e6b2bedb"},{"cell_type":"markdown","source":"The `pandas.DataFrame` based format to specify interatomic potentials is the same `pylammpsmpi` uses to interface with \nthe [NIST database for interatomic potentials](https://www.ctcms.nist.gov/potentials). In comparison to just providing\nthe `pair_style` and `pair_coeff` commands, this extended format enables referencing specific files for the interatomic\npotentials `\"Filename\": [[]],` as well as the atomic species `\"Species\": [[\"Al\"]],` to enable consistency checks if the \ninteratomic potential implements all the interactions to simulate a given atomic structure. ","metadata":{},"id":"fe980834-e174-464a-8c07-04db9889a8c6"},{"cell_type":"markdown","source":"Finally, the last step of the preparation before starting the actual calculation is optimizing the interatomic structure. \nWhile for the Morse potential used in this example this is not necessary, it is essential for extending this example to\nother interactomic potentials. For the structure optimization the `optimize_positions_and_volume()` function is imported\nand applied on the `ase.atoms.Atoms` bulk structure for Aluminium:","metadata":{},"id":"b825e555-5e3d-43c2-8c51-50207ead60b5"},{"cell_type":"code","source":"from atomistics.workflows import optimize_positions_and_volume\n\ntask_dict = optimize_positions_and_volume(structure=structure)\ntask_dict","metadata":{"trusted":true},"execution_count":2,"outputs":[{"execution_count":2,"output_type":"execute_result","data":{"text/plain":"{'optimize_positions_and_volume': Atoms(symbols='Al4', pbc=True, cell=[4.05, 4.05, 4.05])}"},"metadata":{}}],"id":"7bd4ed1a-bffe-40f9-99f8-706797418877"},{"cell_type":"markdown","source":"It returns a `task_dict` with a single task, the optimization of the positions and the volume of the Aluminium structure.\nThis task is executed with the [LAMMPS](https://www.lammps.org/) molecular dynamics simulation code using the \n`evaluate_with_lammps()` function:","metadata":{},"id":"ed380b51-efa8-4ebb-bb27-b4aca90b21ec"},{"cell_type":"code","source":"from atomistics.calculators import evaluate_with_lammps\n\nresult_dict = evaluate_with_lammps(\n task_dict=task_dict,\n potential_dataframe=potential_dataframe,\n)\nstructure_opt = result_dict[\"structure_with_optimized_positions_and_volume\"]\nstructure_opt","metadata":{"trusted":true},"execution_count":3,"outputs":[{"name":"stderr","text":"[jupyter-pyiron-2datomistics-2djetdbyfr:00796] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\n/srv/conda/envs/notebook/lib/python3.10/site-packages/pylammpsmpi/wrapper/ase.py:165: UserWarning: Warning: setting upper trangular matrix might slow down the calculation\n warnings.warn(\n","output_type":"stream"},{"execution_count":3,"output_type":"execute_result","data":{"text/plain":"Atoms(symbols='Al4', pbc=True, cell=[[4.047310585424964, 2.478262976797941e-16, 2.478262976797941e-16], [0.0, 4.047310585424964, 2.478262976797941e-16], [0.0, 0.0, 4.047310585424964]])"},"metadata":{}}],"id":"991eaf43-0c4b-4ca2-8494-2b11684f4a79"},{"cell_type":"markdown","source":"The `result_dict` just contains a single element, the `ase.atoms.Atoms` structure object with optimized positions and \nvolume. After this step the preparation is completed and the three different approximations can be compared in the following.","metadata":{},"id":"6750cc4c-106f-4066-80ad-860bf6980732"},{"cell_type":"markdown","source":"### Equation of State \nThe first approximation to calculate the thermal expansion is based on the Equation of State derived by [Moruzzi, V. L. et al.](https://link.aps.org/doi/10.1103/PhysRevB.37.790).\nSo in analogy to the previous example of calculating the elastic properties from the Equation of State, the `EnergyVolumeCurveWorkflow`\nis initialized with the default parameters: ","metadata":{},"id":"6c120581-efd6-4204-8413-75ee81065db1"},{"cell_type":"code","source":"from atomistics.workflows import EnergyVolumeCurveWorkflow\n\nworkflow_ev = EnergyVolumeCurveWorkflow(\n structure=structure_opt.copy(),\n num_points=11,\n fit_type='birchmurnaghan',\n vol_range=0.05,\n axes=['x', 'y', 'z'],\n strains=None,\n)\nstructure_dict = workflow_ev.generate_structures()\nstructure_dict","metadata":{"trusted":true},"execution_count":4,"outputs":[{"execution_count":4,"output_type":"execute_result","data":{"text/plain":"{'calc_energy': OrderedDict([(0.95,\n Atoms(symbols='Al4', pbc=True, cell=[[3.9786988461213992, 2.43625040333692e-16, 2.43625040333692e-16], [0.0, 3.9786988461213992, 2.43625040333692e-16], [0.0, 0.0, 3.9786988461213992]])),\n (0.96,\n Atoms(symbols='Al4', pbc=True, cell=[[3.992610493736228, 2.4447688306981026e-16, 2.4447688306981026e-16], [0.0, 3.992610493736228, 2.4447688306981026e-16], [0.0, 0.0, 3.992610493736228]])),\n (0.97,\n Atoms(symbols='Al4', pbc=True, cell=[[4.00642586504517, 2.4532283058243666e-16, 2.4532283058243666e-16], [0.0, 4.00642586504517, 2.4532283058243666e-16], [0.0, 0.0, 4.00642586504517]])),\n (0.98,\n Atoms(symbols='Al4', pbc=True, cell=[[4.020146608667117, 2.461629838203636e-16, 2.461629838203636e-16], [0.0, 4.020146608667117, 2.461629838203636e-16], [0.0, 0.0, 4.020146608667117]])),\n (0.99,\n Atoms(symbols='Al4', pbc=True, cell=[[4.033774328510742, 2.469974409946722e-16, 2.469974409946722e-16], [0.0, 4.033774328510742, 2.469974409946722e-16], [0.0, 0.0, 4.033774328510742]])),\n (1.0,\n Atoms(symbols='Al4', pbc=True, cell=[[4.047310585424964, 2.478262976797941e-16, 2.478262976797941e-16], [0.0, 4.047310585424964, 2.478262976797941e-16], [0.0, 0.0, 4.047310585424964]])),\n (1.01,\n Atoms(symbols='Al4', pbc=True, cell=[[4.060756898772644, 2.486496469098726e-16, 2.486496469098726e-16], [0.0, 4.060756898772644, 2.486496469098726e-16], [0.0, 0.0, 4.060756898772644]])),\n (1.02,\n Atoms(symbols='Al4', pbc=True, cell=[[4.074114747931804, 2.494675792706855e-16, 2.494675792706855e-16], [0.0, 4.074114747931804, 2.494675792706855e-16], [0.0, 0.0, 4.074114747931804]])),\n (1.03,\n Atoms(symbols='Al4', pbc=True, cell=[[4.087385573728375, 2.5028018298737613e-16, 2.5028018298737613e-16], [0.0, 4.087385573728375, 2.5028018298737613e-16], [0.0, 0.0, 4.087385573728375]])),\n (1.04,\n Atoms(symbols='Al4', pbc=True, cell=[[4.100570779804249, 2.51087544008222e-16, 2.51087544008222e-16], [0.0, 4.100570779804249, 2.51087544008222e-16], [0.0, 0.0, 4.100570779804249]])),\n (1.05,\n Atoms(symbols='Al4', pbc=True, cell=[[4.113671733924125, 2.518897460846561e-16, 2.518897460846561e-16], [0.0, 4.113671733924125, 2.518897460846561e-16], [0.0, 0.0, 4.113671733924125]]))])}"},"metadata":{}}],"id":"b69b6ee2-b526-4913-a6c7-36018e8960af"},{"cell_type":"markdown","source":"After the initialization the `generate_structures()` function is called to generate the atomistic structures which are\nthen in the second step evaluated with the [LAMMPS](https://www.lammps.org/) molecular dynamics simulation code to derive\nthe equilibrium properties:","metadata":{},"id":"8f5d1e8d-0204-4dca-9298-878b9b2f6406"},{"cell_type":"code","source":"result_dict = evaluate_with_lammps(\n task_dict=structure_dict, \n potential_dataframe=potential_dataframe\n)\nresult_dict","metadata":{"trusted":true},"execution_count":5,"outputs":[{"execution_count":5,"output_type":"execute_result","data":{"text/plain":"{'energy': {0.95: -14.609207927145926,\n 0.96: -14.656740101454448,\n 0.97: -14.692359030099395,\n 0.98: -14.716883724875528,\n 0.99: -14.731079276327009,\n 1.0: -14.735659820057942,\n 1.01: -14.731295089579728,\n 1.02: -14.718611862249286,\n 1.03: -14.698196715842329,\n 1.04: -14.670598736769112,\n 1.05: -14.636332030744796}}"},"metadata":{}}],"id":"7d1f126e-4fd0-41c5-986b-91d3b5910e3e"},{"cell_type":"markdown","source":"While in the previous example the fit of the energy volume curve was used directly, here the output of the fit, in\nparticular the derived equilibrium properties are the input for the Debye model as defined by [Moruzzi, V. L. et al.](https://link.aps.org/doi/10.1103/PhysRevB.37.790):","metadata":{},"id":"fb679eb1-338f-4485-a953-791e147fe632"},{"cell_type":"code","source":"structure_opt.get_volume()","metadata":{"trusted":true},"execution_count":6,"outputs":[{"execution_count":6,"output_type":"execute_result","data":{"text/plain":"66.29787349319821"},"metadata":{}}],"id":"2e0f7aab-6744-4b6f-a454-38c28833a3ac"},{"cell_type":"code","source":"fit_dict = workflow_ev.analyse_structures(output_dict=result_dict)\nfit_dict","metadata":{"trusted":true},"execution_count":7,"outputs":[{"execution_count":7,"output_type":"execute_result","data":{"text/plain":"{'b_prime_eq': 6.2365371733275845,\n 'bulkmodul_eq': 216.057292780608,\n 'volume_eq': 66.29790137569191,\n 'energy_eq': -14.735658078942949,\n 'fit_dict': {'fit_type': 'birchmurnaghan',\n 'least_square_error': array([8.12779273e-07, 2.83453476e-03, 1.45091623e-03, 3.00518393e-05])},\n 'energy': [-14.609207927145926,\n -14.656740101454448,\n -14.692359030099395,\n -14.716883724875528,\n -14.731079276327009,\n -14.735659820057942,\n -14.731295089579728,\n -14.718611862249286,\n -14.698196715842329,\n -14.670598736769112,\n -14.636332030744796],\n 'volume': [62.98297981853827,\n 63.645958553470244,\n 64.30893728840229,\n 64.97191602333424,\n 65.63489475826624,\n 66.29787349319821,\n 66.96085222813018,\n 67.62383096306218,\n 68.28680969799419,\n 68.94978843292616,\n 69.61276716785807]}"},"metadata":{}}],"id":"11c8b18d-64ff-4c93-b646-668b00eb1cf8"},{"cell_type":"code","source":"import numpy as np\n\nworkflow_ev.analyse_structures(output_dict=result_dict)\nthermal_properties_dict = workflow_ev.get_thermal_properties(\n temperatures=np.arange(1, 1500, 50),\n output_keys=[\"temperatures\", \"volumes\"],\n)\ntemperatures_ev, volume_ev = thermal_properties_dict[\"temperatures\"], thermal_properties_dict[\"volumes\"]","metadata":{"trusted":true},"execution_count":8,"outputs":[{"name":"stderr","text":"/srv/conda/envs/notebook/lib/python3.10/site-packages/atomistics/workflows/evcurve/debye.py:80: RuntimeWarning: overflow encountered in exp\n return xi**3 / (np.exp(xi) - 1)\n","output_type":"stream"}],"id":"9c7cd51c-6058-4d1d-8948-56d29c3b13e7"},{"cell_type":"markdown","source":"The output of the Debye model provides the change of the temperature specific optimal volume `volume_ev`\nwhich can be plotted over the temperature `temperatures_ev` to determine the thermal expansion. ","metadata":{},"id":"35ab7b86-0688-4520-ad47-ea54b4bfde86"},{"cell_type":"markdown","source":"### Quasi-Harmonic Approximation \nWhile the [Moruzzi, V. L. et al.](https://link.aps.org/doi/10.1103/PhysRevB.37.790) approach based on the Einstein crystal\nis limited to a single frequency, the quasi-harmonic model includes the volume dependent free energy. Inside the \n`atomistics` package the harmonic and quasi-harmonic model are implemented based on an interface to the [Phonopy](https://phonopy.github.io/phonopy/)\nframework. Still the user interface is still structured in the same three steps of (1) generating structures, (2) evaluating \nthese structures and (3) fitting the corresponding model. Starting with the initialization of the `QuasiHarmonicWorkflow`\nwhich combines the `PhonopyWorkflow` with the `EnergyVolumeCurveWorkflow`:","metadata":{},"id":"88ccd1f0-98c5-4e13-ab2c-febe5d3f235b"},{"cell_type":"code","source":"from atomistics.workflows import QuasiHarmonicWorkflow\nfrom phonopy.units import VaspToTHz\n\nworkflow_qh = QuasiHarmonicWorkflow(\n structure=structure_opt.copy(),\n num_points=11,\n vol_range=0.10,\n # fit_type='birchmurnaghan',\n interaction_range=10,\n factor=VaspToTHz,\n displacement=0.01,\n dos_mesh=20,\n primitive_matrix=None,\n number_of_snapshots=None,\n)\nstructure_dict = workflow_qh.generate_structures()\nstructure_dict","metadata":{"trusted":true},"execution_count":9,"outputs":[{"execution_count":9,"output_type":"execute_result","data":{"text/plain":"{'calc_energy': {0.9: Atoms(symbols='Al108', pbc=True, cell=[[11.7229062192894, 7.178209789078681e-16, 7.178209789078681e-16], [0.0, 11.7229062192894, 7.178209789078681e-16], [0.0, 0.0, 11.7229062192894]]),\n 0.92: Atoms(symbols='Al108', pbc=True, cell=[[11.80910715486485, 7.230992638996672e-16, 7.230992638996672e-16], [0.0, 11.80910715486485, 7.230992638996672e-16], [0.0, 0.0, 11.80910715486485]]),\n 0.94: Atoms(symbols='Al108', pbc=True, cell=[[11.894067681419225, 7.283015957446018e-16, 7.283015957446018e-16], [0.0, 11.894067681419225, 7.283015957446018e-16], [0.0, 0.0, 11.894067681419225]]),\n 0.96: Atoms(symbols='Al108', pbc=True, cell=[[11.977831481208684, 7.334306492094308e-16, 7.334306492094308e-16], [0.0, 11.977831481208684, 7.334306492094308e-16], [0.0, 0.0, 11.977831481208684]]),\n 0.98: Atoms(symbols='Al108', pbc=True, cell=[[12.060439826001351, 7.384889514610908e-16, 7.384889514610908e-16], [0.0, 12.060439826001351, 7.384889514610908e-16], [0.0, 0.0, 12.060439826001351]]),\n 1.0: Atoms(symbols='Al108', pbc=True, cell=[[12.141931756274893, 7.434788930393824e-16, 7.434788930393824e-16], [0.0, 12.141931756274893, 7.434788930393824e-16], [0.0, 0.0, 12.141931756274893]]),\n 1.02: Atoms(symbols='Al108', pbc=True, cell=[[12.222344243795412, 7.484027378120565e-16, 7.484027378120565e-16], [0.0, 12.222344243795412, 7.484027378120565e-16], [0.0, 0.0, 12.222344243795412]]),\n 1.04: Atoms(symbols='Al108', pbc=True, cell=[[12.301712339412747, 7.53262632024666e-16, 7.53262632024666e-16], [0.0, 12.301712339412747, 7.53262632024666e-16], [0.0, 0.0, 12.301712339412747]]),\n 1.06: Atoms(symbols='Al108', pbc=True, cell=[[12.38006930767338, 7.580606125432298e-16, 7.580606125432298e-16], [0.0, 12.38006930767338, 7.580606125432298e-16], [0.0, 0.0, 12.38006930767338]]),\n 1.08: Atoms(symbols='Al108', pbc=True, cell=[[12.457446749652004, 7.627986143754963e-16, 7.627986143754963e-16], [0.0, 12.457446749652004, 7.627986143754963e-16], [0.0, 0.0, 12.457446749652004]]),\n 1.1: Atoms(symbols='Al108', pbc=True, cell=[[12.533874715230777, 7.674784775460657e-16, 7.674784775460657e-16], [0.0, 12.533874715230777, 7.674784775460657e-16], [0.0, 0.0, 12.533874715230777]])},\n 'calc_forces': {(0.9,\n 0): Atoms(symbols='Al108', pbc=True, cell=[[11.7229062192894, 7.178209789078681e-16, 7.178209789078681e-16], [0.0, 11.7229062192894, 7.178209789078681e-16], [0.0, 0.0, 11.7229062192894]]),\n (0.92,\n 0): Atoms(symbols='Al108', pbc=True, cell=[[11.80910715486485, 7.230992638996672e-16, 7.230992638996672e-16], [0.0, 11.80910715486485, 7.230992638996672e-16], [0.0, 0.0, 11.80910715486485]]),\n (0.94,\n 0): Atoms(symbols='Al108', pbc=True, cell=[[11.894067681419225, 7.283015957446018e-16, 7.283015957446018e-16], [0.0, 11.894067681419225, 7.283015957446018e-16], [0.0, 0.0, 11.894067681419225]]),\n (0.96,\n 0): Atoms(symbols='Al108', pbc=True, cell=[[11.977831481208684, 7.334306492094308e-16, 7.334306492094308e-16], [0.0, 11.977831481208684, 7.334306492094308e-16], [0.0, 0.0, 11.977831481208684]]),\n (0.98,\n 0): Atoms(symbols='Al108', pbc=True, cell=[[12.060439826001351, 7.384889514610908e-16, 7.384889514610908e-16], [0.0, 12.060439826001351, 7.384889514610908e-16], [0.0, 0.0, 12.060439826001351]]),\n (1.0,\n 0): Atoms(symbols='Al108', pbc=True, cell=[[12.141931756274893, 7.434788930393824e-16, 7.434788930393824e-16], [0.0, 12.141931756274893, 7.434788930393824e-16], [0.0, 0.0, 12.141931756274893]]),\n (1.02,\n 0): Atoms(symbols='Al108', pbc=True, cell=[[12.222344243795412, 7.484027378120565e-16, 7.484027378120565e-16], [0.0, 12.222344243795412, 7.484027378120565e-16], [0.0, 0.0, 12.222344243795412]]),\n (1.04,\n 0): Atoms(symbols='Al108', pbc=True, cell=[[12.301712339412747, 7.53262632024666e-16, 7.53262632024666e-16], [0.0, 12.301712339412747, 7.53262632024666e-16], [0.0, 0.0, 12.301712339412747]]),\n (1.06,\n 0): Atoms(symbols='Al108', pbc=True, cell=[[12.38006930767338, 7.580606125432298e-16, 7.580606125432298e-16], [0.0, 12.38006930767338, 7.580606125432298e-16], [0.0, 0.0, 12.38006930767338]]),\n (1.08,\n 0): Atoms(symbols='Al108', pbc=True, cell=[[12.457446749652004, 7.627986143754963e-16, 7.627986143754963e-16], [0.0, 12.457446749652004, 7.627986143754963e-16], [0.0, 0.0, 12.457446749652004]]),\n (1.1,\n 0): Atoms(symbols='Al108', pbc=True, cell=[[12.533874715230777, 7.674784775460657e-16, 7.674784775460657e-16], [0.0, 12.533874715230777, 7.674784775460657e-16], [0.0, 0.0, 12.533874715230777]])}}"},"metadata":{}}],"id":"493663b9-ea0c-4234-87ef-8f70774794f4"},{"cell_type":"markdown","source":"In contrast to the previous workflows which only used the `calc_energy` function of the simulation codes the `PhonopyWorkflow`\nand correspondingly also the `QuasiHarmonicWorkflow` require the calculation of the forces `calc_forces` in addition to\nthe calculation of the energy. Still the general steps of the workflow remain the same: ","metadata":{},"id":"9dcd4a1e-7122-4f57-93c1-bd9267084f70"},{"cell_type":"code","source":"result_dict = evaluate_with_lammps(\n task_dict=structure_dict,\n potential_dataframe=potential_dataframe,\n)","metadata":{"trusted":true},"execution_count":10,"outputs":[],"id":"2e96e588-e279-4d6c-8f40-2eafa982933b"},{"cell_type":"markdown","source":"The `structure_dict` is evaluated with the [LAMMPS](https://www.lammps.org/) molecular dynamics simulation code to \ncalculate the corresponding energies and forces. The output is not plotted here as the forces for the 108 atom cells \nresult in 3x108 outputs per cell. Still the structure of the `result_dict` again follows the labels of the `structure_dict`\nas explained before. Finally, in the third step the individual free energy curves at the different temperatures are \nfitted to determine the equilibrium volume at the given temperature using the `analyse_structures()` \nand `get_thermal_properties()` functions:","metadata":{},"id":"8fa40f79-f919-47df-ab07-c9a9dcd04b3d"},{"cell_type":"code","source":"workflow_qh.analyse_structures(output_dict=result_dict)\nthermal_properties_dict_qm = workflow_qh.get_thermal_properties(\n temperatures=np.arange(1, 1500, 50),\n output_keys=[\"free_energy\", \"temperatures\", \"volumes\"],\n quantum_mechanical=True\n)\ntemperatures_qh_qm, volume_qh_qm = thermal_properties_dict_qm[\"temperatures\"], thermal_properties_dict_qm[\"volumes\"]","metadata":{"trusted":true},"execution_count":11,"outputs":[],"id":"371977fd-cd4e-469f-8955-17a2946c8629"},{"cell_type":"markdown","source":"The optimal volume at the different `temperatures` is stored in the `volume_qh_qm` in analogy to the previous section. Here the extension `_qm` indicates that the quantum-mechanical harmonic oszillator is used. ","metadata":{},"id":"6c7145b4-9a55-4212-a34f-a1300f7b440f"},{"cell_type":"code","source":"thermal_properties_dict_cl = workflow_qh.get_thermal_properties(\n temperatures=np.arange(1, 1500, 50),\n output_keys=[\"free_energy\", \"temperatures\", \"volumes\"],\n quantum_mechanical=False,\n)\ntemperatures_qh_cl, volume_qh_cl = thermal_properties_dict_cl[\"temperatures\"], thermal_properties_dict_cl[\"volumes\"]","metadata":{"trusted":true},"execution_count":12,"outputs":[],"id":"70002fc3-2436-43ed-8a4c-0b3c1f9a3812"},{"cell_type":"markdown","source":"For the classical harmonic oszillator the resulting volumes are stored as `volume_qh_cl`. ","metadata":{},"id":"bb0db978-365f-43af-9a20-6ebb58fb8da9"},{"cell_type":"markdown","source":"### Molecular Dynamics\nFinally, the third and most commonly used method to determine the volume expansion is using a molecular dynamics \ncalculation. While the `atomistics` package already includes a `LangevinWorkflow` at this point we use the [Nose-Hoover\nthermostat implemented in LAMMPS](https://docs.lammps.org/fix_nh.html) directly via the LAMMPS calculator interface. ","metadata":{},"id":"eb795fbd-0477-492a-b883-9cb31b58d3e2"},{"cell_type":"code","source":"from atomistics.calculators import calc_molecular_dynamics_thermal_expansion_with_lammps\n\nstructure_md = structure_opt.copy().repeat(11)\nresult_dict = calc_molecular_dynamics_thermal_expansion_with_lammps(\n structure=structure_md, # atomistic structure\n potential_dataframe=potential_dataframe, # interatomic potential defined as pandas.DataFrame \n Tstart=15, # temperature to for initial velocity distribution\n Tstop=1500, # final temperature\n Tstep=5, # temperature step\n Tdamp=0.1, # temperature damping of the thermostat \n run=100, # number of MD steps for each temperature\n thermo=100, # print out from the thermostat\n timestep=0.001, # time step for molecular dynamics \n Pstart=0.0, # initial pressure\n Pstop=0.0, # final pressure \n Pdamp=1.0, # barostat damping \n seed=4928459, # random seed \n dist=\"gaussian\", # Gaussian velocity distribution \n)\ntemperature_md_lst, volume_md_lst = result_dict[\"temperatures\"], result_dict[\"volumes\"]","metadata":{"trusted":true},"execution_count":13,"outputs":[{"name":"stderr","text":"100%|██████████| 298/298 [06:54<00:00, 1.39s/it]\n","output_type":"stream"}],"id":"a41d36c9-34eb-46e0-b713-57941dfb0296"},{"cell_type":"markdown","source":"The `calc_molecular_dynamics_thermal_expansion_with_lammps()` function defines a loop over a vector of temperatures in \n5K steps. For each step 100 molecular dynamics steps are executed before the temperature is again increased by 5K. For \n~280 steps with the Morse Pair Potential this takes approximately 5 minutes on a single core. These simulations can be \nfurther accelerated by adding the `cores` parameter. The increase in computational cost is on the one hand related to \nthe large number of force and energy calls and on the other hand to the size of the atomistic structure, as these \nsimulations are typically executed with >5000 atoms rather than the 4 or 108 atoms in the other approximations. The \nvolume for the individual temperatures is stored in the `volume_md_lst` list. ","metadata":{},"id":"d2efeb52-ee54-4eb0-878a-184f353941bf"},{"cell_type":"markdown","source":"### Summary\nTo visually compare the thermal expansion predicted by the three different approximations, the [matplotlib](https://matplotlib.org)\nis used to plot the volume over the temperature:","metadata":{},"id":"eff137a4-61fc-4cbe-8c60-b0dc534a5f3f"},{"cell_type":"code","source":"import matplotlib.pyplot as plt\nplt.plot(temperature_md_lst, np.array(volume_md_lst)/len(structure_md) * len(structure_opt), label=\"Molecular Dynamics\", color=\"C2\")\nplt.plot(temperatures_qh_qm, volume_qh_qm, label=\"Quasi-Harmonic (qm)\", color=\"C3\")\nplt.plot(temperatures_qh_cl, volume_qh_cl, label=\"Quasi-Harmonic (classic)\", color=\"C0\")\nplt.plot(temperatures_ev, volume_ev, label=\"Moruzzi Model\", color=\"C1\")\nplt.axhline(structure_opt.get_volume(), linestyle=\"--\", color=\"red\")\nplt.legend()\nplt.xlabel(\"Temperature (K)\")\nplt.ylabel(\"Volume ($\\AA^3$)\")","metadata":{"trusted":true},"execution_count":14,"outputs":[{"execution_count":14,"output_type":"execute_result","data":{"text/plain":"Text(0, 0.5, 'Volume ($\\\\AA^3$)')"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"
","image/png":"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"},"metadata":{}}],"id":"da8f641d-c5e6-4c10-8aeb-c891109e2e6d"},{"cell_type":"markdown","source":"Both the [Moruzzi, V. L. et al.](https://link.aps.org/doi/10.1103/PhysRevB.37.790) and the quantum mechanical version of the quasi-harmonic approach start at a larger equilibrium volume as they include the zero point vibrations, resulting in an over-prediction of the volume expansion with increasing temperature. The equilibrium volume is indicated by the dashed red line. Finally, the quasi-harmonic approach with the classical harmonic oszillator agrees very well with the thermal expansion calculated from molecular dynamics for this example of using the Morse Pair Potential. ","metadata":{},"id":"03887d0e-da24-49ca-9bd8-9452fd666b3c"},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[],"id":"e7aeb2f2-12c5-492a-a821-384b030b4a68"}]} diff --git a/tests/test_ase_interface/test_quasiharmonic_ase_mace.py b/tests/test_ase_interface/test_quasiharmonic_ase_mace.py index ba1a3748..c5594ac7 100644 --- a/tests/test_ase_interface/test_quasiharmonic_ase_mace.py +++ b/tests/test_ase_interface/test_quasiharmonic_ase_mace.py @@ -55,7 +55,7 @@ def test_calc_phonons(self): ) thermal_properties_dict = workflow.get_thermal_properties( temperatures=[100, 500], - output_keys=["temperatures", "volumes"], + output_keys=["free_energy", "temperatures", "volumes"], quantum_mechanical=True, ) temperatures_qh_qm, volumes_qh_qm = ( @@ -64,7 +64,7 @@ def test_calc_phonons(self): ) thermal_properties_dict = workflow.get_thermal_properties( temperatures=[100, 500], - output_keys=["temperatures", "volumes"], + output_keys=["free_energy", "temperatures", "volumes"], quantum_mechanical=False, ) temperatures_qh_cl, volumes_qh_cl = ( diff --git a/tests/test_ase_interface/test_quasiharmonic_ase_matgl.py b/tests/test_ase_interface/test_quasiharmonic_ase_matgl.py index d319096c..9f4029ef 100644 --- a/tests/test_ase_interface/test_quasiharmonic_ase_matgl.py +++ b/tests/test_ase_interface/test_quasiharmonic_ase_matgl.py @@ -54,7 +54,7 @@ def test_calc_phonons(self): ) thermal_properties_dict = workflow.get_thermal_properties( temperatures=[100, 500], - output_keys=["temperatures", "volumes"], + output_keys=["free_energy", "temperatures", "volumes"], quantum_mechanical=True, ) temperatures_qh_qm, volumes_qh_qm = ( @@ -63,7 +63,7 @@ def test_calc_phonons(self): ) thermal_properties_dict = workflow.get_thermal_properties( temperatures=[100, 500], - output_keys=["temperatures", "volumes"], + output_keys=["free_energy", "temperatures", "volumes"], quantum_mechanical=False, ) temperatures_qh_cl, volumes_qh_cl = ( diff --git a/tests/test_quasiharmonic_ase_emt.py b/tests/test_quasiharmonic_ase_emt.py index 3b2074ad..6ff7dbc2 100644 --- a/tests/test_quasiharmonic_ase_emt.py +++ b/tests/test_quasiharmonic_ase_emt.py @@ -39,7 +39,7 @@ def test_calc_phonons(self): ) thermal_properties_dict = workflow.get_thermal_properties( temperatures=[100, 1000], - output_keys=["temperatures", "volumes"], + output_keys=["free_energy", "temperatures", "volumes"], quantum_mechanical=True, ) temperatures_qh_qm, volumes_qh_qm = ( @@ -48,7 +48,7 @@ def test_calc_phonons(self): ) thermal_properties_dict = workflow.get_thermal_properties( temperatures=[100, 1000], - output_keys=["temperatures", "volumes"], + output_keys=["free_energy", "temperatures", "volumes"], quantum_mechanical=False, ) temperatures_qh_cl, volumes_qh_cl = ( diff --git a/tests/test_quasiharmonic_lammps.py b/tests/test_quasiharmonic_lammps.py index 47e1a36a..30ccc680 100644 --- a/tests/test_quasiharmonic_lammps.py +++ b/tests/test_quasiharmonic_lammps.py @@ -79,7 +79,7 @@ def test_calc_phonons(self): self.assertTrue(tp_collect_dict["volumes"][0] > 66.7) thermal_properties_dict = workflow.get_thermal_properties( temperatures=[100, 1000], - output_keys=["temperatures", "volumes"], + output_keys=["free_energy", "temperatures", "volumes"], quantum_mechanical=True, ) temperatures_qh_qm, volumes_qh_qm = ( @@ -88,7 +88,7 @@ def test_calc_phonons(self): ) thermal_properties_dict = workflow.get_thermal_properties( temperatures=[100, 1000], - output_keys=["temperatures", "volumes"], + output_keys=["free_energy", "temperatures", "volumes"], quantum_mechanical=False, ) temperatures_qh_cl, volumes_qh_cl = ( diff --git a/tests/test_quasiharmonic_lammps_functional.py b/tests/test_quasiharmonic_lammps_functional.py index a8adf9df..85da514f 100644 --- a/tests/test_quasiharmonic_lammps_functional.py +++ b/tests/test_quasiharmonic_lammps_functional.py @@ -104,7 +104,7 @@ def test_calc_phonons(self): fit_type="polynomial", fit_order=3, temperatures=[100, 1000], - output_keys=["free_energy", "temperatures", "volumes"], + output_keys=["free_energy", "free_energy", "temperatures", "volumes"], quantum_mechanical=True, ) temperatures_qh_qm, volumes_qh_qm = ( @@ -119,7 +119,7 @@ def test_calc_phonons(self): fit_type="polynomial", fit_order=3, temperatures=[100, 1000], - output_keys=["temperatures", "volumes"], + output_keys=["free_energy", "temperatures", "volumes"], quantum_mechanical=False, ) temperatures_qh_cl, volumes_qh_cl = (