sfepy.discrete.common.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.discrete.common.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.discrete.common.dof_info.
EquationMap
(name, dof_names, var_di)[source]¶ Map all DOFs to equations for active DOFs.
-
get_operator
()[source]¶ Get the matrix operator R corresponding to the equation mapping, such that the restricted matrix A_r can be obtained from the full matrix A by A_r = R^T A R. All the matrices are w.r.t. a single variables that uses this mapping.
Returns: mtx : coo_matrix
The matrix R.
-
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 : Problem 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).
-
-
sfepy.discrete.common.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.discrete.common.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.