wntr是基於epanet2水力水質模擬的乙個python庫. 使用wntr, 我們不必再使用epanet軟體進行模擬, wntr提供的功能也比原生的epanet功能要強大許多.
匯入
import wntr
載入管網模型
inp_file = "net3.inp"
wn = wntr.network.waternetworkmodel(inp_file)
載入inp之後的相關函式
print(wn.junction_name_list) #獲得junciton的list
print(wn.node_name_list) # node
print(wn.link_name_list) # link 僅僅獲取管網名稱 不包含前後節點
畫出模型圖
wntr.graphics.plot_network(wn, title=wn.name)
水力模擬
sim = wntr.sim.epanetsimulator(wn)
results = sim.run_sim()
結果顯示
results.node['quality'].loc[ : 3*3600]
具體顯示
print(epanet_sim_results.node.keys()) # node有什麼屬性
print(epanet_sim_results.link.keys())
print(epanet_sim_results.node['pressure'].loc[: 3*3600]) # 限定顯示水力時間
print(epanet_sim_results.link['flowrate'].loc[: 3*3600])
node後demand pressure quality 可選擇節點的屬性, loc後加限定時間, 一般3600s為乙個間隔
results.node與results.link都是下的屬性都是dataframe屬性
轉換為圖
g = wn.get_graph()
print(g.nodes())
print(g.node)
print(g.edges())
獲取首尾節點
for i in wn.link_name_list: # 獲取管線的名稱
s = wn.links._data[i]._start_node # 獲取管線首尾節點
e = wn.links._data[i]._end_node
print(i, s, e)
設定node的初始水質
for i in wn.node_name_list: # 獲取node的名稱
wn.nodes._data[i]._initial_quality = 0 # 設定初始節點的水質都為0
除去源注入(某些模型可能會有初始的源注入)
for i in wn.source_name_list:
wn.remove_source(i)
設定報告間隔
wn.options.time.report_timestep = 600
其他的如水力模擬時間, 水質模擬時間等都可以在options中設定
源注入的乙個例子
import wntr
# create a water network model
inp_file = "ky8.inp"
wn = wntr.network.waternetworkmodel(inp_file)
wn.options.quality.mode = 'chemical' #設定為化學物質
#要跳過水質模擬,請按如下方式設定「質量」選項:
#wn.options.quality.mode = 'none'
# 水質模擬
wn.options.time.duration = 12*3600
wn.options.time.report_timestep = 600
source_pattern = wntr.network.elements.pattern.binary_pattern('sourcepattern',
start_time=3*3600,
end_time=24*3600,
duration=wn.options.time.duration,
step_size=wn.options.time.pattern_timestep)
wn.add_pattern('sourcepattern', source_pattern)
wn.add_source('source1', 'j-10', 'setpoint', 100000, 'sourcepattern') #name, node_name, source_type, quality, pattern=none
epanet_sim = wntr.sim.epanetsimulator(wn)
epanet_sim_results = epanet_sim.run_sim()
print(epanet_sim_results.node['quality'].loc[:12*3600])
學習筆記 雜湊學習筆記
hash基本原理 hash就是乙個像函式一樣的東西,你放進去乙個值,它給你輸出來乙個值。輸出的值就是hash值。一般hash值會比原來的值更好儲存 更小 或比較。那字串hash就非常好理解了。就是把字串轉換成乙個整數的函式。而且要盡量做到使字串對應唯一的hash值。它的主要思路是選取恰當的進製,可以...
學習筆記 CentOS 學習筆記01
簡單的做個課堂筆記 虛擬機器用的是vmware,系統是centos cd etc sysconfig network scripts pwdls 顯示列表 cat ifcfg eth0 檢視檔案內容 vi ifcfg eth0 進入vi編輯器 onboot no 原始設定 x逐字刪除 d刪除整行 a...
筆記 spring cloud 學習筆記
1 spring cloud 是什麼 spring cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具 例如配置管理,服務發現,斷路器,智慧型路由,微 控制匯流排 分布式系統的協調導致了樣板模式,使用spring cloud開發人員可以快速地支援實現這些模式的服務和應用程式。他們將在任...