5. 収束条件#
有限要素行列方程式の行列解法手法や収束判定条件を設定します。
設定項目#
5_Convergence_Conditions
JSONキー:収束条件オブジェクト
ICCG_CONV(5)
ICCG 法の収束判定条件
ACCEL_FACTOR(5)
不完全コレスキー分解において対角要素に掛けるファクタ
DIV_FACTOR(5)
ICCG 計算において残差が連続してDIV_ITERATION 回数以前の残差に比べてDIV_FACTOR 倍以上になったとき発散したとして計算を打ち切る
DIV_ITERATION(5)
ICCG 計算において残差が連続してDIV_ITERATION 回数以前の残差に比べてDIV_FACTOR 倍以上になったとき発散したとして計算を打ち切る
SOLVER(5)
行列解法の設定
THETA(5)
時間ステップクランクニコルソン法パラメータ
THETA_NETWORK(5)
時間ステップ回路計算におけるパラメータ
THETA_MOTION(5)
時間ステップ運動計算で変位に対する運動方程式を解く場合のパラメータ
MAX_ITERATIONS(5)
線形計算でICCG反復回数の打ち切り回数を指定
5_2_Nonlinear_Convergence_Condition
JSONキー:非線形計算の収束判定条件オブジェクト
NON_LINEAR_CONV(5)
非線形計算の収束判定条件
NON_LINEAR_RELAXATION(5)
非線形計算緩和係数
NON_LINEAR_ITERATIONS(5)
非線形計算の反復計算打ち切り回数
INIT_OPTION(5)
ステップ計算時に全ステップの値を使用するかの設定
ICCG_CONV_RATIO(5)
非線形計算時のCG法の収束判定値の設定
CHECK_B(5)
非線形収束判定値として磁束密度の最大変化量を指定する
DELTA_A(5)
非線形解析の初期値をゼロクリアする
NON_LINEAR_METHOD(5)
非線形計算の手法を設定する
設定フォーマット#
テキストフォーマットの折りたたみセクション
- 種類:
固定パラメータセット
- 行数:
2
- パラメータ数:
9, 8
Text format#* ICCG_CONV * ACCEL_FACTOR * DIV_FACTOR * DIV_ITERATION * SOLVER * THETA * THETA_NETWORK * THETA_MOTION * MAX_ITERATIONS * E E E I I E E E I * NON_LINEAR_CONV * NON_LINEAR_RELAXATION * NON_LINEAR_ITERATIONS * INIT_OPTION * ICCG_CONV_RATIO * CHECK_B * DELTA_A * NON_LINEAR_METHOD * E E I I E E I I
JSONフォーマット#
"5_Convergence_Conditions" :
{
"ICCG_CONV" : E,
"ACCEL_FACTOR" : E,
"DIV_FACTOR" : E,
"DIV_ITERATIONS" : I,
"SOLVER" : I,
"THETA" : E or math,
"THETA_NETWORK" : E or math,
"THETA_MOTION" : E or math,
"MAX_ITERATIONS" : I,
"5_2_Nonlinear_Convergence_Condition" :
{
"NON_LINEAR_CONV" : E,
"RELAXATION" : E,
"NO_ITERATIONS" : I,
"INIT_OPTION" : I,
"ICCG_CONV_RATIO" : E,
"CHECK_B" : E,
"DELTA_A" : E,
"NON_LINEAR_METHOD" : I
}
},
Important
NON_LINEAR_RELAXATION
を使用するよりも LINE_SEARCH
を使用する方が効果的です。
サンプル#
比較的収束が良い場合#
ICCG法の残差がおおよそ線形に減少する場合。非線形残差もおおよそ線形に減少する場合。
テキストフォーマットの折りたたみセクション
Text format#* ICCG_CONV * ACCEL_FACTOR * DIV_FACTOR * DIV_ITERATION * SOLVER * THETA * THETA_NETWORK * THETA_MOTION * MAX_ITERATIONS * 1e-006 1.02 10 10 0 0.6666667 0.5 0.5 * NON_LINEAR_CONV * NON_LINEAR_RELAXATION * NON_LINEAR_ITERATIONS * INIT_OPTION * ICCG_CONV_RATIO * CHECK_B * DELTA_A * 0.001 1.0 20 0 0.001 0 0
"5_Convergence_Conditions" :
{
"ICCG_CONV" : 1.0e-06,
"ACCEL_FACTOR" : 1.02,
"DIV_FACTOR" : 10,
"DIV_ITERATIONS" : 10,
"SOLVER" : 0,
"THETA" : 6.666666e-01,
"THETA_NETWORK" : 0.5,
"THETA_MOTION" : 0.5,
"MAX_ITERATIONS" : 0,
"5_2_Nonlinear_Convergence_Condition" :
{
"NON_LINEAR_CONV" : 1.0e-03,
"RELAXATION" : 1.0,
"NO_ITERATIONS" : 20,
"INIT_OPTION" : 0,
"ICCG_CONV_RATIO" : 1.0e-03,
"CHECK_B" : 0,
"DELTA_A" : 0,
"NON_LINEAR_METHOD" : 0
}
},
"5_Convergence_Conditions" :
{
"ICCG_CONV" : 1.0e-06,
"ACCEL_FACTOR" : 1.02,
"5_2_Nonlinear_Convergence_Condition" :
{
"NON_LINEAR_CONV" : 1.0e-03,
"NO_ITERATIONS" : 20,
"ICCG_CONV_RATIO" : 1.0e-03,
"CHECK_B" : 0
}
},
収束が悪い場合(非線形計算含む)#
ICCG法の残差が増減する場合, DIV_FACTOR
, DIV_ITERATION
を大きくしないと,反復計算が途中で打ち切られてしまう恐れがあるため,大きな値にします。
また,ICCG法の収束が悪い場合は, ACCEL_FACTOR
を少し大きな値にするのも有効な場合があります。非線形計算の反復回数も多めにしておくのが適当です。
テキストフォーマットの折りたたみセクション
Text format#* ICCG_CONV * ACCEL_FACTOR * DIV_FACTOR * DIV_ITERATION * SOLVER * THETA * THETA_NETWORK * THETA_MOTION * MAX_ITERATIONS * 1e-008 1.2 100 100 0 0.6666667 0.5 0.5 * NON_LINEAR_CONV * NON_LINEAR_RELAXATION * NON_LINEAR_ITERATIONS * INIT_OPTION * ICCG_CONV_RATIO * CHECK_B * DELTA_A * 0.0001 1.0 100 0 0.0001 0 0
"5_Convergence_Conditions" :
{
"ICCG_CONV" : 1.0e-08,
"ACCEL_FACTOR" : 1.2,
"DIV_FACTOR" : 100,
"DIV_ITERATIONS" : 100,
"SOLVER" : 0,
"THETA" : 6.666666e-01,
"THETA_NETWORK" : 0.5,
"THETA_MOTION" : 0.5,
"MAX_ITERATIONS" : 0,
"5_2_Nonlinear_Convergence_Condition" :
{
"NON_LINEAR_CONV" : 1.0e-04,
"RELAXATION" : 1.0,
"NO_ITERATIONS" : 100,
"INIT_OPTION" : 0,
"ICCG_CONV_RATIO" : 1.0e-04,
"CHECK_B" : 0,
"DELTA_A" : 0,
"NON_LINEAR_METHOD" : 0
}
},
"5_Convergence_Conditions" :
{
"ICCG_CONV" : 1.0e-08,
"ACCEL_FACTOR" : 1.2,
"DIV_FACTOR" : 10,
"DIV_ITERATIONS" : 10,
"5_2_Nonlinear_Convergence_Condition" :
{
"NON_LINEAR_CONV" : 1.0e-04,
"NO_ITERATIONS" : 100,
"ICCG_CONV_RATIO" : 1.0e-04,
"CHECK_B" : 0
}
},
非線形計算の収束判定値として CHECK_B
を使用する場合#
上記の収束が悪い場合に, CHECK_B
を指定することで収束判定値を厳しくすることができます。
鉄損計算時やコギングトルク計算時はこちらを使用するのが適当です。ここでは CHECK_B
=-0.01 0.01T以下を収束判定値とします。
テキストフォーマットの折りたたみセクション
Text format#* ICCG_CONV * ACCEL_FACTOR * DIV_FACTOR * DIV_ITERATION * SOLVER * THETA * THETA_NETWORK * THETA_MOTION * MAX_ITERATIONS * 1e-008 1.2 100 100 0 0.6666667 0.5 0.5 * NON_LINEAR_CONV * NON_LINEAR_RELAXATION * NON_LINEAR_ITERATIONS * INIT_OPTION * ICCG_CONV_RATIO * CHECK_B * DELTA_A * 0.0001 1.0 100 0 0.0001 -0.01 0
"5_Convergence_Conditions" :
{
"ICCG_CONV" : 1.0e-08,
"ACCEL_FACTOR" : 1.2,
"DIV_FACTOR" : 100,
"DIV_ITERATIONS" : 100,
"SOLVER" : 0,
"THETA" : 6.666666e-01,
"THETA_NETWORK" : 0.5,
"THETA_MOTION" : 0.5,
"MAX_ITERATIONS" : 0,
"5_2_Nonlinear_Convergence_Condition" :
{
"NON_LINEAR_CONV" : 1.0e-04,
"RELAXATION" : 1.0,
"NO_ITERATIONS" : 100,
"INIT_OPTION" : 0,
"ICCG_CONV_RATIO" : 1.0e-04,
"CHECK_B" : -0.01,
"DELTA_A" : 0,
"NON_LINEAR_METHOD" : 0
}
},
"5_Convergence_Conditions" :
{
"ICCG_CONV" : 1.0e-08,
"ACCEL_FACTOR" : 1.2,
"DIV_FACTOR" : 10,
"DIV_ITERATIONS" : 10,
"5_2_Nonlinear_Convergence_Condition" :
{
"NON_LINEAR_CONV" : 1.0e-04,
"NO_ITERATIONS" : 100,
"ICCG_CONV_RATIO" : 1.0e-04,
"CHECK_B" : -0.01
}
},
詳細説明#
5_Convergence_Conditions#
- 5_Convergence_Conditions#
- JSONキー:
収束条件オブジェクト
ICCG_CONV#
- ICCG_CONV(5)#
テキストフォーマットの折りたたみセクション
固定パラメータセット1#[row, col] = [1, 1]
- 型:
実数 (E)
- 説明:
ICCG 法の収束条件。通常、1.e-6 ~ 1.e-12 程度が適当。
- デフォルト値:
1.e-6
ACCEL_FACTOR#
- ACCEL_FACTOR(5)#
テキストフォーマットの折りたたみセクション
固定パラメータセット1#[row, col] = [1, 2]
- 型:
実数 (E)
- 説明:
不完全コレスキー分解において対角要素に掛けるファクタ。1.02~1.05 程度が適当。静解析、周波数領域解析、時間領域解析の場合は0.0 あるいは正の数を入力するとそれ以上の値で自動選択される。負数の時はその符号を変えたもので固定される。
- デフォルト値:
0.0や1.0で内部で自動設定
Tip
ICCG が収束しない場合、このファクタを1.2 程度に大きくすると収束する場合がある。
DIV_FACTOR#
- DIV_FACTOR(5)#
テキストフォーマットの折りたたみセクション
固定パラメータセット1#[row, col] = [1, 3]
- 型:
実数 (E)
- 説明:
ICCG 計算において残差が連続して
DIV_ITERATION
回数以前の残差に比べてDIV_FACTOR
倍以上になったとき発散したとして計算を打ち切る。解析の精度を確保するため、このパラメータの設定には注意が必要。- デフォルト値:
10
DIV_ITERATION#
- DIV_ITERATION(5)#
テキストフォーマットの折りたたみセクション
固定パラメータセット1#[row, col] = [1, 4]
- 型:
整数 (I)
- 説明:
ICCG 法において、残差が連続して
DIV_FACTOR
倍以上に増加した回数がこの値に達した場合、計算を中止する。このパラメータは解析の安定性に直接関連しており、適切な値の設定が求められる。- デフォルト値:
10
SOLVER#
- SOLVER(5)#
テキストフォーマットの折りたたみセクション
固定パラメータセット1#[row, col] = [1, 5]
利用する反復解法の種類を指定。
設定値 |
説明 |
---|---|
0: デフォルト値 |
ICCG法:対称行列,ILU-BiCGStabs法:非対称行列 |
1 |
ICCR法: 対称行列,ILU-BiCG法:非対称行列 |
設定値 |
説明 |
---|---|
0: デフォルト値 |
IC-COCG法: 複素対称行列,複素ILU-BiCGStabs法:非対称行列 |
1 |
IC-COCR法: 複素対称行列 |
3 |
IC-QMR-COCR法 |
4 |
IC-QMR-COCR法 |
Tip
通常デフォルト値=0で十分。 周波数領域解析や非線形計算時にICCG法の収束が悪い場合,ICCR法とすると改善する場合がある。
Note
改訂履歴
複素行列解法追加。
ICCR法を追加。対称Gauss-Seidel CG(SGSCG)法削除。IC QMR-COCG法,IC QMR-COCR法追加
THETA#
- THETA(5)#
テキストフォーマットの折りたたみセクション
[row, col] = [1, 6]
- 型:
実数 (E)
- 説明:
時間ステップクランクニコルソン法のパラメータ。
TRANSIENT(2)
=1で渦電流を含む解析で使用される。- デフォルト値:
2/3 = 0.66666。0.0と入力した場合,デフォルト値が使用される。
JSON
フォーマットでは,文字形式による数式入力も可能
Caution
ただし,"2/3"のように文字列として入力すること!
"5_Convergence_Conditions" :
{
"THETA" : "2/3",
},
THETA_NETWORK#
- THETA_NETWORK(5)#
テキストフォーマットの折りたたみセクション
[row, col] = [1, 7]
- 型:
実数 (E)
- 説明:
回路計算
NETWORK(17.9)
における時間差分法のパラメータ。0.5(中心差分)が推奨値。- デフォルト値:
0.5。0.0と入力した場合デフォルト値が使用される。
JSON
フォーマットでは,数式入力も可能
Caution
ただし,"1/2"のように文字列として入力すること!
"5_Convergence_Conditions" :
{
"THETA_NETWORK" : "1/2",
},
THETA_MOTION#
- THETA_MOTION(5)#
テキストフォーマットの折りたたみセクション
[row, col] = [1, 8]
- 型:
実数 (E)
- 説明:
運動計算
MOTION(2)
で変位に対する運動方程式を解く場合のパラメータ。0.5(中心差分)が推奨。運動計算ではこの値の設定が解析結果に大きく影響する。- デフォルト値:
0.5。0.0と入力した場合,0.5が使用される。
JSON
フォーマットでは,数式入力も可能
Caution
ただし,"1/2"のように文字列として入力すること!
"5_Convergence_Conditions" :
{
"THETA_MOTION" : "1/2",
},
MAX_ITERATIONS#
- MAX_ITERATIONS(5)#
テキストフォーマットの折りたたみセクション
[row, col] = [1, 9]
- 型:
整数 (I)
- 説明:
線形計算での最大反復回数。指定がない場合は、未知数の数に依存する。
- デフォルト値:
0(未指定)
非線形計算パラメータ#
5_2_Nonlinear_Convergence_Condition#
- 5_2_Nonlinear_Convergence_Condition#
JSONキー:非線形計算の収束判定条件オブジェクト
NON_LINEAR_CONV#
- NON_LINEAR_CONV(5)#
テキストフォーマットの折りたたみセクション
[row, col] = [2, 1]
- 型:
実数 (E)
- 説明:
非線形計算の収束条件。通常、10^(-3) ~ 10^(-5) 程度が適当。非線形収束判定を厳しくしたい場合、
CHECK_B
の使用を推奨する。- デフォルト値:
1.e-3
NON_LINEAR_RELAXATION#
- NON_LINEAR_RELAXATION(5)#
テキストフォーマットの折りたたみセクション
[row, col] = [2, 2]
- 型:
実数 (E)
- 説明:
非線形計算緩和係数。通常1.0。収束しないときは、0.5程度まで値を小さくする。
LINE_SEARCH
=1 とすると内部緩和係数が自動計算され、この値に内部緩和係数を乗じた値になる。その場合、この値は1.0とすること。- デフォルト値:
1.0
NON_LINEAR_ITERATIONS#
- NON_LINEAR_ITERATIONS(5)#
テキストフォーマットの折りたたみセクション
[row, col] = [2, 3]
- 型:
整数 (I)
- 説明:
非線形計算の繰り返し打ち切り回数。20程度が適当。打ち切り後、次のステップが続行される。
- デフォルト値:
20
INIT_OPTION#
- INIT_OPTION(5)#
テキストフォーマットの折りたたみセクション
[row, col] = [2, 4]
ステップ計算初期値として前ステップの値を用いるか、ゼロクリアする。前ステップの影響で収束が異常になる場合に効果的。
設定値 |
説明 |
---|---|
0: デフォルト値 |
ステップ計算初期値として前ステップの値を用いる。 |
1 |
ゼロクリアして,ゼロ初期値を用いる。 |
Tip
通常=0で十分。静解析 STATIC(2)
や 時間領域解析 TRANSIENT(2)
で時間刻み DELTA_TIME(8)
が非常に小さく,かつ磁場変動も小さい場合,ICCG法の反復回数が非常に少なくすぐに収束判定されてしまうことがある場合,=1とすることで対処可能。
ICCG_CONV_RATIO#
- ICCG_CONV_RATIO(5)#
テキストフォーマットの折りたたみセクション
[row, col] = [2, 5]
- 型:
実数 (E)
- 説明:
非線形収束値に対してICCG法の収束値判定値を、このファクタをかけたものとする。デフォルトは
ICCG_CONV
/NON_LINEAR_CONV
。ICCG法が収束しておらず、非線形収束もしない場合に使用すると効果的。いわゆる \(\epsilon_{CG}\) 法。- デフォルト値:
0
CHECK_B#
- CHECK_B(5)#
テキストフォーマットの折りたたみセクション
[row, col] = [2, 6]
- 型:
実数 (E)
- 説明:
非線形繰り返しにおいて、磁場の変化分の最大値を出力する。
CHECK_B
以上変化した要素の数を出力する。負値の場合、磁場の変化分を非線形収束判定として使用する。いわゆる \(\delta B_{max}\) 法。- デフォルト値:
0.0(設定しない)
DELTA_A#
- DELTA_A(5)#
テキストフォーマットの折りたたみセクション
[row, col] = [2, 7]
- 型:
実数 (E)
- 説明:
非線形解析の初期値をゼロクリアする。電流源解析で電流がゼロの時刻の計算時に収束が異常になる場合に効果的。
- デフォルト値:
0.0(設定しない)
Tip
通常は使用しない。単相正弦波電流源解析などを実施した場合に使用することが考えられる。
NON_LINEAR_METHOD#
- NON_LINEAR_METHOD(5)#
テキストフォーマットの折りたたみセクション
[row, col] = [2, 8]
非線形計算の手法を選択する。
設定値 |
説明 |
---|---|
0: デフォルト値 |
Newton-Raphson法。 |
1 |
Fixed-Point法。 |
-1 |
改良Fixed-Point法。 |
Note
通常はNewton-Raphson法を使用するので十分。Fixed-Point法は非常に収束が遅いが,改良Fixed-Point法はNewton-Raphson法とほぼ同等の反復回数で収束するとの報告がある。