Propagação de vazões e balanço de massa nos trechos de rio do QUAL2K
Como descrito na documentação técnica do QUAL2K da EPA, o modelo divide o rio em trechos discretos (elementos de cálculo) e avança para jusante a partir do contorno de cabeceira. Em cada trecho, ele faz um balanço de massa conservativo para misturar a vazão de montante com as fontes pontuais e as fontes difusas antes de aplicar as reações cinéticas.
Algoritmo de propagação de vazões para jusante
A simulação avança em sequência da cabeceira (trecho 0) até o final do rio (trecho n). Em cada trecho , três passos são executados nesta ordem:
Passo 1: balanço de massa por mistura conservativa
A massa que entra no trecho vinda de todas as fontes a montante é somada e dividida pela vazão total, resultando nas concentrações da mistura:
em que:
- : vazão de montante, vinda do trecho
- : concentração de montante do constituinte
- : vazão e concentração da fonte pontual
- : vazão e concentração da fonte difusa
Entrada das fontes pontuais
As fontes pontuais representam lançamentos localizados, como o efluente de uma estação de tratamento de esgoto (ETE), a vazão de um tributário ou lançamentos industriais. Cada fonte pontual tem uma localização (km) ao longo do rio e é atribuída ao trecho em que se encontra:
Distribuição das fontes difusas
As fontes difusas (não pontuais) se distribuem ao longo de um intervalo de quilômetros do rio. A contribuição para cada trecho é proporcional ao comprimento de sobreposição entre o intervalo da fonte difusa e o trecho:
em que e é o comprimento total da fonte difusa.
Passo 2: reações cinéticas
Depois da mistura, as reações cinéticas de primeira ordem são aplicadas ao longo do tempo de percurso do trecho. Veja as páginas Decaimento da DBO e Ciclo do nitrogênio para as equações cinéticas detalhadas.
Passo 3: balanço de oxigênio dissolvido
A concentração final de OD é calculada pelo balanço entre as fontes (reaeração, fotossíntese) e os sumidouros (oxidação da DBO, nitrificação, demanda de oxigênio do sedimento ou SOD). Veja a página Balanço de OD.
Tempo de percurso e discretização espacial
O tempo de percurso em cada trecho determina por quanto tempo as reações cinéticas atuam sobre a água:
Trechos mais longos têm tempos de percurso maiores e mais decaimento cinético. A escolha da discretização em trechos afeta a resolução espacial dos resultados do modelo, mas não altera o balanço de massa total (que é conservativo).
Implementação em Python
for i in range(1, nr + 1):
reach = reaches[i]
q_up = reaches[i - 1].get('q', 0)
# Passo 1: mistura 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]
# Passo 2: cinética
c_kin = apply_kinetics(c_mix, rates, reach, temp, trav_time)
# Passo 3: balanço de OD
c_kin[2] = calculate_do_balance(c_kin[2], ...)