Moving epanet-toolkit to epanet-python repo
This commit is contained in:
@@ -1,40 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
#
|
|
||||||
# setup.py - Setup up script for en_toolkit python extension
|
|
||||||
#
|
|
||||||
# Created: 11/27/2017
|
|
||||||
# Author: Michael E. Tryby
|
|
||||||
# US EPA - ORD/NRMRL
|
|
||||||
#
|
|
||||||
# Requires:
|
|
||||||
# Platform C language compiler
|
|
||||||
# SWIG
|
|
||||||
#
|
|
||||||
|
|
||||||
try:
|
|
||||||
from setuptools import setup, Extension
|
|
||||||
from setuptools.command.build_ext import build_ext
|
|
||||||
except ImportError:
|
|
||||||
from distutils.core import setup, Extension
|
|
||||||
from distutils.command.build_ext import build_ext
|
|
||||||
|
|
||||||
setup(
|
|
||||||
name = "epanet-toolkit",
|
|
||||||
version = "0.0.0",
|
|
||||||
ext_modules = [
|
|
||||||
Extension("_epanet_toolkit",
|
|
||||||
include_dirs = ['lib\\'],
|
|
||||||
libraries = ['epanet'],
|
|
||||||
library_dirs = ['lib\\'],
|
|
||||||
sources = ['src\\epanet_toolkit.i'],
|
|
||||||
swig_opts=['-modern'],
|
|
||||||
language = 'C'
|
|
||||||
)
|
|
||||||
],
|
|
||||||
package_dir = {'':'src'},
|
|
||||||
py_modules = ['epanet_toolkit'],
|
|
||||||
|
|
||||||
install_requires = [
|
|
||||||
'enum34'
|
|
||||||
]
|
|
||||||
)
|
|
||||||
@@ -1,71 +0,0 @@
|
|||||||
/*
|
|
||||||
* epanet_toolkit.i - SWIG interface description file for EPANET toolkit
|
|
||||||
*
|
|
||||||
* Created: 11/27/2017
|
|
||||||
* Author: Michael E. Tryby
|
|
||||||
* US EPA - ORD/NRMRL
|
|
||||||
*
|
|
||||||
* Build command:
|
|
||||||
* $ swig -I../../../include -python epanet_toolkit.i
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
%module epanet_toolkit
|
|
||||||
%{
|
|
||||||
#include "epanet2.h"
|
|
||||||
|
|
||||||
#define SWIG_FILE_WITH_INIT
|
|
||||||
%}
|
|
||||||
|
|
||||||
|
|
||||||
/* DEFINE AND TYPEDEF MUST BE INCLUDED */
|
|
||||||
typedef void* EN_ProjectHandle;
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef DLLEXPORT
|
|
||||||
#ifdef WINDOWS
|
|
||||||
#ifdef __cplusplus
|
|
||||||
#define DLLEXPORT extern "C" __declspec(dllexport)
|
|
||||||
#else
|
|
||||||
#define DLLEXPORT __declspec(dllexport) __stdcall
|
|
||||||
#endif // __cplusplus
|
|
||||||
#elif defined(CYGWIN)
|
|
||||||
#define DLLEXPORT __stdcall
|
|
||||||
#elif defined(__APPLE__)
|
|
||||||
#ifdef __cplusplus
|
|
||||||
#define DLLEXPORT
|
|
||||||
#else
|
|
||||||
#define DLLEXPORT
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
#define DLLEXPORT
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* TYPEMAPS FOR OPAQUE POINTER */
|
|
||||||
/* Used for functions that output a new opaque pointer */
|
|
||||||
%typemap(in, numinputs=0) EN_ProjectHandle* ph (EN_ProjectHandle retval)
|
|
||||||
{
|
|
||||||
/* OUTPUT in */
|
|
||||||
retval = NULL;
|
|
||||||
$1 = &retval;
|
|
||||||
}
|
|
||||||
/* used for functions that take in an opaque pointer (or NULL)
|
|
||||||
and return a (possibly) different pointer */
|
|
||||||
%typemap(argout) EN_PorjectHandle* ph
|
|
||||||
{
|
|
||||||
/* OUTPUT argout */
|
|
||||||
%append_output(SWIG_NewPointerObj(SWIG_as_voidptr(retval$argnum), $1_descriptor, 0));
|
|
||||||
}
|
|
||||||
/* No need for special IN typemap for opaque pointers, it works anyway */
|
|
||||||
|
|
||||||
|
|
||||||
/* NO EXCEPTION HANDLING FOR THESE FUNCTIONS */
|
|
||||||
int DLLEXPORT EN_alloc(EN_ProjectHandle* ph);
|
|
||||||
int DLLEXPORT EN_open(EN_ProjectHandle ph, char *inpFile, char *rptFile, char *binOutFile);
|
|
||||||
int DLLEXPORT EN_solveH(EN_ProjectHandle ph);
|
|
||||||
int DLLEXPORT EN_solveQ(EN_ProjectHandle ph);
|
|
||||||
int DLLEXPORT EN_report(EN_ProjectHandle ph);
|
|
||||||
int DLLEXPORT EN_close(EN_ProjectHandle ph);
|
|
||||||
int DLLEXPORT EN_free(EN_ProjectHandle ph);
|
|
||||||
@@ -1,178 +0,0 @@
|
|||||||
[TITLE]
|
|
||||||
EPANET Example Network 1
|
|
||||||
A simple example of modeling chlorine decay. Both bulk and
|
|
||||||
wall reactions are included.
|
|
||||||
|
|
||||||
[JUNCTIONS]
|
|
||||||
;ID Elev Demand Pattern
|
|
||||||
10 710 0 ;
|
|
||||||
11 710 150 ;
|
|
||||||
12 700 150 ;
|
|
||||||
13 695 100 ;
|
|
||||||
21 700 150 ;
|
|
||||||
22 695 200 ;
|
|
||||||
23 690 150 ;
|
|
||||||
31 700 100 ;
|
|
||||||
32 710 100 ;
|
|
||||||
|
|
||||||
[RESERVOIRS]
|
|
||||||
;ID Head Pattern
|
|
||||||
9 800 ;
|
|
||||||
|
|
||||||
[TANKS]
|
|
||||||
;ID Elevation InitLevel MinLevel MaxLevel Diameter MinVol VolCurve
|
|
||||||
2 850 120 100 150 50.5 0 ;
|
|
||||||
|
|
||||||
[PIPES]
|
|
||||||
;ID Node1 Node2 Length Diameter Roughness MinorLoss Status
|
|
||||||
10 10 11 10530 18 100 0 Open ;
|
|
||||||
11 11 12 5280 14 100 0 Open ;
|
|
||||||
12 12 13 5280 10 100 0 Open ;
|
|
||||||
21 21 22 5280 10 100 0 Open ;
|
|
||||||
22 22 23 5280 12 100 0 Open ;
|
|
||||||
31 31 32 5280 6 100 0 Open ;
|
|
||||||
110 2 12 200 18 100 0 Open ;
|
|
||||||
111 11 21 5280 10 100 0 Open ;
|
|
||||||
112 12 22 5280 12 100 0 Open ;
|
|
||||||
113 13 23 5280 8 100 0 Open ;
|
|
||||||
121 21 31 5280 8 100 0 Open ;
|
|
||||||
122 22 32 5280 6 100 0 Open ;
|
|
||||||
|
|
||||||
[PUMPS]
|
|
||||||
;ID Node1 Node2 Parameters
|
|
||||||
9 9 10 HEAD 1 ;
|
|
||||||
|
|
||||||
[VALVES]
|
|
||||||
;ID Node1 Node2 Diameter Type Setting MinorLoss
|
|
||||||
|
|
||||||
[TAGS]
|
|
||||||
|
|
||||||
[DEMANDS]
|
|
||||||
;Junction Demand Pattern Category
|
|
||||||
|
|
||||||
[STATUS]
|
|
||||||
;ID Status/Setting
|
|
||||||
|
|
||||||
[PATTERNS]
|
|
||||||
;ID Multipliers
|
|
||||||
;Demand Pattern
|
|
||||||
1 1.0 1.2 1.4 1.6 1.4 1.2
|
|
||||||
1 1.0 0.8 0.6 0.4 0.6 0.8
|
|
||||||
|
|
||||||
[CURVES]
|
|
||||||
;ID X-Value Y-Value
|
|
||||||
;PUMP: Pump Curve for Pump 9
|
|
||||||
1 1500 250
|
|
||||||
|
|
||||||
[CONTROLS]
|
|
||||||
LINK 9 OPEN IF NODE 2 BELOW 110
|
|
||||||
LINK 9 CLOSED IF NODE 2 ABOVE 140
|
|
||||||
|
|
||||||
|
|
||||||
[RULES]
|
|
||||||
|
|
||||||
[ENERGY]
|
|
||||||
Global Efficiency 75
|
|
||||||
Global Price 0.0
|
|
||||||
Demand Charge 0.0
|
|
||||||
|
|
||||||
[EMITTERS]
|
|
||||||
;Junction Coefficient
|
|
||||||
|
|
||||||
[QUALITY]
|
|
||||||
;Node InitQual
|
|
||||||
10 0.5
|
|
||||||
11 0.5
|
|
||||||
12 0.5
|
|
||||||
13 0.5
|
|
||||||
21 0.5
|
|
||||||
22 0.5
|
|
||||||
23 0.5
|
|
||||||
31 0.5
|
|
||||||
32 0.5
|
|
||||||
9 1.0
|
|
||||||
2 1.0
|
|
||||||
|
|
||||||
[SOURCES]
|
|
||||||
;Node Type Quality Pattern
|
|
||||||
|
|
||||||
[REACTIONS]
|
|
||||||
;Type Pipe/Tank Coefficient
|
|
||||||
|
|
||||||
|
|
||||||
[REACTIONS]
|
|
||||||
Order Bulk 1
|
|
||||||
Order Tank 1
|
|
||||||
Order Wall 1
|
|
||||||
Global Bulk -.5
|
|
||||||
Global Wall -1
|
|
||||||
Limiting Potential 0.0
|
|
||||||
Roughness Correlation 0.0
|
|
||||||
|
|
||||||
[MIXING]
|
|
||||||
;Tank Model
|
|
||||||
|
|
||||||
[TIMES]
|
|
||||||
Duration 24:00
|
|
||||||
Hydraulic Timestep 1:00
|
|
||||||
Quality Timestep 0:05
|
|
||||||
Pattern Timestep 2:00
|
|
||||||
Pattern Start 0:00
|
|
||||||
Report Timestep 1:00
|
|
||||||
Report Start 0:00
|
|
||||||
Start ClockTime 12 am
|
|
||||||
Statistic None
|
|
||||||
|
|
||||||
[REPORT]
|
|
||||||
Status Yes
|
|
||||||
Summary No
|
|
||||||
Page 0
|
|
||||||
|
|
||||||
[OPTIONS]
|
|
||||||
Units GPM
|
|
||||||
Headloss H-W
|
|
||||||
Specific Gravity 1.0
|
|
||||||
Viscosity 1.0
|
|
||||||
Trials 40
|
|
||||||
Accuracy 0.001
|
|
||||||
CHECKFREQ 2
|
|
||||||
MAXCHECK 10
|
|
||||||
DAMPLIMIT 0
|
|
||||||
Unbalanced Continue 10
|
|
||||||
Pattern 1
|
|
||||||
Demand Multiplier 1.0
|
|
||||||
Emitter Exponent 0.5
|
|
||||||
Quality Chlorine mg/L
|
|
||||||
Diffusivity 1.0
|
|
||||||
Tolerance 0.01
|
|
||||||
|
|
||||||
[COORDINATES]
|
|
||||||
;Node X-Coord Y-Coord
|
|
||||||
10 20.00 70.00
|
|
||||||
11 30.00 70.00
|
|
||||||
12 50.00 70.00
|
|
||||||
13 70.00 70.00
|
|
||||||
21 30.00 40.00
|
|
||||||
22 50.00 40.00
|
|
||||||
23 70.00 40.00
|
|
||||||
31 30.00 10.00
|
|
||||||
32 50.00 10.00
|
|
||||||
9 10.00 70.00
|
|
||||||
2 50.00 90.00
|
|
||||||
|
|
||||||
[VERTICES]
|
|
||||||
;Link X-Coord Y-Coord
|
|
||||||
|
|
||||||
[LABELS]
|
|
||||||
;X-Coord Y-Coord Label & Anchor Node
|
|
||||||
6.99 73.63 "Source"
|
|
||||||
13.48 68.13 "Pump"
|
|
||||||
43.85 91.21 "Tank"
|
|
||||||
|
|
||||||
[BACKDROP]
|
|
||||||
DIMENSIONS 7.00 6.00 73.00 94.00
|
|
||||||
UNITS None
|
|
||||||
FILE
|
|
||||||
OFFSET 0.00 0.00
|
|
||||||
|
|
||||||
[END]
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
|
|
||||||
#
|
|
||||||
# epanet_toolkit_test.py - Unit tests for epanet toolkit API
|
|
||||||
#
|
|
||||||
# Created: Dec. 4, 2017
|
|
||||||
# Author: Michael E. Tryby
|
|
||||||
# US EPA - ORD/NRMRL
|
|
||||||
#
|
|
||||||
|
|
||||||
from unittest import TestCase
|
|
||||||
import inspect
|
|
||||||
|
|
||||||
import epanet_toolkit as ent
|
|
||||||
|
|
||||||
|
|
||||||
class TestToolkitMethods(TestCase):
|
|
||||||
|
|
||||||
def test_alloc(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def test_free(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def test_open(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def test_close(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
class TestToolkit(TestCase):
|
|
||||||
|
|
||||||
def setUp(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def tearDown(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def test_solveH(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def test_solveQ(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def test_report(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
|
|
||||||
import epanet_toolkit as tlkt
|
|
||||||
|
|
||||||
def epanet():
|
|
||||||
[error, handle] = tlkt.EN_alloc()
|
|
||||||
|
|
||||||
[error, handle] = tlkt.EN_free(handle)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
|
|
||||||
epanet()
|
|
||||||
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "epanet2.h"
|
|
||||||
|
|
||||||
// NOTE: Project Home needs to be updated to run unit test
|
|
||||||
#define PROJECT_HOME "C:/Users/mtryby/Workspace/GitRepo/michaeltryby/epanet"
|
|
||||||
#define DATA_PATH "/tools/epanet-toolkit/test/data/"
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
int error = 0;
|
|
||||||
EN_ProjectHandle project = NULL;
|
|
||||||
|
|
||||||
char inputFile[10] = "Net1.inp";
|
|
||||||
char reportFile[10] = "net1.rpt";
|
|
||||||
char outputFile[10] = "net1.out";
|
|
||||||
|
|
||||||
error = EN_alloc(&project);
|
|
||||||
error = EN_open(project, inputFile, reportFile, outputFile);
|
|
||||||
|
|
||||||
error = EN_solveH(project);
|
|
||||||
error = EN_solveQ(project);
|
|
||||||
error = EN_report(project);
|
|
||||||
|
|
||||||
error = EN_close(project);
|
|
||||||
error = EN_free(project);
|
|
||||||
|
|
||||||
return error;
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user