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

図 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
- 整数
- function
- 文字列
- routine
- 文字列
- no
- 整数
- function
- 文字列
- routine
- Python内の呼び出し可能な関数へのポインタ
- id
- 整数
- label
- 文字列
- u
- タイプUのArrayオブジェクトへの参照。
- y
- タイプYのArrayオブジェクトへの参照。
- x
- タイプXのArrayオブジェクトへの参照。
- ic
- このGSEの状態xの初期値を格納するために使用するArrayを指定します。このArrayのidを持つARYVAL()関数を使用することで、MotionSolveの式のこの状態にアクセスすることができます。また、SYSFNCおよびSYSARYでこのIDを使用することで、ユーザーサブルーチンの初期状態値にアクセスすることができます。
- static_hold
- ブール
- implicit
- ブール
- active
- ブール
例
- 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)
コメント
- プロパティの概要、使用理由、および拡張方法については、プロパティをご参照ください。
- Gseの詳細については、Control:StateEqnをご参照ください。Control: State Equation