面-面 (surface-to-surface) mortar 接触の追加 (!CONTACT, MORTAR=YES)

close #268 (closed)

概要

!CONTACT に MORTAR=YES を追加し、拡張 Lagrange (ALAGRANGE) の面-面 (S2S) mortar 接触を実装します。 スレーブ面の積分点でギャップを mortar 積分し、セグメント (要素面) 単位で接触状態を管理します。 従来の節点-面 (N2S) 接触に対し、面あたり接触力の分布が滑らかになり、粗いメッシュの 面接触で応力集中の数値ノイズが減ります。MORTAR=NO (既定) は従来どおりで、 既存の入力・結果に変更はありません (下記「互換性」)。

主な機構

  • mortar 積分: スレーブ面の求積点 (quad4: 16 点 / tri3: 27 点) で master 面へ射影し、 重み付き法線ギャップから面単位の接触残差・接線剛性を構成
  • 活性集合: セグメント内の 1 積分点でも接触なら ON、全 OFF で解放。 解放判定にはヒステリシス帯 DISTCLR_C2F (!CONTACT_PARAM 3 行目、既定 1e-3) を用い、 接触チャタリングを抑制
  • 疎行列の近傍事前拡張 EXPANSION=NEIGHBOR: 接触遷移時の行列プロファイル再構築を 避けたい場合の任意機能 (既定 NONE)
  • 摩擦: Coulomb 摩擦 (stick/slip)。EPS_FRIC_BAND (!CONTACT_ALGO のパラメータ、既定 0) で stick/slip 判定にヒステリシス帯を与え、状態往復による収束不良を抑制できます (解析全体のパラメータです。ペア別の指定はできません)。既定値 0 (帯なし) は暫定で、 運用実績を踏まえて今後見直す可能性があります
  • 並列 (領域分割): 既存の !PARTITION, CONTACT_OWNER=SLAVE と組み合わせて動作します。 従来分割でスレーブ rank から master 面が見えないメッシュは明示エラーで案内します。 ELEMENT-BASED 分割と接触ペアの併用も明示エラーにしました (従来は不定動作)

互換性

  • MORTAR 無指定・MORTAR=NO は従来と完全互換 (本 MR 適用前後で既存 ctest 全 360 件の 結果不変を確認済み)
  • 従来の節点-面 (N2S) 接触との共存が可能です: 同一解析内で MORTAR=YES のペアと 従来ペア (MORTAR=NO の摩擦接触や結合拘束 TIED) を併用できます (実機規模の混在構成 [TIED 複数対 + mortar 複数対 + 塑性] で動作確認済み)
  • 対応範囲: ALAGRANGE × SURF-SURF × INTERACTION=FSLID × 1 次要素面 (tri3/quad4)。 結合拘束 (INTERACTION=TIED) の mortar 化は未対応です (MORTAR=YES との併記は 明示エラー。TIED ペア自体は従来どおり節点-面として併用できます)。 SLAGRANGE 併用・2 次要素面 (tri6/quad8)・SMOOTHING= 併用も明示エラーで停止します (2 次要素面とシェルは今後の対応予定)

テスト

  • tests/analysis/interaction/contact_s2s_mortar/ (frictionless 3 model: hex / tet / オプション併載 [EXPANSION+DISTCLR_C2F])
  • tests/analysis/interaction/contact_s2s_mortar_fric/ (摩擦 2 model: μ=0.1 の stick/slip 混在 + EPS_FRIC_BAND)
  • いずれも serial/openmp/mpi/hybrid の 4 変種で pass (contact_owner.txt = SLAVE を同梱)。 N2S と同一メッシュ・同一境界条件で、応答が有意に異なることを確認しています (変位 rel ~1e-2)

マニュアル

キーワードリファレンス (!CONTACT の MORTAR/EXPANSION、!CONTACT_ALGO の EPS_FRIC_BAND、 !CONTACT_PARAM の DISTCLR_C2F) と機能リファレンスの対応 MR を frontistr_documents 側で 並行して準備しており、提出後に本 MR へ紐付けます。

先頭の独立修正

系列先頭の 1 commit は !CONTACT_INTERFERENCE 用フィールドの未初期化修正です。 未指定時に if_type 等が不定値のまま参照され、型レイアウトに依存して NaN が発生し得る 潜在バグで、本開発中に顕在化したため合わせて修正しました (単独で有効な修正です)。

commit 構成

15 commits: 独立 fix (1) → frictionless mortar 本体 (5: 求積 / 入力 / 幾何・探索 / 組立 / 結線) → 並列まわり (2) → frictionless テスト (1) → 摩擦 (4) → 接触状態出力の整合 (1) → 摩擦テスト (1)。 各 commit 単体でビルド可・既存接触テスト green を維持しています。 frictionless 段階では摩擦係数指定を明示エラーとし、摩擦 commit がそれを解除する構成です。

Merge request reports

Loading
Loading