Vous êtes sur la page 1sur 7

% Définition des paramètres

rho = 10;
k = 10;
cap = 10^6;
a = k / (rho * cap);
tpb = 0;
L = 0.02;
tf = 120; % instant final
n = 10; % nombre de volumes de contrôle (VC)
m = 120;
dt = tf / m; % pas de temps
dx = L / n; % pas d'espace

% Initialisation de la matrice de température


tp = zeros(n, m);

% Condition initiale: température à t=0 pour tous les VC


for i = 1:n
tp(i, 1) = 200; % température initiale
end

% Calcul des coefficients pour la discrétisation spatiale


ae = a * dt / dx^2;
aw = a * dt / dx^2;
ap = 1;
aop = ap - 2 * ae;

% Boucle temporelle
for j = 2:m
% Conditions aux limites
% Nœud 1 (CL): température fixée (t=0, i=2, instant précédent=j-1)
tp(1, j) = ae * tp(2, j - 1) + (1 - ae) * tp(1, j - 1);

% Nœud 10 (VL): température fixée (t=0, i=n, instant précédent=j-1)


tp(n, j) = aw * tp(n - 1, j - 1) + (1 - 3 * ae) * tp(n, j - 1);
% Boucle pour les nœuds internes
for i = 2:n-1
tp(i, j) = ae * tp(i + 1, j - 1) + aw * tp(i - 1, j - 1) + aop * tp(i, j - 1);
end
end

% Affichage de la température pour un instant donné (par exemple, le 40e)


x = linspace(0, L, n);
plot(x, tp(:, 40), '+') % 40 pour préciser l'instant
hold on
% Définition des paramètres
rho = 10;
k = 10;
cap = 10^6;
a = k / (rho * cap);
tpb = 0;
L = 0.02;
tf = 120; % instant final
n = 10; % nombre de volumes de contrôle (VC)
m = 120;
dt = tf / m; % pas de temps
dx = L / n; % pas d'espace

% Initialisation de la matrice de température


tp = zeros(n, m);

% Condition initiale: température à t=0 pour tous les VC sauf le dernier


for i = 1:n-1
tp(i, 1) = 200; % température initiale
end

% Calcul des coefficients pour la discrétisation spatiale


ae = a * dt / dx^2;
aw = a * dt / dx^2;
ap = 1;
aop = ap - 2 * ae;

% Boucle temporelle
for j = 2:m
% Conditions aux limites
% Nœud 1 (CL): température fixée (t=0, i=2, instant précédent=j-1)
tp(1, j) = ae * tp(2, j - 1) + (1 - ae) * tp(1, j - 1);

% Nœud 10 (VL): température fixée (t=0, i=n, instant précédent=j-1)


tp(n, j) = aw * tp(n - 1, j - 1) + (1 - 3 * ae) * tp(n, j - 1);

% Boucle pour les nœuds internes


for i = 2:n-1
tp(i, j) = ae * tp(i + 1, j - 1) + aw * tp(i - 1, j - 1) + aop * tp(i, j - 1);
end
end

% Affichage de la température pour un instant donné (par exemple, le 40e)


x = linspace(0, L, n);
plot(x, tp(:, 40), '+') % 40 pour préciser l'instant
hold on
% Demande à l'utilisateur de saisir la valeur du temps
t = input('t=');

% Définition des paramètres physiques


rho = 10;
k = 10;
cap = 10^6;
a = k / (rho * cap);

% Définition des paramètres de discrétisation spatiale


n = 500; % nombre de termes dans la somme
L = 0.02;
x = 0.001:0.002:0.02; % vecteur des positions spatiales
lx = length(x);

% Initialisation de la matrice de température


tp = zeros(1, lx);

% Boucle pour calculer la somme


for i = 1:1:n
% Calcul de lambda (2n = 2i)
m = (2 * i - 1) * pi / (2 * L);

% Mise à jour de la température à chaque itération de la somme


tp = tp + (-1)^(i+1) * exp(-a * m^2 * t) * cos(m * x) / (2 * i - 1);
end

% Réajustement de la température
tp = 800 * tp / pi;

% Affichage de la température en fonction de la position


plot(x, tp, '+');
hold on
% Définition des paramètres
tf = 120; % instant final
n = 10; % nombre de VC
m = 120;
dt = tf / m; % pas du temps
dx = L / n; % pas de l'espace

% Initialisation de la matrice de température


tp = zeros(n, m);

% Condition initiale: température à t=0 pour tous les VC sauf le dernier


for i = 1:n-1
tp(i, 1) = 200; % température initiale
end

% Coefficients pour la discrétisation spatiale


ap = 1; % r*c*dx/dt;
ae = a * dt / dx^2;
aw = ae;
aop = ap - 2 * ae;

% Boucle temporelle
for j = 2:m
% Conditions aux limites
% Nœud 1 (CL): température fixée
tp(1, j) = ae * tp(2, j - 1) + (1 - ae) * tp(1, j - 1);

% Nœud 10 (CL): température fixée


tp(n, j) = aw * tp(n - 1, j - 1) + (1 - 3 * ae) * tp(n, j - 1);

% Boucle pour les nœuds internes


for i = 2:n-1
tp(i, j) = ap * tp(i + 1, j - 1) + aw * tp(i - 1, j - 1) + aop * tp(i, j - 1);
end
end

% Génération du vecteur des positions spatiales


X = dx / 2 : dx : L - dx / 2;

% Affichage de la température en fonction de la position pour un instant donné (par exemple,


le 40e)
plot(X, tp(:, 40), '*');
hold on;
clc
clear

% Définition des paramètres physiques


rho = 10;
k = 10; % conductivité
cap = 10^6; % capacité calorifique
a = k / (rho * cap); % diffusivité thermique
tpb = 0;
L = 0.02;
tf = 40; % instant final
n = 10; % nombre de VC
m = 120;
dt = tf / m; % pas de temps
dx = L / n; % pas de l'espace

% Initialisation de la matrice de température


tp = zeros(n, m);

% Condition initiale: température à t=0 pour tous les VC sauf le dernier


for i = 1:n-1
tp(i, 1) = 200; % température initiale
end

% Coefficients pour la discrétisation spatiale


ap = 1; % r * c * dx / dt;
aE = a * dt / dx^2;
aw = aE;
aop = ap - 2 * aE;

% Boucle temporelle
for j = 2:m
% Conditions aux limites
% Nœud 1 (CL): température fixée
tp(1, j) = aE * tp(2, j - 1) + (1 - aE) * tp(1, j - 1);

% Nœud 10 (CL): température fixée


tp(n, j) = aw * tp(n - 1, j - 1) + (1 - 3 * aE) * tp(n, j - 1);

% Boucle pour les nœuds internes


for i = 2:n-1
tp(i, j) = aE * tp(i + 1, j - 1) + aw * tp(i - 1, j - 1) + aop * tp(i, j - 1);
end
end

% Génération du vecteur des positions spatiales


X = dx / 2 : dx : L - dx / 2;
% Affichage de la température en fonction de la position pour un instant donné (par exemple,
le 40e)
plot(X, tp(:, 40), '*');
hold on;

clc
clear

% Définition des paramètres physiques


rho = 10;
k = 10; % conductivité thermique
cap = 10^6; % capacité calorifique
a = k / (rho * cap); % diffusivité thermique
tpb = 0;
L = 0.02;
tf = 120; % instant final
n = 10; % nombre de VC
m = 120;
dt = tf / m; % pas de temps
dx = L / n; % pas de l'espace

% Initialisation de la matrice de température


tp = zeros(n, m);

% Condition initiale: température à t=0 pour tous les VC sauf le dernier


for i = 1:n-1
tp(i, 1) = 200; % température initiale
end

% Coefficients pour la discrétisation spatiale


ap = 1; % r * c * dx / dt;
ae = a * dt / dx^2;
aw = ae;
aop = ap - 2 * ae;

% Boucle temporelle
for j = 2:m
% Conditions aux limites
% Nœud 1 (CL): température fixée
tp(1, j) = ae * tp(2, j - 1) + (1 - ae) * tp(1, j - 1);

% Nœud 10 (CL): température fixée


tp(n, j) = aw * tp(n - 1, j - 1) + (1 - 3 * ae) * tp(n, j - 1);

% Boucle pour les nœuds internes


for i = 2:n-1
tp(i, j) = ap * tp(i + 1, 1) + aw * tp(i - 1, 1) + aop * tp(i, j - 1);
end
end

% Génération du vecteur des positions spatiales


X = dx / 2 : dx : L - dx / 2;

% Affichage de la température en fonction de la position pour un instant donné (par exemple,


le 40e)
plot(X, tp(:, 40), '*');
hold on;

Vous aimerez peut-être aussi