Loading
Newton 反復の収束判定を解析の種類によらず統一し、最大値による判定と !CONVERG_PARAM を追加する
概要
Newton 反復の収束判定を、解析の種類と接触の有無によらず1つの判定式にまとめた。そのうえで、収束判定の基準自体は変えずに、自由度成分の最大値による判定機能と判定条件を指定するカード !CONVERG_PARAM を加えた。
判定式の統一(#96 (closed))
- 変更前は、静解析(接触なし、接触あり)と動解析の3経路で、残差の割り方が違った。動解析はサブステップの初期残差との比で判定するため、つり合いに近い状態から始まるサブステップでは到達できない精度を求め、MAXITER で止まった
- 残差を参照力 max(||Q||, ||D||)(Q は内力、D は慣性力と粘性力)で割り、並進、回転、Lagrange 乗数を分けて判定する。収束条件は「Lagrange 乗数 かつ(修正量 または 残差)」である
- 接触のない静解析(3自由度)の判定は変わらない。接触解析と動解析では、同じ CONVERG でも反復回数と収束解が変わる
最大値判定と !CONVERG_PARAM
- L2 ノルムでは、一部の節点だけに残る残差が薄まる。自由度成分の絶対値の最大値による判定を加え、最大値の出た節点と自由度をログに出す。判定値は L2 と同じ形(残差なら max|R| / max(max|Q|, max|D|))にした。既存テストの収束した反復で、判定値は L2 の判定値の0.42〜4.0倍に収まる
- 判定量とノルムの組ごとに、判定に使うか(CHECK/SKIP)としきい値を !CONVERG_PARAM で定義し、!STEP, CONVERGPARAM= で参照する。カードを指定しなければ、判定もログも変わらない
- 例: contact_smoothing の alag_nagata(しきい値 1e-6)では、L2 だけの判定で、42ループ中3ループが接触の従面の節点に最大値の判定値 2.1e-6 を残したまま収束とされた。最大値も課すと、この3ループだけが1反復ずつ増えた
参照解の更新 判定式が変わると、既定の CONVERG=1e-3 で反復が止まる点が変わり、接触テストなどの参照解が比較許容(相対 1e-4)を超えて動く。更新した参照解は、master と本 MR のバイナリで次のように確かめた。
| テスト | 更新 | 確認 |
|---|---|---|
| 接触の SLAGRANGE、ALAGRANGE の22入力(analysis/interaction の9入力と、同じモデルの with_mkl、with_mumps) | !STEP に CONVERG=1.0e-6 を指定し、参照解を再生成 | CONVERG=1e-8 の解(収束解)との差は、旧参照解の 1.6e-4〜5.7e-2 に対し、新参照解は 2.8e-5 以下。1e-8 では master と本 MR の解の差も 2.8e-5 以下(変位は 1.5e-8 以下)で、判定式の変更は収束解を変えない |
| contact_smoothing/alag_nagata | 上に加え、FRICTION_CONE=FROZEN | 既定の FOLLOW では、master も本 MR も CONVERG=1e-6 で STEP2 の2番目の増分が収束せず、カットバック5回で止まる。master が既定の CONVERG で通るのは、旧判定が振動中の反復を収束と受け入れるため |
| dynamic/autoinc_cutback | 参照解の再生成(最終ステップの番号 11→7、54→13) | Newton 反復が減り(70→39回、425→88回)、自動増分が時間刻みを早く伸ばす。時間ステップの列が変わるので、最終状態は変位で5%違う。時間刻みを 0.1 に固定すると、master と本 MR の差は変位 2.3e-6、速度 1.4e-5。dyn_cutback のカットバックは本 MR でも6回起きる |
| interaction/hertz_autinc | 参照解のファイルの差し替え(最終サブステップの番号 12→18) | 自動増分の経路が変わった。最終状態は旧参照解と相対 6e-12 で一致する |
| dynamic/quasistatic_ramp(追加) | #96 (closed) の再現 | master は一定荷重に入った t=50 で MAXITER に達して止まる。本 MR は完走し、最終変位は静解析の解と相対 4e-5 で一致する |
| static/converg_param(追加) | 最大値判定の2ケース | — |
変更内容
| コミット | 一行要約 |
|---|---|
| fd5db778 Zero-initialize fstrSOLID%DFORCE at setup | 慣性力と粘性力の配列を確保時にゼロで初期化する。統一後の判定がすべての解析で読むため |
| e5961dd4 Unify Newton-Raphson convergence criteria across analysis paths | 3経路の判定を、参照力で割る1つの判定式にまとめる |
| 82a68f5f tests: pin the contact cases to a tighter CONVERG and regenerate references | 接触テストの CONVERG=1.0e-6 と参照解の再生成、alag_nagata の FROZEN、autoinc_cutback と hertz_autinc の参照解 |
| 3cca5100 tests: add an implicit dynamic case that starts each step in equilibrium | #96 (closed) の回帰テスト |
| 830c06f2 Evaluate Newton convergence criteria through a table of measures | 判定量を(量、自由度群、ノルム)の表で持ち、判定規則を fstr_decide_convergence にまとめる。判定は変えない |
| e842918c Add max-norm convergence criteria located by node and DOF | 最大値ノルムの判定と、最大の節点・自由度の出力 |
| 10bc3b7c Add !CONVERG_PARAM referred to by !STEP, CONVERGPARAM= | カードの読み込みと、!STEP の CONVERG 等との優先順位 |
| 49d439b2 tests: add cases checking the max-norm criteria through !CONVERG_PARAM | L2 と MAX を併用するケースと、MAX だけで判定するケース |
Close #96 (closed) Close #885 (closed)
Edited by inagaki