雲解像モデル deepconv

杉山耕一朗, 中島健介
deepconv 開発グループ
2021 年 3 月 29 日
地球流体データ解析・数値計算ワークショップdeepconv• 地球流体電脳倶楽部で開発している、地球も含めた惑星大気への応用を想定した雲解像モデル‒ 金星、火星、木星、…

• 直線直交座標系の格子点モデル‒ 準圧縮方程式系、等方格子、地形なし、水平周期境界• 現在，地形に沿った座標系へ拡張中．

• 階層モデル群の１つとして整備‒ コード書法は dcmodel コーディングルールに沿う‒ I/O は gtool5，可視化は gphys• コードネーム：arare (v.6)‒ 杉山がメインで開発しているソース

定式化• 状態方程式• 速度の式• 圧力の式• 熱の式• 凝縮成分の保存式（蒸気，雲，雨成分）

計算例：土星・天王星（２Ｄ）• ３種類の雲の生成を考慮した、熱強制固定計算– 1024 km x 500 / 650 km– dx = dz = 2km

SaturnUranus

0.1

NH30.1NH3NH4SH
H2O200.1

100NH4SH
H2O0.1H2O LCL

20CH4100

H2O LCL計算例：金星（3D）
x-z 断面(x10 km)

6鉛直速度

2x-y 断面 (高度 51 km)(x10 km)鉛直速度24(x10 km)

6-2
温位偏差

(x10 km)0.05-2(x10 km)(x10 km)

4-0.05(x10 km)

温位偏差0.05• 雲層（高度45〜55km）の対流-0.05‒ 128 km x 128 km x 30 km、(x10 km)‒ dx=dy=200 m、dz=125 m 杉山、他 2015：気象学会秋季大会

火星計算（2D・3D）
deepconvz[km]Odaka et al., 2001
10kmx[km]• Odaka et al. (2001)の加熱分布と地面温度の日変化を与えた計算‒ SCALE 火星計算と同じ
設定x[km]• 50 km x 20 km• dx = dz = 100m
赤線 : deepconv
黒線 : Odaka et al.(2001)(w2)1/2 (LT=14)(Θ2)1/2 (LT=14)

180

618

時刻

30z[km]z [km]

速度[m/s](u2)1/2 (z=50m)

速度[m/s]

温位[K] 村橋、2016

山岳波実験
• 白濱さん＠神戸大deepconv/arare6 的書法• SPMODEL を模倣 （SPMODEL チュートリアル参照）• 格子点位置を合わせて計算→ xz̲dx̲pz(pz̲dx̲xz(xz̲ZetaN))→ xz̲dx̲pz( pz̲VelX)

pz

xzxr• 位置を変更するには平均操作する→ xz̲pz(pz̲dx̲xz(xz̲ZetaN))

pz_VelX (水平速度）
xr_VelZ (鉛直速度)
xz_PotTemp (温位)deepconv/arare6 的書法

実習

公開ページ (http://www.gfd-dennou.org/library/deepconv)

ごくらく deepconv
ソースのコンパイル• GitHub から git clone する$ git clone https://github.com/gfd-dennou-club/Dennoudeepconv-arare6.git(1 行で書く)• configure & make$ cd Dennou-deepconv-arare6$ export FC=gt5frt$ ./configure$ make• Dennou-deepconv-arare6/bin 以下に実行ファイルが作られる$ ls binarere (実行用)

arare̲init-data (初期値生成用)

ごくらく deepconv• テストプログラムを格納したディレクトリに移動$ cd exp̲setup̲files• テスト毎にディレクトリが用意されている$ ls
01̲sound-wave
02̲advection
02̲advection-Qmix
03̲gravity-wave
04̲density-current
05̲warm-bubble
06̲warm-bubble-kw1978（音波）（移流その１）（移流その２）（内部重力波）（重力流）（サーマルその１）（サーマルその２）

ごくらく deepconv• ここでは「サーマル実験Ⅰ」実験を行う$ cd 05̲warm-bubble• スクリプトを実行$ ./testrun.rb…
（しばらくお待ちください）• 計算が終了すると、いくつかの netCDF ファイルと画像ファイルが作成される$ ls$ qiv (画像ファイル名)ごくらく deepconv•

スクリプトで実行していた計算を手で実行$ cd ../$ mkdir test
$ cd test•

実行ファイル、NAMELIST ファイルをコピー$ cp ../../bin/arare* ./$ cp ../05̲warm-bubble/*.conf ./•初期値を作成$ ./arare̲init-data ‒N=warm-bubble̲160x1x80̲Center4̲Center2̲0.0.conf

•

計算を実行
$ ./arare ‒N=warm-bubble̲160x1x80̲Center4̲Center2̲0.0.conf•

計算が終了すると、いくつかの netCDF ファイルが作成される$ ls（お手元で確認してください）ごくらく deepconv• 出力は netCDF 形式. gphys などで可視化.

ごくらく deepconv• 描画（温位偏差）$ gpview warm-bubble̲160x1x80
̲Center4̲Center2̲0.0̲PTemp.nc@PTemp,
y=0,t=1020• 描画（鉛直流）$ gpview warm-bubble̲160x1x80
̲Center4̲Center2̲0.0̲VelZ.nc@VelZ,
y=0,t=1020

練習問題 (設定の変更)• 積分時間の変更• 他の物理量の出力• 数値拡散係数を変更 (1.0d-2へ)deepconvで並列計算

VirtualBox で VM に割り当てる CPU を複数にする必要あり

ソースのコンパイル• GitHub から git clone する$ git clone https://github.com/gfd-dennou-club/Dennou-deepconv-arare6.git• configure$ cd Dennou-deepconv-arare6$ export FC=gt5frt.mpi$ ./configure --with-mpi• make$ lv Config.mk(CPPFLAGS=-DLIB̲MPI が設定されていることを確認)$ make• Dennou-deepconv-arare6/bin 以下に実行ファイルが作られる$ ls binarere (実行用)

arare̲init-data (初期値生成用)

deepconvで並列計算

VirtualBox で VM に割り当てる CPU を複数にする必要あり• 先ほどの「サーマル実験Ⅰ」実験の設定ファイルを利用‒ 並列数の設定(x, y 方向にのみ分割可)• 計算実行‒ 初期値の作成&gridset_nml
xdim = 160
ydim = 1
zdim = 80
xsub = 2/!x方向の格子点数!y方向の格子点数!z方向の格子点数!x方向の分割数 (MPI)$ mpiexec ‒n 2 ./arare̲init-data‒N=warm-bubble̲160x1x80̲Center4̲Center2̲0.0.conf‒ 計算の実行$ mpiexec ‒n 2 ./arare‒N=warm-bubble̲160x1x80̲Center4̲Center2̲0.0.conf• 描画$ gpview warm-bubble̲160x1x80̲Center4̲Center2̲0.0̲Ptemp̲rank*.nc@Ptemp,y=0 ¥--anim t

おわりに• 自分で NAMELIST ファイルを編集することで、さまざまな実験ができます• くわしくは以下のページを参照‒ http://www.gfd-dennou.org/library/deepconv/

補足• ごくらく deepconv は, 「気象庁 数値予報課報告・別冊 第60号 次世代非静力学モデルasuca」を意識‒ 2.6.6 節‒ http://www.jma.go.jp/jma/kishou/books/nwpreport/nwpreport.
html