% Ideal Rankine Cycle Simulator
%% Clearing workspace, closing figures, clearing command window
clear all
close all
clc
%% Displaying title and the process in the command window
fprintf(\' IDEAL RANKINE CYCLE SIMULATOR \\n\\n\')
fprintf(\'1-2 is Isentropic Expansion in the Turbine\\n\')
fprintf(\'2-3 is Constant Pressure Heat Rejection by the Condenser\\n\')
fprintf(\'3-2 is Isentropic Compression in the Pump\\n\')
fprintf(\'4-1 is Constant Pressure Heat Addition by the Boiler\\n\\n\')
%% Manual inputs
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 the Condenser (in bar): \');
disp(\'\')
disp(\' RESULTS\')
%% State point 1
disp(\'At state point 1:\')
fprintf(\'P1 is : %g Bar\\n\', P1)
fprintf(\'T1 is : %g Deg Celcius\\n\', T1)
H1 = XSteam(\'h_pt\', P1, T1);
fprintf(\'H1 is : %g kJ/kg\\n\', H1)
S1 = XSteam(\'s_pt\', P1, T1);
fprintf(\'S1 is : %g kJ/kgK\\n\\n\', S1)
%% State point 2
disp(\'At state point 2:\')
P2 = P2;
fprintf(\'P2 is : %g Bar\\n\', P2)
S2 = S1;
fprintf(\'S2 is : %g kJ/kgK\\n\', S2)
Sg = XSteam(\'sV_p\', P2);
Sf = XSteam(\'SL_p\', P2);
Sfg = Sg - Sf;
X2 = (S2 - Sf) / (Sfg); % Dryness Fraction at state point 2
fprintf(\'X2 is : %g\\n\', X2)
Hf = XSteam(\'hL_p\', P2);
Hg = XSteam(\'hV_p\', P2);
Hfg = Hg - Hf;
H2 = Hf + X2 * Hfg;
fprintf(\'H2 is : %g kJ/kg\\n\', H2)
T2 = XSteam(\'Tsat_p\', P2);
fprintf(\'T2 is : %g Deg Celcius\\n\\n\', T2)
%% State point 3
disp(\'At state point 3:\')
P3 = P2;
fprintf(\'P3 is : %g Bar\\n\', P3)
V3 = XSteam(\'vL_p\', P3);
T3 = T2;
fprintf(\'T3 is : %g Deg Celcius\\n\', T3)
H3 = XSteam(\'hL_p\', P3);
fprintf(\'H3 is : %g kJ/kg\\n\', H3)
S3 = XSteam(\'sL_p\', P3);
fprintf(\'S3 is : %g kJ/kgK\\n\\n\', S3)
%% State point 4
disp(\'At state point 4:\')
P4 = P1;
fprintf(\'P4 is : %g Bar\\n\', P4)
S4 = S3;
fprintf(\'S4 is : %g kJ/kgK\\n\', S4)
Wp = V3 * (P4 - P3) * 100;
H4 = Wp + H3;
fprintf(\'H4 is : %g kJ/kg\\n\', H4)
T4 = XSteam(\'T_ps\', P4, S4);
fprintf(\'T4 is : %g Deg Celcius\\n\\n\', T4)
%% Work done, heat, SSC and efficiency calculations
Wt = H1 - H2;
fprintf(\'Wt is : %g kJ/kg\\n\', Wt)
fprintf(\'Wp is : %g kJ/kg\\n\', Wp)
Wnet = Wt - Wp;
fprintf(\'Wnet is : %g kJ/kg\\n\', Wnet)
Qin = H1 - H4;
Ntherm = Wnet / Qin * 1e2; % Effieciency
fprintf(\'Ntherm is : %g\', Ntherm); disp(\'%\')
SSC = 3600 / Wt; % Specific steam consuption
fprintf(\'S.S.C is : %g kg/kWh\\n\\n\', SSC)
%% Calculation for plotting Liquid and Vapour lines
temp = linspace(1, 373, 500);
for i = 1 : length(temp)
H_L(i) = XSteam(\'hL_T\', temp(i));
H_V(i) = XSteam(\'hV_T\', temp(i));
S_L(i) = XSteam(\'sL_T\', temp(i));
S_V(i) = XSteam(\'sV_T\', temp(i));
end
%% Points between state point 4 to state point 1
S5 = XSteam(\'sL_p\', P1);
S6 = XSteam(\'sV_p\', P1);
T5 = XSteam(\'Tsat_p\', P1);
T6 = XSteam(\'Tsat_p\', P1);
%% Ploting T - S and H - S Diagrams
rankine_plots(S1, S2, S3, S4, S5, S6, T1, T2, T3, T4, T5, T6, H1, H2, H3, H4, temp, S_L, S_V, H_L, H_V)
Below is the function file \'rankine_plots.m\' used in driver script which plots the T - S and H - S diagrams
% rankine_plots - It generates and saves T-S and H-S Diagrams
function rankine_plots(S1, S2, S3, S4, S5, S6, T1, T2, T3, T4, T5, T6, H1, H2, H3, H4, temp, S_L, S_V, H_L, H_V)
figure(1) % T-S
hold on
plot([S1 S2], [T1 T2], \'r\', \'linewidth\', 2)
plot([S2 S3], [T2 T3], \'y\', \'linewidth\', 2)
plot([S3 S4], [T3 T4], \'b\', \'linewidth\', 2)
plot([S4 S5 S6 S1], [T4 T5 T6 T1], \'g\', \'linewidth\', 2)
plot(S_L, temp, \'c\', \'linewidth\', 1.5)
plot(S_V, temp, \'k\', \'linewidth\', 1.5)
l = legend(\'Isentropic Expansion\',...
\'Constant Pressure Heat Rejection\',...
\'Isentropic Compression\',...
\'Constant Pressure Heat Addition\',...
\'Liquid Line\', \'Vapour Line\');
set(l,\'location\',\'northwest\');
title(\'T-S Diagram\', \'FontSize\', 15)
ylabel(\'Temprature (\\degC)\', \'FontSize\', 12)
xlabel(\'Specific Entropy (kJ/kgK)\', \'FontSize\', 12)
figure(2) % H-S
hold on
plot([S1 S2], [H1 H2], \'r\', \'linewidth\', 2);
plot([S2 S3], [H2 H3], \'y\', \'linewidth\', 2);
plot([S3 S4], [H3 H4], \'b\', \'linewidth\', 2);
plot([S4 S1], [H4 H1], \'g\', \'linewidth\', 2);
plot(S_L, H_L, \'c\', \'linewidth\', 1.5)
plot(S_V, H_V, \'k\', \'linewidth\', 1.5)
l = legend(\'Isentropic Expansion\',...
\'Constant Pressure Heat Rejection\',...
\'Isentropic Compression\',...
\'Constant Pressure Heat Addition\',...
\'Liquid Line\', \'Vapour Line\');
set(l,\'location\',\'northwest\');
title(\'H-S Diagram\', \'FontSize\', 15)
ylabel(\'Specific Enthalpy (kJ/kg)\', \'FontSize\', 12)
xlabel(\'Specific Entropy (kJ/kgK)\', \'FontSize\', 12)
% Saving the plots obtained
saveas(1, \'TS.png\')
saveas(2, \'HS.png\')
end
Results:
Output Screen -
IDEAL RANKINE CYCLE SIMULATOR
1-2 is Isentropic Expansion in the Turbine
2-3 is Constant Pressure Heat Rejection by the Condenser
3-2 is Isentropic Compression in the Pump
4-1 is Constant Pressure Heat Addition by the Boiler
Enter the Pressure at the Turbine Inlet (in bar): 44
Enter the Temperature at the Turbine inlet (in Degree Celcius): 538
Enter the Pressure at the Condenser (in bar): 5.83
RESULTS
At state point 1:
P1 is : 44 Bar
T1 is : 538 Deg Celcius
H1 is : 3528.83 kJ/kg
S1 is : 7.15399 kJ/kgK
At state point 2:
P2 is : 5.83 Bar
S2 is : 7.15399 kJ/kgK
X2 is : 1.07942
H2 is : 2920.82 kJ/kg
T2 is : 157.712 Deg Celcius
At state point 3:
P3 is : 5.83 Bar
T3 is : 157.712 Deg Celcius
H3 is : 665.638 kJ/kg
S3 is : 1.91987 kJ/kgK
At state point 4:
P4 is : 44 Bar
S4 is : 1.91987 kJ/kgK
H4 is : 669.834 kJ/kg
T4 is : 158.16 Deg Celcius
Wt is : 608.008 kJ/kg
Wp is : 4.196 kJ/kg
Wnet is : 603.812 kJ/kg
Ntherm is : 21.1197%
S.S.C is : 5.92098 kg/kWh
- Plots -