HyperWorks製品でのOML関数の使用

Composeのグラフィカルユーザーインターフェースまたはプリファレンスファイルを使用してOML関数を登録しておき、後で特定のHyperWorks製品で開くことができます。

登録したOML関数は、Composeを実行すること無しに、HyperGraphHyperStudyMotionView、およびHyperMesh Matrix Browserの各製品から利用できます。

ComposeでのOML関数の登録

ここで説明する方法を使用すると、Composeから直接、OML関数を自動的に登録できます。

記述した関数を登録するには、それを*.omlファイルとしてディスクに保存済みであることを確認します。

  1. Composeのエディターで、目的の関数名を選択して右クリックし、表示されたコンテキストメニューで関数の登録を選択します。
    1.

    関数名、その入力数、および.omlファイルの保存先を一覧表示したダイアログが開きます。このダイアログの内容を受け入れれば登録が完了します。
    注: このダイアログには、この機能を使用してこれまでに登録した既存の関数もすべて表示されます。このダイアログで各項目を編集でき、また削除できます。
    2.

  2. HyperWorks製品を起動すると、登録した関数が自動的にその製品に読み込まれることがわかります。

プリファレンスファイルを使用したOML関数の登録

プリファレンスファイルを作成し、明示的にHyperWorksのデスクトップに登録することで、関数を登録できます。

*RegisterOMLFunction()文を使用してHyperWorksのプリファレンスファイルに*.omlファイルを登録すると、そのファイルに記述したOML関数を、いくつかのHyperWorksアプリケーションで他の内部数学関数同様に使用できるようになります。このようなアプリケーションとして、HyperStudy(応答関数)、TextViewHyperView(メモ)、HyperGraph(曲線、メモ、データ行、プロットラベル)、Templexがあります。

特定のバージョンのComposeHyperWorksアプリケーションで使用するには、次のようにその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つの引数をとります。

mymean.omlファイルの例を以下に示します。
function y = mymean(x)
      b = 0.2*ones(1,5);
      a = 1;
      y = filter(b,a,x);
end

OptiStructDRESP3 Bulk Data EntryでのOML関数の使用

OptiStructでは、DRESP3 Bulk Data Entryを使用すると、ユーザー定義の外部関数を使用して応答を定義できます。

外部関数にはさまざまな形式が可能ですが、ここではOML言語を使用して記述します。
注: この機能は、HyperWorksソルバーのリリース2017.2.2で使用できます。
  1. 以下で説明する署名を使用して、.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
    注: isens1に設定されている場合、このOML関数では、感度を計算し、drespを使用してOptiStructにその感度を提供します。isens フラグがONの場合にのみ、dresp配列に値を配置しておく必要があります。
    注: udataは追加のメッセージです。OptiStructメッセージに追記する形で表示されます。
  2. OptiStructデッキ(.fem)にこの関数を読み込んで使用します。
    OptiStruct入力デッキでは次の手順が必要です。
    • 次のコマンドを使用してOMLファイルを読み込みます。
      LOADLIB DRESP3 HLIB 'dresp3.oml'
    • OML関数myDREの使用例
      DRESP3  6           SUMH    HLIB   myDRE       1       2
      +      DRESP1         2       3