WSL2 の Ubuntu20.04上に WRF の環境を構築　その３　WRFの実行

# 更新
2024.1.4現在の情報を[別記事](https://qiita.com/TrtlGard/items/6ff6fb713af77546dc69)に書きました。本記事と合わせて参照ください。

# はじめに
本日は先日から記載しているWRF環境構築手順の「その３（たぶん最終回）」で、いよいよWRFの実行になります
過去記事（その１）： [WSL2 の Ubuntu20.04上に WRF(Weather Research and Forecasting Model) の環境を構築]( https://qiita.com/TrtlGard/items/845ba53389e804e41d6e)
過去記事（その２）： [WSL2 の Ubuntu20.04上に WRF の環境を構築　その２　気象データ(FNLデータ)ダウンロード]( https://qiita.com/TrtlGard/items/5e87f89cb030845e035a)

【2022.8.4　更新】記事その１で利用した新しいバージョンの一括インストールスクリプトによりディレクトリ名が変更になったため、関連する箇所を修正しました（内容的には変更ありません）


# 目次
1.環境と構築のポイント　　　　　　　（[過去記事その１]( https://qiita.com/TrtlGard/items/845ba53389e804e41d6e)参照）
2.WSL2とUbuntu20.04インストール　　（[過去記事その１]( https://qiita.com/TrtlGard/items/845ba53389e804e41d6e)参照）
3.GUI環境（RDP）設定　　　　　　　 （[過去記事その１]( https://qiita.com/TrtlGard/items/845ba53389e804e41d6e)参照）
4.WRFプログラムインストール　　　　（[過去記事その１]( https://qiita.com/TrtlGard/items/845ba53389e804e41d6e)参照）
5.気象データダウンロード　　　　 　  （[過去記事その２]( https://qiita.com/TrtlGard/items/5e87f89cb030845e035a)参照）
6.WRF実行　　　　　　　　　　　　　　★本日の記載内容

## 6.　WRF実行
WRFの実行・表示は以下の手順で行います

|実行コマンド|入力ファイル|出力ファイル|実行方法|
|---|---|---|---|
|geogrid.exe|namelist.wps, 地形データ|geo_*.nc | 手動または WRFDomainWizard |
|ungrib.exe|namelist.wps, 気象データ|FILE:20xx-xx-xx_xx | 手動または WRFDomainWizard |
|metgrid.exe|namelist.wps, geo_*.nc, FILE:20xx-xx-xx_xx |met_*.nc | 手動または WRFDomainWizard |
|real.exe|namelist.input, met_*.nc|wrfinput_* , wrfbdy_*, namelist.output | 手動 |
|wrf.exe|namelist.input, wrfinput_* , wrfbdy_*| wrfout_*_20xx-xx-xx_xx:xx:xx| 手動 |
|ARWpost.exe|namelist.ARWpost, wrfout_* |test.dat, test.ctl | 手動 |
|grads|test.dat, test.ctl|（画面に結果を表示） | 手動 |

WRFDomainWizard についての補足

* WPSプログラム(geogrid.exe, ungrib.exe, metgrid.exe) を画面インタフェースで操作できる WRFDomainWizard をここでは使います
* WRFDomainWizard は https://esrl.noaa.gov/gsd/wrfportal/DomainWizard.html から提供されていて、今回活用させていただいた一括インストールシェルプログラムにてダウンロード＆インストールしています
* ただし、このサイトを見てみると 2013年から更新されていないようです。とはいえ現時点(2022.2)の最新WPSでも実行できました（自分が実行した範囲で）
* また、このサイトを見ると WRF Portal というものもあるようで、WRF も画面インタフェースで操作するツールがあるようです。これも 2013年から更新されていません。まだ使ったことがないのでここでは使わずに、WRFについては手動で実行します。

### WRFDomainWizard実行　（WPSプログラム：geogrid.exe, ungrib.exe, metgrid.exe の実行）
* まず、実行に際して必要になった、Domainsディレクトリの作成、greenfracディレクトリのシンボリックリンク作成を行いました（greenfracを作成しないと実行時にエラーが出たため）
* Domainsディレクトリの作成場所の記載が誤っていたため、 cd .. を追記しました(2022.11.23)

```
cd ~/WRF/WPS_GEOG
ln -s greenfrac_fpar_modis/ greenfrac
cd ..
mkdir Domains
```
* Ubuntu上の Terminal Emulator で WRFDomainWizard を実行します

```
cd ~/WRF/WRFDomainWizard
./run_DomainWizard
```

* それぞれ PATH を設定します。それぞれの入力値の右の ... をクリックして設定します
 * WPS Programs : /home/wrfuser/WRF/WPS-4.4
 * Geography    : /home/wrfuser/WRF/WPS_GEOG
 * Domains      : /home/wrfuser/WRF/Domains
![DomainWizard01a1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527633/cf7493ae-a177-66da-8129-38d072d800cb.gif)


* New Domain を選択したまま Next をクリック
![DomainWizard02a.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527633/469e1de5-497f-2e01-f1ac-6986c846103c.gif)

* 新しいドメイン名（ここでは JapanAll01 とした）と説明を入れて Next をクリック
![DomainWizard03a.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527633/5b06dc98-faaf-76b9-30c9-9546d29877d0.gif)

* 地図が表れてくるので、まず日本の範囲を選択します。欧米中心の地図は久しぶりに見ました。日本はずっと右のほうですね。まさに極東(Far East)です
![DomainWizard04a.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527633/735eb4e1-36f4-286e-5a20-a7677e8cc808.gif)

* マウスポインタを操作して、日本が入るように範囲を選択します
![DomainWizard05.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527633/da4f4956-d31a-89a5-8732-3e219aa16609.gif)

* 地図の type として Lambert Conformal を選択して、Update Map をクリック。これで日本地図が拡大されます。
![DomainWizard05a.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527633/b187f510-b3ec-c569-510a-89c9f79d7123.gif)


* Geographic data resolution を 30s にして、Next をクリックします。 10mのままにするとこの後の作業でデータがないというエラーになるためです。
![DomainWizard06a.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527633/eabfe4bc-0ee5-9f71-f24a-5474b7871f07.gif)

* namelist.wps, namelist.input の各種パラメータを設定します。ここでは、2022.1.6 12:00 と 18:00 のデータ分析を行う設定をします。東京が大雪だった日です。run_hours = 6 (時間), start_year ～ end_second を設定しました
![DomainWizard07.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527633/9f7d19af-77dd-a753-81c6-6fa0e2011f9d.gif)

* e_vert, num_metgrid_levels も変更しました。初期値のままだと WRF の実行時にエラーになったためです。num_metgrid_levels は ncdump -c met_em_・・・.nc | grep num_metgrid_levels で見ることができました。これは一度 geogrid.exe, ungrib.exe, metgrid.exe まで実行してできたファイルを見たものです。(https://qiita.com/7of9/items/f70a9114ccae31040c79) を参考にさせていただきました。e_vert はよくわからないのですが、他で動いていた値にしてみました。
![DomainWizard09.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527633/43560481-5365-2f5b-41ad-c362509ec716.gif)

* ここで、Validate をクリックして確認してみたところ、time_step が大きすぎると出ましたので、100に減らしたところエラーは出なくなりました。そして Next をクリックします。
![DomainWizard21a.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527633/1bd906a1-d3dc-8ed2-27b5-7472f8b27413.gif)
![DomainWizard22a.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527633/2c0b2edd-62f4-4456-5679-1a0662b988cc.gif)


* GRIBデータ(FNLデータ) のディレクトリを設定します（~/WRF/FNL_DATA)

![DomainWizard10a.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527633/3c057fd6-dff1-9163-c34f-3f05d17b4316.gif)
![DomainWizard11a.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527633/af49bfa3-7293-a59f-7503-eb4b8abf3d86.gif)

* FNLデータを選択します。2022.1.6 12:00 と 18:00 のファイルを選択して Add にて追加しました
![DomainWizard12a.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527633/5904c4ae-bf29-8873-80da-fb76d52910b6.gif)


* 時刻を設定
![DomainWizard13a1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527633/cd6391d9-e594-888d-b65e-e957071f7f9a.gif)


* これで各プログラムを実行する準備が整いました。まず geogrid をクリックして実行します
![DomainWizard15a.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527633/ab50090f-fb31-666e-a360-9b78847dfd6a.gif)

* 次に ungrib を実行します
![DomainWizard16a.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527633/eaf87bd8-6bc2-48a1-5a97-a828ed1c444d.gif)

* そして metgrid を実行します
![DomainWizard17a.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527633/b210c6c8-7bf1-3b54-f6af-d9d4ad520451.gif)

* Next をクリックすると Visualize NetCDF に移りますが、すみませんがこのページはよくわかりません。Exit をクリックして WRFDomainWizard での作業を終えます
![DomainWizard18.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527633/c3dde5ce-90c6-88ea-2a64-a63ce729f372.gif)

* metgrid の結果と namelist.input が、~/WRF/Domains/JapanAll01 配下にできています


### WRF (real.exe, wrf.exe) の実行

* ここからはコマンドラインで実行していきます。実行は各種ファイル等が存在する ~/WRF/WRF-4.4-ARW/run/ にて実行します。まず、上記で作成した namelist.input, met*.nc をこのディレクトリにシンボリックリンクして、real.exe, wrf.exe の順に実行します。終了すると、この場合は wrfout_d01_2022-01-06_12:00:00 などのファイルが作成されます 

```
cd ~/WRF/WRF-4.4-ARW/run
mv namelist.input namelist.input.bak
ln -s ~/WRF/Domains/JapanAll01/namelist.input .
ln -s ~/WRF/Domains/JapanAll01/met_*.nc .
./real.exe
./wrf.exe
```

### ARWpost による変換

* wrf.exe の結果ファイルを GrADS ツールで表示できるように ARWpost で変換します。実行は ARWpost.exe が存在する ~/WRF/ARWpost/ にて実行します。wrf.exe で作成した wrfout・・・00:00 ファイルをシンボリックリンクし、namelist.ARWpost のバックアップを取って、編集します

```
cd ~/WRF/ARWpost
ln -s ~/WRF/WRF-4.4-ARW/run/wrfout_d01_2022-01-06_12\:00\:00 .
cp -p namelist.ARWpost namelist.ARWpost.bak
gedit namelist.ARWpost
```

* namelist.ARWpost は、 start_date, end_date, interval_seconds, input_root_name を編集します

![DomainWizard23a.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527633/d244f3ce-de45-017e-296d-f57b1e300346.gif)


* ARWpost.exe を実行することで test.ctl, test.dat が作成されます。 test という名称はnamelist.ARWpost の output_root_name にて指定しています

```
cd ~/WRF/ARWpost
./ARWpost.exe

・・・
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!  Successful completion of ARWpost  !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
　　などと出力されて終了です
```

### GrADS ツールにて結果を表示します

* いよいよ結果の表示です。GrADS を用います。~/WRF/ARWpost ディレクトリで、grads を実行します。　Landscape(横長) mode か portrait(縦長) mode か聞かれるので、横長でよければそのまま Enterキーを押下すると、GrADSのWindowが開きます。Terminal画面とGrADS両方の画面が見えるように配置して、Terminal画面にて gradsのコマンドを打つことでいろいろな画面を表示できます。

```
cd ~/WRF/ARWpost
grads
・・・
Landscape mode? ('n' for portrait):　　← y　かそのまま Enterキーで横長モード
・・・
ga->　　←　GrADSのWindowが開いて、GrADS のコマンド入力待ちになります
```

![DomainWizard24a.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527633/9d7e8e59-263c-298d-88fe-3b94e01b9ac3.gif)


* GrADS のコマンドの主なものを紹介します

```
 ga-> open test　　← test.dat, test.ctl のデータを開く
 ga-> q file 1　←表示できるキー値などを見ることができる
 ga-> d tc      ←キー値 tc を指定して摂氏温度の図がGrADS画面に表示される
 ga-> set t 2   ←２番目の時刻のデータに変更
 ga-> c         ←GrADS画面をクリア
 ga-> d tc      ←２番目の時刻の摂氏温度の図が表示される
 ga-> quit      ←GrADSを終了します
```

* 一連の流れをスクリプトファイルとして作成して実行することもできます。下記は test データを開き、一つ目の時刻のデータを指定、画面をクリア、摂氏温度の図を表示、１秒間スリープして、画面をクリア、二つ目の時刻のデータを指定、摂氏温度の図を表示、という流れのスクリプトです。GrADSのコマンド入力のところで、 run test.gs とすることで実行できます。

```
cd ~/WRF/ARWpost
gedit test.gs
```
``` test.gs
'open test'
'set t 1'
'c'
'd tc'
'!sleep 1.0'
'c'
'set t 2'
'd tc'
```
```
 ga-> run test.gs
```
![DomainWizard27a.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2527633/75ef393d-eaf8-1da4-f03b-9d3676523c78.gif)

* 上記スクリプトにて、2022.1.6 12:00 の摂氏温度分布から 18:00 の摂氏温度分布に切り替わります。少し動きが見えて面白いですが、これで何が分析できるのかは私にはわかっておりません・・・（汗

----

* 以上、３回に分けて WRFおよび必要なファイルのインストールから実行方法を紹介しました

* 私は気象については素人なのでごく簡単なデータでのWRF実行と一部の画面表示しかしておりませんが、なんらかもっと高度な分析・表示のための参考になりましたら幸いです。また間違い等ありましたらコメントをお願いいたします。