1D HEAT TRANSFER EXPLICIT USING FINITE DIFFERENCE METHOD

14 vues (au cours des 30 derniers jours)
Amie
Amie le 2 Déc 2023
Commenté : Torsten le 2 Déc 2023
Hi! Just wanna ask why our code wont reach equilibrium even we already increase the number of tme.
Here is our code:
clear, clc, close all
%finite difference method
% dT/dt = alpha * dT^2/dx^2
% dT = u(x, t) solve for dt
% u(x , t) = u(x, t-1) + alpha * dt / dx^2 * (u(x+1, t-1) - 2 * u(x, t-1) + u(x-1, t-1))
% Parameters
L = input ('What is the length of the rod? (in m): ');
disp('L = ');
disp(L);
T = input ('How long do you want the heat diffusion to take? (in s): ');
disp('T = ');
disp(T);
nx = input ('How many spatial points? ');
disp('nx = ');
disp(nx);
alpha = input ('What is your thermal diffusitivity? ');
disp('alpha = ');
disp(alpha);
%Thermal Diffusivity of different materials m^2/s
x = linspace(0, L, nx);
dx = x(2) - x(1);
dt = 0.5*(dx^2)/(2*alpha);
t = 0:dt:T;
u = zeros(nx, length(t));
% Initial condition (u(x,0) = initial temperature distribution)
u(:, 1) = input ('What is the constant temperature at the rest of the rod? ');
disp('u(:, 1) = ');
disp(u(:, 1));
% Boundary conditions (u(0, t) = u(L, t) = 0 for insulated ends)
u(1, : ) = input ('What is the thermal boundary on the left side? ');
disp('u(1, : ) = ');
disp(u(1, : ));
u(nx, : ) = input ('What is the thermal boundary on the right side? ');
disp('u(nx, : ) = ');
disp(u(nx, : ));
% Finite difference method (explicit)
for i = 2:length(t)
for j = 2:nx-1
u(j, i) = u(j, i-1) + alpha * dt / dx^2 * (u(j+1, i-1) - 2 * u(j, i-1) + u(j-1, i-1));
end
end
for i = 1:length(t)
u(:, i)
end
% Plotting the temperature distribution
figure(1);
[T, X] = meshgrid(t, x);
surf(X, T, u);
zlim([0 100])
xlabel('Distance');
ylabel('Time');
zlabel('Temperature');
title('1D Heat Equation Solution using Finite Differences');
figure(2);
subplot(2,1,1),
contour(X,u,T);,
colormap;
title('Temperature (Steady State)'), xlabel('Distance'),ylabel('Temperature'), colorbar
subplot(2,1,2),
pcolor(X,T,u);,
shading interp;,
title('Temperature (Steady State)'),xlabel('Distance'), ylabel('Time'), colorbar
  1 commentaire
Torsten
Torsten le 2 Déc 2023
Please hardcode the inputs so that we can execute the code and reproduce your problem.

Connectez-vous pour commenter.

Réponses (0)

Produits


Version

R2023b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by