JP2011154510A - 連立一次方程式の数値計算方法及び装置 - Google Patents

連立一次方程式の数値計算方法及び装置 Download PDF

Info

Publication number
JP2011154510A
JP2011154510A JP2010015230A JP2010015230A JP2011154510A JP 2011154510 A JP2011154510 A JP 2011154510A JP 2010015230 A JP2010015230 A JP 2010015230A JP 2010015230 A JP2010015230 A JP 2010015230A JP 2011154510 A JP2011154510 A JP 2011154510A
Authority
JP
Japan
Prior art keywords
lattice
grid
coarse
value
numerical calculation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2010015230A
Other languages
English (en)
Inventor
Akira Kido
顯 木戸
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2010015230A priority Critical patent/JP2011154510A/ja
Publication of JP2011154510A publication Critical patent/JP2011154510A/ja
Withdrawn legal-status Critical Current

Links

Images

Abstract

【課題】任意の格子分割数の問題に対して適用可能なマルチグリッド法を用いた連立一次方程式の数値計算方法及び装置を提供する。
【解決手段】細かいグリッド上の値を粗いグリッド上の値へ変換する粗視化処理と、粗いグリッド上の値を細かいグリッド上の値へ変換する精細化処理と、において、変換先のグリッド上の格子を被覆する変換元のグリッド上の格子のグループを求め、該格子グループに属する各格子の大きさと、該格子と変換先の格子との共通部分の大きさと、の比率を重なり分率として求め、該格子グループに属する各格子における値の、変換先の格子における値への寄与を表す重み付けを設定し、該格子グループに属する全ての格子に亘って、各格子における値、重なり分率及び重み付けをの積の総和を求め、これを変換先の格子における値とする。細かいグリッドと粗いグリッドとの格子分割数比が非整数有理数の場合も粗視化及び精細化の処理が可能になる。
【選択図】図1

Description

本発明は、連立一次方程式の数値計算方法及び装置に関し、特にマルチグリッド法を用いた連立一次方程式の数値解法に関する。
一般に、ある物理系に対して物理現象の問題を解く場合は、系を離散格子からなるグリッド上に離散化する。そして、物理系を表す基礎方程式は、グリッド上の差分方程式になり、大規模な連立一次方程式A×x=bを解く問題に帰着する。Aは係数行列、bは定数項ベクトル、xは解ベクトルである。
このような大規模な連立一時方程式を解く数値計算手法としては、直接法であるガウス消去法や、反復法であるヤコビ法、ガウス−ザイデル法、SOR法、共役勾配法などが知られている。特に連立一次方程式の係数行列が零成分の多い疎行列の場合には反復解法が有効である。
しかし、通常用いられるSOR法や共役勾配法は、主に隣接格子を介して誤差情報が伝播するので、誤差の短波長成分の減衰は速いが、誤差の長波長成分の減衰は遅い。そのため、結果的に十分満足できる解へ収束するまでの反復回数が多くなり、長い計算時間を要する。
そこで、誤差の長波長成分の減衰を速くして反復回数を少なくする方法として、マルチグルッド法(多重格子法、MG法)が提案されている。この方法は、与えられたグリッド上の連立一次方程式と、それをより粗いグリッド上に変数変換したものをそれぞれに解くことによって、誤差の短波長成分と長波長成分の両方を効率よく減衰させることができる(非特許文献1、非特許文献2を参照)。
図2はマルチグリッド法において、粗さの異なるグリッド間で変数を変換する処理について説明するための図である。解くべき連立一次方程式A×x=bが与えられている最も細かいグリッドを第1グリッドとし、第1グリッドよりも粗いグリッドを順番に第2グリッド、第3グリッドと階層化する。細かいグリッド上の変数を粗いグリッド上に変換する操作が粗視化処理であり、リストリクション(restriction)とも呼ばれている。粗いグリッド上の変数を細かいグリッド上に変換する操作が精細化処理であり、プロロンゲーション(prolongation)とも呼ばれている。
マルチグリッド法の典型的な処理例を図3を用いて説明する。
ステップS310では、与えられた第1グリッド(細かいグリッド)の格子分割数を2で割った値が格子分割数となる第2グリッド(粗いグリッド)を生成する。格子分割数が2で割れない場合は処理を終了する。
ステップS320では、解くべき連立一次方程式の係数行列(細かいグリッド上の係数行列)を粗視化して、粗いグリッド上の係数行列を生成する。ここでは、細かいグリッドの格子分割数と粗いグリッドの格子分割数の比が2になる場合の粗視化作用素と精細化作用素を用いる。
細かいグリッド上の係数行列Aから粗いグリッド上の係数行列Aを生成する方法としては、DCAとGCAがある。DCA(Direct Coarse grid Approximation)は、物理系を表す基礎方程式を粗いグリッド上で直接離散化して連立一次方程式を導出する方法である。GCA(Galerkin Coarse grid Approximation)は、細かいグリッド上の係数行列Aを粗視化作用素の行列形式Rと精細化作用素の行列形式Pで挟んで行列積R×A×Pを計算して導出する方法である。細かいグリッドの分割数をN、粗いグリッドの分割数をNとすると、AはN行N列の正方行列、RはN行N列の行列、PはN行N列の行列
であり、R×A×P=AはN行N列の正方行列になる。
ステップS330では、解くべき連立一次方程式A×x=bの解ベクトルxと定数項ベクトルbについて、細かいグリッドと粗いグリッドとの格子分割数比が2になる場合の粗視化作用素を作用させて粗いグリッド上の連立一次方程式を準備する。
ステップS340では、粗いグリッド上の連立一次方程式を解くことによって、誤差の長波長成分を減衰させ易くする。ここで用いる求解法はガウス−ザイデル法やSOR法等、適当に選んで良い。
ステップS350では、粗いグリッド上で解いた連立一次方程式の解ベクトルについて、細かいグリッドの格子分割数と粗いグリッドの格子分割数の比が2になる場合の精細化作用素を作用させて、元の第1グリッド上の変数に戻す。
ステップS360では、初めに与えられた連立一次方程式を解くことによって、誤差の短波長成分を減衰させ易くする。このときステップS350で精細化された解ベクトルを初期値として用いることによって、誤差の長波長成分と短波長成分を同時に減衰させ易くすることができる。
図3の処理例は第1グリッドと第2グリッドのみ計算しているが、実用上はS330からS360の処理を再帰的に実行してより粗いグリッド上でも計算することによって、誤差の様々な波長成分を同時に減衰させ易くしている。
S320、S330、S350で使用する粗視化処理と精細化処理は、細かいグリッドの格子分割数と粗いグリッドの格子分割数の比が2になる場合が最も簡単であるため、格子分割数は2のべき乗になることが多い。また、特許文献2のように格子分割数が素因数分解可能な整数の積でもマルチグリッド法は適用可能である。この場合、S310では設定値以下の素数で格子分割数を割った数を粗いグリッドの格子分割数に設定し、S320、S330、S350で使用する粗視化処理と精細化処理は、当該素数に対応したものを使用する。
特開2006−293488号公報 特開2007−286738号公報
W.H.Press, S.A.Teukolsky, W.T.Vetterling, B.P.Flannery:"NUMERICAL RECIPES in Fortran 77 Second Edition", Cambridge University Press, 1992, p.862 W.L.Briggs, V.E.Henson, S.F.McCormick:"A Multigrid Tutorial Second Edition", SIAM, 2000.
しかし、上述した従来のマルチグリッド法の処理は、元の第1グリッドの格子分割数が2のべき乗または一般には素因数分解可能な整数の積という条件を満たす問題にしか適用できない。
解くべき問題の格子分割数がこの条件を満たさなければ、連立一次方程式の求解法として従来のマルチグリッド法が適用できないため、計算時間の長くかかる別の求解法を選択する必要がある。或いは従来のマルチグリッド法を適用するために前記条件を満たすよう格子分割数を変更する必要がある。そのため、余分な格子を追加することによって計算時間が増大したり、格子間隔が必要以上に狭まって物体表面と格子境界が揃わなかったりする場合がある。
また、解析空間の格子分割数が素数、例えば97の場合、97より大きい2のべき乗である128を用いて、元のグリッド上の物理量を格子分割数128のグリッド上の物理量に変換してからマルチグリッド法を用いて求解する。その後、格子分割数128のグリッド上から元の格子分割数97のグリッド上に物理量を補間して戻すという処理を行って求解する方法も可能だが、補間に伴って誤差が生じる場合がある。
本発明はこのような背景のもとになされたものであり、任意の格子分割数の問題に対して適用可能なマルチグリッド法を用いた連立一次方程式の数値計算方法及び装置を提供することを目的とする。
本発明は、数値計算装置におけるマルチグリッド法を用いた連立一次方程式の数値計算方法であって、
前記数値計算装置が、
格子分割数Nの細かいグリッド上のj番目の格子aにおける値xから、格子分割数N(<N)の粗いグリッド上のi番目の格子Aにおける値Xへの変換を
Figure 2011154510
により行う粗視化工程と、
格子分割数Nの粗いグリッド上のi番目の格子Bにおける値Yから、格子分割数N(>N)の細かいグリッド上のj番目の格子bにおける値yへの変換を
Figure 2011154510
により行う精細化工程と、
を実行し、
前記粗視化工程は、
前記数値計算装置が、前記格子Aを被覆する細かいグリッド上の格子aの集合を格子グループ{a}として計算するする工程と、
前記数値計算装置が、前記格子グループ{a}に属する格子a毎に、該格子aと格子Aとの共通部分の長さ、面積又は体積と、該格子aの長さ、面積又は体積と、の比率を重なり分率pijとして計算する工程と、
前記数値計算装置が、前記格子グループ{a}に属する格子a毎に、該格子aにおける値xの前記格子Aにおける値Xへの寄与を重み付けwijとして所定の値に設定する工程と、
前記数値計算装置が、前記格子グループ{a}に属する格子a毎に、該格子aにおける値x、重なり分率pij及び重み付けwijの積を計算する工程と、
前記数値計算装置が、前記積の前記格子グループ{a}に属する全ての格子に亘る総和を格子Aにおける値Xとして計算する工程と、
を有し、
前記精細化工程は、
前記数値計算装置が、前記格子bを被覆する粗いグリッド上の格子Bの集合を格子グループ{B}として計算する工程と、
前記数値計算装置が、前記格子グループ{B}に属する格子B毎に、該格子Bと格子bとの共通部分の長さ、面積又は体積と、該格子Bの長さ、面積又は体積と、の比率を重なり分率qjiとして計算する工程と、
前記数値計算装置が、前記格子グループ{B}に属する格子B毎に、該格子Bにおける値Yの前記格子bにおける値yへの寄与を重み付けvjiとして所定の値に設定する工程と、
前記数値計算装置が、前記格子グループ{B}に属する格子B毎に、該格子Bにおける値Y、重なり分率qji及び重み付けvjiの積を計算する工程と、
前記数値計算装置が、前記積の前記格子グループ{B}に属する全ての格子に亘る総和を格子bにおける値yとして計算する工程と、
を有する
ことを特徴とするマルチグリッド法を用いた連立一次方程式の数値計算方法である。
本発明によれば、任意の格子分割数の問題に対して適用可能なマルチグリッド法を用いた連立一次方程式の数値計算方法及び装置を提供することができる。
実施例に係る数値計算手法のフローチャート マルチグリッド法における粗視化及び精細化を説明する図 従来のマルチグリッド法の計算処理例を示すフローチャート 格子分割数比が2の場合の粗視化及び精細化作用を示す概念図 格子分割数比が7/4の場合の粗視化及び精細化作用を示す概念図 実施例の数値計算装置の基本構成を示す図
図6は、本実施形態に係る数値計算装置として機能するコンピュータの基本構成を示すブロック図である。該コンピュータは、大略、バス207を介して接続されたCPU201、表示装置202,入力装置203、RAM204、ハードディスク装置205、NIC206等から構成される。
CPU(中央演算装置)201で、RAM(主記憶装置)204に記憶されているプログラムやデータを用いて本装置全体の制御を行うと共に、後述する各処理を実行する。表示装置202は、液晶画面などにより構成されており、CPU201による処理結果を文字又は画像などで表示することができる。入力装置203は、キーボードやマウスなどの操作系の装置により構成されており、各種の指示をCPU201に対して入力することができる。RAM204は、ハードディスク装置205からロードされたプログラムやデータを一時的に記憶する為のエリアを備えると共に、CPU201が各種の処理を実行する際に必要なワークエリアを備える。ハードディスク装置205には、OS(オペレーティングシステム)や、コンピュータが行うべき後述の各処理をCPU201に実行させるためのプログラムやデータが保存されている。これらのプログラムはRAM204にロードされて、CPU201によって実行されることで、本コンピュータが連立一次方程式を数値的に解くための数値計算装置として機能する。NIC(ネットワークインターフェース)206は、外部装置とのデータ通信を行う際のインターフェースとして機能するものであり、本コンピュータはこのNIC206を介して外部装置とプログラムやデータの送受信を行う。なお、ハードディスク装置205が保存しているプログラムやデータの代わりに、NIC206を介して外部装置から受信したプログラムやデータをCPU201による処理対象としても良い。
次に、上記構成を備えるコンピュータが行う、連立一次方程式の解を求める為の数値解法について説明する。図1は、本実施形態に係るコンピュータが行う、連立一次方程式の解を求めるための数値計算処理のフローチャートである。なお、ここでは係数行列A、解ベクトルx、定数項ベクトルbとして、A×x=bで表される連立一次方程式の求解処理に、本発明のマルチグリッド法を適用する。
ここでは、1次元空間での物理現象シミュレーションを行うために基礎方程式を格子中心(セル中心)に値が定義された等間隔のグリッド上で3点差分により離散化し、係数行列が3重対角となっている連立一次方程式を解くことを想定している。
まず、ステップS210ではグリッドの格子分割数Nについて偶数か奇数かを判定し、偶数の場合は2で割った値を、奇数の場合は所定の方法で算出した値を1段粗いグリッドの格子分割数Nとして粗いグリッドを生成する。
なお、3次元空間の場合は、x軸,y軸,z軸方向の格子分割数N,N,Nについてそれぞれ偶奇を判定して粗いグリッドの各座標軸方向の格子分割数を計算して粗いグリッド生成すればよい。
が奇数の場合のNの算出方法としては、Nに1を加算してから2で割った値をNとするN=(N+1)÷2で表される方法や、逆にNから1を減算してから2で割った値をNとするN=(N−1)÷2で表される方法がある。さらに半開区間[(N−1)÷2,N)に含まれる2のべき乗、2のべき乗と3の積、2のべき乗と5の積又は8の倍数のいずれかを選択することによってNを決定する方法がある。
例えばNが奇数の場合にN=(N+1)÷2とする方法では、N=7ならばN=(7+1)÷2=4、N=17ならばN=(17+1)÷2=9となる。
ステップS220では、DCAまたはGCAによって解くべき連立一次方程式の係数行列Aを粗視化して、粗いグリッド上の係数行列Aを生成する。この際使用する粗視化作用素と精細化作用素は、ステップS230またはステップS231とステップS250またはステップS251のものと同等である。
ステップS230及びステップS231では、解くべき連立一次方程式A×x=bの解ベクトルxと定数項ベクトルbに粗視化作用素を作用させて粗いグリッド上の連立一次方程式を準備する。細かいグリッドの格子分割数Nと粗いグリッドの格子分割数Nの比N÷Nが整数の場合、ステップS230の粗視化作用素を作用させる。細かいグリッドの格子分割数Nと粗いグリッドの格子分割数Nの比N÷Nが非整数有理数の場合、ステップS231の粗視化作用素を作用させる。
本実施例では、細かいグリッドの格子分割数Nが偶数の場合のみ格子分割数比N÷Nが整数(2)となり、ステップS230が実行される。細かいグリッドの格子分割数Nが奇数の場合に格子分割数比N÷Nが非整数有理数となり、ステップS231が実行される。
図4(A)は、ステップS230で使用する格子分割数比N÷Nが整数の場合の粗視化作用素、特に、細かいグリッドの格子分割数Nが偶数の場合の粗視化作用素の粗視化作用を示す概念図である。図中の矢印に付随する数字は第1グリッド(細かいグリッド)上の値を第2グリッド(粗いグリッド)上の値に変換する際の分配比率を示している。
ステップS231で使用する格子分割数比N÷Nが非整数有理数の場合の粗視化作用素は、格子間の被覆状態を表す長さ分率pijを用いて式(1)で定義する。
Figure 2011154510
ここで、Xは粗いグリッド上のi番目の格子Aにおける値、xは細かいグリッド上のj番目の格子aでの値、{a}は格子Aを被覆する細かいグリッド上の格子の集合である。
ijは格子Aを被覆する格子グループ{a}に属する各格子aと格子Aとの重なり具合を表す重なり分率である。重なり分率pijは、格子グループ{a}に属する格子a毎に、該格子aと格子Aとの共通部分の長さ、面積又は体積と、該格子a
の長さ、面積又は体積と、の比率を計算して求められる。重なり分率pijは、細かいグリッドと粗いグリッドの幾何学的関係により各格子について一意に定まる。一次元の場合は、格子aの長さと、該格子aのうち格子Aに含まれる部分の長さと、の比率が、格子Aにおける格子aの重なり分率pijであり、これを長さ分率と称する。同様に、二次元の場合は、細かいグリッドの格子aの面積と、該格子aのうち粗いグリッドの格子Aに含まれる部分の面積と、の比率が重なり分率であり、これを面積分率と称する。三次元の場合は、細かいグリッドの格子aの体積と、該格子aのうち粗いグリッドの格子Aに含まれる部分の体積と、の比率が重なり分率であり、これを体積分率と称する。
ijは前記格子グループ{a}に属する各格子aにおける値xの、格子Aの値Xへの寄与を表す重み付けであり、任意の値に設定できる。重み付けwijの設定方法としては、格子の位置に依存しない一定値N/Nとする方法や、格子Aと格子aの中心間距離の関数とする方法がある。また、格子Aと格子aの中心間距離が最短の格子以外は全てゼロに設定する方法、つまり格子Aに最も近い格子aj0における値のみを代表値として採用する方法がある。格子分割数比が非整数有理数の場合、上記の重なり分率pij、重み付けwij及び格子グループに属する各格子aにおける値xの積の、格子グループ{a}に属する全ての格子に亘る総和を、粗いグリッドの格子Aにおける値Xとする。
図5(A)は、ステップS231で使用する格子分割数比N÷Nが非整数有理数(7/4)の場合の粗視化作用素の粗視化作用を示す概念図である。図中の矢印に付随する数字は長さ分率に基づいて第1グリッド(細かいグリッド)上の値を第2グリッド(粗いグリッド)上の値に変換する際の分配比率を示している。式1に示すように、細かいグリッドの格子aにおける値xが粗いグリッドの格子Aにおける値Xに分配される比率は、格子Aにおける格子aの長さ分率pijと重み付けwijとの積である。図5(A)に示した分配比率は、重み付けwijを一定値N/N=4/7に設定した場合の値である。
例えば、粗視化作用により粗い第2グリッド上の3番目の格子Aの値Xを求める方法は次のようになる。格子Aを被覆する細かい第1グリッド上の格子はa,a,aの3個である。すなわち、{a}={a,a,a}である。格子aはその1/2の部分が格子Aに含まれるので、格子Aにおける格子aの長さ分率p23は1/2である。格子aはその全部が格子Aに含まれるので、格子Aにおける格子aの長さ分率p24は1である。格子aはその1/4の部分が格子Aに含まれるので、格子Aにおける格子aの長さ分率p25は1/4である。ここでは、重み付けwijは格子分割数比4/7で一定値とする。従って第2グリッド上の格子Aにおける値Xは、X=x2323+x2424+x2525=x×(1/2)×(4/7)+x×1×(4/7)+x×(1/4)×(4/7)=x×2/7+x×4/7+x×1/7となる。
ここで、一般に粗いグリッド上のi番目の格子Aを被覆する細かいグリッド上の格子のグループ{a}に属する格子の格子番号を求めるには、格子位置を表す実数型の座標値から整数型に変換する処理または有理数型の計算処理が必要である。
しかし、N=(N+1)÷2の場合は、前記格子グループ{a}に属する格子の格子番号は、i=0の場合はi×2とi×2+1、すなわち{a}={a,a}となる。また、i=N−1の場合はi×2−1とi×2、すなわち{a}Nc−1={a2Nc−3,a2Nc−2}となる。また、他の場合はi×2−1、i×2及びi×2+1、すなわち{a}={a2i−1,a2i,a2i+1}となり、簡単な整数型の計算のみで算出できる。また、N=(N−1)÷2の場合は、前記格子グループ{a}
に属する格子の格子番号はi×2、i×2+1及びi×2+2、すなわち{a}={a2i,a2i+1,a2i+2}となり、簡単な整数型の計算のみで算出できる。したがって、N=(N±1)÷2の場合には高速に格子グループ{a}に属する格子の格子番号を求めることが可能である。
また、ステップS231で使用する粗視化作用素の行列形式Rの1行当たりの非零要素数を数えると、N≧(N−1)÷2では3個以下だが、N<(N−1)÷2では4個以上になる場合が生じてしまう。つまりN=(N±1)÷2の場合は、粗視化作用素を作用させる時の演算量の増大を抑制できる。
ステップS240では、粗いグリッド上の連立一次方程式を解くことによって、誤差の長波長成分を減衰させ易くする。ここで用いる求解法はガウス−ザイデル法やSOR法等、適当に選んで良い。
ステップS250およびステップS251では、粗いグリッド上で解いた連立一次方程式の解ベクトルに精細化作用素を作用させて元の第1グリッド上の変数に戻す。細かいグリッドの格子分割数Nと粗いグリッドの格子分割数Nの比N÷Nが整数の場合、ステップS250の精細化作用素を作用させる。細かいグリッドの格子分割数Nと粗いグリッドの格子分割数Nの比N÷Nが非整数有理数の場合、ステップS251の精細化作用素を作用させる。本実施例では、細かいグリッドの格子分割数Nが偶数の場合のみ格子分割数比N÷Nが整数(2)となり、ステップS250が実行される。細かいグリッドの格子分割数Nが奇数の場合に格子分割数比N÷Nが非整数有理数となり、ステップS251が実行される。
図4(B)は、ステップS250で使用する格子分割数比N÷Nが整数の場合の精細化作用素、特に、細かいグリッドの格子分割数Nが偶数の場合の精細化作用素の精細化作用を示す概念図である。図中の矢印に付随する数字は第2グリッド(粗いグリッド)上の値を第1グリッド(細かいグリッド)上の値に変換する際の分配比率を示している。
S251で使用する格子分割数比N÷Nが非整数有理数の場合の精細化作用素は、格子間の被覆状態を表す長さ分率qjiを用いて式(2)で定義する。
Figure 2011154510
ここで、yは細かいグリッド上のj番目の格子bにおける値、Yは粗いグリッド上のi番目の格子Bでの値、{B}は格子bを被覆する粗いグリッド上の格子の集合である。
jiは格子bを被覆する格子グループ{B}に属する各格子Bと格子bとの重なり具合を表す重なり分率である。重なり分率qjiは、格子グループ{B}に属する格子B毎に、該格子Bと格子bとの共通部分の長さ、面積又は体積と、該格子Bの長さ、面積又は体積と、の比率を計算して求められる。重なり分率qjiは、粗いグリッドと細かいグリッドとの幾何学的関係により各格子について一意に定まる。一次元の場合は、格子Bの長さと、該格子Bのうち格子bに含まれる部分の長さと、の比率が、格子bにおける格子Bの重なり分率qjiであり、これを長さ分率と称する。同様に、二次元の場合は、粗いグリッドの格子Bの面積と、該格子Bのうち細かいグリッドの格子bに含まれる部分の面積と、の比率が重なり分率であり、これを面積分率と称する。三次元の場合は、粗いグリッドの格子Bの体積と、該格子Bのうち細かいグリッドの格子bに含まれる部分の体積と、の比率が重なり分率であり、これを体積分率
と称する。
jiは前記格子グループ{B}に属する各格子Bにおける値Yの、格子bの値yへの寄与を表す重み付けであり、任意の値に設定できる。重み付けvjiの設定方法としては、格子の位置に依存しない一定値N/Nとする方法や、格子bと格子Bの中心間距離の関数とする方法がある。また、格子bと格子Bの中心間距離が最短の格子以外は全てゼロに設定する方法、つまり格子bに最も近い格子Bi0における値のみを代表値として採用する方法がある。格子分割数比が非整数有理数の場合、上記の重なり分率qji、重み付けvji及び格子グループに属する各格子Bにおける値Yの積の、格子グループ{B}に属する全ての格子に亘る総和を、粗いグリッドの格子bにおける値yとする。
図5(B)は、ステップS251で使用する格子分割数比N÷Nが非整数有理数(7/4)の場合の精細化作用素の精細化作用を示す概念図である。図中の矢印に付随する数字は長さ分率に基づいて第2グリッド(粗いグリッド)上の値を第1グリッド(細かいグリッド)上の値に変換する際の分配比率を示している。式2に示すように、粗いグリッドの格子Bにおける値Yが細かいグリッドの格子bにおける値yに分配される比率は、格子bにおける格子Bの長さ分率qjiと重み付けvjiとの積である。図5(B)に示した分配比率は、重み付けvjiを一定値N/N=7/4に設定した場合の値である。
例えば、精細化作用により細かい第1グリッド上の6番目の格子bの値yを求める方法は次のようになる。格子bを被覆する粗い第2グリッド上の格子はB,Bの2個である。すなわち{B}={B、B}である。格子Bはその1/7の部分が格子bに含まれるので、格子bにおける格子Bの長さ分率q52=1/7である。格子Bはその3/7の部分が格子bに含まれるので、格子bにおける格子Bの長さ分率q53=3/7である。ここでは、重み付けvjiは格子分割数比7/4で一定値とする。従って第1グリッド上の格子bにおける値yは、y=Y5252+Y5353=Y×(1/7)×(7/4)+Y×(3/7)×(7/4)=Y×1/4+Y×3/4となる。
ここで、一般に細かいグリッド上のj番目の格子bを被覆する粗いグリッド上の格子のグループ{B}に属する格子の格子番号を求めるには、格子位置を表す実数型の座標値から整数型に変換する処理または有理数型の計算処理が必要である。
しかし、N=(N+1)÷2の場合は、前記格子グループ{B}に属する格子の格子番号は、jが偶数の場合はj÷2、すなわち{B}={Bj/2}となる。また、jが奇数の場合は(j−1)÷2及び(j−1)÷2+1、すなわち{B}={B(j−1)/2、B(j−1)/2+1}となり、簡単な整数型の計算のみで算出できる。また、N=(N−1)÷2の場合は、前記格子グループ{B}に属する格子の格子番号は、j=0の場合はj÷2、すなわち{B}={B}となる。また、j=N−1の場合はj÷2−1、すなわち{B}Nf−1={B(Nf−1)/2−1}となる。また、jが0又はN−1以外の偶数の場合はj÷2とj÷2−1、すなわち{B}={Bj/2、Bj/2−1}となる。また、jが奇数の場合は(j−1)÷2、すなわち{B}={B(j−1)/2}となり、簡単な整数型の計算のみで算出できる。したがって、N=(N±1)÷2の場合には高速に格子グループ{B}に属する格子の格子番号を求めることが可能である。
また、ステップS251で使用する精細化作用素の行列形式Pの1列当たりの非零要素数を数えると、N≧(N−1)÷2では最大3個以下だが、N<(N−1)÷2では4個以上になる場合が生じてしまう。さらに粗いグリッド上の係数行列AをA=R×A×Pとして計算するGCAの場合、N>(N+1)÷2では細かいグリッド
上の係数行列Aが3重対角行列でもAの1行あたりの非零要素数が4個以上になる場合が生じてしまう。つまりN=(N±1)÷2の場合は、GCAにおいて係数行列の3重対角性が保たれるので、計算の際の演算量の増大を抑制できる。
ステップS260では、初めに与えられた連立一次方程式を解くことによって、誤差の短波長成分を減衰させ易くする。このときステップS250またはステップS251で精細化された解ベクトルを初期値として用いることによって、誤差の長波長成分と短波長成分を同時に減衰させ易くすることができる。
図1のフローでは第1グリッドと第2グリッドのみ計算しているが、実用上はS230またはS231からS260の処理を再帰的に実行してより粗いグリッド上でも計算することによって、誤差の様々な波長成分を同時に減衰させ易くしている。
以上説明したように、本実施例に係るマルチグリッド法による連立一次方程式の数値解法によれば、格子分割数が2のべき乗ではない任意の格子に対して、マルチグリッド法により連立一次方程式を解くことが可能になる。
図1で示した数値計算方法は、共役勾配法、共役残差法を含む非定常反復解法の前処理として利用することも可能である。また、上述した連立一次方程式の数値計算方法は、格子分割数が2のべき乗でない2次元問題や3次元問題にも適用可能である。
本発明は、上述した連立一次方程式の数値計算方法を実現するソフトウェアのプログラムコードを記憶した記憶媒体であっても良い。該記憶媒体をシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)が記憶媒体に格納されたプログラムコードを読み出し実行することによっても本発明の目的は達成される。
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
また、プログラムコードを供給するための記憶媒体としては、例えば、フロッピー(登録商標)ディスク、ハードディスク、光磁気ディスク、CDやDVD等の光ディスク、磁気テープ、不揮発性のメモリカード、ROM等を用いることができる。または、プログラムコードをネットワークを介してダウンロードしてもよい。
また、コンピュータが読み出したプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって上述の実施例の機能が実現される実施形態でも良い。
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれるようにしても良い。その後、そのプログラムコードの指示に基づき、その拡張機能を拡張ボードや拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって上述の実施例の機能が実現される実施形態でも良い。
201…CPU,202…表示装置,203…入力装置,204…RAM

Claims (7)

  1. 数値計算装置におけるマルチグリッド法を用いた連立一次方程式の数値計算方法であって、
    前記数値計算装置が、
    格子分割数Nの細かいグリッド上のj番目の格子aにおける値xから、格子分割数N(<N)の粗いグリッド上のi番目の格子Aにおける値Xへの変換を
    Figure 2011154510
    により行う粗視化工程と、
    格子分割数Nの粗いグリッド上のi番目の格子Bにおける値Yから、格子分割数N(>N)の細かいグリッド上のj番目の格子bにおける値yへの変換を
    Figure 2011154510
    により行う精細化工程と、
    を実行し、
    前記粗視化工程は、
    前記数値計算装置が、前記格子Aを被覆する細かいグリッド上の格子aの集合を格子グループ{a}として計算するする工程と、
    前記数値計算装置が、前記格子グループ{a}に属する格子a毎に、該格子aと格子Aとの共通部分の長さ、面積又は体積と、該格子aの長さ、面積又は体積と、の比率を重なり分率pijとして計算する工程と、
    前記数値計算装置が、前記格子グループ{a}に属する格子a毎に、該格子aにおける値xの前記格子Aにおける値Xへの寄与を重み付けwijとして所定の値に設定する工程と、
    前記数値計算装置が、前記格子グループ{a}に属する格子a毎に、該格子aにおける値x、重なり分率pij及び重み付けwijの積を計算する工程と、
    前記数値計算装置が、前記積の前記格子グループ{a}に属する全ての格子に亘る総和を格子Aにおける値Xとして計算する工程と、
    を有し、
    前記精細化工程は、
    前記数値計算装置が、前記格子bを被覆する粗いグリッド上の格子Bの集合を格子グループ{B}として計算する工程と、
    前記数値計算装置が、前記格子グループ{B}に属する格子B毎に、該格子Bと格子bとの共通部分の長さ、面積又は体積と、該格子Bの長さ、面積又は体積と、の比率を重なり分率qjiとして計算する工程と、
    前記数値計算装置が、前記格子グループ{B}に属する格子B毎に、該格子Bにおける値Yの前記格子bにおける値yへの寄与を重み付けvjiとして所定の値に設定する工程と、
    前記数値計算装置が、前記格子グループ{B}に属する格子B毎に、該格子Bにおける値Y、重なり分率qji及び重み付けvjiの積を計算する工程と、
    前記数値計算装置が、前記積の前記格子グループ{B}に属する全ての格子に亘る総和を格子bにおける値yとして計算する工程と、
    を有する
    ことを特徴とするマルチグリッド法を用いた連立一次方程式の数値計算方法。
  2. 前記数値計算装置が、前記粗視化工程において重み付けwijを格子の位置に依存しない一定値に設定し、
    前記数値計算装置が、前記精細化工程において重み付けvjiを格子の位置に依存しない一定値に設定する
    ことを特徴とする請求項1に記載のマルチグリッド法を用いた連立一次方程式の数値計算方法。
  3. 前記数値計算装置が、前記粗視化工程において重み付けwijを前記格子グループ{a}に属する格子aの中で前記格子Aとの中心間距離が最短の格子以外は全てゼロに設定し、
    前記数値計算装置が、前記精細化工程において重み付けvjiを前記格子グループ{B}に属する格子Bの中で前記格子bとの中心間距離が最短の格子以外は全てゼロに設定する
    ことを特徴とする請求項1に記載のマルチグリッド法を用いた連立一次方程式の数値計算方法。
  4. 前記数値計算装置は、細かいグリッドから粗いグリッドを生成するグリッド生成工程を実行するものであって、
    前記グリッド生成工程は、
    前記細かいグリッドの各座標軸方向の格子分割数Nが偶数の場合に、前記数値計算装置が該格子分割数Nfを2で割った値を前記粗いグリッドの各座標軸方向の格子分割数Nとして決定し格子分割数比N÷Nが整数となる粗いグリッドを生成する工程と、
    前記細かいグリッドの各座標軸方向の格子分割数Nが奇数の場合に、前記数値計算装置が該格子分割数Nに1を加算または減算してから2で割った値を粗いグリッドの各座標軸方向の格子分割数Nとして決定し格子分割数比N÷Nが整数ではない有理数となる粗いグリッドを生成する工程と、
    を有する
    ことを特徴とする請求項1から3の何れか1項に記載のマルチグリッド法を用いた連立一次方程式の数値計算方法。
  5. 前記数値計算装置が、前記グリッド生成工程において粗いグリッドの格子分割数Nを(N+1)÷2に決定した場合、前記数値計算装置は、
    前記粗視化工程において前記格子グループ{a}を、
    (A)i=0の場合、細かいグリッド上の格子番号がi×2及びi×2+1の格子の集合、
    (B)i=N−1の場合、細かいグリッド上の格子番号がi×2−1及びi×2の格子の集合、
    (C)それ以外の場合、細かいグリッド上の格子番号がi×2−1、i×2及びi×2+1の格子の集合、
    として計算し、
    前記精細化工程において前記格子グループ{B}を、
    (A)jが偶数の場合、粗いグリッド上の格子番号がj÷2の格子の集合、
    (B)jが奇数の場合、粗いグリッド上の格子番号が(j−1)÷2及び(j−1)÷2+1の格子の集合、
    として計算し、
    前記数値計算装置が、前記グリッド生成工程において粗いグリッドの格子分割数Nを(N−1)÷2に決定した場合、前記数値計算装置は、
    前記粗視化工程において前記格子グループ{a}を、細かいグリッド上の格子番号がi×2、i×2+1及びi×2+2の格子の集合として計算し、
    前記精細化工程において前記格子グループ{B}を、
    (A)j=0の場合、粗いグリッド上の格子番号がj÷2の格子の集合、
    (B)j=N−1の場合、粗いグリッド上の格子番号がj÷2−1の格子の集合、
    (C)jが0またはN−1以外の偶数の場合、粗いグリッド上の格子番号がj÷2及びj÷2−1の格子の集合、
    (D)jが奇数の場合、粗いグリッド上の格子番号が(j−1)÷2の格子の集合、として計算する
    ことを特徴とする請求項4に記載のマルチグリッド法を用いた連立一次方程式の数値計算方法。
  6. 前記数値計算装置は、細かいグリッドから粗いグリッドを生成するグリッド生成工程を実行するものであって、
    前記グリッド生成工程は、
    前記細かいグリッドの各座標軸方向の格子分割数Nが偶数の場合に、前記数値計算装置が該格子分割数Nを2で割った値を前記粗いグリッドの各座標軸方向の格子分割数Nとして決定し格子分割数比N÷Nが整数となる粗いグリッドを生成する工程と、
    前記細かいグリッドの各座標軸方向の格子分割数Nが奇数の場合に、半開区間[(N−1)÷2,N)に含まれる2のべき乗、2のべき乗と3の積、2のべき乗と5の積または8の倍数のいずれかを粗いグリッドの各座標軸方向の格子分割数Nとして決定し格子分割数比N÷Nが整数ではない有理数となる粗いグリッドを生成する工程と、を有する
    ことを特徴とする請求項1から3の何れか1項に記載のマルチグリッド法を用いた連立一次方程式の数値計算方法。
  7. マルチグリッド法を用いて連立一次方程式を数値計算する数値計算装置であって、
    格子分割数Nの細かいグリッド上のj番目の格子aにおける値xから、格子分割数N(<N)の粗いグリッド上のi番目の格子Aにおける値Xへの変換を
    Figure 2011154510
    により行う粗視化手段と、
    格子分割数Nの粗いグリッド上のi番目の格子Bにおける値Yから、格子分割数N(>N)の細かいグリッド上のj番目の格子bにおける値yへの変換を
    Figure 2011154510
    により行う精細化手段と、
    を備え、
    前記粗視化手段は、
    前記格子Aを被覆する細かいグリッド上の格子aの集合を格子グループ{a}として計算するする手段と、
    前記格子グループ{a}に属する格子a毎に、該格子aと格子Aとの共通部分の長さ、面積又は体積と、該格子aの長さ、面積又は体積と、の比率を重なり分率pijとして計算する手段と、
    前記格子グループ{a}に属する格子a毎に、該格子aにおける値xの前記格子Aにおける値Xへの寄与を重み付けwijとして所定の値に設定する手段と、
    前記格子グループ{a}に属する格子a毎に、該格子aにおける値x、重な
    り分率pij及び重み付けwijの積を計算する手段と、
    前記積の前記格子グループ{a}に属する全ての格子に亘る総和を格子Aにおける値Xとして計算する手段と、
    を備え、
    前記精細化手段は、
    前記格子bを被覆する粗いグリッド上の格子Bの集合を格子グループ{B}として計算する手段と、
    前記格子グループ{B}に属する格子B毎に、該格子Bと格子bとの共通部分の長さ、面積又は体積と、該格子Bの長さ、面積又は体積と、の比率を重なり分率qjiとして計算する手段と、
    前記格子グループ{B}に属する格子B毎に、該格子Bにおける値Yの前記格子bにおける値yへの寄与を重み付けvjiとして所定の値に設定する手段と、
    前記格子グループ{B}に属する格子B毎に、該格子Bにおける値Y、重なり分率qji及び重み付けvjiの積を計算する手段と、
    前記積の前記格子グループ{B}に属する全ての格子に亘る総和を格子bにおける値yとして計算する手段と、
    を備えることを特徴とする数値計算装置。
JP2010015230A 2010-01-27 2010-01-27 連立一次方程式の数値計算方法及び装置 Withdrawn JP2011154510A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010015230A JP2011154510A (ja) 2010-01-27 2010-01-27 連立一次方程式の数値計算方法及び装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010015230A JP2011154510A (ja) 2010-01-27 2010-01-27 連立一次方程式の数値計算方法及び装置

Publications (1)

Publication Number Publication Date
JP2011154510A true JP2011154510A (ja) 2011-08-11

Family

ID=44540427

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010015230A Withdrawn JP2011154510A (ja) 2010-01-27 2010-01-27 連立一次方程式の数値計算方法及び装置

Country Status (1)

Country Link
JP (1) JP2011154510A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101809010B1 (ko) * 2016-09-09 2018-01-18 동아대학교 산학협력단 오픈폼 분석 시스템 및 방법
US11082790B2 (en) 2017-05-04 2021-08-03 Dolby International Ab Rendering audio objects having apparent size

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101809010B1 (ko) * 2016-09-09 2018-01-18 동아대학교 산학협력단 오픈폼 분석 시스템 및 방법
US11082790B2 (en) 2017-05-04 2021-08-03 Dolby International Ab Rendering audio objects having apparent size
US11689873B2 (en) 2017-05-04 2023-06-27 Dolby International Ab Rendering audio objects having apparent size

Similar Documents

Publication Publication Date Title
Papadimitriou et al. Component mode synthesis techniques for finite element model updating
Wang et al. Spectral (finite) volume method for conservation laws on unstructured grids IV: extension to two-dimensional systems
Godwin et al. High-performance sparse matrix-vector multiplication on GPUs for structured grid computations
Thuburn et al. Cascades, backscatter and conservation in numerical models of two‐dimensional turbulence
Tutkun et al. A GPU application for high-order compact finite difference scheme
Peyrl et al. Parallel implementations of the fast gradient method for high-speed MPC
Gurris et al. Implicit finite element schemes for the stationary compressible Euler equations
Leclaire et al. High order spatial generalization of 2D and 3D isotropic discrete gradient operators with fast evaluation on GPUs
Yi et al. Energy group structure determination using particle swarm optimization
Heinlein et al. A three-level extension of the GDSW overlapping Schwarz preconditioner in three dimensions
Boffie et al. An adaptive time step control scheme for the transient diffusion equation
Lannutti et al. KLU sparse direct linear solver implementation into NGSPICE
Reichert et al. Energy stable numerical methods for hyperbolic partial differential equations using overlapping domain decomposition
Oberhuber et al. TNL: Numerical library for modern parallel architectures
JP2011154510A (ja) 連立一次方程式の数値計算方法及び装置
Jamal et al. A hybrid CPU/GPU approach for the parallel algebraic recursive multilevel solver pARMS
JP6646324B2 (ja) 中性子束分布の算出方法、炉心の反応度評価方法、プログラム及び装置
Willkomm et al. A new user interface for ADiMat: toward accurate and efficient derivatives of MATLAB programmes with ease of use
Korolev et al. Design optimization under uncertainty using the multipoint approximation method
Göddeke et al. Finite and spectral element methods on unstructured grids for flow and wave propagation problems
Bonaventura et al. A self adjusting multirate algorithm based on the TR-BDF2 method
Kim et al. Closing the ninja performance gap through traditional programming and compiler technology
Buvoli Exponential polynomial block methods
Poursalehi et al. An adaptive mesh refinement approach for average current nodal expansion method in 2-D rectangular geometry
Tumelero et al. On the solution of the neutron diffusion kinetic equation in planar geometry free of stiffness with convergence analysis

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20130402