Calcolo dei modi di vibrare di una trave appoggiata alle estremità.

Questo caso può facilmente essere risolto per via analitica e ci permette pertanto di saggiare la bontà del metodo FEM.

> restart: read "beam2D_FEMpack.m";

1. Caratteristiche della trave:

> ll := 1.23;         lunghezza
>
mu:=0.14;         massa lineare
> EJ:=1e4;            modulo di elasticità a flessione
> EA:=infinity;    in questa maniera la trave non è deformabile assialmente

ll := 1.23

mu := .14

EJ := .1e5

EA := infinity

2. Definizione dei nodi

Schematizzo la trave con 6 elementi e definisco i rispettivi nodi numerati da 0 a 7

> nn:=6:
>
node := table ([ seq( i = [ i*ll/nn , 0.0 ] , i=0..nn) ]);

node := TABLE([0 = [0., 0.], 1 = [.2050000000, 0.],...
node := TABLE([0 = [0., 0.], 1 = [.2050000000, 0.],...

3. Definizione degli elementi della struttura

> beam := table([ seq( [ i-1, i, mu,EA,EJ], i=1..nn) ]);

beam := TABLE([1 = [0, 1, .14, infinity, .1e5], 2 =...
beam := TABLE([1 = [0, 1, .14, infinity, .1e5], 2 =...
beam := TABLE([1 = [0, 1, .14, infinity, .1e5], 2 =...

4. Definizione dei vincoli

Impongo i vincoli di tipo rotoidale: i punti estremi della trave sono solidali al telaio, ma sono possibili le rotazioni 

> impl_constraint := [ x0 ,z0, x||nn,z||nn ];  

impl_constraint := [x0, z0, x6, z6]

4. Assemblaggio della struttura

Utilizzo la procedura built_structure , che verifica nodi, elementi e condizioni di vincolo

> built_structure(node,beam,impl_constraint):



Sono stati definiti 7 nodi:

 n = [  X [m]     Z [m] ] 

--------------------------

 0 = [ +0.000    +0.000 ]

 1 = [ +0.205    +0.000 ]

 2 = [ +0.410    +0.000 ]

 3 = [ +0.615    +0.000 ]

 4 = [ +0.820    +0.000 ]

 5 = [ +1.025    +0.000 ]

 6 = [ +1.230    +0.000 ]

--------------------------



Warning, global variables 'NE','bix' were been defined





Sono stati definiti 6 elementi di tipo trave:

 m , ( i,  j) =  mu[kg/m]    EA[N]      EJ[Nm2]    l[m]   theta[rad]

--------------------------------------------------------------------

 1 , ( 0 , 1) =      .1      Inf    1.00e+04    0.205    +0.000

 2 , ( 1 , 2) =      .1      Inf    1.00e+04    0.205    +0.000

 3 , ( 2 , 3) =      .1      Inf    1.00e+04    0.205    +0.000

 4 , ( 3 , 4) =      .1      Inf    1.00e+04    0.205    +0.000

 5 , ( 4 , 5) =      .1      Inf    1.00e+04    0.205    +0.000

 6 , ( 5 , 6) =      .1      Inf    1.00e+04    0.205    +0.000

--------------------------------------------------------------------



Warning, global variables 'constraint','NC','dip','indip','NDOF' were been defined





La struttura possiede 12 gradi di libertà.

I gradi di libertà calcolati sono pari a 12 e corrispondono alle rotazioni dei 7 nodi e agli spostamenti verticali dei 5 nodi interni.
Gli spostamenti assiali non vengono considerati perché la trave è stata definita infinitamente rigida in senso assiale. 

Definisco i colori per la rappresentazione grafica

> blue :=COLOUR(RGB,0,0,1): red:=COLOUR(RGB,1,0,0): black:=COLOUR(RGB,0,0,0):

e disegno della struttura con la solita tecnica

> nlab := node_label(-0.05,-0.05):

> P_undeformed := draw_beams(beam,0,0,2,red):

> PLOT(P_undeformed,nlab,SCALING(CONSTRAINED),AXESSTYLE(NONE),THICKNESS(2));

[Maple Plot]

5. Calcolo dei modi di vibrare

la relazione esatta per il calcolo delle pulsazioni naturali è la seguente

> omegaT := (mu,EJ,l,n) -> (n*3.14)^2*sqrt(EJ/mu/l^4):

la prime quattro pulsazioni sono di conseguenza

> for i from 1 to 4 do  omega||i = omegaT(mu,EJ,ll,i) ;  od;

omega1 = 1741.746937

omega2 = 6966.987748

omega3 = 15675.72243

omega4 = 27867.95099

Procediamo ora al calcolo con la tecnica FEM

> modal_analysis(beam, myomega, mymode, NDOF):

dove:
   
beam:                 INPUT     descrizione degli elementi
    force:                 INPUT     forze esterne
    constraint:         INPUT     vincoli
    static_disp:       OUTPUT spostamenti dei nodi

Warning, pre-load conditions are not take into account in modal analysis



frequenze proprie
omega( 1) = 3.1925e+05  rad/s  = 5.0810e+04  Hz

omega( 2) = 2.9064e+05  rad/s  = 4.6257e+04  Hz

omega( 3) = 2.3178e+05  rad/s  = 3.6889e+04  Hz

omega( 4) = 1.7511e+05  rad/s  = 2.7870e+04  Hz

omega( 5) = 9.4210e+04  rad/s  = 1.4994e+04  Hz

omega( 6) = 1.2954e+05  rad/s  = 2.0617e+04  Hz

omega( 7) = 6.9666e+04  rad/s  = 1.1088e+04  Hz

omega( 8) = 4.4745e+04  rad/s  =  7121.3724  Hz

omega( 9) = 2.8226e+04  rad/s  =  4492.3019  Hz

omega(10) = 1.5754e+04  rad/s  =  2507.2572  Hz

omega(11) =  6979.7041  rad/s  =  1110.8544  Hz

omega(12) =  1743.6046  rad/s  =   277.5033  Hz

Possimamo osservare come i risultati ottenuti siano molto vicini a quelli teorici.

PAssiamo alla rappresentazione grafica

> scd := 2: scale factor
>
P_mode1 := draw_beams(beam,mymode[NDOF] ,scd,3,blue):
>
P_mode2 := draw_beams(beam,mymode[NDOF-1],scd,6,blue):
>
P_mode3 := draw_beams(beam,mymode[NDOF-2],scd,6,blue):
> P_mode4 := draw_beams(beam,mymode[NDOF-3],scd,6,blue):

> PLOT(P_undeformed, P_mode1, P_mode2, P_mode3, P_mode3, P_mode4, SCALING(CONSTRAINED), AXESSTYLE(NONE), THICKNESS(1));

[Maple Plot]

[Maple Plot]