Loading
接触ダンピングの接近段階でカットバック・リスタートすると異常終了する不具合の修正
概要
接触ダンピングが有効で、スレーブ節点が CONTACTNEAR だけの接近段階に、!AUTOINC のカットバックか !RESTART の再開が起きると、次のサブステップで cannot find connectivity (2) により異常終了する。
接触の組立要否フラグは、接触状態のスキャンではダンピングが有効な NEAR 節点も数えて決まる。ところが、動的陰解法のカットバック復元と静解析のリスタート(ALAGRANGE・SLAGRANGE)では、Lagrange 乗数を持つ節点数から決め直していた。 接近段階ではこの数が0なのでフラグが偽になり、ダンピングの結合を欠いた行列構造のまま次のサブステップに進んでしまう。
スキャンが決めたフラグを infoCTChange%active にも書き、fstr_cutback_save/load で接触状態と一緒に保存・復元するようにした。 NLGEOM がローカル変数で持っていた同じ対処も、これに置き換えた。 リスタートはファイル形式を変えず、保存済みのスレーブ節点の状態から、ダンピングが有効なペアに NEAR 節点があればフラグを立てる。
| 経路 | master | このMR |
|---|---|---|
| SLAGRANGE のリスタート | 異常終了 | 完走 |
| ALAGRANGE のリスタート | 異常終了 | 完走 |
| 動的陰解法のカットバック | 異常終了 | 完走 |
| NLGEOM のカットバック | 完走 | 完走(結果は master とビット単位で一致) |
この4経路を回帰テストに加えた。比べる結果の選び方は次のとおりである。
- リスタートのテストは、ステップ3(接触後)の結果だけを通し計算と比べる。再開直後のステップは、リスタートファイルに距離が保存されずダンピングの重みが通し計算と異なるため、比べていない(#920)
- カットバックのテストは CONTACT_STATE を出力しない。並列実行で NEAR 節点が FREE と出力される既存の不具合があるためである(#921)
Close #843 (closed)
変更内容
| コミット | 一行要約 |
|---|---|
| d7b1e09c Keep the contact flag of damped NEAR nodes across cutback and restart | スキャンが決めたフラグを infoCTChange%active に持たせ、カットバック復元とリスタートで使う |
| 378d6214 Add tests of cutback and restart while damped contact is NEAR | リスタートとカットバックの回帰テストを追加する |