Source code for thermochem.psicrometry

from __future__ import division
from __future__ import absolute_import
from .iapws import Water

# Water at triple point
pt = 612
Tt = 273.16


[docs]class MoistAir(object): """ Class that models a moist gas. The computations in this class are a bit tricky because the enthalpy computations for steam far from atmospheric pressure using the bcura data have severe deviations. Considering water an ideal gas is a too strong assumption. This means that water data is computed using the IAPWS data for water an steam. The trickiest part comes with the fact that the enthalpy reference for the IAPWS tables is the water's triple point when the enthalpy reference for the bcura tables is the absolute zero. The IAPWS reference is the leading one. MoistAir does not inherit from Mixture because of this. """ def __init__(self, gas): self.moist = Water() (self.water, self.qwater) = gas['H2O'] if self.water is None: raise ValueError("No water in this gas") gas.delete('H2O') self.gas = gas # amount of gas (in case it is not 100-qwater) self.qgas = 0 for e in self.gas: self.qgas += e[1] self.w = self.water.mm / self.gas.mm * self.qwater / self.qgas
[docs] def phi(self, p, T): """ Relative moisture given pressure and temperature. """ ya = self.qgas / (self.qgas + self.qwater) return self.gas.mm * ya * p * self.w / (self.water.mm * self.moist.psat(T))
[docs] def wet_bulb_T(self, p): """ Wet bulb temperature for a given pressure """ yw = self.qwater / (self.qgas + self.qwater) return self.moist.Tsat(yw * p)
def h(self, p, T): raise NotImplementedError def __repr__(self): return "<Moist Gas>:\n Gas:\n" + self.gas.__repr__() def __unicode__(self): return u"<Moist Gas>:\n Gas:\n" + self.gas.__unicode__()