Difficoltà nell'applicare l'algoritmo di Thomas

di il
0 risposte

Difficoltà nell'applicare l'algoritmo di Thomas

Ciao a tutti, mi chiamo Alessio e sono un nuovo membro di questo forum!

Frequento la facoltà di ingegneria Energetica e sto avendo un piccolo problema a livello di scrittura di codice su Matlab , per quanto riguarda

un semplice problema di scambio termico monodimensionale.

Il problema in questione riguarda una lastra piana sottoposta a due temperature imposte ai lati , con sorgente costante e in condizioni stazionare.

L'equazione discretizzata permette la formulazione di una matrice tridiagonale, pertanto ho provato ad implementare l'algoritmo di Thomas

come suggerito in letteratura ma non riesco a capire dove sbaglio, la soluzione non torna.. 

Riporto di seguito lo script, se qualcuno può aiutarmi gliene sarei grato 

%% steady one dimensional problem
clear , clc , close all
% Proprietà termofisiche
k = 15; % [W/mK]
% Dimensioni geometriche
l = 0.4; % [m]
%
%
n = 20; % numero di nodi interni ( escluso i due estremi )
%
dx = l/(n+1);
% Creazione del dominio computazionale
x = zeros(1,n+2);
x(1) = 0;
x(n+2) = 0.4;
x = x(1):dx:x(n+2);
% Condizioni al contorno e potenza volumetrica
t1 = 20; % [ °]
t2 = 50; % [ °]
q0 = 300; % [W/m]
% Inizializzazione vettore temperature
t = zeros(1,n+2);
t(1) = t1;
t(n+2) = t2;
% Algoritmo di Thomas
a(1:n+2) = ( 2 * k / (dx/2)) ;
b(1:n+2) = ( k / (dx/2)) ;
c(1:n+2) = ( k / (dx/2)) ;
d(1:n+2) = (q0 * dx ) ;
P(1:n+2) = 0 ;
Q(1:n+2) = 0 ;
P(2) = b(2) / a(2) ;
Q(2) = d(2) / a(2) ;
for i = 2:n+1
P(i) = b(i) / ( a(i) - c(i)*P(i-1));
Q(i) = (d(i) + c(i)*Q(i-1)) / ( a(i) - c(i)*P(i-1));
end
t(n+1) = Q(n+1) ;
for i = n+1:-1:2
t(i) = P(i)*t(i+1) + Q(i);
end

figure(1)
plot(x,t)
grid on
Devi accedere o registrarti per scrivere nel forum
0 risposte