カスタムメソッドの作成
新しいメソッドを登録し、既存のライブラリを保存 / インポートします。次のチャプターMethod Managerでは、これらの手順を詳細に示します。
メソッドエンティティ構造
必要な手順を理解するには、メソッドとライブラリの構造に慣れる必要があります。

図 1. ユーザーメソッドファイルスキーマ
これには、<method>タグのリストを含むメインブロック<root>が必要です。
オプションで、<root>レベルで属性名=“ユーザーライブラリ名”を追加できます。ユーザー名がMethod Managerに表示されます。
これには、<method>タグのリストを含むメインブロック<root>が必要です。
メソッドは以下のとおりです:
- 外部ファイル(Compose、Python、Tcl、DLL)で定義された、functionに対する参照(例: retval=myfunc(x,y,z))
- 入力引数のマッピングの並び替えリスト
- 出力引数名の並び替えリスト
- (オプション)評価後のソート(集約)
メソッドの属性
メソッドタグ(xml)には、いくつかの必須属性があります。(図 1)
- displayname=" "
- 名前がMethod Managerダイアログに表示されます。これはIDキーとして機能します。
- type="DLL | PYTHON | COMPOSE | TCL"
- メソッドの実行に使用されるエンジン。これは、データ名“Engine”としてHyperMesh designpointmethodエンティティ(図 2)に保存されます。
- path=" "
- 関数が定義されるPython/Compose/Tclファイルのファイルパス。絶対パスまたはライブラリファイルパスからの相対パスとすることができます。
- name=" "
- Compose/Python/Tclファイルで定義した真の関数名。
- category="Rivet | Spring | Panel_metallic | Panel_composite | Generic"
- UIで使用可能なメソッドのリストのフィルタリングに使用されます。カテゴリ値はdesignpointsetコンフィグと同等です。
- corner= ”true |false”(デフォルト: false)
- resavg=”none |simple |min |max |ext | sum”(デフォルト: none)
- hideoption=”true |false”
- 作成者はcornerおよびresavgのデフォルトを設定することはできますが、これらを変更することはできません。
入力パラメータとメソッド出力を指定するために、次の2つのタグが必要です。
- InputArgList
- メソッド入力と、エンジンから照会するmodel/result/userキーのマッピングを定義します。パラメータのリストは、メソッド引数と同じ順序になっている必要があります。
- メタデータ値
- ユーザー入力パラメータを使用する定義を持つメソッドがエンジンにより実行される場合、実行時にデータが存在することが期待されます。xml内で設定されている値に関係なく、エンジンでは常に、データベースでエンティティレベルで定義された値が使用されます。
- OutputArgList
- メソッドは複数の(事前定義)結果を出力できます。
ソート
メソッド登録内で、Sortブロックを追加できます。これにより、designpoint内のそれぞれのエンティティ(要素 | レイヤー)について、およびそれぞれの荷重ケースについて、メソッドが引き続き評価されます。
ただし、メソッドの実行後、集約はメトリックとエンベロープタイプを使用して、Domain上で実行されます。この集約の結果として、メソッドによって出力されるテーブルには、集約された値のみが保持されるようになります。エンベロープタイプは空間的にすることも、領域に応じて荷重ケース上とすることもできます(図 6)。
- Type(エンベロープの)
- 有効なタイプは以下のとおりです:
- Min
- Max
- AbsMin
- AbsMax
- Value
- 値は、InputArgListまたはOutputArgListのどちらの浮動小数点パラメータであってもかまいません。これは、比較メトリックとして使用されます。
- Domain
- 領域は次のリストにある複数のキーの組み合わせにすることができます:
- DDP
- entityid
- elementid
- nodeids
- layerindex
- か荷重ケース
- DDP |entityid |elementid|layerindex |nodeids:荷重ケースエンベロープを実行します。コーナーまたは節点データが考慮される場合、これらはソート後に保持されます。
- DDP |entityid |elementid|layerindex:荷重ケースエンベロープを実行します。コーナーまたは節点データが考慮される場合、これらは集約されます。
- DDP |entityid |elementid|nodeids|loadcase:要素のレイヤーで集約を実行します。荷重ケースごとに結果を保持します。
- DDP |entityid |elementid:荷重ケースエンベロープを実行します。要素ごとに重要な値を保持する空間的な集約。
- DDP | entityid:荷重ケースエンベロープを実行します。重要なエンティティ(パネルまたはフリーボディ)を保持する空間的な集約。
- DDP |nodeids |loadcase:指定のDDPの節点上の値を集約します(DDP境界は維持します)。荷重ケースごと。

図 6. 評価後のソート
- 複数の荷重ケースにまたがる重要な値がある場合は常に、エンベロープの荷重ケースについてのみコンターを表示できます。
- 複数の層にまたがる結果が集約される場合は常に、要素レベルでのみコンターを表示できます。
- (designpoint上の)複数の要素にまたがって集約が実行される場合は常に、テーブルには、DDP | elementid | loadcase | ..inputs | ..outputs | metricが含まれます(metricでは重要な値が使用されます)。その結果として、テーブルでdesignpointごとに1つの要素IDのみが保持されます。ただし、コンターメソッド機能は、DDPをエンティティとして選択する機能を備えています。これにより、構造要素内のすべての要素上で一定値がコンター表示されます。
入力の集約
<Parameter name = "Composite Stress XX"
perlayer="0"
sort=”min|max|minmax|sum|avg|absmin|absmax” (optional)
/>
こうして、メソッドを呼び出す前に、Sxxについてすべてのレイヤーが照会され、minまたはmaxのみが保持されてメソッドに送信されます。minmaxの場合は、minとmaxの両方の値がベクトルとしてメソッドに送信されます。sortキーはオプションです。ソートが要求されない場合は、Sxxのすべてのレイヤーの値が(ベクトルとして)同時にメソッドに送信されます。
- perlayer="0|1"
- 0はすべてのレイヤーのリストを意味します(メソッドは要素ごとにのみ呼び出されます)。
- 1(デフォルト)は現在のレイヤーのみを意味します(メソッドはレイヤーごとに呼び出されます)。
- perelement="0|1"
- 0はすべての要素のリストを意味します(メソッドはdesignpointごとにのみ呼び出されます)。
- 1(デフォルト)は現在の要素のみを意味します(メソッドは要素ごとに呼び出されます)。
- perloadcase="0|1"
- 0はすべての荷重ケースのリストを意味します(メソッドはすべての荷重ケースに対して一度呼び出されます)。
- 1(デフォルト)はメソッドが荷重ケースごとに呼び出されることを意味します。
ユーザー属性の登録
登録される属性は、HyperMeshデータベースから照会されたモデル情報か、結果ファイルから照会された結果情報です。結果データタイプは結果ファイル内の名前と一致する必要があります。ほとんどの場合は、集約されたベクトルデータタイプまたはテンソルデータタイプが結果リーダーによって提供されます。
- 1DForcesと1DMoments
- 2DForcesと2DMoments
- Stress
- Composite Stress
- HMDb.property.PCOMP_MID.MAT8_Xtでは、上述の優先順位に基づいてプライの材料Xt(Nastranソルバー属性)が照会されます。
- HMDb.element.property.PCOMP_MID.MAT8_Xtでは、どのプロパティが構造プロパティに割り当てられているのか(または割り当てられていないのか)に関係なく、常にローカル要素のプロパティが使用されます。
- HMDb.element.thicknessでは、パネル(金属&複合材)内の要素板厚が取得されます。
- HMDb.structuralproperty.thicknessでは、Panel_metallic構造プロパティのthickness属性を使用することが強制されます。
要素上で1つの属性が複数の値を取ることができる場合(プライあたりの材料の許容数と同様)、エンジンではクエリループ時にレイヤーごとに管理を行います。
- インストールと同じ名前で属性を再定義すると、同じライブラリのメソッド内で優先されます。
- 複数のライブラリにわたって同じ名前の属性はローカルに解決されます。

図 7. ユーザー属性定義例