Curve

Model ElementCurveは、3D空間でパラメトリック曲線を定義します。

クラス名

Curve

説明

パラメトリック曲線は、1つの自由パラメータuと3つの関連関数f(u)、g(u)、およびh(u)で構成されます。すべての値に対して、u=u*、f(u*)、g(u*)、およびh(u*)は空間内のポイントの座標を表します。uがその最小値から最大値まで移動すると、3D空間内の曲線が生成されます。Curveの定義に関する詳細については、Reference_ParamCurveの説明セクションとコメントセクションをご参照ください。

属性の概要

名前 プロパティ コマンドで変更可能か 設計可能か
id Int ()    
label Str ()    
matrix Reference ("Matrix") FDのみ
curve_points Bool ()  
closed Bool ()  
minpar Double (-1.0)    
maxpar Double (1.0)    
routine Routine ()   FDのみ
script Script ()    
function Function ("CURSUB")   FDのみ

使用法

曲線は、3つの異なる形式で使用できます。

#1: Curve data provided in a Matrix
Curve (matrix=objMatrix, type=string, curve_points=Boolean, optional_attributes)

#2. Curve specified in a compiled user-written subroutine
Curve (function=userString, routine=string, type=string, optional_attributes)

#3. Curve specified in a Python functionCurve (function=userString, routine=functionPointer, type=string, curve_points=boolean, optional_attributes)

属性

マトリクスで指定された曲線データ
matrix
既存のマトリクスオブジェクトへの参照。
曲線データを含むMatrixを指定します。マトリクスには、個々の曲線ポイントのx、y、およびzデータのみを含める必要があります。
注: 閉じた曲線の場合、最初と最後のデータポイントは同じである必要があります。
matrix属性は必須です。
type
文字列
"OPEN"または"CLOSED"を選択します。
注: 閉じた曲線の場合、最初と最後のデータポイントは同じである必要があります。
type属性は必須です。
curve_points
ブール
TRUEまたはFALSEから選択します。
  • TRUEは、曲線がポイントを通過することを意味します。
  • FALSEは、概して、曲線(Bスプライン)がポイントの近くに留まって、ポイントを通過しないことを意味します。
curve_points属性は必須です。
コンパイルされたユーザー作成サブルーチンで指定された曲線。
function
文字列
データファイルからユーザー定義のサブルーチンに渡されるパラメータのリスト。
function属性は必須です。
routine
文字列
ユーザーサブルーチンの代替名を指定します。この名前は、“∷”で区切られた情報の2つの部分で構成されます。1つ目は、ユーザー定義のSurfaceの応答を計算する関数を含む共有ライブラリへのパス名です。2つ目は、計算を実行する共有ライブラリ内の関数の名前です。
例: routine="/staff/Altair/engine.dll::myCurve"
  • "/staff/Altair/ engine.dllはDLLです。
  • “myCurve”は、計算を実行するこのDLL内の関数です。
属性routineは省略可能です。
指定しない場合、routineはデフォルトでCURSUBになります。
属性routineは省略可能です。
type
文字列
"OPEN"または"CLOSED"を選択します。
注: 閉じた曲線の場合、最初と最後のデータポイントは同じである必要があります。
type属性は必須です。
minpar
倍精度
曲線パラメータの最小値を指定します。
minpar属性は省略可能です。指定しない場合は、デフォルトで-1になります。
注: 指定する場合は、minpar < maxparです。
maxpar
倍精度
曲線パラメータの最大値を指定します。
maxpar属性は省略可能です。指定しない場合は、デフォルトで+1になります。
注: 指定する場合は、minpar < maxparです。
Python関数で指定された曲線。
function
文字列
データファイルからユーザー定義のサブルーチンに渡されるパラメータのリスト。
function属性は必須です。
routine
Python内の呼び出し可能な関数へのポインタ。
例:routine=myCurve"
  • myCurveは、モデルが存在する場所ならどこからでも呼び出すことが可能なPython関数またはメソッドです。
属性routineは省略可能です。
指定しない場合、routineはデフォルトでCURSUBになります。
type
文字列
"OPEN"または"CLOSED"を選択します。
注: 閉じた曲線の場合、最初と最後のデータポイントは同じである必要があります。
type属性は必須です。
minpar
倍精度
曲線パラメータの最小値を指定します。
minpar属性は省略可能です。指定しない場合は、デフォルトで-1になります。
注: 指定する場合は、minpar < maxparです。
maxpar
倍精度
曲線パラメータの最大値を指定します。
maxpar属性は省略可能です。指定しない場合は、デフォルトで+1になります。
注: 指定する場合は、minpar < maxparです。
オプション属性 - すべての記述方法に使用できます。
id
整数
要素識別番号を指定します。この番号は、モデル内のすべてのSurfaceオブジェクトの中で一意にする必要があります。
この属性は省略可能です。MotionSolveは、IDが指定されていない場合、自動的にこれを作成します。
値の範囲:id > 0
label
文字列
Surfaceオブジェクトの名前を指定します。
この属性は省略可能です。指定しない場合は、MotionSolveが代わりにラベルを作成します。

サイクロイドは、パラメトリック空間で次のように定義されます:
x = a * (t - sin(t))
y = a * (1-cos(t))
"t"は、独立パラメータです。サイクロイドを下の図に示します。


図 1. パラメータで定義されたサイクロイド曲線
  1. マトリクスを使用してパラメトリック曲線を定義します。
    上記サイクロイドを定義するステートメントは次の曲線属性を持ちます:
    • Curveは開いています。
    • 独立パラメータtは0から始まります。
    • 独立パラメータtは5で終わります。
    • 曲線ポイントは、Matrixオブジェクトmat23で指定されます。
    対応するMotionSolve Python指定は次のとおりです:
    # Note, since curve_points=True, MINPAR=-1 and MAXPAR=+1. 
    # This range in u will accommodate all the data provided in the matrix.
    curve1 = Curve (type="OPEN", curve_points=True, matrix=mat23)
  2. python関数でパラメトリック曲線を定義します。
    この例では、Pythonで作成されたユーザー定義のサブルーチン内の実装と全く同じように指定する方法を示します。
    # The cycloid function saved in file: cycloid.py
    from msolve import sin, cos
    def cycloid (id, par, npar, t, iord, iflag):
       a = par[0]  
       if iord == 0:
          x = a * (t - sin(t))
          y = a * (1 - cos(t))
          z = 0.0
       elif iord == 1:
          x = a * (1 - cos(t))
          y = a * sin(t)
          z = 0.0
       else:
          x = a * sin(t)
          y = a * cos(t)
          z = 0.0
       
       return [x, y, z]
    対応するMotionSolve Python指定は次のとおりです:
    curve2 = Curve (function="USER(1)", routine=cycloid, type="OPEN", minpar=0, maxpar=6)

コメント

  1. プロパティの概要、使用理由、および拡張方法については、プロパティをご参照ください。
  2. Curveの詳細については、Reference:ParamCurveをご参照ください。