MV-1090:MDLを用いたデータセットの作成
本チュートリアルでは、開始時刻、中間時刻、終了時刻および荷重の大きさを指定するデータセットを作成し、データセット定義をアナリシス定義に含め、トルクの作用時間と大きさを変化させる方法について学習します。
*DefineDataSet() - *EndDefine()
ブロックを使って定義されます。続いて、*DataSet()ステートメントを使って、定義がインスタンス化されます。データセット定義の作成
このステップでは、データセット定義を作成します。
- テキストエディタで新しいドキュメントを作成します。
-
*DefineAnalysis()および*EndDefine()ブロックを作成します。これらのステートメント間に、データセット属するデータメンバーを作成します。
データセットには下記のデータメンバーが必要です:
- 開始時刻
- 中間時刻
- End time
- 荷重の大きさ
注: また、整数、文字列、オプションまたはファイルなど(ユーザーのモデルに適用可能な)他のメンバーのタイプを定義することが可能です。 -
1つのデータメンバーの定義に1つの*Real ()ステートメントを使用します。
ファイルは下の例のようになるはずです:
*DefineDataSet(ds_def_force) *Real(start_time, "Starting Time") *Real(mid_time, "Mid Time") *Real(end_time, "End Time") *Real(force_magnitude, "Force Magnitude") *EndDefine()
- モデルをdataset.mdlとして<作業ディレクトリ>に保存します。
データセット定義をアナリシス定義に含める
このステップでは、*Include()ステートメントを使ってデータセットをアナリシス定義に追加し、インスタンス化します。データセットエンティティは、トルクについて統合します。
- MV-1080:MDLを用いたアナリシスの作成で作成されたアナリシス定義をテキストエディタで開きます。
-
*DefineAnalysis()ステートメントの前に*Include()ステートメントを使うことにより、データセットを含めます:
*Include("dataset.mdl")
-
*DataSet()ステートメントを使って、1つ目のデータセット定義をインスタンス化します。このステートメントを*DefineAnalysis()ブロック内の*Attachment()ステートメントの後ろに置きます。
*DataSet(ds_force, "Force Data", ds_def_force)
データセットのシンタックスは:*DataSet(ds_name, "ds_label", ds_def, [optional arguments])
ds_name
データセットの変数名ds_label
データセットのラベルds_def
既存のデータセット定義の変数名optional arguments
アタッチメントとして渡される引数(存在する場合)
-
*SetReal()ステートメント(*DataSet()ステートメントの後ろに置かれる)を使って、データセット内のデータメンバーのデフォルト値を設定します。
*SetReal(ds_force.start_time, 0.3) *SetReal(ds_force.mid_time, 0.31) *SetReal(ds_force.end_time, 0.32) *SetReal(ds_force.force_magnitude, 10)
*SetReal()ステートメントのシンタックスは以下に示すとおりです:*SetReal(real_name, real_value)
real_name
値が設定されるデータメンバーの変数名real_value
データメンバーの値
ds_name.real_name
です。 -
データセット内にエンティティを組み入れることにより、*SetForce()ステートメント内の適切な値を変更します。
編集の前の段階では、ステートメントは次のように見えます:
考え方としては、ドットオペレータを使ってモデルの階層構造をブラウズし、データセット値にアクセスします。これは、下記のとおりです:*SetForce( force_1, EXPR, `step(TIME,.3,0,.31,10) +step(TIME,.31,0,.32,-10)`)
*SetForce(force_1, EXPR, `step(TIME, {ds_force.start_time.value}, 0, {ds_force.mid_time.value}, {ds_force.force_magnitude.value}) + step(TIME, {ds_force.mid_time.value}, 0, {ds_force.end_time.value}, - {ds_force.force_magnitude.value})`,0,0)
かぎ括弧{ }内の式は、MotionViewでTemplexによって処理され、データセット内で定義された適切な値に評価されます。
アナリシス定義は、下に示す例のようになるはずです:*Include("dataset.mdl") *DefineAnalysis( def_ana_0,j_att ) *Attachment(j_att, "Joint Attachment", Joint, "Select joint to apply torque") *DataSet(ds_force, "Force Data", ds_def_force) *SetReal(ds_force.start_time, 0.3) *SetReal(ds_force.mid_time, 0.31) *SetReal(ds_force.end_time, 0.32) *SetReal(ds_force.force_magnitude, 10) *ActionReactionForce( force_1, "Torque", ROT, j_att.b1, j_att.b2, j_att.origin, Global_Frame ) *SetForce(force_1, EXPR, `step(TIME, {ds_force.start_time.value}, 0, {ds_force.mid_time.value}, {ds_force.force_magnitude.value}) + step(TIME, {ds_force.mid_time.value}, 0, {ds_force.end_time.value}, - {ds_force.force_magnitude.value})`) *Output( o_force, "Input Torque", FORCE, FORCE, force_1, Global_Frame) *EndDefine()
- 新しいアナリシス定義ファイルをanalysis_dataset.mdlとして保存します。
データセットパラメータの変更と解析の実行
このステップでは、データセットパラメータを変更し、でMotionSolveで解析を実行します。
- MotionViewで、MV-1080:MDLを用いたアナリシスの作成において作成した三重振子モデルを読み込みます。
-
既存のアナリシスがある場合は削除します。
- Project Browserで、Analysisを右クリックします。
- コンテキストメニューで、Deleteをクリックします。
- Project BrowserでModelをクリックします。
- Systems/Assemblyパネルで、Import/Exportタブをクリックします。
-
新しいアナリシス定義ファイル(analysis.dataset.mdl)をインポートします。
注: 下の図に示すように、Analysis定義タイプを選択します。
図 1.
-
Project Browserで、Datasetsフォルダーを拡張し、Force
Dataをクリックします。
図 2.
- データセットのパネルで、Starting Timeを0.5、Mid Timeを0.55、End Timeを0.6、Force Magnitudeを15に変更します。
- モデルを実行します。
-
プロットウィンドウ内のInput Torqueを、MV-1080:MDLを用いたアナリシスの作成で行った解析からのものと比較します。
データセットグラフィカルユーザーインターフェースを介してフォースパラメータを容易に変更し、解析を再実行することができます。
- モデルをtriplependulum_dataset.mdlとして保存します。