Project 2 - Rankine cycle Simulator
AIM:
Write a code in MATLAB to solve the State functions of a Rankine cycle for provided input
Plot corresponding graphs and display the output as required
THEORY
The Rankine cycle closely describes the process by which steam-operated heat engines commonly found in thermal power generation plants.
Processes involved in Rankine Cycle
Process 1–2: The working fluid is pumped from low to high pressure. As the fluid is a liquid at this stage, the pump requires little input energy.
In other words Process 1-2 is [Isentropic compression in pump]
Process 2–3: The high-pressure liquid enters a boiler, where it is heated at constant pressure by an external heat source to become a dry saturated vapour. The input energy required can be easily calculated graphically, using an enthalpy–entropy chart (h–s chart, or Mollier diagram), or numerically, using steam tables.
In other words Process 2-3 is [Constant pressure heat addition in boiler]
Process 3–4: The dry saturated vapour expands through a turbine, generating power. This decreases the temperature and pressure of the vapour, and some condensation may occur. The output in this process can be easily calculated using the chart or tables noted above.
In other words Process 3-4 is [Isentropic expansion in turbine]
Process 4–1: The wet vapour then enters a condenser, where it is condensed at a constant pressure to become a saturated liquid.
In other words Process 4-1 is [Constant pressure heat rejection in condenser]
PROGRAM:
clear all
close all
clc
fprintf ('%75s \n\n','RANKINE CYCLE SIMULATOR')
fprintf ('1-2 is Isentropic Expansion in Turbine \n')
fprintf ('2-3 is Const Pressure Heat Rejection by the Condenser \n')
fprintf ('3-4 is Isentropic Compression in the Pump \n')
fprintf ('4-1 is Const Pressure Heat Addition by the Boiler \n\n')
% Getting Inputs from User
P1 = input('Enter the Pressure at the Turbine Inlet (in bar) :');
T1 = input('Enter the Temperature at the Turbine Inlet (in Degree Celcius) :');
P2 = input('Enter the Pressure at Condenser (in bar) :');
%Computing Results
fprintf ('\n %65s','RESULTS')
% Calculating Required Values at all State Points
% At State Point 1
S1 = XSteam ('s_pT',P1,T1);
H1 = XSteam ('h_pT',P1,T1);
% At State Point 2
S2 = S1;
sf2 = XSteam ('sL_p',P2);
sg2 = XSteam ('sV_p',P2);
hf2 = XSteam ('hL_p',P2);
hg2 = XSteam ('hV_p',P2);
T2 = XSteam ('Tsat_p',P2);
x2 = ((S2-sf2)/(sg2-sf2));
H2 = hf2+(x2*(hg2-hf2));
% At State Point 3
P3 = P2;
T3 = XSteam ('Tsat_p',P3);
S3 = XSteam ('sL_p',P3);
H3 = XSteam ('hL_p',P3);
% To calculate Gamma
cp = XSteam('cpL_p',P3);
cv = XSteam('cvL_p',P3);
gamma = (cp/cv);
% At State Point 4
P4 = P1;
S4 = S3;
H4 = XSteam('h_ps',P4,S4);
T4 = T3*((P4/P3)^((gamma-1)/gamma));
% Calculating work done
Wt = H1 - H2;
Wp = H4 - H3;
W_net = Wt-Wp;
q_in = H1 - H4;
q_out = H2 - H3;
n = W_net/q_in;
n_percent = n*100;
SSC = 3600/W_net;
BWR = q_in/q_out;
% At State Points 5 and 6
T5 = XSteam('Tsat_p',P1);
T6 = T5;
S5 = XSteam('sL_p',P1);
S6 = XSteam('sV_p',P1);
H5 = XSteam('hL_p',P1);
H6 = XSteam('hV_p',P1);
% Plotting The Required Graphs
% T-S Graph
figure(1)
T_Zone1 = linspace(T5,T1,500);
for i = 1:length(T_Zone1)
S(i) = XSteam('s_pt',P1,T_Zone1(i));
end
hold on
plot([S1 S2 S3 S4 S5 S6 S],[T1 T2 T3 T4 T5 T6 T_Zone1],'linewidth',3,'color','k')
axis ([0 10 0 430])
text (S1,T1,'1','FontSize',15)
text (S2,T2,'2','FontSize',15)
text (S3,T3,'3','FontSize',15,'verticalalignment','top')
text (S4,T4,'4','FontSize',15,'verticalalignment','bottom','horizontalalignment','right')
text (S5,T5,'5','FontSize',15,'verticalalignment','top')
text (S6,T6,'6','FontSize',15,'verticalalignment','top','horizontalalignment','right')
T_Zone2 = linspace(0,T1,500);
for j = 1:length(T_Zone2)
sl(j) = XSteam('sL_T',T_Zone2(j));
sv(j) = XSteam('sV_T',T_Zone2(j));
hl(j) = XSteam('hL_T',T_Zone2(j));
hv(j) = XSteam('hV_T',T_Zone2(j));
end
plot (sl,T_Zone2,'linewidth',1.5,'color','r')
plot (sv,T_Zone2,'linewidth',1.5,'color','r')
xlabel('Entropy')
ylabel('Temperature')
title ('Entropy vs Temperature')
% H-S Graph
figure(2)
hold on
plot([S1 S2 S3 S4 S1],[H1 H2 H3 H4 H1],'linewidth',3,'color','k')
axis ([0 10 -100 3500])
text (S1,H1,'1','FontSize',15)
text (S2,H2,'2','FontSize',15)
text (S3,H3,'3','FontSize',15,'verticalalignment','top','horizontalalignment','left')
text (S4,H4,'4','FontSize',15,'verticalalignment','bottom','horizontalalignment','right')
plot(sv,hv,'linewidth',1.5,'color','r')
plot(sl,hl,'linewidth',1.5,'color','r')
xlabel('Entropy')
ylabel('Enthalpy')
% Displaying The Results
fprintf ('\n At State Point 1 : \n')
fprintf ('P1 is : %f Bar \n',P1)
fprintf ('T1 is : %f Deg Celcius \n',T1)
fprintf ('H1 is : %f kJ/kg \n',H1)
fprintf ('S1 is : %f kJ/kgK \n',S1)
fprintf ('\n At State Point 2 : \n')
fprintf ('P2 is : %f Bar \n',P2)
fprintf ('T2 is : %f Deg Celcius \n',T2)
fprintf ('H2 is : %f kJ/kg \n',H2)
fprintf ('S2 is : %f kJ/kgK \n',S2)
fprintf ('X2 is : %f \n',x2)
fprintf ('\n At State Point 3 : \n')
fprintf ('P3 is : %f Bar \n',P3)
fprintf ('T3 is : %f Deg Celcius \n',T3)
fprintf ('H3 is : %f kJ/kg \n',H3)
fprintf ('S3 is : %f kJ/kgK \n',S3)
fprintf ('\n At State Point 4 : \n')
fprintf ('P4 is : %f Bar \n',P4)
fprintf ('T4 is : %f Deg Celcius \n',T4)
fprintf ('H4 is : %f kJ/kg \n',H4)
fprintf ('S4 is : %f kJ/kgK \n\n',S4)
fprintf ('Wt : %f kJ/kg \n',Wt)
fprintf ('Wp : %f kJ/kg \n',Wp)
fprintf ('Wnet : %f kJ/kg \n',W_net)
fprintf ('Ntherm : %f percent \n',n_percent)
fprintf ('SSC : %f kg/kWh\n',SSC)
fprintf ('BWR : %f \n',BWR)
RESULTS:
Required Graphs are shown below
The Required Data is printed onto the command window
EXPLANATION OF PROGRAM
Initially to clear any previously defined values, close any open windows and clear the command window, commands are provided
Following that, using 'fprintf' basic details are printed onto the command window
Then it is programmed to get input from user for the pressure at state points 1 and 2 and temperature at state point 1
Then by taking the provided steam table as a function, the parameters at different state point is found.
Once all the parameters are found, the values are substituted in the above equations to obtained the required datas.
Plotting
Since the path of change between the points 5 and 1 is unknown, a temp zone is assumed for the temperatures between the said points and corresponding values of entropy is found using steam table
Using the plot command, all values are plotted and with the help of text command, the state points are marked.
The T vs S values at liquid and vapour phases are found from the steam table and plotted alongside
The same is done for H vs S graph also
Displaying Results
Finally, using the fprintf command, all the calculated state parameters are displayed onto the command window in required format.