MV-1015:Spline3Dを使ったエンジン内燃焼力のモデル化

本チュートリアルでは、2つの独立変数に依存する入力をSpline3Dを用いてモデル化する方法について学習します。

ここでは、図 1に示すような単気筒エンジンモデルを構築します。
図 1.
Spline3Dとは?
Spline3Dsは、2つの独立なベクトルまたは軸を有する3次元座標系にプロットされる参照データです。これらは、3番目の軸に沿って一定の間隔に置かれる多数の2次元スプライン(カーブ)として可視化が可能です。例えば、ブッシュは通常、力vs.変位のカーブにより表現されます。力vs.変位はまた、温度と共に変化します。事実上、ブッシュの力 - 変位および温度については、2つの独立変数が存在します。別の例として、エンジン圧力(または力)vs.クランク角マップ(P-Theta図として知られる)が挙げられます。P-thetaマップは、異なるエンジン速度(またはRPM)で変化します。そのような状況を、Spline3Dを使ってモデル化することができます。

本演習では、エンジン機構がシミュレーションされます。クランク角とエンジンスピードに応じて変化する燃焼力が、Spline3Dを使ってモデル化されています。

モデルの確認

このステップでは、モデルを読み込んで確認します。

mbd_modeling\interactive\spline3dフォルダーから、ファイルSingleCylEngine.mdlおよびFTheta.csvを自身の<作業ディレクトリ>にコピーします。
  1. 新しいMotionViewセッションを開始します。
  2. (Open Model)アイコンをクリックし、SingleCylEngine.mdlモデルファイルを開きます。
  3. モデルを確認します。
    1. このモデルは、フライホイールを有するピストンシリンダー機構です。
    2. モデルは、2つのシステムSystem Cyl1とSystem Flywheelのを有しています。
  4. System Flywheelを確認します。
    1. Flywheel(Crankに固定されている)は、マーカー間の運動に基づいた速度により駆動されます。マーカーは入力についてカーブ(Crank_RPM)を参照しています。
      図 2. Motionパネル - Connectivityタブ


      図 3. Motion Panel - Propertiesタブ(ExpressionはAKISPL関数を使ってカーブを参照している)
    2. カーブCrank_RPMは、シミュレーション中のクランクスピードの時刻歴を示しています。スピードは500 RPMまで上昇し、その後さらに、1000、1500、2000 RPMまで上がります。


      図 4. Crank_RPMカーブ
    3. 2つのソルバー変数Crank_angle (deg)およびCrank_RPMは、クランクの角回転(単位: 度)と速度(RPM)経路です。
    4. 出力は、クランク角とRPMを測るために定義されます。
  5. System Cyl1を確認します。
    1. System Flywheel内のソルバー変数はアタッチメントとしてこのシステムに渡され、変数名arg_Crank_angle_SolVarおよびarg_Crank_RPM_SolVarを有します。これらを使って独立変数を定義し、一方、Spline3Dを使って燃焼力が定義されます。
    2. Combustion_ref マーカーは燃焼力用の参照として存在し、そのZ軸はピストンの運動方向に沿って方向付けされています。

Spline3Dエントリの追加

このステップでは、Spline3Dを使ってピストンに燃焼力を追加します。

  1. 以下のいずれかの方法で、Splineエンティティを追加します:
    • ProjectブラウザSystem Cyl1を右クリックしてAdd > Reference Entity > Spline3Dを選択します。


      図 5.
    • ProjectブラウザSystem Cly1を選択し、(Spline3D)アイコンをクリックします。
  2. ダイアログ内で、LabelにF_ThetaSpline、Variableにspl3d_F_ThetaSplineと入力します。


    図 6.
  3. OKをクリックします。
    これで、Spline3Dパネルが表示され、Propertiesタブがアクティブになります。
  4. Typeドロップダウンメニューから、Valueを選択します。
    注: スプラインに関するデータは、FileまたはValue手法を使って定義できます。Fileタイプの場合、.csvフォーマットの外部ファイルへの参照が必要となります。Valueの場合、値は.CSVファイルから(Importを使って)インポート、または手動で入力することが可能です。本チュートリアルでは、値を外部ファイルからインポートします。
  5. Importボタンをクリックし、Import Values From Fileダイアログを表示します。
  6. 作業ディレクトリ<working directory>からFTheta.csvに進み、OKをクリックします。
  7. 表示されたWarningダイアログでYesをクリックします。
    Spline3Dのソースとして使用する.csv ファイルは、図 7に示すフォーマットでなければなりません。
    • 第1列に、1つ目の独立変数であるX-軸値(図 7で青色部分)を有する
    • 第1行に、2つ目の独立変数であるZ-軸値(図 7で赤色部分)を有する
    • その他の列にはY-軸値(図 7で緑色部分)を有し、各列は対応するZ-軸値に属する


    図 7.
    File入力タイプの使用時に、同じフォーマットが適用可能です。
    インポートが終わると、それらの値がパネル内に入力されます。
  8. Panel内で(Expansion)ボタンをクリックすることでSpline Values Table Dataウィンドウを開き、テーブル内で値を確認することが可能です。


    図 8.


    図 9.
    注: 値を手動で入力する際は、コンテキストメニューが利用でき、行および列のデータをInsert(挿入)/Delete(削除)/Append(追加)することが可能です。これらのメニューには、任意の行または列のヘッダーを右クリックすることでアクセスできます。一番最後の行 / 列を右クリックすると、Appendオプションも利用することが可能です。


    図 10.


    図 11.
  9. CloseSpline Values Table Dataウィンドウを閉じます。
  10. Linear Extrapolation のチェックボックスを有効にします。


    図 12.
    これで、ユーザーが提供したデータの範囲を超えた値をソルバーが探した場合に、値が外挿されることになります。
  11. Show Splineボタンをクリックし、スプラインをグラフィカルに可視化します。


    図 13.
    3つの軸すべてをアイソメトリックビュー(等距離図)で見ることができます。
  12. Closeをクリックしてビューアーを閉じます。
    インポートされた値は、異なるスピードにおけるCombustion Force on Piston vs Theta(クランク角)ダイアグラムです(図 14参照)。F-Thetaのカーブ形状は、異なるエンジンまたはクランクスピードにおいて僅かに変化します。同じプロットは、Z-軸に沿って4つの異なるプロットを置くことで、Spline3D viewerでも確認できます。


    図 14. Spline3D用の入力データ

Spline3Dを使ったフォースの追加

このステップでは、シリンダー内の燃焼を表すために、フォースを追加します。これを、Spline3Dエントリの追加で加えられたSpline3Dにマッピングします。

  1. 以下の方法のいずれかにより、フォースを追加します:
    • ProjectブラウザSystem Cyl1で右クリックし、コンテキストメニューからAdd > Force Entity > Forceを選択します。
    • ProjectブラウザSystem Cyl1を選択し、次に、Force Entityツールバーの(Force)アイコンを右クリックします。
  2. ダイアログ内で、LabelにThetaSpline Forceと入力し、Variable名を入力します。OKをクリックします。
  3. ForceパネルのConnectivityタブで、Forceを使ってAction reactionを選択します。
  4. 結合を図 15に示すとおりとします。
    1. 入力コレクター(など)をダブルクリックし、モデルツリーを使用します。
    2. モデリングウィンドウから、希望するエンティティを選択します。


    図 15.
    注: Ground Bodyを参照するBody 2は、System Cyl1システムへのアタッチメントを通して結合します。
  5. Trans Propertiesタブから、FzタイプをSpline3Dに変更します。
  6. (Spline3Dコレクター)をダブルクリックします。
  7. Select a Spline3Dダイアログから、モデルツリーSystem Cyl1を展開し、F_ThetaSplineを選択します。


    図 16.
  8. OKをクリックします。
  9. Independent variable X欄に、式 `MOD({arg_Crank_angle_SolVar.VARVAL},720)`を入力します。
  10. In the Independent variable Z欄に、式 `{arg_Crank_RPM_SolVar.VARVAL}`.を入力します。
  11. Model checkツールバーで、(Check Model)をクリックします。


    図 17.
    注: Independent variable X内で使用されているソルバー関数 MOD()は、System Flywheel内のソルバー変数Crank_angle (deg)を(System Cyl1へのアタッチメントarg_Crank_angle_SolVarを介して)参照します。この関数は、1つ目の引数値(ソルバー変数の値)を2つ目の引数値(720)で割った余りを計算し、それによって720度毎のIndependent variable Xをリセットします。
  12. モデルを保存するには、メニューバーからFile > Save As > Modelをクリックします。

モデルの解析

このステップでは、MotionSolveでモデルを解析します。

  1. General Actionsツールバーで、(Run)をクリックします。
  2. Runパネルで、End timeに40秒と入力し、Print intervalを0.001に変更します。
  3. (Open File)アイコンをクリックし、MotionSolve XMLファイルの名称と保存場所を割り当てます。


    図 18.
  4. Run ボタンをクリックします。
    これでMotionSolveを起動し、モデルを解析します。
  5. シミュレーションが完了したら、CloseHyperWorksSolver Viewウィンドウとメッセージログを閉じます。

結果のポスト処理

このステップでは、Spline3DモデルからのMotionSolve結果をポスト処理します。

開始する前に、ステップモデルの解析を完了してください。
  1. Runパネルで、Animateボタンをクリックします。
    これで、 HyperViewウィンドウに結果が読み込まれます。
  2. Animationツールバーから(Start/Pause Animation)ボタンをクリックし、モデルをアニメーション表示します。
  3. Piston上のフォースを可視化します。
    1. (Vector)アイコンをクリックします。
    2. Vectorパネルで、PistonグラフィックスをAssembliesコレクターとして選択します。
      すべてのグラフィックスを半透明に設定して見易くすることも可能です。VisualizationツールバーからWireFrame > Transparent Elements and Feature Linesをクリックします。
      図 19.
  4. Page Controlsツールバーから(Add Page)アイコンをクリックします。
  5. アプリケーション選択ドロップダウンメニューを使って、クライアントを HyperGraph 2Dに切り替えます。
  6. Page controlsツールバーから、の横の矢印をクリックし、(3つのウィンドウのレイアウト)を選択します。
  7. Build Plotsパネルでをクリックし、MotionSolveの実行からの.pltファイルを読み込みます。
  8. Crank_angle (deg)をプロットします。
    1. 1つ目のウィンドウ(上部左側)をクリックしてアクティブにします。
    2. Y TypeにUser Definedをクリックします。
    3. Y Requestに REQ/70000003 Crank_angle (deg)をクリックします。
    4. Y Componentにf3をクリックします。


      図 20. Crank_angle (deg)をプロットするための選択
  9. Z方向のCombustionForceをプロットします。
    1. 2つ目のウィンドウ(上部右側)をクリックしてアクティブにします。
    2. Y TypeにForceをクリックします。
    3. Y RequestにREQ/70000002 ThetaSpline Force on Piston (ForceOnPiston)をクリックします。
    4. Y ComponentにZをクリックします。


    図 21. CombustionForceをプロットするための選択
  10. Pistonに加えられるスピードが異なる場合のForce vs Thetaプロットを描きます。
    これにより、本チュートリアルのSpline3Dエントリの追加ステップで用いられたSpline3Dの使用方法が示されます。
    1. 3つ目のウィンドウ(下部)のモデリングウィンドウをクリックし、アクティブウィンドウとします。
    2. Curvesツールバーから(Define Curves)アイコンをクリックします。
    3. Add ボタンをクリックします。
    4. Curve欄をクリックし、カーブの名称を500 RPMに変更します。
    5. SourceをMathに変更します。
    6. x欄に、式p2w1c1.y[subrange(p2w1c1.x,6,7)]を入力します。y欄に、式p2w2c1.y[subrange(p2w2c1.x,6,7)]を入力します。


      図 22. Force vs Thetaのためのパネルのエントリ
    7. 適用(Apply)をクリックします。
      注: p2w1c1は、Window 1のPage 2にプロットされたCurve 1を示します。なんらかの理由によりページ、ウィンドウまたはカーブの番号付けが異なっている場合、適切な修正を式に施してください。subrange関数は、指定の範囲内のベクトルのインデックスを返します。subrange関数の詳細については、Templex and Math Reference Guideをご参照ください。
  11. 同様にして、1000、1500および2000 RPMについて更に3つのプロットを追加します。表 1にリストされた式をご使用ください。
    表 1.
    Curve名 xの式 yの式
    1000 RPM p2w1c1.y[subrange(p2w1c1.x,16,17)] p2w1c1.y[subrange(p2w1c1.x,16,17)]
    1500 RPM p2w1c1.y[subrange(p2w1c1.x,26,27)] p2w1c1.y[subrange(p2w1c1.x,26,27)]
    2000 RPM p2w1c1.y[subrange(p2w1c1.x,36,37)] p2w1c1.y[subrange(p2w1c1.x,36,37)]
  12. 以下のいずれかの方法で、これらのカーブに異なる色を割り当てます。
    • (Curve Attributes)アイコンをクリックし、Line Attributeの下のカラーパネルから選択します。
    • Plotブラウザで各ラインを選択し、Propertiesタブで色を変更します。
  13. Spline3Dエントリの追加のSpline3Dについての入力データと完成したプロットを比較します。
    図 23. ソルバーにより使用されるSpline3Dの検証
    図 24.