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
- U.S. EPA. EPANET.
- Rossman, L. A. EPANET Users Manual (Version 1.1), janeiro de 1994. NTIS.
- Rossman, L. A. EPANET 2 Users Manual, U.S. EPA, 2000.
- U.S. EPA. EPANET 2.2 (repositório).
- U.S. EPA. EPANET-legacy-user-interface (interface Delphi EPANET2W).
- Open Water Analytics. EPANET (ramo comunitário).
- Open Water Analytics. epanet-dev (EPANET 3 / OO C++).
- Uber, J. / openepanet.org. Nota sobre a aposentadoria de Lew Rossman e o QHCSIM (1991).
- Salomons, E. The creator of EPANET has retired (inclui contexto QHCSIM).
- Riaño-Briceño et al. The EPANET Open Source Initiative (WDSA/CCWI; interface VB→Delphi, motor C).
- U.S. EPA. EPANET-MSX (extensão multi-espécie; manuais EPA/NEPIS).
- 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.
