简介:面向WRF模式入门学习者的中文教程PDF,聚焦从Linux系统安装起步、逐步搭建WRF运行环境的全流程,适合大气科学、环境科学相关专业学生及科研人员参考。文档源于中山大学大气科学系实际教学材料,包含CentOS 5.2安装图解、磁盘分区与swap设置、网络参数配置、GRUB引导、系统初始化等步骤,并延伸至PGI编译器安装等WRF前置准备,内容具体且配有大量截图,便于跟随操作。资源为单个PDF文件,大小8.53MB,无需解压即开即用。目前已有116人学习下载,对于希望在CentOS类Linux系统上完整部署WRF、但缺乏系统管理经验的使用者,这份教程能有效减少踩坑、提高安装成功率。
1. 从CentOS 5.2到WRF:为什么气象模式的第一道坎是操作系统
WRF(Weather Research and Forecasting)模式从来不是开箱即用的软件,它需要一整套Linux工具链支撑:Fortran编译器、NetCDF数据接口、NCL绘图库,以及足够大的磁盘来存放地形数据和模拟输出。我见过不少同行在模式编译阶段死磕几周,回头发现是操作系统安装时分区太小或swap不足,导致编译器中途被杀。这份教程源自中山大学大气科学系的内部讲义,从CentOS 5.2安装开始,一步步带你走过WRF前置环境的搭建。虽然系统版本老,但分区逻辑、环境变量配置思路到今天依然适用。无论你是在物理机上安装,还是用虚拟机安装Linux来跑WRF,这套流程都能复用。
2. 磁盘分区与网络初始化:WRF对Linux系统底层的三个硬性要求
WRF的编译和运行对Linux系统有三个硬性要求:足够大的根分区、合理配置的swap分区、可用的静态IP和DNS。这三个要求在安装图形界面里很容易被忽略,等编译时再回头改分区就麻烦了。
2.1 图形安装还是文本安装:按回车之前先想清楚
CentOS 5.2的安装菜单默认按回车进入图形界面,输入linux text进入文本界面。图形界面有鼠标可以点,但对老硬件或虚拟机可能出现黑屏;文本界面更稳定,但分区时要通过命令行交互。我的建议是:如果是在虚拟机里装,直接图形安装;如果是老旧物理机且显卡不兼容,改用文本界面。原文提到“可能因为显卡问题,使得无法进入图形安装界面”,这种情况不是系统坏了,换一个系统版本或改装CentOS 7也能解决。
安装介质启动后,会询问是否检测光盘。这里建议选Skip,因为检测一张约3.4GB的镜像要花很久,而且只要下载时校验过MD5,基本不会有问题。
2.2 手动分区:swap和根分区的比例怎么定
安装向导里选“建立自定义的分区结构”,进入分区界面后,找到空闲空间。原文建议空闲空间有50G左右,这个数字今天看依然合理——地形数据包geog_v3.1.tar.gz约2G,WRF源码和编译产物约2G,加上模拟输出,轻松的就需要20G以上。如果你还要跑几天的预报试验,50G是最低线。
下面是我常用的分区方案,可以直接照抄:
| 挂载点 | 分区类型 | 大小 | 说明 |
|---|---|---|---|
| /boot | ext3 | 200MB | 引导文件,不用太大 |
| swap | swap | 2048MB | 内存小于4G时建议用内存的2倍,内存大于4G可固定4096MB |
| / | ext3/ext4 | 剩余全部 | 所有源代码、WRF输出都在这里 |
在分区界面点击“新建”,先创建swap,再创建根挂载点。根分区的大小设为“剩余所有空闲空间”,不要留多余的空闲。最后点“编辑”确认挂载点,完成后界面会同时显示swap和根分区。
提示:如果你用的是虚拟机,虚拟磁盘大小在创建虚拟机时就定了。建议在虚拟机设置里把磁盘设为60G以上,否则分区时会发现空间不够。
2.3 网络配置:静态IP与DNS
WRF安装过程中要从网上下载依赖包,虽然大部分时间在本地编译,但NCL二进制包、地形数据都可能需要外网。安装时进入网卡参数设置窗口,点击“编辑”配置IPv4。如果你在Windows下,打开命令提示符输入ipconfig,可以看到本机的IP、子网掩码和网关。但要注意:如果你在虚拟机里安装,主机上的IP不能直接用,应该配置VMware或VirtualBox的NAT或桥接网络,然后按虚拟网络建议的网段设置。
DNS可以先用公共DNS如114.114.114.114,或者你所在学校的DNS。原文给出了中山大学各校区的DNS,如果你用动态IP分配,直接默认自动获取即可。但WRF集群环境通常需要固定IP,所以手动配置更稳妥。安装完重启后,检查网络是否通:
ping -c 4 www.baidu.com能ping通就说明网络正常。如果ping不通,先查网卡是否激活,再看网关和DNS。注意CentOS 5.2默认防火墙是开启的,可能拦截ICMP,所以ping不通不代表断网,可以改用curl -I http://mirrors.aliyun.com测试。
3. 编译器与依赖库:PGI、NetCDF、NCL的安装顺序与避坑点
WRF模式核心用Fortran编写,PGI编译器是官方推荐的首选编译器;NetCDF负责读写气象数据;NCL是绘图和后处理工具。安装顺序不能乱:先装PGI,再装NetCDF,因为NetCDF的编译要用到Fortran编译器;然后装NCL,NCL是预编译二进制包,不依赖前两者,但需要配置环境变量。
3.1 PGI编译器安装:license和PATH是两大坑
PGI指Portland Group编译器,现在叫NVIDIA HPC SDK,但老版本pgilinux86-64-707.tar.gz在WRF社区里依然被广泛使用。解压后以root身份运行./install,安装过程中会问是否接受条款,输入accept;是否安装ACML,选n;安装目录建议/usr/local/pgi,后续环境变量都要指向这里。
安装完成后,把license.dat复制到安装目录下。很多新手忘了这一步,导致编译时提示找不到license。
[yourname@localhost pgi707]$ tar -zxvf pgilinux86-64-707.tar.gz [yourname@localhost pgi707]$ su root [root@localhost pgi707]# ./install [root@localhost pgi707]# cp license.dat /usr/local/pgi/ [root@localhost pgi707]# exit接下来编辑~/.bashrc,在文件末尾追加:
export PGI=/usr/local/pgi/linux86/7.0-7 export PATH=$PGI/bin:$PATH export MANPATH=$PGI/man:$MANPATH export LM_LICENSE_FILE=/usr/local/pgi/license.dat注意PATH变量里冒号两边不能有空格。执行source ~/.bashrc后,用pgf90测试是否可用。如果输出pgf90-Warning-No files to process,说明编译器已经能调用,只是没有输入文件。这里有个容易踩的坑:如果你把PGI安装在/usr/local/pgi,但实际目录里是linux86-64而不是linux86,一定要用ls /usr/local/pgi确认实际路径,否则环境变量指向错误。
提示:在64位系统上,注意路径是
linux86-64还是linux86,用uname -m查看架构。如果显示x86_64,就用linux86-64。
3.2 NetCDF安装:FC=pgf90这个参数不能丢
NetCDF是WRF处理输入输出数据的核心库。WRF需要NetCDF的Fortran接口,所以configure时必须指定FC=pgf90,否则用默认gfortran编译出来的库无法和PGI编译的WRF链接。
安装步骤:
[yourname@localhost netcdf]$ tar -zxvf netcdf-4.0.1.tar.gz [yourname@localhost netcdf]$ cd netcdf-4.0.1 [yourname@localhost netcdf]$ su root [root@localhost netcdf-4.0.1]# mkdir /usr/local/netcdf [root@localhost netcdf-4.0.1]# ./configure --prefix=/usr/local/netcdf FC=pgf90 [root@localhost netcdf-4.0.1]# make [root@localhost netcdf-4.0.1]# make install--prefix指定安装路径,这里是/usr/local/netcdf。FC=pgf90指定Fortran编译器为PGI的pgf90,这个参数决定了后续WRF链接时能否找到兼容的NetCDF库。NetCDF 4.0.1有些版本在make时可能报undefined reference错误,通常是因为没有安装zlib或hdf5。如果遇到,可以换用NetCDF 4.1.3或4.3.x,并在configure时加上--disable-netcdf-4,只启用经典格式支持,减少依赖。
配置环境变量:
export NETCDF=/usr/local/netcdf export PATH=$NETCDF/bin:$PATH同样写入.bashrc并执行source。为了验证安装是否成功,可以运行nc-config --version,或者直接看/usr/local/netcdf/bin下是否有ncdump和ncgen命令。有这些工具就能确认NetCDF库已就绪。
3.3 NCL/NCARG安装:预编译二进制,关键是.hluresfile
NCL(NCAR Command Language)是WRF圈子里最常用的绘图工具。它不需要从源码编译,直接从Earth System Grid下载对应平台的预编译版本即可。下载前用uname -m看架构,用gcc --version看glibc版本,选择相近的包。原文下载的是ncl_ncarg-5.1.1.Linux_i686_gcc412.tar.gz,这是32位版本。如果你用64位系统,应下载64位对应版本。
安装就是把bin、lib、include解压到/usr/local/ncarg:
su mkdir -p /usr/local/ncarg cd /usr/local/ncarg tar zxvf /home/yourname/ncl_ncarg-5.1.1.Linux_i686_gcc412.tar.gz然后配置环境变量:
export NCARG_ROOT=/usr/local/ncarg export PATH=/usr/local/ncarg/bin:$PATH export DISPLAY=:0.0 export NCARG_LIB=/usr/local/ncarg/lib export NCARG_INC=/usr/local/ncarg/includeDISPLAY=:0.0是让X11图形窗口显示到本地。如果你在远程SSH环境,需要通过X11转发或改用-d png输出图片。接下来在~目录建立.hluresfile文件,这是NCL的默认资源文件,用来设置背景色、字体、窗口大小等。原文给出的一份配置里,这几行值得关注:
*wkForegroundColor : (/0.,0.,0./) *wkBackgroundColor : (/1.,1.,1./) *wsMaximumSize: 32556688wkForegroundColor和wkBackgroundColor分别设置前景和背景颜色,wsMaximumSize是绘图缓冲区大小。如果网格数据大于500×500,默认16MB可能不够,需要调大。这个文件不配置也能运行,但配置后可以减少每张图脚本里重复的参数设置,尤其是在批量出图时会省很多事。
4. WRF模式源文件与地形数据:目录规划、解压和校验
到这一步,Linux环境、编译器、NetCDF、NCL都已就绪,接下来把WRF本身的源码和地形数据放到一个干净的目录里。原文建议在用户目录下建立WRF文件夹,把geog_v3.1.tar.gz、WRFV3.1.1.TAR.gz、WPSV3.1.1.TAR.gz和ARWpost.tar.gz都复制进去。这个看似简单的操作,其实决定了后续编译时路径是否混乱。
4.1 统一的目录结构约定
我推荐的项目结构是这样的:
/home/yourname/WRF/ ├── geog_v3.1.tar.gz ├── WRFV3.1.1.TAR.gz ├── WPSV3.1.1.TAR.gz └── ARWpost.tar.gz解压时,最好一个包对应一个目录,不要全解压到同一个地方。下面是一个“坏了能快速定位”的解压顺序:
cd ~/WRF tar -zxvf geog_v3.1.tar.gz # 解压地形数据,得到geog/目录 tar -zxvf WRFV3.1.1.TAR.gz # 解压WRF主程序,得到WRFV3/目录 tar -zxvf WPSV3.1.1.TAR.gz # 解压前处理系统,得到WPS/目录 tar -zxvf ARWpost.tar.gz # 解压后处理工具,得到ARWpost/目录解压完成后,用du -sh检查每个目录的大小。地形数据geog通常在2G左右,如果解压出来很小,说明包不完整或解压出错了。另外,检查顶层目录名是否和压缩包内一致,避免出现WRFV3-3.1.1这种多了一层嵌套的情况,否则编译脚本会找不到目录。
各包的作用如下表:
| 软件包 | 作用 | 解压后目录 |
|---|---|---|
| geog_v3.1.tar.gz | 静态地形数据(高程、土地利用等) | geog/ |
| WRFV3.1.1.TAR.gz | 模式主程序(wrf.exe、real.exe等) | WRFV3/ |
| WPSV3.1.1.TAR.gz | 前处理系统(geogrid、ungrib、metgrid) | WPS/ |
| ARWpost.tar.gz | 后处理,转换GrADS格式 | ARWpost/ |
4.2 地形数据的完整性检查
geog_v3.1.tar.gz是WRF预置的地形数据集,包括高程、土地利用、土壤类型等,是运行real.exe时必须输入的静态数据。这块数据损坏,WPS的geogrid.exe会直接报错。检查方法很简单,解压后看geog/目录下是否有README和各个子数据集目录,比如modis_landuse、topo_30s等。
提示:地形数据文件经常在传输中损坏。建议下载后先算一遍MD5,和发布方提供的校验值比对。如果没有官方MD5,至少用
tar -tzf geog_v3.1.tar.gz列一下压缩包内容,确认尾部没有截断。
4.3 为后续编译预留可写权限与干净环境
WRF编译需要向源码目录写Makefile和.o文件,所以要确保当前用户对WRFV3、WPS等目录有写权限。不要在root下编译,也不要从root解压后不改变属主。常见做法是:
chown -R yourname:yourname ~/WRF这样后续用普通用户编译时,不会出现“Permission denied”的莫名错误。还有一个容易忽略的点:WRFV3的configure脚本会检测系统类型和编译器,如果环境变量里遗留了无关的LD_LIBRARY_PATH,可能导致检测失败。所以建议在.bashrc里保持PATH干净,不要为了让某个软件运行而乱加路径。
5. 安装成功的判据:用NCL生成第一张气象图并检查编译环境
NCL安装完后,官方自带测试脚本。在~目录下依次执行:
cd ~ ng4ex gsun01n ncl gsun01n.nclgsun01n会生成一个名为gsun01n.ncl的脚本,ncl运行它,如果弹出X11窗口显示图像,说明NCL的图形库、X11转发和环境变量都正常。如果没弹窗,先点一下窗口(有时需要鼠标点击才刷新),不行就检查DISPLAY是否为:0.0,并确认你能访问显示器。
另一个测试命令:
ncargex cpex08 ctrans -d X11 cpex08.ncgmncargex是NCAR Graphics的示例提取器,ctrans将生成的元文件转换为X11输出。如果出现“No X11 display”错误,说明DISPLAY没设置好,或者你通过SSH连接而没有开X11转发。
验证图形输出后,再确认编译器环境:
pgf90 --version nc-config --version which ncl echo $NETCDF最后,我建议在编译WRF之前先写一个小的Fortran+NetCDF测试程序,确认PGI编译器能正确链接NetCDF库。把下面的代码保存为test_pgi.f90:
program test use netcdf implicit none print *, 'NetCDF version: ', nf90_inq_libvers() end program然后编译并运行:
pgf90 -o test_pgi test_pgi.f90 -I$NETCDF/include -L$NETCDF/lib -lnetcdf ./test_pgi如果输出版本号字符串,说明PGI与NetCDF的链接没有问题。这是WRF编译前成本最低的一次打通验证——很多编译错误在这一步就能暴露,比如NetCDF库是用gfortran编译的,链接时符号表不匹配。这个测试能让你提前确认,而不是等WRF编译到一半再回头找原因。
本文还有配套的精品资源,点击获取