3.4 脱線のような大事な話のような: GLSC利用上の問題

現象数理学科ローカルの話になるけれど、 上のやり方で2次元配列を用意して、 GLSC の等高線・鳥瞰図描画でハマっている人が何人かいた。

  g_contln(-1.0, 1.0, -1.0, 1.0, u,
           N_x + 1, N_y + 1, 0.32 * i - 1.12);
とか
  g_hidden(1.0, 1.0, 0.4, -1.0, 1.0, 5.0, 25.0, 20.0, 20.0, 20.0,
           150.0, 100.0, u, N_x + 1, N_y + 1,
           1, G_SIDE_NONE, 2, 1);
とかしたとき、GLSC 側は、 u では、 2次元格子上の数値データが u の示す場所に連続的に並んでいる、 として処理を行うので、
  double u[N_x+1][N_y+1];
として宣言してあれば良いのだけど、
  double u[MAXN_x+1][MAXN_y+1]; // 大きめに確保して、一部を使うつもり
と宣言した場合は (MAXN_x$ =$ N_x, MAXN_y$ =$ N_y でない限り) 正しく動かないのである。

…実は GLSC を作った人達は、 double u[MAXN_x+1][MAXN_y+1]; とした場合にも対応できるようにプログラムを書いてあるが、 それは裏の方に隠されていて、通常は使えないようになっている (static な関数になっている)。

桂田 祐史
2017-03-06