チェックと補正の作成 / 編集

新規のチェックと補正を作成し、また、デフォルトのチェックと補正を編集します。

HyperWorksはModel Checkerにおいて、デフォルトのチェックと補正をサポートします。CheckおよびCorrectionエンティティを用いて、新しいチェックや補正を作成することができます。

新規Tclチェックの作成

Model Checkerで新規Tclのチェックを作成します。

概要

Tclの各チェックには、チェックで検証されるアルゴリズムを含む一意の Tclプロシージャが関連付けられています。Tclプロシージャは、あらかじめ定義された以下の名前空間の中に存在しなければなりません。
  • LS-DYNA固有のプロシージャ用 HM::ModelCheck::LsDyna
  • LS-DYNA固有のプロシージャ用 HM::ModelCheck::Nastran
  • LS-DYNA固有のプロシージャ用 HM::ModelCheck::OptiStruct
  • LS-DYNA固有のプロシージャ用 HM::ModelCheck::RadiossBlock
  • LS-DYNA固有のプロシージャ用 HM::ModelCheck::Abaqus
  • LS-DYNA固有のプロシージャ用 HM::ModelCheck::Ansys
  • LS-DYNA固有のプロシージャ用 HM::ModelCheck::Permas

キーポイント

Tclのチェックを作成する際には、以下の点に留意してください。
  1. チェック名は一意である必要があります。
  2. Config は“TclCheck”に設定する必要があります。
  3. エンティティタイプは、チェックが実行されるエンティティのタイプと一致している必要があります。
  4. レベルはチェックと関連付ける必要があります。
  5. 関数名には、Tclプロシージャの名前全体を名前空間とともに含める必要があります。
  6. Tcl ファイル名は、checks設定ファイルからの相対パス、または Tclプロシージャを含むTclファイルの絶対パスのいずれかを指定します。


    図 1.

オプションメソッド

環境変数を使って、カスタム Tcl ファイルのパスを設定する方法もあります。

環境変数HM_MODELCHECKER_TCLPATH_$profile_nameは、ソルバーのユーザープロファイルごとに指定する必要があります。この設定をした場合、"Tcl File"フィールドのTclファイル名のみが必要となります。

デフォルトでは、この環境変数はチェックの設定ファイルのパスを指しています。Tclファイルとコンフィグファイルが同じ場所にある場合は、パスの指定は必要ありません。"Tcl file"欄はファイル名のみ必須です。

Tclプロシージャ内で、以下のようにチェックの失敗したエンティティリストを更新します。
*createmark mats 1 $failed_id_list
hm_setmodelcheckresultentids $checkDisplayname 1

失敗したエンティティが見つからない場合、上記と同じ2行を使用してチェック上の空のリストを更新するのが良い方法です。

Tclの手順例

以下は、Tclの手順例です。
proc :: HM::ModelCheck::Nastran::CheckPropsUnused { checkDisplayname } {
    set entitytype [hm_getmodelcheckenttype $checkDisplayname];
         if { $entitytype ne "Props" } { return; }

    set lsProps [hm_propertylist id];
    if {[llength $lsProps] == 0} {
        hm_setmodelcheckcheckstatus $checkDisplayname 3;
        return;
    }

    *EntityPreviewUnused properties 1;
    set lsProps [hm_getmark props 1];
    set lsFailed {};
    foreach prop_id $lsProps {
        lappend lsFailed $prop_id;
    }

        eval *createmark $entitytype 1 "by id" $lsFailed;
        if { [hm_marklength $entitytype 1] } {
            hm_setmodelcheckresultentids $checkDisplayname 1;
        } else {
     hm_setmodelcheckresultentids $checkDisplayname 1;
        }
   };

チェックの作成

  1. Model Checkerで既存のチェックまたはチェックフォルダー(ERROR、WARNING、INFO)のいずれかを右クリックし、コンテキストメニューからCreate Checkを選択します。
    エンティティエディターが開き、チェックに関連したエンティティの属性が表示されます。


    図 2.
  2. Nameにチェック名を入力します。
  3. Configでコンフィグタイプを選択します。
  4. 属性を定義します。
    注: 使用可能な属性は、選択されたコンフィギュレーションのタイプによって異なります。
    定義する共通の属性には以下のものがあります:
    属性 説明
    Check Entity チェックが適用されるエンティティのタイプ。
    Folder チェックが位置するグルーピングの定義またはフォルダー名を含むディレクトリ。
    Level 実行するチェックのタイプ:Error、Warning、Info
    Function Name チェックに適用する主なチェック関数。主なチェック関数の名称は、既存のチェックのエンティティエディターに見つかります。
    Auto Correction チェックの補正を自動的に行う際に実行する関数。
    Manual Correction チェックの補正を手動で行う際に実行する関数。
    Default Correction チェックに関連付けされたデフォルトの自動補正。この欄で選択を行わない場合、デフォルトでは、最初に選択されたAuto Correctionがデフォルト値とみなされます。
    Config = TclCheckである際は、以下の属性を定義します。
    属性 説明
    Tclファイル 希望するチェックを行うための外部Tclスクリプト。
    Config = GenericCheckである際は、以下の属性を定義します。
    属性 説明
    Number of references 参照が定義されなければならないテーブルエンティティ内で定義、表示されるべき参照の数。
    Number of filters フィルター規則が定義されなければならないテーブルエンティティ内で定義、表示されるべきフィルターの数。
    Number of Value definition 値の定義の規則が定義されなければならないテーブルエンティティ内で定義、表示されるべき値の定義の数。

補正の作成

  1. 補正は以下の方法で作成されます:
    • Model Checker内で右クリックし、コンテキストメニューからCreate Correctionを選択します。
    • Checkエンティティのエンティティエディターで、Correction属性を右クリックし、コンテキストメニューからCreateを選択します。

      サポートされているCorrection属性には以下のものがあります:Manual Correction、Auto Correction、Default Correction

    CorrectionをModel Checkerから作成した場合、新しいCorrectionはエンティティエディターで開き、Correctionをエンティティエディター内でCorrection属性から作成した場合、新しいCorrectionはCreate Modelcheckcorrectionsダイアログで開きます。


    図 3.
  2. Nameに補正の名称を入力します。
  3. Configでコンフィグタイプを選択します。
  4. 属性を定義します。
    注: 使用可能な属性は、選択されたコンフィギュレーションのタイプによって異なります。
    Config = Automaticである際は、以下の属性を定義します:
    属性 説明
    Tclファイル 希望するチェックを行うための外部Tclスクリプト。
    Function Name チェックに適用する主なチェック関数。主なチェック関数の名称は、既存の補正のエンティティエディターに見つかります。
    Correct value 自動補正を実行する際に設定されるべき値。
    Config = Manualである際は、以下の属性を定義します:
    属性 説明
    オプション 手動補正を実行するために使用されるツール。

一般的なチェック

モデルチェッカーには、あらかじめ用意されたいくつかのチェック項目があり、簡単にカスタマイズすることができます。これらのチェックのConfigが"GenericCheck"です。

概要

これらの既存のチェックにおける値の制限やフィルターも変更することができます。これらのチェックの作成には:
  • 一意のチェック名を使用する
  • エンティティタイプは、チェックを実行するエンティティのタイプに設定
  • レベルはチェックに関連付ける
  • カスタマイズ可能な機能名は以下の通り
  • フィルター定義、値定義、リファレンスを適宜定義する
  • フィルターの定義:
    • Filter Attribute - "CARD","CONFIG","TYPE","GROUPTYPE"またはテンプレートで定義された属性名
    • Filter Value - 渡すべきフィルター(属性名または値)。上記機能の一部で"STATUS_OFF"を用いて属性の状態まで確認することができます。
    • Filter Criteria - PASS, FAIL, EQ, NE, LT, LE, GT, GE。PASSとFAILは通常、STATUS_OFFフィルターに使用されます。


      図 4.
  • 値の定義:
    • Value Attribute - 上記の機能に適用されるデータ名または属性名(テンプレートで定義されている)。
    • Value Limit - 受け入れ可能な許容値
    • Filter Criteria - EQ, NE, LT, LE, GT, GE。


      図 5.
  • 参照定義:
    • References - テンプレートで定義されたデータ名または属性名


      図 6.

カスタマイズ可能な機能名

AttributeValueRange - 属性値が指定された範囲内で定義されているかどうかを確認します。このチェックは、ソルバーの実行に必須、または所定の制限内に定義する必要がある、整数、ダブル、エンティティフィールドに対して実行することができます。値の限界と基準は、値定義で定義されます。チェックは、フィルター定義を使ってフィルターを追加することで、さらにカスタマイズすることができます。


図 7. Area is not defined for section beam
DatanameValueRange - エンティティのデータ名が指定された範囲にあるかどうかをチェックします。このチェックは"AttributeValueRange"と同じ機能を持ち、テンプレートファイルに定義されていないデータ名に対して実行することができます。


図 8. Admas having zero or negative mass
EntityFieldDefined - 属性フィールドにエンティティが関連付けられているかどうかをチェックします。エンティティは、参照で定義されています。チェックは、フィルター定義を使ってフィルターを追加することで、さらにカスタマイズすることができます。このチェックは、テンプレートで定義された属性と、新しいエンティティに定義されたデータ名の両方に対して機能します。


図 9. Sid is missing for the airbag definition
UndefinedEntities - エンティティに未定義のエンティティが含まれているかどうかをチェックします。未定義のエンティティは、参照で定義する必要があります。このチェックは、テンプレートで定義された属性と、新しいエンティティに定義されたデータ名の両方に対して機能します。


図 10. Component is referring to undefined entity
UnresolvedEntities - エンティティが未解決のエンティティを参照しているかどうかをチェックします。未解決のエンティティは、参照で定義する必要があります。このチェックは、テンプレートで定義された属性と、新しいエンティティに定義されたデータ名の両方に対して機能します。


図 11. Unresolved main or secondary in contact
EntGetRefIncludeFile - エンティティとエンティティ内の参照が同じインクルード内にあるかどうかをチェックします。属性は、参照で定義する必要があります。このチェックは、テンプレートファイルで定義された属性にのみ使用できます。


図 12. Mat and referenced curves not in same include
CheckReferencesInSameInclude - エンティティとdatanameフィールドで参照されるエンティティが同じインクルード内にあるかどうかをチェックします。データ名は、参照で定義する必要があります。このチェックは、新しいエンティティのデータ名に対してのみ使用できます。


図 13. Cload and referenced entities not in same include
EntityNotOnRigidParts - エンティティが剛体部分と関連付けられている場合に、チェックします。このチェックは、LS-DYNAソルバーに特有のものです。エンティティは、参照で定義されています。チェックは、フィルター定義を使ってフィルターを追加することで、さらにカスタマイズすることができます。


図 14. CRB referring to non-rigid part

チェックを追加した後、Model Checkerブラウザ内を右クリックし、Save config file をクリックすると、.xml ファイルにチェックが書き出されます。