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