sfepy.fem.dof_info module¶
Classes holding information on global DOFs and mapping of all DOFs - equations (active DOFs).
Helper functions for the equation mapping.
-
class
sfepy.fem.dof_info.DofInfo(name)[source]¶ Global DOF information, i.e. ordering of DOFs of the state (unknown) variables in the global state vector.
-
append_raw(name, n_dof)[source]¶ Append raw DOFs.
Parameters: name : str
The name of variable the DOFs correspond to.
n_dof : int
The number of DOFs.
-
append_variable(var, active=False)[source]¶ Append DOFs of the given variable.
Parameters: var : Variable instance
The variable to append.
active : bool, optional
When True, only active (non-constrained) DOFs are considered.
-
get_info(var_name)[source]¶ Return information on DOFs of the given variable.
Parameters: var_name : str
The name of the variable.
-
-
class
sfepy.fem.dof_info.EdgeDirectionOperator(name, nodes, region, field, dof_names, filename=None)[source]¶ Transformation matrix operator for edges direction LCBCs.
The substitution (in 3D) is:
![[u_1, u_2, u_3]^T = [d_1, d_2, d_3]^T w,](../../../_images/math/1dae36e45504a1ec3131e48dfdb2af58941521aa.png)
where
is an edge direction vector averaged into a node. The
new DOF is
.
-
class
sfepy.fem.dof_info.EquationMap(name, dof_names, var_di)[source]¶ Map all DOFs to equations for active DOFs.
-
get_operator()[source]¶ Get the matrix operator
corresponding to the equation
mapping, such that the restricted matrix
can be
obtained from the full matrix
by
. All the matrices are w.r.t. a single variables that uses
this mapping.Returns: mtx : coo_matrix
The matrix
.
-
map_equations(bcs, field, ts, functions, problem=None, warn=False)[source]¶ Create the mapping of active DOFs from/to all DOFs.
Parameters: bcs : Conditions instance
The Dirichlet or periodic boundary conditions (single condition instances). The dof names in the conditions must already be canonized.
field : Field instance
The field of the variable holding the DOFs.
ts : TimeStepper instance
The time stepper.
functions : Functions instance
The registered functions.
problem : ProblemDefinition instance, optional
The problem that can be passed to user functions as a context.
warn : bool, optional
If True, warn about BC on non-existent nodes.
Returns: active_bcs : set
The set of boundary conditions active in the current time.
Notes
- Periodic bc: master and slave DOFs must belong to the same field (variables can differ, though).
-
-
class
sfepy.fem.dof_info.IntegralMeanValueOperator(name, nodes, region, field, dof_names, filename=None)[source]¶ Transformation matrix operator for integral mean value LCBCs. All node DOFs are sumed to the new one.
-
class
sfepy.fem.dof_info.LCBCOperators(name, eq_map, offset)[source]¶ Container holding instances of LCBCOperator subclasses for a single variable.
Parameters: name : str
The object name.
eq_map : EquationMap instance
The equation mapping of the variable.
offset : int
The offset added to markers distinguishing the individual LCBCs.
-
class
sfepy.fem.dof_info.NoPenetrationOperator(name, nodes, region, field, dof_names, filename=None)[source]¶ Transformation matrix operator for no-penetration LCBCs.
-
class
sfepy.fem.dof_info.NormalDirectionOperator(name, nodes, region, field, dof_names, filename=None)[source]¶ Transformation matrix operator for normal direction LCBCs.
The substitution (in 3D) is:
![[u_1, u_2, u_3]^T = [n_1, n_2, n_3]^T w](../../../_images/math/559ba89aeed7347aacbbc49f90b3b770f1fa3857.png)
The new DOF is
.
-
class
sfepy.fem.dof_info.RigidOperator(name, nodes, field, dof_names, all_dof_names)[source]¶ Transformation matrix operator for rigid LCBCs.
-
sfepy.fem.dof_info.expand_nodes_to_dofs(nods, n_dof_per_node)[source]¶ Expand DOF node indices into DOFs given a constant number of DOFs per node.
-
sfepy.fem.dof_info.expand_nodes_to_equations(nods, dof_names, all_dof_names)[source]¶ Expand vector of node indices to equations (DOF indices) based on the DOF-per-node count.
DOF names must be already canonized.
-
sfepy.fem.dof_info.is_active_bc(bc, ts=None, functions=None)[source]¶ Check whether the given boundary condition is active in the current time.
Returns: active : bool
True if the condition bc is active.
-
sfepy.fem.dof_info.make_global_lcbc_operator(lcbc_ops, adi, new_only=False)[source]¶ Assemble all LCBC operators into a single matrix.
Returns: mtx_lc : csr_matrix
The global LCBC operator in the form of a CSR matrix.
lcdi : DofInfo
The global active LCBC-constrained DOF information.
new_only : bool
If True, the operator columns will contain only new DOFs.

