**rigid_body
#
Description#
Some direct solvers, like frontal
and sparse_direct
, are able to automatically detect rigid body motions (i.e kernel) in the factorization step of the local matrices \([K]_i\) (see page ). But some others, like sparse_dscpack
, can not automatically detect these rigid body motions, so they have to be indicated to it.
Using this latter solver, the **rigid_body
command can be used to find the rigid body motions of each sub-domain, using empirical geometrically criteria, and to write them in the problem.cut
and problem.cu
files. It should be noticed that this command just runs in 3D
with impose_nodal_dof
boundary conditions, in the global coordinate system.
Syntax#
**rigid_body
\(~\,\) *nset
nset1 … nsetN
\(~\,\) *dof
dof1 … dofN
*nset
is the list of all nset names for which an
impose_nodal_dof
boundary condition exists in the****calcul
module. If several dofs are imposed for an nset, the name of this nset must appear several times.*dof
is the list of the correspondent dofs.
Note
If the parallel computation is not a 3D one, or if other types of boundary conditions are used, the **rigid_body
command should not be used; and the rigid body motions have to be directly specified at the end of the problem.cut
file for each sub-domain using the following syntax. It should be noticed that in this case, the problem.cu
has to be removed.
**bc
sd nrb
\(~\,~\,\) node_1 dof_1 … node_nrb dof_nrb
Where
sd
is the number of the sub-domain for which rigid-body motions are specified.
nbr
is the number of rigid-body motions for sub-domain sd.
node_i
is a node number.
dof_i
is the dof name for the rigid-body motion at node_i (e.g. U1, U2 or U3).
The information concerning nodes and dofs can be obtained by observing sub-domains, or by running the same computation using a sparse_direct linear solver and by stopping it just after sub-domain matrices factorization.
Note
The sparse_dscpack
direct linear solver should not be used if the rigid body motions of a sub-domain change during computation.