Constraint: General
モデル要素Constraint_General要素を使用して、ユーザー定義の一般拘束を指定します。
説明
拘束方程式には、システムの位置と速度の値を含めることができます。MotionSolveでは、選択肢として多くの拘束が用意されていますが(Constraint_Jointを参照)、非標準の拘束が必要になる場合があります。例えば、ホイールが滑らずに回転するという拘束は、Constraint_General要素を使用してモデル化できる非ホロノミックな拘束です。
フォーマット
<Constraint_General
id = "integer"
[ label = "string" ]
{
expr = "motionsolve_expression"
|
usrsub_dll_name = "valid_path_name"
usrsub_param_string = "USER( [[par_1][, ...][, par_n]] )"
usrsub_fnc_name = "fnc_name" >
|
script_name = "valid_path_name"
interpreter = "string" ]
usrsub_param_string = "USER([[par_1][, ...][, par_n]] )"
[ usrsub_fnc_name = "custom_fnc_name" ]
}
[ is_virtual = {"FALSE" | "TRUE"} ]
</Constraint_General>
属性
- id
- 要素識別番号(整数 > 0)。この番号は、すべてのConstraint_General要素の中で一意です。
- label
- Constraint_General要素の名前。
- expr
- 一般拘束を定義する式(ゼロに設定されます)。
- usrsub_dll_name
- ユーザーサブルーチンを含むDLLまたは共有ライブラリのパスと名前を指定します。MotionSolveはこの情報を使用して、実行時にDLL内のユーザーサブルーチンを読み込みます。
- usrsub_param_string
- データファイルからユーザー定義のサブルーチンGCOSUBに渡されるパラメータのリスト。
- usrsub_fnc_name
- ユーザー作成サブルーチンGCOSUBの代替名を指定します。
- script_name
- usrsub_fnc_nameで指定されたルーチンを含むユーザー作成スクリプトのパスと名前を指定します。
- is_virtual
- 仮想拘束なのか通常の拘束なのかを定義します。is_virtualがTRUEに設定されている場合、拘束は仮想拘束として実装されます。is_virtualがFALSEに設定されている場合、拘束は通常の代数拘束として実装されます。このパラメータは省略可能です。デフォルトはFALSEです。仮想ジョイントの詳細については、Constraint: Jointのコメント22をご参照ください。
- interpreter
- ユーザースクリプトが記述されたインタープリタ型言語を指定します(例: "PYTHON")。有効なインタプリタ言語の選択肢については、 User-Written Subroutinesを参照してください。
コメント
- Constraint_Generalを使用して、ホロノミックな拘束と非ホロノミックな拘束を適用できます。位置の値のみを含む方程式として記述できる拘束は、ホロノミックな拘束と呼ばれます。それ以外の拘束は非ホロノミックな拘束と呼ばれます。
- 非ホロノミックな拘束の場合、その拘束が次の2つの条件を満たしていれば、MotionSolveによってシステムの残り部分に適用される拘束の反力は適切です:
- その拘束が、システムの時間、位置、および速度のみの関数である。
- 任意の速度項に対するその拘束の2次偏微分の結果がIDゼロになる。
2つ目の条件は、拘束に速度の項が含まれている場合、拘束が速度に関して線形である必要があることを意味します。これらの条件の一方または両方が満たされていない場合は、拘束反力の特定の項がMotionSolveで無視されます。その結果、無視された項が大きな影響を与えることになった場合に、正しくない動的挙動が生じる可能性があります。
- VARVAL()を使用して、Constraint_General内のReference_Variableを参照できます。Reference_Variableを定義するには、陽的な式を使用するか、ユーザー作成サブルーチン(VARSUB)を使用します。
- Constraint_Generalを運動学解析で使用することはできません。これは、動解析でのABAM、VSTIFF、MSTIFFとも適合しません。
- DSTIFFを使用した動解析で使用される場合、この拘束はIndex-3について滑らかである必要があります。この拘束とその1次導関数(勾配)は、Index-2について滑らかである必要があります。この拘束とその1次導関数(勾配)および2次導関数(曲率)は両方とも、Index-1について滑らかである必要があります。