最近读者问wrf数据怎么转cmaq的输入格式,小编于是稍作检索,将内容呈上(实际上是官方教程的搬运,如有问题还是去原仓库了解)
在空气质量数值模拟工作流中,WRF(Weather Research and Forecasting)模式提供气象场驱动,而CMAQ(Community Multiscale Air Quality)模式进行化学传输模拟。两者之间需要一个关键的桥梁——MCIP(Meteorology-Chemistry Interface Processor),将WRF输出的气象数据转换为CMAQ/SMOKE可用的气象输入文件。[^mcip_epa]
根据CMAQ官方用户手册,CMAQ所需的气象输入必须由MCIP从WRF输出生成,且MCIP应作为CMAQ预处理流程的第一步。[^cmaq_inputs]
常见痛点:
本教程将详细介绍如何使用MCIP进行格式转换,并补充关键配置与输出检查。
flowchart TD
A[运行 WRF 生成 wrfout] --> B[配置 run_mcip.csh 参数]
B --> C[运行 MCIP]
C --> D[生成 CMAQ 输入文件]
D --> E[最小成功判据检查]
以下功能概述基于 EPA 对 MCIP 的官方说明:[^mcip_epa]
功能 | 说明 |
|---|---|
域定义 | 定义CCTM计算域(通常比气象模式域小,排除边界格点) |
数据提取 | 从WRF输出中提取指定计算域的气象数据 |
变量直通 | 温度、气压、湿度、风场等变量直接从WRF获取 |
派生变量计算 | 计算WRF未直接输出但CMAQ需要的变量 |
格式转换 | 输出I/O API或netCDF格式文件 |
MCIP输入文件:(来自MCIP README)[^mcip_readme]
文件 | 格式 | 必需 | 说明 |
|---|---|---|---|
wrfout_* | NetCDF | 是 | WRF模式输出文件 |
geo_em.* | NetCDF | 可选 | WRF地理网格文件(用于土地利用数据) |
MCIP输出文件:(来自MCIP README)[^mcip_readme]
文件 | 类型 | 时间依赖 | 说明 |
|---|---|---|---|
GRIDDESC | ASCII | 静态 | 网格描述文件 |
GRID_CRO_2D | I/O API | 静态 | 2D格心静态数据 |
GRID_CRO_3D | I/O API | 静态 | 3D格心静态数据 |
GRID_DOT_2D | I/O API | 静态 | 2D点位静态数据 |
GRID_BDY_2D | I/O API | 静态 | 2D边界静态数据 |
MET_CRO_2D | I/O API | 时变 | 2D格心气象数据 |
MET_CRO_3D | I/O API | 时变 | 3D格心气象数据 |
MET_DOT_3D | I/O API | 时变 | 3D点位气象数据 |
MET_BDY_3D | I/O API | 时变 | 3D边界气象数据 |
LUFRAC_CRO | I/O API | 静态 | 土地利用比例 |
SOI_CRO | I/O API | 时变 | 土壤属性 |
mcip.nc | netCDF | 时变 | IOFORM=2时生成 |
mcip_bdy.nc | netCDF | 时变 | IOFORM=2时生成 |
(以上文件清单与必需性说明来自 MCIP README)[^mcip_readme]
MCIP作为CMAQ的一部分发布,源码位于CMAQ仓库的 PREP/mcip 目录。[^mcip_readme]
提示:具体依赖、编译器版本与库要求请以你所使用的CMAQ发行版文档为准。
# 可选:检查环境变量与工具(在终端执行)
!nc-config --version
!nf-config --version
!echo $IOAPI
MCIP源码随CMAQ发布,以下为常见编译流程示例(路径仅作示意):
%%bash
# 设置CMAQ主目录(示例路径)
export CMAQ_HOME=/path/to/CMAQ
# 进入MCIP源码目录
cd$CMAQ_HOME/PREP/mcip/src/
# 加载配置文件
source$CMAQ_HOME/config_cmaq.csh
# 编译
./make |& tee make.mcip.log
# 检查编译结果
ls -la $CMAQ_HOME/PREP/mcip/src/mcip.exe
MCIP通过 run_mcip.csh 脚本运行,脚本会在每次运行时自动生成namelist。[^mcip_readme]
关键配置变量包括 InMetDir、InMetFiles、MCIP_START/END、INTVL、IOFORM 等。[^mcip_readme]
InMetFiles 应按时间顺序列出,确保覆盖 MCIP_START/END。IOFORM 输出格式需与后续 CMAQ/工具链读取方式保持一致。# MCIP配置参数示例(run_mcip.csh)
mcip_config = '''
# 应用名称(用于输出文件命名)
set APPL = "20240701"
# 坐标系统和网格名称
set CoordName = "LAM_40N100W"
set GridName = "Beijing_3km"
# 输入输出路径(示例路径)
set DataPath = "/data/CMAQ"
set InMetDir = "/data/WRF/wrfout"
set InGeoDir = "/data/WRF/geogrid"
set OutDir = "/data/CMAQ/mcip_output"
# WRF输出文件列表(最多300个)
# 按时间顺序列出,确保覆盖 MCIP_START/END
set InMetFiles = ( \
$InMetDir/wrfout_d01_2024-07-01_00:00:00 \
$InMetDir/wrfout_d01_2024-07-01_01:00:00 \
# ... 更多文件
)
# 地理网格文件(可选)
set IfGeo = "T"
set InGeoFile = "$InGeoDir/geo_em.d01.nc"
# 时间设置(UTC)
set MCIP_START = "2024-07-01-00:00:00.0000"
set MCIP_END = "2024-07-02-00:00:00.0000"
# 输出时间间隔(分钟)
set INTVL = "60"
# 输出格式:1=I/O API, 2=netCDF
# 与后续 CMAQ/工具链读取方式保持一致
set IOFORM = "1"
# 边界裁剪:BTRIM=5 推荐用于去除 WRF 侧边界
# BTRIM=-1 则使用窗口裁剪(X0/Y0/NCOLS/NROWS)
set BTRIM = "5"
# 窗口裁剪参数(仅当BTRIM=-1时使用)
# set X0 = "5" # 左下角X坐标
# set Y0 = "5" # 左下角Y坐标
# set NCOLS = "100" # 输出列数
# set NROWS = "100" # 输出行数
'''
print(mcip_config)
执行MCIP转换(脚本示例来自官方README):[^mcip_readme]
运行后在输出目录中至少应看到以下关键文件:GRIDDESC、GRID_CRO_2D、GRID_CRO_3D、MET_CRO_2D、MET_CRO_3D、MET_BDY_3D。 如设置 IOFORM=2,还应生成 mcip.nc 与 mcip_bdy.nc。[^mcip_readme]
%%bash
# 进入脚本目录
cd $CMAQ_HOME/PREP/mcip/scripts
# 运行MCIP
./run_mcip.csh |& tee run_mcip.log
# 检查输出
ls -la $OutDir/
[^mcip_epa]: EPA 官方 MCIP 页面(说明 MCIP 读取 WRF 输出并生成 CMAQ 输入) https://www.epa.gov/cmaq/meteorology-chemistry-interface-processor
[^mcip_readme]: USEPA CMAQ 官方仓库 MCIP README(输入输出、脚本参数、运行方式) https://github.com/USEPA/CMAQ/blob/main/PREP/mcip/README.md?plain=1
[^cmaq_inputs]: CMAQ 用户手册(说明气象输入由 MCIP 生成,且为流程第一步) https://usepa.github.io/CMAQ/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.html