Rankine Cycle Simulator
Program-
close all
clear all
clc
disp(\' Rankine Cycle Simulator\');
disp(\' 1 - 2 is Isentropic Expansion in Turbine\');
disp(\' 2 - 3 is Isobaric Heat rejection in Condensor\');
disp(\' 3 - 4 is Isentropic Compression in Pump\');
disp(\' 4 - 1 is Isobaric Heat addition in Boiler\');
%Inputs
p1 = input(\' Enter Turbine inlet pressure in bar:\');
t1 = input(\' Enter Turbine inlet temperature in degree celcius:\');
p2 = input(\' Enter Condensor pressure in bar:\');
%Inlet of the turbine
s1 = XSteam(\'s_pT\',p1,t1);
h1 = XSteam(\'h_pT\',p1,t1);
%Inlet of the condenser
s2 = s1;
t2 = XSteam(\'TSat_p\',p2);
sf2=XSteam(\'sL_p\',p2);
sg2=XSteam(\'sV_p\',p2);
hf2=XSteam(\'hL_p\',p2); %enthalpy at liquid state
hg2=XSteam(\'hV_p\',p2); %enthalpy at gaseous state
x2=((s2-sf2)/(sg2-sf2)); %dryness fraction factor
h2=hf2+(x2*(hg2-hf2));
%Exit of the condenser
p3 = p2;
t3 = t2;
s3 = XSteam(\'sL_T\',t3);
h3 = XSteam(\'h_ps\',p3,s3);
%Inlet to the boiler
p4 = p1;
s4 = s3;
h4 = XSteam(\'h_ps\',p4,s4);
cp4 = XSteam(\'CpL_p\',p3);
cv4 = XSteam(\'CvL_p\',p3);
gamma = (cp4/cv4);
% To calculate the t4
% p4^(1-gamma)*t4^gamma = p3^(1-gamma)*t3^gamma
t4 = (t3*((p3/p4)^((1-gamma)/gamma)));
% Calculation
%Work done by turbine
wt = h1 - h2;
%Work done by pump
wp = h4 - h3;
%Net Work done
w_net = wt - wp;
%Heat injected in boiler
q_in = h1 - h4;
%Heat rejected in condensor
q_out = h2 - h3;
%Thermal Efficiency
n = w_net/q_in;
np = n*100;
%Plot for Temperature vs Entropy
figure(1)
%plot for liquid and vapour saturation curves
t = linspace(0,550,600);
for i = 1:length(t)
s_l(i) = XSteam(\'sL_T\',t(i));
end
for i = 1:length(t)
s_v(i) = XSteam(\'sV_T\',t(i));
end
plot(s_l,t,\'--\',\'color\',\'r\')
hold on
plot(s_v,t,\'--\',\'color\',\'b\')
grid on
%plot for Work done by turbine
plot([s1,s2],[t1,t2],\'color\',\'r\')
hold on
xlabel(\'Entropy(KJ/kgK)\')
ylabel(\'Temperature(K)\')
%plot for heat rejected in condensor
plot([s2,s3],[t2,t3],\'color\',\'b\')
hold on
%plot for work done by pump
plot([s3,s4],[t3,t4],\'color\',\'g\')
hold on
%plot for heat injected by boiler
tp = XSteam(\'TSat_p\',p4);
sp = XSteam(\'sL_T\',tp);
plot([s4,sp],[t4,tp],\'color\',\'m\')
hold on
tq = tp;
sq = XSteam(\'sV_T\',tq);
plot([sp,sq],[tp,tq],\'color\',\'m\')
hold on
plot([sq,s1],[tq,t1],\'color\',\'m\')
hold on
%Indicate states with numbers
text(s1,t1,\'1\');
text(s2,t2,\'2\');
text(s3,t3,\'3\');
text(s4,t4,\'4\');
%Plot for enthalpy vs entropy
figure(2)
plot([s1,s2],[h1,h2],\'color\',\'r\')
grid on
xlabel(\'Entropy(KJ/kgK)\')
ylabel(\'Enthalpy(KJ/kg)\')
hold on
plot([s2,s3],[h2,h3],\'color\',\'b\')
hold on
plot([s3,s4],[h3,h4],\'color\',\'g\')
hold on
plot([s4,s1],[h4,h1],\'color\',\'m\')
hold on
%plot for liqiuid and vapour saturation curve
t = linspace(0,550,600);
for j = 1:length(t)
h_l(j) = XSteam(\'hL_T\',t(j));
end
for j = 1:length(t)
h_v(j) = XSteam(\'hV_T\',t(j));
end
plot(s_l,h_l,\'--\',\'color\',\'r\')
hold on
plot(s_v,h_v,\'--\',\'color\',\'b\')
%Indicate states with numbers
text(s1,h1,\'1\');
text(s2,h2,\'2\');
text(s3,h3,\'3\');
text(s4,h4,\'4\');
%Results output
fprintf(\'\\n\\n%10s %54s\\n\',\'State 1\',\'State 2\');
fprintf(\'%s %6.3f%s %44s %.3f%s\\n\',\'P1:\',p1,\'bar\',\'P2:\',p2,\'bar\');
fprintf(\'%s %.3f%s %35s %.3f%s\\n\',\'T1:\',t1,\'Deg Celcius\',\'T2:\',t2,\'Deg Celcius\');
fprintf(\'%s %8.3f%s %40s %.3f%s\\n\',\'H1:\',h1,\'KJ/kg\',\'H2:\',h2,\'KJ/kg\');
fprintf(\'%s %.3f%s %42s %.3f%s\\n\\n\\n\',\'S1:\',s1,\'KJ/kgK\',\'S2:\',s2,\'KJ/kgK\');
fprintf(\'%10s %54s\\n\',\'State 3\',\'State 4\');
fprintf(\'%s %6.3f%s %44s %.3f%s\\n\',\'P3:\',p3,\'bar\',\'P4:\',p4,\'bar\');
fprintf(\'%s %.3f%s %35s %.3f%s\\n\',\'T3:\',t3,\'Deg Celcius\',\'T4:\',t4,\'Deg Celcius\');
fprintf(\'%s %8.3f%s %40s %.3f%s\\n\',\'H3:\',h3,\'KJ/kg\',\'H4:\',h4,\'KJ/kg\');
fprintf(\'%s %.3f%s %42s %.3f%s\\n\\n\\n\',\'S3:\',s3,\'KJ/kgK\',\'S4:\',s4,\'KJ/kgK\');
fprintf(\'%40s %.3f %s\\n\',\'Work output by Turbine: \',wt,\'KJ/kg\');
fprintf(\'%40s %.3f %s\\n\',\'Work input by Pump: \',wp,\'KJ/kg\');
fprintf(\'%40s %.3f %s\\n\',\'Net Work: \',w_net,\'KJ/kg\');
fprintf(\'%40s %.3f\\n\',\'Thermodynamic Efficiency: \',np);
fprintf(\'%40s %.3f %s\\n\',\'Heat input in Boiler: \',q_in,\'KJ/kg\');
fprintf(\'%40s %.3f %s\\n\',\'Heat rejected in condenser: \',q_out,\'KJ/kg\');
Output Values-
Rankine Cycle Simulator Graphs-
1) Temprature (K) vs Entropy (KJ/KgK)
2) Enthalpy (KJ/kg) vs Entropy (KJ/KgK)