Resultados de la Comparación: Motor Python frente al QUAL2K Original en VBA
Esta sección reúne los resultados de la validación del modelo de calidad del agua, comparando el motor de QUAL2K reescrito en Python contra el modelo original en Excel VBA. Las dos implementaciones se corrieron con datos de entrada idénticos, transcritos celda por celda desde los libros de Excel originales. Ese es el respaldo con el que la plataforma se ofrece como software de simulación de ríos gratis.
Simula el oxígeno disuelto con Streeter-Phelps
Modela la curva de déficit de OD en tu río con la calculadora clásica Streeter-Phelps
Abrir Calculadora Streeter-PhelpsResumen de Comparación de Modelos
Caso: Modelo Paraluz (Brasil)
Configuración estándar sencilla: un río de 2 tramos, con la condición de frontera de cabecera en el punto 0 y sin aportes laterales. Sirve para comprobar que la hidráulica básica y el decaimiento de la DBO rápida y lenta de QUAL2K funcionan correctamente antes de pasar a los casos exigentes.
Paraluz: comparación hidráulica
| Parámetro | Tramo | Excel VBA | Python | Error Relativo |
|---|---|---|---|---|
| Velocidad (m/s) | PR1 | 0.198 | 0.198 | 0.00% |
| Velocidad (m/s) | VPR1 | 0.177 | 0.177 | 0.00% |
| Profundidad (m) | PR1 | 0.304 | 0.304 | 0.00% |
| Profundidad (m) | VPR1 | 0.322 | 0.322 | 0.00% |
| Tiempo de viaje (d) | PR1 | 0.0135 | 0.0135 | 0.00% |
| Tiempo de viaje (d) | VPR1 | 0.0063 | 0.0063 | 0.00% |
Paraluz: comparación de oxígeno disuelto y nutrientes
| Parámetro | Tramo | Excel VBA | Python | Error Relativo |
|---|---|---|---|---|
| Oxígeno disuelto (mg/L) | PR1 | 7.82 | 7.82 | < 0.01% |
| Oxígeno disuelto (mg/L) | VPR1 | 7.79 | 7.79 | < 0.01% |
| CBOD rápida (mg/L) | PR1 | 3.98 | 3.97 | 0.25% |
| CBOD rápida (mg/L) | VPR1 | 3.95 | 3.95 | < 0.01% |
| Amonio NH₄ (μg/L) | PR1 | 150.0 | 149.8 | 0.13% |
| Nitrato NO₃ (μg/L) | PR1 | 600.0 | 600.0 | 0.00% |
Caso de Estrés: Modelo Bolder (Colorado, EE.UU.)
Río extenso dividido en 50 tramos, con fuentes puntuales y difusas distribuidas a lo largo del cauce. Es el caso que más exige al motor, porque obliga a arrastrar el balance de masa en cascada tramo por tramo, y sirve para medir el desempeño computacional de QUAL2K.
Bolder: tramos seleccionados del reporte de comparación (Excel / Python)
| Parámetro | Tramo 1 (cabecera) | Tramo 25 (medio) | Tramo 50 (final) | Error Máximo |
|---|---|---|---|---|
| Oxígeno disuelto (mg/L) | 9.12 / 9.12 | 8.45 / 8.44 | 7.89 / 7.88 | 0.13% |
| CBOD rápida (mg/L) | 2.10 / 2.10 | 1.85 / 1.84 | 1.62 / 1.62 | 0.54% |
| Velocidad (m/s) | 0.453 / 0.453 | 0.512 / 0.512 | 0.487 / 0.487 | 0.00% |
| Amonio NH₄ (μg/L) | 320 / 320 | 245 / 244 | 185 / 184 | 0.54% |
| Nitrato NO₃ (μg/L) | 1100 / 1100 | 1175 / 1176 | 1230 / 1231 | 0.08% |
| Patógenos (cfu) | 5000 / 5000 | 2100 / 2098 | 890 / 889 | 0.11% |
Caso Real: Río Cauca (Valle del Cauca, Colombia)
Río tropical de gran caudal, modelado en 17 tramos, con cargas importantes de amonio y de materia orgánica que llegan desde descargas de alcantarillado y desde fuentes difusas agrícolas. Es el caso donde la demanda nitrogenada pesa más dentro del balance de oxígeno.
Río Cauca: balance de oxígeno disuelto y nitrógeno (Excel / Python)
| Parámetro | Cabecera | Tramo 8 | Tramo 17 | Error Máximo |
|---|---|---|---|---|
| Oxígeno disuelto (mg/L) | 7.50 / 7.50 | 4.23 / 4.22 | 6.15 / 6.14 | 0.24% |
| CBOD rápida (mg/L) | 8.60 / 8.60 | 4.12 / 4.11 | 2.05 / 2.04 | 0.49% |
| Amonio NH₄ (μg/L) | 2450 / 2450 | 1680 / 1676 | 890 / 887 | 0.34% |
| Nitrato NO₃ (μg/L) | 3200 / 3200 | 3890 / 3895 | 4350 / 4356 | 0.14% |
Caso Real: Río Meléndez (río urbano, Colombia)
Afluente urbano pequeño, modelado en 8 tramos, que recibe la descarga de un emisario de aguas residuales domésticas. Es el caso que se usa para poner a prueba la calibración automática por algoritmo genético.
Río Meléndez: comparación en el tramo 8
| Parámetro | Excel VBA | Python | Error Relativo |
|---|---|---|---|
| Oxígeno disuelto (mg/L) | 6.89 | 6.88 | 0.15% |
| CBOD rápida (mg/L) | 5.12 | 5.10 | 0.39% |
| CBOD lenta (mg/L) | 2.34 | 2.33 | 0.43% |
| Amonio NH₄ (μg/L) | 890 | 887 | 0.34% |
| Nitrato NO₃ (μg/L) | 2150 | 2154 | 0.19% |
| Fósforo orgánico (μg/L) | 120 | 119 | 0.83% |
| Fósforo inorgánico (μg/L) | 450 | 449 | 0.22% |
| Patógenos E. coli (cfu) | 12500 | 12480 | 0.16% |
| Temperatura (°C) | 22.5 | 22.5 | 0.00% |
Distribución de Errores en la Comparación
Error máximo por variable y por caso de prueba
| Variable | Paraluz | Bolder | Cauca | Meléndez | Resultado |
|---|---|---|---|---|---|
| Oxígeno disuelto | < 0.01% | 0.13% | 0.24% | 0.15% | ✅ APROBADO |
| CBOD rápida | 0.25% | 0.54% | 0.49% | 0.39% | ✅ APROBADO |
| CBOD lenta | — | 0.31% | 0.22% | 0.43% | ✅ APROBADO |
| Amonio NH₄ | 0.13% | 0.54% | 0.34% | 0.34% | ✅ APROBADO |
| Nitrato NO₃ | 0.00% | 0.08% | 0.14% | 0.19% | ✅ APROBADO |
| Hidráulica (U, H, B, Ac) | 0.00% | 0.00% | 0.00% | 0.00% | ✅ APROBADO |
| Patógenos E. coli | — | 0.11% | — | 0.16% | ✅ APROBADO |
| Temperatura | 0.00% | 0.00% | 0.00% | 0.00% | ✅ APROBADO |