Gse

Model ElementGseは、一般的な動的システムを定義する抽象モデリング要素です。動的システムは、入力のベクトルu、動的状態のベクトルx、および出力のベクトルyによって表現されます。状態ベクトルxは、微分方程式のセットを通して定義されます。

クラス名

Gse

説明

出力ベクトルyは、代数方程式のセットによって定義されます。下の図は、動的システムの概念を示しています。


図 1.

属性の概要

名前 プロパティ コマンドで変更可能か 設計可能か
id Int ()   ×
label Str ()
× Int ()  
ns Int ()  
x Reference ("Array")
y Reference ("Array")
u Reference ("Array")
ic Reference ("Array")
static_hold Bool ()
implicit Bool ()  
function Function ("GESSUB")
routine Function ()  
active Bool ()

使用法

# Defined in a compiled user-written subroutine
Gse (no=int, function=userString, routine=string optional_attributes)

# Defined in a Python function
Gse (no=int, function=userString, routine=functionPointer optional_attributes)

属性

コンパイルされたユーザー作成サブルーチンで定義
no
整数
GSE内の出力の数を指定する整数。
no > 0
この属性は必須です。
function
文字列
データファイルから、ユーザー定義のサブルーチンGSESUB、GSEXX、GSEXU、GSEYX、およびGSEYUに渡されるパラメータのリストを指定します。GSESUBは記述する必要があります。他のGSEXX、GSEXU、GSEYX、およびGSEYUは省略可能です。これらが記述されない場合、MotionSolveは自動的に有限差分を介して偏導関数を生成します。
function属性は必須です。
routine
文字列
ユーザーサブルーチンの代替名を指定します。この名前は、“∷”で区切られた情報の2つの部分で構成されます。1つ目は、ユーザー定義のVariableの応答を計算する関数を含む共有ライブラリへのパス名です。2つ目は、計算を実行する共有ライブラリ内の関数の名前です。例: routine="/staff/Altair/engine.dll::myGse"
  • "/staff/Altair/ engine.dllはDLLです。
  • "myGse"は、計算を実行するこのDLL内の関数です。
属性routineは省略可能です。指定しない場合、routineはデフォルトでGSESUBになります。
Python関数で定義
no
整数
GSE内の出力の数を指定する整数。
no > 0
この属性は必須です。
function
文字列
データファイルから、ユーザー定義のサブルーチンGSESUB、GSEXX、GSEXU、GSEYX、およびGSEYUに渡されるパラメータのリストを指定します。GSESUBは記述する必要があります。他のGSEXX、GSEXU、GSEYX、およびGSEYUは省略可能です。これらが記述されない場合、MotionSolveは自動的に有限差分を介して偏導関数を生成します。
function属性は必須です。
routine
Python内の呼び出し可能な関数へのポインタ
例:routine=myGse
  • myGseは、モデルが存在する場所ならどこからでも呼び出すことが可能なPython関数またはメソッドです。
属性routineは省略可能です。指定しない場合は、デフォルトでGSESUBになります。
オプション属性 - すべてのバリアントに使用できます。
id
整数
要素識別番号を指定します。この番号は、モデル内のすべてのGSEオブジェクトの中で一意にする必要があります。
この属性は省略可能です。MotionSolveは、IDが指定されていない場合、自動的にこれを作成します。
値の範囲:id > 0
label
文字列
GCONオブジェクトの名前を指定します。
この属性は省略可能です。指定しない場合は、MotionSolveが代わりにラベルを作成します。
u
タイプUのArrayオブジェクトへの参照。
このGSEの入力uを格納するために使用するARRAYを指定します。このIDを持つARYVAL()関数を使用することで、MotionSolveの式のこの状態にアクセスすることができます。また、SYSFNCおよびSYSARYでこのIDを使用することで、ユーザーサブルーチンの入力値にアクセスすることもできます。
この属性は省略可能です。
y
タイプYのArrayオブジェクトへの参照。
このGSEの出力yを格納するために使用するARRAYを指定します。この配列のIDを持つARYVAL()関数を使用することで、MotionSolveの式のこの状態にアクセスすることができます。また、SYSFNCおよびSYSARYでこのIDを使用することで、ユーザーサブルーチンの出力値にアクセスすることもできます。
この属性は省略可能です。
x
タイプXのArrayオブジェクトへの参照。
このGSEの状態xを格納するために使用するARRAYを指定します。このArrayのIDを持つARYVAL()関数を使用することで、MotionSolveの式のこの状態にアクセスすることができます。また、SYSFNCおよびSYSARYでこのIDを使用することで、ユーザーサブルーチンの状態値にアクセスすることもできます。
この属性は必須です。
ic
このGSEの状態xの初期値を格納するために使用するArrayを指定します。このArrayidを持つARYVAL()関数を使用することで、MotionSolveの式のこの状態にアクセスすることができます。また、SYSFNCおよびSYSARYでこのIDを使用することで、ユーザーサブルーチンの初期状態値にアクセスすることができます。
static_hold
ブール
静的平衡解析および擬似静解析の間、動的状態の値を固定するかどうかを指定します。
  • Trueは、静的解析および擬似静解析の間、動的状態の値が一定に保たれることを意味します。
  • Falseは、静的平衡解析または擬似静解析の間、動的状態の値が変化可能であることを意味します。
この属性は省略可能です。指定しない場合は、デフォルトでFalseになります。
implicit
ブール
状態を定義する微分方程式が陰的か陽的かを指定するブール値。
  • Trueは、微分方程式が陰的に定義され、方程式が微分方程式の残差を定義することを意味します。
  • Falseは、微分方程式が陽的に定義され、方程式が状態の時間導関数を定義することを意味します。
この属性は省略可能です。指定しない場合、implicitはデフォルトでFalseになります。
active
ブール
TrueFalseのどちらかを選択します。
  • Trueは、要素がモデル内でアクティブであり、システムの動作に影響を与えていることを示します。
  • Falseは、要素がモデル内で非アクティブであり、システムの動作に影響を与えていないことを示します。エンティティがモデルから削除される場合とほとんど同じですが、必要に応じて“ON”にできる点が異なります。
属性activeは省略可能です。指定しない場合、activeはデフォルトでTrueになります。

  1. GSEを使用して摩擦のLuGreモデルを定義します。
    ################################################################################
    # Model definition                                                             #
    ################################################################################
    def
     sliding_block (out_name):
      m       = Model (output=out_name)
    
      # Model units, Gravity and Integrator settings
      units   = Units    (mass="KILOGRAM", length="METER", time="SECOND", force="NEWTON")
      grav    = Accgrav  (jgrav=-9.800)
      gstiff  = Integrator (error=1e-5)
      # Points and Vectors that will be reused
      p0      = Point (10,0,0)
      ux      = Vector (1,0,0)
      uy      = Vector (0,1,0)
      uz      = Vector (0,0,1)
      
      # Ground part and global coordinate system
      grnd    = Part (ground=True)
      oxyz    = Marker (body=grnd, label="Global CS")
      
      # Block
      blk     = Part (mass=1, ip=[4.9e-4,4.9e-4,4.9e-4], label="Block")
      blk.cm  = Marker (body=blk, qp=p0, zp=p0+uz, xp=p0+ux, label="Block CM")
      
      # Translational joint between Block and Ground along global X-axis
      im      = Marker (body=blk,  qp=p0, zp=p0+ux, xp=p0+uz, label="Joint Marker on Ground")
      jm      = Marker (body=grnd, qp=p0, zp=p0+ux, xp=p0+uz, label="Joint Marker on Ground")
      jnt     = Joint (type="TRANSLATIONAL", i = im, j = jm, label="Trans Joint")
      
      # An external force trying to move the block
      sfojm   = Marker (body=grnd, qp=p0, zp=p0+ux, xp=p0+uz, label="Sforce reaction")
      sf      = Sforce (type="TRANSLATION", actiononly=True, i=im, j=sfojm, label="Actuation Force", function = "3*sin(2*pi*time)")  
    
    # Friction in the joint
      m.lugre = LuGre(joint=jnt)
      
      # Some requests of interest
      m.r1    = Request (type="DISPLACEMENT", i=im, j=jm, rm=jm, comment="Joint displacement")
      m.r2    = Request (type="FORCE",        i=im, j=jm, rm=jm, comment="Joint forces")
      m.r3    = Request (type="VELOCITY",     i=im, j=jm, rm=jm, comment="Joint velocity")
      
      so      = Output (reqsave=True)
      
      # Return the model you just defined
      return m
    
    ###############################################################################
    ###############################################################################
    ###############################################################################
    
    m = sliding_block("lugre1")
    m.simulate (type="DYNAMICS", end=4, dtout=.01)
    
    # Change the static friction coefficient and continue simulation
    m.lugre.mus=0.5  
    m.simulate (type="DYNAMICS", end=8, dtout=.01)

コメント

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