.. index:: contents, directive; contents

==================
III 入力設定
==================

.. contents:: 目次
    :depth: 2

本章では，EMSolution実行にあたって必要とされる入力ファイルinputのデータ入力方法を示します（各入力データのことをパラメータとも呼びます）。inputファイルは，物理的な観点から解析モデルを記述するための全ての情報（メッシュデータを除く）と，解析内容に関するユーザの選択を含むもので，EMSolutionを用いた解析の”制御ファイル”ということができます。すなわち，inputファイルは節点，要素データ以外の全ての入力データを含みます。また，初期実行，リスタート実行において，一部を除きデータは共通です。

本資料では，以下のように表します。

- ファイル名： `post_geom`
- 設定項目：
    :paramdef:`PRE_PROCESSING(1)` (リンクあり。他のページに説明がある項目)

    ``PRE_PROCESSING`` (リンクなし。表示ページに説明がある項目)
- モジュール名： *<deform module>*

設定項目でリンクがあるものは，表示しているドキュメント外の項目にリンクしています。リンクがないものは，表示しているドキュメント内の項目にリンクしています。

-------------------------------
*input* テキストフォーマット
-------------------------------

*input* ファイルの一般的な形式は次の通りです。 

従来のテキストフォーマットについての説明は，基本的に次の「折りたたみセクション」内に記載ています。表示する際は， **inputテキストフォーマットの折りたたみセクション** をクリックしてください。折りたたみセクションを開くと，テキストフォーマットついての説明が表示されます。

.. collapsible:: 
   :title: inputテキストフォーマットの折りたたみセクション

    1. 第一カラムが *（半角アスタリスク）で始まる行はコメント行を表し，実質的な意味を持ちません。行の途中の * はコメントとして認識されません。
    2. 入力データには文字列タイプ，実数タイプ，整数タイプの3つのタイプがあります。各行におけるデータの入力順序は決められており（本章でその詳細を述べます），それぞれのデータはブランクで区切り，入力します。この順序さえ守られていれば，各データの行内での位置は自由です。ブランクには半角スペースまたはタブを使用してください。全角スペースはブランクにはなりません。
    3. 第1カラムの整数0および実数0.0のデータはブランクで置き換えてはいけません。第1カラム以降で使用しない項目は省略可能です。省略した場合にはゼロと判断します。
    4. 実行制御や入出力オプション等において，特に断らない限り **0はoff（実行しない），1はon（実行する）** を表します。
    5. 解析条件によって使用されない設定項目でも、本書で省略可能と明記していない限り、値を入力してください。


    以下の説明において，

        :整数タイプ: “I”
        :実数タイプ: “E”
        :文字列タイプ: “S”
        
    で表現します。複数個のデータはType欄において *データ個数*で表します。一部タイトルカード形式になっており，その場合には，先頭に文字列（大文字，小文字どちらでも良い）をおきます。  

    - タイトルカードの例
    .. code-block:: text

        * PHICOIL *SERIES_NO * NO_PARTS * IN_ROTOR *  
        PHICOIL      111        1        0


    また，以下の説明における変数名のカッコ()内の数字は，データ番号（Ⅲ章内の項目番号）です。

    - 例：TRANSIENT(2)：Ⅲ章2項の「解析の種類」の中の入力データであることを意味します

    各項目における入力データは必ずしも1行のデータではありません（下は1項の入力データ）。各入力データには変数名（ ``PRE_PROCESSING`` 等）があり，下のようにコメント行に変数名を記述することをすすめますが，必ずしも変数名を記述する必要はありません。

    .. code-block:: text

        * PRE_PROCESSING * MAKE_SYSTEM_MATRICES *
            1                   1
        * SOLVE_EQUATION * POST_PROCESSING *
            1                 1


    各項目の説明ページの冒頭に入力データ一式を示し，各変数に対応するデータ部に変数の型を示します。

    .. code-block:: text

        * PHICOIL * SERIES_NO * NO_PARTS * IN_ROTOR * 
            S           I           I          I  


    タイトルカード形式の場合は変数名が文字列型（S型）入力データとなります。  

    .. code-block:: text

        * PHICOIL  *SERIES_NO * NO_PARTS * IN_ROTOR *
        PHICOIL         1          1            0

    
    **各入力データ**
    

    各入力データは，複数のパラメータからなるパラメータセットで構成され，パラメータセットには **固定パラメータセット** と **追加パラメータセット** があります。固定パラメータは必ず必要なパラメータセットで，追加パラメータセットは固定パラメータ内のパラメータ設定によって追加されるパラメータセットです。また **準固定パラメータセット** は，条件に応じていずれかを必要としているパラメータセットです。
    このように，入力データおよびパラメータセットは原則入力する順番が決まっていて，決まった位置に値を定義することで機能しますが，ソース要素は ``COIL(17.1)`` や ``ELMCUR(17.2)`` 等のタイトルカードを使ってパラメータセット自体を定義し，任意の順番に入力できるようになっています。このソース要素内のパラメータセットを **タイトルカードパラメータセット** あるいは **TCパラメータセット** と呼びます。なお，タイトルカード型であってもTCパラメータセットとは限らず，たとえば ``SOURCE/END(17)`` は固定パラメータセット， ``MOTION(19)`` は追加パラメータセットに属します。

    - パラメータセット
    .. code-block:: text

        * PRE_PROCESSING * MAKE_SYSTEM_MATRICES *
                1           1
        * SOLVE_EQUATION * POST_PROCESSING *
                1           1

    - パラメータは上のパラメータセットの中の ``PRE_PROCESSING`` ， ``MAKE_SYSTEM_MATRICES`` など

    
    **入力データ説明**
    

    各入力データリストごとに入力フォーマットとパラメータの詳細説明を記載しています。

    - 入力フォーマット
    .. code-block:: text

        * PRE_PROCESSING * MAKE_SYSTEM_MATRICES *
                1           1
        * SOLVE_EQUATION * POST_PROCESSING *
                1           1


    - 詳細説明
        - 下の例では ``PRE_PROCESSING`` は固定パラメータセットの1行1列目のパラメータで入力タイプは整数タイプであることを示しています。
        .. code-block:: text

            PRE_PROCESSING
            固定パラメータセット ｜[row, col] = [1, 1]　｜Type=I (0, 1)

            - =1：前処理プロセスを実行
            - =0：前処理プロセスをスキップ


    入力パラメータは，基本的に

    - I : 整数型　-1, 0, 1 など
    - E : 実数型　1.0, 5.e-7 など
    - S : 文字列型　COIL, NETWORK などの識別文字

    になります。数式での入力はできません。

-------------------------
``input.json`` フォーマット
-------------------------

2024.11以降は、従来の固定テキスト形式に加えて、より汎用的なJSON形式を使用できます。JSON形式では、テキスト形式とほぼ同じパラメータをキーと値で記述します。

{}で囲い，"キー":"値"で記述します。

.. important:: 
    JSONフォーマットは2024.11以降のバージョンでのみ使用可能です。従来のテキストフォーマットは引き続き使用できますが、JSONフォーマットを推奨します。

    従来のテキスト形式で ``EMSolution`` を実行すると、リダイレクト用の `input.json` が生成されます。このファイルを編集すると、JSON形式の入力データを作成できます。


以下のように記述されます。

.. code-block:: json
    :caption: JSON format from 2024.11

    "1_Execution_Control" :
    {
        "PRE_PROCESSING" : I,
        "MAKE_SYSTEM_MATRICES" : I,
        "SOLVE_EQUATION" : I,
        "POST_PROCESSING" : I
    },

固定テキストフォーマットと比べて，以下の利点があります。

- ``Python`` 等のプログラミング言語と相性が良い
    "キー"を使って"値"を取ってきたり，値を変更したりすることが簡単にできます。
- {}の順番は自由に変えられる。
    よく変更するものを最初に，あまり変更しないものを最後にすることもできます。
- デフォルト値は定義しなくてもよい
    デフォルト値についてはそれぞれのパラメータで示します。

~~~~~~~~~~~~~~~
入力データ説明
~~~~~~~~~~~~~~~

テキストフォーマット同様，入力パラメータは，基本的に

キー：文字列

値：整数および実数型

- 整数 (I) : -1, 0, 1 など
- 実数 (E) : 1.0, 5.e-7 など
- 文字列 (S) : **数式入力**  "4.0*sqrt(2)", "1/60" など

になります。数式は文字列として入力することができます。数式入力が可能なパラメータについては，入力データリストをご参照ください。

.. note:: 
    実行制御や入出力オプション等において，特に断らない限り， **0はoff（実行しない），1はon（実行する）** を表します。

**入力例**

.. code-block:: json
    :caption: JSON format from 2024.11

    "5_Convergence_Conditions" : 
    {
        "THETA" : "2/3",
        "THETA_NETWORK" : "1/2",
        "THETA_MOTION" : "1/2"
    },

.. caution:: 
    数式をそのまま入力すると，JSONフォーマットでのエラーになりますのでご注意ください。


----------------
入力データリスト
----------------

.. toctree::
    :maxdepth: 1

    0_Release_Number
    1_Execution_Control
    2_Analysis_Type
    3_Potential_Gauge_Conditions
    4_Shape_Function_Order_Added_Features
    5_Convergence_Conditions
    6_Gaussian_Integral_Point
    7_Initial_Conditions
    8_Calculation_Step
    8_2_Calculation_Frequency
    9_Output_Step
    10_1_Input_Files
    10_2_Output_Files
    10_3_Post_Files
    11_Print_Output
    12_Geometry
    13_Boundary_Conditions
    14_Periodic_Boundary_Conditions
    15_Block_Mesh_Generation
    16_Material_Properties
    16_1_3D_Element_Properties
    16_1_2_ES_3D_Element_Properties
    16_2_2D_Element_Properties
    17_Field_Source
    17_1_COIL
    17_2_ELMCUR
    17_3_SDEFCOIL
    17_4_PHICOIL
    17_5_DCCURR
    17_6_SUFCUR
    17_7_MAGNET
    17_8_CIRCUIT
    17_9_NETWORK
    17_10_EPOTSUF
    17_11_POTNODE
    18_Time_Function
    19_Motoin
    20_BH_Curve
    21_TempDepend_Sigma_Curve

    Appendix_1_Equation_Format
    Appendix_2_Field_Source_Summary
    calculation_formula

