.. _4_Shape_Function_Order_Added_Features:

##################################
**4. 形状関数の次数と追加機能**
##################################

有限要素法の形状関数の次数や追加機能の設定をします。

---------------------
設定項目
---------------------

:paramdef:`4_Shape_Function_Order_Added_Features`    JSONキー：形状関数の次数と追加機能オブジェクト

:paramdef:`NODE_ORDER(4)`    節点形状関数のオーダ

:paramdef:`EDGE_ORDER(4)`    辺形状関数のオーダ

:paramdef:`METRIC_MOD(4)`    軸対称二次元計算(GEOMETRY(2)=2)時の中心軸付近の磁場不具合を無くす機能

:paramdef:`QUAD_TRI(4)`    四角形要素面(六面体)と三角形要素面(四面体)を接合する

:paramdef:`CALC_IND(4)`    :paramdef:`COIL(17.1)` のインダクタンスを内部で計算する

:paramdef:`THIN_ELEMENT(4)`    扁平・扁長要素の収束性の改善を行う機能

:paramdef:`PARALLEL_NO(4)`    並列計算数の設定

:paramdef:`PARALLEL_OPTION(4)`    要素行列作成の並列化オプション

---------------------
設定フォーマット
---------------------
.. collapsible:: 
   :title: テキストフォーマットの折りたたみセクション

      :種類: 固定パラメータセット
      :行数: 1
      :パラメータ数: 8

    .. code-block:: text
        :caption: Text format

        * NODE_ORDER * EDGE_ORDER * METRIC_MOD * QUAD_TRI * CALC_IND * THIN_ELEMENT * PARALLEL_NO * PARALLEL_OPTION *
                  I           I          I            I          I            I              I               I

======================
JSONフォーマット
======================

.. code-block:: json
    :caption: JSON format from 2024.11

    "4_Shape_Function_Order_Added_Features": {
      "NODE_ORDER": I,
      "EDGE_ORDER": I,
      "METRIC_MOD": I,
      "QUAD_TRI": I,
      "CALC_IND": I,
      "THIN_ELEM": I,
      "PARALLEL_NO": I,
      "PARALLEL_OPTION": I
    },

.. important:: 
    :ref:`Release 2024.11 <rls2024_11>`

    ``JSON`` フォーマットでは，これらのパラメータは定義しなくてもデフォルト値を使用します。 デフォルト値は詳細説明をご覧ください。

========================
サンプル - 2並列計算時
========================

2並列計算時の設定例

.. collapsible:: 
   :title: テキストフォーマットの折りたたみセクション
   
    .. code-block:: text
        :caption: Text format

        * NODE_ORDER * EDGE_ORDER * METRIC_MOD * QUAD_TRI * CALC_IND * THIN_ELEMENT * PARALLEL_NO * PARALLEL_OPTION *
                  1           1          0            0          0            0              2               0

.. code-block:: json
    :caption: JSON format from 2024.11

    "4_Shape_Function_Order_Added_Features": {
      "NODE_ORDER": 1,
      "EDGE_ORDER": 1,
      "METRIC_MOD": 0,
      "QUAD_TRI": 0,
      "CALC_IND": 0,
      "THIN_ELEM": 0,
      "PARALLEL_NO": 2,
      "PARALLEL_OPTION": 0
    },


---------------
**詳細説明**
---------------
==========================
**4_Shape_Function_Order_Added_Features**
============================
.. paramdef:: 4_Shape_Function_Order_Added_Features

:JSONキー: 形状関数の次数と追加機能オブジェクト

================
NODE_ORDER
================
.. paramdef:: NODE_ORDER(4)

.. collapsible:: 
   :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 1]


.. list-table:: 節点形状関数のオーダ。
   :header-rows: 1

   * - 設定値
     - 説明
   * - 1
     - 一次要素を使用する。 **デフォルト値**
   * - 2
     - メッシュデータで導体部の一次要素は節点二次要素に変換される。辺形状関数も二次要素を使用する場合は入力メッシュデータが二次要素である必要がある。

.. note:: 
  デフォルト値で十分な精度が出る。高次にすることで解析精度はわずかに向上するが、計算コストも増加する。

================
EDGE_ORDER
================
.. paramdef:: EDGE_ORDER(4)

.. collapsible:: 
   :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 2]


.. list-table:: 辺形状関数のオーダ。
   :header-rows: 1

   * - 設定値
     - 説明
   * - 1
     - 一次要素を使用する。 **デフォルト値**
   * - 2
     - 六面体，四面体に対して辺二次要素が使われる。この時， :paramdef:`NODE_ORDER(4)` =2である必要があり、メッシュデータ中の要素は二次要素である必要がある。一次要素との混在は許されない。

.. note:: 
  デフォルト値で十分な精度が出る。高次にすることで解析精度がわずかに向上するが、計算コストも増加する。

.. warning::
   ギャップ要素等面要素やスライド運動は二次要素に対応していないため、それらが混在して使われるときは、 :paramdef:`NODE_ORDER(4)` = :paramdef:`EDGE_ORDER(4)` =1 とすること。二次元メッシュの拡張を行う場合( :paramdef:`GEOMETRY(12)` ≠0** )には、二次要素を用いることはできない。節点二次要素は四面体、三角柱、ピラミッド要素の渦電流解析で精度を向上する。

================
METRIC_MOD
================
.. paramdef:: METRIC_MOD(4)

.. collapsible:: 
   :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 3]

軸対称二次元計算( :paramdef:`GEOMETRY(12)` =2)時の中心軸付近の磁場不具合を無くす機能。本パラメータは特定の条件以外ではユーザ設定に関わらず内部でデフォルト値に設定されるので通常は0でよい。軸対称二次元解析時はデフォルトで 1 とする。ただし、軸対称二次元解析時に -1 とすると  ``METRIC_MOD`` なしで計算する（確認用）。軸対称二次元計算以外ではデフォルトで 0 とする。

.. list-table:: 軸対称解析の中心軸付近の磁場不具合処理
   :header-rows: 1

   * - 設定値
     - 説明
   * - 0
     - ``METRIC_MOD`` 機能を適用しない。 **デフォルト値**
   * - 1
     - ``METRIC_MOD`` 機能を適用する。 **二次元軸対象解析でのデフォルト値**
   * - -1
     - 軸対称二次元解析時に ``METRIC_MOD`` なしで計算する（確認用)

.. note::
    改訂履歴

    :ref:`Release 11.3.1 <rls11_3_1>` 
    
    =-1と入力しなければ，内部で自動設定するように変更

================
**QUAD_TRI**
================
.. paramdef:: QUAD_TRI(4)

.. collapsible:: 
   :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 4]

四角形要素面（六面体）と三角形要素面（四面体）を接合する機能。ただし、接合面で節点は共有され、四角形面が三角形面で二分される必要がある。

.. list-table:: 六面体と四面体の結合
   :header-rows: 1

   * - 設定値
     - 説明
   * - 1
     - 四角形要素面と三角形要素面を接合する
   * - 0
     - 通常の整合メッシュでは四角形要素面と三角形要素面の接合面がないので0とする。四角形要素面と三角形要素面の接合面がある場合に0とすると、接合面は境界面と判断される。 **デフォルト値**

.. caution:: 
    四角形要素面と三角形要素面の接合面がない場合でも接合面をサーチするための計算時間を消費するため，入力メッシュに四面体と六面体が混合していない場合は0とするのが望ましい。

================
**CALC_IND**
================
.. paramdef:: CALC_IND(4)

.. collapsible:: 
   :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 5]

:paramdef:`COIL(17.1)` のインダクタンスを内部で計算する。 **17. COIL 積分要素** :paramdef:`MESH(10.3)` の入力が必要。

.. list-table:: COILインダクタンス計算
   :header-rows: 1

   * - 設定値
     - 説明
   * - 0
     - 何も行わない。 **デフォルト値**
   * - 1
     - COILのインダクタンスを内部で計算する

.. warning:: 
    従来、 :paramdef:`CIRCUIT(17.8)` あるいは :paramdef:`NETWORK(17.9)` で入力していた内部インダクタンスを外部インダクタンスとして定義していた場合はゼロとすること。

================
**THIN_ELEMENT**
================
.. paramdef:: THIN_ELEMENT(4)

.. collapsible:: 
   :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 6]

扁平・扁長要素の収束性の改善を行う。 **16. THIN_ELEMENT適用要素特性** :paramdef:`THIN_CRITERION(16)` に入力データが必要。特に空気領域に扁平・扁長な要素がある場合に有効。使用メモリがやや増える。

.. collapsible:: 
   :title: テキストフォーマットの折りたたみセクション

  .. list-table:: 扁平・扁長要素の収束性の改善
    :header-rows: 1

    * - 設定値
      - 説明
    * - 0
      - 何も行わない。 **デフォルト値**
    * - 1
      - 扁平・扁長要素の収束性の改善を行う

.. tip::
   :paramdef:`THIN_CRITERION(16)` 要素内で磁束密度が大きく変わらない領域に有効であるため，表皮効果が表れる導体や磁性体の表面では効果は小さい。

================
**PARALLEL_NO**
================
.. paramdef:: PARALLEL_NO(4)

.. collapsible:: 
   :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 7]

並列数（デフォルトは1）

.. list-table:: 並列数の指定
   :header-rows: 1

   * - 設定値
     - 説明
   * - 1
     - 並列化を行わない（従来通りの逐次処理計算）。 **デフォルト値**
   * - >1
     - 並列数で並列計算を行う。ただし、計算機の最大並列数（1 ノードあたりの搭載コア数）を超える場合は、最大並列数と置き換えて計算を実行する。

.. caution:: 
   OpenMP による並列計算であるため、異なるノード間、別筺体間の計算機を使用した並列計算を行うことはできません。
   本機能を使用するには *<PARALLEL module>* が必要です。

====================
**PARALLEL_OPTION**
====================
.. paramdef:: PARALLEL_OPTION(4)
  
.. collapsible:: 
   :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 8]

要素行列作成の並列化オプション（デフォルトは 0 ）。 ``PARALLEL_NO`` >1 のとき有効。

.. list-table:: 要素行列作成の並列化オプション
    :header-rows: 1

    * - 設定値
      - 説明
    * - 0
      - 要素係数行列作成の並列化を行う。ただし，並列化用に大きな配列を必要とする。 **デフォルト値**
    * - 1
      - 要素係数行列作成の並列化を行わない。並列化用に増加する配列を極力抑制することができる。
    
*<PARALLEL module>* が必要です。

.. tip::
    ``PARALLE_NO`` >1 とすると， *check* ファイルに確認メッセージを出力する。

    例：4並列の場合

    .. collapsible:: 
      :title: テキストフォーマットの折りたたみセクション

        .. code-block:: text
            :caption: Text format

            * NODE_ORDER * EDGE_ORDER * METRIC_MOD * QUAD_TRI * CALC_IND * THIN_ELEMENT * PARALLEL_NO * PARALLEL_OPTION *
                      1           1          0            0          0            0              4               0

    .. code-block:: text
      :caption: Text format

      **** Number of parallel threads: 4 ****
      priority : speed
