接触ダンピングの接近段階でカットバック・リスタートすると接触の組立要否フラグが実状態と食い違う

概要

接触ダンピングが有効で、まだどの節点も CONTACTSTICK に達していない接近段階では、 接触剛性と残差の組み立ては必要だが Lagrange未定乗数を持つ節点は1つも無い。 この状態でカットバックによる状態復元またはリスタートが起きると、 接触の組み立てが必要かどうかのフラグが偽になり、実際の状態と食い違う。

フラグは2つの経路で決まる。接触状態のスキャンは、ダンピングが有効な CONTACTNEAR 節点を 組み立てが必要なものとして数える。一方、次の4箇所は Lagrange未定乗数を持つ節点数 (contactNode_current / contactNode_previous)が正かどうかで決めている。

  • fstr_solve_NLGEOM.f90 のカットバックによる状態復元
  • fstr_dynamic_nlimplicit.f90 のカットバックによる状態復元
  • fstr_solve_NonLinear.f90 のリスタート(fstr_Newton_contactALag と fstr_Newton_contactSLag の2箇所)

接近段階では前者が真、後者が偽になる。

影響

いずれも次回のスキャンでフラグが再計算されるまでの間に限られる。

  • カットバック復元時: 直後に fstr_mat_con_contact が偽のフラグで呼ばれ、 getNewListOFrelatednodesANDLagrangeMultipliers が飛ばされるため、 ダンピングが必要とするスレーブ・マスタ間の結合を欠いた行列構造が作られる
  • リスタート時: そのサブステップで接触剛性と残差の組み立て自体が飛ばされ、 ダンピングが効かない

再現には !AUTOINC によるカットバック、または !RESTART が要る。

直し方

接触状態のスキャンが決めたフラグを infoCTChange に保存し、上記4箇所ではその値を使う。 fstr_info_contactChange の active フィールドは陽解法の経路で既に同じ用途に使われている。 リスタート経路は復元元がリスタートファイルであるため、何を保存し何から復元するかを あわせて決める必要がある。