Main Content

interface

Specify physical connections between components of mechss model

    Description

    example

    sysCon = interface(sys,c1,nodes1,c2,nodes2) specifies physical couplings between components c1 and c2 in the second-order sparse model sys. nodes1 and nodes2 contain the indices of shared nodes relative to the nodes of c1 and c2. The physical interface is assumed rigid and satisfies the standard consistency and equilibrium conditions. sysCon is the resultant model with the specified physical connections. Use showStateInfo to get the list of all available components of sys.

    example

    sysCon = interface(sys,c,nodes) specifies that component c interfaces with the ground. Connecting the node specified in c to the ground amounts to the zero displacement constraint (q = 0).

    sysCon = interface(___,KI,CI) further specifies the stiffness KI and damping CI for nonrigid interfaces.

    Examples

    collapse all

    For this example, consider a structural model that consists of two square plates connected with pillars at each vertex as depicted in the figure below. The lower plate is attached rigidly to the ground while the pillars are attached rigidly to each vertex of the square plate.

    Load the finite element model matrices contained in platePillarModel.mat and create the sparse second-order model representing the above system.

    load('platePillarModel.mat')
    sys = ...
       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');

    Use showStateInfo to examine the components of the mechss model object.

    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
    

    Now, load the interfaced node index data from nodeData.mat and use interface to create the physical connections between the two plates and the four pillars. nodes is a 6x7 cell array where the first two rows contain node index data for the first and second plates while the remaining four rows contain index data for the four pillars.

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

    Specify connection between the bottom plate and the ground.

    sysCon = interface(sys,"Plate2",nodes{2,7});

    Use showStateInfo to confirm the physical interfaces.

    showStateInfo(sysCon)
    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
    

    You can use spy to visualize the sparse matrices in the final model.

    spy(sysCon)

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

    The data set for this example was provided by Victor Dolk from ASML.

    Input Arguments

    collapse all

    Sparse second-order model, specified as a mechss model object. For more information, see mechss.

    Components of sys to connect, specified as a string or an array of character vectors. Use showStateInfo to get the list of all available components of sys.

    Index information of components to connect, specified as an Nc-by-Ni cell array, where Nc is the number of components and Ni is the number of physical interfaces.

    Stiffness matrix, specified as an Nq-by-Nq sparse matrix, where Nq is the number of nodes in sys.

    Damping matrix, specified as an Nq-by-Nq sparse matrix, where Nq is the number of nodes in sys.

    Output Arguments

    collapse all

    Output system with physical interfaces, returned as a mechss model object. Use showStateInfo to examine the list of physical interfaces in the system.

    Algorithms

    Dual Assembly

    interface uses the concept of dual assembly to physically connect the nodes of the model components. For n substructures in the physical domain, the sparse matrices in block diagonal form are:

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

    where, f is the force vector dependent on time and g is the vector of internal forces at the interface.

    Two interfaced components share a set of nodes in the global finite element mesh q: the subset N1 of nodes from the first component coincides with the subset N2 of nodes from the second component. The coupling between the two components is rigid only if:

    • The displacements q at the shared nodes are the same for both components.

      q(N1)=q(N2)

    • The forces g one component exerts on the other are opposite (by the action/reaction principle).

    This relation can be summarized as:

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

    where, H is a localisation matrix with entries 0, 1, or -1. The equation Hq = 0 is equivalent to q(N1) = q(N2), and the equation g = −HT λ is equivalent to g(N1) = −λ and g(N2) = λ. These equations can be combined in the differential-algebraic equation (DAE) form:

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

    This DAE model is called the dual assembly model of the overall structure. While the principle was explained for two components, this model can accommodate multiple interfaces, including interfaces involving more than two components.

    Nonrigid interface

    In non-rigid interfaces, the displacements q1(N1) and q2(N2) are allowed to differ and the internal force is given by:

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

    This models spring-damper-like connections between nodes N1 in the first component and nodes N2 in the second component. Going from rigid to non-rigid connection eliminates the algebraic constraints Hq = 0 and explicitates the internal forces. Then, eliminate λ to obtain:

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

    This is the set of the primal-assembly equations for non-rigid coupling form that remains symmetric when the uncoupled model is symmetric. A drawback of this form is that the coupling terms HTCiH and HTKiH may cause fill-in. To avoid this, interface instead constructs the dual-assembly form:

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

    Introduced in R2020b