Sei sulla pagina 1di 23

PONTIFICIA UNIVERSIDAD CATOLICA DE CHILE

Escuela de Ingeniera
Departamento de Ingeniera Estructural y Geotecnica
ICE 2114 Analisis Estructural

Tarea 5

Santiago de la Fuente Penaloza


19 de octubre de 2016
Tiempo dedicado: 25 horas
1. Problema 1
Usando el metodo de rigidez manual se resolveran las siguientes estructuras representadas en las Figuras 1
y 2.

1.1. Grados de libertad y restricciones cinematicas:


La estructura de la Figura 2 presenta los siguientes grados de libertad.

Para calcular la matriz de rgidez K de la estructura primero tenemos que analizar la deformada de cada
elemento de la estructura bajo los g.d.l respectivos.
Sabemos que la matriz de rgidez de un elemento reticulado es de la siguiente forma:
 
AE 1 1
KL = e
L 1 1

Donde KL hace referencia a la matriz de rigidez local de cada elemento y Le se refiere al largo del elemento,
ya que este no es constante en el ejercicio.

1
A partir de los siguientes dibujos podemos darnos cuenta que elementos se encuentran en compresion y en
traccion, lo que nos dira cual es la fuerza que ejerce cada uno de ellos hacia el nodo, para as analizar las
reacciones sobre este, para que finalmente se pueda calcular cada columna de K.

La matriz K es una matriz simetrica que posee una dimension igual a los g.d.l de la estructura.

A continuacion se muestra el procedimiento el cual se uso para calcular la primera columna de K (r1 = 1)

Como podemos ver, el nodo A es sometido frente a las fuerzas senaladas, es as como podemos calcular
K11 y K21 , los cuales solo se calculan haciendo equilibrio de fuerzas, como se muestra a continuacion.

2
AE AE AE AE AE
K11 = cos()2 + cos()2 + cos()2 + = 3,52
L1 L4 L3 L5 L
AE AE
K21 = cos()sen() = 0,288
L1 L
Sin embargo, el g.d.l r1 = 1 no solo repercute en el nodo A, sino que tambien en los demas nodos, ya que
como se deforman varias barras de la estructura y estas ejercen fuerzas en ambos extremos, los demas nodos
tambien seran sometidos a las siguientes fuerzas.

AE
K31 = 1,153
L
AE
K41 = 0,77
L
AE
K51 = 1,153
L
AE
K61 = 0,77
L
AE
K71 = 1
L
K81 = 0

3

3,52
0,288

1,153

0,77
Obteniendo como primera columna de la matriz K el siguiente vector k1 = AE
L 1,153


0,77

1
0
Este proceso se repite continuamente hasta as encontrar todas las columnas de la matriz K, dando como
resultado la siguiente matriz de rigidez:

3,52 0,288 1,153 0,77 1,153 0,77 1 0
0,288
1,41 0,77 0,513 0,77 0,513 0 0
1,153 0,77 2,3 0 0 0 1,153 0,77

AE 0,77 0,513 0 1,026 0 0 0,77 0,513
K=
L 1,153 0,77 0 0 3,07 0 1,153 0,77

0,77
0,513 0 0 0 1,39 0,77 0,513

1 0 1,153 0,77 1,153 0,77 3,51 0,288
0 0 0,77 0,513 0,77 0,513 0,288 1,41

El vector de fuerzas F se arma analizando que fuerzas actuan bajo cada g.d.l, las filas del vector F estan
enumeradas por g.d.l, de manera que este vector se calcula analizando las fuerzas externas que actuan bajo
estos g.d.l.

En la figura podemos notar claramente que fuerzas actuan sobre los g.d.l respectivos. En el caso de el
cambio de temperatura +T , se le asgina un vector de fuerza negativo en el nodo A y uno positivo en el
nodo C. Por lo tanto el vector F queda de la siguiente forma:


P AET 2,35

0 0


P 10

0 0
F = =

0 0


3P 30

AET 12,35
0 0

1.2. Valores g.d.l


Como ya tenemos la matriz F y la matriz K, solo nos falta resolver el sistema Kr = F para conocer los
g.d.l. Este sistema se resolvera invirtiendo la matriz K de la siguiente forma: r = K 1 F . A continuacion se
muestra la solucion del vector r que nos da resolviendo el sistema de ecuaciones.

0,00635
0,00504

0,00686

0,00407
r= 0,00351


0,01226

0,00402
0,00659

4
A continuacion se muestran los g.d.l. locales de cada elemento, que se calcularan de la siguiente forma:

Elemento 1: u1 = r1 cos() + r2 sen()


u2 = 0

Elemento 2: u1 = 0
u2 = r5 cos() + r6 sen()

Elemento 3: u1 = r1 cos() + r2 sen()

5
u2 = r3 cos() + r4 sen()

Elemento 4: u1 = r1 cos() r2 sen()


u2 = r5 cos() r6 sen()

Elemento 5: u1 = r1
u2 = r7

Elemento 6: u1 = r3 cos() r4 sen()


u2 = r7 cos() r8 sen()

Elemento 7: u1 = r5 cos() + r6 sen()


u2 = r7 cos() + r8 sen()

Elemento 8: u1 = r5 cos() r6 sen()


u2 = 0

Elemento 9: u1 = r7 cos() r8 sen()


u2 = 0

1.3. Grafico de esfuerzos internos

6
1.4. Deformada Estructural

2. Problema 2
2.1. Figura 1
A continuacion se resolveran las mismas estructuras de las Figuras 1 y 2, sin embargo esta vez con el
metodo de la rigidez matricial.

2.1.1. Grados de libertad y restricciones cinematicas


A continuacion se muestran los dibujos que indican los g.d.l de la estructura.

7
2.1.2. Matrices de transformacion cinematica
El siguiente paso es proceder a calcular las matrices de transformacion cinematica conocidas como ar , ax , cr
y cx . Debido a que la estructura de la Figura 1 no posee desplazamientos de los g.d.l preescritos (vector x),
no es necesario calcular ax .

Para poder calcular estas matrices de transformacion, es necesario primero analizar la cinematica de la
estructura, que se indica a continuacion.

A partir del comportamiento de cada barra bajo los vectores canonicos de


los g.d.l podemos calcular cada columna de las matrices ar cuyos resultados se expresan de la siguiente forma.

8

0 0 0 0 0
0 0 0 0 0
ar1 =

0 1 cos() sen() 0 0
1 0 0 0 0

sen() cos() sen2 ()



0 0 0
1 0 0 0 0
a r2 =

0 sen() cos() 0 0
0 0 0 1 0


0 sen() cos() 0 0
0 0 0 1 0
ar3 =
0 sen() cos() sen2 () 0 0

0 0 0 0 1


0 1 cos() sen() 0 0
a r4 = 0 0 0 0 1
0 0 0 0 0

Ahora para pa calcular la matriz Cr , hay que analizar el comportamiento de los g.d.l. zi bajo los
movmientos de los g.d.l ri . Quedando la matriz como se muestra a continuacion.

0 1 cos() sen() 0 0
0 0 0 0 0
Cr = 0 1 cos() sen() 0 0

0 0 0 0 0

2.1.3. Matrices de rigidez


Las matrices K1 , K2 y K3 son de la misma forma, solo difieren el largo, en cambio la matriz K4 es de
diferente forma ya que esta esta condensada.
12 6 12 6
Le 2 Le Le 2 Le

6 6
4 2

Le Le
EI
K1 = K2 = K3 = 12 6 12 6

L Le 2 Le Le 2 Le

6 6
2 4

Le Le

3 3 3
Le 2 Le 2 Le

EI 3 3 3
K4 = Le 2 Le 2 Le
L
3 3
Le Le 3

Ahora, con la funcion Frame2DStiffness, calcularemos las matrices con sus unidades y en los ejes
globales.(La matriz cambia de dimensiones ya que la funcion que se nos pide utilizar trabaja con elementos
tipo marco)

9
K1 :

K2 :

K3 :

K4 :

10
11
2.1.4. Solucion del sistema Kr=F
Para resolver el sistema, primero hay que ensamblar la matriz K, y esta se ensambla de la siguiente manera.
X
K= ari T Ki ari

Logrando esta multiplicacion en Python, obtenemos la siguiente matriz de rigidez:



7577 1200 550 1788 0
1200 600 143 0 600
K= 550 143

887 0 790
0 600 790 1788 6577

luego, tenemos que encontrar el vector F, que se calcula de la siguiente forma:

F = f + Cr T Z donde f vendra siendo equivalente al vector fuerza que se requiere para el metodo de rigidez
manual y Z el vector de fuerza que actua bajo los g.d.l z.
Lo que nos queda un F de la siguiente manera:

2T EI

h T
qL 0 1 cos() sen() 0 0
2 cos()


P qL sin() 0 0 0 0 0
F = 2 2 + Z
0 1 cos() sen() 0 0

qL
2 2
qL
0 0 0 0 0
2


0
0
Con Z =
qL/2 sen()

qL/2 cos()


6
4,47

13,57
Quedando un vector F =
4,167
4,167

Finalmente, ahora resolveremos el sistema Kr = F r = K 1 F , dando como resultado el siguiente vector


r:
0,0020355
0,011929

r= 0,01585

0,0021435
0,004209

12
2.2. Figura 2
Ahora procederemos a ha realizar el mismo procedimiento pero con la Figura 2.

2.2.1. Grados de libertad y restricciones cinematicas


A continuacion se muestra como se deforma cada elemento bajo los g.d.l. que lo involucran.

2.2.2. Matrices de transformacion cinematica


Al igual que con la figura 1, se realizara el mismo procedimiento para calcular las matrices ari de los
elementos de la estructura dando como resultado la siguiente serie de matrices: (En esta figura no es
necesario calcular axi ni tampoco Cr ya que ni el vector x ni el z estan involucrados en el sistema)

13
 
0 0 0 0 0 0 0 0
ar1 =
cos() sin() 0 0 0 0 0 0

 
0 0 0 0 0 0 0 0
ar2 =
0 0 0 0 cos() sin() 0 0

 
cos() sin() 0 0 0 0 0 0
ar3 =
0 0 cos() sin() 0 0 0 0

14
 
cos() sin() 0 0 0 0 0 0
ar4 =
0 0 0 0 cos() sin() 0 0

 
1 0 0 0 0 0 0 0
ar5 =
0 0 0 0 0 0 1 0

 
0 0 cos() sin() 0 0 0 0
ar6 =
0 0 0 0 0 0 cos() sin()

 
0 0 0 0 cos() sin() 0 0
ar7 =
0 0 0 0 0 0 cos() sin()

 
0 0 0 0 cos() sin() 0 0
ar8 =
0 0 0 0 0 0 0 0

 
0 0 0 0 0 0 cos() sin()
a r9 =
0 0 0 0 0 0 0 0)

2.2.3. Matrices de rigidez


Las Matrices de rigidez que se utilizaran para esta figura son todas de laa misma forma, y esta es:
 
AE 1 1
K=
Le 1 1

Con la funcion Truss2DStiffness calcularemos las matrices de rigidez de los elementos con los ejes globales
de la estructura. Estas quedaran de la siguiente manera:
K1

K2

15
K3

K4

K5

K6

K7

16
K8

K9

2.2.4. Solucion del sistema Kr=F


Para resolver el sistema, primero hay que ensamblar la matriz K, y esta se ensambla de la siguiente manera.
X
K= ari T Ki ari

Logrando esta multiplicacion en Python, obtenemos la siguiente matriz de rigidez:



3,52 0,288 1,153 0,77 1,153 0,77 1 0
0,288
1,41 0,77 0,513 0,77 0,513 0 0
1,153 0,77 2,3 0 0 0 1,153 0,77

AE 0,77 0,513 0 1,026 0 0 0,77 0,513
K=
L 1,153 0,77 0 0 3,07 0 1,153 0,77

0,77
0,513 0 0 0 1,39 0,77 0,513

1 0 1,153 0,77 1,153 0,77 3,51 0,288
0 0 0,77 0,513 0,77 0,513 0,288 1,41
luego, tenemos que encontrar el vector F, que se calcula de la siguiente forma:

F = f + Cr T Z, donde f viene siendo el vector fuerza F que ya se calculo para el problema 1, y el vector Z
en esta figura es cero.
2,35
0

10

0
Lo que nos queda un F de la siguiente manera: F = 0 Por lo tanto tenemos que:


30

12,35
0

0,00635
0,00504

0,00686

0,00407
Kr = F r = K 1 F = 0,00351


0,01226

0,00402
0,00659

17
2.2.5. Grafico esfuerzos internos

18
Codigos de Python K9 =(1/1.667) * np . matrix ([[1. , -1] ,[ -1. ,1]])
Ar1 = np . matrix ([[0 ,0 ,0 ,0 ,0 ,0 ,0 ,0] ,[ c ( d ( b ) ) ,s ( d
( b ) ) ,0 ,0 ,0 ,0 ,0 ,0]])
# -* - coding : utf -8 -* - Ar2 = np . matrix ([[0 ,0 ,0 ,0 ,0 ,0 ,0 ,0] ,[0 ,0 ,0 ,0 , c ( d
""" ( a ) ) ,s ( d ( a ) ) ,0 ,0]])
Created on Wed Oct 19 0 0 : 1 8 : 1 0 2016 Ar3 = np . matrix ([[ c ( d ( g ) ) ,s ( d ( g ) )
,0 ,0 ,0 ,0 ,0 ,0] ,[0 ,0 , c ( d ( g ) ) ,s ( d ( g ) )
@author : Chago ,0 ,0 ,0 ,0]])
""" Ar4 = np . matrix ([[ c ( d ( g ) ) ,-s ( d ( g ) )
,0 ,0 ,0 ,0 ,0 ,0] ,[0 ,0 ,0 ,0 , c ( d ( g ) ) ,-s ( d ( g ) )
,0 ,0]])
import numpy as np Ar5 = np . matrix
import matplotlib . pylab as plt ([[1 ,0 ,0 ,0 ,0 ,0 ,0 ,0] ,[0 ,0 ,0 ,0 ,0 ,0 ,1 ,0]])
import cmath as math Ar6 = np . matrix ([[0 ,0 , c ( d ( g ) ) ,-s ( d ( g ) )
def Tr u s s 2 D S t i f f n e s s (E ,A ,L , alpha ) : ,0 ,0 ,0 ,0] ,[0 ,0 ,0 ,0 ,0 ,0 , c ( d ( g ) ) ,-s ( d ( g ) )
An = np . matrix ([[ c ( alpha ) ,s ( alpha ) ]])
,0. ,0.] ,[0. ,0. , c ( alpha ) ,s ( alpha ) ]]) Ar7 = np . matrix ([[0 ,0 ,0 ,0 , c ( d ( g ) ) ,s ( d ( g ) )
At = np . transpose ( An ) ,0 ,0] ,[0 ,0 ,0 ,0 ,0 ,0 , c ( d ( g ) ) ,s ( d ( g ) ) ]])
K = np . matrix ([[ A * E /L , - A * E / L ] ,[ - A * E /L , A * E / L Ar8 = np . matrix ([[0 ,0 ,0 ,0 , c ( d ( a ) ) ,-s ( d ( a ) )
]]) ,0 ,0] ,[0 ,0 ,0 ,0 ,0 ,0 ,0 ,0]])
Kg = At * K * An Ar9 = np . matrix ([[0 ,0 ,0 ,0 ,0 ,0 , c ( d ( b ) ) ,-s ( d ( b ) )
return ( Kg ) ] ,[0 ,0 ,0 ,0 ,0 ,0 ,0 ,0]])
T r u s s 2 D S t i f f n e s s (19000 ,1 ,5 ,0) L =5
K = AE / L *( Ar1 . T * K1 * Ar1 + Ar2 . T * K2 * Ar2 + Ar3 . T * K3 *
def ve ( Ua , Va , Ub , Vb ) : Ar3 + Ar4 . T * K4 * Ar4 + Ar5 . T * K5 * Ar5 + Ar6 . T * K6 *
return ( np . array ([ Ua , Va , Ub , Vb ]) ) Ar6 + Ar7 . T * K7 * Ar7 + Ar8 . T * K8 * Ar8 + Ar9 . T * K9 *
r = np . array Ar9 )
([0.0063 , -0.00524 ,0.00672 , -0.00416 ,0.00342 , -0.0116 P =10. ,0.00384 , -0.00677])
AE =19000
vef1 =( ve (0 ,0 , r [0] , r [1]) ) A =19000
vef2 =( ve (0 ,0 , r [4] , r [5]) ) E =1
vef3 =( ve ( r [0] , r [1] , r [2] , r [3]) ) alpha =1.3*10**( -5)
vef4 =( ve ( r [0] , r [1] , r [4] , r [5]) ) dT =50
vef5 =( ve ( r [0] , r [1] , r [6] , r [7]) ) F = np . matrix ([[ P - AE * alpha * dT ,0 ,P ,0 ,0 , -3* P ,
vef6 =( ve ( r [2] , r [3] , r [6] , r [7]) ) alpha * dT * AE ,0]])
vef7 =( ve ( r [4] , r [5] , r [6] , r [7]) ) K ** -1
vef8 =( ve ( r [4] , r [5] ,0 ,0) ) r1 = K ** -1* F . T
vef9 =( ve ( r [6] , r [7] ,0 ,0) ) factor =50
def T r u s s 2 D I n t e r n a l F o r c e s (E ,A ,L , alpha , ve ) :
xloc = np . linspace (0 ,100 , L )
U1 = ve [2]* c ( alpha ) + ve [3]* s ( alpha )
U2 = ve [0]* c ( alpha ) + ve [1]* s ( alpha ) # ## E s f u e r z o normal
F = np . array ([[ A * E / L * U1 - A * E / L * U2 ] ,[ - A * E / L * xB = L * c ( alpha )
U1 + A * E / L * U2 ]]) yB = L * s ( alpha )
Nloc = - F [0] xgeom1 = np . array ([[0. ,0.] ,[ L , L + L /3]])
return ( xloc , Nloc ) xgeom2 = np . array ([[0. ,0.] ,[ L + L /2 , L ]])
xgeom3 = np . array ([[ L , L + L /3] ,[ L + L /2 , L +2* L /3]])
a =33.7 xgeom4 = np . array ([[ L , L + L /3] ,[ L + L /2 , L ]])
b =53.13 xgeom5 = np . array ([[ L , L + L /3] ,[2* L , L + L /3]])
g =33.7 xgeom6 = np . array ([[ L + L /2 , L +2* L /3] ,[2* L , L + L
def c ( alpha ) : /3]])
return ( math . cos ( alpha ) ) xgeom7 = np . array ([[ L + L /2 , L ] ,[2* L , L + L /3]])
def s ( alpha ) : xgeom8 = np . array ([[ L + L /2 , L ] ,[3* L ,0]])
return ( math . sin ( alpha ) ) xgeom9 = np . array ([[2* L , L + L /3] ,[3* L ,0]])
AE =19000 xloc1 , Nloc1 = T r u s s 2 D I n t e r n a l F o r c e s (E ,A ,L ,b ,
vef1 )
def d ( angulo ) : xloc2 , Nloc2 = T r u s s 2 D I n t e r n a l F o r c e s (E ,A ,L ,a ,
angulo2 =( np . pi /180) * angulo vef2 )
return ( angulo2 ) xloc3 , Nloc3 = T r u s s 2 D I n t e r n a l F o r c e s (E ,A ,L ,g ,
vef3 )
K1 =(1/1.667) * np . matrix ([[1. , -1] ,[ -1. ,1]]) xloc4 , Nloc4 = T r u s s 2 D I n t e r n a l F o r c e s (E ,A ,L , -g ,
K2 =(1/1.8) * np . matrix ([[1. , -1] ,[ -1. ,1]]) vef4 )
K3 =(1/0.6) * np . matrix ([[1. , -1] ,[ -1. ,1]]) xloc5 , Nloc5 = T r u s s 2 D I n t e r n a l F o r c e s (E ,A ,L ,0 ,
K4 =(1/0.6) * np . matrix ([[1. , -1] ,[ -1. ,1]]) vef5 )
K5 = np . matrix ([[1. , -1] ,[ -1. ,1]]) xloc6 , Nloc6 = T r u s s 2 D I n t e r n a l F o r c e s (E ,A ,L , -g ,
K6 =(1/0.6) * np . matrix ([[1. , -1] ,[ -1. ,1]]) vef6 )
K7 =(1/0.6) * np . matrix ([[1. , -1] ,[ -1. ,1]]) xloc7 , Nloc7 = T r u s s 2 D I n t e r n a l F o r c e s (E ,A ,L ,g ,
K8 =(1/1.8) * np . matrix ([[1. , -1] ,[ -1. ,1]])

19
vef7 ) [1][1]])
xloc8 , Nloc8 = T r u s s 2 D I n t e r n a l F o r c e s (E ,A ,L , -a , plt . title ( " Estructura deformada factor =
vef8 ) 50 " , size =17)
xloc9 , Nloc9 = T r u s s 2 D I n t e r n a l F o r c e s (E ,A ,L , -b , # plt . axes () . s e t _ a s p e c t (" equal ")
vef9 ) # plt . xlabel ( Largo )
scale =0.03 plt . ylabel ( Magnitud )
def ydiagram ( funcion ) : plt . fill ( Xdiag , Ydiag , g , alpha =0.5)
ydiagram = np . ones (100) return ()
ydiagram = ydiagram * funcion ydiagram1 = ydiagram ( Nloc1 )
return ( ydiagram ) ydiagram2 = ydiagram ( Nloc2 )
ydiagram3 = ydiagram ( Nloc3 )
def Plot2DDiagram ( xgeom , xloc , ydiagram , scale ) : ydiagram4 = ydiagram ( Nloc4 )
ydiagram = ydiagram * scale ydiagram5 = ydiagram ( Nloc5 )
n = len ( ydiagram ) ydiagram6 = ydiagram ( Nloc6 )
val_i = ydiagram [0] ydiagram7 = ydiagram ( Nloc7 )
val_f = ydiagram [n -1.] ydiagram8 = ydiagram ( Nloc8 )
if xgeom [0][0] - xgeom [1][0]==0.: ydiagram9 = ydiagram ( Nloc9 )
alpha = np . pi /2. xgeom1f = np . array ([[0. ,0.] ,[ L + r [0] , L + L /3+ r
else : [1]]])
alpha = np . arctan (( xgeom [1][1] - xgeom xgeom2f = np . array ([[0. ,0.] ,[ L + L /2+ r [4] , L + r
[0][1]) /( xgeom [1][0] - xgeom [0][0]) [5]]])
) xgeom3f = np . array ([[ L + r [0] , L + L /3+ r [1]] ,[ L + L /2+
plt . plot ([ xgeom [0][0] , xgeom [1][0]] ,[ xgeom r [2] , L +2* L /3+ r [3]]])
[0][1] , xgeom [1][1]] , color = k , lw =2) xgeom4f = np . array ([[ L + r [0] , L + L /3+ r [1]] ,[ L + L /2+
x = np . linspace ( xgeom [0][0] , xgeom [1][0] , n ) r [4] , L + r [5]]])
y = np . linspace ( xgeom [0][1] , xgeom [1][1] , n ) xgeom5f = np . array ([[ L + r [0] , L + L /3+ r [1]] ,[2* L + r
Xdiag =x - ydiagram * np . sin ( alpha ) [6] , L + L /3+ r [7]]])
Ydiag = y + ydiagram * np . cos ( alpha ) xgeom6f = np . array ([[ L + L /2+ r [2] , L +2* L /3+ r
plt . text ( Xdiag [0] , Ydiag [0] , float ( round ( [3]] ,[2* L + r [6] , L + L /3+ r [7]]])
val_i / scale ,2) ) , fontsize =10.) xgeom7f = np . array ([[ L + L /2+ r [4] , L + r [5]] ,[2* L + r
# plt . text ( Xdiag [n -1] , Ydiag [n -1] , float ( [6] , L + L /3+ r [7]]])
round ( val_f / scale ,2) ) , f o n t s i z e =10.) xgeom8f = np . array ([[ L + L /2+ r [4] , L + r [5]] ,[3* L
Xdiag = np . hstack ([ xgeom [0][0] , Xdiag , xgeom ,0]])
[1][0]]) xgeom9f = np . array ([[2* L + r [6] , L + L /3+ r [7]] ,[3* L
Ydiag = np . hstack ([ xgeom [0][1] , Ydiag , xgeom ,0]])
[1][1]]) Plot2DDiagram ( xgeom1 , xloc1 , ydiagram1 , scale )
plt . title ( " Esfuerzo Normal ( scale =0.03) " , Plot2DDiagram ( xgeom2 , xloc2 , ydiagram2 , scale
size =17) )
plt . axes () . set_aspect ( " equal " ) Plot2DDiagram ( xgeom3 , xloc3 , ydiagram3 , scale )
plt . xlabel ( Largo ) Plot2DDiagram ( xgeom4 , xloc4 , ydiagram4 , scale )
plt . ylabel ( Magnitud ) Plot2DDiagram ( xgeom5 , xloc5 , ydiagram5 , scale )
plt . fill ( Xdiag , Ydiag , g , alpha =0.5) Plot2DDiagram ( xgeom6 , xloc6 , ydiagram6 , scale )
return () Plot2DDiagram ( xgeom7 , xloc7 , ydiagram7 , scale )
def Plot2DD iagram2 ( xgeom , xloc , ydiagram , scale ) Plot2DDiagram ( xgeom8 , xloc8 , ydiagram8 , scale )
: Plot2DDiagram ( xgeom9 , xloc9 , ydiagram9 , scale )
ydiagram = ydiagram * scale Plot2 DDiagra m2 ( xgeom1f , xloc1 , np . zeros (100) ,
n = len ( ydiagram ) scale )
val_i = ydiagram [0] Plot2 DDiagra m2 ( xgeom2f , xloc2 , np . zeros (100) ,
val_f = ydiagram [n -1.] scale )
if xgeom [0][0] - xgeom [1][0]==0.: Plot2 DDiagra m2 ( xgeom3f , xloc3 , np . zeros (100) ,
alpha = np . pi /2. scale )
else : Plot2 DDiagra m2 ( xgeom4f , xloc4 , np . zeros (100) ,
alpha = np . arctan (( xgeom [1][1] - xgeom scale )
[0][1]) /( xgeom [1][0] - xgeom [0][0]) Plot2 DDiagra m2 ( xgeom5f , xloc5 , np . zeros (100) ,
) scale )
plt . plot ([ xgeom [0][0] , xgeom [1][0]] ,[ xgeom Plot2 DDiagra m2 ( xgeom6f , xloc6 , np . zeros (100) ,
[0][1] , xgeom [1][1]] , color = b , lw =2) scale )
x = np . linspace ( xgeom [0][0] , xgeom [1][0] , n ) Plot2 DDiagra m2 ( xgeom7f , xloc7 , np . zeros (100) ,
y = np . linspace ( xgeom [0][1] , xgeom [1][1] , n ) scale )
Xdiag =x - ydiagram * np . sin ( alpha ) Plot2 DDiagra m2 ( xgeom8f , xloc8 , np . zeros (100) ,
Ydiag = y + ydiagram * np . cos ( alpha ) scale )
# plt . text ( Xdiag [0] , Ydiag [0] , float ( round Plot2 DDiagra m2 ( xgeom9f , xloc9 , np . zeros (100) ,
( val_i / scale ,2) ) , f o n t s i z e =10.) scale )
# plt . text ( Xdiag [n -1] , Ydiag [n -1] , float ( plt . show ()
round ( val_f / scale ,2) ) , f o n t s i z e =10.)
Xdiag = np . hstack ([ xgeom [0][0] , Xdiag , xgeom a =26.565
[1][0]]) def c ( alpha ) :
Ydiag = np . hstack ([ xgeom [0][1] , Ydiag , xgeom return ( math . cos ( alpha ) )

20
def s ( alpha ) : de = np . array ([ u1 , v1 , theta1 , u2 , v2 , theta2 ])
return ( math . sin ( alpha ) ) return ( de )
alpha =2*10**( -5) vef1 =( de (0 ,0 ,0 , - r [2]* c ( d ( a ) ) * s ( d ( a ) ) ,-r [1] , r
dT =30 [0]) )
h =1 vef2 =( de ( r [1] ,0 , r [0] , r [1] , r [2] , r [3]) )
P =10 vef3 =( de ( r [1] , r [2] , r [3] , r [1] , - r [2]* c ( d ( a ) ) * s (
L =5 d ( a ) ) ,r [4]) )
q=P/L vef4 =( de ( r [1] ,0 ,0 ,0 ,0 , r [4]) )
def P l o t 2 D F r a m e D e f o r m e d ( xgeom , de , scaleparam ) :
EI =5000 L = np . sqrt (( xgeom [0][0] - xgeom [1][0]) **2+(
E =5000 xgeom [0][1] - xgeom [1][1]) **2)
A =10**16 x = np . linspace (0. , L ,1000)
if xgeom [0][0] - xgeom [1][0]==0.:
def d ( angulo ) : alpha = np . pi /2.
angulo2 =( np . pi /180) * angulo else :
return ( angulo2 ) alpha = np . arctan (( xgeom [1][1] - xgeom
L2 =( np . sqrt (5) /2) *5 [0][1]) /( xgeom [1][0] - xgeom [0][0])
K1 = np . matrix ([[ EI / L *12/ L **2 , EI / L *6/ L , EI / L )
* -12/ L **2 , EI / L *6/ L ] ,[ EI / L *6/ L , EI / L *4 , EI / L # interp . f l e x u r a l
* -6/ L , EI / L *2] ,[ EI / L * -12/ L **2 , EI / L * -6/ L , EI N1 =1. -(3* x **2) /( L **2) +(2* x **3) /( L **3) # vA
/ L *12/ L **2 , EI / L * -6/ L ] ,[ EI / L *6/ L , EI / L *2 , EI N2 =x -(2* x **2) /( L ) +( x **3) /( L **2) # thetaA
/ L * -6/ L , EI / L *4]]) N3 =(3* x **2) /( L **2) -(2* x **3) /( L **3) # vB
K2 = np . matrix ([[ EI / L2 *12/ L2 **2 , EI / L2 *6/ L2 , EI / N4 = -( x **2) /( L ) +( x **3) /( L **2) # thetaB
L2 * -12/ L2 **2 , EI / L2 *6/ L2 ] ,[ EI / L2 *6/ L2 , EI / N5 =1. - x / L
L2 *4 , EI / L2 * -6/ L2 , EI / L2 *2] ,[ EI / L2 * -12/ L2 N6 = x / L
**2 , EI / L2 * -6/ L2 , EI / L2 *12/ L2 **2 , EI / L2 * -6/ xdef = x +( N5 * de [0]+ N6 * de [3]) * scaleparam
L2 ] ,[ EI / L2 *6/ L2 , EI / L2 *2 , EI / L2 * -6/ L2 , EI / L2 ydef =( N1 * de [1]+ N2 * de [2]+ N3 * de [4]+ N4 * de
*4]]) [5]) * scaleparam
K3 = np . matrix ([[ EI / L2 *12/ L2 **2 , EI / L2 *6/ L2 , EI / U1 =[]
L2 * -12/ L2 **2 , EI / L2 *6/ L2 ] ,[ EI / L2 *6/ L2 , EI / U2 =[]
L2 *4 , EI / L2 * -6/ L2 , EI / L2 *2] ,[ EI / L2 * -12/ L2 i =0
**2 , EI / L2 * -6/ L2 , EI / L2 *12/ L2 **2 , EI / L2 * -6/ while i <1000:
L2 ] ,[ EI / L2 *6/ L2 , EI / L2 *2 , EI / L2 * -6/ L2 , EI / L2 uf = np . cos ( alpha ) * xdef [ i ] - np . sin ( alpha
*4]]) ) * ydef [ i ]
Ar1 = np . matrix vf = np . sin ( alpha ) * xdef [ i ]+ np . cos ( alpha
([[0 ,0 ,0 ,0 ,0] ,[0 ,0 ,0 ,0 ,0] ,[0 , -1 , - s ( d ( a ) ) * ) * ydef [ i ]
c ( d ( a ) ) ,0 ,0] ,[1 ,0 ,0 ,0 ,0]]) U1 . append ( uf )
Ar2 = np . matrix ([[0 , - s ( d ( a ) ) ,-c ( d ( a ) ) * s ( d ( a ) ) U2 . append ( vf )
**2 ,0 ,0] ,[1 ,0 ,0 ,0 ,0] ,[0 , - s ( d ( a ) ) ,c ( d ( a ) ) i +=1
,0 ,0] ,[0 ,0 ,0 ,1 ,0]]) U1 = np . array ( U1 )
Ar3 = np . matrix ([[0 , s ( d ( a ) ) ,c ( d ( a ) ) U2 = np . array ( U2 )
,0 ,0] ,[0 ,0 ,0 ,1 ,0] ,[0 , s ( d ( a ) ) ,-c ( d ( a ) ) * s ( d plt . plot ( U1 + xgeom [0][0] , U2 + xgeom [0][1] , " b
( a ) ) **2 ,0 ,0] ,[0 ,0 ,0 ,0 ,1]]) " , lw =3)
Ar4 = np . matrix ([[0 ,1 , - s ( d ( a ) ) * c ( d ( a ) ) plt . plot ([ xgeom [0][0] , xgeom [1][0]] ,[ xgeom
,0 ,0] ,[0 ,0 ,0 ,0 ,1] ,[0 ,0 ,0 ,0 ,0]]) [0][1] , xgeom [1][1]] , " k " , lw =3)
K4 = EI / L * np . matrix ([[3/ L **2 ,3/ L , -3/ L **2] ,[3/ L
,3 , -3/ L ] ,[ -3/ L **2 , -3/ L ,3/ L **2]]) return ()
K = Ar1 . T * K1 * Ar1 + Ar2 . T * K2 * Ar2 + Ar3 . T * K3 * Ar3 + Ar4 . xgeom1 = np . array ([[0. ,0.] ,[0 , L ]])
T * K4 * Ar4 xgeom2 = np . array ([[0. , L ] ,[L , L + L /2]])
Cr = np . matrix ([[0 ,1 , c ( d ( a ) ) * s ( d ( a ) ) xgeom3 = np . array ([[ L , L + L /2] ,[2* L , L ]])
,0 ,0] ,[0 ,0 ,0 ,0 ,0] ,[0 ,1 , - c ( d ( a ) ) * s ( d ( a ) ) xgeom4 = np . array ([[2* L ,0] ,[2* L , L ]])
,0 ,0] ,[0 ,0 ,0 ,0 ,0]]) P l o t 2 D F r a m e D e f o r m e d ( xgeom1 , vef1 ,30)
P l o t 2 D F r a m e D e f o r m e d ( xgeom2 , vef2 ,30)
f = np . matrix ([[2* alpha * dT * EI /h , -( q * L /2) * s ( d ( a ) P l o t 2 D F r a m e D e f o r m e d ( xgeom3 , vef3 ,30)
) ,-P -( q * L /2) * c ( d ( a ) ) ,-q * L **2/12 , q * L P l o t 2 D F r a m e D e f o r m e d ( xgeom4 , vef4 ,30)
**2/12]]) def F r a m e 2 D I n t e r n a l F o r c e s (E ,A ,I ,L , alpha ,q , vef
Z = np . matrix ([[0 ,0 ,( - q * L /2) * s ( d ( a ) ) ,( q * L /2) * c ( ):
d ( a ) ) ]]) xloc = np . linspace (0 ,L ,100)
F = f . T + Cr . T * Z . T K = np . matrix ([[ A * E /L ,0 ,0 , - A * E /L
rf = K ** -1* F ,0 ,0] ,[0 ,12* E * I / L **3 ,6* E * I / L
r = np . array **2 ,0 , -12* E * I / L **3 ,6* E * I / L **2] ,[0 ,6* E
([0.00203 , -0.01193 , -0.01585 , -0.00214 ,0.0042]) * I / L **2 ,4* E * I /L ,0 , -6* E * I / L **2 ,2* E * I / L
] ,[ - A * E /L ,0 ,0 , A * E /L ,0 ,0] ,[0 , -12* E * I / L
I =1 **3 , -6* E * I / L **2 ,0 ,12* E * I / L **3 , -6* E * I /
def ve ( Ua , Va , Ta , Ub , Vb , Tb ) : L **2] ,[0 ,6* E * I / L **2 ,2* E * I /L ,0 , -6* E * I /
return ( np . matrix ([ Ua , Va , Ta , Ub , Vb , Tb ]) ) L **2 ,4* E * I / L ]])
An = np . matrix ([[ c ( alpha ) ,s ( alpha )
def de ( u1 , v1 , theta1 , u2 , v2 , theta2 ) : ,0 ,0 ,0 ,0] ,[ - s ( alpha ) ,c ( alpha )

21
,0 ,0 ,0 ,0] ,[0 ,0 ,1 ,0 ,0 ,0] ,[0 ,0 ,0 , c ( plt . show ()
alpha ) ,s ( alpha ) ,0] ,[0 ,0 ,0 , - s ( alpha ) ,c Plot2DDiagram ( xgeom , xloc , ydiagram2 , scale )
( alpha ) ,0] ,[0 ,0 ,0 ,0 ,0 ,1]]) plt . show ()
At = np . transpose ( An ) Plot2DDiagram ( xgeom , xloc , ydiagram3 , scale )
fl = np . transpose ( np . matrix ([[0 , - q * L /2 , -( q * plt . show ()
L **2) /12 ,0 , -( q * L ) /2 ,( q * L **2) /12]]) )
fg = At * fl
fe = K * An * vef .T - fg
Nloc = - float ( fe [0])
Vloc = float ( fe [1]) -q * xloc
Mloc = - float ( fe [2]) + float ( fe [1]) * xloc -( q *(
xloc ) **2) /2
return ( xloc , Nloc , Vloc , Mloc )
# ## g r a f i c o s de e s f u e r z o s
xloc , Nloc , Vloc , Mloc = F r a m e 2 D I n t e r n a l F o r c e s (E ,A
,I ,L , alpha ,q , vef )
xB = L * c ( alpha )
yB = L * s ( alpha )

xloc1 , Nloc1 , Vloc1 , Mloc1 = F r a m e 2 D I n t e r n a l F o r c e s


(E ,A ,I ,L ,270 , q , vef1 )
xloc2 , Nloc2 , Vloc2 , Mloc2 = F r a m e 2 D I n t e r n a l F o r c e s
(E ,A ,I ,L ,a ,q , vef2 )
xloc3 , Nloc3 , Vloc3 , Mloc3 = F r a m e 2 D I n t e r n a l F o r c e s
(E ,A ,I ,L , -a ,q , vef3 )
xloc4 , Nloc4 , Vloc4 , Mloc4 = F r a m e 2 D I n t e r n a l F o r c e s
(E ,A ,I ,L ,90 , q , vef4 )
scale =0.001
def ydiagram ( funcion ) :
ydiagram = np . linspace (1 ,1 ,100) * funcion
return ( ydiagram )
ydiagram1 = ydiagram ( Nloc )
ydiagram2 = ydiagram ( Vloc )
ydiagram3 = ydiagram ( Mloc )
def Plot2DDiagram ( xgeom , xloc , ydiagram , scale ) :
ydiagram = ydiagram * scale
n = len ( ydiagram )
val_i = ydiagram [0]
val_f = ydiagram [n -1.]
if xgeom [0][0] - xgeom [1][0]==0.:
alpha = np . pi /2.
else :
alpha = np . arctan (( xgeom [1][1] - xgeom
[0][1]) /( xgeom [1][0] - xgeom [0][0])
)
plt . plot ([ xgeom [0][0] , xgeom [1][0]] ,[ xgeom
[0][1] , xgeom [1][1]] , color = k , lw =4)
x = np . linspace ( xgeom [0][0] , xgeom [1][0] , n )
y = np . linspace ( xgeom [0][1] , xgeom [1][1] , n )
Xdiag =x - ydiagram * np . sin ( alpha )
Ydiag = y + ydiagram * np . cos ( alpha )
plt . text ( Xdiag [0] , Ydiag [0] , round ( val_i
,2) / scale , fontsize =10.)
plt . text ( Xdiag [n -1] , Ydiag [n -1] , round (
val_f ,2) / scale , fontsize =10.)
Xdiag = np . hstack ([ xgeom [0][0] , Xdiag , xgeom
[1][0]])
Ydiag = np . hstack ([ xgeom [0][1] , Ydiag , xgeom
[1][1]])
plt . axes () . set_aspect ( " equal " )
plt . fill ( Xdiag , Ydiag , g , alpha =1)
plt . title ( " Esfuerzo por momento ( scale
=0 ,001) " , size =17)
plt . xlabel ( Largo )
plt . ylabel ( Magnitud )
plt . xlim ( -5 ,30)
return ()
Plot2DDiagram ( xgeom , xloc , ydiagram1 , scale )

22

Potrebbero piacerti anche