Beam
El elemento Beam
(viga) es un elemento finito bidimensional donde las coordenadas locales y globales coinciden. Está caracterizado por una función de forma lineal. El elemento Beam
tiene un modulo de elasticidad E, momento de inercia I y longitud L. Cada elemento Beam
tiene dos nodos y se asume horizontal como se muestra en la figura. En este caso la matriz de rigidez del elemento está dada por la matriz siguiente, asumiendo que la deformación axial es despreciable:
Está claro que el elemento Beam
tiene cuatro grados de libertad, dos en cada nodo: un desplazamiento transversal y una rotación. La convención de signos utilizada es la tradicional: los desplazamientos son positivos hacia arriba y las rotaciones cuando son antihorario.
In [22]:
%matplotlib inline
import numpy as np
from nusa import *
import itertools
import matplotlib.pyplot as plt
def pairwise(iterable):
#~ "s -> (s0,s1), (s1,s2), (s2, s3), ..."
a, b = itertools.tee(iterable)
next(b, None)
return zip(a, b)
# Input data
E = 210e9 # Pa
I = 1e-5
L = 1
P = 10e3
nelm = 10
parts = np.linspace(0,L,nelm)
nodos = []
for xc in parts:
cn = Node((xc,0))
nodos.append(cn)
elementos = []
for x in pairwise(nodos):
ni,nj = x[0], x[1]
ce = Beam((ni,nj),E,I)
elementos.append(ce)
m = BeamModel()
for n in nodos: m.add_node(n)
for e in elementos: m.add_element(e)
m.add_constraint(nodos[0], ux=0, uy=0, ur=0)
m.add_force(nodos[-1], (-P,))
m.plot_model()
m.solve()
m.plot_disp(1)
xx = np.linspace(0,L)
d = ((-P*xx**2.0)/(6.0*E*I))*(3*L - xx)
plt.plot(xx,d)
plt.axis("auto")
plt.xlim(0,1.1*L)
Out[22]:
Ejemplo 2. Determine los desplazamientos nodales y rotaciones, fuerzas nodales globales, y fuerzas en elementos para la viga mostrada en la figura. Se ha discretizado la viga como se indica en la numeración nodal. La viga está fija en los nodos 1 y 5, y tiene un soporte de rodillo en el nodo 3. Las cargas verticales de 10 000 lb cada una son aplicadas en los nodos 2 y 4. Sea E=300x106 psi and I=500 in4.
In [14]:
"""
Logan, D. (2007). A first course in the finite element analysis.
Example 4.2 , pp. 166.
"""
from nusa.core import *
from nusa.model import *
from nusa.element import *
# Input data
E = 30e6
I = 500.0
P = 10e3
L = 10*(12.0) # ft -> in
# Model
m1 = BeamModel("Beam Model")
# Nodes
n1 = Node((0,0))
n2 = Node((10*12,0))
n3 = Node((20*12,0))
n4 = Node((30*12,0))
n5 = Node((40*12,0))
# Elements
e1 = Beam((n1,n2),E,I)
e2 = Beam((n2,n3),E,I)
e3 = Beam((n3,n4),E,I)
e4 = Beam((n4,n5),E,I)
# Add elements
for nd in (n1,n2,n3,n4,n5): m1.add_node(nd)
for el in (e1,e2,e3,e4): m1.add_element(el)
m1.add_force(n2,(-P,))
m1.add_force(n4,(-P,))
m1.add_constraint(n1, ux=0,uy=0,ur=0) # fixed
m1.add_constraint(n5, ux=0,uy=0,ur=0) # fixed
m1.add_constraint(n3, uy=0, ur=0) # fixed
m1.add_constraint(n2, ur=0)
m1.add_constraint(n4, ur=0)
m1.plot_model()
m1.solve() # Solve model
# Desplazamientos nodales y rotaciones
print("Desplazamientos nodales y rotaciones")
print("UY \t UR")
for node in m1.get_nodes():
print("{0} \t {1}".format(node.uy, node.ur))
# Fuerzas nodales globales
print("\nFuerzas nodales globales")
print("FY \t M")
for node in m1.get_nodes():
print("{0} \t {1}".format(node.fy, node.m))
# Fuerzas en elementos
print("\nFuerzas en elementos")
for element in m1.get_elements():
print("\nFY:\n{0} \n M:\n{1}\n".format(element.fy, element.m))
In [15]:
# Dibujando diagramas de cortante y momento flexionante
m1.plot_shear_diagram()
m1.plot_moment_diagram()
In [ ]:
In [109]:
"""
Beer & Johnston. (2012) Mechanics of materials.
Problem 9.13 , pp. 568.
"""
# Input data
E = 29e6
I = 291 # W14x30
P = 35e3
L1 = 5*12 # in
L2 = 10*12 #in
# Model
m1 = BeamModel("Beam Model")
# Nodes
n1 = Node((0,0))
n2 = Node((L1,0))
n3 = Node((L1+L2,0))
# Elements
e1 = Beam((n1,n2),E,I)
e2 = Beam((n2,n3),E,I)
# Add elements
for nd in (n1,n2,n3): m1.add_node(nd)
for el in (e1,e2): m1.add_element(el)
m1.add_force(n2, (-P,))
m1.add_constraint(n1, ux=0, uy=0) # fixed
m1.add_constraint(n3, uy=0) # fixed
m1.solve() # Solve model
m1.plot_shear_diagram()
m1.plot_moment_diagram()
In [112]:
n1.fy
Out[112]:
In [175]:
"""
Beer & Johnston. (2012) Mechanics of materials.
Problem 9.13 , pp. 568.
"""
# Datos
P1 = 3e3
P2 = 3e3
M1 = 450
E = 200e9
I = (1/12)*(50e-3)*(60e-3)**3
n1 = Node((0,0))
n2 = Node((0.3,0))
n3 = Node((0.5,0))
n4 = Node((0.7,0))
n5 = Node((1,0))
e1 = Beam((n1,n2), E, I)
e2 = Beam((n2,n3), E, I)
e3 = Beam((n3,n4), E, I)
e4 = Beam((n4,n5), E, I)
model_cp = BeamModel()
for nodo in (n1,n2,n3,n4,n5): model_cp.add_node(nodo)
for el in (e1,e2,e3,e4): model_cp.add_element(el)
model_cp.add_constraint(n1, ux=0, uy=0)
model_cp.add_constraint(n5, uy=0)
model_cp.add_force(n2, (-P1,))
model_cp.add_force(n4, (-P2,))
model_cp.add_moment(n3, (-M1,))
model_cp.solve()
model_cp.plot_shear_diagram()
model_cp.plot_moment_diagram()
In [185]:
uy = []
for n in model_cp.get_nodes():
uy.append(n.fy)
In [186]:
plt.plot(uy)
Out[186]:
In [ ]: