ホーム > スタッフブログ > ソフトウェアサポートブログ > 計算が不安定になり途中で終わってしまう場合や、精度が上がらない場合の対処法
スタッフブログ

計算が不安定になり途中で終わってしまう場合や、精度が上がらない場合の対処法

HiPhiMagnumなどの解析プログラムで、計算が不安定になり途中で終わってしまったり、なかなか精度が上がらず解が収束しない(Relative residulalが小さくならない)、あるいは計算結果の精度が悪いといった場合の対処法を良く聞かれます。以下に原因と対処法を述べます。

 
なお、条件にもよりますが、正確な計算にはrelative residualは1.0E-6以下、出来れば1.0E-7以下が望ましいとされております。
 
 
(1) メッシュの切り方が良くない場合
 
計算がうまく行かない原因はほとんどの場合、メッシュの切り方が良くないのが原因です。
その場合、要素サイズの変化が大きすぎる場合やねじれた要素がある場合が殆どです。
メッシュを作るときに気をつけることは、隣りあった要素サイズの違いがあまり大きくならないように(メッシュ間隔の差をなるべく2倍程度以下に)することと、要素の形状ができるだけ細長くならない様にすることです。TriCompでは正三角形、AMazeでは立方体に近い要素形状が理想的です。
 
ねじれた(distorted)要素や反転した(inverted)要素がある場合は、MeshMetaMeshのメッシュ生成時の画面や.MLSファイルにdistortd element(inverted element)があるというメッセージが表示されますので、distortd elements: 0と表示されるようにメッシュを修正する必要があります。
 
メッシュ間隔の変化が急すぎる場合は、メッシュ間隔を段階的に変えて、変化を緩やかにさせる必要があります。
またメッシュが細かすぎても精度が悪化する場合があります。初心者の方で細かければ細かい程精度が良くなると考えて、非常に細かいメッシュにされる方が多いのですが、細部の構造を無理なく表現できる程度の細かさで十分です。あまり細かいと誤差が積もり、返って精度が悪くなることもあります。
 
 
(2) 境界条件が不適切な場合
 
Neumann境界が直角に交わっている場合など、本来は物理的にあり得ない条件では精度が悪くなりがちです。不自然な境界条件の設定になっていないかチェックしてみて下さい。
 
 
(3) 計算精度が低いまま計算が打ち切られている場合
 
メッシュが適切でも精度が悪い場合は、計算精度が低いまま計算が打ち切られている可能性があります。ログファイル(HiPhiでは.HLSファイルなど、拡張子が"*LS"のファイル)をテキストエディタで開いて、最後の方に"Achived targed residual"と書かれおらず、"Reached maximum number of cycles"(ソフトのバージョンによって少し文言が違うかもしれません)と書かれている場合、精度が目標(ResTargetで指定した残差)に達しておりません。その場合はインプットファイル(".*IN"ファイル)のMaxCycleの値を大きくして計算し直して下さい。
 
 
(4) OMEGAの値
 
相対残差(relative residual)がなかなか小さくならない場合、OMEGAの値を変更することで解が収束する事で改善することがあります。OMEGAは0.0から2.0までの値で、値が大きいと速く収束し、小さいと計算が安定します。(デフォルトでは1.98程度) 計算が十分に収束しない場合はこの値を小さくしてみて下さい。書式としましては、"OMEGA 1.8" のような行をRestarget行の下あたりに挿入します。