跑通WRF模式初体验)
告别Linux恐惧症手把手教你用Windows子系统WSL2跑通WRF模式初体验对于大气科学、环境工程等领域的研究者和从业者来说WRFWeather Research and Forecasting模式是一个无法绕开的工具。这个强大的气象模拟系统能够提供从全球尺度到城市尺度的天气和气候预测支持气溶胶、化学过程、水文过程等多种模块的精细模拟。然而传统上WRF需要在Linux环境下运行这让许多不熟悉命令行操作的用户望而却步。好消息是随着Windows Subsystem for Linux 2WSL2的成熟现在我们可以在Windows系统上获得接近原生的Linux体验无需双系统或虚拟机就能运行WRF。本文将带你一步步完成从零开始的环境搭建直到成功运行第一个WRF模拟案例。1. WSL2环境准备与优化在开始WRF之旅前我们需要确保Windows系统已经正确配置了WSL2环境。WSL2相比第一代WSL有了质的飞跃它使用真正的Linux内核提供了完整的系统调用兼容性和显著提升的I/O性能这对于计算密集型的WRF模拟至关重要。系统要求检查清单Windows 10版本2004或更高或Windows 1164位处理器支持二级地址转换SLAT至少16GB内存推荐32GB以上固态硬盘SSD存储空间不少于50GB安装步骤简明指南以管理员身份打开PowerShell执行以下命令启用WSL功能dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart重启计算机后将WSL2设置为默认版本wsl --set-default-version 2从Microsoft Store安装Ubuntu 20.04 LTS或22.04 LTS提示安装完成后建议执行sudo apt update sudo apt upgrade -y更新系统组件针对WRF运行的特殊优化配置内存分配在用户目录下创建.wslconfig文件内容如下[wsl2] memory12GB processors6 swap4GB localhostForwardingtrue这确保了WSL2能够充分利用主机资源。文件系统性能将WRF相关的工作目录放在WSL文件系统内如/home/username/wrf而非Windows挂载目录如/mnt/c以获得最佳I/O性能。2. WRF依赖环境搭建WRF模式需要一系列科学计算库和编译器支持。在WSL2的Ubuntu环境中我们可以通过apt包管理器高效完成这些依赖的安装。必备工具链安装sudo apt install -y build-essential csh flex curl gfortran m4 libtool automake \ libjasper-dev libpng-dev zlib1g-dev libssl-dev libcurl4-openssl-dev \ libnetcdf-dev libnetcdff-dev netcdf-bin对于并行计算支持还需要安装MPI库sudo apt install -y openmpi-bin libopenmpi-dev环境变量配置是确保编译成功的关键步骤。将以下内容添加到~/.bashrc文件末尾export NETCDF/usr export WRFIO_NCD_LARGE_FILE_SUPPORT1 export WRF_CHEM1 # 如需化学模块支持 export JASPERLIB/usr/lib/x86_64-linux-gnu export JASPERINC/usr/include/jasper注意每次修改.bashrc后需要执行source ~/.bashrc使更改生效或重新打开终端常用工具对比表工具名称作用描述安装命令NCL气象数据分析和可视化sudo apt install ncl-ncargcdo气候数据操作工具sudo apt install cdoncviewNetCDF文件快速查看器sudo apt install ncviewPython3科学计算和脚本编写已预装建议额外安装numpy等库3. WRF模式编译与安装WRF系统的编译过程需要耐心和细致的操作。我们将采用分步构建的方式确保每个环节都正确无误。源码获取与准备创建专用工作目录mkdir ~/wrf cd ~/wrf下载最新稳定版WRF源码以4.4版本为例wget https://github.com/wrf-model/WRF/archive/refs/tags/v4.4.tar.gz tar -xzf v4.4.tar.gz cd WRF-4.4WRF的编译采用交互式configure脚本。根据你的硬件配置选择合适的选项./configure典型选择建议编译器组合GNUgcc/gfortran并行类型选择适合你硬件的选项如smpar为共享内存并行嵌套支持根据需求选择基本或移动嵌套配置完成后执行编译./compile em_real compile.log 编译过程可能需要1-2小时可以通过以下命令监控进度tail -f compile.log常见问题解决方案如果编译失败先检查compile.log中的错误信息内存不足时可以尝试export J-j2限制并行编译任务数遇到依赖问题确认所有必要的开发包已安装验证编译成功的标志是在main目录下生成了wrf.exe和real.exe可执行文件。4. WPS系统编译与配置WRF预处理系统WPS负责将各种气象数据转换为WRF可读的格式是运行模拟的前置步骤。WPS编译步骤返回工作目录并下载WPS源码cd ~/wrf wget https://github.com/wrf-model/WPS/archive/refs/tags/v4.4.tar.gz tar -xzf v4.4.tar.gz cd WPS-4.4配置环境变量export WRF_DIR~/wrf/WRF-4.4运行配置脚本./configure选择与WRF相同的编译器选项执行编译./compile wps_compile.log 成功编译后应生成三个关键程序geogrid.exe处理静态地理数据ungrib.exe解压气象数据metgrid.exe将气象数据插值到模拟域5. 第一个案例理想天气模拟现在我们已经准备好运行第一个WRF模拟。为了降低初学者的门槛我们从理想案例开始无需准备复杂的气象输入数据。理想案例运行步骤进入WRF测试案例目录cd ~/wrf/WRF-4.4/run准备namelist.input文件示例内容time_control run_days 0, run_hours 6, run_minutes 0, run_seconds 0, start_year 2023, 2023, start_month 07, 07, start_day 15, 15, start_hour 00, 00, end_year 2023, 2023, end_month 07, 07, end_day 15, 15, end_hour 06, 06, interval_seconds 21600 /执行模拟mpirun -np 4 ./wrf.exe提示-np 4表示使用4个MPI进程应根据你的CPU核心数调整模拟完成后会生成一系列wrfout文件包含模拟结果数据。我们可以使用NCL或Python进行结果可视化。Windows与WSL2的协同工作流虽然WRF在WSL2中运行但我们可以充分利用Windows下的强大工具使用VS Code远程连接到WSL环境获得代码编辑、调试的完整支持通过X11转发在Windows桌面显示WSL中的图形程序如NCL绘图将结果数据复制到Windows分区使用专业软件如ArcGIS进行后处理X11转发配置方法在Windows安装Xming或VcXsrv在WSL中安装x11-appssudo apt install x11-apps设置DISPLAY环境变量export DISPLAY$(awk /nameserver / {print $2:0} /etc/resolv.conf)6. 真实案例进阶与性能调优掌握了理想案例后我们可以尝试使用真实气象数据进行模拟。这需要下载再分析数据如GFS或ERA5并通过WPS处理。真实案例工作流程从NCAR或ECMWF下载气象数据使用WPS工具链处理数据./geogrid.exe ./ungrib.exe ./metgrid.exe运行real.exe生成初始和边界条件mpirun -np 4 ./real.exe执行WRF主程序mpirun -np 8 ./wrf.exe性能优化技巧调整namelist中的time_step和history_interval参数合理设置网格分辨率与域大小平衡精度与计算成本使用numtiles参数匹配CPU核心拓扑结构监控系统资源使用情况避免内存交换# 监控资源使用示例 watch -n 1 free -h mpstat -P ALL 1 17. 常见问题排查与解决即使按照步骤操作初学者仍可能遇到各种问题。以下是典型问题及其解决方案编译相关问题错误Could not find file configure.wrf解决方案先运行./configure生成配置文件错误gfortran: fatal error: cannot execute f951解决方案安装完整gfortran套件sudo apt install gfortran运行相关问题错误Could not open wrfinput_d01解决方案确保先运行real.exe生成初始条件文件错误Segmentation fault (core dumped)解决方案检查namelist参数合理性特别是网格设置错误NetCDF: Startcount exceeds dimension bound解决方案确认输入数据时间范围覆盖模拟时段性能相关问题问题模拟速度异常缓慢 检查点确认使用WSL2而非WSL1wsl -l -v检查CPU使用率是否达到预期确保工作目录在WSL文件系统内问题内存不足导致进程被终止 解决方案增加.wslconfig中的内存限制减小网格分辨率或模拟区域增加交换空间sudo fallocate -l 4G /swapfile sudo mkswap /swapfile sudo swapon /swapfile8. 扩展应用化学模块与耦合模式对于环境科学研究者WRF-Chem提供了大气化学过程模拟能力。启用化学模块需要额外步骤编译时设置环境变量export WRF_CHEM1在namelist.input中添加化学选项chem chem_opt 202, 202, ...准备排放清单数据类似地WRF-Hydro水文模块可以模拟陆地水文过程# 单独下载WRF-Hydro源码 git clone https://github.com/NCAR/wrf_hydro_nwm_public对于空气质量模拟可以考虑将WRF与CMAQ或CAMx等模型耦合。虽然这些高级应用需要更多学习但WSL2环境同样能够支持它们的运行。