(57)【特許請求の範囲】
【請求項１】
少なくとも記憶手段と演算手段とを備えるコンピュータによる空気流を解析するための数値流体計算方法であって、
前記演算手段により、数値計算が実行される毎に前回の計算値と今回の計算値との残差を求め、前記残差が、前記記憶手段に記憶されている収束判定基準値以下になれば収束と判定して前記計算を終了させるステップと、
前記記憶手段には、前記収束判定基準値より大きな第２の基準値が記憶され、前記演算手段は、前記収束判定基準値より大きく該第２の基準値以下の範囲において、前記残差の振動を検出し、前記残差の振動回数を積算し、前記積算された振動回数に基づいて計算を終了させるステップと、
を有する数値流体計算方法。
【請求項２】
前記残差の振動は、残差勾配の向きの変化により検出される請求項１に記載の数値流体計算方法。
【請求項３】
前記振動回数は、前記残差勾配の向きの変化の回数により決定される請求項１又は２に記載の数値流体計算方法。
【請求項４】
少なくとも記憶手段と演算手段とを備えるコンピュータによる数値計算の収束性判定方法であって、
前記演算手段により、数値計算が実行される毎に前回の計算値と今回の計算値との残差を求め、前記残差が、前記記憶手段に記憶されている収束判定基準値以下になれば収束と判定して前記計算を終了させるステップと、
前記記憶手段には、前記収束判定基準値より大きな第２の基準値が記憶され、前記演算手段は、前記収束判定基準値より大きく該第２の基準値以下の範囲において、前記残差の振動を検出し、前記残差の振動回数を積算し、前記積算された振動回数に基づいて計算を終了させるステップと、
を有するコンピュータによる数値計算の収束性判定方法。
【請求項５】
前記残差の振動は、残差勾配の向きの変化により検出する請求項４に記載のコンピュータによる数値計算の収束性判定方法。
【請求項６】
前記振動回数は、前記残差勾配の向きの変化の回数により決定する請求項４又は５に記載のコンピュータによる数値計算の収束性判定方法。
【請求項７】
数値計算が実行される毎に前回の計算値と今回の計算値との残差を求め、前記残差が収束判定基準値以下になれば収束であると判定して前記収束計算を終了するステップと、
前記収束判定基準値より大きな第２の基準値が設定され、前記残差が前記収束判定基準値より大きくかつ第２の基準値以下であることを判定し、前記残差の振動状態検出フローへ進むステップとを有し、
前記振動状態検出フローは、
前回の残差勾配の向きを記憶するフラグの値を参照するステップと、
今回の残差勾配を求めて、前回の残差勾配からの向きの変化を判定するステップと、
前記残差勾配の向きが変化した場合前記残差勾配の向きの変化の回数をカウンタに積算し、前記フラグの値を反転させるステップと、
前記カウンタの前記残差勾配の向きの変化の回数が所定値に達した場合に計算を終了するステップと、
を有するコンピュータによる数値計算の収束性判定方法。
【請求項８】
少なくとも記憶手段と演算手段とを備えるコンピュータによる数値計算システムであって、
前記演算手段により、数値計算が実行される毎に前回の計算値と今回の計算値との残差を求め、前記残差が、前記記憶手段に記憶されている収束判定基準値以下になれば収束と判定して前記計算を終了させる計算システムにおいて、
前記演算手段は、
前記記憶手段に記憶された、前記収束判定基準値よりも大きな第２の基準値に基づいて、前記収束判定基準値よりも大きく前記第２の基準値よりも小さい範囲で前記残差の振動を検出する手段と、
前記残差の振動回数を積算する手段とを備え、
前記残差の振動回数が所定値に達すると計算を終了させる数値計算システム。
【請求項９】
前記計算システムは数値流体計算システムである請求項８に記載の数値計算システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータを用いた数値計算方法、数値計算における収束性判定方法および数値計算システムに関する。例えば、自動車内空調時の空気流を解析するための数値流体計算の定常計算で使用される収束性判定方法に関する。
【０００２】
【従来の技術】
従来の収束性判定方法は、反復計算による前回の値と現在の値との差すなわち残差が規定の判定基準値よりも小さくなった場合に収束したと判定し、計算を打ち切るものである。
【０００３】
【発明が解決しようとする課題】
しかし、計算条件によっては、残差が収束判定基準値に達しないで、いつまでも振動する場合がある。
図１に、収束判定基準を有する反復計算の残差の変動パターンを示す。縦軸は残差であり、横軸に計算回数をとる。計算回数は計算時間に比例している。最大計算回数は、予め決められ、反復計算の回数が最大計算回数に達すると、すべての計算を終了するものである。
【０００４】
図において、Ｃパターンは、計算回数が増加すると残差が小さくなり、ある時点で収束判定基準値を下回って収束と判定され、計算終了するものである。これに対して、Ａパターンは残差が拡大して、発散するパターンである。この場合も発散と判定されると計算は終了する。
Ｂパターンは発散はしないが、収束判定基準値に達することなく最大計算回数に達するまで、反復計算が行われるパターンである。
【０００５】
Ｂパターンの計算は、収束判定基準に達しなくても、残差がある程度小さければ計算は安定しており、実用上の値として評価して問題がない場合が多い。しかし、従来の方法では、最大計算回数まで計算を続けることになり、無駄な計算時間を費やしていた。
【０００６】
本発明は、数値計算において、コンピュータによる無駄な計算時間を費やすことのない計算方法、収束性判定方法及び数値計算システムを提供することを目的とする。
【０００７】
【課題を解決するための手段】
本発明の第１の態様である数値流体計算方法は、少なくとも記憶手段と演算手段とを備えるコンピュータによる空気流を解析するための数値流体計算方法であって、前記演算手段により、数値計算が実行される毎に前回の計算値と今回の計算値との残差を求め、前記残差が、前記記憶手段に記憶されている収束判定基準値以下になれば収束と判定して前記計算を終了させるステップと、前記記憶手段には、前記収束判定基準値より大きな第２の基準値が記憶され、前記演算手段は、前記収束判定基準値より大きく該第２の基準値以下の範囲において、前記残差の振動を検出し、前記残差の振動回数を積算し、前記積算された振動回数に基づいて計算を終了させるステップと、を有する。
また、本発明の第２の態様であるコンピュータによる数値計算の収束性判定方法は、少なくとも記憶手段と演算手段とを備えるコンピュータによる数値計算の収束性判定方法であって、前記演算手段により、数値計算が実行される毎に前回の計算値と今回の計算値との残差を求め、前記残差が、前記記憶手段に記憶されている収束判定基準値以下になれば収束と判定して前記計算を終了させるステップと、前記記憶手段には、前記収束判定基準値より大きな第２の基準値が記憶され、前記演算手段は、前記収束判定基準値より大きく該第２の基準値以下の範囲において、前記残差の振動を検出し、前記残差の振動回数を積算し、前記積算された振動回数に基づいて計算を終了させるステップと、を有する。
さらに、本発明の第３の態様であるコンピュータによる数値計算の収束性判定方法は、数値計算が実行される毎に前回の計算値と今回の計算値との残差を求め、前記残差が収束判定基準値以下になれば収束であると判定して前記収束計算を終了するステップと、前記収束判定基準値より大きな第２の基準値が設定され、前記残差が前記収束判定基準値より大きくかつ第２の基準値以下であることを判定し、前記残差の振動状態検出フローへ進むステップとを有し、前記振動状態検出フローは、前回の残差勾配の向きを記憶するフラグの値を参照するステップと、今回の残差勾配を求めて、前回の残差勾配からの向きの変化を判定するステップと、前記残差勾配の向きが変化した場合前記残差勾配の向きの変化の回数をカウンタに積算し、前記フラグの値を反転させるステップと、前記カウンタの前記残差勾配の向きの変化の回数が所定値に達した場合に計算を終了するステップと、を有する。
さらに、本発明の第４の態様である数値計算システムは、少なくとも記憶手段と演算手段とを備えるコンピュータによる数値計算システムであって、前記演算手段により、数値計算が実行される毎に前回の計算値と今回の計算値との残差を求め、前記残差が、前記記憶手段に記憶されている収束判定基準値以下になれば収束と判定して前記計算を終了させる計算システムにおいて、前記演算手段は、前記記憶手段に記憶された、前記収束判定基準値よりも大きな第２の基準値に基づいて、前記収束判定基準値よりも大きく前記第２の基準値よりも小さい範囲で前記残差の振動を検出する手段と、前記残差の振動回数を積算する手段とを備え、前記残差の振動回数が所定値に達すると計算を終了させる。
したがって、本発明により、振動回数の所定値を適切な値に設定しておけば、実用的に評価できる値を得た上で、最大計算回数に達するまでに計算を終了させることができ、無駄な計算時間を費やすことがない。
【０００８】
【発明の実施の形態】
図を参照して本発明の実施形態を説明する。
図２は、本発明を実施するコンピュータシステムの一例を概略的に示す。２重線の矢印はデータないしプログラムの流れを示し、一本の実線からなる矢印は制御信号の流れを示す。
入力装置１により、数値計算のデータ及び必要なら数値計算プログラムを入力する。入力されたデータないしプログラムは記憶装置２に格納される。数値計算プログラムを実行すると、制御装置３は、記憶装置２からプログラムの命令を順次読み出し、制御信号を生成し、該制御信号によって、メモリからデータを読み出し演算装置に入力する。演算装置４は入力されたデータを用いて必要な計算を逐次実行することになる。演算結果は記憶装置２に格納され、必要に応じて出力装置５に出力される。
各装置間の接続は有線でも無線でもよい。また各装置がネットワーク上に配置されていてもよい。
このようなシステム構成は公知のものであり、各装置も公知の各種の装置を使用できる。
【０００９】
図３は、本発明の一実施形態の作用を説明するための残差パターンを示すグラフである。図１と同様、発散パターンＡと、振動パターンＢと、収束パターンＣを示す。残差の値Ｙは、これを越えると発散と判定するための値であり、収束判定基準値Ｘは、これを下回ると収束と判定するための値である。また、残差の値Ｚは、収束判定基準値Ｘと発散と判定される値Ｙの間の第２の基準値であり、これを下回ると振動状態を検出することになる。
本例（イ）では、以下に説明する手順により、第２の基準値Ｚと収束判定基準値Ｘとの間で所定回数の振動を検出して計算を終了するから、従来（ロ）のように最大計算回数ｍａｘまで計算を続けることはない。
【００１０】
図４は、本発明の実施の形態を示すフローチャートである。
ステップＳ１は、従来と同様、数値計算を反復し得られた値の収束を判定するステップ（以下、「収束計算」という。）である。ここでは、計算が実行される毎に前回の値と今回の値との残差Ｒ（ｎ）（ｎは現在の回数を示す。）を求め、残差が収束判定基準値Ｘより小さければ収束と判断し、計算終了する。また発散と判定するための値Ｙより大きい場合は発散として、計算を終了する。さらに、計算回数ｎが最大計算回数ｍａｘを越える場合も、計算終了する。
【００１１】
それ以外の場合には、なお計算を反復続行するためにステップＳ２に進む。
ステップＳ２では、今回の残差Ｒ（ｎ）を第２の基準値Ｚと比較する。残差Ｒ（ｎ）が第２の基準値Ｚより大きい場合はステップＳ１に戻り、さらに収束計算をつづける。残差が第２の基準値Ｚ以下になった場合、ステップＳ３以降の残差の振動状態検出フローへ進む。
【００１２】
ステップＳ３では、フラグｆの値によってフローの振り分けを行う。
フラグｆは前回の残差勾配、すなわち前回の残差から前々回の残差を引いた値すなわち残差の差であり、前回には、残差が小さくなる方向（下向き：負又は０）であったのか、大きくなる方向（上向き：正）であったのかを示すものである。すなわち、前回残差が下向き方向であったなら、ｆ＝０にセットされ、前回残差が上向きであったなら、ｆ＝１がセットされている。
【００１３】
このフラグの反転があれば、すなわち残差が下向きから上向きへ、あるいは上向きから下向きへ変化する場合には、振動しているとみなしてよい。
フラグｆの初期値は０にセットしてあるから、反復計算の残差が初めて第２の基準値Ｚ以下になり、振動検出状態に入る場合には、左側のフローへ進むことになる。
【００１４】
ステップＳ４では、今回の残差から前回の残差を引いて、今回の残差勾配Ｒ’を算出して、今回の残差勾配Ｒ’を評価する。
その結果、残差勾配Ｒ’≦０、すなわち残差勾配Ｒ’が０又は負の場合には、残差が小さくなる方向にあることを示し、前回の残差勾配と同じ方向にあるから、ステップ１に戻る。
残差勾配Ｒ’＞０、すなわち残差勾配Ｒ’が正の場合は、残差が大きくなる方向にあることを示し、ステップ５に進むことになる。
【００１５】
初めてこのステップに進んだ場合すなわち初めて振動検出状態に入った場合は、前回の残差は少なくともＺより大であり、今回の残差はＺより小であるから、残差勾配Ｒ’＝（今回の残差）−（前回の残差）＜０となり、収束計算を反復するステップ１に戻る。すなわち最初に第２の基準値Ｚより小さくなって振動検出フローに入ってきたものは、さらに収束計算を実行するステップに戻ることになる。
【００１６】
その後、反復計算を重ね、ステップＳ４で、残差の勾配が正になった場合には、ステップＳ５で１をカウントしてカウンタに１を加え、ステップＳ６でフラグｆに１をたて、ステップＳ１０に進む。すなわち、残差が下向きから上向きに転ずる場合で、振動しているとみなし、振動回数として１を加え、残差勾配の方向が反転したことをフラグで示す。
なお、本例では説明のために、残差勾配の変化を１回の振動回数とカウントするので、振動の１周期では振動回数を２回とカウントすることになり、いわゆる振動数とは形式上異なるが、本質的な相違はないことは明らかである。
【００１７】
ステップＳ１０では、カウント数を所定の振動回数Ｃｍａｘと比較し、所定の振動回数Ｃｍａｘに達しない場合には、さらにステップＳ１の収束計算を実行する。
次いで、ステップＳ２で、残差が第２の基準値Ｚ以下であれば、ステップＳ３以降の残差の振動状態検出フローへ進むが、この場合、フラグｆ＝１であり、残差が大きくなる方向にあるから、右側のフローへ進むことになる。
【００１８】
ステップＳ７では、残差勾配Ｒ’を判定する。残差勾配Ｒ’＞０の場合は、今回も残差が大きくなる方向にあることを示しており、残差方向が逆転するものではないから、ステップ１に戻りさらに収束計算を実行する。
ステップＳ７で、残差勾配Ｒ’≦０となった場合には、ステップＳ８で１をカウントしてカウンタに１を加え、ステップＳ９でフラグｆに０をたて、ステップＳ１０に進む。すなわち、残差が上向きから下向きに転ずる場合で、振動回数として１を加え、残差勾配の方向が反転したことをフラグで示す。
【００１９】
ステップＳ１０では、カウンタに積算されるカウント数を所定の振動回数Ｃｍａｘと比較し、所定の振動回数Ｃｍａｘに達していない場合には、さらにステップＳ１の収束計算を実行する。
このようにして、ステップＳ１０でカウント数が所定の振動回数Ｃｍａｘに達したら、計算を終了する。すなわち、所定の振動回数に達した場合には、計算結果を実用上の値として計算を終了する。
【００２０】
計算終了を判定する場合の所定の振動回数は経験的に設定することができる。たとえば数値流体計算の定常計算では、所定の振動回数として１０〜２０回程度を採用すればよい。
空調による空間における流れの計算を、最大計算回数を１０００回としてコンピュータに実行させる場合、最大計算回数まで計算させると１０時間程度かかるのが通常であるが、本発明を適用して、所定の振動回数を１０回と設定すると、７〜８時間程度で計算を終了する場合が多く、２〜３時間程度は計算時間を短縮することができる。
【図面の簡単な説明】
【図１】従来の反復計算の残差パターンを示す図である。
【図２】本発明のシステム構成を示す図である。
【図３】本発明の一実施形態の残差パターンを示す図である。
【図４】本発明の一実施形態であるフローチャートを示す図である。
【符号の説明】
１…入力装置
２…記憶装置
３…制御装置
４…演算装置
５…出力装置
【図１】
0003879532.tif 000002
【図２】
0003879532.tif 000003
【図３】
0003879532.tif 000004
【図４】
0003879532.tif 000005