From 1b64dce36531bb66c93ee5d98b89d930d78bf06c Mon Sep 17 00:00:00 2001 From: "WQY\\qiong" Date: Sat, 19 Nov 2022 09:51:52 +0800 Subject: [PATCH 1/4] Start simulation --- epanet/epanet.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 epanet/epanet.py diff --git a/epanet/epanet.py b/epanet/epanet.py new file mode 100644 index 0000000..42199dc --- /dev/null +++ b/epanet/epanet.py @@ -0,0 +1,33 @@ +import ctypes +import platform +import os + +_lib_core = None +_lib_output = None + +def load_epanet(): + _platform = platform.system() + if _platform != "Windows": + raise Exception(f'Platform {_platform} unsupported (not yet)') + _lib_core = ctypes.CDLL("./epanet2.dll") + #version = ctypes.c_int() + #lib_core.EN_getversion(ctypes.byref(version)) + #print(f'Load EPANET {version}') + _lib_output = ctypes.CDLL("./epanet-output.dll") + + +# readable True => json, False => binary output +def run_epanet(project: str, readable: bool = True) -> str: + dir = os.path.dirname(os.getcwd()) + exe = os.path.join(os.path.join(dir, 'epanet'), 'runepanet.exe') + inp = os.path.join(os.path.join(dir, 'inp'), project + '.inp') + rpt = os.path.join(os.path.join(dir, 'temp'), project + '.rpt') + opt = os.path.join(os.path.join(dir, 'temp'), project + '.opt') + command = f'{exe} {inp} {rpt} {opt}' + print(command) + os.popen(command) + return '' + +if __name__ == '__main__': + load_epanet() + run_epanet('net3') From 7b0e79fb9a0fc04aa3e228c7abc2700e9bf2f364 Mon Sep 17 00:00:00 2001 From: "WQY\\qiong" Date: Sat, 19 Nov 2022 09:53:18 +0800 Subject: [PATCH 2/4] Add temp for git visibility --- temp/temp | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 temp/temp diff --git a/temp/temp b/temp/temp new file mode 100644 index 0000000..e69de29 From ec062ace48207f3d4d37f7ffd543ae2b96b024bd Mon Sep 17 00:00:00 2001 From: "WQY\\qiong" Date: Sat, 19 Nov 2022 10:09:58 +0800 Subject: [PATCH 3/4] Support database simulation --- db_inp/db | 0 epanet/epanet.py | 30 ++++++++++++++++++++---------- 2 files changed, 20 insertions(+), 10 deletions(-) create mode 100644 db_inp/db diff --git a/db_inp/db b/db_inp/db new file mode 100644 index 0000000..e69de29 diff --git a/epanet/epanet.py b/epanet/epanet.py index 42199dc..e1cd950 100644 --- a/epanet/epanet.py +++ b/epanet/epanet.py @@ -1,11 +1,15 @@ import ctypes import platform import os +import sys +sys.path.append("..") +from api import project +from api import parser _lib_core = None _lib_output = None -def load_epanet(): +def _load_epanet(): _platform = platform.system() if _platform != "Windows": raise Exception(f'Platform {_platform} unsupported (not yet)') @@ -15,19 +19,25 @@ def load_epanet(): #print(f'Load EPANET {version}') _lib_output = ctypes.CDLL("./epanet-output.dll") - # readable True => json, False => binary output -def run_epanet(project: str, readable: bool = True) -> str: +def run_project(name: str, readable: bool = True) -> str: + if not project.have_project(name): + raise Exception("No such project!") + dir = os.path.dirname(os.getcwd()) + + db_inp = os.path.join(os.path.join(dir, 'db_inp'), name + '.inp') + parser.dump_inp(name, db_inp) + exe = os.path.join(os.path.join(dir, 'epanet'), 'runepanet.exe') - inp = os.path.join(os.path.join(dir, 'inp'), project + '.inp') - rpt = os.path.join(os.path.join(dir, 'temp'), project + '.rpt') - opt = os.path.join(os.path.join(dir, 'temp'), project + '.opt') + inp = os.path.join(os.path.join(dir, 'db_inp'), name + '.inp') + rpt = os.path.join(os.path.join(dir, 'temp'), name + '.rpt') + opt = os.path.join(os.path.join(dir, 'temp'), name + '.opt') command = f'{exe} {inp} {rpt} {opt}' - print(command) - os.popen(command) + #print(command) + result = os.system(command) return '' if __name__ == '__main__': - load_epanet() - run_epanet('net3') + _load_epanet() + run_project('net3') From 1c612108b9b3b11e721b161796a4bdeaa0bd82ce Mon Sep 17 00:00:00 2001 From: "WQY\\qiong" Date: Sat, 19 Nov 2022 10:10:52 +0800 Subject: [PATCH 4/4] Remove git guard --- db_inp/db | 0 temp/temp | 0 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 db_inp/db delete mode 100644 temp/temp diff --git a/db_inp/db b/db_inp/db deleted file mode 100644 index e69de29..0000000 diff --git a/temp/temp b/temp/temp deleted file mode 100644 index e69de29..0000000