# Rigid Rims, Coupling with Concentrated Masses, and Superelements

Extra steps are needed in both the Sierra/SM and the Sierra/SD analysis
to treat parts of the mesh as rigid bodies during the
Sierra/SD analysis. This section reviews those steps in the case of a
Rigidset. The missing mass is accounted for by adding a concentrated
mass. A similar approach for a Superelement is also described.

Suppose for example that a model has sidesets with ids $901$ and $902$.
If sidesets $901$ and $902$ surround two pieces of the mesh, then the
following command block will make the surfaces rigid. Although these
parts are free to deform, the resulting modes are very high frequency
and thus out of range of the low frequency range of interest.

:::{input}
RIGIDSET set1
  sideset 901
  sideset 902
END
:::

It is also often effective to add the mass properties of a rigid body
onto its centroid. This can be accomplished by coupling to a
concentrated mass. For this, a sphere element needs to be added to the
mesh file. This can be done with a tool to manipulate the mesh such as
Cubit or Patran (with gjoin). The sphere can be added to the
Sierra/SM input file, and it will be inactive for the first stage
analysis. For the Sierra/SD portion, the following blocks would connect
the concentrated mass to the rigid body.

:::{input}
RIGIDSET set1
  sideset 901
  sideset 902
  centernode tiedto node 28539 block 20
END

BLOCK 20
  coordinate 1
  Joint2G
  kx=elastic 1.0e+10
  ky=elastic 1.0e+10
  kz=elastic 1.0e+10
  krx=elastic 1.0e+10
  kry=elastic 1.0e+10
  krz=elastic 1.0e+10
END
:::
:::{input}
BEGIN RECTANGULAR COORDINATE SYSTEM 1
  origin 0 0 0
  z point 0 0 1
  xz point 1 0 1
END

BLOCK 17
  conMass
  mass 1.0e1
  Ixx 1.0e1
  Iyy 1.0e1
  Izz 1.0e1
  Ixy 0.0
  Ixz 0.0
  Iyz 0.0
  offset 0 0 0
END
:::

In this example, block 17 is the concentrated mass, and contains both
the mass and inertial properties of the rigid body. Thus, the actual
rigid body would be given zero density. Block 17 is also node 28539, and
is connected to the reference node of the Rigidset through block 20 via
the statement `centernode tiedto node 28539 block 20`. The reference
node of the Rigidset is chosen to be the node in the Rigidset that is
closest to its geometric centroid (which is computed by averaging the
coordinates of the nodes in the Rigidset). Since that node will most
likely not be at the same location as the concentrated mass node, block
20 will usually have a non-zero length.

We also note that in the statement
`centernode tiedto node 28539 block 20`, Node 28539 must be connected
to a virtual Joint2G block, in this case block 20. That is, block 20 is
not part of the mesh file in Exodus, but instead is created internally
in Sierra/SD during execution of the code. It is necessary that block 20
be a virtual Joint2G block, otherwise the code will die with a fatal
error message. This element provides $6$ components of elastic
resistance ($3$ translations and $3$ rotations) between the concentrated
mass and the reference node of the rigid body. As these elastic
stiffnesses increase, the effect converges to a rigid bar between the
pair of nodes.

This same approach can be used to couple to a Superelement in the case
where the Superelement has a single interface node. In that case, the
Superelement is also represented in the mesh with a sphere element, and
the coupling between the Superelement and the reference node of the
rigid body is specified in exactly the same manner. In this case,
however, block 17 is defined to be a Superelement rather than a
concentrated mass, and is given a corresponding Netcdf file that
contains the reduced mass and stiffness matrices of the Superelement.

:::{input}
RIGIDSET set1
  sideset 901
  sideset 902
  centernode tiedto node 28539 block 20
END

BLOCK 20
  coordinate 1
  Joint2G
  kx=elastic 1.0e+10
  ky=elastic 1.0e+10
  kz=elastic 1.0e+10
  krx=elastic 1.0e+10
  kry=elastic 1.0e+10
  krz=elastic 1.0e+10
END
BEGIN RECTANGULAR COORDINATE SYSTEM 1
   origin 0 0 0
   z point 0 0 1
   xz point 1 0 1
END
:::

:::{input}
BLOCK 17
   Superelement
   file='superelement.ncf'
   map
     // local grid id   cid
        1            1
        1            2
        1            3
        1            4
        1            5
        1            6
        0  0
        0  0
        0  0
        0  0
        0  0
        0  0
        0  0
        0  0
        0  0
END
:::
