1. 项目概述
1.1 什么是微气候模型,为什么要学ENVI-met
微气候,简单说就是城市里几百米到几公里尺度上的“小气候”。同样是夏天,你在空旷的柏油广场上待十分钟和站在树荫底下待十分钟,体感完全是两回事。这种差异并不是天气预报能告诉你的,而是由建筑布局、下垫面材质、植被分布、风速风向这些局部因素共同决定的。研究这些局部环境的变化规律,就是微气候模拟的核心目标。
我第一次接触ENVI-met,是一年前做滨水区域的城市设计方案。设计院那边想论证滨水绿廊对周边街区温度的实际影响,领导说“最好能拿出一个可视化的量化结论”。那时候我对微气候模型几乎零基础,从下载安装到跑通第一个案例,前后折腾了两周多。市面上的中文教程要么是软件自带英文手册的翻译,要么只讲界面操作不讲背后的原理,真正能让人从零跑到结果又知道每一步为什么这么做的资料,太少了。
ENVI-met是目前城市微气候模拟领域应用最广的三维数值模型之一。它能把建筑、植被、土壤、大气之间的能量交换过程以较高的空间分辨率(常用水平分辨率0.5米到10米)逐步迭代计算出来,输出温度、湿度、风速、太阳辐射、平均辐射温度(MRT)等一系列指标的时空分布。简单说,ENVI-met就是一个“虚拟的微型气象站”,你可以把设计方案“放”进这个虚拟环境里,看看建成之后那片区域的夏天会不会太热、冬天风会不会太大、广场上的人体舒适度如何。
这篇教程面向的读者有两类:一类是城乡规划、建筑学、风景园林专业的在校学生,做毕业设计或者课程作业用到;另一类是设计院的从业者,需要在项目前期用微气候模拟辅助方案比选。我尽量把每一个步骤都拆开讲,包括界面里那些不太起眼的参数到底在控制什么、默认值能不能直接信任、结果图怎么看才算看出门道,这些都来自我实操中的真实经验,希望能让你避掉我踩过的那些坑。
1.2 这篇教程能帮你解决什么问题
很多人下载ENVI-met之后,第一个感觉就是“界面怎么这么古老?”。确实,这套软件从1998年诞生到现在,界面风格一直很朴素,和BIM平台的现代感完全不在一个次元。但这并不影响它在学术和工程领域的认可度,Sciencedirect上面用ENVI-met做的城市热环境研究论文,数量非常可观。
这篇教程的目标,是把你从“安装好了软件但不知道从哪下手”的迷茫状态,带到“能独立完成一个标准微气候模拟案例并正确解读结果”的阶段。具体来说,通过这篇教程你能掌握以下几件事:
- 理解ENVI-met的工作逻辑:它到底在算什么,输出的是什么,为什么需要那么多输入文件;
- 学会用SPACES编辑器搭建基础模型:包括底图导入、建筑绘制、植被布置、下垫面材质设置;
- 掌握ENVI-met核心配置项的设置方法:模拟时间、气象边界条件、网格分辨率、嵌套网格等;
- 会运行模型并监控计算过程:知道怎么判断模拟是否正常收敛;
- 能用LEONARDO和BioMet完成结果可视化与热舒适度分析:把模拟数据变成能放进报告里的专业图表。
我不会讲太多软件自带手册里已经写得清清楚楚的按钮级操作,而是重点讲“当时我怎么就没想到这一点”的部分,也就是那些手册不会告诉你的经验性内容。
2. 工具选型解析
2.1 为什么选ENVI-met:与其他微气候模拟工具的比较
微气候模拟的常用工具其实不少,每一款都有自己的适用场景和局限性。我在选型时比较过几款主流的工具,下面这个表格可以让你快速了解它们的定位差异。
| 工具名称 | 主要应用领域 | 空间尺度 | 核心优势 | 主要局限 |
|---|---|---|---|---|
| ENVI-met | 城市街区级热环境、风环境、热舒适度 | 0.5m~10m网格,典型场景范围为50m×50m到数公里 | 三维建筑与植被显式建模,绿化与下垫面方案比选能力强,分析模块丰富 | 计算量大,对计算机配置要求高,学习曲线较陡 |
| Grasshopper + Ladybug/Honeybee | 建筑单体及小尺度场地性能分析 | 建筑尺度为主 | 参数化建模灵活,与Rhino无缝衔接,迭代方案快捷 | 微气候物理过程简化较多,植被和土壤过程描述不如ENVI-met精细 |
| OpenFOAM | 流体力学与风环境 | 街区到城市尺度 | CFD计算能力强,适合精细风场模拟 | 难以同时模拟热湿辐射多物理场耦合,建模门槛高 |
| RayMan | 城市热舒适度快速评估 | 单点或小范围 | 简单易用,输入少输出快,适合快速估算 | 没有空间分布能力,无法表达城市空间的异质性 |
| SOLWEIG | 城市辐射环境 | 街区尺度 | 擅长平均辐射温度(MRT)和辐射通量模拟 | 不考虑风场与植被的动态交互过程 |
从我自己的经验看,景观和城市规划领域的方案比选,ENVI-met是最契合的。它把建筑、树木、草地、水体、铺装这些要素作为显式的三维对象处理,能直观模拟“种一排树对行人高度热舒适度到底改善了多少”这类设计问题。这在传统的CFD工具里是极难实现的,因为树木在CFD里的精确建模极其复杂,而在ENVI-met里这只是一个“植物库选择”的操作。
2.2 版本选择与硬件配置建议
ENVI-met目前有商业版(Pro/Pro Studio)和免费的学术演示版。学术版功能基本完整,但模拟区域大小受到限制(通常约50×50×20个网格),对于小尺度的节点方案验证和学生项目,算是够用。如果你所在的高校或单位有正版授权,建议直接使用完整版,因为商业版的核心优势在于能够得到完整的BioMet热舒适度分析模块支持,这一点在学术版里体验比较有限。
硬件方面,ENVI-met 4.x版本之后的计算核心已经完全转向64位架构,对内存的需求明显增加。我的个人经验是,一个100×100×30网格的模型,模拟夏季典型日10小时太阳辐射过程,大概需要10到16GB的可用内存。如果做三天连续模拟,内存占用几乎翻倍。CPU方面,软件的并行计算对多核心优化尚可,8核心以上的CPU能够显著加快计算速度。固态硬盘也是必须的,因为模型在计算过程中会频繁读取写入临时文件,机械硬盘在这时候会让你怀疑人生。
注意:ENVI-met 5.x系列已经开始全面转向64位计算,32位操作系统已经完全无法运行。如果你是老版本的爱好者,建议尽早升级硬件和软件,否则等待你的只有卡死和闪退。
3. 核心细节解析与实操要点
3.1 模型域设置:把“虚拟试验场”搭建好
ENVI-met建模的第一步不是画房子,而是先在脑海里想清楚“我要模拟的地块到底在哪里、边界在哪里、周边环境怎么处理”。
模型域设置的核心参数有三个:网格分辨率、模型域大小、嵌套网格数量。
网格分辨率决定了模型的计算精度。常用的水平分辨率是2米或3米,对于街区尺度的研究,2米网格已经能够比较精细地捕捉建筑和树木对风场的影响;但代价是计算时间随网格数量近似指数增长。一个经验公式是,网格数翻倍,计算时间约增加3到5倍。所以在项目初期,建议先用5米甚至10米的粗网格做可行性测试,验证模型能跑通之后,再加密到研究需要的正式网格。
模型域大小要保证你的研究区域周围有足够的“缓冲区”。建筑的尾流效应和热羽流会延伸到下风向相当远的距离,如果模型域边界恰好贴近建筑边缘,边界条件会严重干扰模拟结果。ENVI-met的做法是设置嵌套网格(nesting grids),即在核心模型域外围再叠加若干层粗网格作为缓冲区,让气流在进入精细区域之前先被粗网格“稳”下来。我一般设置2到5层嵌套网格,具体数量取决于边界条件与核心区域之间的距离。
提示:历史气象输入的数据采集点,应该尽量选取与模型域中心地理位置接近、下垫面状况类似的测站,而不是随意选择距离最近的站点。数据代表性问题在模拟中的影响,远比你想象的更大。
3.2 三维建模:建筑、植被与下垫面的配置
SPACES编辑器是ENVI-met的主建模界面,它的操作逻辑和SketchUp这类建模工具有本质区别:SPACES不是在“画”三维物体,而是在二维平面上“刷”出三维信息。每个网格单元都对应一条垂直方向的柱体,你在地面上布置了建筑,软件就在该柱体范围内自动生成建筑体的三维形态。
建筑的绘制比较简单。最常见的方式是用多边形工具逐点勾勒建筑轮廓,或者把CAD底图作为背景图层导入,直接在底图上描绘。这里有一个容易被忽略的点:ENVI-met对建筑高度的表达有两种方式——绝对层高和相对层高,如果底图的坐标是基于黄海高程的海拔值,而你使用的是相对高度,那么两者的差值会导致模拟结果出现明显误差。我在实际项目中习惯统一使用相对高度(即建筑从地面算起的高度),并在文档中明确记录。
植被的布置是ENVI-met最能体现价值的部分。软件自带的植物库里包含多种常见树种,不同树种之间在冠层高度、叶面积密度(LAD)和根系深度上差异显著。选择树种不能只看名字,关键要看冠层形态参数是否适合你的研究。比如同样是乔木,伞形树冠的遮荫面积和中乔木完全不同。一个简便做法是先在植物库里找到形态接近的树种,然后用数据库编辑器手动调整LAD值,使之更加贴近当地实际物种。
下垫面设置比较繁琐但非常重要。混凝土、沥青、草地、裸土、水面等不同材质的热属性差异很大,比如沥青的白天表面温度可比草皮高出20摄氏度左右,这种差异直接决定了城市热岛强度。ENVI-met的材质库默认包含几十种常见材质,但在反映中国南方城市的典型铺装时,往往需要自定义材质参数,尤其是反照率(albedo)和导热系数两个值,最好参考工程当地的实际材料参数。
3.3 气象边界条件与模拟时间设定
模型搭好了,接下来要做的事情是告诉软件“现在几点了、今天天气怎么样”。
ENVI-met的完整气象边界输入包括空气温度、相对湿度、风速和风向两个高度的值以及太阳辐射等。最简单的方式是在ENVI-met的配置文件里填入逐小时的气象数据,软件会以24小时循环的方式进行插值处理。另一个常用方式是设置简化模式,只需要输入最高温、最低温、平均风速等极少数参数,软件会依据内置算法生成完整的气象边界。初学者我推荐先使用简化方式跑通流程,之后再做精细化。
模拟时间的设置有几个关键点。起始时间通常建议设置在日出之前或早晨6点到8点,这样可以保证模型有足够的预热时间,让初始场的不平衡得以消除。如果起始时间设置在正午,初始温度场与气象条件之间的剧烈差异会导致模拟初期出现明显的伪波动,影响结果的可用性。总模拟时长的选择则取决于你的研究问题:如果是稳态分析某一时刻的热环境,模拟24小时之后取特定时刻的输出即可;如果是分析热岛强度的日变化,建议模拟至少48小时并将第一天作为预热,取第二天数据为研究时段。
需要格外小心的是ENVI-met中的时间步长设置。固定时间步长在数值稳定性较差时可能导致运算发散;自适应时间步长则能够根据CFL条件自动调整。初学者务必选择自适应时间步长,否则很容易得到一组看似正常实际早已发散的垃圾数据。
3.4 模拟运行与计算监控
模型配置完成后点击开始计算,软件会跳出ENVI-met的实时监控界面。这里你能够看到当前时间步、迭代次数、残差等信息。刚开始学习的时候,很多人对监控界面并不在意,直接切到后台忙别的去了,直到第二天回来看结果才发现计算早就中断了。我建议至少在模拟的前几个模型小时密切观察:能量平衡残差是否持续下降,风速场是否出现异常振荡,温度场是否违反物理直觉(例如出现负绝对温度)。
ENVI-met同样支持计算中间过程的可视化,你可以在模拟过程中随时用LEONARDO打开已输出的中间结果检查趋势。如果发现异常,及时调整比等全部算完再回头排查要节省大量时间。
4. 实操过程与核心环节实现
4.1 从零开始的标准模拟流程
现在,我们完整跑通一个最简化的街区微气候模拟案例。这个案例的地块设定是200米×200米的城市小街区,含四栋建筑和一个绿化广场,模拟夏季典型晴天的日间热环境。
第一步:新建项目与模型域参数设置
打开ENVI-met后,在ENVI-core界面的Project菜单中创建新项目。进入SPACES编辑器,在Model Settings中完成以下配置:
- 水平网格分辨率:5米(初跑)
- 模型域尺寸:40×40网格,即200米×200米
- 垂直网格:采用等距网格,高度方向分为25层,前10层加密至1米,以捕捉行人高度(1.5米左右)的热环境特征
- 嵌套网格:4层
提示:对称等距网格的垂直高度可通过“telescope”功能在高层逐渐拉伸,这样可以减少总层数并节省计算时间,但前提是高层区域不是你的重点研究对象。
第二步:底图导入与建筑轮廓绘制
SPACES支持导入BMP、JPG等格式的栅格底图。这里需要注意:导入前在图像处理软件里把底图调整为与模型域尺寸完全对应的宽高比,否则底图会变形。将底图作为参考层,用Polygon工具逐栋绘制建筑轮廓并指定屋顶高度。四栋建筑的高度分别设为12米、18米、24米和30米,模拟不同高度建筑组合。
绘制完成后,用3D View模式检查建筑体块的交接是否符合预期。这一步看似简单,实际出错率极高,常见的错误是相邻建筑共墙时出现重复的面,导致模型内部墙体遮挡太阳辐射。
第三步:植被与下垫面布置
打开植物库,在广场西侧连续种植两排行道树,树种选择中等冠幅的落叶阔叶乔木(LAD=1.5平方米/立方米)。地面铺装设置三种类型:广场中心区域使用浅色透水砖,四周车行道使用沥青路面,建筑周边绿地使用草地。从材质库中选择对应的默认材质,后续根据项目需要,再在Database Manager中调整具体参数。
第四步:配置气象边界与模拟时间
在Simulation Settings中输入简化气象条件:
- 夏季典型日最高温度:34摄氏度
- 最低温度:26摄氏度
- 平均风速:2米/秒
- 主导风向:东南风(135度)
模拟起止时间为前一日晚上22:00至次日晚上20:00,共22小时,软件自动跳过前一日的部分作为预热。
第五步:启动模拟
在ENVI-core中加载刚刚保存的模型配置,确认配置无报错后点击计算。此时会弹出监控界面,显示当前模拟进度,记录开始时间。配置一台8核CPU的台式机,这一组模型大概需要4到6小时左右完成计算。
4.2 LEONARDO:数据处理与结果可视化
模拟结束后,所有输出结果以NetCDF或者二进制格式存放在仿真目录中。LEONARDO是ENVI-met专门用于结果可视化和数据提取的模块。
打开LEONARDO,导入模拟结果文件夹。此时界面左侧会出现变量列表,常用的输出变量包括:
- 空气温度(Air Temperature)
- 相对湿度(Relative Humidity)
- 风速(Wind Speed)
- 平均辐射温度(Mean Radiant Temperature)
- 地表温度(Surface Temperature)
- PMV(Predicted Mean Vote,预测平均投票)
- UTCI(Universal Thermal Climate Index,通用热气候指数)
在想要分析的时间点上右键选择“Load Preview”,通常我选择下午14:00和晚上20:00两个时间点,分别代表日间高温时刻和夜间热岛最显著时刻。为了得到水平面1.5米高度处的空气温度分布,在Cut Through设置中指定垂直高度为1.5米,然后确认载入数据。
LEONARDO的配色是非线性的,默认色带往往使强热岛区域看起来不够醒目。我的习惯是将色带设为从深蓝色到红色的渐变色,并调节上下限,让目标区域的空间差异最大化显示。输出的图片可以直接导出为PNG或BMP格式,建议导出分辨率设置为300 DPI以上,便于论文插图使用。
4.3 BioMet:热舒适度指标计算
ENVI-met的原始输出中并不直接包含PMV等热舒适度指标,你需要用BioMet模块根据原始气象参数进行后处理计算。
BioMet的配置界面里需要输入作用对象的基本生理参数:身高、体重、服装热阻(clo)、代谢率(W)。服装热阻的值夏季一般取0.5 clo,冬季取1.5 clo左右;代谢率的典型散步值为116 W/平方米,静坐为58 W/平方米。这些参数的取值会直接影响PMV等指标的计算结果,建议根据你的研究实际场景仔细选择,并在报告中明确说明取值依据。
我个人在实际项目中汇总了常用的参数搭配,分享给大家参考:
| 场景描述 | 服装热阻(clo) | 代谢率(W/平方米) |
|---|---|---|
| 夏季高温日间行人快速行走 | 0.3~0.4 | 200~300 |
| 夏季高温日间公园休憩 | 0.4~0.5 | 100~120 |
| 冬季寒冷日间户外步行 | 1.2~1.5 | 120~160 |
| 过渡季节户外集会 | 0.7~0.9 | 80~110 |
计算完成之后,BioMet会将PMV、PPD、UTC I等指标输出为空间分布文件,用LEONARDO打开同样能够进行可视化处理。
5. 常见问题与排查技巧实录
5.1 模型初始化失败或计算迅速发散
这个问题在初学者中极为高发,大部分情况下原因都出在初始气象条件设置上。例如,初始气温场和模型域内强烈的地表加热性质不匹配,或初始风速过低,导致整个计算在一个不符合物理规律的初始场中开始,软件在迭代初期就出现非物理解。
排查的思路是这样的:首先检查已经输出的前几个小时的结果,如果出现空气温度的快速漂移(比如十分钟内升温超过5摄氏度),那么几乎可以确定是初始化问题。这时最简单的处理方式是把模拟起始时间再提前到更早的时刻,并适当增大初始风速。如果问题还不能解决,就要回查模型域配置,确认是否设了太多的实体建筑导致通风不良。
5.2 建筑数量相同但两个模型模拟时间差好几倍
模型大小相同、建筑数量相同,计算时长却有巨大差异,这种情况常见于垂直网格数量的差异。不知道哪个步骤开始,有人给项目加了过高的“telescope”设置,垂直方向的网格层数从30层变成60层,计算量自然翻倍。
另一种更隐蔽的情况是模型中存在大量复杂形态的树冠。每棵树的冠层在每个时间步都要参与复杂的辐射和蒸散计算,这是ENVI-met计算开销的一个主要来源。如果模型中有成片的密集树林,建议把模拟时间分辨率适当调大,否则可能要多等一整晚。
5.3 结果图看起来马赛克感太重
网格感强其实是所有网格类模拟软件的正常状态,除了加密网格之外别无他法。但是如果只在报告出图时才考虑分辨率,这时候回收成本是最高的。我的建议是:整个模拟的网格分辨率在规划阶段就应该确定下来,如果你准备在5米网格的模型上分析建筑周边单体热环境,那从开始就要修改分辨率,而不是在出图阶段想让软件帮你“无中生有”。
5.4 LEONARDO导出的图片颜色和屏幕显示不一致
这个基本可以确定是色带设置问题,而不是显示BUG。ENVI-met默认的色带两端颜色包含超出数据范围的深色和浅色,导致导出的图片在色带两端出现过黑或过白的大色块。解决办法是在色带设置中启用贝塞尔曲线加透明度调节,并将色彩范围手动锁定至缓存数据的实际最小值和最大值。在导出图片时,也可以勾选“去除背景”选项,这样得到的图片更具矢量化风格。
5.5 常见的ENVI-met操作误区速查
| 误区表现 | 实际后果 | 正确做法 |
|---|---|---|
| 底图尺寸与模型域不对应就导入 | 建筑位置整体偏移,模拟结果失去空间意义 | 预处理图像,按像素比例严格对应 |
| 忽略嵌套网格 | 边界附近风场失真,影响内部核心区域结果 | 设置至少3层嵌套网格 |
| 直接使用默认植被参数不核对 | 树种形态与当地实际差异大,模拟可信度不足 | 在数据库编辑器中逐项核对参数 |
| 固定时间步长跑长时段模拟 | 风吹到某处可能突然发散,结果报废 | 全程使用自适应时间步长 |
| 出图前不检查时间点的物理含义 | 把夜晚极低温时刻当作日间热环境特征展示 | 总是先检查模拟时间与实际时间的对应关系 |
6. 经验总结与几点心得
学ENVI-met的过程,其实和学任何一套专业软件一样,真正难的不是某个按钮在哪里,而是你有没有建立起“模拟模型是对物理世界的简化再现”这一基本认知。软件只是一个计算器,它不会替你思考哪些过程重要、哪些参数敏感、哪些边界条件才匹配你的实际问题。
我建议所有刚开始接触ENVI-met的朋友,先别急着做高大上的多方案比选,而是把一个最简单的方块场景跑通、跑透。你可以在一个20×20网格的模型里只放一栋建筑和几棵树,逐项调整参数,记录每次模拟结果发生的变化。这样花费的两三天时间,比之后反复调试一次大型模型省下的时间要多得多。我自己最初就是这样做的,后来在正式项目里遇到任何反常结果,都会下意识地回到那个简单的理解框架里去寻找解释。
最后再分享一个小技巧:ENVI-met每次模拟的结果文件夹里,除了正式输出之外,还会保存一份模型配置的副本。做好模拟记录,把每一个案例的配置文件复制一份,命名中注明日期和方案编号。我做过的几个项目之间隔了大半年再去回看,幸好当时把配置留存得很规范。这种“模拟方案管理”的习惯看起来不起眼,却能在你反复修改模型、不断对比分析的过程中省下大量重复劳动,也避免被自己之前的操作搞糊涂。
这篇教程到这里把ENVI-met环境建模与模拟的基本流程梳理了一遍,每一个环节都有对应的操作细节和踩坑经验。你先按这个流程把第一个模型跑通,后面碰到具体问题,再带着问题去继续深挖。