Challenge

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.

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.