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

前提条件

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

このチュートリアルを実行する前に、HyperMesh_tutorial_inputs.zip<Altair_installation_directory>\hwcfdsolvers\acusolve\win64\model_files\tutorials\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. Entity Editorで、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をクリックします。Entity Editorで、
    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をクリックします。Entity Editorで、
    1. TypeをOUTFLOWに変更します。
    2. Interpolated Motion Surfaceセクションで、DisplayActivate the interpolated motion surfaceをオンにします。


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


    図 8.
  5. Fluidをクリックします。Entity Editorで、
    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. Entity Editorで、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. Entity Editorで、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. Entity Editorで、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. Entity Editor01.Global > 06.Optimizationを拡張表示します。
  2. Entity Editormaximize_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.

AcuProbeによる解析のモニター

AcuProbeを使用して、解析時間におけるさまざまな変数をモニターできます。Auto run AcuProbeフラグがOnに設定されている場合、Solver Job LauncherによってAcuProbeウィンドウが開かれます。

  1. 左側のData TreeSurface Output > Inflow > Pressureを拡張表示します。
  2. pressureを右クリックし、Plotを選択します。
    注: プロットを正しく表示するために、ツールバーで をクリックする必要がある場合があります。
  3. Edit > Toggle X-Axis-Caseを選択し、x軸をTime StepからCase IDに変更します。


    図 27.

AcuGetDvとAcuGetRsp

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

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

    acuGetDv

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


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

    acuGetRsp

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


    図 29.

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

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

HyperViewの起動とモデルおよび結果の読み込み

  1. HyperMeshのメインメニューでApplications > HyperViewをクリックしてHyperMeshを開きます。
    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. Result typeとしてPressureを選択します。
  3. Components エンティティセレクターをクリックします。Extended Entity Selection ダイアログでDisplayedを選択します。
  4. Applyをクリックして圧力コンターを表示します。
  5. パネル領域のDisplayタブで、Discrete colorオプションをオフにします。


    図 30.
  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を使用して、最適化手順によって管の形状がどのように変化したかを視覚化しました。