先週より、「KANAKOが動かない」と後輩に言われておりました。
先輩のお手伝いが終わり、今度は後輩の番。私もHyper KANAKO に詳しいわけではないのですが、待たせた分、答えを出さねばなりません。できれば短時間で。
まずは何が動かないかの検証です。
後輩の作ったモデルはハイドロが数日、1次元が数km、天然ダム多数、といった予想よりかなり大きなものでした。おそらくモデルの大きさ、確保したメモリ−関連で「動かない」と言うのでしょう(このような時、ソースを確認できない点はネックです)。
問題を切り分けるため、LPデータはそのまま、1次元、2次元範囲は縮小、ハイドロはデフォルト、定数や計算条件もデフォルトに戻して計算。結果、うまく流れます。
次に天然ダムを1つ入れて計算。これも決壊し、流下します。
次にハイドロを数日、計算時間を 50000秒に設定。で、ここで OUT。計算途中でエラーが出て最後まで計算しません。ハイドロの土砂濃度を低くし、流れやすい設定に変えてもダメ。同じ時間で止まります。
刻みを 0.01秒から 0.1秒に変更すればその 10倍の時間まで計算します。これは1次元・2次元の計算領域、回数、確保したメモリー、書きだすファイルの大きさなどの制約だろうと踏んで、領域を変えてみることに。
結果、2次元領域を変えても変化なし。
一方、1次元領域を2.5倍にすると、計算が止まる時間が約1/2.5に減りました。1次元の計算は5mピッチ固定なのですが、これを手入力で 50m にしてやると、計算が止まるまでの時間は 10倍に増えました。ファイル書き出しを含む1次元の計算に制約があるようです。
対応としては、開発元である大学の先生に問題を報告・確認し、1次元の制約であれば改良を申し入れるというのがBESTです。が、すでに冬休みでしょう。
対処療法ですが、1次元の範囲を可能な限り狭く、1次元の仮定を逸脱しないピッチと刻みを使って制限内に収めて乗り切る、といったところでしょうか。「制限」は、そのモデルでのアタリ計算からある程度導けるでしょう。
ま、これで先輩、後輩のお手伝いは終わり。答えも出せて一安心。
次は、自分の番です。