Advertisement
asidesi

Heat Exchanger Model

Aug 11th, 2021
1,876
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 9.07 KB | None | 0 0
  1. clc
  2. clear
  3. close all
  4.  
  5. %Estimate outlet temperature and solve to calculate Q using the 3 equations
  6.  
  7. %Equation
  8. %Q=m1*cp1*(T1i-T1o)=m2*cp2*(T2o-T2i)=U*A*F*deltaTlm
  9.  
  10. %deltaTlm=((T1i-T2i)-(T1o-T2o))/log((T1i-T2i)/(T1o-T2o)) for parallel
  11. %deltaTlm=((T1i-T2o)-(T1o-T2i))/log((T1i-T2o)/(T1o-T2i)) for counter flow
  12.  
  13. %-------------------------------------------------------------------------
  14. %Design requirement
  15. %Engine oil outlet mues be less than or equal to 115 degrees
  16. %Pressure drop on each side must be deltaP<=10kPa
  17.  
  18. %engine oil
  19. mdot1=0.23;
  20. cp1=2307;%J/kgK
  21. T1i=120+273; %Kelvin
  22. Required_T1o=115+273;
  23. k1=0.135; %W/m.K
  24. miu1=1.027*(10^-2); %N.s/m^2
  25. PR1=175;
  26. rho1=828; %kg/m^3
  27. Rf1=0.176*10^-3; %m^2*k/W
  28. upperrange1=1;
  29. lowerrange1=0.5;
  30.  
  31. %-------------------------------------------------------------------------
  32.  
  33. %Engine coolant
  34. mdot2=0.47;
  35. cp2=3650;%J/kgK
  36. T2i=90+273; %Kelvin (100 degrees)
  37. k2=0.442; %W/m.K
  38. miu2=0.08*(10^-2); %N.s/m^2
  39. PR2=6.6;
  40. rho2=1020; %kg/m^3
  41. Rf2=0.353*10^-3;%m^2*k/W
  42. upperrange2=2.4;
  43. lowerrange2=1.2;
  44.  
  45. %-------------------------------------------------------------------------
  46.  
  47. %Parameters
  48. pitch_shape=2; %*** Square pitch=1 / Triangular Pitch =2
  49. kw=42.7; %W/m.K
  50. Ds=50.8*10^-3; %Shell inside diameter (m)
  51. Lt=254*10^-3; %Tube length (m)
  52. do=3.175*10^-3; %Tube outside diameter
  53. dr=1.3; %Given Diameter ratio where dr=do/di
  54. di=(1/dr)*do; %Tube inner diameter (m)
  55. fprintf('Tube inner diameter(m)=%',di)
  56. disp(di)
  57. Np=2; %Number of passes (defined)
  58. B=25.4*10^-3; %Baffling space (Assumed)(m)
  59. Nb=Lt/B-1; %Number of Baffles
  60. fprintf('Number of Baffles=%',Nb)
  61. disp(Nb)
  62.  
  63. %Tube pitch ratio Pr where Pr=Pt/do
  64. %Pt= tube pitch
  65. Pr=1.25; %Given tube pitch ratio
  66. Pt=Pr*do; %Obtain tube pitch
  67. fprintf('Tube pitch(m)=%',Pt)
  68. disp(Pt)
  69.  
  70. %-------------------------------------------------------------------------
  71.  
  72. %Tube Clearance
  73. Ct=Pt-do; %Tube clearance (mm)
  74. fprintf('Tube clearance(m)=%',Ct)
  75. disp(Ct)
  76.  
  77. %tube count calculation constants CTP
  78. %To estimate the number of tubes
  79. Nt=[0 0 0]';
  80. CTP=[0.93 0.9 0.85]';
  81. if pitch_shape==1 %Square pitch layout
  82.     CL=1;
  83. end
  84. if pitch_shape==2 %triangular pitch layout
  85.     CL=0.866;
  86. end
  87. %Constant pitch layout
  88. for i=1:3
  89.     ShadeArea=CL*Pt^2;
  90.     Nt(i)=CTP(i)*((pi*Ds^2/4)/ShadeArea);
  91. end
  92. %disp(Nt)
  93. Nt=round(Nt(Np));
  94. fprintf('Number of tubes needed=%',Nt)
  95. disp(Nt)
  96.  
  97. %-------------------------------------------------------------------------
  98.  
  99. %Tube side cross flow area / velocity/ reynolds number for engine oil
  100. Ac1=(pi*(di)^2/4)*(Nt/Np); %Cross-flow area (m^2)
  101. v1=mdot1/(rho1*Ac1); %velocity ms-1
  102. RE1=(rho1*v1*(di))/miu1; %Reynolds number
  103. fprintf('Engine oil cross flow area=%',Ac1)
  104. disp(Ac1)
  105. fprintf('Engine oil velocity=%',v1)
  106. disp(v1)
  107. fprintf('Engine oil Reynolds number=%',RE1)
  108. disp(RE1)
  109.  
  110. %Varify
  111. if RE1<2300
  112.     disp('Laminar flow')
  113. else
  114.     disp('turbulent flow')
  115. end
  116.  
  117. if v1<upperrange1
  118.     disp('Velocity within range')
  119.     if v1<lowerrange1
  120.         disp('Velocity lower than range')
  121.         if v1<lowerrange1/2
  122.             dis('Velcity is too low')
  123.         end
  124.     end
  125.     if v1>upperrange1
  126.         disp('Velocity higher than range')
  127.     end
  128. end
  129.  
  130. %Friction factor
  131. if RE1<2300
  132.     fricfac=16/RE1;
  133. else
  134.     fricfac=(1.58*log(RE1)-3.28)^2;
  135. end
  136. fprintf('Friction Factor for engine oil=%',fricfac)
  137. disp(fricfac);
  138.  
  139. %Nusselt number
  140. if RE1>2300
  141.     Nu1=(fricfac/2)*((RE1-1000)*PR1)/(1+12.7*((fricfac/2)^0.5)*(PR1^(2/3)-1));
  142. else
  143.     Nu1=1.86*((di*RE1*PR1)/Lt)^(1/3);
  144. end
  145. fprintf('Nusselt number=%',Nu1)
  146. disp(Nu1);
  147.  
  148. %Convection heat tranfer coefficient
  149. h1=(Nu1*k1)/di;
  150. fprintf('Convection heat transfer coefficient h (W/m^2*k)=%',h1)
  151. disp(h1);
  152.  
  153. %-------------------------------------------------------------------------
  154.  
  155. %Shell side free flow area / velocity
  156. Ac2=(Ds*Ct*B)/Pt;
  157. fprintf('free flow area(m^2)=%',Ac2);
  158. disp(Ac2)
  159. v2=mdot2/(rho2*Ac2);
  160. fprintf('Velocity of Coolant(ms-1)=%',v2);
  161. disp(v2)
  162.  
  163. %Varify
  164. if v2<upperrange2
  165.     disp('Velocity within range')
  166.     if v2<lowerrange2
  167.         disp('Velocity lower than range')
  168.         if v2<lowerrange2/2
  169.             dis('Velcity is too low')
  170.         end
  171.     end
  172.     if v2>upperrange2
  173.         disp('Velocity higher than range')
  174.     end
  175. end
  176.  
  177. %Equivalent diameter
  178.  if pitch_shape==1 %Square pitch layout
  179.      De=4*(Pt^2-pi*(do^2)/4)/pi*do;
  180.  end
  181.  if pitch_shape==2 %triangular pitch layout
  182.      De=4*(((Pt^2*sqrt(3)/4)-(pi*do^2/8))/(pi*do/2));
  183.  end
  184.  fprintf('Equivalent Diameter (m)=%',De);
  185.  disp(De)
  186.  
  187. %Reynolds number for engine coolant
  188. RE2=(rho2*v2*De)/miu2;
  189. fprintf('Reynolds number for engine coolant=%',RE2);
  190. disp(RE2)
  191.  
  192. %Friction factor 2
  193. fricfac2= exp(0.576-0.19*log(RE2));
  194. fprintf('Friction Factor2 for coolant=%',fricfac2)
  195. disp(fricfac2);
  196.  
  197.  
  198. %Nusselt number
  199. if RE2>2000
  200.     if RE2<1*10^6
  201.     Nu2=0.36*(RE2^0.55)*(PR2^(1/3));
  202.     end
  203. end
  204. fprintf('Nusselt number2=%',Nu2)
  205. disp(Nu2);
  206.  
  207. %Heat transfer coefficient
  208. h2=(Nu2*k2)/De;
  209. fprintf('Heat transfer coefficient for engine coolant h (W/m^2*k)=%',h2);
  210. disp(h2)
  211.  
  212. %-------------------------------------------------------------------------
  213.  
  214. %Total heat transfer areas for both fluids
  215. Ai=pi*di*Lt*Nt;
  216. Ao=pi*do*Lt*Nt;
  217. fprintf('Total heat transfer inner area (m^2) =%',Ai);
  218. disp(Ai)
  219. fprintf('Total heat transfer outer area (m^2)=%',Ao);
  220. disp(Ao)
  221.  
  222. %The overall heat transfer coefficient UAo
  223. a=1/(h1*Ai);
  224. b=Rf1/Ai;
  225. c=log(do/di)/(2*pi*kw*Lt*Nt);
  226. d=Rf2/Ao;
  227. e=1/(h2*Ao);
  228.  
  229. UAo=1/(a+b+c+d+e);
  230. fprintf('Overall heat transfer coefficient (W/K)=%',UAo);
  231. disp(UAo)
  232.  
  233. %-------------------------------------------------------------------------
  234.  
  235. %Heat capacities for both fluids
  236. C1=mdot1*cp1;
  237. C2=mdot2*cp2;
  238. Cmin=C1;
  239. Cmax=C2;
  240. fprintf('Heat capacity for Engine oil(C minimum)=%',C1);
  241. disp(C1)
  242. fprintf('Heat capacity for Engine coolant(C minimum)=%',C2);
  243. disp(C2)
  244. %Heat capacity ratio
  245. Cr=Cmin/Cmax;
  246. fprintf('Heat capacity ratio=%',Cr);
  247. disp(Cr)
  248. %Number of transfer units
  249. NTU=UAo/Cmin;
  250. fprintf('Number of transfer units(NTU)=%',NTU);
  251. disp(NTU)
  252. %Effectiveness for a shell and tube heat exchanger
  253. NTU1=NTU/Np;
  254. Ehx=2*(1+Cr+(1+Cr^2)^0.5*((1+exp(-NTU1*(1+Cr^2)^0.5))/(1-exp(-NTU1*(1+Cr^2)^0.5))))^-1;
  255. fprintf('effectiveness Ehx=%',Ehx);
  256. disp(Ehx)
  257.  
  258. %Effectiveness maybe expressed as
  259. %        q          C1*(T1i-T1o)       C2*(T2o-T2i)
  260. %Ehx= ------- = ------------------ = ----------------
  261. %      qmax        Cmin*(T1i-T2i)      Cmin(T1i-T2i)
  262.  
  263. %Comparison with the outlet temperatures
  264. T1o=T1i-Ehx*(Cmin/C1)*(T1i-T2i);
  265. T2o=T2i+Ehx*(Cmin/C2)*(T1i-T2i);
  266. fprintf('Calculated outlet temperature of engine oil (Kelvin)=%',T1o);
  267. disp(T1o)
  268. fprintf('Calculated outlet temperature of engine coolant (Kelvin)=%',T2o);
  269. disp(T2o)
  270. fprintf('Calculated outlet temperature of engine oil (degrees C)=%',T1o);
  271. disp(T1o-273)
  272. fprintf('Calculated outlet temperature of engine coolant (degrees C)=%',T2o);
  273. disp(T2o-273)
  274. RndT1o=round(T1o);
  275.  
  276. if RndT1o>Required_T1o-2
  277.     if RndT1o<Required_T1o+2
  278.         disp('Outlet temperature Requirement satisfied')
  279.     end
  280. else
  281.     disp('Outlet temperature Requirement not satisfied')
  282. end
  283.  
  284. %Heat transfer rate
  285. q=Ehx*Cmin*(T1i-T2i);
  286. fprintf('Overall heat transfer (W)=%',q);
  287. disp(q)
  288.  
  289. %Pressure drops
  290. deltaP1=4*(fricfac*Lt/di+1)*Np*0.5*rho1*v1^2;
  291. deltaP2=fricfac2*(Ds/De)*(Nb+1)*0.5*rho2*v2^2;
  292. fprintf('Pressure drop of engine oil delta P1 (Pa)=%',deltaP1);
  293. disp(deltaP1)
  294. fprintf('Pressure drop of engine coolant delta P2 (Pa)=%',deltaP2);
  295. disp(deltaP2)
  296.  
  297. %Surface density
  298. beta=(Ao+Ai)/((pi*Ds*2/4)*Lt);
  299. fprintf('Surface density=%',beta);
  300. disp(beta)
  301.  
  302. clc
  303. %-------------------------------------------------------------------------
  304. disp('Default Input')
  305. fprintf('Engine oil inlet temperature (Kelvin)=%',T1i);
  306. disp(T1i)
  307. fprintf('Engine coolant inlet temperature=%',T2i);
  308. disp(T2i)
  309. fprintf('Engine Oil Mass flow rate=%',mdot1);
  310. disp(mdot1)
  311. fprintf('Engine coolant mass flow rate=%',mdot2);
  312. disp(mdot2)
  313. fprintf('Fouling factor of engine oil=%',Rf1);
  314. disp(Rf1)
  315. fprintf('Fouling factor of engine oil=%',Rf2);
  316. disp(Rf2)
  317. disp('---------------------------------------------')
  318. disp('Requirements')
  319. fprintf('Engine oil requirement outlet temperature=%',Required_T1o);
  320. disp(T1o)
  321. disp('---------------------------------------------')
  322. disp('Desgin specification')
  323. fprintf('Number of Passes=%',Np);
  324. disp(Np)
  325. fprintf('Shell inner diameter(m)=%',Ds);
  326. disp(Ds)
  327. fprintf('Tube Outer diameter(m)=%',do);
  328. disp(do)
  329. fprintf('Tube Inner diameter(m)=%',di);
  330. disp(di)
  331. fprintf('Tube length(m)=%',Lt);
  332. disp(Lt)
  333. fprintf('Number of tubes=%',Nt);
  334. disp(Nt)
  335. fprintf('Tube Clearance(m)=%',Ct);
  336. disp(Ct)
  337. fprintf('Baffle Spacing(m)=%',B);
  338. disp(B)
  339. fprintf('Number of Baffles=%',Nb);
  340. disp(Nb)
  341. fprintf('Engine oil outlet temperature(Kelvin)=%',T1o);
  342. disp(T1o)
  343. fprintf('Engine coolant outlet temperature(Kelvin)=%',T2o);
  344. disp(T2o)
  345. fprintf('Heat transfer rate(W)=%',q);
  346. disp(q)
  347. fprintf('Surface area density (m^2/m^3)=%',beta);
  348. disp(beta)
  349. fprintf('Pressure drop of engine oil delta P1 (Pa)=%',deltaP1);
  350. disp(deltaP1)
  351. fprintf('Pressure drop of engine coolant delta P2 (Pa)=%',deltaP2);
  352. disp(deltaP2)
  353. fprintf('Over heat transfer coefficient UA =%',UAo);
  354. disp(UAo)
  355.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement