Calpuff高斯烟团大气扩散模型入门指南:从基础原理到环境模拟实战

1次阅读
没有评论

共计 1261 个字符,预计需要花费 4 分钟才能阅读完成。

image.webp

为什么选择 Calpuff 模型?

  1. 复杂地形适应性强 :能精确处理山区、海岸线等非均匀下垫面的扩散问题
  2. 多尺度模拟能力 :从厂区级(百米)到区域级(百公里)均可覆盖
  3. 法规认可度高 :被 HJ2.2-2018 等国内外标准列为推荐模型

高斯烟团 vs 点源模型核心差异

Calpuff 高斯烟团大气扩散模型入门指南:从基础原理到环境模拟实战

扩散形态
– 烟团模型:瞬时释放的污染物呈三维椭球体扩散
– 点源模型:连续排放形成稳定烟羽
计算维度
– 烟团:时间 + 空间四维计算(x,y,z,t)
– 点源:稳态三维计算(x,y,z)
适用场景
– 烟团:事故排放、间歇性污染源
– 点源:持续运行的烟囱、排气筒

核心实现三步走

气象数据预处理

  1. 风速修正
    # 将 10m 高度风速修正到排放高度
    u_z = u_10 * (z/z_10)**0.15  # 幂律公式 
  2. 稳定度分类
  3. 使用 Pasquill-Gifford 分类法
  4. 中国地区需特别关注 D 类(中性)稳定度

Python 浓度场计算(矢量化优化)

import numpy as np

def gauss_plume(Q, u, sig_y, sig_z, H, x, y, z=0):
    """
    Q: 源强 (g/s)  
    H: 有效排放高度 (m)  
    sig_y/sig_z: 横向 / 垂直扩散参数 (m)
    """
    term1 = Q / (2*np.pi*u*sig_y*sig_z)
    term2 = np.exp(-0.5*(y/sig_y)**2)
    term3 = np.exp(-0.5*((z-H)/sig_z)**2) + np.exp(-0.5*((z+H)/sig_z)**2)
    return term1 * term2 * term3  # 浓度 (g/m³)

# 受体点矩阵计算示例
x_grid, y_grid = np.meshgrid(np.linspace(0,1000,100), np.linspace(-500,500,100))
C = gauss_plume(Q=100, u=3, sig_y=50, sig_z=20, H=80, x=x_grid, y=y_grid)

地形数据处理技巧

  1. DEM 归一化
  2. 统一采用 WGS84 坐标系
  3. 网格间距建议取模拟区域边长的 1 /50~1/100
  4. 高程修正
    H_eff = H_stack + (h_receptor - h_stack) * 0.5  # 地形抬升修正 

生产环境避坑指南

网格分辨率选择

  • 城市区域:100-500m
  • 农村区域:500-2000m
  • 计算量估算公式:
     内存占用 ≈ 网格数 × 气象场数 × 8 字节 

中国地区参数推荐

参数 东部城市 西部高原
混合层高度 (m) 800-1200 1500-2000
表面粗糙度 (m) 0.5-1.0 0.1-0.3

可视化常见误区

  • 等值线锯齿
  • 优先使用 griddata 插值
  • 避免直接使用 matplotlib 的 contourf
  • 颜色标尺
  • 建议采用对数刻度
  • 超标区域用红色醒目标注

留给读者的思考题

  1. 如何验证模型在 CBD 建筑群中的适用性?建议尝试:
  2. 对比实测站数据
  3. 引入城市冠层参数化方案
  4. 长期模拟时需特别注意:
  5. 边界层高度的日变化
  6. 污染物化学转化模块
  7. 对比 CFD 的优势场景:
  8. 大区域计算效率
  9. 法规符合性要求

延伸学习建议

推荐结合《大气污染控制工程》教材 +EPA 官方文档实操,下次可以聊聊如何用 WRF-Calm 耦合提升气象场精度~

正文完
 0
评论(没有评论)