Challenge

Project 2 - Rankine cycle Simulator

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

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.