地球の実験を行う方法を説明します.
この計算には以下の物理過程を用いています.
本実験では, 海表面温度, 地面特性, 海表面密度, オゾン分布のデータが必要です. したがって, 実験の実行は以下の 4 つのステップで行います.
ここでは, practice/Earth-exp ディレクトリで実験を行うことにします. 以下のように practice/Earth-exp ディレクトリを作成し, ディレクトリに 移動してください.
$ cd practice $ mkdir Earth-exp $ cd Earth-exp
次に, このディレクトリに実行ファイルと設定ファイルをコピーします.
$ cp ../../src/main/dcpam_main ../../src/main/init_data ../../src/main/sst_data . $ cp ../../src/sample_nml/*.nml .
なお, このディレクトリ内以外でも, 実行ファイル, 設定ファイル (namelist ファイル) があれば計算を行うことはできます.
init_data と init_data_E_T21L22.nml を用いて初期値ファイル init_T21L22.nc を作成します.
$ ./init_data -N=init_data_E_T21L22.nml *** MESSAGE [init_data] *** Run: Initial data generation *** MESSAGE [init_data] *** -- version = $Name: dcpam5-20120220 $$Id: exp-Earth.rd,v 1.3 2012-02-01 06:27:27 yot Exp $ *** MESSAGE [namelist_util] *** ----- Initialization Messages ----- *** MESSAGE [namelist_util] *** MaxNmlArySize = 256 *** MESSAGE [namelist_util] *** -- version = $Name: dcpam5-20120220 $$Id: exp-Earth.rd,v 1.3 2012-02-01 06:27:27 yot Exp $ *** MESSAGE [timeset] *** NAMELIST group "timeset_nml" is loaded from "init_data_E_T21L22.nml". : *** MESSAGE [initial_data] *** Ueq = 0. *** MESSAGE [initial_data] *** *** MESSAGE [initial_data] *** -- version = $Name: dcpam5-20120220 $$Id: exp-Earth.rd,v 1.3 2012-02-01 06:27:27 yot Exp $ *** MESSAGE [HistoryClose] *** "init_T21L22.nc" is closed ############## CPU TIME SUMMARY ################ others 0.120000E-01 ------------------------------------------------ TOTAL TIME = 0.120000E-01
実験用データとして, 海表面温度, 地面特性, 海表面密度, オゾン分布のデータを 以下に用意してあります.
上記のページから "sst_amipII_bc_clim_T021.nc", "sp_for_Earth_T021.nc", "sic_amipII_bc_clim_T021.nc", "O3_CMIP5_climatology_zonalmean_T021.nc" をダウンロードして, 実験を行うディレクトリに置いてください.
最後に dcpam_main, dcpam_E_T21L22.nml を用いて実験を実施します. 解像度 T21L22, 時間ステップ 30 分で 10 日分計算を行います. リスタートデータ, 地表面リスタートデータといくつかのヒストリデータ ファイルが出力されます.
$ ./dcpam_main -N=dcpam_E_T21L22.nml | tee Earth.log
初期値データ, 地表面データ, 実験設定を変更する場合には, 上記の実行に際して, init_data_E_T21L22.nml, dcpam_E_T21L22.nml を変更してください.
10 日後における温度の東西平均分布は以下の図のようになります.
この図は, Gphys を 用いて, 下の処理によって描画しています.
まず irb を起動. $ irb 以下のような irb のプロンプトが表示されます. irb(main):001:0> このプロンプトに, 以下のようにコマンドを打ちます. 左端の数字は行番号で, 打つ必要はありません. 1: require "numru/ggraph" 2: include NumRu 3: gphys = GPhys::IO.open('Temp.nc', 'Temp') 4: DCL.gropn(1) 5: DCL.sgpset('lcntl', false) ; DCL.uzfact(0.7) 6: GGraph.set_fig( 'itr'=> 2 ) 7: GGraph.tone( gphys.mean('lon').cut('time'=>10) ) 8: GGraph.color_bar 9: DCL.grcls irb のプロンプトにおいて quit と打つと irb を終了することができます.
この計算で用いている初期値は等温静止大気です. 地球大気は, 10 日間では準定常状態には達しませんので, 上記の図はスピンアップ中の状態を表しています.