.. _5_Convergence_Conditions:

##################################
**5. 収束条件**
##################################

有限要素行列方程式の行列解法手法や収束判定条件を設定します。

---------------------
設定項目
---------------------

:paramdef:`5_Convergence_Conditions`    JSONキー：収束条件オブジェクト

:paramdef:`ICCG_CONV(5)`    ICCG 法の収束判定条件

:paramdef:`ACCEL_FACTOR(5)`    不完全コレスキー分解において対角要素に掛けるファクタ

:paramdef:`DIV_FACTOR(5)`    ICCG 計算において残差が連続してDIV_ITERATIONS 回数以前の残差に比べてDIV_FACTOR 倍以上になったとき発散したとして計算を打ち切る

:paramdef:`DIV_ITERATIONS(5)`    ICCG 計算において残差が連続してDIV_ITERATIONS 回数以前の残差に比べてDIV_FACTOR 倍以上になったとき発散したとして計算を打ち切る

:paramdef:`SOLVER(5)`    行列解法の設定

:paramdef:`THETA(5)`    時間ステップクランクニコルソン法パラメータ

:paramdef:`THETA_NETWORK(5)`    時間ステップ回路計算におけるパラメータ

:paramdef:`THETA_MOTION(5)`    時間ステップ運動計算で変位に対する運動方程式を解く場合のパラメータ

:paramdef:`MAX_ITERATIONS(5)`    線形計算でICCG反復回数の打ち切り回数を指定

:paramdef:`5_2_Nonlinear_Convergence_Condition`    JSONキー：非線形計算の収束判定条件オブジェクト

    :paramdef:`NON_LINEAR_CONV(5)`    非線形計算の収束判定条件

    :paramdef:`NON_LINEAR_RELAXATION(5)`    非線形計算緩和係数

    :paramdef:`MAX_ITERATIONS(5)`    非線形計算の反復計算打ち切り回数

    :paramdef:`NO_ITERATIONS(5)`    非線形計算の反復回数

    :paramdef:`INIT_OPTION(5)`    ステップ計算時に全ステップの値を使用するかの設定

    :paramdef:`ICCG_CONV_RATIO(5)`    非線形計算時のCG法の収束判定値の設定

    :paramdef:`CHECK_B(5)`    非線形収束判定値として磁束密度の最大変化量を指定する

    :paramdef:`DELTA_A(5)`    非線形解析の初期値をゼロクリアする

    :paramdef:`NON_LINEAR_METHOD(5)`    非線形計算の手法を設定する
    
---------------------
設定フォーマット
---------------------
.. collapsible:: 
   :title: テキストフォーマットの折りたたみセクション

        :種類: 固定パラメータセット
        :行数: 2
        :パラメータ数: 9, 8

    .. code-block:: text
        :caption: Text format

        * ICCG_CONV * ACCEL_FACTOR * DIV_FACTOR * DIV_ITERATIONS * SOLVER * THETA * THETA_NETWORK * THETA_MOTION * MAX_ITERATIONS *
        E              E             E              I           I        E            E              E             I
        * NON_LINEAR_CONV * NON_LINEAR_RELAXATION * MAX_ITERATIONS * INIT_OPTION * ICCG_CONV_RATIO * CHECK_B * DELTA_A * NON_LINEAR_METHOD *
            E                      E                        I                  I                 E             E         I      I

======================
JSONフォーマット
======================

.. code-block:: json
    :caption: JSON format from 2024.11

    "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`` を使用する方が効果的です。

.. important:: 
    :ref:`Release 2024.11 <rls2024_11>`

    ``JSON`` フォーマットでは，これらのパラメータは定義しなくてもデフォルト値を使用します。
    デフォルト値は詳細説明をご覧ください。

--------
サンプル
--------
=====================
比較的収束が良い場合
=====================

ICCG法の残差がおおよそ線形に減少する場合。非線形残差もおおよそ線形に減少する場合。

.. collapsible:: 
   :title: テキストフォーマットの折りたたみセクション

    .. code-block:: text
        :caption: Text format

        * ICCG_CONV * ACCEL_FACTOR * DIV_FACTOR * DIV_ITERATIONS * 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 * MAX_ITERATIONS * INIT_OPTION * ICCG_CONV_RATIO * CHECK_B * DELTA_A *
            0.001                   1.0                      20                0               0.001           0         0

.. code-block:: json
    :caption: JSON format from 2024.11

    "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_ITERATIONS`` を大きくしないと，反復計算が途中で打ち切られてしまう恐れがあるため，大きな値にします。

また，ICCG法の収束が悪い場合は， ``ACCEL_FACTOR`` を少し大きな値にするのも有効な場合があります。非線形計算の反復回数も多めにしておくのが適当です。

.. collapsible:: 
   :title: テキストフォーマットの折りたたみセクション

    .. code-block:: text
        :caption: Text format

        * ICCG_CONV * ACCEL_FACTOR * DIV_FACTOR * DIV_ITERATIONS * 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 * MAX_ITERATIONS * INIT_OPTION * ICCG_CONV_RATIO * CHECK_B * DELTA_A *
            0.0001                   1.0                      100                0               0.0001           0         0

.. code-block:: json
    :caption: JSON format from 2024.11

    "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以下を収束判定値とします。

.. collapsible:: 
   :title: テキストフォーマットの折りたたみセクション

    .. code-block:: text
        :caption: Text format

        * ICCG_CONV * ACCEL_FACTOR * DIV_FACTOR * DIV_ITERATIONS * 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 * MAX_ITERATIONS * INIT_OPTION * ICCG_CONV_RATIO * CHECK_B * DELTA_A *
            0.0001                   1.0                      100                0               0.0001        -0.01         0

.. code-block:: json
    :caption: JSON format from 2024.11

    "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**
==================
.. paramdef:: 5_Convergence_Conditions

:JSONキー: 収束条件オブジェクト

================
**ICCG_CONV**
================
.. paramdef:: ICCG_CONV(5)

.. collapsible:: 
   :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 1]

:型: 実数 (E)
:説明: ICCG 法の収束条件。通常、1.e-6 ～ 1.e-12 程度が適当。
:デフォルト値: 1.e-6

.. note:: 
    改訂履歴

    :ref:`Release 12.0.6 <rls12_0_6>` 
    
    推奨値を1.e-6から1.e-6～1.e-10に変更

================
**ACCEL_FACTOR**
================
.. paramdef:: ACCEL_FACTOR(5)

.. collapsible:: 
   :title: テキストフォーマットの折りたたみセクション
   
    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 2]

:型: 実数 (E)
:説明: 不完全コレスキー分解において対角要素に掛けるファクタ。1.02～1.05 程度が適当。静解析、周波数領域解析、時間領域解析の場合は0.0 あるいは正の数を入力するとそれ以上の値で自動選択される。負数の時はその符号を変えたもので固定される。
:デフォルト値: 0.0や1.0で内部で自動設定

.. tip::
   ICCG が収束しない場合、このファクタを1.2 程度に大きくすると収束する場合がある。

.. note:: 
    改訂履歴

    :ref:`Release 10.0.1 <rls10_0_1>` 
    
    周波数領域解析における自動計算機能追加

================
**DIV_FACTOR**
================
.. paramdef:: DIV_FACTOR(5)

.. collapsible:: 
   :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 3]

:型: 実数 (E)
:説明: ICCG 計算において残差が連続して ``DIV_ITERATIONS`` 回数以前の残差に比べて ``DIV_FACTOR`` 倍以上になったとき発散したとして計算を打ち切る。解析の精度を確保するため、このパラメータの設定には注意が必要。
:デフォルト値: 10

==================
**DIV_ITERATIONS**
==================
.. paramdef:: DIV_ITERATIONS(5)

.. collapsible:: 
   :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 4]

:型: 整数 (I)
:説明: ICCG 計算において残差が連続して ``DIV_ITERATIONS`` 回数以前の残差に比べて ``DIV_FACTOR`` 倍以上になったとき発散したとして計算を打ち切る。このパラメータは解析の安定性に直接関連しており、適切な値の設定が求められる。
:デフォルト値: 10

.. note:: 
    改訂履歴

    :ref:`Release 12.0.16 <rls12_0_16>` 

    IC COCRの判定仕様追加

    :ref:`Release 12.0.18 <rls12_0_18>` 
    
    ICCR, IC QMR-COCRの判定仕様追加

================
**SOLVER**
================
.. paramdef:: SOLVER(5)

.. collapsible:: 
   :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 5]

利用する反復解法の種類を指定。

.. list-table:: 実数反復解法：静解析，過渡解析
   :header-rows: 1

   * - 設定値
     - 説明
   * - 0: **デフォルト値**
     - ICCG法:対称行列，ILU-BiCGStabs法:非対称行列
   * - 1
     - ICCR法:対称行列，ILU-BiCG法：非対称行列
   * - 20
     - FSAI-PCG法：対称行列
   * - 21
     - FSAI-PCR法：対称行列

:ref:`PARALLEL_NO(4)`>=2:OpenMPによる並列計算の場合

   * - 設定値
     - 説明
   * - 0: **デフォルト値**
     - Block-ICCG法:対称行列，Block-ILU-BiCGStabs法:非対称行列
   * - 1
     - Block-ICCR法:対称行列，ILU-BiCG法：非対称行列
   * - 20
     - FSAI-PCG法：対称行列
   * - 21
     - FSAI-PCR法：対称行列

.. list-table:: 複素反復解法：交流定常解析
   :header-rows: 1

   * - 設定値
     - 説明
   * - 0: **デフォルト値**
     - IC-COCG法:複素対称行列，複素ILU-BiCGStabs法:非対称行列
   * - 1
     - IC-COCR法:複素対称行列
   * - 3
     - IC-QMR-COCR法:複素対称行列
   * - 4
     - IC-QMR-COCR法:複素対称行列
   * - 20
     - parallel FSAI-COCG法:複素対称行列
   * - 21
     - parallel FSAI-COCR法:複素対称行列

:ref:`PARALLEL_NO(4)`>=2:OpenMPによる並列計算の場合

   * - 設定値
     - 説明
   * - 0: **デフォルト値**
     - BLOCK-IC-COCG法:複素対称行列，複素ILU-BiCGStabs法:非対称行列
   * - 1
     - BLOCK-IC-COCR法:複素対称行列
   * - 20
     - parallel FSAI-COCG法:複素対称行列
   * - 21
     - parallel FSAI-COCR法:複素対称行列

.. tip:: 
    通常デフォルト値=0で十分。 周波数領域解析や非線形計算時にICCG法の収束が悪い場合，ICCR法とすると改善する場合がある。

    20=parallel FSAI-PCG法, 21=parallel FSAI-PCR法はOpenMPによる並列計算で有用な手法で，特に三次元大規模問題で :ref:`ACCEL_FACTOR(4)` > 1.2 のような問題で効果を発揮する。

.. note:: 
    改訂履歴

    :ref:`Release 11.3.1 <rls11_3_1>` 

    複素行列解法追加。

    :ref:`Release 12.0.18 <rls12_0_18>`

    ICCR法を追加。対称Gauss-Seidel CG(SGSCG)法削除。IC QMR-COCG法，IC QMR-COCR法追加

    :ref:`Release_2026_09 <rls2026_09>`

    SOLVERにOpenMP並列計算用 FSAI PCG, FSAI PCR法を追加。

================
**THETA**
================
.. paramdef:: THETA(5)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 6]

:型: 実数 (E)
:説明: 時間ステップクランクニコルソン法のパラメータ。 :paramdef:`TRANSIENT(2)` =1で渦電流を含む解析で使用される。
:デフォルト値: 2/3 = 0.66666。0.0と入力した場合，デフォルト値が使用される。

``JSON`` フォーマットでは，文字形式による数式入力も可能

.. caution:: 
    ただし，"2/3"のように文字列として入力すること！

.. code-block:: json
    :caption: JSON format from 2024.11

    "5_Convergence_Conditions" : 
    {
        "THETA" : "2/3",
    },

===================
**THETA_NETWORK**
===================
.. paramdef:: THETA_NETWORK(5)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 7]

:型: 実数 (E)
:説明: 回路計算 :paramdef:`NETWORK(17.9)` における時間差分法のパラメータ。0.5（中心差分）が推奨値。
:デフォルト値: 0.5。0.0と入力した場合デフォルト値が使用される。

``JSON`` フォーマットでは，数式入力も可能

.. caution:: 
    ただし，"1/2"のように文字列として入力すること！

.. code-block:: json
    :caption: JSON format from 2024.11

    "5_Convergence_Conditions" : 
    {
        "THETA_NETWORK" : "1/2",
    },

==================
**THETA_MOTION**
==================
.. paramdef:: THETA_MOTION(5)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 8]

:型: 実数 (E)
:説明: 運動計算 :paramdef:`MOTION(2)` で変位に対する運動方程式を解く場合のパラメータ。0.5（中心差分）が推奨。運動計算ではこの値の設定が解析結果に大きく影響する。
:デフォルト値: 0.5。0.0と入力した場合，0.5が使用される。

``JSON`` フォーマットでは，数式入力も可能

.. caution:: 
    ただし，"1/2"のように文字列として入力すること！

.. code-block:: json
    :caption: JSON format from 2024.11

    "5_Convergence_Conditions" : 
    {
        "THETA_MOTION" : "1/2",
    },

===================
**MAX_ITERATIONS**
===================
.. paramdef:: MAX_ITERATIONS(5)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 9]

:型: 整数 (I)
:説明: 線形計算での最大反復回数。指定がない場合は、未知数の数に依存する。
:デフォルト値: 0(未指定)

.. note::
    改訂履歴

    :ref:`Release 11.1.1 <rls11_1_1>` 
    
    ``MAX_ITERATIONS`` パラメータ追加。

====================
非線形計算パラメータ
====================
~~~~~~~~~~~~~~~~~~~~~~
**5_2_Nonlinear_Convergence_Condition**
~~~~~~~~~~~~~~~~~~~~~~
.. paramdef:: 5_2_Nonlinear_Convergence_Condition
    
JSONキー：非線形計算の収束判定条件オブジェクト

~~~~~~~~~~~~~~~~~~~~
**NON_LINEAR_CONV**
~~~~~~~~~~~~~~~~~~~~
.. paramdef:: NON_LINEAR_CONV(5)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 1]

:型: 実数 (E)
:説明: 非線形計算の収束条件。通常、10^(-3) ～ 10^(-5) 程度が適当。非線形収束判定を厳しくしたい場合、 ``CHECK_B`` の使用を推奨する。
:デフォルト値: 1.e-3

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
NON_LINEAR_RELAXATION
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. paramdef:: NON_LINEAR_RELAXATION(5)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 2]

:型: 実数 (E)
:説明: 非線形計算緩和係数。通常1.0。収束しないときは、0.5程度まで値を小さくする。 ``LINE_SEARCH`` =1 とすると内部緩和係数が自動計算され、この値に内部緩和係数を乗じた値になる。その場合、この値は1.0とすること。
:デフォルト値: 1.0

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**MAX_ITERATIONS**
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. paramdef:: MAX_ITERATIONS(5)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 3]

:型: 整数 (I)
:説明: 非線形計算の繰り返し打ち切り回数。20程度が適当。打ち切り後、次のステップが続行される。
:デフォルト値: 20

~~~~~~~~~~~~~~~~~~~~
**INIT_OPTION**
~~~~~~~~~~~~~~~~~~~~
.. paramdef:: INIT_OPTION(5)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 4]

ステップ計算初期値として前ステップの値を用いるか、ゼロクリアする。前ステップの影響で収束が異常になる場合に効果的。

.. list-table:: 初期値ゼロクリアオプション
   :header-rows: 1

   * - 設定値
     - 説明
   * - 0: **デフォルト値**
     - ステップ計算初期値として前ステップの値を用いる。
   * - 1
     - ゼロクリアして，ゼロ初期値を用いる。

.. tip:: 
    通常=0で十分。静解析 :paramdef:`STATIC(2)` や 時間領域解析 :paramdef:`TRANSIENT(2)` で時間刻み :paramdef:`DELTA_TIME(8)` が非常に小さく，かつ磁場変動も小さい場合，ICCG法の反復回数が非常に少なくすぐに収束判定されてしまうことがある場合，=1とすることで対処可能。

~~~~~~~~~~~~~~~~~~~~
**ICCG_CONV_RATIO**
~~~~~~~~~~~~~~~~~~~~
.. paramdef:: ICCG_CONV_RATIO(5)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 5]

:型: 実数 (E)
:説明: 非線形収束値に対してICCG法の収束値判定値を、このファクタをかけたものとする。デフォルトは ``ICCG_CONV`` / ``NON_LINEAR_CONV`` 。ICCG法が収束しておらず、非線形収束もしない場合に使用すると効果的。いわゆる :math:`\epsilon_{CG}` 法。
:デフォルト値: 0

~~~~~~~~~~~~~~~~~~~~
**CHECK_B**
~~~~~~~~~~~~~~~~~~~~
.. paramdef:: CHECK_B(5)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 6]

:型: 実数 (E)
:説明: 非線形繰り返しにおいて、磁場の変化分の最大値を出力する。 ``CHECK_B`` 以上変化した要素の数を出力する。負値の場合、磁場の変化分を非線形収束判定として使用する。いわゆる :math:`\delta B_{max}` 法。
:デフォルト値: 0.0（設定しない）

~~~~~~~~~~~~~~~~~~~~
DELTA_A
~~~~~~~~~~~~~~~~~~~~
.. paramdef:: DELTA_A(5)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 7]

:型: 実数 (E)
:説明: 非線形解析の初期値をゼロクリアする。電流源解析で電流がゼロの時刻の計算時に収束が異常になる場合に効果的。
:デフォルト値: 0.0（設定しない）

.. tip:: 
    通常は使用しない。単相正弦波電流源解析などを実施した場合に使用することが考えられる。

~~~~~~~~~~~~~~~~~~~~~~~
NON_LINEAR_METHOD
~~~~~~~~~~~~~~~~~~~~~~~
.. paramdef:: NON_LINEAR_METHOD(5)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 8]


非線形計算の手法を選択する。

.. list-table:: 非線形計算手法オプション
   :header-rows: 1

   * - 設定値
     - 説明
   * - 0: **デフォルト値**
     - Newton-Raphson法。
   * - 1
     - Fixed-Point法。
   * - -1
     - 改良Fixed-Point法。

.. note:: 
    通常はNewton-Raphson法を使用するので十分。Fixed-Point法は非常に収束が遅いが，改良Fixed-Point法はNewton-Raphson法とほぼ同等の反復回数で収束するとの報告がある。
