Appunti di
Laboratorio Numerico delle Strutture
Antonio Malasomma
Appunti disponibili sulla mia pagina di skuola.net, ti riporto di seguito qualche link:
https://www.skuola.net/universita/appunti/fondamenti-di-tecnica-delle-costruzioni
https://www.skuola.net/universita/appunti/elementi-di-progettazione-geotecnica
https://www.skuola.net/universita/appunti/meccanica-delle-terre-1
https://www.skuola.net/universita/appunti/dinamica-delle-strutture-2
https://www.skuola.net/universita/appunti/cemento-armato-precompresso
https://www.skuola.net/universita/appunti/travi-di-fondazione-e-plinti
https://www.skuola.net/universita/appunti/acciaio-da-carpenteria
https://www.skuola.net/universita/esercitazioni/progetto-di-un-capannone-industriale-
con-carroponte
https://www.skuola.net/universita/appunti/appunti-di-complementi-di-idraulica
https://www.skuola.net/universita/esercitazioni/esercizi-complementi-di-idraulica
https://www.skuola.net/universita/appunti/le-piastre
…
e tanto altro. Buono studio ;-)
Lezione 17/03/2020
Travatura Reticolare in Matlab
Si faccia riferimento al seguente listato, si parte dalle istruzioni “1” e “2”, ovvero dove sono stati
dati i comandi “clear” che cancella tutte le operazioni presenti in memoria, e “clc” che invece
c’è il vettore contenente le coordinate
cancella lo schermo. Successivamente, all’istruzione “3”
dei nodi della travatura reticolare, che è fatta in questo modo:
Tali coordinate vanno poi moltiplicate per la lunghezza “l” del tratto indicato nella precedente
sta indicato il modulo di elasticità normale del materiale, alla “5” il
figura. All’istruzione “4”
vettore contenente le dimensioni delle sezioni.
Successivamente, con le istruzioni da “7 / 11”, sono stati sistemati i vettori che contengono tutte
ntruss nnodes
), tutti i nodi ( ), la matrice K, la matrice di rotazione W, e la matrice K
le travi ( G
x-y
scritta nel sistema di riferimento globale ( ) poiché è stata ruotata. Successivamente c’è un ciclo
:
che percorre tutte le travi “for”
size(elems)
Con il comando : , è possibile conoscere le dimensioni della matrice denominata
elems
” che è costituita da 3 righe e 4 colonne, come di seguito mostrato:
“ Command Window elems
Digitando nella il comando “ ” si può vedere suddetta matrice.
Questa particolare matrice è stata costruita per poter inserire i dati degli elementi, infatti, per
4 numeri (separati dal punto e virgola e compresi tra parentesi
ogni trave: ne sono tre, ci sono
quadre) che rappresentano rispettivamente: il primo nodo della trave, il secondo nodo della
terzo quale sezione forma la sezione della trave ed il quarto quale materiale forma il
trave, il
materiale della trave:
In questo particolare caso il materiale è uno solo:
Le sezioni sono invece due:
Poiché sono stati utilizzati due profilati metallici differenti per il corrente inferiore e per le due
aste di parete. A questo punto è possibile subito individuare il numero di travi, senza conoscere
esattamente quante ne sono, con il comando: elems
Ovvero si prende come n. travi la dimensione di “ ” ovvero quante sono le righe di questa
nodes
matrice, e come numero di nodi, la prima dimensione della matrice dei nodi “ ”:
nodes
” ha due colonne per ogni riga, ovvero è una 3x2, cioè due componenti
Infatti, la matrice “
per ciascuno dei tre nodi. Riassumendo, si calcolano il numero di travi e di nodi a partire dai
vettori che sono stati inseriti in input. Le successive matrici sono di dimensioni fisse:
In particolare, sono delle 4x4 per ciascuna delle n. travi presenti, ovvero, di ogni matrice ce n’è
n. travi presenti.
una diversa per ciascuna delle
Relativamente alla variazione di riferimento, bisogna introdurre un vettore di rotazione del
sistema (mediante apposite formule), ed una matrice di trasformazione del sistema “A” formata
(sin (cos
) ):
dai termini in e
Questa operazione si effettua quando si vuole passare da una 2x2 ad una 4x4, che si ottiene
perché la matrice degli spostamenti dei nodi della trave “pendolo” in regime estensionale,
presenta come g.d.l. i soli due spostamenti che hanno la stessa direzione dell’asse della trave:
Mentre nel sistema di riferimento assoluto bisogna prendere 4 spostamenti, perché per ogni
nodo ci sono due componenti di spostamento:
Ossia su ogni nodo si possono sempre avere i due spostamenti con le due freccette orizzontali
e verticali.
Facendo l’inversa della precedente relazione, e quindi passando dal sistema di riferimento
globale al sistema di riferimento locale si ottiene la trasformazione di coordinate:
Quindi, si ottiene la matrice di rigidezza della trave in regime estensionale mediante il prodotto
matriciale della matrice per la matrice K, e si ottiene la prima detta matrice di rigidezza
globale. In altre parole, per ogni trave si costruisce una matrice K ed una matrice W nel
KG nel riferimento globale:
riferimento locale, quindi, una matrice
Da qui inizia poi un “ciclo di for” che spazza tutte le travi:
i=1:ntruss
- Per ogni trave:
Costruisci: mats
- Un modulo elastico: da assegnare pari al valore che assume l’elemento del vettore “ ”
terzo numero elems i-esima :
del vettore “ ” per la generica trave “ ”
che corrisponde al
EY=mats(elems(i,3));
= 1
in particolare, quando prende questo valore:
= 2
Quando prende questo valore:
= 3
Quando prende questo valore: sects
- Un’area: da assegnare pari al valore che assume l’elemento del vettore “ ” che
quarto numero elems i-esima :
corrisponde al del vettore “ ” per la generica trave “ ”
Ar=sects(elems(i,4));
= 1 primo valore:
in particolare, quando prende il di
= 2 primo
Quando prende il valore: di
= 3 secondo
Quando prende il valore: di nodi
- Poi si prendono le ordinate dei nodi: ovvero del vettore “ ” si prende quello che in
= 1, = 2 = 3.
elems
“ ” il n.ro 1 per e In altre parole, si effettua una cosiddetta
indirizzamento concatenato.
procedura di
Per comprendere meglio quanto è stato appena fatto, potrebbe essere congeniale
cambiare leggermente il ciclo nel modo seguente:
numero del materiale nmat elems
Ovvero, il “ ”, è il terzo elemento del vettore “ ” (la terza
= 1, … 3. numero della sezione nsez
componente di tale vettore), per E che il “ ” è il
elems
quarto elemento del vettore “ ” (la quarta componente di tale vettore), come prima,
= 1, … 3.
per Poi è possibile scrivere anche:
n1= elems(i,1); n2=
Quindi, il primo nodo “n1” è : invece, il secondo nodo è similmente :
elems(i,2); di conseguenza cambia la scrittura delle coordinate dei nodi evidenziata nella
x1= nodes(n1,1);
figura precedente. La scrittura: suggerisce di prendere la prima
e via dicendo in modo analogo per le restanti coordinate.
coordinata del nodo “n1” sono inserite le coordinate x ed y dei vari nodi della
Ricordando che nel vettore “nodes”
struttura: x y x y x y
- Seguono la lunghezza, ossia la radice quadrata della somma dei quadrati, i seni e coseni
degli angoli, che sono pari alla differenza di coordinate fratto la lunghezza del tratto.
i-esima
- La matrice di rigidezza (estensionale) dell’ asta:
Ossia la matrice 4x4:
� − �
0 0
⎡ ⎤
0 0
⎢ ⎥
0 0
= ⎢ ⎥
0 0
− � �
⎢ ⎥
0 0
⎣ ⎦
0 0
Ci sono due righe nulle poiché corrispondono agli spostamenti perpendicolari all’asse
della trave che sono pari a zero, dato che ci si trova in regime estensionale allora i g.d.l. si
trovano solamente nella direzione della lunghezza della trave.
- La matrice delle rotazioni:
Ossia la matrice 4x4: cos − sin 0 0
sin cos 0 0
= � �
0 0 cos − sin
0 0 sin cos
- La matrice delle rigidezze nel riferimento globale:
= : :
Si conclude così la costruzione della matrice di rigidezza nel riferimento globale di tutte le travi
for .
(riportate di seguito), quindi, il ciclo di
1 2 3
aste diagonali e corrente inferiore, asta
Le matrici dei coseni direttori “W” delle varie aste sono:
1 2 3
aste diagonali e corrente inferiore, asta
La matrice dei coseni direttori dell’asta 3 è diagonale poiché il riferimento locale di detta asta
coincide con il riferimento globale della struttura. Infine, le matrici KG:
1 2 3
aste diagonali e corrente inferiore, asta
Le matrici delle due aste diagonali si riempiono, poiché lo sforzo agente in esse presenta sia
componente orizzontale che verticale (cambiano solo dei segni dovuti essenzialmente
all’orientamento delle aste); l’asta 3 invece, presenta solamente le componenti orizzontali dello
sforzo, essendo ad inclinazione nulla. A questo punto va scritta l’equazione di equilibrio globale,
ossia di sommare i termini relativi alle matrici che si stanno studiando. In particolare, è stata
ottenuta una matrice di rigidezza locale per ogni generica trave, ovvero per ogni trave si ha una
matrice 4x4 che rappresenta la sua matrice di rigidezza che restituisce la forza nodale che nasce
i i j
sul nodo della trave, nella componente e , e che diventa una forza che arriva sulla matrice
globale che invece associa tutte le forze risultanti sui nodi, e tutti gli spostamenti congruenti dei
spostamento
nodi. Perché si hanno nodi congruenti e su ciascuno di essi arrivano più travi, e lo
nodo locale nodo globale
diventa lo spostamento di ogni .
di ogni SEZIONE 1
A questo punto, avendo definito “” il vettore dei g.d.l. locali ed “” quello degli spostamenti
di ciascun nodo, per trovarne la reciproca corrispondenza, ossia quali “a” corrispondono a quali
default
“u”, e dato che per le “u” sono 4, e vanno da 1 a 4 per ogni trave, basta scrivere in un
quali sono le “a ”, cioè nella numerazione esterna, i g.d.l. che
vettore che qui è chiamato “gdl” i
competono agli estremi della data trave. Ma poiché in questa situazione particolare si ha
default
un’impostazione di , perché ogni nodo ha 2 g.d.l, ed essendo stati i nodi ordinati
precedentemente (n1, n2 e n3), considerando ad esempio il nodo “n1” ad esso corrispondono
sempre i g.d.l. che sono 2 volte n1-1 e 2 volte n1, questo perché al primo nodo competono i
g.d.l. 1 e 2, al secondo nodo i g.d.l. 3 e 4, ed al terzo nodo i g.d.l. 5 e 6, di conseguenza la
numerazione resta sempre la stessa. Pertanto, si costruisce la matrice:
gdl=[2*n1-1, 2*n1, 2*n2-1, 2*n2];
Essa contiene tutti i g.d.l. della trave che si sta guardando, ad esempio, se si trattasse della trave
n1, allora il nodo n1=1 ed il nodo n2=2, per cui gli:
gdl=[a1, a2, a3, a4];
Per la trave n2, il nodo n1=2 ed il nodo n2=3, per cui:
gdl=[a3, a4, a5, a6];
Per la trave n3, il nodo n1=1 ed il nodo n2=3, per cui:
gdl=[a1, a2, a5, a6];
Pertanto, si conoscono esattamente i nodi che competono a quella specifica trave.
A questo punto è possibile fare un semplice ciclo di 4 elementi, in particolare, un ciclo che passa
per i 4 g.d.l. locali della trave (u , … , u ), quindi, un ciclo che va da u ad u ; la matrice di rigidezza
1 4 1 4
= 4 = 4,
globale “S” avrà i g.d.l. che sono gli elementi che corrispondono ad e a ovvero
.
g.d.l. di e g.d.l. di In particolare, la seguente scrittura:
S(gdl(j),gdl(k))
Si vuole far riferimento al termine della matrice “S” col g.d.l. che dipende da quanto valgono i
ed u , ovvero spazza tutti gli u ... u termini e li fa diventare a … a ; pertanto si ottiene
g.d.l da u
1 4 1 4 1 4
a j-esimo
” che corrisponde al elemento della matrice della specifica trave, di
il numero di “
conseguenza la si pone pari ad:
S(gdl(j),gdl(k))=KG(j,k)+S(gdl(j),gdl(k)); ,
Scrivendo in questo modo, in pratica si prendono gli elementi di KG in posizione e che
vanno da 1 a 4 entrambe, e si riportano nella matrice S nella posizione che compete loro con i
g.d.l. che vengono fuori dal numero del nodo; in questo modo si sta dicendo al programma di
mettere nella matrice generale “S” gli elementi della matrice “KG” al posto giusto (indicato dalla
“gdl” ), sommandoli a quelli che già ci sono, ovvero che sono già stati aggiunti, ma poiché
quest’operazione è una sommatoria, è importantissimo che la matrice S, all’inizio, contenga
zeri
. Per fare questo, bisogna stabilire che:
solamente degli ngdl=2*nnodes;
ovvero, il numero dei gradi di libertà strutturali è pari al doppio del numero di nodi, dopodiché
si scriverà altresì che : S=zeros(ngdl,ngdl);
Quindi, è stata scritta come una matrice quadrata di zeri, nella dimensione dei gradi di libertà
strutturali che sono, come detto, pari a due volte il numero di nodi. Si poteva anche scrivere
solamente: S=zeros(ngdl);
Ed il programma avrebbe generato una matrice quadrata, ma è preferibile mettere due volte
“ngdl” perché in questo modo è più semplice da ricordare che le due dimensioni della matrice
di zeri che si sta creando potrebbero in altri casi essere diverse l’una dall’altra. Una volta azzerata
zeri
, perché la procedura
la matrice “S” si è certi che essa contiene tutti
S(gdl(j),gdl(k))è i
”
una procedura di sommatoria, e in una sommatoria se il termine “
iniziale non è zero il programma restituisce un errore sulla sommatoria. Si parte allora da una
(ngdl,ngdl)
matrice con tutti zero, gli si assegna la dimensione ( ), poi ad ogni temine, che
è zero, al preesistente zero gli si somma il termine della matrice di rigidezza di tutte le aste che
arrivano in quel nodo, in questo modo si sommano sempre termini nuovi man mano che si va
i-esimo della matrice S la sommatoria di tutte
avanti, in modo che alla fine si ottiene nel termine
le matrici di rigidezza che concorrono per lo stesso grado di libertà. Aggiornando il listato con
gli ultimi passaggi detti e chiudendo infine i vari cicli, si ottiene la matrice di rigidezza globale
corrispondente a tutte le travi :
Osservando la matrice S è possibile notare che ci sono degli elementi di valore: 4.0005e+07 ed
altri elementi di valore: 8.0005e+07 (a meno dei segni), ossia questi ultimi figurano sulla
diagonale, e presentano un valore raddoppiato, cosa che si spiega facilmente, perché in
corrispondenza di tali posizioni c’è una somma di contributi (come mostrato nel diagramma a
f generate dallo stesso
colori sul quaderno), ovvero, laddove ci sono delle forze i-esime i
a
spostamento nodale derivante da più travi, queste vanno sommate.
i
Sui termini in diagonale arrivano due travi, invece, sui termini fuori diagonale ne arriva una
soltanto, questo vuol dire che quando si va ad assemblare la matrice di rigidezza, i termini sulla
diagonale sommano due contributi, ed i termini fuori diagonale non sommano contributi.
rank(S)
Eseguendo adesso il comando: si ottiene il rango della matrice S, che in questo caso
dovrebbe essere pari a “3” perché i g.d.l. di questa struttura, che è una travatura reticolare, sono
3 esterni assoluti perché la maglia è chiusa, ma risulta di rango “2”, ovvero è singolare, ha
determinante pari a zero, per cui non è possibile fare alcun calcolo, e la spiegazione a questo
riscontro risiede semplicemente nel fatto che ancora non sono state espresse le condizioni di
vincolo numericamente, condizioni che la faranno diventare regolare con rango pari a “3”.
eig(S)per
Nota: quando la matrice di rigidezza presenta autovalori nulli: comando calcolare
gli autovalori della matrice data, vuol dire che la struttura è labile, in particolare, il fatto di avere
autovalori nulli sta a significare che ci sono dei moti rigidi, o meglio, c’è un moto rigido per ogni
autovalore nullo. Ogni autovalore nullo corrisponde ad un autovettore di uno dei gradi di libertà
da moto rigido.
A questo punto è opportuno inserire i vincoli, che sono delle quantità che devono essere date
come input, non inserisce in automatico il programma. Ogni punto della struttura deve essere
in qualche modo vincolato, ovvero, è necessario dire se il generico punto può avere tutti gli
spostamenti liberi, oppure soltanto alcuni spostamenti liberi; pertanto è possibile costruire un
2 colonne m righe
ed quanti sono i nodi, quindi, della stessa dimensione
vettore che possiede
del vettore “nodes” ma invece che contenere le coordinate del nodo deve contenere un
In che modo? Si può impostare il valore “1” se il punto è libero di muoversi, e “0” se
“codice”.
il punto è impedito di spostarsi. Poiché è stato considerato il caso di travatura reticolare, in cui
è stata posta, ad esempio, nel nodo n.1 la cerniera, quindi, si vuole che il nodo n.1 sia bloccato
in tutte e due le direzioni, è possibile inserire “0 0” come codici di vincolo di tale nodo.
constr=[0 0 0 0; 1 1 0 0; 1 0 0 0]
Per il primo nodo, così come per gli altri si
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Lezioni, Laboratorio progettuale di calcolo strutturale
-
Laboratorio di Calcolo numerico e programmazione
-
Geologia con laboratorio
-
Laboratorio di sperimentazione