#author("2025-05-02T11:42:02+09:00","external:moriat","moriat") #author("2025-05-02T11:42:39+09:00","external:moriat","moriat") #topicpath ** WRF4.7.0 のインストール [#e8e45a41] *** 環境と導入準備 [#k64ee36c] - 環境 -- OS : Debian GNU/Linux 12 (bookworm) -- ハードウェア |品目| 仕様・諸元|h |CPU | AMD Ryzen 9 3950X 16-Core, 32スレッド | |メモリ| 64GB| - 準備 -- 手動でインストールしておくもの --- Debian パッケージ~ ※ 多くはスクリプトが下で述べるスクリプトがインストールしてくれるが、wget, python3 は漏れていた。 sudo apt install wget git python3 *** ダウンロードとインストール [#sc786358] ※ 近年のバージョンはユーザー登録もいらない。インストールスクリプトからインストールできる。~ ※ 以下の手順では、gfortran で、最適化オプション無しでMPIでインストールする。 - インストールスクリプト~ -- 特徴~ --- 利便性:WRFのコンパイル(実行形式への変換)に必要なパッケージなどを取得しながらコンパイルしてくれるので、初回には便利。 --- オプション:~ □ OpenMPI による分散処理 (dmpar)~ ※ これを選択してあるので2次元のサンプルプログラムは動かない。~ □ GNUのコンパイラを使用(gfortran, gcc) -- 取得 git clone https://github.com/bakamotokatas/WRF-Install-Script/tree/master cd WRF-Install-Script -- 編集~ 上で得られた WRF-Install-Script の中の最新のスクリプト(2025-04-30 (水) 13:43:12 時点で WRF4.6.1_Install.bash)を編集する。 |編集箇所 | 編集前 | 編集後|備考 |h |バージョン | WRFversion="4.6.1" | WRFversion="4.7.0"| | |パス| 記述なし | PATH=${PATH}:/sbin | logsave が /sbin にあるため。&br;上のバージョン設定の次の行でよい。 | |置き場所 | cd ~ | cd ディレクトリ名 | ホームディレクトリ(~/) 以外に置きたい場合。&br;ディレクトリは作っておく| |ディレクトリ名| mkdir Build_WRF | mkdir WRF4.7 | 置きたい場所の中に作るディレクトリ名。&br;この中に全部入る。&br;スクリプトが勝手にディレクトリを作る| |〃| cd Build_WRF | cd WRF4.7 | | -- 実行~ bash WRF4.6.1_Install.bash *** 理想化実験のサンプルの実行(傾圧不安定波) [#m026f18c] - 準備~ -- オプションの選択~ ※ インストールスクリプトを実行したあとであれば、以下は実行しない。~ ※ ./configure で、34 と 1 が選択されて既にコンパイルしていたなら、その場合も実行しない。 ./clean -a ./configure 34(dmpar, GNU) を選択し、その後、1 (basic) を選択する。インストールスクリプトと同じ設定になる。~ ~ -- コンパイル(実行形式への変換):~ WRF-4.7.0-ARW/ 以下に compile というスクリプトがある。これをオプション付きで実行する。~ ※ em_b_wave は、test ディレクトリに同名のディレクトリがある。傾圧不安定のテストケース~ ※ -j 8 は、コンパイル時の並列処理の数(多分) cd WRF-4.7.0-ARW ./compile -j 8 em_b_wave ~ -- 前処理~ ※ 時間はかからないので並列化することもないが、並列化して、8コアで実行。 cd test/em_b_wave mpirun -np 8 ./ideal.exe ~ - 実行と表示 -- 実行(シングルコア) $ time ./wrf.exe starting wrf task 0 of 1 real 1m24.371s user 1m9.118s sys 0m14.196s ~ -- 実行(8コア) time mpirun -np 8 ./wrf.exe $ time mpirun -np 8 ./wrf.exe starting wrf task 4 of 8 starting wrf task 5 of 8 ... starting wrf task 3 of 8 starting wrf task 2 of 8 real 0m30.081s user 3m35.300s sys 0m20.945s ※ 8コアで3倍ぐらい。~ ~ -- 実行(16コア) $ time mpirun -np 16 ./wrf.exe starting wrf task 11 of 16 starting wrf task 12 of 16 ... starting wrf task 2 of 16 starting wrf task 6 of 16 real 0m49.081s user 11m55.201s sys 1m0.872s ※ 16コアでかえって遅くなる例。~ ~ -- 表示~ 計算結果は、netCDF という形式で出力されている。これをとりあえず表示するには、ncview が便利である。 ncview wrfout_d01_0001-01-01_00\:00\:00 *** 理想化実験のサンプルの実行(2次元のスコールライン) [#t2b74ac3] ※ 上述のように、インストールスクリプトの設定では2次元のプログラムは動かない。 - 準備 -- オプションの選択~ ※ あらかじめ、./configure の 32 と 0 とが選択されていれば実行する必要ない。 ./clean -a ./configure 32(serial, GNU) を選択し、その後、0 (nesting なし) を選択する。 32(serial, GNU) を選択し、その後、0 (nesting なし) を選択する。~ ~ -- コンパイル time ./compile -j 20 em_squall2d_x ※ ./clean -a, ./configure を実行してからこれを行うと、時間がかかる。~ ※ -j 20 は、20まで並列処理をすることを意味する。この場合のコンパイル時間は次の通り。 real 9m8.491s user 26m29.784s sys 0m56.651s - 実行と表示 -- 前処理 cd test/em_squall2d_x ./ideal.exe -- 実行~ time ./wrf.exe -- 表示 ncview wrfout_d01_0001-01-01_00\:00\:00