做灌溉设计和水资源量评估的同行,对Penman-Monteith公式应该都不陌生。FAO-56把它定为计算参考作物蒸散量(ET₀)的标准方法,灌区规划、灌溉制度设计、作物需水预测,底层几乎都跑的是这一套。但我在实际项目里跑了这么多年,发现完整版PM公式被"完整使用"的次数其实不多。不是它的精度有问题,而是它太"挑数据"——最高温、最低温、湿度、风速、辐射,五项气象输入缺一不可。很多基层站点常年只有温度记录,碰上设备故障,连辐射数据也得靠估。这种时候,简化的Penman-Monteith公式变体不是"备选",而是唯一能落地的方案。这篇文章就把我这些年用过的几种简化变体、选型逻辑和校准方法一次性说清楚。
1. 完整版PM公式的"算不动"困境:卡人的不是数学,是数据
1.1 完整公式到底要什么
FAO-56推荐的完整版公式长这样:
ET₀ = [0.408·Δ·(Rₙ − G) + γ·(900/(T+273))·u₂·(eₛ − eₐ)] / [Δ + γ·(1 + 0.34·u₂)]分子第一项是辐射项,由净辐射Rₙ和土壤热通量G决定;第二项是空气动力学项,跟2米高处风速u₂、饱和水汽压与实际水汽压的差值(eₛ − eₐ)直接挂钩。分母里的Δ是饱和水汽压曲线斜率,γ是湿度计常数,二者都要用气温和气压来计算。
光看公式,函数关系并不复杂。真正的门槛在输入数据:净辐射Rₙ要么直接测,要么用日照时数配合经验公式反算;饱和水汽压差要有湿度观测;风速要有风杯或超声风速计。这些设备要在一个站点同时工作、持续运行,实际维护成本非常高。我见过不少项目,前期方案写得漂漂亮亮,说要用FAO-56标准方法,结果数据一收集,湿度序列缺了三个月,风速计坏了大半年没人修,最后只能换公式。
1.2 基层站点手里到底有什么数据
选公式的第一步不是看"哪个精度最高",而是先列一张数据清单。以我接触过的县级农业气象站和灌区自建站为例:
- 标配:逐日最高温、最低温、降水量
- 常见:相对湿度(但中断率高)
- 少数:风速、日照时数
- 极少数:直接辐射观测
这个数据现状决定了,纯温度驱动的简化变体在基层最有实用价值。倒不是说辐射型的变体不好,而是在很多项目里,你连辐射数据都是估出来的,再用估出来的数据去跑一个"看起来更精细"的公式,误差并不会变小,反而会叠加上一层辐射估算的不确定性。简化公式解决的是"数据不足时还能不能算"的问题,不是让你去跟完整版公式比谁更完美。
2. 主流简化变体是怎么从PM根式里"省"出来的
2.1 Hargreaves-Samani:只用温度的极限方案
Hargreaves-Samani公式(1985)是目前数据需求最少的变体:
ET₀ = 0.0023·(T平均 + 17.8)·(T最高 − T最低)^0.5·Rₐ输入只需要日均温、日较差和Rₐ(天文辐射,等效水深mm/day)。Rₐ不用观测,用纬度和日序数按太阳几何关系就能算出来。它相当于把PM公式里的湿度项、风速项全部"压"进了温度日较差里——逻辑是:日较差大的天气,通常云量少、辐射强、湿度低,蒸散能力自然高。这个代理关系在大多数中纬度地区是成立的,但在极端湿润或者强风条件下会失真。
天文辐射的计算要用到日地距离修正、太阳赤纬和日落时角,手算容易错,我一般直接用脚本批量算。下面这段Python代码可以逐日算Rₐ,输入纬度和日序数就能输出等效水深:
import math def ra_mm(lat_deg, doy): lat = math.radians(lat_deg) dr = 1 + 0.033 * math.cos(2 * math.pi * doy / 365) decl = 0.409 * math.sin(2 * math.pi * doy / 365 - 1.39) ws = math.acos(-math.tan(lat) * math.tan(decl)) gsc = 0.0820 ra = (24 * 60 / math.pi) * gsc * dr * ( ws * math.sin(lat) * math.sin(decl) + math.cos(lat) * math.cos(decl) * math.sin(ws) ) return ra / 2.45 # MJ/m2/day 转成 mm/day print(ra_mm(31.5, 150))这段代码在北纬31.5度、第150天(5月底)的输出约为16.7 mm/day。有了Rₐ,再配上温度数据,Hargreaves-Samani的整个计算过程一张电子表格就能完成,这也是它在基层站里流传最广的原因。
2.2 Priestley-Taylor:只保留辐射项的能量平衡方案
Priestley-Taylor公式(1972)走了另一条路:干脆把PM公式里的空气动力学项整个砍掉,只保留辐射项,再乘一个经验系数α:
ET₀ = α·[Δ / (Δ + γ)]·[(Rₙ − G) / λ]α通常取1.26,λ是水的汽化潜热(约2.45 MJ/kg),(Rₙ − G)/λ把净辐射能量换算成等效水深。这个公式的理论前提是大范围湿润下垫面、平流很弱——也就是说空气从别处带来的热量可以忽略,蒸散主要由当地辐射驱动。在这种条件下,1.26这个系数把"平衡蒸散"修正为"潜在蒸散",效果相当好。
但这个前提恰恰是它的命门。一旦到了干旱、半干旱区,或者有强风把干热空气从上游吹过来,空气动力学项就不能忽略了,α=1.26会明显低估实际蒸散。我在内陆干旱区用过Priestley-Taylor算ET₀,6、7月份的日值比完整版PM低15%到25%,完全没法直接用于灌溉决策。
2.3 Makkink与Turc:以辐射为主的折中方案
Makkink(1957)和Turc(1961)是另外两个常用的辐射型变体。Makkink形式很简洁:
ET₀ = 0.61·[Δ / (Δ + γ)]·(Rₛ / λ) − 0.12注意它用的是太阳总辐射Rₛ,不是净辐射Rₙ,而且是日尺度系数,不要和Priestley-Taylor混淆。
Turc公式分湿度条件:
RH ≥ 50%: ET₀ = 0.013·[T / (T + 15)]·(Rₛ + 50) RH < 50%: ET₀ = 0.013·[T / (T + 15)]·(Rₛ + 50)·[1 + (50 − RH)/70]这里的Rₛ在原始文献里用的是cal/cm²/day,很多人直接拿MJ/m²/day往里代,结果差了将近24倍——这是Turc被误用最多的地方。后面我会专门讲这个坑。
这四种变体基本覆盖了"数据从少到多"的梯度:Hargreaves-Samani只吃温度,Priestley-Taylor要温度和净辐射,Makkink和Turc要温度加太阳辐射。它们本质上都是对PM公式不同项做取舍后的近似,没有哪个绝对最好,只有数据和气候条件匹配不匹配的问题。
四种变体的关键区别,我整理成了一张表:
| 变体 | 输入需求 | 核心假设 | 典型适用区 | 最容易翻车的地方 |
|---|---|---|---|---|
| Hargreaves-Samani | 温度+纬度 | 日较差代理辐射/湿度/风速 | 中纬度大陆性气候 | 强风、极端湿润区 |
| Priestley-Taylor | 温度+净辐射 | 无平流、湿润下垫面 | 湿润区、水体蒸发 | 干旱区、大风期 |
| Makkink | 温度+太阳辐射 | 辐射为主要驱动 | 草地、潮湿地区 | 辐射数据质量差时 |
| Turc | 温度+太阳辐射+湿度 | 辐射+温度拟合 | 温带湿润区 | 辐射单位换算错 |
3. 选型不是看精度排名,而是看数据清单和气候类型
3.1 数据清单是第一约束
我在项目里给同事的建议流程很固定:先盘数据,再定公式。如果有完整的五项气象数据,用完整版PM没问题;如果缺湿度或风速,就先用Hargreaves-Samani顶着;如果有辐射观测但缺湿度,可以考虑Makkink或Priestley-Taylor;如果只有温度和日照时数,Turc也值得一试。
这里有个反直觉的点:数据少的时候,不建议用"补数据"的方式强行上复杂公式。比如用经验公式从温度反推辐射、再反推净辐射,再拿去跑Priestley-Taylor,中间每一步都引入误差,最终的均方根误差未必比直接用Hargreaves-Samani小。简化的意义是砍掉数据依赖,而不是增加理论环节。
3.2 气候类型决定误差方向
选公式还要看气候类型。湿润地区云量大、辐射波动小,Priestley-Taylor的1.26系数通常表现不错;干旱半干旱地区平流明显,Priestley-Taylor系统性偏低,Hargreaves-Samani经过本地校准后往往比Priestley-Taylor更稳;沿海和高湿地区,Hargreaves-Samani因为缺湿度项,经常高估蒸散。
风速是另一个容易被忽略的变量。同样的辐射条件下,风速从1 m/s涨到4 m/s,完整版PM算出的ET₀能差出20%以上。凡是空气动力学项被砍掉的变体,在风大的年份误差都会被放大。如果你所在地区风速有明显的年际波动,用这类公式时必须特别注意校准年份的选择。
3.3 时间尺度也要匹配
简化公式的系数大多是从日尺度数据里拟合出来的。如果项目要求的是旬尺度、月尺度或者生长季总量,直接用日尺度系数累加通常没问题;但如果要求小时尺度——比如做实时灌溉决策——这些日尺度变体基本都不适用,必须回到完整版PM或者专门的辐射-气动联合公式。反过来,如果你只需要月总量,一个经过校准的Hargreaves-Samani在干旱半干旱区往往够用了,不需要上更复杂的模型。
4. 本地化校准:从"文献系数"到"本地系数"的关键一跃
4.1 为什么文献系数必须打折扣
所有简化变体里的经验系数——Hargreaves的0.0023、Priestley-Taylor的1.26、Makkink的0.61——都不是物理常数,而是从特定地区、特定时段的数据里拟合出来的统计值。把它们当常数用,等于默认你的站点和原作者当年的观测环境一模一样。这显然不现实。
我习惯把这些系数叫"文献系数",意思是它们只提供一个合理的起点,落地前必须用本地资料做一次校准。校准的本质是找到一组让简化公式输出尽量接近本地真实ET₀的参数。这里"真实ET₀"通常用完整版FAO-56在资料齐全站点上的计算结果来代表,或者退一步,用实测水面蒸发、蒸渗仪数据。
4.2 校准操作流程
具体做法分五步:
- 找一段资料齐全的时段(至少一整年,最好跨3年),用完整版PM逐日算出ET₀作为参照序列。
- 用简化公式算出同期ET₀序列,初始系数先用文献值。
- 做最小二乘回归,拟合ET₀_PM = a·ET₀_simple + b,得到斜率a和截距b。
- 如果截距b接近0,说明误差以比例误差为主,直接把经验系数乘以a;如果b明显不为0,建议保留线性修正形式。
- 用另一段独立年份的数据验证,对比校准前后的均方根误差(RMSE)和决定系数(R²)。
这里有个操作细节:校准和验证必须用不同年份的数据,否则你只是在做拟合优度表演,不是真正评估模型的泛化能力。我一般用前两年做校准,第三年做验证。最少也要做到一半数据校准、一半数据验证。
4.3 一个Hargreaves系数校准实例
某半干旱灌区,站点只有逐日温度资料,附近30公里有一个完整气象站。我取完整站3年资料,先用FAO-56算出逐日ET₀,再用Hargreaves-Samani按文献系数0.0023计算。结果发现Hargreaves-Samani整体偏低,回归拟合得到ET₀_PM = 1.18·ET₀_HS + 0.1,校准前RMSE约0.9 mm/day,校准后RMSE降到0.5 mm/day左右。把0.0023乘以1.18,本地系数约0.0027。
这个结果很典型:干旱半干旱区风速大、湿度低,日较差对蒸散的代理能力偏弱,文献系数0.0023系统性低估。校准后的0.0027并没有物理意义,它只是把"缺失的风速和湿度影响"按平均值折进了公式里。这也是我反复强调的原因——换一个地区,这个系数可能要重做。
5. 实战案例:半干旱灌区从缺测数据到公式替换的完整过程
5.1 项目背景和数据现状
某灌区要做灌溉需水预测,面积10多万亩,主要作物是玉米和冬小麦。气象数据现状是:灌区管理站自建站只有逐日最高温、最低温和降水记录,湿度探头坏了大半年,风速、辐射资料全缺。灌区紧邻一个国家级气象站,资料比较全,但中间隔了一条山脉,气候有差异,直接搬用完整站的数据做逐日ET₀不太合适。
我的处理思路是:用完整站数据做"标尺",在灌区本地站上校准一个温度型的简化变体,然后用校准后的公式逐日滚动计算灌区ET₀。这样既尊重了本地温度数据,又借用了完整站的辐射、湿度、风速信息。
5.2 对比测试与公式替换
先取完整站3年逐日数据,算FAO-56 ET₀。同时按灌区站的温度记录算同期的Hargreaves-Samani值。两者逐日对比后,回归得到本地系数0.0028,截距0.08,R²约0.85。我又用第4年数据验证,校准后的RMSE约0.55 mm/day,相对误差在春玉米需水高峰期间约8%左右。
对灌溉制度设计这种应用场景,逐日误差0.5~0.6 mm/day完全在可接受范围内——毕竟田间灌溉本身就有灌水定额和轮灌周期的调节余量。相比之下,如果直接拿完整站数据硬顶,或者干脆用文献系数,误差反而更大。这个项目最后就是用这个校准过的Hargreaves-Samani变体,把灌区逐日ET₀跑了下来,按旬汇总后生成灌溉预报。
5.3 误差分析与可推广性
事后我把逐月平均误差拉出来看,发现两个规律:一是冬春季误差小,夏秋季误差大,因为夏季大风日多,温度代理风速的能力下降;二是连续阴雨天误差明显偏大,因为那种天气下辐射骤降,温度日较差代理辐射的效果很差。这两个规律意味着,如果你做的是灌溉高峰期的高精度预报,光靠温度型变体不够,还得叠加短期天气预报或者卫星辐射产品做修正。
这个案例也说明一个道理:简化公式的可推广性不在于公式本身,而在于校准所依托的参照站和灌区气候的相似程度。参照站和本地气候差异越大,校准结果的可靠性就越差。
6. 我在简化PM变体上踩过的坑和留下的经验
6.1 辐射单位的坑:Turc的24倍偏差
第一次用Turc公式时,我直接把气象站给的MJ/m²/day太阳辐射代进了Rₛ,算出来的ET₀比预期小一个数量级。后来翻原始文献才发现,Turc当年用的是cal/cm²/day,和SI单位差了约23.88倍。很多教材直接抄公式、不写单位,这个坑特别容易踩。任何辐射型公式到手,第一件事是核对Rₛ和Rₙ的单位,以及公式里面隐含的换算系数。
6.2 净辐射和总辐射不要混用
Priestley-Taylor要求的是净辐射Rₙ,Makkink要求的是太阳总辐射Rₛ。有人图省事,拿Rₛ直接代进Priestley-Taylor,结果ET₀凭空高一截。在中纬度地区,Rₙ大概只有Rₛ的60%~70%,混用等于把蒸散量放大了三四成。
6.3 日尺度系数不要硬搬到月尺度
同样一套简化公式,用日值累加和用月均值直接算,结果可能差10%以上。原因在于Δ、饱和水汽压差这类变量对温度的响应是非线性的,用月均温算出来的代理变量,不等于日均值算出来再取平均。所以我一般先逐日算,再按需求聚合到旬、月,不直接拿月均温和月较差套公式。
6.4 简化公式不等于免责公式
最后说句掏心窝的话。简化PM变体的价值,是在资料不足时维持一个可用的估算能力,而不是让你省掉观测投入。如果一个地区是长期项目、数据会逐步完善,我建议随着站点升级,定期把简化公式的计算结果和完整版PM做一次对比,动态修正系数。我见过一些项目,系数校准一次就五年不动,站点设备早就升级了,还在用旧系数,精度白白损失。
最后再补一句我自己的体会。简化的Penman-Monteith公式变体不是用来替代观测的,而是在资料不全时维持工程判断力的工具。数据会越来越全,但这类公式在基层项目里不会消失——只要还有站点只有一支温度计,它就有存在的价值。把数据清单盘清楚、把气候类型吃透、把本地校准做到位,它们给灌区算水、给项目做评估,完全够用。