Decaimiento de patógenos, demanda de oxígeno del sedimento (SOD) y otros parámetros de calidad del agua
Además de los tres grupos principales de constituyentes (la DBO carbonácea, el ciclo del nitrógeno y el ciclo del fósforo), QUAL2K hace seguimiento a un conjunto de variables auxiliares que terminan de cerrar el balance de masa en corrientes de agua. Entre ellas están los organismos indicadores de contaminación fecal (coliformes termotolerantes y E. coli), la demanda de oxígeno que el lecho ejerce sobre la columna de agua (demanda de oxígeno del sedimento, SOD), los sólidos suspendidos inorgánicos, los detritos y los trazadores conservativos. Son estas variables las que permiten completar una simulación de eutrofización QUAL2K aplicada a un caso real.
Patógenos y Demanda de Oxígeno por Sedimentos (SOD)
QUAL2K modela la cinética de patógenos y la interacción del oxígeno con el lecho del río. Se incluye el decaimiento de coliformes y la demanda béntica de oxígeno como procesos clave para determinar la salud sanitaria y el balance de OD del sistema hídrico.
Decaimiento de Patógenos
La desaparición de organismos patógenos (como coliformes termotolerantes o E. coli) se modela como un proceso de primer orden. La tasa de decaimiento depende de la temperatura, la radiación solar y la sedimentación:
Donde:
- — concentración de patógenos (UFC/100mL o NMP/100mL)
- — tasa de mortalidad específica a 20°C (día⁻¹)
- — velocidad de sedimentación (m/día)
Demanda de Oxígeno por Sedimentos (SOD)
La SOD representa el consumo de oxígeno disuelto por la descomposición de materia orgánica en el lecho del río. Es un parámetro crítico en ríos con alta carga orgánica donde el fondo puede actuar como un sumidero masivo de oxígeno.
Mecanismo de Interacción
A continuación se muestra el esquema de flujo para la descomposición orgánica y el consumo de oxígeno en la interfaz agua-sedimento:
Sólidos Suspendidos Inorgánicos (ISS)
Los sólidos suspendidos inorgánicos agrupan las arenas, los limos y las arcillas que llegan al cauce por erosión de laderas, escorrentía y movimientos de tierra (variable de estado 1). No son biodegradables, de modo que el único mecanismo de pérdida que representa el modelo es la sedimentación hacia el lecho, gobernada por la velocidad de asentamiento de la partícula y por la profundidad del tramo:
Detritos (Materia Orgánica Particulada No Viva)
Los detritos (variable de estado 11) reúnen la materia orgánica particulada que ya no está viva: biomasa algal senescente, hojarasca, restos vegetales y material orgánico que la cuenca aporta por escorrentía. El modelo los pierde por dos vías simultáneas, la disolución bacteriana que los convierte en material disuelto y la sedimentación hacia el fondo del cauce:
Análisis de Trazadores
QUAL2K permite modelar sustancias conservativas (trazadores) y no conservativas que siguen una cinética de primer orden. Estos resultados son útiles para estudios de tiempo de viaje y dispersión longitudinal en sistemas fluviales.
Constituyentes Conservativos
Dos constituyentes se transportan sin reaccionar: el modelo los arrastra con el flujo, pero no les aplica ninguna pérdida ni transformación cinética.
- Conductividad (variable de estado 0) — mide el contenido de sales disueltas y funciona como trazador conservativo natural para verificar el transporte
- Alcalinidad como CaCO₃ (variable de estado 14) — representa la capacidad del agua para amortiguar cambios de pH (en mg CaCO₃/L). El modelo la transporta sin alterarla.
Interacción entre el Sedimento y la Columna de Agua
Implementación en el Motor Python
# Solidos suspendidos inorganicos (ISS): la unica perdida es la sedimentacion hacia el lecho
vss = rates.get('vss', 0)
conc[1] *= math.exp(-(vss / max(h, 0.01)) * dt)
# Detritos: disolucion bacteriana mas sedimentacion hacia el fondo del cauce
kdt = temp_correction(rates.get('kdt', 0.01), 1.047, temp)
vdt = rates.get('vdt', 0)
conc[11] *= math.exp(-(kdt + vdt / max(h, 0.01)) * dt)
# Patogenos: mortalidad de primer orden por radiacion solar y temperatura, mas sedimentacion
kb = temp_correction(rates.get('kb', 1.0), 1.047, temp)
conc[12] *= math.exp(-kb * dt)
# Trazador generico: decaimiento de primer orden, o conservativo si la tasa es cero
kgen = temp_correction(rates.get('kgen', 0), 1.047, temp)
conc[13] *= math.exp(-kgen * dt)