bc
Although called boundary condition, here we only deal with trivial Dirichlet boundary condition.
Syntax
There are currently several commands to define boundary conditions.
fix (1) (2) (3...)
fix2 (1) (2) (3...)
multiplierbc (1) (2) (3...)
penaltybc (1) (2) (3...)
# (1) int, unique tag
# (2) string, dof identifier
# (3...) int, tags of nodes that shall be constrainedTo apply BCs to node groups, it is possible to use the following commands.
groupmultiplierbc (1) (2) (3...)
grouppenaltybc (1) (2) (3...)
# (1) int, unique tag
# (2) string, dof identifier
# (3...) int, tags of groups that shall be constrainedRemark
Both
fixandfix2serve the same purpose but with different approaches. Thefixcommand modifies the corresponding main diagonal term by multiplying a large number, for example . Thefix2command erase the column and row of target DoF and set the main diagonal to unity. In both case, the corresponding right hand side entry is erased.The
fixandpenaltybccommands is computationally efficient but leads to an ill-conditioned matrix. This may not be a problem for direct solvers but will greatly affect the performance of iterative solvers. The penalty number can be controlled bysetcommand viaconstraint_multiplieroption.The
fix2andmultiplierbccommands requires more operations but the final matrix is well conditioned.The performance difference is almost negligible. Either one can be used with direct solvers. The error won't accumulate as there is a special mechanism to prevent it.
The DoF identifier
(2)takes the following string input:1,2,3,4,5,6,pinned,encastre,xsymm,ysymm,zsymmand the corresponding initialsp,e,x,y,z. The names do not actually reflect their meaning, instead, following DoFs would be restrained when string input is given.pinned: 1 2 3encastre: 1 2 3 4 5 6xsymm: 1 5 6ysymm: 2 4 6zsymm: 3 4 5
The nontrivial Dirichlet boundary condition is treated as displacement load.
Last updated