(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023169071
(43)【公開日】2023-11-29
(54)【発明の名称】演算装置および方法
(51)【国際特許分類】
G06F 17/13 20060101AFI20231121BHJP
【FI】
G06F17/13
【審査請求】未請求
【請求項の数】6
【出願形態】書面
(21)【出願番号】P 2022089206
(22)【出願日】2022-05-16
【新規性喪失の例外の表示】特許法第30条第2項適用申請有り 令和3年11月1日 機械の研究、第73巻 第11号、第852~第860頁にて発表 令和3年11月1日 機械の研究、第73巻 第11号、第861~第869頁にて発表 令和4年4月1日 機械の研究、第74巻 第4号、第281~第292頁にて発表
(71)【出願人】
【識別番号】304021417
【氏名又は名称】国立大学法人東京工業大学
(72)【発明者】
【氏名】木倉 宏成
(72)【発明者】
【氏名】棚橋 隆彦
(72)【発明者】
【氏名】荘司 成煕
【テーマコード(参考)】
5B056
【Fターム(参考)】
5B056BB03
(57)【要約】 (修正有)
【課題】時間発展微分方程式の演算を高速化し並列化する演算装置及び演算方法を提供する。
【解決手段】計算物理モデル・体系および初期条件・境界条件を定義する主処理ユニット1と、主処理ユニット1において定義された物理体系を、指定された立方体格子一辺の長さ2hを有する立方体に分割し、立方体格子中心座標群に立方体を有するセル数Nの立方体主格子群を生成し、各主格子節点を中心とする同サイズの副格子を同時に生成する計算立方体格子群生成ユニット2と、生成された立方体格子群データを送信し、スカラー関数φ、1ベクトル関数A、2ベクトル関数Bを用い、セル数Nと同程度の、内蔵された勾配演算モジュール、回転演算モジュール及び発散演算モジュールにより、各立方体中心座標における離散ナブラ演算を行う離散ナブラ演算ユニット3と、演算結果を表示する表示ユニット4と、を備える。
【選択図】
図1
【特許請求の範囲】
【請求項1】
流れ場や温度場、電磁場それぞれ、またはこれらが連成する場の物理現象を支配する時間発展微分方程式を離散化し、各時刻・空間位置で方程式における変数を計算する演算装置であって、
前記計算を行う物理体系・モデルおよび初期条件・境界条件を定義する主処理ユニットと、
前記定義された物理体系にもとづいて計算用立方体格子群を生成する計算立方体格子群生成ユニットと、
前記定義された初期条件・境界条件にもとづき生成された前記各格子における離散ナブラ演算を行う離散ナブラ演算ユニットと、
前記演算された結果を表示する表示ユニットと
を具備し、
前記離散ナブラ演算ユニットは、
前記立方体格子中心座標・立方体格子一辺の長さ・格子節点に配されたスカラー関数から勾配を計算する勾配演算手段と、
前記立方体格子中心座標・立方体格子一辺の長さ・格子節点に配された1ベクトル関数から回転を計算する回転演算手段と、
前記立方体格子中心座標・立方体格子一辺の長さ・格子節点に配された2ベクトル関数から発散を計算する発散演算手段と
を具備する演算装置。
【請求項2】
前記勾配演算、回転演算、発散演算は、それぞれ各格子に対して並列的に実行可能な請求項1に記載の演算装置。
【請求項3】
前記勾配演算手段は、
注目格子中心の勾配(▽φ)cを
(▽φ)c=1/4{φx/(2h)i+φy/(2h)j+φz/(2h)k}
により演算する手段
を具備する請求項1に記載の演算装置。
【請求項4】
前記回転演算手段は、
注目格子中心の回転(▽×A)cを
(▽×A)c=1/2{Ax/(2h)2i+Ay/(2h)2j
+Az/(2h)2k}
により演算する手段
を具備する請求項1に記載の演算装置。
【請求項5】
前記発散演算手段は、
注目格子中心の発散(▽・B)cを
(▽・B)c=(Bx+By+Bz)/(2h)3
により演算する手段
を具備する請求項1に記載の演算装置。
【請求項6】
計算を行う物理体系・モデルおよび初期条件・境界条件を定義する主処理ユニット手順と、
定義された物理体系にもとづいて計算用立方体格子群を生成する計算立方体格子群生成ユニット手順と、
定義された初期条件・境界条件にもとづき生成された前記各格子における離散ナブラ演算を行う離散ナブラ演算ユニット手順と、
演算された結果を表示する表示ユニット手順と
を具備する演算装置の演算方法は、
前記立方体格子中心座標・立方体格子一辺の長さ・格子節点に配されたスカラー関数から勾配を計算する勾配演算手順と、
前記立方体格子中心座標・立方体格子一辺の長さ・格子節点に配された1ベクトル関数から回転を計算する回転演算手順と、
前記立方体格子中心座標・立方体格子一辺の長さ・格子節点に配された2ベクトル関数から流束を計算する発散演算手順と
を具備する演算方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、数値流体シミュレーションや電磁場シミュレーションにおける勾配・回転・発散を含む離散ナブラ演算を高速に演算する装置および方法に関する。
【背景技術】
【0002】
流れ場や温度場や電磁場が連成する場の時間発展微分方程式は複雑である。連成場の物理現象を支配する時間発展微分方程式を離散化し、各時刻・空間位置で方程式における変数を繰り返し計算することで物理現象をシミュレーションする。一般的なシミュレーション手法である有限要素法や有限体積法等では、空間要素の離散化において、その形状は多面体とする等、任意である。また物理変数の配置は有限要素法では離散化空間要素の格子の節点に、有限体積法では離散化空間要素の面の中心に配される。
【発明の概要】
【発明が解決しようとする課題】
【0003】
しかしながら、これにより空間要素サイズおよび形状は位置によって異なり、要素毎に異なる演算が必要となるため、並列化が一般に難しく演算の高速化が制限されるという課題がある。
【課題を解決するための手段】
【0004】
本発明に係る演算装置は、流れ場や温度場、電磁場それぞれ、またはこれらが連成する場の物理現象を支配する時間発展微分方程式を離散化し、各時刻・空間位置で方程式における変数を計算する演算装置であって、計算する物理体系・モデルおよび初期条件・境界条件を定義する主処理ユニットと、定義された物理体系にもとづいて計算用立方体格子群を生成する計算立方体格子群生成ユニットと、定義された初期条件・境界条件にもとづき生成された各格子における離散ナブラ演算を行う離散ナブラ演算ユニットと、演算された結果を表示する表示ユニットとを具備し、離散ナブラ演算ユニットは立方体格子中心座標・立方体格子一辺の長さ・格子節点に配されたスカラー関数から勾配を計算する勾配演算手段と、立方体格子中心座標・立方体格子一辺の長さ・格子節点に配された1ベクトル関数から回転を計算する回転演算手段と、立方体格子中心座標・立方体格子一辺の長さ・格子節点に配された2ベクトル関数から発散を計算する発散演算手段とを具備するものである。
【0005】
また、本発明に係る演算方法は、計算する物理体系・モデルおよび初期条件・境界条件を定義する主処理ユニット手順と、定義された物理体系にもとづいて計算用立方体格子群を生成する計算立方体格子群生成ユニット手順と、定義された初期条件・境界条件にもとづき生成された各格子における離散ナブラ演算を行う離散ナブラ演算ユニット手順と、演算された結果を表示する表示ユニット手順とを具備し、立方体格子中心座標・立方体格子一辺の長さ・格子節点に配されたスカラー関数から勾配を計算する勾配演算手順と、立方体格子中心座標・立方体格子一辺の長さ・格子節点に配された1ベクトル関数から回転を計算する回転演算手順と、立方体格子中心座標・立方体格子一辺の長さ・格子節点に配された2ベクトル関数から発散を計算する発散演算手順とを具備するものである。
【発明の効果】
【0006】
本発明によれば、空間要素形状を立方体で統一し、双対格子を用いて有限要素法の長所である節点に物理量を配置すること、および有限体積法の長所である要素中心に物理量を配置することを取り入れた離散ナブラ演算子群(勾配・回転・発散)を計算する手法を用いることで時間発展微分方程式の演算を高速化および並列化できる。
【図面の簡単な説明】
【0007】
【
図1】本発明に係る演算装置の実施の形態を示す概略構成図である。
【
図2】
図1の主処理ユニット1の詳細なフローチャートである。
【
図3】
図1の離散ナブラ演算ユニット3の実施の形態を説明するための概略構成図である。
【
図4】
図3の勾配演算モジュール6の詳細なフローチャートである。
【
図5】
図3の回転演算モジュール7の詳細なフローチャートである。
【
図6】
図3の発散演算モジュール8の詳細なフローチャートである。
【
図7】
図3の勾配演算モジュール6,回転演算モジュール7、発散演算モジュール8を補足する説明資料である。
【
図8】
図1の計算立方体格子群生成ユニットを補足する説明資料である。
【発明を実施するための形態】
【0008】
図1は本発明に係る演算装置の実施の形態を示す概略構成図である。
【0009】
図1において、主処理ユニット1はCPU、ROM又はフラッシュメモリ等の不揮発性メモリ、RAM等よりなるコンピュータ等によって構成される。
【0010】
主処理ユニット1は計算立方体格子群生成ユニット2に接続されている。計算立方体格子群生成ユニット2は主処理ユニット1において定義された物理体系を、指定された立方体格子一辺の長さ2hを有する立方体に分割し、立方体格子中心座標群(x,y,z)に立方体を有するセル数Nの立方体主格子群を生成する。また、各主格子の各節点に中心を有する同サイズの立方体格子群である、副格子を同時に生成する。副格子は
図8に示されるごとく、主格子をx,y,z軸の各軸方向にhだけずらすことで得られる。また、指定した初期条件および境界条件のもと、格子節点に配されるスカラー関数、1ベクトル関数、2ベクトル関数の初期値を決定し、これらを主処理ユニット1に送信する。
【0011】
主処理ユニット1は離散ナブラ演算ユニット3に接続されている。離散ナブラ演算ユニット3に立方体格子群ユニット2で生成された立方体格子群データを送信し、スカラー関数φ、1ベクトル関数A、2ベクトル関数Bを用い、離散ナブラ演算ユニット3に内蔵された勾配演算モジュール、回転演算モジュール、発散演算モジュールにより、各立方体中心座標(x,y,z)における離散ナブラ演算を行い、ある時刻における時間発展微分方程式の演算結果を、主処理ユニット1に送信する。また、主処理ユニット1には表示ユニット4が接続されており、演算結果を表示する。
【0012】
図1の主処理ユニット1の動作を
図2のフローチャートを参照して説明する。
【0013】
始めに、ステップ201にて、計算する物理体系および初期条件、境界条件を定義し、これをもとに、計算立方体格子群の生成を、計算立方体格子群生成ユニットに命令する。この結果、初期時刻における格子群データを取得し、ROM又はフラッシュメモリ等の不揮発性メモリ、RAM等の記憶媒体に格納する。
【0014】
ステップ202にて、格納された格子群データを離散ナブラ演算ユニットに送信し、ステップ203で主格子における離散ナブラ演算を行う。その後、ステップ204で副格子における離散ナブラ演算を行う。この結果、ある時刻における時間発展微分方程式の演算結果を取得し、ステップ205にて演算結果を記憶媒体に格納する。その後、ステップ206にて演算時間ステップが全て完了したかを確認し、演算ステップ回数が残っている場合はステップ205で格納した演算結果をステップ203の離散ナブラ演算の入力として送信し、再び演算を行う。
【0015】
全演算時間ステップが終了した後、ステップ207にて、表示ユニットにより演算結果を表示する。そして、ステップ208にて、
図2のルーチンは終了する。
【0016】
次に、
図1の離散ナブラ演算ユニット3の動作を
図3の概略構成図、
図4、
図5、
図6のフローチャート、
図7の補足説明図を参照して説明する。
【0017】
始めに、立方体中心座標群(x,y,z)、立方体格子一辺の長さ2h、セル数N、スカラー関数φ、1ベクトル関数A、2ベクトル関数Bは、格子データ記憶モジュール5に格納される。尚、格子データ記憶モジュール5はROM又はフラッシュメモリ等の不揮発性メモリ、RAM等よりなる。
【0018】
格納したスカラー関数φ、1ベクトル関数A、2ベクトル関数Bを、各主格子とこれに隣接する副格子における関数値を1つのデータ群としてセル数Nと同数程度に分割する。分割された関数値データ群はそれぞれφ1、φ2、φ3、…φN、A1、A2、A3、…AN、およびB1、B2、B3、…BNとなる。
【0019】
スカラー関数値データ群φ
1、φ
2、φ
3、…φ
Nは、セル数Nと同程度の個数用意された勾配演算モジュール6にそれぞれ送信され、各格子中心における勾配が計算される。尚、各勾配演算モジュール6は互いに独立しており、各勾配演算は逐次的もしくは並列的に実行可能である。各勾配演算モジュール6は
図4のフローチャートの手順で計算される。始めに、ステップ401でx軸方向の勾配φ
xを計算する。
φ
x=(φ
n2+φ
n3+φ
n7+φ
n6)-(φ
n1+φ
n4+φ
n8+φ
n5)
これと同時に、またはこれの次にステップ402でy軸方向の勾配φ
yを計算する。
φ
y=(φ
n4+φ
n8+φ
n7+φ
n3)-(φ
n1+φ
n5+φ
n6+φ
n2)
これと同時に、またはこれの次にステップ403でz軸方向の勾配φ
zを計算する。
φ
z=(φ
n5+φ
n6+φ
n7+φ
n8)-(φ
n1+φ
n2+φ
n3+φ
n4)
最後に、ステップ404で注目格子における勾配(▽φ)
cを計算する。
(▽φ)
c=1/4{φ
x/(2h)i+φ
y/(2h)j+φ
z/(2h)k}
但し、i、j、kはそれぞれx,y,z軸方向の単位ベクトル
添字n1からn8は注目立方体格子における節点番号であり、
図7に示されるように立方体各節点に配される。
そして、ステップ405にて、
図4のルーチンは終了する。
【0020】
また、1ベクトル関数値データ群A
1、A
2、A
3、…A
Nは、セル数Nと同程度の個数用意された回転演算モジュール7にそれぞれ送信され、各格子中心における回転が計算される。尚、各回転演算モジュール7は互いに独立しており、各回転演算は逐次的もしくは並列的に実行可能である。各回転演算モジュール7は
図5のフローチャートの手順で計算される。始めに、ステップ501でx軸方向の循環A
xを計算する。
A
x=(A
e9+A
e6-A
e12-A
e5)+(A
e8+A
e11-A
e7-A
e10)
これと同時に、またはこれの次にステップ502でy軸方向の循環A
yを計算する。
A
y=(A
e1+A
e10-A
e4-A
e9)+(A
e2+A
e12-A
e3-A
e11)
これと同時に、またはこれの次にステップ503でz軸方向の循環をA
z計算する。
A
y=(A
e5+A
e2-A
e8-A
e1)+(A
e4+A
e7-A
e3-A
e6)
最後に、ステップ504で注目格子中心における回転(▽×A)
cを計算する。
(▽×A)
c=1/2{A
x/(2h)
2i+A
y/(2h)
2j
+A
z/(2h)
2k}
但し、添字e1からe12は注目立方体格子における辺番号であり、
図7に示されるように立方体各辺に配される。
そして、ステップ505にて、
図5のルーチンは終了する。
【0021】
加えて、2ベクトル関数値データ群B
1、B
2、B
3、…B
Nは、セル数Nと同程度の個数用意された発散演算モジュール8にそれぞれ送信され、各格子面の発散が計算される。尚、各発散演算モジュール8は互いに独立しており、各発散演算は逐次的もしくは並列的に実行可能である。各発散演算モジュール8は
図6のフローチャートの手順で計算される。始めに、ステップ601でx軸方向の流束B
xを計算する。
B
x=B
f1+B
f2
これと同時に、またはこれの次にステップ602でy軸方向の流束B
yを計算する。
B
y=B
f3+B
f4
これと同時に、またはこれの次にステップ603でz軸方向の流束B
zを計算する。
B
z=B
f5+B
f6
最後に、ステップ604において、注目格子中心における発散(▽・B)を計算する。
(▽・B)
c=(B
x+B
y+B
z)/(2h)
3
但し、添字f1からf6は注目立方体格子の面番号であり、
図7に示されるように立方体各面に配される。
そして、ステップ602にて、
図6のルーチンは終了する。
【0022】
勾配演算モジュール6、回転演算モジュール7、発散演算モジュール8の動作はそれぞれ独立しており、各モジュールの動作は時間的並列に行うことが出来る。また、各モジュールはCPU(Central Processing Unit)やGPU(Graphics Processing Unit)等の演算装置に複数具備される逐次演算処理ユニットによる並列実行や、ASIC(Application Specific Integrated Circuit)やCPLD(Complex Programmable Logic Device)、FPGA(Field Programmable Gate Array)等の論理演算回路を用いた並列演算が可能である。また、大規模集積回路(Large Scale Integration:LSI)による専用演算集積回路化も可能である。
【0023】
演算した結果はROM又はフラッシュメモリ等の不揮発性メモリ、RAM等の記憶媒体である演算データ記憶モジュール9に格納される。
【0024】
尚、上述の実施の形態では、勾配演算モジュール、回転演算モジュール、発散演算モジュールとしてCPU、GPU、ASIC、CPLD、FPGAのいずれかとしているが、これらを組み合わせて使用してもよい。
【0025】
さらに、本発明は上述の実施の形態の自明の範囲のいかなる変更に適用し得る。
【産業上の利用可能性】
【0026】
演算する対象は、流れ場や温度場、電磁場に限定されず、音響場や構造解析など、微分方程式で記述されるあらゆる場や物理運動解析に適用できる。
【符号の説明】
【0027】
1:主処理ユニット
2:計算立方体格子群生成ユニット
3:離散ナブラ演算ユニット
4:表示ユニット
5:格子データ記憶モジュール
6:勾配演算モジュール
7:回転演算モジュール
8:発散演算モジュール
9:演算データ記憶モジュール
x:x座標
y:y座標
z:z座標
2h:立方体格子一辺の長さ
N:セル数
φ:スカラー関数
A:1ベクトル関数
B:2ベクトル関数
n1、n2、…:注目立方体格子における節点番号
e1、e2、…:注目立方体格子における辺番号
f1、f2、…:注目立方体格子の面番号
φx:x方向の勾配
φy:y方向の勾配
φz:z方向の勾配
Ax:x方向の循環
Ay:y方向の循環
Az:z方向の循環
Bx:x方向の発散
By:y方向の発散
Bz:z方向の発散
(▽φ)c:注目格子における勾配
(▽×A)c:注目格子における回転
(▽・B)c:注目格子における発散