.. _12_Geometry:
    
##################################
**12. 解析の次元と局所座標系**
##################################

解析モデルの次元を指定します。
二次元計算においては，入力メッシュデータファイルで入力された面要素（一次三角形，一次四辺形要素）を対称方向に ``DELTA_Z`` あるいは ``DELTA_THETA`` だけ拡張し，一次体積要素を生成し，三次元問題として解析します。
``GEOMETRY`` =0の時は三次元メッシュをファイル *pre_geom* より入力します。``GEOMETRY`` =1,2,3,4の場合，いずれも入力は二次元メッシュであり，ファイル *pre_geom2D* を入力とします。
``GEOMETRY`` =4の場合，二次元モデルにおける面要素は，z方向に拡張するときz=0(x-y)面で定義すること。角度方向に拡張するときはy=0(z-x)面で定義すること。

.. important:: 
    ``GEOMETRY`` =1,2の二次元解析では，メッシュ定義面で磁束密度が，メッシュ奥行き方向で(渦)電流が計算されます。つまり， ``GEOMETRY`` =1では，Bx，ByとJzが， ``GEOMETRY`` =2では，Bx，BzとJyとして計算されます。


局所座標系を定義します。物性の非等方性 :paramdef:`ANISOTROPY(16.1)` や，外部電流磁場ソース :paramdef:`COIL(17.1)` ，磁化ベクトルソース :paramdef:`MAGNET(17.7)` ，二次元メッシュの三次元の拡張時に用います。
なお，全体座標系（直交座標系）が ``COORD_ID`` =0で定義されていますので、全体座標系を使用する場合は、定義する必要はありません。

---------------------
設定項目
---------------------
:paramdef:`12_Geometry`    JSONキー：解析の次元と局所座標系オブジェクト

:paramdef:`GEOMETRY(12)`    入力メッシュの次元を指定

:paramdef:`DELTA_Z_THETA(12)`    二次元解析で拡張する長さを設定

:paramdef:`NO_LAYERS(12)`    GEOMETRY=3の二次元軸対象解析時の360度の分割数を指定

:paramdef:`ADD_SYMMETRY(12)`    二次元解析時の拡張方向の境界条件の設定解除

:paramdef:`PITCH(12)`    ヘリカルメッシュの捻りピッチを設定

:paramdef:`COORDINATE(12)`    局所座標系のタイトルカード

:paramdef:`NO_COORDINATES(12)`    定義する局所座標系の数

:paramdef:`COORD_ID(12)`    局所座標系の識別番号

:paramdef:`TYPE(12)`    局所座標系の種類を指定

:paramdef:`XYZ0(13)`    局所座標系の原点の全体座標における座標

:paramdef:`EX_XYZ(13)`    局所座標系のx方向単位ベクトル

:paramdef:`EZ_XYZ(13)`    局所座標系のz方向単位ベクトル

---------------------
設定フォーマット
---------------------
.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    **解析の次元**

    :種類: 固定パラメータセット  
    :行数: 1  
    :パラメータ数: 5      

    .. code-block:: text
        :caption: Text format

        * GEOMETRY * DELTA_Z_THETA * NO_LAYERS * ADD_SYMMETRY * PITCH *
            I         I             I           I            E

    **局所座標系**

    :種類: 固定パラメータセット  
    :行数: 1  
    :パラメータ数: 2      

    .. code-block:: text
        :caption: Text format

        *COORDINATE * NO_COORDINATES *
        COORDINATE         I

    局所座標系を定義する場合は，以下のパラメータを設定する。

        :種類: 追加パラメータセット  
        :行数: 3*NO_COORDINATES  
        :パラメータ数: 5,3,3

    .. code-block:: text
        :caption: Text format

        * COORD_ID * TYPE   *    X0    *    Y0    *    Z0   *
            I         I          E          E          E
        *                   *   EX_X   *   EX_Y   *   EX_Z  *
                                E          E          E
        *                   *   EZ_X   *   EZ_Y   *   EZ_Z  *
                                E          E          E 


======================
JSONフォーマット
======================

.. code-block:: json
    :caption: JSON format from 2024.11

    "12_Geometry" : 
    {
        "GEOMETRY" : I,
        "DELTA_Z_THETA" : E,
        "NO_LAYERS" : I,
        "ADD_SYMMETRY" : I,
        "PITCH" : E,
        "COORDINATE" : 
        [
            {
                "COORD_ID" : I,
                "TYPE" : I,
                "XYZ0" : [ E, E, E ],
                "EX_XYZ" : [ E, E, E ],
                "EZ_XYZ" : [ E, E, E ]
            }
        ]
    },

.. important:: 

    :ref:`Release 2024.11 <rls2024_11>`

    JSONフォーマットでは，これらのパラメータは定義しなくてもデフォルト値を使用します。
    デフォルト値は詳細説明をご覧ください。

--------------
**詳細説明**
--------------

================
**12_Geometry**
================
.. paramdef:: 12_Geometry

:JSONキー: 解析の次元と局所座標系オブジェクト

--------------
**解析の次元**
--------------
.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    :種類: 固定パラメータセット  
    :行数: 1  
    :パラメータ数: 5      

===================
**GEOMETRY**
===================
.. paramdef:: GEOMETRY(12)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 1]

.. list-table:: 解析の次元
    :header-rows: 1

    * - 設定値
      - 説明
    * - 0
      - 三次元メッシュをファイル *pre_geom* より入力する。
    * - 1
      - 二次元並進対称計算。XY平面で定義。Z方向に ``DELTA_Z`` の長さで1層積み上げた三次元メッシュで二次元と等価な計算を行う。
    * - 2
      - 二次元軸対称計算。ZX平面で定義。θ方向に ``DELTA_THETA`` の角度で1層積み上げた三次元メッシュで二次元と等価な計算を行う。
    * - 3
      - 解析モデルが軸対称のとき二次元メッシュより三次元メッシュを360度分自動生成する。印加磁場は軸対称でなくてもよく，三次元計算を行う。
    * - 4
      - 二次元メッシュをz方向あるいは角度方向に多層に拡張し，三次元メッシュを作成する。 *2D_to_3D* ファイルの入力が必要。

二次元計算においては，入力メッシュデータファイルで入力された面要素（一次三角形，一次四辺形要素）を対称方向に ``DELTA_Z`` あるいは ``DELTA_THETA`` だけ拡張し，一次体積要素を生成し，三次元問題として解析する。

``GEOMETRY`` =0の時は三次元メッシュをファイル *pre_geom* より入力する。``GEOMETRY`` =1,2,3,4の場合，いずれも入力は二次元メッシュであり，ファイル *pre_geom2D* を入力とする。
``GEOMETRY`` =4の場合，二次元モデルにおける面要素は，z方向に拡張するときz=0(x-y)面で定義すること。角度方向に拡張するときはy=0(z-x)面で定義すること。

===================
**DELTA_Z_THETA**
===================
.. paramdef:: DELTA_Z_THETA(12)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 2]

:型: 実数 (E)
:値: >= 0
:単位: m ( ``GEOMETRY`` =1), degree ( ``GEOMETRY`` =2)
:説明: ``GEOMETRY`` =1,2のときに指定する。 ``GEOMETRY`` =0，3，4のとき不要。

    ``GEOMETRY`` =1のとき ``DELTA_Z`` はz方向の要素長さ（m）。

    ``GEOMETRY`` =2のとき， ``DELTA_THETA`` は角度方向要素角度（degree）。
:デフォルト値: 0

===================
NO_LAYERS
===================
.. paramdef:: NO_LAYERS(12)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 3]

:型: 整数 (I)
:値: >= 0
:説明: ``GEOMETRY`` =1,2のとき不要。 ``GEOMETRY`` =3のとき二次元メッシュより三次元メッシュを360度分自動生成する際に， ``NO_LAYER`` 層指定する場合に使用。 0を指定すると360層作成（デフォルト）。 ``GEOMETRY`` =1のとき0を指定。
:デフォルト値: 0

===================
ADD_SYMMETRY
===================
.. paramdef:: ADD_SYMMETRY(12)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 4]

.. list-table:: 境界条件の設定解除
    :header-rows: 1

    * - 設定値
      - 説明
    * - 0 
      - 境界条件を設定する **デフォルト値**
    * - 1
      - ``GEOMETRY`` =1のときXY面に， ``GEOMETRY`` =2のときRZ面にBn=0面を設定しない。 :paramdef:`CYCLIC(14)` で周期境界を指定する場合に使用。

===================
PITCH
===================
.. paramdef:: PITCH(12)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 5]

:型: 実数 (E)
:説明: ``GEOMETRY`` =1のとき（1層積み上げメッシュ），0以外の値(m)を入力するとヘリカルメッシュの捻りピッチ(m)としてメッシュに捻り変形を加える。 ``PITCH`` >0:右ねじ方向，<0:左ねじ方向。
:デフォルト値: 0

.. note:: 
    改訂履歴

    :ref:`Release 12.0.3 <rls12_0_3>`
    
    二次元解析でヘリカルメッシュの設定オプションを追加


--------------
**局所座標系**
--------------

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    :種類: 固定パラメータセット  
    :行数: 1  
    :パラメータ数: 2

    :種類: 追加パラメータセット  
    :行数: 3*NO_COORDINATES  
    :パラメータ数: 5,3,3

===================
**COORDINATE**
===================
.. paramdef:: COORDINATE(12)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 1]

:型: 文字列 (S)
:説明: ``COORDINATE`` を指定。


.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. paramdef:: NO_COORDINATES(12)

    **NO_COORDINATES**
    
    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 2]
        Type=I

    定義する局所座標系の数。全体座標系は含めない。
    以下，追加パラメータセット1をこの数だけ繰り返す。

======================
**追加データ**
======================
.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    :種類: 追加パラメータセット  
    :行数: 3*NO_COORDINATES  
    :パラメータ数: 5,3,3

~~~~~~~~~~~~~~~~~~~
**COORD_ID**
~~~~~~~~~~~~~~~~~~~
.. paramdef:: COORD_ID(12)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 1]

:型: 整数 (I)
:値: >= 1
:説明: 局所座標系の識別番号。

.. caution:: 
    識別番号 **0** は全体座標系を示し，入力の必要はない。

~~~~~~~~~~~~~~~~~~~
**TYPE**
~~~~~~~~~~~~~~~~~~~
.. paramdef:: TYPE(12)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 2]

.. list-table:: 局所座標系の種類
    :header-rows: 1

    * - 設定値
      - 説明
    * - 1
      - 直交（デカルト）座標系。(x,y,z)を局所座標とする。
    * - 2
      - 円筒座標系。(r, :math:`\theta` ,z)を局所座標とする。

~~~~~~~~~~~~~~~~~~~
**XYZ0**
~~~~~~~~~~~~~~~~~~~
.. paramdef:: XYZ0(13)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [2, 3]～[2, 5]


:型: 実数 (E)
:説明: 局所座標系の原点の全体座標における座標X0,Y0,Z0の成分。配列で指定する。

~~~~~~~~~~~~~~~~~~~~~~~~
**EX_XYZ**
~~~~~~~~~~~~~~~~~~~~~~~~
.. paramdef:: EX_XYZ(13)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [3, 1]～[3, 3]

:型: 実数 (E)
:説明: 局所座標系のx方向単位ベクトル :math:`e_x` の全体座標に対する成分。配列で指定する。
    :math:`|e_x|=1` とすること。


~~~~~~~~~~~~~~~~~~~~~~~~
**EZ_XYZ**
~~~~~~~~~~~~~~~~~~~~~~~~
.. paramdef:: EZ_XYZ(13)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション
    
    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [4, 1]～[4, 3]

:型: 実数 (E)
:説明: 局所座標系のz方向単位ベクトル :math:`e_z` の全体座標に対する成分。配列で指定する。

    円筒座標系( ``TYPE`` =2)はｚ軸を軸とし，角度はx軸をゼロとする。

    :math:`|e_z|=1`. :math:`e_x  \cdot e_y =1` とすること。


.. figure:: figs/localCoordinate.png
    :width: 200
    :align: center
    :name: localCoordinate

    図　局所座標系の例