Contenido bajo licencia Creative Commons BY 4.0 y código bajo licencia MIT. © Juan Gómez y Nicolás Guarín-Zapata 2020. Este material es parte del curso Modelación Computacional en el programa de Ingeniería Civil de la Universidad EAFIT.
from sympy import *
init_session()
IPython console for SymPy 1.4 (Python 3.7.3-64-bit) (ground types: python) These commands were executed: >>> from __future__ import division >>> from sympy import * >>> x, y, z, t = symbols('x y z t') >>> k, m, n = symbols('k m n', integer=True) >>> f, g, h = symbols('f g h', cls=Function) >>> init_printing() Documentation can be found at https://docs.sympy.org/1.4/
Tomemos un elemento tipo cercha que se encuentra horizontal.
Para este, podemos escribir el balance de fuerzas en componentes como
∑Fx=0,∑Fy=0.Y esto podemos escribirlo de forma matricial de la siguiente manera
[+k0−k00000−k0+k00000]{u1v1u2v2}={−f10−f20}.Ahora, queremos expresar nuestro sistema de ecuaciones en un sistema rotado un ángulo θ.
Las componentes estarían dadas por
u′1=u1cosθ+v1sinθ,v′1=−u1sinθ+v1cosθ,u′2=u2cosθ+v2sinθ,v′2=−u2sinθ+v2cosθ,o, matricialmente,
{u′1v′1u′2v′2}=[cosθsinθ00−sinθcosθ0000cosθsinθ00−sinθcosθ]⏟T{u1v1u2v2}.Que podemos escribir de manera abreviada como
{U′}=[T]{U}.Tenemos que
[K]{U′}={F},[K][T]{U}=[T]{F}.Y, multiplicando ambos lados por [T]T, obtenemos [T]T[K][T]{U}=[T]T[T]⏟[I]{F},[T]T[K][T]{U}={F}.
Calculemos las matrices de rigidez para los elementos de la siguiente cercha.
En donde la sección transversal (A) y módulo de Young (E) son los mismos para todas las barras.
Para facilitar los cálculos, haremos uso de SymPy.
A, E, L, theta = symbols("A E L theta")
L0, L1, L2 = symbols("L0 L1 L2")
T = Matrix([
[cos(theta), -sin(theta), 0 ,0],
[sin(theta), cos(theta), 0 ,0],
[0, 0, cos(theta), -sin(theta)],
[0, 0, sin(theta), cos(theta)]])
rigidez_local = A*E/L * Matrix([
[1, 0, -1, 0],
[0, 0, 0, 0],
[-1, 0, 1, 0],
[0, 0, 0, 0]])
Veamos las matrices que definimos.
T
rigidez_local
Para este elemento, tenemos que el ángulo es 0, luego
rigidez_0 = T.T.subs(theta, 0) * rigidez_local.subs(L, L0) * T.subs(theta, 0)
rigidez_0
Para este elemento θ=5π/6, luego
rigidez_1 = T.T.subs(theta, 5*pi/6) * rigidez_local.subs(L, L1) * T.subs(theta, 5*pi/6)
rigidez_1
Para este elemento θ=π/2, luego
rigidez_2 = T.T.subs(theta, pi/2) * rigidez_local.subs(L, L2) * T.subs(theta, pi/2)
rigidez_2