Untitled

 avatar
unknown
plain_text
a month ago
1.8 kB
2
Indexable
function run_simulation
    clear;
    close all;
    clc;

    global F V C0 T0 Cp Rho k0 E R dH Th Cph Rhoh Fh
    F = 1;
    V = 5;
    C0 = 5;
    T0 = 300;
    Cp = 1;
    Rho = 1e3;
    k0 = 1e7;
    E = 1.104e4;
    R = 1.987;
    dH = 1.1e5;
    Th = 363;
    Cph = 1;
    Rhoh = 1e3;
    Fh = 20;

    t_start = linspace(0, 20, 1000);
    t_end = linspace(20, 40, 1000);
    init_vals = [C0; T0];

    [t1, y1] = ode15s(@model_eqns, t_start, init_vals);
    
    Fh = 40;
    init_vals_2 = y1(end,:);
    [t2, y2] = ode15s(@model_eqns, t_end, init_vals_2);

    t_combined = [t1; t2];
    y_combined = [y1; y2];

    figure('Position', [100 100 800 600]);

    subplot(2,1,1);
    plot(t_combined, y_combined(:,1), 'LineWidth', 2);
    grid on;
    xlabel('Time (min)', 'FontSize', 12);
    ylabel('Concentration (kmol/m^3)', 'FontSize', 12);
    title('Concentration Profile', 'FontSize', 14);
    hold on;
    plot([20 20], [2 5.5], '--k', 'LineWidth', 1.5);
    text(21, 4, 'Flow rate change', 'FontSize', 10);
    xlim([0 40]);
    ylim([2 5.5]);

    subplot(2,1,2);
    plot(t_combined, y_combined(:,2), 'LineWidth', 2);
    grid on;
    xlabel('Time (min)', 'FontSize', 12);
    ylabel('Temperature (K)', 'FontSize', 12);
    title('Temperature Profile', 'FontSize', 14);
    hold on;
    plot([20 20], [295 335], '--k', 'LineWidth', 1.5);
    text(21, 315, 'Flow rate change', 'FontSize', 10);
    xlim([0 40]);
    ylim([295 335]);
end

function dydt = model_eqns(t, y)
    global F V C0 T0 Cp Rho k0 E R dH Th Cph Rhoh Fh
    
    CA = y(1);
    T = y(2);
    
    k = k0 * exp(-E/(R*T));
    r = k * CA;
    
    Q = 12 * Fh^2 * (Th - T);
    
    dCAdt = (F/V) * (C0 - CA) - r;
    dTdt = (F/V) * (T0 - T) + Q / (Rho * V * Cp) + (-dH) * r / (Rho * Cp);
    
    dydt = [dCAdt; dTdt];
end
Leave a Comment