Fix tangential contact force update in dynamic implicit analysis

close #777 (closed)

動解析陰解法 fstr_dynamic_nlimplicit.f90 の fstr_Newton_dynamic_contactSLag では、増分の収束後に状態をコミットする際、fstr_UpdateState は呼んでいますが、接線方向接触力をコミットする fstr_update_contact_TangentForce の呼び出しが抜けています。

静解析 fstr_solve_NonLinear.f90 には fstr_UpdateState 直後に当該呼び出しがあり、これと非対称になっていました。このため tangentForce1(次増分のトライアル摩擦の基準値)が増分間で更新されず、摩擦履歴が累積されません。結果、stick 状態でも摩擦力が過小評価され、被押付け側が余計に滑ります。

修正

fstr_UpdateState( hecMESH, fstrSOLID, t_delta ) の直後に1行追加(静解析と同形):

    call fstr_UpdateState( hecMESH, fstrSOLID, t_delta )
    call fstr_update_contact_TangentForce( cstep, fstrSOLID )

use mContact は既にあり追加 use は不要。

回帰テスト

tests/analysis/dynamic/implicit_contact_fslid/2box_hex_fric を追加しました。 2 ブロックの上箱を面圧(DLOAD P3)で押し付けつつ、μN 未満の接線荷重(CLOAD +x)で stick させる動解析陰解法 SLagrange 摩擦問題です(μ=0.3, N≈1.62, 接線≈0.198)。

  • 修正あり:CONTACT_FRICTION が適用接線荷重に見合って発達 → リファレンスと一致(PASS)
  • 修正なし:摩擦が累積されず CONTACT_FRICTION ノルムが約 30% ずれ、上箱変位も約 11% 乖離 → FAIL

Merge request reports

Loading
Loading