SLagrangeの自由度消去経路+直接法ソルバで摩擦接触の非対称行列が対称モードで分解される
現象
!CONTACT_ALGO,TYPE=SLAGRANGE の Lagrange 乗数自由度消去経路(!SOLVER の CONTACT_ELIM=1)で
摩擦接触解析を直接法ソルバ(METHOD=MUMPS / DIRECTmkl)により解くと、摩擦による非対称行列が対称モードで分解される。
- MUMPS: SYM=2 かつ CNTL(1)=0.0(数値ピボット無効)
- MKL (PARDISO): mtype=-2(対称不定値)
このため接触アクティブ時の線形相対残差が ~1e-1 となり、
### Relative residual exceeded 1.0d-8---Direct Solver### が出力される。
Newton 残差は正確に評価されるため最終解は収束し得るが、線形解の品質劣化で反復回数が増え、
収束余裕のないケースでは破綻し得る。摩擦係数0.2の小規模接触モデルでの実測では、
線形残差 worst 9.89E-02、Newton 8反復(修正後: 4.59E-15、7反復)だった。
原因
fistr1 は対称性判定 fstr_is_matrixStruct_symmetric(摩擦係数≠0 で false)を計算して
solve_LINEQ_contact_init に渡しており、ALagrange 経路の直接法 init はこれを疎行列の
symtype に正しく反映する。しかし SLagrange の自由度消去経路(solve_LINEQ_contact_elim.f90)の
init は is_sym を反復法の CG 切替用フラグ SymType に保存するだけで、行列オブジェクトの
symmetric フラグ(直接法ラッパが分解モードの決定に読む唯一の情報源、既定 .true.)へ
伝搬しない。消去後系 hecTKT は hecmw_mat_init で作られ make_new_hecmat は
Iarray/Rarray しかコピーしないため、既定の .true. のまま直接法ラッパに渡る。
MPCMETHOD=3 で作られる hecMATmpc にも同様の伝搬欠落がある。