close all
clear all
clc
while (1) % WHILE LOOP IS USED IN THE STARTING OF THE PROGRAM
% Printing Discrition Of All Process
fprintf(' RANKINE CYCLE SIMULATOR\n'); % PRINTING THE TITLE OF THE PROGRAM
fprintf('Process 1-2: Isentropic Expansion in The Turbine\n'); % PRINTING THE PROCESS STEPS, FIRST PROCESS ISENTROPIC EXPANSION IN TURBINE
fprintf('Process 2-3: Constant Pressure Heat Rejection by The Condenser\n'); % SECOND PROCESS IS CONSTANT PRESSURE HEAT REJECTION BY CONDENESER
fprintf('Process 3-4: Isentropic Compression in The Pump\n'); % THIRD PROCESS IS ISENTROPIC COMPRESSION IN PUMP
fprintf('Process 4-1: Constant Pressure Heat Addition by The Boiler\n'); % LAST PROCESS IS CONSTANT PRESSURE HEAT ADDITION BY THE BOILER
% Taking All Input Arguments
P1 = input('Enter The Pressure at The Turbine Inlet (in bar): '); % P1 IS TAKEN AS THE INPUT OF PRESSURE OF THE TURBINE AT INLET
T1 = input('Enter The Temperature at The Turbine Inlet (in degree celsius): '); % T1 IS TAKEN AS INPUT OF TEMPERATURE AT THE TURBINE INLET
P2 = input('Enter The Pressure at The Condenser (in bar): '); % P2 IS TAKEN AS INPUT OF PRESSURE AT CONDENSER
% Calculating State Varibles At Point 1
H1 = XSteam('h_pt',P1,T1); % ENTHLAPY AT POINT 1
S1 = XSteam('s_pt',P1,T1); % ENTROPY AT POINT 1
Hf_1 = XSteam('hL_p',P1); % ENTHLAPY OF SATURATED LIQUID
Hg_1 = XSteam('hV_p',P1); % ENTHLAPY OF SATURATED VAPOUR
Ts_1 = XSteam('Tsat_p',P1); % SATURATED TEMPERATURE
Sf_1 = XSteam('sL_p',P1); % ENTROPY OF SATURATED LIQUID
Sg_1 = XSteam('sV_p',P1); % ENTROPY OF SATURATED VAPOUR
% Calculating State Variables At Point 2
S2 = S1; % 1 - 2 IS ISENTROPIC PROCESS
Sf_2 = XSteam('sL_p',P2); % ENTROPY OF SATURATED LIQUID
Sg_2 = XSteam('sV_p',P2); % ENTROPY OF SATURATED VAPOUR
X = (S2 - Sf_2)/(Sg_2 - Sf_2); % DRYNESS FACTOR
Hf_2 = XSteam('hL_p',P2); % ENTHLAPY OF SATURATED LIQUID
Hg_2 = XSteam('hV_p',P2); % ENTHLAPY OF SATURATED VAPOUR
H2 = Hf_2 + X * (Hg_2 - Hf_2); % ENTHLAPY AT POINT 2
T2 = XSteam('T_ph',P2,H2); % TEMPREATURE AT POINT 2
Ts_2 = XSteam('Tsat_p',P2); % SATURATED TEMPERATURE
% Calculation State Variables At Point 3
H3 = Hf_2; % ENTHLAPY AT POINT 3
S3 = Sf_2; % ENTROPY AT POINT 3
T3 = T2; % TEMPERATURE AT POINT 3
P3 = P2; % PRESSURE AT POINT 3
% Calculation State Variables At Point 4
P4 = P1; % 4 - 1 IS CONSTANT PRESSURE HEAT ADDITION PROCESS
S4 = S3; % 3 - 4 IS ISENTROPIC PROCESS
H4 = XSteam('h_ps',P4,S4); % ENTHLAPY AT POINT 4
T4 = XSteam('T_ps',P4,S4); % TEMPERATURE AT POINT 4
t =linspace(0,374,500); % FOR PLOTTING SATURATION CURVE
% Plot T-S Diagram
figure(1) % FIGURE 1 IS SAID TO BE PLOTTING OF T - S DIAGRAM
hold on % HOLD ON COMMAND IS USED
% Plotting The Saturation Curve
for i = 1:length(t) % FOR LOOP IS USED, I IS A INCREAMENT VECTOR FOR LENGTH t
plot(XSteam('sL_T',t(i)),t(i),'.','Color','r') % PLOTTING SATURATED LIQUID CURVE
plot(XSteam('sV_T',t(i)),t(i),'.','Color','r') % PLOTTING SATURATED VAPOUR CURVE
end
% Plotting The Rankine Curve
b1 = plot([S1,S2],[T1,T2],'Color','b','LineWidth',3); % POINT B1 IS USED TO PLOT THE POINT ON SATURATED CURVE
if X>1 % IF LOOP IS USED, IF THE X IS GRATER THAN 1 THEN THE VALUE OF B2 IS CALCULATED
T3 = Ts_2; % T3 IS EQUAL TO THE SATURATION TEMPERATURE
b2 = plot ([S2 Sg_2 S3],[T2 Ts_2 T3],'color','m','linewidth',3); % B2 THEN PLOTED USING THE VALUE OBTAINED
T2 = Ts_2; % T2 IS EQUAL TO SATURATION TEMPERATURE
else
b2 = plot ([S2,S3],[T2,T3],'color','m','linewidth',3); % ELSE IS USED IF THE X IS LESSER THAN 1, ANOTHER FORMULA IS USED AND PLOTTED
end % END OF THE IF LOOP AND THE VALUE OF B2 IS CALCULATED
b3 = plot ([S3,S4],[T3,T4],'Color','k','linewidth',3); % B3 IS FOUND BY THE USE OF PLOT COMMAND
b4 = plot ([S4 Sf_1 Sg_1 S1],[T4 Ts_1 Ts_1 T1],'Color','g','LineWidth',3); % B4 IS PLOTTED USING THE PLOT COMMAND
axis([0 15 -5 (T1+200)]) % AXIS OF THE GRAPH IS TAKEN
xlabel('SPECIFIC ENTROPY [kJ/kg-K]') % LABELING THE X AXIS AS SPECIFIC ENTROPY
ylabel('TEMPERATURE [K]') % LABELING THE Y AXIS AS TEMPERATURE
legend([b1,b2,b3,b4],{'Isentropic Expansion in Turbine','Isentropic Heat Rejection in Condenser','Reversible Adiabatic Compression in Pump','Isentropic Heat Addition in Boiler'},'Location','northeast');
title('Temperature v/s Specific Entropy (T-S Digram)') % TITLE OF THE GRAPH IS TAKEN
hold off % HOLD OFF COMMAND IS USED TO STOP THE FIGURE
% Plotting The H-S Diagram
figure(2) % FIGURE 2 IS USED TO PLOT H - S DAGRAM
hold on % HOLD ON COMMAND IS USED TO STOP
% Plotting The Saturation Curve
for i = 1:length(t) % FOR LOOP IS USED AND I IS SAID TO BE INCREAMENT OPREATOR
plot(XSteam('sL_T',t(i)),XSteam('hL_T',t(i)),'.','Color','r') % PLOT COMMAND IS USED TO PLOT BOTH SATURATED LIQUID ENTROPY AND ENTHLAPY
plot(XSteam('sV_T',t(i)),XSteam('hV_T',t(i)),'.','Color','r') % PLOT COMMAND IS USED TO PLOT BOTH SATURATED VAPOUR ENTROPY AND ENTHLAPY
end
% Plotting The Rankine Curve
a1 = plot ([S1,S2],[H1,H2],'Color','b','LineWidth',3); % a1,a2,a3 & a4 ARE USED TO PLOT
a2 = plot ([S2,S3],[H2,H3],'color','g','linewidth',3); % S1,S2,S3 & S4 ARE THE ENTROPY POINTS TO BE PLOTED
a3 = plot ([S3,S4],[H3,H4],'Color','k','linewidth',3); % H1,H2,H3 & H4 ARE THE ENTHLAPY POINTS TO BE PLOTED
a4 = plot ([S4,S1],[H4,H1],'color','m','linewidth',3); % COLOR AND LINEWIDTH COMMANDS ARE USED FOR PLOTTING THE CURVES
xlabel('SPECIFIC ENTROPY [kJ/kg-K]') % LABELING THE GRAPHS BY USE OF LABEL COMMAD
ylabel('SPECIFIC ENTHALPY [kJ/kg]') % THE SPECIFIC ENTHLAPY AND ENTROPY ARE THE LABELS TO BE PRINTED IN THE GRAPH AT X AND Y AXIS
legend([a1,a2,a3,a4],{'Isentropic Expansion in Turbine','Isentropic Heat Rejection in Condenser','Isentropic Compression in Pump','Isentropic Heat Addition in Boiler'},'Location','southeast');
title('Specific Enthlapy v/s Specific Entropy (H-S Diagram)') %
hold off
% Calculation
% Turbine Work
Wt = H1 - H2; % Wt IS TURBINE WORK DONE FORMULA
% Pump Work
Wp = H4 - H3; % Wp IS PUMP WORK DONE FORMULA
% Heat Addition
Q_in = H1 - H4; % Q_in IS HEAT ADDITION DONE FORMULA
% Heat Rejection
Q_out = H2 - H3; % Q_out IS HEAT REJECTION DONE FORMULA
% Net Work
W_net = Wt - Wp; % W_net IS NET WORK DONE FORMULA
% Efficiency
Ntherm = (W_net/Q_in)*100; % Ntherm IS EFFICIENCY WORK DONE FORMULA
% Specific Steam Consumption
SSC = 3600/W_net; % SSC IS SPECIFIC STEAM CONSUMPTION DONE FORMULA
% Back Work Ratio
BWR = Wp/Wt; % BWR IS BACK WORK RATIO DONE FORMULA
% Printing Results
fprintf(' RESULT\n'); % PRINTING RESULT HEADER
fprintf('Parameters At State Point 1\n'); % PRINTING FIRST POINT PARAMETERS
fprintf('P1 is : %.2f Bar\n',P1); % PRINTING VALUES OF P1
fprintf('T1 is : %.2f degC\n',T1); % PRINTING VALUES OF T1
fprintf('H1 is : %.2f kJ/kg\n',H1); % PRINTING VALUES OF H1
fprintf('S1 is : %.2f kJ/kg\n',S1); % PRINTING VALUES OF S1
fprintf('Parameter At state point 2\n'); % PRINTING SECOND POINT PARAMETERS
fprintf('P2 is : %.2f Bar\n',P2); % PRINTING VALUES OF P2
fprintf('T2 is : %.2f degC \n',T2); % PRINTING VALUES OF T2
fprintf('H2 is : %.2f kJ/kg\n',H2); % PRINTING VALUES OF H2
fprintf('S2 is : %.2f kJ/kg\n',S2); % PRINTING VALUES OF S2
fprintf('Compression Ratio X is : %.2f \n',X); % PRINTING VALUES OF X
fprintf('Parameter At state point 3\n'); % PRINTING THIRD POINT PARAMETERS
fprintf('P3 is : %.2f Bar\n',P3); % PRINTING VALUES OF P3
fprintf('T3 is : %.2f degC\n',T3); % PRINTING VALUES OF T3
fprintf('H3 is : %.2f kJ/kg\n',H3); % PRINTING VALUES OF H3
fprintf('S3 is : %.2f kJ/kgK\n',S3); % PRINTING VALUES OF S3
fprintf('Parameter At state point 4\n'); % PRINTING FOURTH POINT PARAMETERS
fprintf('P4 is : %.2f Bar\n',P4); % PRINTING VALUES OF P4
fprintf('T4 is : %.2f degC\n',T4); % PRINTING VALUES OF T4
fprintf('H4 is : %.2f kJ/kg\n',H4); % PRINTING VALUES OF H4
fprintf('S4 is : %.2f kJ/kgK\n',S4); % PRINTING VALUES OF S4
fprintf('Turbine Work is : %.2f kJ/kg\n',Wt); % PRINTING TURBINE WORK DONE VALUES
fprintf('Pump Work is : %.2f kJ/kg\n',Wp); % PRINTIND PUMP WORK DONE VALUES
fprintf('Net Work (Shaft Work) is : %.2f kJ/kg\n',W_net); % PRINTING NET WORK DONE VALUES
fprintf('Thermal Effiency is : %.2f percent\n',Ntherm); % PRINTING THERMAL EFFIENCY WORK DONE VALUES
fprintf('Specific Steam Consuption is : %.2f kJ/kWh\n',SSC); % PRINTING SPECIFIC STEAM CONSUPTION VALUES
fprintf('Back Work Ratio is : %.2f \n',BWR); % PRINTING BACK WORK RATIO DONE VALUES
% User Notification
fprintf('\n'); % PRINTING THE USER FEEDBACK
x = input('Do You Want To Continue? [YES/NO] : ','s'); % x IS USED TO ASK FEEDBACK BY PRINTING TEXT GIVEN
x = upper(x); % x IS PRINTING THE TEXT AND ASKING THE FEEDBACK
if x == 'NO' % IF LOOP IS USED AND USER INPUT IS NO
disp('\n End Of The Rankine Cycle Simulation'); % THEN PRINTING THE TEXT IF NO IS INPUT VALUE
break; % BREAKING THE PROGRAM AND STARTS FROM FIRST
else % ELSE THEN THE LOOP WILL CONTINUE
continue; % IF USER INPUT IS YES THEN THE LOOP WILL CONTUNES
end % IF LOOP ENDS
end % WHILE LOOP ENDS
RESULT SCREENSHOT