.. _18_Time_Function:

##################################
**18. 時間変化関数**
##################################

他で使用する時間変化関数を定義します。

時間変化関数は，外部電気回路の電流や電圧を定義するために使用します。
また，永久磁石の磁化 :paramdef:`MAGNET(17.7)` や，並進・回転運動の移動量を定義するためにも使用します。

---------------------
設定項目
---------------------

:paramdef:`18_Time_Function(18)`    JSONキー：時間変化関数オブジェクト

:paramdef:`TIME_ID(18)`    ソース項の識別番号

:paramdef:`OPTION(18)`    時間変化の与え方を設定するオプション

:paramdef:`解析式(18.1)`

    :paramdef:`C0/C1/C2/C3/C4/C5/C6 TEXP TCYCLE PHASE4(18.1)`    時間変化の解析式のパラメータ

:paramdef:`時間テーブル(18.2)`    時間変化の時間テーブルのパラメータ

    :paramdef:`NO_TIME_POINTS(18.2)`    時刻点数

    :paramdef:`CYCLE(18.2)`    繰り返しの周期 (sec)

    :paramdef:`TIME(18.2)`    時刻 (sec)
    
    :paramdef:`VALUE(18.2)`    値

:paramdef:`交流表示(18.3)`    交流表示のパラメータ

    :paramdef:`AMPLITUDE(18.3)`    振幅

    :paramdef:`TCYCLE(18.3)`    周期 (sec)

    :paramdef:`PHASE(18.3)`    位相 (deg)


:paramdef:`PSIM，MATLAB/Simulink 連成解析(18.4)`    PSIM，MATLAB/Simulink 入出力データのパラメータ

    :paramdef:`PSIM_IN(18.4)`    PSIMからの電圧の入力番号

    :paramdef:`PSIM_OUT(18.4)`    PSIMへの電流の出力番号


:paramdef:`数式入力(18.5)`    時間変化関数 f(t) を数式入力

    :paramdef:`MATH_EQ(18.5)`    時間変化関数 f(t) を入力


:paramdef:`運動方程式入力(18.6)`    運動方程式のパラメータ

    :paramdef:`INITIAL_POSITION(18.6)`    基準位置からの相対位置初期値 (m[deg])

    :paramdef:`INITIAL_VELOCITY(18.6)`    初期速度 (m/sec[deg/sec])

    :paramdef:`POSITION_ERROR(18.6)`    位置計算許容誤差 (m[deg])

    :paramdef:`LOWER_LIMIT(18.6)`    変位下限 (m[deg])

    :paramdef:`UPPER_LIMIT(18.6)`    変位上限 (m[deg])

    :paramdef:`LOWER_REFLECTION(18.6)`    変位下限における反射係数

    :paramdef:`UPPER_REFLECTION(18.6)`    変位上限における反射係数

    :paramdef:`MASS(18.6)`    質量 (kg)[慣性モーメント(kg・m²)]

    :paramdef:`CONST_FORCE(18.6)`    位置および速度に関係しない外部力 (N)[トルク(Nm)]

    :paramdef:`STATIC_FRICTION(18.6)`    静止摩擦力 (N[Nm])

    :paramdef:`TIME_CONST_FORCE(18.6)`    時間変化する外部力のデータ番号

    :paramdef:`MASS_ACCELERATION(18.6)`    質量にかかる加速度 (m/s²[deg/s²])

    :paramdef:`CONST_DISPLACEMENT(18.6)`    1ステップで移動する変位 (m[deg])

    :paramdef:`POSITION_DEPEND_MASS(18.6)`    相対位置依存質量

    :paramdef:`NO_SPRING(18.6)`    スプリング定義個数

    :paramdef:`NO_DAMPER(18.6)`    ダンパー定義個数

    :paramdef:`MATH_EQ(18.6)`    印加力を位置と速度の関数で数式入力


:paramdef:`SPRING(18.6.1)`    スプリング定義のパラメータ

    :paramdef:`SPRING_TYPE(18.6.1)`    スプリング定義の種類

    :paramdef:`LOWER_RANGE(18.6.1)`    定義位置下限 (m[deg])

    :paramdef:`UPPER_RANGE(18.6.1)`    定義位置上限 (m[deg])

    :paramdef:`SPRING_CONST(18.6.1)`    バネ定数 (N/m[Nm/deg])

    :paramdef:`EQUIL_POSITION(18.6.1)`    バネ平衡位置 (m[deg])

    :paramdef:`POSITION(18.6.1)`    基準位置からの相対位置 (m[deg])

    :paramdef:`FORCE(18.6.1)`    位置におけるバネ力 (N[トルク(Nm)])


:paramdef:`DAMPER(18.6.2)`    ダンパー定義のパラメータ

    :paramdef:`DAMPER_TYPE(18.6.2)`    ダンパー定義の種類

    :paramdef:`C0(18.6.2)`    動摩擦力 (N[Nm])

    :paramdef:`C1(18.6.2)`    粘性係数 (N/(m/sec)[Nm/(deg/sec)])

    :paramdef:`C2(18.6.2)`    速度自乗力の係数 (N/(m²/sec)[Nm/(deg²/sec)])

    :paramdef:`C3(18.6.2)`    速度3乗力の係数 (N/(m³/sec)[Nm/(deg³/sec)])

    :paramdef:`VELOCITY(18.6.2)`    速度 (m/sec[deg/sec])


:paramdef:`MATH_EQ(18.6.3)`    数式入力のパラメータ


:paramdef:`電磁力積算領域(18.6.4)`    電磁力積算領域のパラメータ

    :paramdef:`MOTION_TYPE(18.6.4)`    運動の種類

    :paramdef:`REGION_FACTOR(18.6.4)`    全体モデルの解析領域の比

    :paramdef:`NO_MAT_IDS(18.6.4)`    節点力加算領域の物性番号数

    :paramdef:`MAT_IDS(18.6.4)`    節点力加算領域の物性番号

    :paramdef:`FORCE_TYPE(18.6.4)`    運動時に考慮する電磁力のタイプ

---------------------
設定フォーマット
---------------------
.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

        :種類: 固定パラメータセット1
        :行数: 2  
        :パラメータ数: 1, 2

    .. code-block:: text
        :caption: Text format

        * NO_DATA *
            I
        * TIME_ID *	OPTION	*
            I         I	


======================
JSONフォーマット
======================

.. code-block:: json
    :caption: JSON format from 2024.11

    "18_Time_Function": [
        {
            "TIME_ID": I,
            "OPTION": I,
            "comment": "set time functions from here"
        }
    ]

---------------------
**詳細説明**
---------------------
.. paramdef:: 18_Time_Function(18)

時間変化関数を設定します。時間変化関数はソース項 :paramdef:`17_Field_Source(17)` or :paramdef:`SOURCE(17)` の時間変化を定義するために使用します。



.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. paramdef:: NO_DATA(18)
    NO_DATA(テキスト)

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 1]
        Type=I 

    時間変化のデータ数。

==========================================
**TIME_ID**
==========================================
.. paramdef:: TIME_ID(18)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 1]


:型: 整数 (I)
:説明: ソース項の識別番号。 :paramdef:`TIME_ID(18)` 

==========================================
**OPTION**
==========================================
.. paramdef:: OPTION(18)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 2]


:型: 整数 (I)
:値: 0, 1, 2, 3, 4, 11
:説明: 時間変化の与え方を設定するオプション

- =0:解析式
- =1:時間テーブル
- =2:交流表示
- =3:運動方程式を解き，時間変化を求める。
- =4:PSIM，MATLAB/Simulink 連成解析
- =11:関数の時間変化を数式入力( :ref:`Appendix 1` )する。

.. caution:: 

    - 交流定常解析時は ``OPTION`` =2 に限られる。
    - 運動方程式を解き，時間変化を求める場合は，<*DYNAMIC module*>が必要です。
    - PSIM，MATLAB/Simulink 連成解析を行う場合は，<*PSIM Coupler module*> ， <*MATLAB/Simulink Coupler module*>が必要です。

==================================
**18.1. 解析式**
==================================
.. paramdef:: 解析式(18.1)

``OPTION`` =0 の時必要。

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

        :種類: 固定パラメータセット1
        :行数: 2  
        :パラメータ数: 6, 3 

    .. code-block:: text
        :caption: Text format

        * C0 * C1 * C2 * C3 * C4 * C5 * C6 *
           E    E   E    E    E    E    E
        *  TEXP	 *  TCYCLE	*    PHASE4   *
            E      E        E


.. code-block:: json
    :caption: JSON format from 2024.11

            {
                "TIME_ID" : I,
                "OPTION" : 0,
                "C0" : E,
                "C1" : E
                "C2" : E,
                "C3" : E,
                "C4" : E,
                "C5" : E,
                "C6" : E,
                "TEXP" : E,
                "TCYCLE" : E,
                "PHASE4" : E
            }

^^^^^^^^^^^^^^^^^^^^^^^^
**C0/C1/C2/C3/C4/C5/C6 TEXP TCYCLE PHASE4**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: C0/C1/C2/C3/C4/C5/C6 TEXP TCYCLE PHASE4(18.1)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 1~6]

        [row, col] = [2, 1~3]

:型: 実数 (E)
:説明: 時間変化の解析式のパラメータ

    時間変化は次式で与えられる。

    .. math::

        \begin{aligned}
            f(t) &= C_{0} \\
                &\;+\; C_{1}\,t \\
                &\;+\; C_{2}\,\exp\bigl(-t/T_{\mathrm{EXP}}\bigr) \\
                &\;+\; C_{3}\,\sin\!\bigl(2\pi t/T_{\mathrm{CYCLE}}\bigr) \\
                &\;+\; C_{4}\,\cos\!\Bigl(2\pi t/T_{\mathrm{CYCLE}}
                                    + \tfrac{\mathrm{PHASE4}\,\pi}{180}\Bigr) \\
                &\;+\; C_{5}\,\exp\bigl(-t/T_{\mathrm{EXP}}\bigr)\,
                                \sin\!\bigl(2\pi t/T_{\mathrm{CYCLE}}\bigr) \\
                &\;+\; C_{6}\,\exp\bigl(-t/T_{\mathrm{EXP}}\bigr)\,
                                \cos\!\bigl(2\pi t/T_{\mathrm{CYCLE}}\bigr)
        \end{aligned}


    単位は :math:`C_1` が :math:`/sec`，:math:`T_{\mathrm{EXP}}`, :math:`T_{\mathrm{CYCLE}}` が :math:`sec`，:math:`\mathrm{PHASE4}` が :math:`deg`。

==========================
**18.2. 時間テーブル**
==========================
.. paramdef:: 時間テーブル(18.2)

``OPTION`` =1 の時必要。

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

        :種類: 固定パラメータセット1
        :行数: 1 + NO_TIME_POINTS  
        :パラメータ数: 2, 2 

    .. code-block:: text
        :caption: Text format

        * NO_TIME_POINTS * CYCLE *
            I      E
        *   TIME   *   VALUE    *
            E      E

.. code-block:: json
    :caption: JSON format from 2024.11

            {
                "TIME_ID": I,
                "OPTION" : 1,
                "CYCLE" : E,
                "TIME" : [ E ],
                "VALUE" : [ E ]
            }

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. paramdef:: NO_TIME_POINTS(18.2)

    NO_TIME_POINTS(テキスト)

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 1]
        Type=I 

    時刻点数

^^^^^^^^^^^^^^^^^^^^^^^^
**CYCLE**
^^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: CYCLE(18.2)


.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 2]


:型: 実数 (E)
:値: 0, >0
:単位: sec
:説明: 繰り返しの周期 (sec)

- =0 の場合，CYCLE は無視される。
- >0 の場合，CYCLE は繰り返しの周期 (sec) を表す。


^^^^^^^^^^^^^^^^^^^^^^^^
**TIME**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: TIME(18.2)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 1]

        NO_TIME_POINTS 組入力。

:型: 実数 (E)
:単位: sec
:説明: 時刻。JSONフォーマットでは配列で指定します。

^^^^^^^^^^^^^^^^^^^^^^^^
**VALUE**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: VALUE(18.2)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 2]

        NO_TIME_POINTS 組入力。

:型: 実数 (E)
:説明: 値。JSONフォーマットでは配列で指定します。

.. note:: 
    ``CYCLE`` を入力した場合は，``TIME`` =0 から ``TIME`` = ``CYCLE`` までの時間テーブルを入力する。

    本時間テーブルが電圧を表す場合，二つの続く ``TIME`` を同時刻とし，異なる ``VALUE`` を入力することにより，ステップ的な変化を与えることができる。

==========================
**18.3. 交流表示**
==========================
.. paramdef:: 交流表示(18.3)

OPTION=2 の時必要。

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

        :種類: 固定パラメータセット1
        :行数: 1  
        :パラメータ数: 3 

    .. code-block:: text
        :caption: Text format

        * AMPLITUDE * TCYCLE * PHASE *
              E      E      E


.. code-block:: json
    :caption: JSON format from 2024.11

            {
                "TIME_ID": I,
                "OPTION": 2,
                "AMPLITUDE": E,
                "TCYCLE": E,
                "PHASE": E
            }

^^^^^^^^^^^^^^^^^^^^^^^^
**AMPLITUDE**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: AMPLITUDE(18.3)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 1]


:型: 実数 (E)
:説明: 振幅。

^^^^^^^^^^^^^^^^^^^^^^^^
**TCYCLE**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: TCYCLE(18.3)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 2]

:型: 実数 (E)
:単位: sec
:説明: 周期。

^^^^^^^^^^^^^^^^^^^^^^^^
**PHASE**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: PHASE(18.3)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 3]

:型: 実数 (E)
:単位: deg
:説明: 位相。

.. hint:: 
    時間変化は，

    .. math::

        f(t) = \text{AMPLITUDE} \cdot \cos\left(\frac{2\pi t}{\text{TCYCLE}} + \frac{\text{PHASE} \cdot \pi}{180}\right)

    で表される。交流解析のときはこの形式に限られ，その場合 TCYCLE は本データの全てで等しいものとする。8.2 計算ステップ，周波数 :paramdef:`8_2_Calculation_Frequency` の :paramdef:`FREQUENCY(8.2)` と整合させること。交流解析以外でも時間変化を表すのに使用できる。

==========================================
**18.4. PSIM，MATLAB/Simulink 連成解析**
==========================================
.. paramdef:: PSIM，MATLAB/Simulink 連成解析(18.4)

PSIM，MATLAB/Simulink 入出力データ(00)の入力があり， ``OPTION`` ＝4 の時必要。

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

        :種類: 固定パラメータセット1
        :行数: 1  
        :パラメータ数: 2 

    .. code-block:: text
        :caption: Text format

        * PSIM_IN * PSIM_OUT *
            I      I

.. code-block:: json
    :caption: JSON format from 2024.11

            {
                "TIME_ID": I,
                "OPTION": 4,
                "PSIM_IN": I,
                "PSIM_OUT": I,
            }


^^^^^^^^^^^^^^^^^^^^^^^^
**PSIM_IN**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: PSIM_IN(18.4)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 1]


:型: 整数 (I)
:説明: PSIM，MATLAB/Simulink 入出力データ(00)の PSIMからの電圧の入力番号。デフォルトは 0（設定しない）。


^^^^^^^^^^^^^^^^^^^^^^^^
**PSIM_OUT**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: PSIM_OUT(18.4)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 2]

:型: 整数 (I)
:説明: PSIM，MATLAB/Simulink 入出力データ(00)の PSIMへの電流の出力番号。

==========================
**18.5. 数式入力**
==========================
.. paramdef:: 数式入力(18.5)
.. paramdef:: MATH_EQ(18.5)

OPTION=11 の時，時間変化の関数を数式入力する。

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

        :種類: 固定パラメータセット1
        :行数: 1  
        :パラメータ数: 1 

    .. code-block:: text
        :caption: Text format

        * FUNCTION * 
            S

.. code-block:: json
    :caption: JSON format from 2024.11

            {
                "TIME_ID": I,
                "OPTION": 11,
                "FUNCTION": S
            }

:型: 文字列 (S)
:説明: 数式入力の文字列。
    時間変化関数 f(t)を入力。T の単位は sec とする。

**18.1 解析式** を本入力で表現すると，以下と等価。

.. code-block:: text
    :caption: Text format

    f(t) = C0 + C1 * t + C2 * exp(-t/TEXP)
         + C3 * sin(2*PI*t/TCYCLE)
         + C4 * cos(2*PI*t/TCYCLE)
         + C5 * exp(-t/TEXP) * sin(2*PI*t/TCYCLE)
         + C6 * exp(-t/TEXP) * cos(2*PI*t/TCYCLE);;

また， **18.3. 交流表示** は以下と等価。

.. code-block:: text
    :caption: Text format

    f(t) = AMPLITUDE * cos(2*PI*t/TCYCLE + PHASE*PI/180 );;


==========================================
**18.6. 運動方程式入力**
==========================================
.. paramdef:: 運動方程式入力(18.6)

``OPTION`` =3 の時必要。

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

        :種類: 固定パラメータセット1
        :行数: 6  
        :パラメータ数: 3 

    .. code-block:: text
        :caption: Text format

        * INITIAL_POSITION * INITIAL_VELOCITY * POSITION_ERROR * PSIM_IN * PSIM_FORCE_OUT * PSIM_POS_OUT * PSIM_V_OUT * PSIM_CONST_F_IN *
                  E                  E                  E     I             I               I     I              I
        * LOWER_LIMIT * UPPER_LIMIT * LOWER_REFLECTION * UPPER_REFLECTION *
               E              E                 E                 E
        * MASS * CONST_FORCE * STATIC_FRICTION * CONST_FORCE_ID * MASS_ACCELERATION *
             E          E              E         I                  E
        * NO_DATA * OPTION *
             I         I
        * POSITION * MASS *
             E         E

.. code-block:: json
    :caption: JSON format from 2024.11

        {
            "TIME_ID": I,
            "OPTION": 3,
            "INITIAL_POSITION": E,
            "INITIAL_VELOCITY": E,
            "POSITION_ERROR": E,
            "PSIM_IN": I,
            "PSIM_FORCE_OUT": I,
            "PSIM_POS_OUT": I,
            "PSIM_V_OUT": I,
            "PSIM_CONST_F_IN": I,
            "LOWER_LIMIT": E,
            "UPPER_LIMIT": E,
            "LOWER_REFLECTION": E,
            "UPPER_REFLECTION": E,
            "MASS": E,
            "CONST_FORCE": E,
            "STATIC_FRICTION": E,
            "CONST_FORCE_ID": I,
            "MASS_ACCELERATION": E,
            "CONST_DISPLACEMENT" : E,
            "POSITION_DEPEND_MASS": {
                "OPTION" : I,
                "POSITION": [ E ],
                "MASS": [ E ]
            }
        }

^^^^^^^^^^^^^^^^^^^^^^^^
**INITIAL_POSITION**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: INITIAL_POSITION(18.6)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 1]

:型: 実数 (E)
:単位: m[deg]
:説明: 基準位置からの相対位置初期値。

^^^^^^^^^^^^^^^^^^^^^^^^
**INITIAL_VELOCITY**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: INITIAL_VELOCITY(18.6)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 2]

:型: 実数 (E)
:単位: m/sec[deg/sec]
:説明: 初期速度。

^^^^^^^^^^^^^^^^^^^^^^^^
**POSITION_ERROR**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: POSITION_ERROR(18.6)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 3]

:型: 実数 (E)
:単位: m[deg]
:説明: 位置計算許容誤差。=0.0 の時は，収束計算しない。


PSIM，MATLAB/Simulink 入力データ(00)入力の時，以下のデータが必要。

^^^^^^^^^^^^^^^^^^^^^^^^
**MATLAB/PSIM インプットデータ**
^^^^^^^^^^^^^^^^^^^^^^^^
MATLAB/PSIM 入出力データ(00)の入力があり， ``OPTION`` =4 の時必要。

~~~~~~~~~~~~~~~~~~~~~~~~~
**PSIM_IN**
~~~~~~~~~~~~~~~~~~~~~~~~~
.. paramdef:: PSIM_IN(18.6)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 4]

:型: 整数 (I)
:説明: PSIM 入出力データ(00)の PSIMからの電圧の入力番号。デフォルトは 0（設定しない）。

    - =0 のとき，運動方程式の計算を EMSolution で行う。  
    - ≠0 のとき，PSIM で行う。この時， ``PSIM_IN`` は PSIM 入出力データ(00)の位置（Position(m[deg])）もしくは角度（Angle(deg)）の入力番号となる。

~~~~~~~~~~~~~~~~~~~~~~~~~
**PSIM_FORCE_OUT**
~~~~~~~~~~~~~~~~~~~~~~~~~
.. paramdef:: PSIM_FORCE_OUT(18.6)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 5]

:型: 整数 (I)
:説明: PSIM 入出力データ(00)の PSIM からの電磁力（Force(N)）もしくはトルク（Torque(Nm)）の出力番号。
    ``PSIM_IN`` ≠0 のとき必須。``PSIM_IN`` =0 時も指定可能。

~~~~~~~~~~~~~~~~~~~~~~~~~
**PSIM_POS_OUT**
~~~~~~~~~~~~~~~~~~~~~~~~~
.. paramdef:: PSIM_POS_OUT(18.6)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 6]

:型: 整数 (I)
:説明: PSIM 入出力データ(00)の PSIM への位置（Position(m)）もしくは角度（Angle(deg)）出力番号。  
    ``PSIM_IN`` =0 のとき指定可能。``PSIM_IN`` ≠0 の時，不要（ゼロとする）。

~~~~~~~~~~~~~~~~~~~~~~~~~
**PSIM_V_OUT**
~~~~~~~~~~~~~~~~~~~~~~~~~
.. paramdef:: PSIM_V_OUT(18.6)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 7]

:型: 整数 (I)
:説明: PSIM 入出力データ(00)の PSIM への速度（(m/s)もしくは角速度(deg/sec)）出力番号。  
    ``PSIM_IN`` =0 のとき指定可能。``PSIM_IN`` ≠0 の時，不要（ゼロとする）。

~~~~~~~~~~~~~~~~~~~~~~~~~
**PSIM_CONST_F_IN**
~~~~~~~~~~~~~~~~~~~~~~~~~
.. paramdef:: PSIM_CONST_F_IN(18.6)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 8]

:型: 整数 (I)
説明: PSIM 入出力データ(00)の PSIM からの外部力（Force(N)）もしくはトルク（Torque(Nm)）の入力番号。  
    ``PSIM_IN`` =0 のとき指定可能。 ``PSIM_IN`` ≠0 の時，不要（ゼロとする）。



^^^^^^^^^^^^^^^^^^^^^^^^
**LOWER_LIMIT**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: LOWER_LIMIT(18.6)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 1]

:型: 実数 (E)
:単位: m[deg]
:説明: 変位下限。=-999.の時，下限は無しとする。


^^^^^^^^^^^^^^^^^^^^^^^^
**UPPER_LIMIT**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: UPPER_LIMIT(18.6)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 2]

:型: 実数 (E)
:単位: m[deg]
:説明: 変位上限。=999.の時，上限は無しとする。

^^^^^^^^^^^^^^^^^^^^^^^^
**LOWER_REFLECTION**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: LOWER_REFLECTION(18.6)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 3]

:型: 実数 (E)
:説明: 変位下限における反射係数。(0.≦ ``LOWER_REFLECTION`` ≦1.)。

^^^^^^^^^^^^^^^^^^^^^^^^
**UPPER_REFLECTION**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: UPPER_REFLECTION(18.6)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 4]


:型: 実数 (E)
:説明: 変位上限における反射係数。(0.≦ ``UPPER_REFLECTION`` ≦1.)。

.. caution::

    ``LOWER_LIMIT`` ≦ ``INITIAL_POSITION`` ≦ ``UPPER_LIMIT`` である必要がある。


^^^^^^^^^^^^^^^^^^^^^^^^
**MASS**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: MASS(18.6)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [3, 1]

    通常 >0。<0 の時，4,5 行目の質量の相対位置依存テーブルを入力。

:型: 実数 (E)
:単位: kg[kg・m²]
:説明: 質量

    質量は相対位置依存テーブルを入力する場合，入力の必要なし。

^^^^^^^^^^^^^^^^^^^^^^^^
**CONST_FORCE**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: CONST_FORCE(18.6)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [3, 2]

:型: 実数 (E)
:単位: N[Nm]
:説明: 位置および速度に関係しない外部力。  

    重力は ``MASS_ACCELERATION(18.6)`` での設定を推奨。

^^^^^^^^^^^^^^^^^^^^^^^^
**STATIC_FRICTION**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: STATIC_FRICTION(18.6)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [3, 3]


:型: 実数 (E)
:単位: N[Nm]
:説明: 静止摩擦力。  

    静止時にこの値以上の力[トルク]が加わると運動を開始。

^^^^^^^^^^^^^^^^^^^^^^^^
**TIME_CONST_FORCE**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: TIME_CONST_FORCE(18.6)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [3, 4]


:型: 整数 (I)
:説明: 時間変化する外部力 (N)[トルク(Nm)] として与えるデータ番号 :paramdef:`TIME_ID(18)`。

^^^^^^^^^^^^^^^^^^^^^^^^
**MASS_ACCELERATION**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: MASS_ACCELERATION(18.6)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [3, 5]


:型: 実数 (E)
:単位: m/s²[deg/s²]
:説明: 質量にかかる加速度 
    
    重力加速度を設定するのに適している。

^^^^^^^^^^^^^^^^^^^^^^^^
CONST_DISPLACEMENT
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: CONST_DISPLACEMENT(18.6)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [3, 6]


:型: 実数 (E)
:単位: m[deg]
:説明: 1ステップで移動する変位を指定する。

    スライド運動と運動方程式の連成解析時において，加速度運動を行う場合，時間刻みが一定として解析すると，計算が進んで行くにつれ移動距離が大きくなり，スライド運動の移動幅が大きくなることで計算精度が悪化する場合がある。その場合，この値を巣零度運動の移動幅＝メッシュ幅に指定することにより，移動距離を固定し，計算精度を向上させることができる。


^^^^^^^^^^^^^^^^^^^^^^^^
**POSITION_DEPEND_MASS（JSON）**
^^^^^^^^^^^^^^^^^^^^^^^^
... paramdef:: POSITION_DEPEND_MASS(18.6)


JSONフォーマットで相対位置依存質量を指定する場合に必要。


.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    NO_DATA

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [4, 1]
        Type=I

    質量の相対位置依存テーブル点数。次行のデータがこの数だけ必要。

^^^^^^^^^^^^^^^^^^^^^^^^^
**OPTION**
^^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: OPTION(18.6)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [4, 2]


:型: 整数 (I)
:値: 0, 1
:説明: 質量変化による速度変化の考慮。

    - =0 の場合，質量変化による速度変化は考慮しない。
    - =1 の場合，質量変化による速度変化を考慮する。

^^^^^^^^^^^^^^^^^^^^^^^^
**POSITION**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: POSITION(18.6)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [5, 1]


:型: 実数 (E)
:単位: m[deg]
:説明: 基準位置からの相対位置。

    JSONフォーマットでは配列で指定します。

^^^^^^^^^^^^^^^^^^^^^^^^
**MASS**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: MASS(18.6)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [5, 2]


:型: 実数 (E)
:単位: kg[kg・m²]
:説明: 基準位置からの相対位置における質量 。通常 >0。

    JSONフォーマットでは配列で指定します。


.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. paramdef:: NO_SPRING(18.6)

    **NO_SPRING**

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [6, 1]
        Type=I

    スプリング（位置依存の機械力）定義個数。>=0。


    .. paramdef:: NO_DAMPER(18.6)

    **NO_DAMPER**

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [6, 2]
        Type=I

    ダンパー（速度依存の機械力）定義個数。>=0。


    .. paramdef:: MATH_EQ(18.6)

    **MATH_EQ**
    
    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [6, 3]
        Type=I

    - =0: 数式入力 (Appendix 1) 無し。
    - =1: 印可力を位置と速度の関数で数式入力。

.. note::

    - ``PSIM_IN`` ≠0 の時， ``INITIAL_VELOCITY`` , ``POSITION_ERROR`` は意味を持たない。
    - ``INITIAL_POSITION`` には PSIM における初期位置と同じ値を入力する必要がある。

.. hint:: 
    ファイル *motion* に，各時刻における位置，速度，電磁力が表形式で出力される。

.. caution::
    **PSIM，MATLAB/Simulink 連成解析**
    
    - ``PSIM_IN`` ≠0 の 時 ， ``INITIAL_VELOCITY``, ``POSITION_ERROR`` は意味を持たない 。
    - ``INITIAL_POSITION`` には PSIM における初期位置と同じ値を入力する必要がある。
    - ``PSIM_IN`` ≠0 の時， :paramdef:`運動方程式入力(18.6)` の他のデータは PSIM 連成しない場合と同じ形で形式的に入力しておく必要がある。 :paramdef:`電磁力積算領域(18.6.4)` のデータ以外計算に影響しない。

===========================
**18.6.1. スプリングデータ**
===========================
.. paramdef:: SPRING(18.6.1)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

        :種類: 固定パラメータセット1
        :行数: 1 + NO_SPRING  
        :パラメータ数: 2, 3, 4, 5 

    .. code-block:: text
        :caption: Text format

        * SPRING_TYPE * LOWER_RANGE * UPPER_RANGE *
            0           E             E
        * SPRING_CONST * EQUIL_POSITION *
            E           E
        
        * SPRING_TYPE * LOWER_RANGE * UPPER_RANGE *
            1           E             E
        * NO_POINTS * POSITION * FORCE *
            I           E           E

.. code-block:: json
    :caption: JSON format from 2024.11

            "SPRING": [
                {
                    "LOWER_RANGE": E,
                    "UPPER_RANGE": E,
                    "LinearSpring": {
                        "SPRING_CONST": E,
                        "EQUIL_POSITION": E
                    }
                },
                {
                    "LOWER_RANGE": E,
                    "UPPER_RANGE": E,
                    "NonlinearSpring": {
                        "POSITION": E,
                        "FORCE": E
                    }
                }
            ]


.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. paramdef:: SPRING_TYPE(18.6.1)

    **SPRING_TYPE**

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 1]
        Type=I

    スプリング定義の種類

    - =0:線形ばね
    - =1:非線形バネ，テーブル入力。


^^^^^^^^^^^^^^^^^^^^^^^^
**LOWER_RANGE**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: LOWER_RANGE(18.6.1)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 1]


:型: 実数 (E)
:単位: m[deg]
:説明: 定義位置下限。=999.の時，下限を無しとする。

^^^^^^^^^^^^^^^^^^^^^^^^
**UPPER_RANGE**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: UPPER_RANGE(18.6.1)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [3, 1]


:型: 実数 (E)
:単位: m[deg]
:説明: 定義位置上限。=999.の時，上限を無しとする。

^^^^^^^^^^^^^^^^^^^^^^^^
**LinearSpring（JSON）**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: LinearSpring(18.6.1)

線形ばねを表す。

テキスト入力の場合，SPRING_TYPE=0 の時。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**SPRING_CONST**
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. paramdef:: SPRING_CONST(18.6.1)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 1]


:型: 実数 (E)
:単位: N/m[Nm/deg]
:説明: バネ定数。通常は正値。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**EQUIL_POSITION**
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. paramdef:: EQUIL_POSITION(18.6.1)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 2]


:型: 実数 (E)
:単位: m[deg]
:説明: バネ平衡位置。

    位置を x とするとバネ力は，

    - ``SPRING_CONST`` * (x- ``EQUIL_POSITION`` )。

^^^^^^^^^^^^^^^^^^^^^^^^
**NonlinearSpring（JSON）**
^^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: NonlinearSpring(18.6.1)

非線形ばねを表す。
テキスト入力の場合， ``SPRING_TYPE`` =1 の時。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**POSITION**
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. paramdef:: POSITION(18.6.1)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [3, 1]


:型: 実数 (E)
:単位: m[deg]
:説明: 基準位置からの相対位置。昇順に入力すること。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**FORCE**
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. paramdef:: FORCE(18.6.1)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [3, 2]


:型: 実数 (E)
:単位: N[Nm]
:説明: 基準位置からの相対位置におけるバネ力。


===========================
**18.6.2. ダンパーデータ**
===========================
.. paramdef:: DAMPER(18.6.2)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

        :種類: 固定パラメータセット1
        :行数: 1 + NO_DAMPER  
        :パラメータ数: 2, 3, 4, 5 

    .. code-block:: text
        :caption: Text format

        * DAMPER_TYPE * LOWER_RANGE * UPPER_RANGE *
            I             E             E
        * C0 * C1 * C2 * C3 *
            E    E    E    E
        
        * DAMPER_TYPE * LOWER_RANGE * UPPER_RANGE *
            I             E             E
        * NO_POINTS * POSITION * C1 *
            I           E         E

        * DAMPER_TYPE * LOWER_RANGE * UPPER_RANGE *
            I             E             E
        * NO_POINTS * VELOCITY * FORCE *
            I           E         E

.. code-block:: json
    :caption: JSON format from 2024.11

            "DAMPER": [
                {
                    "LOWER_RANGE": E,
                    "UPPER_RANGE": E,
                    "AnalysisInput": {
                        "C0": E,
                        "C1": E,
                        "C2": E,
                        "C3": E
                    }
                },
                {
                    "LOWER_RANGE": E,
                    "UPPER_RANGE": E,
                    "PositionFunction": {
                        "POSITION": [ E ],
                        "C1": [ E ]
                    }
                },
                {
                    "LOWER_RANGE": E,
                    "UPPER_RANGE": E,
                    "VelocityFunction": {
                        "VELOCITY": [ E ],
                        "FORCE": [ E ]
                    }
                }
            ]

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. paramdef:: DAMPER_TYPE(18.6.2)

    **DAMPER_TYPE**

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 1]
        Type=I

    ダンパー定義の種類

    - =0: 多項式表示
    - =1: 粘性係数を位置の関数としてテーブル入力
    - =2: 速度の関数テーブル入力

^^^^^^^^^^^^^^^^^^^^^^^^
**LOWER_RANGE**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: LOWER_RANGE(18.6.2)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 2]


:型: 実数 (E)
:単位: m[deg]
:説明: 変位下限。=-999.の時，下限を無しとする。

^^^^^^^^^^^^^^^^^^^^^^^^
**UPPER_RANGE**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: UPPER_RANGE(18.6.2)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 3]


:型: 実数 (E)
:単位: m[deg]
:説明: 定義位置上限。=999.の時，上限を無しとする。

^^^^^^^^^^^^^^^^^^^^^^^^
**PolynomialInput（JSON）**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: PolynomialInput(18.6.2)

多項式表示のダンパーを表す。

テキスト入力の場合， ``DAMPER_TYPE`` =0 の時。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**C0**
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. paramdef:: C0(18.6.2)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 1]

:型: 実数 (E)
:単位: :math:`\mathrm{N/(m/sec)}[\mathrm{Nm/(deg/sec)}]`
:説明: 定数摩擦力。速度に依存しない，速度に対して逆方向の力。通常は正値。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**C1**
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. paramdef:: C1(18.6.2)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 2]


:型: 実数 (E)
:単位: :math:`\mathrm{N/(m/sec)}[\mathrm{Nm/(deg/sec)}]`
:説明: 粘性（摩擦）係数。通常は正値。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**C2**
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. paramdef:: C2(18.6.2)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 3]


:型: 実数 (E)
:単位: :math:`\mathrm{N/(m^2/sec)}[\mathrm{Nm/(deg^2/sec)}]`
:説明: 速度自乗力の係数。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**C3**
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. paramdef:: C3(18.6.2)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 4]


:型: 実数 (E)
:単位: :math:`\mathrm{N/(m^3/sec)}[\mathrm{Nm/(deg^3/sec)}]`
:説明: 速度 3 乗力の係数。

速度 v に対して力は以下で表される。

.. math::

    F = -\text{sign}(v) \cdot (C_0 + C_1 \cdot |v| + C_2 \cdot v^2 + C_3 \cdot |v|^3)

^^^^^^^^^^^^^^^^^^^^^^^^
**PositionDependent（JSON）**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: PositionDependent(18.6.2)

位置依存の粘性係数を表す。

テキスト入力の場合， ``DAMPER_TYPE`` =1 の時。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**POSITION**
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. paramdef:: POSITION(18.6.2)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [3, 1]


:型: 実数 (E)
:単位: m[deg]
:説明: 基準位置からの相対位置。昇順に入力すること。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**C1**
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. paramdef:: C1(18.6.2)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [3, 2]

:型: 実数 (E)
:単位: :math:`\mathrm{N/(m/sec)}[\mathrm{Nm/(deg/sec)}]`
:説明: 位置における粘性係数。通常は正値。

速度 v に対して力は以下で表される。

.. math::

    F = -\text{sign}(v) \cdot C_1 \cdot |v|

^^^^^^^^^^^^^^^^^^^^^^^^
**VelocityDependent（JSON）**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: VelocityDependent(18.6.2)

速度依存の粘性力を表す。

テキスト入力の場合， ``DAMPER_TYPE`` =2 の時。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**VELOCITY**
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. paramdef:: VELOCITY(18.6.2)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [3, 1]


:型: 実数 (E)
:単位: :math:`\mathrm{m/sec}[\mathrm{deg/sec}]`
:説明: 速度。昇順に入力すること。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**FORCE**
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. paramdef:: FORCE(18.6.2)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [3, 2]


:型: 実数 (E)
:単位: N[Nm]
:説明: 速度における粘性（摩擦）力。

速度が負になる場合は負値に対しても入力が必要。

=============================
**18.6.3. 印加力数式入力**
=============================
.. paramdef:: MATH_EQ(18.6.3)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

        :種類: 固定パラメータセット1
        :行数: N  
        :パラメータ数: N 

    .. code-block:: text
        :caption: Text format

        * MATH_EQ * 
            S

.. code-block:: json
    :caption: JSON format from 2024.11

        "MATH_EQ": S

:型: 文字列 (S)
:説明: 印加力数式入力

``MATH_EQ`` =1 の時，外部から加わる印加力を位置 x と速度 v の関数で数式入力する。

F(x,v)を定義する。単位は x(m[deg]), v(m/s [deg/sec]), F(N [Nm])。

.. note:: 
    18.6.1.スプリングデータ，SPRING_TYPE=0 と以下が等価。

    .. code-block:: text
        :caption: Text format

        [LOWER_RANGE<=x<UPPER_RANGE]F(x,v) = -SPRING_CONST*(x-EQUIL_POSITION);;

    また，18.6.2.ダンパーデータ，DAMPER_TYPE=0 と以下が等価。

    .. code-block:: text
        :caption: Text format

        [v<0]F(x,v) = (C0 - C1*v + C2*v**2 - C3*v**3);;
        [0.<=v]F(x,v) = -(C0 + C1*v + C2*v**2 + C3*v**3);;
        F(x,v) = F1(x,v) + F2(x,v);;

==========================
**18.6.4. 電磁力積算領域**
==========================
.. paramdef:: 電磁力積算領域(18.6.4)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

        :種類: 固定パラメータセット1
        :行数: 1 + NO_MAT_IDS  
        :パラメータ数: 2, 3, 4, 5 

    .. code-block:: text
        :caption: Text format

        * MOTION_TYPE * REGION_FACTOR *
            I             E
        * NO_MAT_IDS * MAT_IDS * FORCE_TYPE *
            I           I*NO_MAT_IDS   I

.. code-block:: json
    :caption: JSON format from 2024.11

            "FORCE_INTEGRATION_REGION": {
                "MOTION_TYPE": I,
                "REGION_FACTOR": E,
                "FORCE_TYPE": I
            }

電磁力積算領域を定義する。

:paramdef:`TIME_ID(18)` =3の時必要。


^^^^^^^^^^^^^^^^^^^^^^^^
**MOTION_TYPE**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: MOTION_TYPE(18.6.4)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 1]

:型: 整数 (I)
:値: 0, 1
:説明: 運動の種類。

    - =0: メッシュ変形および :paramdef:`COIL(17.1)` ソース電流磁場。
    - =1: スライド運動。

^^^^^^^^^^^^^^^^^^^^^^^^
**REGION_FACTOR**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: REGION_FACTOR(18.6.4)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 1]


:型: 実数 (E)
:説明: 全体モデルの解析領域の比。:paramdef:`CIRCUIT(17.8)`, :paramdef:`NETWORK(17.9)` の :paramdef:`REGION_FACTOR(17.8)`, :paramdef:`REGION_FACTOR(17.9)` と同様。

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. paramdef:: NO_MAT_IDS(18.6.4)

    **NO_MAT_IDS**

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 2]
        Type=I

    ``FORCE_TYPE`` =0 の時の，節点力加算領域の物性番号数。

    .. paramdef:: MAT_IDS(18.6.4)

    **MAT_IDS**

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [3, 1]
        Type=I*NO_MAT_IDS
    
    ``FORCE_TYPE`` =0 の時必要。節点力加算領域の物性番号(16)を入力。
    
    

^^^^^^^^^^^^^^^^^^^^^^^^
**add_FORCE_for_DYNAMIC_MOTION**
^^^^^^^^^^^^^^^^^^^^^^^^
:paramdef:`add_FORCE_for_DYNAMIC_MOTION(16.1)`    電磁力積算領域の指定(16.1)。

本領域，および要素一層外側までトータルポテンシャル領域が定義されている必要がある。

^^^^^^^^^^^^^^^^^^^^^^^^
**FORCE_TYPE**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: FORCE_TYPE(18.6.4)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 3]

:型: 整数 (I)
:値: 0, 1
:説明: 運動時に考慮する電磁力のタイプを指定する。デフォルトは 0。

    - =0: 節点力法の電磁力 :paramdef:`FORCE_NODAL(10.3)`
    - =1: ローレンツ力法の電磁力 :paramdef:`FORCE_J_B(10.3)`

.. note::
    
    運動方程式

    .. math::

        m \ddot{x} = F_0 + F_{\text{spring}} + F_{\text{damper}} + F_{\text{math_eq}} + F_{\text{magnetic}}

    が解かれる。ここで，:math:`x` はメッシュデータ(pre_geom)からの相対位置を表し，単位は直線運動の場合 :math:`(m)` ，回転運動の場合 :math:`(deg)` である。:math:`m` は質量，:math:`F_0` (:math:`\text{CONST_FORCE}`) は位置速度によらない外力，:math:`F_{\text{spring}}` は位置のみによるスプリング力，:math:`F_{\text{damper}}` は速度に依存するダンパー力である。

    :math:`F_{\text{math_eq}}` は数式入力した場合の，位置および速度の関数である。:math:`F_{\text{magnetic}}` は電磁力である。直線運動の場合は力 :math:`(N)` ，回転運動の場合はトルク :math:`(Nm)` である。

    運動の方向および直線か回転運動かは，本データの ``TIME_ID`` を 19.運動の定義 :paramdef:`19_Motoin(19)` で参照することにより決まる。

.. caution:: 
    位置関係のデータは基準位置（適当な指定の位置（入力はありません））からの相対位置。

    回転運動の場合は，相対角度。

    19.3 変形部メッシュの運動 :paramdef:`MOTION(19)` の :paramdef:`POSITION0(19.3)`, :paramdef:`POSITION1(19.3)` もこれに準じる。

