Source code for reactord.kinetic.reaction_enthalpy

"""Module to calculate reaction enthalpy."""
from typing import TYPE_CHECKING, Union

import numpy as np
from numpy.typing import NDArray

if TYPE_CHECKING:
    from .kinetic import Kinetic


[docs]def dh_specified( kinetic: "Kinetic", temperature: Union[NDArray[np.float64], float], pressure: Union[NDArray[np.float64], float], ) -> NDArray[np.float64]: """Return the user specified reaction enthalpies. Parameters ---------- kinetic : Kinetic kinetic object temperature : Union[NDArray[np.float64], float] Temperature [K] pressure : Union[NDArray[np.float64], float] Pressure [Pa] Returns ------- NDArray array of enthalpies of reactions set by user. """ dh = np.full( (len(kinetic), np.size(temperature)), fill_value=kinetic._user_r_dhs[:, np.newaxis], ) return dh
[docs]def dh_not_specified( kinetic: "Kinetic", temperature: Union[NDArray[np.float64], float], pressure: Union[NDArray[np.float64], float], ) -> NDArray[np.float64]: """Calculate the reaction enthalpies. Uses standard formation enthalpies and heat capacities to calculate the reaction enthalpies. Parameters ---------- kinetic : Kinetic kinetic object temperature : Union[NDArray[np.float64], float] Temperature [K] pressure : Union[NDArray[np.float64], float] Pressure [Pa] Returns ------- NDArray array of enthalpies of reactions set by methods in mix class. """ corrs = kinetic.mix.formation_enthalpies_correction(temperature, pressure) if np.size(temperature) > 1: corrs = corrs.reshape((len(kinetic.mix), np.size(temperature))) dh = ( kinetic.std_reaction_enthalpies + np.matmul(kinetic.stoichiometry, corrs).T ).T return dh