標(biāo)定的避坑指南)
簡介這份資源是SWMM雨水管理模型漢化版SWMMH的官方參考手冊第I卷——水文學(xué)部分面向城市雨水管理、環(huán)境工程與城市規(guī)劃領(lǐng)域的工程師、研究人員及高校師生用于理解并掌握SWMMH的水文模擬原理。手冊由Lewis Rossman與Wayne C. Huber編寫同濟(jì)大學(xué)李樹平教授翻譯系統(tǒng)描述了SWMMH的對象模型、過程模型及模擬流程涵蓋氣象學(xué)、子匯水面積徑流與污染物負(fù)荷演算等核心內(nèi)容。資源包為1個PDF文件大小約2.93MB便于下載后隨時查閱。目前已有298人學(xué)習(xí)瀏覽說明其在專業(yè)圈內(nèi)具有一定認(rèn)可度。讀者可借助該手冊深入理解SWMMH如何跟蹤模擬時段內(nèi)各子匯水面積的徑流水量與水質(zhì)、各管渠的流量與水深為城市降雨事件的水量水質(zhì)預(yù)測與管理提供理論支撐適合需要系統(tǒng)學(xué)習(xí)SWMM水文模塊的中高級用戶。1. 從一份手冊說起SWMMH 水文卷到底能幫你算什么做城市排水或海綿城市項目的人遲早會碰到一個繞不開的名字——SWMM。它是一套動態(tài)降雨-徑流模擬模型專門用來算城市區(qū)域在單場暴雨或連續(xù)多年里的水量與水質(zhì)變化。而 SWMMH 是它的漢化版本配套的參考手冊分三卷第 I 卷講的就是水文學(xué)部分降水怎么變成徑流、下滲怎么扣損、地下水怎么交換、積雪怎么融化。很多人拿到模型第一反應(yīng)是找教程點(diǎn)按鈕結(jié)果參數(shù)一填就報錯或者結(jié)果明顯不合理。問題往往不在軟件操作而在沒搞懂手冊里那些控制方程和參數(shù)估計的邏輯。這份手冊的價值就在這——它把每個水文過程的數(shù)學(xué)表達(dá)、數(shù)值解法和參數(shù)取值范圍都攤開講清楚了。適合誰做排水管網(wǎng)設(shè)計、LID 設(shè)施評估、內(nèi)澇風(fēng)險分析的工程師以及需要寫論文做城市水文模擬的研究生。如果你只想要一個“點(diǎn)幾下出圖”的工具它可能會讓你失望但如果你想弄明白模型為什么這么算、參數(shù)該怎么定這份手冊是繞不過去的底稿。2. 降水與蒸發(fā)氣象數(shù)據(jù)怎么喂給 SWMMH 才不報錯2.1 降雨數(shù)據(jù)的三種來源與格式要求SWMMH 的降水輸入不是隨便丟一個 Excel 就能跑的。手冊第 2 章把降雨數(shù)據(jù)來源分成三類用戶自己提供、來自政府機(jī)構(gòu)、以及降雨接口文件。用戶提供的數(shù)據(jù)通常是一串“時間-雨量”對常見做法是整理成文本文件每行一個時間戳和對應(yīng)雨量時間步長可以是分鐘級或小時級。政府機(jī)構(gòu)的數(shù)據(jù)往往有固定格式比如某些氣象站導(dǎo)出的 CSV需要先做列提取和單位換算。降雨接口文件則是 SWMMH 專門定義的一種格式用來把外部降雨記錄直接映射到模型里。這里最容易翻車的是時間格式。SWMMH 對日期時間的解析比較嚴(yán)格常見做法是統(tǒng)一用“年/月/日 時:分”的格式并且確保起始時間與模擬開始時間對齊。如果時間戳有重疊或跳躍模型不會報錯但結(jié)果會悄悄偏移。我一般會先用腳本把降雨序列按分鐘補(bǔ)齊缺失值填零再導(dǎo)入。# 將原始降雨CSV整理成SWMMH可讀的文本格式 import pandas as pd # 讀取原始數(shù)據(jù)假設(shè)兩列datetime 和 rainfall_mm df pd.read_csv(raw_rainfall.csv, parse_dates[datetime]) df df.sort_values(datetime).set_index(datetime) # 按分鐘重采樣缺失值填0 df df.resample(1min).sum().fillna(0) # 輸出為SWMMH降雨接口文件常用格式日期 時間 雨量 with open(rainfall_swmm.txt, w) as f: for ts, row in df.iterrows(): f.write(f{ts.strftime(%Y/%m/%d)} {ts.strftime(%H:%M)} {row[rainfall_mm]:.2f}\n)這段代碼的邏輯是先把原始數(shù)據(jù)按時間排序并設(shè)為索引然后用resample(1min)強(qiáng)制對齊到分鐘級sum()處理同一分鐘多條記錄的情況fillna(0)把沒有記錄的分鐘補(bǔ)成零雨量。最后輸出的格式是 SWMMH 降雨接口文件常見的“日期 時間 雨量”三列。參數(shù)上1min可以改成5min或15min取決于你的數(shù)據(jù)精度和模擬步長雨量單位要確認(rèn)是毫米還是英寸手冊里默認(rèn)是毫米。2.2 蒸發(fā)與溫度數(shù)據(jù)的連續(xù)模擬處理連續(xù)模擬時蒸發(fā)和溫度不是可選項。手冊第 2 章把溫度數(shù)據(jù)、連續(xù)溫度記錄、蒸發(fā)數(shù)據(jù)、風(fēng)速數(shù)據(jù)分開講是因為它們在連續(xù)模擬中各自驅(qū)動不同的水文過程。蒸發(fā)直接扣減子匯水面積里的洼地蓄水和土壤含水量溫度則影響融雪和長期下滲恢復(fù)。常見做法是如果做長期連續(xù)模擬至少要有日最高最低氣溫和日蒸發(fā)量如果只做單場暴雨蒸發(fā)可以設(shè)為零或按月平均值給一個常數(shù)。蒸發(fā)數(shù)據(jù)的輸入方式有兩種直接給蒸發(fā)序列或者讓模型根據(jù)溫度用 Hargreaves 公式算。后者需要日最高溫、日最低溫和站點(diǎn)緯度。我一般會優(yōu)先用實測蒸發(fā)皿數(shù)據(jù)因為公式法在濕潤地區(qū)偏差不小。溫度數(shù)據(jù)則要注意單位SWMMH 默認(rèn)攝氏度如果原始數(shù)據(jù)是華氏度得先轉(zhuǎn)換。風(fēng)速數(shù)據(jù)主要用于融雪計算不做融雪可以忽略。提示連續(xù)模擬前先檢查降雨、溫度、蒸發(fā)三條序列的時間范圍是否一致。只要有一條序列的起始時間晚于模擬開始時間模型就會用默認(rèn)值填充結(jié)果可能完全失真。3. 地表徑流與下滲子匯水面積參數(shù)怎么定才不“玄學(xué)”3.1 子匯水面積劃分與寬度、坡度、曼寧 n 的取值手冊第 3 章是整卷的核心之一。它先給出地表徑流的控制方程組然后講子匯水面積劃分、計算方法、時間步長考慮最后落到參數(shù)估計。子匯水面積是 SWMMH 里最小的水文響應(yīng)單元劃分方式直接決定結(jié)果。常見做法是按排水管網(wǎng)節(jié)點(diǎn)和地形分水線劃每個子匯水面積對應(yīng)一個排出口。但手冊特別提醒子匯水面積不是越小越好太小會導(dǎo)致計算量暴漲太大則失去空間差異。參數(shù)估計部分手冊給了子匯水面積概化、不滲透性、寬度、坡度、曼寧粗糙系數(shù) n、洼地蓄水等具體方法。其中“寬度”是最容易被拍腦袋定的參數(shù)。手冊的定義是子匯水面積的地表漫流特征寬度通常用面積除以平均漫流長度來估。如果實在沒有地形數(shù)據(jù)常見做法是用面積除以一個經(jīng)驗長度比如城市地塊取 50 到 100 米。曼寧 n 對不滲透表面一般取 0.011 到 0.015滲透表面取 0.15 到 0.40具體看植被和粗糙度。洼地蓄水不滲透面通常 1.5 到 2.5 毫米滲透面 5 到 10 毫米。# 示例用面積和漫流長度估算子匯水面積寬度 # 假設(shè)子匯水面積 2.5 公頃平均漫流長度 80 米 面積25000 # 平方米 漫流長度80 # 米 寬度$(echo scale2; $面積 / $漫流長度 | bc) echo 子匯水面積寬度約為 ${寬度} 米這段腳本演示的是寬度估算的算術(shù)邏輯面積除以漫流長度。參數(shù)上面積單位要統(tǒng)一成平方米漫流長度根據(jù)實際地形或經(jīng)驗取值。如果子匯水面積形狀不規(guī)則可以把它離散成幾個規(guī)則子區(qū)域分別算寬度手冊第 3.7 節(jié)專門講了子匯水面積離散化。3.2 下滲四方法Horton、修正 Horton、Green-Ampt、曲線數(shù)手冊第 4 章把下滲方法拆成四種Horton、Horton 修正、Green-Ampt、曲線數(shù)。每種方法都有控制方程組、下滲能力恢復(fù)、計算方法和參數(shù)估計。選哪種方法取決于你有多少土壤數(shù)據(jù)。Horton 方法參數(shù)少只需要最大下滲率、最小下滲率和衰減常數(shù)適合數(shù)據(jù)稀缺的城市區(qū)域。Green-Ampt 方法物理意義更明確需要土壤 suction head、水力傳導(dǎo)度和濕度虧缺適合有土壤調(diào)查數(shù)據(jù)的項目。曲線數(shù)方法直接借用 SCS 曲線數(shù)適合流域尺度快速評估。參數(shù)估計部分手冊給了每個方法的具體取值范圍和敏感性說明。Horton 的最大下滲率在壓實黏土區(qū)可以低到 10 毫米/小時在砂質(zhì)土區(qū)可以高到 100 毫米/小時以上。衰減常數(shù)通常取 2 到 7 每小時。Green-Ampt 的 suction head 在 50 到 300 毫米之間水力傳導(dǎo)度從黏土的 0.1 毫米/小時到砂土的 100 毫米/小時不等。這些值不是拍腦袋來的手冊第 4.2.4 到 4.5.4 節(jié)都有表格和討論。# 用Green-Ampt方法估算下滲能力簡化示例 # 參數(shù) suction_head(mm), conductivity(mm/h), moisture_deficit suction_head 100.0 conductivity 5.0 moisture_deficit 0.25 # 累積下滲量 Fmm假設(shè)當(dāng)前 F20mm F 20.0 # 下滲能力 f K * (1 suction_head * moisture_deficit / F) f conductivity * (1 suction_head * moisture_deficit / F) print(f當(dāng)前下滲能力約為 {f:.2f} mm/h)這段代碼演示的是 Green-Ampt 下滲能力公式的簡化計算。參數(shù)含義suction_head是濕潤鋒處的土壤吸力conductivity是飽和水力傳導(dǎo)度moisture_deficit是土壤濕度虧缺。F是累積下滲量隨著降雨進(jìn)行而增大下滲能力會逐漸衰減到接近飽和傳導(dǎo)度。實際模型中這些參數(shù)會隨時間步長迭代更新這里只是展示單步邏輯。注意下滲方法一旦選定不要中途混用。我見過有人在同一個項目里對部分子匯水面積用 Horton、部分用 Green-Ampt結(jié)果水量平衡對不上。手冊雖然允許不同子匯水面積用不同方法但調(diào)試階段最好統(tǒng)一。4. 地下水與融雪連續(xù)模擬里最容易忽略的兩個模塊4.1 地下水通量項與土壤濕度限值手冊第 5 章講地下水控制方程組把地下水系統(tǒng)分成上層和下層通量項包括地表下滲、上層蒸發(fā)蒸騰、下層蒸發(fā)蒸騰、穿透、深度穿透、地下水排放量還允許用戶自定義通量公式。參數(shù)估計部分給了土壤濕度限值、穿透參數(shù)、ET 參數(shù)、地下水排放常數(shù)。這些參數(shù)在連續(xù)模擬里非常關(guān)鍵因為地下水是連接降雨和基流的中間環(huán)節(jié)。土壤濕度限值分田間持水量、凋萎點(diǎn)、飽和含水量。常見做法是田間持水量取 0.2 到 0.4凋萎點(diǎn)取 0.05 到 0.15飽和含水量取 0.3 到 0.5具體看土壤質(zhì)地。穿透參數(shù)控制上層到下層的水量交換地下水排放常數(shù)控制地下水出流到管渠的速率。如果這些參數(shù)設(shè)得不對基流過程線會要么太平要么太尖。手冊第 5.6 節(jié)給了一個數(shù)值示例可以照著復(fù)現(xiàn)一遍看看參數(shù)變化對結(jié)果的影響。4.2 融雪方程與面積虧損手冊第 6 章講融雪包括雪深、氣象輸入、子匯水面積劃分、重新分配和除雪、對下滲的影響然后給出控制方程組、融化方程、積雪熱交換、面積虧損、凈徑流、計算方法和參數(shù)估計。融雪模塊在北方城市或高海拔項目里必須開否則冬季連續(xù)模擬的徑流會嚴(yán)重偏低。融化方程的核心是能量平衡凈輻射、感熱、潛熱、地?zé)?、降雨帶來的熱量。面積虧損指的是積雪覆蓋面積隨融化而減小不是整個子匯水面積同時融完。手冊第 6.4 節(jié)專門講面積虧損的計算方法。參數(shù)估計部分融雪因子、基礎(chǔ)溫度、積雪密度、熱交換系數(shù)都需要根據(jù)當(dāng)?shù)貧夂蛘{(diào)整。常見做法是先用默認(rèn)值跑一遍然后拿實測流量過程線做對比逐步調(diào)融雪因子。# 簡化的度日法融雪計算 # 參數(shù) melt_factor(mm/°C/day), base_temp(°C), air_temp(°C) melt_factor 3.0 base_temp 0.0 air_temp 5.0 if air_temp base_temp: melt melt_factor * (air_temp - base_temp) else: melt 0.0 print(f日融雪量約為 {melt:.2f} mm)這段代碼演示的是度日法融雪公式。melt_factor是融雪因子溫帶地區(qū)常見 2 到 5 毫米每攝氏度每天base_temp是融雪基礎(chǔ)溫度通常取 0 攝氏度air_temp是日平均氣溫。當(dāng)氣溫低于基礎(chǔ)溫度時融雪為零。實際 SWMMH 里融雪計算更復(fù)雜會考慮輻射和積雪面積虧損但度日法可以作為快速估算和參數(shù)初篩。提示融雪模塊打開后溫度數(shù)據(jù)的時間步長必須與降雨一致。如果溫度是日值而降雨是分鐘值模型會做插值但插值方式可能不符合你的預(yù)期。我一般會把溫度也處理成小時值再導(dǎo)入。5. 避坑與排查SWMMH 水文模擬里最常見的五個翻車點(diǎn)5.1 現(xiàn)象模擬結(jié)果徑流總量遠(yuǎn)大于降雨總量原因子匯水面積的不滲透性設(shè)成了 100%但洼地蓄水設(shè)為零導(dǎo)致所有降雨瞬間變成徑流?;蛘呦聺B方法選了 Horton 但最大下滲率設(shè)得極低土壤完全不吸水。解決檢查每個子匯水面積的不滲透性和洼地蓄水參數(shù)。不滲透面也要給 1.5 到 2.5 毫米的洼地蓄水。下滲參數(shù)對照手冊第 4 章的范圍重新標(biāo)定。5.2 現(xiàn)象連續(xù)模擬跑完后基流幾乎為零原因地下水模塊沒開或者開了但土壤濕度限值和穿透參數(shù)設(shè)得不合理上層土壤一直處于凋萎點(diǎn)以下沒有水穿透到下層。解決確認(rèn)地下水模塊已啟用檢查田間持水量和飽和含水量是否大于凋萎點(diǎn)。穿透參數(shù)不要設(shè)得太大否則上層水直接穿透到下層基流過程線會變得很尖。5.3 現(xiàn)象降雨接口文件導(dǎo)入后模型報“時間序列錯誤”原因降雨文件的時間格式與 SWMMH 期望的不一致或者時間戳有重復(fù)、跳躍、亂序。解決用第 2 章給的腳本重新整理降雨序列確保時間戳嚴(yán)格遞增、無重復(fù)、無缺失。文件編碼用 UTF-8 無 BOM換行符用 LF。5.4 現(xiàn)象融雪模擬的冬季徑流明顯偏低原因融雪因子設(shè)得太小或者基礎(chǔ)溫度設(shè)得過高導(dǎo)致氣溫高于基礎(chǔ)溫度時才融雪而實際冬季氣溫長期在零度附近。解決把基礎(chǔ)溫度調(diào)到 0 攝氏度或略低融雪因子根據(jù)當(dāng)?shù)貙崪y數(shù)據(jù)反推。手冊第 6.7 節(jié)的參數(shù)估計方法可以照著做一遍。5.5 現(xiàn)象子匯水面積寬度設(shè)成面積除以周長結(jié)果洪峰嚴(yán)重偏低原因?qū)挾炔皇菐缀螌挾榷堑乇砺魈卣鲗挾?。用面積除以周長會得到很小的值導(dǎo)致漫流路徑過長洪峰被嚴(yán)重坦化。解決按手冊第 3.8.4 節(jié)的方法用面積除以平均漫流長度。沒有地形數(shù)據(jù)時城市地塊取 50 到 100 米作為漫流長度經(jīng)驗值。6. 把手冊用成工具書我的參數(shù)標(biāo)定與驗證習(xí)慣手冊第 3 章到第 6 章都給了數(shù)值示例這些示例不是擺設(shè)。我一般會先把每個示例照著復(fù)現(xiàn)一遍確認(rèn)自己理解的控制方程和參數(shù)含義與手冊一致然后再套到實際項目上。具體做法是新建一個空白項目只放一個子匯水面積按示例給的面積、坡度、曼寧 n、下滲參數(shù)填進(jìn)去跑單場降雨把結(jié)果與手冊示例的輸出對比。如果對不上說明某個參數(shù)理解錯了回頭翻對應(yīng)章節(jié)。參數(shù)標(biāo)定階段我會把參數(shù)分成三類一類是物理意義明確、可以直接測量的比如面積、坡度、不滲透性一類是有經(jīng)驗范圍的比如曼寧 n、洼地蓄水、下滲參數(shù)一類是必須反推的比如寬度、融雪因子、地下水排放常數(shù)。第一類直接填第二類按手冊范圍取初值第三類用實測流量過程線做手動調(diào)參。手動調(diào)參不是瞎試每次只動一個參數(shù)觀察洪峰和峰現(xiàn)時間的變化方向記錄在表格里。參數(shù)初值來源調(diào)整方向?qū)榉逵绊憣Ψ瀣F(xiàn)時間影響子匯水面積寬度面積/漫流長度增大洪峰升高提前曼寧 n不滲透手冊 0.011-0.015增大洪峰降低延后洼地蓄水手冊 1.5-2.5 mm增大洪峰降低延后最大下滲率手冊范圍增大洪峰降低延后融雪因子手冊 2-5 mm/°C/d增大融雪期洪峰升高提前驗證階段我會拿至少兩場獨(dú)立降雨做校驗一場用于標(biāo)定一場用于驗證。如果驗證場的模擬流量與實測流量的納什效率系數(shù)低于 0.5就回到參數(shù)表重新檢查。手冊里沒有直接講納什效率系數(shù)但這是水文模擬的通用做法。從那以后我每次拿到新的降雨數(shù)據(jù)都強(qiáng)制先跑一遍手冊里的數(shù)值示例確認(rèn)模型設(shè)置沒跑偏再開始正式項目。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取