Loading
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