Simulate

Command Element単一のシミュレーションを実行します。

フォーマット

<Simulate
    analysis_type     = "string"

  [ start_time        = "real" ]         
  [ end_time          = "real" ]   
  [ duration          = "real" ] 
  [ restart_array_id  = "integer" ]
[{  
    num_step          = "integer"
    print_increment   = "integer"
    print_interval    = "real"
    print_array_id    = "integer"
}]      
/>

属性

analysis_type
実行される解析を指定します。オプションは以下のとおりです:
  • "Static"
  • "Transient"
  • "Linear"
  • "Assembly"
上記の選択は1つのSimulateコマンドにつき1度のみですが、一連の解析を要求するのに複数のSimulateコマンドを組み込むことができます。
start_time
独立変数Timeの初期値を定義します。
  • この属性は省略可能です。
  • 指定しない場合、デフォルトで0.0になります。
end_time
シミュレーションの終了時刻を定義します。
有効なシミュレーションでは、end_time > start_timeです。
duration
シミュレーションの継続時間を定義します。これは、シミュレーションのend_timeが事前にわかっていない場合に使用します。
duration > 0
restart_array_id
積分器が再開される時間ステップを含むReference_Array要素のIDを指定します。積分器を再開すると、積分器履歴が破棄されます。
  • この属性は省略可能です。
  • これは、モデルのコンフィギュレーションが変化した場合に特に有用です。

以下のパラメータは出力速度を制御します。これらは相互排他的です。

num_steps
start_timeend_timeの間の出力ステップの数を定義します。
  • この属性は省略可能です。
  • 指定する場合は、num_steps > 0です。

出力間隔は、end_time/num_stepsで決まります。print_intervalh_maxより小さい場合は、最大積分器ステップサイズ(Param_Transient::h_max)はprint_interval設定されることに注意してください。

print_increment
積分器が実行しているステップについての出力の頻度を指定します。出力が実行されるのは、関数MOD (integration_step_number, print_increment) = 0のときです。
  • この属性は省略可能です。
  • 指定する場合は、print_increment > 0です。
  • print_increment = 1の場合は、積分ステップごとに出力が生成されます。
  • print_increment = nの場合は、n番目の積分ステップごとに出力が生成されます。
print_interval
プロットとアニメーション出力のための連続する出力ステップの時間間隔を定義します。
  • この属性は省略可能です。
  • 指定しない場合、デフォルトで0.01になります。
  • 指定する場合は、print_interval > 0です。
注: print_intervalh_maxより小さい場合は、最大積分器ステップサイズ(Param_Transient::h_max)はprint_intervalに設定されます。
print_array_id(省略可能)
出力が必要となる時間ステップを含むReference_Array要素のIDを定義します。

次の例では、Simulateコマンドを使用して静的平衡シミュレーションを実行する方法を示しています。

<Simulate
   analysis_type = "static"
/>

次の3つの例では、Simulateコマンドを使用して擬似静的シミュレーションを実行する方法を示しています。これらはすべて等価です。

<Simulate
   analysis_type   = "static"
   end_time        = "9.76"
   num_steps       = "976" 
/>
<Simulate
   analysis_type  = "static"
   end_time       = "9.76"
   print_interval = "0.01"
/>
<Simulate
   analysis_type  = "static"
   start_time     = "0.0"
   end_time       = "9.76"
   print_interval = "0.01"
/>

次の例では、print_array_idを使用して等間隔ではない出力を生成する方法を示しています。このシミュレーションでは、Time = 0.0、0.1、0.21、0.33、0.46、0.60、0.75、0.91、0.935、0.95、1.0で出力が生成されます。

<Simulate
   analysis_type   = "static"
   end_time        = "1.0"
   print_array_id  = "21"
/>
<Reference_Array
   id              = "21"
   type            = "PRINT"
   num_element     = "11" >
   0.0000000E+00    0.1000000E+00    0.2100000E+00    0.3300000E+00    0.4600000E+00
   0.6000000E+00    0.7500000E+00    0.9100000E+02    0.9350000E+02    0.9500000E+00
   1.0000000E+00
</Reference_Array>

次の例では、一般的な過渡シミュレーションにSimulateコマンドを使用する方法を示しています。

<Simulate
   analysis_type   = "transient"
   end_time        = "2.0"
   num_steps       = "1024"
/>

次の例では、Simulateコマンドをrestart_array_idと組み合わせて使用し、シミュレーションの実行を指定された時間に繰り返し行う方法を示しています。積分器は、Time = 0.16秒、0.25秒、0.43秒、0.67秒、1.46秒の時点で再度シミュレーションを開始するように要求されます。

<Simulate
   analysis_type     = "transient"
   end_time          = "2.0"
   restart_array_id  = "17"
/>
<Reference_Array
    id               = "17"
    type             = "RESTART"
    num_element      = "5" >
    0.1600000E+00     0.2500000E+00     0.4300000E+00     0.6700000E+00  1.4600000E+00
</Reference_Array>

次の例では、静解析の後に動解析を実行する、2つの同等の方法を示しています。

<Simulate                           <Simulate
   analysis_type    = "static"          analysis_type    = "static"
/>                                  />    
<Simulate                           <Simulate   
   analysis_type    = "transient"       analysis_type    = "transient
   end_time         = "1.5"             end_time         = "1.5"  
   num_steps        = "150"             print_increment  = "100"
/>                                  />

次の例では、Simulateコマンドを使用してアセンブリ解析を実行する方法を示しています。

<Simulate
   analysis_type  = "assembly"
/>

コメント

  1. MotionSolveでは、1回の実行で複数の異なる解析を行うことができます。複数のSimulateコマンドを他のコマンドを交えて使用することで、モデルを変更したり、シミュレーションパラメータをリセットして、後続の解析を実行できます。これにより、複雑なシミュレーションを実行するための非常に強力な手段が得られます。
  2. 静的平衡位置があるシステムの場合はいつでも、静解析に続いて動解析または過渡解析を実行することが推奨されます。静解析は、システムを平衡させ、不平衡力を除去します。その結果、動解析での初期の過渡現象があまりなくなるため、シミュレーションを大幅に高速化できます。
  3. 複雑なシミュレーションシナリオは、ユーザー作成サブルーチンCONSUBで作成できます。MotionSolveが提供する包括的なAPIを使用して、モデルを調べたり、現在のモデル状態を取得したり、解析を実行したりできます。CONSUBは、Pythonなどのスクリプト言語や、C++/CやFortranなどのプログラミング言語で作成できます。
  4. 出力頻度を制御するには、print_incrementnum_stepsprint_array_id、またはprint_intervalを使用できます。モデルにこれらの属性が複数含まれている場合、ソルバーは次の優先順位規則に従います。

    優先度の高い順:

    print_increment > num_steps > print_array_id > print_interval