流跡線解析の際に時間積分が長くなるとスタックに確保されるメモリが増えるのですが...

  • [Answer] : 少しテクニカルですが, 下の概念図 (の do ループで処理させる) のようなプログラムにすれば理論上, どれだけ時間積分が長くなってもスタックメモリの容量は変化させずに済みます.

    通常の Forward_Trajectory ルーチンの使い方 (上) とスタックを一定値に収めるための Forward_Trajectory ルーチンの使い方 (下). 長い矢印がリファレンスとして用いるモデルデータの時間間隔, 短い矢印が各流跡線を表しています.

  • これは単に, 速度場のリファレンスデータを隣接 3 時刻分用意し, 前 2 時刻分の間を流跡線計算させ, 積分時間が後 2 時刻分の中に入ったらループでリファレンスデータを 1 時刻後にずらすという手法です.
    • 理想的なら, 隣接 2 時刻で問題ないのですが, その場合はリファレンスデータの時間間隔と時間積分の時間間隔が倍数関係になっている必要があります. より汎用性をもたせるため 3 時刻分とることを考えます (つまり, 3 リファレンスデータの最後の 1 時刻分はバッファです).
  • このようにすれば, Forward_Trajectory として確保すべきスタックは任意の時間積分について 3 時刻分のリファレンスデータのみあればよいことになるので, スタック容量の心配をする必要はなくなります.