Home > リソース > MBDynチュートリアル > 23.バネ‐マス‐ダンパー系(2)〜DeformableジョイントとConstitutive Law
MBDynチュートリアル

23.バネ‐マス‐ダンパー系(2)〜DeformableジョイントとConstitutive Law

本項では、structural internal forceの代わりに“deformable displacement joint”を用いてバネとダンパーを表現し、前項で作成したバネ‐マス‐ダンパー系のシミュレーションモデルと同等なモデルを作成します。

Deformableジョイント

ジョイントは通常、ハードな拘束条件を付加して系の自由度を減らしますが、次の3つの“deformable”ジョイントは例外です。

これらのジョイントは“deformble”の名の通り、2つのnodeを弾性力や粘性力で結びつけます。“ゴムの塊”のようなもので2つの剛体を接続することをイメージすると良いでしょう。diformable displacement jointは並進方向のみ、deformable hingeは回転方向のみ、そしてdeformable jointは並進方向と回転方向の両方に弾性力や粘性力を働かせることができます。弾性力や粘性力の特性は“constitutive law”によって定義します。constitutive lawはとても多くの種類がありますので、詳しくは公式のInput manualを参照してください。

Deformable displacement joint

このジョイントは、2つのnode(またはオフセットした点)の間に並進方向の弾性力や粘性力を働かせます。deformable displacement jointを定義する基本的なステートメントの型は次のようになります。

   joint: <label>
      deformable displacement joint,
         <node 1>,
            <relative offset 1>,
          [ hinge, <relative orientation matrix 1>, ]
         <node 2>,
            <relative offset 2>,
          [ hinge, <relative orientation matrix 2>, ]
         <constitutive law>;

<constitutive law>はnode1の座標系を参照します。

バネとダンパーの定義

一般に、deformable displacement jointを用いてバネとダンパーを表現することができます。本例題の場合、次のようにdeformable displacement jointを定義します。(図1参照)

   set: integer JoDfmd_SpringDamper = 4;

   joint: JoDfmd_SpringDamper,
      deformable displacement joint,
         Node_Ground,
            null, # relative offset
         Node_Mass, 
            null, # relative offset
         linear viscoelastic isotropic,
            K,    # stiffness
            C,    # viscosity coefficient
         prestrain, single, 0., 0., -1, const, L;

ここで、バネとダンパーは線形なので、constitutive lawは“linear viscoelastic isotropic”を使用します。また、バネは自然長 L > 0 を持つので、“prestrain”でこれを定義します。


plan_spring_mass_damper_2

図1: バネ‐マス‐ダンパー系シミュレーションモデルの設計図

入力ファイル

deformable displacement jointを用いてバネとダンパーを表現した場合の、例題8のバネ‐マス‐ダンパー系の入力ファイルを以下のコード1に示します。

spring_mass_damper_2.mbd
# spring_mass_damper_2.mbd

#-----------------------------------------------------------------------------
# [Data Block]

begin: data;
   problem: initial value;
end: data;

#-----------------------------------------------------------------------------
# [<Problem> Block]

begin: initial value;
   initial time:   0.;
   final time:     5.;
   time step:      1.e-3;
   max iterations: 10;
   tolerance:      1.e-6;
end: initial value;

#-----------------------------------------------------------------------------
# [Control Data Block]

begin: control data;
   skip initial joint assembly;
   output frequency: 10;
   structural nodes: 2;
   rigid bodies:     1;
   joints:           4;
   gravity;
end: control data;

#-----------------------------------------------------------------------------
# Design Variables
set: real M = 1.;  #[kg] Mass
set: real L = 1.;  #[m] Spring Natural Length
set: real K = 20.; #[N/m] Spring Stiffness Coefficient
set: real C = 1;   #[Ns/m] Damper Damping Coefficient

#-----------------------------------------------------------------------------
# Node Labels
set: integer Node_Ground = 1;
set: integer Node_Mass   = 2;

# Body Labels
set: integer Body_Mass = 1;

# Joint Labels
set: integer JoClamp_Ground      = 1;
set: integer JoInLin_Ground_Mass = 2;
set: integer JoPrism_Ground_Mass = 3;
set: integer JoDfmd_SpringDamper = 4;

#-----------------------------------------------------------------------------
# [Nodes Block]

begin: nodes;

   #-----------------------------------------------------------------------------
   # Nodes
   structural: Node_Ground, static,
      null, # absolute position
      eye,  # absolute orientation
      null, # absolute velocity
      null; # absolute angular velocity
      
   structural: Node_Mass, dynamic,
      0., 0., -L, # absolute position
      eye,        # absolute orientation
      null,       # absolute velocity
      null;       # absolute angular velocity
      
end: nodes;

#-----------------------------------------------------------------------------
# [Elements Block]

begin: elements;

   #-----------------------------------------------------------------------------
   # Bodies
   body: Body_Mass, Node_Mass,
      M,    # mass
      null, # relative center of mass
      eye;  # inertia matrix

   #-----------------------------------------------------------------------------
   # Joints
   joint: JoClamp_Ground,
      clamp,
         Node_Ground,
            null, # absolute position
            eye;  # absolute orientation
      
   joint: JoInLin_Ground_Mass, 
      in line,
         Node_Ground,
            null, # relative line position
            eye,  # relative line orientation
         Node_Mass;
      
   joint: JoPrism_Ground_Mass,
      prismatic,
         Node_Ground,
         Node_Mass;
         
   joint: JoDfmd_SpringDamper,
      deformable displacement joint,
         Node_Ground,
            null, # relative offset
         Node_Mass, 
            null, # relative offset
         linear viscoelastic isotropic,
            K,    # stiffness
            C,    # viscosity coefficient
         prestrain, single, 0., 0., -1, const, L;
   
   #-----------------------------------------------------------------------------
   # Gravity          
   gravity: 0., 0., -1., const, 9.81;
   
end: elements;
コード1: 例題8(バネ‐マス‐ダンパー系)の入力ファイル記述例A

シミュレーション結果の比較

図2は、structural internal forceとdeformable displacement jointのそれぞれを用いて作成した、2つのバネ‐マス‐ダンパー系シミュレーションモデルのシミュレーション結果の比較です。これより、2つのモデルが全く同等であることが確認できます。


plot_spring_mass_damper_compare

図2: 2つのバネ‐マス‐ダンパー系シミュレーションモデルの比較