e06 Rod Matlab

download e06 Rod Matlab

of 30

description

e06 Rod Matlab

Transcript of e06 Rod Matlab

  • Politecnico di Torino Dipartimento di Ingegneria Meccanica e Aerospaziale

    Marco Gherlone

    Scrittura e applicazione

    di un programma MATLAB

    per lanalisi FEM

    di travature reticolari piane

  • 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

    2

    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

    3

    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 pre-

    ed 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

    4

    Inserimento dei dati per lanalisi

    Calcoli preliminari

    Calcolo della matrice [KG] e del

    vettore {FG} per lintera struttura

    Risoluzione

    Salvataggio dei risultati

    Elaborazione dei risultati

    Pre-processing

    Processing

    Post-processing

    ROD_FEM.m

    OUT_ROD_FEM.m

    Scrittura dei programmi

  • 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

    5

    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).

    Scrittura dei programmi

  • 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

    6

    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

    Scrittura dei programmi

  • 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

    7

    Inserimento dei dati per lanalisi:

    dati sui materiali (E)

    Scrittura dei programmi

    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

    8

    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

    Scrittura dei programmi

  • 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

    9

    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???

    Scrittura dei programmi

  • 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

    10

    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???

    Scrittura dei programmi

  • 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

    11

    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???

    Scrittura dei programmi

  • 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

    12

    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.

    Scrittura dei programmi

  • 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

    13

    Calcoli preliminari:

    matrice di connectivity dei gradi di libert per elemento

    for e=1:size(Cne,1)

    Cse(e,:)=[2*Cne(e,1)-1 ???];

    end

    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

    5

    8

    3

    qG9

    qG10 qG15

    qG16 ]85[:),3(Cne

    ]1615109[:),3(Cse

    ]8*218*25*215*2[:),3(Cse

    Scrittura dei programmi

  • 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

    14

    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));

    Scrittura dei programmi

  • 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

    15

    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

    5

    8

    3

    1

    2

    (3)

    2 2

    (3) G(3) G(3) G(3) G(3)

    2L 1L 2L 1LL = x -x + y -y

    2 2

    (3) G G G G

    8 5 8 5L = x -x + y -y

    G(3) G(3)

    (3) 2L 1L

    (3)

    x -xcos = ...

    L

    G(3) G(3)(3) 2L 1L

    (3)

    y -ysin = ...

    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

    Scrittura dei programmi

  • 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

    16

    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.

    Scrittura dei programmi

  • 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

    17

    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

    Scrittura dei programmi

  • 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

    18

    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

    Scrittura dei programmi

  • 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

    19

    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.

    ???

    Scrittura dei programmi

  • 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

    20

    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=???

    ...

    Scrittura dei programmi

  • 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

    21

    Risoluzione:

    calcolo statico (spostamenti nodali e reazioni vincolari).

    Scrittura dei programmi

  • 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

    22

    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;

    Scrittura dei programmi

  • 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

    23

    Salvataggio dei risultati:

    salvataggio dei risultati statici.

    Scrittura dei programmi

  • 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

    24

    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);

    Scrittura dei programmi

  • 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

    25

    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.

    Scrittura dei programmi

  • 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

    26

    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,';'];

    ???

    Scrittura dei programmi

  • 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

    27

    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

    Scrittura dei programmi

  • 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

    28

    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

    Scrittura dei programmi

  • 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

    29

    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

    Per il calcolo della tensione e dello sforzo normale, bisogna utilizzare i valori di A e

    di E relativi allelemento in questione.

    L(e)

    (e) 1

    (e) L(e)

    2

    q1 1 1

    L q

    (e) (e) G(e)(e)

    1 = -1 1 q

    L

    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

    Scrittura dei programmi

  • 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

    30

    Applicazione

    Si determinino:

    spostamenti dei nodi;

    reazioni vincolari;

    deformazioni delle aste;

    tensioni nelle aste;

    sforzi normali nelle aste.

    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).

    Sezioni* (circolari cave di raggio R e spessore s):

    a. R=5e-2, s=5e-3;

    b. R=3e-2, s=5e-3.

    1.5 1.5 1.5 1.5 1.5 1.5

    1

    1

    1

    3e6

    2e6

    1e6

    b1 b1

    b1

    b1

    b1

    b1 b1

    b1 b1

    b1 a2

    a2 a2

    a2

    a2

    b3 b3 b3 b3 b3 b3

    * Unit di misura nel S.I.

    A 2Rs