Tránsito de Caudales y Balance de Masa en Segmentos de Río
QUAL2K divide el río en tramos discretos (elementos computacionales) y avanza hacia aguas abajo desde la frontera de cabecera. En cada tramo, realiza un balance de masa conservativo para mezclar el flujo aguas arriba con las fuentes puntuales y difusas antes de aplicar las reacciones cinéticas. Esto se conoce fundamentalmente como el tránsito de caudales en estado estacionario.
Algoritmo de Tránsito de Caudales Aguas Abajo
La simulación procede secuencialmente desde la cabecera (tramo 0) hasta el final (tramo n). En cada tramo , se realizan tres pasos en orden:
Paso 1: Balance de Masa por Mezcla Conservativa
La masa que ingresa al tramo desde todas las fuentes aguas arriba se suma y se divide por el flujo total para producir concentraciones mezcladas:
dónde:
- — caudal aportado desde el tramo frente a frontera directa aguas arriba
- — concentración aguas arriba del constituyente
- — caudal y concentración de la fuente puntual
- — caudal y concentración de la fuente difusa
Inyección de Fuente Puntual
Las fuentes puntuales representan descargas discretas como el efluente de una planta de tratamiento de aguas residuales, afluencias de afluentes, o vertidos industriales. Cada fuente puntual tiene una ubicación (km) a lo largo del río y se asigna al tramo donde recae:
Distribución de Fuentes Difusas
Las fuentes difusas (no puntuales) se distribuyen sobre un rango de kilómetros de río. La contribución a cada tramo es proporcional a la longitud de superposición entre la franja de la fuente difusa y el tramo implicado:
donde y es la longitud total de aportación de dicha fuente difusa.
Paso 2: Reacciones Cinéticas
Una vez calculada la mezcla, las reacciones cinéticas de primer orden se aplican a lo largo del tiempo de recorrido que le toma al agua en ese preciso tramo. Revisa la sección de Decaimiento DBO y el Ciclo del Nitrógeno para revisar en detalle cómo decaen las ecuaciones base de estas variables en estado estacionario a lo largo de este margen de tiempo de flujo.
Paso 3: Balance de Oxígeno Disuelto
La concentración final de OD se adquiere al someter las adiciones de fuentes de inyección netamente positivas en el balance a las sustracciones (reducción de oxidaciones y respiraciones) y demandas, las cuales representan un drenaje al balance, ver la lectura de Balance de Oxígeno para profundizar su entendimiento algebraico.
Tiempo de Recorrido y Discretización Espacial
El tiempo que le toma a un vector masivo atravesar la estructura del canal hasta su próximo punto es la unidad crítica sobre la cual las ecuaciones cinéticas modelan su avance a través del canal en cuestión. Este se expresa esencialmente de este modo:
Si tienes tramos muy prolongados, la variable temporal aumenta proporcionalmente extendiendo dramáticamente a nivel matemático la magnitud por la cual las tasas continuas decaen sobre un contaminante en un mismo punto espacial. La discretización espacial impacta el detalle analítico pero NUNCA debiera violar matemáticamente este parámetro fundamental estratégico del caudal conservatorio fundamental que protege al cálculo.
Implementación en Python
for i in range(1, nr + 1):
reach = reaches[i]
q_up = reaches[i - 1].get('q', 0)
# Paso 1: Mezcla Conservativa
mass_in = [c * q_up for c in conc[i - 1]]
q_total = q_up
for ps in point_sources:
if _in_reach(ps['xptt'], x_up, x_dn):
q_ps = ps['Qptt']
for k in range(num_vars):
mass_in[k] += q_ps * ps['cpttMean'][k]
q_total += q_ps
c_mix = [m / q_total for m in mass_in]
# Paso 2: Cinética
c_kin = apply_kinetics(c_mix, rates, reach, temp, trav_time)
# Paso 3: Balance de OD
c_kin[2] = calculate_do_balance(c_kin[2], ...)