Source code for cea.technologies.radiators

# -*- coding: utf-8 -*-
"""
heating radiators
"""
from __future__ import division
from scipy.optimize import newton
import math
import numpy as np


__author__ = "Jimeno A. Fonseca"
__copyright__ = "Copyright 2015, Architecture and Building Systems - ETH Zurich"
__credits__ = ["Jimeno A. Fonseca"]
__license__ = "MIT"
__version__ = "0.1"
__maintainer__ = "Daren Thomas"
__email__ = "cea@arch.ethz.ch"
__status__ = "Production"


[docs]def fh(x, mCw0, k2, Qh0, tair, LMRT, nh): Eq = mCw0 * k2 - Qh0 * (k2 / (math.log((x + k2 - tair) / (x - tair)) * LMRT)) ** (nh + 1) return Eq
[docs]def lmrt(tair0, trh0, tsh0): LMRT = (tsh0 - trh0) / math.log((tsh0 - tair0) / (trh0 - tair0)) return LMRT
[docs]def calc_radiator(Qh, tair, Qh0, tair0, tsh0, trh0): nh = 0.3 #radiator constant if Qh > 0: tair = tair + 273 tair0 = tair0 + 273 tsh0 = tsh0 + 273 trh0 = trh0 + 273 mCw0 = Qh0 / (tsh0 - trh0) # minimum LMRT = lmrt(tair0, trh0, tsh0) k1 = 1 / mCw0 k2 = Qh * k1 result = newton(fh, trh0, args=(mCw0, k2, Qh0, tair, LMRT, nh), maxiter=100, tol=0.01) - 273 trh = result.real tsh = trh + k2 mCw = Qh / (tsh - trh) else: mCw = 0 tsh = 0 trh = 0 # return floats with numpy function. Needed when np.vectorize is use to call this function return np.float(tsh), np.float(trh), np.float(mCw) # C, C, W/C
try: # import Numba AOT versions of the functions above, overwriting them from calc_radiator import fh, lmrt except ImportError: # fall back to using the python version print('failed to import from calc_radiator.pyd, falling back to pure python functions') pass