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