Untitled

 avatar
unknown
plain_text
a month ago
977 B
2
Indexable
% dTdt=Q/(m*cp)-(Fin/m)*(T-Tin)

% dTdt + (Fin/m)*T = Q/(m*cp) + (Fin/m)*Tin


m=100;
cp=2.5;
Fin=8;
Q=1000; %[kJ/s]
Tin_initial=300;
step_size=30;
step_time=150; %[s]
T0=300;

tspan=[0 300]; %decido io questo intervallo, deve andare sicuramente sopra 150 secondi perchè altrimenti non prendo in considerazione il salto che avviene a 150s


[t, T]=ode45(@(t,T) tank_ode(t, T, m, cp, Fin, Q, Tin_initial, step_size, step_time), tspan, T0);

figure;
plot(t, T, 'b-', 'LineWidth', 1.5);
hold on;
plot([0 step_time], [Tin_initial Tin_initial], 'r--', ...
    [step_time 300], [Tin_initial + step_size Tin_initial+step_size], 'r--', 'LineWidth', 1);
xlabel('Time (s)');
ylabel('Temperature (K)');
title('Tank Temperature');
legend('Tank Temperature', 'Inlet Temperature');
grid on;



function dTdt=tank_ode(t, T, m, cp, Fin, Q, Tin_initial, step_size, step_time)


if t<step_time
    Tin=Tin_initial;
else
    Tin=Tin_initial + step_size;
end

dTdt=Q/(m*cp)-(Fin/m)*(T-Tin);

end
Leave a Comment