# 2.2.1 获取源代码
自 WRF v4.0 以后,WRF-Chem 代码已集成在 WRF 压缩文件中,无需单独下载
要获得 WRF-Chem 模型,应遵循以下步骤:
下载或复制以压缩 WRF 的 tar 文件到您的工作空间
- 可从 WRF 模型下载网站(http://www2.mmm.ucar.edu/wrf/users)获得 WRF 模型和化学代码目录。
- 化学代码是从 WRF 模型下载网页上单独下载的,可以在 WRF-Chemistry 标题下找到
- 如果您不打算继续进行长时间的项目,请始终获取最新版本
- 通过浏览 WRF 和 WRF-Chem 网页,浏览 WRF 和 WRF-Chem 的已知错误修复
解压缩文件
> gzip –cd WRFV3-Chem-3.9.1.1.TAR | tar –xf –
- 同样,如果有较新版本的代码使用,则 3.9.1.1 仅用作示例
> cd WRF
请记住,会定期发布已知错误修复,可以从 WRF-Chem 网站(https://ruc.noaa.gov/wrf/wrf-chem/)下载。 您应该经常浏览该网页以获取有关错误修复的更新。 这还包括气象 WRF 代码的更新和错误修复(http://www2.mmm.ucar.edu/wrf/users)
# 2.2.2 WRF-Chem 的 UNIX 环境设置
如果您使用 bash
,则使用 export
替换下方 setenv
即可
在构建 WRF-Chem 代码之前,使用几个环境设置来指定是否需要在模型构建中包括代码的某些部分。 在 c-shell 语法中,重要的环境变量设置为:
setenv EM_CORE 1
setenv NMM_CORE 0
2
他们显式定义了要构建的模型核心。 当然这通常是默认值。
环境变量
setenv WRFCHEM
显式定义了化学代码将包含在 WRF 模型构建中,并且是 WRF-Chem 必需的。 在配置时和编译时都需要此变量。
可选的,
setenv WRF_KPP 1
setenv YACC ‘/usr/bin/yacc –d’
setenv FLEX_LIB_DIR /usr/local/lib
2
3
明确定义了动力学预处理器(KPP)(Damian 等人 2002; Sandu 等人 2003; Sandu 和 Sander 2006)将包含在使用 flex 库(libfl.a)的 WRF-Chem 模型构建中。
在我们的例子中,flex 库位于 /usr/local/lib
中,并使用 /usr/bin
中的 yacc
(还有另一个编译器)来编译 KPP 代码。
这是可选的,因为并非所有化学机制都需要在编译期间构建的 KPP 库。
用户可以首先确定是否需要 KPP 库(有关可用选项的说明,请参阅第 6 章)。
如果不需要 KPP 库,则应将 KPP 环境变量设置为零(setenv WRF_KPP 0
)。
# 2.2.3 配置模型并编译代码
对于 WRF-Chem,请勿使用共享内存 OPENMP 选项(smpar 或 dm+sm),因为不支持这些选项。
WRF 代码具有相当复杂的构建机制。 它尝试确定您所使用的体系结构,然后为您提供选项以允许您选择首选的构建方法。 例如,如果您使用的是 Linux 计算机,则脚本将确定这是 32 位还是 64 位计算机,然后提示您使用所需的处理器(例如串行,共享内存或分布式内存),以及编译器。 首先选择构建方法:
> ./configu
- 选择一个选项
- 通常,选项
1
用于串行构建。**对于 WRF-Chem,请勿使用共享内存 OPENMP 选项(smpar 或 dm+sm),因为不支持这些选项。**如果要调试程序并使用非常小的数据集(例如,如果正在开发代码),则串行构建是首选。 - 由于 WRF-Chem 使用大量内存(许多其他变量),因此在所有其他情况下,首选使用分布式内存选项
- 通常,选项
- 您现在可以使用
> ./compile em_real >& compile.log
来编译代码 - 如果编译成功,则应在子目录
main
中找到可执行文件。- 通过
> ls -ls main/*.exe
- 您应该看到列出了
ndown.exe
,real.exe
和wrf.exe
。
- 通过
至此,WRF-Chem 模型的所有部分都已建立。
该模型可以运行,并且运行时应提示已包括 chemistry
。
但是,在可以充分利用 WRF 化学模型之前,需要生成排放输入数据。
生成排放输入数据是下一章和《WRF-Chem 排放指南》的主题。