model notes and references

Gray-Scott 3D

このアプリについて

Gray-Scott モデルの原型は、よく混ざった連続攪拌槽の自己触媒反応として導入されたものです [1, 2]。この段階では空間構造を持たない常微分方程式系です。

パターン形成でよく使われる空間版は、この反応系に拡散と位置依存性を入れた反応拡散系です。F と k の値で多様な模様が現れる、という Gray-Scott パターンの基点としてここでは Pearson の仕事を参照します [3]。このアプリでは、3次元空間で物質 V が濃くなった場所を表示します。

3次元の Gray-Scott 研究は2次元の例ほど多くありませんが、いくつかあります。代表例として、Leppänen らによる3次元 Turing パターンの研究 [6] と、Shoji、Yamada、Ueyama、Ohta による3次元パターンの論文 [7] を参照します。ただし、3次元におけるパラメータ、初期値、境界条件と形の関係は、2次元のように広く整理されているとはまだ言いにくい状況です。Physica D の2本は、Gray-Scott モデルにおける自己複製や時空カオスを理解するための関連する背景として置いています [4, 5]

ここでは研究用の厳密な計算環境ではなく、パラメータを触りながらパターン形成の雰囲気をつかむための一般向けのブラウザアプリとして作っています。計算は単純な差分陽解法にして、操作中も模様が動き続けることを優先しています。

2次元の Gray-Scott パターンを広く眺めるには、Munafo による XMorphia のページが豊富な図例を見せてくれる良い読み物です [8]。ただし、2次元のパラメータ領域が3次元の挙動へそのまま対応するとは限りません。このアプリのプリセットは、3次元で観察しやすいように別に調整しています。

上山大信による、かなり古いシミュレーション結果の動画プレイリストもあります [10]。現在のアプリとは実装や表示方法が異なりますが、3次元パターンがどのように見えていたかを知るための記録です。

反応と方程式

U + 2 V 3 V V P
U t = Du 2 U - U V2 + F ( 1 - U ) V t = Dv 2 V + U V2 - ( F + k ) V

UV² の項は局所的な反応を表します。V が U を消費しながらさらに V を増やす、という自己触媒的な働きです。F(1-U) は U を供給濃度へ戻す項で、-(F+k)V は流れによる希釈と V の除去を合わせた項です。拡散項は U と V を隣の点へ広げます。反応、供給、除去、拡散の釣り合いが少し変わるだけで、見える形が大きく変わります [3]

操作の意味

F
U の供給率です。反応で減った U が戻る速さを調整します。
k
V の除去率です。F と組み合わせて、スポット、管、層状構造などの違いを作ります。
表示しきい値
V がどれくらい濃い場所を見せるかを決めます。等値面では少し低めの値が見やすくなります。
境界条件
Neumann は箱の端で反射、Periodic は反対側の面へつながる空間として扱います。
Volume / 等値面
Volume は濃度場を雲のように積分表示し、等値面は同じ濃度の面をメッシュとして描きます。

計算方式

計算は差分陽解法です。各格子点では現在の U、V と6方向の隣接点を読み、拡散、反応、供給、除去の項を使って次の時刻の値を求めます。このような局所的なステンシル計算は、CPU でも GPU でも実装しやすい形です。

CPU モードでは Web Worker 上で Float32Array の U、V 配列を更新します。画面本体とは別スレッドで計算するため、ブラウザの操作を止めにくくしています。

GPGPU モードでは WebGL2 を計算にも使います。U と V をタイル状に並べたコンパクトな RGBA32F の2次元テクスチャに詰め、fragment shader で1ステップ分の Gray-Scott 更新を行い、2枚のテクスチャを ping-pong しながら交互に読み書きします。

Volume 表示では、Three.js のレイマーチング用シェーダーが現在の GPGPU テクスチャを直接読むため、表示のたびに濃度場を CPU へ戻して GPU へ送り直す処理はありません。ただし、統計値、3方向の断面図、CPU で作る Marching Cubes の等値面には、低頻度の CPU スナップショットを使います。画面の処理時間と転送時間は、この時々行う転送を含むサンプル計測値です。描画品質の Auto はスマートフォン、タブレット、デスクトップ向けの初期設定を選び、数値パラメータを変えずに実測フレーム時間から表示負荷を調整します。

この Gray-Scott 計算では特に GPGPU の効果が出やすくなります。更新は各格子点でほぼ独立しており、必要なのは自分自身と隣接6点の値だけです。さらに今回は ICCG のような大域的な線形方程式ソルバを使わず、同じ陽的な更新式を多数の格子点に繰り返し適用するため、GPU の並列計算と相性がよくなります。現在のプリセットでは U と V の拡散係数が同じ桁で、反応項にも極端に大きな速度定数が入っていないため、陽解法でも比較的大きな時間刻みを取れることも、ブラウザ上で動かしやすい理由です。

参考文献・読み物

  1. P. Gray and S. K. Scott, "Autocatalytic reactions in the isothermal, continuous stirred tank reactor" , Chemical Engineering Science 38(1), 29-43 (1983).
  2. P. Gray and S. K. Scott, "Autocatalytic reactions in the isothermal, continuous stirred tank reactor: oscillations and instabilities in the system A+2B -> 3B, B -> C" , Chemical Engineering Science 39(6), 1087-1097 (1984).
  3. J. E. Pearson, "Complex Patterns in a Simple System" , Science 261(5118), 189-192 (1993).
  4. Y. Nishiura and D. Ueyama, "A skeleton structure of self-replicating dynamics" , Physica D: Nonlinear Phenomena 130(1-2), 73-104 (1999).
  5. Y. Nishiura and D. Ueyama, "Spatio-temporal chaos for the Gray-Scott model" , Physica D: Nonlinear Phenomena 150(3-4), 137-162 (2001).
  6. T. Leppänen, M. Karttunen, K. Kaski, R. A. Barrio, and L. Zhang, "A new dimension to Turing patterns" , Physica D: Nonlinear Phenomena 168-169, 35-44 (2002).
  7. H. Shoji, K. Yamada, D. Ueyama, and T. Ohta, "Turing patterns in three dimensions" , Physical Review E 75, 046212 (2007).
  8. M. Munafo, "Reaction-Diffusion by the Gray-Scott Model: Pearson's Parametrization" . 2次元 Gray-Scott パターンを豊富な図例で見せてくれるサイト。ただし、このパラメータ図を3次元プリセットへ直接対応させるものではありません。
  9. 上山大信, 「The Gray-Scott モデル」 , note, 2025年1月30日.
  10. 上山大信, Gray-Scott simulation results . かなり古いシミュレーション結果の動画プレイリスト。