Challenge

Project 2 - Rankine cycle Simulator

AIM: Create a Rankine Cycle Simulator using Octave.

OBJECTIVE:

  • Calculate each state points of the Rankine Cycle (any type of your choice) based on user inputs.
  • Plot the corresponding T-s and h-s plots for the given set of inputs.
  • Calculate Efficiency.

THEORY:

The Rankine cycle is an idealized thermodynamic cycle of a heat engine that converts heat into mechanical work while undergoing a phase change. It is an idealized cycle in which friction losses in each of the four components are neglected. The heat is supplied externally to a closed loop, which usually uses water as the working fluid.

  • Four components of the Rankine cycle:
  1. Pump
  2. Boiler
  3. Turbine
  4. Condenser
  • Four processes of the Rankine cycle:

1 2: Isentropic Expansion

Turbine (1-2): Superheated steam enters into the Turbine and expands isentropically resulting in the production of work. The shaft of the turbine is connected to the generator. This results in the production of electricity i.e Mechanical energy gets converted into electric energy. Work produced by the turbine,

WT=m(h1-h2)K">WT=m(h1−h2)KWT=m(h1-h2)K


2-3: Constant Pressure Heat Rejection

Condenser (2-3): The expanded vapour is then passed through a condenser, where it gets condensed and converts into liquid again. This liquid is again pumped to the boiler.

Qr=m(h2-h3)K">Qr=m(h2−h3)KQr=m(h2-h3)K


3-4: Isentropic Compression by the Pump

Pump (3-4): The water enters into the pump in a saturated state. Then the liquid is compressed isentropically until it meets the boiler pressure. Work done by the pump is,

WP=m(h3-h4)K">WP=m(h3−h4)KWP=m(h3-h4)K

4-1: Constant Pressure Heat Addition

Boiler (4-1): The water enters into the boiler as compressed and leaves as superheated from the boiler. Thus the phase changes from liquid to vapour. The heat supplied by the boiler is

Qb=m(h1-h4)K">Qb=m(h1−h4)KQb=m(h1-h4)K

Here we take mass flow rate m = 1 for this code.

  • The efficiency of the Steam Cycle is given by

η=WnQ1=WT-WPQ1">η=WnQ1=WT−WPQ1η=WnQ1=WT-WPQ1

  • Applying the Steady Flow Energy Equation (SFEE) to all the process, neglecting the Friction losses and changs in Kinetic & Potential Energy,

    • Q1=h1-h4 @Boiler
    • Wt=h1-h2 @Turbine
    • Q2=h2-h3 @Condenser
    • Wp=h4-h3 @Pump
  • The Capacity of the Steam Plant is often expressed interms of Steam Rate (SR) or Specific Steam Consumption (SSC) S.S.C.=3600WnkgkWh">S.S.C.=3600WnkgkWhS.S.C.=3600WnkgkWh

Required Inputs:

Turbine Inlet temperature = 400° C

Turbine Inlet Pressure = 30 bars

Turbine Outlet Pressure = 0.05 bars = Condenser Inlet Pressure

CODE:

%Rankine Cycle Simulator
close all
clear all
clc
disp('RANKINE CYCLE SIMULATOR')
disp('1-2 is isentropic expansion in turbine')
disp('2-3 is constant pressure heat rejection in condenser')
disp('3-4 is isentropic compression in pump')
disp('4-1 is constant pressure heat addition in boiler')

p1=input('enter the pressure at the inlet of turbine (in bar)=    ');
t1=input('enter the temp at the inlet of turbine (in degree C)=    ');
p2=input('enter the pressure at the inlet of condenser (in bar)=   ');


%steam condition at the inlet of turbine
h1=XSteam('h_pt',p1,t1);
s1=XSteam('s_pt',p1,t1);


%steam condition at the outlet of turbine
sg2=XSteam('sV_p',p2);
sf2=XSteam('sL_p',p2);
sfg2=sg2-sf2;
x2=(s1-sf2)/sfg2;
s2=sf2+x2*sfg2;




hf2=XSteam('hL_p',p2);
hg2=XSteam('hV_p',p2);
hfg2=hg2-hf2;
h2=hf2+x2*hfg2;

t2=XSteam('Tsat_p',p2);


%workdone by the turbine
W_t=h1-h2;

%steam condition at the outlet of condenser
p3=p2;
t3=XSteam('Tsat_p',p2);
h3=XSteam('hL_p',p2);
s3=XSteam('sL_p',p2);
vf=XSteam('vL_p',p2);
t22=t3;

%calculation of pump work
W_p=vf*(p1-p2)*100;


%steam Condition at state 4
p4=p1;

h4=W_p+h3;
s4=s3;
t4=XSteam('T_ph',p4,h4);




%work net
W_net=W_t-W_p;

%heat supplied
Q_s=h1-h4;
%heat rejected
Q_r=h2-h3;

%efficiency
efficiency=(W_net/Q_s);

%specific steam consumption
SSC=3600/W_net;
tf_sat=XSteam('Tsat_p',p1);
sf_sat=XSteam('sL_p',p1);
hf_sat=XSteam('hL_p',p1);
sg_sat=XSteam('sV_p',p1);
hg_sat=XSteam('hV_p',p1);

%plotting T-S diagram
hold on

%for plottin saturation curve
tsat1=linspace(0,374,1000);

for i=1:length(tsat1)
ss1(i)=XSteam('sL_T',tsat1(i));
end

for j=1:length(tsat1)
ss2(j)=XSteam('sV_T',tsat1(j));
end


plot(ss1,tsat1,'b')

 plot(ss2,tsat1,'r')

%for saturation temp at p1
temp=XSteam('Tsat_p',p1);
t=linspace(t4,temp,30);
for i=1:length(t)
    S(i)=XSteam('s_pt',p1,t(i));
    hold on
   
end

t0=linspace(temp,t1,300);
for i=1:length(t0)
    S0(i)=XSteam('s_pt',p1,t0(i));
end
    
 %for plotting turbine work
 plot([s1 s2],[t1 t2],'g')
 %for heat rejection in condenser
 plot([s2 s3],[t2 t3],'b')
 %for pump work
 plot([s3 s4],[t3 t4],'r')
  
 %plotting curved line(constant pressure line in wet region) from outlet of
 %the pump to the point from where phase change starts
plot(S,t,'y')

%plotting the phase change region
 plot([sf_sat sg_sat],[tf_sat tf_sat],'y')
 
 %plotting the curved constant pressure line from where the phase change
 %ends to the superheated point
 plot(S0,t0,'y')

legend('Saturation Curve L','Saturation Curve V','Turbine','condenser','pump','boiler','location','northwest')
title('T-S Diagram')
xlabel('Entropy')
ylabel('Temperature')


%plotting H-S diagram
figure(2)
hold on


%for plotting the saturation curve
tsat1=linspace(0,374,1000);

for i=1:length(tsat1)
hh1(i)=XSteam('hL_T',tsat1(i));
end

for j=1:length(tsat1)
hh2(j)=XSteam('hV_T',tsat1(j));
end




plot(ss1,hh1,'b')
plot(ss2,hh2,'r')

%for plotting tubine

plot([s1 s2],[h1 h2],'g')

%for condenser
plot([s2 s3],[h2 h3],'b')

%for plotting pump
plot([s3 s4],[h3 h4],'r')
s=linspace(s3,s1,1000);
for i=1:length(s)
h(i)=XSteam('h_ps',p1,s(i));
end
%for plotting boiler
% plot([s4 s1],[h4 h1],'y')
plot(s,h,'y')

legend('Saturation Curve L','Saturation Curve V','Turbine','condenser','pump','boiler','location','northwest')
title('H-S Diagram')
xlabel('Entropy')
ylabel('Enthalpy')


%outputs
%at state 1
fprintf('At State Point 1:\r\n')
fprintf('P1 is : %f Bar\r\n',p1)
fprintf('T1 is : %f Deg Celcius\r\n',t1)
fprintf('H1 is : %f KJ/Kg\r\n',h1)
fprintf('S1 is : %f KJ/KgK\r\n',s1)

%at state 2
fprintf('At State Point 2:\r\n')
fprintf('P2 is : %f Bar\r\n',p2)
fprintf('T2 is : %f Deg Celcius\r\n',t2)
fprintf('H2 is : %f KJ/Kg\r\n',h2)
fprintf('S2 is : %f KJ/KgK\r\n',s2)
fprintf('X is  : %f \r\n',x2)

%at state 3
fprintf('At State Point 3:\r\n')
fprintf('P3 is : %f Bar\r\n',p3)
fprintf('T3 is : %f Deg Celcius\r\n',t3)
fprintf('H3 is : %f KJ/Kg\r\n',h3)
fprintf('S3 is : %f KJ/KgK\r\n',s3)

%state 4
fprintf('At State Point 4:\r\n')
fprintf('P4 is : %f Bar\r\n',p4)
fprintf('T4 is : %f Deg Celcius\r\n',t4)
fprintf('H4 is : %f KJ/Kg\r\n',h4)
fprintf('S4 is : %f KJ/KgK\r\n',s4)

%calculations
fprintf('Work Done By Turbine : %f kJ/kg\r\n',W_t)
fprintf('Work Done By Pump : %f kJ/kg\r\n',W_p)
fprintf('Heat Added in The Boiler: %f KJ/kg\r\n',Q_s)
fprintf('Heat Rejected in The Condenser: %f KJ/kg\r\n',Q_r)
fprintf('Thermal Efficiency is : %f %%\r\n',efficiency*100)
fprintf('Specific Steam Consumption : %f KJ/kWh\r\n',SSC)

RESULTS:

HS PLOT

TS PLOT:

OUTPUT WINDOW:

ERROR:

error due to the missing paranthesis "()" .After that it was resolved.

Error due to the missing opening square bracket in the plot.

CONCLUSION:

In here we plotthe different graphs between t-s and h-s and the desired output is found out from this and plotted in a graph.

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.