Internal flow¶
Introduction¶
The module internalflow
contains functions related to fluid flow inside circular
pipes/tubes and annular spaces. It contains methods to compute:
Nusselt number
Entry length, friction factor, and pressure drop and other quantities
How to use
It is recommended that the module be imported
as from pychemengg import internalflow as intflow
The following examples demonstrate how the module internalflow` can be used to solve heat transfer problems.
Examples¶
Example 1: Internal flow circular tube, entry lengths
¶
Example 1.
Engine oil is to be cooled from 100 to 80 C by passing through
a tube maintained at a uniform surface temperature of 40 C. Oil flows
at a velocity of 0.03 ms/. Tube inner diameter is 2 cm. What is the
desired tube length. Ans: 2.67 m
# EXAMPLE 1 from pychemengg.heattransfer import internalflow as intflow import math # Identify properties at mean buld fluid temp = (100+80)/2. # All units are in SI system density = 846 specificheat = 2176 kinematicviscosity=2.81e-5 thermalconductivity = 0.138 viscosity = kinematicviscosity * density velocity = 0.03 diameter = 2e-2 # Model the tube as CircularTube from module internalflow tube=intflow.CircularTube() # Note, do not use () after CircularTube # To use correlations in internalflow, Reynolds number and Prandtl number is needed # This is provided in module 'commonmethods' from pychemengg.heattransfer import commonmethods as hcm Re = hcm.calc_Re(characteristic_length=2e-2, velocity=velocity, density=density, viscosity=viscosity) Pr = hcm.calc_Pr(viscosity=kinematicviscosity*density, specificheat=specificheat, thermalconductivity=thermalconductivity) # Print Re to see whether flow is laminar or turbulent print(f"Reynolds number = {Re: 0.0f}") # Re = 21, which is < 2300 and flow is laminar # NOTE: # The user needs to examine intermediate results and accordingly # select the path forward. # Now check if flow is developed or not. # Use correlation for laminar flow. thermalentrylength = tube.thermal_entrylength_laminar(Re=Re, Pr=Pr, diameter=diameter) print(f"Thermal entry length = {thermalentrylength}") hydrolength = tube.hydrodynamic_entrylength_laminar(Re=Re, diameter=diameter) print(f"Hydrodynamic entry length = {hydrolength}") # hydrolength = 0.021 m, which means flow should be developed hydrodynamically. # thermalentrylength = 8 m, and since tube length is not known, # it is not feasible to conclude that the flow is thermally developed. # Therefore, thermally developing flow relation should be used to find Nu. # The following method can be used. # Nu_thermallydeveloping_laminar_edwards(Pr=None, length=None, diameter=None). # This requires 'length' as input, and this is precisely what has to be # computed. This indicates a function should be created that takes 'length' # as input and returns some 'equation' that can be solved for 'length' # Create function # Note that other variables needed such as Pr, diameter are not part of # function definition below. Based on Python variable 'scope' the function # is able to reach out to access these other variable. def func(length_guess): Nu = tube.Nu_thermallydeveloping_laminar_edwards(Re=Re, Pr=Pr, length=length_guess, diameter=diameter) # What equation can be formulated to return via this function # so that 'length' can be computed. # Enery balance can be used # change in internal energy = Energy gained via convection # m Cp deltaT_internalenergy = h A delta T_conv # These deltaTs are not the same # deltaT_internalenergy = In - out # deltaT_conv = LMTD # Internal energy change function is in module commonmethods # hcm.calc_internalenergychange(mass=mass, specificheat=specificheat, deltaT=deltaT) areacrosssection = math.pi/4 * diameter**2 massflowrate = density * velocity * areacrosssection rate_deltainternalenergy = hcm.calc_internalenergychange(mass=massflowrate, specificheat=specificheat, deltaT=100-80) h = Nu*thermalconductivity/diameter deltaT1 = 100-40 deltaT2 = 80-40 deltaT_conv = hcm.calc_LMTD(deltaT1=deltaT1, deltaT2=deltaT2) heatrate_conv = h * (math.pi * diameter * length_guess) * (deltaT_conv) equation = rate_deltainternalenergy - heatrate_conv return equation from scipy.optimize import fsolve guess_length = 1 solution = fsolve(func, guess_length) print(f"Length of tube needed = {solution[0]: 0.2f} m") # Notice that L = 2.67 < 8, thus the original assumption # of using equation of Nu for thermally developing flow was correct # PRINTED OUTPUT Length of tube needed = 2.67 m