【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
英文地址,請注明出處:http://en.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…