Fix parallel explicit contact

close #138 (closed)

陽解法+接触解析の逐次・MPI対応を実装しました。

  • fstr_dynamic_nlexplicit.f90:465
    • 接触出力配列を初期出力前に確保
    • 法線接触力を3次元ベクトルとして計算
    • hecmw_assemble_R でghost寄与をownerへ集約
    • hecmw_update_R でowner値をghostへ配信
    • 接触反復の収束量を全rankで集約
    • 最大反復数と面ノード数の検査を追加
    • 変位・速度・加速度拘束自由度を接触補正から除外
    • Coulomb摩擦、stick/slip判定、接線補正、摩擦履歴を実装
    • 接触解析の既存仕様に合わせ、3自由度以外は明示的に停止
  • fstr_contact.f90:131
    • 陽解法の法線力・摩擦力出力を生成
    • 接触有無を全rankで同期
    • ロードステップごとの接触有効化を反映
  • fstr_contact_search.f90:25
    • optional引数の未指定参照によるクラッシュを修正
    • 陽解法でも接線力方向を有限滑りに追従
  • fstr_contact_assembly.f90:524
    • 保存済み接線力から CONTACT_FRICTION を構築

追加テスト

  • contact_slag_dynamic_explicit
    • 逐次およびmaster-owner MPI
    • 通常実行と2+3ステップのrestart実行
  • contact_slag_dynamic_explicit_slave
    • CONTACT_OWNER=SLAVE
    • MPI restartを含む同一結果比較

MPI有効・METIS有効・境界チェック付きDebugビルドで検証しました。逐次、2 MPI master-owner、2 MPI slave-owner、各restartがすべて成功し、逐次との最大絶対残差は約 1.19×10^16 です。

Merge request reports

Loading
Loading