Rankine Cycle Simulator
Rankine cycle is the idealised thermodynamic cycle for steam power plants (external Combustion Engine) that converts heat into mechanical work while undergoing a phase change. Ideal Rankine cycle consists of four processes:
- Constant pressure heat addition which takes place in the boiler, high-pressure liquid enters the boiler from feed pump and heated to saturation temperature further heat is supplied to convert it into saturated steam. (Refer Yellow line in the T-S diagra).
- Isentropic expansion which takes place in the turbine, the saturated steam from the boiler is expanded into the turbine producing work. The exit vapour quality (dryness fraction) should be more than 90% to prevent corrosion of blades. (Refer Green line in the T-S diagram).
- Constant pressure heat rejection which takes place in the condenser, the vapour-liquid mixture leaving the turbine is condensed at low pressure using cooling water in most of the cases. (Refer Blue line in the T-S diagram).
- Isentropic compression, the pressure of the condensed liquid which comes out of the condenser is raised in the boiler feed pump. Since the specific volume of liquids is low, the pump work is relatively small and most of the time neglected in the thermodynamic calculations.
The efficiency of the Rankine cycle is a function of the mean temperature of heat addition. Since mean temperature during heat addition in the Rankine cycle is less than that of the Carnot cycle, Rankine cycle is less efficient than the Carnot cycle.
Methods of improving the performance of the Rankine Cycle:
- Increasing boiler pressure
- Using the Superheat cycle
- Using the Re-heat cycle
%Rankine Cycle Simulator
close all
clear all
clc
disp('RANKINE CYCLE SIMULATOR')
disp('1-2 is isentropic expansion in turbine')
disp('2-3 is constant pressure heat rejection in condenser')
disp('3-4 is isentropic compression in pump')
disp('4-1 is constant pressure heat addition in boiler')
p1=input('enter the pressure at the inlet of turbine (in bar)= ');
t1=input('enter the temp at the inlet of turbine (in degree C)= ');
p2=input('enter the pressure at the inlet of condenser (in bar)= ');
%steam condition at the inlet of turbine
h1=XSteam('h_pt',p1,t1);
s1=XSteam('s_pt',p1,t1);
%steam condition at the outlet of turbine
sg2=XSteam('sV_p',p2);
sf2=XSteam('sL_p',p2);
sfg2=sg2-sf2;
x2=(s1-sf2)/sfg2;
s2=sf2+x2*sfg2;
hf2=XSteam('hL_p',p2);
hg2=XSteam('hV_p',p2);
hfg2=hg2-hf2;
h2=hf2+x2*hfg2;
t2=XSteam('Tsat_p',p2);
%workdone by the turbine
W_t=h1-h2;
%steam condition at the outlet of condenser
p3=p2;
t3=XSteam('Tsat_p',p2);
h3=XSteam('hL_p',p2);
s3=XSteam('sL_p',p2);
vf=XSteam('vL_p',p2);
t22=t3;
%calculation of pump work
W_p=vf*(p1-p2)*100;
%steam Condition at state 4
p4=p1;
h4=W_p+h3;
s4=s3;
t4=XSteam('T_ph',p4,h4);
%work net
W_net=W_t-W_p;
%heat supplied
Q_s=h1-h4;
%heat rejected
Q_r=h2-h3;
%efficiency
efficiency=(W_net/Q_s);
%specific steam consumption
SSC=3600/W_net;
tf_sat=XSteam('Tsat_p',p1);
sf_sat=XSteam('sL_p',p1);
hf_sat=XSteam('hL_p',p1);
sg_sat=XSteam('sV_p',p1);
hg_sat=XSteam('hV_p',p1);
%plotting T-S diagram
hold on
%for plottin saturation curve
tsat1=linspace(0,374,1000);
for i=1:length(tsat1)
ss1(i)=XSteam('sL_T',tsat1(i));
end
for j=1:length(tsat1)
ss2(j)=XSteam('sV_T',tsat1(j));
end
plot(ss1,tsat1,'b')
plot(ss2,tsat1,'r')
%for saturation temp at p1
temp=XSteam('Tsat_p',p1);
t=linspace(t4,temp,30);
for i=1:length(t)
S(i)=XSteam('s_pt',p1,t(i));
hold on
end
t0=linspace(temp,t1,300);
for i=1:length(t0)
S0(i)=XSteam('s_pt',p1,t0(i));
end
%for plotting turbine work
plot([s1 s2],[t1 t2],'g')
%for heat rejection in condenser
plot([s2 s3],[t2 t3],'b')
%for pump work
plot([s3 s4],[t3 t4],'r')
%plotting curved line(constant pressure line in wet region) from outlet of
%the pump to the point from where phase change starts
plot(S,t,'y')
%plotting the phase change region
plot([sf_sat sg_sat],[tf_sat tf_sat],'y')
%plotting the curved constant pressure line from where the phase change
%ends to the superheated point
plot(S0,t0,'y')
legend('Saturation Curve L','Saturation Curve V','Turbine','condenser','pump','boiler','location','northwest')
title('T-S Diagram')
xlabel('Entropy')
ylabel('Temperature')
%plotting H-S diagram
figure(2)
hold on
%for plotting the saturation curve
tsat1=linspace(0,374,1000);
for i=1:length(tsat1)
hh1(i)=XSteam('hL_T',tsat1(i));
end
for j=1:length(tsat1)
hh2(j)=XSteam('hV_T',tsat1(j));
end
plot(ss1,hh1,'b')
plot(ss2,hh2,'r')
%for plotting tubine
plot([s1 s2],[h1 h2],'g')
%for condenser
plot([s2 s3],[h2 h3],'b')
%for plotting pump
plot([s3 s4],[h3 h4],'r')
s=linspace(s3,s1,1000);
for i=1:length(s)
h(i)=XSteam('h_ps',p1,s(i));
end
%for plotting boiler
% plot([s4 s1],[h4 h1],'y')
plot(s,h,'y')
legend('Saturation Curve L','Saturation Curve V','Turbine','condenser','pump','boiler','location','northwest')
title('H-S Diagram')
xlabel('Entropy')
ylabel('Enthalpy')
%outputs
%at state 1
fprintf('At State Point 1:\r\n')
fprintf('P1 is : %f Bar\r\n',p1)
fprintf('T1 is : %f Deg Celcius\r\n',t1)
fprintf('H1 is : %f KJ/Kg\r\n',h1)
fprintf('S1 is : %f KJ/KgK\r\n',s1)
%at state 2
fprintf('At State Point 2:\r\n')
fprintf('P2 is : %f Bar\r\n',p2)
fprintf('T2 is : %f Deg Celcius\r\n',t2)
fprintf('H2 is : %f KJ/Kg\r\n',h2)
fprintf('S2 is : %f KJ/KgK\r\n',s2)
fprintf('X is : %f \r\n',x2)
%at state 3
fprintf('At State Point 3:\r\n')
fprintf('P3 is : %f Bar\r\n',p3)
fprintf('T3 is : %f Deg Celcius\r\n',t3)
fprintf('H3 is : %f KJ/Kg\r\n',h3)
fprintf('S3 is : %f KJ/KgK\r\n',s3)
%state 4
fprintf('At State Point 4:\r\n')
fprintf('P4 is : %f Bar\r\n',p4)
fprintf('T4 is : %f Deg Celcius\r\n',t4)
fprintf('H4 is : %f KJ/Kg\r\n',h4)
fprintf('S4 is : %f KJ/KgK\r\n',s4)
%calculations
fprintf('Work Done By Turbine : %f kJ/kg\r\n',W_t)
fprintf('Work Done By Pump : %f kJ/kg\r\n',W_p)
fprintf('Heat Added in The Boiler: %f KJ/kg\r\n',Q_s)
fprintf('Heat Rejected in The Condenser: %f KJ/kg\r\n',Q_r)
fprintf('Thermal Efficiency is : %f %%\r\n',efficiency*100)
fprintf('Specific Steam Consumption : %f KJ/kWh\r\n',SSC)