Travatura reticolare

[Maple Plot]

La particolarità di questo esempio sta nel fatto che i nodi devono trasmettere solamente forze e non momenti, quindi la rotazione dei nodi stessi e la deformabilità flessionale delle travi non devono essere presi in considerazione.


> restart: read "beam2D_FEMpack.m";

1. Definizione dei nodi

Definiamo i nodi secondo la numerazione in figura

> node := table ([ seq( c = [ 0.8*(c-1) , 0] , c=1..4), seq( 10+c = [ 0.8*(c-1)-0.4 , 1.0] , c=1..5) ]);

node := TABLE([1 = [0., 0], 2 = [.8, 0], 3 = [1.6, ...

2. Definizione degli elementi

Proprietà della sezione

> mu:=1;   massa lineare
>
EJ:=0;    la rigidezza flessionale deve essere nulla
EA:=1e4;   rigidezza assiale

mu := 1

EJ := 0

EA := .1e5

Seguendo la figura, definisco gli elementi

> beam := table([
            seq( [ c , c+1 , mu,EA,EJ], c=1..3),             
1° riga
            seq( [ c+10, c+11, mu,EA,EJ], c=1..4),
       2° riga
            seq( [ c , c+10, mu,EA,EJ], c=1..4), 
            elementi diagonali verso destra
            seq( [ c , c+11, mu,EA,EJ], c=1..4)
]);         elementi diagonali verso sinistra

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

3. Definizione dei vincoli

Definisco le cerniere in corrispondenza dei nodi 11 e 15. 

Dopodiché annullo tutte le rotazioni in quanto esse non rappresentano gradi di libertà significativi.E' essenziale che questa operazione è lecita solo perché ho annullato la rigidezza flessionale 

> impl_constraint := [
        x11,z11, 
            cerniera di sinistra
         x15,z15,            cerniera di destra
        seq(phi||i,i=1..4), seq(phi||i,i=11..15)
];        blocco le rotazioni

impl_constraint := [x11, z11, x15, z15, phi1, phi2,...

4. Assemblaggio della struttura

> built_structure(node,beam,impl_constraint):

Warning, global variables 'NN','nix','coords' were been defined


Sono stati definiti 9 nodi:
n = [ X [m] Z [m] ] 
--------------------------
1 = [ +0.000 +0.000 ]
2 = [ +0.800 +0.000 ]
3 = [ +1.600 +0.000 ]
4 = [ +2.400 +0.000 ]
11 = [ -0.400 +1.000 ]
12 = [ +0.400 +1.000 ]
13 = [ +1.200 +1.000 ]
14 = [ +2.000 +1.000 ]
15 = [ +2.800 +1.000 ]
--------------------------

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


Sono stati definiti 15 elementi di tipo trave:
m , ( i, j) = mu[kg/m] EA[N] EJ[Nm2] l[m] theta[rad]
--------------------------------------------------------------------
1 , ( 1 , 2) = 1.0 1.00e+04 0.00e-01 0.800 +0.000
2 , ( 2 , 3) = 1.0 1.00e+04 0.00e-01 0.800 +0.000
3 , ( 3 , 4) = 1.0 1.00e+04 0.00e-01 0.800 +0.000
4 , (11 ,12) = 1.0 1.00e+04 0.00e-01 0.800 +0.000
5 , (12 ,13) = 1.0 1.00e+04 0.00e-01 0.800 +0.000
6 , (13 ,14) = 1.0 1.00e+04 0.00e-01 0.800 +0.000
7 , (14 ,15) = 1.0 1.00e+04 0.00e-01 0.800 +0.000
8 , ( 1 ,11) = 1.0 1.00e+04 0.00e-01 1.077 +1.951
9 , ( 2 ,12) = 1.0 1.00e+04 0.00e-01 1.077 +1.951
10 , ( 3 ,13) = 1.0 1.00e+04 0.00e-01 1.077 +1.951
11 , ( 4 ,14) = 1.0 1.00e+04 0.00e-01 1.077 +1.951
12 , ( 1 ,12) = 1.0 1.00e+04 0.00e-01 1.077 +1.190
13 , ( 2 ,13) = 1.0 1.00e+04 0.00e-01 1.077 +1.190
14 , ( 3 ,14) = 1.0 1.00e+04 0.00e-01 1.077 +1.190
15 , ( 4 ,15) = 1.0 1.00e+04 0.00e-01 1.077 +1.190
--------------------------------------------------------------------

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


La struttura possiede 14 gradi di libertà.

Posso verificare il computo dei gradi di libertà con un conteggio manuale:

             +      15     (deformazione assiale di ciascuna asta) 
             +        3     (posizione e orientamento della struttura nel piano) 
            -     2x2     (gradi di libertà impediti dalla presenza delle cerniere)

             =    14      (gradi di libertà della struttura)

 

Verifico che la struttura corrisponda a quella assegnata:

> blue :=COLOUR(RGB,0,0,1): red:=COLOUR(RGB,1,0,0): black:=COLOUR(RGB,0,0,0):
> 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. Analisi statica

Definisco le forze esterne verticali applicate in corrispondenza del traverso superiore.

> force := table([ seq(i=[ 0 , 1e3 , 0.0 ],i=1..4) ]) ;

force := TABLE([1 = [0, .1e4, 0.], 2 = [0, .1e4, 0....

Effettuo l'analisi e grafico i risultati

> static_analysis(beam,force,static_disp);

TABLE([1 = [-.160000001038504536, .3138716483031005...
TABLE([1 = [-.160000001038504536, .3138716483031005...
TABLE([1 = [-.160000001038504536, .3138716483031005...
TABLE([1 = [-.160000001038504536, .3138716483031005...
TABLE([1 = [-.160000001038504536, .3138716483031005...

> scd:=0.50:
> npt:=2:  numero di punti di rappresentazione per ciascun elemento 
> P_stat_def := draw_beams(beam,static_disp,scd,npt,blue):
>
scf:=0.001: scala delle forze
> scm:=0.0005: scala dei momenti
> PP_force := draw_forces(force,scf,scm,static_disp,scd,black,THICKNESS(2)): diagramma delle forze

> PLOT(P_undeformed, P_stat_def,PP_force,node_label(0.05,0.05),SCALING(CONSTRAINED),AXESSTYLE(NONE),THICKNESS(1));

[Maple Plot]

NOTA: è importante disegnare la struttura utilizzando solamente le posizioni dei nodi (npt=2), in caso contrario otterremo un risultato che si discosta dalla realtà avendo fittiziamente posto a zero le rotazioni dei nodi.
Infatti: 

> npt:=8:   
> P_stat_def := draw_beams(beam,static_disp,scd,npt,blue):
ecco il risultato:
> PLOT(P_undeformed,P_stat_def,PP_force,node_label(0.05,0.05),SCALING(CONSTRAINED),AXESSTYLE(NONE),THICKNESS(1));

[Maple Plot]

6. Calcolo dei modi di vibrare

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

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


frequenze proprie
omega( 1) = 211.2217 rad/s = 33.617 Hz
omega( 2) = 207.0047 rad/s = 32.9458 Hz
omega( 3) = 22.0025 rad/s = 3.5018 Hz
omega( 4) = 34.771 rad/s = 5.534 Hz
omega( 5) = 51.2497 rad/s = 8.1566 Hz
omega( 6) = 171.3757 rad/s = 27.2753 Hz
omega( 7) = 165.9241 rad/s = 26.4076 Hz
omega( 8) = 161.373 rad/s = 25.6833 Hz
omega( 9) = 152.0314 rad/s = 24.1965 Hz
omega(10) = 139.056 rad/s = 22.1315 Hz
omega(11) = 120.0586 rad/s = 19.1079 Hz
omega(12) = 84.2508 rad/s = 13.4089 Hz
omega(13) = 89.6474 rad/s = 14.2678 Hz
omega(14) = 88.4515 rad/s = 14.0775 Hz

rappresentazione grafica

> scd := 0.5: scale factor
>
nn := NDOF-1: seleziono il modo
> nn:=3:    nn;myomega[nn];
>
P_mode := draw_beams(beam,mymode[nn],scd,2,blue):

> PLOT(P_undeformed,P_mode,node_label(0,0),SCALING(CONSTRAINED),AXESSTYLE(NONE),THICKNESS(1));

3

22.00245406

[Maple Plot]

animazione

> nn := 3; seleziono il modo
>
myomega[nn];
>
scd := 0.5: scale factor
>
P_undeformed := draw_beams(beam,0,0,2,red,LINESTYLE(4)):
>
nfr := 12: frame:='frame':
> for i from 1 to nfr do frame[i]:= draw_beams(beam,mymode[nn],evalf(scd*cos(2*Pi*(i-1)/nfr)),2,blue): od:

> PLOT(ANIMATE(seq([frame[i],P_undeformed],i=1..nfr)),AXESSTYLE(NONE),SCALING(CONSTRAINED));

nn := 3

22.00245406

[Maple Plot]

modo di vibrare con pulsazione w = 34.7 rad/s

[Maple Plot]

 

modo di vibrare con pulsazione w = 51.3 rad/s

 

[Maple Plot]

 

modo di vibrare con pulsazione w = 139 rad/s

[Maple Plot]>>

 

modo di vibrare con pulsazione w = 171 rad/s

[Maple Plot]