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:
- 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.
- 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).
- With the help of these inlets & from Xsteam data, the program calculates all the state points of the Rankine cycle.
- 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 ).
- As we extract the data, we use thermodynamic relation to further find state points and extract their data from XSteam .
- Sf and sg, hf and hg, where f and g stand for saturated liquid and saturated vapor respectively.
- 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.
- 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.
- The saturation curve is plotted in red for saturated liquid and saturated gas.
- A plot of T vs s and h vs s is created from all the points obtained from the program.
- The plot changes as the user input changes for the above-mentioned inputs.
- Results are displayed in the command window.
Output: