計算速度の改良

概要

Dif version 6.0 から関口・太田モデルにKoiterの流れ則を導入したことにより、非対称の剛性マトリクスを扱う必要性が生じました。Difで採用している解法は、直接法(バンドマトリクス法)と反復法(ICCG法)の2パターンがあり、このうち反復法は対称の剛性マトリクスを対象としているため、関口・太田モデルを使用した場合には反復法による計算が行えません。大規模モデルを対象とした計算では、反復法による計算は非常に高速に行われます。ただし、反復法による計算は無理な計算条件の解を得ようとすると非常に計算の繰り返し回数が多くなり、最悪の場合には計算が収束しないことがあります。このようなときには直接法に切り替えて再計算されますが、最初から直接法で計算したときよりも計算に時間を要することになります。直接法は計算に時間を要するものの必ず解が得られますので、計算手法としては安定しています。

Koiterの流れ則は、非対称の剛性マトリクスを扱うことにより計算効率が悪くなりますので、Dif version 6.2 では計算速度を改良することとしました。計算速度の改良については、直接法を改良する方法と、非対称剛性マトリクスを扱える反復法を適用する方法が考えられますが、今回の改良では直接法を改良することとしました。

Dif version 5.3 の計算速度

Dif version 5.3 の計算法は、デフォルト(直接法と反復法の使い分け)、直接法(バンドマトリクス法)、反復法(ICCG法)の3パターンを選択できるようになっています。下図は各計算手法における速度比較グラフです。直接法の計算は、節点数の増加に伴い幾何級数的に計算時間が増加しますが、反復法は節点数の増加に対して比較的線形的な計算時間の増加となります。節点数10000のケースでは、直接法は反復法の50倍程度の計算時間となり、大規模問題においては反復法がいかに高速かが分かります。

節点数と計算速度の関係(Dif version 5.3)

節点数と計算速度の関係(DifVer5.3)

※節点数2500、反復法の計算速度を1とした比較

バージョンの違いによる直接法の計算速度比較

下図に示すように10000節点のケースでversion 6.0 と 6.2 を比較するとversion 6.2 のほうが3.5倍程度計算速度が向上しています。5000節点のケースでは、5倍程度高速になりました。計算処理の効率化を図り直接法の計算速度が数倍高速になりました。

節点数と計算速度の関係(直接法によるバージョン間の比較)

節点数と計算速度の関係(直接法によるバージョン間の比較)

※節点数2500、version 5.3の計算速度を1とした比較

直接法と反復法による計算速度比較

version 5.3 で使用している関口・太田モデルは対称の剛性マトリクスですが、version 6.0 以降は非対称の剛性マトリクスであるために単純計算するとversion 6.0 以降のほうが計算に2倍時間を要します。version 5.3 と 6.0 では速度比較の対象が異なりますが、下図に示すように10000節点の直接法と反復法では20倍程度の速度差が生じています。非対称を加味しても10倍程度の速度差となります。大規模問題においては反復法による計算は非常に有利です。今後のバージョンアップでは、非対称の反復法を導入する予定です。

節点数と計算速度の関係(バージョン間の比較)

節点数と計算速度の関係(バージョン間の比較)

※節点数2500、version 5.3(反復法)の計算速度を1とした比較