IV. Generalización 🚀 #
Esta sección demuestra la versatilidad del Método de la Rigidez, mostrando cómo el mismo algoritmo de ensamblaje y solución se aplica a estructuras que poseen diferentes Grados de Libertad (GDL) y modos de deformación (axial vs. flexión).
A. Armaduras 2D (Trusses) #
Las armaduras son estructuras que solo transmiten fuerza axial. Utilizan la matriz \(\mathbf{K}_{\text{global}}\) de la barra axial \(4 \times 4\) desarrollada en la Sección I.
GDL Nodal #
- Cada nudo posee dos GDL: Desplazamiento horizontal (\(u_x\)) y Desplazamiento vertical (\(u_y\)).
- Elemento: 4 GDL totales.
Aplicación Práctica: Estructura Triangular (Mapeo \(6 \times 6\)) #
El ensamblaje para armaduras sigue la superposición directa de la matriz \(4 \times 4\) del elemento barra dentro de la matriz global \(\mathbf{K}\) del sistema (\(6 \times 6\) para un triángulo), reforzando el concepto de suma en las GDL compartidas.
B. Vigas Sometidas a Flexión (Beam Elements) #
El análisis de vigas introduce la capacidad de un elemento para resistir momentos y deformaciones por flexión.
GDL Nodal #
- Cada nudo posee dos GDL: Desplazamiento vertical (\(v\)) y Rotación (\(\theta\)).
- Elemento: 4 GDL totales (dos por nudo).
Matriz de Rigidez Local del Elemento (\(\mathbf{k}_{\text{viga}}\)) #
La matriz de rigidez local para flexión relaciona las fuerzas cortantes (\(V\)) y los momentos (\(M\)) nodales con los desplazamientos verticales (\(v\)) y las rotaciones (\(\theta\)). Depende de la rigidez a flexión (\(EI\)).
$$\begin{pmatrix} V_1 \\ M_1 \\ V_2 \\ M_2 \end{pmatrix} = \mathbf{k}_{\text{viga, local}} \begin{pmatrix} v_1 \\ \theta_1 \\ v_2 \\ \theta_2 \end{pmatrix}$$$$\mathbf{k}_{\text{viga, local}} = \frac{EI}{L^3} \begin{pmatrix} 12 & 6L & -12 & 6L \\ 6L & 4L^2 & -6L & 2L^2 \\ -12 & -6L & 12 & -6L \\ 6L & 2L^2 & -6L & 4L^2 \end{pmatrix}$$
C. Generalización a Marcos y Vigas Inclinadas (6 GDL) #
Cuando el elemento no es horizontal (como en un marco o un pórtico), sus deformaciones axiales y por flexión se acoplan. Para un análisis completo, se utiliza un elemento de marco con 6 GDL (3 por nudo: \(u_x, u_y, \theta\)). Sin embargo, si solo se considera la flexión, podemos enfocarnos en la matriz de transformación para los 4 GDL de flexión/cortante.
1. La Matriz de Transformación para Flexión (\(\mathbf{T}_{\text{viga}}\)) #
Para una viga que solo tiene los GDL \(v\) y \(\theta\), solo necesitamos transformar los desplazamientos verticales (\(v\)) a los ejes globales, ya que la rotación (\(\theta\)) se considera un escalar que no cambia con la rotación del sistema de coordenadas.
La matriz \(\mathbf{T}_{\text{viga}}\) de \(4 \times 4\) utiliza los cosenos directores (\(c = \cos\theta, s = \sin\theta\)):
$$\begin{pmatrix} v'_1 \\ \theta'_1 \\ v'_2 \\ \theta'_2 \end{pmatrix}_{\text{local}} = \mathbf{T}_{\text{viga}} \begin{pmatrix} U_{1y} \\ \Theta_1 \\ U_{2y} \\ \Theta_2 \end{pmatrix}_{\text{global}}$$$$\mathbf{T}_{\text{viga}} = \begin{pmatrix} c & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & c & 0 \\ 0 & 0 & 0 & 1 \\ \end{pmatrix} \quad \text{(Simplificado, asumiendo solo } U_y \text{ y } \Theta \text{ como GDL globales)}$$Nota Importante: En la práctica de análisis de marcos, se utiliza una matriz de \(6 \times 6\) que combina los efectos axial y de flexión. Para mantener la coherencia con el ejemplo \(4 \times 4\) de la viga, se utiliza la matriz de transformación completa (6x6) que transforma tanto el desplazamiento axial (\(u\)) como el cortante (\(v\)) y la rotación (\(\theta\)):
$$\mathbf{T}_{\text{marco}} (6 \times 6) = \begin{pmatrix} c & s & 0 & 0 & 0 & 0 \\ -s & c & 0 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & c & s & 0 \\ 0 & 0 & 0 & -s & c & 0 \\ 0 & 0 & 0 & 0 & 0 & 1 \end{pmatrix}$$2. Matriz de Rigidez Global del Elemento (Generalizada) #
La matriz de rigidez global para un elemento inclinado que considera ambos efectos (axial y flexión) se obtiene de la misma manera:
$$\mathbf{K}_{\text{global}}^{\text{marco}} = \mathbf{T}_{\text{marco}}^T \mathbf{k}_{\text{local}}^{\text{marco}} \mathbf{T}_{\text{marco}}$$Donde \(\mathbf{k}_{\text{local}}^{\text{marco}}\) es una matriz local \(6 \times 6\) que combina la rigidez axial y la rigidez de la viga en un solo elemento.
D. Ejercicio Demostrativo en Python: Matriz de Rigidez de un Elemento de Marco (Viga + Axial) 💻 #
Para demostrar la generalización, mostraremos la matriz local \(6 \times 6\) que combina las rigideces axial y a flexión.
GDL Ordenados (Local): \([u'_1, v'_1, \theta'_1, u'_2, v'_2, \theta'_2]\)
import numpy as np
# Datos de la Viga
E = 200e9 # Pa
I = 0.0005 # m^4
A = 0.01 # m^2 (Necesario para el efecto Axial)
L = 5.0 # m
# Coeficientes de Rigidez
AE_L = (A * E) / L # Rigidez Axial
EI_L3 = (E * I) / (L**3) # Rigidez de Flexión (Cortante)
EI_L2 = (E * I) / (L**2) # Rigidez de Flexión (Momento-Cortante)
EI_L = (E * I) / L # Rigidez Rotacional
# Matriz de Rigidez Local del Marco (6x6)
# El orden [u'1, v'1, theta'1, u'2, v'2, theta'2] permite combinar Axial (u') y Flexión (v', theta').
K_axial = np.array([
[AE_L, 0, 0, -AE_L, 0, 0], # Interacciones u'1
[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0],
[-AE_L, 0, 0, AE_L, 0, 0], # Interacciones u'2
[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0]
])
K_viga = np.array([
[0, 0, 0, 0, 0, 0],
[0, 12 * EI_L3, 6 * EI_L2, 0, -12 * EI_L3, 6 * EI_L2], # Interacciones v'1
[0, 6 * EI_L2, 4 * EI_L, 0, -6 * EI_L2, 2 * EI_L], # Interacciones theta'1
[0, 0, 0, 0, 0, 0],
[0, -12 * EI_L3, -6 * EI_L2, 0, 12 * EI_L3, -6 * EI_L2],# Interacciones v'2
[0, 6 * EI_L2, 2 * EI_L, 0, -6 * EI_L2, 4 * EI_L] # Interacciones theta'2
])
# Suma: K_local_marco = K_axial + K_viga
K_local_marco = K_axial + K_viga
print("--- Matriz de Rigidez Local del Elemento de Marco (6x6) ---")
np.set_printoptions(precision=2, suppress=True, linewidth=150)
print(K_local_marco)
# Verificación de un elemento inclinado (ej. 45 grados)
angulo_grados = 45.0
angulo_rad = np.radians(angulo_grados)
c = np.cos(angulo_rad)
s = np.sin(angulo_rad)
T_marco = np.array([
[c, s, 0, 0, 0, 0],
[-s, c, 0, 0, 0, 0],
[0, 0, 1, 0, 0, 0],
[0, 0, 0, c, s, 0],
[0, 0, 0, -s, c, 0],
[0, 0, 0, 0, 0, 1]
])
K_global_inclinada = T_marco.T @ K_local_marco @ T_marco
print("\n--- Matriz de Rigidez Global K para elemento a 45° (T^T * K_local * T) ---")
print(K_global_inclinada)
6. Ejercicios Propuestos 📝 #
- Vigas (Rotación T): Explica por qué, en la matriz de transformación simplificada \(\mathbf{T}_{\text{viga}}\) (4x4), las rotaciones (\(\theta\)) tienen coeficientes de 1 en la diagonal.
- Marco (GDL): ¿Por qué un elemento de marco necesita 6 GDL y no 4, como la viga y la barra axial?
- Marco (K Local): En la matriz \(\mathbf{K}_{\text{local}}^{\text{marco}}\) (6x6), ¿qué términos de la rigidez axial (\(AE/L\)) aparecen en la fila 2 (GDL \(v'_1\))? Justifica tu respuesta.
- Marco (Acoplamiento): En la matriz \(\mathbf{K}_{\text{global}}^{\text{marco}}\) inclinada, ¿por qué los desplazamientos \(U_x\) y \(U_y\) se acoplan (es decir, los términos off-diagonal \(K_{12}\) y \(K_{21}\) son distintos de cero)?
- Transformación: Escribe la matriz de transformación \(\mathbf{T}_{\text{marco}}\) (6x6) para un elemento vertical (\(\theta = 90^\circ\)).
- Cálculo (Marco): Si la rotación \(\Theta_1\) es el GDL global 3, y la traslación \(U_{1x}\) es el GDL 1, ¿qué término de la \(\mathbf{K}_{\text{global}}^{\text{marco}}\) relaciona estas dos variables? ¿Es cero o no cero para un elemento inclinado?
- Programación: Modifica el código demostrativo para calcular la \(\mathbf{K}_{\text{global}}\) de un elemento de marco horizontal (\(\theta = 0^\circ\)). ¿Cómo se compara con la \(\mathbf{K}_{\text{local}}^{\text{marco}}\)?
- Programación: Modifica el código para un elemento de marco vertical (\(\theta = 90^\circ\)). ¿Se mantienen los términos de rigidez axial y de flexión?
- Concepto: En el análisis de marcos, si se ignora el efecto axial (\(A \to \infty\) o \(AE/L \to 0\)), ¿qué ocurriría con la matriz \(\mathbf{K}_{\text{local}}^{\text{marco}}\)?
- Ensamblaje (Marco): Para un marco simple (dos columnas verticales, una viga horizontal), numera los GDL (3 por nudo) y describe cómo ensamblarías la matriz global (por ejemplo, cómo se suman las rigideces en el nudo de la esquina superior).
- Condiciones de Borde (Marco): Si la base de una columna de marco está empotrada, ¿cuáles GDL de ese nudo son restringidos?
- Condiciones de Borde (Marco): Si la base de una columna de marco es un apoyo fijo, ¿cuáles GDL son restringidos?
- Desafío (Post-Procesamiento): En un marco, después de obtener el vector \(\mathbf{u}_{\text{global}}\), ¿cómo calcularías el esfuerzo cortante \(V\) en el Nudo 1 de un elemento inclinado? (Pista: debes usar el vector \(\mathbf{u}_{\text{local}}\) y la fila de cortante de \(\mathbf{k}_{\text{viga}}\)).
- Concepto: Explica la diferencia entre un nudo rígido y un nudo articulado en el contexto del ensamblaje de \(\mathbf{K}\). ¿Qué GDL se “desconecta” en un nudo articulado?
- Programación: Investiga y añade el cálculo del término de rigidez a cortante (\(GA_s/L\)) en la matriz \(\mathbf{K}_{\text{local}}^{\text{marco}}\) si la deformación por cortante no se ignora.
- Cálculo (T): Si \(\mathbf{T}\) fuera una matriz de \(2 \times 2\), y \(c=0.8, s=0.6\), calcula \(\mathbf{T}^T \mathbf{T}\). ¿Qué resultado esperas si es una matriz de transformación ortogonal?
- Integración: ¿Cómo se relaciona la matriz \(\mathbf{K}_{\text{global}}\) del elemento axial (4x4, Sección I) con las submatrices de la \(\mathbf{K}_{\text{local}}^{\text{marco}}\) (6x6)?
- Concepto: Si un elemento de marco se define solo con \(E\) e \(I\), ignorando \(A\), ¿qué tipo de estructura estás analizando y por qué?
- Programación: Escribe una función que tome una matriz \(\mathbf{K}_{\text{local}}^{\text{marco}}\) y una carga nodal \(P\) aplicada en \(U_{1x}\) y devuelva el vector de fuerzas local que se sumaría al vector de fuerzas global \(\mathbf{f}\).
- Desafío de Generalización: ¿Cómo se diferenciaría la matriz de rigidez \(\mathbf{K}_{\text{global}}\) de una viga de la matriz \(\mathbf{K}_{\text{global}}\) de un elemento de barra (axial) si ambos tienen el mismo \(L, E, A, I\) y el mismo ángulo \(\theta\)? (Pista: Observa el tamaño y el número de GDL).