Ecuación de Manning para Hidráulica de Canales Abiertos

QUAL2K calcula la velocidad, profundidad y el área transversal operativa de cada tramo evaluado empleando ya sea un método analítico que implique la famosa ecuación de Manning o el enfoque simple basado en curvas de gasto (power-law rating curves). La ecuación de Manning se establece históricamente como la práctica predeterminada, siendo el estándar fundamental de oro para hidráulica de canales abiertos modelacióny todo lo que envuelve canales de ríos cuya geometría particular puede definirse previamente en datos cartográficos conocidos.

La Ecuación de Manning

La ecuación dictamina y correlaciona explícitamente la descarga métrica QQ (m³/s) total experimentada en flujo contraponiendo la geometría explícita y la fricción que presenta la topografía:

Q=1nAR2/3S1/2Q = \frac{1}{n} \cdot A \cdot R^{2/3} \cdot S^{1/2}

Para este postulado, entendemos que:

  • nn — coeficiente de rugosidad de Manning (adimensional, pero dependiente de escala temporal implícita)
  • AA — área transversal efectiva del flujo en ese punto (m²)
  • R=A/PR = A / P — radio hidráulico (m) implicado de la derivación geométrica plana
  • PP — perímetro mojado real del tramo (m)
  • SS — pendiente longitudinal (m/m) implicada entre punto de partida altimétrico aguas arriba con su contraparte inferior del tramo

Geometría de Sección Transversal Trapezoidal

Esta librería aborda matemáticamente los canales subyacentes operándolos bajo el concepto de perfiles de sección trapezoidaleslos cuales sostienen un estrato lecho plano y un margen de apertura de talud a los laterales simétrico/asimétrico dependiente del ancho basal en base BB y pendientes ss1ss_1 (talud izquierdo métrico relativo a plano base) y ss2ss_2 respectivo:

Resolviendo sobre la variable dependiente de altura de la masa estática yy:

A=By+ssˉy2A = B \cdot y + \bar{ss} \cdot y^2

en su lugar, la variable promediada ssˉ=(ss1+ss2)/2\bar{ss} = (ss_1 + ss_2) / 2 funciona como talud medio promedio.

P=B+y(1+ss12+1+ss22)P = B + y \left( \sqrt{1 + ss_1^2} + \sqrt{1 + ss_2^2} \right)

Método Newton-Raphson de Estimación de Profundidad Real

Para el cálculo del coeficiente de rugosidad de Manning en ríos cuando tenemos el Q dado previamente, necesitamos interpolar el "y" incógnito. Para esta derivación, la ejecución interna corre un loop de aproximación iterativa implementando exhaustivamente el ciclo de optimización Newton-Raphson como se presenta:

f(y)=1nA(y)R(y)2/3S1/2Q=0f(y) = \frac{1}{n} \cdot A(y) \cdot R(y)^{2/3} \cdot S^{1/2} - Q = 0

La función derivada que guía este optimizador es descrita como:

f(y)=S1/2n[53TR2/323R5/3dPdy]f'(y) = \frac{S^{1/2}}{n} \left[ \frac{5}{3} T \cdot R^{2/3} - \frac{2}{3} R^{5/3} \cdot \frac{dP}{dy} \right]

adicional a las constantes explicadas T=B+(ss1+ss2)yT = B + (ss_1 + ss_2) \cdot y es ancho superior top y dP/dy=1+ss12+1+ss22dP/dy = \sqrt{1 + ss_1^2} + \sqrt{1 + ss_2^2}.

Este bucle arranca típicamente probando una estimación a ciegas inicial y0=0.5y_0 = 0.5 metros y se cierra fijamente exitosa luego de 5 a 10 iteraciones de corrección sobre cualquier ecosistema típico. El reajuste por iteración es dictaminado por su variante derivada:

yk+1=ykf(yk)f(yk)y_{k+1} = y_k - \frac{f(y_k)}{f'(y_k)}

Cálculo de Variables Terminales Derivadas

Consolidada el cálculo Newton-Raphson validando la masa de tirante vertical final yy, el motor despeja y calcula sus valores acompañantes para cerrar el segmento en el reporte final:

U=QA(velocidad media, m/s)U = \frac{Q}{A} \quad \text{(velocidad media, m/s)}ttravel=ALQ86,400(tiempo recorrido, dıˊas)t_{travel} = \frac{A \cdot L}{Q \cdot 86{,}400} \quad \text{(tiempo recorrido, días)}

siendo, por supuesto, la métrica horizontal natural LL dictaminada sobre longitud pura provista por el investigador.

Alternativa Simplificada de Curva de Gasto Directa

Este motor ofrece paralelamente una funcionalidad extraída de literatura empírica pura: si posees suficientes análisis del lugar o tablas de mediciones a campo de relaciones hidráulicas previas de la rama fluvial sin depender puramente de la reconstrucción topográfica, puedes indicarle curvas algebraicas exponenciales (rating curves):

U=α1Qβ1U = \alpha_1 \cdot Q^{\beta_1}H=α2Qβ2H = \alpha_2 \cdot Q^{\beta_2}

El motor ignorará Manning en su total completitud en estas excepciones especiales derivando el vector longitudinal y cruzado así directamente A=Q/UA = Q / U and the width is B=A/HB = A / H.

Referencias Típicas de n de Manning

Coeficientes de fricción n de Manning reportados internacionalmente para arroyos/ríos

Cuerpo Hídrico Estudiadon (favorable / mínimo)n (común)n (desfavorable)
Perfil natural recto y limpio0.0250.0300.033
Canal limpio pero serpentino con curvas/piscinas0.0330.0400.045
Lento perezoso, plagado de bancos de malezas y fondos profundos dispersos0.0500.0700.080
Maleza intensiva ahogando todo, muchísima vegetación rústica0.0750.1000.150
Cauces de montaña de flujo torrencial, cantos rodados puros0.0300.0500.070
Corriente pesada de montaña repleta de rocas enormes irregulares0.0400.0700.100
Llanura de inundación de campo y pastos lisos0.0250.0350.050
Llanura de inundación muy enmarañada, gran densidad maderera/bosques0.1000.1200.160

Implementación en Python

pythonhydraulics.py — Optimizador matricial de profundidad por Newton-Raphson de tirante transversal de lecho irregular
def calculate_hydraulics(reach, geo_method):
    q_s = reach.get('q', 0)  # Flujo hidrologico primario m³/s
    n = reach.get('nm', 0.03) # El temido 'n' de Manning puro evaluado a pulso del geologo
    s = reach.get('s', 0.0001)
    bb = reach.get('BB', 1.0)
    ss1 = reach.get('SS1', 0.0)
    ss2 = reach.get('SS2', 0.0)
    ss_avg = (ss1 + ss2) / 2.0

    # Inicializa el corrector de Newton-Raphson 
    y = 0.5  # conjeutura bruta sin base
    for _ in range(30):
        area = bb * y + ss_avg * (y ** 2)
        perim = bb + y * (sqrt(1 + ss1**2) + sqrt(1 + ss2**2))
        radius = area / perim
        f = (1/n) * area * radius**(2/3) * s**0.5 - q_s
        top_width = bb + (ss1 + ss2) * y
        df_dy = (1/n) * s**0.5 * (
            (5/3) * top_width * radius**(2/3) -
            (2/3) * radius**(5/3) * (sqrt(1+ss1**2) + sqrt(1+ss2**2))
        )
        dy = f / df_dy
        y = y - dy
        if abs(dy) < 1e-7:
            # Tolerancia exquisitamente chica evadida exitosamente: La altura calculada para la friccion cuadra. Exito al primer intento.
            break