Yamamoto and Takahashi (2003) に似た強制を与えた金星的惑星の 実験を実行する方法を説明します.
本実験は実験用データを用いないため, 以下の 3 つのステップで行います.
ここでは, practice/Venuslike-exp ディレクトリで実験を行うことにします. 以下のように practice/Venuslike-exp ディレクトリを作成し, ディレクトリに 移動してください.
$ cd practice $ mkdir Venuslike-exp $ cd Venuslike-exp
次に, このディレクトリに実行ファイルと設定ファイルをコピーします.
$ cp ../../src/main/dcpam_main ../../src/main/init_data ../../src/main/sst_data . $ cp ../../src/sample_nml/*.nml .
なお, このディレクトリ内以外でも, 実行ファイル, 設定ファイル (namelist ファイル) があれば計算を行うことはできます.
init_data と init_data_Vlp_T10L50.nml を用いて初期値ファイル init_T10L50.nc を作成します.
$ ./init_data -N=init_data_Vlp_T10L50.nml *** MESSAGE [init_data] *** Run: Initial data generation *** MESSAGE [init_data] *** -- version = $Name: dcpam5-20120220 $$Id: exp-Venuslike.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-Venuslike.rd,v 1.3 2012-02-01 06:27:27 yot Exp $ *** WARNING [timeset] *** NAMELIST group "timeset_nml" is not found in "init_data_Vlp_T10L50.nml" (iostat=186). *** MESSAGE [timeset] *** ----- Initialization Messages ----- : *** MESSAGE [initial_data] *** ----- Initialization Messages ----- *** MESSAGE [initial_data] *** Pattern = SmallVapAvr = 0. *** MESSAGE [initial_data] *** Ueq = 0. *** MESSAGE [initial_data] *** *** MESSAGE [initial_data] *** -- version = $Name: dcpam5-20120220 $$Id: exp-Venuslike.rd,v 1.3 2012-02-01 06:27:27 yot Exp $
実行ファイル "dcpam_main" と NAMELIST ファイル dcpam_Vlp_T10L50.nml を用いて, 以下のように dcpam_main を実行してください. プログラム終了には数分〜数十分かかります.
(なお, クロスコンパイル環境では以下の方法でプログラムを 実行することはできないので注意してください. その場合の実行方法 に関しては, その環境でのプログラム実行マニュアルなどを参照ください. )
$ ./dcpam_main -N=dcpam_Vlp_T10L50.nml | tee Vlp.log *** MESSAGE [namelist_util] *** ----- Initialization Messages ----- *** MESSAGE [namelist_util] *** MaxNmlArySize = 256 *** MESSAGE [namelist_util] *** -- version = $Name: dcpam5-20120220 $$Id: exp-Venuslike.rd,v 1.3 2012-02-01 06:27:27 yot Exp $ *** MESSAGE [dcpam_main] *** NAMELIST group "dcpam_main_nml" is loaded from "dcpam_Vlp_T10L50.nml". &DCPAM_MAIN_NML FLAGDYNAMICS=T,FLAGFULLPHYSICS=F,FLAGHS94=F,FLAGVENUSSIMPLE=T,FLAGJUPITERSIMPLE=F,FLAGRADIATIONDENNOUAGCM=T,FLAGRADIATIONDCPAMEV1=F,FLAGRADIATIONDCPAMMV1=F,FLAGRADIATIONSL09=F,FLAGPHYIMP1LAYMODEL=T,FLAGPHYIMPSOILMODEL=F,FLAGPHYIMPSOILMODELSO=F,FLAGPHYIMPATMONLY=F,FLAGVERTICALFILTER=F/ *** MESSAGE [dcpam_main] *** FlagDynamics=<T>. *** MESSAGE [dcpam_main] *** FlagRadiationDennouAGCM=<T>. *** MESSAGE [dcpam_main] *** FlagRadiationDcpamEV1 =<F>. *** MESSAGE [dcpam_main] *** FlagRadiationDcpamMV1 =<F>. : *** MESSAGE [HistoryClose] *** "VUBalance.nc" is closed ############## CPU TIME SUMMARY ################ surface_properties 0.000000E+00 auxiliary 0.108007E+00 vdiffusion_my1974 0.520025E-01 dynamics_hspl_vas83 0.187212E+01 mass_fixer 0.280015E-01 check_prog_vars 0.800041E-02 timefilter_asselin19 0.280015E-01 others 0.552037E+00 ------------------------------------------------ TOTAL TIME = 0.264816E+01
この場合, 5 日分の時間積分が行われます. 空間解像度は T10L50 (経度格子点数 32, 緯度点数 16, 鉛直層数 50) です. 計算結果は U.nc や Temp.nc として出力されます. また, リスタートファイルが restart.nc として出力されます.
5 日後における温度の東西平均分布は以下の図のようになります.
この図は, Gphys を 用いて, 下の処理によって描画しています.
まず 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'=>5) ) 8: GGraph.color_bar 9: DCL.grcls irb のプロンプトにおいて quit と打つと irb を終了することができます.
この計算で用いている初期値は等温静止大気です. 金星大気は, 5 日間では準定常状態には達しませんので, 上記の図はスピンアップ中の状態を表しています.