EPANET  2.1
Release Notes for EPANET 2.1

The last update to the EPANET engine was "Build 2.00.12" in February of 2008. Since that time, a community effort to update and extend the open-source code has emerged. This group has made a number of bug-fixes and API additions that help to improve the EPANET engine for everyone. Version 2.1 was released in July 2016, after 8.5 years.

Contributors to this version (listed in order of first contribution):

  • Lew Rossman
  • Michael Tryby
  • Feng Shang
  • James Uber
  • Tom Taxon
  • Sam Hatchett
  • Hyoungmin Woo
  • Jinduan Chen
  • Yunier Soad
  • Mike Kane
  • Demetrios Eliades
  • Will Furnass
  • Steffen Macke
  • Mariosmsk
  • Elad Salomons
  • Maurizio Cingi
  • Bryant McDonnell

API Additions (new functions):

  • ENgetaveragepatternvalue
  • ENgetstatistic
  • ENgetcoord / ENsetcoord
  • ENgetpumptype
  • ENgetqualinfo

Demands

  • ENgetnumdemands
  • ENgetbasedemand / ENsetbasedemand
  • ENgetdemandpattern

Curves

  • ENgetcurve
  • ENgetcurveid
  • ENgetcurvelen
  • ENgetcurvevalue
  • ENsetcurvevalue
  • ENsetcurve
  • ENaddcurve
  • ENgetheadcurveindex
  • ENgetcurveindex

API Extensions (additional parameters)

node value types:

  • EN_TANKVOLUME
  • EN_MAXVOLUME

link value types:

  • EN_LINKQUAL
  • EN_LINKPATTERN

time parameters:

  • EN_STARTTIME
  • EN_HTIME
  • EN_QTIME
  • EN_HALTFLAG
  • EN_NEXTEVENT

(new) statistic values:

  • EN_ITERATIONS
  • EN_RELATIVEERROR

pump types

  • EN_CONST_HP
  • EN_POWER_FUNC
  • EN_CUSTOM

Notable Performance Improvements, Bug Fixes, Usage Features, and other notes

  • API float type is a compile-time option with the EN_API_FLOAT_TYPE definition. Use either float or double - default if left undefined is float to maintain compatibility with 2.0.x
  • updated hash table algorithm
  • fixed memory leak when saving output
  • enables interleaved hydraulic and water quality analysis steps:
1 ENopenH();
2 ENinitH(0);
3 ENinitQ(EN_NOSAVE);
4 do {
5  ENrunH(&t);
6  ENrunQ(&qt);
7  ENnextQ(&qstep);
8  // collect results
9  ENnextH(&tstep);
10 } while (tstep > 0);
11 ENcloseQ();
12 ENcloseH();
  • engine code and command-line executable are now in separate implementation files
  • parameter #define directives are now enumerated values
  • main header now contains doxygen-compatible comment blocks for auto-generated documentation