MV-7008:AcuSolveとの連成シミュレーションの概要
本チュートリアルでは、AcuSolveと連成させるモデルをMotionViewでセットアップする方法について学習します。
MotionSolveとAcuSolveとの連成シミュレーションインターフェースが加わることにより、流体流れが剛体と連成し、剛体に圧力荷重を発生させ、剛体が複雑に運動するようなマルチフィジックス問題を解くことができます。この機能によって、自身のマルチボディシステムの忠実度を高め、より現実的な結果を得ることが可能となります。
このシナリオでは、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)の両方でサポートされています。クロスプラットフォームでの連成シミュレーションも可能です。
シミュレーションの環境
- MotionSolveとAcuSolve双方へのコネクションの確立
- MotionSolveからAcuSolveへの変位と回転の伝達
- AcuSolveからMotionSolveへの荷重とモーメントの伝達
- 実行時間とライセンスの管理

逆止弁付きパイプ
逆止弁は、流体が1方向のみに流れるよう制限する機械装置です。この弁は、シャッターボディによって制御されます。1方向の流体の流れは、シャッターボディを1方向に押すため、弁を開きます。反対方向の流体の流れは、シャッターボディを逆の方向に押し、そのため、弁は閉じて、流体のパイプ内での流れ反転を阻みます。逆止弁は、ポンプ、化学プラントおよび発電所、ごみ集積ライン、灌漑用スプリンクラー、水圧式ジャッキなどに見られます。
- 流体流れの入口と出口を有するパイプ
- 軸に取り付けられたシャッター板からなる逆止弁のアセンブリ
- シャッターボディの終端の多孔版に取り付けられた止め具
- パイプ内の流体流れは、軸対称であると仮定します。これにより、逆止弁の一部のみをモデル化することで済みます。この例では、下の図の青いパートで示される、形状の30度のセクションがモデル化されます。これを行う利点は、正確な解を捕捉しながらシミュレーション時間の短縮が図られる点にあります。

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

モデルのこの種の動きは、2つのソルバー間で“密に”連成されていると称されます。すなわち、剛体の運動は流体の流れ場に影響を及ぼし、逆にその流れ場は周期的に剛体の運動に影響します。
本チュートリアルの残り部分では、このモデルがAcuSolveで正しくセットアップされていることを前提とします。モデルは、シャッターボディが多孔板とぶつかるまで移動するよう設定されています。MotionViewモデルは、シャッターボディを正しく逆戻りさせるよう、これら2つのボディの接触を含め設計されています。AcuSolve有限要素メッシュが完全につぶされることなく剛体が接触できるよう、流体モデル内の多孔板は正のX方向に0.002mオフセットされています。これによりMotionViewモデルは、接触エンティティにより指定されたように反応する一方で、AcuSolveメッシュが完全につぶれないよう保ちます。
MotionViewでのモデルの読み込み
- Startメニューから を選択します。
-
モデル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度部分 Shutter Body Graphic グラフィック シャッターボディを表すグラフィック。このグラフィックは、連成シミュレーションと接触力の計算の両方に使用されます Perforated Plate Graphic グラフィック グラウンドボディに属する多孔板を表すグラフィック。このグラフィックは、連成シミュレーションと接触力の計算の両方に使用されます Contact 3D Rigid-Rigid Contact Force シャッターボディとグラウンドボディ(多孔板)の間の3次元剛体接触力 Solver Units Data Set このモデル用の単位(ニュートン、メーター、キログラム、秒) Gravity Data Set 本モデルに指定されている重力。重力はアクティブとされており、負のY軸方向に作用します Spring グラフィック シャッターボディと多孔板ボディの間にモデル化されるバネを表すグラフィック。可視化のためのみであり、連成シミュレーションの結果には影響しません 並進 並進ジョイント シャッターボディのX軸に沿った動きを可能にします Spring Spring Damper シャッターボディとグラウンドボディの間に取り付けられるシンプルなスプリングダンパー ContactOutput Output 接触力を求める出力信号 Displacement Output シャッターボディとグラウンドの間の変位を求める出力信号 Velocity Output シャッターボディのグラウンドに対する速度を求める出力信号
AcuSolveと連成させずにモデルを実行
MotionViewモデルが正しくセットアップされていることを検証するために、MotionSolveでモデルを実行し、MotionSolveから警告やエラーメッセージが出ないことを確認します。
-
MotionViewツールバーでRun Solver
をクリックし、Runパネルを表示します。
- XMLファイルの名前を指定します: Valve_Model_no_cosim.xml
- Runをクリックします。
-
ソルバーウィンドウのログを確認します。MotionSolveの実行が完了し、エラーがないことを確認します。Closeをクリックしてソルバーウィンドウを閉じます。
注: このモデルの実行で生成されるアニメーションH3Dファイルを読み込むと、どのパートにも運動はないことが見てとれるはずです。これは、このモデル用のすべての機構はAcuSolveに由来しており、このシミュレーションでは無効となっているためです。
MotionViewモデルが正しくセットアップされていることを検証するために、MotionSolveでモデルを実行し、MotionSolveから警告やエラーメッセージが出ないことを確認します。
MotionSolveとAcuSolveの間でモデルを検証
連成シミュレーションを成功裏に実行するには、AcuSolveで作成されたモデルとMotionViewで作成されたモデルが一貫性をもつ必要があります。2つのモデルが一貫性をもつには、以下の条件が満足されなければなりません。
-
“ウェット”ボディの名称がMotionSolveとAcuSolveの間で一致している。“ウェット”ボディの名称は、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"
- MotionSolveモデル用のprint_intervalは、AcuSolveモデル用のステップサイズと一致しなくてはなりません。本チュートリアルではこれは0.002秒にセットされています。
- MotionSolveステップサイズh_maxをprint_interval(ここでは0.002s)に一致するよう選択します。
-
また、両方のモデルについて終了時間が同じ値にセットされていることを確認します。本チュートリアルでは、AcuSolveモデルとMotionSolveモデル両方の終了時間は0.35秒に設定されています。
MotionViewのRunパネルでprint_interval、ステップサイズ(h_max))、および終了時間をセットします。MotionSolveモデルとAcuSolveモデルの単位は必ずしも一致しなくても構いません。ただし、結果のアニメーションをHyperViewでオーバーレイさせるには、単位が一致している必要があります。MotionViewでの単位は下に示すとおり、Unitsフォームを介してセットされます:
図 5. MotionViewでの単位の設定
MotionSolveモデル内のすべての値は、これらの単位設定に対応して設定されます。
AcuSolveとの連成の設定
AcuSolveと連成させるには、1つまたは複数の“ウェット”ボディが必要です。“ウェット”ボディは、流体流れと作用し、そこにかかる荷重とモーメントを擁するMotionSolveモデル内のボディです。このようなボディは、AcuSolveによって計算される作動流体荷重 / モーメントおよびMotionSolveモデル内の作動流体荷重 / モーメントのために、平行移動または回転することがあり得ます。この例では、単一の“ウェット”ボディ - 衝突する流体によってX軸に沿って移動するシャッターボディを定義します。
MotionViewで“ウェット”としてボディを指定するには:
-
Project Browserから、Shutter Bodyボディを選択します。
下部にBodyパネルが表示されます。図 6. -
Propertiesタブで、Fluid interaction with Acusolveを選択します。
図 7. -
ソルバーデックを作業ディレクトリにエクスポートするには、Exportをクリックします。
モデルのデフォルト名は変更しても構いません。
図 8. モデルを.xmlにエクスポート
この時点で、AcuSolveと連成するためのMotionViewでのモデルのセットアップは完了です。
Compute ConsoleからのMotionSolveおよび連成シミュレーション用のミドルウェアの実行
-
Startメニューで、ソルバーとしてMotionSolveを選択します。
を選択し、ソルバーとしてファイルオープンアイコンをクリックし、先ほどエクスポートしたモデルの場所を探します。
図 9. ディスクからのエクスポートされたモデルの選択
-
Options欄の横の ... アイコンをクリックし、Available Optionsダイアログを開きます。
図 10. 連成シミュレーションフラグの選択
-
–as_cosimオプションをアクティブにします。このフラグが有効になっている際は、Run Managerに下記を実施するよう告げられます:
- MotionSolve実行ファイルを起動し、指定されているモデルを実行
- MotionSolveとAcuSolve間のコミュニケーションを有効にするミドルウェア“acuMSI”を起動
このオプションをアクティブにすると、下に示すダイアログが開き、追加のオプションについて確認が出されます:
図 11. 連成シミュレーションのためのオプションの指定
ここでは、以下のオプションを指定する必要があります:- 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オフ)。
- デフォルトのオプションを保持する場合は、Noneをクリックします。
-
Apply Optionsをクリックし、Closeをクリックします。
図 12. 連成シミュレーションフラグの指定
-
MotionSolveサイドで連成シミュレーションを開始するためのセットアップが完了しました。Runをクリックします。
図 13. MotionSolveモデルの実行
これで、MotionSolveおよびacuMSI実行ファイルが起動されます。MotionSolveの実行は最初のタイムステップで停止します – これは待機モードにいる状態で、AcuSolveが実行されるとまもなく連成シミュレーションが開始します。
図 14. MotionSolveシミュレーションがAcuSolveへの接続を待っている状態
連成シミュレーションのためにAcuSolve実行ファイルを実行
- AcuSolveで連成シミュレーションモデルを実行するには、まずモデルファイルCheck_Valve_Coupled.acsを<installation_directory>\tutorials\mv_hv_hg\mbd_modeling\motionsolve\cosimulationから自身の作業ディレクトリにコピーします。
-
StartメニューからProblem name欄を、AcuSolve .inpファイルに指定されているとおりに変更します。自身のProblem directoryが現在の作業ディレクトリに設定されていることを確実にします。
を選択します。表示されるウィンドウで、
図 15. 連成シミュレーションのためのAcuSolveの起動
このモデルについては、デフォルトの値が使用されます。AcuSolveはシングルプロセッサを使って実行し、AcuConsoleは入力ファイル群を生成し、AcuSolveを起動します。
-
Launchを押して、ソリューションプロセスを開始します。
ソリューションが開始すると、AcuTailウィンドウが開きます。AcuPrepの実行後、AcuSolveはacuRunパスステップで停止します。これは、MotionSolveプロセスの実行を待っている状態です。まもなく、AcuSolveとMotionSolveは互いにコミュニケーションを開始するはずです。両方のソルバーウィンドウで、対応するタイムステップ情報を見ることができるはずです。例えば、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のどちらからでも先に起動できます。
連成シミュレーションからの結果のポスト処理
HyperViewとHyperGraphを使って、 セッション内で連成シミュレーションの結果をポスト処理することができます。
StartメニューからHyperView(HyperGraph)を起動します。
を選択し、-
MotionSolveで生成されたアニメーションH3DをHyperViewで読み込みます。
- HyperViewは、MotionSolve結果ファイルを、最初のタイムステップでグラフィカルウィンドウに読み込みます。このポイントから、アニメーションスライダーのStart/Stopを使って、過渡結果をアニメーション表示できます。
- AcuSolve結果を読み込むにはまず、h3dフォーマットに変換する必要があります。これは、AcuSolveユーティリティであるAcuTransで行うことができます。AcuTransはスタートメニューに用意されています。Altair <version> AcuSolve > AcuSolve Cmd Promptを選択します。
-
結果のディレクトリに進み、以下のコマンドを実行して、AcuSolveデータベースを.h3dフォーマットに変換します:
acuTrans -out -to h3d -h3dopt single -ts A
これにより、シミュレーションについて使用可能なすべてのタイムステップを含んだ単一の.h3dファイルが生成されます。
-
AcuTransを使って、新たに作成されたH3DをHyperView内のMotionSolve結果のH3Dにオーバーレイさせます。これは、上記の手順1.を繰り返し、AcuSolve結果のH3Dを選択する際にOverlayをアクティブ化することで行えます。
図 17. AcuSolve H3DをHyperView内のMotionSolve H3Dにオーバーレイ
読み込みが完了すると、グラフィカルウィンドウには両方の結果が含まれ、前述のとおりアニメーション表示することができます。AcuSolve結果内に含まれる情報を可視化するには、コンタープロットを使うとよいでしょう。Contourボタンをクリックし、パネルを表示させます。
-
下の図に示すとおりオプション群を設定し、Applyをクリックします。
図 18. AcuSolve H3DをHyperView内のMotionSolve H3Dにオーバーレイ
これで、1つのウィンドウにMotionSolveからの結果でオーバーレイされた速度の大きさのコンタープロットが生成されます。
図 19. HyperViewによるMotionSolve結果でオーバーレイされた速度の大きさのプロット
HyperGraphを使って、結果を2次元プロットに表すことも可能です。複数ウィンドウレイアウトで使うことができるため、HyperViewとHyperGraphを同時に開けます。
- まず、前のセクションの説明に従って、HyperViewを開きます。
-
ツールバーからPage Window Layoutボタンをクリックし、ページを縦2つに分割します。
図 20. ページを縦2つに分割
これで自動的に、2つのページが含まれるようグラフィカルウィンドウが調整され、2つのHyperViewインスタンスが表示されます。
- 右側のページの任意の場所をクリックし、Page SelectorボタンをクリックしてHyperGraph 2Dを選択し、HyperGraphに切り替えます。
-
Build Plotsボタンをクリックし、同じ結果ディレクトリから.pltファイルを読み込みます。
.pltがHyperGraphに読み込まれると、2つの出力がプロッティングできる状態です。
-
以下の選択を行います:
- Y Typeには、Displacementを選択します。
- Y Requestの下でDisplacement (on Shutter Body)を選択します。
- Y Componentの下でXを選択します。
- Applyをクリックします。
HyperGraphを使って、同じプロット上に追加のトレースを作成し、次のようなプロットを作成することができます。図 21. プロッティング用の信号の選択
図 22.