Cómo calcular el caudal en canales trapezoidales con Python (usando la fórmula de Manning)
- José Alfonso Ortiz González

- 5 jun 2025
- 3 Min. de lectura
Actualizado: 6 jul 2025
El caculo del caudal en canales abiertos, es un calculo fundamental de la ingeniería civil. Su aplicación en python contempla una visualización del canal, así como una explicación detallada de cada fórmula y línea de código.
🧭 Contexto histórico de la fórmula de Manning
La fórmula de Manning fue propuesta en 1889 por el ingeniero hidráulico Robert Manning (1816–1897), un autodidacta irlandés que desarrolló esta expresión de manera empírica tras comparar numerosas fórmulas existentes y ajustar sus predicciones a resultados reales de flujo en canales.
Por su simplicidad y precisión fue rápidamente adoptada por ingenieros civiles en todo el mundo, desplazando a fórmulas anteriores como la de Chezy.
📘 Fundamentos de la fórmula de Manning
La fórmula permite calcular el caudal medio de un flujo uniforme en canales abiertos, utilizando parámetros geométricos y de fricción:

⚠️ Esta fórmula es válida para flujo uniforme, permanente y en régimen estacionario.
🧱 ¿Qué representa el coeficiente de rugosidad de Manning?
El coeficiente n representa las pérdidas por fricción del flujo con las paredes del canal. Este valor es empírico y depende de la textura, regularidad, vegetación, y material del canal.
Tipo de canal | n típico | Descripción |
Concreto | 0.011 – 0.015 | Superficie lisa |
Tierra compactada | 0.020 – 0.030 | Común en canales agrícolas |
Rocoso o vegetado | 0.035 – 0.070 | Natural, con obstáculos |
Maleza densa / rústico | > 0.070 | Alta resistencia |
📐 Fórmulas geométricas necesarias
Para usar la fórmula de Manning en canales trapezoidales, debemos calcular primero:
Área hidráulica

Fórmula Área hidráulica Perímetro mojado

Fórmula: Perímetro mojado Radio hidráulico

💻 Cálculo en Python paso a paso
Aquí tienes el código completo comentado y estructurado:
import math
import matplotlib.pyplot as plt
# -------------------------
# PARÁMETROS DE ENTRADA
# -------------------------
base = 3.0 # m - base inferior del canal
h = 1.5 # m - tirante de agua
talud = 1.5 # m/m - inclinación lateral
pendiente = 0.001 # m/m - pendiente longitudinal
n = 0.025 # coeficiente de Manning
# -------------------------
# CÁLCULOS HIDRÁULICOS
# -------------------------
# 1. Área hidráulica A = h(b + z*h)
area = (base + talud * h) * h
# 2. Perímetro mojado P = b + 2h√(1 + z²)
perimetro = base + 2 * h * math.sqrt(1 + talud ** 2)
# 3. Radio hidráulico R = A / P
radio_hidraulico = area / perimetro
# 4. Fórmula de Manning: Q = (1/n) * A * R^(2/3) * S^(1/2)
Q = (1 / n) * area * (radio_hidraulico ** (2 / 3)) * (pendiente ** 0.5)
# -------------------------
# RESULTADO
# -------------------------
print(f"Caudal: {Q:.3f} m³/s")🔎 ¿Qué hace cada parte del código?
math.sqrt(...) permite calcular raíces cuadradas.
El área y perímetro se calculan según fórmulas específicas para trapecios.
radio hidráulico mide cuán eficiente es la sección.
Q es el caudal total, que dependerá del tirante, base, pendiente y rugosidad.
📊 Visualización del canal trapezoidal
Este código genera una visualización simple del canal:
# Coordenadas del canal trapezoidal
x_canal = [0, talud * h, talud * h + base, 2 * talud * h + base]
y_canal = [0, h, h, 0]
# Color del borde según rugosidad
if n <= 0.015:
color_borde = 'lightgrey'
elif n <= 0.030:
color_borde = 'saddlebrown'
elif n <= 0.070:
color_borde = 'darkgreen'
else:
color_borde = 'lightgreen'
# Gráfico
plt.figure(figsize=(8, 4))
plt.plot(x_canal + [x_canal[0]], y_canal + [y_canal[0]], color=color_borde, linewidth=4, label=f'Revestimiento (n = {n})')
plt.fill(x_canal, y_canal, 'skyblue', alpha=0.5, label='Agua')
plt.title('Sección transversal del canal trapezoidal')
plt.xlabel('Ancho (m)')
plt.ylabel('Altura (m)')
plt.axis('equal')
plt.grid(True)
plt.legend()
plt.tight_layout()
plt.show()🎨 El borde del canal cambia de color dependiendo de la rugosidad, pero el agua siempre se mantiene azul.
🧠 Conclusión
La formula de Manning, ha sido la herramienta mas confiable para el deseño hidraulico por mas un siglo. con Python puedes:
Automatizar cálculos complejos
Crear visualizaciones que mejoren la comprensión.
Adaptar el código a distintos escenarios.
🔗 Recursos adicionales
¿Te gustaría ver este ejemplo en acción?
👉 Abrir el código en Google Colab (ejecuta en línea):https://colab.research.google.com/drive/1f9F9SPQlxrOWmGxTNWfuQJAbaGksNp7h?usp=sharing



Comentarios