:tocdepth: 1

===================================
NEWTONタグ
===================================

.. index::
	single: NETWONタグ

[|today| 更新]

| Newton-Raphson法の収束の有無，最終残差, 反復回数を表します．

NEWTONタグ
=============

| 各種下記の第2タグを用います．

.. csv-table:: NEWTONタグの第2タグ
	:header: 第2タグ, 項目
	:widths: 1, 2

	CONVERGE, 収束の有無（Boolean値） 
	RESIDUAL, 最終残差(収束判定値がBの時は最終ΔB)
	ITERATION, 反復回数


データ取得例
-------------

.. code-block:: none

	["NEWTON"]["CONVERGE"]
	["NEWTON"]["RESIDUAL"]
	["NEWTON"]["ITERATION"]

Pythonスクリプト例
------------------

| とりあえず，Newton-Raphson法による非線形反復計算が未収束となったのか判定する例．
| 変数 **js** にEMSOJsonのデータが収納されているとする．

.. code-block:: python

    #------------------------------
    #[input]
    #  js    : EMSOJson data
    #[return]
    #  True  : 収束 
    #  False : 未収束が1つ以上ある 
    #------------------------------
    def isconverge(js):

        step = js["NEWTON"]["CONVERGE"] # CONVERGEタグのデータ取得
        for isc in step:                # 各ステップのNR反復毎のデータ抽出 
            if not isc:
               return False             # 1つでも未収束の場合はFalse
        return True

非線形反復計算が未収束となった計算ステップ番号を全て取得したい例．

.. code-block:: python

    #-------------------------
    #[input]
    #  js        : EMSOJson data
    #[return]
    #  unconvs[] : 未収束のステップ番号
    #-------------------------
    def isconverge(js):

        unconvs = []                    # 未収束のステップ番号

        step = js["NEWTON"]["CONVERGE"] # CONVERGEタグのデータ取得
        for (i,jsc) in enumerate(step): # 各ステップのデータ抽出
            if not isc:
                unconvs.append(i)       # 未収束のステップ番号(i)を収納
        return unconvs 

