Project 2 - Rankine cycle Simulator
clear;
clc;
close all;
% Add XSteam Library Path
addpath('/MATLAB Drive/'); % Change path if needed
savepath;
% Given Input Data
P1 = 30; % Boiler Pressure (bar)
T1 = 400; % Boiler Temperature (°C)
P2 = 0.05; % Condenser Pressure (bar)
% --- STATE 1: Turbine Inlet (Superheated Steam) ---
h1 = XSteam('h_pT', P1, T1);
s1 = XSteam('s_pT', P1, T1);
% --- STATE 2: Turbine Exit (Isentropic Expansion) ---
s2 = s1;
sf_p2 = XSteam('sL_p', P2);
sg_p2 = XSteam('sV_p', P2);
x2 = (s2 - sf_p2) / (sg_p2 - sf_p2);
h2 = XSteam('hL_p', P2) + x2 * (XSteam('hV_p', P2) - XSteam('hL_p', P2));
% --- STATE 3: Condenser Exit (Saturated Liquid) ---
h3 = XSteam('hL_p', P2);
s3 = XSteam('sL_p', P2);
% --- STATE 4: Pump Exit (Isentropic Compression) ---
P4 = P1;
v3 = XSteam('vL_p', P2);
h4 = h3 + v3 * (P4 - P2) * 100;
s4 = XSteam('sL_p', P4);
% --- WORK & HEAT CALCULATIONS ---
Wt = h1 - h2;
Wp = h4 - h3;
Wnet = Wt - Wp;
Qin = h1 - h4;
BWR = Wp / Wt;
% --- DISPLAY RESULTS ---
disp(' ')
disp('=== Rankine Cycle Results ===')
fprintf('h1 = %.2f kJ/kg, s1 = %.2f kJ/kg-K\n', h1, s1);
fprintf('h2 = %.2f kJ/kg, s2 = %.2f kJ/kg-K\n', h2, s2);
fprintf('h3 = %.2f kJ/kg, s3 = %.2f kJ/kg-K\n', h3, s3);
fprintf('h4 = %.2f kJ/kg, s4 = %.2f kJ/kg-K\n', h4, s4);
fprintf('Net Work Output = %.2f kJ/kg\n', Wnet);
fprintf('Back Work Ratio = %.2f\n', BWR);
% --- PLOTTING T-s & h-s DIAGRAMS ---
s_vals = [s1, s2, s3, s4, s1];
h_vals = [h1, h2, h3, h4, h1];
T_vals = [T1, XSteam('T_ps', P2, s2), XSteam('T_ps', P2, s3), XSteam('T_ps', P4, s4), T1];
figure(1);
plot(s_vals, T_vals, '-ob', 'LineWidth', 2);
xlabel('Entropy (s) [kJ/kg-K]');
ylabel('Temperature (T) [°C]');
title('T-s Diagram for Rankine Cycle');
grid on;
figure(2);
plot(s_vals, h_vals, '-or', 'LineWidth', 2);
xlabel('Entropy (s) [kJ/kg-K]');
ylabel('Enthalpy (h) [kJ/kg]');
title('h-s Diagram for Rankine Cycle');
grid on;