Automatización y programación Análisis estructural N.º 02
Automatizar una viga con Python, desde cero
Serie: Automatizar el cálculo con Python · Parte 1 de 6
Resumen. Todos calculamos alguna vez una viga simplemente apoyada a mano. En esta primera parte la pasamos a Python, línea por línea, y vemos lo que una calculadora no hace: calcular veinte vigas en un segundo.
En la universidad todos resolvimos la misma viga muchas veces: simplemente apoyada, con una carga repartida y quizás una carga puntual. Fórmula, calculadora, resultado. En la oficina pasa algo parecido, pero con veinte vigas distintas, y cada vez que cambia una carga o una luz hay que repetir todo.
Ahí es donde la programación ayuda. Python no sabe más ingeniería que tú: es una calculadora que recuerda lo que le enseñaste y lo repite sin cansarse ni equivocarse en el tercer decimal.
Esta nota es la primera de una serie que va de lo simple a lo complejo. Hoy vamos a hacer cuatro cosas:
- recordar las fórmulas de la viga;
- escribirlas en Python, línea por línea;
- calcular una viga;
- calcular varias vigas a la vez, que es donde se gana tiempo.
No necesitas saber programar. Si nunca usaste Python, al final te digo cómo correr el script.
Las fórmulas de siempre
Para una viga simplemente apoyada de luz , con carga repartida en toda la luz y una carga puntual al centro, el momento máximo está al centro y vale:
El cortante máximo está en los apoyos:
Y la flecha al centro, que depende de la rigidez de la sección:
Fíjate en los exponentes: el momento crece con , pero la flecha crece con . Vamos a volver a esto.
Las mismas fórmulas en Python
En Python, una función es un bloque que recibe datos y devuelve resultados. Es la forma de “enseñarle” un cálculo:
def viga_simple(L, w, P, EI):
"""Devuelve momento máximo, cortante máximo y flecha al centro."""
M = w * L**2 / 8 + P * L / 4 # kN·m
V = w * L / 2 + P / 2 # kN
flecha = 5 * w * L**4 / (384 * EI) + P * L**3 / (48 * EI) # m
return M, V, flecha
Léelo como si fuera una hoja de cálculo:
def viga_simple(L, w, P, EI):dice “esta función necesita luz, carga repartida, carga puntual y rigidez”.L**2es . El doble asterisco es la potencia.- Lo que va después de
#es un comentario: Python lo ignora, pero a ti te recuerda las unidades. returnentrega los tres resultados.
Un consejo que me ahorró muchos errores: elige un sistema de unidades y anótalo arriba del archivo. Aquí todo va en kN y m. Así el momento sale en kN·m y la flecha en metros, sin conversiones escondidas.
Una viga
Ahora los datos. Una viga de concreto de 30 × 60 cm, con 20 kN/m repartidos y 30 kN al centro:
w = 20.0 # carga repartida, kN/m
P = 30.0 # carga puntual al centro, kN
b, h = 0.30, 0.60 # sección, m
E = 25_000_000 # módulo de elasticidad, kPa (25 000 MPa)
I = b * h**3 / 12 # inercia, m⁴
EI = E * I # kN·m²
M, V, f = viga_simple(6.0, w, P, EI)
print(f"M = {M:.0f} kN·m, V = {V:.0f} kN, flecha = {f*1000:.1f} mm")
Y Python responde:
M = 135 kN·m, V = 75 kN, flecha = 3.5 mm
Puedes verificarlo con calculadora: kN·m. Siempre comprueba la primera corrida a mano. Si coincide, ya puedes confiar en el script para las demás.
Muchas vigas: lo que la calculadora no hace
Aquí está la ganancia. Con un for, Python repite el cálculo para cada luz de una lista:
for L in [4, 5, 6, 7, 8]:
M, V, f = viga_simple(L, w, P, EI)
print(f"L = {L} m: M = {M:.0f} kN·m, flecha = {f*1000:.1f} mm")
| Luz (m) | (kN·m) | (kN) | Flecha (mm) | /flecha |
|---|---|---|---|---|
| 4 | 70 | 55 | 0.8 | ≈ 5 000 |
| 5 | 100 | 65 | 1.8 | ≈ 2 800 |
| 6 | 135 | 75 | 3.5 | ≈ 1 700 |
| 7 | 175 | 85 | 6.2 | ≈ 1 100 |
| 8 | 220 | 95 | 10.3 | ≈ 780 |
Mira la tabla. Si la luz se duplica, de 4 a 8 m, el momento se multiplica por 3, pero la flecha se multiplica por 13. Es el de la fórmula, ahora con números concretos. A mano, ese patrón cuesta verlo; con cinco filas en una tabla salta a la vista.
Una advertencia honesta: la flecha está calculada con la inercia de la sección sin fisurar. Una viga de concreto real se fisura y además se deforma con el tiempo, así que la flecha real es varias veces mayor. Lo veremos más adelante en la serie.
Cómo correr el script
- Instala Python desde python.org (marca “Add Python to PATH” en el instalador).
- Descarga el script de esta nota, más abajo.
- Abre una terminal en la carpeta del archivo y escribe
python viga-01.py.
Cambia los datos (la carga, la sección, la lista de luces) y vuelve a correrlo. Así se aprende: tocando.
Lo que sigue
En la parte 2 vamos a dibujar los diagramas de momento y cortante para cualquier combinación de cargas, no solo la carga al centro.
Automatizar no es saber más fórmulas. Es escribir bien una vez la que ya sabes y dejar que la máquina la repita.
Descargar el script de esta nota ↓ viga-01.py
Contenido educativo y referencial. Las opiniones son mías y no representan a ningún empleador. Para un proyecto real manda el criterio del ingeniero responsable y la norma vigente.
← Volver a las notas