#author("2023-10-19T14:25:18+09:00","default:Miyashita","Miyashita") #author("2023-10-19T14:26:30+09:00","default:Miyashita","Miyashita") *JAGURS テスト計算 [#f7a369c4] [[GitHub>https://github.com/jagurs-admin/jagurs]]から clone したものを前提としています. **コンパイル [#d4929330] src/ にある Makefile をコンパイル.~ 各コンパイラ用の Makefile.XXX があるので, Makefile としてシンボリックリンクを貼るか, make -f でファイル指定する. 並列計算をしない場合は Makefile を編集して MPI を off にする.~ Makefile の中で変更すべき箇所は, PROJ,FFTW,NetCDF4 のパス. ~ nf-config のパスが通っていれば,NETCDF の定義は #codeprettify{{ # NETCDF: Specify the path to NetCDF library. NETCDF=$(shell nf-config --prefix) }} でOK. **テスト計算の実行 [#a6671209] ***並列計算なし [#m1ce993c] 計算実行は #codeprettify{{ ./jagurs par=XXX.par }} というようにパラメータを設定したファイルを実行ファイルのあとに指定する.~ input/ の中にテスト用として tsun.par というファイルが入っており, #codeprettify{{ ./jagurs par=tsun.par }} とすると計算が開始された.~ tend=120 とあり,この計算では最初の2分間だけ計算する.公式docに各パラメータについての説明が書いてある.~ XXX.par のファイルの中身は Fortran の namelist 形式なので,容易に編集可能.~ (MPI並列計算をしない)シリアル版の場合は,並列ノード指定部分を #codeprettify(lang-fortran){{ !procx=2 !for Parallel version !procy=2 !for Parallel version }} のようにコメントを入れる.~ OpenMP 並列については簡単で,環境変数 OMP_NUM_THREADS で数を指定するだけ. ~ ***MPI 並列計算あり [#g37ed62a] mpirun がつくだけ. #codeprettify{{ mpirun -np 4 ./jagurs par=tsun.par # 2 x 2 の場合 }} 公式doc には, OpemMP と MPI のハイブリッドジョブの実行例が書いてある.~ ~ **可視化 [#l02c175f] 計算のアウトプットとして NetCDF4 の grd ファイルが出てくるので,GMT で直接描けるようになっている.~ 平面分布の一括描画を適当にワンライナーで全部書くとすれば下記のような感じ. 計算結果の出力の grd ファイルは GMT で直接描けるようになっている.~ 平面分布の描画を適当にワンライナーで全部書くとすれば下記のような感じ. #codeprettify{{ # GMT 6 for f in SD*.grd; do echo $f; gmt begin "${f//\.grd/}" png; gmt makecpt -Cpolar -D ;gmt grdimage -JX10 -Baf -B+t$f -R$f -C $f ; gmt end; done }} #codeprettify{{ # GMT 5 for f in SD*.grd; do gmt grdimage -JX10 -Baf -B+t$f -R$f -Cpolar -P $f > "${f//\.grd/\.ps}" ; done }}