98

Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Embed Size (px)

DESCRIPTION

Università degli Studi di TriesteFacoltà di Ingegneria CivileCorso di Laurea in Ingegneria Civile ed AmbientaleTesi di laurea triennale in Analisi Numerica delle Strutture

Citation preview

Page 1: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale
Page 2: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

UNIVERSITA’ DEGLI STUDI DI TRIESTEFACOLTA’ DI INGEGNERIA

Corso di Laurea in Ingegneria Civile ed Ambientale

A.A. 2008 / 2009

Tesi di laurea triennale in

Analisi Numerica delle Strutture

Analisi elastica con ilmetodo degli elementi finiti:

sviluppo di un codice

e confronto conprogrammi di uso commerciale

Relatore: Laureando:

Prof. Ing. Alfonso Nappi Enrico Bergamo

Page 3: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Indice

Introduzione i

1 Cenni sul metodo degli elementi finiti 11.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Panoramica del metodo . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.2.1 Scelta del modello matematico piu adatto . . . . . . . . . . . 21.2.2 Scelta del tipo di elemento finito . . . . . . . . . . . . . . . . 31.2.3 Meshing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.2.4 Proprieta dei materiali . . . . . . . . . . . . . . . . . . . . . . 91.2.5 Matrice di rigidezza . . . . . . . . . . . . . . . . . . . . . . . 91.2.6 Rinumerazione dei nodi . . . . . . . . . . . . . . . . . . . . . 111.2.7 Attribuzione dei vincoli . . . . . . . . . . . . . . . . . . . . . 121.2.8 Attribuzione dei carichi . . . . . . . . . . . . . . . . . . . . . 121.2.9 Assemblaggio del sistema risolvente . . . . . . . . . . . . . . 141.2.10 Risoluzione del sistema lineare . . . . . . . . . . . . . . . . . 18

2 Ambiente di sviluppo 212.1 Linguaggio di programmazione . . . . . . . . . . . . . . . . . . . . . 212.2 .NET Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.3 IDE SharpDevelop . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.4 EasyMesh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.5 Math.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.6 Open Cascade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3 Analisi del codice 273.1 Organizzazione del progetto . . . . . . . . . . . . . . . . . . . . . . . 27

3.1.1 Thesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.1.2 Kmatrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.1.3 Calc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

5

Page 4: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

3.2 Geometria e discretizzazione . . . . . . . . . . . . . . . . . . . . . . 293.3 Matrice di rigidezza . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.3.1 La matrice di rigidezza elemento . . . . . . . . . . . . . . . . 343.3.2 Assemblaggio della matrice globale . . . . . . . . . . . . . . . 37

3.4 Vincoli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423.5 Carichi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443.6 Soluzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

3.6.1 calc.calcolo.ordina() . . . . . . . . . . . . . . . . . . . . . . . 453.6.2 calc.calcolo.sislin() . . . . . . . . . . . . . . . . . . . . . . . 503.6.3 calc.calcolo.spostamenti() . . . . . . . . . . . . . . . . . . . . 513.6.4 calc.calcolo.stress() . . . . . . . . . . . . . . . . . . . . . . . 53

4 Confronti con software di calcolo commerciali 614.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

4.1.1 SAP2000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614.1.2 COMSOL Multiphysics . . . . . . . . . . . . . . . . . . . . . 61

4.2 Primo problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644.3 Secondo problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684.4 Terzo problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734.5 Quarto problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 784.6 Quinto problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

Conclusioni 89

Bibliografia 91

Page 5: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Introduzione

Con questo lavoro si vuole esporre il percorso di sviluppo e ”validazione” di un codice dicalcolo in grado di eseguire analisi elastico lineari su lastre bidimensionali sollecitatenel proprio piano. A tal proposito e stato elaborato un software che e disponibile,unitamente al codice sorgente, nel CD-ROM allegato. Nelle prossime pagine viene es-posta una diretta applicazione degli argomenti trattati nell’ambito del corso di AnalisiNumerica delle Strutture, tenuto dal prof. ing. Alfonso Nappi.

La tesi ha anche un secondo obiettivo: dimostrare che le competenze informatichenecessarie ad elaborare un codice funzionante sono acquisibili anche individualmente.I linguaggi di programmazione di alto livello (Java, C#, ecc.) sono oggigiorno perfor-manti tanto quanto C o C++ e consentono una programmazione veloce ed assistita.Gli strumenti, anche open source, a disposizione di questi linguaggi stanno crescendoin maniera esponenziale e rendono l’implementazione di funzioni complesse semprepiu semplice.

Nel primo capitolo e contenuta una breve panoramica del metodo degli elementifiniti. La trattazione e orientata ad evidenziare l’applicazione del metodo per il casopiano. Nel secondo capitolo si illustrano gli strumenti che sono stati utilizzati nellosviluppo del software. Il terzo capitolo e dedicato all’analisi del codice ideato, mentrenel quarto capitolo vengono confrontati i risultati prodotti con quelli di altri dueprogrammi: SAP2000 e COMSOL Multiphysics.

i

Page 6: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale
Page 7: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Capitolo 1

Cenni sul metodo deglielementi finiti

1.1 Introduzione

Le equazioni di↵erenziali alle derivate parziali vengono comunemente usate per formu-lare e risolvere problemi quali la propagazione del suono o del calore, in aerodinamica,nel calcolo strutturale o in meccanica dei fluidi. Il metodo degli elementi finiti trovale proprie origini nella necessita di dare una soluzione numerica ai problemi formulatitramite queste equazioni. I problemi per cui per la prima volta1, negli anni 1930-35,si sentı la necessita di una soluzione numerica furono l’analisi elastica e strutturalenel campo dell’ingegneria civile ed aeronautica. Tuttavia la nascita vera e propria elo sviluppo del metodo agli elementi finiti si colloca nella seconda meta degli anni’50 con il contributo fondamentale di M. J. Turner della Boeing, che formulo e per-feziono il primo approccio agli elementi finiti nel campo del continuo. Altri contributifondamentali alla storia dei FEM sono quelli di B. M. Irons, cui sono dovuti gli ele-menti isoparametrici e il concetto di funzione di forma. Con la crescente disponibilitadi calcolatori elettronici, dagli anni ’70 in poi, il metodo ha trovato di↵usione comestrategia di modellazione numerica di sistemi fisici in un’ampia varieta di problemi.

1.2 Panoramica del metodo

Il processo di traduzione del metodo in programma per elaboratore prevede alcune fasidalle quali non e possibile prescindere. In questo capitolo se ne dara una descrizione

1lavori di A. R. Collar e W. J. Duncan

1

Page 8: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Cenni sul metodo degli elementi finiti

seguendo un ordine logico, mentre nel prossimo capitolo si a↵rontera l’argomento dalpunto di vista dell’elaboratore, seguendo sequenzialmente lo svolgersi dell’analisi.

1.2.1 Scelta del modello matematico piu adatto

Ogni problema di elasticita e, a rigore, un problema tridimensionale; tuttavia, inmoltissimi casi, il problema si pone in modo da poter utilizzare le trattazioni approssi-mate descritte in teoria, come ad esempio:

• teoria tecnica della trave;

• stato piano di sforzo;

• stato piano di deformazione;

• assialsimmetria.

Prima di descrivere il modello che si e utilizzato vanno fatte alcune doverose pre-cisazioni sulle ipotesi di calcolo che si sono assunte. La scelta del modello matematicocomporta inevitabilmente anche l’assunzione di alcune ipotesi fondamentali. In questocaso si sono assunte le seguenti ipotesi:

• omogeneita: il corpo possiede le medesime proprieta fisiche in ogni punto,indipendentemente dalla posizione;

• isotropia: il corpo risponde alle sollecitazioni indipendentemente dalla direzionedalle quali esse provengono;

• elasticita lineare: esiste un legame lineare tra sforzi e deformazioni;

• regime di piccoli spostamenti: consente di trascurare le non linearita nellerelazioni cinematiche e quindi di assumere la configurazione indeformata comeriferimento per scrivere le equazioni di equilibrio;

• sistema di forze agenti nel piano definito dal corpo: la lastra verra sol-lecitata solamente nel proprio piano.

Nel programma oggetto di questa tesi si utilizzera la teoria dello stato piano disforzo. Questa prevede che gli unici sforzi non nulli siano paralleli al piano mediodella lamina e che non ci siano ne sforzi normali, ne sforzi tangenziali perpendicolarial piano stesso.

2

Page 9: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

1.2 Panoramica del metodo

Figura 1.1: Stato piano di sforzo, sistemadi riferimento

Assumendo il sistema di riferimentoindicato in Figura 1.1 cio equivale a direche

z

= �

yz

= �

zx

= 0

Le incognite coinvolte saranno percioil vettore delle deformazioni

✏ = {✏x

, ✏

y

, ✏

xy

}T

e il vettore degli sforzi

� = {�x

, �

y

, �

xy

}T

Nei materiali elastici lineari esiste una relazione lineare con coe�cienti costantiche lega le deformazioni agli sforzi:

� = D✏

La matrice D, nel caso generale di materiale omogeneo e isotropo, puo esserescritta come

D =

8>>>>>><

>>>>>>:

� + 2G � � 0 0 0� � + 2G � 0 0 0� � � + 2G 0 0 00 0 0 G 0 00 0 0 0 G 00 0 0 0 0 G

9>>>>>>=

>>>>>>;

Dove si pone � = ⌫E

(1+⌫)(1�2⌫) (prima costante di Lame) e G = E

2(1+⌫) (seconda

costante di Lame, modulo di elasticita tangenziale). In virtu della ”semplificazione”introdotta dalla teoria dello stato piano di sforzo la matrice D diviene

D =E

1� ⌫

2

8<

:

1 ⌫ 0⌫ 1 00 0 1�⌫

2

9=

;

1.2.2 Scelta del tipo di elemento finito

La scelta del tipo di elemento finito da utilizzare nell’analisi e fortemente influenzatadal tipo di modello matematico che si e assunto.

3

Page 10: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Cenni sul metodo degli elementi finiti

Figura 1.2: Elemento CST

Se, ad esempio, si e scelto di analizzareuna struttura a telaio la scelta cadra su unelemento di tipo biella (elemento truss) odi trave (elemento beam). E da notare chequesti due tipi di elemento hanno comunquecomportamenti molto diversi tra loro. Nel ca-so piu generale di problemi piani le possibilitadi scelta sono molteplici: e possibile utiliz-zare elementi a tre o quattro nodi ma ancheelementi, se pur di forma simile, con una dif-ferente formulazione al fine di poter coglierestati di deformazione e sforzo piu dettagliati(come triangoli a sei nodi o quadrilateri a ot-to nodi). Nel programma oggetto di questa tesi si e deciso di implementare elementitriangolari a tre nodi, data la semplicita della formulazione e la facilita di gestione alivello software che questi o↵ono. Questo tipo di elemento e meglio conosciuto come”elemento CST”2 ed e in grado, a partire da un campo di spostamenti lineari, didescrivere stati di deformazione (e quindi di sollecitazione) costanti. Occorre definireun modello di spostamenti al fine di stimare la posizione di ogni punto all’internodell’elemento una volta che il corpo e stato deformato. Gli spostamenti coinvoltisaranno u e v, ovvero i due gradi di liberta che possiede un punto nel piano. Essisaranno funzione delle coordinate e di sei parametri cha andranno stimati mediantele condizioni al contorno:

⇢u(x, y) = ↵1 + ↵2x + ↵3y

v(x, y) = ↵4 + ↵5x + ↵6y

8<

:

u(0, 0) = u1 = ↵1

u(x2, 0) = u2 = ↵1 + ↵2x2

u(x3, y3) = u3 = ↵1 + ↵2x3 + ↵3y3

=)

8<

:

↵1 = u1

↵2 = u2�u1x2

↵3 = u3�u1y3

+ u1�u2x2

x3

2Constant Strain Triangle

4

Page 11: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

1.2 Panoramica del metodo

8<

:

v(0, 0) = v1 = ↵4

v(x2, 0) = v2 = ↵4 + ↵5x2

v(x3, y3) = v3 = ↵4 + ↵5x3 + ↵6y3

=)

8<

:

↵4 = v1

↵5 = v2�v1x2

↵6 = v3�v1y3

+ v1�v2x2

x3

Noti i parametri ↵ e possibile calcolare le funzioni di forma in u:

u(x, y) = ↵1 + ↵2x + ↵3y =

= u1 +u2 � u1

x2x +

✓u3 � u1

y3+

u1 � u2

x2y3x3

◆y =

=✓

1� x

x2� y

y3+

x3y

x2y3

◆u1 +

✓� x3y

x2y3

◆u2 +

y

y3u3

u(x, y) = '1(x, y)u1 + '2(x, y)u2 + '3(x, y)u3

e in v:

v(x, y) = ↵4 + ↵5x + ↵6y =

= v1 +v2 � v1

x2x +

✓v3 � v1

y3+

v1 � v2

x2y3x3

◆y =

=✓

1� x

x2� y

y3+

x3y

x2y3

◆v1 +

✓� x3y

x2y3

◆v2 +

y

y3v3

v(x, y) = '1(x, y)v1 + '2(x, y)v2 + '3(x, y)v3

Volendo dare una rappresentazione grafica delle funzioni di forma potremo notarecome esse descrivano in modo lineare la partecipazione dello spostamento dei nodialla definizione dello spostamento del punto generico all’interno dell’elemento (figura1.3).

In forma matriciale il modello di spostamento si puo esprimere nel seguente modo:

u(x, y) =

(u(x, y)v(x, y)

)= �(x, y)u

5

Page 12: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Cenni sul metodo degli elementi finiti

Figura 1.3: Andamento delle funzioni di forma

Con u vettore degli spostamenti nodali e �(x, y) matrice delle funzioni di forma:

u =�u1 v1 u2 v2 u3 v3

T

�(x, y) =⇢

'1(x, y) 0 '2(x, y) 0 '3(x, y) 00 '1(x, y) 0 '2(x, y) 0 '3(x, y)

Lo stato deformativo e ricavabile, in regime di piccoli spostamenti, derivando lecomponenti dello spostamento.

ij

=12

✓@u

i

@x

j

+@u

j

@x

i

Applicandola agli elementi finiti triangolari e limitandosi a considerare le defor-mazioni nel piano, si ottengono le seguenti espressioni:

x

=@u(x, y)

@x

=@'1(x, y)

@x

u1 +@'2(x, y)

@x

u2 +@'3(x, y)

@x

u3

y

=@v(x, y)

@y

=@'1(x, y)

@y

v1 +@'2(x, y)

@y

v2 +@'3(x, y)

@y

v3

xy

=@u(x, y)

@y

+@v(x, y)

@x

=@'1(x, y)

@y

u1 +@'1(x, y)

@x

v1 +@'2(x, y)

@y

u2+

+@'2(x, y)

@x

v2 +@'3(x, y)

@y

u3 +@'3(x, y)

@x

v3

6

Page 13: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

1.2 Panoramica del metodo

Da quanto appena dimostrato risulta evidente che scelti tre nodi per ogni elementotriangolare, si puo descrivere un modello di spostamenti lineare, dal quale consegueuno stato di deformazione costante. Anche la distribuzione di sforzi che ne risulta saracostante in ogni singolo elemento. Infatti, sulla base di quanto detto precedentementea proposito dello stato piano di sforzo, e possibile ricavare le sollecitazioni di ognielemento con una semplice moltiplicazione matriciale:

� = D✏

8<

:

x

y

xy

9=

; =

8><

>:

E

1�⌫

2⌫E

1�⌫

2 0⌫E

1�⌫

2E

1�⌫

2 00 0 E

2(1+⌫)

9>=

>;

8<

:

x

y

xy

9=

;

Quindi per ogni singolo elemento vale l’equazione:

� = DBu

dove B e la matrice delle derivate delle funzioni di forma:

B =

8><

>:

@'1(x,y)@x

0 @'2(x,y)@x

0 @'3(x,y)@x

00 @'1(x,y)

@y

0 @'2(x,y)@y

0 @'3(x,y)@y

@'1(x,y)@x

@'1(x,y)@y

@'2(x,y)@x

@'2(x,y)@y

@'3(x,y)@x

@'3(x,y)@y

9>=

>;

Quanto sin qui visto puo essere applicato anche per scrivere l’equazione di equilibriodi un elemento finito dopo l’applicazione dei carichi. L’energia di deformazione cheviene immagazzinata e pari a

Z = 0.5Z

T

�dV

ricordando che

� = DBu

e che

(Bu)T = uT BT

possiamo scrivere

Z = 0.5uT

e

(Z

BT DB�dV )ue

7

Page 14: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Cenni sul metodo degli elementi finiti

1.2.3 Meshing

Una volta scelta la formulazione ed il tipo di elemento finito, e necessario dividere lastruttura in parti o elementi finiti. Per la discretizzazione e opportuno seguire alcuneregole di base:

• elementi quadrati o triangoli equilateri sono da preferire ad elementi di formaallungata o irregolare;

• nelle zone in cui si prevede una variazione significativa dello stato tensionale ebene ridurre la dimensione degli elementi e, conseguentemente, aumentarne ilnumero;

• per valutare la convergenza del procedimento e necessario e↵ettuare la stessaanalisi con discretizzazioni via via piu ra�nate.

Il meshing delle strutture analizzate nel programma e ottenuto sfruttando unsotto-programma sviluppato al DINMA dell’Universita di Trieste. Esso si basa sulladecomposizione di Voronoi e sulla successiva triangolazione di Delaunay: il pezzo daanalizzare viene suddiviso in porzioni di spazio delle dimensioni suggerite dall’utente,individuando cosı una serie di piccoli domini il cui ”baricentro” diventera un nododella discretizzazione. Unendo tutti i nodi si ottengono gli elementi triangolari.

Figura 1.4: Discretizzazione mediante decomposizione di Voronoi

In figura 1.4 e visibile in rosso il reticolo relativo alla decomposizione di Voronoimentre in nero e rappresentata la suddivisione di Delaunay.

Come e possibile notare inoltre dalla figura 1.5, questo tipo di discretizzazione per-mette di ottenere elementi abbastanza regolari, necessari per giungere ad una soluzionerealistica. Variando inoltre i parametri di input e possibile ottenere infittimenti nellezone desiderate.

8

Page 15: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

1.2 Panoramica del metodo

Figura 1.5: Elementi di dimensioni di↵erenti in relazione al gradiente di sforzo

1.2.4 Proprieta dei materiali

Dopo aver definito la struttura geometrica del problema occorre attribuire ad ognielemento le corrette proprieta fisiche. Esse risultano fondamentali in qualunque tipodi analisi, soprattutto nel caso in cui si debba analizzare il comportamento di duecomponenti solidali tra loro, ma composti di materiali diversi: si rende necessariodefinire le proprieta deformative di ogni materiale ed attribuirle a ciascun elemento.Nel caso dello stato piano di sforzo i soli parametri necessari sono il modulo di Younged il coe�ciente di Poisson.

1.2.5 Matrice di rigidezza

Una volta in possesso dei dati geometrici e delle proprieta fisiche degli elementi, in-dipendentemente dalla presenza di vincoli o carichi, e possibile determinare la matricedi rigidezza K della lastra oggetto dell’analisi. I passi da e↵ettuare sono concettual-mente due: e necessario calcolare le matrici di rigidezza di ogni elemento e successi-vamente assemblarle in quella globale che tenga conto della e↵ettiva dislocazione deinodi e delle mutue influenze che gli elementi esercitano fra loro. La tipica matrice dirigidezza del triangolo CST e una matrice quadrata di dimensione 6 x 6. Essa, infatti,deve rappresentare in maniera e�cace la risposta allo spostamento dei tre nodi condue gradi di liberta. Ad essa si perviene calcolando il seguente integrale:

ke

=Z

Ve

BT

e

De

Be

dV

9

Page 16: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Cenni sul metodo degli elementi finiti

dove B e D sono le matrici definite nei precedenti paragrafi.

Nel caso in cui la discretizzazione sia composta da elementi uguali nella formu-lazione ma di diverse dimensioni, si rendera necessario per ognuno il calcolo dellamatrice di rigidezza.

La fase successiva consiste nell’assemblare le singole matrici. Nel caso piano dielementi triangolari a tre nodi - quindi con matrici 6 x 6 - occorre dividere la matricein sottomatrici 2 x 2 andando ad individuare cosı nove blocchetti.

ke

=

8>>>>>><

>>>>>>:

k11 k12 k13 k14 k15 k16

k21 k22 k23 k24 k25 k26

k31 k32 k33 k34 k35 k36

k41 k42 k43 k44 k45 k46

k51 k52 k53 k54 k55 k56

k61 k62 k63 k64 k65 k66

9>>>>>>=

>>>>>>;

Figura 1.6: Elemento generico

Considerando l’elemento generico in figu-ra, possiamo far corrispondere i vari blocchiai vari nodi:

ke

=

8<

:

k11 k12 k13

k21 k22 k23

k31 k32 k33

9=

;

dove

k11 =⇢

k11 k12

k21 k22

k12 =⇢

k13 k14

k23 k24

e cosı via.

Questo elemento, di cui e stata calcolata la matrice di rigidezza, probabilmentefara parte di un insieme piu vasto di elementi e molto probabilmente i suoi nodiavranno una numerazione di↵erente.

Supponiamo quindi che l’elemento si trovi nella condizione di figura 1.7.

10

Page 17: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

1.2 Panoramica del metodo

Figura 1.7: Elemento generico

La suddetta matrice andra sparsa inmodo adeguato a seconda della posizioneglobale dei vari nodi. La procedura eschematicamente riportata in figura 1.8.

Ogni blocchetto della matrice elemen-to compete ad un nodo che globalmentericevera anche altri contributi, oltre a quel-lo dell’elemento in questione. Per questoquando si spargono le matrici elemento, essevanno sommate a quanto gia presente nellaposizione di destinazione.

Figura 1.8: Assemblaggio della matrice

1.2.6 Rinumerazione dei nodi

Nei software di calcolo avanzati sono presenti algoritmi atti a velocizzare il calcolodella matrice di rigidezza e la sua memorizzazione. Essa, infatti, gode di alcuneparticolari proprieta che consentono, con l’adozione di dovuti accorgimenti, di ridurreconsiderevolmente l’onere computazionale:

• e simmetrica;

• e semidefinita positiva;

• ha il determinante nullo;

11

Page 18: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Cenni sul metodo degli elementi finiti

• e sparsa (ovvero e popolata da molti termini nulli e pochi termini non nulli);

• e in banda (ovvero i termini non nulli tendono a raggrupparsi attorno alladiagonale principale).

Gli ultimi due punti vengono larga-mente sfruttati dai sopracitati algoritmi,che tendono a memorizzare solamente lazona attorno alla diagonale principale en-tro la quale certamente si troveranno tut-ti i termini non nulli. L’operazione dirinumerazione dei nodi viene e↵ettuatafacendo uso di criteri presi dalla teoria deigrafi, e lo sforzo computazionale in ter-mini di tempo di calcolo e sempre larga-mente inferiore al vantaggio ottenuto infase di soluzione del problema.

1.2.7 Attribuzione dei vincoli

Il passo successivo all’assemblaggio della matrice e la determinazione dei vincoli aiquali e soggetta la struttura. Nella realta fisica i vincoli possono riguardare punti,segmenti o superfici. Nel Metodo degli elementi finiti e in particolare nei problemianalizzati in questa tesi, i vincoli riguardano solamente i nodi. Piu generalmente, persimulare particolari situazioni di vincolo possono essere utilizzati altri tipi di elementifiniti i cui nodi andranno vincolati secondo precise modalita. In ogni caso il concettodi vincolo resta strettamente applicato solo ai nodi.

1.2.8 Attribuzione dei carichi

Figura 1.9: Elemento caricato

Le azioni che insistono su una qualunquestruttura possono essere di vario tipo: pos-sono essere forze o coppie applicate diretta-mente a punti della struttura ove sono pre-senti i nodi (forze nodali), oppure possonoessere forze o coppie applicate in punti internio di bordo di un elemento finito. In quest’ul-timo caso si rende necessaria la definizionedi un metodo che consenta di pervenire allecosiddette forze nodali equivalenti. Esso puo

12

Page 19: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

1.2 Panoramica del metodo

essere ottenuto sfruttando il medesimo modello di spostamento utlizzato per lacostruzione delle funzioni di forma. Si consideri l’esempio in figura. L’obiettivo equello di rendere il carico distribuito agente sul lato 13 pari ai carichi equivalentinodali. Il modello di spostamento utilizzato sara:

8>>>>>><

>>>>>>:

u(x, y) = �

u

(x, y) ·

8<

:

u1

u2

u3

9=

;! �

u

(x, y) = ['1(x, y), '2(x, y), '3(x, y)]

v(x, y) = �

v

(x, y) ·

8<

:

v1

v2

v3

9=

;! �

v

(x, y) = ['1(x, y), '2(x, y), '3(x, y)]

Il vettore dei carichi equivalenti nodali sara:

8<

:

P1

P2

P3

9=

; =Z 3

1�

v

(x, y)T

p

y

(s)ds =

8<

:

R 31 �1(x, y)T

p

y

(s)ds

0R 31 �3(x, y)T

p

y

(s)ds

9=

; =

8<

:

P1

0P3

9=

;

Quindi lungo il lato 13 sara:

v1,3(x, y) = �

v

(x, y) ·

8<

:

v1

0v3

9=

; = '1(x, y) · v1 + '3(x, y) · v3

�v1,3(x, y) = �

v

(x, y) ·

8<

:

�v1

0�v3

9=

; = '1(x, y) · �v1 + '3(x, y) · �v3

Applicando il Principio dei Lavori Virtuali:

Z 3

1p

y

(s) �v1,3 ds

?= P1 �v1 + P3 �v3

Z 3

1p

y

(s) �v1,3 ds =Z 3

1p

y

(s) ['1(x, y) · �v1 + '3(x, y) · �v3] ds

P1 �v1 + P3 �v3 =Z 3

1'1(x, y) p

y

(s) �v1 ds +Z 3

1'3(x, y) p

y

(s) �v3 ds =

=Z 3

1p

y

(s) ['1(x, y) · �v1 + '3(x, y) · �v3] ds

come volevasi dimostrare.

13

Page 20: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Cenni sul metodo degli elementi finiti

1.2.9 Assemblaggio del sistema risolvente

L’assemblaggio e il procedimento che comprende la creazione della matrice di rigidezzaglobale [come visto prima] e che completa i vettori termine noto della parte dovutaai carichi. Esistono vari approcci per spiegare il significato di tale operazione. Nedescriviamo due: l’approccio statico e l’approccio energetico.Nell’approccio statico l’assemblaggio e il procedimento che computa e somma, nodoper nodo, le forze che provengono al nodo stesso a causa del movimento degli altrinodi ed a causa dei carichi applicati. Il singolo termine K

ij

della matrice di rigidezzaglobale e uguale alla forza che occorre esercitare in direzione del grado di liberta ”i” acausa dell’esistenza di un valore unitario di spostamento del grado di liberta ”j”. Seil nodo associato al grado di liberta ”i” appartiene ad elementi che non sono connessiin alcun modo al nodo associato al grado di liberta ”j”, allora K

ij

= 0. Questo caso emolto frequente, ed infatti la matrice K e in generale ricca di termini nulli. La sommadi tutte le forze agenti sul grado di liberta i, a causa del movimento dei nodi e datada

R

i

= ⌃j

K

ij

u

j

dove la sommatoria e estesa a tutti i gradi di liberta della struttura. Sia poi q

i

lasomma delle azioni sul grado di liberta i. Perche vi sia equilibrio l’azione deve essereuguale e contraria alla reazione, ovvero:

R

i

= q

i

e quindi occorre risolvere il sistema, che ha per incognite gli n spostamenti u

i

⌃j

K

ij

u

j

= q

i

Nell’approccio energetico l’assemblaggio e sostanzialmente visto come il procedimen-to che somma i contributi di ciascun elemento all’energia di deformazione elastica,ed al potenziale dei carichi. In e↵etti l’energia di deformazione dell’intera strutturae data dalla somma delle energie di deformazione dei pezzi di cui e composta, e cioe semplicemente in base alla proprieta additiva degli integrali. Ognuno dei contribu-ti Z

e

all’energia di deformazione totale viene espresso in funzione del vettore deglispostamenti nodali incogniti:

Ze

=12uT · K

e

· u

dove u e il vettore degli spostamenti incogniti, di dimensione n, e il generico elementoe K

e

la matrice di rigidezza del singolo elemento. L’energia di deformazione per

14

Page 21: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

1.2 Panoramica del metodo

l’intera struttura diventa

Z =X

e

12uT · K

e

· u =12uT · K · u

Analogo principio vale per il potenziale dei carichi:

W =X

e

uT · qe

= uT · q

Impiegando il principio di stazionarieta dell’energia potenziale totaleQ

, dove

Y= Z�W

si vede che tale principio e soddisfatto se e vero che u soddisfa l’equazionematriciale

K · u = q

Figura 1.10: Struttura esempio

Al fine di applicare praticamente quanto esposto procediamo con l’analisi dellastruttura in figura 1.10.

Le matrici di rigidezza dei singoli elementi verranno schematizzate con simboli(rappresentanti blocchetti di dimensione 2 x 2).

L’assemblaggio della matrice di rigidezza portera a dislocare e sommare questequattro matrici in una piu grande di dimensione 12 x 12. Il risultato e visibile in figura1.11.

15

Page 22: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Cenni sul metodo degli elementi finiti

Figura 1.11: Matrice di rigidezza assemblata

E possibile notare come la matrice sia disposta ”in banda”, nel senso che glielementi significativi si addensano lungo la diagonale principale. Si evince anchecome la di↵erenza massima tra i numeri dei nodi del singolo elemento influenzi lacompattezza di questa banda.Il vettore dei carichi equivalenti nodali viene assemblato analogamente alla matrice dirigidezza. Nella figura 1.12 ogni simbolo rappresenta un sub-vettore di dimensione 2in quanto sono presenti 6 nodi che possono essere caricati in 2 direzioni.

Figura 1.12: Vettore dei carichi assemblato

La lastra avra quindi il seguente vettore dei carichi:

16

Page 23: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

1.2 Panoramica del metodo

Q =�v

1X

v

1Y

v

2X

0 0 0 0 0 P 0 P 0

T

Il sistema K · U = Q non e ancora risolvibile in quanto la struttura e labile.Occorre quindi annullare nel vettore degli spostamenti incogniti quelle componenti dispostamento impedite dai vincoli. Nel nostro caso sara:

U = {0 0 0 v2 u3 v3 u4 v4 u5 v5 u6 v6}T

essendo u1 = v1 = u2 = 0.I due vettori, U e Q, sono completi ma non ordinati. Per pervenire alla soluzione

e infatti necessario un ulteriore riordino che individui un sotto-sistema relativo aglispostamenti dei soli nodi non vincolati. Oltre a queste e necessario eseguire operazionidi permutazione anche sulla matrice di rigidezza, al fine di assicurare la congruenzacon il sistema iniziale. Il vettore U diventera

U = {v2 u3 v3 u4 v4 u5 v5 u6 v6 0 0 0}T

Ovvero si passa dalla situazione

U = {V V V L L L L L L L L L}T

alla situazione

U = {L L L L L L L L L V V V }T

Dove per V si intendono nodi vincolati e con L nodi non vincolati.Lo stesso si fara sul vettore Q:

Q =�0 0 0 0 0 P 0 P 0 v

1X

v

1Y

v

2X

T

Il risultato delle operazioni di riordino portera quindi ad individuare due sotto-vettori distinti:

U =⇢

UL

UV

�Q =

⇢QL

QV

Mentre le operazioni di permutazioni di righe e colonne della matrice di rigidezzaportano alla determinazione di quattro sotto-matrici:

K =⇢

KLL KLV

KV L KV V

Il sistema risolvente sara quindi:

17

Page 24: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Cenni sul metodo degli elementi finiti

⇢KLL KLV

KV L KV V

�·⇢

UL

UV

�=⇢

QL

QV

Svolgendo il sistema si ottengono le due seguenti equazioni matriciali disaccop-piate:

⇢KLL · UL + KLV · UV = QL

KV L · UL + KV V · UV = QV

dalla prima equazione matriciale si ottiene

KLL · UL = QL �KLV · UV

con KLL simmetrica, in banda, definita positiva e quindi invertibile; QL sotto-vettore dei carichi applicati; KLV ·UV vettore dei carichi nodali fittizzi, normalmentenullo a meno di eventuali cedimenti vincolari.

La soluzione cercata risulta quindi:

UL =⇥KLL

⇤�1 ·�QL �KLV · UV

Ottenuto in questo modo l’intero campo di spostamenti, si possono ricavare lereazioni vincolari QV dalla seconda equazione del sistema:

QV = KV L · UL + KV V · UV

Noto il campo degli spostamenti ue

(x, y) = �(x, y) · ue

si ottiene il campo delledeformazioni ✏(x, y) = B·u

e

ed il campo degli sforzi �(x, y) = D·✏(x, y). La soluzionedella struttura sara in genere approssimata, a meno che la discretizzazione adottatae la finezza dell’elemento sia tale da poter seguire lo schema di carico. Nell’esempiodescritto si annulla il termine KLV ·UV in quanto non si hanno cedimenti di vincolo,e la soluzione del problema e:

UL =⇥KLL

⇤�1 · QL

1.2.10 Risoluzione del sistema lineare

Nell’approcciarsi al sistema risolvente, in genere non si inverte mai esplicitamente KLL

ma si adottano metodi computazionali piu e�cienti quale ad esempio il metodo diGauss. La tecnica dell’eliminazione risolve il sistema di equazioni lineari attraverso lariduzione della matrice. Posto un generico sistema di equazioni lineari:

18

Page 25: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

1.2 Panoramica del metodo

8>><

>>:

k11u1 + k12u2 + k13u3 + k14u4 = q1

k21u1 + k22u2 + k23u3 + k24u4 = q2

k31u1 + k32u2 + k33u3 + k34u4 = q3

k41u1 + k42u2 + k43u3 + k44u4 = q4

il sistema viene sostituito con uno equivalente che ammette lo stesso vettoresoluzione. Se k11 6= 0 e dalla seconda equazione si sottrae la prima moltiplicata per

m

(1)21 = k21/k11, dalla terza equazione si sottrae la prima moltiplicata per m

(1)31 =

k31/k11, dalla quarta equazione si sottrae la prima moltiplicata per m

(1)41 = k41/k11,

il sistema diventa:

8>><

>>:

k11u1+ k12u2+ k13u3+ k14u4 = q1

0u1+ [k22�m

(1)21 k12]u2+ [k23�m

(1)21 k13]u3+ [k24�m

(1)21 k14]u4 = [q2�m

(1)21 q1]

0u1+ [k32�m

(1)31 k12]u2+ [k33�m

(1)31 k13]u3+ [k34�m

(1)31 k14]u4 = [q3�m

(1)31 q1]

0u1+ [k42�m

(1)41 k12]u2+ [k43�m

(1)41 k13]u3+ [k44�m

(1)41 k14]u4 = [q4�m

(1)41 q1]

Per maggiore sintesi si puo riscrivere il sistema come:

8>>><

>>>:

k11u1+ k12u2+ k13u3+ k14u4 = q1

0u1+ k

(2)22 u2+ k

(2)23 u3+ k

(2)24 u4 = q

(2)2

0u1+ k

(2)32 u2+ k

(2)33 u3+ k

(2)34 u4 = q

(2)3

0u1+ k

(2)42 u2+ k

(2)43 u3+ k

(2)44 u4 = q

(2)4

Il sistema in basso a destra presenta un’incognita in meno, poiche e avvenuta

l’eliminazione dell’incognita u1. Ora si ripete il procedimento ammesso che k

(2)22 6= 0:

dalla terza equazione si sottrae la seconda moltiplicata per m

(2)32 = k

(2)32 /k

(2)22 , dalla

quarta equazione si sottrae la seconda moltiplicata per m

(2)42 = k

(2)42 /k

(2)22 .

8>><

>>:

k11u1+ k12u2+ k13u3+ k14u4 = q1

0u1+ k

(2)22 u2+ k

(2)13 u3+ k

(2)14 u4 = q

(2)2

0u1+ 0u2+ [k(2)33 �m

(2)32 k

(2)23 ]u3+ [k

(2)34 �m

(2)32 k

(2)24 ]u4 = [q

(2)3 �m

(2)32 q

(2)2 ]

0u1+ 0u2+ [k(2)43 �m

(2)42 k

(2)23 ]u3+ [k

(2)44 �m

(2)42 k

(2)24 ]u4 = [q

(2)4 �m

(2)42 q

(2)2 ]

Riscrivendo il sistema come

8>>><

>>>:

k11u1+ k12u2+ k13u3+ k14u4 = q1

0u1+ k

(2)22 u2+ k

(2)23 u3+ k

(2)24 u4 = q

(2)2

0u1+ 0u2+ k

(3)33 u3+ k

(3)34 u4 = q

(3)3

0u1+ 0u2+ k

(3)43 u3+ k

(3)44 u4 = q

(3)4

19

Page 26: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Cenni sul metodo degli elementi finiti

e possibile notare come il sistema in basso a destra presenti due incognite in meno

poiche e avvenuta l’eliminazione delle incognite u1 e u2. Di nuovo, se k

(3)33 6= 0 dalla

quarta equazione si sottrae la terza moltiplicata per m

(3)43 = k

(3)43 /k

(3)33 .

8>>><

>>>:

k11u1+ k12u2+ k13u3+ k14u4 = q1

0u1+ k

(2)22 u2+ k

(2)13 u3+ k

(2)14 u4 = q

(2)2

0u1+ 0u2+ k

(3)33 u3+ k

(3)34 u4 = q

(3)3

0u1+ 0u2+ 0u3+ [k(3)44 �m

(3)43 k

(3)34 ]u4 = [q(3)

4 �m

(3)43 q

(3)3 ]

riscritta come:

8>>><

>>>:

k11u1+ k12u2+ k13u3+ k14u4 = q1

0u1+ k

(2)22 u2+ k

(2)23 u3+ k

(2)24 u4 = q

(2)2

0u1+ 0u2+ k

(3)33 u3+ k

(3)34 u4 = q

(3)3

0u1+ 0u2+ 0u3+ k

(4)44 u4 = q

(4)4

Il sistema ottenuto ammette le stesse soluzioni del sistema originario, con il van-taggio di ricavare il vettore incognito U, grazie al metodo della sostituzione all’indietro.Infatti, a partire dall’ultima equazione si determina direttamente u4, che nelle prece-denti equazioni viene sostituita. A questo punto e ricavabile direttamente u3, cheviene inserita nella prima e nella seconda equazione. Dalla seconda si ricava u2 che,inserita nella prima equazione, porta alla determinazione immediata di u1. La matriceiniziale dei coe�cienti puo essere ricavata anche come prodotto di una matrice trian-golare inferiore moltiplicata per il prodotto di una matrice triangolare superiore dellafattorizzazione di Gauss.

K = MW

con

M =

8>>><

>>>:

1 0 0 0m

(1)21 1 0 0

m

(1)31 m

(2)32 1 0

m

(1)41 m

(2)42 m

(3)43 1

9>>>=

>>>;W =

8>>><

>>>:

k11 k12 k13 k14

0 k

(2)22 k

(2)23 k

(2)24

0 0 k

(3)33 k

(3)34

0 0 0 k

(4)44

9>>>=

>>>;

20

Page 27: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Capitolo 2

Ambiente di sviluppo

2.1 Linguaggio di programmazione

La scelta di un appropriato linguaggio di programmazione e uno dei fattori determi-nanti per il buon esito di qualunque progetto informatico. Il tipo di applicazione chesi sta sviluppando, la piattaforma su cui poi andra ad operare, la velocita di calcolorichiesta e la modalita di input dei dati sono solo alcune delle doverose considerazioniche si devono fare prima di iniziare lo sviluppo.

L’applicazione oggetto di questa tesi e stata sviluppata in C# (pronunciato c sharp),un linguaggio di programmazione object-oriented sviluppato da Microsoft a partire dal2002. Nella sintassi del C# sono riconoscibili costrutti mutuati da Delphi, Java, C++e Visual Basic. C# e stato sviluppato nell’ambito dell’iniziativa .NET Framework epossiamo dire che questo linguaggio sia quello che meglio degli altri descrive le lineeguida di questo progetto. .NET (pronunciato dotnet) e un progetto all’interno delquale Microsoft ha creato una piattaforma di sviluppo software, corredata da una seriedi strumenti di sviluppo delle applicazioni, progettati per funzionare in modo integratoall’interno della piattaforma stessa.

2.2 .NET Framework

.NET Framework e un componente integrante del sistema operativo Windows ed eprogettato per ottenere gli obiettivi indicati di seguito:

• fornire un ambiente di programmazione orientato agli oggetti;

• fornire un ambiente di esecuzione del codice che minimizzi i conflitti di versioni;

21

Page 28: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Ambiente di sviluppo

• rendere coerente l’esperienza dello sviluppatore attraverso tipi molto vari diapplicazioni;

• generare tutte le comunicazioni in base agli standard industriali per assicurareche il codice basato su .NET Framework possa integrarsi con qualsiasi altrocodice.

.NET Framework presenta due componenti principali: Common Language Run-time e la libreria di classi .NET Framework. Common Language Runtime rappresentala base di .NET Framework e puo essere considerato come un agente che gestisce ilcodice in fase di esecuzione, fornendo servizi di base quali gestione della memoria,gestione di thread e servizi remoti.

Figura 2.1: Struttura del Framework .NET

La libreria di classi, l’altro componente principale di .NET Framework, e un in-sieme completo orientato agli oggetti di tipi riutilizzabili che possono essere impiegatinello sviluppo delle applicazioni, da quelle tradizionali della riga di comando a quellecon interfaccia utente grafica (GUI, Graphical User Interface). In Figura 2.1 vienemostrata la relazione di Common Language Runtime e libreria di classi con le ap-plicazioni e con l’intero sistema. Si puo inoltre notare come opera il codice gestito,all’interno di un’architettura piu ampia. Il progetto .NET comprende inoltre un Com-pact Framework per la programmazione su dispositivi Windows Mobile o Windows

22

Page 29: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

2.3 IDE SharpDevelop

CE e un Micro Framework per la programmazione di microcontrollori tramite codicegestito.

2.3 IDE SharpDevelop

Per lo sviluppo dell’intera applicazione si e utilizzato SharpDevelop1, un IDE (inte-grated development environment) gratuito e open source per i linguaggi di program-mazione C#, Visual Basic .Net (VB.NET), Boo, F# e IronPython. Esso e tipicamenteusato come alternativa a Visual Studio .NET della Microsoft.Le sue principali caratteristiche sono:

• un designer di Windows Forms per C#, VB.NET e Boo;

• debugger integrato;

• code completion per C#, VB.NET e Boo;

• un convertitore C# / VB.NET;

• completamente scritto in C#;

• supporto ai template del codice;

• facilmente estendibile con tool esterni;

• facilmente estendibile con plug-in;

• interfaccia tradotta in svariate lingue, tra cui l’italiano.

2.4 EasyMesh

Figura 2.2: EasyMesh

Per la discretizzazione delle geometrie, al fine di garantireuna piu ampia varieta di problemi analizzabili, si e uti-lizzato un sotto-programma sviluppato dal Dipartimentodi Ingegneria Navale, del Mare e per l’Ambiente dell’U-niversita di Trieste. EasyMesh2 [Unstructured 2D GridGeneration] e stato sviluppato da Bojan Niceno grazie al”Consortium for International Development of the Uni-versity of Trieste” e consente, tramite l’inserimento delle

1http://www.icsharpcode.net/OpenSource/SD/2http://www-dinma.univ.trieste.it/nirftc/research/easymesh/

23

Page 30: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Ambiente di sviluppo

coordinate e dei segmenti in un file di testo, di ottenere la tabella delle coordinate ela tabella delle incidenze per ogni tipo di geometria bidimensionale. Queste tabellepossono poi essere agevolmente caricate in memoria leggendo i file di output. Il prin-cipio su cui si basa e quello della decomposizione di Voronoi3, a seguito della qualeil programma assembla i triangoli della discretizzazione. Nell’input della geometria epossibile, inoltre, aumentare la densita della discretizzazione in singoli punti o areedel pezzo, cosı da produrre una mesh piu fitta nelle zone dove si ci saranno elevatigradienti di sforzo. In seguito verranno trattate ampiamente le modalita d’uso inmodo da permettere all’utente il corretto inserimento di qualunque tipo di geometria.

2.5 Math.NET

Per quanto riguarda la risoluzione ottimizzata dei problemi di algebra lineare che si pre-sentano in qualunque problema agli elementi finiti, si e utilizzata una libreria sviluppataad hoc per C#: Math.NET. Scaricabile gratuitamente dal sito mathdotnet.com,Math.NET e un progetto open source che consente di risolvere diversi problemi:

• algebra lineare;

• modelli di probabilita;

• interpolazioni;

• calcolo integrale;

• digital signal processing;

• ...

3un particolare tipo di decomposizione di uno spazio metrico determinata dalle distanze rispettoad un determinato insieme discreto di punti

24

Page 31: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

2.6 Open Cascade

2.6 Open Cascade

La visualizzazione grafica dei risultati ottenuti e stata a�data ad un ambiente CADopensource: Open Cascade. Questo ambiente, scritto in C++, e stato portatoanche in C# grazie al lavoro di un gruppo di sviluppatori, nell’ambito del progettoNaroCAD: si tratta di un software cad open source scritto in C# ma basato appuntosu Open Cascade. Nel software oggetto di questa tesi si e utilizzata la stessa libreriache il team di NaroCAD ha utilizzato per sviluppare il proprio software.

25

Page 32: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Ambiente di sviluppo

26

Page 33: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Capitolo 3

Analisi del codice

In questo capitolo si analizzeranno gli algoritmi che sono stati sviluppati al fine per-venire alla soluzione del problema, descrivendone il loro funzionamento tramite ilseguente esempio pilota:

Figura 3.1: Esempio pilota

Si tratta di una lastra rettangolare che verra vincolata e caricata con uno schema”a mensola”. Il dominio verra discretizzato con una maglia molto grande, al fine direndere riportabili i vari output numerici che fornira il programma.

3.1 Organizzazione del progetto

Il progetto, contenuto nel CD-ROM allegato, e compatibile con Microsoft Visual Stu-dio 2008 e con Sharp Develop. La Figura 3.2 mostra come esso sia stato strutturato.

27

Page 34: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Analisi del codice

Figura 3.2: Struttura del progetto

Le quattro cartelle si riferiscono ognuna a quattro di↵erenti progetti che assolvono afunzioni diverse. Al fine di non appesantire troppo l’eseguibile principale si e optatoper a�dare alcuni compiti quali il montaggio della matrice di rigidezza e la risoluzionedel sistema lineare a librerie sviluppate separatamente.

3.1.1 Thesis

Thesis e il progetto principale dal quale si ottiene l’eseguibileche gestira tutto il processo di analisi. Ad esso sono infattia�dati i compiti di:

• lettura dell’input utente;

• visualizzazione grafica dei risultati;

• comunicazione con le altre librerie;

• produzione del rapporto di analisi.

Come e possibile desumere dalle funzioni svolte, questo e un programma di base,privo della maggior parte degli algoritmi di significato fisico. Questi ultimi sono statiimplementati separatamente in modo da evitare una monoliticita del software cheavrebbe portato a rallentamenti e instabilita. Dato il carattere ”gestionale” di taleprogramma e lecito aspettarsi che esso rimanga attivo durante tutta l’analisi e chevenga richiamato altenativamente a librerie piu specifiche.

3.1.2 Kmatrix

Il progetto kmatrix ha come scopo finale quello di mem-orizzare la matrice di rigidezza globale della lastra oggettodell’analisi. Le fasi sono:

1. ricognizione della posizione dell’elemento;

28

Page 35: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

3.2 Geometria e discretizzazione

2. calcolo delle matrici B, BT e D;

3. calcolo dell’area degli elementi;

4. moltiplicazione delle matrici per ottenere KE

;

5. assemblaggio della matrice principale.

Tutte queste fasi verranno descritte in seguito in maggior dettaglio.

3.1.3 Calc

Calc permette invece la risoluzione del sistema lineare, la ri-costruzione dei vettori spostamento e il conseguente calcolodelle sollecitazioni.

3.2 Geometria e discretizzazione

All’avvio il programma presenta nella parte destra la zona dedicata all’input di datie comandi, mentre nella parte centrale-sinistra e presente il modulo CAD che visual-izzera quanto elaborato.

La prima operazione dell’analisi consiste nella definizione della geometria dellalastra. Le misure devono essere inserite nell’apposita text box alla sezione Geometria.La discretizzazione viene gestita dal sotto-programma EasyMesh, quindi le coordinateandranno inserite nelle modalita da esso previste.EasyMesh necessita di due serie di dati:

1. Coordinate dei punti (siano essi punti di bordo esterni o di fori interni) seguitedal fattore di discretizzazione e dal numero identificativo del pezzo;

2. Specificazione dei segmenti.

Chiariamo subito il concetto con l’esempio pilota.

Volendo inserire nel programma la lastra indicata a inizio capitolo, con il sistemadi riferimento di figura, e necessario anzitutto specificare le coordinate dei quattropunti che la delimitano:

29

Page 36: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Analisi del codice

X Y0 0 01 100 02 100 503 0 50

La numerazione dei punti parte da 0 ed e antioraria per i punti di bordo e orariaper i fori interni.

La stringa tipica accettata da EasyMesh segue la seguente sintassi:

numero_nodo: coordinata_X coordinata_Y fattore_discr ID_pezzo

Quindi nel nostro caso il primo nodo verra inserito con la seguente riga:

0: 0 0 25 1

dove 25 rappresenta la misura in millimetri della fittezza della discretizzazione e1 e un fattore identificativo del pezzo1.

Completando la serie:

0: 0 0 25 1

1: 100 0 25 1

2: 100 50 25 1

3: 0 50 25 1

La seconda serie di dati richiesta contiene la specificazione dei segmenti e avvienecon la seguente modalita:

numero_segmento: primo_punto secondo_punto ID_pezzo

ovvero bisogna specificare al programma quale sia punto iniziale e quale quellofinale. Nel nostro caso il primo segmento si inserira cosı:

0: 0 1 1

per il numero identificativo del pezzo valgono le considerazioni fatte poc’anzi.La seconda serie completa sara quindi:

1 Va detto che il programma e in grado di gestire la discretizzazione di piu pezzi contemporanea-mente, cosa che non e stata implementata nell’analisi, percio l’identificativo del pezzo sara sempre1.

30

Page 37: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

3.2 Geometria e discretizzazione

0: 0 1 1

1: 1 2 1

2: 2 3 1

3: 3 0 1

Prima di ogni serie di dati il programma richiede di inserire un numero indicante diquanti elementi e composta la singola serie. Nel nostro caso, dato che sono presentiquattro punti e quattro segmenti, il numero da inserire sara 4.

L’input completo e il seguente:

4

0: 0 0 25 1

1: 100 0 25 1

2: 100 50 25 1

3: 0 50 25 1

4

0: 0 1 1

1: 1 2 1

2: 2 3 1

3: 3 0 1

Una volta riportate le istruzioni nell’apposito box, al click sul pulsante ”Importa”,il programma produce a video la lastra discretizzata come in Figura 3.3.

Figura 3.3: Lastra discretizzata

31

Page 38: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Analisi del codice

Esso ha inoltre memorizzato la tabella delle coordinate dei nodi e la tabella delleincidenze.

Quando viene premuto il pulsante ”Importa” il programma richiama il seguentemetodo:

vo id Btn impo r tC l i c k ( o b j e c t sender , EventArgs e )

{s t r i n g S t rTes to = t e x tBox i n pu t . Text ;

F i l e . Wr i t eA l lTex t ( ”DISCR .D” , S t rTes to ) ;

System . D i a g n o s t i c s . P r o c e s s S t a r t I n f o p =

new System . D i a g n o s t i c s . P r o c e s s S t a r t I n f o ( ” d i s c r . bat ” ) ;

System . D i a g n o s t i c s . P roce s s proc = new System . D i a g n o s t i c s . P roce s s ( ) ;

p roc . S t a r t I n f o = p ;

proc . S t a r t ( ) ;

p roc . Wa i tFo rEx i t ( ) ;

. . .

}

Ovvero viene copiato il contenuto della textBox_input nel file di testo DISCR.D eviene lanciato il programma discr.bat che non fa altro che inizializzare ad EasyMeshil file di input appena creato. Il sistema attende poi che il programma elabori unadiscretizzazione e produca i file di output.

La figura illustra il funzionamento input-output di EasyMesh. La fase successivaconsiste nella ricognizione di quanto prodotto. Vengono prodotti tre file di testocontenenti informazioni distinte:

• DISCR.N contiene la tabella delle coordinate dei nodi;

• DISCR.E contiene la tabella delle incidenze;

• DISCR.S contiene altre informazioni.

Nel nostro esempio la discretizzazione consta di 18 nodi e 22 elementi. Il pro-gramma ha prodotto la seguente tabella delle coordinate:

32

Page 39: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

3.3 Matrice di rigidezza

X Y ID

--- ---------------------- ---------------------- --

0: 1.499998377077279e+001 1.666646780405902e+001 0

1: 0.000000000000000e+000 0.000000000000000e+000 1

2: 2.500000000000000e+001 0.000000000000000e+000 1

3: 0.000000000000000e+000 2.500000000000000e+001 1

4: 3.499999708541389e+001 2.499978948356020e+001 0

5: 1.499998377077279e+001 3.333313532405902e+001 0

6: 5.000000000000000e+001 0.000000000000000e+000 1

7: 0.000000000000000e+000 5.000000000000000e+001 1

8: 2.500000000000000e+001 5.000000000000000e+001 1

9: 6.500000291458612e+001 2.499978948356020e+001 0

10: 5.000000000000000e+001 5.000000000000000e+001 1

11: 7.500000000000000e+001 0.000000000000000e+000 1

12: 7.500000000000000e+001 5.000000000000000e+001 1

13: 8.500001622922721e+001 1.666646780405902e+001 0

14: 8.500001622922721e+001 3.333313532405902e+001 0

15: 1.000000000000000e+002 0.000000000000000e+000 1

16: 1.000000000000000e+002 5.000000000000000e+001 1

17: 1.000000000000000e+002 2.500000000000000e+001 1

e la seguente tabella delle incidenze:

N1 N2 N3

--- -- -- --

0: 0 1 2

1: 0 3 1

2: 0 2 4

3: 0 5 3

4: 4 5 0

5: 4 2 6

6: 5 7 3

7: 4 8 5

8: 6 9 4

9: 5 8 7

10: 8 4 10

11: 9 10 4

12: 6 11 9

13: 9 12 10

14: 9 11 13

15: 14 12 9

16: 14 9 13

17: 13 11 15

18: 14 16 12

19: 13 17 14

20: 13 15 17

21: 14 17 16

3.3 Matrice di rigidezza

Come gia accennato sopra, il calcolo della matrice di rigidezza e a�dato alla libreriakmatrix.dll. Essa viene richiamata dalla sezione Materiali alla pressione del tasto

33

Page 40: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Analisi del codice

”Applica”. Piu precisamente, quando viene cliccato il pulsante, vengono eseguite leseguenti istruzioni:

vo id B t n a p p l i c aMa t e r i a l e C l i c k ( o b j e c t sender , EventArgs e )

{s t r i n g combo = Conver t . ToSt r ing ( comboBox Mater ia le . S e l e c t e d I t em ) ;

i f ( combo == ” Ac c i a i o ” )

{G l oba l s . modEl = 200000;

G l o b a l s . p o i s s o n = 0 . 3 3 ;

}

kmat r i x . r i g i d e z z a . Kel ( ) ;

kmat r i x . r i g i d e z z a . Kmatr ( ) ;

}

In sintesi:

1. viene riconosciuto il materiale selezionato;

2. se ne memorizzano i parametri caratteristici;

3. si richiama il metodo per costruire le matrici di rigidezza di ogni singolo ele-mento;

4. si richiama il metodo per assemblare la matrice di rigidezza globale.

3.3.1 La matrice di rigidezza elemento

Figura 3.4: Sistema di riferimento locale

Analizzando in dettaglio il contenu-to del file kmatrix.cs2 e possibile no-tare come la prima parte del meto-do kmatrix.rigidezza.Kel() sia ded-icata alla ricognizione della posizionedell’elemento.

Si rende necessario, infatti, calcolarele coordinate dei vertici di ciascun ele-mento in un sistema di riferimento localeche consenta un calcolo piu agevole dellamatrice di rigidezza.

Le coordinate che vanno calcolatesaranno quindi solamente le

x2, x3, y3

2File sorgente della libreria kmatrix.dll

34

Page 41: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

3.3 Matrice di rigidezza

dato chex1 = y1 = y2 = 0

Occorre operare una trasformazione dal sistema di riferimento globale a quellolocale. Per trovare, ad esempio, il punto 3 sara su�ciente risolvere:

⇢x3

y3

�= R

⇢X3 �X1

Y3 � Y1

dove R e la nota matrice di trasformazione cosı costituita:

R =⇢

cos↵ �sen↵

sen↵ cos↵

Una volta note, le tre coordinate vengono memorizzate nel vettore Gl.tcl[,]

3

che contera tante righe quanti sono gli elementi della discretizzazione e tre colonne:nella prima colonna ( Gl.tcl[x,0] ) verranno memorizzati i valori di x2, nella seconda( Gl.tcl[x,1] ) le x3 e nella terza ( Gl.tcl[x,1] ) le y3.Note le coordinate e possibile costruire la matrice B. In accordo con quanto espostonel secondo capitolo si e proceduto a derivare le funzioni di forma precedentementericavate. Ricordando che:

B =

8><

>:

@'1(x,y)@x

0 @'2(x,y)@x

0 @'3(x,y)@x

00 @'1(x,y)

@y

0 @'2(x,y)@y

0 @'3(x,y)@y

@'1(x,y)@x

@'1(x,y)@y

@'2(x,y)@x

@'2(x,y)@y

@'3(x,y)@x

@'3(x,y)@y

9>=

>;

Si calcolano le varie componenti:

@'1(x, y)@x

=@

@x

✓1� x

x2� y

y3+

x3y

x2y3

◆= � 1

x2

@'1(x, y)@y

=@

@y

✓1� x

x2� y

y3+

x3y

x2y3

◆= � 1

y3+

x3

x2y3

@'2(x, y)@x

=@

@x

✓x

x2� x3y

x2y3

◆=

1x2

@'2(x, y)@y

=@

@y

✓x

x2� x3y

x2y3

◆= � x3

x2y3

3Dove tcl sta per ”tabella delle coordinate locali”

35

Page 42: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Analisi del codice

@'3(x, y)@x

=@

@x

✓y

y3

◆= 0

@'3(x, y)@y

=@

@y

✓y

y3

◆=

1y3

Risultera quindi

B =

8><

>:

� 1x2

0 1x2

0 0 00 � 1

y3+ x3

x2y30 � x3

x2y30 1

y3

� 1x2

� 1y3

+ x3x2y3

1x2

� x3x2y3

0 1y3

9>=

>;

Quanto fin qui esposto viene implementato nel software con le seguenti istruzioni:

// Prima r i g a

Bmatr [ i ,0 ,0]=�(1/ Gl . t c l [ i , 0 ] ) ;

Bmatr [ i , 0 , 1 ]=0 ;

Bmatr [ i , 0 , 2 ]=(1/ Gl . t c l [ i , 0 ] ) ;

Bmatr [ i , 0 , 3 ]=0 ;

Bmatr [ i , 0 , 4 ]=0 ;

Bmatr [ i , 0 , 5 ]=0 ;

// Seconda r i g a

Bmatr [ i , 1 , 0 ]=0 ;

Bmatr [ i ,1 ,1]=(�(1/ Gl . t c l [ i , 2 ] ) )+ ( Gl . t c l [ i , 1 ] / ( Gl . t c l [ i , 0 ] ⇤ Gl . t c l [ i , 2 ] ) ) ;

Bmatr [ i , 1 , 2 ]=0 ;

Bmatr [ i ,1 ,3]=�( Gl . t c l [ i , 1 ] / ( Gl . t c l [ i , 0 ] ⇤ Gl . t c l [ i , 2 ] ) ) ;

Bmatr [ i , 1 , 4 ]=0 ;

Bmatr [ i , 1 ,5 ]=1/ Gl . t c l [ i , 2 ] ;

// Terza r i g a

Bmatr [ i , 2 ,0 ]= �(1/Gl . t c l [ i , 0 ] ) ;

Bmatr [ i ,2 ,1]=(�(1/ Gl . t c l [ i , 2 ] ) )+ ( Gl . t c l [ i , 1 ] / ( Gl . t c l [ i , 0 ] ⇤ Gl . t c l [ i , 2 ] ) ) ;

Bmatr [ i , 2 ,2 ]= 1/Gl . t c l [ i , 0 ] ;

Bmatr [ i ,2 ,3]=�( Gl . t c l [ i , 1 ] / ( Gl . t c l [ i , 0 ] ⇤ Gl . t c l [ i , 2 ] ) ) ;

Bmatr [ i , 2 , 4 ]=0 ;

Bmatr [ i , 2 ,5 ]=1/ Gl . t c l [ i , 2 ] ;

Il passo successivo consiste nella memorizzazione della stessa matrice trasposta,che verra chiamata BTmatr[,,].La matrice di rigidezza del materiale D e unica per tutti gli elementi e viene quindicalcolata e memorizzata una volta sola.

D =

8><

>:

E

1�⌫

2E⌫

1�⌫

2 0E⌫

1�⌫

2E

1�⌫

2 00 0 E

2(1+⌫)

9>=

>;

36

Page 43: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

3.3 Matrice di rigidezza

Il codice per l’assemblaggio della matrice D e il seguente:

c o e f f = G l o b a l s . modEl / (1 � ( G l o b a l s . p o i s s o n ⇤ G l oba l s . p o i s s o n ) ) ;

Dmatr [ 0 , 0 ] = c o e f f ;

Dmatr [ 0 , 1 ] = c o e f f ⇤G l oba l s . p o i s s o n ;

Dmatr [ 0 , 2 ] = 0 ;

Dmatr [ 1 , 0 ] = c o e f f ⇤G l oba l s . p o i s s o n ;

Dmatr [ 1 , 1 ] = c o e f f ;

Dmatr [ 1 , 2 ] = 0 ;

Dmatr [ 2 , 0 ] = 0 ;

Dmatr [ 2 , 1 ] = 0 ;

Dmatr [ 2 , 2 ] = c o e f f ⇤((1� G l oba l s . p o i s s o n ) / 2 ) ;

Il passaggio successivo per giungere alla matrice 6x6 del singolo elemento e ilcalcolo dell’integrale

KE

=Z

VE

BT DBdV

che nel caso di elementi CST si riduce ad una semplice moltiplicazione matriciale:

KE

= A · BT · D · BUna volta moltiplicate le matrici, la risultante K

E

viene memorizzata in un vettore ”tridimensionale”, neicui piani sono memorizzate le matrici di rigidezza di ognielemento e ogni piano contiene i 6x6 componenti.

Riportiamo la matrice di rigidezza dell’elemento 0:

258181,62 111879,92 -258181,62 38120,08 0 -150000

111879,92 209131,65 -111879,92 71256,01 0 -280387,66

-258181,62 -111879,92 258181,62 -38120,08 0 150000

38120,08 71256,01 -38120,08 24278,58 0 -95534,58

0 0 0 0 0 0

-150000 -280387,66 150000 -95534,58 0 375922,24

3.3.2 Assemblaggio della matrice globale

L’algoritmo di assemblaggio consiste sostanzialmente nel dislocare correttamente inove blocchetti della dimensione 2 x 2 secondo le modalita viste nel paragrafo 1.2.5.Sono state specificate, per ogni elemento delle matrici di rigidezza, le posizioni didestinazione individuate mediante la tabella delle incidenze dei nodi. Vediamo unrapido esempio con il blocchetto k11:

• l’elemento k11, individuato nel programma da Kelg[0,0], andra posizionatonella matrice globale nella posizione k

ij

. L’indice i viene ricavato dalla formula((TabInc[i,0]+1)*2)-2, dove TabInc e la tabella delle incidenze. Dato chel’elemento k11 e un elemento diagonale, l’indice j sara uguale;

37

Page 44: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Analisi del codice

• l’elemento k22, equivalente a Kelg[1,1], e anch’esso un elemento diagonale equindi i suoi nuovi indici i e j saranno uguali. La posizione sara((TabInc[i,0]+1)*2)-1;

• per quanto riguarda la posizione dell’elemento k12, possiamo immaginare cheavra degli indici diversi:i = ((TabInc[i,0]+1)*2)-2, j = ((TabInc[i,0]+1)*2)-1 ;

• infine la posizione di k12, come e facilmente intuibile, sara:i = ((TabInc[i,0]+1)*2)-1, j = ((TabInc[i,0]+1)*2)-2 ;

Figura 3.5: Indici per il posizionamento

E opportuno precisare il motivo per cui il numero del nodo contenuto in TabInc[i,0]venga aumentato di una unita. Si immagini il caso in cui si debba dislocare un bloc-chetto inerente al nodo 0. Senza quel +1 il risultato sarebbe: (0*2)-2 = 0-2 = -2.Si avrebbe cosı un indice negativo che il programma non e in grado di gestire.Un’altra spiegazione va’ data in merito alla moltiplicazione *2. Il fatto che ogninodo possegga due gradi di liberta implica che la dimensione della matrice non sia(Numero nodi) ⇤ (Numero nodi), bensı (Numero nodi ⇤GdL) ⇤ (Numero nodi ⇤

38

Page 45: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

3.3 Matrice di rigidezza

GdL). Di conseguenza per ogni nodo gli elementi che andranno spostati saranno 2x2

= 4 come visto poc’anzi.Il codice completo per il primo blocchetto sara:

Kmatr [ ( ( TabInc [ i , 0 ]+1) ⇤ 2) � 2 , ( ( TabInc [ i , 0 ]+1) ⇤ 2) � 2 ] += Kelg [ 0 , 0 ] ;

Kmatr [ ( ( TabInc [ i , 0 ]+1) ⇤ 2) � 1 , ( ( TabInc [ i , 0 ]+1) ⇤ 2) � 1 ] += Kelg [ 1 , 1 ] ;

Kmatr [ ( ( TabInc [ i , 0 ]+1) ⇤ 2) � 1 , ( ( TabInc [ i , 0 ]+1) ⇤ 2) � 2 ] += Kelg [ 1 , 0 ] ;

Kmatr [ ( ( TabInc [ i , 0 ]+1) ⇤ 2) � 2 , ( ( TabInc [ i , 0 ]+1) ⇤ 2) � 1 ] += Kelg [ 0 , 1 ] ;

A titolo di esempio commentiamo anche altri due blocchi:Il blocco k12:

Kmatr [ ( ( TabInc [ i , 0 ]+1) ⇤ 2) � 2 , ( ( TabInc [ i , 1 ]+1) ⇤ 2) � 2 ] += Kelg [ 0 , 2 ] ;

Kmatr [ ( ( TabInc [ i , 0 ]+1) ⇤ 2) � 1 , ( ( TabInc [ i , 1 ]+1) ⇤ 2) � 1 ] += Kelg [ 1 , 3 ] ;

Kmatr [ ( ( TabInc [ i , 0 ]+1) ⇤ 2) � 1 , ( ( TabInc [ i , 1 ]+1) ⇤ 2) � 2 ] += Kelg [ 1 , 2 ] ;

Kmatr [ ( ( TabInc [ i , 0 ]+1) ⇤ 2) � 2 , ( ( TabInc [ i , 1 ]+1) ⇤ 2) � 1 ] += Kelg [ 0 , 3 ] ;

Aiutandoci con la figura

Figura 3.6: Indici per il posizionamento

Possiamo notare come sostanzialmente il ragionamento si ripeta, questa voltapero considerando come colonne gli elementi contenuti in TabInc[i,1] anziche inTabInc[i,0].

39

Page 46: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Analisi del codice

E il blocco k23:

Kmatr [ ( ( TabInc [ i , 1 ]+1) ⇤ 2) � 2 , ( ( TabInc [ i , 2 ]+1) ⇤ 2) � 2 ] += Kelg [ 2 , 4 ] ;

Kmatr [ ( ( TabInc [ i , 1 ]+1) ⇤ 2) � 1 , ( ( TabInc [ i , 2 ]+1) ⇤ 2) � 1 ] += Kelg [ 3 , 5 ] ;

Kmatr [ ( ( TabInc [ i , 1 ]+1) ⇤ 2) � 1 , ( ( TabInc [ i , 2 ]+1) ⇤ 2) � 2 ] += Kelg [ 3 , 4 ] ;

Kmatr [ ( ( TabInc [ i , 1 ]+1) ⇤ 2) � 2 , ( ( TabInc [ i , 2 ]+1) ⇤ 2) � 1 ] += Kelg [ 2 , 5 ] ;

e la relativa schematizzazione

Figura 3.7: Indici per il posizionamento

Vengono processate tutte le matrici di rigidezza dei singoli elementi a formare lamatrice globale di rigidezza:

40

Page 47: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

3.3 Matrice di rigidezza

Figura 3.8: Matrice di rigidezza dell’esempio pilota

41

Page 48: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Analisi del codice

3.4 Vincoli

Il sistema di immissione dei vincoli e molto semplice: nella sezione ”Vincoli” e suf-ficiente selezionare il nodo che si desidera vincolare e il tipo di vincolo scegliendotra:

• cerniera;

• carrello con reazione in direzione X;

• carrello con reazione in direzione Y.

Contestualmente alla creazione della matrice di rigidezza sono stati creati anche ilvettore U e il vettore Q.

Ricordando che il vettore U contiene le componenti dello spostamento sia oriz-zontale che verticale, ovvero

U = {u1, v1, u2, v2, u3, v3, ...}T

si nota come occorra un metodo che consenta di tenere traccia dello spostamentodel nodo nelle sue componenti anche dopo la riorganizzazione che portera ad avere ivettori

U =⇢

UL

UV

�Q =

⇢QL

QV

Quindi il vettore spostamento uvett sara formato da tante righe quanti sono i nodidella discretizzazione moltiplicati per 2 (due gradi di liberta) e da tre colonne: nellaprima verra inserito, successivamente, il valore dello spostamento come soluzione delsistema lineare; la seconda conterra il valore 0 per i nodi non vincolati e un valore 1 peri nodi vincolati; la terza conterra invece il numero del nodo al quale quello spostamentoviene associato. Si e deciso di assegnare agli spostamenti orizzontali u l’e↵ettivonumero del nodo e di distinguerlo dagli spostamenti v sommando a quest’ultimo unaquantita arbitraria di 109. L’esempio chiarira la situazione:qualora volessimo vincolare con delle cerniere i nodi 1, 3 e 7 della discretizzazione,e su�ciente selezionarli dalla lista e cliccare su ”Applica”. Il programma al terminedell’operazione avra memorizzato il seguente vettore U:

42

Page 49: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

3.4 Vincoli

El | uvett

----------------------------

| 0 1 2

|

0 | 0 0 0

1 | 0 0 1000000000

|

2 | 0 1 1

3 | 0 1 1000000001

|

4 | 0 0 2

5 | 0 0 1000000002

|

6 | 0 1 3

7 | 0 1 1000000003

|

8 | 0 0 4

9 | 0 0 1000000004

|

10 | 0 0 5

11 | 0 0 1000000005

|

12 | 0 0 6

13 | 0 0 1000000006

|

14 | 0 1 7

15 | 0 1 1000000007

|

16 | 0 0 8

17 | 0 0 1000000008

...

Nel caso in cui vincolassimo il nodo 1 con una cerniera e il nodo 7 con un carrellocon reazione secondo l’asse X il vettore risulterebbe:

El | uvett

----------------------------

| 0 1 2

|

0 | 0 0 0

1 | 0 0 1000000000

|

2 | 0 1 1

3 | 0 1 1000000001

|

| ...

|

14 | 0 1 7

15 | 0 0 1000000007

|

...

Con quest’ultima configurazione e↵ettueremo il calcolo della lastra considerata comeesempio.

43

Page 50: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Analisi del codice

3.5 Carichi

Per la definizione del vettore dei carichi si segue una procedura analoga. Nel program-ma e stato previsto l’inserimento di soli carichi concentrati, quindi i dati da inseriresaranno: il numero del nodo, la direzione del carico e l’entita del carico in Newton. Ilprogramma provvedera ad inserire nella corretta posizione all’interno del vettore Q ilcarico desiderato. Ad esempio caricando il nodo 16 con un carico verticale di 500 Nil vettore Q memorizzato dal calcolatore sara:

El | qvett

------------

|

0 | 0

1 | 0

|

2 | 0

3 | 0

|

| ...

|

30 | 0

31 | 500

|

...

3.6 Soluzione

I passi successivi per il lancio della soluzione richiedono, da parte dell’utente, unosforzo minimo. Essendo un processo gestito completamente dall’elaboratore, l’unicaoperazione a�data all’operatore e la pressione del tasto ”Calcola”:

Le funzioni richiamate da questo evento sono:

vo id B t n s t a r t a n a l i s y s C l i c k ( o b j e c t sender , EventArgs e )

{c a l c . c a l c o l o . o r d i n a ( ) ;

c a l c . c a l c o l o . s i s l i n ( ) ;

c a l c . c a l c o l o . s po s t amen t i ( ) ;

c a l c . c a l c o l o . s t r e s s ( ) ;

MessageBox . Show( ” A n a l i s i t e rm i na t a ” ) ;

}

44

Page 51: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

3.6 Soluzione

Le funzioni sono contenute nella libreria ”calc.dll” che prende il nome dal names-pace, nel quale sono contenute le quattro funzioni. Oltre al namespace occorre speci-ficare una classe di appartenenza, che in questo caso e stata chiamata ”calcolo”. Lastruttura completa della libreria calc.dll e quindi:

namespace c a l c

{pub l i c c l a s s c a l c o l o

{pub l i c s t a t i c double o r d i n a ( )

{. . .

}

pub l i c s t a t i c double s i s l i n ( )

{. . .

}

pub l i c s t a t i c double spo s t amen t i ( )

{. . .

}

pub l i c s t a t i c double s t r e s s ( )

{. . .

}}

}

Analizziamo ora le quattro funzioni separatamente:

3.6.1 calc.calcolo.ordina()

I vettori U e Q, unitamente alla matrice K, sono completi ma non ordinati. Al finedi ottenere il sistema

⇢KLL KLV

KV L KV V

�·⇢

UL

UV

�=⇢

QL

QV

sara necessario un algoritmo che analizzi la seconda colonna del vettore U4 e interven-ga modificando, oltre che lo stesso vettore U, anche il vettore dei carichi e la matricedi rigidezza. Come si nota dal codice che segue, si comincia con il contare quantisiano i nodi non vincolati (!= 1 significa ”non uguale ad 1”) al fine di predisporre inuovi ”contenitori” per i vettori U, Q e la matrice K.

4Contenente l’indicazione di vincolo

45

Page 52: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Analisi del codice

i n t w = 0 ;

f o r ( i n t i =0; i < ( Gl . numNodi ⇤ 2 ) ; i++)

{i f ( Gl . u v e t t [ i , 1 ] != 1) w++;

}

Il passo successivo e infatti la creazione di kRmatr, ovvero di una matrice K”ridotta”, sostanzialmente coincidente con KLL.

double [ , ] kRmatr ;

kRmatr = new double [w, w ] ;

Viene inoltre creata una nuova matrice K globale: quella memorizzata comevariabile globale viene ”riversata” in un’altra a ”due piani”. Il primo contiene i daticon significato fisico, il secondo viene inizializzato tutto a 0.

double [ , , ] kmatr ;

kmatr = new double [ Gl . numNodi ⇤2 , Gl . numNodi ⇤ 2 , 2 ] ;

f o r ( i n t r = 0 ; r < Gl . numNodi ⇤2 ; r++)

{f o r ( i n t c = 0 ; c < Gl . numNodi ⇤2 ; c++)

{kmatr [ r , c , 0 ] = Gl . Kmatr [ r , c ] ;

kmatr [ r , c , 1 ] = 0 ;

}}

Il motivo e presto spiegato: nel piano formato da tutti zeri verranno convertiti in”1” le righe e le colonne relative a spostamenti vincolati. Questa soluzione si rendenecessaria al fine di estrarre correttamente la matrice KLL.

f o r ( i n t r = 0 ; r < G l oba l s . numNodi ⇤2 ; r++)

{i f ( G l o b a l s . u v e t t [ r , 1 ] == 1)

{f o r ( i n t c = 0 ; c < G l oba l s . numNodi ⇤ 2 ; c++)

{kmatr [ r , c , 1 ] = 1 ;

}}e l s e{

f o r ( i n t c = 0 ; c < G l oba l s . numNodi ⇤2 ; c++)

{i f ( G l o b a l s . u v e t t [ c , 1 ] == 1)

{kmatr [ r , c , 1 ] = 1 ;

}}

}}

46

Page 53: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

3.6 Soluzione

Nel nostro esempio i vincoli porteranno a determinare un ”secondo piano” diquesto tipo:

Figura 3.9: Influenza dei vincoli sulle matrice di rigidezza

La matrice relativa alla parte non vincolata, contraddistinta dal fatto di possedereil corrispondente termine 0 nel ”secondo piano”, viene a sua volta riversata nella ma-trice kRmatr. Il passaggio non e diretto, in quanto occorre prima processare le righe ememorizzare quanto fatto in una matrice KPassmatr, di passaggio. Successivamenteverranno eliminate anche le colonne.Quella che segue e un’operazione che necessita di un commento un po’ piu approfon-dito.

47

Page 54: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Analisi del codice

double [ , , ] kPassmatr ;

kPassmatr = new double [w, Gl . numNodi ⇤ 2 , 2 ] ;

i n t r1 = 0 ;

i n t q = 0 ;

f o r ( i n t r = 0 ; r < Gl . numNodi ⇤ 2 ; r++)

{i f ( kmatr [ r , q , 1 ] == 0)

{f o r ( i n t c = 0 ; c < Gl . numNodi ⇤ 2 ; c++)

{kPassmatr [ r1 , c , 0 ] = kmatr [ r , c , 0 ] ;

kPassmatr [ r1 , c , 1 ] = kmatr [ r , c , 1 ] ;

}r1++;

}e l s e{

i n t c o n t r o l l o =0;

f o r ( i n t r c = r ; r c < Gl . numNodi ⇤ 2 ; r c++)

{i f ( kmatr [ rc , q ,1]==0) c o n t r o l l o =1;

}

i f ( c o n t r o l l o ==0) q++;

}}

L’algoritmo inizia ad analizzare l’elemento kmatr[0,0,1] e se individua il val-ore ”0” allora copia l’intero contenuto della riga5 nella nuova matrice kPassmatr

e ne incrementa l’indice (r1++) per memorizzare la prossima serie di dati nella rigasottostante. Qualora il numero fosse stato ”1” allora, partendo dall’indice r fino altermine delle righe della matrice, viene controllato se l’intera colonna e stata vinco-lata. Se il termine controllo rimane pari a zero (ovvero la colonna della matrice eformata interamente da numeri ”1”) allora l’intera colonna sara da eliminare e quindibisognera continuare con il controllo delle righe dalla colonna successiva.Come al solito, chiariamo con l’esempio pilota:

5compreso l’altro ”piano”

48

Page 55: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

3.6 Soluzione

all’inizio abbiamo r = 0, q = 0 e r1 = 0; quindi tutta la riga viene viene copiatae r1 viene incrementato di 1.

al secondo ciclo abbiamo quindi: r = 1, q = 0 e r1 = 1.

al terzo ciclo abbiamo quindi: r = 2, q = 0 e r1 = 2.dato il risultato (pari ad ”1”) l’algoritmo non copia alcuna riga, ma controlla se

e↵ettivamente tutta la colonna sia da eliminare o se successivamente, come in questocaso, vi siano altri zeri, e quindi altri termini significativi da copiare. L’algoritmoprosegue eliminando tutte le righe nulle. Il controllo di tutta la colonna si rendenecessario, in quanto se il nodo vincolato fosse il primo - o i primi6 - l’algoritmo sibloccherebbe senza copiare alcuna riga.

6seguendo la numerazione della discretizzazione

49

Page 56: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Analisi del codice

L’eliminazione delle colonne rimaste e implementata nel seguente codice:

i n t c1 = 0 ;

f o r ( i n t c = 0 ; c<G l oba l s . numNodi⇤2 ; c++ )

{i f ( kPassmatr [ 0 , c , 1 ] == 0)

{f o r ( i n t r = 0 ; r < w; r++)

{kRmatr [ r , c1 ] = kPassmatr [ r , c , 0 ] ;

}c1++;

}}

Per quanto riguarda i vettori U e Q, si e proceduto ordinando i vettori da Gl.uvetta u2vett e da Gl.qvett a q2vett e, in un passaggio successivo alla loro riduzionein UL (uRidottovett) e QL (qRidottovett).

3.6.2 calc.calcolo.sislin()

Una volta in possesso di tutte le componenti del sistema

KLL · UL = QL

i comandi per trovare la soluzione risultano davvero elementari:

Matr i x K1 = Matr i x . C rea te ( Gl . kRmatr ) ;

Mat r i x P1 = Matr i x . C rea te ( Gl . qR i d o t t o v e t t ) ;

Mat r i x U1 = K1 . So l v e (P1 ) ;

Questo perche si e a�data la risoluzione del sistema alla libreria Math.NET. Inquesta dll e infatti presente la funzione ”solve” che necessita, come parametri di input,

50

Page 57: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

3.6 Soluzione

della matrice dei coe�cienti e del vettore dei termini noti. La soluzione viene scrittanel vettore U1.

3.6.3 calc.calcolo.spostamenti()

Per il calcolo degli spostamenti si opera sommando il risultato ottenuto dalla risoluzionedel sistema lineare (spostamento) alle coordinate dei punti presenti nella tabella dellecoordinate. La tabella delle coordinate contiene pero piu termini del vettore sposta-mento U1. Ecco che allora, la terza colonna contente l’indicazione del numero delnodo, risulta di fondamentale importanza.

f o r ( i n t a = 0 ; a < w; a++)

{i f ( Gl . u v e t t [ a , 2 ] < 1000000000)

{t abcoo rd [ Conver t . ToInt64 ( Gl . u v e t t [ a , 2 ] ) , 0 ] += Gl . u v e t t [ a , 0 ] ;

}e l s e{

t abcoo rd [ ( Conver t . ToInt64 ( Gl . u v e t t [ a , 2 ] ) � 1000000000) , 1 ] +=

Gl . u v e t t [ a , 0 ] ;

}}

Analizzando il codice si nota come, per ogni riga, venga interrogata la terzacolonna (Gl.uvett[a,2]) e a seconda che il valore in essa contenuto sia minoreo maggiore di 109, ovvero a seconda che il valore sia inerente ad uno spostamentorispettivamente in X o in Y, esso venga sommato alla colonna 0 o alla colonna 1 dellatabella delle coordinate.

Figura 3.10: Configurazione deformata [Fattore 50x]

51

Page 58: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Analisi del codice

La nuova tabella delle coordinate ottenuta e riferita alla configurazione deformatadel pezzo in esame.

Nel nostro esempio avremo il seguente vettore uvett:

uvett

-----

0 1 2

-------------------------------

-0,0077531850 0 0

0,0024574796 0 1000000000

-0,0490598039 0 2

-0,0351167311 0 1000000002

0,0028991737 0 3

0,0122327967 0 1000000003

0,0064053726 0 4

-0,0551403483 0 1000000004

0,0246498561 0 5

0,0034277032 0 1000000005

-0,0654014042 0 6

-0,1164526276 0 1000000006

-0,0376582992 0 1000000007

0,0692988267 0 8

-0,0301807853 0 1000000008

0,0009394902 0 9

-0,1609460336 0 1000000009

... ... ...

Possiamo confrontare le tabelle delle coordinate nella configurazione indeformatae in quella deformata.

Nodo Config. Deformata Config. Iniziale

---------------------------------------------------------

X Y X Y

0 14,9922305857 16,6689252836 14,99998 16,66647

1 0,0000000000 0,0000000000 0 0 Vincoli: X + Y

2 24,9509401961 -0,0351167311 25 0

3 0,0028991737 25,0122327967 0 25

4 35,0064024580 24,9446491352 35 24,99979

5 15,0246336269 33,3365630273 14,99998 33,33314

6 49,9345985958 -0,1164526276 50 0

7 0,0000000000 49,9623417008 0 50 Vincoli: X

8 25,0692988267 49,9698192147 25 50

9 65,0009424048 24,8388434500 65 24,99979

10 50,0821488503 49,8905334236 50 50

11 74,9320906528 -0,1928976168 75 0

12 75,0856596751 49,8029492759 75 50

13 84,9798757869 16,4416412180 85,00002 16,66647

14 85,0289055566 33,1047288478 85,00002 33,33314

15 99,9298746346 -0,2720178725 100 0

16 100,1024853517 49,7050747200 100 50

17 100,0070664776 24,7253292343 100 25

52

Page 59: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

3.6 Soluzione

3.6.4 calc.calcolo.stress()

Per il calcolo degli sforzi si e seguito un procedimento inverso rispetto a quello che haportato alla soluzione del sistema. Si sono calcolati anzitutto i parametri geometricidi ogni triangolo, ottenibili tramite:

a

i

= �X

j

+ X

k

, b

i

= Y

j

� Y

k

a

j

= �X

k

+ X

i

, b

j

= Y

k

� Y

i

a

k

= �X

i

+ X

j

, b

k

= Y

i

� Y

j

Dove le coordinate X e Y sono quelle globali contenute nella tabella delle coor-dinate dei nodi. L’area e calcolabile come di↵erenza tra l’area del rettangolo e l’areadei tre triangoli esterni all’elemento:

A = a

k

b

j

� 12a

i

b

i

+12a

j

b

j

+12a

k

b

k

ma dato che

a

i

+ a

j

+ a

k

= 0

b

i

+ b

j

+ b

k

= 0

l’equazione puo essere semplificata in

A =12(a

k

b

j

+ a

j

b

k

)

53

Page 60: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Analisi del codice

Al fine di giungere alla determinazione degli sforzi dovremo seguire il precorsoconcettuale spostamenti ! deformazioni ! sforzi. Cerchiamo quindi di ricavare unaformulazione che riconduca gli spostamenti al quale e sogetto l’elemento finito alledeformazioni che lo interessano. Il modello di spostamento e stato ricavato dalleseguenti equazioni:

u(x, y) = ↵1 + ↵2x + ↵3y

v(x, y) = ↵4 + ↵5x + ↵6y

esse possono essere scritte anche in forma matriciale, come segue:

⇢↵2 ↵5

↵3 ↵6

�=

12 · A

⇢b

i

b

j

b

k

a

i

a

j

a

k

�8<

:

u

i

v

i

u

j

v

j

u

k

v

k

9=

;

Ricordando che:

x

=@u

@x

y

=@v

@y

xy

=@u

@y

+@v

@x

Il vettore delle deformazioni sara esprimibile come:

✏ =

8<

:

x

y

xy

9=

; =

8><

>:

@u

@x

@v

@y

@u

@y

+ @v

@x

9>=

>;=

12 · AB

8>>>>>><

>>>>>>:

u

i

v

i

u

j

v

j

u

k

v

k

9>>>>>>=

>>>>>>;

dove B e la matrice dimensionale cosı formata:

B =

8<

:

b

i

0 b

j

0 b

k

00 a

i

0 a

j

0 a

k

a

i

b

i

a

j

b

j

a

k

b

k

9=

;

Una volta noto il vettore delle deformazioni dell’elemento e possibile ricavare glisforzi al quale e soggetto mediante una semplice moltiplicazione matriciale:

8<

:

x

y

xy

9=

; = D ·

8<

:

x

y

xy

9=

;

dove D e la matrice gia vista nel capitolo 1:

54

Page 61: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

3.6 Soluzione

D =E

1� ⌫

2

8<

:

1 ⌫ 0⌫ 1 00 0 1

2(1� ⌫)

9=

;

Il codice per il calcolo delle caratteristiche geometriche e il seguente:

a1 = �Gl . tabcoo rd [ Gl . t a b i n c [ i , 1 ] , 0 ] + Gl . tabcoo rd [ Gl . t a b i n c [ i , 2 ] , 0 ] ;

a2 = �Gl . tabcoo rd [ Gl . t a b i n c [ i , 2 ] , 0 ] + Gl . tabcoo rd [ Gl . t a b i n c [ i , 0 ] , 0 ] ;

a3 = �Gl . tabcoo rd [ Gl . t a b i n c [ i , 0 ] , 0 ] + Gl . tabcoo rd [ Gl . t a b i n c [ i , 1 ] , 0 ] ;

b1 = Gl . t abcoo rd [ Gl . t a b i n c [ i , 1 ] , 1 ] � Gl . tabcoo rd [ Gl . t a b i n c [ i , 2 ] , 1 ] ;

b2 = Gl . t abcoo rd [ Gl . t a b i n c [ i , 2 ] , 1 ] � Gl . tabcoo rd [ Gl . t a b i n c [ i , 0 ] , 1 ] ;

b3 = Gl . t abcoo rd [ Gl . t a b i n c [ i , 0 ] , 1 ] � Gl . tabcoo rd [ Gl . t a b i n c [ i , 1 ] , 1 ] ;

Mentre gli spostamenti sono da intendersi come da illustrazione:

Figura 3.11: Spostamenti

uvv e t t [ 0 ] = Gl . tabcoordD [ Gl . t a b i n c [ i , 0 ] , 0 ] � Gl . tabcoo rd [ Gl . t a b i n c [ i , 0 ] , 0 ] ;

u v v e t t [ 1 ] = Gl . tabcoordD [ Gl . t a b i n c [ i , 0 ] , 1 ] � Gl . tabcoo rd [ Gl . t a b i n c [ i , 0 ] , 1 ] ;

u v v e t t [ 2 ] = Gl . tabcoordD [ Gl . t a b i n c [ i , 1 ] , 0 ] � Gl . tabcoo rd [ Gl . t a b i n c [ i , 1 ] , 0 ] ;

u v v e t t [ 3 ] = Gl . tabcoordD [ Gl . t a b i n c [ i , 1 ] , 1 ] � Gl . tabcoo rd [ Gl . t a b i n c [ i , 1 ] , 1 ] ;

u v v e t t [ 4 ] = Gl . tabcoordD [ Gl . t a b i n c [ i , 2 ] , 0 ] � Gl . tabcoo rd [ Gl . t a b i n c [ i , 2 ] , 0 ] ;

u v v e t t [ 5 ] = Gl . tabcoordD [ Gl . t a b i n c [ i , 2 ] , 1 ] � Gl . tabcoo rd [ Gl . t a b i n c [ i , 2 ] , 1 ] ;

55

Page 62: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Analisi del codice

Segue il riempimento della matrice B e il calcolo dell’area:

Bmatr [ 0 , 0 ] = b1 ; Bmatr [ 1 , 0 ] = 0 ; Bmatr [ 2 , 0 ] = a1 ;

Bmatr [ 0 , 1 ] = 0 ; Bmatr [ 1 , 1 ] = a1 ; Bmatr [ 2 , 1 ] = b1 ;

Bmatr [ 0 , 2 ] = b2 ; Bmatr [ 1 , 2 ] = 0 ; Bmatr [ 2 , 2 ] = a2 ;

Bmatr [ 0 , 3 ] = 0 ; Bmatr [ 1 , 3 ] = a2 ; Bmatr [ 2 , 3 ] = b2 ;

Bmatr [ 0 , 4 ] = b3 ; Bmatr [ 1 , 4 ] = 0 ; Bmatr [ 2 , 4 ] = a3 ;

Bmatr [ 0 , 5 ] = 0 ; Bmatr [ 1 , 5 ] = a3 ; Bmatr [ 2 , 5 ] = b3 ;

Area = 0 . 5⇤ ( a3⇤b2�a2⇤b3 ) ;

In seguito due moltiplicazioni matriciali consentono di giungere agli sforzi neglielementi:

f o r ( i n t k = 0 ; k < 3 ; k++)

{f o r ( i n t j = 0 ; j < 6 ; j++)

{Ematr [ i , k ] += Bmatr [ k , j ] ⇤ uvv e t t [ j ] ;

}}

Ematr [ i ,0 ]= Ematr [ i , 0 ] ⇤ ( 1 / ( 2 ⇤ Area ) ) ;

Ematr [ i ,1 ]= Ematr [ i , 1 ] ⇤ ( 1 / ( 2 ⇤ Area ) ) ;

Ematr [ i ,2 ]= Ematr [ i , 2 ] ⇤ ( 1 / ( 2 ⇤ Area ) ) ;

e

f o r ( i n t k = 0 ; k < 3 ; k++)

{f o r ( i n t j = 0 ; j < 3 ; j++)

{s t r e s s v e t t [ i , k ] += Gl . Dmatr [ k , j ] ⇤ Ematr [ i , j ] ;

}}

56

Page 63: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

3.6 Soluzione

Per terminare l’analisi dell’esempio pilota possiamo riportare le mappe relative aglisforzi �

x

, �

y

e �

xy

:

57

Page 64: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Analisi del codice

Riportiamo i dati relativi agli sforzi negli elementi, forniti dal report:

S F O R Z I

-----------

Nodo Sigma X Sigma Y Sigma XY

----------------------------------------------------

0: -1,775645E+002 9,495565E+001 -4,187634E+000

1: -5,756963E+001 3,410686E+001 -1,065648E+001

2: -1,539611E+001 3,960895E+001 -2,959588E+001

3: 4,470395E+001 1,952359E+001 5,350297E+001

4: -9,771102E+000 3,181078E+000 -3,876772E+001

5: -5,810007E+001 3,511549E+001 -3,123113E+001

6: 1,056668E+002 -1,778426E+002 1,638372E+001

7: 1,164459E+001 -1,830156E+001 -1,752271E+001

8: -9,378687E+000 3,250633E+001 -3,084895E+001

9: 2,438273E+002 -1,574259E+002 5,309980E+001

10: 4,995516E+001 -1,338314E+001 -1,817776E+001

11: -2,299345E+001 -1,287620E+001 -1,566217E+001

12: -9,673203E+000 2,867193E+000 -1,389030E+001

13: 1,472084E+001 -8,208543E-002 -6,896067E+000

14: 1,296390E+001 3,946312E+000 -1,594972E+001

15: -5,953175E+000 -1,375332E+001 2,835371E+000

16: 1,238166E+001 -1,883881E+001 -1,380090E+001

17: -1,081102E+001 -5,012464E+000 -9,912669E+000

18: 6,146935E+001 -3,066166E+001 -4,239971E+000

19: 1,326834E+001 -1,857281E+001 -1,057391E+001

20: 7,678249E+000 -8,838677E+000 -7,120637E+000

21: 4,874526E+001 -7,044538E+001 1,140363E+001

Come si puo notare, una discretizzazione cosı ampia non consente di ottenerediagrammi qualitativamente fruibili. Riproponiamo quindi le mappe relative allo stessoproblema, discretizzate pero con una mesh piu fitta oltre ad un confronto con dellemappe ottenute dal programma SAP2000 e provviste di smoothing:

58

Page 65: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

3.6 Soluzione

59

Page 66: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Analisi del codice

60

Page 67: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Capitolo 4

Confronti con software dicalcolo commerciali

4.1 Introduzione

In quest’ultimo capitolo si confronteranno i risultati ottenuti dal programma sin quidescritto con quelli forniti da due progammi di uso commerciale: SAP2000 e COMSOLMultiphysics. Verranno analizzate cinque geometrie con schemi di carico diversi.

4.1.1 SAP2000

SAP2000 e un software integrato per analisi strutturale e verifiche. Per essere certi diutilizzare il modello fisico corretto verifichiamo di aver inserito nell’apposita mascherai dati corretti. E necessario inoltre controllare le proprieta degli elementi, quali lascelta della teoria (plane stress o plane strain) e lo spessore della lastra (figura 4.1).

4.1.2 COMSOL Multiphysics

Il secondo programma con cui si e deciso di confrontare i dati ottenuti e COMSOLMultiphysics. Questo software consente di e↵ettuare analisi strutturali, di fluidodi-namica, di trasmissione del calore, acustiche e di elettromagnetismo. Oltre a questeesso consente anche di valutare le interazioni che piu aspetti fisici hanno sul problemain esame. E possibile, ad esempio, valutare come si comporta un pezzo meccani-co sollecitato da forze esterne al variare della temperatura. Anche qui, come per ilprecedente software, controlliamo di avere assunto le stesse ipotesi di base (figura 4.2)

61

Page 68: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Confronti con software di calcolo commerciali

Figura 4.1: Parametri SAP 2000

62

Page 69: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

4.1 Introduzione

Figura 4.2: Parametri COMSOL Multiphysics

63

Page 70: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Confronti con software di calcolo commerciali

4.2 Primo problema

Si comincera con l’analisi di una lastra rettangolare di dimensioni 250mm x 60mm,vincolata in semplice in appoggio e caricata all’estradosso in mezzeria con un caricoconcentrato di 1 kN.

Riportiamo qui di seguito la geometria inserita in Thesis:

6

0: 0 0 4.5 1

1: 125 0 7.5 1

2: 250 0 4.5 1

3: 250 60 7.5 1

4: 125 60 3.5 1

5: 0 60 7.5 1

6

0: 0 1 1

1: 1 2 1

2: 2 3 1

3: 3 4 1

4: 4 5 1

5: 5 0 1

Sono presenti sei punti invece di quattro perche in corrispondenza della mezzeriasuperiore e delle zone di appoggio e stato aumentato il numero degli elmenti.

Confrontiamo gli spostamenti che i tre programmi forniscono:

Thesis SAP2000 COMSOLu 0,0517 0,0393 0,0398v -0,1356 -0,1230 -0,1256

Si puo vedere che numericamente vi e una certa omogeneita di risultati. Lospostamento veticale si discosta dalla media degli altri due programmi solo per un8,33%.Analizzando lo stato tensionale nel punto di carico i risultati sono i seguenti:

64

Page 71: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

4.2 Primo problema

Si ricava lo stato tensionale del punto in Thesis come media dello stato tensionaledegli elementi concorrenti al nodo, in questo caso il 342:

Nodo 342:

Elementi Sigma X Sigma Y Sigma XY

610: -9,024406E+001 -3,458788E+001 -9,766226E+001

621: 2,817026E+001 -2,190070E+002 2,591078E+001

637: -3,606611E+001 -7,127716E+001 1,165955E+002

[mm] Thesis SAP2000 COMSOL�

x

-32,7133 -129,7387 -187,7965�

y

-108,2907 -107,6685 -106,2625�

xy

14,9480 0 -1,7159

Si e analizzato lo stato tensionale anche in una zona a basso gradiente di sforzo:

Nodo 80: (coordinate: 44,6640 ; 21,9094)

Elementi Sigma X Sigma Y Sigma XY

126: 8,060143E+000 4,156950E+000 -1,323452E+001

130: 4,870146E+000 -6,069709E+000 -1,322586E+001

140: 2,935961E+000 -3,300120E+000 -1,011122E+001

147: 6,114630E+000 1,064749E+000 -8,455883E+000

156: 6,147715E+000 -2,208049E+000 -9,158331E+000

160: 7,326036E+000 3,527977E+000 -9,880195E+000

166: 5,523098E+000 -1,470096E+000 -9,183329E+000

[MPa] Thesis SAP2000 COMSOL�

x

5,8540 8,4642 7,9930�

y

-0,6140 1,6428 1,5561�

xy

-10,4642 -9,5621 -11,4393

Si nota come gli spostamenti vengano ricavati correttamente, mentre si notanodelle incongruenze rilevanti in zone ad alto gradiente di sforzo. Si riportano di seguitole mappe di sforzo prodotte dai tre software:

65

Page 72: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Confronti con software di calcolo commerciali

Figura 4.3: �

x

, �

y

e �

xy

del primo esempio prodotto da Thesis

66

Page 73: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

4.2 Primo problema

Figura 4.4: �

x

, �

y

e �

xy

del primo esempio prodotto da SAP2000

Figura 4.5: �

x

, �

y

e �

xy

del primo esempio prodotte da COMSOL Multiphysics

67

Page 74: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Confronti con software di calcolo commerciali

4.3 Secondo problema

Il confronto presegue con la comparazione di una geometria abbastanza semplice: sitratta di una forma ad L, incernierata a due estremi e caricata in un vertice (figura4.6).

Figura 4.6: Geometria del secondo esempio

Analogamente a prima specifichiamo la geometria da inserire in Thesis:

8

0: 0 0 24 1

1: 245 0 12.5 1

2: 250 5 12.5 1

3: 250 125 4 1

4: 495 125 12.5 1

5: 500 130 12.5 1

6: 500 250 25 1

7: 0 250 26 1

8

0: 0 1 1

1: 1 2 1

2: 2 3 1

3: 3 4 1

4: 4 5 1

5: 5 6 1

6: 6 7 1

7: 7 0 1

ed i risultati ottenuti inerenti lo spostamento del punto di applicazione del carico:

[mm] Thesis SAP2000 COMSOLu 0,1971 0,1779 0,1431v -0,6439 -0,6040 -0,4943

68

Page 75: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

4.3 Secondo problema

In analogia con il caso precedente si e notato che il programma riesce a descriveremeglio stati di tensione in zone con bassi gradienti di sforzo:

Zone con alto gradiente di sforzo

Nodo 571:

Elementi Sigma X Sigma Y Sigma XY

1023: -3,134511E+001 6,779955E+000 -1,775916E+000

1025: -1,983232E+001 1,168277E+001 9,612637E-001

1050: -4,753870E+001 2,390713E+001 -1,376474E+001

1061: -1,957706E+001 1,437173E+001 -5,954703E+000

1081: -4,598015E+001 2,867328E+001 -1,747831E+001

1090: -4,736131E+001 2,674509E+001 -1,856600E+001

[MPa] Thesis SAP2000 COMSOL�

x

-35,2724 -112,7642 -108,0193�

y

18,6933 -77,3974 -21,9323�

xy

-9,4247 -27,8023 -24,1359

Zone con basso gradiente di sforzo

Nodo 68: (coordinate: 104,6696 ; 140,6698)

Elementi Sigma X Sigma Y Sigma XY

105: 4,983496E-001 3,253074E+000 1,541317E+000

110: 8,977441E-001 3,288232E+000 1,011707E+000

117: -2,950361E+000 4,423985E+000 -2,430538E+000

128: 2,134345E+000 1,778294E+000 9,850874E-001

136: -1,196635E+000 4,972731E+000 -1,770513E+000

139: -1,528793E+000 3,215961E+000 -1,998232E+000

[MPa] Thesis SAP2000 COMSOL�

x

-0,3576 -3,2916 -5,5968�

y

3,4887 7,2780 5,7216�

xy

-0,4435 -1,2459 -3,6447

Seguono le mappe prodotte dai tre software.

69

Page 76: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Confronti con software di calcolo commerciali

Figura 4.7: �

x

, �

y

e �

xy

del secondo esempio prodotto da Thesis

70

Page 77: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

4.3 Secondo problema

Figura 4.8: �

x

, �

y

e �

xy

del secondo esempio prodotto da SAP2000

71

Page 78: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Confronti con software di calcolo commerciali

Figura 4.9: �

x

, �

y

e �

xy

del secondo esempio prodotte da COMSOL Multiphysics

72

Page 79: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

4.4 Terzo problema

4.4 Terzo problema

Passando a sistemi piu complessi, si e deciso di analizzare la risposta strutturale di unalastra rettangolare di dimensioni 250mm x 300mm con un foro di dimensioni 200mm x200mm. Essa e vincolata in semplice appoggio e caricata all’estremo superiore sinistrocon una forza concentrata pari a 1kN diretta orizzontalmente.

Analogamente a prima si riporta la geometria accettata da Thesis:

12

0: 0 0 10 1

1: 250 0 10 1

2: 250 150 5 1

3: 250 300 10 1

4: 0 300 10 1

5: 0 150 5 1

6: 25 50 10 1

7: 25 150 5 1

8: 25 250 10 1

9: 225 250 10 1

10: 225 150 5 1

11: 225 50 10 1

12

0: 0 1 1

1: 1 2 1

2: 2 3 1

3: 3 4 1

4: 4 5 1

5: 5 0 1

6: 6 7 1

7: 7 8 1

8: 8 9 1

9: 9 10 1

10: 10 11 1

11: 11 6 1

Gli spostamenti del punto di applicazione:

[mm] Thesis SAP2000 COMSOLu 1,8443 2,3579 2,2299v 0,0747 0,0819 0,0719

e del carrello:

[mm] Thesis SAP2000 COMSOLu 0,0544 0,0681 0,0590

Nell zone da alto gradiente e possibile notare il solito rilevante scostamento:

73

Page 80: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Confronti con software di calcolo commerciali

Nodo 552: (coordinate: 65 ; 50)

Elementi Sigma X Sigma Y Sigma XY

100: -9,156440E+001 6,220793E+001 -1,692209E+001

103: -3,966417E+001 3,749735E+001 -2,316949E+000

113: -6,524898E+001 2,488868E+001 -9,738443E+000

[MPa] Thesis SAP2000 COMSOL�

x

-65,4925 -85,4829 -80,6085�

y

41,5313 -0,0259 0,1841�

xy

-9,6592 1,7480 2,2037

Anche nelle zone a basso gradiente il programma trova qualche di�colta nelcogliere lo stato tensionale.

Nodo 226: (coordinate: 0 ; 150)

Elementi Sigma X Sigma Y Sigma XY

370: 1,981370E+000 -1,537996E+001 8,323984E+000

381: 7,000490E+000 8,743903E+000 1,121672E+001

[MPa] Thesis SAP2000 COMSOL�

x

5,2630 0,0000 0,2942�

y

-12,2032 30,3444 30,1300�

xy

9,9882 6,5347 4,9274

Figura 4.10: Configurazione deformata nel terzo esempio

Si riportano la configurazione deformata prodotta da Thesis (amplificata di 50volte) e le mappe degli sforzi.

74

Page 81: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

4.4 Terzo problema

Figura 4.11: �

x

, �

y

e �

xy

del terzo esempio prodotto da Thesis

75

Page 82: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Confronti con software di calcolo commerciali

Figura 4.12: �

x

, �

y

e �

xy

del terzo esempio prodotto da SAP2000

76

Page 83: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

4.4 Terzo problema

Figura 4.13: �

x

, �

y

e �

xy

del terzo esempio prodotte da COMSOL Multiphysics

77

Page 84: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Confronti con software di calcolo commerciali

4.5 Quarto problema

Si e voluto studiare la soluzione di un problema caratteristico della scienza dellecostruzioni: la lastra in questo caso e rettangolare (dimensioni 300mm x 150mm)e presenta un foro circolare di diametro pari ad un decimo dell’altezza.Questa e stata caricata con un carico distribuito che complessivamente esercita 5kNdi trazione e vincolata in modo continuo con una serie di carrelli che le permettono dipotersi deformare trasversalmente senza generare e↵etti ulteriori sullo stato tensionale.

Figura 4.14: Geometria del quarto problema

Gli spostamenti del punto medio di applicazione del carico registrati sono:

[mm] Thesis SAP2000 COMSOLu 0,0513 0,0512 0,0506v -0,0064 -0,0041 -0,0141

Le zone ad alto gradiente analizzate sono le estremita superiori del foro e quelleorizzontali.

Estremita verticale del foroNodo 571:

Elementi Sigma X Sigma Y Sigma XY

1042: 4,753357E+001 -1,048790E+001 7,828283E+000

1072: 2,816789E+001 -2,488060E+001 -3,076703E-001

1111: 1,070231E+002 -4,664736E+001 -2,933582E+001

[MPa] Thesis SAP2000 COMSOL�

x

60,9082 96,5629 91,1898�

y

-27,3386 6,7051 11,6465�

xy

-17,4249 -0.0155 -10,1136

78

Page 85: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

4.5 Quarto problema

Estremita orizzontale del foro

Nodo 469:

Elementi Sigma X Sigma Y Sigma XY

850: 1,994914E+001 -1,950457E+001 -4,319164E+000

856: 5,701323E+000 -8,925065E+000 -3,222301E+000

[MPa] Thesis SAP2000 COMSOL�

x

13,4758 0,2802 -0,1073�

y

-15,7044 -32,4968 -26,1997�

xy

-4,3820 0,1189 -1,5691

Per la zona a basso gradiente si e scelto il punto (91,7911mm ; 94,6177mm)

Zona a basso gradiente

Nodo 102:

Elementi Sigma X Sigma Y Sigma XY

164: 2,592382E+001 -1,735481E+001 3,961739E+000

165: 4,021959E+001 -1,231466E+001 -1,697830E+000

184: 4,619789E+001 -2,673230E+001 1,305967E+001

186: 2,234496E+001 -1,797539E+001 1,021887E+001

206: 3,702943E+001 -2,687717E+001 1,953006E+001

207: 3,172928E+001 -2,865300E+001 1,545821E+001

[MPa] Thesis SAP2000 COMSOL�

x

33,9075 32,7951 33,1568�

y

-21,6512 -0,0417 -0,2533�

xy

10,0885 0,7109 0,5130

Si puo notare come il programma risulti preciso nel determinare gli spostamenti esolamente la �

x

nella zona a basso gradiente.

79

Page 86: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Confronti con software di calcolo commerciali

Figura 4.15: �

x

, �

y

e �

xy

del quarto esempio prodotto da Thesis

80

Page 87: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

4.5 Quarto problema

Figura 4.16: �

x

, �

y

e �

xy

del quarto esempio prodotto da SAP2000

81

Page 88: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Confronti con software di calcolo commerciali

Figura 4.17: �

x

, �

y

e �

xy

del quarto esempio prodotte da COMSOL Multiphysics

82

Page 89: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

4.6 Quinto problema

4.6 Quinto problema

Nell’ultimo esempio, le dimensioni e le condizioni di carico sono le medesime delquarto problema, con la di↵erenza che in questo caso il foro e un’ellisse con il semiassemaggiore disposto trasversalmente.

Figura 4.18: Geometria del quinto problema

Gli spostamenti del punto medio di applicazione del carico registrati sono:

[mm] Thesis SAP2000 COMSOLu 0,0689 0,0679 0,0643v -0,0136 -0,0034 -0,0036

La zona ad alto gradiente analizzata e l’estremita superiore del foro.

Estremita verticale del foro

Nodo 619:

Elementi Sigma X Sigma Y Sigma XY

1121: 9,931185E+001 8,281266E+000 7,901374E+001

1125: 5,371866E+001 -2,993204E+001 5,367208E+001

1156: 8,048386E+001 -2,798395E+001 9,261089E+000

[MPa] Thesis SAP2000 COMSOL�

x

120,1528 138,0006 154,2936�

y

-28,3725 15,7554 19,9257�

xy

26,1612 -0,1179 -2,4092

Per la zona a basso gradiente si e scelto il punto (87,1188mm ; 80,2100mm)

Zona a basso gradiente

83

Page 90: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Confronti con software di calcolo commerciali

Nodo 179:

Elementi Sigma X Sigma Y Sigma XY

303: 1,388065E+001 -4,949990E+000 7,905641E+000

307: 1,022250E+001 1,211536E+000 4,965644E+000

329: 1,352525E+001 -4,567515E+000 5,134933E+000

336: 6,654447E+000 -3,004670E-001 4,137858E+000

359: 1,930246E+001 -1,511417E+000 6,896430E+000

362: 8,428505E+000 4,714312E+000 4,870567E+000

[MPa] Thesis SAP2000 COMSOL�

x

12,0023 19,3418 23,9243�

y

-0,9006 4,6537 5,2571�

xy

5,6518 1,5746 3,4764

84

Page 91: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

4.6 Quinto problema

Figura 4.19: �

x

, �

y

e �

xy

del quinto esempio prodotto da Thesis

85

Page 92: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Confronti con software di calcolo commerciali

Figura 4.20: �

x

, �

y

e �

xy

del quinto esempio prodotto da SAP2000

86

Page 93: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

4.6 Quinto problema

Figura 4.21: �

x

, �

y

e �

xy

del quinto esempio prodotte da COMSOL Multiphysics

87

Page 94: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Confronti con software di calcolo commerciali

88

Page 95: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Conclusioni

Thesis risulta essere su�cientemente a�dabile nel cogliere gli spostamenti dei varipunti del dominio, altrettanto non si puo dire invece per quanto riguarda le sol-lecitazioni.

Il fatto che queste non presentino un’adeguata convergenza di risultati e dovu-to alla mancanza di avanzati algoritmi di stress recovery. Nella maggior parte deisoftware in commercio, infatti, le sollecitazioni ricavate per i vari elementi subisconoprocessi di correzione. Ne e un esempio lo smoothing delle mappe degli sforzi, nec-essario ad assicurare la continuita delle sollecitazioni in tutta la lastra. In Thesis nonsono stati implementati metodi avanzati di stress recovery, ma tale argomento esuladagli obiettivi di questa tesi.

Questo studio ha confermato la congruenza del metodo degli spostamenti con irisultati ottenuti dai codici commerciali; i risultati di Thesis sono infatti il prodottodell’applicazione diretta della teoria dello stato piano di sforzo con elementi CST e sidiscostano mediamente solo per il 12%.

89

Page 96: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale
Page 97: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Bibliografia

Brebbia C.A., Connor J.J. (1979) Fondamenti del Metodo degli Elementi Finiti, CLUP.

Rugarli P. (2004) Calcolo Strutturale con gli Elementi Finiti, EPC Libri.

Fenner R.T. (1997) Finite Element Method for Engineers, The Macmillan Press LTD.

Pian M., Visintin D. (1991) Introduzione al Metodo degli Elementi Finiti, DICA UniTs.

D’Antonio L.D. (2008) Calcolo dei Telai Piani, Dario Flaccovio Editore.

91

Page 98: Analisi elastica con il metodo degli elementi finiti: sviluppo di un codice e confronto con programmi di uso commerciale

Indice analitico

.NET Framework, 21

assemblaggio, 10, 37

carichi, 12, 44coe�ciente di Poisson, 9COMSOL Multiphysics, 61

Delaunay, 8

EasyMesh, 8equazione di equilibrio, 7estrazione, 45

funzioni di forma, 5

geometria, 29

linguaggio di programmazione, 21

Math.NET, 24, 50matrice di rigidezza, 9, 28, 33matrice elemento, 34meshing, 8modello di spostamento, 4modello matematico, 2modulo di Young, 9

SAP2000, 61sistema lineare, 18, 50sistema risolvente, 14sollecitazioni, 53soluzione, 44spostamenti, 51, 61

Thesis, 28

vettore degli sforzi, 3

vettore delle deformazioni, 3vincoli, 12Voronoi, 8

92