#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
}}

Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes