Project 2 - Rankine cycle Simulator
AIM:- Create a Rankine cycle simulator using MATLAB.
Objective:-
- Calculate each state points of the Rankine Cycle based on user inputs.
- Plot the corresponding T-s and h-s plots for the given set of inputs.
- Calculate Efficiency.
Theroy:-
The Rankine cycle is an idealized thermodynamic cycle of a heat engine that converts heat into mechanical work while undergoing a phase change.

- Four components of the Rankine Cycle:-
1. Pump
2. Boiler
3. Turbine
4. Condenser
- Four processes of the Rankine Cylce:-
close all
clear all
clc
%print proecss description
fprintf('1-2 Isobaric heat Transfer\n')
fprintf('2-3 Isentropic Expansion\n')
fprintf('3-4 Isobaric heat Rejection\n')
fprintf('Isentropic Compression\n')
%step 1:Enter Inputs
p1=input('Enter the pressure at the Turbine Inlet(in bar):');
T1=input('Enter the Temperature at the Turbineinlet (in Degree Celcius):');
p2=input('Enter the pressure at the Condensor (in bar):');
%atep 2: calculate each state point values.
%state point 1
h1= XSteam('h_pt',p1,T1);
S1= XSteam('s_pt',p1,T1);
%step 3: state point 2
s2=s1;
sf2=XSteam('sL_p',p2);
sg2=XSteam('sV_p',p2);
hg2=XSteam('hL_p',p2);
hg2=XSteam('hV_p',p2);
s2=sg2;
h2=hg2;
T2=XSteam('T_hs',h2,s2);
%step 4 : state point 3
T3=T2;
p3=p2;
s3=XSteam('sL_T',T3);
h3=XSteam('hL_T',T3);
v3=XSteam('vL_p',p2);
%step5 : state point 4
p4=p1;
s4=s3;
Cp4=XSteam('Cp_ps',p4,s4);
Cv4=XSteam('Cv_ps',p4,s4);
gamma=Cp4/Cv4;
r=(gamma-1)/gamma;
T4=T3*(p4/p3)^r;
%step 6: Calculate other output values.
Wt=h1-h2;
Wp=v3*(p1-p2)*100;
h4=Wp+h3;
W_net=Wt-Wp;
Qs=h1-h4;
N_per=(W_net/Qs)*100;
steam_rate=3600/(Wt-Wp);
%step 7: state point 5 and 6 which help in plotting
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);
%step 8: print all state point values to show.
fprintf('\n---------RESULT----------\n')
fprintf('At state point 1:\nP1 is : %4.2f Bar\nT1 is :4.2f Degree Celcius\nH1 is :%4.2f kJ/kg\nS1 is :%4.2f kJ\kg\n\n',p1,T1,h1,s1)
fprintf('At state point 2:\nP2 is : %4.2f Bar\nT2 is :4.2f Degree Celcius\nH2 is :%4.2f kJ/kg\nS2 is :%4.2f kJ\kg\n\n',p2,T2,h2,s2)
fprintf('At state point 3:\nP3 is : %4.2f Bar\nT3 is :4.2f Degree Celcius\nH3 is :%4.2f kJ/kg\nS3 is :%4.2f kJ\kg\n\n',p3,T3,h3,s3)
fprintf('At state point 4:\nP4 is : %4.2f Bar\nT4 is :4.2f Degree Celcius\nH4 is :%4.2f kJ/kg\nS4 is :%4.2f kJ\kg\n\n',p4,T4,h4,s4)
fprintf('Wt is :%4.2f kJ/kg\nWp is : %4.2f kJ/kg\nWnet is : %4.2f kJ/kg\nNtherm is : %4.2f percent\nS.S.C is :%4.2f kg/kWh',Wt,Wp,W_net,N_per,steam_rate)
%step 9:plot T-S Diagram
subplot(1,2,1)
T_rankine=linspace(T5,T1,5000);
for i =1:length(T_rankine)
s_rankine(i)=XSteam('s_pT',p1,T_rankine(I));
end
plot([s1 s2 s3 s4 s5 s6 s_rankine],[T1 T2 T3 T4 T5 T6 T_rankine],'linewidth',1.5);
hold on
T_curve=linspace(1,400,500);
for i=1:length(T_curve)
s_l(i)=XSteam('sL_T',T_curve(i));
s_l(i)=XSteam('sV_T',T_curve(i));
h_l(i)=XSteam('hL_T',T_curve(i));
h_l(i)=XSteam('hV_T',T_curve(i));
end
plot(s_l,T_curve);
plot(s_v,T_curve);
text(s1,T1,'1','Frontsize',15)
text(s2,T2,'2','Frontsize',15)
text(s3,T3,'3','Frontsize',15,'HorizontalAlignment','right','VerticalAlignment','top')
text(s4,T4,'4','Frontsize',15,'HorizontalAlignment','right','VerticalAlignment','bottom')
text(s5,T5,'5','Frontsize',15)
text(s6,T6,'6','Frontsize',15)
xlabel('Entropy in kJ/kgK');
ylabel('Temperature in Degree Celcius');
%step 10:plot H-S diagram
subplot([s1 s2 s3 s4 s1],[h1 h2 h3 h4 h1],'linewidth',2)
hold on
plot(s_v,h_v,'color','r')
plot(s_l,h_l,'color','r')
text(s1,h1,'1','frontSize',15)
text(s2,h2,'2','frontSize',15)
text(s3,h3,'3','frontSize',15,'HorizontalAlignment','right','VerticalAlignment','top')
text(s4,h4,'4','frontSize',15,'HorizontalAlignment','right','VerticalAlignment','bottom')
xlabel('Entropy in kJ/KgK')
ylabel('Enthalpy in kJ/kg')