def Ft_aircooler(Thi, Tho, Tci, Tco, Ntp=1, rows=1): r'''Calculates log-mean temperature difference correction factor for a crossflow heat exchanger, as in an Air Cooler. Method presented in [1]_, fit to other's nonexplicit work. Error is < 0.1%. Requires number of rows and tube passes as well as stream temperatures. .. math:: F_T = 1 - \sum_{i=1}^m \sum_{k=1}^n a_{i,k}(1-r_{1,m})^k\sin(2i\arctan R) R = \frac{T_{hi} - T_{ho}}{T_{co}-T_{ci}} r_{1,m} = \frac{\Delta T_{lm}}{T_{hi} - T_{ci}} Parameters ---------- Thi : float Temperature of hot fluid in [K] Tho : float Temperature of hot fluid out [K] Tci : float Temperature of cold fluid in [K] Tco : float Temperature of cold fluid out [K] Ntp : int Number of passes the tubeside fluid will flow through [-] rows : int Number of rows of tubes [-] Returns ------- Ft : float Log-mean temperature difference correction factor [-] Notes ----- This equation assumes that the hot fluid is tubeside, as in the case of air coolers. The model is not symmetric, so ensure to switch around the inputs if using this function for other purposes. This equation appears in [1]_. It has been verified. For some cases, approximations are made to match coefficients with the number of tube passes and rows provided. 16 coefficients are used for each case; 8 cases are considered: * 1 row 1 pass * 2 rows 1 pass * 2 rows 2 passes * 3 rows 1 pass * 3 rows 3 passes * 4 rows 1 pass * 4 rows 2 passes * 4 rows 4 passes Examples -------- >>> Ft_aircooler(Thi=125., Tho=45., Tci=25., Tco=95., Ntp=1, rows=4) 0.5505093604092708 References ---------- .. [1] Roetzel, W., and F. J. L. Nicole. "Mean Temperature Difference for Heat Exchanger Design-A General Approximate Explicit Equation." Journal of Heat Transfer 97, no. 1 (February 1, 1975): 5-8. doi:10.1115/1.3450288 ''' dTlm = LMTD(Thi=Thi, Tho=Tho, Tci=Tci, Tco=Tco) rlm = dTlm / (Thi - Tci) R = (Thi - Tho) / (Tco - Tci) # P = (Tco-Tci)/(Thi-Tci) if Ntp == 1 and rows == 1: coefs = _crossflow_1_row_1_pass elif Ntp == 1 and rows == 2: coefs = _crossflow_2_rows_1_pass elif Ntp == 1 and rows == 3: coefs = _crossflow_3_rows_1_pass elif Ntp == 1 and rows == 4: coefs = _crossflow_4_rows_1_pass elif Ntp == 1 and rows > 4: # A reasonable assumption coefs = _crossflow_4_rows_1_pass elif Ntp == 2 and rows == 2: coefs = _crossflow_2_rows_2_pass elif Ntp == 3 and rows == 3: coefs = _crossflow_3_rows_3_pass elif Ntp == 4 and rows == 4: coefs = _crossflow_4_rows_4_pass elif Ntp > 4 and rows > 4 and Ntp == rows: # A reasonable assumption coefs = _crossflow_4_rows_4_pass elif Ntp == 2 and rows == 4: coefs = _crossflow_4_rows_2_pass else: # A bad assumption, but hey, gotta pick something. coefs = _crossflow_4_rows_2_pass tot = 0 atanR = atan(R) cmps = range(len(coefs)) for k in cmps: x0 = (1. - rlm)**(k + 1.) for i in cmps: tot += coefs[k][i] * x0 * sin(2. * (i + 1.) * atanR) return 1. - tot
def Ft_aircooler(Thi=None, Tho=None, Tci=None, Tco=None, Ntp=1, rows=1): r'''Calculates log-mean temperature difference correction factor for a crossflow heat exchanger, as in an Air Cooler. Method presented in [1]_, fit to other's nonexplicit work. Error is < 0.1%. Requires number of rows and tube passes as well as stream temperatures. .. math:: F_T = 1 - \sum_{i=1}^m \sum_{k=1}^n a_{i,k}(1-r_{1,m})^k\sin(2i\arctan R) R = \frac{T_{hi} - T_{ho}}{T_{co}-T_{ci}} r_{1,m} = \frac{\Delta T_{lm}}{T_{hi} - T_{ci}} Parameters ---------- Thi : float Temperature of hot fluid in [K] Tho : float Temperature of hot fluid out [K] Tci : float Temperature of cold fluid in [K] Tco : float Temperature of cold fluid out [K] Returns ------- Ft : float Log-mean temperature difference correction factor [] Notes ----- This equation assumes that the hot fluid is tubeside, as in the case of air coolers. The model is not symmetric, so ensure to switch around the inputs if using this function for other purposes. This equation appears in [1]_. It has been verified. For some cases, approximations are made to match coefficients with the number of tube passes and rows provided. 16 coefficients are used for each case; 8 cases are considered: * 1 row 1 pass * 2 rows 1 pass * 2 rows 2 passes * 3 rows 1 pass * 3 rows 3 passes * 4 rows 1 pass * 4 rows 2 passes * 4 rows 4 passes Examples -------- Example 1 as in HTFS manual. Example 2 as in [1]_; author rounds to obtain a slightly different result. >>> Ft_aircooler(Thi=93., Tho=52., Tci=35, Tco=54.59, Ntp=2, rows=4) 0.9570456123827129 >>> Ft_aircooler(Thi=125., Tho=45., Tci=25., Tco=95., Ntp=1, rows=4) 0.5505093604092708 References ---------- .. [1] Roetzel, W., and F. J. L. Nicole. "Mean Temperature Difference for Heat Exchanger Design-A General Approximate Explicit Equation." Journal of Heat Transfer 97, no. 1 (February 1, 1975): 5-8. doi:10.1115/1.3450288 ''' dTlm = LMTD(Thi=Thi, Tho=Tho, Tci=Tci, Tco=Tco) rlm = dTlm / (Thi - Tci) R = (Thi - Tho) / (Tco - Tci) # P = (Tco-Tci)/(Thi-Tci) if Ntp == 1 and rows == 1: coefs = _crossflow_1_row_1_pass elif Ntp == 1 and rows == 2: coefs = _crossflow_2_rows_1_pass elif Ntp == 1 and rows == 3: coefs = _crossflow_3_rows_1_pass elif Ntp == 1 and rows == 4: coefs = _crossflow_4_rows_1_pass elif Ntp == 1 and rows > 4: # A reasonable assumption coefs = _crossflow_4_rows_1_pass elif Ntp == 2 and rows == 2: coefs = _crossflow_2_rows_2_pass elif Ntp == 3 and rows == 3: coefs = _crossflow_3_rows_3_pass elif Ntp == 4 and rows == 4: coefs = _crossflow_4_rows_4_pass elif Ntp > 4 and rows > 4 and Ntp == rows: # A reasonable assumption coefs = _crossflow_4_rows_4_pass elif Ntp == 2 and rows == 4: coefs = _crossflow_4_rows_2_pass else: # A bad assumption, but hey, gotta pick something. coefs = _crossflow_4_rows_2_pass tot = 0 atanR = atan(R) for k in range(len(coefs)): for i in range(len(coefs)): tot += coefs[k][i] * (1 - rlm)**(k + 1) * sin(2 * (i + 1) * atanR) return 1 - tot #print Ft_aircooler(Thi=66.82794, Tho=47.52647, Tci=15.4667, Tco=51.5889) # some example? #print [Ft_aircooler(Thi=93., Tho=52., Tci=35, Tco=54.59, Ntp=2, rows=4)] # , 0.957045612383, works, _crossflow_4_rows_2_pass #print [Ft_aircooler(Thi=125., Tho=45., Tci=25., Tco=95., Ntp=1, rows=4)] # , _crossflow_4_rows_1_pass, 0.550509360409, close enough #print [[Ft_aircooler(Thi=125., Tho=80., Tci=25., Tco=95., Ntp=i, rows=j) for i in range(1,6)] for j in range(1, 6)] # , _crossflow_4_rows_1_pass, 0.550509360409, close enough