Sei sulla pagina 1di 16

UNIVERSITÀ DEGLI STUDI DI PALERMO

INGEGNERIA DEI SISTEMI EDILIZI


CORSO DI STRUCTURAL MODELING

ESERCITAZIONE N.2
RISOLUZIONE DI UN TELAIO PIANO TRAMITE
ELEMENTI FINITI TRUSS, CONFRONTO TRA MATLAB
E CALFEM
ANALISI MODALE CON CALFEM

ELABORATO DI : Di Nardo Leonardo Adam

PROF: GIUSEPPE GIAMBANCO

ING: MARIANNA PUCCIA


ANNO ACCADEMICO 2021/2022

Sommario
1. TESTO DELL’ESERCITAZIONE ....................................................................................................... 3
2. RISOLUZIONE STRUTTURA IN MATLAB ..................................................................................... 4
3. RISOLUZIONE STRUTTURA IN CALFEM ...................................................................................... 8
4. ANALISI MODALE CON CALFEM ................................................................................................. 12
1. TESTO DELL’ESERCITAZIONE
2. RISOLUZIONE STRUTTURA IN MATLAB

Per l’analisi del telaio piano con elementi truss tramite MATLAB si è proceduto come di seguito.

Definendo i sistema di riferimento locali e globale, numerando i singoli elementi truss, si è identificata la
Matrice Topologica (Edof) in cui si individuano i gradi di libertà della struttura

In seguito si sono definiti:

• Dati in ingresso come modulo elastico e dimensioni geometriche dell’elemento;


• I momenti d’inerzia e le corrispettive aree delle sezioni trasversali;
• Gli elementi caricati;
• Le coordinate dei nodi;
• La lunghezza degli elementi tramite l’utilizzo di un ciclo for.

Dopo di che inizia la vera fase di calcolo e dell’automatizzazione del codice.


Infatti tramite cicli for si è calcolato:

• La matrice di rigidezza locale (Local Stiffness Matrix = K) tramite la funzione


function [K] = localstiffnessmatrix(E,A,I,L)
%Fornisce la matrice di rigidezza di ciascun elemento espressa nel sistema di
riferimento locale
K=[E*A/L,0,0,-E*A/L,0,0;
0,(12*E*I)/(L^3),(-6*E*I)/(L^2),0,(-12*E*I)/(L^3),(-6*E*I)/(L^2);
0,(-6*E*I)/(L^2),(4*E*I)/L,0,(6*E*I)/(L^2),(2*E*I)/L;
-E*A/L,0,0,E*A/L,0,0;
0,(-12*E*I)/(L^3),(6*E*I)/(L^2),0,(12*E*I)/(L^3),(6*E*I)/(L^2);
0,(-6*E*I)/(L^2),(2*E*I)/L,0,(6*E*I)/(L^2),(4*E*I)/L];
end

• E si ruota dal sistema locale al sistema globale tramite la funzione


function [R] = ltogrotationmatrix(alpha)
%Fornisce la matrice di rotazione per ogni elemento dal sistema di
%riferimento locale a quello globale
R = [cosd(alpha),sind(alpha),0,0,0,0;
-sind(alpha),cosd(alpha),0,0,0,0;
0,0,1,0,0,0;
0,0,0,cosd(alpha),sind(alpha),0;
0,0,0,-sind(alpha),cosd(alpha),0;
0,0,0,0,0,1];
end

• Si costruisce cosi la matrice di rigidezza globale (Global Stiffness Matrix = Kglob)


• Si passa dunque alla fase di assemblaggio dalla matrice globale i-esima alla matrice totale
assemblata (Ktot)
• Si definiscono i vettori di carico tramite la seguente funzione nel ciclo for
function [lv] = loadvector(eq,R,L)
%Fornisce il vettore dei carichi nel sistema di riferimento globale
lv_aux = [eq(1)*L/2;
eq(2)*L/2;
-eq(2)*(L*L)/12;
eq(1)*L/2;
eq(2)*L/2;
eq(2)*(L*L)/12];
lv = R'*lv_aux;
end
• E si assembla il vettore di carico i-esimo nel vettore di carico totale (Ftot)
• Si è passato in seguito alla risoluzione del sistema di equilibrio definendo le condizioni al contorno
dei nodi e al processo di condensazione statica cosi da calcolare le reazioni vincolari (Reaz)
• Verifiche di equilibrio

Il codice di calcolo è il seguente:


clc

clear all

%--topology matrix--%
Edof=[1,1,2,3,19,20,21;
2,4,5,6,22,23,24;
3,7,8,9,25,26,27;
4,10,11,12,13,14,15;
5,16,17,18,13,14,15;
6,4,5,6,16,17,18;
7,1,2,3,4,5,6;
8,4,5,6,7,8,9;
9,7,8,9,10,11,12];
dof=27;

%--Input Data--%
E=210000; %kN/cm^2
H=400; %cm
B=500; %cm

%---travi=IPE200, pilastri=HEA240---%
A(1)=76.84; %cm^2
I(1)=7763; %cm^4
A(2)=76.84; %cm^2
I(2)=7763; %cm^4
A(3)=76.84; %cm^2
I(3)=7763; %cm^4
A(4)=76.84; %cm^2
I(4)=7763; %cm^4
A(5)=28.48; %cm^2
I(5)=1943; %cm^4
A(6)=76.84; %cm^2
I(6)=7763; %cm^4
A(7)=28.48; %cm^2
I(7)=1943; %cm^4
A(8)=28.48; %cm^2
I(8)=1943; %cm^4
A(9)=28.48; %cm^2
I(9)=1943; %cm^4

%--Load element kN/cm--%


q1=0.16; %KN/cm
q2=0.11; %KN/cm
eq(1,:)=[0,0];
eq(2,:)=[0,0];
eq(3,:)=[0,0];
eq(4,:)=[0,0];
eq(5,:)=[0,q2];
eq(6,:)=[0,0];
eq(7,:)=[0,q1];
eq(8,:)=[0,q1];
eq(9,:)=[0,q1];

%--Nodal coordinates x--%


ex(1,:)=[0,0];
ex(2,:)=[B,B];
ex(3,:)=[2*B,2*B];
ex(4,:)=[(5*B)/2,(5*B)/2];
ex(5,:)=[B,(5*B)/2];
ex(6,:)=[B,B];
ex(7,:)=[0,B];
ex(8,:)=[B,2*B];
ex(9,:)=[(2*B),(5*B)/2];

%--Nodal coordinates y--%


ey(1,:)=[H,0];
ey(2,:)=[H,0];
ey(3,:)=[H,0];
ey(4,:)=[H,2*H];
ey(5,:)=[2*H,2*H];
ey(6,:)=[H,2*H];
ey(7,:)=[H,H];
ey(8,:)=[H,H];
ey(9,:)=[H,H];

%--Elements length--%
for i=1:9
b(i,:)=[ex(i,2)-ex(i,1),ey(i,2)-ey(i,1)];
L(i,:)=sqrt((b(i,:))*b(i,:)');
end

%--Local stiffness matrix--%


for i=1:9
K(:,:,i)=localstiffnessmatrix(E,A(i),I(i),L(i,:));
end

%--Rotation matrix and global stiffness matrix for each element (orario negativo-
antiorario positivo)--%
alpha=[90,90,90,-90,0,-90,0,0,0];
for i=1:9
R(:,:,i)=ltogrotationmatrix(alpha(i));
end

%--Global stiffness matrix--%


for i=1:9
Kglob(:,:,i)=((R(:,:,i))'*K(:,:,i)*R(:,:,i));
end;

%--Assembling Ki(globale) into K_tot--%


Ktot=zeros(dof);
[nie,n]=size(Edof)

for i=1:9
t(i,:)=Edof(i,2:n)
end;

for i=1:9
Ktot(t(i,:),t(i,:))=Ktot(t(i,:),t(i,:))+Kglob(:,:,i)
end

%--Load vector--%
for i=1:9
lv(:,i)=loadvector(eq(i,:),R(:,:,i),L(i,:));
end

%--Assembling lvi into Ftot--%


Ftot=zeros(dof,1);

for i=1:9
Ftot(t(i,:),1)=Ftot(t(i,:),1)+lv(:,i);
end

%-- Equilibrium resolution and static condensation process --%

U=zeros(dof,1);
Reaz=zeros(dof,1);
bc=[19,0;
20,0;
21,0;
22,0;
23,0;
24,0;
25,0;
26,0;
27,0;] %boundery conditions

fdof=[1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18]

cdof=bc(:,1) %constrained dof

cd=bc(:,2) %constrained displacements

Uf=inv(Ktot(fdof,fdof))*Ftot(fdof,1);
U(fdof)=Uf;
U(cdof)=cd

Reaz=(Ktot*U)-Ftot %Kn

%--verify equilibrium--%
SumX=Reaz(19)+Reaz(22)+Reaz(25)
SumY=Reaz(20)+Reaz(23)+Reaz(26)+(q1*(5/2)*B)+(q2*(3/2)*B)
%---rot con polo nell'asta 1 nodo(19-20-21) ---%
Rot=((Reaz(23)*B)+(Reaz(26)*2*B))+((Reaz(21))+(Reaz(24))+(Reaz(27))+(q1*(5/2)*B*(5/4)*B
)+(q2*(3/2)*B*(3/4)*B))

3. RISOLUZIONE STRUTTURA IN CALFEM

Analogamente per quanto fatto su MATLAB in CALFEM si procede allo stesso modo a differenza del
vantaggio di CALFEM che presenta già delle funzioni pre-impostate per il calcolo.

Il codice di calcolo è il seguente:


clc
clear all

%----- Topology -------------------------------------------------


Edof=[1,1,2,3,19,20,21;
2,4,5,6,22,23,24;
3,7,8,9,25,26,27;
4,10,11,12,13,14,15;
5,13,14,15,16,17,18;
6,4,5,6,16,17,18;
7,1,2,3,4,5,6;
8,4,5,6,7,8,9;
9,7,8,9,10,11,12];

%----- Stiffness matrix K and load vector f ---------------------


dof=27;
K=zeros(27,27); f=zeros(27,1);

%----- Element stiffness and element load matrices -------------


E=21000; %kN/cm^2
H=400; %cm
B=500;
A(1)=76.84; %cm^2
I(1)=7763; %cm^4
A(2)=76.84; %cm^2
I(2)=7763; %cm^4
A(3)=76.84; %cm^2
I(3)=7763; %cm^4
A(4)=76.84; %cm^2
I(4)=7763; %cm^4
A(5)=28.48; %cm^2
I(5)=1943; %cm^4
A(6)=76.84; %cm^2
I(6)=7763; %cm^4
A(7)=28.48; %cm^2
I(7)=1943; %cm^4
A(8)=28.48; %cm^2
I(8)=1943; %cm^4
A(9)=28.48; %cm^2
I(9)=1943; %cm^4
for i=1:9
ep(i,:)=[E A(i) I(i)];
end

%--Load element--%
q1=-0.16; %KN/cm
q2=0.11; %KN/cm
eq(1,:)=[0,0];
eq(2,:)=[0,0];
eq(3,:)=[0,0];
eq(4,:)=[0,0];
eq(5,:)=[0,q2];
eq(6,:)=[0,0];
eq(7,:)=[0,q1];
eq(8,:)=[0,q1];
eq(9,:)=[0,q1];

%--Nodal coordinates x--%


ex(1,:)=[0,0];
ex(2,:)=[B,B];
ex(3,:)=[2*B,2*B];
ex(4,:)=[(5*B)/2,(5*B)/2];
ex(5,:)=[(5*B)/2,B];
ex(6,:)=[B,B];
ex(7,:)=[0,B];
ex(8,:)=[B,2*B];
ex(9,:)=[(2*B),(5*B)/2];

%--Nodal coordinates y--%


ey(1,:)=[H,0];
ey(2,:)=[H,0];
ey(3,:)=[H,0];
ey(4,:)=[H,2*H];
ey(5,:)=[2*H,2*H];
ey(6,:)=[H,2*H];
ey(7,:)=[H,H];
ey(8,:)=[H,H];
ey(9,:)=[H,H];

%Local stiffness matrices


for i=1:9
[Ke(:,:,i),fe(:,i)]=beam2e(ex(i,:),ey(i,:),ep(i,:),eq(i,:));
end

%----- Assemble Ke into K ---------------------------------------


for i=1:9
[K,f]=assem(Edof(i,:),K,Ke(:,:,i),f,fe(:,i));
end

%----- Solve the system of equations and compute reactions ------


bc=[19 0; 20 0; 21 0; 22 0; 23 0; 24 0; 25 0; 26 0; 27 0];
[a,r]=solveq(K,f,bc);

%----- Section forces -------------------------------------------


Ed=extract(Edof,a);
for i=1:9
es(:,:,i)=beam2s(ex(i,:),ey(i,:),ep(i,:),Ed(i,:),eq(i,:),27);
end

%----- Draw deformed frame ---------------------------------------


figure(1)
plotpar=[2 1 0];
for i=1:9
eldraw2(ex(i,:),ey(i,:),plotpar);
end

sfac=scalfact2(ex(1,:),ey(1,:),Ed(1,:),0.02);
plotpar2=[1 2 1];
for i=1:9
eldisp2(ex(i,:),ey(i,:),Ed(i,:),plotpar2,sfac);
end

axis([-50 1500 -50 1000]);


pltscalb2(sfac,[5 100 0]); %cm
axis([-50 1500 -50 1000]);
title('displacements')

%----- Draw normal force diagram --------------------------------


figure(2)
plotpar=[2 1];
sfac=scalfact2(ex(1,:),ey(1,:),es(1,1,1),0.1);
for i=1:9
eldia2(ex(i,:),ey(i,:),es(:,1,i),plotpar,sfac);
end

axis([-100 1500 -50 1000]);


pltscalb2(sfac,[10 100 0]); %kN
title('normal force')

%----- Draw shear force diagram ---------------------------------


figure(3)
plotpar=[2 1];
% sfac=scalfact2(ex3,ey3,es3(:,2),10);
for i=1:9
eldia2(ex(i,:),ey(i,:),es(:,2,i),plotpar,sfac);
end

axis([-150 1500 -50 1000]);


pltscalb2(sfac,[10 100 0]); %kN
title('shear force')
%----- Draw moment diagram --------------------------------------
figure(4)
plotpar=[2 1];
sfac=scalfact2(ex(3,:),ey(3,:),es(1,3,3),0.2);
for i=1:9
eldia2(ex(i,:),ey(i,:),es(:,3,i),plotpar,sfac);
end

axis([-200 1500 -50 1000]);


pltscalb2(sfac,[10 100 0]); %kN*cm
title('moment')

4. ANALISI MODALE CON CALFEM

L’oggetto in esame è la struttura definita nel paragrafo 1-TESTO DELL’ESERCITAZIONE.

Per la risoluzione dell’analisi modale con CALFEM una volta definiti i dati dei materiali, la matrice topologica
(Edof), coordinate dei nodi e gradi di libertà di ogni nodo si è potuto estrarre i dati delle coordinate nodali
dalla matrice delle coordinate globali tramite la funzione di CALFEM ‘’coordxtr’’.
Inizializzando la matrice delle masse globale-totale M e delle rigidezze globale-totale K e calcolando tramite
‘’beam2d’’ la matrice delle rigidezze (k), delle masse (m) e di smorzamento (c) e con ‘’assem’’ (in cui
avviene sia assemblaggio sia rotazione da sistema locale a globale) si è proceduto all’assemblaggio
particolareggiando per travi e pilastri .

Dopo si è definita con ‘’eldraw2’’ la struttura indeformata.


Per la risoluzione del calcolo degli autovalori e autovettori, considerando la matrice delle rigidezze globale-
totale (K) assemblata, quella delle masse globale-totale (M) assemblata e le condizioni al contorno si è
potuto utilizzare la funzione ‘’eigen’’ dalla quale in uscita si è ottenuto un vettore di autovalori (L) e una
matrice di autovettori (Egv).

Dopo di che si è proceduto al plot del primo modo di vibrare della struttura come di seguito:

• Definizione della struttura indeformata con ‘’eldraw2’’;


• Estrarre gli spostamenti degli elementi dal vettore di spostamento globale secondo la matrice
topologica edof con ‘’extract’’;
• Definizione della struttura deformata tramite ‘’eldisp2’’;
• Si è calcolato il valore della frequenza tramite ‘’num2str’’ e associando la frequenza al plot tramite
‘’text’’.

Il codice di calcolo è il seguente:


clc
clear all

% Eigenvalue analysus for a frame structure

%----Material Data-----%
E=210000; rho=7800; %N/m^2 %kg/m^3
Ap=0.007684; Ip=0.00007763; %m^2 %pilastro
At=0.002848; It=0.00001943; %m^4 %trave

%----Topology----%
Edof=[1,1,2,3,19,20,21;
2,4,5,6,22,23,24;
3,7,8,9,25,26,27;
4,10,11,12,13,14,15;
5,13,14,15,16,17,18;
6,4,5,6,16,17,18;
7,1,2,3,4,5,6;
8,4,5,6,7,8,9;
9,7,8,9,10,11,12];

%----List of nodes coordinates----%


Coord=[0,0; 0,4; 5,0; 5,4; 10,0; 10,4; 12.5,4;12.5,8;5,8];

%----List of degrees of freedom for each node----%


Dof=[19,20,21; 1,2,3; 22,23,24; 4,5,6; 25,26,27; 7,8,9; 10,11,12; 13,14,15;
16,17,18];

%----Element matrices, assemble in the global one----%


K=zeros(27); M=zeros(27);
[Ex,Ey]=coordxtr(Edof,Coord,Dof,2);
epp=[E,Ap,Ip,rho*Ap];
ept=[E,At,It,rho*At];

%pilastri
for i=[1,2,3,4,6]
[k,m,c]=beam2d(Ex(i,:),Ey(i,:),epp);
K=assem(Edof(i,:),K,k);
M=assem(Edof(i,:),M,m);
end

%travi
for i=[5,7,8,9]
[k,m,c]=beam2d(Ex(i,:),Ey(i,:),ept);
K=assem(Edof(i,:),K,k);
M=assem(Edof(i,:),M,m);
end

%----Draw element mesh----%


figure(1),
eldraw2(Ex,Ey,[1,2,1],Edof);
grid; title('Frame structure');

%----Eigenvalue analysis----%
bc=[19,20,21,22,23,24,25,26,27]';
[L,Egv]=eigen(K,M,bc);
Freq=sqrt(L)/(2*pi);

%----plot the first eigenmode----%


figure(2), grid, title('The first eigenmode'),
eldraw2(Ex,Ey,[3,2,1]);
Edb=extract(Edof,Egv(:,1));
eldisp2(Ex,Ey,Edb,[1,4,2]);
Freqtext=num2str(Freq(1));
text(1,9,Freqtext);

%----plot three eigenmodes----%


figure(3), grid, title('The first three eigenmodes')
for i=1:3
Edb=extract(Edof,Egv(:,i));
Ext=Ex+(i-1)*15;
eldraw2(Ext,Ey,[3,2,1]);
eldisp2(Ext,Ey,Edb,[1,4,2],15);
Freqtext=num2str(Freq(i));
text(15*(i-1)+0.5,10,Freqtext);
end

%----plot eight eigenmodes----%


figure(4), grid, title('The first eight eigenmodes')
for i=1:4
Edb=extract(Edof,Egv(:,i));
Ext=Ex+(i-1)*15;
eldraw2(Ext,Ey,[3,2,1]);
eldisp2(Ext,Ey,Edb,[1,4,2],15);
Freqtext=num2str(Freq(i));
text(15*(i-1)+0.5,10,Freqtext);
end

Eyt=Ey-12;
for i=5:8
Edb=extract(Edof,Egv(:,i));
Ext=Ex+(i-5)*15;
eldraw2(Ext,Eyt,[3,2,1]);
eldisp2(Ext,Eyt,Edb,[1,4,2],15);
Freqtext=num2str(Freq(i));
text(15*(i-5)+0.5,-2,Freqtext);
end

Potrebbero piacerti anche