MV-7008:AcuSolveとの連成シミュレーションの概要

本チュートリアルでは、AcuSolveと連成させるモデルをMotionViewでセットアップする方法について学習します。

MotionSolveAcuSolveとの連成シミュレーションインターフェースが加わることにより、流体流れが剛体と連成し、剛体に圧力荷重を発生させ、剛体が複雑に運動するようなマルチフィジックス問題を解くことができます。この機能によって、自身のマルチボディシステムの忠実度を高め、より現実的な結果を得ることが可能となります。

このシナリオでは、MotionSolveは剛体の変位と回転を計算する一方で、AcuSolveはそれらのボディの荷重とモーメントを計算します。両ソルバーは、TCPソケットプロトコルを介し、協調して計算を進めながら、データを交換し合います。すなわち、2つのソルバーは別のマシン上、別のプラットフォーム上にあってもなお、互いにコミュニケーションをとることができます。例えば、CFDをHPC上で実行し、MBSシミュレーションをローカルのラップトップ上で実行することが可能です。

チュートリアルの目的

MotionSolve-AcuSolve連成シミュレーションインターフェースを使用し、流れ場を有するパイプ内の逆止弁の剛体運動を連成させます。AcuSolveモデルは既にセットアップされたものが<installation_directory>\tutorials\mv_hv_hg\mbd_modeling\motionsolve\cosimulation\Check_Valve_Coupled.acsに用意されています。このモデルをAcuSolveで実行するための手順が、本チュートリアルに含まれています。

AcuSolveでのモデルのセットアップについて詳細は、<installation_directory>\acusolve\<platform>\help\acu\acusolve_tut\Tutorials\Check_Valve_Coupled\をご参照ください。

ソフトウェア要件

本チュートリアルを成功裏に完了するためには、下記のものがインストールされている必要があります:
Machine A Machine B
ソフトウェア プラットフォーム ソフトウェア プラットフォーム
MotionSolve/MotionView Windows 64-bitまたはLinux 64-bit AcuSolve Windows 64-bitまたはLinux 64-bit

上の表から、連成シミュレーションはWindowsおよびLinuxプラットフォーム(64-bit)の両方でサポートされています。クロスプラットフォームでの連成シミュレーションも可能です。

シミュレーションの環境

MotionSolveAcuSolveとの連成シミュレーションインターフェースは、“middleware”ユーティリティ実行ファイルacuMSI.exeから成っています。この実行ファイルは、以下に関与します:
  • MotionSolveAcuSolve双方へのコネクションの確立
  • MotionSolveからAcuSolveへの変位と回転の伝達
  • AcuSolveからMotionSolveへの荷重とモーメントの伝達
  • 実行時間とライセンスの管理
これは、下の図に示すとおりです:


図 1. 連成シミュレーションのセットアップ

逆止弁付きパイプ

逆止弁は、流体が1方向のみに流れるよう制限する機械装置です。この弁は、シャッターボディによって制御されます。1方向の流体の流れは、シャッターボディを1方向に押すため、弁を開きます。反対方向の流体の流れは、シャッターボディを逆の方向に押し、そのため、弁は閉じて、流体のパイプ内での流れ反転を阻みます。逆止弁は、ポンプ、化学プラントおよび発電所、ごみ集積ライン、灌漑用スプリンクラー、水圧式ジャッキなどに見られます。

本チュートリアルでモデル化されている形状を、下の図に示します。下記で構成されています:
  • 流体流れの入口と出口を有するパイプ
  • 軸に取り付けられたシャッター板からなる逆止弁のアセンブリ
  • シャッターボディの終端の多孔版に取り付けられた止め具
  • パイプ内の流体流れは、軸対称であると仮定します。これにより、逆止弁の一部のみをモデル化することで済みます。この例では、下の図の青いパートで示される、形状の30度のセクションがモデル化されます。これを行う利点は、正確な解を捕捉しながらシミュレーション時間の短縮が図られる点にあります。


図 2. 逆止弁付きパイプモデルのセットアップ

逆止弁アセンブリは、軸に取り付けられた円盤状のモデルで構成されています。上の図において赤の矢印で指定される方向に流体が流れる際、流体は、シャッターボディを同じ方向に移動するよう強制します。シャッターボディの運動はまた、シャッターボディと多孔版との間に取り付けられているスプリングダンパーによって影響を受けます。最後に、シャッターボディと止め具の間に3次元剛体接触がモデル化され、シャッターボディの動きを流れの方向に拘束します。

MBSモデルについては、シャッターボディと多孔版の1/12のみがモデル化されます。

シミュレーションの開始時、流れ場は安定しています。入り口に指定されている圧力が流れを送り、時間の経過と共に区分線形関数として変化します。これは、下の図に示すとおりです。この圧力が高まると、流れは加速し、シャッターボディを押し開け、パイプに流れを通します。


図 3. 入口圧力

モデルのこの種の動きは、2つのソルバー間で“密に”連成されていると称されます。すなわち、剛体の運動は流体の流れ場に影響を及ぼし、逆にその流れ場は周期的に剛体の運動に影響します。

本チュートリアルの残り部分では、このモデルがAcuSolveで正しくセットアップされていることを前提とします。モデルは、シャッターボディが多孔板とぶつかるまで移動するよう設定されています。MotionViewモデルは、シャッターボディを正しく逆戻りさせるよう、これら2つのボディの接触を含め設計されています。AcuSolve有限要素メッシュが完全につぶされることなく剛体が接触できるよう、流体モデル内の多孔板は正のX方向に0.002mオフセットされています。これによりMotionViewモデルは、接触エンティティにより指定されたように反応する一方で、AcuSolveメッシュが完全につぶれないよう保ちます。

MotionViewでのモデルの読み込み

  1. StartメニューからAltair <version> MotionView <version>を選択します。
  2. モデルValve_model.mdl<altair>\<version>\tutorials\mv_hv_hg\mbd_modeling\motionsolve\cosimulationから開きます。
    このモデルはMotionSolveで実行するために準備されていますが、AcuSolveと連成シミュレーションを行うには修正が必要です。それらの手順の概要を以下に示します。
    モデルがMotionViewに読み込まれたら、グラフィカルウィンドウには逆止弁、多孔板、ジョイントおよびばねエンティティ、スプリングダンパーのグラフィックが表示されます(下の図参照)。


    図 4. 圧力逆止弁のMotionSolveモデル
    MotionSolveモデルは、以下のコンポーネントで構成されています:
    成分名 コンポーネントの種類 詳細
    Ground Body Rigid Body グラウンドボディ
    Shutter Body Rigid Body シャッターボディの30度部分
    Perforated Body Rigid Body 多孔板の30度部分
    Contact 3D Rigid-Rigid Contact Force シャッターボディと多孔ボディの間の3次元剛体接触力
    Solver Units Data Set このモデル用の単位(ニュートン、メーター、キログラム、秒)
    Gravity Data Set 本モデルに指定されている重力。重力はアクティブとされており、負のY軸方向に作用します
    Shutter Body Graphic グラフィック シャッターボディを表すグラフィック。このグラフィックは、連成シミュレーションと接触力の計算の両方に使用されます
    Perforated Plate Graphic グラフィック 多孔板ボディを表すグラフィック。このグラフィックは、連成シミュレーションと接触力の計算の両方に使用されます
    Spring グラフィック シャッターボディと多孔板ボディの間にモデル化されるバネを表すグラフィック。可視化のためのみであり、連成シミュレーションの結果には影響しません
    Fixed 固定ジョイント 多孔板ボディをグラウンドに固定
    並進 並進ジョイント シャッターボディのX軸に沿った動きを可能にします
    Spring Spring Damper シャッターボディと多孔板ボディの間に取り付けられるシンプルなスプリングダンパー
    ContactOutput Output 接触力を求める出力信号
    Displacement Output シャッターボディとグラウンドの間の変位を求める出力信号
    Velocity Output シャッターボディのグラウンドに対する速度を求める出力信号

AcuSolveと相互作用する“ウェット”ボディの指定

AcuSolveと連成させるには、1つまたは複数の“ウェット”ボディが必要です。“ウェット”ボディは、流体流れと作用し、そこにかかる荷重とモーメントを擁するMotionSolveモデル内のボディです。このようなボディは、AcuSolveによって計算される作動流体荷重 / モーメントおよびMotionSolveモデル内の作動流体荷重 / モーメントのために、平行移動または回転することがあり得ます。この例では、単一の“ウェット”ボディ - 衝突する流体によってX軸に沿って移動するシャッターボディを定義します。

MotionViewでボディを“ウェット”として定義するには、以下に説明するとおり、システム定義を使用する必要があります。

  1. ModelシステムをProjectブラウザから選択することにより、システム定義をモデルに追加します。
    最下部のパネルを選択します。
  2. Import/ExportタブでImportを選択し、File openアイコンをクリックします。
  3. この連成シミュレーションに使用されるシステム定義は、<installation_directory>\utility\mbd\fluid_force\sys_fluid_force.mdlにあります。Importをクリックし、ファイルをインポートします。
    Import Definitionダイアログが表示されます。
  4. ラベルは変更せず、OKをクリックします。


    図 5. モデルへのシステム定義の追加

    System Wet Body という名称の新しいシステムが作成されます。

  5. 新たに作成されたSystem Wet Bodyをクリックし、下の図のとおりAttachmentsタブをクリックすることにより、“ウェット”ボディを指定します。


    図 6. “ウェット”ボディと関連付けされた剛体の定義
  6. Bodyコレクターをクリックし、Shutter Bodyに関連付けします。
    左側のProjectブラウザの下でこのシステムのコンテンツを確認すると、以下の新しいコンポーネントが作成されていることが見てとれます:
    成分名 コンポーネントの種類 詳細
    Shutter Body - AcuSolveForce Action Only, TransRotational Force AcuSolveにより計算された荷重およびモーメントは、このフォースコンポーネントを介して“ウェット”ボディに適用されます
    Plant Input Control Plant Input AcuSolveは荷重とトルクをこのモデリング要素に置きます
    FromAS_FX

    FromAS_FY

    FromAS_FZ

    FromAS_TX

    FromAS_TY

    FromAS_TZ

    Solver Variables これらの変数は、AcuSolveからの荷重(X、YおよびZ)およびモーメント(X、Y、Z)の値を保持します
    Define wet_body attribute Template このテンプレートは、属性is_wet_bodyを、このシステムに選択されている“ウェット”ボディに追加します
    Define co-simulation with AcuSolve Data Set このテンプレートは、属性acusolve_cosimをモデルに追加し、AcuSolveと連成シミュレーションを行うようMotionSolveに指示します。

    この時点で、AcuSolveと連成するためのMotionViewでのモデルのセットアップが完了しています。

AcuSolveと連成させずにモデルを実行

MotionViewモデルが正しくセットアップされていることを確実にするために、MotionSolveでモデルを実行し、MotionSolveから警告やエラーメッセージが出ないことを確認します。

  1. 下の図に示すテンプレートDefine co-simulation with AcuSolveを非アクティブにするには、ブラウザ内でその上を右クリックし、 Deactivateを選択します。


    図 7. 連成シミュレーションテンプレートの非アクティブ化

    これを行うことで、このモデルがAcuSolveとの連成シミュレーション用であることをMotionSolveに告げるフラグが非アクティブになります。したがって、MotionSolveはこのモデルを、AcuSolveとの連成なしのスタンドアローンモデルとして解析します。

    このモデルを、MotionViewのRunパネルを使って実行し、エラーや警告のメッセージが出ないことを確認します。これは、連成シミュレーションを行う前に、モデルが正しく機能することを確実にするために推奨されます。

    このモデルの実行からアニメーションH3Dを読み込む場合、どのパートにも運動はないことが見てとれるはずです。これは、このモデル用のすべての機構はAcuSolveに由来しており、このシミュレーションでは無効となっているためです。

  2. モデルを検証し終えたら、テンプレートDefine co-simulation with AcuSolveを再度アクティブにし、下の図に示すとおり、連成シミュレーションを実行します。


    図 8. 連成シミュレーションテンプレートのアクティブ化
  3. テンプレートをアクティブにするには、ブラウザ上でそのテンプレートを右クリックし、Activateを選択します。
  4. モデルを自身の作業ディレクトリにエクスポートするには、Export to Solverボタンをクリックし、ソルバーデックを作業ディレクトリにエクスポートします。
    モデルのデフォルト名は変更しても構いません。


    図 9. モデルを.xmlにエクスポート

MotionSolveAcuSolveの間でモデルを検証

連成シミュレーションを成功裏に実行するには、AcuSolveで作成されたモデルとMotionViewで作成されたモデルが一貫性をもつ必要があります。2つのモデルが一貫性をもつには、以下の条件が満足されなければなりません。

  1. “ウェット”ボディの名称がMotionSolveAcuSolveの間で一致している。“ウェット”ボディの名称は、AcuSolveサイドの*.inpファイルで指定されます。
    注: 名称は、大文字小文字を区別し、完全に一致しなければなりません(以下のテキストを参照)。
    MotionSolve (.xml):
    <!-- MODEL.b_Part1 -->
    <Body_Rigid
    full_label = "Model-Shutter Body"
    AcuSolve (.inp):
    EXTERNAL_CODE_SURFACE( "Valve wall" ) {
    rigid_body_name = "Model-Shutter Body"
  2. MotionSolveモデル用のprint_intervalは、AcuSolveモデル用のステップサイズと一致しなくてはなりません。本チュートリアルではこれは0.002秒にセットされています。
  3. MotionSolveステップサイズh_maxprint_interval(ここでは0.002s)に一致するよう選択します。
  4. また、両方のモデルについて終了時間が同じ値にセットされていることを確認します。本チュートリアルでは、AcuSolveモデルとMotionSolveモデル両方の終了時間は0.35秒に設定されています。
    MotionViewのRunパネルでprint_interval、ステップサイズ(h_max))、および終了時間をセットします。
    MotionSolveモデルとAcuSolveモデルの単位は必ずしも一致しなくても構いません。ただし、結果のアニメーションをHyperViewでオーバーレイさせるには、単位が一致している必要があります。MotionViewでの単位は下に示すとおり、Unitsフォームを介してセットされます:


    図 10. MotionViewでの単位の設定

    MotionSolveモデル内のすべての値は、これらの単位設定に対応して設定されます。

Compute ConsoleからのMotionSolveおよび連成シミュレーション用のミドルウェアの実行

  1. Startメニューで、ソルバーとしてAll Programs > Altair <version> > Compute Consoleを選択し、ソルバーとしてMotionSolveを選択します。
    ファイルオープンアイコンをクリックし、先ほどエクスポートしたモデルの場所を探します。


    図 11. ディスクからのエクスポートされたモデルの選択
  2. Options欄の横の ... アイコンをクリックし、Available Optionsダイアログを開きます。


    図 12. 連成シミュレーションフラグの選択
  3. –as_cosimオプションをアクティブにします。このフラグが有効になっている際は、Run Managerに下記を実施するよう告げられます:
    1. MotionSolve実行ファイルを起動し、指定されているモデルを実行
    2. MotionSolveAcuSolve間のコミュニケーションを有効にするミドルウェア“acuMSI”を起動

    このオプションをアクティブにすると、下に示すダイアログが開き、追加のオプションについて確認が出されます:



    図 13. 連成シミュレーションのためのオプションの指定
    ここでは、以下のオプションを指定する必要があります:
    acuMSIオプション群
    -aport <integer>

    AcuSolveとacuMSIとの間のコミュニケーションのためのコミュニケーションポート番号を指定します。デフォルトは48000です。

    AcuSolveとacuMSIとの間のコミュニケーション用デフォルトポートを変更する必要がある場合、この引数の変更に加え、AcuSolveの入力ファイル内で、変更されたポート番号を指定する必要があります。

    -mport <integer>

    MotionSolveとacuMSIとの間のコミュニケーションのためのコミュニケーションポート番号を指定します。デフォルトは94043です。

    注: MotionSolveとacuMSIとの間のコミュニケーション用デフォルトポートを変更する必要がある場合、この引数の変更に加え、環境変数MS_AS_PORT内で、変更されたポート番号を指定する必要があります。MotionSolveはこの環境変数をシミュレーションの開始時にチェックし、それに応じて、リスニングポートを変更します。
    -mi <integer>
    2つのソルバー間のタイムステップごとの反復計算の最大数を指定します。デフォルトは0です。
    -v <integer>
    acuMSIからの出力ファイルのverbosityレベルを指定します。デフォルトは0に設定されています(verbosityオフ)。
  4. デフォルトのオプションを保持する場合は、Noneをクリックします。
  5. Apply Optionsをクリックし、Closeをクリックします。


    図 14. 連成シミュレーションフラグの指定
  6. MotionSolveサイドで連成シミュレーションを開始するためのセットアップが完了しました。Runをクリックします。


    図 15. MotionSolveモデルの実行

    これで、MotionSolveおよびacuMSI実行ファイルが起動されます。MotionSolveの実行は最初のタイムステップで停止します – これは待機モードにいる状態で、AcuSolveが実行されるとまもなく連成シミュレーションが開始します。



    図 16. MotionSolveシミュレーションがAcuSolveへの接続を待っている状態

連成シミュレーションのためにAcuSolve実行ファイルを実行

  1. AcuSolveで連成シミュレーションモデルを実行するには、まずモデルファイルCheck_Valve_Coupled.acs<installation_directory>\tutorials\mv_hv_hg\mbd_modeling\motionsolve\cosimulationから自身の作業ディレクトリにコピーします。
  2. StartメニューからAll Programs > Altair <version> > AcuSolve Job Launcherを選択します。表示されるウィンドウで、Problem name欄を、AcuSolve .inpファイルに指定されているとおりに変更します。自身のProblem directoryが現在の作業ディレクトリに設定されていることを確実にします。


    図 17. 連成シミュレーションのためのAcuSolveの起動

    このモデルについては、デフォルトの値が使用されます。AcuSolveはシングルプロセッサを使って実行し、AcuConsoleは入力ファイル群を生成し、AcuSolveを起動します。

  3. Launchを押して、ソリューションプロセスを開始します。
    ソリューションが開始すると、AcuTailウィンドウが開きます。AcuPrepの実行後、AcuSolveはacuRunパスステップで停止します。これは、MotionSolveプロセスの実行を待っている状態です。
    まもなく、AcuSolveMotionSolveは互いにコミュニケーションを開始するはずです。両方のソルバーウィンドウで、対応するタイムステップ情報を見ることができるはずです。例えば、MotionSolveウィンドウでは、連成シミュレーションのはじめに、以下のようなものを見ることができます:
    INFO: [AS-COSIM] Connected to AcuMsi on port 94043
    
    INFO: [AS-COSIM] License checked out.
    
    …
    
    Time=2.000E-06; Order=1; H=2.000E-06 [Max Phi=1.314E-16]
    Time=3.600E-02; Order=2; H=2.000E-03 [Max Phi=1.653E-08]
    …

    ラップトップ(Intel i7. 2.8GHz)では、この連成シミュレーションは完了までに約15分かかります。

    連成シミュレーションの起動で順序の依存性はありません。すなわち、MotionSolveまたはAcuSolveのどちらからでも先に起動できます。

連成シミュレーションからの結果のポスト処理

HyperViewHyperGraphを使って、HyperWorks Desktop環境内で連成シミュレーションの結果をポスト処理することができます。

StartメニューからAltair > <version number> HyperView (HyperGraph)を選択し、HyperViewHyperGraph)を起動します。

連成シミュレーションのMotionSolveパートにより生成されたアニメーションH3Dには、MotionSolveからの結果のみが含まれます。同様に、AcuSolveからの結果には、AcuSolveモデルの結果のみが含まれます。連成シミュレーションからの結果をアニメーション表示するには、以下の手順に従います:

  1. MotionSolveで生成されたアニメーションH3DをHyperViewで読み込みます。
    1. Load Modelパネルに移動します。
    2. Load modelの横にあるファイルオープンボタンをクリックし、結果のディレクトリ(.xmlファイルがある場所)を探します。
    3. h3dファイルを選択し、Openをクリックします。
    4. Applyをクリックします。


      図 18. HyperViewでのMotionSolve H3Dの読み込み
  2. HyperViewは、MotionSolve結果ファイルを、最初のタイムステップでグラフィカルウィンドウに読み込みます。このポイントから、アニメーションスライダーのStart/Stopを使って、過渡結果をアニメーション表示できます。
  3. AcuSolve結果を読み込むにはまず、h3dフォーマットに変換する必要があります。これは、AcuSolveユーティリティであるAcuTransで行うことができます。AcuTransはスタートメニューに用意されています。Altair <version> AcuSolve > AcuSolve Cmd Promptを選択します。
  4. 結果のディレクトリに進み、以下のコマンドを実行して、AcuSolveデータベースを.h3dフォーマットに変換します:
    acuTrans -out -to h3d -h3dopt single -ts A

    これにより、シミュレーションについて使用可能なすべてのタイムステップを含んだ単一の.h3dファイルが生成されます。

  5. AcuTransを使って、新たに作成されたH3DをHyperView内のMotionSolve結果のH3Dにオーバーレイさせます。これは、上記の手順1.を繰り返し、AcuSolve結果のH3Dを選択する際にOverlayをアクティブ化することで行えます。


    図 19. AcuSolve H3DをHyperView内のMotionSolve H3Dにオーバーレイ

    読み込みが完了すると、グラフィカルウィンドウには両方の結果が含まれ、前述のとおりアニメーション表示することができます。AcuSolve結果内に含まれる情報を可視化するには、コンタープロットを使うとよいでしょう。Contourボタンをクリックし、パネルを表示させます。

  6. 下の図に示すとおりオプション群を設定し、Applyをクリックします。


    図 20. AcuSolve H3DをHyperView内のMotionSolve H3Dにオーバーレイ

    これで、1つのウィンドウにMotionSolveからの結果でオーバーレイされた速度の大きさのコンタープロットが生成されます。



    図 21. HyperViewによるMotionSolve結果でオーバーレイされた速度の大きさのプロット

HyperGraphでのMotionSolve結果のプロッティング

HyperGraphを使って、結果を2次元プロットに表すことも可能です。HyperWorks Desktopは複数ウィンドウレイアウトで使うことができるため、HyperViewHyperGraphを同時に開けます。

  1. まず、前のセクションの説明に従って、HyperViewを開きます。
  2. ツールバーからPage Window Layoutボタンをクリックし、ページを縦2つに分割します。


    図 22. ページを縦2つに分割

    これで自動的に、2つのページが含まれるようグラフィカルウィンドウが調整され、2つのHyperViewインスタンスが表示されます。

  3. 右側のページの任意の場所をクリックし、Page SelectorボタンをクリックしてHyperGraph 2Dを選択し、HyperGraphに切り替えます。
  4. Build Plotsボタンをクリックし、同じ結果ディレクトリから.pltファイルを読み込みます。
    .pltHyperGraphに読み込まれると、2つの出力がプロッティングできる状態です。
  5. 以下の選択を行います:
    1. Y Typeには、Displacementを選択します。
    2. Y Requestの下でDisplacement (on Shutter Body)を選択します。
    3. Y Componentの下でXを選択します。
    4. Applyをクリックします。
    HyperGraphを使って、同じプロット上に追加のトレースを作成し、次のようなプロットを作成することができます。


    図 23. プロッティング用の信号の選択


    図 24.