ACU-T:7001 HyperMorphを使用した形状の最適化

前提条件

このチュートリアルを開始する前に、HyperWorks 入門チュートリアルである ACU-T:1000 HyperWorksユーザーインターフェースをすでに完了しHyperMeshAcuSolve、およびHyperViewの基本を理解しているものとします。このシミュレーションを実行するには、ライセンス供与済みバージョンのHyperMeshおよびAcuSolveにアクセスできる必要があります。

このチュートリアルを実行する前に、ここをクリックしてチュートリアルモデルをダウンロードしてください。 ACU-T7001_ShapeOptimization.hm をHyperMesh_tutorial_inputs.zipから抽出します。

HyperMeshデータベース(.hmファイル)には、メッシュ済みのジオメトリが含まれているため、このチュートリアルには、ジオメトリのインポートとメッシュ生成に関する手順は含まれません。

問題の説明

最適化とは、簡単に言うと、一連の選択肢の中から最適な入力を選択するプロセスです。AcuSolveは、最適化の調査を設定するための2つの手法として、設計最適化とパラメトリックスタディを提供します。設計最適化によって、特定の制約を受け、流体方程式を満たすことを条件とする目的関数を最適化できます。設計最適化は、連続したケースとみなすことができます。その各ケースでは、まず最適化機能が実行され、設計変数が更新されてから、収束にいたるまでいくつかの時間ステップにわたって流体方程式が解かれます。各時間ステップの終了時にサンプルデータが収集されます。

最適化機能による解析は、以下の処理からなります。

  1. サンプルのセットから応答サーフェスを構築します。
  2. 応答サーフェスに対して最適化機能を実行します。
  3. 設計変数を更新します。

この問題の形状は、ベース形状として真円の断面を持つ単純な管流路で構成されています。入口から水が0.0003kg/sの流量で流入します。出口は、相対圧力がゼロの標準圧力出口です。流路の壁はすべりのない壁です。



図 1.

HyperMeshモデルデータベースを開く

  1. HyperMeshを起動し、AcuSolveのユーザープロファイルを読み込みます。
    User ProfilesからAcuSolveを選択する方法については、HyperMeshの入門チュートリアルACU-T:1000 HyperWorksユーザーインターフェースをご参照ください。
  2. 標準ツールバーのOpen Modelアイコン をクリックします。
    Open Modelダイアログが開きます。
  3. モデルファイルの保存先ディレクトリを参照します。HyperMeshファイルACU-T7001_ShapeOptimization.hmを選択してOpenをクリックします。
  4. File > Save Asをクリックします。
    Save Model Asダイアログが開きます。
  5. 名前をShapeOptimizationとして新しいディレクトリを作成し、このディレクトリへ移動します。
    このディレクトリが作業ディレクトリになり、シミュレーションに関連するすべてのファイルがこの場所に保存されます。
  6. データベースのファイル名としてShapeOptimizationと入力するか、都合のいい名前を選択して入力します。
  7. 保存をクリックしてデータベースを作成します。

グローバルなシミュレーションパラメータの設定

解析パラメータの設定

  1. Solverブラウザ01.Globalを展開してPROBLEM_DESCRIPTIONをクリックします。
  2. OptimizationをOnに設定します。
  3. Mesh typeをFully Specifiedに設定します。


    図 2.

ソルバー設定

  1. Solverブラウザ01.Globalの下の02.SOLVER_SETTINGSをクリックします。
  2. エンティティエディターで、Min optimization casesを10に設定します。
  3. Max optimization casesを200に設定します。
  4. Optimization convergence toleranceを1e-005に設定します。
  5. Max time stepsを100に設定します。
  6. Convergence toleranceを0.0001に設定します。
  7. Relaxation factorを0.0に設定します。
  8. FlowとDesign OptimizationのフラグがOnに設定されていることを確認します。


    図 3.

節点出力頻度の設定

  1. Solverブラウザ17.Outputを展開して、NODAL_OUTPUTをクリックします。
  2. Output initial condition欄をOnにします。
    これにより、問題の初期状態を最初の出力ファイルとして書き込むようにソルバーに指示されます。
  3. モデルを保存します。

メッシュモーションの作成および境界条件と材料モデルパラメータの設定

メッシュモーションの作成

ボリュームのモーフ形状またはサーフェスのモーフ形状を使用して、AcuSolveで最適化を調査できます。ボリュームのモーフ形状を使用するシミュレーションでは、メッシュモーションを定義する必要はありません。ボリュームの節点は、モーフ形状の入力を使用して移動するからです。サーフェスのモーフ形状を使用するシミュレーションでは、モデルの中でボリューム節点が示すモーションを定義するために、補間したメッシュモーションが必要になります。このチュートリアルでは、補間したメッシュモーションによるサーフェスのモーフ形状を使用します。

  1. Solverブラウザ06.Mesh_Motionを右クリックしてCreateをクリックします。
  2. メッシュモーションの名前としてVolume_MMIと入力します。
  3. TypeをInterpolated_Motion、Number of Interpolated surfsを3にそれぞれ設定します。


    図 4.
  4. データ入力のアイコン をクリックします。
    Number of Interpolated surfsダイアログが開きます。
  5. WallInflow、およびOutflowを選択します。


    図 5.

境界条件と材料モデルパラメータの指定

デフォルトでは、すべてのコンポーネントは壁境界条件に割り当てられます。この手順では、それを適切な境界条件に変更し、流体ボリュームに材料特性を割り当てます。
  1. Solverブラウザで、12.Surfaces > WALLを展開します。
  2. Inflowをクリックします。エンティティエディターで以下を設定します。
    1. TypeをINFLOWに変更します。
    2. Inflow TypeをMass fluxに設定します。
    3. Mass fluxを0.0003kg/secに設定します。
    4. Interpolated Motion Surfaceセクションで、DisplayActivate the interpolated motion surfaceをオンにします。


    図 6.
  3. Outflowをクリックします。エンティティエディターで以下を設定します。
    1. TypeをOUTFLOWに変更します。
    2. Interpolated Motion Surfaceセクションで、DisplayActivate the interpolated motion surfaceをオンにします。


    図 7.
  4. Wallをクリックします。エンティティエディターで以下を設定します。
    1. TypeがWallに設定されていることを確認します。
    2. Interpolated Motion Surfaceセクションで、DisplayActivate the interpolated motion surfaceをオンにします。


    図 8.
  5. Fluidをクリックします。エンティティエディターで以下を設定します。
    1. TypeをFLUIDに変更します。
    2. MaterialとしてWater_HMを選択します。
    3. Mesh motionをVolume_MMIに設定します。


    図 9.
  6. モデルを保存します。

最適化パラメータの設定

モーフ形状の作成とエクスポート

HyperMorphを使用して、設計の形状をパラメータ化します。サーフェス節点を移動することによってモーフ形状を作成します。AcuSolveの補間メッシュモーション機能を使用して、ボリューム節点が考慮されます。

  1. パネル領域で、HyperMorphをクリックし、morph volumesを選択します。
  2. モーフィングサブパネルで、mvols:activeをmvols:skin onlyに変更します。

    このオプションを“skin only”に変更することで、サーフェスのみをモーフィングすると、サーフェスのモーフ形状が生成されます。“mvols”をデフォルト値のままにすると、ボリュームのモーフ形状が生成されます。このモーフィングプロセスでは、モデルのサーフェスだけではなく、そのすべての節点に変形が適用されます。

    重要: solveボタンはクリックしないでください。


    図 10.
  3. returnをクリックし、メインHyperMorphメニューパネルからmorph volumesを選択します。
  4. createサブパネルでelemsコレクターをクリックし、allを選択します。
  5. createをクリックします。
    新しいモーフボリュームが作成されます。


    図 11.
  6. returnをクリックしてメインHyperMorphメニューを終了し、パネル領域からmorphを選択します。
  7. まだ選択されていない場合はmove handlesサブパネルを選択します。このサブパネルで2つ目の矢印をクリックし、scaleを選択します。x scaleは1.0のままにし、y scaleとz scaleを1.5に設定します。


    図 12.
  8. handlesコレクターをクリックしてアクティブにします。
  9. モデリングウィンドウで、パイプの流出部の4つのエッジハンドル(下図のグレー表示部分)を選択します。


    図 13.
  10. morphをクリックします。
    グリッドがモーフィングされます。


    図 14.
  11. save shapeサブパネルを選択します。このパネルで、
    1. name欄をoutflow_expandに設定します。
    2. 2行目でセレクターをas node perturbationsに設定します。
    3. 座標系がglobalに設定されていることを確認し、 saveをクリックします。
    4. “Save perturbations for nodes at global and morph volume handles?”という質問にNoを選択します。


    図 15.
    注: saveをクリックすると、新しいエンティティフォルダShapesがModelブラウザで作成されます。形状outflow_expandはModelブラウザのこのフォルダ内で作成されます。outflow_expandを右クリックしてHideを選択することにより、この形状の節点摂動の表示をオフにすることができます。この形状を再度表示するには、outflow_expandを右クリックしてShowを選択します。次の手順に進む前に、この時点で形状を非表示にすることをお勧めします。
  12. パネルの右側でundo allを選択します。
  13. move handlesをクリックして、move handlesサブパネルに戻ります。このサブパネルで、y scaleを1.0に再設定します。z scaleは1.5のままとします。
  14. handlesコレクターをアクティブにし、モデリングウィンドウで8つすべてのハンドルを選択します。
  15. morphをクリックします。
    グリッドがモーフィングされます。


    図 16.
  16. save shapeサブパネルをもう一度選択します。このパネルで、
    1. name欄をlength_zに設定します。
    2. 2行目でセレクターをas node perturbationsに設定します。
    3. 座標系がglobalに設定されていることを確認し、 saveをクリックします。
    4. “Save perturbations for nodes at global and morph volume handles?”という質問にNoを選択します。
  17. undo allをクリックしてからreturnをクリックし、メインHyperMorphメニューを終了します。
  18. Modelブラウザでこの形状を非表示にします。
  19. morph volumesをクリックして再度morph volumesパネルに入り、split/combineサブパネルを選択します。
  20. 2行目で分割タイプをNo. of splits (# of splits)に設定し、分割数として3を入力します。


    図 17.
  21. モデリングウィンドウで、下図の緑色のx印で示されたモーフボリュームのエッジを選択します。


    図 18.
  22. splitをクリックします。
    モーフボリュームがx印の位置で分割されます。
  23. update edgesをクリックして対応するサブパネルを開きます。1つ目の矢印をクリックし、update endsを選択します。次に2つ目の矢印をクリックし、mvolsを選択します。最後に、3つ目の矢印をクリックし、main-secondaryを選択します。


    図 19.
    注: このオプションにより、任意の2つのエッジを、2つのモーフボリューム間のメイン-セカンダリ関係とリンクさせることができます。このような関係の場合、2つのエッジが接する端において、セカンダリエッジはメインエッジの曲率に従うことになります。
  24. main morphvolmesコレクターをアクティブにして、以下の図に示す外側の2つのモーフボリュームを選択します。続いて、secondary morphvolumesコレクターをアクティブにして、内側の2つのモーフボリュームを選択します。上記の順序で各ボリュームを選択した後、updateをクリックします。


    図 20.

    ボリュームのエッジが、以下の図のように表示されます。







    図 21.
  25. returnをクリックしてHyperMorphパネルに戻ります。
  26. このパネル領域でmorphを選択してから、move handlesサブパネルを選択します。このサブパネルで2つ目の矢印をクリックし、scaleを選択します(未選択の場合)。z scaleを1.0に、y scaleを1.5に設定します。
  27. handlesコレクターをクリックしてアクティブにし、モデリングウィンドウで4つの中間ハンドルを選択します。


    図 22.
  28. morphをクリックします。
    グリッドがモーフィングされます。


    図 23.
  29. save shapeサブパネルを選択します。このパネルで、
    1. name欄をcenter_yに設定します。
    2. 2行目でセレクターをas node perturbationsに設定します。
    3. 座標系がglobalに設定されていることを確認し、 saveをクリックします。
    4. “Save perturbations for nodes at global and morph volume handles?”という質問にNoを選択します。
  30. undo allをクリックして、Modelブラウザでこの形状を非表示にします。
  31. HyperMorphパネルを終了します。

設計変数の定義

  1. Solverブラウザ内で10.Optimizationを右クリックし、コンテキストメニューからOptimization > DESIGN_VARIABLESの順に選択します。
  2. 変数名をoutflow_expandに変更してEnterキーを押します。
  3. エンティティエディターで、Initial Valueを0.7に設定します。
  4. Lower Boundを0.2に設定します。
  5. Upper Boundを1.5に設定します。
  6. Max Update Factorを0.02に設定します。
  7. 上記手順に従って、length_zcenter_yの2つの新しい設計変数を作成します。上記と同じパラメータを使用して、これら2つの新しい設計変数を定義します。

応答変数の定義

  1. Solverブラウザ内で10.Optimizationを右クリックし、コンテキストメニューからOptimization > RESPONSE_VARIABLESの順に選択します。
  2. 変数名をinflow_pressureに変更してEnterキーを押します
  3. エンティティエディターで、Response typeをSurface Outputに変更します。
  4. Response typeをSurface Outputに変更します。
  5. Surface elementsコンポーネントをInflowに設定します。
  6. Output variableをPressureに変更します。
    この応答変数は、流入サーフェスから圧力変数のサーフェス積分値を抽出します。


    図 24.

目的関数の定義

  1. Solverブラウザ内でOptimizationを右クリックし、コンテキストメニューからOptimization > OBJECTIVESの順に選択します。
  2. 名前をmaximize_inflow_pressureに変更し、Enterを押します。
  3. エンティティエディターで、Objective TypeをMaximizeに設定します。
  4. Response variableとしてinflow_pressureを選択します。

節点形状の設定

  1. Solverブラウザ内でOptimizationを右クリックし、コンテキストメニューからOptimization > NODAL_SHAPESの順に選択します。
  2. 節点形状の名前をpipe_shapesに変更し、Enterを押します。
  3. Number of layersを3に設定します。
  4. 新たに作成されたData: Shape行の値欄内をクリックします。
    Number of shapesダイアログが開きます。利用可能な行の数は、以前の手順で指定した点の数に等しいことがわかります。
  5. 行1のShape欄をクリックし、Shapeコレクターをクリックして、Select Shapeダイアログでoutflow_expandを選択します。
  6. 行1のDV欄内をクリックし、Designvarコレクターをクリックして、Select Designvarダイアログで設計変数outflow_expandを選択します。
  7. 同様に、行2で形状および設計変数としてlength_zを選択し、行3で形状および設計変数としてcenter_yを選択します。


    図 25.
  8. ダイアログを閉じるには、Closeをクリックします。

最適化コントロールの設定

  1. エンティティエディターで、01.Global > 06.Optimizationを展開します。
  2. エンティティエディターmaximize_inflow_pressureをObjectiveとして選択します。
  3. Optimizer convergence toleranceが1e-4に設定されていることを確認します。
  4. モデルを保存します。

解析計算

この手順では、HyperMeshからAcuSolveを直接起動して解析を完了します。

AcuSolveの実行

  1. すべてのメッシュコンポーネントの表示をオンにします。
    解析を実行するには、アクティブなすべてのコンポーネントのメッシュを可視化した状態にする必要があります。
  2. ACUツールバーの をクリックします。
    Solver job Launcherダイアログが開きます。
  3. オプション: 解析時間を短縮するには、使用可能なプロセッサの数に応じて、使用するプロセッサの数に大きい値(4または8)を設定します。
  4. 他のオプションはデフォルト設定のままにし、Launchをクリックして解析プロセスを開始します。


    図 26.

AcuGetDvとAcuGetRsp

AcuSolveでは、最適化問題に固有の2つのポスト処理ユーティリティ、AcuGetDvおよびAcuGetRspを用意しています。AcuGetDvは、解析に含まれるすべてのケースの設計変数の値を提供します。AcuGetRspは、解析に含まれるすべてのケースの応答変数の値を提供します。

  1. WindowsのスタートメニューからStart > Altair <version> > AcuSolve Cmd PromptをクリックしてAcuSolveコマンドプロンプトを起動します。
  2. cdコマンドを使用して、ディレクトリを現在の作業ディレクトリに変更します。
  3. プロンプトに以下のコマンドを入力します:

    acuGetDv

    AcuSolveは、各ケースの設計変数の値を出力します。


    図 27.
  4. 応答変数の値を出力するには、以下のコマンドを入力します:

    acuGetRsp

    注: 設計変数および応答変数がこれらのコマンドにより出力される列の順序は、これらがINPファイルで出現する順序となります。


    図 28.

HyperViewによる結果のポスト処理

解析が収束した後、AcuProbeウィンドウとAcuTailウィンドウを閉じます。HyperMeshウィンドウに移動し、AcuSolve Controlタブを閉じます。

HyperViewのオープンとモデルおよび結果の読み込み

  1. HyperMeshのメインメニュー領域で、Applications > HyperViewを順にクリックします。
    HyperViewウィンドウを読み込むと、デフォルトでLoad model and resultsパネルが開きます。このパネルが表示されない場合は、File > Open > Modelの順にクリックします。
  2. Load model and resultsパネルで、Load modelの隣にある をクリックします。
  3. Load Model Fileダイアログで、作業ディレクトリに移動して、ポスト処理する解析実行のAcuSolve .Logファイルを選択します。この例で選択するファイルは、ShapeOptimization.1.Logです。
  4. Openをクリックします。
  5. パネル領域Applyをクリックしてモデルと結果を読み込みます。
    読み込むと、モデルが形状で色分けされます。

圧力変化のアニメーションの作成

  1. ResultsツールバーでをクリックしてContourパネルを開きます。
  2. 結果タイプとしてPressureを選択します。
  3. Componentsエンティティセレクターをクリックします。Extended Entity Selectionダイアログで、Displayedを選択します。
  4. Applyをクリックして圧力コンターを表示します。
  5. パネル領域のDisplayタブで、Discrete colorオプションをオフにします。


    図 29.
  6. Legendタブをクリックし、Edit Legendをクリックします。
  7. Edit Legendダイアログで、TypeをDynamic scale、Numeric formatをFixed、Numeric precisionを6にそれぞれ変更します。OKをクリックしてダイアログを閉じます。
  8. AnimationツールバーでAnimation Controlsアイコン をクリックします。
  9. Max frame Rateスライダーを10fpsまでドラッグします。
  10. Start/Pause Animationアイコン をクリックして、グラフィックス領域でアニメーションを再生します。

アニメーションの保存

  1. メニュー領域でPreferences > Export Settings > AVIを選択します。
  2. Export Settings AVIダイアログで、Frame rateを10fpsに設定します。
  3. JPEG quality を99に設定してOKをクリックします。
  4. ImageCaptureツールバーでSave Image to Fileオプションがオンであることを確認します。


  5. Capture Graphics Area Videoアイコン をクリックします。
    Save Graphics Area Video Asダイアログが開きます。
  6. ファイルの保存先とする場所に移動し、任意のファイル名を指定してSaveをクリックします。

要約

このチュートリアルでは、HyperMorphを使用してAcuSolveで形状最適化の問題を設定して解析する方法を知ることができました。モデルのデータベースをインポートする作業から開始し、メッシュのモーフを作成しました。つづいて、設計変数と応答変数を定義し、その応答変数を使用して問題の目標を設定しました。AcuSolveを使用して解析を計算した後、AcuSolveのコマンドプロンプトを使用して、この最適化で使用した設計変数と応答変数を取得しました。最後に、HyperViewを使用して、最適化手順によって管の形状がどのように変化したかを視覚化しました。