WRF Version3の導入in2025

領域気象モデルWeather Research&Forecasting model(WRF)のバージョン3を導入します.
2025年現在，使用しているコンパイラによってはデフォルトとは別にフラグを追加する等の手間がかかりますが，少なくともWRFはコンパイルできました.
[WRFv3.9のマニュアル](https://www2.mmm.ucar.edu/wrf/users/docs/user_guide_V3/user_guide_V3.9/contents.html)
## 環境
OS(ディストリビューション):Linux(RHEL9.6)
コンパイラ:gcc(v11.5.0),g++(v11.5.0),gfortran(v11.5.0)

ディレクトリMyWRFv3内に次のような環境を構築します.
```
MyWRFv3
| - WRFV3 (WRF本体)
| - WPSV3 (WPS)
| - WPS_GEOG (地形データ)
| - wrf_dependencies (依存ライブラリ)
| - build_wrf_dependencies.sh(依存ライブラリのインストールスクリプト)
```
## WRF&WPSのソースコードを入手
[WRF Model Users Site](https://www2.mmm.ucar.edu/wrf/users/)の「Download」→ 「[WRF&WPS Sorce Code](https://www2.mmm.ucar.edu/wrf/users/download/get_source.html)」からWRFとWPS及び必要ライブラリの一部を入手します.
以降は登録が必要な作業です.
入手できたら$MyWRFv3内で
- WRF v3.9.1.1(tarファイル)
- WPS v3.9.1(tarファイル)

展開します.
``` bash
$ tar xzvf WRFV3.9.1.1.TAR.gz
$ tar xzvf WPSV3.9.1.TAR.gz
```

## 依存ライブラリの導入
WRF,WPSと同じ階層に用意したwrf_dependenciesディクトリ内へ依存環境を導入します.
```
$ ls -l
total 8
drwxr-xr-x  7 hoge hoge 4096 Aug 18  2017 WPS
drwxr-xr-x 17 hoge hoge 4096 Aug 29  2017 WRFV3
drwxr-xr-x  2 hoge hoge   10 Jan 29 19:24 wrf_dependencies
```
公式(NCAR)の[ユーザーフォーラム](https://forum.mmm.ucar.edu/threads/full-wrf-and-wps-installation-example-gnu.12385/)で紹介されている[インストールスクリプト](https://gist.github.com/islas/b76171591531d3a06e209cd1ff75840c)を実行します.

```
$ cd MyWRFv3
$ sh build_wrf_dependencies.sh
```

次のように環境変数を設定します.
``` .bashrc
export DIR=/DATA/USER/tomita/MyWRFv3/wrf_dependencies
export NETCDF=$DIR/netcdf
export LD_LIBRARY_PATH=$NETCDF/lib:$DIR/grib2/lib
export PATH=$NETCDF/bin:$DIR/mpich/bin:$PATH
export JASPERLIB=$DIR/grib2/lib
export JASPERINC=$DIR/grib2/include
```

## WRFv3のコンパイル
WRFv3のディレクトリ内で
```
$ ./configure
```
をします.
コンパイラ・並列オプションは34(gfortran,dmper)，
ネスティングオプションは1(default)
を選びます.

::: note warn
v4.◯以降，./configureの後に
```
cp share/landread.c.dist share/landread.c
```
を実行する必要がある．
v3では./configure時に具体的なWarningは表示されないが，
これを行わないと実行ファイルが生成されなかった(compileログは未確認)．
:::

:::note warn
gccのあるバージョン(10?)から，fortranの引数の型のエラーが厳しくなった([参考](https://www.gnu.org/software/gcc/gcc-10/porting_to.html))．
これを回避するため，configure.wrfのFCBASEOPTS_NO_Gレコードに```-fallow-argument-mismatch```を追記した.
:::
コンパイルを実行する.
```
$ ./compile em_real >& compile.log
```
コンパイルに成功するとmainディレクトリ下に以下の実行ファイルが生成される.
```
$ ls -lh main/*exe
-rwxr-xr-x 1 hoge hoge 40M Jan 27 21:58 main/ndown.exe
-rwxr-xr-x 1 hoge hoge 37M Jan 27 21:58 main/real.exe
-rwxr-xr-x 1 hoge hoge 36M Jan 27 21:58 main/tc.exe
-rwxr-xr-x 1 hoge hoge 50M Jan 27 21:56 main/wrf.exe
```

## WPSの導入
::: note alert
WPSv3のコンパイルは失敗した.原因は[ここ](https://github.com/wrf-model/WPS/pull/119)や[ここ]()で議論されているエラーだが，WPSv3で解決する方法は未確認．
したがｔWPSv3とWPSv4の両方のコンパイル手順を示す.
:::
### WPSv3のコンパイル
WPSv3ディレクトリ内に移動し，
```
$ ./configure
```
1(gfortran,smparオプション)を選択.
configure.wrfのFFLAGS,F77FLAGSレコードに```-fallow-argument-mismatch```フラグを追記する.

コンパイルを実行
```
$ ./compile em_real >& compile.log
```
失敗した......．
ungrib/src/ngl/g2/intmath.fでエラーが起きているようだ.
同様のエラーが[WPSのgithub](https://github.com/wrf-model/WPS/pull/119)で報告されている.

### WPSv4のコンパイル
WPSv3の代わりにWPSv4.1をコンパイルする．
ソースはgithubから入手する(masterブランチから変更する).
```
$ git clone -b release-v4.1 https://github.com/wrf-model/WPS.git WPSv4.1
```
./configureを実行.
```
$./configure
```
configure.wpsのFFLAGS,F77FLAGSレコードに```-fallow-argument-mismatch```フラグを追記する.
WPSディレクトリ直下にgeogrid.exe,ungrib.exe,metgrid.exeが生成されていれば成功

## おわりに
WPSv4で作ったmet_em_d0*をWRFv3で使えるか，確認が必要.