MV-1015:Spline3Dを使ったエンジン内燃焼力のモデル化
本チュートリアルでは、2つの独立変数に依存する入力をSpline3Dを用いてモデル化する方法について学習します。
![](../../../images/tutorials/mv/tut_mv_combustion_force_modeling_spline3d.png)
- Spline3Dとは?
- Spline3Dsは、2つの独立なベクトルまたは軸を有する3次元座標系にプロットされる参照データです。これらは、3番目の軸に沿って一定の間隔に置かれる多数の2次元スプライン(カーブ)として可視化が可能です。例えば、ブッシュは通常、力vs.変位のカーブにより表現されます。力vs.変位はまた、温度と共に変化します。事実上、ブッシュの力 - 変位および温度については、2つの独立変数が存在します。別の例として、エンジン圧力(または力)vs.クランク角マップ(P-Theta図として知られる)が挙げられます。P-thetaマップは、異なるエンジン速度(またはRPM)で変化します。そのような状況を、Spline3Dを使ってモデル化することができます。
本演習では、エンジン機構がシミュレーションされます。クランク角とエンジンスピードに応じて変化する燃焼力が、Spline3Dを使ってモデル化されています。
モデルの確認
このステップでは、モデルを読み込んで確認します。
- 新しいMotionViewセッションを開始します。
-
(Open Model)アイコンをクリックし、SingleCylEngine.mdlモデルファイルを開きます。
-
モデルを確認します。
- このモデルは、フライホイールを有するピストンシリンダー機構です。
- モデルは、2つのシステムSystem Cyl1とSystem Flywheelのを有しています。
-
System Flywheelを確認します。
-
System Cyl1を確認します。
- System Flywheel内のソルバー変数はアタッチメントとしてこのシステムに渡され、変数名arg_Crank_angle_SolVarおよびarg_Crank_RPM_SolVarを有します。これらを使って独立変数を定義し、一方、Spline3Dを使って燃焼力が定義されます。
- Combustion_ref マーカーは燃焼力用の参照として存在し、そのZ軸はピストンの運動方向に沿って方向付けされています。
Spline3Dエントリの追加
このステップでは、Spline3Dを使ってピストンに燃焼力を追加します。
-
以下のいずれかの方法で、Splineエンティティを追加します:
- Project BrowserのSystem Cyl1を右クリックして を選択します。
図 5.
- Project BrowserでSystem
Cly1を選択し、
(Spline3D)アイコンをクリックします。
- Project BrowserのSystem Cyl1を右クリックして を選択します。
-
ダイアログ内で、LabelにF_ThetaSpline、Variableにspl3d_F_ThetaSplineと入力します。
図 6.
-
OKをクリックします。
これで、Spline3Dパネルが表示され、Propertiesタブがアクティブになります。
-
Typeドロップダウンメニューから、Valueを選択します。
注: スプラインに関するデータは、FileまたはValue手法を使って定義できます。Fileタイプの場合、.csvフォーマットの外部ファイルへの参照が必要となります。Valueの場合、値は.CSVファイルから(Importを使って)インポート、または手動で入力することが可能です。本チュートリアルでは、値を外部ファイルからインポートします。
- Importボタンをクリックし、Import Values From Fileダイアログを表示します。
- 作業ディレクトリ<working directory>からFTheta.csvに進み、OKをクリックします。
-
表示されたWarningダイアログでYesをクリックします。
Spline3Dのソースとして使用する.csv ファイルは、図 7に示すフォーマットでなければなりません。
- 第1列に、1つ目の独立変数であるX-軸値(図 7で青色部分)を有する
- 第1行に、2つ目の独立変数であるZ-軸値(図 7で赤色部分)を有する
- その他の列にはY-軸値(図 7で緑色部分)を有し、各列は対応するZ-軸値に属する
File入力タイプの使用時に、同じフォーマットが適用可能です。図 7.
インポートが終わると、それらの値がパネル内に入力されます。 -
Panel内で
(Expansion)ボタンをクリックすることでSpline Values Table Dataウィンドウを開き、テーブル内で値を確認することが可能です。
図 8.
図 9.
注: 値を手動で入力する際は、context menuが利用でき、行および列のデータをInsert(挿入)/Delete(削除)/Append(追加)することが可能です。これらのメニューには、任意の行または列のヘッダーを右クリックすることでアクセスできます。一番最後の行 / 列を右クリックすると、Appendオプションも利用することが可能です。図 10.
図 11.
- CloseでSpline Values Table Dataウィンドウを閉じます。
-
Linear Extrapolation のチェックボックスを有効にします。
これで、ユーザーが提供したデータの範囲を超えた値をソルバーが探した場合に、値が外挿されることになります。図 12.
-
Show Splineボタンをクリックし、スプラインをグラフィカルに可視化します。
3つの軸すべてをアイソメトリックビュー(等距離図)で見ることができます。図 13.
-
Closeをクリックしてビューアーを閉じます。
インポートされた値は、異なるスピードにおけるCombustion Force on Piston vs Theta(クランク角)ダイアグラムです(図 14参照)。F-Thetaのカーブ形状は、異なるエンジンまたはクランクスピードにおいて僅かに変化します。同じプロットは、Z-軸に沿って4つの異なるプロットを置くことで、Spline3D viewerでも確認できます。
図 14. Spline3D用の入力データ
Spline3Dを使ったフォースの追加
このステップでは、シリンダー内の燃焼を表すために、フォースを追加します。これを、Spline3Dエントリの追加で加えられたSpline3Dにマッピングします。
-
以下の方法のいずれかにより、フォースを追加します:
- Project BrowserのSystem Cyl1で右クリックし、context menuから を選択します。
- Project BrowserでSystem Cyl1を選択し、次に、Force Entityツールバーの
(Force)アイコンを右クリックします。
- ダイアログ内で、LabelにThetaSpline Forceと入力し、Variable名を入力します。OKをクリックします。
- ForceパネルのConnectivityタブで、Forceを使ってAction reactionを選択します。
-
結合を図 15に示すとおりとします。
-
入力コレクター(
など)をダブルクリックし、Model Treeを使用します。
- modeling windowから、希望するエンティティを選択します。
図 15.
注: Ground Bodyを参照するBody 2は、System Cyl1システムへのアタッチメントを通して結合します。 -
入力コレクター(
- Trans Propertiesタブから、FzタイプをSpline3Dに変更します。
-
(Spline3Dコレクター)をダブルクリックします。
-
Select a Spline3Dダイアログから、Model TreeでSystem Cyl1を展開し、F_ThetaSplineを選択します。
図 16.
- OKをクリックします。
-
Independent variable X欄に、式
`MOD({arg_Crank_angle_SolVar.VARVAL},720)`
を入力します。 -
In the Independent variable Z欄に、式
`{arg_Crank_RPM_SolVar.VARVAL}`.
を入力します。 -
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をリセットします。 - モデルを保存するには、menu barから をクリックします。
モデルの解析
このステップでは、MotionSolveでモデルを解析します。
-
General Actionsツールバーで、
(Run)をクリックします。
- Runパネルで、End timeに40秒と入力し、Print intervalを0.001に変更します。
-
(Open File)アイコンをクリックし、MotionSolve XMLファイルの名称と保存場所を割り当てます。
図 18.
-
Run ボタンをクリックします。
これでMotionSolveを起動し、モデルを解析します。
- シミュレーションが完了したら、CloseでSolver Viewウィンドウとメッセージログを閉じます。
結果のポスト処理
このステップでは、Spline3DモデルからのMotionSolve結果をポスト処理します。
-
Runパネルで、Animateボタンをクリックします。
これで、
HyperViewウィンドウに結果が読み込まれます。
-
Animationツールバーから
(Start/Pause Animation)ボタンをクリックし、モデルをアニメーション表示します。
-
Piston上のフォースを可視化します。
-
Page Controlsツールバーから
(Add Page)アイコンをクリックします。
-
アプリケーション選択ドロップダウンメニューを使って、クライアントを
HyperGraph 2Dに切り替えます。
-
Page controlsツールバーから、
の横の矢印をクリックし、
(3つのウィンドウのレイアウト)を選択します。
-
Build Plotsパネルで
をクリックし、MotionSolveの実行からの.pltファイルを読み込みます。
-
Crank_angle (deg)をプロットします。
-
Z方向のCombustionForceをプロットします。
- 2つ目のウィンドウ(上部右側)をクリックしてアクティブにします。
- Y TypeにForceをクリックします。
- Y RequestにREQ/70000002 ThetaSpline Force on Piston (ForceOnPiston)をクリックします。
- Y ComponentにZをクリックします。
図 21. CombustionForceをプロットするための選択
-
Pistonに加えられるスピードが異なる場合のForce vs Thetaプロットを描きます。
これにより、本チュートリアルのSpline3Dエントリの追加ステップで用いられたSpline3Dの使用方法が示されます。
-
同様にして、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)] -
以下のいずれかの方法で、これらのカーブに異なる色を割り当てます。
(Curve Attributes)アイコンをクリックし、Line Attributeの下のカラーパネルから選択します。
- Plot Browserで各ラインを選択し、Propertiesタブで色を変更します。
-
Spline3Dエントリの追加のSpline3Dについての入力データと完成したプロットを比較します。
図 23. ソルバーにより使用されるSpline3Dの検証 図 24.