HyperWorks製品でのOML関数の使用
Composeのグラフィカルユーザーインターフェースまたはプリファレンスファイルを使用してOML関数を登録しておき、後で特定のHyperWorks製品で開くことができます。
登録したOML関数は、Composeを実行すること無しに、HyperGraph、HyperStudy、MotionView、およびHyperMesh Matrix Browserの各製品から利用できます。
ComposeでのOML関数の登録
ここで説明する方法を使用すると、Composeから直接、OML関数を自動的に登録できます。
記述した関数を登録するには、それを*.omlファイルとしてディスクに保存済みであることを確認します。
-
Composeのエディターで、目的の関数名を選択して右クリックし、表示されたコンテキストメニューで関数の登録を選択します。
図 1.
関数名、その入力数、および.omlファイルの保存先を一覧表示したダイアログが開きます。このダイアログの内容を受け入れれば登録が完了します。注: このダイアログには、この機能を使用してこれまでに登録した既存の関数もすべて表示されます。このダイアログで各項目を編集でき、また削除できます。図 2.
- HyperWorks製品を起動すると、登録した関数が自動的にその製品に読み込まれることがわかります。
プリファレンスファイルを使用したOML関数の登録
プリファレンスファイルを作成し、明示的にHyperWorksのデスクトップに登録することで、関数を登録できます。
*RegisterOMLFunction()文を使用してHyperWorksのプリファレンスファイルに*.omlファイルを登録すると、そのファイルに記述したOML関数を、いくつかのHyperWorksアプリケーションで他の内部数学関数同様に使用できるようになります。このようなアプリケーションとして、HyperStudy(応答関数)、TextView、HyperView(メモ)、HyperGraph(曲線、メモ、データ行、プロットラベル)、Templexがあります。
特定のバージョンのComposeをHyperWorksアプリケーションで使用するには、次のようにそのComposeのインストール先へのパスを指定する必要があります。
*SetOMLRootDir(path)
pathは、Composeのインストール先へのパスです。
*RegisterOMLFunction()文の構文は次のとおりです。
*RegisterOMLFunction(Function, File, Parameters)
- Function
- OML関数の名前。これは文字列です。
- File
- 上記の関数が記述されているOMLファイルの名前。これは文字列です。
- Parameters
- 上記の関数が入力として受け入れるパラメーターの数。この表記は、構文としての表現です。
*SetOMLRootDir("E:/COMPOSE/Compose_2017.3")
*RegisterOMLFunction("mymean","E:/ST_COMPOSE/mymean.oml",1)
mymeanは、mymean.omlファイルに記述した関数です。この関数では入力として1つの引数をとります。
function y = mymean(x)
b = 0.2*ones(1,5);
a = 1;
y = filter(b,a,x);
end
OptiStructのDRESP3 Bulk Data EntryでのOML関数の使用
OptiStructでは、DRESP3 Bulk Data Entryを使用すると、ユーザー定義の外部関数を使用して応答を定義できます。
-
以下で説明する署名を使用して、.omlファイル形式でOML関数を作成します。
DRESP3サンプル関数のOML関数:
function [rresp, dresp, udata] = myDRE(iparam, rparam, nparam, iresp, rresp, dresp, nresp, isens, udata) % iparam - vector of ints % rparam - vector of doubles % nparam - size of input vector % iresp - vector of ints % rresp - output parameter (vector of ints) % dresp - output parameter (matrix of MxN dimension) % nresp - size of output vector % isens - sensitivity flag % udata - userdata if iresp(1) ~= 0 rresp(1) = rparam(1) + rparam(2); end if iresp(2) ~= 0 rresp(2) = rparam(1)/2.0 + rparam(2)/2.0; end if isens dresp(2,2) = rresp(1)/2.0 + rresp(2)/2.0; udata = 'sensitivity'; end %udata = 'user data'; end
注: isensが1に設定されている場合、このOML関数では、感度を計算し、drespを使用してOptiStructにその感度を提供します。isens フラグがONの場合にのみ、dresp配列に値を配置しておく必要があります。注: udataは追加のメッセージです。OptiStructメッセージに追記する形で表示されます。 -
OptiStructデッキ(.fem)にこの関数を読み込んで使用します。
OptiStruct入力デッキでは次の手順が必要です。
- 次のコマンドを使用してOMLファイルを読み込みます。
LOADLIB DRESP3 HLIB 'dresp3.oml'
- OML関数myDREの使用例
DRESP3 6 SUMH HLIB myDRE 1 2 + DRESP1 2 3
- 次のコマンドを使用してOMLファイルを読み込みます。