構築した地球大気 k 分布テーブルを用いた計算

構築した k 分布テーブルを用いて地球大気の計算を実施する方法を説明する.

k 分布テーブルの準備

構築した k 分布テーブルを配置. 例えば, 上の data_Earth ディレクトリ内に配置する.

$ cd <TOPDIR>/data_Earth
$ cp <somewhere>/kdactblv2_Earth.nc .

計算ディレクトリの準備

$ mkdir practice
$ cd practice
$ mkdir test_Earth_radiation_gen
$ cd test_Earth_radiation_gen

プログラムの準備

$ cp ../../src/main/dcpam_init_data .
$ cp ../../src/main/dcpam_init_data_surface .
$ cp ../../src/main/dcpam_main .

設定ファイルの準備

ダウンロード

書き換え

  • 上でダウンロードした dcpam_E_T21L26.conf 内の 'P8' を 'P4' に書き換える (4 並列実行の場合).
  • dcpam_E_T21L26.conf 内の &dcpam_main_nml の RadModel を変更 (使用する放射モデルの変更).

    &dcpam_main_nml
      ...
      RadModel = 'EarthV3',
      ...
    /
  • dcpam_E_T21L26.conf に以下を追記. KDOptPropNcFN には適切なパスを設定する.

    &rad_Earth_V3_nml
      WaveNumAlbedoSwitch = 3500.0d2,
      KDOptPropNcFN       = "../../../data_Earth/kdactblv2_Earth.nc"
      NCalcInterval = 1,
    /
  • dcpam_E_T21L26.conf 内の &timeset_main_nml の DelTime を変更 (CFD 条件を満たすため).

    &timeset_nml
      ...
      DelTimeValue    = 30.0,
      ...
    /

計算の実行

大気初期値生成

$ mpiexec -n 4 ./dcpam_init_data -N=init_data_E_T21L26.conf

惑星表面初期値生成

$ mpiexec -n 4 ./dcpam_init_data_surface -N=surface_data_E_T21.conf

計算実行

$ mpiexec -n 4 ./dcpam_main -N=dcpam_E_T21L26.conf < /dev/null >& error.log &

終了するまでにはとても時間がかかる.

この放射モデルの DCPAM へのインターフェースルーチンには OpenMP の指示行を入れているため, 放射計算に関しては MPI と OpenMP でのハイブリッド並列で計算できる. 具体的には, DCPAM の MPI が緯度方向に分割するのに対して, 放射モデルインターフェースは分割された緯度帯内の格子点を OpenMP で分割して計算する. したがって, 計算コアを多数利用できる場合には, 実行時に OMP_NUM_THREADS に 1 以上の値を指定して OpenMP での並列計算も行うと良い. ただし, DCPAM の物理過程は OpenMP で並列化されているわけではないため, モデル全体としてハイブリッド並列で計算されているわけではない. (それでも放射計算の計算コストがとても大きいため実行時間は減ることが期待できる.)

計算結果

  • T21L26
    • 上記設定での計算 (放射収支が合っていないため要チューニング) [設定ファイル]
      • 大気上端における放射収支
        • 上向き長波放射フラックス : 234.3 W m-2
        • 下向き短波放射フラックス : 245.0 W m-2
      • 東西平均循環 (積分 3 年目の一カ月平均)
    • チューニングした設定での計算 [設定ファイル]
      • 大気上端における放射収支
        • 上向き長波放射フラックス : 238.8 W m-2
        • 下向き短波放射フラックス : 239.2 W m-2
      • 東西平均循環 (積分 3 年目の一カ月平均)
  • T42L26
    • 上記設定での計算 (放射収支が合っていないため要チューニング) [設定ファイル]
      • 大気上端における放射収支
        • 上向き長波放射フラックス : 233.6 W m-2
        • 下向き短波放射フラックス : 247.1 W m-2
      • 東西平均循環 (積分 3 年目の一カ月平均)
    • チューニングした設定での計算 [設定ファイル (注意: 積分時間を 1 年としてある)]
      • 大気上端における放射収支
        • 上向き長波放射フラックス : 238.6 W m-2
        • 下向き短波放射フラックス : 239.7 W m-2
      • 東西平均循環 (積分 3 年目の一カ月平均)