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

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

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

TCLチェックの新規作成

モデルチェッカーでは、新しいTCLチェックを作成することができます。

概要

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

キーポイント

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


    図 1.

オプション

環境変数を使ってTCLファイルのパスを任意に設定する方法もあります。

環境変数HM_MODELCHECKER_TCLPATH_$profile_nameは、ソルバーのユーザープロファイルごとに使用する必要があります。この設定により、TCLファイル名の入力は“Tcl File” 欄のみに必要となります。

デフォルトでは、この環境変数はチェックの設定ファイルのパスを指します。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である際は、以下の属性を定義します:
    属性 説明
    オプション 手動補正を実行するために使用されるツール。

Generic Checks

モデルチェッカーでは、いくつかの定義済みのチェックが用意されており、簡単にカスタマイズすることができます。これらのチェックのconfigは "GenericCheck "です。

概要

既存のチェックの値の制限やフィルターも変更することができます。これらのチェックの作成のために以下の点に留意します。
  • 固有のチェック名の使用
  • Entityタイプは、チェックを実行するエンティティタイプと一致させる
  • チェックにレベルを関連付ける
  • カスタマイズ可能な関数名は以下を参照
  • 必要に応じて、フィルター、値、および参照を定義
  • Filter definitions:
    • 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 definitions:
    • Value Attribute - 上記の関数に適用される、テンプレートで定義されたデータ名または属性名
    • Value Limit - 許容限界値
    • Value Criteria - EQ、NE、LT、LE、GT、GE


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


      図 6.

カスタマイズ可能な関数名

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


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


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


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


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


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


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


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


図 14. CRB referring to non-rigid part

チェックが追加されたら、モデルチェッカーのブラウザで右クリックして Save config fileをクリックすると、チェック内容がXMLの設定ファイルに書き出され、後でアクセスできるようになります。