Main Content

interface

mechss モデルのコンポーネント間の物理接続の指定

    説明

    sysCon = interface(sys,C1,IC1,C2,IC2) は、2 次スパース モデル sys のコンポーネント C1C2 間の物理結合を指定します。IC1 および IC2 には、C1 および C2 の自由度 (DOF) を基準とした、結合後の DOF のインデックスが含まれます。物理インターフェイスは剛体と見なされ、標準の整合性と平衡条件を満たします。sysCon は、指定された物理接続を使用する結果のモデルです。sys の使用可能なすべてのコンポーネントのリストを取得するには showStateInfo を使用します。

    sysCon = interface(sys,C,IC) は、コンポーネント C が地面と接することを指定します。C の自由度 q を地面に接続すると、ゼロの変位拘束 (q(IC) = 0) になります。

    さらに、sysCon = interface(___,KI,CI) は、非剛体インターフェイスの剛性 KI と減衰 CI も指定します。

    sysCon = interface(___,method) は、アセンブリ メソッドを指定します。既定では、method = 'dual' であり、関数は物理結合のデュアルアセンブリ メソッドを使用します。物理結合の主要アセンブリ メソッドを使用するには、method = 'primal' を設定します。詳細については、アルゴリズムを参照してください。

    すべて折りたたむ

    この例では、下の図に示すように、各頂点の支柱に連結されている 2 枚の四角形のプレートで構成される構造モデルを考えます。下のプレートは地面にしっかり取り付けられ、支柱は四角形のプレートの各頂点にしっかり取り付けられています。

    plate_pillar_assembled-01-01.png

    platePillarModel.mat に含まれている有限要素モデル行列を読み込み、上記システムを表すスパース 2 次モデルを作成します。

    load('platePillarModel.mat')
    model = ...
       mechss(M1,[],K1,B1,F1,'Name','Plate1') + ...
       mechss(M2,[],K2,B2,F2,'Name','Plate2') + ...
       mechss(Mp,[],Kp,Bp,Fp,'Name','Pillar3') + ...
       mechss(Mp,[],Kp,Bp,Fp,'Name','Pillar4') + ...
       mechss(Mp,[],Kp,Bp,Fp,'Name','Pillar5') + ...
       mechss(Mp,[],Kp,Bp,Fp,'Name','Pillar6');
    sys = model;

    mechss モデル オブジェクトのコンポーネントを確認するには showStateInfo を使用します。

    showStateInfo(sys)
    The state groups are:
    
        Type        Name      Size
      ----------------------------
      Component    Plate1     2646
      Component    Plate2     2646
      Component    Pillar3     132
      Component    Pillar4     132
      Component    Pillar5     132
      Component    Pillar6     132
    

    次に、相互作用する自由度 (DOF) インデックス データを dofData.mat から読み込み、interface を使用して 2 枚のプレートと 4 本の支柱間の物理的接続を作成します。dofs は、最初の 2 行に 1 枚目と 2 枚目のプレートの DOF インデックス データを含み、他の 4 行に 4 本の支柱のインデックス データを含む 6x7 の cell 配列です。関数は既定で、物理結合のデュアルアセンブリ メソッドを使用します。

    load('dofData.mat','dofs')
    for i=3:6
       sys = interface(sys,"Plate1",dofs{1,i},"Pillar"+i,dofs{i,1});
       sys = interface(sys,"Plate2",dofs{2,i},"Pillar"+i,dofs{i,2});
    end

    下のプレートと地面間の接続を指定します。

    sysConDual = interface(sys,"Plate2",dofs{2,7});

    物理インターフェイスを確認するには showStateInfo を使用します。

    showStateInfo(sysConDual)
    The state groups are:
    
        Type            Name         Size
      -----------------------------------
      Component        Plate1        2646
      Component        Plate2        2646
      Component       Pillar3         132
      Component       Pillar4         132
      Component       Pillar5         132
      Component       Pillar6         132
      Interface    Plate1-Pillar3      12
      Interface    Plate2-Pillar3      12
      Interface    Plate1-Pillar4      12
      Interface    Plate2-Pillar4      12
      Interface    Plate1-Pillar5      12
      Interface    Plate2-Pillar5      12
      Interface    Plate1-Pillar6      12
      Interface    Plate2-Pillar6      12
      Interface    Plate2-Ground        6
    

    spy を使用して、最終モデルのスパース行列を可視化できます。

    spy(sysConDual)

    Figure contains an axes object. The axes object with title nnz: M=95256, K=249052, B=1, F=1. contains 37 objects of type line. These objects represent K, B, F, D.

    ここで、主要アセンブリ メソッドを使用して物理的接続を指定します。

    sys = model;
    for i=3:6
       sys = interface(sys,"Plate1",dofs{1,i},"Pillar"+i,dofs{i,1},'primal');
       sys = interface(sys,"Plate2",dofs{2,i},"Pillar"+i,dofs{i,2},'primal');
    end
    sysConPrimal = interface(sys,"Plate2",dofs{2,7},'primal');

    物理インターフェイスを確認するには showStateInfo を使用します。

    showStateInfo(sysConPrimal)
    The state groups are:
    
        Type        Name      Size
      ----------------------------
      Component    Plate1     2646
      Component    Plate2     2640
      Component    Pillar3     108
      Component    Pillar4     108
      Component    Pillar5     108
      Component    Pillar6     108
    

    主要アセンブリによって、グローバル有限要素メッシュ内の一連の共有 DOF に関連付けられた冗長な DOF の半分が取り除かれます。

    spy を使用して、最終モデルのスパース行列を可視化できます。

    spy(sysConPrimal)

    Figure contains an axes object. The axes object with title nnz: M=94666, K=246838, B=1, F=1. contains 19 objects of type line. These objects represent K, B, F, D.

    この例のデータセットは、ASML の Victor Dolk によって提供されています。

    入力引数

    すべて折りたたむ

    スパース 2 次モデル。mechss モデル オブジェクトとして指定します。詳細については、mechss を参照してください。

    接続する sys のコンポーネント。string または文字ベクトルの配列として指定します。sys の使用可能なすべてのコンポーネントのリストを取得するには showStateInfo を使用します。

    接続するコンポーネントのインデックス情報。NcNi 列の cell 配列として指定します。ここで、Nc はコンポーネントの数、Ni は物理インターフェイスの数です。

    剛性行列。NqNq 列のスパース行列として指定します。ここで Nqsys 内の DOF の数です。

    減衰行列。NqNq 列のスパース行列として指定します。ここで Nqsys 内の DOF の数です。

    インターフェイスのアセンブリ メソッド。次のいずれかとして指定します。

    • 'dual' — 物理結合のデュアルアセンブリ メソッドを使用します。このメソッドは、代数変数を追加することでスパース性を維持します。

    • 'primal' — 物理結合の主要アセンブリ メソッドを使用します。このメソッドでは最小数の DOF を使用しますが、システムは非スパース要素の影響を受ける場合があります。

    詳細については、アルゴリズムを参照してください。

    出力引数

    すべて折りたたむ

    物理インターフェイスをもつ出力システム。mechss モデル オブジェクトとして返されます。システムの物理インターフェイスのリストを確認するには、showStateInfo を使用します。

    アルゴリズム

    すべて折りたたむ

    デュアルアセンブリ モデル

    剛体インターフェイス

    interface は、既定で "デュアル アセンブリ" の概念を使用して、モデル コンポーネントの自由度 (DOF) を物理的に接続します。物理領域の n 個のサブ構造体を表す、ブロック対角型のスパース行列は次のようになります。

    M  diag(M1,...,Mn)=[M1000000Mn]C  diag(C1,...,Cn)K  diag(K1,...,Kn)q  [q1qn],    B  [B1Bn],    F  [F1Fn],     G  [G1Gn],

    ここで、f は時間に依存する力ベクトル、g はインターフェイスにおける内力のベクトルです。

    相互作用する 2 つのコンポーネントは、グローバル有限要素メッシュ q で一連の DOF を共有します。最初のコンポーネントの DOF のサブセット N1 は、2 番目のコンポーネントの DOF のサブネット N2 と一致しています。2 つのコンポーネント間の結合は、次の場合にのみ剛体になります。

    • 共有された DOF における変位 q が両方のコンポーネントで等しい。

      q(N1)=q(N2)

    • 一方のコンポーネントが他方に及ぼす力 g が (作用反作用の原理により) 逆になる。

      g(N1)+g(N2)=0

    この関係は、次のように要約できます。

    M q¨+C q˙+K q=B u+g,      H q=0,       g=HTλ,

    ここで、H はエントリが 0、1、または –1 の位置推定行列です。方程式 Hq = 0 は q(N1) = q(N2) と等価で、方程式 g = −HT λ は g(N1) = −λ および g(N2) = λ と等価です。これらの方程式は、次の微分代数方程式 (DAE) 形式で結合できます。

    [M000][q¨λ¨]+[C000][q˙λ˙]+[KHTH0][qλ]=[B0]uy=[F0][qλ]+[G0][q˙λ˙]+Du.

    この DAE モデルは、構造体全体の "デュアル アセンブリ" モデルと呼ばれます。2 つのコンポーネントの原則について説明しましたが、このモデルには、2 つを超えるコンポーネントが関係するインターフェイスを含む複数のインターフェイスを受け入れることができます。

    非剛体インターフェイス

    非剛体インターフェイスでは、変位 q1(N1) と q2(N2) が異なっていてもよく、内力は以下で与えられます。

    λ = Kiδ+Ciδ˙, δHq=q1(N1)q2(N2).

    これにより、最初のコンポーネントの DOF N1 と 2 番目のコンポーネントの DOF N2 間でバネ-ダンパー状の接続がモデル化されます。剛体接続から非剛体接続にすることで、代数制約 Hq = 0 が削除され、内力が示されます。λ を削除すると、以下が得られます。

    M q¨+(C+HTCiH)q˙+(K+HTKiH)q=0,      y=Fq+Gq˙+Du.

    これは、分離されたモデルが対称の場合に対称のままになる、非剛体結合形式の一連の "主要アセンブリ" 方程式です。この形式の欠点は、連結項 HTCiH および HTKiH により非スパースが生じる可能性があることです。これを回避するために、interface では、代わりに以下のデュアルアセンブリ形式が作成されます。

    [M00000000][q¨δ¨λ¨]+[C000Ci0000][q˙δ˙λ˙]+[K0HT0KiIHI0][qδλ]=[B00]u.

    主要アセンブリ モデル

    剛体インターフェイスの "主要アセンブリ" は、次の制約と関連付けられた冗長な DOF の半分を取り除くことで構成されます。

    q(N1)=q(N2)

    Hq = 0 がこの制約の行列表現である場合、これは結局 q = Lqr を記述することになります。ここで、qr は一連の独立した (自由な) DOF であり、L は H のヌル空間に広がります。

    HL=0

    H の非ゼロ部分は (I –I) の形式であるため、L は、サイズ q の単位行列から開始して、ブロック (N2,N2) を位置 (N2,N1) に移動し、インデックス N2 をもつゼロの列を削除することで構成できます。q = Lqr を使用すると、方程式

    Mq¨+Cq˙+Kq=Bu+g,g=HTλy=Fq+Gq˙+Du

    は次のようになります。

    MLq¨r+CLq˙r+KLqr=Bu+g,y=FLqr+GLq˙r+Du.

    LTHT = (HL)T = 0 を使用すると、方程式の最初の部分は、LT を左から掛けることで L の範囲に投影できます。

    (LTML)q¨r+(LTCL)q˙r+(LTKL)qr=LTBu,y=FLqr+GLq˙r+Du.

    これは interface"主要アセンブリ" モデルです。対応するデュアルアセンブリよりも代数変数が 2N1 個少なくなりますが、低次元化された M、C、K に非スパース要素の生ずる可能性があります。

    非剛体インターフェイスの場合、λ と g の明示的な式を使用して、主要アセンブリの方程式を取得します。

    M q¨+(C+HTCiH)q˙+(K+HTKiH)q=0,      y=Fq+Gq˙+Du.

    ここではインターフェイスの減衰と剛性によって C と K が変更され、DOF の数は変化しません。

    バージョン履歴

    R2020b で導入