You are on page 1of 7

12/23/19 9:25 PM C:\Users\Morgan...\CME455Project3Part1.

m 1 of 7

function [combinedResults, numberTubes, numberBaffles, pressureDropTubeSide,


pressureDropShellSide, areaEstimate, baffleSpacing, ds, tubeLength] =
CME455Project3Part1(densityTube, velocityTube, viscosityTube, heatCapacityTube,
thermalConductivityTube, initialTubeLength, dI, dNTinlet, numberPassesTube, do,
velocityShell, viscosityShell, fp, fL, js, thermalConductivityShell, heatCapacityShell,
densityShell, bc, flowrateShell, pT, pCF, cde, allowableVelocity, foulingCoeffShell,
thermalConductivityExchanger, foulingCoeffTube, flowrateTube, dNSinlet,initialTempShell,
finalTempShell, initialTempTube, finalTempTube, xp, runMethod, c, dNToutlet, ftc, fsc,
pc, dNSoutlet, cl, ctp)
%% Part 1 Project 3
%Morgan Walli, Stephen Kietz, Amanda Holbrook, Christina Binkowski
%CME 455 Fall 2019
%December 13, 2019

%% DETERMINEPARAMETERS Calculates pressure drops and heat transfer


%coefficients
%uses an initial tube length to calculate heat transfer coefficients, then
%calculates tube length based on heat transfer characteristics
%calculated tube length is then used to repeat this process until the
%needed tube length remains constant to a 0.00001 difference
%assign arbitrary starting value
tubeLengthDifference = 1;
n = 1;
while tubeLengthDifference >= 0.00001
%% tube side heat transfer calculations

reynoldsNumberTubeSide = densityTube*velocityTube*dI/viscosityTube;

%determine correct method of calculating coefficients

prantlNumberTube = heatCapacityTube*viscosityTube/thermalConductivityTube;

if reynoldsNumberTubeSide <= 2100 && initialTubeLength<=


reynoldsNumberTubeSide*prantlNumberTube*dI
%laminar flow

khtOneTube =1.86*thermalConductivityTube/dI*(densityTube*dI*prantlNumberTube*dI/
(viscosityTube*initialTubeLength))^(1/3);

tubeSideHeatTransferCoefficient = khtOneTube*velocityTube^(1/3);

elseif reynoldsNumberTubeSide >= 10^(4)

%turbulent flow

khtOneTube = c*thermalConductivityTube/dI*prantlNumberTube^0.4*
(densityTube*dI/viscosityTube)^0.8;

tubeSideHeatTransferCoefficient = khtOneTube*velocityTube^0.8;

elseif reynoldsNumberTubeSide > 2100 && reynoldsNumberTubeSide <10^(4)


12/23/19 9:25 PM C:\Users\Morgan...\CME455Project3Part1.m 2 of 7

%transition flow

%calculate tube-side heat transfer coefficient

khtOneTube = 0.116*(thermalConductivityTube/dI)*((densityTube*dI/viscosityTube)^(2/3))*
(prantlNumberTube^(1/3))*(1+(dI/initialTubeLength)^(2/3));
khtTwoTube = 14.5*(thermalConductivityTube/dI)*(prantlNumberTube^(1/3))*(1+
(dI/initialTubeLength)^(2/3));

tubeSideHeatTransferCoefficient = khtOneTube*(velocityTube^(2/3)) - khtTwoTube;


else
display('ERROR: tube side reynolds number out of range for heat transfer coefficient
calculations')
display('Please enter new values')
return
end

%% shell side heat transfer calculations

%calculate the reynold's number

reynoldsNumberShell = densityShell*do*velocityShell/viscosityShell;

%calculate heat transfer coefficient

if reynoldsNumberShell > 250 && reynoldsNumberShell<= 125000

khsShell = 0.08747*fp*fL*js*(thermalConductivityShell^(2/3))*(heatCapacityShell^
(1/3))*densityShell^0.6633/((viscosityShell^(0.33))*((do^0.3367)*(bc^0.5053)));

shellSideHeatTransferCoefficient = khsShell*velocityShell^(0.6633);

elseif reynoldsNumberShell <= 250

khsOneShell = -3.722810^(-5)*fp*fL*js*thermalConductivityShell^(2/3)
*heatCapacityShell*(viscosityShell)^(1/3)/(viscosityShell^(2/3));
khsTwoShell = 0.03843*fp*fL*js*thermalConductivityShell^(2/3)*
(heatCapacityShell*viscosityShell)^(1/3)/(viscosityShell^(2/3));
khsThreeShell = 1.104*fp*fL*js*thermalConductivityShell^(2/3)*
(heatCapacityShell*viscosityShell)^(1/3)/do;

shellSideHeatTransferCoefficient = khsOneShell*velocityShell^2 +
khsTwoShell*velocityShell + khsThreeShell;
else
display('ERROR shell side reynolds number exceeds allowable values for heat transfer
calculations')
display('Please enter new values')
return
end
12/23/19 9:25 PM C:\Users\Morgan...\CME455Project3Part1.m 3 of 7

%% calculate overall heat transfer coefficient

inverseOverallHeatTransferCoefficient = 1/shellSideHeatTransferCoefficient +
1/foulingCoeffShell + do/(2*thermalConductivityExchanger)*log(do/dI)+ (do/dI)*
(1/foulingCoeffTube + 1/tubeSideHeatTransferCoefficient);

overallHeatTransferCoefficient = 1/inverseOverallHeatTransferCoefficient;

%% estimate actual length


deltaTLM = ((initialTempShell - finalTempTube)- (finalTempShell - initialTempTube))/(log
((initialTempShell - finalTempTube)/(finalTempShell - initialTempTube)));

%calculate ft

r = (initialTempShell - finalTempShell)/(finalTempTube - initialTempTube);

p = (finalTempTube - initialTempTube)/(initialTempShell - initialTempTube);

w = (r + 1 + sqrt(r^2 + 1) - 2*r*xp)/(r + 1 + sqrt(r^2 + 1) - 2*xp);

ft = (sqrt(r^2 + 1)*log((1-p)/(1-r*p)))/((r - 1)*log((2 - p*(r+1 - sqrt(r^2 + 1)))/(2 -


p*(r+1+sqrt(r^2 + 1)))));
%estimate required area

areaEstimate = (flowrateTube*heatCapacityTube*(finalTempTube - initialTempTube))/


(overallHeatTransferCoefficient*deltaTLM*ft);

% calculate shell diameter

if runMethod == 1

tubeLength = initialTubeLength;

shadeArea = cl*pT^2;

ds =((4*ftc*fsc*pc*pT^2*areaEstimate)/(pi^2*do*tubeLength))^(1/2);

numberTubesPreliminary = ctp*(pi*ds^2/4)/shadeArea;

numberTubes = ceil(numberTubesPreliminary);

isodd = rem(numberTubes, 2);

if isodd ~= 0
numberTubes = numberTubes + 1;
end

elseif runMethod ==2


12/23/19 9:25 PM C:\Users\Morgan...\CME455Project3Part1.m 4 of 7

%calculate the number of tubes

numberTubesPreliminary = flowrateTube*numberPassesTube/
(densityTube*pi*dI^2/4*velocityTube);

numberTubes = ceil(numberTubesPreliminary);

isodd = rem(numberTubes, 2);

if isodd ~= 0
numberTubes = numberTubes + 1;
end

%calculate the tube length

tubeLength = areaEstimate/(pi*do*numberTubes);

ds =((4*ftc*fsc*pc*pT^2*areaEstimate)/(pi^2*do*tubeLength))^(1/2);

else
display('ERROR: Please enter a valid method number')
return
end

%% tube side pressure drop calculations

if reynoldsNumberTubeSide <= 2100 && reynoldsNumberTubeSide >= 500


fc = 16;
mf = -1;
ar = 3.25*numberPassesTube - 1.5;
ctninlet = 0.75;
ctnoutlet = 0.75;

elseif reynoldsNumberTubeSide >=3000


fc = 0.0791;
mf = -0.25;
ar =2*numberPassesTube - 1.5;
ctninlet = 0.375;
ctnoutlet = 0.375;

elseif reynoldsNumberTubeSide <3000 && reynoldsNumberTubeSide > 2100


fc =5.36*10^(-6);
mf = 0.0949;
ar =2*numberPassesTube - 1.5;
ctninlet = 0.375;
ctnoutlet = 0.375;
else
display('ERROR: tube side reynolds number out of range for pressure drop
12/23/19 9:25 PM C:\Users\Morgan...\CME455Project3Part1.m 5 of 7

calculation')
display('Please enter new values')
return
end

kptOneTube = 2*fc*(densityTube*dI/viscosityTube)^(mf)*densityTube/dI;

kptTwoTube = 0.5*ar*densityTube;

vtnInletTube = flowrateTube/(densityTube*(pi*dNTinlet^2/4));

vtnOutletTube = flowrateTube/(densityTube*(pi*dNToutlet^2/4));

kptThreeTube = densityTube*(ctninlet*vtnInletTube^2 + ctnoutlet*vtnInletTube^2);

pressureDropTubeSide = kptOneTube*numberPassesTube*tubeLength*velocityTube^(2+mf) +
kptTwoTube*velocityTube^(2) + kptThreeTube;

%% shell side pressure drop calculations

% insert values based on reynolds number, diameter, and bc


if ds <= 0.9
a = 0.00819;
b = 0.004049;

else
a = 0.01166;
b= 0.002935;
end

if reynoldsNumberShell <= 2100 &&reynoldsNumberShell >= 100


cnsinlet =0.75;
cnsoutlet =0.75
elseif reynoldsNumberShell > 2100
cnsinlet = 0.375;
cnsoutlet = 0.375;
else
display('ERROR: shell side reynolds number is out of range for pressure
calculations')
display('Please enter new values')
return
end

if bc < 0.3 && bc >= 0.2


mfo = -0.26765;
elseif bc < 0.4 && bc >= 0.3
mfo = -0.36106;
elseif bc < 0.5 && bc >= 0.4
mfo = -0.58171;
else
display('Bc out of range')
12/23/19 9:25 PM C:\Users\Morgan...\CME455Project3Part1.m 6 of 7

return
end

%calculate number baffles

lbb = 0.0169*ds + 0.0257; %estimated based on table 12.6

baffleSpacing = flowrateShell/(densityShell*velocityShell*(lbb + (ds - lbb - do)*(pT -


do)/(pT*pCF)));

numberBafflesPreliminary = tubeLength/(baffleSpacing) - 1;

numberBaffles = ceil(numberBafflesPreliminary);

%baffle spacing in is assumed to be equal to baffle spacing out and B


baffleSpacing = tubeLength/(numberBaffles + 1);
baffleSpacingIn = baffleSpacing;
baffleSpacingOut = baffleSpacing;

rs = (baffleSpacing/baffleSpacingIn)^(1.8) + (baffleSpacing/baffleSpacingOut)^(1.8);

de = cde*(pT^2/do) - do;

kpsOneShell = 18*(5*(baffleSpacing/ds) - 1)*(numberBaffles - 1 + rs)*


(a*ds*densityShell/de)*(bc/0.2)^mfo*(densityShell*de/viscosityShell)^(-0.125);

kpsTwoShell = 90*(1 - baffleSpacing/ds)*(numberBaffles - 1 + rs)*(b*ds*densityShell/de)*


(bc/0.2)^mfo*(densityShell*de/viscosityShell)^(-0.157);

%determine inlet nozzle velocity

vnsInletShell = flowrateShell/(densityShell*pi*dNSinlet^2/4);

if vnsInletShell > allowableVelocity


display('ERROR: Velocity exceeds allowable velocity')
return
end

vnsOutletShell = flowrateShell/(densityShell*pi*dNSoutlet^2/4);

kpsThreeShell = densityShell*(cnsinlet*vnsInletShell^2 + cnsoutlet*vnsOutletShell^2);

pressureDropShellSide = kpsOneShell*velocityShell^1.875 + kpsTwoShell*velocityShell^1.


843 + kpsThreeShell;

%create matrices

tubeSideHeatTransferCoefficientTable(n) = tubeSideHeatTransferCoefficient;
shellSideHeatTransferCoefficientTable(n) = shellSideHeatTransferCoefficient;
overallHeatTransferCoefficientTable(n) = overallHeatTransferCoefficient;
pressureDropShellSideTable(n) = pressureDropShellSide;
12/23/19 9:25 PM C:\Users\Morgan...\CME455Project3Part1.m 7 of 7

pressureDropTubeSideTable(n) = pressureDropTubeSide;
tubeLengthTable(n) = initialTubeLength;

%reassign tube length

tubeLengthDifference = abs(tubeLength - initialTubeLength);

initialTubeLength = tubeLength;

n = n + 1;

end

%% Function output

resultsPreliminary = [tubeLengthTable', tubeSideHeatTransferCoefficientTable',


shellSideHeatTransferCoefficientTable', overallHeatTransferCoefficientTable',
pressureDropTubeSideTable', pressureDropShellSideTable'];

combinedResults = array2table(resultsPreliminary,'VariableNames',
{'Initial_Tube_Length_m',
'Tube_Side_Heat_Transfer_Coefficient_W_per_m2k','Shell_Side_Heat_Transfer_Coefficient_W_
per_m2k','Overall_Heat_Transfer_Coefficient_W_per_m2k','Pressure_Drop_Tube_Side_N_per_m2
','Pressure_Drop_Shell_Side_N_per_m2'});

You might also like