Challenge

Project 2 - Rankine cycle Simulator

% A program for simulating Rankine cycle and plot required graphs. 
close all
clear all 
clc
% Subscript for different state points
% 1 = Turbine inlet or Boiler outlet, 2 = Condenser inlet or Turbine outlet,
% 3 = Pump inlet or Condenser outlet, 4 = Boiler inlet or Pump outlet
%% Input parameters -
% p1 = Turbine inlet pressure (bar),
% T1 = Temperature at turbine inlet(deg C),
% p2 = Turbine outlet pressure (bar),
% Description about four process,
fprintf('Process (1-2) - Isentropic Expansion in the Turbinen')
fprintf('Process (2-3) - Isobaric Heat Rejection by the Condensern') 
fprintf('Process (3-2) - Isentropic Compression in the Pumpn')
fprintf('Process (4-1) - Isobaric Heat Addition by the Boilern')

% For Inputting state variables at point 1,

p1=input('Enter the Pressure at the Turbine Inlet (in bar): ');
t1= input('Enter the Temperature at the Turbine inlet (in Degree celsius): ');
p2= input('Enter the Pressure at the Turbine Outlet (in bar): '); 
%%State variable at state point 1(i.e Turbine Inlet )
h1	= XSteam('h_pT',p1,t1); % Enthalpy in [kJ/kg]
s1	=  XSteam('s_pT',p1,t1);  % Specific entropy	in [kJ/kg K]
v1	= XSteam('v_pT',p1,t1); % Specific volume in [m3/kg]

%% State variable at state point 2(i.e Conderser Inlet)
s2 = s1;	% Specific entropy	in [kJ/kg K]
h2 = XSteam('h_px',p2,XSteam('x_ps',p2,s2));	% Enthalpy in [kJ/kg]
t2  =  XSteam('T_ps',p2,s2);	% Temperature in [degree C]
v2  =  XSteam('v_ps',p2,s2);	% Specific volume in [m3/kg]

%% State variable at state point 3 (i.e Pump Inlet)
p3 = p2;	% Pressure in [bar]
t3  =  XSteam('Tsat_p',p3);	% Temperature in [degree C]
h3 = XSteam('hL_p',p3);	% Enthalpy in [kJ/kg]
s3  =  XSteam('sL_p',p3);	%  Specific  entropy	in [kJ/kg K]
v3  =  XSteam('vL_p',p3);	% Inlet Specific volume in [m3/kg]

%% State variable at state point 4 (i.e Boiler Inlet)
s4 = s3;	% Specific entropy	in [kJ/kg K]
p4 = p1;	% Pressure in [bar]
h4 = XSteam('h_ps',p4,s4);	% Enthalpy in [kJ/kg]
t4  =  XSteam('T_ps',p4,s4);	% Temperature in [degree C]
v4  =  XSteam('v_ps',p4,s4);	% Specific volume in [m3/kg]

%% After defining all the states now lets process each of these state and in between data variables
%% Ploting Graph for Ideal Rankine cycle in "T" vs "s". figure(1)
hold on
plot([s1  s2],[t1  t2],'color','r','linewidth',5);
plot([s2  s3],[t2 t3],'color','k','linewidth',5);
plot([s3 s4],[t3 t4],'color','c','linewidth',5); 
Trange = linspace(t4,t1,500);
for i = 1:length(Trange)
    s_range(i) = XSteam('s_pT',p1,Trange(i));
    h_range23(i) = XSteam('h_ps',p1,s_range(i)); 
    h_range41(i) = XSteam('h_ps',p2,s_range(i));
end
plot(s_range,Trange,'color','b','linewidth',5);
legend('ReversibleAdiabaticExpansion', 'ConstantPressureHeatRejection', 'ReversibleIsentropicCompression','ConstantPressureHeatAddtion');
%% Ploting Graph for Ideal Rankine cycle in 'h' vs 's'. figure(2)
hold on
plot([s1  s2],[h1  h2],'color','r','linewidth',5);
plot(s_range,h_range23,'color','k','linewidth',5); 
plot([s3 s4],[h3 h4],'color','c','linewidth',5);
plot(s_range,h_range41,'color','b','linewidth',5);
legend('ReversibleAdiabaticExpansion', 'ConstantPressureHeatRejection', 'ReversibleIsentropicCompression','ConstantPressureHeatAddtion');
%% Ploting graphs for 'T' vs 's'
t_range = linspace(0,374.15,500);
%  Temperature from 0 to critical point of water in [degree  C]
figure(1) hold on
for i = 1:length(t_range)
    plot(XSteam('sL_t',t_range(i)),t_range(i),'.','color','g')
    plot(XSteam('sV_t',t_range(i)),t_range(i),'.','color','g')
end

%% Ploting graphs for	'h' vs 's' figure(2)
hold on
for i = 1:length(t_range)
    plot(XSteam('sL_t',t_range(i)),XSteam('hL_t',t_range(i)),'.','color','g')
    plot(XSteam('sV_t',t_range(i)),XSteam('hV_t',t_range(i)),'.','color','g')
end

%% Ploting Diagram for All state points for Ideal Rankine cycle in 'T' vs 's' figure(1)
hold on
plot(s1,t1,'ko')
plot(s2,t2,'ko')
plot(s3,t3,'ko')
plot(s4,t4,'ko') grid on
title('T-s Diagram of RANKINE CYCLE') 
xlabel('Temperature in [degree C]')
ylabel('Specific entropy	in [kJ/kg K]')

%% Ploting Diagram for All state points for Ideal Rankine cycle in 'h' vs 's' figure(2)
hold on
plot(s1,h1,'ko')
plot(s2,h2,'ko')
plot(s3,h3,'ko')
plot(s4,h4,'ko') grid on
title('h-s Diagram of RANKINE CYCLE') xlabel('Enthalpy in [kJ/kg]')
ylabel('Specific entropy	in [kJ/kg K]')



%% Finally Calculating Work and Efficiency
Work_turbine = h1  - h2;	%  work  transferred  from  the  working  fluid (kJ/kg)
Q_taken_out_condenser = h2 - h3;		% heat rejected from the working fluid (kJ/kg) Work_pump = h4 - h3;	% work transferred into the working fluid (kJ/kg)
Q_given_boiler  =  h1 - h4;	% heat transferred to the working fluid (kJ/kg) Back_Work_Ratio = Work_turbine / Work_pump;		% Back Work Ratio
SSE  =  3600/(Work_turbine - Work_pump);	% Specific Steam Consumption [kg/kWh]
Work_net  =  Work_turbine - Work_pump;	% Net work on the working fluid (kJ/kg)
Effi_rankine   =   Work_net/Q_given_boiler;	% Rankine Cycle Efficiency

clc
%% Printing Results to the USER GIVING input
fprintf('**********RANKINE  CYCLE:IDEAL  CYCLE  FOR  VAPOUR  POWER  CYCLE**********nn');

fprintf('Process 1-2: Reversible adiabatic expansion process in the steam turbinen'); fprintf('Process 2-3: Constant pressure heat transfer process in the condensern');
fprintf('Process 3-4: Reversible adiabatic compression process in the pumpn');
fprintf('Process 4-1: Constant pressure heat transfer process in the boilernn');

fprintf('----------State variable at state point 1	n');
fprintf('Turbine Inlet Temperature T1 = %.5f in [degree C]n',t1); 
fprintf('Turbine Inlet Pressure p1 = %.5f in [bar]n',p1);
fprintf('Turbine Inlet Enthalpy h1 = %.5f in [kJ/kg]n',h1);
fprintf('Turbine Inlet Specific entropy s1 = %.5f in [kJ/kg K]n',s1); 
fprintf('Turbine Inlet Specific volume v1 = %.5f in [m3/kg]nn',v1);

fprintf('----------State variable at state point 2	n');
fprintf('Conderser Inlet Temperature T1 = %.3f in [degree C]n',t2); 
fprintf('Conderser Inlet Pressure p1 = %.3f in [bar]n',p2);
fprintf('Conderser Inlet Enthalpy h1 = %.3f in [kJ/kg]n',h2);
fprintf('Conderser Inlet Specific entropy s1 = %.3f in [kJ/kg K]n',s2); 
fprintf('Conderser Inlet Specific volume v1 = %.3f in [m3/kg]n n',v2);

fprintf('----------State variable at state point 3	n');
fprintf('Pump Inlet Temperature T1 = %.3f in [degree C]n',t3); 
fprintf('Pump Inlet Pressure p1 = %.3f in [bar]n',p3);
fprintf('Pump Inlet Enthalpy h1 = %.3f in [kJ/kg]n',h3);
fprintf('Pump Inlet Specific entropy s1 = %.3f in [kJ/kg K]n',s3); 
fprintf('Pump Inlet Specific volume v1 = %.3f in [m3/kg]nn',v3);

fprintf('----------State variable at state point 4	n');
fprintf('Boiler Inlet Temperature T1 = %.4f in [degree C]n',t4); 
fprintf('Boiler Inlet Pressure p1 = %.4f in [bar]n',p4);
fprintf('Boiler Inlet Enthalpy h1 = %.4f in [kJ/kg]n',h4);
fprintf('Boiler Inlet Specific entropy s1 = %.4f in [kJ/kg K]n',s4); 
fprintf('Boiler Inlet Specific volume v1 = %.4f in [m3/kg]n n',v4);

fprintf('----------Work and Efficiency	n');
fprintf('Work transferred from the working fluid Wturbine = %.4f in [kJ/kg]n',Work_turbine);
fprintf('Heat rejected from the working fluid Qcondenser = %.4f in [kJ/kg]n',Q_taken_out_condenser); fprintf('Work transferred into the working fluid Wpump = %.4f in [kJ/kg]n',Work_pump);
fprintf('Heat transferred to the working fluid Qboiler = %.4f in [kJ/kg]n n',Q_given_boiler);

fprintf('Back Work Ratio BWR = %.4f n',Back_Work_Ratio);
fprintf('Specific Steam Consumption SSE = %.4f in [kg/kWh] n',SSE);
fprintf('Net work on the working fluid Wnet = %.4f in [kJ/kg] n',Work_net);
fprintf('Rankine Cycle Efficiency ETArankine = %.4f %% nn',Effi_rankine*100);

fprintf(' n ..................SUCESSFULLY DONE THE CALCULATIONS.	n');
%% END




SOLUTION STEPS :-

1. To Get different state variables, all the process parameters should be Expressed such as all four processes occurs and input parameters as state 1.

2. From the standard Xsteam library to get the steam table data for water, most of the points in between state variables are calculated. AND their corresponding parameters such as enthalpy, entropy, specific heat, saturation temperature,

3. ALL the state points are used to find out net work done, work done by turbine, thermal efficiency, back work ratio, etc according to their thermodynamic relations and necessary formulas.

4. To plot the property diagram of water, i.e., saturation liquid and vapour line , an array is created using linspace command from 0 to value of T1 with 5000 evenly spaced points in between them and suitable state variables are iterated using for loop.

5. To plot T-s and h-s diagram, all the required points are plotted and marked using text

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.