WNTR學習筆記

2021-09-18 01:27:40 字數 3207 閱讀 6128

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開發人員可以快速地支援實現這些模式的服務和應用程式。他們將在任...