WSL2 の Ubuntu22.04上に WRF(Weather Research and Forecasting Model) の環境を構築

# はじめに
以前、[WSL2のUbuntu20.04上にWRFの環境を構築](https://qiita.com/TrtlGard/items/845ba53389e804e41d6e) という記事を書きましたが１年以上が経過してしまい、同じ方法では構築できない状況になっていますので、現在の状況で構築する方法について記載します。
今回は差分を中心に記載します。

# 現時点(2024.1.4)の状況と前回との差分
* WRFを実行するプログラムのビルド(構築)はUbuntu22と現時点の最新(WRF4.5.1関連)のインストールシェルで問題なく実行できる
* LinuxのGUI環境（リモートデスクトップ接続）が自分のパソコン上ではどうしてもうまくいかない
** 今回はあきらめて、コマンドライン環境での実行とする
* namelist.wpsなどを作成する WRFDomainWizard がダウンロードできなくなった
** 今回はデフォルトのサンプルを使うのみとする
* GUIが使えないためLinux上で GrADS を動かせない
** 今回は Windowsで動作する OpenGrADS を活用して確認する
* 気象データ(FNL DATA)のダウンロードは今回使う範囲についてはユーザ登録は不要になった

# 構築手順
1.WSL2とUbuntu22.04 インストール　（と ssh 設定）
* WSL2, Ubuntu22.04, sshd の構築

2.WRFプログラムインストール
* WPS関連(geogrid.exe, ungrib.exe, metgrid.exeなど)
* WRF関連(real.exe, wrf.exeなど)
* 地図データのダウンロード
* ARWpost.exe など

3.気象データダウンロード
* FNL DATA のダウンロード

4.WRF実行
* namelist.wps, namelist.input 作成
* geogrid.exe, ungrib.exe, metgrid.exe の実行
* real.exe, wrf.exe の実行

5.OpenGrADSのインストールとWRF結果確認
* Windowsで実行可能な OpenGrADS の構築と実行

# 1.　WSL2とUbuntu22.04 インストール　（と ssh 設定）
以前の記事などを参考にWSL2とUbuntuを構築します
自分は、Windows10, Ubuntu22.04.3 LTS を構築しました
* 構築後に Ubuntu環境をアップデートしておきます
```
sudo apt update && sudo apt -y upgrade
```

次に、このままWSL2のコマンドラインで実行しても構わないと思いますが、実行結果のログなどを取得できるように自分は SSH環境の構築と Tera Term をインストールしました。
* SSH環境の構築（WSL2のコマンドラインにて）
```
sudo apt install ssh -y
sudo service ssh start
```
この後は、Tera Term で接続してログを取得しながら実行しました

# 2.WRFプログラムインストール
以前の記事と同様に、
 https://github.com/bakamotokatas/WRF-Install-Script
から WRF関連プログラムのインストールシェルをダウンロードして実行します。以前と異なる点としては、Windows上のブラウザを用いてダウンロードします。ブラウザが異なりますがダウンロード操作自体は変わりませんので以前の記事を参考にダウンロードしてください。
自分は WRF4.5.1_Install.bash をダウンロードしました。

ダウンロードは Windows のフォルダに保存されますので、これをLinux環境にコピーします。
* エクスプローラを開き、\\wsl$ と入力すると Ubuntu22.04 が現れますので、/home/ユーザ名(自分はwrfuser)　に移動
* Downloadsフォルダを作成して、先ほどダウンロードした WRF4.5.1_Install.bash を移動

次にLinux上で実行します（自分の環境では30分くらいかかりました）
```
cd ~/Downloads
bash WRF4.5.1_Install.bash
```
これで
* WPS関連(geogrid.exe, ungrib.exe, metgrid.exeなど)
* WRF関連(real.exe, wrf.exeなど)
* 地図データのダウンロード

まで完了しています

次に ARWpost をインストールします。以前と同様に https://gist.github.com/jamal919/5498b868d34d5ec3920f306aaae7460a を参考にしてインストールシェルプログラムを作成します。以前からの修正点は
* WRFDomainWizard はダウンロードできなくなったので削除
* ARWpost のビルドでエラーが出るため、gfortranのコンパイルオプションを追加
* 削除する一時ファイル名を変更
などで下記の内容になります。これを Linux上であれば nanoコマンドなどで、Windows上であれば使い慣れたテキストエディタで ~/Downloads 配下に install_WRF_Others.bash などのファイル名で作成します(Windowsで作成する場合は改行コードが LF のみになるように作成します)

```
#!/bin/bash
# From install_wrf.sh
##  Download and install required library and data files for WRF.
##  License: LGPL
##  Jamal Khan <jamal.khan@legos.obs-mip.fr>

# grads install
sudo apt update
sudo apt -y upgrade
sudo apt -y install grads unzip default-jre

# ARWpost install
cd ~/Build_WRF
wget -c https://www2.mmm.ucar.edu/wrf/src/ARWpost_V3.tar.gz
tar -xvzf ARWpost_V3.tar.gz -C ~/Build_WRF
cd ~/Build_WRF/ARWpost
cd arch
cp Config.pl Config.pl_backup
sed -i '79s/.*/  $response = 3 ;/' Config.pl
cd ..
./clean
sed -i -e 's/-lnetcdf/-lnetcdff -lnetcdf/g' ~/Build_WRF/ARWpost/src/Makefile
./configure #3
sed -i -e 's/-C -P/-P/g' ~/Build_WRF/ARWpost/configure.arwp
sed -i -e 's/-frecord-marker=4/-frecord-marker=4 -fallow-argument-mismatch/' ~/Build_WRF/ARWpost/configure.arwp
./compile

# remove download file
cd ~/Build_WRF
rm geog_high_res_mandatory.tar.gz WRFV4.5.1.tar.gz WPSV4.5.TAR.gz ARWpost_V3.tar.gz

# rename WRF directory
cd ~/
mv Build_WRF WRF
ln -s WRF Build_WRF
```
* 作成したファイルでインストールを実行します
```
cd ~/Downloads
bash install_WRF_Others.bash
```

# 3.気象データダウンロード
次に気象データ(FNL DATA)をダウンロードします。以前とは異なりユーザ登録が不要になりました。その他の操作はほぼ同様ですので、以前の記事にてユーザ登録部分を飛ばしてその他の部分を参考にダウンロードしてください。今回は 2023年8月 のデータをダウンロードしてみました。主な流れは以下になります。
*　Windows上 のブラウザにて　https://rda.ucar.edu/datasets/ds083.2/ から2023.8月のファイルを指定して　rda-download.csh　をダウンロード
*　エクスプローラで wsl の Downloads フォルダにコピー
*　下記の通り、Linux上にてダウンロードを実行
```
cd ~/WRF
mkdir FNL_DATA
cd FNL_DAT
csh ~/Downloads/rda-download.csh
```

# 4.WRF実行
環境構築ができているか確認するために実行してみます
* namelist.wps, namelist.input 作成
もともと入っている namelist.wps などを活用して実行してみます。日付だけ変更します。
```
cd WRF/WPS-4.5
cp -p namelist.wps namelist.wps.bak
#nanoコマンドなどで 2019-09 をすべて 2023-08 に変えます
nano namelist.wps
```
* geogrid.exe, ungrib.exe, metgrid.exe の実行
```
cd ~/WRF/WPS-4.5/
./link_grib.csh ../FNL_DATA/fnl_202308
./geogrid.exe
ln -sf ungrib/Variable_Tables/Vtable.GFS Vtable
./ungrib.exe
./metgrid.exe
```
* real.exe, wrf.exe の実行

このあと WRF にて分析するわけですが、既存の namelist.input の日付を 2023年8月 に変えただけで実行すると自分の環境では24時間以上かかりそうでした。4時間くらい実行してみましたがまだまだ途中までのファイルしかできなかったため諦めました。

そこで今回は構築した環境での実行確認ということで割り切り、分析対象時間を短くします。
```
cd ../WRF-4.5.1-ARW/run
cp -p namelist.input namelist.input.bak
#nanoコマンドなどで start をすべて 2023.08.04.12:00 に、end をすべて 2023.08.04 18:00 とします
nano namelist.input
```
続いて実行です。実行結果として ERROR が出てしまったのですが、分析対象期間が中途半端なためなのか他に理由があるのかわかりません。しかし解析結果ファイル(wrfout_d0x_....)はできていましたので先に進めます。
```
ln -s ~/WRF/WPS-4.5/met_*.nc
./real.exe
# wrf.exe の実行にはかなり時間がかかります。今回の設定の場合、自分の環境では２時間半かかりました。
./wrf.exe
```
* ARWpost による変換

結果を可視化するために ARWpost で変換します。これも詳細な内容はよくわかっていないため、環境の確認と割り切り、一部の変換にとどめます
```
cd ~/WRF/ARWpost
ln -s ~/WRF/WRF-4.5.1-ARW/run/wrfout* .
cp -p namelist.ARWpost namelist.ARWpot.bak
# nanoコマンドなどで namelist.ARWpost の input_root_name を ./wrfout_d01_2023-08-04_12:00:00' に変えます
nano namelist.ARWpost
# ARWpost を実行します
./ARWpost.exe
```
実行時にワーニングもあるようですが、無事に test.ctl, test.dat という結果ファイルが生成されます。次のステップで OpenGrADS によって描画してみます。


# 5.OpenGrADSのインストールとWRF結果確認
* Windowsで実行可能な OpenGrADS の構築と実行

　https://note.com/nooooon_met/n/n76da790f48a1
　http://macroscope.world.coocan.jp/ja/edu/compex/grads_install.html
を参考にさせていただきました
Windowsのブラウザにて
https://sourceforge.net/projects/opengrads/files/grads2/2.2.1.oga.1/Windows/
にアクセスして、
grads-2.2.1.oga.1-win32_superpack.exe
をダウンロードして実行し、Windows上にインストールします。

これでデスクトップに OpenGrADS というショートカットができますのでこれを実行すると、GrADSのコマンド画面と図を表示するWindowの二つが開きます。

実行にあたって、エクスプローラにて \\wsl$ から /home/(ユーザ名)/WRF/ARWpost 配下の test.ctl, test.dat の二つのファイルを C:\OpenGrADS-2.2\Contents\Resources\SampleDatasets にコピーします。

GrADSコマンド画面にて例として以下のように入力すると分析結果の一つが表示されます。
```
Landscape mode? ('n' for portrait):    ← そのままEnterキー
・・・
ga-> open test
・・・
ga-> set t 1
・・・
ga-> c
ga-> d tc
```
![opengrads.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527633/e5c2bcd4-0c80-f4b5-3a0d-ec855d809c21.png)

# おわりに
以上にて、WRF環境の構築及び実行の確認ができました。WRFに取り組まれる方のご参考になれば幸いです。