Sei sulla pagina 1di 38

POLITECNICO DI TORINO

I Facolt di Ingegneria
Laurea Magistrale in Ingegneria Meccanica

MODELLI E METODI NUMERICI


Analisi FEM del campo di temperature in
una cella per il surgelamento industriale
A.A. 2010/2011
Prof. Claudio Canuto
Ing.re Paolo Bardella

Studenti:
Zappaterra Davide 177647
Mazzucco Federico 178104
Sciandra Giovanni 176857

Pagina |1

Sommario
Introduzione iniziale ...................................................................................................................................... 2
Descrizione modello matematico .................................................................................................................. 3
Elementi teoria FEM ...................................................................................................................................... 5
Conclusioni .................................................................................................................................................... 8
Definizione corretta della geometria ............................................................................................................ 8
Definizione delle condizioni al contorno ..................................................................................................... 10
Mesh ............................................................................................................................................................ 12
Analisi degli auto valori ............................................................................................................................... 16
Costruzione delle matrici di massa e rigidezza ............................................................................................ 17
Risoluzione del sistema lineare ................................................................................................................... 24
Metodo di Gauss...................................................................................................................................... 25
Metodo PCG ............................................................................................................................................ 25
Soluzione stazionaria ................................................................................................................................... 27
Soluzione transitoria.................................................................................................................................... 30
Metodo di Eulero Esplicito ...................................................................................................................... 31
Metodo di Eulero Implicito ...................................................................................................................... 32
Metodo dei trapezi o di Crank-Nicolson .................................................................................................. 34
Altri metodi di avanzamento in tempo: ode45 e ode15s ........................................................................ 35
Ode45 ...................................................................................................................................................... 36
Riferimenti bibliografici ................................................................................................................................... 37

Modelli e Metodi Numerici Analisi FEM del campo di temperature in una cella per il surgelamento industriale A.A. 2010/2011

Pagina |2

Introduzione iniziale
Nella seguente trattazione si analizzer un problema di tipo termico utilizzando i criteri numerici
approfonditi allinterno del corso. In particolare verr preso in esame un sistema di refrigerazione
industriale del pesce costituito da tre linee produttive. Ogni stadio dellimpianto stato progettato in base
alle dimensioni del trancio di pesce da congelare e al tempo di congelamento richiesto. Inoltre deve essere
garantita una temperatura costante di mantenimento del pesce e si considera il caso di surgelamento per
contatto, ossia attuato tramite lazione di due piastre metalliche poste a contatto appunto col trancio di
pesce.
Limpianto costituito da due circuiti: un circuito primario ed un circuito secondario.
Il circuito primario quello in cui circola il fluido frigorigeno, R22, che provvede a smaltire verso lesterno il
calore prodotto dallimpianto compiendo un ciclo inverso con compressione bi-stadio e doppia laminazione
in cui anche presente un separatore di liquido intermedio.
Il circuito secondario invece connesso alle piastre sulle quali avviene il surgelamento del pesce, ed
percorso da CO2.
I due circuiti si scambiano potenza termica mediante uno scambiatore di calore a tubi mantello, che il
circuito primario vede come evaporatore, mentre il secondario come condensatore.
Lo scambio termico fra il circuito primario e lambiente esterno avviene invece mediante un condensatore
ad aria avente batterie montate allesterno, ciascuna delle quali costituita da una ventola montata in modo
da avere lasse disposto perpendicolarmente al terreno.

Schema dell'impianto

Dal punto di vista della seguente trattazione sar analizzato solamente il comportamento termico delle
piastre di congelamento, opportunamente configurate tenendo conto e della presenza dei condotti di
raffreddamento che le percorrono, e del pesce stesso. Una rappresentazione del sistema in esame viene
qui di seguito riportata.

Modelli e Metodi Numerici Analisi FEM del campo di temperature in una cella per il surgelamento industriale A.A. 2010/2011

Pagina |3

Nellimmagine si possono vedere le piastre in grigio, percorse dai condotti di refrigerazione del circuito
secondario in giallo, e il trancio di pesce in rosa. Saranno presi in considerazione sia il problema stazionario,
sia il transitorio, al fine di descrivere numericamente in modo completo levoluzione del sistema. Il software
utilizzato MATLAB.

Descrizione modello matematico


Il modello matematico preso in esame deve descrivere il comportamento termico del sistema costituito
dalla piastra e dal trancio di pesce da surgelare. A tale scopo risulta utile considerare un modello
semplificato di piastra. Partendo dalla geometria tridimensionale dellimpianto sopra riportata, si valuta il
comportamento termico lungo una sezione interna di spessore trascurabile assumendo che in tutte le altre
sezioni non di contorno la distribuzione di temperatura sia analoga. Si nota che negli strati di confine tale
ipotesi non sarebbe vera perch si avrebbe linfluenza dellesterno che varierebbe levoluzione. In questo
modo si passati da una valutazione tridimensionale a una bidimensionale del problema. Nella seguente
figura viene rappresentata la sezione dinteresse utilizzata nellanalisi del sistema.

Modelli e Metodi Numerici Analisi FEM del campo di temperature in una cella per il surgelamento industriale A.A. 2010/2011

Pagina |4

Dopo aver fatto queste considerazioni si ricorda che il modello termico della piastra consente di
descrivere la temperatura di un corpo conduttore approssimato secondo la teoria bidimensionale, ovvero
trascurandone lo spessore. Partendo dallequazione del calore e utilizzando la legge di Fourier, si ottiene la
seguente relazione:

In cui:

la temperatura nel punto


allistante t;
il calore specifico del materiale;
la densit del materiale;
la conducibilit del corpo;
lapporto di calore per unit di massa, supposto noto;

A questo punto si impongono la condizione iniziale che determina la temperatura allistante t=0 del corpo e
le condizioni al bordo della superficie in esame: supposto questo divisibile in tre parti disgiunte e
e
, possibile imporre la condizione di Dirichlet alla prima in modo da fissarne la temperatura al contorno,
la condizione di Neumann alla seconda in modo da assegnarne il valore del flusso uscente da essa e la
condizione di Robin alla terza in modo da imporre landamento dato dalla convezione. Si pu cos ottenere
la soluzione del problema ai valori iniziali e al bordo nellistante T>0 risolvendo il seguente sistema:

Modelli e Metodi Numerici Analisi FEM del campo di temperature in una cella per il surgelamento industriale A.A. 2010/2011

Pagina |5

in cui:
la prima equazione rappresenta lequazione del calore precedentemente riportata;
la seconda indica la condizione al bordo di Dirichlet con
temperatura su ;
la terza esprime la condizione al bordo di Neumann con
flusso uscente
normale su ;
la quarta esprime la condizione di Robin su , con coefficiente di scambio convettivo e
prodotto
;
la quinta la temperatura iniziale della superficie con
.

Elementi teoria FEM


Sulla base del sistema di equazioni ricavato necessario applicare il metodo agli elementi finiti per rendere
tale problema risolvibile numericamente. Nel caso generale (modello termico), e pi semplice, si deve
risolvere il seguente problema ai valori al bordo nel dominio :

Per fare ci, c la necessit di passare dalla formulazione differenziale, precedentemente riportata, a
quella integrale (o variazionale). E necessario quindi definire linsieme V delle temperature ammissibili
definito come:

con
.
Scegliamo anche le funzioni
per descrivere la variabile .
Le funzioni
sono scelte in modo tale da avere le stesse condizioni al bordo di Dirichlet.
In formalismo matematico:
.
Tali funzioni di forma(temperature ammissibili) verranno a coincidere con le funzioni test che servono per
risolvere lequazione di equilibrio nel dominio.

Modelli e Metodi Numerici Analisi FEM del campo di temperature in una cella per il surgelamento industriale A.A. 2010/2011

Pagina |6
Moltiplicando per una generica
integrando nel dominio si ottiene:

lequazione di equilibrio, dopo avervi sostituito la variabile

, e

in cui
.
Sviluppando lequazione trovata, utilizzando il Teorema della Divergenza e introducendo il vettore
perpendicolare a
e uscente da , si arriva alla formulazione variazionale del problema iniziale:

Dopo aver specificato le condizioni di derivabilit delle funzioni test, e aver imposto che il loro quadrato e il
quadrato del loro gradiente siano integrabili, si pu passare alla triangolazione del dominio. Supponendo
questultimo come un poligono, lo si divide in una serie di triangoli non degeneri che possano aver in
comune un intero lato o un vertice o al pi linsieme vuoto. Dopo aver definito le funzioni di forma
piramidali discrete, si pu passare alla formulazione variazionale discreta del problema:

Utilizzando la base di Lagrange in


con supporto formato dalla triangolazione del dominio, si pu ridurre
quindi il problema ad un sistema algebrico di N equazioni in N incognite (dove N il numero di nodi ricavati
dalla triangolazione) che assume la seguente forma:

dove la matrice di massa, la matrice di rigidezza e il termine noto del sistema.


Si descrivono brevemente tali componenti fondamentali per il successivo svolgimento dellanalisi.
Introducendo per prima cosa le funzioni di base Lagrangiane in
, ovvero gli elementi piramidali che
hanno il vertice di valore unitario in corrispondenza del nodo i-esimo considerato, e che presentano valore
nullo in tutti gli altri nodi, possibile scrivere le equazioni dei polinomi che costituiscono ciascuno dei
propri lati:

con
con

delta di Dirach e

numero di nodi del dominio.

Modelli e Metodi Numerici Analisi FEM del campo di temperature in una cella per il surgelamento industriale A.A. 2010/2011

Pagina |7
Tale spazio generato di ordine 3. Inoltre i polinomi sono solo funzione delle coordinate
e non
entrano pertanto nella derivata temporale. Essa influisce semplicemente sullo spostamento del nodo iesimo. Si presenta nella figura una rappresentazione grafica del generico elemento della base:

In via generica la soluzione che descrive il campo di temperature viene descritta da una combinazione
lineare delle piramidi che costituiscono tale base, e pi specificatamente

in cui
il numero di nodi incogniti del dominio. I nodi di bordo visto che sono noti non entrano a far
parte della matrice di rigidezza o di massa e vengono portati a secondo membro dellequazione
contribuendo al termine noto. Soltanto il caso della condizione di Robin influisce sia sulla A che sul secondo
membro.
Si giunge cos alla scrittura dei coefficienti che compongono le due matrici e il termine noto:

I gradienti sono perci necessari per il calcolo delle componenti delle matrici.
Tale trattazione tuttavia vale soltanto per il caso pi semplice di condizioni al contorno di Dirichlet
omogeneo. Si descrivono gli altri casi.
Dirichlet non omogeneeo con valore al nodo di bordo j-esimo:

Modelli e Metodi Numerici Analisi FEM del campo di temperature in una cella per il surgelamento industriale A.A. 2010/2011

Pagina |8

Neumann non omogeneeo con valore al i-esimo nodo:

Robin dato da

Conclusioni
Nellanalisi si terr in mente di conseguenza tutto il discorso appena fatto per assemblare nel modo
corretto le matrici. Inoltre vengono descritte le caratteristiche del processore visto che le velocit di calcolo
dipendono dalla frequenza di clock e soprattutto dallarchitettura con la quale costruito:

Frequenza di clock 2.53 GHz;


Tipo: dual core fisico, quad core logico.

Definizione corretta della geometria


Per definire la geometria del sistema sul software di calcolo MATLAB sono state utilizzate due funzioni:

Rect([Cx,Cy],[w,h]) che crea una superficie rettangolare a partire dalle coordinate del
centro Cx e Cy e sulla base della larghezza w e dellaltezza h;
Circle([Cx,Cy],[a,b]) che crea una superficie ellittica sulla a partire dale coordinate del
centro Cx e Cy e sulla base delle lunghezze dei semiassi a (lungo x) e di b (lungo y). Nel nostro caso
stato utilizzato per creare superfici circolari;

opportunamente combinate per mezzo dellalgebra booleana.


In questo modo stata creata la geometria del sistema in esame visibile nella seguente immagine in cui
sono differenziati i diversi componenti a seconda dei colori.

Modelli e Metodi Numerici Analisi FEM del campo di temperature in una cella per il surgelamento industriale A.A. 2010/2011

Pagina |9

MATLAB automaticamente assegna un valore ad ogni lato di ciascuna forma e un valore ad ogni vertice di
ogni lato (considerando che la funzione circle presentata in precedenza approssima le curve con una
spezzata). Ai fini della nostra analisi necessario suddividere in due il lato inferiore della piastra: il motivo
che per applicare le condizioni al contorno serve una distinzione tra la parte della piastra a diretto contatto
con il pesce e quella confinante con lambiente circostante. Per operare tale suddivisione si utilizzata la
funzione:
InsertNode(Sh, [a,b,c], [x,y])che permette di inserire allinterno del dominio Sh un nodo in

posizione immediatamente successiva al nodo c del poligono b della forma a e avente coordinate x e y. Cos
siamo giunti alla definizione della geometria. Si riporta qui di seguito lo script utilizzato in questa fase.

Sh(1)=Rect([-0.075,0.025],[0.150,0.050]);
Sh(2)=Rect([-0.080,0.0575],[0.160,0.015])-...
Circle([-0.128,0.0575],[0.004175,0.004175])-...
Circle([-0.064,0.0575],[0.004175,0.004175])-...
Circle([0,0.0575],[0.004175,0.004175]);
Sh(3)=Circle([-0.128,0.0575],[0.004175,0.004175])+...
Circle([-0.064,0.0575],[0.004175,0.004175])+...
Circle([0,0.0575],[0.004175,0.004175]);
Sh(3)=Sh(3)-Circle([-0.128,0.0575],[0.003175,0.003175])-...
Circle([-0.064,0.0575],[0.003175,0.003175])-...
Circle([0,0.0575],[0.003175,0.003175])-...
(Rect([0,0.0575],[0.00835,0.00835])+[0.004175,0]);
Sh=InsertNode(Sh, [2,1,10], [-0.15,0.05]);

Il nodo [2,1,10] quello cerchiato in rosso nella figura sottostante.

Modelli e Metodi Numerici Analisi FEM del campo di temperature in una cella per il surgelamento industriale A.A. 2010/2011

P a g i n a | 10
Infatti osservando la numerazione dei nodi:

Dopo aver assegnato la geometria, si proceduto alla definizione dei parametri fisici dei materiali che
compongono il sistema. In particolare si considerato il coefficiente di conduzione e il prodotto della
densit per il calore specifico, che viene indicato nel codice con la voce densit, per i tre materiali
considerati: pesce, acciaio per la piastra,rame per i condotti.
Sh(1)=set(Sh(1),'alfa',1.4,'densita',1050*3600);
Sh(2)=set(Sh(2),'alfa',50,'densita',7860*504);
Sh(3)=set(Sh(3),'alfa',406,'densita',8920*385);

Tutte le lunghezze sono espresso in metri.

Definizione delle condizioni al contorno


Una volta generata la geometria si passati alla definizione delle condizioni al contorno considerando le
problematiche legate al sistema in esame. In particolare con riferimento allimmagine riportata in
precedenza si proceduto in questo modo:

stata imposta la condizione di Dirichlet sul contorno interno dei condotti in modo da fissare la
temperatura iniziale a cui si trovano questi ultimi (nel nostro caso -30C);
stata imposta la condizione di Neumann lungo i due assi di simmetria ovvero il bordo destro e
quello inferiore in modo che il flusso termico attraverso questi due contorni sia nullo, essendo la
geometria considerata equivalente a un quarto di quella reale;
stata imposta la condizione di Robin sui bordi del sistema che confinano con lambiente esterno:
il lato sinistro del pesce, la parte inferiore della piastra non a contatto con il trancio e i lati destro e
superiore della piastra stessa. Tale condizione stata applicata per tenere in considerazione
linfluenza sul sistema dellambiente esterno, costituito da aria che interagisce tramite il fenomeno
della convezione con le pareti esterne.
stata imposta la condizione di continuit allinterfaccia tra le tre parti del sistema: condottipiastra e piastra-pesce, in modo da informare il software che tali linee di confine, pur
appartenendo a forme definite in modo differente, sono da considerare come un tuttuno dal
punto di vista matematico: devono avere in comune le stesse funzioni di forma.

Modelli e Metodi Numerici Analisi FEM del campo di temperature in una cella per il surgelamento industriale A.A. 2010/2011

P a g i n a | 11
Nella successiva figura vengono rappresentate le condizioni applicate: in rosso Robin, in verde
continuit, in blu Neumann e in giallo Dirichlet. Nel particolare viene evidenziata la situazione in
corrispondenza dei condotti e dellasse di simmetria.

Per realizzare ci si fatto ricorso alla seguente funzione:


Bc(a).Polygons(b).Edge(c)=Boundary_condition; che permette di assegnare la desiderata
condizione al contorno al lato c del poligono b della figura a. A seconda delle esigenze al posto di
Boundary_condition stato inserito:
Dirichlet(T)
Neumann()
Robin(h1,g1)
Continuity()

che assegna la temperatura T [K];


che impone flusso nullo;
che tiene conto della costante di convezione h1[W/mK] e della temperatura
cui tende il sistema g1=h1*T[W/m];
che assegna la continuit;

Lo script utilizzato viene qui di seguito riportato:

Modelli e Metodi Numerici Analisi FEM del campo di temperature in una cella per il surgelamento industriale A.A. 2010/2011

P a g i n a | 12
Bc=Boundary(Sh);
Bc(1).Polygons(1).Edge(1)=Robin(h1,g1);
Bc(1).Polygons(1).Edge(2)=Continuity();
Bc(1).Polygons(1).Edge(3)=Neumann();
Bc(1).Polygons(1).Edge(4)=Neumann();
Bc(2).Polygons(1).Edge(1:8)=Continuity();
Bc(2).Polygons(1).Edge(9)=Neumann();
Bc(2).Polygons(1).Edge(10)=Continuity();
Bc(2).Polygons(1).Edge(11)=Robin(h1,g1);
Bc(2).Polygons(1).Edge(12)=Robin(h1,g1);
Bc(2).Polygons(1).Edge(13)=Robin(h1,g1);
Bc(2).Polygons(1).Edge(14)=Neumann();
Bc(2).Polygons(2).Edge(1:end)=Continuity();
Bc(2).Polygons(3).Edge(1:end)=Continuity();
Bc(3).Polygons(1).Edge(1:8)=Dirichlet(243.15);
Bc(3).Polygons(1).Edge(9)=Neumann();
Bc(3).Polygons(1).Edge(10:17)=Continuity();
Bc(3).Polygons(1).Edge(18)=Neumann();
Bc(3).Polygons(2).Edge(1:end)=Continuity();
Bc(3).Polygons(3).Edge(1:end)=Continuity();
Bc(3).Polygons(4).Edge(1:end)=Dirichlet(243.15);
Bc(3).Polygons(5).Edge(1:end)=Dirichlet(243.15);

Le temperature delle condizioni di Dirichlet sono espresse in Kelvin.

Mesh
Per analizzare in dettaglio il comportamento termico del materiale secondo la teoria FEM, stato
necessario suddividere il dominio di integrazione in un insieme discreto di elementi triangolari con funzioni
di forma a capanna.
Ci stato realizzato tramite loperazione di Mesh, usando la funzione
>>Me=Mesh(Sh,Bc,@MyRaf);
che prende in ingresso il dominio da discretizzare(Sh),le condizioni al contorno(Bc) e la dimensione
massima del lato dei triangoli che va a generare. In alternativa come ultimo parametro si pu passare una
funzione apposita che descrive le aree del dominio da suddividere in modo pi accurato(nel caso in esame
@MyRaf).
In tal modo si sono potuti discretizzare pi finemente i punti critici del dominio, quali i bordi e le zone di
confine delle singole parti che compongono il sistema.
In particolare di seguito viene mostrata la sintassi della funzione MyRaf:
function l=MyRaf(x,y)
l=0.002*ones(size(x));
l(InRect([x,y],[-0.080,0.050],[0.160,0.005])...
| InRect([x,y],[-.0.160,0.0575],[0.005,0.015]) | ...
Raffinamento nei rettangoli e
InRect([x,y],[-0.080,0.065],[0.160,0.005]) |...
nelle
circonferenze
che
InRect([x,y],[0,0.0575],[0.005,0.015]) | ...
racchiudono le zone di
InRect([x,y],[-0.150,0.025],[0.005,0.050]) | ...
InRect([x,y],[-0.075,0],[0.150,0.005])| ...
discontinuit tra materiali
InRect([x,y],[0,0.025],[0.005,0.050]) | ...
((x+0.128).^2+(y-0.0575).^2)<(0.006^2)| ...
((x+0.064).^2+(y-0.0575).^2)<(0.006^2)| (x.^2+(y-0.0575).^2)<(0.006^2))...
=0.0005;
end
Modelli e Metodi Numerici Analisi FEM del campo di temperature in una cella per il surgelamento industriale A.A. 2010/2011

P a g i n a | 13

La funzione prende in ingresso le coordinate dei punti del dominio e in base alla loro posizione restituisce
la dimensione massima del lato dellelemento. Il risultato il seguente dove viene mostrato anche il tempo
necessario alla discretizzazione pari a 11.1007 s.

Viene poi visualizzata la qualit della Mesh tramite il comando:


figure
Draw(Me,'quality');title('qualit della mesh generata');

ottenendo il risultato:

in cui la qualit descritta dalla legenda a lato della figura. Si nota che solo pochi triangoli hanno qualit
inferiore a 0.9. E presente poca distorsione nelle zone pi critiche, il che rende pi affidabile e corretta
lanalisi.

Modelli e Metodi Numerici Analisi FEM del campo di temperature in una cella per il surgelamento industriale A.A. 2010/2011

P a g i n a | 14
Sono state analizzate le caratteristiche della Mesh in funzione delle dimensioni degli elementi:

tempo di generazione;
numero di triangoli che la compongono;
numero di condizionamento della matrice di rigidezza A corrispondente.

Il codice utilizzato il seguente:


%determiniamo il tempo di mesh
t1=0;
lato=2.^(-(2:8));
for i=1:length(lato)
for j=1:10
tic; Me=Mesh(Sh,Bc,lato(i));t=toc;
t1=t1+t/10;
end
t_mesh(i)=t1;
triangoli(i)=length(Me.Triangoli);
[A,b1]=Assembla_completa(Me);
condA(i)=cond(A);
end
...

figure
subplot(2,2,1);
plot(lato,t_mesh); xlabel('dimensione lato');
ylabel('tempo generazione mesh [s]');title('mesh vs lato');
subplot(2,2,2);
plot(lato,triangoli); xlabel('dimensione lato');
ylabel('numero triangoli');title('numero triangoli vs lato');
subplot(2,2,3);
plot(lato,condA);xlabel('dimensione lato');
ylabel('numero condizionamento A');title('condA vs lato');

Si riportano di seguito i risultati ottenuti:

Modelli e Metodi Numerici Analisi FEM del campo di temperature in una cella per il surgelamento industriale A.A. 2010/2011

P a g i n a | 15
Per ottenere il grafico precedente stata effettuata una media sui tempi di generazione, dato che da volta
a volta il tempo era diverso, probabilmente a causa dei processi gestiti autonomamente dal sistema
operativo. Landamento caratteristico di tale caso, e mostra il classico andamento esponenziale, dato che
al variare del lato le operazioni eseguite dal processore aumentano notevolmente. Stesso discorso vale per
il grafico successivo che mostra come varia il numero di triangoli diminuendo il loro lato massimo.

Merita qualche riflessione lultima analisi. Il numero di condizionamento indica quanto una matrice
sparsa, e quanto gli elementi siano distanti dalla diagonale principale. Pi sono presenti triangoli e pi sono
presenti nodi. Questo si concretizza nel fatto che un singolo nodo accerchiato da un numero maggiore di
triangoli, ma non solo. La sue posizione allinterno della matrice di rigidezza varia e si sposta dalla diagonale
principale. Proprio per questo il numero di condizionamento sale molto rapidamente. Si intuisce di come
sia possibilmente necessario perci premoltiplicare la matrice A per un precondizionatore. Il ragionamento
verr approfondito in seguito.

Modelli e Metodi Numerici Analisi FEM del campo di temperature in una cella per il surgelamento industriale A.A. 2010/2011

P a g i n a | 16

Analisi degli auto valori


E stata eseguita lanalisi degli auto valori del sistema

Dove

matrice di massa;
matrice di rigidezza;
vettore soluzione;

Il comando usato
[V,D,flag]=eigs(A,M,i,'LM');

V matrice che ha per colonne gli autovettori del sistema;


D matrice diagonale sulla quale sono presenti gli auto valori;
flag scalare: 0 se c stata convergenza nel calcolo, 1 viceversa;
LM indica che si devono calcolare gli auto valori di modulo massimo;
i indica il numero di auto valori da calcolare e in questo caso sono 5(i primi sono quelli pi
caratterizzanti il sistema).

Il risultato ottenuto mostra semplicemente la matrice D, dato che gli auto vettori non hanno un particolare
significato fisico.

Gli autovalori sono collegati alla successiva analisi transitoria con il metodo di Eulero esplicito, e rientrano
nel calcolo del
massimo per non avere instabilit del metodo. Tale trattazione verr approfondita nel
seguito.

Modelli e Metodi Numerici Analisi FEM del campo di temperature in una cella per il surgelamento industriale A.A. 2010/2011

P a g i n a | 17

Costruzione delle matrici di massa e rigidezza


Le matrici A ed M nonch il temine noto b1, sono state assemblate a partire dalla Mesh e dalle condizioni al
contorno, sfruttando apposite funzioni.
Si riporta di seguito il codice utilizzato per la matrice di rigidezza e di massa rispettivamente. Questultima
stata assemblata in due modi: il primo il modo normale, il secondo utilizzando la tecnica del Lumping.
Matrice di rigidezza:
function [D,b] = Assembla_completa(Me)
%Assembla la matrice D e il vettore b del problema non omogeneo
%Input:
%
Me
:oggetto Mesh
%
f
:funzione anonima o inline che fornisce i valori puntuali della
forzante
%
%Output:
%
D
:matrice di rigidezza dovuta al termine di diffusione
%
b
:vettore dei termini doti del sistema
Tr=Me.Triangoli;
NI=Me.NodiIncogniti;
C=Me.Coordinate;
Ne=Me.LatiNeumann;
Ro=Me.LatiRobin;
N_Tr = size(Tr,1);
N_int = max(NI);
L=Me.Lati;
D = spalloc(N_int,N_int,10*N_int);
b = zeros(N_int,1);
for e=1:N_Tr
Dx(1) = C(Tr(e,3),1) - C(Tr(e,2),1);
Dx(2) = C(Tr(e,1),1) - C(Tr(e,3),1);
Dx(3) = C(Tr(e,2),1) - C(Tr(e,1),1);
Dy(1) = C(Tr(e,2),2) - C(Tr(e,3),2);
Dy(2) = C(Tr(e,3),2) - C(Tr(e,1),2);
Dy(3) = C(Tr(e,1),2) - C(Tr(e,2),2);

Calcolo dei due gradienti per


ogni vertice del triangolo

Area=Me.Aree(e);
%valuto la posizione dei baricentri per individuare le propriet fisiche
xb=Me.Baricentri(e,1);
yb=Me.Baricentri(e,2);

Modelli e Metodi Numerici Analisi FEM del campo di temperature in una cella per il surgelamento industriale A.A. 2010/2011

P a g i n a | 18
for i=1:3 %nodi, fissa il primo indice
ii = NI(Tr(e,i));
if( ii > 0) %se nodo incognito, entra
for j=1:3 %fissa il secondo indice
jj = NI(Tr(e,j));
alfa=get(Me.Forme(Me.Facce(e)),'alfa',[xb,yb]);
d=alfa*(Dy(i)*Dy(j)+Dx(i)*Dx(j))/(4.0*Area) ;
if( jj > 0) %se anche il nodo adiacente incognito entra
D(ii,jj) = D(ii,jj) + d;
Gemello=Me.NodiPeriodici(Tr(e,j));
if Gemello>0
if j==i
D(Gemello, Gemello)=D(Gemello, Gemello)+d;
else
D(Gemello, jj)= D(Gemello, jj)+d;
end
end
else %nodo dirichlet
xy=C(Tr(e,j),:); %coordinata nodo dirichlet
aux=Me.NodiDirichlet(-jj,:); %informazioni nodo in esame
val=Evaluate(Me.Bc, aux,xy); %valuta la condizione di
dirichlet nelle (x,y)
b(ii) = b(ii) - d*val ;
end
end
end
end
end
%Neumann
for k=1:length(Ne)
Nodo1=L(Ne(k),1);
Nodo2=L(Ne(k),2);
dist=C(Nodo1,:)-C(Nodo2,:);
xmedia=(Me.Coordinate(Nodo1,1)+Me.Coordinate(Nodo2,1))/2;
ymedia=(Me.Coordinate(Nodo1,2)+Me.Coordinate(Nodo2,2))/2;
g=Evaluate(Me.Bc,Me.LatiNeumann(k,:), [xmedia, ymedia]);
if NI(Nodo1)>0
b(NI(Nodo1))=b(NI(Nodo1))+g/2*norm(dist);
end
if NI(Nodo2)>0
b(NI(Nodo2))=b(NI(Nodo2))+g/2*norm(dist);
end
end
%Robin
for k=1:length(Ro)
Nodo1=L(Ro(k),1);
Nodo2=L(Ro(k),2);
dist=norm(C(Nodo1,:)-C(Nodo2,:));
ii1=NI(Nodo1);
ii2=NI(Nodo2);
xmedia=(Me.Coordinate(Nodo1,1)+Me.Coordinate(Nodo2,1))/2;
ymedia=(Me.Coordinate(Nodo1,2)+Me.Coordinate(Nodo2,2))/2;
val=Evaluate(Me.Bc,Ro(k,:), [xmedia, ymedia]);
h=val(1);
g=val(2);
Modelli e Metodi Numerici Analisi FEM del campo di temperature in una cella per il surgelamento industriale A.A. 2010/2011

P a g i n a | 19
if ii1>0 && ii2<0 %ii1 incognito, ii2 noto
Coordinate=C(Nodo2,:);
aux=Me.NodiDirichlet(-ii2,:);
Dirichlet=Evaluate(Me.Bc,aux, Coordinate);
b(ii1)=b(ii1)+g/2*dist-h*dist/6*Dirichlet;
D(ii1,ii1)=D(ii1,ii1)+h*dist/3;
elseif ii1<0 && ii2>0 %ii1 noto, ii2 incognito
xy=C(Nodo1,:);
Coordinate=Me.NodiDirichlet(-ii1,:);
Dirichlet=Evaluate(Me.Bc,aux, Coordinate);
b(ii2)=b(ii2)+g/2*norm(dist)-h*dist/6*Dirichlet;
D(ii2,ii2)=D(ii2,ii2)+h*dist/3;
else %allora sono entrambi di Robin
b(ii1)=b(ii1)+g/2*norm(dist);
b(ii2)=b(ii2)+g/2*norm(dist);
D(ii1,ii1)=D(ii1,ii1)+h*dist/3;
D(ii2,ii2)=D(ii2,ii2)+h*dist/3;
D(ii1,ii2)=D(ii1,ii2)+h*dist/6;
D(ii2,ii1)=D(ii2,ii1)+h*dist/6;
end
end

Nel codice sopra riportato si tenuto conto delle diverse condizioni al contorno:
Dirichlet non omogeneeo va a modificare soltanto la forma del termine noto b1;
Neumann omogeneeo va ad influire solo sul termine noto come Dirichlet;
Robin, al contrario delle precedenti va a modificare sia il termine noto che la matrice A, dato che
presenta sia un termine di derivata che uno di ordine nullo.
La funzione prende in ingresso la Mesh, che a sua volta stata creata in dipendenza dalle condizioni al
bordo. Nelle fasi successive esegue tre cicli:
1. Il primo per ogni triangolo appartenente alla geometria;
2. Il secondo per ogni nodo del triangolo variando il primo indice;
3. Il terzo per ogni nodo del triangolo variando il secondo indice;
Vengono cos analizzati tutti i casi possibili, ossia tutte le possibili posizioni sia assolute che relative dei nodi.
Allinterno del primo ciclo vengono calcolati tutti i vari gradienti(due per ogni vertice) del triangolo
corrente, nonch larea e le coordinate del baricentro.
Nel secondo e terzo ciclo, disposti rispettivamente a matriosca e interni al primo, vengono analizzati i
casi in cui i nodi siano incogniti oppure abbiano condizioni note. Se i nodi, analizzati in tre possibili
situazioni(indici uguali o indici che ne denotano la disposizione di adiacenza luno con laltro), rientrano nel
primo caso, ecco che i rispettivi contributi vanno ad essere collocati nella posizione corretta della matrice di
rigidezza. Viceversa vanno a costruire passo per passo il vettore b1.
Inoltre sempre allinterno dei cicli presente la sintassi per poter descrivere i casi di periodicit della
soluzione. Tale operazione si esplica nel tener conto anche dei nodi virtualmente adiacenti al nodo
considerato, sempre che questultimo sia in corrispondenza delle opportune condizioni di periodicit da
definire prima di generare la Mesh.
Al di fuori dei tre cicli viene eseguita loperazione di assemblaggio per le condizioni di Neumann e Robin.

Modelli e Metodi Numerici Analisi FEM del campo di temperature in una cella per il surgelamento industriale A.A. 2010/2011

P a g i n a | 20
La condizione di Neumann(g) equivale ad imporre che la soluzione abbia derivata lungo il rispettivo bordo
pari al valore g. Applicando la formulazione variazionale e il teorema di Gauss-Green, si ottiene il seguente
integrale:

g j ds

Esso rappresenta larea del triangolo che ha altezza unitaria,moltiplicata per il valore g.
Ecco che larea di tale triangolo data da:
1

g
2

x x y y
2

0.8
0.6

0.4
0.2
0

Tale formula riassunta dalla sintassi:


-0.2
-0.5
-0.4
-0.6
>>g/2*norm(dist); cio
la norma di ordine 2 del vettore dist;

-0.8

0.5
-1

Il vettore dist contiene la distanza(norma 2) tra i nodi della base del triangolo.
1

La condizione di Robin(h1,g1), fisicamente equivale a descrivere la distribuzione di temperature che si


sviluppa tramite il fenomeno della convezione in un fluido(aria), che ha coefficiente di scambio convettivo
pari a h1 e che tende ad una temperatura

Landamento perci esponenziale descritto dallequazione di bilancio:

Sviluppando i calcoli e applicando la formulazione variazionale alla condizione al contorno di Robin, si


giunge a:

u vd x

u v d x g1vds h1u vds f vd x

dopo aver applicato il teorema di Gauss-Green. Il termine cerchiato in rosso gi stato calcolato dalla
condizione di Neumann, perci deve essere calcolato il termine successivo:

Tale termine compare nella sintassi seguente, nella quale presente in grassetto color rosso il termine per
tener presente uneventuale caso di condizione di Dirichlet:

Modelli e Metodi Numerici Analisi FEM del campo di temperature in una cella per il surgelamento industriale A.A. 2010/2011

P a g i n a | 21
...
if ii1>0 && ii2<0 %ii1 incognito, ii2 noto
Coordinate=C(Nodo2,:);
aux=Me.NodiDirichlet(-ii2,:);
Dirichlet=Evaluate(Me.Bc,aux, Coordinate);
b(ii1)=b(ii1)+g/2*dist-h*dist/6*Dirichlet;
D(ii1,ii1)=D(ii1,ii1)+h*dist/3;
elseif ii1<0 && ii2>0 %ii1 noto, ii2 incognito
xy=C(Nodo1,:);
Coordinate=Me.NodiDirichlet(-ii1,:);
Dirichlet=Evaluate(Me.Bc,aux, Coordinate);
b(ii2)=b(ii2)+g/2*norm(dist)-h*dist/6*Dirichlet;
D(ii2,ii2)=D(ii2,ii2)+h*dist/3;
else %allora sono entrambi di Robin
b(ii1)=b(ii1)+g/2*norm(dist);
b(ii2)=b(ii2)+g/2*norm(dist);
D(ii1,ii1)=D(ii1,ii1)+h*dist/3;
D(ii2,ii2)=D(ii2,ii2)+h*dist/3;
D(ii1,ii2)=D(ii1,ii2)+h*dist/6;
D(ii2,ii1)=D(ii2,ii1)+h*dist/6;
end

Assemblamento matrice e
termine noto con i rispettivi
contributi sia sulla diagonale
che al di fuori.

...

Con la sintassi >>spalloc() viene allocata memoria per una matrice sparsa. Effettivamente la matrice
A risulta essere tale anche utilizzando il comando >>spy(A)che visualizza tutti gli elementi non nulli della
matrice:

Da osservare quanto gli elementi non nulli siano limitati rispetto alle dimensioni della matrice.
Si passa ora alla costruzione della matrice di massa attraverso i due metodi. La matrice di massa nel caso
analizzato presente soltanto nellanalisi temporale dato che essa dipende dalla presenza o meno della
dipendenza dal tempo della soluzione. Infatti essa deriva dalla semi discretizzazione in spazio del termine
con derivata temporale sul dominio.
Partendo dallequazione iniziale:

Modelli e Metodi Numerici Analisi FEM del campo di temperature in una cella per il surgelamento industriale A.A. 2010/2011

P a g i n a | 22

e applicando la formulazione variazionale, si giunge ad una formulazione del seguente tipo gi descritto:

La matrice di massa M costituita da elementi

In cui
Tramite il metodo classico si giunge ad una matrice simmetrica, ma non diagonale, che pi onerosa da
elaborare.
function M = AssemblaMatriceMassa(Me)
%function M = AssemblaMatriceMassa(Me)
%Calcola la matrice di massa
%Input:
%Me
:struttura generata dal programma che crea il grigliato
%
%Output:
%M
:matrice di massa
Tr=Me.Triangoli;
NI=Me.NodiIncogniti;
N_int = max(NI);
M = spalloc(N_int,N_int,10*N_int);
for e=1:size(Tr,1)
for i=1:3
ii = NI(Tr(e,i));
if( ii > 0)
for j=1:3
jj = NI(Tr(e,j));
if( jj > 0)
Area=Me.Aree(e);
xyb=[Me.Baricentri(e,1),Me.Baricentri(e,2)];
rho=get(Me.Forme(Me.Facce(e)),'densita',xyb);
if(jj==ii)
M(ii,ii)=M(ii,ii)+1/6*Area*rho;
else
M(ii,jj)=M(ii,jj)+1/12*Area*rho;
end
end
end
end
end
end

Come affermato in precedenza gli elementi della

sono calcolati dal seguente integrale:

Che rappresenta gi la corretta sommatoria delle matrici di massa dei singoli triangoli che contribuiscono
alla posizione . Per dimostrare i passi della funzione sopra riportata si analizza linflusso di ogni triangolo
del dominio: innanzi tutto il prodotto
deve essere valutato nel baricentro dei triangoli in modo da avere
Modelli e Metodi Numerici Analisi FEM del campo di temperature in una cella per il surgelamento industriale A.A. 2010/2011

P a g i n a | 23
un valore medio; dopodich sviluppando lintegrale precedente non su tutto il dominio ma su un solo
triangolo si perviene alla seguente matrice:

La matrice ha sempre ordine pari al numero di nodi incogniti.


Il secondo metodo di costruzione di questa matrice la tecnica del Lumping o concentrazione. In effetti la
matrice viene riassunta ad una forma puramente diagonale, i quali elementi sono la sommatoria di quelli
presenti sulla rispettiva riga della matrice precedente. Per un generico triangolo, supposto interamente
allinterno del dominio:

in cui la matrice identit 3x3.


Nella sintassi seguente, che mostra in che modo Matlab assembla con la tecnica del Lumping, viene
generato un vettore, per semplicit, che contiene tutti gli elementi della matrice diagonale.
function M = AssemblaMatriceMassaLum(Me)
%Calcola la matrice di massa con lumping
%Input:
%Me
:struttura generata dal programma che crea il grigliato
%
%Output:
%M
:vettore posto sulla diagonale della matrice di massa
Tr=Me.Triangoli;
NI=Me.NodiIncogniti;
N_int = max(NI);
%alloco solo un vettore, siccome in questo caso la matrice di massa diagonale
M = zeros(N_int,1);
for e=1:size(Tr,1)
for i=1:3
ii = NI(Tr(e,i));
if( ii > 0)
xyb=[Me.Baricentri(e,1),Me.Baricentri(e,2)];
rho=get(Me.Forme(Me.Facce(e)),'densita',xyb);
M(ii)=M(ii)+1/3*Me.Aree(e)*rho;
end
end
end

E necessario quindi usare il comando


>>ML = spdiags(M_lump,0,length(M_lump),length(M_lump));

Modelli e Metodi Numerici Analisi FEM del campo di temperature in una cella per il surgelamento industriale A.A. 2010/2011

P a g i n a | 24
Il commando appena introdotto crea una matrice sparsa
in cui m ed n sono rispettivamente gli
ultimi due parametri passati, e posiziona il vettore presente nel primo parametro sulla diagonale di ordine
pari al valore del secondo parametro passato.
Sul prompt sono stati riportati i tempi di calcolo delle matrici
:

Si osserva come il tempo necessario per assemblare lultima sia circa 3.5 volte pi basso, proprio perch si
genera un vettore e non una matrice.
Le matrici generate sono sparse come la matrice A. Infatti:

Risoluzione del sistema lineare


Si applicano ora gli strumenti introdotti fino ad ora. Innanzitutto si pu partire con lanalisi del campo di
temperature in condizioni stazionarie. A tal fine si svolta unanalisi servendosi di due strumenti: il metodo
di Gauss, e il metodo del gradiente coniugato, precondizionato e non.
C una differenza essenziale tra questi due metodi e risiede nel fatto che il primo un metodo esatto,
mentre il secondo un metodo iterativo ed necessario imporre un limite alle iterazioni: o limitarne
effettivamente il numero, oppure indicare una tolleranza al di sotto della quale il metodo si deve arrestare.

Modelli e Metodi Numerici Analisi FEM del campo di temperature in una cella per il surgelamento industriale A.A. 2010/2011

P a g i n a | 25
Metodo di Gauss
>> tic; uTInf=A\b1; t_gauss=toc;

Come dimostrato pi in seguito, il metodo di Gauss di gran lunga pi veloce del PCG, ed in pi fornisce
una soluzione numericamente esatta. Per questo motivo nella soluzione del problema stazionario si
preferito risolvere il sistema lineare con tale metodo.

Metodo PCG
Prima di eseguire il metodo del gradiente coniugato, occorre introdurre il precondizionamento. Come
spiegato precedentemente, pi una matrice grande, ossia pi il numero di triangoli elevato, tanto pi gli
elementi della matrice saranno lontani dalla diagonale, anche avendo pensato ad una numerazione
intelligente per ridurre tale inconveniente. Ci si ripercuote sul numero di condizionamento
conseguentemente elevato. Infatti la convergenza di un metodo iterativo strettamente legata al numero
di condizionamento dalla relazione:

in cui k il numero di iterazioni minimo per portare lerrore relativo al di sotto di . Perci pi diminuisce
lerrore relativo e pi il numero di condizionamento cresce, pi occorrono iterazioni per arrivare a
convergenza.
Detto questo una possibile strada per ridurre k quella di pre-moltiplicare per una matrice detta di
precondizionamento: lideale sarebbe linversa di A, tuttavia lonere computazionale del calcolo rende
inutile tale soluzione. Si pensato di conseguenza di costruire delle matrici che si avvicinino almeno in
parte ad A-1; tali matrici sono quelle che derivano dalle fattorizzazioni incomplete della A stessa.
In questo contesto si optato per la fattorizzazione incompleta di Choleski.
Essa prevede che la matrice di precondizionamento sia P-1 dove:
.
Per evitare il fenomeno del fill-in(ossia riempimento della matrice), e continuare a lavorare con matrici
sparse, si pu pensare di fattorizzare la matrice A costruendo la matrice triangolare inferiore C, che abbia
elementi non nulli nelle stesse posizioni degli elementi non nulli della matrice A. In tal modo si ottiene
sempre una matrice triangolare inferiore sparsa e ad elementi diagonali strettamente positivi. La sintassi
utilizzata:
>>fprintf('\nSISTEMA RISOLTO CON IL METODO DEL PCG:\n\n');
tic; uTInf=pcg(A,b1,1e-9,5000); t_pcg=toc;
fprintf(['\nil tempo di risoluzione del sistema col PCG ', ...
num2str(t_pcg),' s\n\n']);
%precondizionamento
fprintf('\nSISTEMA RISOLTO CON IL METODO DEL PCG PRECONDIZIONATO:\n\n');
tic; P=cholinc(A,'0')*cholinc(A,'0')';
uTInf=pcg(A,b1,1e-9,5000,P); t_pcg_P=toc;
Modelli e Metodi Numerici Analisi FEM del campo di temperature in una cella per il surgelamento industriale A.A. 2010/2011

P a g i n a | 26
fprintf(['\nil tempo di risoluzione del sistema col PCG precondizionato'...
'\ntramite fattorizzazione incompleta di Cholesky ',num2str(t_pcg_P),'
s\n\n']);
tic; P=cholinc(A,'0')*cholinc(A,'0')';t_chol=toc;
P_inv=P\eye(length(A));
S=P_inv*A;
condA_pre=condest(S);
condA=condest(A);
fprintf(['\nil numero di condizionamento della matrice A ',num2str(condA),...
'\nmentre quello della matrice precondizionata ',num2str(condA_pre),'\n\n']);

La funzione
>> uTInf=pcg(A,b1,1e-9,5000,P);

prende come parametri in ingresso la matrice A, il termine noto b1, la tolleranza, il numero massimo di
iterazioni e la matrice di precondizionamento rispettivamente.
Inoltre si scelta la fattorizzazione pi veloce da eseguire, ossia quella che fa in modo da mantenere lo
stesso pattern di sparsit della matrice A. Tale indicazione viene fornita tramite il comando:
>>cholinc(A,'0');

In alternativa sarebbe stato possibile generare una fattorizzazione pi o meno incompleta. A tal proposito si
sarebbe dovuto usare nella stessa funzione precedente un secondo parametro al posto di '0', la Drop
Tolerance. Essa informa il software di posizionare elementi nulli nelle posizioni della fattorizzazione in cui
sono presenti valori inferiori al parametro. Risulta ovvio che pi il parametro piccolo, pi la matrice in
output sar filled-in, cio non pi sparsa.
Nel grafico seguente si mettono a confronto i tempi di generazione della matrice di precondizionamento
sommati ai tempi di soluzione del sistema tramite pcg, con il tempo impiegato dallalgoritmo di Gauss.

Risulta perci confermata la maggiore rapidit del metodo esatto in tutti i valori della Drop Tolerance.
Modelli e Metodi Numerici Analisi FEM del campo di temperature in una cella per il surgelamento industriale A.A. 2010/2011

P a g i n a | 27
In particolare risultati che si ottengono col pcg sono i seguenti:

Si osserva che il numero di condizionamento diminuito di ben due ordini di grandezza e questo spiega il
minor numero di iterazioni che occorrono per giungere a convergenza nel Gradiente coniugato
precondizionato.
Dopo aver introdotto il precondizionamento ed averne mostrato i benefici in termini di iterazioni, ma anche
gli svantaggi in termini di tempi di soluzione, i successivi calcoli sono stati svolti senza utilizzarlo.

Soluzione stazionaria
La soluzione stazionaria con tale metodo si mostrata variabile al variare della tolleranza imposta, proprio
perch si tratta di un metodo iterativo, e ci ha suggerito di effettuare uno studio parametrico variando
proprio la tolleranza. Tutto ci dopo aver proseguito con la definizione di alcuni importanti parametri,
ovvero aver imposto la soluzione sui nodi noti.
>> uu0=zeros(size(Me.Coordinate,1),1);
%valutiamo le coordinate dei nodi di Dirichlet
lato_circolare1=[];
lato_circolare2=[];
lato_circolare3=[];
for i=1:8
lato_circolare1=[lato_circolare1 (GetDirichletNodes(Me,[3,1,i]))'];
end
for i=1:16
lato_circolare2=[lato_circolare2 (GetDirichletNodes(Me,[3,4,i]))'];
end
for i=1:16
lato_circolare3=[lato_circolare3 (GetDirichletNodes(Me,[3,5,i]))'];
end
Modelli e Metodi Numerici Analisi FEM del campo di temperature in una cella per il surgelamento industriale A.A. 2010/2011

P a g i n a | 28
uu_circ1=[];
uu_circ2=[];
uu_circ3=[];
%valutiamo il valore nelle coordinate determinate sopra
uu_circ1=[uu_circ1 (Evaluate(Bc,[3,1,1],Me.Coordinate(lato_circolare1,:)))'];
uu_circ2=[uu_circ2 (Evaluate(Bc,[3,4,1],Me.Coordinate(lato_circolare2,:)))'];
uu_circ3=[uu_circ3 (Evaluate(Bc,[3,5,1],Me.Coordinate(lato_circolare3,:)))'];

I cicli for sono introdotti per i contorni circolari che descrivono la circonferenza interna dei condotti in
rame, e che la funzione circle introdotta in precedenza ha approssimato a poligoni con 16 lati. Per
questo motivo i primi due cicli sono sulle due circonferenze complete(condotti completamente annegati
nella geometria delle piastre), mentre lultimo i passaggi sono solo 8, pari ad una semicirconferenza che
descrive il condotto sezionato dallasse di simmetria. E presente la funzione
>> GetDirichletNodes(Me,[3,1,i]);
la quale valuta gli indici dei nodi che sono presenti sui lati della forma numero 3, poligono 1, e lato i-esimo.
Nel valutare successivamente la condizione di Dirichlet negli indici appena estratti, ci si serve della funzione
>> Evaluate(Bc,[3,1,1],Me.Coordinate(lato_circolare1,:));
che assume come dati in ingresso la classe Bc, il lato del poligono 1 della forma 3, e la funzione
Me.Coordinate che estrapola le coordinate
dei nodi presenti in lato_circolare1.
Effettuati questi passaggi si introduce un nuovo ciclo che permette di valutare e successivamente graficare
landamento del nodo numero 9337 ovvero il punto di intersezione dei due assi di simmetria, nonch il
cuore del pesce(fisicamente il punto pi difficile da raggiungere da parte del flusso termico uscente).
%analisi di convergenza di un nodo al variare della toll del pcg
%fprintf('\nANALISI DI CONVERGENZA DEL NODO N 9337(CUORE DEL PESCE) AL VARIARE
DELLA TOLL DEL METODO PCG:\n\n')
toll=1./10.^(1:9);
for i=1:length(toll)
tic; [uTInf,flag,residuo,it]=pcg(A,b1,toll(i),5000);t_pcg(i)=toc;
nodo9337(i)=uTInf(9337);
iter(i)=it;
end
figure
subplot(2,2,1);
semilogx(toll,nodo9337);xlabel('tolleranza'); ylabel('temperatura [K]');
subplot(2,2,2);
semilogx(toll,t_pcg); xlabel('tolleranza'); ylabel('tempo di soluzione [s]');
subplot(2,2,3);
semilogx(toll,iter);xlabel('tolleranza');ylabel('numero iterazioni');

I risultati ottenuti rappresentano la convergenza del nodo verso un valore corretto oltre il quale tale
variazione in funzione della tolleranza non pi apprezzabile, e quindi trascurabile.

Modelli e Metodi Numerici Analisi FEM del campo di temperature in una cella per il surgelamento industriale A.A. 2010/2011

P a g i n a | 29

Il software assume di default la temperatura 0 K corrispondente allo 0 numerico, fenomeno del tutto
incompatibile con la fisica del sistema reale.
La stabilizzazione si raggiunge intorno al valore di toll=10-4.5. Leffetto negativo, come spiegato
precedentemente che i tempi di calcolo aumentano come mostrato in figura.
Si prosegue con la soluzione stazionaria ricavata con il metodo di Gauss:
%soluzione non iterativa con Gauss, meno tempo e ed esatta
tic; uTInf=A\b1; t_gauss=toc;
fprintf(['\n\nProvando a risolvere il sistema con Gauss, il tempo'...
'di risoluzione ',num2str(t_gauss),'s\n\n']);
%soluzione stazionaria a tempo infinito
uu0(Me.NodiIncogniti>0)= uTInf;
uu0(lato_circolare1)=uu_circ1;
uu0(lato_circolare2)=uu_circ2;
uu0(lato_circolare3)=uu_circ3;
figure
Draw(Me,uu0,'h');

Modelli e Metodi Numerici Analisi FEM del campo di temperature in una cella per il surgelamento industriale A.A. 2010/2011

P a g i n a | 30
La soluzione coerente con quello che ci si pu aspettare da considerazioni di tipo analitico. Infatti la
temperatura quasi totalmente prossima ai -30C, e lunico punto in cui sale allaltezza dellasse di
simmetria orizzontale in cui oltre ad essere nei pressi di una zona isolata(scarsa conducibilit del pesce), si
in presenza di flusso imposto dalla condizione di Robin, pi evidente nella seguente immagine:

Soluzione transitoria
Per quanto concerne lanalisi transitoria si introduce la semidiscretizzazione in tempo del dominio ed entra
in gioco la precedente matrice di massa. Nella seguente argomentazione stata utilizzata una matrice di
massa classica, senza cio utilizzare la tecnica del lumping. Si optato per tale scelta a favore della
maggiore correttezza e approssimazione della soluzione anche se questo significa pi lentezza nella
risoluzione.
Quando si parla di semidiscretizzazione in tempo vengono subito in mente due classi di metodi di
avanzamento in tempo:
Metodi impliciti, quali Eulero Esplicito o Crank-Nicholson, che sono incondizionatamente stabili,
cio giungono a convergenza della soluzione qualunque sia lintervallo di discretizzazione
temporale;
Metodi espliciti, quali Eulero Esplicito, che al contrario sono condizionatamente stabili, ovvero
esiste un
oltre il quale la soluzione assume un andamento instabile e diverge all ;
Sono inoltre presenti altri metodi espliciti di avanzamento che hanno il passo di integrazione variabile e
sono quindi adatti a risolvere problemi stiff come quello in esame. Un problema stiff quando il metodo
esplicito richiede inizialmente un passo molto piccolo a causa di forti discontinuit.
Per poter iniziare lanalisi si modifica la soluzione stazionaria cambiando tutti i valori dei nodi che sono nel
sotto dominio del pesce, poich come soluzione iniziale il pesce a +16C quando viene inserito nella cella.

Modelli e Metodi Numerici Analisi FEM del campo di temperature in una cella per il surgelamento industriale A.A. 2010/2011

P a g i n a | 31
%inizializziamo la soluzione iniziale per il transitorio
figure
uu=uu0;
uu(Me.Coordinate(:,2)<0.05)=289.15;
u=uu(Me.NodiIncogniti>0);

tutti i nodi del pesce vengono posti a +16C

Lultima riga di codice indica che andremo ad eseguire i calcoli solo sui nodi incogniti.
Metodo di Eulero Esplicito
La formula per il metodo in questione
dove il

il passo di discretizzazione e deve essere al di sotto di un certo valore

Qui entrano nella formula gli autovalori ed in particolare il passo massimo risulta essere inversamente
proporzionale a quello massimo tra essi.

>>dt=2/(eigs(A,M,1,'LM'));

%passo temporale massimo per la stabilit troppo


%basso ordine 1e-4

%si giunge ad una soluzione instabile a causa della forte discontinuit della
%soluzione in prossimit del contatto tra pesce e lastra
tend=3600;

%istante finale

for k=1:tend/dt
t=k*dt;
[u,flag]=pcg(M,(M*u+dt*A*u+dt*b1),1e-9,1000,[],[],u);%Eulero esplicito
uu(Me.NodiIncogniti>0)=u;
uu(lato_circolare1)=uu_circ1;
uu(lato_circolare2)=uu_circ2;
uu(lato_circolare3)=uu_circ3;
hold off;
Draw(Me,uu,'h');
zlim([220 290]);
title(['t= ' num2str(t)]);
drawnow;

Non vengono utilizzate matrici di


precondizionamento

end

Modelli e Metodi Numerici Analisi FEM del campo di temperature in una cella per il surgelamento industriale A.A. 2010/2011

P a g i n a | 32
Si osserva la discontinuit della soluzione iniziale:

La soluzione di questo metodo non viene visualizzata visto che anche usando un
, essa diverge
con instabilit. La possibile spiegazione che la condizione sul passo massimo un risultato analitico, e
oltre a ci possibile che la forte discontinuit vada a peggiorare la condizione. Si dovrebbe di conseguenza
affinare moltissimo il passo, rendendo fortemente inefficiente tale strumento.
Metodo di Eulero Implicito
Il metodo porta la soluzione a convergenza per qualsiasi

attraverso la seguente formulazione:

Dopo aver usato lo stesso codice per linizializzazione si passa al ciclo sui passi temporali:
%Eulero implicito
dt=20;
%passo temporale
tend=3600;
%istante finale
for k=1:tend/dt
t=k*dt;
[u,flag]=pcg((M+dt*A), (M*u+dt*b1),1e-9,1000,[],[],u);%Eulero implicito
uu(Me.NodiIncogniti>0)=u;
uu(lato_circolare1)=uu_circ1;
uu(lato_circolare2)=uu_circ2;
uu(lato_circolare3)=uu_circ3;
hold off;
Draw(Me,uu,'h');
zlim([220 290]);
title(['t= ' num2str(t)]);xlabel('[m]');ylabel('[m]');zlabel('[K]');
drawnow;
end

Modelli e Metodi Numerici Analisi FEM del campo di temperature in una cella per il surgelamento industriale A.A. 2010/2011

P a g i n a | 33
La soluzione iniziale ovviamente sempre la stessa. Vengono riportate le soluzioni in alcuni istanti
significativi quali
,
e
.

Modelli e Metodi Numerici Analisi FEM del campo di temperature in una cella per il surgelamento industriale A.A. 2010/2011

P a g i n a | 34

Metodo dei trapezi o di Crank-Nicolson


La formulazione utilizzata dal metodo dei trapezi derivata dal metodo dei trapezi per il calcolo degli
integrali: essa deriva dalla combinazione lineare tra le formule di Eulero Implicito ed Esplicito.
Infatti se scriviamo EE come
e EI come
facendone la somma membro a membro

La seconda parte del secondo membro non altro che

approssimato con la formula dellarea del trapezio che ha come limiti i due istanti temporali estremi
dellintegrazione.
Il metodo perci implicito ed incondizionatamente stabile anche se gli spostamenti dei nodi presenti sulla
discontinuit hanno un andamento nel tempo che arriva a convergenza molto lentamente.
Si mostrano i grafici di tali oscillazioni nel tempo ed in funzione della dimensione del passo temporale. Si
scopre che pi il passo temporale basso, pi lampiezza di oscillazione bassa. Ci si trova davanti ad una
situazione intermedia tra EE e EI da cui deriva il metodo.

Modelli e Metodi Numerici Analisi FEM del campo di temperature in una cella per il surgelamento industriale A.A. 2010/2011

P a g i n a | 35

Per quanto riguarda gli altri nodi del dominio, essi si comportano come nel metodo di EI per cui non
necessaria una nuova rappresentazione grafica.
Altri metodi di avanzamento in tempo: ode45 e ode15s
Per eseguire in modo pi efficace la discretizzazione nel tempo e la successiva risoluzione delle equazioni
differenziali, la libreria di Matlab dispone di alcuni metodi, basati sugli sviluppi di Runge-Kutta, a passo di
discretizzazione del tempo e ordine di approssimazione variabili.
Si provato ad implementare tali metodi, anche se con scarso successo, poich il software non risolve il
problema in mopdo efficiente. Per cercare di porre rimedio, dato che i tempi di risoluzione sono molto
lunghi probabilmente a causa della forte discontinuit allinterfaccia, stato smussato il gradino
introducendo un andamento esponenziale.
Tenendo presente la geometria e la temperatura alla quale si trova il pesce una volta inserito nella cella, si
pervenuti alla seguente funzione dipendente solo dalle coordinate y:

Modelli e Metodi Numerici Analisi FEM del campo di temperature in una cella per il surgelamento industriale A.A. 2010/2011

P a g i n a | 36

La soluzione si presenta cos:

Si mostra nel seguito lo script utilizzato:


>>funct=@(y)-exp(300*(y+log(46)/300-0.05))+289.15;
uu_iniz=uu0;
vect=uu_iniz(Me.Coordinate(:,2)<0.05);
coord=Me.Coordinate((Me.Coordinate(:,2)<0.05),2);
for s=1:length(uu_iniz(Me.Coordinate(:,2)<0.05))
vect(s)=funct(coord(s));
end
uu_iniz(Me.Coordinate(:,2)<0.05)=vect;
Draw(Me,uu_iniz,'h');
xlabel('[m]');ylabel('[m]');zlabel('temperatura [K]');

Ode45

Nonostante ladozione della precedente soluzione iniziale, i metodi presenti nella libreria di Matlab
rimangono inefficienti . Sono stati utilizzati metodi quali ode45, ode15s, ode23s, ed infine ode113. Ode15s
e ode23s sono algoritmi per la risoluzione di problemi stiff ossia problemi in cui sono presenti delle
discontinuit pi o meno accentuate, come nel caso in analisi.
Ci porta a concludere che i metodi pi efficienti siano di conseguenza Eulero Implicito ed il metodo dei
trapezi, anche se mostra qualche errore di tipo numerico.
Vengono comunque riportati gli script per lesecuzione delle ode.
figure
u=uu_iniz(Me.NodiIncogniti>0);
%u=pcg(A,b1,1e-3,500);
odepar=odeset('mass',M);
[t,u]=ode45(@(t,y)(-A*y+b1),[0 1200],u,odepar);
Modelli e Metodi Numerici Analisi FEM del campo di temperature in una cella per il surgelamento industriale A.A. 2010/2011

P a g i n a | 37

for k=1:length(t)
uu(Me.NodiIncogniti>0)=u(k);
uu(lato_circolare1)=uu_circ1;
uu(lato_circolare2)=uu_circ2;
uu(lato_circolare3)=uu_circ3;
hold off;
Draw(Me,uu,'h');
zlim([220 290]);
title(['t= ' num2str(t(k))]);
drawnow;
end
%ode 15s
figure
u=uu_iniz(Me.NodiIncogniti>0);
odepar=odeset('mass',M);
[t,u]=ode15s(@(t,u)(-A*u+b1),[0 5],u,odepar);
for k=1:length(t)
uu(Me.NodiIncogniti>0)=u(k);
uu(lato_circolare1)=uu_circ1;
uu(lato_circolare2)=uu_circ2;
uu(lato_circolare3)=uu_circ3;
hold off;
Draw(Me,uu,'h');
zlim([220 290]);
title(['t= ' num2str(t(k))]);
drawnow;
end

La sintassi per le ode23s e ode113 sono identiche.

Riferimenti bibliografici
Appunti per il corso di Modelli e Metodi Numerici Claudio Canuto (2011)
Appunti e slides delle esercitazioni curate dallIngegnere Paolo Bardella.

Modelli e Metodi Numerici Analisi FEM del campo di temperature in una cella per il surgelamento industriale A.A. 2010/2011