【WRFDA实操第一期】服务器中安装 WRFPLUS 和 WRFDA

目录

  • 在服务器上下载并解压 WRF v4.6.1
  • 编译 WRFDA 及相关库
    • 安装和配置所需库
  • 安装 WRFPLUS 和 WRFDA 以运行 4DVAR 数据同化
    • 一、安装 WRFPLUS(适用于 WRF v4.0 及以上版本)
    • 二、安装 WRFDA(用于 4DVAR)
    • WRFDA 和 WRFPLUS 的安装说明
  • 另-配置报错
    • 报错1:NETCDF4 IO features not supported
    • 报错2:f951: Fatal Error: Reading module ‘/home/wanzhou/soft/netcdf4.7/include/netcdf.mod’ at line 1 column 2: Unexpected EOF
  • 参考

本博客详细介绍在服务器中安装 WRFPLUS 和 WRFDA的详细步骤。

在服务器上下载并解压 WRF v4.6.1

官网安装包下载-WRF v4.6.1 安装链接

1. 下载 WRF 源码

使用 wget(推荐):

wget https://github.com/wrf-model/WRF/releases/download/v4.6.1/v4.6.1.tar.gz

在这里插入图片描述

或使用 curl:

curl -L -O https://github.com/wrf-model/WRF/releases/download/v4.6.1/v4.6.1.tar.gz

2. 解压源码包

tar -xvzf v4.6.1.tar.gz

这个命令将解压出 WRF 目录,其中包含 WRF 模型的全部源代码和相关工具。

编译 WRFDA 及相关库

# 选择一个目录用于安装所有依赖库
export DIR=$HOME/WRFDA_LIBS
mkdir -p $DIR
cd $DIR

检查当前环境是否存在 GNU 编译器 + MPI 并行支持:(与编译选项有关,使用 GNU 编译器 (gfortran/gcc))

which mpif90
which gfortran

1、安装mpif90

cd $HOME/WRFDA_LIBS
wget https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.6.tar.gz
tar -xvzf openmpi-4.1.6.tar.gz
cd openmpi-4.1.6./configure --prefix=$HOME/WRFDA_LIBS/openmpi
make -j4
make install

然后设置环境变量:

export PATH=$HOME/WRFDA_LIBS/openmpi/bin:$PATH
export LD_LIBRARY_PATH=$HOME/WRFDA_LIBS/openmpi/lib:$LD_LIBRARY_PATH

写入 .bashrc:

echo 'export PATH=$HOME/WRFDA_LIBS/openmpi/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=$HOME/WRFDA_LIBS/openmpi/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

安装和配置所需库


1. 安装 NetCDF-C 和 NetCDF-Fortran

⚙️下载并编译 NetCDF:

# Zlib (NetCDF 依赖)
wget https://www.zlib.net/fossils/zlib-1.2.13.tar.gz
tar -xvzf zlib-1.2.13.tar.gz
cd zlib-1.2.13
./configure --prefix=$DIR/zlib
make -j$(nproc)
make install# HDF5
cd $DIR
wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8/hdf5-1.8.20/src/hdf5-1.8.20.tar.gz
tar -xvzf hdf5-1.8.20.tar.gz
cd hdf5-1.8.20
./configure --prefix=$DIR/hdf5 --with-zlib=$DIR/zlib
make -j$(nproc)
make install# NetCDF-C
cd $DIR
wget https://downloads.unidata.ucar.edu/netcdf-c/4.9.2/netcdf-c-4.9.2.tar.gz
tar -xvzf netcdf-c-4.9.2.tar.gz
cd netcdf-c-4.9.2
CPPFLAGS="-I$DIR/hdf5/include" LDFLAGS="-L$DIR/hdf5/lib" ./configure --prefix=$DIR/netcdf --disable-dap
make -j$(nproc)
make install# NetCDF-Fortran
cd $DIR
wget https://downloads.unidata.ucar.edu/netcdf-fortran/4.6.1/netcdf-fortran-4.6.1.tar.gz
tar -xvzf netcdf-fortran-4.6.1.tar.gz
cd netcdf-fortran-4.6.1
export CPPFLAGS="-I$DIR/netcdf/include"
export LDFLAGS="-L$DIR/netcdf/lib"
./configure --prefix=$DIR/netcdf
make -j$(nproc)
make install

在这里插入图片描述
在这里插入图片描述
检查 HDF5 是否安装成功:

ls $HDF5/lib/libhdf5_fortran.a
ls $HDF5/lib/libhdf5_hl_fortran.a

🌍 设置环境变量:

export NETCDF=$DIR/netcdf
export PATH=$NETCDF/bin:$PATH
export LD_LIBRARY_PATH=$NETCDF/lib:$LD_LIBRARY_PATH

2. 设置 HDF5 环境变量(用于 AMSR2 数据)

export HDF5=$DIR/hdf5
export LD_LIBRARY_PATH=$HDF5/lib:$LD_LIBRARY_PATH

3. CRTM(Radiative Transfer Model)

CRTM 2.3.0 包含在 WRFDA 源码中,无需额外操作。但你可以从官网获取系数文件:

🔗 CRTM Coefficients 下载链接

wget https://www2.mmm.ucar.edu/wrf/users/wrfda/download/crtm_coeffs_2.3.0.tar.gztar -xzvf crtm_coeffs_2.3.0.tar.gz

在这里插入图片描述


4. RTTOV(可选)

如果需要使用卫星辐射资料,需要安装 RTTOV v12.1:

# 下载 RTTOV(需要注册)
https://nwp-saf.eumetsat.int/site/software/rttov/rttov-v12/# 解压并编译(确保使用与 WRFDA 一致的 Fortran 编译器)
# 编译时需启用 emis_atlas 选项(见 RTTOV README)

安装完成后设置环境变量:

export RTTOV=/path/to/rttov12/compiled_dir
export LD_LIBRARY_PATH=$RTTOV/lib:$LD_LIBRARY_PATH

5. 安装 JASPERLIB 和 JASPERINC

变量说明
JASPERLIBJasPer 图像压缩库的 lib 路径,用于支持 GRIB2 编码/解码
JASPERINCJasPer 的头文件路径(include)

从源码编译 JasPer

# 下载源码
wget https://github.com/jasper-software/jasper/archive/refs/tags/version-2.0.33.tar.gz
tar -xvzf version-2.0.33.tar.gz
cd jasper-version-2.0.33# 配置安装目录
export DIR=$HOME/WRFDA_LIBSmkdir -p $DIR/grib2
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=$DIR/grib2cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/WRFDA_LIBS/grib2 \-DJAS_ENABLE_SHARED=ON \-DJAS_ENABLE_STATIC=ONmake -j4
make install

设置环境变量:

export JASPERLIB=$DIR/grib2/lib
export JASPERINC=$DIR/grib2/include
export LD_LIBRARY_PATH=$JASPERLIB:$LD_LIBRARY_PATH

检查是否安装成功

ls $JASPERLIB/libjasper.a
ls $JASPERINC/jasper/jasper.h

这两个文件必须存在,WRF 和 WRFDA 编译时才会自动检测并启用 JasPer 支持。

安装 WRFPLUS 和 WRFDA 以运行 4DVAR 数据同化

环境设置如下:

# 设置路径(根据你自己的路径修改)
export DIR=$HOME/WRFDA_LIBS
export NETCDF=$DIR/netcdf
export HDF5=$DIR/hdf5
export JASPERLIB=$DIR/grib2/lib
export JASPERINC=$DIR/grib2/include
export LD_LIBRARY_PATH=$NETCDF/lib:$HDF5/lib:$LD_LIBRARY_PATH

一、安装 WRFPLUS(适用于 WRF v4.0 及以上版本)

安装步骤如下:

cd WRFPLUS# 清理旧文件
./clean -aexport NETCDF_classic=1# 配置编译 WRFPLUS
./configure wrfplus# 编译 WRFPLUS
./compile wrfplus >& compile_wrfplus.log &# 确保离线编译
nohup ./compile wrfplus > compile_wrfplus.log 2>&1 &

在这里插入图片描述
选择18。

✅ 编译成功判断方法

执行完成后,检查是否生成了以下文件:

ls main/*.exe

应看到:

wrfplus.exe

在这里插入图片描述

如果没有,查看 compile_wrfplus.log 中是否有 Error 或 Segmentation fault。


注意,设置环境变量 WRFPLUS_DIR!!!

# csh 或 tcsh(早期系统或某些 HPC 环境)
setenv WRFPLUS_DIR /your/path/to/WRFPLUS#  bash 或 zsh(大多数 Linux 默认)
export WRFPLUS_DIR=$HOME/WRFDA/WRFPLUS

设置好这个变量后,WRFDA 编译时就能正确找到 WRFPLUS 的静态库和模块定义,确保 3DVAR / 4DVAR 等功能正常链接。

二、安装 WRFDA(用于 4DVAR)

WRFPLUS 安装成功后,开始安装 WRFDA (重新解压WRF安装包,并重命名为 WRFDA)。

cd WRFDA./clean -a               # 推荐:清理旧配置export NETCDF_classic=1# 编译
./configure 4dvar
./configure wrfda        # 选择编译平台(如 gnu/dmpar)

配置完成后,会生成:

configure.wrf
configure.vars

接下来,

# 1. 编译观测前处理
./compile obsproc >& compile_log.obsproc &# 2. 编译主程序(3DVAR/Hybrid)
./compile all_wrfvar >& compile_log.wrfvar &# 3. 编译 4DVAR(如果用)
./compile 4dvar >& compile_log.4dvar &# 4. 编译臭氧同化(如果用)
./compile ozone >& compile_log.ozone &# 5. 编译背景误差生成工具
./compile gen_be >& compile_log.genbe &

编译成功后你可以在 var/da 目录下找到 da_wrfvar.exe。

使用以下代码,检查是否安装成功:

ls -ls var/build/*.exe var/obsproc/*.exe

输出文件如下:
在这里插入图片描述

WRFDA 和 WRFPLUS 的安装说明

✅ 建议重新编译 WRFDA(不需要“卸载”,只需 ./clean -a 清理即可),因为 WRFDA 的 4DVAR 模块依赖于 WRFPLUS 的库和接口。

🔍 原因说明

  • WRFPLUS 是 WRF 模型的一个“切线模式”和“伴随模式”版本,它在 4DVAR 中用于计算梯度等。
  • WRFDA 编译时,如果你选择了 4DVAR,它会自动链接 WRFPLUS 的模块。
  • 如果你在 没有安装 WRFPLUS 的情况下编译了 WRFDA,那么 4DVAR 模块肯定是编译失败或缺失的。
  • 重新编译 WRFDA 后,它会自动识别并使用你刚刚编译好的 WRFPLUS 模块。

另-配置报错

报错1:NETCDF4 IO features not supported

❌ 这是致命错误,导致 configure.wrf 被删除,编译无法继续。

************************** W A R N I N G ************************************
NETCDF4 IO features are requested, but this installation of NetCDF/home/wanzhou/soft/netcdf4.7
DOES NOT support these IO features.
...
!!! configure.wrf has been REMOVED !!!

❓ 为什么会出错?
虽然我使用的 NetCDF 是 4.7.4,但是这个版本可能没有在编译时启用 --enable-netcdf4 选项,因此不支持 NetCDF4/HDF5 的 IO 特性。

方案一:使用经典格式编译(推荐初学者)

如果你使用 csh 或 tcsh shell(如提示中的 setenv),请运行:

setenv NETCDF_classic 1

如果你使用 bash 或 zsh,使用:

export NETCDF_classic=1

重新运行配置命令:

./configure wrfda

在这里插入图片描述
按照此操作后,成功生成configure.wrf 文件。

一旦 configure.wrf 成功生成,就可以执行 WRFDA 的编译命令:

./compile all_wrfvar >& compile.log

报错2:f951: Fatal Error: Reading module ‘/home/wanzhou/soft/netcdf4.7/include/netcdf.mod’ at line 1 column 2: Unexpected EOF

报错内容如下:表示 Fortran 编译器在尝试读取 netcdf.mod 模块文件时,发现该文件内容异常或损坏(Unexpected EOF = 意外的文件结尾)。

        fi
f951: Fatal Error: Reading module ‘/home/wanzhou/soft/netcdf4.7/include/netcdf.mod’ at line 1 column 2: Unexpected EOF
compilation terminated.

❗ 这是一个典型的 “模块文件损坏” 或 “编译器不兼容” 问题,最常见的原因有:

🚫 原因 1:netCDF 是用不同的 Fortran 编译器编译的
例如:你现在用 gfortran 编译 WRFDA,但你的 netcdf.mod 是用 ifort 编译的。

🚫 原因 2:netcdf.mod 是旧的/不完整的
比如你在安装 netCDF-Fortran 时,中途中断了编译,或者 netcdf.mod 是从别处复制来的,内容不完整。

参考

1、zlib下载安装包-Index of /fossils
在这里插入图片描述
2、HDF5下载安装包-HDF5

wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.2.2.tar.gz
wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.12/hdf5-1.12.1/src/hdf5-1.12.1.tar.gztar -xvzf hdf5-1.12.1.tar.gz
cd hdf5-1.12.1.tar.gz./configure --prefix=$HOME/WRFDA_LIBS/hdf5 \--enable-fortran \--enable-hl \--enable-static \--disable-sharedmake -j4
make install

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/89352.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/89352.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【机器学习【6】】数据理解:数据导入、数据审查与数据可视化方法论

文章目录一、机器学习数据导入1、 Pandas:机器学习数据导入的最佳选择2、与其他方法的差异二、机器学习数据理解的系统化方法论1、数据审查方法论:六维数据画像技术维度1:数据结构审查维度2:数据质量检查维度3:目标变量…

AI炼丹日志-30-新发布【1T 万亿】参数量大模型!Kimi‑K2开源大模型解读与实践

点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) AI炼丹日志-29 - 字节跳动 DeerFlow 深度研究框斜体样式架 私…

如何关闭Elasticsearch的安全认证的解决方法

在Elasticsearch 中,启动之后,需要输入用户名和密码,才可以访问,在测试环境中,很不方便,本章教程,主要介绍如何关闭Elasticsearch 的安全认证。在 Elasticsearch 8.x / 9.x 中,默认是…

day051-ansible循环、判断与jinja2模板

文章目录0. 老男孩思想-男女性需求差异1. 手动指定客户机密码2. 批量更新主机名2.1 hostname模块2.2 添加主机清单变量2.3 编写批量修改主机名剧本2.4 修改hosts文件2.5 分发hosts文件剧本3. ansible的并行进程数4. 分组设置主机密码-主机清单分组变量5. 案例:ansib…

大模型安全建设:破误区、识风险、筑防线20250714

🔐 大模型安全建设:破误区、识风险、筑防线作者:Narutolxy|编辑时间:2025年7月在负责公司 AI 产品落地的过程中,一度以为只要选用主流开源大模型,前面加一层“敏感词提示词过滤”,就…

fastadmin中ajax弹窗修改文字为英文

需要把上图的中文改为 切换语言自动切换成英文找到这个文件public/assets/js/backend.js找到如下图部分 // //点击包含.btn-ajax的元素时发送Ajax请求 原页面// $(document).on(click, .btn-ajax,.ajaxit, function (e) {// var that this;// var options $.exte…

大型语言模型(LLM)的技术面试题

大型语言模型(LLM)的技术面试题 目录 大型语言模型(LLM)的技术面试题 一、提示校准:减轻提示学习中的偏见 二、矢量存储的适用场景 三、模型与人类价值观对齐的技术 四、RLHF中的Reward Hacking 五、微调效果的关键影响因素:预训练模型架构与大小 六、Transformer自注意力…

数字IC后端培训教程之数字IC后端项目典型问题解析

今天给大家分享下最近几个典型的数字后端项目案例,希望对大家的学习和工作有所帮助。 数字IC后端培训教程之数字后端项目典型项目案例解析 Q1:星主,有啥办法可以看到refinePlace或者ecoPlace都动到了那些inst吗,log里只会有mean和max move&…

网络(数据库1)

常用数据库: 1.关系型数据库: 将复杂的数据结构简化为二维表格形式 大型:0racle、DB2 中型:MySq1、sQLServer 小型:Sqlite 2.非关系型数据库以键值对存储,且结构不固定。//JSON Redis MongoDB数据存储:变量、数组、链表 内存 &…

6.删除-demo

在连接数据库的基础上deleteResult, err : db.Exec("DELETE FROM user0 WHERE id ?", 1)package main//删除-demoimport ("database/sql""fmt"_ "github.com/go-sql-driver/mysql""log" )func main() {db, err : sql.Open…

人机协作系列(四)AI编程的下一个范式革命——看Factory AI如何重构软件工程?

最近这段时间,我发现一个很有意思的现象:那些曾经对 AI 编程工具持怀疑态度的技术领袖们,态度正在集体转变。就像 Flask 的作者 Armin Ronacher,他之前还说 “不敢授权 AI”,现在却坦言 “愿意将工程主导权交给编程代理…

在javaScript里删除节点以及添加节点

1.在javaScript里删除节点在学习中我们只学到了一种删除DOM节点的方法那就是通过元素的父元素来删除该元素,但后面我查阅资料发现删除节点还有其他方法。1.使用 removeChild() 方法(最常用)我们需要获得元素的父元素,如果不知道可…

贪心算法题解——跳跃游戏【LeetCode】

55. 跳跃游戏 一、算法逻辑(逐步思路) 问题描述: 给定一个非负整数数组 nums,其中 nums[i] 表示从位置 i 最多可以跳跃的步数。 从起点 0 出发,判断是否能够到达最后一个位置。 解题思路: 设一个变量 mx…

复现永恒之蓝

一.打开msf找到永恒之蓝的漏洞直接运行这个漏洞二.查询这个漏洞模块需要配置的参数配置攻击主机的ip三.没有做免杀的话,记得关闭防火墙四.直接运行这里已经显示拿下目标主机五.测试给目标主机添加一个文档六.查看目标主机有没有刚才编写的文档

游戏行业中的恶梦:不断升级的DDoS攻击

近年来,游戏行业快速发展,成为全球娱乐市场的重要组成部分。然而,伴随着这一行业的繁荣,网络安全问题也随之而来。游戏公司面临着一种特殊的威胁:分布式拒绝服务(DDoS)攻击。这种攻击不仅对公司…

2025年自动化工程、物联网与计算机应用国际会议(AEITCA 2025)

2025年自动化工程、物联网与计算机应用国际会议(AEITCA 2025) 2025 International Conference on Automation Engineering, Internet of Things, and Computer Applications一、大会信息会议简称:AEITCA 2025 大会地点:中国西安 审…

Gartner《JavaScript: Top Use Cases, Frameworks and Architecture Constraints》学习心得

《JavaScript: Top Use Cases, Frameworks and Architecture Constraints》是一份面向企业技术决策者、软件架构师与高级工程师的系统性研究笔记。全文以“何时用 JavaScript、如何用好 JavaScript”为主线,从语言特性、运行时差异、适用场景、主流框架、架构约束、生态现状、…

比较vue和react框架

目录 一、基础语法 1.1、模板 vs JSX 1.2、指令 1.2.1、v-for vs Array.map 1.2.2、v-if vs 三元运算符或者&& 1.2.3、v-bind vs 直接在JSX里写{变量} 1.2.4、v-show vs style和className 1.2.5、v-html vs dangerouslySetInnerHTML 1.3、数据绑定 1.4、数据…

插板式系统的“生命线“:EtherCAT分布式供电该如何实现?

在ZIO系列插板式模组系统中,EtherCAT分布式供电如同设备的血液循环网络,其供电稳定性直接决定系统可靠性。本文将从电流计算到电源扩展,为您讲解EtherCAT分布式供电该如何实现。ZIO系列插板式模组的电源介绍ZIO系列插板式I/O模块 是ZLG开发的…

Qwen2-VL:提升视觉语言模型对任意分辨率世界的感知能力

温馨提示: 本篇文章已同步至"AI专题精讲" Qwen2-VL:提升视觉语言模型对任意分辨率世界的感知能力 摘要 我们提出了 Qwen2-VL 系列,这是对先前 Qwen-VL 模型的重大升级,重新定义了视觉处理中传统的预设分辨率方法。Qwe…