目錄
- 在服務器上下載并解壓 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
變量 | 說明 |
---|---|
JASPERLIB | JasPer 圖像壓縮庫的 lib 路徑,用于支持 GRIB2 編碼/解碼 |
JASPERINC | JasPer 的頭文件路徑(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