OS およびカーネルのバージョンによっては, 解像度を上げた計算を 行った際にセグメンテーションエラーが生じる場合があります.
この場合には, メモリのスタック領域の使用容量の最大値が比較的小さく 設定されている可能性があります.
多くの場合にはこの使用容量の最大値は ユーザでも設定可能なソフトリミットと呼ばれるものであるため, 以下のように最大値を増やすよう設定可能です. ただし, システム側で決められている最大値であるハードリミット以上に 大きくソフトリミットを設定することはできません.
スタック領域のハードリミットを調べます
> limit -h | grep stack stacksize XXXXXXXX
ここで XXXXXXXX として表示されるのが スタック領域のハードリミットです. (数値または "unlimited" が表示されます). この XXXXXXXX をスタック領域のソフトリミットに設定します.
> limit stacksize XXXXXXXX
スタック領域のハードリミットを調べます
$ ulimit -Ha |grep stack stack size (kbytes, -s) XXXXXXXX
ここで XXXXXXXX として表示されるのが スタック領域のハードリミットです. (数値または "unlimited" が表示されます). この XXXXXXXX をスタック領域のソフトリミットに設定します.
$ ulimit -s XXXXXXXX
ファイルに記述される NAMELIST が多い場合に, まれに一部の NAMELIST が読み込まれない場合があるようです.
ファイルにはちゃんと書き込まれているはずなのに, NAMELIST の情報が実行 プログラムに反映されない場合には, 実行プログラムによって出力されるメッ セージをチェックしてください. もしも以下のようなメッセージが表示されて いれば, ここで述べるような症状が現れていることになります.
!*** WARNING [XxxxNmlRead] *** NAMELIST group "xxxx_nml" is not found in "xxxx_xxxx.nml" (iostat=190). ^^^^^^^^^^ これが特徴.
この場合には, 読み込まれない NAMELIST の前に空行やコメント行を挿入する などし, 再度プログラムの実行と動作のチェックを行ってください. 空行やコメント行を何行か足すことで上記の症状は回避されるようです. (原因は不明です).