Sei sulla pagina 1di 9

Studente: Francesca Roberto

Corso di STRUTTURE AERONAUTICHE


Professori: Marco Di Sciuva, Marco Gherlone

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



1
Esercitazione 6
Scrittura e applicazione di un programma MATLAB per lanalisi FEM di
travature reticolari piane
1. SCOPO DELLESERCITAZIONE
Lesercitazione consiste nellanalisi statica di una travatura reticolare piana con il metodo degli
elementi finiti e 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.
In particolare viene richiesto di calcolare con lanalisi a elementi finiti i seguenti valori:
spostamenti dei nodi;
reazioni vincolari;
deformazioni delle aste;
tensioni nelle aste;
sforzi normali nelle aste.
Nel seguito si illustrano i risultati ottenuti con il codice MATLAB.
2. APPLICAZIONE DEL PROGRAMMA
La struttura assegnata caratterizzata da una particolare travatura reticolare le cui aste
vengono modellizzate con lelemento unidimensionale ROD. Si noti la presenza di soli carichi
concentrati applicati ai nodi.


2
La struttura composta da 12 nodi collegati tra loro da 21 elementi Asta.
In ingresso bisogna fornire al programma le caratteristiche dei materiali, tra cui il modulo
elastico, necessari a calcolare le matrici di rigidezza dei singoli elementi.
Inoltre lutente deve scegliere la numerazione dei nodi della struttura e degli elementi per poter:
assegnare la geometria attraverso la matrice delle coordinate globali dei nodi;
individuare la relazione tra numerazione locale dei nodi e numerazione globale,
costruendo la matrice di connectivity.
In figura viene evidenziata la numerazione utilizzata per lapplicazione, nel seguito sono
riportate le relative matrici da inserire nel codice.



Matrice delle coordinate
globali
Matrice di connectivity
N. Nodo X [m] Y [m]
N.
Elemento
Nodo
1
Nodo
2
N.
Elemento
Nodo
1
Nodo
2
1 0 0 1 1 2 12 6 8
2 1,5 1 2 1 3 13 6 9
3 1,5 0 3 2 3 14 7 9
4 3 0 4 3 4 15 8 10
5 3 2 5 2 4 16 8 9
6 4,5 3 6 2 5 17 9 10
7 4,5 0 7 4 5 18 9 11
8 6 2 8 5 6 19 10 11
9 6 0 9 4 6 20 10 12
10 7,5 1 10 6 7 21 11 12
11 7,5 0 11 4 7
12 9 0

Coerentemente con questa numerazione si definiscono i gradi di libert (due per ogni nodo)
vincolati ed il vettore dei carichi esterni applicati ai nodi della struttura.

3
3. RISULTATI
Il codice di post-processing produce in output un grafico della deformata statica della
travatura (in blu):

Le reazioni vincolari calcolate dal codice sono:
Reazioni vincolari [N]
R1 4166667
R2 2333333
R23 -4166667
R24 3666667

Inoltre il programma fornisce in uscita anche la matrice [D] (ne x 4) contenente, in ogni riga, il
numero dellelemento, la deformazione, la tensione e lo sforzo normale in quellelemento. I
valori numerici sono riportati in tabella:
Deformazioni e sollecitazioni negli elementi
Elemento Deformazioni [%] Sforzi [N/mm
2
] Tensioni [N]
1 -2,125 -4,463E+03 -4,206E+06
2 -9,690E-01 -7,074E+02 -6,667E+05
3 -2,776E-15 -2,914E-12 -4,578E-09
4 -9,690E-01 -7,074E+02 -6,667E+05
5 3,123E-15 6,557E-12 6,180E-09

4
Deformazioni e sollecitazioni negli elementi
Elemento Deformazioni [%] Sforzi [N/mm
2
] Tensioni [N]
6 -2,125 -4,463E+03 -4,206E+06
7 -1,388E-15 -1,457E-12 -2,289E-09
8 -2,125 -4,463E+03 -4,206E+06
9 2,776E-15 5,829E-12 5,493E-09
10 1,388E-15 1,457E-12 2,289E-09
11 -9,690E-01 -7,074E+02 -6,667E+05
12 -2,884 -6,057E+03 -5,709E+06
13 1,412 2,966E+03 2,795E+06
14 -9,690E-01 -7,074E+02 -6,667E+05
15 -2,884E+00 -6,057E+03 -5,709E+06
16 -1,213 -1,273E+03 -2,000E+06
17 -4,554E-01 -9,564E+02 -9,014E+05
18 1,938 1,415E+03 1,333E+06
19 0 0 0
20 -3,340 -7,014E+03 -6,610E+06
21 1,938 1,415E+03 1,333E+06


CODICE MATLAB
Pre-processing & Processing
clear all
close all

% Svolge in successione pre-processing e processing, salvando poi i
risultati
% statici in un file
% 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);

%% Inserimento dei dati per lanalisi

applicazione

%% Calcoli preliminari:

nn=size(Pn,1); % numero di nodi
ne=size(Cne,1); % numero di elementi
L=zeros(ne,1); % vettore della lunghezza degli elementi
ca=zeros(ne,1); % vettore cos(alpha)
sa=zeros(ne,1); % vettore sen(alpha)
for i=1:ne

5

% matrice di connectivity dei gradi di libert per elemento
Cse(i,:)=[2*Cne(i,1)-1 2*Cne(i,1) 2*Cne(i,2)-1 2*Cne(i,2)];

% lunghezza, cos(alpha) e sen(alpha) per ogni elemento
deltax=(Pn(Cne(i,2),1)-Pn(Cne(i,1),1));
deltay=(Pn(Cne(i,2),2)-Pn(Cne(i,1),2));
L(i,1)=sqrt(deltax^2+deltay^2);
ca(i,1)=deltax/L(i);
sa(i,1)=deltay/L(i);
end
ni=max(max(Cse)); % numero di gdl o incognite

%% Calcolo della matrice [KG] e del vettore {FG} per lintera struttura:
% calcolo, per ogni elemento, di [KG(e)]
K=zeros(ni); % matrice globale dell'intera struttura
for i=1:ne
Ke=stiff_mat(L(i),ca(i),sa(i),A(Cpe(i,1)),E(Cpe(i,2))); % matrice di
rigidezza dell'elemento nel sistema globale
I=Cse(i,:);
K(I,I)=K(I,I)+Ke;
end

% calcolo diretto di {F}
F=zeros(2*nn,1);
for j=1:size(Fn,1)
F(Fn(j,1),1)=Fn(j,2);
end

% calcolo delle matrici e dei vettori ridotti
ib=sort(ib);
il=zeros(2*nn-size(ib,1),1); % vettore dei gradi di libert non
vincolati
k=1; % indice vettore il
presente=0; % segnale per vedere se il grado di libert j vincolato
(presente=1) oppure no (presente=0)
for j=1:size(F,1)
for i=1:size(ib,1)
if j==ib(i,1)
presente=1;
end
end
if presente~=1
il(k,1)=j;
k=k+1;
end
presente=0;
end
% sottomatrici di rigidezza
Kff=K(il,il);
Kfv=K(il,ib);
Kvf=K(ib,il);
Kvv=K(ib,ib);
% sottovettori dei carichi nodali equivalenti
Fef=F(il,1);
Fev=F(ib,1);

% calcolo statico (spostamenti nodali e reazioni vincolari)
Qf=Kff\Fef; % gdl non vincolati
Rv=Kvf*Qf-Fev; % reazioni vincolari

6

Q(il,:)=Qf; % sottovettore del vettore dei gdl nodali dell'intera
struttura
Q(ib,:)=zeros(length(ib),1); % gdl vincolati

Cv(il,:)=zeros(length(il),1); % sottovettore del vettore completo delle
reazioni vincolari dell'intera struttura ... sottovettore delle reazioni
vincolari (nulle) presenti nei gdl non vincolati
Cv(ib,:)=Rv;

%% Salvataggio dei risultati statici
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);

Post-processing
clear all
close all

% 3. post-processing: a partire dai risultati precedenti, si calcolano
% dei risultati secondari (le deformazioni e le tensioni in ogni
elemento)

%% Elaborazione dei risultati (statici):
% richiamo dei risultati

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

% assegnazione dei gradi di libert ai vari elementi
% matrice [q] (4 x ne) che ha nella colonna e i valori dei 4 gradi di
% libert (globali) dellelemento e
q=zeros(4,ne);

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

% realizzazione del grafico della deformata statica
figure(1);
hold on;
axis equal;
grid on;
for e=1:ne
plot([Pn(Cne(e,1),1) Pn(Cne(e,2),1)],[Pn(Cne(e,1),2)
Pn(Cne(e,2),2)],'r'); % struttura
plot([Pn(Cne(e,1),1)+q(1,e)
Pn(Cne(e,2),1)+q(3,e)],[Pn(Cne(e,1),2)+q(2,e) Pn(Cne(e,2),2)+q(4,e)]); %
deformata

end

legend('Struttura','Deformata')


7
% calcolo di deformazione, tensione e sforzo normale in ogni elemento
% matrice[D] (ne x 4) contenente, in ogni riga, il numero dellelemento,
% la deformazione, la tensione e lo sforzo normale in quellelemento.
D=zeros(ne,4);
D(:,1)=[1:1:ne]';
for e=1:ne
Lambdae=[ca(e,1) sa(e,1) 0 0; 0 0 ca(e,1) sa(e,1)];
D(e,2)=(1/L(e))*[-1 1]*Lambdae*q(:,e);
D(e,3)=E(Cpe(e,2))*D(e,2);
D(e,4)=A(Cpe(e,1))*D(e,3);
end

%% Salvataggio dei risultati secondari
nomesave=input([' scrivi il nome (tra apici) del file nel quale salvare
i risultati di post processing: ']);
str=['save ',nomesave,' q D'];
eval(str);

nomefig=input([' scrivi il nome tra apici del file nel quale salvare la
deformata statica: ']);
print('-dpdf',nomefig)

Dati in input
E=[210e9;105e9;73e9]; % vettore dei moduli elastici dei diversi
materiali
A=2*pi*(5e-3)*[5e-2;3e-2]; % vettore della aree delle diverse sezioni

nmat=size(E,1);
nsez=size(A,1);

% matrice delle coordinate globale dei nodi
Pn=[0,0;
1.5 1;
1.5 0;
3 0;
3 2;
4.5 3;
4.5 0;
6 2;
6 0;
7.5 1;
7.5 0;
9 0];
% matrice di connectivity dei nodi per elemento
Cne=[1,2;
1 3;
2 3;
3 4;
2 4;
2 5;
4 5;
5 6;
4 6;
6 7;
4 7;
6 8;
6 9;
7 9;

8
8 10;
8 9;
9 10;
9 11;
10 11;
10 12;
11 12];
% matrice delle propriet dell''elemento [nsezione
trasversale,nmateriale]
Cpe=[2 1;
2 3;
1 2;
2 3;
2 1;
2 1;
1 2;
2 1;
2 1;
1 2;
2 3;
2 1;
2 1;
2 3;
2 1;
1 2;
2 1;
2 3;
1 2;
2 1;
2 3];

ib=[1 2 23 24]'; % gradi di libert bloccati
Fn=[12,-3e6;16,-2e6;20,-1e6]; % carichi concentrati nei nodi

Funzione per la matrice di rigidezza globale degli elementi
function [ Ke ] = stiff_mat(L,ca,sa,A,E)
% Calcola la matrice di rigidezza (globale) di ciascun elemento finito.
% Bisogna prima calcolare la matrice nel sistema locale dellelemento,
% poi determinare la matrice di rotazione [R] e, quindi, la matrice nel
sistema
% globale.

Ke_loc=(E*A/L)*[1 -1;-1 1];
R=[ca sa 0 0; 0 0 ca sa];
Ke=R'*Ke_loc*R;

end

Potrebbero piacerti anche