#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

トップ   編集 差分 添付 複製 名前変更 リロード   新規 検索 最終更新   ヘルプ   最終更新のRSS