RBE3 に強制変位を与えても動く理由を示す例題


始めに
つい先日、Radioss を用いて /RBE3 (OptiStruct では RBE3) に、強制変位などを与えても動きませんよ、という例題を投稿しました。
舌の根も乾かぬうちに、OptiStruct の RBE3 は強制変位で動きます、という話をします。
(力 FORCE ではなく、強制変位 SPC です。RBE2 ではなくて RBE3 です。動きます)
Radioss の記事が間違いなわけではなく、本来これは動いてはいけないのです。動いてはいけませんが、この使い方をしてはいけないわけでもありません。
どうして動くのかを知っておいて使うのと、知らずに使っているのでは、何か思わぬトラブル発生時の対処力が大いに変わると思いますので、是非、本記事で、どうして動いているのかを理解していきましょう。
動かないはずの理由と、動く理由を示す例題
例題モデル:
まずは動かないはずである理由です。
真ん中の節点の変位ベクトルを U0, 他の変位ベクトルを U1, U2, ,,, とすると、
U0 = (U1+U2+U3+,,,)/N (Nは周りにつながっている節点数)
という拘束条件が与えられているので、強制変位を掛けると、過拘束ですので、数学的に解けません。ソルバーごとに対処は違いますが、Radioss はエラーの代わりに強制変位を無視して計算自体は進みます。
では、どうして OptiStruct では動くのでしょうか?
実は OptiStruct には RBE3 の過拘束問題を自動で修正する機能が備わっています。先ほどの式の右辺の自由度の中から、まだ拘束されていない自由度を見つけてきて、例えばそれが U1 だとして、このように問題を書き換えているのです。
U1=NU0-(U2+U3+U4+,,,)
この例題モデルの実行ログ .out には次のような記載があり、もともとの節点 34 に変わって、節点 1 を拘束することにした、ということが分かります。
これが OptiStruct では流れていた理由です。
自動修正させず厳密に判定させる例
例題モデル:
こちらのパラメータを Off にします。
HyperMesh だとここです。
これを実行すると、過拘束できっちりエラーとなります。
正しいモデルを作りたい場合は、オフの方がよいでしょう。