Nota

História do EPANET: como a EPA transformou as redes de água em um motor que ainda roda

De QHCSIM (1991) ao EPANET 2.2: Rossman, C+Toolkit, interface Visual Basic e depois Delphi, MSX, OWA e o ramo experimental EPANET 3.

Esquema de rede de distribuição pressurizada em ciano luminoso sobre fundo escuro, com reservatório elevado, nós e válvulas, estilo AEC Hub.

Uma rede de água não é um desenho de tubulações. É pressão que muda às seis da manhã, um reservatório que baixa de noite e cloro que se consome enquanto a água viaja. Nos anos noventa a EPA precisava de um modelo que unisse hidráulica e qualidade da água no mesmo executável. Esse fio — não um catálogo de botões — é a história do EPANET.

Por que a EPA

A U.S. Environmental Protection Agency (EPA) precisava entender o transporte e o destino de substâncias em redes de distribuição de água potável: cloro residual, idade da água, rastreamento de fontes, contaminação. Um cálculo de pressão sozinho não basta. Era preciso Extended Period Simulation (EPS): horas ou dias, não uma foto fixa.

A figura central do desenvolvimento foi Lewis A. Rossman, engenheiro e pesquisador da EPA.

1991: antes do nome — QHCSIM

Antes de se chamar EPANET existiu um protótipo experimental: QHCSIM (outubro de 1991). Jim Uber documentou isso ao anunciar a aposentadoria de Rossman: o nome EPANET ainda não existia; o código já combinava hidráulica e qualidade num único executável — o selo que depois seria o EPANET. Era pequeno (da ordem de 1.500 linhas) e cabia num disquete.

Esse precursor importa: o EPANET não começou como janela bonita. Começou como motor de simulação.

1993–1994: nasce o EPANET 1.x

A EPA situa o primeiro lançamento público por volta de 1993–1994. O EPANET Users Manual (Version 1.1) está datado de janeiro de 1994 (Rossman). Já fazia simulação estendida de hidráulica e qualidade: vazões, pressões, níveis de reservatório, concentração, idade da água e source tracing (saber de qual fonte a água chega a cada zona).

O motor foi escrito em C, pensado para ser portátil. As simulações podiam rodar a partir de um executável com um arquivo de texto do modelo. A hidráulica usava o algoritmo do gradiente; a qualidade passou de um esquema de volumes finitos para um enfoque lagrangiano em gerações posteriores.

Duas camadas de código: motor e tela

Motor em C

O núcleo — o solver — vive em C. Isso explica por que depois pôde ser empacotado como biblioteca de funções (DLL/API) e viver dentro de outros programas.

Interface gráfica Windows: Visual Basic, depois Delphi

A primeira interface gráfica (a janela do programa no Windows) saiu no início de 1993, sob Windows 3.1, e foi desenvolvida em Visual Basic. Nessa versão inicial a rede não se desenhava na tela: a rede se definia num arquivo de entrada (.MAP). Versões posteriores dessa janela foram reescritas em Borland Delphi / Object Pascal, já com desenho e edição do layout (a tela onde você monta a rede). O código antigo da interface do EPANET 2 (EPANET2W) continua arquivado pela EPA como projeto Delphi; a interface da linha 2.2 também se mantém em Delphi.

Separar motor (C) e janela (Visual Basic → Delphi) faz parte da história: o solver pôde viajar sem arrastar a tela inteira.

2000: EPANET 2 e o Toolkit

Em 2000 Rossman publicou o manual do EPANET 2. Essa geração se tornou a referência durante anos para concessionárias, consultorias, universidades e desenvolvedores.

A decisão de longo alcance foi o Programmer’s Toolkit: uma biblioteca de funções (epanet2.dll) que outros programas podem chamar a partir de C/C++, Visual Basic, Delphi/Pascal ou outras linguagens que falem com uma DLL do Windows.

Isso transformou o EPANET em motor, não só no “programa da EPA”. Muito software de redes herda formatos, ideias ou o próprio motor.

MSX: mais de uma espécie química

Quando uma só espécie (por exemplo cloro) não basta, a EPA publicou a extensão EPANET-MSX (Multi-Species eXtension): reações multi-espécie acopladas ao motor hidráulico, também como executável e como biblioteca de funções (epanetmsx.dll) junto ao Toolkit clássico. O MSX não substitui o EPANET: apenas o estende quando a química da rede é o problema.

2014: Open Water Analytics (OWA)

Depois de décadas de evolução principalmente dentro da EPA, por volta de 2014 a comunidade Open Water Analytics (OWA) assumiu o relevo aberto do motor: repositório comunitário, issues, contribuições. Não apaga a EPA; abre outra pista de desenvolvimento.

É preciso distinguir sempre:

  • EPA estável — a liberação oficial que a EPA aponta como referência (hoje, na prática pública, EPANET 2.2).
  • Ramo OWA — linha comunitária (p. ex. 2.3.x), mais nova, não automaticamente “a versão EPA”.

2020: EPANET 2.2 e Pressure-Driven Demand

Em 2020 a EPA publicou oficialmente o EPANET 2.2 (manual do usuário e repositório USEPA/EPANET2.2), com colaboração forte em relação ao trabalho comunitário. Entre as novidades históricas relevantes está o suporte a Pressure-Driven Demand (PDD) — demanda que depende da pressão:

Isso importa em falhas, incêndios e redes deficientes, onde assumir que “a demanda sempre é entregue” é fisicamente falso. O 2.2 também trouxe melhorias numéricas e da API (o jeito de chamar o motor a partir de outro programa); o fio histórico é: o motor oficial se atualizou e a EPA o etiquetou como estável.

EPANET 3: experimental, em C++

O EPANET 3 não é a versão oficial estável. É um projeto de desenvolvimento/pesquisa na OWA (OpenWaterAnalytics/epanet-dev): uma reimplementação orientada a objetos do motor em C++. Convém nomeá-lo para não confundir o leitor, e deixar claro que é experimental diante do EPA 2.2.

O que se pode fazer com o EPANET (casos de uso)

O EPANET modela redes pressurizadas de distribuição (água potável / redes sob pressão): nós, tubulações, bombas, válvulas, tanques, reservatórios. Resolve continuidade e energia; pode acompanhar qualidade ao longo do tempo (EPS). Abaixo, o que um engenheiro civil ou sanitário costuma fazer com esse motor — não uma lista vazia de features, e sim trabalho de escritório.

Dimensionar ou ampliar uma rede

Testar diâmetros, ver se as velocidades e perdas de carga fazem sentido, e verificar se uma ampliação (novo bairro, nova vazão) deixa a rede existente sem pressão.

Pressões nos nós

Perguntar que pressão cada usuário terá no pico de demanda e no vale. Detectar zonas flácidas ou sobrepressão antes de comprar tubulação.

Bombas e tanques

Simular curvas de bomba, horários de liga/desliga, enchimento e esvaziamento de tanques, e como interagem com a demanda ao longo do dia.

Energia de bombeamento

Comparar estratégias de operação (qual bomba, a que hora) para baixar o consumo energético sem romper pressões mínimas.

Qualidade da água: cloro, idade, fontes

Acompanhar como o cloro cai ao viajar, estimar a idade da água em extremos de rede com pouca demanda, e fazer source tracing: de qual reservatório ou poço a água chega a cada zona. Útil para desinfecção, mistura de fontes e zonas “velhas”.

Emergências e contaminação

Avaliar que parte da rede seria afetada se entra um contaminante, se falha uma bomba ou se é preciso isolar um trecho. A EPA também o usa em cenários de ameaça e resiliência.

Incêndios

Verificar vazões e pressões disponíveis para hidrantes enquanto o resto da rede continua demandando. Aqui o PDD do 2.2 ajuda: se a pressão cai, a demanda não é entregue “por mágica”.

Vazamentos e redes deficientes

Explorar cenários com vazão perdida ou pressão insuficiente. O modelo não inventa vazamentos sozinho: você coloca a hipótese; o motor mostra o efeito hidráulico.

Calibração com dados reais

Comparar o modelo com pressões medidas, vazões, níveis de tanque e dados de operação (SCADA). Ajustar rugosidades, demandas e válvulas até o modelo se parecer com a rede real.

Automação (Toolkit + scripts)

Chamar o motor a partir de Python ou outra aplicação: GIS → montar a rede → EPANET → otimizar diâmetros ou horários de bombas → dashboard. O Toolkit é o que torna esse fluxo possível sem reescrever o solver.

Contrastes curtos

EPANET vs HEC-RAS

EPANET: redes pressurizadas (água potável). HEC-RAS: rios, canais, planícies de inundação. Os dois tratam de “água”; não resolvem o mesmo problema.

EPANET vs SWMM

EPANET: distribuição pressurizada. SWMM: drenagem urbana e esgoto (pluvial/sanitário), com superfícies e processos hidrológicos. Complementares na cidade; não intercambiáveis.

Cronologia breve

  • ~1991 — QHCSIM (Rossman): hidráulica + qualidade, sem o nome EPANET.
  • 1993–1994 — EPANET 1.x; manual 1.1 (jan. 1994); motor em C; primeira janela Windows em Visual Basic.
  • ~2000 — EPANET 2 + Programmer’s Toolkit; interface gráfica em Delphi.
  • MSX — extensão multi-espécie sobre o motor.
  • ~2014 — Open Water Analytics; comunidade em torno do código.
  • 2020 — EPA EPANET 2.2 (estável oficial, com PDD).
  • OWA 2.3.x — ramo comunitário (distinto do EPA estável).
  • EPANET 3 — experimental OWA em C++ (não confundir com 2.2).

Conclusão

O EPANET não nasceu para desenhar redes bonitas. Nasceu porque a EPA precisava unir pressão e qualidade no tempo, num motor portátil em C, com uma biblioteca de funções que outros pudessem chamar. A interface gráfica passou de Visual Basic para Delphi; o ecossistema acrescentou MSX, OWA e, mais tarde, uma pista experimental em C++. Para o engenheiro civil, a mensagem histórica é simples: quando você modela uma rede de água, quase sempre está falando com uma linhagem que começa num protótipo de 1991 e continua viva — desde que você saiba se está no EPA 2.2 ou num ramo comunitário — e que esse motor serve para dimensionar, operar, calibrar e pensar emergências, não só para “rodar um .inp”.

Referências

  1. U.S. EPA. EPANET.
  2. Rossman, L. A. EPANET Users Manual (Version 1.1), janeiro de 1994. NTIS.
  3. Rossman, L. A. EPANET 2 Users Manual, U.S. EPA, 2000.
  4. U.S. EPA. EPANET 2.2 (repositório).
  5. U.S. EPA. EPANET-legacy-user-interface (interface Delphi EPANET2W).
  6. Open Water Analytics. EPANET (ramo comunitário).
  7. Open Water Analytics. epanet-dev (EPANET 3 / OO C++).
  8. Uber, J. / openepanet.org. Nota sobre a aposentadoria de Lew Rossman e o QHCSIM (1991).
  9. Salomons, E. The creator of EPANET has retired (inclui contexto QHCSIM).
  10. Riaño-Briceño et al. The EPANET Open Source Initiative (WDSA/CCWI; interface VB→Delphi, motor C).
  11. U.S. EPA. EPANET-MSX (extensão multi-espécie; manuais EPA/NEPIS).
  12. EPANET Programmer’s Toolkit (DLL; C/C++, VB, Delphi). Documentação histórica do Toolkit.

Avaliação e limitações

Trate as notas abaixo como contexto de avaliação, não como um cálculo ou uma verificação comprovados.

Use-o como motor de redes pressurizadas. Saiba se você está no EPA 2.2 ou num ramo comunitário. A calibração continua sendo responsabilidade de quem modela.