OS-T:4095 外部応答(DRESP3)を使った寸法最適化

本チュートリアルでは、OptiStructに用意されている標準の応答をHyperMathスクリプトに渡し、スクリプトから新たに生成された応答を最適化の制約条件として使用します。

HyperMathはインタープリターであるため、ユーザーはHyperMathスクリプトをコンパイルする必要なしにカスタム応答を構築することができます。

構造モデルをHyperMeshに読み込みます。材料、シェルプロパティ、荷重および境界条件は既にモデル内に定義されています。3つのコンポーネントの板厚は設計変数として認識されます。要素58および59(穴の縁上にある要素)のフォンミーゼス応力は応答として定義され、全体積の応答も定義されます。

要素58および59のフォンミーゼス応力はHyperMathスクリプトへ入力として渡され、2つのフォンミーゼス応力の和と2つの要素のフォンミーゼス応力の平均値が返されます。

本チュートリアルにおける最適化問題の設定は以下の通りです:
目的関数
体積の最小化
制約条件
フォンミーゼス応力の和と平均フォンミーゼス応力値の制約
設計変数
3つのパートの寸法

os_4095_model
図 1.

HyperMathの起動

  1. HyperMathを起動します。
  2. メニューバーFile > Openをクリックします。
  3. Open Fileダイアログで、optistruct.zipファイルから自身の作業ディレクトリに保存したdresp3_simple_h.hmlファイルを開きます。モデルファイルへのアクセスをご参照ください。
  4. 外部応力を計算するためのHyperMathスクリプトを検証します。
    関数MYSUMで識別されるHyperMathスクリプトは、rparam[1]rparam[2]の2つの入力を取り、rresp[1](2つの入力の和)とrresp[2](2つの入力の平均値)の2つの応答を返します。計算された応答rresp[1]およびrresp[2]は、最適化で使用されるためにOptiStructに送り返されます。上記のスクリプトは、OptiStruct入力ファイル内のDRESP3関連カードにリンクされ、2つの入力がこのスクリプトに送られて、スクリプトからの2つの出力を受け取ります。
    注: この関数には、MYSUM、myresponses、sumandavgといった任意の名称を割り当てることができます。 ただし、iparam、rresp、rparamなど、関数への引数の名称は変更できません。続いて、DRESP3を使って外部応答をセットアップします。

    os_4095_script
    図 2.

HyperMeshの起動とOptiStructユーザープロファイルの設定

  1. HyperMeshを起動します。
    User Profilesダイアログが現れます。
  2. OptiStructを選択し、OKをクリックします。
    これで、ユーザープロファイルが読み込まれます。ユーザープロファイルには、適切なテンプレート、マクロメニュー、インポートリーダーが含まれており、OptiStructモデルの生成に関連したもののみにHyperMeshの機能を絞っています。

モデルの読み込み

  1. File > Import > Solver Deckをクリックします。
    Importタブがタブメニューに追加されます。
  2. File typeにOptiStructを選択します。
  3. Filesアイコンfiles_panelを選択します。
    Select OptiStruct Fileブラウザが開きます。
  4. 自身の作業ディレクトリに保存したdresp3_simple.femファイルを選択します。モデルファイルへのアクセスをご参照ください。
  5. Openをクリックします。
  6. Import、続いてCloseをクリックし、Importタブを閉じます。

最適化のセットアップ

HyperMathスクリプトライブラリのOptiStructへの付加

OptiStructは、入力を渡し、出力を受け取るために、HyperMathスクリプトの場所を必要とします。これは、LOADLIBカードを使って設定できます。
  1. Analysisページからパネルcontrol cardsをクリックします。
  2. Card Imageダイアログで、LOADLIBをクリックします。
  3. 入力情報を入力します。
    1. TypeをDRESP3にセットします。
    2. GROUP欄にHLIBと入力します。
    3. PATH欄に、.hmlファイルの場所を入力します。
      例: c:/temp/dresp3_simple_h.hml
    注: HyperMesh Desktopでは、ファイルパスとファイル名を入力するためのスペース量が限られています。ファイル名を含んだファイルのフルパスが収まりきれない場合は、パネルを終了し、手動で残りを編集してください。
  4. returnをクリックします。

寸法設計変数の作成

ここではまだ、Card Imageダイアログにいるはずです。

3つのコンポーネントの板厚について設計変数は既に定義されています。要素58および59の全体積とフォンミーゼス応力の応答も、定義されています。

DRESP3バルクデータエントリは、HyperMeshの現行バージョンではサポートされていません。したがって、これらのカードはBULK_UNSUPPORTED_CARDSパネル内で定義されます。

注: ‘$’ の記号はコメントを表し、後続のデータはソルバーによって読まれません。
  1. BULK_UNSUPPORTED_CARDSをクリックします。
  2. Control Cardダイアログで、以下のDRESP3情報を入力します:

    os_4095_control_card
    図 3.

これは、2つの外部応答、すなわち要素58および59のフォンミーゼス応力の和(SUMH)と要素58および59のフォンミーゼス応力の平均値(AVGH)を定義します。

DRESP3応答は、DRESP1応答とは異なるIDを有し、定義されているHLIBという名称のライブラリを指します。また、関数MYSUMは、dresp3_simple_h.hmlスクリプト内で同じ関数名です。

これで、DRESP3カードのHyperMathスクリプトとのリンクが完了しました。

拘束の作成

ここではまだ、Control Cardダイアログにいるはずです。
DRESP3カードは現行のHyperMeshバージョンではサポートされていないため、DCONSTRカードはdconstraintsパネルからもDRESP3応答に割り当てることができません。したがって、DCONSTRカードもBULK_UNSUPPORTED_CARDSパネルを使って追加します。
  1. Control Cardダイアログで、DRESP3情報に続いて、以下の制約条件データ(DCONSTRおよびDCONADD)を追加します。

    os_4095_add_contstraint
    図 4.
  2. OKをクリックします。
  3. returnをクリックします。
SUMH応答の上限制約条件50、およびAVGH応答の上限制約条件25が定義されます。

最適化の実行

  1. dresp3_simple.femファイルをエクスポートします。
    1. メニューバーFile > Export > Solver Deckをクリックします。
    2. ソルバーファイルのエクスポートディレクトリを選択します。
    3. Exportブラウザでfiles_panelをクリックしてdresp3_simple.femを選択し、Saveをクリックします。
    4. Exportをクリックします。
    .femファイル名は、OptiStruct入力デック用に使用されるものです。
  2. dresp3_simple.femファイルを編集します。
    1. テキストエディタを使って、dresp3_simple.femファイルを開きます。
    2. Subcase Informationセクションの下で、DESSUB = 10を追加します。
    3. ファイルを保存します。
    作成されたDRESP3はサブケース依存の応答であり、したがって、サブケース内から参照されます。DESSUBコマンドがこれを実行します。現行のHyperMeshDRESP3バルクデータエントリをサポートしていないため、この行は手動で追加する必要があります。
  3. 最適化を実行します。
    1. スタートメニューから All Programs > Altair Simulation 2022 > OptiStructを選択します。
    2. OptiStructで、dresp3_simple.femファイルを開きます。
    3. Runをクリックします。
  4. ジョブが終了したら、結果をポスト処理します。
    注: 完全なFEMデック dresp3_simple_complete.fem が用意され、参照として使用可能となっています。