Source code for ht.conv_external

'''Chemical Engineering Design Library (ChEDL). Utilities for process modeling.
Copyright (C) 2016, Caleb Bell <Caleb.Andrew.Bell@gmail.com>

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
'''

from math import exp

__all__ = ['Nu_cylinder_Zukauskas', 'Nu_cylinder_Churchill_Bernstein',
           'Nu_cylinder_Sanitjai_Goldstein', 'Nu_cylinder_Fand',
           'Nu_cylinder_Perkins_Leppert_1964',
           'Nu_cylinder_Perkins_Leppert_1962', 'Nu_cylinder_Whitaker',
           'Nu_cylinder_McAdams',
           'Nu_external_cylinder',
           'Nu_external_cylinder_methods',
           'Nu_horizontal_plate_laminar_Baehr',
           'Nu_horizontal_plate_laminar_Churchill_Ozoe',
           'Nu_horizontal_plate_turbulent_Schlichting',
           'Nu_horizontal_plate_turbulent_Kreith',
           'Nu_external_horizontal_plate',
           'Nu_external_horizontal_plate_methods',
           'LAMINAR_TRANSITION_HORIZONTAL_PLATE', 'conv_horizontal_plate_methods',
           ]

### Single Cylinders in Crossflow


[docs]def Nu_cylinder_Zukauskas(Re, Pr, Prw=None): r'''Calculates Nusselt number for crossflow across a single tube at a specified Re. Method from [1]_, also shown without modification in [2]_. This method applies to both the laminar and turbulent regimes. .. math:: Nu_{D}=CRe^{m}Pr^{n}\left(\frac{Pr}{Pr_s}\right)^{1/4} Parameters ---------- Re : float Reynolds number with respect to cylinder diameter, [-] Pr : float Prandtl number at free stream temperature [-] Prw : float, optional Prandtl number at wall temperature, [-] Returns ------- Nu : float Nusselt number with respect to cylinder diameter, [-] Notes ----- If Prandtl number at wall are not provided, the Prandtl number correction is not used and left to an outside function. n is 0.37 if Pr <= 10; otherwise n is 0.36. C and m are from the following table. If Re is outside of the ranges shown, the nearest range is used blindly. +---------+-------+-----+ | Re | C | m | +=========+=======+=====+ | 1-40 | 0.75 | 0.4 | +---------+-------+-----+ | 40-1E3 | 0.51 | 0.5 | +---------+-------+-----+ | 1E3-2E5 | 0.26 | 0.6 | +---------+-------+-----+ | 2E5-1E6 | 0.076 | 0.7 | +---------+-------+-----+ Examples -------- Example 7.3 in [2]_, matches. >>> Nu_cylinder_Zukauskas(7992, 0.707, 0.69) 50.523612661934386 References ---------- .. [1] Zukauskas, A. Heat transfer from tubes in crossflow. In T.F. Irvine, Jr. and J. P. Hartnett, editors, Advances in Heat Transfer, volume 8, pages 93-160. Academic Press, Inc., New York, 1972. .. [2] Bergman, Theodore L., Adrienne S. Lavine, Frank P. Incropera, and David P. DeWitt. Introduction to Heat Transfer. 6E. Hoboken, NJ: Wiley, 2011. ''' if Re <= 40: c, m = 0.75, 0.4 elif Re < 1E3: c, m = 0.51, 0.5 elif Re < 2E5: c, m = 0.26, 0.6 else: c, m = 0.076, 0.7 if Pr <= 10.0: n = 0.37 else: n = 0.36 Nu = c*Re**m*Pr**n if Prw is not None: Nu = Nu*(Pr/Prw)**0.25 return Nu
[docs]def Nu_cylinder_Churchill_Bernstein(Re, Pr): r'''Calculates Nusselt number for crossflow across a single tube at a specified `Re` and `Pr`, both evaluated at the film temperature. No other wall correction is necessary for this formulation. Method is shown without modification in [2]_ and many other texts. .. math:: Nu_D = 0.3 + \frac{0.62 Re_D^{0.5} Pr^{1/3}}{[1 + (0.4/Pr)^{2/3} ]^{0.25}}\left[1 + \left(\frac{Re_D}{282000}\right)^{5/8}\right]^{0.8} Parameters ---------- Re : float Reynolds number with respect to cylinder diameter, [-] Pr : float Prandtl number at film temperature, [-] Returns ------- Nu : float Nusselt number with respect to cylinder diameter, [-] Notes ----- May underestimate heat transfer in some cases, as it the formula is described in [1]_ as "appears to provide a lower bound for RePr > 0.4". An alternate exponent for a smaller range is also presented in [1]_. This method applies to both the laminar and turbulent regimes. Examples -------- Example 7.3 in [2]_, matches. >>> Nu_cylinder_Churchill_Bernstein(6071, 0.7) 40.63708594124974 References ---------- .. [1] Churchill, S. W., and M. Bernstein. "A Correlating Equation for Forced Convection From Gases and Liquids to a Circular Cylinder in Crossflow." Journal of Heat Transfer 99, no. 2 (May 1, 1977): 300-306. doi:10.1115/1.3450685. .. [2] Bergman, Theodore L., Adrienne S. Lavine, Frank P. Incropera, and David P. DeWitt. Introduction to Heat Transfer. 6E. Hoboken, NJ: Wiley, 2011. ''' return 0.3 + (0.62*Re**0.5*Pr**(1/3.))/(1 + (0.4/Pr)**(2/3.))**0.25*( 1 +(Re/282000.)**(0.625))**0.8
[docs]def Nu_cylinder_Sanitjai_Goldstein(Re, Pr): r'''Calculates Nusselt number for crossflow across a single tube at a specified `Re` and `Pr`, both evaluated at the film temperature. No other wall correction is necessary for this formulation. Method is the most recent implemented here and believed to be more accurate than other formulations available. .. math:: Nu = 0.446Re^{0.5} Pr^{0.35} + 0.528\left[(6.5\exp(Re/5000))^{-5} + (0.031Re^{0.8})^{-5}\right]^{-1/5}Pr^{0.42} Parameters ---------- Re : float Reynolds number with respect to cylinder diameter, [-] Pr : float Prandtl number at film temperature, [-] Returns ------- Nu : float Nusselt number with respect to cylinder diameter, [-] Notes ----- Developed with test results for water, mixtures of ethylene glycol and water, and air (Pr = 0.7 to 176). Re range from 2E3 to 9E4. Also presents results for local heat transfer coefficients. This method applies to both the laminar and turbulent regimes. Examples -------- >>> Nu_cylinder_Sanitjai_Goldstein(6071, 0.7) 40.38327083519522 References ---------- .. [1] Sanitjai, S., and R. J. Goldstein. "Forced Convection Heat Transfer from a Circular Cylinder in Crossflow to Air and Liquids." International Journal of Heat and Mass Transfer 47, no. 22 (October 2004): 4795-4805. doi:10.1016/j.ijheatmasstransfer.2004.05.012. ''' # Interesting numerical issue: # The power of the -5 exp Re term is moved inside the exponential to # avoid overflow errors # This occurs easily with a large diameter cylinder (such as a vessel) return 0.446*Re**0.5*Pr**0.35 + 0.528*((6.5**-5*exp(-5*Re/5000.)) + (0.031*Re**0.8)**-5)**-0.2*Pr**0.42
[docs]def Nu_cylinder_Fand(Re, Pr): r'''Calculates Nusselt number for crossflow across a single tube at a specified `Re` and `Pr`, both evaluated at the film temperature. No other wall correction is necessary for this formulation. Also shown in [2]_. .. math:: Nu = (0.35 + 0.34Re^{0.5} + 0.15Re^{0.58})Pr^{0.3} Parameters ---------- Re : float Reynolds number with respect to cylinder diameter, [-] Pr : float Prandtl number at film temperature, [-] Returns ------- Nu : float Nusselt number with respect to cylinder diameter, [-] Notes ----- Developed with test results for water, and Re from 1E4 to 1E5, but also compared with other data in the literature. Claimed validity of Re from 1E-1 to 1E5. This method applies to both the laminar and turbulent regimes. Examples -------- >>> Nu_cylinder_Fand(6071, 0.7) 45.19984325481126 References ---------- .. [1] Fand, R. M. "Heat Transfer by Forced Convection from a Cylinder to Water in Crossflow." International Journal of Heat and Mass Transfer 8, no. 7 (July 1, 1965): 995-1010. doi:10.1016/0017-9310(65)90084-0. .. [2] Sanitjai, S., and R. J. Goldstein. "Forced Convection Heat Transfer from a Circular Cylinder in Crossflow to Air and Liquids." International Journal of Heat and Mass Transfer 47, no. 22 (October 2004): 4795-4805. doi:10.1016/j.ijheatmasstransfer.2004.05.012. ''' return (0.35 + 0.34*Re**0.5 + 0.15*Re**0.58)*Pr**0.3
[docs]def Nu_cylinder_McAdams(Re, Pr): r'''Calculates Nusselt number for crossflow across a single tube at a specified `Re` and `Pr`, both evaluated at the film temperature. No other wall correction is necessary for this formulation. Also shown in [2]_. .. math:: Nu = (0.35 + 0.56 Re^{0.52})Pr^{0.3} Parameters ---------- Re : float Reynolds number with respect to cylinder diameter, [-] Pr : float Prandtl number at film temperature, [-] Returns ------- Nu : float Nusselt number with respect to cylinder diameter, [-] Notes ----- Developed with very limited test results for water only. This method applies to both the laminar and turbulent regimes. Examples -------- >>> Nu_cylinder_McAdams(6071, 0.7) 46.98179235867934 References ---------- .. [1] McAdams, William Henry. Heat Transmission. 3E. Malabar, Fla: Krieger Pub Co, 1985. .. [2] Fand, R. M. "Heat Transfer by Forced Convection from a Cylinder to Water in Crossflow." International Journal of Heat and Mass Transfer 8, no. 7 (July 1, 1965): 995-1010. doi:10.1016/0017-9310(65)90084-0. ''' return (0.35 + 0.56*Re**0.52)*Pr**0.3
[docs]def Nu_cylinder_Whitaker(Re, Pr, mu=None, muw=None): r'''Calculates Nusselt number for crossflow across a single tube as shown in [1]_ at a specified `Re` and `Pr`, both evaluated at the free stream temperature. Recommends a viscosity exponent correction of 0.25, which is applied only if provided. Also shown in [2]_. .. math:: Nu_D = (0.4 Re_D^{0.5} + 0.06Re_D^{2/3})Pr^{0.4} \left(\frac{\mu}{\mu_w}\right)^{0.25} Parameters ---------- Re : float Reynolds number with respect to cylinder diameter, [-] Pr : float Prandtl number at free stream temperature, [-] mu : float, optional Viscosity of fluid at the free stream temperature [Pa*s] muw : float, optional Viscosity of fluid at the wall temperature [Pa*s] Returns ------- Nu : float Nusselt number with respect to cylinder diameter, [-] Notes ----- Developed considering data from 1 to 1E5 Re, 0.67 to 300 Pr, and range of viscosity ratios from 0.25 to 5.2. Found experimental data to generally agree with it within 25%. This method applies to both the laminar and turbulent regimes. Examples -------- >>> Nu_cylinder_Whitaker(6071, 0.7) 45.94527461589126 References ---------- .. [1] Whitaker, Stephen. "Forced Convection Heat Transfer Correlations for Flow in Pipes, Past Flat Plates, Single Cylinders, Single Spheres, and for Flow in Packed Beds and Tube Bundles." AIChE Journal 18, no. 2 (March 1, 1972): 361-371. doi:10.1002/aic.690180219. .. [2] Sanitjai, S., and R. J. Goldstein. "Forced Convection Heat Transfer from a Circular Cylinder in Crossflow to Air and Liquids." International Journal of Heat and Mass Transfer 47, no. 22 (October 2004): 4795-4805. doi:10.1016/j.ijheatmasstransfer.2004.05.012. ''' Nu = (0.4*Re**0.5 + 0.06*Re**(2/3.))*Pr**0.3 if mu is not None and muw is not None: Nu *= (mu/muw)**0.25 return Nu
[docs]def Nu_cylinder_Perkins_Leppert_1962(Re, Pr, mu=None, muw=None): r'''Calculates Nusselt number for crossflow across a single tube as shown in [1]_ at a specified `Re` and `Pr`, both evaluated at the free stream temperature. Recommends a viscosity exponent correction of 0.25, which is applied only if provided. Also shown in [2]_. .. math:: Nu = \left[0.30Re^{0.5} + 0.10Re^{0.67}\right]Pr^{0.4} \left(\frac{\mu}{\mu_w}\right)^{0.25} Parameters ---------- Re : float Reynolds number with respect to cylinder diameter, [-] Pr : float Prandtl number at free stream temperature, [-] mu : float, optional Viscosity of fluid at the free stream temperature [Pa*s] muw : float, optional Viscosity of fluid at the wall temperature [Pa*s] Returns ------- Nu : float Nusselt number with respect to cylinder diameter, [-] Notes ----- Considered results with Re from 40 to 1E5, Pr from 1 to 300; and viscosity ratios of 0.25 to 4. This method applies to both the laminar and turbulent regimes. Examples -------- >>> Nu_cylinder_Perkins_Leppert_1962(6071, 0.7) 49.97164291175499 References ---------- .. [1] Perkins, Jr., H. C., and G. Leppert. "Forced Convection Heat Transfer From a Uniformly Heated Cylinder." Journal of Heat Transfer 84, no. 3 (August 1, 1962): 257-261. doi:10.1115/1.3684359. .. [2] Sanitjai, S., and R. J. Goldstein. "Forced Convection Heat Transfer from a Circular Cylinder in Crossflow to Air and Liquids." International Journal of Heat and Mass Transfer 47, no. 22 (October 2004): 4795-4805. doi:10.1016/j.ijheatmasstransfer.2004.05.012. ''' Nu = (0.30*Re**0.5 + 0.10*Re**0.67)*Pr**0.4 if mu is not None and muw is not None: Nu *= (mu/muw)**0.25 return Nu
[docs]def Nu_cylinder_Perkins_Leppert_1964(Re, Pr, mu=None, muw=None): r'''Calculates Nusselt number for crossflow across a single tube as shown in [1]_ at a specified `Re` and `Pr`, both evaluated at the free stream temperature. Recommends a viscosity exponent correction of 0.25, which is applied only if provided. Also shown in [2]_. .. math:: Nu = \left[0.31Re^{0.5} + 0.11Re^{0.67}\right]Pr^{0.4} \left(\frac{\mu}{\mu_w}\right)^{0.25} Parameters ---------- Re : float Reynolds number with respect to cylinder diameter, [-] Pr : float Prandtl number at free stream temperature, [-] mu : float, optional Viscosity of fluid at the free stream temperature [Pa*s] muw : float, optional Viscosity of fluid at the wall temperature [Pa*s] Returns ------- Nu : float Nusselt number with respect to cylinder diameter, [-] Notes ----- Considers new data since `Nu_cylinder_Perkins_Leppert_1962`, Re from 2E3 to 1.2E5, Pr from 1 to 7, and surface to bulk temperature differences of 11 to 66. This method applies to both the laminar and turbulent regimes. Examples -------- >>> Nu_cylinder_Perkins_Leppert_1964(6071, 0.7) 53.61767038619986 References ---------- .. [1] Perkins Jr., H. C., and G. Leppert. "Local Heat-Transfer Coefficients on a Uniformly Heated Cylinder." International Journal of Heat and Mass Transfer 7, no. 2 (February 1964): 143-158. doi:10.1016/0017-9310(64)90079-1. .. [2] Sanitjai, S., and R. J. Goldstein. "Forced Convection Heat Transfer from a Circular Cylinder in Crossflow to Air and Liquids." International Journal of Heat and Mass Transfer 47, no. 22 (October 2004): 4795-4805. doi:10.1016/j.ijheatmasstransfer.2004.05.012. ''' Nu = (0.31*Re**0.5 + 0.11*Re**0.67)*Pr**0.4 if mu is not None and muw is not None: Nu *= (mu/muw)**0.25 return Nu
conv_external_cylinder_turbulent_methods = { 'Zukauskas': (Nu_cylinder_Zukauskas, ('Re', 'Pr', 'Prw')), 'Churchill-Bernstein': (Nu_cylinder_Churchill_Bernstein, ('Re', 'Pr')), 'Sanitjai-Goldstein': (Nu_cylinder_Sanitjai_Goldstein, ('Re', 'Pr')), 'Fand': (Nu_cylinder_Fand, ('Re', 'Pr')), 'McAdams': (Nu_cylinder_McAdams, ('Re', 'Pr')), 'Whitaker': (Nu_cylinder_Whitaker, ('Re', 'Pr', 'mu', 'muw')), 'Perkins-Leppert 1962': (Nu_cylinder_Perkins_Leppert_1962, ('Re', 'Pr', 'mu', 'muw')), 'Perkins-Leppert 1964': (Nu_cylinder_Perkins_Leppert_1964, ('Re', 'Pr', 'mu', 'muw')), } conv_external_cylinder_turbulent_methods_ranked = ['Sanitjai-Goldstein', 'Churchill-Bernstein', 'Zukauskas', 'Whitaker', 'Perkins-Leppert 1964', 'McAdams', 'Fand', 'Perkins-Leppert 1962'] conv_external_cylinder_methods = conv_external_cylinder_turbulent_methods.copy() _missing_external_cylinder_method = "Correlation name not recognized; the availble methods are %s." %(list(conv_external_cylinder_methods.keys()))
[docs]def Nu_external_cylinder_methods(Re, Pr, Prw=None, mu=None, muw=None, check_ranges=True): r'''This function returns a list of correlation names for forced convection over an external cylinder. The preferred method 'Sanitjai-Goldstein'. Parameters ---------- Re : float Reynolds number of fluid with respect to cylinder diameter, [-] Pr : float Prandtl number at either the free stream or wall temperature depending on the method, [-] Prw : float, optional Prandtl number at wall temperature, [-] mu : float, optional Viscosity of fluid at the free stream temperature [Pa*s] muw : float, optional Viscosity of fluid at the wall temperature [Pa*s] check_ranges : bool, optional Whether or not to return only correlations suitable for the provided data, [-] Returns ------- methods : list[str] List of methods which can be used to calculate `Nu` with the given inputs Examples -------- >>> Nu_external_cylinder_methods(0.72, 1E7)[0] 'Sanitjai-Goldstein' ''' methods = ['Sanitjai-Goldstein', 'Churchill-Bernstein', 'Fand', 'McAdams'] if Prw is not None: methods.append('Zukauskas') if mu is not None and muw is not None: methods.extend(['Whitaker', 'Perkins-Leppert 1964', 'Perkins-Leppert 1962']) return methods
[docs]def Nu_external_cylinder(Re, Pr, Prw=None, mu=None, muw=None, Method=None): r'''Calculates Nusselt number for crossflow across a single tube at a specified `Re` and `Pr` according to the specified method. Optional parameters are `Prw`, `mu`, and `muw`. This function has eight methods available. The 'Sanitjai-Goldstein' method is the default. The front of the cyliner is normally always in a laminar regime; whereas the back is turbulent. The proportions change with `Re`; all correlations take this into account. For this heat transfer case, there is no separation between laminar and turbulent methods. Parameters ---------- Re : float Reynolds number of fluid with respect to cylinder diameter, [-] Pr : float Prandtl number at either the free stream or wall temperature depending on the method, [-] Prw : float, optional Prandtl number at wall temperature, [-] mu : float, optional Viscosity of fluid at the free stream temperature [Pa*s] muw : float, optional Viscosity of fluid at the wall temperature [Pa*s] Returns ------- Nu : float Nusselt number with respect to cylinder diameter, [-] Other Parameters ---------------- Method : string, optional A string of the function name to use, as in the dictionary conv_external_cylinder_methods. Notes ----- A comparison of the methods for various Prandtl and Reynolds number ranges is plotted below. .. plot:: plots/Nu_external_cylinder.py Examples -------- >>> Nu_external_cylinder(6071, 0.7) 40.38327083519522 ''' Method2 = 'Sanitjai-Goldstein' if Method is None else Method if Method2 == 'Sanitjai-Goldstein': return Nu_cylinder_Sanitjai_Goldstein(Re=Re, Pr=Pr) elif Method2 == 'Churchill-Bernstein': return Nu_cylinder_Sanitjai_Goldstein(Re=Re, Pr=Pr) elif Method2 == 'Fand': return Nu_cylinder_Fand(Re=Re, Pr=Pr) elif Method2 == 'McAdams': return Nu_cylinder_McAdams(Re=Re, Pr=Pr) elif Method2 == 'Zukauskas': return Nu_cylinder_Zukauskas(Re=Re, Pr=Pr, Prw=Prw) elif Method2 == 'Whitaker': return Nu_cylinder_Whitaker(Re=Re, Pr=Pr, mu=mu, muw=muw) elif Method2 == 'Perkins-Leppert 1962': return Nu_cylinder_Perkins_Leppert_1962(Re=Re, Pr=Pr, mu=mu, muw=muw) elif Method2 == 'Perkins-Leppert 1964': return Nu_cylinder_Perkins_Leppert_1964(Re=Re, Pr=Pr, mu=mu, muw=muw) else: raise ValueError(_missing_external_cylinder_method)
# Horizontal Plate in crossflow
[docs]def Nu_horizontal_plate_laminar_Baehr(Re, Pr): r'''Calculates Nusselt number for laminar flow across an **isothermal** flat plate at a specified `Re` and `Pr`, both evaluated at the bulk temperature. No other wall correction is necessary for this formulation. Four different equations are used for different Prandtl number ranges. The equation for the common Prandtl number range is also recommended in [2]_ and [3]_. if :math:`\text{Pr} < 0.005`: .. math:: \text{Nu}_L = 1.128\text{Re}^{0.5}\text{Pr}^{0.5} if :math:`0.005 < \text{Pr} < 0.05`: .. math:: \text{Nu}_L = 1.0\text{Re}^{0.5}\text{Pr}^{0.5} if :math:`0.6 < \text{Pr} < 10`: .. math:: \text{Nu}_L = 0.664\text{Re}^{0.5}\text{Pr}^{1/3} if :math:`\text{Pr} > 10`: .. math:: \text{Nu}_L = 0.678\text{Re}^{0.5}\text{Pr}^{1/3} Parameters ---------- Re : float Reynolds number with respect to plate length and bulk fluid properties, [-] Pr : float Prandtl number at bulk temperature, [-] Returns ------- Nu : float Nusselt number with respect to plate length and bulk temperature, [-] Notes ----- Does not take into account the impact of free convection, which can increase the convection substantially. Examples -------- >>> Nu_horizontal_plate_laminar_Baehr(1e5, 0.7) 186.4378528752262 References ---------- .. [1] Baehr, Hans Dieter, and Karl Stephan. Heat and Mass Transfer. Springer, 2013. .. [2] Bergman, Theodore L., Adrienne S. Lavine, Frank P. Incropera, and David P. DeWitt. Introduction to Heat Transfer. 6E. Hoboken, NJ: Wiley, 2011. .. [3] Gesellschaft, V. D. I., ed. VDI Heat Atlas. 2nd ed. 2010 edition. Berlin ; New York: Springer, 2010. ''' if Pr < 0.005: return 1.128*(Re*Pr)**0.5 elif Pr < 0.05: return (Re*Pr)**0.5 elif Pr < 10.0: # Equation in VDI handbook, G4 as well return 0.664*Re**0.5*Pr**(1/3.) else: return 0.678*Re**0.5*Pr**(1/3.)
[docs]def Nu_horizontal_plate_laminar_Churchill_Ozoe(Re, Pr): r'''Calculates Nusselt number for laminar flow across an **isothermal** flat plate at a specified `Re` and `Pr`, both evaluated at the bulk temperature. No other wall correction is necessary for this formulation. A single equation covers all Prandtl number ranges. .. math:: Nu_L = \frac{0.6774Re_L^{1/2}Pr^{1/3}}{[1+(0.0468/Pr)^{2/3}]^{1/4}} Parameters ---------- Re : float Reynolds number with respect to plate length and bulk fluid properties, [-] Pr : float Prandtl number at bulk temperature, [-] Returns ------- Nu : float Nusselt number with respect to plate length and bulk temperature, [-] Notes ----- Does not take into account the impact of free convection, which can increase the convection substantially. Examples -------- >>> Nu_horizontal_plate_laminar_Churchill_Ozoe(1e5, 0.7) 183.08600782591418 References ---------- .. [1] Churchill, Stuart W., and Hiroyuki Ozoe. "Correlations for Laminar Forced Convection in Flow Over an Isothermal Flat Plate and in Developing and Fully Developed Flow in an Isothermal Tube." Journal of Heat Transfer 95, no. 3 (August 1, 1973): 416 https://doi.org/10.1115/1.3450078. .. [2] Bergman, Theodore L., Adrienne S. Lavine, Frank P. Incropera, and David P. DeWitt. Introduction to Heat Transfer. 6E. Hoboken, NJ: Wiley, 2011. ''' return (0.6774*Re**(0.5)*Pr**(1/3.) *(1.0 + (0.0468/Pr)**(2.0/3.0))**-0.25 )
[docs]def Nu_horizontal_plate_turbulent_Schlichting(Re, Pr): r'''Calculates Nusselt number for turbulent flow across an **isothermal** flat plate at a specified `Re` and `Pr`, both evaluated at the bulk temperature. The formulation of Schlichting is used, which adds a surface friction term to a formulation from Petukhov and Popov. .. math:: \text{Nu}_L = \frac{0.037\text{Re}_L^{0.8} \text{Pr}} {1 + 2.443\text{Re}_L^{-0.1}(\text{Pr}^{2/3} - 1)} Parameters ---------- Re : float Reynolds number with respect to plate length and bulk fluid properties, [-] Pr : float Prandtl number at bulk temperature, [-] Returns ------- Nu : float Nusselt number with respect to plate length and bulk temperature, [-] Notes ----- Does not take into account the impact of free convection, which can increase the convection substantially. Examples -------- >>> Nu_horizontal_plate_turbulent_Schlichting(1e5, 0.7) 309.620048541267 References ---------- .. [1] Schlichting, H., and Klaus Gersten. Grenzschicht-Theorie. 9th ed. Berlin Heidelberg: Springer-Verlag, 1997. http://www.springer.com/de/book/9783662075548. .. [2] Gesellschaft, V. D. I., ed. VDI Heat Atlas. 2nd ed. 2010 edition. Berlin ; New York: Springer, 2010. ''' num = 0.037*Re**0.8*Pr den = (1.0 + 2.443*Re**-0.1*(Pr**(2.0/3.0) - 1.0)) return num/den
[docs]def Nu_horizontal_plate_turbulent_Kreith(Re, Pr): r'''Calculates Nusselt number for turbulent flow across an **isothermal** flat plate at a specified `Re` and `Pr`, both evaluated at the bulk temperature. The formulation of Kreith is used. .. math:: \text{Nu}_L = 0.036\text{Re}_L^{0.8} \text{Pr}^{1/3} Parameters ---------- Re : float Reynolds number with respect to plate length and bulk fluid properties, [-] Pr : float Prandtl number at bulk temperature, [-] Returns ------- Nu : float Nusselt number with respect to plate length and bulk temperature, [-] Notes ----- Does not take into account the impact of free convection, which can increase the convection substantially. Applies for turbulent flow only. Examples -------- >>> Nu_horizontal_plate_turbulent_Kreith(1.03e6, 0.71) 2074.8740070411122 References ---------- .. [1] Kreith, Frank, Raj Manglik, and Mark Bohn. Principles of Heat Transfer. Cengage, 2010. ''' return 0.036*Pr**(1.0/3.0)*Re**0.8
conv_horizontal_plate_laminar_methods = { 'Baehr': (Nu_horizontal_plate_laminar_Baehr, ('Re', 'Pr')), 'Churchill Ozoe': (Nu_horizontal_plate_laminar_Churchill_Ozoe, ('Re', 'Pr')), } conv_horizontal_plate_turbulent_methods = { 'Schlichting': (Nu_horizontal_plate_turbulent_Schlichting, ('Re', 'Pr')), 'Kreith': (Nu_horizontal_plate_turbulent_Kreith, ('Re', 'Pr')), } conv_horizontal_plate_methods = conv_horizontal_plate_laminar_methods.copy() conv_horizontal_plate_methods.update(conv_horizontal_plate_turbulent_methods) LAMINAR_TRANSITION_HORIZONTAL_PLATE = 5E5
[docs]def Nu_external_horizontal_plate_methods(Re, Pr, L=None, x=None, check_ranges=True): r'''Returns a list of correlation names for calculating Nusselt number for forced convection across a horizontal plate, supporting both laminar and turbulent regimes. Parameters ---------- Re : float Reynolds number with respect to bulk properties and plate length, [-] Pr : float Prandtl number with respect to bulk properties, [-] L : float, optional Length of horizontal plate, [m] x : float, optional Length of horizontal plate for specific calculation distance, [m] check_ranges : bool, optional Whether or not to return only correlations suitable for the provided data, [-] Returns ------- methods : list[str] List of methods which can be used to calculate `Nu` with the given inputs Examples -------- >>> Nu_external_horizontal_plate_methods(Re=1e7, Pr=.7)[0] 'Schlichting' ''' turbulent = Re >= LAMINAR_TRANSITION_HORIZONTAL_PLATE if check_ranges: if turbulent: return ['Schlichting', 'Kreith'] else: return ['Baehr', 'Churchill Ozoe'] else: return ['Baehr', 'Churchill Ozoe', 'Schlichting', 'Kreith']
[docs]def Nu_external_horizontal_plate(Re, Pr, L=None, x=None, Method=None, laminar_method='Baehr', turbulent_method='Schlichting', Re_transition=LAMINAR_TRANSITION_HORIZONTAL_PLATE): r'''This function calculates the heat transfer coefficient for external forced convection along a horizontal plate. Requires at a minimum a flow's Reynolds and Prandtl numbers `Re` and `Pr`. `L` and `x` are not used by any correlations presently, but are included for future support. If no correlation's name is provided as `Method`, the most accurate applicable correlation is selected. Parameters ---------- Re : float Reynolds number with respect to bulk properties and plate length, [-] Pr : float Prandtl number with respect to bulk properties, [-] L : float, optional Length of horizontal plate, [m] x : float, optional Length of horizontal plate for specific calculation distance, [m] Returns ------- Nu : float Nusselt number with respect to plate length, [-] Other Parameters ---------------- Method : string, optional A string of the function name to use, as in the dictionary conv_horizontal_plate_methods laminar_method : str, optional The prefered method for laminar flow, [-] turbulent_method : str, optional The prefered method for turbulent flow, [-] Re_transition : float, optional The transition Reynolds number for laminar changing to turbulent flow, [-] Examples -------- Turbulent example >>> Nu_external_horizontal_plate(Re=1E7, Pr=.7) 11496.952599969829 ''' turbulent = not Re < Re_transition if Method is None: Method2 = turbulent_method if turbulent else laminar_method else: Method2 = Method if Method2 == 'Baehr': return Nu_horizontal_plate_laminar_Baehr(Re=Re, Pr=Pr) elif Method2 == 'Churchill Ozoe': return Nu_horizontal_plate_laminar_Churchill_Ozoe(Re=Re, Pr=Pr) elif Method2 == 'Schlichting': return Nu_horizontal_plate_turbulent_Schlichting(Re=Re, Pr=Pr) elif Method2 == 'Kreith': return Nu_horizontal_plate_turbulent_Kreith(Re=Re, Pr=Pr) else: raise ValueError("Correlation name not recognized; see the " "documentation for the available options.")