.. _17_7_MAGNET:

##################################
**17.7 磁化ベクトルソース**
##################################

有限要素内の永久磁石を磁化ベクトルを用いて定義します。
``MAGNET`` は，永久磁石の磁化ベクトルを与えるためのソース項です。

---------------------
設定項目
---------------------

:paramdef:`MAGNET(17.7)`    JSONキー：磁化ベクトルソースオブジェクト

:paramdef:`SERIES_ID(17.7)`        系列番号。

    :paramdef:`INPUT_TYPE(17.7)`        磁化ベクトルの与え方のオプション。

    一様磁化入力

        :paramdef:`MAT_ID(17.7.1)`            領域設定する物性番号。
        
        :paramdef:`COORD_ID(17.7.1)`            磁化ベクトルの座標系。

        :paramdef:`MXYZ(17.7.1)`            磁化ベクトルの成分。

        :paramdef:`CHECK_PERMEANCE(17.7.1)`            永久磁石の減磁体積計算用のパーミアンス。
    
    要素ごとに磁化入力
    
        :paramdef:`MAT_ID(17.7.2)`            領域設定する物性番号。

        :paramdef:`COORD_ID(17.7.2)`            磁化ベクトルの座標系。

        :paramdef:`READ_OPTION(17.7.2)`            磁化ベクトルの読み込みオプション。

            :paramdef:`ELEM_ID(17.7.2)`                要素番号。

            :paramdef:`MXYZ(17.7.2)`                磁化ベクトルの成分。

            :paramdef:`INITIAL_MAGNETIZATION_FILE_NAME(17.7.2)`                ATLASフォーマットで定義した初期磁化ベクトルを与えるファイル名。デフォルトのファイル名：`initial_magnetization.dat`。

    正弦関数入力

        :paramdef:`NO_POLES(17.7.3)`            磁化ベクトルの極数。

        :paramdef:`ANGLE(17.7.3)`            磁化ベクトルの基準角度。
            
        :paramdef:`ORDERS(17.7.3)`            磁化ベクトルの高調波次数。

        :paramdef:`AMPLITUDE(17.7.3)`            磁化ベクトルのORDER 次の規格化された振幅

        :paramdef:`MAT_ID(17.7.3)`            領域設定する物性番号。

        :paramdef:`COORD_ID(17.7.3)`            磁化ベクトルの座標系。

        :paramdef:`MXYZ(17.7.3)`            磁化ベクトルの成分。

    数式入力

        :paramdef:`MAT_ID(17.7.4)`            領域設定する物性番号。

        :paramdef:`COORD_ID(17.7.4)`            磁化ベクトルの座標系。

    永久磁石の減磁曲線を用いた非線形解析

        :paramdef:`MAT_ID(17.7.5)`            領域設定する物性番号。

        :paramdef:`TYPE(17.7.5)`            永久磁石の減磁曲線を用いた解析のオプション。

        :paramdef:`BH_MAGNET_CURVE_ID(17.7.5)`            減磁曲線番号。

        :paramdef:`MU(17.7.5)`            非容易磁化方向の比透磁率。

        :paramdef:`COORD_ID(17.7.5)`            磁化ベクトルの座標系。

        :paramdef:`MXYZ(17.7.5)`            磁化ベクトルの成分。

---------------------
設定フォーマット
---------------------
.. collapsible::
    :title: テキストフォーマットの折りたたみセクション

        :種類: 固定パラメータセット1
        :行数: 1  
        :パラメータ数: 4

    .. code-block:: text
        :caption: Text format

        * MAGNET * SERIES_ID * TIME_ID * NO_MAT_ID *
        MAGNET         I          I          I


======================
JSONフォーマット
======================

.. code-block:: json
    :caption: JSON format from 2024.11

    "17_Field_Source" : 
    [
        {
            "MAGNET" : 
            {
                "SERIES_ID" : I,
                "TIME_ID" : I,
                "INPUT_TYPE" : I,
                "data" : 
                [
                    {
                        "MAT_ID" : I,
                        "COORD_ID" : I,
                        "MXYZ" : [ E, E, E ]
                    }
                ]
            }
        }
    ]

---------------------
**詳細説明**
---------------------

``MAGNET`` は有限要素メッシュに永久磁石を磁化ベクトルを用いて定義します。

==========================
**MAGNET**
==========================
.. paramdef:: MAGNET(17.7)

JSONキー：磁化ベクトルソースオブジェクト

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 1]

:型: 文字列 (S)
:説明: 磁化ベクトルソース ``MAGNET`` の指定。

===========================
**SERIES_ID**
===========================
.. paramdef:: SERIES_ID(17.7)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 2]

:型: 整数 (I)
:説明: ソース項の識別番号。

==========================
**TIME_ID**
==========================
.. paramdef:: TIME_ID(17.7)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 3]

:型: 整数 (I)
:説明: 時間依存性のある電流を与える場合の時間定義番号。 :paramdef:`TIME_ID(17.6)` 

磁化一定の場合は，一定値を与える時間定義番号 :paramdef:`TIME_ID(17.6)` を設定します。

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    **NO_MAT_ID（テキストのみ）**

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 4]
        Type=I

    ``INPUT_TYPE`` =0, 2, 3, 4 のとき，磁化ベクトルを与える要素の物性番号数。
    ``INPUT_TYPE`` =1 のとき，磁化ベクトルを与える要素数。

==========================
**INPUT_TYPE**
==========================
.. paramdef:: INPUT_TYPE(17.7)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 5]

.. list-table:: 磁化ベクトルの与え方のオプション
    :header-rows: 1

    * - **値**
      - **説明**
    * - 0
      - 物性番号毎に一様磁化ベクトルを与える。
    * - 1
      - 要素毎に磁化ベクトルを与える。物性番号は一つ。 ``READ_OPTION`` =1 の時は物性番号が複数あってもよい。
    * - 2
      - 物性番号毎に正弦関数入力を与える。
    * - 3
      - 物性番号毎に数式入力を与える。
    * - 4
      - 減磁曲線を用いた非線形解析を行う。
    * - 5
      - 温度依存の減磁曲線を用いた非線形解析を行う。

.. caution::
    =4の使用には<*PM Demagnetization module*>が必要です。

    =4,5の使用には<*TEMP_DEPEND module*>が必要です。

==========================
**data**
==========================
.. paramdef:: data(17.7)

:JSONキー: 磁化ベクトルソースのデータ
    
JSONフォーマットの場合， ``data`` に ``INPUT_TYPE`` で指定したデータを入力する。

``data`` は配列で， ``MAGNET`` 要素の数だけ定義する。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**17.7.1 一様磁化入力**
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

``INPUT_TYPE``=0 の場合，物性番号毎に磁化ベクトルを与えます。

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

        :種類: 固定パラメータセット1
        :行数: 1  
        :パラメータ数: 5 

    .. code-block:: text
        :caption: Text format

        *  MAT_ID * COORD_ID * MX or MR * MY or MT * MZ * CHECK_PERMEANCE *
             2      1            1            0            0            4.2

.. code-block:: json
    :caption: JSON format from 2024.11

                "data" : 
                [
                    {
                        "MAT_ID" : 2,
                        "COORD_ID" : 1,
                        "MXYZ" : [ 1.0, 0.0, 0.0 ],
                        "CHECK_PERMEANCE" : 4.2
                    }
                ]

^^^^^^^^^^^^^^^^^^^^^^^^
**MAT_ID**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: MAT_ID(17.7.1)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 1]

:型: 整数 (I)
:説明: 磁化ベクトルを与える要素の物性番号( :paramdef:`MAT_ID(16.1)` )。


^^^^^^^^^^^^^^^^^^^^^^^^
**COORD_ID**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: COORD_ID(17.7.1)
    
.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 2]

:型: 整数 (I)
:説明: 磁化ベクトルを定義する局所座標系 ( :paramdef:`COORD_ID(12)` )。

^^^^^^^^^^^^^^^^^^^^^^^^
**MXYZ**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: MXYZ(17.7.1)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [3, 1]

:型: 実数配列 (E)
:数: 3
:単位: T
:説明: 局所座標系における各方向の磁化ベクトル成分。

^^^^^^^^^^^^^^^^^^^^^^^^
**CHECK_PERMEANCE**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: CHECK_PERMEANCE(17.7.1)

.. collapsible::
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 6]

:型: 実数 (E)
:説明: 永久磁石の減磁体積計算用のパーミアンス。

.. note::

    :ref:`Release_2026_09 <rls2026_09>`

    ``CHECK_PERMEANCE`` は **11. 出力オプション** の ``CHECK_PERMEANCE`` をOnとすることで使用され， `output` ファイルに ``CHECK_PERMEANCE`` を下回った動作点の磁石＝減磁判定として， `` (磁石体積 - 減磁判定された磁石体積) / 磁石体積 `` が出力されます。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**17.7.2 要素ごとに磁化入力**
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

``INPUT_TYPE``=1 の場合，要素毎に磁化ベクトルを与えます。

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

        :種類: 固定パラメータセット1
        :行数: 1  
        :パラメータ数: 5 

    .. code-block:: text
        :caption: Text format

        * MAGNET * SERIES_ID * TIME_ID * NO_MAT_ID * INPUT_TYPE *
        MAGNET       1             1          2       1
        *  MAT_ID * COORD_ID * READ_OPTION *
            1         0             0
        *  ELM_ID * MX or MR * MY or MT * MZ *
             1      0            0            1
             2      0            0            1

.. code-block:: json
    :caption: JSON format from 2024.11

            "MAGNET" : 
            {
                "SERIES_ID" : 1,
                "TIME_ID" : 1,
                "INPUT_TYPE" : 1,
                "comment" : "Linear magnetization vector input",
                "MAT_ID" : 1,
                "COORD_ID" : 0,
                "READ_OPTION" : 0,
                "data" : 
                [
                    {
                        "ELEM_ID" : 1,
                        "MXYZ" : [ 0.0, 0.0, 1.0 ]
                    },
                    {
                        "ELEM_ID" : 2,
                        "MXYZ" : [ 0.0, 0.0, 1.0 ]
                    }
                ]
            }

^^^^^^^^^^^^^^^^^^^^^^^^
**MAT_ID**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: MAT_ID(17.7.2)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 1]

:型: 整数 (I)
:説明: 磁化ベクトルを与える要素の物性番号( :paramdef:`MAT_ID(16.1)` )。

^^^^^^^^^^^^^^^^^^^^^^^^
**COORD_ID**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: COORD_ID(17.7.2)
    
.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 2]

:型: 整数 (I)
:説明: 磁化ベクトルを定義する局所座標系 ( :paramdef:`COORD_ID(12)` )。

^^^^^^^^^^^^^^^^^^^^^^^^
**READ_OPTION**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: READ_OPTION(17.7.2)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 3]

.. list-table:: 磁化ベクトルの読み込みオプション
    :header-rows: 1

    * - **値**
      - **説明**
    * - 0
      - インプットファイルに定義する。
    * - 1
      - ATLASフォーマットで定義した初期磁化ベクトルを与えるファイル名を指定する。デフォルトのファイル名：`initial_magnetization.dat`。:paramdef:`COORD_ID(17.7.2)` は意味を持たない。


``READ_OPTION`` =0のとき，以下のデータを入力。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**ELEM_ID**
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. paramdef:: ELEM_ID(17.7.2)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット2

        [row, col] = [2, 1]

:型: 整数 (I)
:説明: 入力メッシュデータ内の要素番号。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**MXYZ**
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. paramdef:: MXYZ(17.7.2)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット2

        [row, col] = [2, 2]

:型: 実数配列 (E)
:数: 3
:単位: T
:説明: 局所座標系における各方向の磁化ベクトル成分。

``READ_OPTION`` =1のとき，以下のデータを入力。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**INITIAL_MAGNETIZATION_FILE_NAME (JSONフォーマット)**
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. paramdef:: INITIAL_MAGNETIZATION_FILE_NAME(17.7.2)

``ATLAS`` フォーマットで定義した初期磁化ベクトルを与えるファイル名。
デフォルトのファイル名：`initial_magnetization.dat`。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**17.7.3 正弦関数入力**
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
``INPUT_TYPE``=2 の場合，物性番号毎に正弦関数入力を与えます。

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

        :種類: 固定パラメータセット1
        :行数: 2 + NO_DATA  
        :パラメータ数: 5 

    .. code-block:: text
        :caption: Text format

        *  NO_ORDERS   *    NO_POLES  *   ANGLE(deg)   *
            1     4     45.00
        * ORDER * AMPLITUDE *
            1  1.000000000
        *  MAT_ID * COORD_ID *  MX or MR  *   MY or MT  *      MZ   *
            101      0            1            0            0
            102      0            0            1            0
            103      0           -1            0            0
            104      0            0           -1            0


.. code-block:: json
    :caption: JSON format from 2024.11

        "MAGNET" : 
        {
            "SERIES_ID" : 1,
            "TIME_ID" : 1,
            "INPUT_TYPE" : 2,
            "comment" : "Linear magnetization by sin function input",
            "NO_POLES" : 4,
            "ANGLE" : 45.0,
            "ORDERS" : [ 1 ],
            "AMPLITUDES" : [ 1.0 ],
            "data" : 
            [
                {
                    "MAT_ID" : 101,
                    "COORD_ID" : 0,
                    "MXYZ" : [ 1.0, 0.0, 0.0 ]
                },
                {
                    "MAT_ID" : 102,
                    "COORD_ID" : 0,
                    "MXYZ" : [ 0.0, 1.0, 0.0 ]
                },
                {
                    "MAT_ID" : 103,
                    "COORD_ID" : 0,
                    "MXYZ" : [ -1.0, 0.0, 0.0 ]
                },
                {
                    "MAT_ID" : 104,
                    "COORD_ID" : 0,
                    "MXYZ" : [ 0.0, -1.0, 0.0 ]
                }
            ]
        }


.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. paramdef:: NO_ORDERS(17.7.3)
    
    **NO_ORDERS**
    
    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 1]
        Type=I

    高調波次数の数。

^^^^^^^^^^^^^^^^^^^^^^^^
**NO_POLES**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: NO_POLES(17.7.3)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 2]

:型: 整数 (I)
:説明: 磁極数（一周 360 度分）。

^^^^^^^^^^^^^^^^^^^^^^^^
**ANGLE**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: ANGLE(17.7.3)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 3]

:型: 実数 (E)
:単位: deg
:説明: 基準角度。

^^^^^^^^^^^^^^^^^^^^^^^^
**ORDERS**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: ORDERS(17.7.3)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット2

        [row, col] = [2, 1]

:型: 整数配列 (I)
:数: NO_ORDERS = 考慮したい高調波次数の数
:説明: 高調波次数。

^^^^^^^^^^^^^^^^^^^^^^^^
**AMPLITUDE**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: AMPLITUDE(17.7.3)


.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット2

        [row, col] = [2, 2]

:型: 実数配列 (E)
:数: NO_ORDERS = 考慮したい高調波次数の数
:説明: ``ORDERS`` 次の規格化された振幅。

^^^^^^^^^^^^^^^^^^^^^^^^
**MAT_ID**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: MAT_ID(17.7.3)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット3

        [row, col] = [3, 1]

:型: 整数 (I)
:説明: 磁化ベクトルを与える要素の物性番号( :paramdef:`MAT_ID(16.1)` )。

^^^^^^^^^^^^^^^^^^^^^^^^
**COORD_ID**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: COORD_ID(17.7.3)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット3

        [row, col] = [3, 2]

:型: 整数 (I)
:説明: 磁化ベクトルを定義する局所座標系 ( :paramdef:`COORD_ID(12)` )。

^^^^^^^^^^^^^^^^^^^^^^^^
**MXYZ**
^^^^^^^^^^^^^^^^^^^^^^^^

.. paramdef:: MXYZ(17.7.3)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット3

        [row, col] = [3, 3]

:型: 実数配列 (E)
:数: 3
:単位: T
:説明: 局所座標系における各方向の磁化ベクトル成分。


.. note::
    
    定義：入力正弦関数は，以下で与えられる。

    .. math::
        \mathbf{M}_{r} \left( \theta \right) = \mathbf{M}_{rs} \sum_{k=1,3,5,\dots}^{k_{\text{max}}} b_k \sin \left( \left(\frac{m}{2}\right) k \left( \theta - \theta_0\right)\right)

    ここで，:math:`\mathbf{M}_{rs}` は ( ``MXYZ`` )，:math:`k` は ``ORDERS`` ，:math:`b_k` は ``AMPLITUDE`` ，:math:`m` は ``NO_POLES`` である。
    :math:`k_{\text{max}}` は最大高調波次数であり， ``NO_ORDERS`` は入力する次数の数であることに注意。
    :math:`\theta_0` は円筒座標系での基準角度 ANGLE であり，磁化が反転する位置（磁極間）に相当する。
    :math:`\theta` は円筒座標系での要素中心の角度。
    
    磁化配向は，ラジアル配向（円筒座標系における径方向），平行配向（直交座標系における任意の方向）が入力可能で，その設定は行 3 で割り当てる ``COORD_ID`` の座標系と対応。
    また，上式は奇数次成分のみで表しているが，入力としては偶数次成分にも対応。
    入力例として下図のモデルに，最大高調波次数 5（奇数次のみ）までの，磁極数 4，基準角度 45°，ラジアル配向のデータ設定を示す。なお，行 2 の ``COORD_ID`` =1 は局所円筒座標の ID である。

    .. figure:: figs/magnetization_distribution.png
        :width: 400px
        :height: 300px
        :align: center
        :name: magnetization_distribution
        :alt: 磁化分布の定義例
            
        磁化分布の定義例


    **SOURCES Definitions**

    .. collapsible:: 
        :title: テキストフォーマットの折りたたみセクション

        .. code-block:: text
            :caption: Example Input

            SOURCE
            * MAGNET * SERIES_ID * TIME_ID * NO_MAT_ID * INPUT_TYPE *
            MAGNET 1 1 4 2
            * NO_ORDERS * NO_POLES * ANGLE(deg) *
            3 4 45.
            * ORDER * AMPLITUDE *
            1 1.0
            3 0.25
            5 0.05
            * MAT_ID * COORD_ID * MX(MR) * MY(MT) * MZ *
            101 1 1.0 0.0 0.0
            * MAT_ID * COORD_ID * MX(MR) * MY(MT) * MZ *
            102 1 1.0 0.0 0.0
            * MAT_ID * COORD_ID * MX(MR) * MY(MT) * MZ *
            103 1 1.0 0.0 0.0
            * MAT_ID * COORD_ID * MX(MR) * MY(MT) * MZ *
            104 1 1.0 0.0 0.0
            END

    .. code-block:: json
        :caption: JSON format from 2024.11

            "MAGNET" : 
            {
                "SERIES_ID" : 1,
                "TIME_ID" : 1,
                "INPUT_TYPE" : 2,
                "NO_ORDERS" : 3,
                "NO_POLES" : 4,
                "ANGLE" : 45.0,
                "ORDERS" : [ 1, 3, 5 ],
                "AMPLITUDES" : [ 1.0, 0.25, 0.05 ],
                "data" : 
                [
                    {
                        "MAT_ID" : 101,
                        "COORD_ID" : 1,
                        "MXYZ" : [ 1.0, 0.0, 0.0 ]
                    },
                    {
                        "MAT_ID" : 102,
                        "COORD_ID" : 1,
                        "MXYZ" : [ 1.0, 0.0, 0.0 ]
                    },
                    {
                        "MAT_ID" : 103,
                        "COORD_ID" : 1,
                        "MXYZ" : [ -1.0, 0.0, 0.0 ]
                    },
                    {
                        "MAT_ID" : 104,
                        "COORD_ID" : 1,
                        "MXYZ" : [ -1.0, 0.0, 0.0 ]
                    }
                ]
            }


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**17.7.4 数式入力**
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

``INPUT_TYPE``=3 の場合，物性番号毎に数式入力を与えます。

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

        :種類: 固定パラメータセット2
        :行数: 3(equation format)  
        :パラメータ数:  

    .. code-block:: text
        :caption: Text format

        * MXYZ(x,y,z) * xyz(m) *
        M(x,y,z)=0;;
        theta(x,y,z) = atan2(y,x);
        M(x,y,z)=sin(2*(theta(x,y,z)-(PI/4)));;
        M(x,y,z)=0;;
        *  MAT_ID * COORD_ID *
        102      0
        * MAGNET * SERIES_ID * TIME_ID * NO_MAT_ID * INPUT_TYPE *
        MAGNET           1             1           1       3
        * MXYZ(x,y,z) * xyz(m) *
        theta(x,y,z) = atan2(y,x);
        M(x,y,z)=-sin(2*(theta(x,y,z)-(PI/4)));;
        M(x,y,z)=0;;
        M(x,y,z)=0;;
        *  MAT_ID * COORD_ID *
        103      0
        * MAGNET * SERIES_ID * TIME_ID * NO_MAT_ID * INPUT_TYPE *
        MAGNET           1             1           1       3
        * MXYZ(x,y,z) * xyz(m) *
        M(x,y,z)=0;;
        theta(x,y,z) = atan2(y,x);
        M(x,y,z)=-sin(2*(theta(x,y,z)-(PI/4)));;
        M(x,y,z)=0;;
        *  MAT_ID * COORD_ID *
        104      0
        END


.. code-block:: json
    :caption: JSON format from 2024.11

        {
            "MAGNET" : 
            {
            "SERIES_ID" : 1,
            "TIME_ID" : 1,
            "INPUT_TYPE" : 3,
            "FUNCTION_MX" : "M(x,y,z)=0;;",
            "FUNCTION_MY" : "theta(x,y,z) = atan2(y,x);M(x,y,z)=sin(2*(theta(x,y,z)-(PI/4)));;",
            "FUNCTION_MZ" : "M(x,y,z)=0;;",
            "data" : 
            [
                {
                "MAT_ID" : 102,
                "COORD_ID" : 0
                }
            ]
            }
        },
        {
            "MAGNET" : 
            {
            "SERIES_ID" : 1,
            "TIME_ID" : 1,
            "INPUT_TYPE" : 3,
            "FUNCTION_MX" : "theta(x,y,z) = atan2(y,x);M(x,y,z)=-sin(2*(theta(x,y,z)-(PI/4)));;",
            "FUNCTION_MY" : "M(x,y,z)=0;;",
            "FUNCTION_MZ" : "M(x,y,z)=0;;",
            "data" : 
            [
                {
                "MAT_ID" : 103,
                "COORD_ID" : 0
                }
            ]
            }
        },
        {
            "MAGNET" : 
            {
            "SERIES_ID" : 1,
            "TIME_ID" : 1,
            "INPUT_TYPE" : 3,
            "FUNCTION_MX" : "M(x,y,z)=0;;",
            "FUNCTION_MY" : "theta(x,y,z) = atan2(y,x);M(x,y,z)=-sin(2*(theta(x,y,z)-(PI/4)));;",
            "FUNCTION_MZ" : "M(x,y,z)=0;;",
            "data" : 
            [
                {
                "MAT_ID" : 104,
                "COORD_ID" : 0
                }
            ]
            }
        }

^^^^^^^^^^^^^^^^^^^^^^^^
**FUNCTION_MX, FUNCTION_MY, FUNCTION_MZ**
^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: FUNCTION_MX(17.7.4)
.. paramdef:: FUNCTION_MY(17.7.4)
.. paramdef:: FUNCTION_MZ(17.7.4)

磁 化 分 布 関 数 M(Mx,My,Mz) の 各 成 分 MX(x,y,z), MY(x,y,z),
MZ(x,y,z)を数式入力( :ref:`Appendix I` )する。

^^^^^^^^^^^^^^^^^^^^^^^^^
**MAT_ID**
^^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: MAT_ID(17.7.4)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 1]

:型: 整数 (I)
:説明: 磁化ベクトルを与える要素の物性番号( :paramdef:`MAT_ID(16.1)` )。

^^^^^^^^^^^^^^^^^^^^^^^^^
**COORD_ID**
^^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: COORD_ID(17.7.4)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 2]

:型: 整数 (I)
:説明: 磁化ベクトルを定義する局所座標系 ( :paramdef:`COORD_ID(12)` )。

.. note:: 
    17.7.3. 正弦関数入力式で説明した入力例を本入力で表すと，以下と等価となる。

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: text
        :caption: Example Input

        *SOURCES Definitions*
        SOURCE
        * MAGNET * SERIES_ID * TIME_ID * NO_MAT_ID * INPUT_TYPE *
        MAGNET 1 1 4 3
        * FUNCTION MX(x,y,z) * x(m) or x(m) *
        MX(x,y,z)=sin(2*(y-(PI/4)))+0.25*sin(6*(y-(PI/4)))+0.05*sin(10*(y-(PI/4)));;
        * FUNCTION MY(x,y,z) * y(m) or y(rad) *
        MY(x,y,z)=0;;
        * FUNCTION MZ(x,y,z) * z(m) or z(m) *
        MZ(x,y,z)=0;;
        * MAT_ID * COORD_ID *
        101 1
        * MAT_ID * COORD_ID *
        102 1
        * MAT_ID * COORD_ID *
        103 1
        * MAT_ID * COORD_ID *
        104 1
        END

.. code-block:: json
    :caption: JSON format from 2024.11

        {
            "MAGNET" : 
            {
                "SERIES_ID" : 1,
                "TIME_ID" : 1,
                "INPUT_TYPE" : 3,
                "FUNCTION_MX" : "MX(x,y,z)=sin(2*(y-(PI/4)))+0.25*sin(6*(y-(PI/4)))+0.05*sin(10*(y-(PI/4)));;",
                "FUNCTION_MY" : "MY(x,y,z)=0;;",
                "FUNCTION_MZ" : "MZ(x,y,z)=0;;",
                "data" : 
                [
                    {
                        "MAT_ID" : 101,
                        "COORD_ID" : 1
                    },
                    {
                        "MAT_ID" : 102,
                        "COORD_ID" : 1
                    },
                    {
                        "MAT_ID" : 103,
                        "COORD_ID" : 1
                    },
                    {
                        "MAT_ID" : 104,
                        "COORD_ID" : 1
                    }
                ]
            }
        }

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**17.7.5 永久磁石の減磁曲線を用いた非線形解析**
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
``INPUT_TYPE``=4 の場合，物性番号毎に永久磁石の減磁曲線を用いた非線形解析を与えます。

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

        :種類: 固定パラメータセット1
        :行数: 2  
        :パラメータ数: 3, 4 

    .. code-block:: text
        :caption: Text format

        * MAT_ID * TYPE * BH_MAGNET_CURVE_ID * MU *
            I        I            I            E
        * COORD_ID *  MX or MR  *   MY or MT  *    MZ   *
            I              E          E              E


.. code-block:: json
    :caption: JSON format from 2024.11

            "data" : 
            [
                {
                    "MAT_ID" : I,
                    "TYPE" : I,
                    "BH_MAGNET_CURVE_ID" : I,
                    "MU" : E,
                    "INPUT_TYPE" : I,
                    "COORD_ID" : I,
                    "MXYZ" : [ E, E, E ]
                }
            ]


^^^^^^^^^^^^^^^^^^^^^^^^^^^
**MAT_ID**
^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: MAT_ID(17.7.5)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 1]

:型: 整数 (I)
:説明: 磁化ベクトルを与える要素の物性番号( :paramdef:`MAT_ID(16.1)` )。

^^^^^^^^^^^^^^^^^^^^^^^^^^^
**TYPE**
^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: TYPE(17.7.5)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 2]

.. list-table:: 減磁解析のタイプ
    :header-rows: 1

    * - **値**
      - **説明**
    * - 0
      - 永久磁石の減磁曲線を用いた非線形解析を行う。
    * - 1
      - 永久磁石の減磁曲線を用いた減磁解析を行う。
    

^^^^^^^^^^^^^^^^^^^^^^^^^^^
**BH_MAGNET_CURVE_ID**
^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: BH_MAGNET_CURVE_ID(17.7.5)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 3]

:型: 整数 (I)
:説明: 減磁曲線の ID 番号。減磁曲線は :paramdef:`20_4_Magnet_Demagnetization_Curve(20)` で定義する。

    非線形解析 ( :paramdef:`NON_LINEAR(2)` =1) が必須。

^^^^^^^^^^^^^^^^^^^^^^^^^^^
**MU**
^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: MU(17.7.5)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 4]

:型: 実数 (E)
:説明: 非容易磁化方向の比透磁率を設定。

^^^^^^^^^^^^^^^^^^^^^^^^^^^
**COORD_ID**
^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. paramdef:: COORD_ID(17.7.5)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット2

        [row, col] = [2, 1]

:型: 整数 (I)
:説明: 磁化ベクトルを定義する局所座標系 ( :paramdef:`COORD_ID(12)` )。

^^^^^^^^^^^^^^^^^^^^^^^^^^^
**MXYZ**
^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. paramdef:: MXYZ(17.7.5)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット2

        [row, col] = [2, 2]
        Type=E

:型: 実数配列 (E)
:数: 3
:単位: T
:説明: 局所座標系における各方向の磁化ベクトル成分。

    :paramdef:`TIME_ID(17.7)` は 1 (一定) とすること。
    磁化として :paramdef:`20_4_Magnet_Demagnetization_Curve(20)` の最後のデータを使用する。

.. note:: 
    - ``TYPE`` =1 の場合，減磁曲線上を動く非線形解析を行うため，減磁はしない。
    - ``TYPE`` =2 の場合，減磁曲線上を下降し，上昇する時はリコイル透磁率を使用する。履歴を
    *demagnetization_solution* ファイルに保存し，リスタート計算で *old_demagnetization_solution* と remane して使用する。

    減磁曲線の温度依存を解析する場合，リスタート計算で行うため，:paramdef:`20_4_Magnet_Demagnetization_Curve(20)` を解析したい温度のデータに変更すること。

.. hint:: 
    磁石磁化方向は，X, Y, Z 方向のいずれかになるように設定すること。例えば永久磁石がX 軸から 45 度の位置にある場合は，局所座標として 45 度方向を X 方向もしくは Y 方向となる座標を設定し， :paramdef:`COORD_ID(17.7.5)` に設定して磁石磁化方向を設定すること。


* 使用には<PM Demagnetization module>が必要です。


