This class handles the numbering of degrees of freedom on a mesh. 更多...
#include <dof_map.h>
类 | |
class | AugmentSendList |
Abstract base class to be used to add user-defined parallel degree of freedom couplings. 更多... | |
class | AugmentSparsityPattern |
Backwards compatibility for prior AugmentSparsityPattern users. 更多... | |
Public 成员函数 | |
DofMap (const unsigned int sys_number, MeshBase &mesh) | |
Constructor. 更多... | |
~DofMap () | |
Destructor. 更多... | |
void | attach_matrix (SparseMatrix< Number > &matrix) |
Additional matrices may be attached to this DofMap . 更多... | |
void | update_sparsity_pattern (SparseMatrix< Number > &matrix) const |
Additional matrices may be be temporarily initialized by this DofMap . 更多... | |
bool | is_attached (SparseMatrix< Number > &matrix) |
Matrices should not be attached more than once. 更多... | |
std::size_t | distribute_dofs (MeshBase &) |
Distribute dofs on the current mesh. 更多... | |
void | compute_sparsity (const MeshBase &) |
Computes the sparsity pattern for the matrices corresponding to proc_id and sends that data to Linear Algebra packages for preallocation of sparse matrices. 更多... | |
bool | computed_sparsity_already () const |
Returns true iff a sparsity pattern has already been computed. 更多... | |
void | set_constrained_sparsity_construction (bool use_constraints) |
Sets the current policy for constructing sparsity patterns: if use_constraints is true (for robustness), we explicitly account for sparsity entries created by constraint matrix pre- and post- application. 更多... | |
bool | constrained_sparsity_construction () |
Returns true iff the current policy when constructing sparsity patterns is to explicitly account for sparsity entries created by constraint matrix pre- and post- application. 更多... | |
void | clear_sparsity () |
Clears the sparsity pattern. 更多... | |
void | remove_default_ghosting () |
Remove any default ghosting functor(s). 更多... | |
void | add_default_ghosting () |
Add the default functor(s) for coupling and algebraic ghosting. 更多... | |
void | add_coupling_functor (GhostingFunctor &coupling_functor, bool to_mesh=true) |
Adds a functor which can specify coupling requirements for creation of sparse matrices. 更多... | |
void | add_coupling_functor (std::shared_ptr< GhostingFunctor > coupling_functor, bool to_mesh=true) |
Adds a functor which can specify coupling requirements for creation of sparse matrices. 更多... | |
void | remove_coupling_functor (GhostingFunctor &coupling_functor) |
Removes a functor which was previously added to the set of coupling functors, from both this DofMap and from the underlying mesh. 更多... | |
std::set< GhostingFunctor * > ::const_iterator | coupling_functors_begin () const |
Beginning of range of coupling functors. 更多... | |
std::set< GhostingFunctor * > ::const_iterator | coupling_functors_end () const |
End of range of coupling functors. 更多... | |
DefaultCoupling & | default_coupling () |
Default coupling functor. 更多... | |
void | add_algebraic_ghosting_functor (GhostingFunctor &evaluable_functor, bool to_mesh=true) |
Adds a functor which can specify algebraic ghosting requirements for use with distributed vectors. 更多... | |
void | add_algebraic_ghosting_functor (std::shared_ptr< GhostingFunctor > evaluable_functor, bool to_mesh=true) |
Adds a functor which can specify algebraic ghosting requirements for use with distributed vectors. 更多... | |
void | remove_algebraic_ghosting_functor (GhostingFunctor &evaluable_functor) |
Removes a functor which was previously added to the set of algebraic ghosting functors, from both this DofMap and from the underlying mesh. 更多... | |
std::set< GhostingFunctor * > ::const_iterator | algebraic_ghosting_functors_begin () const |
Beginning of range of algebraic ghosting functors. 更多... | |
std::set< GhostingFunctor * > ::const_iterator | algebraic_ghosting_functors_end () const |
End of range of algebraic ghosting functors. 更多... | |
DefaultCoupling & | default_algebraic_ghosting () |
Default algebraic ghosting functor. 更多... | |
void | attach_extra_sparsity_object (SparsityPattern::AugmentSparsityPattern &asp) |
Attach an object to use to populate the sparsity pattern with extra entries. 更多... | |
void | attach_extra_sparsity_function (void(*func)(SparsityPattern::Graph &sparsity, std::vector< dof_id_type > &n_nz, std::vector< dof_id_type > &n_oz, void *), void *context=nullptr) |
Attach a function pointer to use as a callback to populate the sparsity pattern with extra entries. 更多... | |
void | attach_extra_send_list_object (DofMap::AugmentSendList &asl) |
Attach an object to populate the send_list with extra entries. 更多... | |
void | attach_extra_send_list_function (void(*func)(std::vector< dof_id_type > &, void *), void *context=nullptr) |
Attach a function pointer to use as a callback to populate the send_list with extra entries. 更多... | |
void | prepare_send_list () |
Takes the _send_list vector (which may have duplicate entries) and sorts it. 更多... | |
void | clear_send_list () |
Clears the _send_list vector. 更多... | |
void | reinit_send_list (MeshBase &mesh) |
Clears the _send_list vector and then rebuilds it. 更多... | |
const std::vector< dof_id_type > & | get_send_list () const |
const std::vector< dof_id_type > & | get_n_nz () const |
const std::vector< dof_id_type > & | get_n_oz () const |
const SparsityPattern::Build * | get_sparsity_pattern () const |
void | add_variable_group (VariableGroup var_group) |
Add an unknown of order order and finite element type type to the system of equations. 更多... | |
void | set_error_on_cyclic_constraint (bool error_on_cyclic_constraint) |
Specify whether or not we perform an extra (opt-mode enabled) check for constraint loops. 更多... | |
void | set_error_on_constraint_loop (bool error_on_constraint_loop) |
const VariableGroup & | variable_group (const unsigned int c) const |
const Variable & | variable (const unsigned int c) const |
Order | variable_order (const unsigned int c) const |
Order | variable_group_order (const unsigned int vg) const |
const FEType & | variable_type (const unsigned int c) const |
const FEType & | variable_group_type (const unsigned int vg) const |
unsigned int | n_variable_groups () const |
unsigned int | n_variables () const |
unsigned int | var_group_from_var_number (unsigned int var_num) const |
bool | has_blocked_representation () const |
unsigned int | block_size () const |
dof_id_type | n_dofs () const |
dof_id_type | n_SCALAR_dofs () const |
dof_id_type | n_local_dofs () const |
dof_id_type | n_dofs_on_processor (const processor_id_type proc) const |
dof_id_type | first_dof (const processor_id_type proc) const |
dof_id_type | first_dof () const |
dof_id_type | first_old_dof (const processor_id_type proc) const |
dof_id_type | first_old_dof () const |
dof_id_type | end_dof (const processor_id_type proc) const |
dof_id_type | end_dof () const |
processor_id_type | dof_owner (const dof_id_type dof) const |
dof_id_type | end_old_dof (const processor_id_type proc) const |
dof_id_type | end_old_dof () const |
void | dof_indices (const Elem *const elem, std::vector< dof_id_type > &di) const |
Fills the vector di with the global degree of freedom indices for the element. 更多... | |
void | dof_indices (const Elem *const elem, std::vector< dof_id_type > &di, const unsigned int vn, int p_level=-12345) const |
Fills the vector di with the global degree of freedom indices for the element. 更多... | |
void | dof_indices (const Node *const node, std::vector< dof_id_type > &di) const |
Fills the vector di with the global degree of freedom indices for the node . 更多... | |
void | dof_indices (const Node *const node, std::vector< dof_id_type > &di, const unsigned int vn) const |
Fills the vector di with the global degree of freedom indices for the node , for one variable vn . 更多... | |
void | dof_indices (const Elem &elem, unsigned int n, std::vector< dof_id_type > &di, const unsigned int vn) const |
Appends to the vector di the global degree of freedom indices for elem.node_ref(n) , for one variable vn . 更多... | |
void | old_dof_indices (const Elem &elem, unsigned int n, std::vector< dof_id_type > &di, const unsigned int vn) const |
Appends to the vector di the old global degree of freedom indices for elem.node_ref(n) , for one variable vn . 更多... | |
void | SCALAR_dof_indices (std::vector< dof_id_type > &di, const unsigned int vn, const bool old_dofs=false) const |
Fills the vector di with the global degree of freedom indices corresponding to the SCALAR variable vn. 更多... | |
bool | semilocal_index (dof_id_type dof_index) const |
bool | all_semilocal_indices (const std::vector< dof_id_type > &dof_indices) const |
bool | local_index (dof_id_type dof_index) const |
template<typename DofObjectSubclass > | |
bool | is_evaluable (const DofObjectSubclass &obj, unsigned int var_num=libMesh::invalid_uint) const |
void | set_implicit_neighbor_dofs (bool implicit_neighbor_dofs) |
Allow the implicit_neighbor_dofs flag to be set programmatically. 更多... | |
void | set_verify_dirichlet_bc_consistency (bool val) |
Set the _verify_dirichlet_bc_consistency flag. 更多... | |
bool | use_coupled_neighbor_dofs (const MeshBase &mesh) const |
Tells other library functions whether or not this problem includes coupling between dofs in neighboring cells, as can currently be specified on the command line or inferred from the use of all discontinuous variables. 更多... | |
void | extract_local_vector (const NumericVector< Number > &Ug, const std::vector< dof_id_type > &dof_indices, DenseVectorBase< Number > &Ue) const |
Builds the local element vector Ue from the global vector Ug , accounting for any constrained degrees of freedom. 更多... | |
void | local_variable_indices (std::vector< dof_id_type > &idx, const MeshBase &mesh, unsigned int var_num) const |
Fills an array of those dof indices which belong to the given variable number and live on the current processor. 更多... | |
dof_id_type | n_constrained_dofs () const |
dof_id_type | n_local_constrained_dofs () const |
dof_id_type | n_constrained_nodes () const |
void | create_dof_constraints (const MeshBase &, Real time=0) |
Rebuilds the raw degree of freedom and DofObject constraints. 更多... | |
void | allgather_recursive_constraints (MeshBase &) |
Gathers constraint equation dependencies from other processors. 更多... | |
void | scatter_constraints (MeshBase &) |
Sends constraint equations to constraining processors. 更多... | |
void | gather_constraints (MeshBase &mesh, std::set< dof_id_type > &unexpanded_dofs, bool look_for_constrainees) |
Helper function for querying about constraint equations on other processors. 更多... | |
void | process_constraints (MeshBase &) |
Postprocesses any constrained degrees of freedom to be constrained only in terms of unconstrained dofs, then adds unconstrained dofs to the send_list and prepares that for use. 更多... | |
void | check_for_cyclic_constraints () |
Throw an error if we detect any constraint loops, i.e. 更多... | |
void | check_for_constraint_loops () |
void | add_constraint_row (const dof_id_type dof_number, const DofConstraintRow &constraint_row, const Number constraint_rhs, const bool forbid_constraint_overwrite) |
Adds a copy of the user-defined row to the constraint matrix, using an inhomogeneous right-hand-side for the constraint equation. 更多... | |
void | add_adjoint_constraint_row (const unsigned int qoi_index, const dof_id_type dof_number, const DofConstraintRow &constraint_row, const Number constraint_rhs, const bool forbid_constraint_overwrite) |
Adds a copy of the user-defined row to the constraint matrix, using an inhomogeneous right-hand-side for the adjoint constraint equation. 更多... | |
void | add_constraint_row (const dof_id_type dof_number, const DofConstraintRow &constraint_row, const bool forbid_constraint_overwrite=true) |
Adds a copy of the user-defined row to the constraint matrix, using a homogeneous right-hand-side for the constraint equation. 更多... | |
DofConstraints::const_iterator | constraint_rows_begin () const |
DofConstraints::const_iterator | constraint_rows_end () const |
const DofConstraints & | get_dof_constraints () const |
Provide a const accessor to the DofConstraints map. 更多... | |
void | stash_dof_constraints () |
void | unstash_dof_constraints () |
void | swap_dof_constraints () |
Similar to the stash/unstash_dof_constraints() API, but swaps _dof_constraints and _stashed_dof_constraints without asserting that the source or destination is empty first. 更多... | |
NodeConstraints::const_iterator | node_constraint_rows_begin () const |
NodeConstraints::const_iterator | node_constraint_rows_end () const |
bool | is_constrained_dof (const dof_id_type dof) const |
bool | has_heterogeneous_adjoint_constraints (const unsigned int qoi_num) const |
bool | has_heterogenous_adjoint_constraints (const unsigned int qoi_num) const |
Backwards compatibility with misspelling. 更多... | |
Number | has_heterogeneous_adjoint_constraint (const unsigned int qoi_num, const dof_id_type dof) const |
Number | has_heterogenous_adjoint_constraint (const unsigned int qoi_num, const dof_id_type dof) const |
Backwards compatibility with misspelling. 更多... | |
DofConstraintValueMap & | get_primal_constraint_values () |
bool | is_constrained_node (const Node *node) const |
void | print_dof_constraints (std::ostream &os=libMesh::out, bool print_nonlocal=false) const |
Prints (from processor 0) all DoF and Node constraints. 更多... | |
std::string | get_local_constraints (bool print_nonlocal=false) const |
Gets a string reporting all DoF and Node constraints local to this processor. 更多... | |
std::pair< Real, Real > | max_constraint_error (const System &system, NumericVector< Number > *v=nullptr) const |
Tests the constrained degrees of freedom on the numeric vector v , which represents a solution defined on the mesh, returning a pair whose first entry is the maximum absolute error on a constrained DoF and whose second entry is the maximum relative error. 更多... | |
void | constrain_element_matrix (DenseMatrix< Number > &matrix, std::vector< dof_id_type > &elem_dofs, bool asymmetric_constraint_rows=true) const |
Constrains the element matrix. 更多... | |
void | constrain_element_matrix (DenseMatrix< Number > &matrix, std::vector< dof_id_type > &row_dofs, std::vector< dof_id_type > &col_dofs, bool asymmetric_constraint_rows=true) const |
Constrains the element matrix. 更多... | |
void | constrain_element_vector (DenseVector< Number > &rhs, std::vector< dof_id_type > &dofs, bool asymmetric_constraint_rows=true) const |
Constrains the element vector. 更多... | |
void | constrain_element_matrix_and_vector (DenseMatrix< Number > &matrix, DenseVector< Number > &rhs, std::vector< dof_id_type > &elem_dofs, bool asymmetric_constraint_rows=true) const |
Constrains the element matrix and vector. 更多... | |
void | heterogeneously_constrain_element_matrix_and_vector (DenseMatrix< Number > &matrix, DenseVector< Number > &rhs, std::vector< dof_id_type > &elem_dofs, bool asymmetric_constraint_rows=true, int qoi_index=-1) const |
Constrains the element matrix and vector. 更多... | |
void | heterogenously_constrain_element_matrix_and_vector (DenseMatrix< Number > &matrix, DenseVector< Number > &rhs, std::vector< dof_id_type > &elem_dofs, bool asymmetric_constraint_rows=true, int qoi_index=-1) const |
void | heterogeneously_constrain_element_vector (const DenseMatrix< Number > &matrix, DenseVector< Number > &rhs, std::vector< dof_id_type > &elem_dofs, bool asymmetric_constraint_rows=true, int qoi_index=-1) const |
Constrains the element vector. 更多... | |
void | heterogenously_constrain_element_vector (const DenseMatrix< Number > &matrix, DenseVector< Number > &rhs, std::vector< dof_id_type > &elem_dofs, bool asymmetric_constraint_rows=true, int qoi_index=-1) const |
void | heterogeneously_constrain_element_jacobian_and_residual (DenseMatrix< Number > &matrix, DenseVector< Number > &rhs, std::vector< dof_id_type > &elem_dofs, NumericVector< Number > &solution_local) const |
Constrains the element Jacobian and residual. 更多... | |
void | heterogeneously_constrain_element_residual (DenseVector< Number > &rhs, std::vector< dof_id_type > &elem_dofs, NumericVector< Number > &solution_local) const |
Constrains the element residual. 更多... | |
void | constrain_element_residual (DenseVector< Number > &rhs, std::vector< dof_id_type > &elem_dofs, NumericVector< Number > &solution_local) const |
Constrains the element residual. 更多... | |
void | constrain_element_dyad_matrix (DenseVector< Number > &v, DenseVector< Number > &w, std::vector< dof_id_type > &row_dofs, bool asymmetric_constraint_rows=true) const |
Constrains a dyadic element matrix B = v w'. 更多... | |
void | constrain_nothing (std::vector< dof_id_type > &dofs) const |
Does not actually constrain anything, but modifies dofs in the same way as any of the constrain functions would do, i.e. 更多... | |
void | enforce_constraints_exactly (const System &system, NumericVector< Number > *v=nullptr, bool homogeneous=false) const |
Constrains the numeric vector v , which represents a solution defined on the mesh. 更多... | |
void | enforce_adjoint_constraints_exactly (NumericVector< Number > &v, unsigned int q) const |
Heterogeneously constrains the numeric vector v , which represents an adjoint solution defined on the mesh for quantity fo interest q . 更多... | |
void | enforce_constraints_on_residual (const NonlinearImplicitSystem &system, NumericVector< Number > *rhs, NumericVector< Number > const *solution, bool homogeneous=true) const |
void | enforce_constraints_on_jacobian (const NonlinearImplicitSystem &system, SparseMatrix< Number > *jac) const |
void | add_periodic_boundary (const PeriodicBoundaryBase &periodic_boundary) |
Adds a copy of the specified periodic boundary to the system. 更多... | |
void | add_periodic_boundary (const PeriodicBoundaryBase &boundary, const PeriodicBoundaryBase &inverse_boundary) |
Add a periodic boundary pair. 更多... | |
bool | is_periodic_boundary (const boundary_id_type boundaryid) const |
PeriodicBoundaries * | get_periodic_boundaries () |
const PeriodicBoundaries * | get_periodic_boundaries () const |
void | add_dirichlet_boundary (const DirichletBoundary &dirichlet_boundary) |
Adds a copy of the specified Dirichlet boundary to the system. 更多... | |
void | add_adjoint_dirichlet_boundary (const DirichletBoundary &dirichlet_boundary, unsigned int q) |
Adds a copy of the specified Dirichlet boundary to the system, corresponding to the adjoint problem defined by Quantity of Interest q . 更多... | |
void | remove_dirichlet_boundary (const DirichletBoundary &dirichlet_boundary) |
Removes the specified Dirichlet boundary from the system. 更多... | |
void | remove_adjoint_dirichlet_boundary (const DirichletBoundary &dirichlet_boundary, unsigned int q) |
Removes from the system the specified Dirichlet boundary for the adjoint equation defined by Quantity of interest index q. 更多... | |
const DirichletBoundaries * | get_dirichlet_boundaries () const |
DirichletBoundaries * | get_dirichlet_boundaries () |
bool | has_adjoint_dirichlet_boundaries (unsigned int q) const |
const DirichletBoundaries * | get_adjoint_dirichlet_boundaries (unsigned int q) const |
DirichletBoundaries * | get_adjoint_dirichlet_boundaries (unsigned int q) |
void | check_dirichlet_bcid_consistency (const MeshBase &mesh, const DirichletBoundary &boundary) const |
Check that all the ids in dirichlet_bcids are actually present in the mesh. 更多... | |
void | old_dof_indices (const Elem *const elem, std::vector< dof_id_type > &di, const unsigned int vn=libMesh::invalid_uint) const |
After a mesh is refined and repartitioned it is possible that the _send_list will need to be augmented. 更多... | |
dof_id_type | n_old_dofs () const |
void | constrain_p_dofs (unsigned int var, const Elem *elem, unsigned int s, unsigned int p) |
Constrains degrees of freedom on side s of element elem which correspond to variable number var and to p refinement levels above p . 更多... | |
void | reinit (MeshBase &mesh) |
Reinitialize the underlying data structures conformal to the current mesh. 更多... | |
void | clear () |
Free all new memory associated with the object, but restore its original state, with the mesh pointer and any default ghosting. 更多... | |
void | print_info (std::ostream &os=libMesh::out) const |
Prints summary info about the sparsity bandwidth and constraints. 更多... | |
std::string | get_info () const |
Gets summary info about the sparsity bandwidth and constraints. 更多... | |
unsigned int | sys_number () const |
std::unique_ptr < SparsityPattern::Build > | build_sparsity (const MeshBase &mesh, bool calculate_constrained=false) const |
Builds a sparsity pattern for matrices using the current degree-of-freedom numbering and coupling. 更多... | |
void | should_p_refine (unsigned int g, bool p_refine) |
Describe whether the given variable group should be p-refined. 更多... | |
bool | should_p_refine (unsigned int g) const |
Whether the given variable group should be p-refined. 更多... | |
bool | should_p_refine_var (unsigned int var) const |
Whether the given variable should be p-refined. 更多... | |
void | should_p_refine (FEFamily, bool)=delete |
void | should_p_refine (Order, bool)=delete |
bool | should_p_refine (FEFamily) const =delete |
bool | should_p_refine (Order) const =delete |
静态 Public 成员函数 | |
static std::string | get_info () |
Gets a string containing the reference information. 更多... | |
static void | print_info (std::ostream &out_stream=libMesh::out) |
Prints the reference information, by default to libMesh::out . 更多... | |
static unsigned int | n_objects () |
Prints the number of outstanding (created, but not yet destroyed) objects. 更多... | |
static void | enable_print_counter_info () |
Methods to enable/disable the reference counter output from print_info() 更多... | |
static void | disable_print_counter_info () |
Public 属性 | |
CouplingMatrix * | _dof_coupling |
Degree of freedom coupling. 更多... | |
Protected 类型 | |
typedef std::map< std::string, std::pair< unsigned int, unsigned int > > | Counts |
Data structure to log the information. 更多... | |
Protected 成员函数 | |
void | increment_constructor_count (const std::string &name) noexcept |
Increments the construction counter. 更多... | |
void | increment_destructor_count (const std::string &name) noexcept |
Increments the destruction counter. 更多... | |
静态 Protected 属性 | |
static Counts | _counts |
Actually holds the data. 更多... | |
static Threads::atomic < unsigned int > | _n_objects |
The number of objects. 更多... | |
static Threads::spin_mutex | _mutex |
Mutual exclusion object to enable thread-safe reference counting. 更多... | |
static bool | _enable_print_counter = true |
Flag to control whether reference count information is printed when print_info is called. 更多... | |
Private 类型 | |
typedef DofObject *(DofMap::* | dofobject_accessor )(MeshBase &mesh, dof_id_type i) const |
A member function type like node_ptr() or elem_ptr() . 更多... | |
typedef std::set < std::unique_ptr < CouplingMatrix > , Utility::CompareUnderlying > | CouplingMatricesSet |
Private 成员函数 | |
void | _dof_indices (const Elem &elem, int p_level, std::vector< dof_id_type > &di, const unsigned int vg, const unsigned int vig, const Node *const *nodes, unsigned int n_nodes#ifdef DEBUG, const unsigned int v, std::size_t &tot_size#endif) const |
Helper function that gets the dof indices on the current element for a non-SCALAR type variable, where the variable is identified by its variable group number vg and its offset vig from the first variable in that group. 更多... | |
void | _node_dof_indices (const Elem &elem, unsigned int n, const DofObject &obj, std::vector< dof_id_type > &di, const unsigned int vn) const |
Helper function that implements the element-nodal versions of dof_indices and old_dof_indices. 更多... | |
void | invalidate_dofs (MeshBase &mesh) const |
Invalidates all active DofObject dofs for this system. 更多... | |
DofObject * | node_ptr (MeshBase &mesh, dof_id_type i) const |
DofObject * | elem_ptr (MeshBase &mesh, dof_id_type i) const |
template<typename iterator_type > | |
void | set_nonlocal_dof_objects (iterator_type objects_begin, iterator_type objects_end, MeshBase &mesh, dofobject_accessor objects) |
Helper function for distributing dofs in parallel. 更多... | |
void | distribute_local_dofs_var_major (dof_id_type &next_free_dof, MeshBase &mesh) |
Distributes the global degrees of freedom, for dofs on this processor. 更多... | |
void | distribute_local_dofs_node_major (dof_id_type &next_free_dof, MeshBase &mesh) |
Distributes the global degrees of freedom for dofs on this processor. 更多... | |
void | distribute_scalar_dofs (dof_id_type &next_free_dof) |
void | assert_no_nodes_missed (MeshBase &mesh) |
void | add_neighbors_to_send_list (MeshBase &mesh) |
Adds entries to the _send_list vector corresponding to DoFs on elements neighboring the current processor. 更多... | |
void | build_constraint_matrix (DenseMatrix< Number > &C, std::vector< dof_id_type > &elem_dofs, const bool called_recursively=false) const |
Build the constraint matrix C associated with the element degree of freedom indices elem_dofs. 更多... | |
void | build_constraint_matrix_and_vector (DenseMatrix< Number > &C, DenseVector< Number > &H, std::vector< dof_id_type > &elem_dofs, int qoi_index=-1, const bool called_recursively=false) const |
Build the constraint matrix C and the forcing vector H associated with the element degree of freedom indices elem_dofs. 更多... | |
void | find_connected_dofs (std::vector< dof_id_type > &elem_dofs) const |
Finds all the DOFS associated with the element DOFs elem_dofs. 更多... | |
void | find_connected_dof_objects (std::vector< const DofObject * > &objs) const |
Finds all the DofObjects associated with the set in objs . 更多... | |
void | add_constraints_to_send_list () |
Adds entries to the _send_list vector corresponding to DoFs which are dependencies for constraint equations on the current processor. 更多... | |
void | process_mesh_constraint_rows (const MeshBase &mesh) |
Adds any spline constraints from the Mesh to our DoF constraints. 更多... | |
静态 Private 成员函数 | |
static void | merge_ghost_functor_outputs (GhostingFunctor::map_type &elements_to_ghost, CouplingMatricesSet &temporary_coupling_matrices, const std::set< GhostingFunctor * >::iterator &gf_begin, const std::set< GhostingFunctor * >::iterator &gf_end, const MeshBase::const_element_iterator &elems_begin, const MeshBase::const_element_iterator &elems_end, processor_id_type p) |
Private 属性 | |
bool | _error_on_constraint_loop |
This flag indicates whether or not we do an opt-mode check for the presence of constraint loops, i.e. 更多... | |
bool | _constrained_sparsity_construction |
This flag indicates whether or not we explicitly take constraint equations into account when computing a sparsity pattern. 更多... | |
std::vector< Variable > | _variables |
The finite element type for each variable. 更多... | |
std::vector< VariableGroup > | _variable_groups |
The finite element type for each variable group. 更多... | |
std::vector< unsigned int > | _variable_group_numbers |
The variable group number for each variable. 更多... | |
std::unordered_map< unsigned int, unsigned int > | _var_to_vg |
A map from variable number to variable group number. 更多... | |
const unsigned int | _sys_number |
The number of the system we manage DOFs for. 更多... | |
MeshBase & | _mesh |
The mesh that system uses. 更多... | |
std::vector< SparseMatrix < Number > * > | _matrices |
Additional matrices handled by this object. 更多... | |
std::vector< dof_id_type > | _first_df |
First DOF index on processor p . 更多... | |
std::vector< dof_id_type > | _end_df |
Last DOF index (plus 1) on processor p . 更多... | |
std::vector< dof_id_type > | _first_scalar_df |
First DOF index for SCALAR variable v, or garbage for non-SCALAR variable v. 更多... | |
std::vector< dof_id_type > | _send_list |
A list containing all the global DOF indices that affect the solution on my processor. 更多... | |
SparsityPattern::AugmentSparsityPattern * | _augment_sparsity_pattern |
Function object to call to add extra entries to the sparsity pattern. 更多... | |
void(* | _extra_sparsity_function )(SparsityPattern::Graph &, std::vector< dof_id_type > &n_nz, std::vector< dof_id_type > &n_oz, void *) |
A function pointer to a function to call to add extra entries to the sparsity pattern. 更多... | |
void * | _extra_sparsity_context |
A pointer associated with the extra sparsity that can optionally be passed in. 更多... | |
AugmentSendList * | _augment_send_list |
Function object to call to add extra entries to the send list. 更多... | |
void(* | _extra_send_list_function )(std::vector< dof_id_type > &, void *) |
A function pointer to a function to call to add extra entries to the send list. 更多... | |
void * | _extra_send_list_context |
A pointer associated with the extra send list that can optionally be passed in. 更多... | |
std::unique_ptr< DefaultCoupling > | _default_coupling |
The default coupling GhostingFunctor, used to implement standard libMesh sparsity pattern construction. 更多... | |
std::unique_ptr< DefaultCoupling > | _default_evaluating |
The default algebraic GhostingFunctor, used to implement standard libMesh send_list construction. 更多... | |
std::set< GhostingFunctor * > | _algebraic_ghosting_functors |
The list of all GhostingFunctor objects to be used when distributing ghosted vectors. 更多... | |
std::set< GhostingFunctor * > | _coupling_functors |
The list of all GhostingFunctor objects to be used when coupling degrees of freedom in matrix sparsity patterns. 更多... | |
std::map< GhostingFunctor *, std::shared_ptr < GhostingFunctor > > | _shared_functors |
Hang on to references to any GhostingFunctor objects we were passed in shared_ptr form. 更多... | |
bool | need_full_sparsity_pattern |
Default false; set to true if any attached matrix requires a full sparsity pattern. 更多... | |
std::unique_ptr < SparsityPattern::Build > | _sp |
The sparsity pattern of the global matrix. 更多... | |
dof_id_type | _n_dfs |
Total number of degrees of freedom. 更多... | |
dof_id_type | _n_SCALAR_dofs |
The total number of SCALAR dofs associated to all SCALAR variables. 更多... | |
dof_id_type | _n_old_dfs |
Total number of degrees of freedom on old dof objects. 更多... | |
std::vector< dof_id_type > | _first_old_df |
First old DOF index on processor p . 更多... | |
std::vector< dof_id_type > | _end_old_df |
Last old DOF index (plus 1) on processor p . 更多... | |
std::vector< dof_id_type > | _first_old_scalar_df |
First old DOF index for SCALAR variable v, or garbage for non-SCALAR variable v. 更多... | |
std::unordered_set< unsigned int > | _dont_p_refine |
A container of variable groups that we should not p-refine. 更多... | |
DofConstraints | _dof_constraints |
Data structure containing DOF constraints. 更多... | |
DofConstraints | _stashed_dof_constraints |
DofConstraintValueMap | _primal_constraint_values |
AdjointDofConstraintValues | _adjoint_constraint_values |
NodeConstraints | _node_constraints |
Data structure containing DofObject constraints. 更多... | |
std::unique_ptr < PeriodicBoundaries > | _periodic_boundaries |
Data structure containing periodic boundaries. 更多... | |
std::unique_ptr < DirichletBoundaries > | _dirichlet_boundaries |
Data structure containing Dirichlet functions. 更多... | |
std::vector< std::unique_ptr < DirichletBoundaries > > | _adjoint_dirichlet_boundaries |
Data structure containing Dirichlet functions. 更多... | |
bool | _implicit_neighbor_dofs_initialized |
Bools to indicate if we override the –implicit_neighbor_dofs commandline options. 更多... | |
bool | _implicit_neighbor_dofs |
bool | _verify_dirichlet_bc_consistency |
Flag which determines whether we should do some additional checking of the consistency of the DirichletBoundary objects added by the user. 更多... | |
友元 | |
class | SparsityPattern::Build |
This class handles the numbering of degrees of freedom on a mesh.
For systems of equations the class supports a fixed number of variables. The degrees of freedom are numbered such that sequential, contiguous blocks belong to distinct processors. This is so that the resulting data structures will work well with parallel linear algebra packages.
|
protectedinherited |
Data structure to log the information.
The log is identified by the class name.
在文件 reference_counter.h 第 119 行定义.
|
private |
|
private |
A member function type like node_ptr()
or elem_ptr()
.
|
explicit |
Constructor.
Requires the number of the system for which we will be numbering degrees of freedom & the parent object we are contained in, which defines our communication space.
参考 _default_coupling, _default_evaluating, _matrices, _mesh, _periodic_boundaries, add_algebraic_ghosting_functor() , 以及 add_coupling_functor().
libMesh::DofMap::~DofMap | ( | ) |
Destructor.
参考 _default_coupling, _default_evaluating, _mesh , 以及 clear().
|
private |
Helper function that gets the dof indices on the current element for a non-SCALAR type variable, where the variable is identified by its variable group number vg
and its offset vig
from the first variable in that group.
In DEBUG mode, the tot_size parameter will add up the total number of dof indices that should have been added to di, and v will be the variable number corresponding to vg and vig.
参考 _dont_p_refine, libMesh::Variable::active_on_subdomain(), libMesh::DofObject::invalid_id, n_dofs(), sys_number(), libMesh::Variable::type() , 以及 variable_group().
参考自 dof_indices().
|
private |
Helper function that implements the element-nodal versions of dof_indices and old_dof_indices.
参考 _dont_p_refine, libMesh::DofObject::dof_number(), libMesh::DofObject::invalid_id, libMesh::DofObject::n_comp_group(), sys_number(), libMesh::Variable::type(), libMesh::DofObject::var_to_vg_and_offset() , 以及 variable_group().
参考自 dof_indices() , 以及 old_dof_indices().
void libMesh::DofMap::add_adjoint_constraint_row | ( | const unsigned int | qoi_index, |
const dof_id_type | dof_number, | ||
const DofConstraintRow & | constraint_row, | ||
const Number | constraint_rhs, | ||
const bool | forbid_constraint_overwrite | ||
) |
Adds a copy of the user-defined row to the constraint matrix, using an inhomogeneous right-hand-side for the adjoint constraint equation.
forbid_constraint_overwrite
here only tests for overwriting the rhs. This method should only be used when an equivalent constraint (with a potentially different rhs) already exists for the primal problem.
在文件 dof_map_constraints.C 第 2218 行定义.
参考 _adjoint_constraint_values , 以及 is_constrained_dof().
void libMesh::DofMap::add_adjoint_dirichlet_boundary | ( | const DirichletBoundary & | dirichlet_boundary, |
unsigned int | q | ||
) |
Adds a copy of the specified Dirichlet boundary to the system, corresponding to the adjoint problem defined by Quantity of Interest q
.
在文件 dof_map_constraints.C 第 5456 行定义.
参考 _adjoint_dirichlet_boundaries.
void libMesh::DofMap::add_algebraic_ghosting_functor | ( | GhostingFunctor & | evaluable_functor, |
bool | to_mesh = true |
||
) |
Adds a functor which can specify algebraic ghosting requirements for use with distributed vectors.
Degrees of freedom on other processors which match the elements and variables returned by these functors will be added to the send_list, and the elements on other processors will be ghosted on a distributed mesh, so that the elements can always be found and the solutions on them will always be evaluable.
GhostingFunctor memory must be managed by the code which calls this function; the GhostingFunctor lifetime is expected to extend until either the functor is removed or the DofMap is destructed.
When to_mesh
is true, the coupling_functor
is also added to our associated mesh, to ensure that evaluable elements do not get lost during mesh distribution. (if evaluable elements were already lost there's no getting them back after the fact, sorry)
If to_mesh
is false, no change to mesh ghosting is made; the Mesh must already have ghosting functor(s) specifying a superset of evaluable_functor
or this is a horrible bug.
参考 _algebraic_ghosting_functors , 以及 _mesh.
参考自 add_algebraic_ghosting_functor(), add_default_ghosting(), clear() , 以及 DofMap().
|
inline |
Adds a functor which can specify algebraic ghosting requirements for use with distributed vectors.
GhostingFunctor memory when using this method is managed by the shared_ptr mechanism.
参考 _shared_functors , 以及 add_algebraic_ghosting_functor().
void libMesh::DofMap::add_constraint_row | ( | const dof_id_type | dof_number, |
const DofConstraintRow & | constraint_row, | ||
const Number | constraint_rhs, | ||
const bool | forbid_constraint_overwrite | ||
) |
Adds a copy of the user-defined row to the constraint matrix, using an inhomogeneous right-hand-side for the constraint equation.
在文件 dof_map_constraints.C 第 2183 行定义.
参考 _dof_constraints, _primal_constraint_values, is_constrained_dof() , 以及 n_dofs().
参考自 add_constraint_row() , 以及 process_mesh_constraint_rows().
|
inline |
Adds a copy of the user-defined row to the constraint matrix, using a homogeneous right-hand-side for the constraint equation.
By default, produces an error if the DOF was already constrained.
|
private |
Adds entries to the _send_list
vector corresponding to DoFs which are dependencies for constraint equations on the current processor.
在文件 dof_map_constraints.C 第 5349 行定义.
参考 _dof_constraints, _send_list , 以及 local_index().
void libMesh::DofMap::add_coupling_functor | ( | GhostingFunctor & | coupling_functor, |
bool | to_mesh = true |
||
) |
Adds a functor which can specify coupling requirements for creation of sparse matrices.
Degree of freedom pairs which match the elements and variables returned by these functors will be added to the sparsity pattern, and the degrees of freedom which live on other processors will be added to the send_list for use on ghosted vectors, and the elements which live on other processors will be ghosted on a distributed mesh.
GhostingFunctor memory must be managed by the code which calls this function; the GhostingFunctor lifetime is expected to extend until either the functor is removed or the DofMap is destructed.
When to_mesh
is true, the coupling_functor
is also added to our associated mesh, to ensure that coupled elements do not get lost during mesh distribution. (if coupled elements were already lost there's no getting them back after the fact, sorry)
If to_mesh
is false, no change to mesh ghosting is made; the Mesh must already have ghosting functor(s) specifying a superset of coupling_functor
or this is a horrible bug.
参考 _coupling_functors , 以及 _mesh.
参考自 add_coupling_functor(), add_default_ghosting(), clear() , 以及 DofMap().
|
inline |
Adds a functor which can specify coupling requirements for creation of sparse matrices.
GhostingFunctor memory when using this method is managed by the shared_ptr mechanism.
参考 _shared_functors , 以及 add_coupling_functor().
void libMesh::DofMap::add_default_ghosting | ( | ) |
Add the default functor(s) for coupling and algebraic ghosting.
User-added ghosting functors will be unaffected.
参考 add_algebraic_ghosting_functor(), add_coupling_functor(), default_algebraic_ghosting() , 以及 default_coupling().
void libMesh::DofMap::add_dirichlet_boundary | ( | const DirichletBoundary & | dirichlet_boundary | ) |
Adds a copy of the specified Dirichlet boundary to the system.
The constraints implied by DirichletBoundary objects are imposed in the same order in which DirichletBoundary objects are added to the DofMap. When multiple DirichletBoundary objects would impose competing constraints on a given DOF, the first DirichletBoundary to constrain the DOF "wins". This distinction is important when e.g. two surfaces (sidesets) intersect. The nodes on the intersection will be constrained according to whichever sideset's DirichletBoundary object was added to the DofMap first.
在文件 dof_map_constraints.C 第 5450 行定义.
|
private |
Adds entries to the _send_list
vector corresponding to DoFs on elements neighboring the current processor.
参考 _send_list, algebraic_ghosting_functors_begin(), algebraic_ghosting_functors_end(), coupling_functors_begin(), coupling_functors_end(), dof_indices(), libMesh::DofObject::invalid_id, local_index(), merge_ghost_functor_outputs(), n_dofs() , 以及 n_variables().
参考自 distribute_dofs() , 以及 reinit_send_list().
void libMesh::DofMap::add_periodic_boundary | ( | const PeriodicBoundaryBase & | periodic_boundary | ) |
Adds a copy of the specified periodic boundary to the system.
在文件 dof_map_constraints.C 第 5570 行定义.
参考 _periodic_boundaries, libMesh::PeriodicBoundaryBase::clone(), libMesh::PeriodicBoundaryBase::INVERSE, libMesh::PeriodicBoundaryBase::merge(), libMesh::PeriodicBoundaryBase::myboundary , 以及 libMesh::PeriodicBoundaryBase::pairedboundary.
void libMesh::DofMap::add_periodic_boundary | ( | const PeriodicBoundaryBase & | boundary, |
const PeriodicBoundaryBase & | inverse_boundary | ||
) |
Add a periodic boundary pair.
boundary | - primary boundary |
inverse_boundary | - inverse boundary |
在文件 dof_map_constraints.C 第 5597 行定义.
参考 _periodic_boundaries, libMesh::PeriodicBoundaryBase::clone(), libMesh::PeriodicBoundaryBase::myboundary , 以及 libMesh::PeriodicBoundaryBase::pairedboundary.
void libMesh::DofMap::add_variable_group | ( | VariableGroup | var_group | ) |
Add an unknown of order order
and finite element type type
to the system of equations.
Add a group of unknowns of order order
and finite element type type
to the system of equations.
参考 _var_to_vg, _variable_group_numbers, _variable_groups, _variables , 以及 libMesh::VariableGroup::n_variables().
|
inline |
Beginning of range of algebraic ghosting functors.
参考 _algebraic_ghosting_functors.
参考自 add_neighbors_to_send_list().
|
inline |
End of range of algebraic ghosting functors.
参考 _algebraic_ghosting_functors.
参考自 add_neighbors_to_send_list().
bool libMesh::DofMap::all_semilocal_indices | ( | const std::vector< dof_id_type > & | dof_indices | ) | const |
true
if all degree of freedom indices in dof_indices
are either local indices or in the send_list
.参考自 is_evaluable().
void libMesh::DofMap::allgather_recursive_constraints | ( | MeshBase & | mesh | ) |
Gathers constraint equation dependencies from other processors.
在文件 dof_map_constraints.C 第 3708 行定义.
参考 _adjoint_constraint_values, _dof_constraints, _node_constraints, _primal_constraint_values, gather_constraints(), libMesh::DofObject::invalid_id, is_constrained_dof(), is_constrained_node(), libMesh::libmesh_isnan(), libMesh::Real , 以及 sys_number().
|
private |
参考 libMesh::DofObject::invalid_id , 以及 sys_number().
参考自 distribute_local_dofs_node_major() , 以及 distribute_local_dofs_var_major().
|
inline |
Attach a function pointer to use as a callback to populate the send_list with extra entries.
参考 _extra_send_list_context , 以及 _extra_send_list_function.
|
inline |
Attach an object to populate the send_list with extra entries.
This should only add to the send list, but no checking is done to enforce this behavior.
This is an advanced function... use at your own peril!
|
inline |
Attach a function pointer to use as a callback to populate the sparsity pattern with extra entries.
Care must be taken that when adding entries they are sorted into the Rows
Further, you must modify n_nz and n_oz properly!
This is an advanced function... use at your own peril!
参考 _extra_sparsity_context , 以及 _extra_sparsity_function.
|
inline |
Attach an object to use to populate the sparsity pattern with extra entries.
Care must be taken that when adding entries they are sorted into the Rows
Further, you must modify n_nz and n_oz properly!
This is an advanced function... use at your own peril!
void libMesh::DofMap::attach_matrix | ( | SparseMatrix< Number > & | matrix | ) |
Additional matrices may be attached to this DofMap
.
They are initialized to the same sparsity structure as the major matrix.
参考 _matrices, libMesh::SparseMatrix< T >::need_full_sparsity_pattern(), need_full_sparsity_pattern , 以及 update_sparsity_pattern().
|
inline |
参考 has_blocked_representation() , 以及 n_variables().
|
private |
Build the constraint matrix C associated with the element degree of freedom indices elem_dofs.
The optional parameter called_recursively
should be left at the default value false
. This is used to handle the special case of an element's degrees of freedom being constrained in terms of other, local degrees of freedom. The usual case is for an elements DOFs to be constrained by some other, external DOFs.
在文件 dof_map_constraints.C 第 3459 行定义.
参考 _dof_constraints, is_constrained_dof(), libMesh::DenseMatrixBase< T >::m(), libMesh::DenseMatrixBase< T >::n(), libMesh::DenseMatrix< T >::resize() , 以及 libMesh::DenseMatrix< T >::right_multiply().
参考自 constrain_element_dyad_matrix(), constrain_element_matrix(), constrain_element_matrix_and_vector(), constrain_element_vector(), constrain_nothing() , 以及 max_constraint_error().
|
private |
Build the constraint matrix C and the forcing vector H associated with the element degree of freedom indices elem_dofs.
The optional parameter called_recursively
should be left at the default value false
. This is used to handle the special case of an element's degrees of freedom being constrained in terms of other, local degrees of freedom. The usual case is for an elements DOFs to be constrained by some other, external DOFs and/or Dirichlet conditions.
The forcing vector will depend on which solution's heterogeneous constraints are being applied. For the default qoi_index
this will be the primal solution; for qoi_index
>= 0 the corresponding adjoint solution's constraints will be used.
在文件 dof_map_constraints.C 第 3569 行定义.
参考 _adjoint_constraint_values, _dof_constraints, _primal_constraint_values, is_constrained_dof(), libMesh::DenseMatrixBase< T >::m(), libMesh::DenseMatrixBase< T >::n(), libMesh::DenseVector< T >::resize(), libMesh::DenseMatrix< T >::resize(), libMesh::DenseMatrix< T >::right_multiply() , 以及 libMesh::DenseMatrix< T >::vector_mult_add().
参考自 extract_local_vector(), heterogeneously_constrain_element_matrix_and_vector() , 以及 heterogeneously_constrain_element_vector().
std::unique_ptr< SparsityPattern::Build > libMesh::DofMap::build_sparsity | ( | const MeshBase & | mesh, |
bool | calculate_constrained = false |
||
) | const |
Builds a sparsity pattern for matrices using the current degree-of-freedom numbering and coupling.
By default, ignores constraint equations, for build speed; this is valid for the combination of !need_full_sparsity_pattern and constraints which only come from periodic boundary conditions and adaptive mesh refinement, where matrix constraint adds some matrix entries but removes equally many (or more) other entries.
Can be told to calculate sparsity for the constrained matrix, which may be necessary in the case of spline control node constraints or sufficiently many user constraints.
参考 _augment_sparsity_pattern, _coupling_functors, _dof_coupling, _extra_sparsity_context, _extra_sparsity_function, n_dofs_on_processor(), need_full_sparsity_pattern, libMesh::out , 以及 use_coupled_neighbor_dofs().
参考自 compute_sparsity() , 以及 process_mesh_constraint_rows().
void libMesh::DofMap::check_dirichlet_bcid_consistency | ( | const MeshBase & | mesh, |
const DirichletBoundary & | boundary | ||
) | const |
Check that all the ids in dirichlet_bcids are actually present in the mesh.
If not, this will throw an error.
在文件 dof_map_constraints.C 第 5532 行定义.
参考 libMesh::DirichletBoundary::b.
void libMesh::DofMap::check_for_constraint_loops | ( | ) |
在文件 dof_map_constraints.C 第 4545 行定义.
参考 _dof_constraints , 以及 libMesh::Real.
参考自 check_for_cyclic_constraints() , 以及 process_constraints().
void libMesh::DofMap::check_for_cyclic_constraints | ( | ) |
Throw an error if we detect any constraint loops, i.e.
A -> B -> C -> A that is, "dof A is constrained in terms of dof B which is constrained in terms of dof C which is constrained in terms of dof A", since these are not supported by libMesh and give erroneous results if they are present.
在文件 dof_map_constraints.C 第 4539 行定义.
参考 check_for_constraint_loops().
void libMesh::DofMap::clear | ( | ) |
Free all new memory associated with the object, but restore its original state, with the mesh pointer and any default ghosting.
参考 _adjoint_constraint_values, _algebraic_ghosting_functors, _coupling_functors, _default_coupling, _default_evaluating, _dof_constraints, _dof_coupling, _end_df, _end_old_df, _first_df, _first_old_df, _first_old_scalar_df, _first_scalar_df, _matrices, _mesh, _n_dfs, _n_old_dfs, _primal_constraint_values, _shared_functors, _stashed_dof_constraints, _var_to_vg, _variable_group_numbers, _variable_groups, _variables, add_algebraic_ghosting_functor(), add_coupling_functor(), clear_send_list(), clear_sparsity(), need_full_sparsity_pattern , 以及 use_coupled_neighbor_dofs().
参考自 ~DofMap().
|
inline |
Clears the _send_list
vector.
This should be done in order to completely rebuild the send_list from scratch rather than merely adding to the existing send_list.
参考 _send_list.
参考自 clear(), distribute_dofs() , 以及 reinit_send_list().
void libMesh::DofMap::clear_sparsity | ( | ) |
Clears the sparsity pattern.
参考 _sp.
参考自 clear().
void libMesh::DofMap::compute_sparsity | ( | const MeshBase & | mesh | ) |
Computes the sparsity pattern for the matrices corresponding to proc_id
and sends that data to Linear Algebra packages for preallocation of sparse matrices.
参考 _constrained_sparsity_construction, _matrices, _sp, build_sparsity() , 以及 need_full_sparsity_pattern.
bool libMesh::DofMap::computed_sparsity_already | ( | ) | const |
Returns true iff a sparsity pattern has already been computed.
参考 _sp.
参考自 update_sparsity_pattern().
|
inline |
Constrains a dyadic element matrix B = v w'.
This method requires the element matrix to be square, in which case the elem_dofs correspond to the global DOF indices of both the rows and columns of the element matrix. For this case the rows and columns of the matrix necessarily correspond to variables of the same approximation order.
在文件 dof_map_constraints.C 第 3048 行定义.
参考 _dof_constraints, build_constraint_matrix(), is_constrained_dof(), libMesh::DenseMatrixBase< T >::m(), libMesh::DenseMatrixBase< T >::n(), libMesh::DenseVector< T >::size() , 以及 libMesh::DenseMatrix< T >::vector_mult_transpose().
|
inline |
Constrains the element matrix.
This method requires the element matrix to be square, in which case the elem_dofs correspond to the global DOF indices of both the rows and columns of the element matrix. For this case the rows and columns of the matrix necessarily correspond to variables of the same approximation order.
If asymmetric_constraint_rows
is set to true (as it is by default), constraint row equations will be reinforced in a way which breaks matrix symmetry but makes inexact linear solver solutions more likely to satisfy hanging node constraints.
在文件 dof_map_constraints.C 第 2380 行定义.
参考 _dof_constraints, build_constraint_matrix(), is_constrained_dof(), libMesh::DenseMatrix< T >::left_multiply_transpose(), libMesh::DenseMatrixBase< T >::m(), libMesh::DenseMatrixBase< T >::n() , 以及 libMesh::DenseMatrix< T >::right_multiply().
|
inline |
Constrains the element matrix.
This method allows the element matrix to be non-square, in which case the row_dofs and col_dofs may be of different size and correspond to variables approximated in different spaces.
在文件 dof_map_constraints.C 第 2914 行定义.
参考 _dof_constraints, build_constraint_matrix(), is_constrained_dof(), libMesh::DenseMatrix< T >::left_multiply_transpose(), libMesh::DenseMatrixBase< T >::m(), libMesh::DenseMatrixBase< T >::n() , 以及 libMesh::DenseMatrix< T >::right_multiply().
|
inline |
Constrains the element matrix and vector.
This method requires the element matrix to be square, in which case the elem_dofs correspond to the global DOF indices of both the rows and columns of the element matrix. For this case the rows and columns of the matrix necessarily correspond to variables of the same approximation order.
在文件 dof_map_constraints.C 第 2450 行定义.
参考 _dof_constraints, build_constraint_matrix(), is_constrained_dof(), libMesh::DenseMatrix< T >::left_multiply_transpose(), libMesh::DenseMatrixBase< T >::m(), libMesh::DenseMatrixBase< T >::n(), libMesh::DenseMatrix< T >::right_multiply(), libMesh::DenseVector< T >::size() , 以及 libMesh::DenseMatrix< T >::vector_mult_transpose().
void libMesh::DofMap::constrain_element_residual | ( | DenseVector< Number > & | rhs, |
std::vector< dof_id_type > & | elem_dofs, | ||
NumericVector< Number > & | solution_local | ||
) | const |
Constrains the element residual.
The element Jacobian is square, and the elem_dofs should correspond to the global DOF indices of both the rows and columns of the element matrix, and the dof constraint should not include any heterogeneous terms.
The residual-constraining version of this method creates linear systems in which heterogeneously constrained degrees of freedom create non-zero residual terms when not at their correct offset values, as would be appropriate for finding a solution to a nonlinear problem in a quasi-Newton solve.
The solution
vector passed in should be a serialized or ghosted primal solution
在文件 dof_map_constraints.C 第 2782 行定义.
参考 libMesh::DenseMatrixBase< T >::n(), libMesh::DenseVector< T >::size(), libMesh::NumericVector< T >::type() , 以及 libMesh::DenseMatrix< T >::vector_mult_transpose().
|
inline |
Constrains the element vector.
在文件 dof_map_constraints.C 第 3006 行定义.
参考 _dof_constraints, build_constraint_matrix(), is_constrained_dof(), libMesh::DenseMatrixBase< T >::m(), libMesh::DenseMatrixBase< T >::n(), libMesh::DenseVector< T >::size() , 以及 libMesh::DenseMatrix< T >::vector_mult_transpose().
|
inline |
Does not actually constrain anything, but modifies dofs
in the same way as any of the constrain functions would do, i.e.
adds those dofs in terms of which any of the existing dofs is constrained.
在文件 dof_map_constraints.C 第 3099 行定义.
参考 _dof_constraints , 以及 build_constraint_matrix().
void libMesh::DofMap::constrain_p_dofs | ( | unsigned int | var, |
const Elem * | elem, | ||
unsigned int | s, | ||
unsigned int | p | ||
) |
Constrains degrees of freedom on side s
of element elem
which correspond to variable number var
and to p refinement levels above p
.
在文件 dof_map_constraints.C 第 5391 行定义.
参考 _dof_constraints, _primal_constraint_values, sys_number() , 以及 variable_type().
|
inline |
Returns true iff the current policy when constructing sparsity patterns is to explicitly account for sparsity entries created by constraint matrix pre- and post- application.
参考 _constrained_sparsity_construction.
|
inline |
参考 _dof_constraints.
|
inline |
参考 _dof_constraints.
|
inline |
Beginning of range of coupling functors.
参考自 add_neighbors_to_send_list(), libMesh::SparsityPattern::Build::operator()() , 以及 scatter_constraints().
|
inline |
End of range of coupling functors.
参考自 add_neighbors_to_send_list(), libMesh::SparsityPattern::Build::operator()() , 以及 scatter_constraints().
void libMesh::DofMap::create_dof_constraints | ( | const MeshBase & | mesh, |
Real | time = 0 |
||
) |
Rebuilds the raw degree of freedom and DofObject constraints.
A time is specified for use in building time-dependent Dirichlet constraints.
在文件 dof_map_constraints.C 第 1736 行定义.
参考 _adjoint_constraint_values, _adjoint_dirichlet_boundaries, _dirichlet_boundaries, _dof_constraints, _node_constraints, _periodic_boundaries, _primal_constraint_values, _verify_dirichlet_bc_consistency, check_dirichlet_bcid_consistency(), n_variables() , 以及 process_mesh_constraint_rows().
|
inline |
Default algebraic ghosting functor.
参考自 add_default_ghosting() , 以及 remove_default_ghosting().
|
inline |
Default coupling functor.
参考自 add_default_ghosting() , 以及 remove_default_ghosting().
|
staticinherited |
在文件 reference_counter.C 第 100 行定义.
参考 libMesh::ReferenceCounter::_enable_print_counter.
std::size_t libMesh::DofMap::distribute_dofs | ( | MeshBase & | mesh | ) |
Distribute dofs on the current mesh.
Also builds the send list for processor proc_id
, which defaults to 0 for ease of use in serial applications.
参考 _algebraic_ghosting_functors, _coupling_functors, _end_df, _end_old_df, _first_df, _first_old_df, _first_old_scalar_df, _first_scalar_df, _n_dfs, _n_old_dfs, add_neighbors_to_send_list(), clear_send_list(), distribute_local_dofs_node_major(), distribute_local_dofs_var_major(), libMesh::DofObject::dof_number(), elem_ptr(), end_dof(), first_dof(), libMesh::DofObject::invalid_id, invalidate_dofs(), libMesh::DofObject::n_comp(), n_dofs(), n_SCALAR_dofs(), n_variables(), libMesh::DofObject::n_vars(), node_ptr(), libMesh::on_command_line(), libMesh::DofObject::processor_id(), reinit(), set_nonlocal_dof_objects(), sys_number(), libMesh::Variable::type() , 以及 variable().
|
private |
Distributes the global degrees of freedom for dofs on this processor.
In this format all the degrees of freedom at a node/element are in contiguous blocks. Starts at index next_free_dof
, and increments it to the post-final index. If build_send_list
is true
, builds the send list. If false
, clears and reserves the send list.
distribute_local_dofs_var_major
. 参考 libMesh::Variable::active_on_subdomain(), assert_no_nodes_missed(), distribute_scalar_dofs(), libMesh::DofObject::invalid_id, n_variable_groups(), libMesh::VariableGroup::n_variables(), sys_number(), libMesh::Variable::type() , 以及 variable_group().
参考自 distribute_dofs().
|
private |
Distributes the global degrees of freedom, for dofs on this processor.
In this format the local degrees of freedom are in a contiguous block for each variable in the system. Starts at index next_free_dof, and increments it to the post-final index.
参考 libMesh::Variable::active_on_subdomain(), assert_no_nodes_missed(), distribute_scalar_dofs(), libMesh::DofObject::invalid_id, n_variable_groups(), libMesh::VariableGroup::n_variables(), sys_number(), libMesh::Variable::type() , 以及 variable_group().
参考自 distribute_dofs().
|
private |
参考 _n_SCALAR_dofs, n_variable_groups(), libMesh::VariableGroup::n_variables(), libMesh::Variable::type() , 以及 variable_group().
参考自 distribute_local_dofs_node_major() , 以及 distribute_local_dofs_var_major().
void libMesh::DofMap::dof_indices | ( | const Elem *const | elem, |
std::vector< dof_id_type > & | di | ||
) | const |
Fills the vector di
with the global degree of freedom indices for the element.
参考 _dof_indices(), libMesh::Variable::active_on_subdomain(), n_variable_groups(), libMesh::VariableGroup::n_variables(), libMesh::VariableGroup::number(), SCALAR_dof_indices(), libMesh::Variable::type() , 以及 variable_group().
参考自 add_neighbors_to_send_list(), dof_indices(), is_evaluable(), max_constraint_error(), process_mesh_constraint_rows(), scatter_constraints() , 以及 libMesh::SparsityPattern::Build::sorted_connected_dofs().
void libMesh::DofMap::dof_indices | ( | const Elem *const | elem, |
std::vector< dof_id_type > & | di, | ||
const unsigned int | vn, | ||
int | p_level = -12345 |
||
) | const |
Fills the vector di
with the global degree of freedom indices for the element.
For one variable, and potentially for a non-default element p refinement level
参考 _dof_indices(), _variable_group_numbers, libMesh::Variable::active_on_subdomain(), libMesh::VariableGroup::number(), SCALAR_dof_indices(), libMesh::Variable::type() , 以及 variable_group().
void libMesh::DofMap::dof_indices | ( | const Node *const | node, |
std::vector< dof_id_type > & | di | ||
) | const |
Fills the vector di
with the global degree of freedom indices for the node
.
参考 libMesh::DofObject::invalid_id, n_variable_groups(), libMesh::VariableGroup::n_variables(), libMesh::VariableGroup::number(), SCALAR_dof_indices(), sys_number(), libMesh::Variable::type() , 以及 variable_group().
void libMesh::DofMap::dof_indices | ( | const Node *const | node, |
std::vector< dof_id_type > & | di, | ||
const unsigned int | vn | ||
) | const |
Fills the vector di
with the global degree of freedom indices for the node
, for one variable vn
.
参考 _variable_group_numbers, dof_indices(), libMesh::DofObject::invalid_id, libMesh::invalid_uint, libMesh::VariableGroup::number(), SCALAR_dof_indices(), sys_number(), libMesh::Variable::type() , 以及 variable_group().
void libMesh::DofMap::dof_indices | ( | const Elem & | elem, |
unsigned int | n, | ||
std::vector< dof_id_type > & | di, | ||
const unsigned int | vn | ||
) | const |
Appends to the vector di
the global degree of freedom indices for elem.node_ref(n)
, for one variable vn
.
On hanging nodes with both vertex and non-vertex DoFs, only those indices which are directly supported on elem
are included.
|
inline |
dof
参考 _end_df.
|
private |
i
from the mesh
. 参考自 distribute_dofs().
|
staticinherited |
Methods to enable/disable the reference counter output from print_info()
在文件 reference_counter.C 第 94 行定义.
参考 libMesh::ReferenceCounter::_enable_print_counter.
|
inline |
proc
.Analogous to the end() member function of STL containers.
参考 _end_df.
参考自 libMesh::SparsityPattern::Build::handle_vi_vj(), libMesh::SparsityPattern::Build::join(), libMesh::SparsityPattern::Build::operator()() , 以及 libMesh::SparsityPattern::Build::parallel_sync().
|
inline |
|
inline |
proc
.Analogous to the end() member function of STL containers.
参考 _end_old_df.
|
inline |
|
inline |
Heterogeneously constrains the numeric vector v
, which represents an adjoint solution defined on the mesh for quantity fo interest q
.
For homogeneous constraints, use enforce_constraints_exactly
instead
在文件 dof_map_constraints.C 第 3285 行定义.
参考 _adjoint_constraint_values, _dof_constraints, libMesh::NumericVector< T >::build(), libMesh::NumericVector< T >::close(), libMesh::NumericVector< T >::closed(), libMesh::NumericVector< T >::get(), get_send_list(), local_index(), libMesh::NumericVector< T >::local_size(), libMesh::NumericVector< T >::localize(), n_constrained_dofs(), n_dofs(), n_local_dofs(), libMesh::NumericVector< T >::set(), libMesh::NumericVector< T >::size() , 以及 libMesh::NumericVector< T >::type().
|
inline |
Constrains the numeric vector v
, which represents a solution defined on the mesh.
This may need to be used after a linear solve, if your linear solver's solutions do not satisfy your DoF constraints to a tight enough tolerance.
If v
== nullptr, the system solution vector is constrained
If homogeneous
== true, heterogeneous constraints are enforced as if they were homogeneous. This might be appropriate for e.g. a vector representing a difference between two heterogeneously-constrained solutions.
在文件 dof_map_constraints.C 第 3113 行定义.
参考 _dof_constraints, _primal_constraint_values, libMesh::NumericVector< T >::build(), libMesh::NumericVector< T >::close(), libMesh::NumericVector< T >::closed(), libMesh::NumericVector< T >::get(), get_send_list(), local_index(), libMesh::NumericVector< T >::local_size(), libMesh::NumericVector< T >::localize(), n_constrained_dofs(), n_dofs(), n_local_dofs(), libMesh::NumericVector< T >::set(), libMesh::NumericVector< T >::size() , 以及 libMesh::NumericVector< T >::type().
|
inline |
在文件 dof_map_constraints.C 第 3260 行定义.
参考 _dof_constraints, local_index(), n_constrained_dofs() , 以及 libMesh::SparseMatrix< T >::set().
|
inline |
在文件 dof_map_constraints.C 第 3203 行定义.
参考 _dof_constraints, _primal_constraint_values, libMesh::NumericVector< T >::build(), libMesh::NumericVector< T >::get(), get_send_list(), local_index(), libMesh::NumericVector< T >::local_size(), libMesh::NumericVector< T >::localize(), n_constrained_dofs(), libMesh::NumericVector< T >::set(), libMesh::NumericVector< T >::size() , 以及 libMesh::NumericVector< T >::type().
void libMesh::DofMap::extract_local_vector | ( | const NumericVector< Number > & | Ug, |
const std::vector< dof_id_type > & | dof_indices, | ||
DenseVectorBase< Number > & | Ue | ||
) | const |
Builds the local element vector Ue
from the global vector Ug
, accounting for any constrained degrees of freedom.
For an element without constrained degrees of freedom this is the trivial mapping
Ue
is properly sized when calling this method. This is because there is no resize()
method in the DenseVectorBase<>
class. 参考 build_constraint_matrix_and_vector(), libMesh::DenseVectorBase< T >::el(), libMesh::NumericVector< T >::first_local_index(), is_constrained_dof(), libMesh::NumericVector< T >::last_local_index(), libMesh::DenseMatrixBase< T >::m(), libMesh::DenseMatrixBase< T >::n(), libMesh::DenseVectorBase< T >::size(), libMesh::NumericVector< T >::size() , 以及 libMesh::DenseVectorBase< T >::zero().
|
private |
Finds all the DofObjects associated with the set in objs
.
This will account for off-element couplings via hanging nodes.
|
private |
Finds all the DOFS associated with the element DOFs elem_dofs.
This will account for off-element couplings via hanging nodes.
参考 _dof_constraints , 以及 is_constrained_dof().
参考自 libMesh::SparsityPattern::Build::sorted_connected_dofs().
|
inline |
proc
. 参考 _first_df.
参考自 libMesh::SparsityPattern::Build::handle_vi_vj(), libMesh::SparsityPattern::Build::join(), libMesh::SparsityPattern::Build::operator()() , 以及 libMesh::SparsityPattern::Build::parallel_sync().
|
inline |
|
inline |
proc
. 参考 _first_old_df.
|
inline |
void libMesh::DofMap::gather_constraints | ( | MeshBase & | mesh, |
std::set< dof_id_type > & | unexpanded_dofs, | ||
bool | look_for_constrainees | ||
) |
Helper function for querying about constraint equations on other processors.
If any id in requested_dof_ids
is constrained on another processor, its constraint will be added on this processor as well. If look_for_constrainees
is true, then constraints will also be returned if the id appears as a constraining value not just if it appears as a constrained value.
This function operates recursively: if the constraint for a constrained dof is newly added locally, then any other dofs which constrain it are queried to see if they are in turn constrained, and so on.
在文件 dof_map_constraints.C 第 5055 行定义.
参考 _adjoint_constraint_values, _dof_constraints, _end_df, _primal_constraint_values, libMesh::DofObject::invalid_id, local_index() , 以及 libMesh::Real.
参考自 allgather_recursive_constraints() , 以及 scatter_constraints().
const DirichletBoundaries * libMesh::DofMap::get_adjoint_dirichlet_boundaries | ( | unsigned int | q | ) | const |
在文件 dof_map_constraints.C 第 5480 行定义.
参考 _adjoint_dirichlet_boundaries.
DirichletBoundaries * libMesh::DofMap::get_adjoint_dirichlet_boundaries | ( | unsigned int | q | ) |
在文件 dof_map_constraints.C 第 5488 行定义.
参考 _adjoint_dirichlet_boundaries.
|
inline |
|
inline |
|
inline |
Provide a const accessor to the DofConstraints map.
This allows the user to quickly search the data structure rather than just iterating over it.
参考 _dof_constraints.
|
staticinherited |
Gets a string containing the reference information.
在文件 reference_counter.C 第 47 行定义.
参考 libMesh::ReferenceCounter::_counts.
参考自 libMesh::ReferenceCounter::print_info().
std::string libMesh::DofMap::get_info | ( | ) | const |
Gets summary info about the sparsity bandwidth and constraints.
参考 _dof_constraints, _matrices, _node_constraints, _primal_constraint_values, _sp , 以及 local_index().
参考自 print_info().
std::string libMesh::DofMap::get_local_constraints | ( | bool | print_nonlocal = false | ) | const |
Gets a string reporting all DoF and Node constraints local to this processor.
If print_nonlocal
is true, then nonlocal constraints which are locally known are included.
在文件 dof_map_constraints.C 第 2288 行定义.
参考 _adjoint_constraint_values, _adjoint_dirichlet_boundaries, _dof_constraints, _node_constraints, _primal_constraint_values , 以及 local_index().
|
inline |
_n_nz
list for this processor.The vector contains the bandwidth of the on-processor coupling for each row of the global matrix that the current processor owns. This information can be used to preallocate space for a parallel sparse matrix.
参考 _sp.
|
inline |
_n_oz
list for this processor.The vector contains the bandwidth of the off-processor coupling for each row of the global matrix that the current processor owns. This information can be used to preallocate space for a parallel sparse matrix.
参考 _sp.
|
inline |
|
inline |
|
inline |
|
inline |
_send_list
for this processor.The _send_list
contains the global indices of all the variables in the global solution vector that influence the current processor. This information can be used for gathers at each solution step to retrieve solution values needed for computation.
参考 _send_list.
参考自 enforce_adjoint_constraints_exactly(), enforce_constraints_exactly() , 以及 enforce_constraints_on_residual().
|
inline |
If need_full_sparsity_pattern is false, the "sparsity pattern" may only own n_nz and n_oz lists.
参考 _sp.
参考自 libMesh::SparseMatrix< T >::attach_dof_map().
bool libMesh::DofMap::has_adjoint_dirichlet_boundaries | ( | unsigned int | q | ) | const |
在文件 dof_map_constraints.C 第 5470 行定义.
参考 _adjoint_dirichlet_boundaries.
|
inline |
true
if the variables are capable of being stored in a blocked form. Presently, this means that there can only be one variable group, and that the group has more than one variable. 参考 n_variable_groups() , 以及 n_variables().
参考自 block_size().
|
inline |
dof
has a heterogeneous constraint for adjoint solution qoi_num
, zero otherwise. 参考 _adjoint_constraint_values.
参考自 has_heterogenous_adjoint_constraint().
|
inline |
true
if the system has any heterogeneous constraints for adjoint solution qoi_num
, false
otherwise. 参考 _adjoint_constraint_values.
参考自 has_heterogenous_adjoint_constraints().
|
inline |
Backwards compatibility with misspelling.
参考 has_heterogeneous_adjoint_constraint().
|
inline |
Backwards compatibility with misspelling.
参考 has_heterogeneous_adjoint_constraints().
void libMesh::DofMap::heterogeneously_constrain_element_jacobian_and_residual | ( | DenseMatrix< Number > & | matrix, |
DenseVector< Number > & | rhs, | ||
std::vector< dof_id_type > & | elem_dofs, | ||
NumericVector< Number > & | solution_local | ||
) | const |
Constrains the element Jacobian and residual.
The element Jacobian is square, and the elem_dofs should correspond to the global DOF indices of both the rows and columns of the element matrix.
The residual-constraining version of this method creates linear systems in which heterogeneously constrained degrees of freedom create non-zero residual terms when not at their correct offset values, as would be appropriate for finding a solution to a nonlinear problem in a quasi-Newton solve.
Note the sign difference from the linear heterogeneous constraint method: Solving u:=u_in-J has the opposite sign convention from u:=K, and we apply heterogeneous constraints accordingly.
The solution
vector passed in should be a serialized or ghosted primal solution
在文件 dof_map_constraints.C 第 2635 行定义.
参考 libMesh::DenseMatrix< T >::left_multiply_transpose(), libMesh::DenseMatrixBase< T >::m(), libMesh::DenseMatrixBase< T >::n(), libMesh::DenseMatrix< T >::right_multiply(), libMesh::DenseVector< T >::size(), libMesh::NumericVector< T >::type() , 以及 libMesh::DenseMatrix< T >::vector_mult_transpose().
|
inline |
Constrains the element matrix and vector.
This method requires the element matrix to be square, in which case the elem_dofs correspond to the global DOF indices of both the rows and columns of the element matrix. For this case the rows and columns of the matrix necessarily correspond to variables of the same approximation order.
The heterogeneous version of this method creates linear systems in which heterogeneously constrained degrees of freedom will solve to their correct offset values, as would be appropriate for finding a solution to a linear problem in a single algebraic solve. The non-heterogeneous version of this method creates linear systems in which even heterogeneously constrained degrees of freedom are solved without offset values taken into account, as would be appropriate for finding linearized updates to a solution in which heterogeneous constraints are already satisfied.
By default, the constraints for the primal solution of this system are used. If a non-negative qoi_index
is passed in, then the constraints for the corresponding adjoint solution are used instead.
在文件 dof_map_constraints.C 第 2529 行定义.
参考 _adjoint_constraint_values, _dof_constraints, _primal_constraint_values, build_constraint_matrix_and_vector(), is_constrained_dof(), libMesh::DenseMatrix< T >::left_multiply_transpose(), libMesh::DenseMatrixBase< T >::m(), libMesh::DenseMatrixBase< T >::n(), libMesh::DenseMatrix< T >::right_multiply(), libMesh::DenseVector< T >::size(), libMesh::DenseMatrix< T >::vector_mult() , 以及 libMesh::DenseMatrix< T >::vector_mult_transpose().
参考自 heterogenously_constrain_element_matrix_and_vector() , 以及 process_mesh_constraint_rows().
void libMesh::DofMap::heterogeneously_constrain_element_residual | ( | DenseVector< Number > & | rhs, |
std::vector< dof_id_type > & | elem_dofs, | ||
NumericVector< Number > & | solution_local | ||
) | const |
Constrains the element residual.
The element Jacobian is square, and the elem_dofs should correspond to the global DOF indices of both the rows and columns of the element matrix.
The residual-constraining version of this method creates linear systems in which heterogeneously constrained degrees of freedom create non-zero residual terms when not at their correct offset values, as would be appropriate for finding a solution to a nonlinear problem in a quasi-Newton solve.
The solution
vector passed in should be a serialized or ghosted primal solution
在文件 dof_map_constraints.C 第 2720 行定义.
参考 libMesh::DenseMatrixBase< T >::m(), libMesh::DenseMatrixBase< T >::n(), libMesh::DenseVector< T >::size(), libMesh::NumericVector< T >::type() , 以及 libMesh::DenseMatrix< T >::vector_mult_transpose().
|
inline |
Constrains the element vector.
This method requires the element matrix to be square and not-yet-constrained, in which case the elem_dofs correspond to the global DOF indices of both the rows and columns of the element matrix.
The heterogeneous version of this method creates linear systems in which heterogeneously constrained degrees of freedom will solve to their correct offset values, as would be appropriate for finding a solution to a linear problem in a single algebraic solve. The non-heterogeneous version of this method creates linear systems in which even heterogeneously constrained degrees of freedom are solved without offset values taken into account, as would be appropriate for finding linearized updates to a solution in which heterogeneous constraints are already satisfied.
Note the sign difference from the nonlinear heterogeneous constraint method: Solving u:=K has the opposite sign convention from u:=u_in-J, and we apply heterogeneous constraints accordingly.
By default, the constraints for the primal solution of this system are used. If a non-negative qoi_index
is passed in, then the constraints for the corresponding adjoint solution are used instead.
在文件 dof_map_constraints.C 第 2836 行定义.
参考 _adjoint_constraint_values, _dof_constraints, _primal_constraint_values, build_constraint_matrix_and_vector(), is_constrained_dof(), libMesh::DenseMatrixBase< T >::m(), libMesh::DenseMatrixBase< T >::n(), libMesh::DenseVector< T >::size(), libMesh::DenseMatrix< T >::vector_mult() , 以及 libMesh::DenseMatrix< T >::vector_mult_transpose().
参考自 heterogenously_constrain_element_vector().
|
inline |
参考 heterogeneously_constrain_element_matrix_and_vector().
|
inline |
参考 heterogeneously_constrain_element_vector().
|
inlineprotectednoexceptinherited |
Increments the construction counter.
Should be called in the constructor of any derived class that will be reference counted.
在文件 reference_counter.h 第 183 行定义.
参考 libMesh::err.
参考自 libMesh::ReferenceCountedObject< SparseMatrix< T > >::ReferenceCountedObject().
|
inlineprotectednoexceptinherited |
Increments the destruction counter.
Should be called in the destructor of any derived class that will be reference counted.
在文件 reference_counter.h 第 207 行定义.
参考 libMesh::err.
参考自 libMesh::ReferenceCountedObject< SparseMatrix< T > >::~ReferenceCountedObject().
|
private |
Invalidates all active DofObject dofs for this system.
参考 sys_number().
参考自 distribute_dofs() , 以及 reinit().
bool libMesh::DofMap::is_attached | ( | SparseMatrix< Number > & | matrix | ) |
Matrices should not be attached more than once.
We can test for an already-attached matrix if necessary using is_attached
参考 _matrices.
|
inline |
true
if the degree of freedom dof is constrained, false
otherwise. 参考 _dof_constraints.
参考自 add_adjoint_constraint_row(), add_constraint_row(), allgather_recursive_constraints(), build_constraint_matrix(), build_constraint_matrix_and_vector(), constrain_element_dyad_matrix(), constrain_element_matrix(), constrain_element_matrix_and_vector(), constrain_element_vector(), extract_local_vector(), find_connected_dofs(), heterogeneously_constrain_element_matrix_and_vector(), heterogeneously_constrain_element_vector(), max_constraint_error(), process_mesh_constraint_rows() , 以及 scatter_constraints().
|
inline |
true
if the Node is constrained, false otherwise. 参考自 allgather_recursive_constraints() , 以及 scatter_constraints().
template LIBMESH_EXPORT bool libMesh::DofMap::is_evaluable< Node > | ( | const DofObjectSubclass & | obj, |
unsigned int | var_num = libMesh::invalid_uint |
||
) | const |
true
iff our solutions can be locally evaluated on obj
(which should be an Elem or a Node) for variable number var_num
(for all variables, if var_num
is invalid_uint) 参考 all_semilocal_indices(), dof_indices() , 以及 libMesh::invalid_uint.
bool libMesh::DofMap::is_periodic_boundary | ( | const boundary_id_type | boundaryid | ) | const |
true
if the boundary given by boundaryid
is periodic, false otherwise
|
inline |
true
if degree of freedom index dof_index
is a local index. 参考 end_dof() , 以及 first_dof().
参考自 add_constraints_to_send_list(), add_neighbors_to_send_list(), enforce_adjoint_constraints_exactly(), enforce_constraints_exactly(), enforce_constraints_on_jacobian(), enforce_constraints_on_residual(), gather_constraints(), get_info(), get_local_constraints(), local_variable_indices(), libMesh::SparsityPattern::Build::parallel_sync(), process_mesh_constraint_rows() , 以及 semilocal_index().
void libMesh::DofMap::local_variable_indices | ( | std::vector< dof_id_type > & | idx, |
const MeshBase & | mesh, | ||
unsigned int | var_num | ||
) | const |
Fills an array of those dof indices which belong to the given variable number and live on the current processor.
参考 libMesh::Variable::active_on_subdomain(), local_index(), SCALAR_dof_indices(), sys_number(), variable() , 以及 variable_type().
std::pair< Real, Real > libMesh::DofMap::max_constraint_error | ( | const System & | system, |
NumericVector< Number > * | v = nullptr |
||
) | const |
Tests the constrained degrees of freedom on the numeric vector v
, which represents a solution defined on the mesh, returning a pair whose first entry is the maximum absolute error on a constrained DoF and whose second entry is the maximum relative error.
Useful for debugging purposes.
If v
== nullptr, the system solution vector is tested.
在文件 dof_map_constraints.C 第 3381 行定义.
参考 _dof_constraints, _primal_constraint_values, std::abs(), build_constraint_matrix(), libMesh::NumericVector< T >::closed(), dof_indices(), libMesh::NumericVector< T >::first_local_index(), libMesh::NumericVector< T >::get(), is_constrained_dof(), libMesh::NumericVector< T >::last_local_index(), libMesh::DenseMatrixBase< T >::m(), libMesh::DenseMatrixBase< T >::n() , 以及 libMesh::Real.
|
staticprivate |
参考自 add_neighbors_to_send_list(), libMesh::SparsityPattern::Build::operator()() , 以及 scatter_constraints().
dof_id_type libMesh::DofMap::n_constrained_dofs | ( | ) | const |
在文件 dof_map_constraints.C 第 1714 行定义.
参考 n_local_constrained_dofs().
参考自 enforce_adjoint_constraints_exactly(), enforce_constraints_exactly(), enforce_constraints_on_jacobian() , 以及 enforce_constraints_on_residual().
|
inline |
|
inline |
参考 _n_dfs.
参考自 _dof_indices(), add_constraint_row(), add_neighbors_to_send_list(), distribute_dofs(), enforce_adjoint_constraints_exactly(), enforce_constraints_exactly(), libMesh::SparsityPattern::Build::join(), libMesh::SparsityPattern::Build::parallel_sync(), prepare_send_list() , 以及 process_mesh_constraint_rows().
|
inline |
proc
. 参考自 build_sparsity(), libMesh::SparsityPattern::Build::join(), n_local_dofs(), libMesh::SparsityPattern::Build::operator()() , 以及 libMesh::SparsityPattern::Build::parallel_sync().
dof_id_type libMesh::DofMap::n_local_constrained_dofs | ( | ) | const |
在文件 dof_map_constraints.C 第 1724 行定义.
参考 _dof_constraints, end_dof() , 以及 first_dof().
参考自 n_constrained_dofs().
|
inline |
参考自 enforce_adjoint_constraints_exactly(), enforce_constraints_exactly() , 以及 process_mesh_constraint_rows().
|
inlinestaticinherited |
Prints the number of outstanding (created, but not yet destroyed) objects.
在文件 reference_counter.h 第 85 行定义.
参考 libMesh::ReferenceCounter::_n_objects.
参考自 libMesh::LibMeshInit::~LibMeshInit().
|
inline |
参考 _n_old_dfs.
参考自 SCALAR_dof_indices().
|
inline |
参考 _n_SCALAR_dofs.
参考自 distribute_dofs() , 以及 SCALAR_dof_indices().
|
inline |
参考 _variable_groups.
参考自 distribute_local_dofs_node_major(), distribute_local_dofs_var_major(), distribute_scalar_dofs(), dof_indices(), has_blocked_representation(), old_dof_indices(), reinit() , 以及 set_nonlocal_dof_objects().
|
inline |
参考 _variables.
参考自 add_neighbors_to_send_list(), block_size(), create_dof_constraints(), distribute_dofs(), has_blocked_representation(), libMesh::SparsityPattern::Build::operator()(), process_mesh_constraint_rows(), reinit(), use_coupled_neighbor_dofs() , 以及 var_group_from_var_number().
|
inline |
|
inline |
|
private |
i
from the mesh
. 参考自 distribute_dofs().
void libMesh::DofMap::old_dof_indices | ( | const Elem & | elem, |
unsigned int | n, | ||
std::vector< dof_id_type > & | di, | ||
const unsigned int | vn | ||
) | const |
Appends to the vector di
the old global degree of freedom indices for elem.node_ref(n)
, for one variable vn
.
On hanging nodes with both vertex and non-vertex DoFs, only those indices which are directly supported on elem
are included.
参考 _node_dof_indices() , 以及 libMesh::DofObject::get_old_dof_object_ref().
void libMesh::DofMap::old_dof_indices | ( | const Elem *const | elem, |
std::vector< dof_id_type > & | di, | ||
const unsigned int | vn = libMesh::invalid_uint |
||
) | const |
After a mesh is refined and repartitioned it is possible that the _send_list
will need to be augmented.
This is the case when an element is refined and its children end up on different processors than the parent. These children will need values from the parent when projecting the solution onto the refined mesh, hence the parent's DOF indices need to be included in the _send_list
. Fills the vector di with the global degree of freedom indices for the element using the DofMap::old_dof_object
. If no variable number is specified then all variables are returned.
参考 _dont_p_refine, libMesh::Variable::active_on_subdomain(), libMesh::DofObject::dof_number(), libMesh::DofObject::get_old_dof_object_ref(), libMesh::DofObject::invalid_id, libMesh::invalid_uint, libMesh::DofObject::n_comp_group(), libMesh::DofObject::n_systems(), n_variable_groups(), libMesh::VariableGroup::n_variables(), libMesh::VariableGroup::number(), SCALAR_dof_indices(), sys_number(), libMesh::Variable::type() , 以及 variable_group().
void libMesh::DofMap::prepare_send_list | ( | ) |
Takes the _send_list
vector (which may have duplicate entries) and sorts it.
The duplicate entries are then removed, resulting in a sorted _send_list
with unique entries. Also calls any user-provided methods for adding to the send list.
参考 _augment_send_list, _extra_send_list_context, _extra_send_list_function, _send_list, libMesh::DofMap::AugmentSendList::augment_send_list(), n_dofs() , 以及 libMesh::out.
参考自 reinit_send_list().
void libMesh::DofMap::print_dof_constraints | ( | std::ostream & | os = libMesh::out , |
bool | print_nonlocal = false |
||
) | const |
Prints (from processor 0) all DoF and Node constraints.
If print_nonlocal
is true, then each constraint is printed once for each processor that knows about it, which may be useful for DistributedMesh
debugging.
在文件 dof_map_constraints.C 第 2262 行定义.
|
staticinherited |
Prints the reference information, by default to libMesh::out
.
在文件 reference_counter.C 第 81 行定义.
参考 libMesh::ReferenceCounter::_enable_print_counter , 以及 libMesh::ReferenceCounter::get_info().
参考自 libMesh::LibMeshInit::~LibMeshInit().
void libMesh::DofMap::print_info | ( | std::ostream & | os = libMesh::out | ) | const |
Prints summary info about the sparsity bandwidth and constraints.
参考 get_info().
void libMesh::DofMap::process_constraints | ( | MeshBase & | mesh | ) |
Postprocesses any constrained degrees of freedom to be constrained only in terms of unconstrained dofs, then adds unconstrained dofs to the send_list and prepares that for use.
This should be run after both system (create_dof_constraints) and user constraints have all been added.
在文件 dof_map_constraints.C 第 4372 行定义.
参考 _adjoint_constraint_values, _dof_constraints, _error_on_constraint_loop, _primal_constraint_values, add_constraints_to_send_list(), allgather_recursive_constraints(), check_for_constraint_loops(), libMesh::Real , 以及 scatter_constraints().
参考自 reinit_send_list().
|
private |
Adds any spline constraints from the Mesh to our DoF constraints.
If any Dirichlet constraints exist on spline-constrained nodes, l2-projects those constraints onto the spline basis.
在文件 dof_map_constraints.C 第 1898 行定义.
参考 _adjoint_constraint_values, _dof_constraints, _periodic_boundaries, _primal_constraint_values, add_constraint_row(), libMesh::SparseMatrix< T >::build(), libMesh::NumericVector< T >::build(), build_sparsity(), dof_indices(), end_dof(), first_dof(), heterogeneously_constrain_element_matrix_and_vector(), is_constrained_dof(), local_index(), n_dofs(), n_local_dofs(), n_variables(), sys_number(), libMesh::TOLERANCE , 以及 variable_type().
void libMesh::DofMap::reinit | ( | MeshBase & | mesh | ) |
Reinitialize the underlying data structures conformal to the current mesh.
参考 _default_coupling, _dof_coupling, _dont_p_refine, _n_SCALAR_dofs, libMesh::Variable::active_on_subdomain(), libMesh::err, invalidate_dofs(), n_variable_groups(), libMesh::VariableGroup::n_variables(), n_variables(), sys_number(), libMesh::Variable::type(), use_coupled_neighbor_dofs() , 以及 variable_group().
参考自 distribute_dofs().
void libMesh::DofMap::reinit_send_list | ( | MeshBase & | mesh | ) |
Clears the _send_list
vector and then rebuilds it.
This may be needed in special situations, for example when an algebraic coupling functor cannot be added to the DofMap
until after it is completely setup. Then this method can be used to rebuild the send_list once the algebraic coupling functor is added. Note that while this will recommunicate constraints with the updated send_list, this does assume no new constraints have been added since the previous reinit_constraints call.
参考 add_neighbors_to_send_list(), clear_send_list(), prepare_send_list() , 以及 process_constraints().
void libMesh::DofMap::remove_adjoint_dirichlet_boundary | ( | const DirichletBoundary & | dirichlet_boundary, |
unsigned int | q | ||
) |
Removes from the system the specified Dirichlet boundary for the adjoint equation defined by Quantity of interest index q.
在文件 dof_map_constraints.C 第 5513 行定义.
参考 _adjoint_dirichlet_boundaries, libMesh::DirichletBoundary::b , 以及 libMesh::DirichletBoundary::variables.
void libMesh::DofMap::remove_algebraic_ghosting_functor | ( | GhostingFunctor & | evaluable_functor | ) |
Removes a functor which was previously added to the set of algebraic ghosting functors, from both this DofMap and from the underlying mesh.
参考 _algebraic_ghosting_functors, _mesh , 以及 _shared_functors.
参考自 remove_default_ghosting().
void libMesh::DofMap::remove_coupling_functor | ( | GhostingFunctor & | coupling_functor | ) |
Removes a functor which was previously added to the set of coupling functors, from both this DofMap and from the underlying mesh.
参考 _coupling_functors, _mesh , 以及 _shared_functors.
参考自 remove_default_ghosting().
void libMesh::DofMap::remove_default_ghosting | ( | ) |
Remove any default ghosting functor(s).
User-added ghosting functors will be unaffected.
Unless user-added equivalent ghosting functors exist, removing the default coupling functor is only safe for explicit solves, and removing the default algebraic ghosting functor is only safe for codes where no evaluations on neighbor cells (e.g. no jump error estimators) are done.
Defaults can be restored manually via add_default_ghosting(), or automatically if clear() returns the DofMap to a default state.
参考 default_algebraic_ghosting(), default_coupling(), remove_algebraic_ghosting_functor() , 以及 remove_coupling_functor().
void libMesh::DofMap::remove_dirichlet_boundary | ( | const DirichletBoundary & | dirichlet_boundary | ) |
Removes the specified Dirichlet boundary from the system.
在文件 dof_map_constraints.C 第 5499 行定义.
参考 _dirichlet_boundaries, libMesh::DirichletBoundary::b , 以及 libMesh::DirichletBoundary::variables.
void libMesh::DofMap::SCALAR_dof_indices | ( | std::vector< dof_id_type > & | di, |
const unsigned int | vn, | ||
const bool | old_dofs = false |
||
) | const |
Fills the vector di
with the global degree of freedom indices corresponding to the SCALAR variable vn.
If old_dofs=true, the old SCALAR dof indices are returned.
参考 _first_old_scalar_df, _first_scalar_df, libMesh::DofObject::invalid_id, n_old_dofs(), n_SCALAR_dofs(), libMesh::Variable::type() , 以及 variable().
参考自 dof_indices(), local_variable_indices() , 以及 old_dof_indices().
void libMesh::DofMap::scatter_constraints | ( | MeshBase & | mesh | ) |
Sends constraint equations to constraining processors.
在文件 dof_map_constraints.C 第 4643 行定义.
参考 _dof_constraints, _end_df, _node_constraints, _primal_constraint_values, coupling_functors_begin(), coupling_functors_end(), dof_indices(), gather_constraints(), is_constrained_dof(), is_constrained_node() , 以及 merge_ghost_functor_outputs().
bool libMesh::DofMap::semilocal_index | ( | dof_id_type | dof_index | ) | const |
true
if degree of freedom index dof_index
is either a local index or in the send_list
.参考 _send_list , 以及 local_index().
|
inline |
Sets the current policy for constructing sparsity patterns: if use_constraints
is true (for robustness), we explicitly account for sparsity entries created by constraint matrix pre- and post- application.
If use_constraints
is false (for speed), we calculate only the sparsity pattern of an unconstrained matrix. This is false by default, because in nearly all applications our constraints do not increase the number of non-zeros required in a sparse matrix.
参考 _constrained_sparsity_construction , 以及 libMesh::libmesh_ignore().
void libMesh::DofMap::set_error_on_constraint_loop | ( | bool | error_on_constraint_loop | ) |
参考自 set_error_on_cyclic_constraint().
void libMesh::DofMap::set_error_on_cyclic_constraint | ( | bool | error_on_cyclic_constraint | ) |
Specify whether or not we perform an extra (opt-mode enabled) check for constraint loops.
If a constraint loop is present then the system constraints are not valid, so if error_on_constraint_loop
is true we will throw an error in this case.
参考 set_error_on_constraint_loop().
void libMesh::DofMap::set_implicit_neighbor_dofs | ( | bool | implicit_neighbor_dofs | ) |
Allow the implicit_neighbor_dofs flag to be set programmatically.
This overrides the –implicit_neighbor_dofs commandline option. We can use this to set the implicit neighbor dofs option differently for different systems, whereas the commandline option is the same for all systems.
参考 _implicit_neighbor_dofs , 以及 _implicit_neighbor_dofs_initialized.
|
private |
Helper function for distributing dofs in parallel.
参考 libMesh::DofObject::dof_number(), libMesh::DofObject::id(), libMesh::DofObject::invalid_id, libMesh::DofObject::invalid_processor_id, libMesh::DofObject::n_comp(), libMesh::DofObject::n_comp_group(), libMesh::DofObject::n_var_groups(), n_variable_groups(), libMesh::DofObject::n_vars(), libMesh::DofObject::processor_id(), libMesh::DofObject::set_n_comp_group(), libMesh::DofObject::set_vg_dof_base(), sys_number() , 以及 libMesh::DofObject::vg_dof_base().
参考自 distribute_dofs().
void libMesh::DofMap::set_verify_dirichlet_bc_consistency | ( | bool | val | ) |
Set the _verify_dirichlet_bc_consistency flag.
参考 _verify_dirichlet_bc_consistency.
|
inline |
Describe whether the given variable group should be p-refined.
If this API is not called with false
, the default is to p-refine
参考 _dont_p_refine , 以及 libMesh::libmesh_ignore().
|
inline |
Whether the given variable group should be p-refined.
参考 _dont_p_refine , 以及 libMesh::libmesh_ignore().
|
delete |
|
delete |
|
delete |
|
delete |
|
inline |
Whether the given variable should be p-refined.
参考 _dont_p_refine, libMesh::libmesh_ignore() , 以及 var_group_from_var_number().
|
inline |
参考 _dof_constraints , 以及 _stashed_dof_constraints.
|
inline |
Similar to the stash/unstash_dof_constraints() API, but swaps _dof_constraints and _stashed_dof_constraints without asserting that the source or destination is empty first.
参考 _dof_constraints , 以及 _stashed_dof_constraints.
|
inline |
参考 _sys_number.
参考自 _dof_indices(), _node_dof_indices(), allgather_recursive_constraints(), assert_no_nodes_missed(), constrain_p_dofs(), distribute_dofs(), distribute_local_dofs_node_major(), distribute_local_dofs_var_major(), dof_indices(), invalidate_dofs(), local_variable_indices(), old_dof_indices(), process_mesh_constraint_rows(), reinit() , 以及 set_nonlocal_dof_objects().
|
inline |
参考 _dof_constraints , 以及 _stashed_dof_constraints.
void libMesh::DofMap::update_sparsity_pattern | ( | SparseMatrix< Number > & | matrix | ) | const |
Additional matrices may be be temporarily initialized by this DofMap
.
They are initialized to the same sparsity structure as the major matrix.
参考 _sp, libMesh::SparseMatrix< T >::attach_dof_map(), libMesh::SparseMatrix< T >::attach_sparsity_pattern(), computed_sparsity_already(), libMesh::SparseMatrix< T >::need_full_sparsity_pattern(), need_full_sparsity_pattern , 以及 libMesh::SparseMatrix< T >::update_sparsity_pattern().
参考自 attach_matrix().
bool libMesh::DofMap::use_coupled_neighbor_dofs | ( | const MeshBase & | mesh | ) | const |
Tells other library functions whether or not this problem includes coupling between dofs in neighboring cells, as can currently be specified on the command line or inferred from the use of all discontinuous variables.
参考 _implicit_neighbor_dofs, _implicit_neighbor_dofs_initialized, libMesh::command_line_next(), n_variables(), libMesh::on_command_line() , 以及 variable_type().
参考自 build_sparsity(), clear() , 以及 reinit().
|
inline |
参考 _var_to_vg , 以及 n_variables().
|
inline |
c
. 参考 _variables.
参考自 distribute_dofs(), local_variable_indices() , 以及 SCALAR_dof_indices().
|
inline |
VariableGroup
description object for group g
. 参考 _variable_groups.
参考自 _dof_indices(), _node_dof_indices(), distribute_local_dofs_node_major(), distribute_local_dofs_var_major(), distribute_scalar_dofs(), dof_indices(), old_dof_indices() , 以及 reinit().
|
inline |
VariableGroup
vg
. 参考 _variable_groups.
|
inline |
VariableGroup
vg
. 参考 _variable_groups.
|
inline |
c
. 参考 _variables.
|
inline |
c
. 参考 _variables.
参考自 constrain_p_dofs(), local_variable_indices(), process_mesh_constraint_rows() , 以及 use_coupled_neighbor_dofs().
|
friend |
|
private |
参考自 add_adjoint_constraint_row(), allgather_recursive_constraints(), build_constraint_matrix_and_vector(), clear(), create_dof_constraints(), enforce_adjoint_constraints_exactly(), gather_constraints(), get_local_constraints(), has_heterogeneous_adjoint_constraint(), has_heterogeneous_adjoint_constraints(), heterogeneously_constrain_element_matrix_and_vector(), heterogeneously_constrain_element_vector(), process_constraints() , 以及 process_mesh_constraint_rows().
|
private |
Data structure containing Dirichlet functions.
The ith entry is the constraint matrix row for boundaryid i.
参考自 add_adjoint_dirichlet_boundary(), create_dof_constraints(), get_adjoint_dirichlet_boundaries(), get_local_constraints(), has_adjoint_dirichlet_boundaries() , 以及 remove_adjoint_dirichlet_boundary().
|
private |
The list of all GhostingFunctor objects to be used when distributing ghosted vectors.
The library should automatically copy these functors to the MeshBase, too, so any algebraically ghosted dofs will live on geometrically ghosted elements.
参考自 add_algebraic_ghosting_functor(), algebraic_ghosting_functors_begin(), algebraic_ghosting_functors_end(), clear(), distribute_dofs() , 以及 remove_algebraic_ghosting_functor().
|
private |
Function object to call to add extra entries to the send list.
参考自 attach_extra_send_list_object() , 以及 prepare_send_list().
|
private |
Function object to call to add extra entries to the sparsity pattern.
|
private |
This flag indicates whether or not we explicitly take constraint equations into account when computing a sparsity pattern.
参考自 compute_sparsity(), constrained_sparsity_construction() , 以及 set_constrained_sparsity_construction().
|
staticprotectedinherited |
Actually holds the data.
在文件 reference_counter.h 第 124 行定义.
|
private |
The list of all GhostingFunctor objects to be used when coupling degrees of freedom in matrix sparsity patterns.
These objects will also be used as algebraic ghosting functors, but not vice-versa.
The library should automatically copy these functors to the MeshBase, too, so any dofs coupled to local dofs will live on geometrically ghosted elements.
参考自 add_coupling_functor(), build_sparsity(), clear(), coupling_functors_begin(), coupling_functors_end(), distribute_dofs() , 以及 remove_coupling_functor().
|
private |
|
private |
|
private |
Data structure containing Dirichlet functions.
The ith entry is the constraint matrix row for boundaryid i.
参考自 add_dirichlet_boundary(), create_dof_constraints(), get_dirichlet_boundaries() , 以及 remove_dirichlet_boundary().
|
private |
Data structure containing DOF constraints.
The ith entry is the constraint matrix row for DOF i.
参考自 add_constraint_row(), add_constraints_to_send_list(), allgather_recursive_constraints(), build_constraint_matrix(), build_constraint_matrix_and_vector(), check_for_constraint_loops(), clear(), constrain_element_dyad_matrix(), constrain_element_matrix(), constrain_element_matrix_and_vector(), constrain_element_vector(), constrain_nothing(), constrain_p_dofs(), constraint_rows_begin(), constraint_rows_end(), create_dof_constraints(), enforce_adjoint_constraints_exactly(), enforce_constraints_exactly(), enforce_constraints_on_jacobian(), enforce_constraints_on_residual(), find_connected_dofs(), gather_constraints(), get_dof_constraints(), get_info(), get_local_constraints(), heterogeneously_constrain_element_matrix_and_vector(), heterogeneously_constrain_element_vector(), is_constrained_dof(), max_constraint_error(), n_local_constrained_dofs(), process_constraints(), process_mesh_constraint_rows(), scatter_constraints(), stash_dof_constraints(), swap_dof_constraints() , 以及 unstash_dof_constraints().
CouplingMatrix* libMesh::DofMap::_dof_coupling |
Degree of freedom coupling.
If left empty each DOF couples to all others. Can be used to reduce memory requirements for sparse matrices. DOF 0 might only couple to itself, in which case dof_coupling(0,0)
should be 1 and dof_coupling(0,j)
= 0 for j not equal to 0.
This variable is named as though it were class private, but it is in the public interface. Also there are no public methods for accessing it... This typically means you should only use it if you know what you are doing.
参考自 build_sparsity(), clear() , 以及 reinit().
|
private |
A container of variable groups that we should not p-refine.
参考自 _dof_indices(), _node_dof_indices(), old_dof_indices(), reinit(), should_p_refine() , 以及 should_p_refine_var().
|
staticprotectedinherited |
Flag to control whether reference count information is printed when print_info is called.
在文件 reference_counter.h 第 143 行定义.
参考自 libMesh::ReferenceCounter::disable_print_counter_info(), libMesh::ReferenceCounter::enable_print_counter_info() , 以及 libMesh::ReferenceCounter::print_info().
|
private |
Last DOF index (plus 1) on processor p
.
参考自 clear(), distribute_dofs(), dof_owner(), end_dof(), gather_constraints(), n_dofs_on_processor() , 以及 scatter_constraints().
|
private |
Last old DOF index (plus 1) on processor p
.
参考自 clear(), distribute_dofs() , 以及 end_old_dof().
|
private |
This flag indicates whether or not we do an opt-mode check for the presence of constraint loops, i.e.
cases where the constraint graph is cyclic.
参考自 process_constraints() , 以及 set_error_on_constraint_loop().
|
private |
A pointer associated with the extra send list that can optionally be passed in.
参考自 attach_extra_send_list_function() , 以及 prepare_send_list().
|
private |
A function pointer to a function to call to add extra entries to the send list.
参考自 attach_extra_send_list_function() , 以及 prepare_send_list().
|
private |
A pointer associated with the extra sparsity that can optionally be passed in.
|
private |
A function pointer to a function to call to add extra entries to the sparsity pattern.
|
private |
First DOF index on processor p
.
参考自 clear(), distribute_dofs(), first_dof() , 以及 n_dofs_on_processor().
|
private |
First old DOF index on processor p
.
参考自 clear(), distribute_dofs() , 以及 first_old_dof().
|
private |
First old DOF index for SCALAR variable v, or garbage for non-SCALAR variable v.
参考自 clear(), distribute_dofs() , 以及 SCALAR_dof_indices().
|
private |
First DOF index for SCALAR variable v, or garbage for non-SCALAR variable v.
参考自 clear(), distribute_dofs() , 以及 SCALAR_dof_indices().
|
private |
|
private |
Bools to indicate if we override the –implicit_neighbor_dofs commandline options.
参考自 set_implicit_neighbor_dofs() , 以及 use_coupled_neighbor_dofs().
|
private |
Additional matrices handled by this object.
These pointers do not handle the memory, instead, System
, who told DofMap
about them, owns them.
参考自 attach_matrix(), clear(), compute_sparsity(), DofMap(), get_info() , 以及 is_attached().
|
private |
The mesh that system uses.
参考自 add_algebraic_ghosting_functor(), add_coupling_functor(), clear(), DofMap(), remove_algebraic_ghosting_functor(), remove_coupling_functor() , 以及 ~DofMap().
|
staticprotectedinherited |
Mutual exclusion object to enable thread-safe reference counting.
在文件 reference_counter.h 第 137 行定义.
|
private |
Total number of degrees of freedom.
参考自 clear(), distribute_dofs() , 以及 n_dofs().
|
staticprotectedinherited |
The number of objects.
Print the reference count information when the number returns to 0.
在文件 reference_counter.h 第 132 行定义.
参考自 libMesh::ReferenceCounter::n_objects(), libMesh::ReferenceCounter::ReferenceCounter() , 以及 libMesh::ReferenceCounter::~ReferenceCounter().
|
private |
Total number of degrees of freedom on old dof objects.
参考自 clear(), distribute_dofs() , 以及 n_old_dofs().
|
private |
The total number of SCALAR dofs associated to all SCALAR variables.
参考自 distribute_scalar_dofs(), n_SCALAR_dofs() , 以及 reinit().
|
private |
Data structure containing DofObject constraints.
参考自 allgather_recursive_constraints(), create_dof_constraints(), get_info(), get_local_constraints(), is_constrained_node(), n_constrained_nodes(), node_constraint_rows_begin(), node_constraint_rows_end() , 以及 scatter_constraints().
|
private |
Data structure containing periodic boundaries.
The ith entry is the constraint matrix row for boundaryid i.
参考自 add_periodic_boundary(), create_dof_constraints(), DofMap(), get_periodic_boundaries(), is_periodic_boundary() , 以及 process_mesh_constraint_rows().
|
private |
参考自 add_constraint_row(), allgather_recursive_constraints(), build_constraint_matrix_and_vector(), clear(), constrain_p_dofs(), create_dof_constraints(), enforce_constraints_exactly(), enforce_constraints_on_residual(), gather_constraints(), get_info(), get_local_constraints(), get_primal_constraint_values(), heterogeneously_constrain_element_matrix_and_vector(), heterogeneously_constrain_element_vector(), max_constraint_error(), process_constraints(), process_mesh_constraint_rows() , 以及 scatter_constraints().
|
private |
A list containing all the global DOF indices that affect the solution on my processor.
参考自 add_constraints_to_send_list(), add_neighbors_to_send_list(), clear_send_list(), get_send_list(), prepare_send_list() , 以及 semilocal_index().
|
private |
Hang on to references to any GhostingFunctor objects we were passed in shared_ptr form.
参考自 add_algebraic_ghosting_functor(), add_coupling_functor(), clear(), remove_algebraic_ghosting_functor() , 以及 remove_coupling_functor().
|
private |
The sparsity pattern of the global matrix.
If need_full_sparsity_pattern is true, we save the entire sparse graph here. Otherwise we save just the n_nz and n_oz vectors.
参考自 clear_sparsity(), compute_sparsity(), computed_sparsity_already(), get_info(), get_n_nz(), get_n_oz(), get_sparsity_pattern() , 以及 update_sparsity_pattern().
|
private |
|
private |
|
private |
A map from variable number to variable group number.
参考自 add_variable_group(), clear() , 以及 var_group_from_var_number().
|
private |
The variable group number for each variable.
参考自 add_variable_group(), clear() , 以及 dof_indices().
|
private |
The finite element type for each variable group.
参考自 add_variable_group(), clear(), n_variable_groups(), variable_group(), variable_group_order() , 以及 variable_group_type().
|
private |
The finite element type for each variable.
参考自 add_variable_group(), clear(), n_variables(), variable(), variable_order() , 以及 variable_type().
|
private |
Flag which determines whether we should do some additional checking of the consistency of the DirichletBoundary objects added by the user.
Defaults to true, but can be disabled in cases where you only want to add DirichletBoundary objects "locally" and can guarantee that no repartitioning will be done, since repartitioning could cause processors to own new boundary sides for which they no longer have the proper DirichletBoundary objects stored.
参考自 create_dof_constraints() , 以及 set_verify_dirichlet_bc_consistency().
|
private |
Default false; set to true if any attached matrix requires a full sparsity pattern.
参考自 attach_matrix(), build_sparsity(), clear(), compute_sparsity() , 以及 update_sparsity_pattern().