.. _15_Block_Mesh_Generation:

##################################
15. 直方体メッシュ自動生成
##################################

本データは :paramdef:`INPUT_MESH_FILE(10.1)` =0の場合必要であり，直方体に対して自動メッシュ生成を行うためのものです。直方体解析領域の中に直方体の導体あるいは磁性体があるものとします。導体（磁性体）領域および周りの空気領域の物性番号はそれぞれ，1，2と割り当てられます。

本機能は主に開発者のデバッグ用として使用されるため，詳細な説明は省きます。

---------------------
設定項目
---------------------
:paramdef:`15_Block_Mesh_Generation`    JSONキー：直方体メッシュ自動生成オブジェクト

---------------------
設定フォーマット
---------------------
.. collapsible:: 
    :title: テキストフォーマットの折りたたみセクション

    .. code-block:: text
        :caption: Text format

        * AUTOMATIC MESH GENERATOR *
        * ELEMENT_TYPE *
            0
        * X_AIR_LOWER * X_MAT_LOWER * X_MAT_UPPER * X_AIR_UPPER *
                0              0           0.05           0.25
        * Y_AIR_LOWER * Y_MAT_LOWER * Y_MAT_UPPER * Y_AIR_UPPER *
                0              0           0.05           0.25
        * Z_AIR_LOWER * Z_MAT_LOWER * Z_MAT_UPPER * Z_AIR_UPPER *
                0              0            0.1           0.25
        * XDIV_AIR_LOWER * XDIV_MAT * XDIV_AIR_UPPER *
            0     5   -10 
        * YDIV_AIR_LOWER * YDIV_MAT * YDIV_AIR_UPPER *
            0     5   -10 
        * ZDIV_AIR_LOWER * ZDIV_MAT * ZDIV_AIR_UPPER *
            0    10    -5 
        * DIVISION RATIO *
            0.01           0.01           0.01           0.01           0.01           0.01           0.02           0.03           0.04           0.05 
        * DIVISION RATIO *
            0.01           0.01           0.01           0.01           0.01           0.01           0.02           0.03           0.04           0.05 
        * DIVISION RATIO *
            0.01           0.02           0.03           0.04           0.05 


======================
JSONフォーマット
======================

.. code-block:: json
    :caption: JSON format from 2024.11

    "15_Block_Mesh_Generation" : 
    {
        "ELEMENT_TYPE" : 0,
        "DIVISION_TYPE" : 0,
        "RATIO_TYPE" : 0,
        "HYBRID" : 0,
        "X_AIR_LOWER" : 0.0,
        "X_MAT_LOWER" : 0.0,
        "X_MAT_UPPER" : 0.05,
        "X_AIR_UPPER" : 0.25,
        "Y_AIR_LOWER" : 0.0,
        "Y_MAT_LOWER" : 0.0,
        "Y_MAT_UPPER" : 0.05,
        "Y_AIR_UPPER" : 0.25,
        "Z_AIR_LOWER" : 0.0,
        "Z_MAT_LOWER" : 0.0,
        "Z_MAT_UPPER" : 0.1,
        "Z_AIR_UPPER" : 0.25,
        "XDIV_AIR_LOWER" : 0,
        "XDIV_MAT" : 5,
        "XDIV_AIR_UPPER" : -10,
        "YDIV_AIR_LOWER" : 0,
        "YDIV_MAT" : 5,
        "YDIV_AIR_UPPER" : -10,
        "ZDIV_AIR_LOWER" : 0,
        "ZDIV_MAT" : 10,
        "ZDIV_AIR_UPPER" : -5,
        "XDIV_AIR_UPPER_DIVISION" : [ 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.02, 0.03, 0.04, 0.05 ],
        "YDIV_AIR_UPPER_DIVISION" : [ 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.02, 0.03, 0.04, 0.05 ],
        "ZDIV_AIR_UPPER_DIVISION" : [ 0.01, 0.02, 0.03, 0.04, 0.05 ]
    },

--------------
**簡易説明**
--------------

===========================
**15_Block_Mesh_Generation**
===========================
.. paramdef:: 15_Block_Mesh_Generation

:JSONキー: 直方体メッシュ自動生成オブジェクト


.. figure:: figs/block_mesh.png
    :align: center
    :name: block_mesh

``ELEMENT_TYPE`` : 要素タイプの指定

要素タイプ
- =0：6面体要素。
- =1：3角柱要素。
- =2：4面体要素。
要素次数は :paramdef:`NODE_ORDER(4)` , :paramdef:`EDGE_ORDER(4)` による。

``ELEMENT_TYPE`` =2の時 :paramdef:`NODE_ORDER(4)` =1， :paramdef:`EDGE_ORDER(4)` =1とすること。

``DIVISION_TYPE`` : 分割数の指定

``ELEMENT_TYPE`` =2(4面体要素)の時，有効。
- =0：分割A
- =1：分割B
＊四面体要素による六面体の分割方法が幾つかある

.. figure:: figs/division_typeAB.png
    :align: center
    :name: division_types

座標設定：YZ方向も同様

- ``X_AIR_LOWER`` : X方向の空気領域の下限座標
- ``X_MAT_LOWER`` : X方向の導体（磁性体）領域の下限座標
- ``X_MAT_UPPER`` : X方向の導体（磁性体）領域の上限座標
- ``X_AIR_UPPER`` : X方向の空気領域の上限座標

分割数設定：YZ方向も同様

- ``XDIV_AIR_LOWER`` : X方向の空気領域の下限の分割数
- ``XDIV_MAT`` : X方向の導体（磁性体）領域の分割数
- ``XDIV_AIR_UPPER`` : X方向の空気領域の上限の分割数

``XDIV_AIR_LOWER`` などを負値で設定した場合，不等分割入力をする（テキストフォーマットでは ``RATIO`` ）。

- ``XDIV_AIR_UPPER_DIVISION`` : 分割数分座標値を入力。最初の値は ``X_MAT_UPPER`` で，最後の値は ``X_AIR_UPPER`` と一致すること
