Project

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)

Your portfolio, next

Ship work like this
in your own course.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.