Challenge

Project 2 - Rankine cycle Simulator

Variables:

QQQ = Heat flow rate to or from the system (energy per unit time)

MMM = Mass per unit time

ηthermaleta_{text thermal}ηthermal​= Thermodynamic efficiency of the process (net power output per heat input dimensionless)

WWW =Mechanical power consumed by or provided to the system (energy per unit time)

ηp,ηteta_{p},eta_{t}ηp​,ηt​ = Isentropic efficiency of the compression (feed pump) and expansion (turbine) processes, dimensionless

h1,h2,h3,h4h_{1},h_{2},h_{3},h_{4}h1​,h2​,h3​,h4​ = The "specific enthalpies" at indicated points on the T-S diagram

h1sh_{1s}h1s​= The final "specific enthalpy" of the fluid if the turbine were Isentropic

p1,p2p_{1},p_{2}p1​,p2​= The pressures before and after the compression process

Matlab Project Program :

%% Rankine Cycle Simulator 
% Objective of this program is to simulate the rankine cycle 
% Plotting t-s and h-s diagram using data from XSteam data
% Water and steam properties according to IAPWS IF-97  
clear all
close all
clc

%%
disp(' RANKINE CYCLE ');                                    % Displaying
disp('1-2 is Isentropic Expansion in the turbine');
disp('2-3 is constant pressure heat removal in the condenser');
disp('3-4 is Isentropic compression in the pump');
disp('4-1 is Constant pressure heat addition in the boiler');

%%
%Obtaining the input data
p1 = input('nValue of pressure at turbine inlet, p1(in bar) = ');
T1 = input('nValue of temperature at turbine inlet, T1(in degree.C) = ');
p2 = input('nValue of temperature at condenser inlet, p2(in bar) = ');
%% 
% Extracting data _ defining variables
% State 1
h1 = XSteam('h_pT', p1, T1);        % extracting enthalpy at state pt 1
s1 = XSteam('s_pT', p1, T1);        % similarly

% State 2
s2 = s1;                            % Isentropic expansion                
sf2= XSteam('sL_p', p2);            % Saturated liquid Entropy
sg2 = XSteam('sV_p', p2);           % Saturated Vapour Entropy
x2 = (s2-sf2)/(sg2-sf2);
hf2 = XSteam('hL_p', p2);           
hg2 = XSteam('hV_p', p2);
h2 = hf2 + (x2*(hg2-hf2));

% State 3
p3 = p2;                            % Constant pressure Heat rejection in condenser
s3= XSteam('sL_p', p3);
h3 = XSteam('hL_p', p3);

% State 4
s4 = s3;
p4 = p1;
%%
% Work done by turbine
Wt = h1 - h2;

% Work done to run pump
v3 = XSteam('vL_p', p3);
Wp = v3*(p4 - p3)*100;
h4 = h3 + Wp;

%net work
Wnet = Wt - Wp;

%Heat into the system
Qin = h1 - h4;

%Heat out of the system
Qout = h2 - h3;

%Thermal efficiency
eff = (Wnet/Qin)*100;

%Specific Steam Consumption
%SSC = mass flow rate/power
SSC = (3600/Wnet);

%%calculating temperatures at the state points
T3 = XSteam('Tsat_p', p3);
T2 = T3;
Cp4 = XSteam('Cp_ps', p4, s4);
Cv4 = XSteam('Cv_ps', p4, s4);
k = Cp4/Cv4;
T4 = T3/((p3/p4)^((k-1)/k));

%calculating temperature, entropy and enthalpy at the vapour and liquid
%line for plotting
T6 = XSteam('Tsat_p', p1);
s5 = XSteam('sL_p', p1);
s6 = XSteam('sV_p', p1);
h5 = XSteam('hL_p', p1);
h6 = XSteam('hV_p', p1);
T5 = T6;

%%
%Plotting the saturation curve
T = linspace(1,375,1000);
for i = 1:length(T)

sf(i) = XSteam('sL_T', T(i));
sg(i) = XSteam('sV_T', T(i));
hf(i) = XSteam('hL_T', T(i));
hg(i) = XSteam('hV_T', T(i));
end

%Plotting T-s diagram
figure(1)
hold on
plot(sf, T, 'r','linewidth',1)
plot(sg, T, 'r','linewidth',1)
plot([s1 s2], [T1 T2], 'k', 'linewidth', 2)
plot([s2 s3], [T2 T3] ,'k', 'linewidth', 2)
plot([s3 s4], [T3 T4], 'k', 'linewidth', 2)
plot([s4 s5], [T4 T5], 'k', 'linewidth', 2)
plot([s5 s6], [T5 T6], 'k', 'linewidth', 2)
sc1 = linspace(s6, s1, 1000);
for l = 1:length(sc1)
 Tc1(l) = XSteam('T_ps', p1, sc1(l));
end
plot(sc1, Tc1, 'k', 'linewidth', 2)
text(s1+0.1, T1, '1')
text(s2+0.1, T2, '2')
text(s3, T3-20, '3')
text(s4, T4+20, '4')
title('Temp vs Entropy plot')
xlabel('Entropy ,S (Kj/kgk')
ylabel('Temperature (degree C) ')
legend('Saturation curve')


%%
%Plotting h-s diagram
figure(2)
hold on
plot(sf, hf, 'r', 'linewidth', 1)
plot(sg, hg, 'r',  'linewidth', 1)
plot([s1 s2], [h1 h2], 'k', 'linewidth', 2)
plot([s2 s3], [h2 h3], 'k', 'linewidth', 2)
plot([s3 s4], [h3 h4], 'k', 'linewidth', 2)
hc = linspace(h4, h5, 100);
for k = 1:length(hc)
sch(k) = XSteam('s_ph', p1, hc(k));
end
plot(sch,hc, 'k', 'linewidth', 2)
plot([s5 s6], [h5 h6], 'k', 'linewidth', 2)
for m = 1:length(sc1)
hc1(m) = XSteam('h_ps', p1, sc1(m));
end
plot(sc1, hc1, 'k', 'linewidth', 2)
text(s1+0.1, h1, '1')
text(s2+0.1, h2, '2')
text(s3, h3-100, '3')
text(s4, h4 +200, '4')
title('Enthalpy vs Entropy plot')
xlabel('Entropy , S (KJ/kgk) ')
ylabel('Enthalpy , H (KJ/kg)')
legend('Saturation curve','location','northwest')


%%
% Displaying Results
disp(' n RESULTS:');
fprintf('nn At State Point 1: ');
fprintf('n p1: %8.3f bar', p1);
fprintf('n T1: %8.3f C', T1);
fprintf('n h1: %8.3f KJ/kg', h1);
fprintf('n s1: %8.3f KJ/kgK', s1);
fprintf('nn At State Point 2: ');
fprintf('n p2: %8.3f bar', p2);
fprintf('n T2: %8.3f C', T2);
fprintf('n h2: %8.3f kJ/kg', h2);
fprintf('n s2: %8.3f kJ/kgK', s2);
fprintf('n x2: %8.3f', x2);
fprintf('nn At State Point 3:');
fprintf('n p3: %8.3f bar', p3);
fprintf('n T3: %8.3f K', T3);
fprintf('n h3: %8.3f kJ/kg', h3);
fprintf('n s3: %8.3f kJ/kgK', s3);
fprintf('nn At State Point 4:');
fprintf('n p4: %8.3f bar', p4);
fprintf('n T4: %8.3f K', T4);
fprintf('n h4: %8.3f KJ/kg', h4);
fprintf('n s4: %8.3f kJ/kgK n', s4);
fprintf('n Turbine Work: %8.3f kJ/kg', Wt);
fprintf('n Pump Work: %8.3f kJ/kg', Wp);
fprintf('n Wnet: %8.3f kJ/kg', Wnet);
fprintf('n Efficiency: %8.3f Percent  ', eff);
fprintf('n S.S.C: %8.3f kJ/kWh', SSC)

CODE Explanation:

  1. Xsteam data is used to extract steam and water properties of enthalpy, entropy at a specific pressure and temperatures for sat liquid, sat vapour conditions, etc.
  2. The program requires the input of Pressure ( in bar) at state point 1 ( turbine inlet), Temperature at the same point (deg Celcius), and Temp at condenser inlet (point 2).
  3. With the help of these inlets & from Xsteam data, the program calculates all the state points of the Rankine cycle.
  4. The xsteam data works as, h1 = XSteam('h_pT', p1, T1) ; ( Returns the enthalpy of water at given pressure and temperature in bar and degC ).
  5. As we extract the data, we use thermodynamic relation to further find state points and extract their data from XSteam .
  6. Sf and sg, hf and hg, where f and g stand for saturated liquid and saturated vapor respectively.
  7. The net work , work done by the turbine , work done to run the pump, Heat in and heat out are calculated using standard thermodynamic relation Efficiency and Specific steam consumption (s.s.c) of the Rankine cycle is calculated.
  8. T, s, and h are extracted at vapour and liquid line for plotting purpose, after 4th point for the variation you observe in the plot.
  9. The saturation curve is plotted in red for saturated liquid and saturated gas.
  10. A plot of T vs s and h vs s is created from all the points obtained from the program.
  11. The plot changes as the user input changes for the above-mentioned inputs.
  12. Results are displayed in the command window.

Output:

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.