【発明の詳細な説明】
物理的過程のシミュレーションにおける粘性の減少発明の背景
本発明は、物理的過程、例えば流体の流れをシミュレーションするためのコン
ピュータシステムに関する。
高いレイノルズ数の流れをシミュレーションする従来の方法は、ナビエ-スト
ークス(Navier-Stokes)の微分方程式の離散解を求める方法であって、高い精
度の浮動小数点演算は巨視的物理量(例えば密度、温度、流速)を表す変数につ
いて離散的な空間の各位置で実行するものである。最速かつ演算力のある利用可
能なコンピュータを用いられてきたが、未だ非常に制限され厳密でない結果しか
得られていない。実行処理を扱いやすくするために、分解能が非常に粗い格子を
用いても、粗い分解能では連続した浮動小数点の算術演算を実行する際の固有の
丸め誤差が累算されて容認出来ない誤差が解に生じる。
一般に格子気体(すなわちセルラ(cellular))オートマトンとして知られてい
るものについて微分方程式による解析に置換するための努力が長い間なされてい
る。この格子気体オートマトンにおいてはナビエ-ストークス(Navire-Stokes)の
方程式を解くことにより得られる巨視的レベルのシミュレーションが、格子上の
サイト間を移動する粒子の
運動を実行する微視的レベルのモデルによって置換されている。ここにおける目
的は、正確な巨視的結果(すなわち、ナビエ-ストークスの方程式によって定め
られる密度、温度、その他)を導き得る粒子の相互作用及び運動の微視的レベル
のモデルを見いだすことであった。
これまでの格子気体のシミュレーションは、ビットの短いベクトルによって表
される粒子を有する各格子サイトでの限られた数の粒子を仮定している。各ビッ
トは特定の方向に移動する粒子を表す。例えば、ベクトルの1つのビットは、特
定の方向に沿って運動する1つの粒子が存在するか(1と設定)存在しないか(
0と設定)を表す。このような1つのベクトルは6ビットを有し、例えば、1100
00とは2つの粒子がX軸に沿って反対方向に移動し、Y軸及びZ軸に沿って移動
する粒子は存在しないことを表す。衝突の規則の組は、各サイトの粒子間の衝突
の挙動を支配する(例えば、X軸に沿って移動する2つの粒子間の衝突は、Y軸
に沿って離れていく2つの粒子を生成することは110000ベクトルは001100ベクト
ルになることを表す。)。この規則は、ビットの順列を実行(例えば110000を001
100に変換する)する参照用テーブルに状態ベクトルを与えることで実行される。
粒子は隣接したサイトに移動する(例えば、Y軸に沿って移動する2つの粒子は
Y軸に沿った右及び左の隣接したサイトに移動する)。
モルビグ(Molvig)氏他は改善した格子気体の手法を教え
る。この手法において、特に、粒子のエネルギー及び運動方向の変化を知るため
に、より多くのビット(例えば、超音波流に対して54ビット)が各格子サイト
の状態ベクトルに加えられ、さらに、完全な状態ベクトルの部分を表す衝突規則
が用いられる。これはモルビグ(Molvig)氏他によるPCT/US91/04930、離散的運動
理論、格子気体の動力学及び流体力学の基礎の研究会の予稿集(Proceedings of
the Workshop on Discrete Kinetic Theory,Lattice Gas Dynamics,and Found
ations of Hydrodynamics World Scientific Publishing Co.,Pte.,Ltd.,Sin
gapore(1989))のモルビグ(Molvig)氏他による「3次元格子気体流体における離
散的な人工構造の除去(Removing the Discreteness Artifacts in 3D Lattice-G
as Fluids)」、及びSpringer Proceedings in Physics,Vol.46,複合物理系の
セルオートマトンとモデル化(Cellular Automata and Modeling of Complex Ph
ysical Systems),Springer-Verlag Berlin,Heidelberg(1990)の中のモルビ
グ(Molvig)氏他による「実在流体の動力学に対する多種格子気体のオートマトン
(Multi-species Lattice-Gas Automata for Realistic Fluid Dynamics)」に記
載されている(これらの開示内容が本願明細書に組み入れられる)。モルビグ(Mo
lvig)氏他による教示されるこれらの改善等は、最初の実用的な格子気体のコン
ピュータシステムを提示される。流体の流れのモデル化で不正確な初期の格子気
体モデルを作った離散的な人工
物(artifact)は除去された。
離散的な人工物を回避するもう1つの方法は、格子-ボルツマンモデルと呼ば
れるもので、格子気体の手法のブール変数を実変数に置き換えるものである。こ
れはチェン(Chen)氏他による「磁性流体力学のシミュレーションに対する格子ボ
ルツマンモデル(Lattice Boltzmann Model for Simulation of Magnetohydrodyn
amics)」Physical Review letters,Vol.67,n.27,30 Dec.1991及びキアン(
Qian)氏他の「ナビエ-ストークス方程式の格子BGKモデル(Lattice BGK Model
s for Navier-Stokes Equation)」Europhysics Letters,Vol.17,pp.479-484
,1 February 1992に記載されている。格子における各サイトの各状態に対する
個々の粒子の存在を監視するよりむしろ、格子-ボルツマンモデルは各々の上述
の状態の粒子の分布関数を監視する。
キアン(Qian)氏他の説明によれば、格子−ボルツマンの方法で用いる実数は緩
和の方法の適用を許すものであり、これは単純に以下のように記述できる。
ここで、N(t)は時刻tでの量、Neは平衡状態(ボルツマン)での量であり、ω
は0から2の間の値を取る緩和パラメータである。この方法は0<ω<1のとき
副緩和(subrelaxation)といい、1<ω<2のとき過緩和(over relaxatio
n)という(ω=1のとき、N(t+1)は単にNeとなり、緩和は起らない。)。キ
アン(Qian)氏他はωが増加するとシミュレーションした流体の剪断粘性は減少す
ることも記述している。発明の概要
本発明は、各状態を表す整数値からなる状態ベクトルによって、各格子がサイ
ト(ボクセル(voxel))が表される格子気体系の粘性を修正することを特徴とす
る(例えば、各ボクセル、0〜255の要素は特定のエネルギーを有する特定の
方向に移動できる。)。系の粘性が減少すると格子の有効密度が増加し、システ
ムがある物理的過程をシミュレーションできる分解能は劇的に増加する。系の粘
性を増加させると、高粘性流体のシミュレーションが可能となる。
粘性は、剪断力(すなわち、流体の流れの方向と平行な方向に作用する力)に対
するの流体の抵抗力の大きさである。実在する流体では、粒子の速度が平均値に
近づこうとさせる原因となる流体内の隣接する粒子間の相互作用の結果が粘性で
ある。格子系においては、あるボクセル内の粒子の正味(net)の速度が隣接した
ボクセル内の粒子の正味(net)の速度に近づこうとさせる傾向が原因となる特定
のボクセル内の粒子間の相互作用の結果が粘性である。実在する粒子によって占
められる物理空間より十分に大きいシミュレーションされる空間の領域を各ボク
セルは表すので、ボクセル間の相互作用の結果である粘性は実在する流体の分子
粒子間相互作用の結果よりも大きくなる(すなわち、各ボクセル間の相互作用を
「平均」した結果は、各分子粒子間の相互作用の結果よりも大きい空間領域に作
用する。)。
典型的には、系の粘性は緩和の手法を用いて修正される。キアン(Qian)氏他に
よって述べられている緩和の手法は、実数を用いる系に注目しているので、整数
をベースとしたシステムに適応することはすぐに明確とはならない。実際に、キ
アン(Qian)氏他によって述べられている整数値からなる状態ベクトルを用いた格
子気体系へ緩和手法を直接適用しても解くことはできない。これは実数値の緩和
パラメータを整数値に乗算すると1つの整数値ではなく実数値となるからである
。乗算によって生成された実数値は整数値に切り捨てられるので、このような切
り捨てはこの系の質量、運動量及びエネルギーをもはや保存しない。本発明は、
実数値の緩和パラメータによって修正される整数値の状態ベクトルを可能にし、
切り捨て誤差を発生させずに質量、運動量及びエネルギーを保存する。
格子系の粘性は格子密度を増加させると減少する(すなわち、各ボクセルで表
されるシミュレーションされる空間の量(quantity)の減少させることによって)
、さらに過緩和を使用して減少させることもできる。粘性νは緩和パラメータω
によって表される。
ここで、Tは流体の温度である。このようにして、例えば、1つの緩和パラメー
タ(ν=T/2)に関して、1.8(ν=T/18)の緩和パラメータは、格子内
の粘性を9分の1に減少させる。
本発明は、物理的過程をシミュレーションする格子系の能力を改善することを
約束する。格子密度が増加すると同じ効果が生じるために(すなわち、格子系の
粘性が減少する)、過緩和を使用することは格子密度を有効的に増加させる。従
って、過緩和を使用することは、特定の分解能(若しくは、特定のプロセッサは
物理系をシミュレーションできる分解能)を有する物理系をシミュレーションす
るために必要な処理にめざましい効果を発揮する。例えば、3次元の格子の有効
密度を10倍に増加させると、特定のレベルの分解能で格子を有する物理系をシ
ミュレーションするのに必要な処理をほぼ10000の1に減少する(すなわち
、過緩和を実行するのに必要な追加処理を10の3乗ほど少なくし、与えられた
速度の流体をシミュレーションするのに必要な時間は10分の1に減らせる。)
。本発明は物理的過程をシミュレーションする新しいコンピュータシステムを実
現する。1つの要素(例えば、特定のエネルギーを有する特定の方向に移動する
多くても1つの要素)が各格子サイト(ボ
クセル)にある格子気体モデルの代わりに、本発明は、各ボクセルで幾つかの状
態の各々の多数の要素が存在する多数要素の手法を用いている(例えば、0〜2
55個の要素が特定の方向に移動できる)。状態ベクトルはビットの組であった
がその代わりにある状態での状態数を表す各々の整数の組である(例えば、0か
ら255までの範囲の整数を与える8ビットの組である1バイト)。
ボクセル内の異なる運動量状態の要素間の相互作用をモデル化するために、コ
ンピュータシステムは状態ベクトルの相互作用演算を実行する。典型的には、こ
れらの相互作用演算はボクセルの状態ベクトルに対する規則の組を用いて各ボク
セルに対して実行するもので、この各規則は状態ベクトルから特定の整数の組を
修正する。
シミュレーションされた物理的過程の粘性を変更させるために、コンピュータ
システムは状態ベクトルの粘性修正演算を実行する。これらの演算は、概して相
互作用演算の後に実行し、相互作用演算の間に使用する規則と似たものか若しく
は同じ規則の組を使用する。同じ規則が使用される場合、相互作用を演算する間
の第1の量及び粘性修正演算をする間の第2の量によって、この法則は状態ベク
トルを修正し、緩和パラメータによって、第1の量と第2の量が関係づけられて
いる。相互作用演算に用いられている規則は質量、運動量及びエネルギーを保存
するため、この方法は、これらの特性が粘性修正演の間で保存されること保
証する。
第2の量が緩和パラメータから得られる実数を第1の量に乗算することによっ
て決定されるとき、第2の量が整数値であることを保証するために、乗算のこの
結果は切り捨てられる。切り捨て演算によって、系に統計的バイアスを導入しな
いように、0から1までの間の乱数値は切り捨て演算の前に乗算の結果に加算さ
れる。
1より大きく2未満の値の緩和パラメータを用いると、格子系の粘性は減少す
る。緩和パラメータが2に近づくにつれて、シミュレーションされた系の粘性が
0に近づき、系は不安定になる。動摩擦の形である粘性は系のゆらぎを減衰させ
る傾向がある。このようにして、これらのゆらぎが抑制されずに系に広がってい
くので、粘性がなくなったときには不安定性が発生する。1.8以下の緩和パラ
メータを用いると、一般的に不安定性を避けることができることが見いだされた
。
相互作用及び粘性の修正演算を実行した後に、コンピュータシステムは状態ベ
クトルについて、新しいボクセルに対する要素の移動を反映する移動演算を施す
。図面の簡単な説明
図1は物理的過程のシミュレーションシステムによる手順のフローチャートで
ある。
図2は微小ブロックの斜視図である。
図3は過緩和を伴う衝突を実行する手順のフローチャー
トである。
図4はすべり表面の動力学を実行するシステムのブロックダイヤグラムである
。
図5は正反射の図である。
図6は物理的過程のシミュレーションシステムの機能ユニットのブロックダイ
ヤグラムである。
図7は図6のシステムの微視的動力学ユニットのブロックダイヤグラムである
。
図8は図7の微視的動力学ユニットの1つのボクセルデータパスのブロックダ
イヤグラムである。好ましい実施例の詳細な説明
図1を参照すると、手順100に従って、物理的過程シミュレーションシステ
ムは演算していることが解る。最初に、タイマーが初期化される(ステップ10
2)。次に、格子内の特定のボクセル(若しくは位置)を示す1つのボクセルの
カウンターは、格子内の第1のボクセルを示すように初期化される(ステップ1
04)。
初期化後、システムはボクセルの数(総数)によって指示されるボクセルに対
応する状態ベクトルをロードする(ステップ106)。状態ベクトルはボクセル
の状態を完全に定義し、49(ビット)若しくはより多くの多数ビットの入力か
らなり、その各々は整数値に対応する。これらの49(ビット)の入力は、静止
状態、第1のエネルギー準位における24方向のベクトル及び第2のエネルギー
準位に
おける24方向のベクトルに対応する。49(ビット)の入力のみが必要とされ
るが、実施例は6つの静止状態を与えので、54(ビット)の入力を用いる。6
つの静止状態は十分な数の静止した「スロット」があることを保証するために用
いる。もちろん、この同じ効果は、49(ビット)の入力の実施例で静止状態に
対応する単一の入力のビット数を増やすことによっても成し遂げることができる
。多数ビットの入力を用いることで、このシステムはボクセル状態を定義する単
一ビット入力を用いるシステムの改善したパフォーマンスを提供する。特に、多
くの応用に適さないフェルミーディラック統計を単に作り出す異なる単一ビット
のシステムと異なり、このシステムはマックスウエル−ボルツマン統計を作り出
す。
状態ベクトルをロードした後、このシステムは状態ベクトルの全ての内部ボク
セルの演算を実行する(ステップ108)。内部ボクセルの演算は他のボクセルに
関する情報を必要としない演算である。例えば、流体シミュレーションにおいて
、内部ボクセル演算がボクセル内の粒子間の衝突を説明することができる。
内部ボクセル演算を完全にするために、このシステムはボクセル数を増加させ
る(ステップ110)。新しいボクセル数(総数)が格子内のボクセル数を越えな
いならば(ステップ112)、システムは次のボクセルの状態ベクトルをロードし
(ステップ106)、処理を続行する。
新しいボクセル数(総数)が格子内のボクセル数を越えるならば(ステップ1
12)、システムは内部ボクセル演算を実行する(ステップ114)。内部ボクセ
ル演算は1つ以上のボクセルからの情報を必要とする演算である。例えば、流体
シミュレーションシステムにおいて、内部ボクセル演算はボクセル間の粒子の運
動を説明する。内部ボクセル演算の実行後、システムは時間を増加し(ステップ
116)、最初のボクセルを示すボクセル数(総数)を再初期化し(ステップ10
4)、処理を続行する。
システムの実施例の演算を以下に詳しく記す。明らかにするために、上述のシ
ステムは、逐次演算するように記述してきた。しかし、以下に述べるように、こ
のシステムは、他の格子システムのように、理想的には平行に演算するのに適し
ている。例えば、内部ボクセル演算は、同時に多数のボクセルについて実行する
ことができる。同様に、内部ボクセル演算を必要とする全てのボクセルについて
の内部ボクセル演算が完了する間、この内部ボクセル演算は他の内部ボクセル演
算を同時に実行することができる。
1993年3月12日出願の米国出願第08/030,573号、1991年7月12日出願のPC
T出願第PCT/US91/04930号、1991年12月20日出願の米国出願第07/812,881号
、1990年7月12日出願の米国出願第07/555,754号及び1993年12月10日出願
の米国出願第08/165,293号の開示内容が本願明細書に組み込まれる。
幾つかの計算の演算を記述する前に、各ボクセルに対する基準状態ベクトルか
らなる簡単なデータ構造を簡単に記述する必要がある。これは計算に必要となる
大部分が演算する基本要素である。各格子サイト若しくはボクセル(これらの2
つの用語はこの明細書中においては完全に互換性のあるものとして用いられる)
は音速以下の単一種類のシミュレーションに対しては54個の状態からなる。こ
の状態の数は音速に近い流れ若しくは多数種類のシミュレーションに対して拡張
される。
この明細書において、状態空間は以下の表記で表される。
ここで、Niは時間ステップtでの3次元ベクトルxで示される格子サイトにお
ける状態iの粒子の数を表す。
この状態数は各エネルギー準位で可能な速度ベクトルの数によって決定される
。この速度ベクトルは4次元空間(x、y、z及びw)内の整数の線速度からな
る。この4番目の次元wは3次元空間に射影されたもので、従って3次元格子内
の実際の速度を示すものではない。音速以下の流れに対してはiの範囲は0から
53の範囲である。
各状態は特定のエネルギー準位での異なる速度ベクトルを表す。各状態の速度
は、以下のように各々の4次元内の「速さ」を示す。
エネルギー準位0の状態は停止した粒子として知られており、これら(粒子)
はある次元内で移動するものではなく、例えば、C stopped=(0,0,0,0)で
ある。エネルギー順位1の状態は4次元のうちの2つは±1を、他の2つは0の
速度を有する。さらに、エネルギー準位が2の状態は4次元全てが0か、若しく
は4次元のうちの1つは±2で他の3つは0の速度を有する。3つのエネルギー
準位の可能な順列の全てを作り出すことは49の可能な状態の全てを与える(1
個のエネルギー(準位)0の状態、24個のエネルギー(準位)1の状態、24
個のエネルギー(準位)2の状態)。加えて、音速以下の流れの状態空間は、4
9個の代わりに54個の全状態数を与え、1に対立するものとして全部で6個の
停止した状態を維持する。
ボクセルはマイクロブロックと呼ばれる小さい2×2×2の体積にグループ化
される。このマイクロブロックはデータ構造と関係するオーバーヘッドを最小化
するのと同様に格子サイトの平行処理を最適化するようにまとめられている。マ
イクロブロック内の格子サイトに対する簡略化した表記は以下のように定義され
、この明細書では至る所で用いられている。
ここで、xはマイクロブロック内の格子サイトの相対位置を表す。マイクロブ
ロックを図2に示す。微視的動力学(内部ボクセル演算)
微視的動力学の演算はボクセル内の純粋に発生する物理的相互作用の組である
。この演算の種類(クラス)は流体の粒子及び種々のタイプの物体表面間の物理
的相互作用を説明するための流体の状態空間の順列を可能にする。通常の衝突
通常の衝突は速度及び方向が変化するように互いに衝突する粒子を許す演算で
ある。粒子は速度ベクトルを決定する状態に置かれるので、粒子の速度及び方向
の変化は異なる状態にその粒子を移すことでなされる。
典型的な衝突は演算は2つの対の入力(入射)状態ベクトル(全部で4つ)及
び同様に2つの対の出力(反射)状態ベクトルからなる。基本的な衝突演算は2
つの「流入」粒子が衝突し、2つの「流出」粒子に状態が変化する。流入及び流
出の対は常に質量、運動量及びエネルギーが保存しなければならない。従って、
54の状態での可能な4組は「適法」な衝突の組であるとは限らない。
この基本的衝突演算は、本来、双方向的なものであり、従って、「流入」及び
「流出」状態は、局所的な衝突状態の数に依存して起る衝突のときに決定される
。2つの対は
選択され、局所的な密度に依存しており、1対(流入)は他の(流出)対の元と
なる。
基本的な衝突演算は以下のように記述され、
ここで、SignOfは括弧内の演算の符号(±1)のみを返す関数である。このSi
gnOf演算子は値が0のときは、+1を返す。粒子の数はi及びjの状態からk及
びlの状態へ散乱し、Nscattは小さい正の定数δ(デルタ)を、衝突演算Cの
符号に乗算することで決定される。このδは衝突則のリスト内に状態指数と一緒
に記されている。iとj若しくはkとlの状態の対はより大きい積を有し、より
小さい積の原状態の粒子対となる。Nscattが負ならば、状態k及びlの状態か
ら状態i及びjの状態に遷移する。
全てが4である状態は同じボクセルでの粒子を表す。衝突の全ては特定のサイ
トに局所的な状態情報にのみに依存する。状態指数i,j,k及びlは、iとj
の各状態の粒子は、kとlの各状態の粒子と同じ全運動量及び全エネルギーをも
つように決定される。全て4の指数は4つの異なる状態を表さなければならなず
、全て4の状態は同じエネ
ルギー準位でなければならない。
通常の衝突の例として、次の初期状態を与える。
i,j,k及びlの状態の選択から見られるように、iとjの対はx次元(方
向)は+2でy、z及びw(次元(方向))は0である正味(net)の運動量を有
する。加えて、2つの粒子はエネルギー準位1である。同様のことがkとlの対
にも当てはまる。第1のステップの後に、上で述べた衝突処理においてはCは−
1に等しくなる(SignOf[(25×40)−(30×50)]=−1)。負号はkとlの
対がiとjの対の元の粒子であることを示す。
衝突則に記されているようにδが4であることから、Nscattは−4と計算さ
れる。Nscattはiとjの状態から減じられ、kとlに加えられる。ここで、衝
突演算は終了し、4つの新しい出力状態の集合が生成される。
kとlの状態の中からiとjの状態に同一の粒子数を遷移することにより、質
量も保存される。
上述した衝突演算においては、ある状態での粒子数のオーバーフロー及びアン
ダーフローの可能性がある。質量、運動量及びエネルギーの保存はこのシミュレ
ーション環境において最優先され、チェックしていないならば、ある状態のオー
バーフローは運動量及びエネルギーと同様に質量の損失にもなることを注意しな
ければならない。同様に、アンダーフローが発生することも有り得、この場合に
は質量が生成されたり、消滅しなかったりする。従って、衝突演算は演算する4
組の状態の質量を保存することが必要である。衝突を伴うどのような状態におい
ても、演算がオーバーフロー若しくはアンダーフローのどちらかを引き起こすな
らば、粒子のあらゆる交換を防止することでこれは成し遂げられる。エネルギー交換衝突
エネルギー交換衝突は2つの流出粒子が2つの流入粒子よりも異なるエネルギ
ー準位である点を除いて、前の節で述べた通常の衝突と同様に実行される。音速
以下の流れに対しては、3つのエネルギー順位である0(停止)、1、及び2が
あるのみである。エネルギーを保存させるために、可能なエネルギー交換衝突は
2つのエネルギー1の粒子からなる1つの対にのみ起り、他の対はエネルギー2
の粒子及び停止した粒子からなる。これらの衝突を特別にする点
は通常の衝突の最大限の割合(rate)では起らないことである。従って、エネルギ
ー衝突のクラスは特定の割合(rate)でのみ起ることが可能である。この割合は2
つの成分で記述され、これは進行(forward)及び逆行(inverse)である。これ
らの割合(rate)は整数として記述され、以下のような衝突処理で実行される。
ここで、R1→2及びR2→1は異なるエネルギー準位の状態間の粒子の交換を制御
する割合(rate)である。エネルギー交換衝突は、2つのエネルギー1の粒子(状
態i及びj)が1つのエネルギー2の粒子及び1つのエネルギー0の粒子(状態
k及びl)若しくはこの反対も起るように衝突するとして構成される。通常の衝
突と同様に、質量、運動量及びエネルギーは常に保存する。これらの割合(rate)
は温度を基にして決定される。
エネルギー交換衝突で用いられるこの2つの割合R1→2及びR2→1は流体の温
度を基にして計算される。しかし、流体の温度はシミュレーション、特に熱伝導
を含むシミュ
レーションの全体にわたって一定である必要はない。これらの割合は局所的な温
度を反映するためにシミュレーションの間で動的に最新のものにしなければなら
ない。
上のこれらの2つの割合は独立して計算されない。2つの割合によって与えら
れる適切な情報はこれらの比のみである。全体的なRateは比であり、
ここで、Rateは次に記すように温度Tから計算される。
積の項を展開して、次式を得る。
音速以下の流れに対して満足する温度の範囲は1/3と2/3との間である。
温度Tが0.5より小さいときはRateは1より小さく、温度が0.5より大きい
ときは1より大きい。このRateから2つのエネルギーの割合が決定され
る。しかし、エネルギー交換の割合は許される精密さの範囲で変倍化されなけれ
ばならない。
オーバーフロー及びアンダーフローの条件に関する同じ関係はこれらの衝突演
算にも適用される。これらの条件はエネルギー交換衝突を可能にし、その上、禁
止もここでしなければならない。過緩和(over-relaxation)(粘性減衰)
図3を参照すると、物理的過程のシミュレーションシステムは手順120に従
って各流体ボクセルに対する粘性減衰を伴う衝突を実行していることが解る。シ
ステムがボクセルを平衡状態(ボルツマン)にするために、手順120はボクセ
ルに対する通常衝突の演算を実行する衝突の段階(ステップ122〜134)及び
システムが粘性減衰を実行する粘性減衰の段階(ステップ136〜148)からな
る。
衝突の段階の初期で、システムは規則カウンターを1つの値に初期化する(ス
テップ122)。次に、規則カウンターに対応する規則によって状態ベクトルの
状態に影響するシステムが決定し、規則は4つの状態に影響することを仮定して
、システムは変数i,j,k及びlにこれらの同一状態をロードする(ステップ
124)。(しかし、以下の議論は各規則が4つの状態に正確に影響することを仮
定する。システムは状態の異なる数に影響する規則に対応する。)i,j,k及
びlをロードした後、上で議論した通常の衝突演算若しくはエネルギー交換衝突
演算のどちらかを用いて、
システムはNi、Nj、Nk及びNlの関数として散乱した粒子の数Nscattを決定
する(ステップ126)。このシステムはNi及びNjからNscattを引き、Nk及
びNlにNscattを加える(ステップ128)(若しくはアンダーフロー又はオーバ
ーフローを避けるため元の変化が省かれるならば0となる)。上で議論したよう
に、ある影響された状態でアンダーフロー若しくはオーバーフローの条件が粒子
の交換の原因となるならば、システムは粒子の交換を実行しない。次に、システ
ムは規則カウンター(r)に対応する配列入力(Nscatt[r])にNscattを記憶させ
(ステップ130)、規則カウンターを増やす(ステップ132)。増加した規則カ
ウンターが規則の最大数を越えないならば(ステップ134)、この最大数は好ま
しくは276であり、システムは増加した規則カウンターに対応する規則に基づ
いたi,j,k及びlに値をロードし(ステップ124)、上述で述べた衝突の段
階を続行する。
増加した規則カウンターが規則の最大数を越えたならば、システムは粘性減衰
の段階に入る。最初に、システムは1つの値に規則カウンタを再初期化する(ス
テップ136)。次に、システムは粘性減衰によって散乱する粒子の数であるNV R
を決定する。
ここで、ωは緩和パラメータで、Nscatt[r]は規則カウンタに対応する配列入
力で、「noise」は0と1の間の乱数である(ステップ138)。「noise」の使
用することで力NVRを整数にする値切り捨ての演算が特定の方向にNVRを統計学
的に偏らせないことを保証する。NVRを決定した後、システムは変数i,j,k
及びlに規則カウンターに対応する規則に作用する状態の識別情報(identity)
をロードする(ステップ140)。システムはNi及びNjからNVRを引きNscatt
をNk及びNlに加える(ステップ142)。衝突演算に関して述べたように、この
交換は影響を及ぼしている状態においてアンダーフローもしくはオーバーフロー
の条件となるならば、システムは粒子の交換を実行しない。次に、システムは規
則カウンタを増やし(ステップ144)、この増加した規則カウンタが規則の最大
数を越えないならば(ステップ146)、増加した規則カウンタに対応する規則に
対するNVRを決定し(ステップ138)、上述のように粘性減衰のステージと共に
続行する。別な方法で、システムは衝突処理を終了する(ステップ148)。非すべりの表面動力学
上で述べた全ての衝突演算は境界条件によってかなり複雑になる。物体の表面
がボクセルを占めるとき、全ての通常衝突及びエネルギー交換衝突の演算は特定
のサイトにおける衝突を防止しなければならない。そこでは衝突演算の特別な形
が起こらねばならない。これらの演算は粒子と他
の粒子が衝突するのではなく、その代わり物体の表面での流入粒子と衝突する。
運動量の一部は物体の表面に分け与えるので、これらの衝突は流体の運動量を保
存させない。境界衝突がどのように起こるかで決まる表面のタイプの異なる幾つ
かのクラスがある。非すべり表面での衝突である第1のクラスはこの節で詳細に
説明し、他の表面クラスは以下で述べる。
非すべり表面は流入粒子が入射してきた方向とは反対方向に同じ速さで表面で
跳ね返る反射(bounce back)という特質をもつ。非すべり表面衝突のこのタイプ
は「反射」としても知られている。反射衝突の効果は物体の表面で静止する流体
を持ち込むことである。
ボクセルが非すべり物体の表面上にあるならば、
ここで、iは54個の状態の1つであり、―iは状態iと反対方向に同じ速さ
を有する状態を表す。粒子速度の状態空間は対称であるので、あらゆる状態iに
対して反対方向で同じ速さの状態である−iが存在する。例えば、状態(1,0,
−1,0)がiであるなら、−i状態は(−1,0,1,0)である。
−i状態のオーバーフローは起こりえない、反射が起こった後、そのボクセル
での粒子は新しい外側の方向に応じて移動するので−i状態のオーバーフローは
起こりえず、このことは次の時間ステップでこれらのボクセルは空になることを
保証する。
音速以下の流れに対する54個の状態のうち3次元空間内で実際に移動するの
は46状態のみである。これはw次元での速度成分のみを有する2つのエネルギ
ー準位2の粒子(0,0,0,2)及び(0,0,0,−2)に6つの静止した粒子を加え
ることによるものである。対称性により、移動状態の半分のみ(23(の状態)
)がある表面についての内部状態(内側への状態)とみなされる。反対状態であ
る他の23(の状態)は外側に向いた状態である。音速以下の流れに対して、状
態−iは23の状態のばらばらになった(disjoint)組の1部分であるので、状態
iは54の全状態のうちの1部分の23状態である。すべり表面の動力学
高いレイノルズ数で、物体の表面での流れは物体表面での複雑な流れの薄い層
の領域である乱流の境界層を形成する。高レイノルズ数の流れをシミュレーショ
ンするために、この層を完全に分解する必要がある。しかし,本当にこれをする
ための分解能の必要条件は天文学的なものとなる。すべり表面は境界層の外側表
面を表すのに用いられる手法であり、これは乱流境界層を分解することを避ける
シミュ
レーションを可能にする。
図4を参照すると、すべり表面に適用する微視的動力学は手順150によって
用いられていることが解る。手順150のステップは以下で議論する。
折り返し防止(アンチエイリアシング)(ステップ152)
折り返し防止とは格子と結び付いていない表面に対するより大きな分解能を与
えるためのすべり表面を用いる手法である。すべり表面に対して、ボクセルを増
加して表面を分離化する(discretizing)ことは境界層をモデル化するのに十分な
、正確さを与えない。非すべり表面では全ての流入粒子は反対方向に反射される
ので、折り返し防止は非すべり表面を必要としない。しかし、すべり表面にぶつ
かる粒子は表面で反射されずに、表面上(表面線(surface line))ですべる(conti
nue down)。表面の勾配はぎざぎざのある多くの段差からなる階段状である(slop
in the surface)ので、接線方向に移動する粒子はこれらのぎざぎざに突き当た
る。
折り返し防止の手法とは2つの部分つまり流体部分及び表面部分にボクセルを
分けることを可能にすることを用いる。2つの部分の折り返し防止されたボクセ
ルの分布は幾何学によって決定され、物体に費やされるボクセルの割合に依存す
る。
折り返し防止の処理は一時的に2つの分離したボクセルつまり流体ボクセル及
び表面ボクセルに折り返し防止されたボクセルに分ける。これらの一時的なボク
セルの各々に
置かれた粒子の数は流体であるボクセルの割合を基にしたものである。計算を以
下に示す。
流体の割合であるPfは因子Pscaleによって整数に変倍されて0と1の間の実
数である。Randは同じPfactorによって変倍されて0と1の間の乱数である。こ
れは完全な表現が再規格化されFloor関数(operation)によって負の無限大に端数
を丸められるときに失われる精度を戻すために用いられる。端数の変倍は整数領
域での表現に変換する必要がある。
折り返し防止をされたボクセルのあらゆる粒子の状態iに対して、2つの分離
した状態が上述の処理によって生成される。これらの2つの独立した状態は流体
及びすべり-表面のボクセルとして分離して扱われる。流体部分は前に述べたよ
うに衝突する流体ボクセルとして処理される。表面部分は残りのサブセクション
で述べるように表面ボクセルとして厳密に処理される。全ての微視的動力学ルー
チンが用いられた後、2つの独立した状態は1つに再び組み合わせられる。
反射(Bounce-Back)の割合(ステップ154)
すべり表面は鏡面のような表面における反射する流入粒子の割合を設定するこ
とでもできる。前に述べたように表面が非すべりであるならば、すべらない流入
粒子は反射する。反射の割合を設定することは100%のすべりを与える非常に
低い皮膜動摩擦の代わりに、皮膜動摩擦の範囲で特長づけられるすべり表面を可
能にする。
流入粒子の反射の割合のメカニズムは以下の式で記述される。
反射の割合であるPbbは、因子Pscaleで整数に変倍された0と1の間の実数
である。Randは同じPscale因子によって変倍された0と1の間の乱数である。
これはこの表現がFloor関数(演算)によって負の無限大に再規格化され端数を丸
められるとき失う精度を戻すために用いられる。
Nbbは状態iから状態−iに反射される粒子数である。
非すべり表面の微視的動力学の節で述べたように、N-iは状態iの反射状態の数
である。Niは状態iの状態数であり、iは23個の流入状態の組の一部である
。実際の23個の状態の組は表面の垂線の方向によって決定される。
Niは鏡面上での反射のようにすべり表面で反射する粒子のみが含まれる。
散乱(ステップ156)
の出射角度で表面で跳ね返る特質をすべり表面は有することが解る。すべり表面
の目的は流入粒子の運動量の接線成分を保つことである。流入粒子の垂直な運動
量は保たれる、すなわち、元の垂直方向の運動量の大きさの2倍分変化する。こ
の過程は鏡面反射としても知られている。
粒子の状態空間は離散的であるので、ある表面の垂線は連続的な尺度で変動す
る必要がある。従って、正確な垂線を基準にして正しい角度で流出する粒子を規
定するある1つの状態はないといってもよい。この理由のため、正確な角度とな
る本当の運動量を得るために、多数の流出状態の重み付けした平均を用いる必要
がある。流入粒子を正確に反射させるために、現在実行している散乱は3つから
6つの外部状態(out-state)を用いる必要がある。
音速以下の流れに対して、23個の流出状態の組に散乱される必要のある23
個の流入状態がある。各々の流入状
態iに対して、以下の演算の組は流出状態jの各々に対して実行されなければな
らない。23個の流入状態iのどれか1つに対して3から6のjの状態がある。
ここで、iは流入粒子の状態であり、jは流入粒子の割合Pj(*)は変倍化さ
れている流出状態の1つである。散乱の割合は因子Pscaleによって変倍化され
た0と1(を含む)の間の実数である。Randは同じPscale因子によって変倍化
された0と1の間の乱数である。
流入粒子数(総数)Niは(上式のステップ2で示したように)流出状態の1つ
に各散乱で減ぜられるので、次の出力状態に適用する割合はこれを説明しなけれ
ばならない。例えば、1つの流入状態が3つの流出状態に等しく散乱されるなら
ば、Niに用られる割合は1/3未満である。その代わりに1/3、1/2そし
て1になる。このようにして、すべての流入粒子は完全に散乱されることを保証
する。
上で述べた散乱処理の最後の2つのステップはあらゆる状態jに対して実行さ
れる必要はない。これらの演算は実
行される特定の散乱則に依存する。3番目の演算は超過エネルギーの量Exsが散
乱処理にわたって累算されることによるものである。多くの散乱法則はあいにく
エネルギーを保存しない。後で修正されるので、散乱処理の間で生成されるこの
超過エネルギーは累算される。全てのボクセルに対して累算されるので、Exsは
下付き文字のjを含まないことを覚えておかねばならない。
散乱処理の最後の演算は通常の外部状態(out-state)に加えて共同状態(co-sta
te)の使用を規定する。幾つかの場合、外部状態と共同状態の結合は望むべき運
動量を生成する必要がある。この式に記載されているように、共同状態の使用は
質量の超過を生成する。2倍もの多くの粒子が内部状態(in-state)から減じられ
るように外部状態及び共同状態に置かれる。共同状態の数の増加に加えて、超過
の質量カウンタMxsは生成される超過の粒子の数によって増加する。後ですべり
処理において修正されるので、散乱処理の結果として生成される超過の質量は累
算される。超過のエネルギーカウントを有するように、この値は全てのボクセル
に対して累算される。
外部状態及び共同状態の組は23個の内部状態に重複する。各23の内部状態
を散乱するために用いられる最小の3つの外部状態があるので、この重複は起る
。これにより散乱処理の間に幾つかの外部状態若しくは共同状態で起るオーバー
フローの可能性が現れる。オーバーフローが起る
ならば、用いることができる2つの可能な戦略がある。最初に、オーバーフロー
の条件をもつ表面のボクセルに対する微視的動力学処理は非すべり表面に逆戻り
させることができる。この場合、その時間-ステップの間に散乱処理によってな
される仕事の全てを消す必要がある。全ての流入粒子は非すべり表面の微視的動
力学によって反射される場合に、ボクセルは非すべり表面として仮われる。反射
に逆戻りすることは質量及びエネルギーを保存する系を可能にするが、あいにく
すべり表面に予想される正確な運動量は保存されない。
第2の方法は、オーバーフローが状態カウントをリセットさせる代わりに、状
態粒子カウントを最大値で保留する(停止する、止める(clamp))ことである。こ
の場合、質量、エネルギー及び運動量は保存されないが、反射の可能性に逆戻り
するよりも、結果はすべりの表面の特性にかなり近づく。
押込み/引出し(pushing/pulling)(ステップ157)
すべり表面に対する結果を処理する次のステップは「押込み及び引出し」と呼
ばれるものである。流入粒子が表面で反射された後、流入粒子の接線方向の運動
量は保存するので、この散乱処理は慎重に構成しなければならない。しかし、散
乱処理は正確な垂直方向の運動量を生成することを保証しない。垂直方向に流体
を押込み若しくは引出しすることによって垂直方向の運動量を正確にするために
用い
られる。垂直方向の運動量が小さければ流体を押込み、大きければ引き出す。
この手順は2つの部分に分解する。最初の段階で、垂直方向の運動量の誤差を
決定せねばならない。第2の段階は、第1の部分で計算された量によって流体が
実際に押込まれたり引出されたりする微視的動力学である。
垂直方向の運動量の過剰分(若しくは不足分)は、散乱する前の垂直方向の運動
量を比較することによって決定される。散乱後の垂直方向の運動量は散乱前の垂
直方向の運動量と等しいが反対方向である。垂直方向の過剰NSの計算は以下に記
す。
びafterの識別子は散乱処理が起る前後の垂直方向の運動量であることを示す。o
ut及びinの識別子は内部へ(表面の内部へ)及び外側へ(表面から離れて)垂直方向
に向いた運動量であることを示す。上に述べたように、垂直の過剰分は運動量の
前後の差である。しかし、散乱後では、全て外側に散乱された状態になるので、
全ての内側に向いた状態は空であることが知られている。従って、散乱後では内
側及び
外側に向いた垂直の運動量は0になることが知られており、上式から省略される
。内側及び外側の垂直の運動量は反対方向であり、従って、反対の符号を有する
。このため、差を得るために、内側に向いた垂直方向の運動量は外側に向いた垂
直方向の最終的な運動量に加えられる。
3つの成分は以下のようにして計算される。
れている。
状態速度ベクトルはc iで表されている。これは4つの成分をもち、その各々
は状態空間の4次元の1つである。前に述べたように、格子気体のアルゴリズム
は各々の格子方
向の各々での整数の速さで単に移動する粒子に制限する。
押込み/引出し処理は現象をかなり複雑する。この処理は上で計算された垂直
方向の過剰分をより多く取り除くために設定する。この目的は垂直方向の運動量
のみ影響されるように、確かな外部状態(out-state)から他の外部状態(out-stat
e)に粒子を遷移することによって成し遂げることである。これらの外部状態(out
-state)の対は前もって決定されたリストに含まれる。外部状態(out-state)の対
のリストの3つの組がある。粒子は正確な割合の3つのリスト間の法則に従って
遷移しなければならない。この割合は表面の
この処理は以下の擬コード(pseudocode)によって記述される。
ここで、押込み/引出し則(これは2つの外部状態(out-state)の対である)は1
つ以上の粒子を原状態である外部状態(out-state)の1つから到達状態である他
の外部状態(out-state)に遷移させる原因となる。空の原状態若しくは満杯な到
達状態の数の故に、ある規則が妥当でないならば、規則のリストから他の規則が
選択される。リスト内の規則が妥当でないならば、押込み/引出し処理は垂直方
向の運動量を完全に修正できない。3つのリストの各々の規則が妥当である総数
はP0、P1及びP2のあらかじめ決められた重みによって制御される。
押込み/引出し規則は状態の対を記述し、原状態及び到達状態を特定する。2
つの状態が同じエネルギー準位でない場合、これは頻繁に起るが、規則が妥当で
あることは運動量を変化させるだけだはなくエネルギーをも変化させる。押込み
/引出し規則を妥当なものにするのは以下の処理によって成される。
ここで、δは付号のある整数で、処理が押込みであるな
らば正で、処理が引出しならば負である。概して、δは±1であるが、しかし、
垂直の過剰分Nsが大きい場合には、垂直方向の過剰分の運動量より早く修正す
るために増加する。Nsは原状態の総数であり、Ndは到達状態の総数である。En
は規則の数nに対して原状態から到達状態に1つの粒子の遷移するのに起因す
るエネルギーの内部変化である。全エネルギーの変化は散乱処理で用いられた同
じ過剰エネルギーカウンターExsを累算する。押込み/引出し規則はエネルギー差
(delta)Enと同様に状態s及びdを規定する。Ns及びNdで規定される2つの状
態の総数がオーバーフロー若しくはアンダーフローするならば、規則が妥当であ
ることから完全に保存しなければならない。
冷却(cooling)(ステップ158)
冷却処理は散乱及び押込み/引出し処理の両者が生成した過剰エネルギーを取
り除く処理である。冷却処理はボクセルでのエネルギー準位を減ずる幾つかの冷
却規則を何度も選択することによって、全ての過剰エネルギーExsを取り除こう
とするものである。冷却規則は2つの原状態及び到達状態の4つの状態を規定す
る。2つの原状態は到達状態と同じ運動量を有するが、2つの原状態のエネルギ
ーの合計は2つの到達状態の合計よりも高いエネルギーを有する。両方の原状態
から両方の到達状態に遷移する粒子は、この処理での質量及び運動量は保存され
る一方、エネルギーは減少する。冷却規則が可逆ならば加熱(heating)もなされ
る
ことをここでのべなければならない。
冷却規則を妥当なものにすることは以下に示すように為される。
ここで、Ns1及びNs2は2つの原状態の総数であり、Nd1及びNd2は2つの到
達状態の総数である。この状態s1、s2、d1及びd2は冷却規則によって規
定される。冷却規則によって取り除かれるエネルギーの総計は、2つのグループ
間のエネルギー差Enを掛けた原状態から到達状態に移動される粒子の数δに等し
い。このエネルギー差はあらゆる規則nを明確にする。冷却規則は過剰エネルギ
ーExsが取り除かれるまで冷却規則のリストから処理される。リストに与えられ
ている冷却規則のどれも妥当でなければ、冷却処理は目標に到達することができ
ずに終了する。
冷却規則に明記された4つの状態のどれもが状態カウントのアンダーフロー若
しくはオーバーフローを発生させない。冷却規則が選択された結果として4つの
状態のどれもがオーバーフロー若しくはアンダーフローを起こすのであれば、規
則は選択されない。
ダイエッティング(Dieting)(ステップ160)
ダイエッティング処理は上で述べた冷却処理と非常に似ている。質量を減少さ
せるダイエッティング規則が多く選択されることによって、散乱処理の間に累積
された過剰質量mxsを取り除く。ダイエッティング規則は2つの原状態及び1つ
の到達状態を明示する。2つの状態のエネルギー及び運動量の和は、1つの到達
状態と同じエネルギー及び運動量となる。エネルギー及び運動量が保存される一
方、粒子を各々の原状態から取り除き、さらに粒子を1つの到達状態にすること
はボクセルの質量を減少させる原因となる。
以下にダイエッティング規則の選択の手法を記す。
ここで、Ns1及びNs2は2つの原状態の総数であり、Ndは到達状態の総数で
ある。状態s1、s2及びdはダイエッティング規則によって明示される。ダイ
エッティング規則によって取り除かれる質量の量は原状態から到達状態に移動し
た粒子数δに等しい。過剰質量Mxsが取り除かれるまで、ダイエッティング規則
はダイエッティング規則のリストから処理される。どのダイエッティング規則も
妥当でな
いならば、目標に到達することができずにダイエッティング処理は終了する。
ダイエッティング規則に明示される3つの状態のどれも状態カウントをアンダ
ーフロー若しくはオーバーフローを発生させない。ダイエッティング規則が選択
された結果として、これらのどの状態もオーバーフロー若しくはアンダーフロー
を起こすのであれば、規則は選択されない。
表面衝突(ステップ162)
表面ボクセルを処理する最後のステップは制限された衝突の規則の組を実行す
るものである。この表面衝突の処理は流体ボクセルに対して記述したものと同じ
である。1つの例外は、衝突を許されている状態の組が出て行く状態のみに制限
されていることである。
移流(中間・相互(Inter)ボクセル演算)
粒子の微視的動力学に加えて、直線で囲まれた3次元格子に沿って、粒子も移
動(移流)する。各々の分離した状態は、3次元のx,y及びzの各々(の方向)で
の整数の速さを有する格子に沿って移動する粒子を表す。整数の速さは0、±1
及び±2をからなる。速さの符号は軸に沿って移動する粒子の方向を示す。これ
らの線速は0から4までの範囲のエネルギー準位を有する粒子に対応する。0か
ら2までのエネルギー準位のみが音速以下の流れに必要であり、全てが5のとき
は音速に近い流れのシミュレーションに必要となる。
移動演算は計算上非常に単純である。各時間ステップで、状態の全体の総数は
現在のボクセルから到達するボクセルに移動しなければならない。同時間に、到
達するサイトでの粒子は現在の位置からそれ自身の到達するサイトに移動してい
る。例えば、+1x及び+1y方向(1,1,0,0)に移動している1つのエネル
ギー準位が1である粒子は、現在の格子サイトからX方向に+1、y方向に+1
だけ移動しなければならない。この粒子は(1,1,0,0)の移動の前に同じ状態
の到達格子サイトで終わる。微視的動力学の次の段階が他の粒子及び表面の局所
的な相互作用を元にした状態に対する粒子カウントを変化させ得る。そうでなけ
れば、全ての粒子は、同じ速さ及び方向で格子をたどって移動し続ける。
与えられた格子サイトに粒子を配置する全ての移動演算は、ボクセルが再び衝
突する前に起らなければならない。全ての微視的動力学演算は局所的な1つのボ
クセルに実行され、微視的動力学演算の処理が開始される前に全て完了する必要
はない。
静止した状態は移動状態にならないことをここで記すべきである。加えて、粒
子は3次元内で移動状態になるのみである。w次元の0でない状態の値は移動さ
れるべき格子サイトに作用しない。例えば、−1zで+1wの状態ベクトル(0,
0,−1,1)である1つのエネルギー準位が1である粒子は、同じ状態ベクトル(
0,0,−1,1)でサイト−1
の粒子として移動しなければならない。全く移動しない(0,0,0,2)及び(0,
0,0,−2)の2つのエネルギー準位が2である状態もある。
図6を参照すると、上述したシステムは、メモリバンク14及び規則記憶16
と結合したアプリケーション特有の集積回路(「ASIC」)12からなる機能ユ
ニット10を用いて実行できることが解る。システムは単一の機能ユニット10
で実行されるが、ASIC12は、数百若しくは数千もの機能ユニット10が共
に接続され、パフォーマンスを改善するために平行に演算するように設計されて
いる。
ASIC12は、命令セットを少なくしたコンピュータ(「RISC」)プロセ
ッサ20、命令キャッシュ22及びRISCインターフェース論理をそれ自身か
らなるプロセッサ制御ユニット(「PCU」)18からなる。プロセッサ制御ユ
ニット18は中心となるコントローラとしての役割を果し、ベクトル的な命令を
幾つかの機能ユニットに発する。この機能ユニットはコプロセッサとしての役割
を果し、プロセッサ制御ユニット18からの命令を受け取り、タスクを完了する
ために命令の定義済みのシーケンスの組を実行する。プロセッサ制御ユニットの
命令は、メモリバンク14にダウンロードされ、そこからプロセッサ制御ユニッ
ト18によって実行される。これらの命令はプロセッサ制御ユニット18を制御
し、プロセッサ制御ユニット18はASIC12内の他の機能ユニットに命令を
発する。
PCU18に対して命令を記憶することに加えて、メモリバンク14は関係づ
けられたデータ構造とオーバーヘッドの情報とを一緒にASIC12に割り当て
各ボクセルの粒子の状態を記憶する。メモリバンク14によって与えられる記憶
量はASIC12が全シミュレーション体積の1部分として割り当てることでき
る分解能の量を必要とする。パイプラインアクセスモードで高いデータ幅の容量
のため、標準的な非同期のDRAMが選ばれてきたが、メモリバンク14は標準
的な商品であるシンクロナスDRAMの組から構成されている。微視的動力学の
制御論理26及び微視的動力学のデータの経路28を含んでいる微視的動力学ユ
ニット(「MDU」)は、粒子の動力学を処理する機能ユニットである。これは粒
子間の互いの相互作用も表面を有する粒子からもなる。微視的データ経路28は
ボクセルデータの計算を実行するために必要なハードウエアからなる。微視的動
力学制御論理(回路)26は、データ経路を設定し、規則記憶装置16から制限さ
れる規則のセットに基づいたデータを選択する。規則記憶装置16は、速いアク
セス時間及び変更される微視的動力学法則をメモリにロードする能力を提供する
ためにSRAMから構成されている。
マルチーポートRAM30は微視的動力学データ経路28が現在処理している
粒子の状態及び関連するデータのレジスタファイルとしての役割を果す。6ポー
トのスタティックRAM30は、微視的動力学データ経路28に対して2
56つまり64ビットの入力及び2つの読み込みポートと2つの書き込みポート
を有する。加えて、RAM30は、マイクロブロックユニット32に対する読み
込みポート及び書き込みポートを提供する。ポートのこの3つのセットは、統計
(処理)と同様に、RAM30及びメモリアクセスユニット34の間で同時に発
生するデータの移動に用いられる。メモリアクセスユニット34は、ASIC1
2内で粒子の元と到達先のデータの移動の中心であり、メモリバンク14を制御
する。
図7及び8を参照すると、1つのボクセルを処理するために必要な8ビットデ
ータ経路29と同一の8個のコピーを提供することによって、平行に微視的動力
学データ経路28は8個のボクセルを処理していることが理解できる。微視的動
力学制御論理回路26はSIMD(単一命令、多データ)コントローラとして構成され
、全ての8個のサイトは独立したボクセルデータに同じ演算を実行するために設
定する。
バスインターフェースユニット(「BIU」)36は、例えば、システム制御
に用いられる「ホスト」プロセッサの一般的な目的のように、外部プロセッサに
ASIC12に接続される。BIU36の主な機能は、ASIC12に初期化情
報を与え、さらにASIC12からホストプロセッサに統計的な情報を送るため
にシステムのホストプロセッサのために経路を提供することである。加えて、B
IU36は、メモリバンク14がホストプロセッサにアクセス
可能であるので、メモリアクセスユニット34に経路を提供する。
移流ユニット(「AU」)38は、データ経路を提供し、立方格子をたどって、
粒子が移流する(移動する)ことを可能にするように制御し、もう1つのASI
C12が持っている到達ボクセルに移動するこれらの粒子の保持もする。もう1
つのASIC12が持っているボクセルに粒子を送り渡すために、AU38は通
信ポートをもっている。
マイクロブロックユニット32はMDUで処理されたデータの統計計算するた
めの責任を果す。ボクセルデータがMDU内で処理された後、マイクロブロック
ユニット32は統計(データ)を生成するためにボクセルデータを用いる。この
データはメモリアクセスユニット34を介してメモリバンク14に送り戻される
。
ここでの統計とは表示及び解析する目的でシミュレーションを実行することに
よりデータを取り出す方法である。以下で詳細にある瞬間的な値の計算に関して
の全ての統計計算を記す。しかし、全てのこれらの値は多数の時間-ステップに
ついて累算もされる。累算できる時間-ステップの正確な数は、値が保持できる
までの正確さに依存する。
システムが直接サポートする4つの統計量のタイプは、状態質量、質量、エネ
ルギー及び運動量である。以下に示すように、これらの統計量はマイクロブロッ
クを基にして計算される。多数のマイクロブロックが一緒になった統計
量を加えて、より大きい体積に対しての統計量を累算することが可能でもある。
加えて、各々の統計演算は、マスクを与えることにより、より小さいマイクロブ
ロックの統計量を集計する能力をも提供する。
状態質量はマイクロブロックのセルの2×2×2配列の中に特定の状態を占め
る粒子の数である。以下のように決定される。
ここで、Ni(x)は、xで表されるマイクロブロックの位置での8個のボクセ
ルのうちの1つの状態の数である。マイクロブロック全体にわたって状態質量Di
は状態ごとに累算される。このM(x)は、論理和演算によって論理的「1」に
設定されたときボクセルxの累算を可能にするマスクである。M(x)がボクセル
xに「0」にセットするならば、0はそのボクセルに対して累算される。
質量は、マイクロブロック内のすべての粒子を用いるのであって、与えられた
状態の粒子を用いないので状態質量とは異なる。以下に述べるように質量は状態
ベクトルから計算される。
ここで、Ni(x)は、xで表されるマイクロブロックの位置での8個のボクセ
ルのうちの1つの状態の数である。上で見ることができるように、質量Nは与え
られたマイクロブロックに対する全ての状態での粒子の和である。
流体のエネルギーは質量に速度の2乗を掛けた2分の1であるとして決定され
る。格子気体モデルにおいて、エネルギー準位は離散的な速度状態の組に制限さ
れるために量子化される。各分離化した状態は離散的なエネルギー準位の1つと
なる。マイクロブロックのエネルギーは以下のように単純に計算される。
ここで、Ni(x)は、xで表されるマイクロブロックの位置での8個のボクセ
ルのうちの1つの状態の総数である。UTotは特定のマイクロブロックでの全エ
ネルギーであり、Eiは状態iの離散的なエネルギー準位である。
流体の運動量は4成分からなり、各々4次元の1つである。運動量は質量×速
度である。この運動量は以下のように計算される。
あるいは、この式はベクトル表記で明記することができる。
ここで、Ni(x)は、xで表されるマイクロブロックの位置での8個のボクセ
ルのうちの1つの状態の総数である。x次元での状態iに対する格子速度はCxi
によって示される。状態iに対する4次元の速度ベクトルはc iによって示され
る。
他の統計量はこれまでに計算してき統計量から直接得られ、これらは速度、温
度及び力を含む。
流体速度は4成分からなり、各々4次元の1つである。各成分は速さによって
与えられる状態での粒子の数を掛けることで決定される。その次元での状態が示
す速さによって与えらる状態の粒子の数を掛け、粒子の全数で和を割って、各成
分は決定される。これは運軌量を質量で割っても表すことができる。この4成分
は次のように計算される。
ここで、uxはx次元での平均の格子速度である。同様のことはuy、uz及びuw
にも当てはまる。Nは上で記したように密度である。速度は次のようにベクト
ル表示でも表すことができる。
温度の計算は計算するのにより複雑な巨視的データの1つである。この値は以
下のように質量、エネルギー及び速度から計算される。
ここで、UTotはエネルギー、Nは質量、uは流体速度である(全て上で記し
たもの)。
力の計算は流体が物体の表面に及ぼしている(assert)力を決定するのに用いら
れる。これは表面で粒子の衝突が発生する前の運動量から衝突後の表面境界での
運動量を減じることによって決定される。この力も4次元のベクトル量である。
この計算をベクトル表示すると以下のようになる。
(衝突の)前後の運動量ベクトルP Before及びP Afterは、上の運動量の節で
述べたように計算される。表面での流体の衝突のために失われる運動量を計算す
ることによって、力は物体の表面に分け与える有効運動量を測定することと同じ
である。この運動量の計算は全てのマイクロブロック内のボクセルについて、上
で記したように計算される。しかし、力は物体の表面に存在するこれらのボクセ
ルに関係するのみであり、全てのマイクロブロック内のボクセルは表面にいる必
要はない。しかし、厳密に流体であるこれらのボクセルに対して、衝突の微視的
動力学は運動量を保存することを保証する。(衝突の)前後の運動量に流体セル
の運動量に含むことは正確な力の計算を可能にすることを無効にする。代わりに
、マスクM(x)は運動量の計算で累算されることから、いくつかの流体ボクセル
を不可能(計
算対象外)に設定することができる。
図6を再び参照すると、ASIC12のプログラムモデルは主なものであり、
ASIC12からなる特定目的のコプロセッサの1組にベクトル的な命令を発行
するRISCプロセッサ20であることが理解できる。RISCプロセッサ20
は、流体の処理の重要な内部制御ループ(critical inner control loops)を記
憶できるPCU18内に命令キャッシュ22を有している。RISCプロセッサ
20はメモリバンク14に記憶される全てのデータに直接アクセスする。
RISCプロセッサ20は32ビット整数の標準的な組のアルゴリズム及び論
理演算を実行することができる。要するに、RISCプロセッサは標準プロセッ
サが符号化するのと同様にメモリ内のプログラムを実行するために符号化するこ
とができる。
メモリマップはプロセッサの4GBアドレス空間内で3つのセグメントを生成
するASIC12に確立されている。
1.)MAUによって制御される外部メモリバンクに直接アクセスする2GB(マ
イナス8MB)。
2.)機能ユニットに所有されデコードされるレジスタ及び命令をマップされる
ASIC上のメモリの8MB。
3.)BIUを介して接続されるチップ外のホストメモリアクセスの2GB。
PCU内の論理(回路)はRISCプロセッサによって
発せられるアドレスをデコードし、送られるべき場所を決定する。局所的なメモ
リの要求はMAUに送られる。機能ユニット命令からなるレジスタをマップされ
たメモリの読み書きは、適当な機能ユニットに送られる。ホストメモリの参照は
ホストシステムへの要求を送るBIUに送られる。
MAUからメモリ書き換えを要求できる4つの機能ユニットがあり、(それぞ
れ)プロセッサ制御ユニット、バスインターフェースユニット、マイクロブロッ
クユニット及び移流ユニットである。MAUはこれらの4つのユニットからの要
求間で仲裁し、単一及び多数のワード転送を可能にする。MAUはバースト転送
をサポートするDMAエンジンを保持する。MAUからの許可を受けて、転送が
完了するまで、ユニットはMAUに接続し、データを移動したり受け取ったりす
る。
RISCプロセッサは幾つかの機能ユニット及びメモリアクセスユニット間の
大部分のデータパケットの転送を始める。このモデルの機能ユニット若しくはコ
プロセッサはシステム若しくはASICレベルの処理の理解を必要としない。ユ
ニットはRISCエンジンによって処理されるデータ及びタスクが与えられ、そ
のデータを局所的に処理する。例えば、メモリアクセスユニットによって制御さ
れるメモリからデータの特定のブロックを取り出すために、プロセッサはマイク
ロブロックユニットに命令しマルチポートRAMに出す(書き込む)。処理が完
了した後、RIS
Cエンジンは、MPRからのデータブロックを取り戻すためにマイクロブロック
ユニットに命令し、メモリ内の特定の位置に戻す。
メモリ要求を開始するPCUに加えて、MAUメモリ転送の2つのチップ外の
元があり、これはBIUを経てホストシステムによって開始されるメモリ要求及
びAUの通信ポートを経て他のプロセッサから受けられるデータである。
RISCエンジン及び局所的に記憶保持されているデータブロックからの単一
の命令に基づく数十から数百、数千のサイクルのタスクのルーチンを処理するこ
とがコプロセッサは可能である。データ構造を最新のものにしたり次に処理する
セグメントを決定するための幾つかの計算をすることに加えて、命令を発し他の
ユニットの状態をチェックするのに十分自由な時間をRISCエンジンは与えら
れる。
書き込みをマップされたメモリを介してRISCプロセッサは機能ユニットに
命令を発する。機能ユニットに対して命令の演算コードのほかに、書き込みアド
レスは機能ユニットを規定する。書き込みによって与えらる32ビットのデータ
は演算コードのパラメータである。各演算コードはデータバスをどのように解釈
するかを規定する。各機能ユニットは一度に1つの命令を処理できるのみである
。1つのユニットは前に発した命令が処理中であるならば、幾つかの新しい命令
はPCUで保留される。機械の現在の状態を決定するために各々の機能ユニット
の状態とレジスタ
を読み込むのにもRISCプロセッサは自由である。命令をマップされたメモリ
に発するための必要な複雑な制御ループからRISCプロセッサの負担を軽くす
るために、幾つかの命令をPCU内で待機するように命令待ち行列は規定されて
いる。ユニットが新しい命令を受けつけるのにできるだけ自由であるように、待
ち行列の先頭の命令は適切な機能ユニットで処理される。ユニットが処理中であ
るならば、待ち行列は命令を発しないでその後の命令は実行されない。この待機
のメカニズムは、機能ユニット間の依存性が待機させられている命令を整理して
符号化することを可能にする。いつでも、プロセッサは命令待ち行列を回避して
自由であり、命令を直接発し、機能ユニットからの情報を読み込む。
幾つかの機能ユニットがボクセルデータの処理を利用される方法を示す第1段
階の概観をこの節で示す。内部のループは流体マイクロブロック(8個のボクセ
ル)を更新する1つの時間-ステップを実行するように設定する。1つの時間-ス
テップの更新は衝突、移動及び1つのマイクロブロック内の8個のボクセルに対
する統計量の集計に必要なすべての計算からなる。音速以下の乾燥空気のシミュ
レーションは、276個の衝突規則のリストが全てのボクセルに用られ、さらに
適切な到達サイトに移動する全ての粒子にも用いられることを要する。
マイクロブロックの全54個の状態が規則記憶(Rules S
tore)に与えられている衝突法則で処理される前にがマルチポートRAMにロー
ドされることを衝突処理は必要とする。移流処理は全て状態が6方向(+x,−x
,+y,−y,+z,−z)のそれぞれに移動することを必要とする。
しかし、6方向全てにマイクロブロックを移し、次のマイクロブロックを処理
することは全く役に立たない。何故なら、データが行き先のマイクロブロックに
ロードされるまで、一時的にマイクロブロックの外に移動させる粒子を記憶する
必要があるからである。移流を処理する効率のより良い方法は、マイクロブロッ
クのグループ上の他方向に粒子を移動させる前に、多数のマイクロブロック上で
一度に6方向のうちの1方向に移動する粒子のみを処理することである。
他の実施例は次の請求項に含まれる。
─────────────────────────────────────────────────────
フロントページの続き
(81)指定国 EP(AT,BE,CH,DE,
DK,ES,FR,GB,GR,IE,IT,LU,M
C,NL,PT,SE),OA(BF,BJ,CF,CG
,CI,CM,GA,GN,ML,MR,NE,SN,
TD,TG),AP(KE,MW,SD,SZ,UG),
AM,AT,AU,BB,BG,BR,BY,CA,C
H,CN,CZ,DE,DK,EE,ES,FI,GB
,GE,HU,JP,KE,KG,KP,KR,KZ,
LK,LR,LT,LU,LV,MD,MG,MN,M
W,MX,NO,NZ,PL,PT,RO,RU,SD
,SE,SG,SI,SK,TJ,TT,UA,UZ,
VN
(72)発明者 モルビグ キム
アメリカ合衆国 マサチューセッツ州
01742 コンコード モニュメントストリ
ート 1200
(72)発明者 テイクセイラ クリストファー エム.
アメリカ合衆国 マサチューセッツ州
02139 ケンブリッジ ハンコックストリ
ート 118