**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
*nsetis the list of all nset names for which an
impose_nodal_dofboundary condition exists in the****calculmodule. If several dofs are imposed for an nset, the name of this nset must appear several times.*dofis 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
sdis the number of the sub-domain for which rigid-body motions are specified.
nbris the number of rigid-body motions for sub-domain sd.
node_iis a node number.
dof_iis 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.