私は現在、全体に境界がある 3D ボリューム内のガスの拡散と圧力を非常に基本的な用語でシミュレートするプログラムを作成しています。たとえば、アリの洞窟を考えてみてください。達成したい効果: 1. 壁を尊重しながら、時間の経過とともにガスが環境全体に拡散します。2. グリッド ポイントごとの圧力またはガスの圧縮を測定したいと思います。これの効果は、部屋が開いている場合、圧力差を反映する速度でガスが開口部から拡散することです。
私の問題は、理論的な数学の方程式を完全に理解する知識が不足していることです。正直なところ、正確なシミュレーションを求めているわけではありません。物理学の際立った効果のいくつかを実現したいだけです。流体力学には興味がありません (煙のシミュレーションなど)。
このプログラムは OpenCL で記述しますが、C コードや疑似コードなど、あらゆる形式のコード例を喜んで採用します。
3 つの 3D 配列を渡す必要があると考えています。1 つはガス用、もう 1 つは壁を定義するもの (例: xyz = wall に 1 つ)、もう 1 つは圧力を保存するためのものです。私は現在、壁をチェックするのは簡単だと思っています。単純に各隣接セルをチェックし、壁でない場合はセルを考慮します。
For each grid point,
is wallmatrix[x+1] a wall?
[diffusion math here]
is wallmatrix[x-1] a wall?
[diffusion math here]
is wallmatrix[y+1] a wall?
[diffusion math here]
etc...
しかし、拡散計算をどうすればよいのか、また、これらすべてに圧力をどのように含めるのかがわかりません。