Source code for thermosteam._thermal_condition

# -*- coding: utf-8 -*-
# BioSTEAM: The Biorefinery Simulation and Techno-Economic Analysis Modules
# Copyright (C) 2020-2023, Yoel Cortes-Pena <yoelcortes@gmail.com>
# 
# This module is under the UIUC open-source license. See 
# github.com/BioSTEAMDevelopmentGroup/biosteam/blob/master/LICENSE.txt
# for license details.
"""
"""
from .exceptions import InfeasibleRegion

__all__ = ('ThermalCondition',)

[docs] class ThermalCondition: """ Create a ThermalCondition object that contains temperature and pressure values. Parameters ---------- T : float Temperature [K]. P : float Pressure [Pa]. """ __slots__ = ('_T', '_P') def __init__(self, T, P): self.T = T self.P = P @property def T(self): """[float] Temperature in Kelvin.""" return self._T @T.setter def T(self, T): T = float(T) if T < 0.: raise InfeasibleRegion('negative temperature') self._T = T @property def P(self): """[float] Pressure in Pascal.""" return self._P @P.setter def P(self, P): P = float(P) if P < 0.: raise InfeasibleRegion('negative pressure') self._P = P
[docs] def in_equilibrium(self, other): """Return whether thermal condition is in equilibrium with another (i. e. same temperature and pressure).""" return abs(self._T - other._T) < 1e-12 and abs(self._P - other._P) < 1e-12
[docs] def copy(self): """Return a copy.""" return self.__class__(self._T, self._P)
[docs] def copy_like(self, other): """Copy the specifications of another ThermalCondition object.""" self._T = other._T self._P = other._P
def __iter__(self): return iter((self._T, self._P)) def __repr__(self): return f"{type(self).__name__}(T={self.T:.2f}, P={self.P:.6g})"
class MockThermalCondition: __slots__ = () def in_equilibrium(self, other): return False mock_thermal_condition = MockThermalCondition()