面-面 (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_PARAM3 行目、既定 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 がそれを解除する構成です。