Accept Merge Request #166: (api -> master)
Merge Request: Add EPANET2 output format Created By: @王琼钰 Accepted By: @王琼钰 URL: https://tjwater.coding.net/p/tjwatercloud/d/TJWaterServer/git/merge/166?initial=true
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -17,3 +17,6 @@ dev_demo.py
|
||||
*.rpt
|
||||
*.opt
|
||||
*.opt.json
|
||||
|
||||
# todo
|
||||
TODO.md
|
||||
@@ -69,7 +69,7 @@ def set_status(name: str, cs: ChangeSet) -> ChangeSet:
|
||||
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# [EPANET2]
|
||||
# [EPANET2][IN][OUT]
|
||||
# link value
|
||||
#--------------------------------------------------------------
|
||||
class InpStatus:
|
||||
|
||||
@@ -94,7 +94,8 @@ def delete_pattern(name: str, cs: ChangeSet) -> ChangeSet:
|
||||
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# [EPANET2]
|
||||
# [EPANET2][IN][OUT]
|
||||
# ;desc
|
||||
# id mult1 mult2 .....
|
||||
#--------------------------------------------------------------
|
||||
def inp_in_pattern(section: list[str]) -> ChangeSet:
|
||||
|
||||
@@ -122,7 +122,8 @@ def delete_curve(name: str, cs: ChangeSet) -> ChangeSet:
|
||||
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# [EPANET2]
|
||||
# [EPANET2][IN][OUT]
|
||||
# ;type: desc
|
||||
# id x y
|
||||
#--------------------------------------------------------------
|
||||
def inp_in_curve(section: list[str]) -> ChangeSet:
|
||||
|
||||
@@ -132,7 +132,7 @@ def set_pump_energy(name: str, cs: ChangeSet) -> ChangeSet:
|
||||
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# [EPANET2]
|
||||
# [EPANET2][IN][OUT]
|
||||
# GLOBAL {PRICE/PATTERN/EFFIC} value
|
||||
# PUMP id {PRICE/PATTERN/EFFIC} value
|
||||
# DEMAND CHARGE value
|
||||
|
||||
@@ -60,7 +60,7 @@ def set_emitter(name: str, cs: ChangeSet) -> ChangeSet:
|
||||
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# [EPANET2]
|
||||
# [EPANET2][IN][OUT]
|
||||
# node Ke
|
||||
#--------------------------------------------------------------
|
||||
class InpEmitter:
|
||||
|
||||
@@ -60,7 +60,7 @@ def set_quality(name: str, cs: ChangeSet) -> ChangeSet:
|
||||
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# [EPANET2]
|
||||
# [EPANET2][IN][OUT]
|
||||
# node initqual
|
||||
#--------------------------------------------------------------
|
||||
class InpQuality:
|
||||
|
||||
@@ -103,7 +103,7 @@ def delete_source(name: str, cs: ChangeSet) -> ChangeSet:
|
||||
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# [EPANET2]
|
||||
# [EPANET2][IN][OUT]
|
||||
# node sourcetype quality (pattern)
|
||||
#--------------------------------------------------------------
|
||||
class InpSource:
|
||||
|
||||
@@ -182,7 +182,7 @@ def set_tank_reaction(name: str, cs: ChangeSet) -> ChangeSet:
|
||||
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# [EPANET2]
|
||||
# [EPANET2][IN][OUT]
|
||||
# ORDER {BULK/WALL/TANK} value
|
||||
# GLOBAL BULK coeff
|
||||
# GLOBAL WALL coeff
|
||||
|
||||
@@ -97,7 +97,7 @@ def delete_mixing(name: str, cs: ChangeSet) -> ChangeSet:
|
||||
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# [EPANET2]
|
||||
# [EPANET2][IN][OUT]
|
||||
# TankID MixModel FractVolume
|
||||
#--------------------------------------------------------------
|
||||
class InpMixing:
|
||||
|
||||
@@ -130,7 +130,6 @@ def set_option(name: str, cs: ChangeSet) -> ChangeSet:
|
||||
# REQUIRED PRESSURE value
|
||||
# PRESSURE EXPONENT value#
|
||||
# TOLERANCE value
|
||||
# SEGMENTS value (not used)
|
||||
# ---- Undocumented Options -----
|
||||
# HTOL value
|
||||
# QTOL value
|
||||
|
||||
@@ -12,7 +12,7 @@ def get_node_coord(name: str, id: str) -> dict[str, float]:
|
||||
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# [EPANET2]
|
||||
# [EPANET2][IN][OUT]
|
||||
# id x y
|
||||
#--------------------------------------------------------------
|
||||
# exception ! need merge to node change set !
|
||||
|
||||
@@ -76,7 +76,7 @@ def delete_vertex(name: str, cs: ChangeSet) -> ChangeSet:
|
||||
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# [EPANET2]
|
||||
# [EPANET2][IN][OUT]
|
||||
# id x y
|
||||
#--------------------------------------------------------------
|
||||
def inp_in_vertex(section: list[str]) -> ChangeSet:
|
||||
|
||||
@@ -122,7 +122,10 @@ def delete_junction(name: str, cs: ChangeSet) -> ChangeSet:
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# [EPANET2]
|
||||
# id elev. (demand) (demand pattern)
|
||||
# [IN]
|
||||
# id elev. (demand) (demand pattern) ;desc
|
||||
# [OUT]
|
||||
# id elev. ;desc
|
||||
#--------------------------------------------------------------
|
||||
class InpJunction:
|
||||
def __init__(self, line: str) -> None:
|
||||
|
||||
@@ -117,8 +117,8 @@ def delete_reservoir(name: str, cs: ChangeSet) -> ChangeSet:
|
||||
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# [EPANET2]
|
||||
# id elev (pattern)
|
||||
# [EPANET2][IN][OUT]
|
||||
# id elev (pattern) ;desc
|
||||
#--------------------------------------------------------------
|
||||
class InpReservoir:
|
||||
def __init__(self, line: str) -> None:
|
||||
|
||||
@@ -145,8 +145,10 @@ def delete_tank(name: str, cs: ChangeSet) -> ChangeSet:
|
||||
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# [EPANET2]
|
||||
# id elev initlevel minlevel maxlevel diam (minvol vcurve)
|
||||
# [EPANET2][IN][OUT]
|
||||
# id elev initlevel minlevel maxlevel diam (minvol vcurve overflow) ;desc
|
||||
# xxx
|
||||
# * YES
|
||||
#--------------------------------------------------------------
|
||||
class InpTank:
|
||||
def __init__(self, line: str) -> None:
|
||||
@@ -163,7 +165,7 @@ class InpTank:
|
||||
self.max_level = float(tokens[4])
|
||||
self.diameter = float(tokens[5])
|
||||
self.min_vol = float(tokens[6])
|
||||
self.vol_curve = str(tokens[7]) if num_without_desc >= 8 else None
|
||||
self.vol_curve = str(tokens[7]) if num_without_desc >= 8 and tokens[7] != '*' else None
|
||||
self.overflow = str(tokens[8].upper()) if num_without_desc >= 9 else None
|
||||
self.desc = str(tokens[-1]) if has_desc else None
|
||||
|
||||
@@ -192,6 +194,8 @@ def inp_out_tank(name: str) -> list[str]:
|
||||
min_vol = obj['min_vol']
|
||||
vol_curve = obj['vol_curve'] if obj['vol_curve'] != None else ''
|
||||
overflow = obj['overflow'] if obj['overflow'] != None else ''
|
||||
if vol_curve == '' and overflow != '':
|
||||
vol_curve = '*'
|
||||
desc = ';'
|
||||
lines.append(f'{id} {elevation} {init_level} {min_level} {max_level} {diameter} {min_vol} {vol_curve} {overflow} {desc}')
|
||||
return lines
|
||||
|
||||
@@ -125,7 +125,10 @@ def delete_pipe(name: str, cs: ChangeSet) -> ChangeSet:
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# [EPANET2]
|
||||
# id node1 node2 length diam rcoeff (lcoeff) (status)
|
||||
# [IN]
|
||||
# id node1 node2 length diam rcoeff (lcoeff status) ;desc
|
||||
# [OUT]
|
||||
# id node1 node2 length diam rcoeff lcoeff (status) ;desc
|
||||
#--------------------------------------------------------------
|
||||
class InpPipe:
|
||||
def __init__(self, line: str) -> None:
|
||||
|
||||
@@ -115,8 +115,8 @@ def delete_pump(name: str, cs: ChangeSet) -> ChangeSet:
|
||||
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# [EPANET2] Version 1.x is deprecated
|
||||
# id node1 node2 KEYWORD value {KEYWORD value ...}
|
||||
# [EPANET2][IN][OUT]
|
||||
# id node1 node2 KEYWORD value {KEYWORD value ...} ;desc
|
||||
# where KEYWORD = [POWER,HEAD,PATTERN,SPEED]
|
||||
#--------------------------------------------------------------
|
||||
class InpPump:
|
||||
|
||||
@@ -123,7 +123,7 @@ def delete_valve(name: str, cs: ChangeSet) -> ChangeSet:
|
||||
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# [EPANET2]
|
||||
# [EPANET2][IN][OUT]
|
||||
# id node1 node2 diam type setting (lcoeff lcurve)
|
||||
# for GPV, setting is string = head curve id
|
||||
# for PCV, add loss curve if present
|
||||
|
||||
@@ -86,9 +86,8 @@ def set_demand(name: str, cs: ChangeSet) -> ChangeSet:
|
||||
|
||||
|
||||
#--------------------------------------------------------------
|
||||
# [EPANET2]
|
||||
# MULTIPLY factor
|
||||
# node base_demand (pattern)
|
||||
# [EPANET2][IN][OUT]
|
||||
# node base_demand (pattern) ;category
|
||||
#--------------------------------------------------------------
|
||||
class InpDemand:
|
||||
def __init__(self, line: str) -> None:
|
||||
|
||||
Reference in New Issue
Block a user