非線形動的陰解法でMPCを含むと収束しない問題を修正

概要

非線形動的陰解法の収束判定に使う残差に、MPC拘束の反力が残っていた。反力はNewton反復で小さくならないため、!EQUATION を含むモデルでは相対残差が下がらず、最初の時間ステップでMAXITERに達して止まっていた。MPCMETHOD が1でも3でも起きる。

静解析は fstr_Update_NDForce の中で fstr_Update_NDForce_MPC を呼び、この反力を残差から除いている。動的陰解法は残差の組み立てを別に持っており、この処理が入っていなかった。そこで、全荷重を組み立てた後、変位境界条件の処理の前という静解析と同じ位置で、同じサブルーチンを呼ぶようにした。線形ソルバー側ではすでにMPCが処理されており、変位増分は正しく求まっていたので、変更は収束判定に使う残差だけに効く。

issueは hecmw_mpc_trans_rhs での対処を示唆していたが、これは線形ソルバーに渡す右辺を縮約する処理で、動解析では solve_LINEQ_contact の内部ですでに行われている。今回は静解析と同じ方法に揃えた。

2ブロックを12本の !EQUATION で結合したモデルで、修正後は各ステップ4反復で収束し、時刻1.0の変位が同じ荷重の非線形静解析と5桁一致する。4領域に分割した並列実行でも、逐次との変位の差は最大 1.2E-09 である。

消去法の線形動解析の結果は変わらない。ペナルティ法の線形動解析はわずかに変わる。右辺から反力が除かれるためで、上記モデルでは拘束の誤差が 7.1E-07 から 2.4E-07 に小さくなる。

Close #601

変更内容

コミット 要約
d8173f1d dynamic: remove the MPC reaction from the residual of the implicit Newton iteration 動的陰解法の残差から fstr_Update_NDForce_MPC でMPC反力を除く
54fd1e38 tests: add nonlinear implicit dynamic analysis with !EQUATION MPCを含む非線形動的陰解法の回帰テストを消去法とペナルティ法の2ケース追加
Edited by Kazuya Goto

Merge request reports

Loading
Loading