.. _13_Boundary_Conditions:

#####################################
**13. 境界条件**
#####################################

境界条件を設定する項目です。面定義で明示的に設定されなかった一番外側の境界面には遠方境界条件が自動的に設定されます。

---------------------
設定項目
---------------------
:paramdef:`13_Boundary_Conditions`    JSONキー：境界条件オブジェクト

:paramdef:`FAR_BOUNDARY_CONDITION(13)`    遠方境界条件の設定

:paramdef:`PHI_BOUNDARY_CONDITION(13)`    電気スカラーポテンシャルの遠方境界条件の設定

無限境界条件設定（ ``FAR_BOUNDARY_CONDITION`` = 2の時）

    :paramdef:`NO_BE_TERMS(13)`    無限境界要素展開次数

    :paramdef:`BE_CENTER(13)`    無限境界要素中心の座標(m)

:paramdef:`DISTANCE_JUDGE(13)`    節点座標がこの値よりも小さい場合，境界面にあると判断する距離(m)

:paramdef:`NO_DIRICHLET_PLANE(13)`    磁場方向が面に沿う条件を課す平面の数

:paramdef:`NO_NEUMANN_PLANE(13)`    磁場が面に垂直に入る条件を課す平面の数

:paramdef:`DIRICHLET_PLANE(13)`    JSONキー：磁場方向が面に沿う条件を課す

:paramdef:`NEUMANN_PLANE(13)`    JSONキー：磁場が面に垂直に入る条件を課す

:paramdef:`CXYZ/C / OPTION(13)`    ``DIRICHLET_PLANE`` と ``NEUMANN_PLANE`` を設定する平面方程式

:paramdef:`NO_A_0_LINE(13)`    A=0を設定するゼロとする直線の数

:paramdef:`A_0_LINE(13)`    JSONキー：A=0を設定するゼロとする直線

:paramdef:`S_XYZ  E_XYZ(13)`    A=0を指定する辺の始点，終点座標

---------------------
設定フォーマット
---------------------
.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    :種類: 固定パラメータセット1
    :行数: 1  
    :パラメータ数: 2 

    .. code-block:: text
        :caption: Text format

        * FAR_BOUNDARY_CONDITION * PHI_BOUNDARY_CONDITION *
                I                           I
    .. 

        :種類: 追加パラメータセット1
        :行数: 1  
        :パラメータ数: 4

    .. code-block:: text
        :caption: Text format

        * NO_BE_TERMS * BE_CENTER_X * BE_CENTER_Y * BE_CENTER_Z *
            I             E             E            E
    .. 
        
        :種類: 固定パラメータセット2
        :行数: 1  
        :パラメータ数: 1 

    .. code-block:: text
        :caption: Text format

        * DISTANCE_JUDGE  *
                E
    .. 

        :種類: 固定パラメータセット3
        :行数: 1  
        :パラメータ数: 1 

    .. code-block:: text
        :caption: Text format

        * NO_DIRICHELET_PLANE *
                I
    .. 

        :種類: 固定パラメータセット4
        :行数: 1  
        :パラメータ数: 1 

    .. code-block:: text
        :caption: Text format

        * NO_NEUMANN_PLANE *
                I
    .. 

        :種類: 追加パラメータセット2
        :行数: 1*NO_DIRICHELET_PLANE or 1*NO_DIRICHELET_PLANE
        :パラメータ数: 4

    .. code-block:: text
        :caption: Text format

        * CX * CY * CZ * C * OPTION *
        E    E    E   E     I

    .. 

        :種類: 固定パラメータセット5
        :行数: 1  
        :パラメータ数: 1 

    .. code-block:: text
        :caption: Text format

        * NO_A_0_LINE *
            I
    .. 

        :種類: 追加パラメータセット4
        :行数: 1*NO_A_0_LINE
        :パラメータ数: 6

    .. code-block:: text
        :caption: Text format

        * SX * SY * SZ * EX * EY * EZ *
        E    E    E    E    E    E

    .. 


    **テキストサンプル**

    1/8モデル，遠方境界： :math:`\mathbf{B}_n = 0`

    .. code-block:: text
        :caption: Text format

        * FAR_BOUNDARY_CONDITION * PHI_BOUNDARY_CONDITION *
            0
        * DISTANCE_JUDGE *
            1.e-6
        * NO_DIRICHELET_PLANE *
            2
        * CX * CY * CZ * C *
        1    0    0    0
        0    1    0    0
        * NO_NEUMANN_PLANE *
            1
        * CX * CY * CZ * C *
        0    0    1    0
        * NO_A_0_LINE *
            0


=================
JSONフォーマット
=================

.. code-block:: json
    :caption: JSON format from 2024.11

    "13_Boundary_Conditions" : 
    {
        "FAR_BOUNDARY_CONDITION" : I,
        "PHI_BOUNDARY_CONDITION" : I,
        "INFINITE_BOUNDARY_CONDITION" : 
        {
            "NO_BE_TERMS" : I,
            "BE_CENTER" : [ E, E, E ]
        },
        "DISTANCE_JUDGE" : E,
        "DIRICHLET_PLANE" : 
        {
            "CXYZ" : 
            [
                [ E, E, E, E, I ]
            ]
        },
        "NEUMANN_PLANE" : 
        {
            "CXYZ" : 
            [
                [ E, E, E, E, I ]
            ]
        },
        "A0_LINES" : [ E, E, E, E, E, E ]
    },
    
**JSONサンプル**

.. code-block:: json
    :caption: JSON format from 2024.11

    "13_Boundary_Conditions" : 
    {
        "FAR_BOUNDARY_CONDITION" : 0,
        "PHI_BOUNDARY_CONDITION" : 0,
        "DISTANCE_JUDGE" : 1.0e-06,
        "DIRICHLET_PLANE" : 
        {
            "CXYZ" : 
            [
                [ 1.0, 0.0, 0.0, 0.0, 0 ],
                [ 0.0, 1.0, 0.0, 0.0, 0 ]
            ]
        },
        "NEUMANN_PLANE" : 
        {
            "CXYZ" : 
            [
                [ 0.0, 0.0, 1.0, 0.0, 0 ]
            ]
        }
    },

---------------------
**詳細説明**
---------------------
===========================
**13_Boundary_Conditions**
===========================
.. paramdef:: 13_Boundary_Conditions
    
:JSONキー: 境界条件オブジェクト

==========================================
**FAR_BOUNDARY_CONDITION**
==========================================
.. paramdef:: FAR_BOUNDARY_CONDITION(13)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット1

        [row, col] = [1, 1]


遠方境界条件の設定。

**＜磁界解析の時＞**

.. list-table:: 遠方境界条件
    :header-rows: 1

    * - 設定値
      - 説明
    * - 0
      - 遠方境界面において， :math:`\pmb{B}_n = 0` (磁場方向が面に沿う)条件を課す。電気壁条件（ :math:`\pmb{A} \times n = 0` ）。
    * - 1
      - 遠方境界において :math:`\pmb{H}_t = 0` (磁場が面に垂直に入る)条件を課す。磁気壁条件（ :math:`\pmb{A} \times n = free` ）。
    * - 2
      - 無限境界要素条件を課す。
    * - 3
      - 遠方境界において，外部電流磁場ソース :paramdef:`COIL(17.1)` の作る :math:`\pmb{H}_t` を与えて計算する。  :paramdef:`COIL(17.1)`  は計算メッシュ領域外にあり，全領域がトータルポテンシャル領域である必要がある。

.. caution:: 
    遠方境界面がトータルポテンシャル領域にある場合はトータル磁場に対し，変形ポテンシャル領域にあるときは外部電流磁場ソースを除いた誘起磁場に対して条件が課される。

**＜静電場解析(STATIC(2)=2)の時＞**

.. list-table:: 遠方境界条件
    :header-rows: 1

    * - 設定値
      - 説明
    * - 0
      - 遠方境界において :math:`\pmb{E}_t = 0` (電場が面に垂直に入る)条件を課す。磁気壁条件（ :math:`\phi = 0` ）。
    * - 1
      - 遠方境界面において， :math:`\pmb{D}_n = 0` (電場が面に平行)条件を課す。電気壁条件（ :math:`\phi = free` ）。

**＜定常電流場解析(STATIC(2)=3)の時＞**

.. list-table:: 遠方境界条件
    :header-rows: 1

    * - 設定値
      - 説明
    * - 0
      - 遠方境界において :math:`\pmb{E}_t = 0` (電場が面に垂直に入る)条件を課す。磁気壁条件（ :math:`\phi = 0` ）。
    * - 1
      - 遠方境界面において， :math:`\pmb{J}_n = 0` (電流が面に平行)条件を課す。電気壁条件（ :math:`\phi = free` ）。


**＜低周波磁場変動下の誘導電流解析(TRANSIENT(2)=1， POTENTIAL(3)=4)の時＞**


.. list-table:: 遠方境界条件
    :header-rows: 1

    * - 設定値
      - 説明
    * - 1
      - 遠方境界面において， :math:`\pmb{J}_t = 0` (電流が面に垂直)条件を課す。


.. note:: 
    改訂履歴

    :ref:`Release 10.1.2 <rls10_1_2>`

    拡張 低周波磁場変動下の誘導電流解析機能を追加。

==========================================
PHI_BOUNDARY_CONDITION
==========================================
.. paramdef:: PHI_BOUNDARY_CONDITION(13)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット

        [row, col] = [2, 1]

.. list-table:: 電気スカラーポテンシャルの遠方境界条件
    :header-rows: 1

    * - 設定値
      - 説明
    * - 0
      - 遠方境界面において，電位ゼロの条件を課す（ :math:`\phi = 0` ）。**デフォルト値**
    * - 1
      - 遠方境界において :math:`\pmb{D}_n = 0` (電場が面に平行)条件を課す（ :math:`\phi = free` ）。

DarwinモデルおよびFull-wave解析時に有効。


==================================================
無限境界条件設定（ ``FAR_BOUNDARY_CONDITION`` = 2の時）
==================================================

~~~~~~~~~~~~~~
NO_BE_TERMS
~~~~~~~~~~~~~~
.. paramdef:: NO_BE_TERMS(13)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 準固定パラメータセット1

        [row, col] = [1, 1]

:型: 整数 (I)
:説明: 無限境界要素展開次数 >=1。 3程度が適当

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**BE_CENTER**
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. paramdef:: BE_CENTER(13)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 準固定パラメータセット1

        [row, col] = [1, 2]~[1, 4]

:型: 実数 (E)
:単位: m
:説明: 無限境界要素中心の座標（x,y,z）を指定する。

========================
**DISTANCE_JUDGE**
========================
.. paramdef:: DISTANCE_JUDGE(13)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット2

        [row, col] = [1, 1]

:型: 実数 (E)
:値: > 0
:単位: m
:説明: 節点座標がこの値よりも小さい場合，境界面（二次元メッシュの場合境界線上）にあると判断する距離。最小節点間距離よりも小さくすること。最小節点間距離の1/10程度が適当。

.. note:: 
    影響が出やすいところとして，以下が挙げられるので注意されたい。

    - 回転周期境界条件を設定する場合の周期境界面の一致
    - スライド運動面の抽出時（同心円状にあるかの判断）


.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. paramdef:: NO_DIRICHLET_PLANE(13)
    
    **NO_DIRICHLET_PLANE**
    
    .. code-block:: none
        :caption: 固定パラメータセット3

        [row, col] = [1, 1]
        Type=I

=============================================
**DIRICHLET_PLANE**
=============================================
.. paramdef:: DIRICHLET_PLANE(13)

**＜磁界解析の時＞**

- :math:`\pmb{B}_n = 0` (磁場方向が面に沿う)条件を課す平面の数。

境界条件面 ``CX / CY / CZ / C / OPTION`` を ``NO_DIRICHELET_PLANE`` の数だけ指定する。

.. note:: 
    （ヒント）

    例えば上下対称・上下で逆方向に電流が流れるような場合のZ=0面。

**＜静電界解析(STATIC(2)=2,3)の時＞**

電位ゼロの条件（:math:`\phi = 0`）を課す平面の数。

**デフォルト値** = 0

``JSON`` フォーマットでは，次の値は配列 [] で入力する。


.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション
    
    .. paramdef:: NO_NEUMANN_PLANE(13)
    
    **NO_NEUMANN_PLANE**
    
    .. code-block:: none
        :caption: 固定パラメータセット4

        [row, col] = [1, 1]
        Type=I

============================================
**NEUMANN_PLANE**
============================================
.. paramdef:: NEUMANN_PLANE(13)

**＜磁界解析の時＞**

- :math:`\pmb{H}_t = 0` (磁場が面に垂直に入る)条件を課す平面の数。

境界条件面 ``CX / CY / CZ / C / OPTION`` を ``NO_NEUMANN_PLANE`` の数だけ指定する。

.. note:: 
    （ヒント）

    - 例えば上下対称で上下で同方向に電流が流れるような場合のZ=0面。
    - :math:`\pmb{H}_t = 0` の面（ ``FAR_BOUNDARY_CONDITION`` =1としたときの遠方境界および本パラメータで指定した面）においては， :math:`\pmb{A}_t` に対して自由境界条件(ノイマン条件)を課す。

**＜静電場解析(STATIC(2)=2)の時＞**

- :math:`\pmb{D}_n = 0` (電場が面に平行)条件を課す平面数の条件を課す平面数。

**＜静電場解析(STATIC(2)=3)の時＞**

- :math:`\pmb{J}_n = 0` (電流が面に平行)条件を課す平面数の条件を課す平面数。

**デフォルト値** = 0

``JSON`` フォーマットでは，次の値は配列 [] で入力する。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**CXYZ/C / OPTION**
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. paramdef:: CXYZ/C / OPTION(13)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    :種類: 追加パラメータセット  
    :行数: 1*NO_DIRICHELET_PLANE or 1*NO_NEUMANN_PLANE  
    :パラメータ数: 5

    .. code-block:: none
        :caption: 追加パラメータセット

        [row, col] = [1, 1]


``NO_DIRICHELET_PLANE`` と ``NO_NEUMANN_PLANE`` の数だけ，平面を方程式で指定する。

:型: 4実数 (E), 1整数 (I) 配列
:単位: m
:数: 4E, 1I
:説明: 平面の方程式を指定する。平面の方程式は次のように表される。

平面の方程式

.. math::
    
    C_x x + C_y y + C_z z + C = 0

``OPTION`` には，以下に示す設定境界面において課す条件を指定する。

.. list-table:: OPTION
    :header-rows: 1

    * - 設定値
      - 説明
    * - 0
      - 設定境界面において，電位ゼロの条件を課す（ :math:`\phi = 0` ）。
    * - 1
      - 設定境界面において :math:`\pmb{D}_n = 0` (電場が面に平行)条件を課す（ :math:`\phi = free` ）。


DarwinモデルおよびFull-wave解析時に有効。

.. note:: 
    例えば，
    
    - x=0面： [1.0, 0.0, 0.0, 0.0, 0], x=1.0面： [1.0, 0.0, 0.0, 1.0, 0]

====================
NO_A_0_LINE
====================
.. paramdef:: NO_A_0_LINE(13)
.. paramdef:: A_0_LINE(13)

.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: none
        :caption: 固定パラメータセット5

        [row, col] = [1, 1]

:型: 整数 (I)
:説明: 定義された直線上（延長線上も含む）にある辺のA（磁気ベクトルポテンシャル）をゼロとする直線の数。
:デフォルト値: 0

``JSON`` フォーマットでは，次の値は配列 [] で入力する。

.. note:: 
    （ヒント）
    :math:`\pmb{A}` に強制境界条件(:math:`\pmb{B}_n = 0`, i.e. :math:`\pmb{A} \times n = 0`)がどこにも課されておらず，:math:`\pmb{A} = 0` の基準が無いときに課す。 対称面はないが，回転対称性があり中心軸を持ち，遠方境界条件 ``FAR_BOUNDARY_CONDITION`` =1とした場合に中心軸に対し使用。
    通常必要がない（ ``NO_A_0_LINE`` =0）。

~~~~~~~~~~~~~~~~~~~~~
S_XYZ  E_XYZ 
~~~~~~~~~~~~~~~~~~~~~
.. paramdef:: S_XYZ E_XYZ(13)
.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    :種類: 追加パラメータセット  
    :行数: 1*NO_A_0_LINE  
    :パラメータ数: 6

    .. code-block:: none
        :caption: 固定パラメータセット5

        [row, col] = [1, 1]
        
    ``NO_A_0_LINE`` 回繰り返す。

:型: 実数配列 (E)
:単位: m
:数: 6
:説明: A=0を指定する辺の始点，終点座標。

- ``S_XYZ`` ：直線の始点座標。
- ``E_XYZ`` ：直線の終点座標。

.. note:: 
    （ヒント）
    例えばz軸は，[SX,SY,SZ, EX,EY,EZ] = [0,0,0, 0,0,1.0]
