Sei sulla pagina 1di 30

Politecnico di Torino

Dipartimento di Ingegneria Meccanica e Aerospaziale

Scrittura e applicazione
di un programma MATLAB
per lanalisi FEM
di travature reticolari piane

Marco Gherlone

Politecnico di Torino
Dipartimento di Ingegneria Meccanica e Aerospaziale

Marco Gherlone

Contenuto dellesercitazione
Lesercitazione si divide in due fasi:
1. scrittura di un programma in ambiente MATLAB per lanalisi statica di
travature reticolari piane secondo il metodo degli elementi finiti;
2. applicazione di tale programma allo studio di una travatura reticolare assegnata.

Scopo dellesercitazione
Gli scopi fondamentali dellesercitazione sono:
lapplicazione del metodo degli elementi finiti secondo i suoi passi fondamentali;
lapprendimento dei fondamenti della programmazione FEM.

Strutture Aeronautiche
6 Scrittura e applicazione di un programma MATLAB per lanalisi FEM di travature reticolari piane

Politecnico di Torino
Dipartimento di Ingegneria Meccanica e Aerospaziale

Marco Gherlone

Premessa
I programmi agli elementi finiti normalmente operano secondo tre fasi (qui descritte
per il caso di analisi statica):
1. pre-processing; raccolta dei dati su materiali, geometria e mesh, vincoli e carichi;
2. processing; calcolo vero e proprio (si tratta di calcolare la matrice di rigidezza ed
il vettore delle forze dellintera struttura e, quindi, di determinare i gradi di libert
non vincolati e le reazioni vincolari);
3. post-processing; a partire dai risultati precedenti, si calcolano alcuni risultati
secondari (le deformazioni e le tensioni in ogni elemento).
Non esiste una regola precisa secondo la quale queste tre fasi debbano essere
risolte da uno o pi programmi; tipicamente, per, un programma svolge il preed il post-processing, un secondo programma effettua il processing.
Nel nostro caso seguiremo uno schema leggermente diverso; un primo programma
(ROD_FEM.m) svolge in successione pre-processing e processing, salvando poi i
risultati statici in un file, un secondo programma (OUT_ROD_FEM.m) effettua il
post-processing a partire dai risultati gi salvati.
Per ogni fase della scrittura dei due programmi, sono ora fornite delle indicazioni di
massima e qualche suggerimento sulla codifica in ambiente MATLAB.
Strutture Aeronautiche
6 Scrittura e applicazione di un programma MATLAB per lanalisi FEM di travature reticolari piane

Politecnico di Torino
Dipartimento di Ingegneria Meccanica e Aerospaziale

Marco Gherlone

Scrittura dei programmi


Pre-processing

Inserimento dei dati per lanalisi


Calcoli preliminari

ROD_FEM.m
Calcolo della matrice [KG] e del
vettore {FG} per lintera struttura
Processing
Risoluzione

Salvataggio dei risultati


OUT_ROD_FEM.m

Post-processing

Elaborazione dei risultati

Strutture Aeronautiche
6 Scrittura e applicazione di un programma MATLAB per lanalisi FEM di travature reticolari piane

Politecnico di Torino
Dipartimento di Ingegneria Meccanica e Aerospaziale

Marco Gherlone

Scrittura dei programmi

Inserimento dei dati per lanalisi:


dati sui materiali (E);
dati sulla geometria e sulla mesh (sezioni, coordinate dei nodi, connectivities);

dati sui vincoli (gradi di libert bloccati);


dati sui carichi (carichi concentrati nei nodi).

Strutture Aeronautiche
6 Scrittura e applicazione di un programma MATLAB per lanalisi FEM di travature reticolari piane

Politecnico di Torino
Dipartimento di Ingegneria Meccanica e Aerospaziale

Marco Gherlone

Scrittura dei programmi


Inserimento dei dati per lanalisi:
dati sui materiali (E)
Bisogna considerare la possibilit che la struttura sia realizzata in diversi materiali;
allora necessario inserire il numero di materiali (nmat) e i valori di E per ognuno di
essi (attraverso il vettore colonna, di dimensioni nmat x 1, {E}).

nmat=input(' scrivi il numero di materiali diversi presenti nella struttura: ');


for m=1:nmat
disp([' materiale n ',num2str(m),':']);
E(m,1)=input(' modulo elastico del materiale: ');
end

Strutture Aeronautiche
6 Scrittura e applicazione di un programma MATLAB per lanalisi FEM di travature reticolari piane

Politecnico di Torino
Dipartimento di Ingegneria Meccanica e Aerospaziale

Marco Gherlone

Scrittura dei programmi


Inserimento dei dati per lanalisi:
dati sui materiali (E)
Per linserimento di questi dati, cosi come per quelli discussi nelle slides successive,
possibile usare una modalit alternativa a quella del comando input; elencarli
tutti in un file .m che viene richiamato allinizio dellesecuzione del programma di
analisi ROD_FEM.m.

nmat=3;
E=[100 10 1];
...

Strutture Aeronautiche
6 Scrittura e applicazione di un programma MATLAB per lanalisi FEM di travature reticolari piane

Politecnico di Torino
Dipartimento di Ingegneria Meccanica e Aerospaziale

Marco Gherlone

Scrittura dei programmi


Inserimento dei dati per lanalisi:
dati sulla geometria e sulla mesh (sezioni)
Le varie aste possono avere sezioni trasversali con aree diverse; bisogna inserire il
numero di sezioni diverse (nsez) e larea di ognuna (vettore colonna nsez x 1
{A}).

nsez=input???
for s=1:nsez
disp???
???
end

Strutture Aeronautiche
6 Scrittura e applicazione di un programma MATLAB per lanalisi FEM di travature reticolari piane

Politecnico di Torino
Dipartimento di Ingegneria Meccanica e Aerospaziale

Marco Gherlone

Scrittura dei programmi


Inserimento dei dati per lanalisi:
dati sulla geometria e sulla mesh (coordinate dei nodi, connectivities)

E necessario a questo punto inserire la matrice [Pn] delle coordinate globali dei
nodi (nn x 2, cio il numero delle righe di [Pn] anche il numero dei nodi nn).
Inoltre va inserita la matrice [Cne] di connectivity dei nodi per elemento (ne x 2,
cio il numero delle righe di [Cne] anche il numero di elementi ne).
Infine dobbiamo indicare, per ogni elemento, qual la sua sezione trasversale e di
quale materiale fatto (la matrice [Cpe] ne x 2 contiene per ogni riga, cio per
ogni elemento, lindice della sua sezione trasversale e lindice del suo materiale).

Pn=input???
Cne=input???
Cpe=input???

Strutture Aeronautiche
6 Scrittura e applicazione di un programma MATLAB per lanalisi FEM di travature reticolari piane

Politecnico di Torino
Dipartimento di Ingegneria Meccanica e Aerospaziale

Marco Gherlone

Scrittura dei programmi


Inserimento dei dati per lanalisi:
dati sui vincoli (gradi di libert bloccati)
Bisogna indicare quali sono gli indici dei gradi di libert nulli per effetto dei vincoli
(contenuti nel vettore riga {ib}).
Vedere la slide 13 per la numerazione dei gradi di libert.

ib=input???

Strutture Aeronautiche
6 Scrittura e applicazione di un programma MATLAB per lanalisi FEM di travature reticolari piane 10

Politecnico di Torino
Dipartimento di Ingegneria Meccanica e Aerospaziale

Marco Gherlone

Scrittura dei programmi


Inserimento dei dati per lanalisi:
dati sui carichi (carichi concentrati nei nodi)

Trattandosi di una travatura reticolare, gli unici carichi esterni ammessi sono forze
concentrate nelle cerniere (che sono anche nodi degli elementi finiti).
Linformazione sui carichi pu, dunque, essere fornita indicando lintensit della
forza associata allindice del relativo grado di libert. In pratica va inserita la matrice
Fn, con due colonne: per ogni riga, in prima colonna c lindice del grado di libert
a cui associata la forza esterna, in seconda colonna lintensit della forza stessa.
Vedere la slide 13 per la numerazione dei gradi di libert.

Fn=input???

Strutture Aeronautiche
6 Scrittura e applicazione di un programma MATLAB per lanalisi FEM di travature reticolari piane 11

Politecnico di Torino
Dipartimento di Ingegneria Meccanica e Aerospaziale

Marco Gherlone

Scrittura dei programmi

Calcoli preliminari:
matrice di connectivity dei gradi di libert per elemento;
numero di nodi, di elementi e di gradi di libert;
lunghezza, cos() e sen() per ogni elemento.

Strutture Aeronautiche
6 Scrittura e applicazione di un programma MATLAB per lanalisi FEM di travature reticolari piane 12

Politecnico di Torino
Dipartimento di Ingegneria Meccanica e Aerospaziale

Marco Gherlone

Scrittura dei programmi


Calcoli preliminari:
matrice di connectivity dei gradi di libert per elemento

Per effettuare in maniera rapida lassemblaggio, bisogna passare dalla matrice di


connectivity dei nodi per elemento [Cne] (ne x 2, per ogni riga gli indici del primo
e del secondo nodo dellelemento) a quella dei gradi di libert per elemento [Cse]
(ne x 4, per ogni riga gli indici dei 4 gradi di libert globali di quellelemento). Il
passaggio si pu fare in modo automatico, notando che, per esempio
8
qG10 3
5

qG16

Cne(3, :) [5 8]

qG15

qG9

Cse(3, :) [9 10 15 16]
Cse(3, :) [2 * 5 1 2 * 5 2 * 8 1 2 * 8]

for e=1:size(Cne,1)
Cse(e,:)=[2*Cne(e,1)-1 ???];
end
Strutture Aeronautiche
6 Scrittura e applicazione di un programma MATLAB per lanalisi FEM di travature reticolari piane 13

Politecnico di Torino
Dipartimento di Ingegneria Meccanica e Aerospaziale

Marco Gherlone

Scrittura dei programmi


Calcoli preliminari:
numero di nodi, di elementi e di gradi di libert

Il numero di nodi (nn) si trova facilmente ( il numero di righe di [Pn]).


Il numero di elementi (ne) altrettanto facile da calcolare (le righe di [Cne]).
Il numero di gradi di libert o incognite (ni) il massimo indice presente in [Cse].

nn=size(Pn,1);
ne=???
ni=max(max(Cse));

Strutture Aeronautiche
6 Scrittura e applicazione di un programma MATLAB per lanalisi FEM di travature reticolari piane 14

Politecnico di Torino
Dipartimento di Ingegneria Meccanica e Aerospaziale

Marco Gherlone

Scrittura dei programmi


Calcoli preliminari:
lunghezza, cos() e sen() per ogni elemento

La lunghezza e le funzioni trigonometriche dellangolo per ogni elemento si


ricavano sapendo due cose: (1) quali sono i due nodi di quellelemento ([Cne]) e
(2) quali sono le coordinate di quei due nodi ([Pn]). Per esempio
(3)

L =

8
2

3
(3)

G(3)
2L

-x

G(3)
1L

+y
2

x -x + y
x
-x
cos =
L
(3)

L =

(3)

-y

G(3)

G(3)
1L

2L

(3)

G(3)
2L

G
5

-y

G(3)
1L

... sin (3)

yG(3) 2L -yG(3)1L
=
...
(3)
L

for e=1:ne
L(e,1)=sqrt((Pn(Cne(e,2),1)-Pn(Cne(e,1),1))^2+???);
ca(e,1)=(???)/L(e);
sa(e,1)=(???)/L(e);
end
Strutture Aeronautiche
6 Scrittura e applicazione di un programma MATLAB per lanalisi FEM di travature reticolari piane 15

Politecnico di Torino
Dipartimento di Ingegneria Meccanica e Aerospaziale

Marco Gherlone

Scrittura dei programmi

Calcolo della matrice [KG] e del vettore {FG} per lintera struttura:
calcolo, per ogni elemento, di [KG(e)];
assemblaggio per ottenere [KG];

calcolo diretto di {FG};


calcolo delle matrici e dei vettori ridotti.

Strutture Aeronautiche
6 Scrittura e applicazione di un programma MATLAB per lanalisi FEM di travature reticolari piane 16

Politecnico di Torino
Dipartimento di Ingegneria Meccanica e Aerospaziale

Marco Gherlone

Scrittura dei programmi

Calcolo della matrice [KG] e del vettore {FG} per lintera struttura:
calcolo, per ogni elemento, di [KG(e)]
La matrice di rigidezza (globale) di ciascun elemento finito si pu calcolare in una
apposita function (da scrivere a parte). I dati di input che servono sono:
[Ke]=nomefunction(lunghezza,cos(),sin(),area,modulo di Young)
Nella function bisogna prima calcolare la matrice nel sistema locale dellelemento,
poi determinare la matrice [] di rotazione e, quindi, la matrice nel sistema globale.

for e=1:ne
Ke=nomefunction_1(L(e),ca(e),sa(e),A(Cpe(e,1)),E(Cpe(e,2)));
*vedere slide successiva*
end

Strutture Aeronautiche
6 Scrittura e applicazione di un programma MATLAB per lanalisi FEM di travature reticolari piane 17

Politecnico di Torino
Dipartimento di Ingegneria Meccanica e Aerospaziale

Marco Gherlone

Scrittura dei programmi


Calcolo della matrice [KG] e del vettore {FG} per lintera struttura:
assemblaggio per ottenere [KG]

Ora che per lelemento e abbiamo la matrice [Ke] nel sistema globale, dobbiamo
assemblarla a quelle degli altri elementi per ottenere [K], matrice globale dellintera
struttura. Per fare questo bisogna avere inizializzato [K] a matrice nulla prima del
ciclo sugli elementi e poi effettuare, elemento per elemento, lassemblaggio vero e
proprio. Si noti che lassemblaggio si risolve in MATLAB in un semplice gioco di
indici di righe e colonne!

K=zeros(ni);
for e=1:ne
*vedere slide precedente*
I=Cse(e,:);
K(I,I)=K(I,I)+Ke;
end

Strutture Aeronautiche
6 Scrittura e applicazione di un programma MATLAB per lanalisi FEM di travature reticolari piane 18

Politecnico di Torino
Dipartimento di Ingegneria Meccanica e Aerospaziale

Marco Gherlone

Scrittura dei programmi


Calcolo della matrice [KG] e del vettore {FG} per lintera struttura:
calcolo diretto di {FG}

Il vettore delle forze nel sistema globale {F} si pu calcolare al di fuori del ciclo
sugli elementi. Si parte dalla matrice di carichi [Fn] che ha, in ogni riga, lindice
del grado si libert e lintensit del relativo carico esterno.

???

Strutture Aeronautiche
6 Scrittura e applicazione di un programma MATLAB per lanalisi FEM di travature reticolari piane 19

Politecnico di Torino
Dipartimento di Ingegneria Meccanica e Aerospaziale

Marco Gherlone

Scrittura dei programmi


Calcolo della matrice [KG] e del vettore {FG} per lintera struttura:
calcolo delle matrici e dei vettori ridotti

Per fare il calcolo statico ci servono le sottomatrici di [K] ed {F}. In primo luogo
bisogna creare il vettore dei gradi di libert non vincolati {il} noti tutti i gradi di
libert [1:1:ni]T e quelli vincolati {ib} (si noti che {il} contiene i gradi di
libert non contenuti in {ib}). Poi bisogna calcolare i vari blocchi con dimensioni e
indici pari a quelli indicati da {il} e {ib}.
ib=sort(ib);
il=???
Kff=K(il,il);
Kfv=K(il,ib);
Kvf=K(ib,il);
Kvv=K(ib,ib);
Fef=???
Fev=???
...

Strutture Aeronautiche
6 Scrittura e applicazione di un programma MATLAB per lanalisi FEM di travature reticolari piane 20

Politecnico di Torino
Dipartimento di Ingegneria Meccanica e Aerospaziale

Marco Gherlone

Scrittura dei programmi

Risoluzione:
calcolo statico (spostamenti nodali e reazioni vincolari).

Strutture Aeronautiche
6 Scrittura e applicazione di un programma MATLAB per lanalisi FEM di travature reticolari piane 21

Politecnico di Torino
Dipartimento di Ingegneria Meccanica e Aerospaziale

Marco Gherlone

Scrittura dei programmi


Risoluzione:
calcolo statico (spostamenti nodali e reazioni vincolari)

Il calcolo statico consiste nelluso delle sottomatrici di [K] ed {F} per calcolare i
gradi di libert non vincolati {Qf} e le reazioni vincolari {Rv}. Si tratta poi di
ricostruire il vettore completo dei gradi di libert {Q} e quello completo delle
reazioni vincolari {Cv} (si noti che in questo caso {Fev}={0}).

Qf=Kff\Fef;
Rv=Kvf*Qf-Fev;
Q(il,:)=Qf;
Q(ib,:)=zeros(length(ib),1);

Cv(il,:)=zeros(length(il),1);
Cv(ib,:)=Rv;

Strutture Aeronautiche
6 Scrittura e applicazione di un programma MATLAB per lanalisi FEM di travature reticolari piane 22

Politecnico di Torino
Dipartimento di Ingegneria Meccanica e Aerospaziale

Marco Gherlone

Scrittura dei programmi

Salvataggio dei risultati:


salvataggio dei risultati statici.

Strutture Aeronautiche
6 Scrittura e applicazione di un programma MATLAB per lanalisi FEM di travature reticolari piane 23

Politecnico di Torino
Dipartimento di Ingegneria Meccanica e Aerospaziale

Marco Gherlone

Scrittura dei programmi


Salvataggio dei risultati:
salvataggio dei risultati statici

Prima di tutto bisogna inserire il nome del file nel quale si vogliono salvare i dati.
Poi bisogna salvare tutte le informazioni necessarie al post-processing statico.

nomesave=input([' scrivi il nome (tra apici) del file nel quale salvare i risultati: ']);
str=['save ',nomesave,' A E Pn Cne Cpe Cse ib Fn nn ne ni L ca sa K F Q Cv;'];
eval(str);

Strutture Aeronautiche
6 Scrittura e applicazione di un programma MATLAB per lanalisi FEM di travature reticolari piane 24

Politecnico di Torino
Dipartimento di Ingegneria Meccanica e Aerospaziale

Marco Gherlone

Scrittura dei programmi

Elaborazione dei risultati (statici):


richiamo dei risultati;
assegnazione dei gradi di libert ai vari elementi;

realizzazione del grafico della deformata statica;


calcolo della deformazione, della tensione e dello sforzo normale in ogni elemento.

Strutture Aeronautiche
6 Scrittura e applicazione di un programma MATLAB per lanalisi FEM di travature reticolari piane 25

Politecnico di Torino
Dipartimento di Ingegneria Meccanica e Aerospaziale

Marco Gherlone

Scrittura dei programmi


Elaborazione dei risultati (statici):
richiamo dei risultati

Inserendo il nome del file nel quale sono stati salvati i dati di una precedente analisi,
possibile aprirlo e richiamare i risultati.

nomefile=input([' scrivi il nome (tra apici) del file di risultati da usare: ']);
str=['load ',nomefile,';'];
???

Strutture Aeronautiche
6 Scrittura e applicazione di un programma MATLAB per lanalisi FEM di travature reticolari piane 26

Politecnico di Torino
Dipartimento di Ingegneria Meccanica e Aerospaziale

Marco Gherlone

Scrittura dei programmi


Elaborazione dei risultati (statici):
assegnazione dei gradi di libert ai vari elementi

Per meglio operare nel seguito, opportuno creare una matrice [q] (4 x ne) che ha
nella colonna e i valori dei 4 gradi di libert (globali) dellelemento e. Lordine
in cui tali 4 gradi di libert sono scritti in ogni colonna deve essere quello contenuto
nella matrice di connectivity [Cse].
Attenzione! [q] contiene i valori dei gradi di libert globali mentre [Cse]
contiene gli indici degli stessi gradi di libert. Evidentemente sono collegati tra loro
ma non sono la stessa cosa.

for e=1:ne
q(:,e)=???;
end

Strutture Aeronautiche
6 Scrittura e applicazione di un programma MATLAB per lanalisi FEM di travature reticolari piane 27

Politecnico di Torino
Dipartimento di Ingegneria Meccanica e Aerospaziale

Marco Gherlone

Scrittura dei programmi


Elaborazione dei risultati (statici):
realizzazione del grafico della deformata statica

Il grafico va fatto elemento per elemento (si tratter quindi di un ciclo su tutti gli
elementi dopo un hold on iniziale che serve ad accumulare i vari contributi). Il
comando axis equal serve a far si che venga usata la stessa scala secondo i due
assi. Per ogni elemento bisogna semplicemente individuare la posizione dei due nodi
dopo la deformazione; tale posizione data da quella iniziale ([Pn]) pi gli
spostamenti nodali ([q]).

figure(1);
hold on;
axis equal;
grid on;
for e=1:ne
plot([Pn(Cne(e,1),1)+q(1,e) Pn(Cne(e,2),1)+q(3,e)],???);
end

Strutture Aeronautiche
6 Scrittura e applicazione di un programma MATLAB per lanalisi FEM di travature reticolari piane 28

Politecnico di Torino
Dipartimento di Ingegneria Meccanica e Aerospaziale

Marco Gherlone

Scrittura dei programmi


Elaborazione dei risultati (statici):
calcolo della deformazione, della tensione e dello sforzo normale in ogni elemento

Si pu creare la matrice [D] (ne x 4) contenente, in ogni riga, il numero


dellelemento, la deformazione, la tensione e lo sforzo normale in quellelemento.
Per il calcolo della deformazione si ricordino le espressioni

(e)

q L(e)1
1
(e) 1 1 L(e)
L
q 2

1
= (e) -1 1 (e) q G(e)
L
(e)

Per il calcolo della tensione e dello sforzo normale, bisogna utilizzare i valori di A e
di E relativi allelemento in questione.
D=zeros(ne,4);
D(:,1)=[1:1:ne]';
for e=1:ne
Lambdae=???;
D(e,2)=(1/L(e))*[-1 1]*Lambdae*q(:,e);
D(e,3)=???;
D(e,4)=???;
end
Strutture Aeronautiche
6 Scrittura e applicazione di un programma MATLAB per lanalisi FEM di travature reticolari piane 29

Politecnico di Torino
Dipartimento di Ingegneria Meccanica e Aerospaziale

Marco Gherlone

Applicazione
* Unit di misura nel S.I.

3e6

1
b1

b1

b1

b1

b1

b1
b3

a2

1e6

a2
b1

b1
b3

b1

a2

a2

2e6

b3

b3

1.5
1.5
1.5
1.5
Sezioni* (circolari cave di raggio R e spessore s):
a. R=5e-2, s=5e-3;
A 2Rs
b. R=3e-2, s=5e-3.
Materiali*:
1. Acciaio (E=210e9, =0.3, =7.96e3);
2. Titanio (E=105e9, =0.3, =4.50e3);
3. Alluminio (E=73e9, =0.3, =2.70e3).

a2

b1

b3

b3

1.5

1.5

Si determinino:
spostamenti dei nodi;
reazioni vincolari;
deformazioni delle aste;
tensioni nelle aste;
sforzi normali nelle aste.

Strutture Aeronautiche
6 Scrittura e applicazione di un programma MATLAB per lanalisi FEM di travature reticolari piane 30