.. _19_Motoin:

##################################
**19. 運動の定義**
##################################

運動の定義を行います。運動の定義は，並進・回転運動，変形運動の 3 種類があります。

---------------------
設定項目
---------------------

:paramdef:`19_Motoin(19)`    JSONキー：運動の定義オブジェクト

:paramdef:`type(19)`            JSONキー：運動の定義の種類を示す。JSONフォーマットでの参考用

:paramdef:`motion_data(19)`  JSONキー：運動データを定義するオブジェクト。

    :paramdef:`MOTION_ID(19)`       運動データ識別番号。

    :paramdef:`X_TIME_ID(19)`       X方向の並進運動の時間変化識別番号。

    :paramdef:`Y_TIME_ID(19)`       Y方向の並進運動の時間変化識別番号。

    :paramdef:`Z_TIME_ID(19)`       Z方向の並進運動の時間変化識別番号。

    :paramdef:`PHI_TIME_ID(19)`     回転運動の回転角の時間変化識別番号。

    :paramdef:`COORD_ID(19)`        並進・回転運動の座標系識別番号。

:paramdef:`COIL_MOTION(19.1)`     JSONキー： ``COIL`` ソースの運動またはメッシュ *pre_geom(2D*)の運動定義。

:paramdef:`MESH_MOTION_for_COIL(19.1)` JSONキー： ``COIL`` ソースの運動またはメッシュ *pre_geom(2D)*の運動定義。

    :paramdef:`GLOBAL_MOTION_ID(19.1)` メッシュ *pre_geom(2D)*の運動を表す運動データ識別番号。

:paramdef:`SLIDE_MOTION(19.2)`     JSONキー：可動部 *rotor_mesh(2D)* の並進・回転運動定義。
    
    :paramdef:`ROTOR_MOTION_IDS(19.2)` 可動部の運動データ識別番号。

    :paramdef:`SUBERI(19.2)`          スライド法のすべり係数。

:paramdef:`DEFORM_MOTION(19.3)`  JSONキー：可動部の変形運動定義。

    :paramdef:`DEFORM_MOTION_ID(19.3)` 変形部の運動データ識別番号。

    :paramdef:`POSITION0(19.3)`       テキスト：変形しない領域の基準位置からの相対位置。

    :paramdef:`POSITION1(19.3)`       テキスト：変形する領域の基準位置からの相対位置。

    :paramdef:`POSITIONS(19.3)`      JSONキー：配列で指定する。変形しない領域の基準位置からの相対位置と変形する領域の基準位置からの相対位置。

    :paramdef:`NO_RIGID_MAT_IDS(19.3)` テキスト：運動する領域の要素物性番号数。

    :paramdef:`NO_DEFORM_MAT_IDS(19.3)` テキスト：変形する領域の要素物性番号数。

    :paramdef:`CONTROL_VOLUME_ID(19.3)` 制御要素の物性番号。

    :paramdef:`RIGID_MAT_IDS(19.3)`   テキスト：運動する領域の要素物性番号。

    :paramdef:`DEFORM_MAT_IDS(19.3)`  テキスト：変形する領域の要素物性番号。

---------------------
設定フォーマット
---------------------
.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

        :種類: 固定パラメータセット1
        :行数: 2  
        :パラメータ数: 2, 6

    .. code-block:: text
        :caption: Text format

        * MOTION * NO_MOTION_DATA *
        MOTION    I
        * MOTION_ID * X_TIME_ID * Y_TIME_ID * Z_TIME_ID * PHI_TIME_ID * COORD_ID
            I           I          I           I           I           I


======================
JSONフォーマット
======================

.. code-block:: json
    :caption: JSON format from 2024.11

    "19_Motion": [
        {
            "motion_data": {
                "MOTION_ID": I,
                "X_TIME_ID": I,
                "Y_TIME_ID": I,
                "Z_TIME_ID": I,
                "PHI_TIME_ID": I,
                "COORD_ID": I
            },
            "type": "explain what type of Motion is defined here",
        }
    ]

---------------------
**詳細説明**
---------------------
.. paramdef:: 19_Motoin(19)

運動の定義

.. paramdef:: type(19)
運動の定義の種類を示す。JSONフォーマットでの参考用


.. paramdef:: COIL_MOTION(19)
.. paramdef:: MESH_MOTION_for_COIL(19)
- :paramdef:`MOTION(2)` =1 時のメッシュ *pre_geom(2D)* の運動または :paramdef:`COIL(17.1)` ソースの運動定義。

.. paramdef:: SLIDE_MOTION(19)
- :paramdef:`MOTION(2)` =2 時の可動部 *rotor_mesh(2D)* の並進・回転運動定義

.. paramdef:: DEFORM_MOTION(19)
- :paramdef:`MOTION(2)` =3 時の可動部の変形運動定義。


.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. paramdef:: MOTION(19)
    **MOTION**

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 1]
        Type=S 

    タイトル。運動の定義入力を示す。

    .. paramdef:: NO_MOTION_DATA(19)
    NO_DATA(テキスト)

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 1]
        Type=I 

    運動のデータの数。
    行 2 のデータを NO_MOTION_DAT 組入力。

==========================================
**motion_data**
==========================================
.. paramdef:: motion_data(19)

:JSONキー: 運動データを定義するオブジェクト。

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**MOTION_ID**
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: MOTION_ID(19)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 1]


:型: 整数 (I)
:説明: 運動データ識別番号。

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**X_TIME_ID**
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: X_TIME_ID(19)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 1]


:型: 整数 (I)
:説明: X方向の並進運動の時間変化識別番号 :paramdef:`TIME_ID(18)`。

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**Y_TIME_ID**
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: Y_TIME_ID(19)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 1]


:型: 整数 (I)
:説明: Y方向の並進運動の時間変化識別番号 :paramdef:`TIME_ID(18)`。

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**Z_TIME_ID**
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: Z_TIME_ID(19)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 1]


:型: 整数 (I)
:説明: Z方向の並進運動の時間変化識別番号 :paramdef:`TIME_ID(18)`。


^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**PHI_TIME_ID**
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: PHI_TIME_ID(19)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 1]


:型: 整数 (I)
:説明: 回転運動の回転角の時間変化識別番号 :paramdef:`TIME_ID(18)`。

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**COORD_ID**
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: COORD_ID(19)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 1]


:型: 整数 (I)
:説明: 並進運動の座標系識別番号。
    並進運動の座標系識別番号 :paramdef:`COORD_ID(12)` 。なお，回転運動は全体座標系のみに適用され，z軸周りに回転し，x軸が角度ゼロ（単位：deg）の右ねじ方向が正の方向となる。

.. note:: 
    :paramdef:`MOTION(2)` =1,2 の使用には<*MOTION module*>， :paramdef:`MOTION(2)` =3 の使用には，<*DEFORM module*>が必要です。

    :paramdef:`MOTION(2)` =1 の時は， :paramdef:`COIL(17.1)` ソースの運動と :paramdef:`COIL(17.1)` ソースでの運動データ識別番号( :paramdef:`MOTION_ID(17.1)` )と，上記運動データ識別番号( ``MOTION_ID(19)`` )は一致しなければならない。このとき，並進・回転運動を組み合わせて定義しても良い。

    :paramdef:`MOTION(2)` =2,3 の時は，並進・回転・変形運動を組み合わせて定義することはできない。

    :paramdef:`MOTION(2)` =2 の回転スライド運動の時は，z 軸周りの回転運動となる。

======================================
**19.1. COIL_MOTIONまたはメッシュ pre_geom(2D)の運動**
======================================
:paramdef:`MOTION(2)` =1 のとき

:paramdef:`COIL(17.1)` ソースの運動またはメッシュ *pre_geom(2D)*の運動を定義する。

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**MESH_MOTION_for_COIL（JSONコメント）**
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: MESH_MOTION_for_COIL(19.1)

:JSONコメント: 全体メッシュの移動を表す。Mesh Motion

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**COIL_MOTION（JSONコメント）**
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: COIL_MOTION(19.1)

:JSONコメント: COILソースの運動を表す。COIL Motion

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. paramdef:: GLOBAL_MOTION_ID(19.1)
    **GLOBAL_MOTION_ID**

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 1]
        Type=I 

    メッシュ pre_geom(2D)の運動を表す運動データ識別番号(MOTION_ID(19))。
    メッシュが静止し，COIL ソースが運動する時は 0 とする。

.. hint:: 
    COIL(17.1)ソースを X 方向に並進運動させ，さらに Z 軸周りに回転運動する
    場合，以下のように設定する。

    .. collapsible:: 
        :title: テキストフォーマットの折りたたみセクション

        .. code-block:: text
            :caption: Text format

            * MOTION * NO_MOTION_DATA *
            MOTION 1
            * MOTION_ID * X_TIME_ID * Y_TIME_ID * Z_TIME_ID * PHI_TIME_ID * COORD_ID
            1 1 0 0 2 0
            * GLOBAL_MOTION_ID *
            0

    .. code-block:: json
        :caption: JSON format from 2024.11

        "19_Motion": [
            {
                "motion_data": {
                    "MOTION_ID": 1,
                    "X_TIME_ID": 1,
                    "Y_TIME_ID": 0,
                    "Z_TIME_ID": 0,
                    "PHI_TIME_ID": 2,
                    "COORD_ID": 0
                },
                "type": "COIL_MOTION",
                "comment": "GLOBAL_MOTION_ID == 0 means COIL_MOTION"
            }
        ]

    :paramdef:`COIL(17.1)` ソースを Z 軸から離れた位置で回転運動（公転）させ，メッシュ *pre_geom(2D)*を Z 軸周りに回転運動（自転）させる場合，以下のように設定する。

    .. collapsible:: 
        :title: テキストフォーマットの折りたたみセクション

        .. code-block:: text
            :caption: Text format

            * MOTION * NO_MOTION_DATA *
            MOTION 1
            * MOTION_ID * X_TIME_ID * Y_TIME_ID * Z_TIME_ID * PHI_TIME_ID * COORD_ID
            1 0 0 0 2 1
            * MOTION_ID * X_TIME_ID * Y_TIME_ID * Z_TIME_ID * PHI_TIME_ID * COORD_ID
            2 0 0 0 3 0
            * GLOBAL_MOTION_ID *
            2

    .. code-block:: json
        :caption: JSON format from 2024.11

        "19_Motion": [
            {
                "motion_data": {
                    "MOTION_ID": 1,
                    "X_TIME_ID": 1,
                    "Y_TIME_ID": 0,
                    "Z_TIME_ID": 0,
                    "PHI_TIME_ID": 2,
                    "COORD_ID": 1
                },
                "type": "COIL_MOTION",
                "comment": "GLOBAL_MOTION_ID == 2 means COIL_MOTION"
            },
            {
                "motion_data": {
                    "MOTION_ID": 2,
                    "X_TIME_ID": 0,
                    "Y_TIME_ID": 0,
                    "Z_TIME_ID": 0,
                    "PHI_TIME_ID": 3,
                    "COORD_ID": 0
                },
                "type": "MESH_MOTION_for_COIL",
                "comment": "GLOBAL_MOTION_ID == 2 means MESH_MOTION_for_COIL"
            }
        ]

==========================
**19.2. 可動部メッシュ rotor_mesh(2D)の運動**
==========================
:paramdef:`MOTION(2)` =2 のとき

可動部の並進・回転運動を定義する。

:paramdef:`NO_MESHES(10.1)` -1 組(*pre_geom(2D)*を除く)の可動部メッシュデータが必要。各データは，

1 番目データ： *rotor_mesh(2D).xxx*

N 番目データ： *rotor_mesh(2D)N.xxx*

の順番で対応付けをする。複数の場合 :paramdef:`運動方程式入力(18.6)` に対する運動は指定できない。

なお，"***"は :paramdef:`INPUT_MESH_FILE(10.1)` で指定したファイルフォーマットの拡張子を表す。

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**SLIDE_MOTION（JSONコメント）**
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: SLIDE_MOTION(19.2)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. paramdef:: ROTOR_MOTION_IDS(19.2)
    **ROTOR_MOTION_IDS(19.2)**

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 1]
        Type=I 

    可動部の運動データ識別番号( ``MOTION_ID(19)`` )。

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**SUBERI**
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: SUBERI(19.2)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 1]


:型: 実数 (E)
:説明: スライド法のすべり係数。

    交流定常解析でスライド法を用いる場合，すべり係数 ``SUBERI`` を入力。回転子が固定子磁場に同期しているとき0.0，止まっているとき 1.0。1.0 以上（逆回転している場合）も許容される。複数に対しては適用されない。

.. hint:: 
    複数の可動部メッシュデータが同じ運動をする時は同じ運動データ識別番号( ``MOTION_ID(19)`` )を ``ROTOR_MOTION_IDS`` に対応付け，異なる運動をする時はそれぞれの運動データ識別番号を対応付けるとわかりやすい。

    なお，回転すべり運動はZ軸周りの回転運動のみ考慮可能であり， ``PHI_TIME_ID(19)`` で指定する。

    交流定常解析 :paramdef:`AC(2)` を使用した誘導機の回転運動は以下のように定義する。

    .. collapsible:: 
        :title: テキストフォーマットの折りたたみセクション

        .. code-block:: text
            :caption: Text format

            * MOTION * NO_MOTION_DATA *
            MOTION 2
            * MOTION_ID * X_TIME_ID * Y_TIME_ID * Z_TIME_ID * PHI_TIME_ID * COORD_ID
            1 0 0 0 2 0
            * ROTOR_MOTION_IDS * SUBERI *
            1      0.01

    .. code-block:: json
        :caption: JSON format from 2024.11

        "19_Motion": [
            {
                "motion_data": {
                    "MOTION_ID": 1,
                    "X_TIME_ID": 0,
                    "Y_TIME_ID": 0,
                    "Z_TIME_ID": 0,
                    "PHI_TIME_ID": 2,
                    "COORD_ID": 0
                },
                "type": "SLIDE_MOTION",
                "comment" : "ROTOR_MOTION_ID equal to MOTION_ID",
                "SUBERI": 0.01
            }
        ]


==========================
**19.3. 変形部メッシュ deform_mesh(2D)の運動**
==========================
:paramdef:`MOTION(2)` =3 のとき

メッシュを変形させた解析を実行する。

変形部の運動データ識別番号( ``MOTION_ID(19)`` )。変形部メッシュデータ *deform_mesh(2D)*，もしくは :paramdef:`CONTROL_VOLUME_ID(19.3)` の指定が必要。

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**DEFORM_MOTION（JSONコメント）**
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: DEFORM_MOTION(19.3)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. paramdef:: DEFORM_MOTION_ID(19.3)

    **DEFORM_MOTION_ID**

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 1]
        Type=I 

    .. paramdef:: POSITION0(19.3)

    **POSITION0**

    .. collapsible:: 
        :title: テキストフォーマットの折りたたみセクション

        .. code-block:: none
            :caption: 固定パラメータセット1

            [row, col] = [2, 1]
            Type=E 

    .. paramdef:: POSITION1(19.3)

    **POSITION1**

    .. collapsible:: 
        :title: テキストフォーマットの折りたたみセクション

        .. code-block:: none
            :caption: 固定パラメータセット1

            [row, col] = [2, 2]
            Type=E

^^^^^^^^^^^^^^^^^^^^^^^^
**POSITIONS（JSON）**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: POSITIONS(19.3)

:型: 実数 (E)
:説明: 変形部メッシュ *deform_mesh(2D)*の運動範囲を定義する。配列で指定する。

    最初の値（ ``POSITION0`` ）はモデルメッシュデータ *pre_geom(2D)*中の，メッシュが変形せずに運動する領域の基準位置からの相対位置。

    次の値（ ``POSITION1`` ）は変形部メッシュデータ *deform_mesh(2D)* 中の，メッシュが運動する領域の基準位置からの相対位置。

    単位は直線運動の場合(m)，回転運動の場合(deg)。運動範囲は， *pre_geom(2D)* と *deform_mesh(2D)* の間にあること。


.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. paramdef:: NO_RIGID_MAT_IDS(19.3)
    **NO_RIGID_MAT_IDS(19.3)**
    
    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 3]
        Type=I

    メッシュが運動する領域(マテリアル)の要素物性番号数。

    
    .. paramdef:: NO_DEFORM_MAT_IDS(19.3)
    **NO_DEFORM_MAT_IDS(19.3)**
    
    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 3]
        Type=I

    メッシュが変形する領域の要素物性番号数。

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**CONTROL_VOLUME_ID**
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: CONTROL_VOLUME_ID(19.3)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 4]


:型: 整数 (I)
:説明: 制御要素の物性番号。制御要素は，メッシュが変形する領域の物性番号を持つ必要がある。

    0 のとき， *deform_mesh* の入力を必要とする。

    ≠0 のとき， *deform_mesh* の入力を必要とせず， ``CONTROL_VOLUME_ID`` の制御要素を用いて ``POSITION1`` 位置でのメッシュが自動作成される。物性番号が ``CONTROL_VOLUME_ID`` の制御要素を *pre_geom* に含む必要がある。制御要素は複数の要素を含み，その節点は固定部および運動部の表面節点と共有される必要がある。
    変形時に移動する節点，すなわち ``DEFORM_MAT_IDS`` の要素はいずれかの制御要素に含まれる必要がある。二次元解析の場合は，制御要素は面要素であり， *pre_geom2D* に含まれること。制御要素に対しては物性定義を必要としない。


.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. paramdef:: RIGID_MAT_IDS(19.3)

    **RIGID_MAT_IDS**
    
    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [3, 1]
        Type=I

    メッシュが運動する領域の要素物性番号。
    トータルポテンシャル領域内とする。

    .. paramdef:: DEFORM_MAT_IDS(19.3)
        
    **DEFORM_MAT_IDS**
    
    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [4, 1]
        Type=I

    メッシュが変形する領域の要素物性番号。
    トータルポテンシャル領域内で，空気領域とする。

.. hint:: 
    変形部メッシュ *deform_mesh(2D)*の運動は，以下のように定義する。

    ``CONTROL_VOLUME_ID`` =0 の場合， *deform_mesh(2D)*の入力を必要とする。

    .. collapsible:: 
        :title: テキストフォーマットの折りたたみセクション

        .. code-block:: text
            :caption: Text format

            * MOTION * NO_MOTION_DATA *
            MOTION 3
            * MOTION_ID * X_TIME_ID * Y_TIME_ID * Z_TIME_ID * PHI_TIME_ID * COORD_ID
            1 0 0 0 2 0
            * DEFORM_MOTION_ID *
            1
            * POSITION0 * POSITION1 * NO_RIGID_MAT_IDS *  NO_DEFORM_MAT_IDS * CONTROL_VOLUME_ID *
            0.0002         0.012      1        1       0
            * RIGID_MAT_IDS *
                2
            * DEFORM_MAT_IDS *
                5

    .. code-block:: json
        :caption: JSON format from 2024.11

        "19_Motion": [
            {
                "motion_data": {
                    "MOTION_ID": 1,
                    "X_TIME_ID": 0,
                    "Y_TIME_ID": 0,
                    "Z_TIME_ID": 0,
                    "PHI_TIME_ID": 2,
                    "COORD_ID": 0
                },
                "type": "DEFORM_MOTION",
                "comment" : "DEFORM_MOTION_ID equal to MOTION_ID",
                "note" : "RIGID_IDs and DEFORM_IDs are defined in 16_Material_Properties",
                "POSITIONS": [0.0002, 0.012],
                "CONTROL_VOLUME_ID": 0
            }
        ]