libMesh
Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Types | Protected Member Functions | Protected Attributes | Static Protected Attributes | Private Types | Private Attributes | Friends | List of all members
libMesh::Node Class Reference

A Node is like a Point, but with more information. More...

#include <node.h>

Inheritance diagram for libMesh::Node:
[legend]

Public Types

typedef Real value_type
 Helper typedef for C++98 generic programming. More...
 
typedef unsigned int index_type
 Helper typedef for generic index programming. More...
 

Public Member Functions

 Node (const Real x=0, const Real y=0, const Real z=0, const dof_id_type id=invalid_id)
 Constructor. More...
 
 Node (const Node &n)
 "Copy"-constructor: deliberately slices the source Node and only copies its' Point information, since copying anything else would likely be a bug. More...
 
 Node (const Node &n)=delete
 
 Node (const Point &p, const dof_id_type id=invalid_id)
 Copy-constructor from a Point. More...
 
template<typename T , typename = typename std::enable_if<ScalarTraits<T>::value,void>::type>
 Node (const T x)
 Disambiguate constructing from non-Real scalars. More...
 
 ~Node ()
 Destructor. More...
 
Nodeoperator= (const Point &p)
 Assign to a node from a point. More...
 
bool active () const
 
bool operator== (const Node &rhs) const
 
void print_info (std::ostream &os=libMesh::out) const
 Prints relevant information about the node. More...
 
std::string get_info () const
 Prints relevant information about the node to a string. More...
 
unsigned int packed_size () const
 
unsigned int valence () const
 
void set_valence (unsigned int val)
 Sets the number of nodes connected with this node. More...
 
processor_id_type choose_processor_id (processor_id_type pid1, processor_id_type pid2) const
 Return which of pid1 and pid2 would be preferred by the current load-balancing heuristic applied to this node. More...
 
void assign (const TypeVector< T2 > &)
 Assign to this vector without creating a temporary. More...
 
const Realoperator() (const unsigned int i) const
 
Realoperator() (const unsigned int i)
 
const Realslice (const unsigned int i) const
 
Realslice (const unsigned int i)
 
TypeVector< typename CompareTypes< Real, T2 >::supertype > operator+ (const TypeVector< T2 > &) const
 Add two vectors. More...
 
const TypeVector< Real > & operator+= (const TypeVector< T2 > &)
 Add to this vector. More...
 
void add (const TypeVector< T2 > &)
 Add to this vector without creating a temporary. More...
 
void add_scaled (const TypeVector< T2 > &, const Real &)
 Add a scaled value to this vector without creating a temporary. More...
 
TypeVector< typename CompareTypes< Real, T2 >::supertype > operator- (const TypeVector< T2 > &) const
 Subtract from this vector. More...
 
TypeVector< Realoperator- () const
 
const TypeVector< Real > & operator-= (const TypeVector< T2 > &)
 Subtract from this vector. More...
 
void subtract (const TypeVector< T2 > &)
 Subtract from this vector without creating a temporary. More...
 
void subtract_scaled (const TypeVector< T2 > &, const Real &)
 Subtract a scaled value from this vector without creating a temporary. More...
 
std::enable_if< ScalarTraits< Scalar >::value, TypeVector< typename CompareTypes< Real, Scalar >::supertype > >::type operator* (const Scalar &) const
 Multiply this vector by a scalar value. More...
 
CompareTypes< Real, T2 >::supertype operator* (const TypeVector< T2 > &) const
 
const TypeVector< Real > & operator*= (const Real &)
 Multiply this vector by a scalar value. More...
 
std::enable_if< ScalarTraits< Scalar >::value, TypeVector< typename CompareTypes< Real, Scalar >::supertype > >::type operator/ (const Scalar &) const
 Divide each entry of this vector by scalar value. More...
 
const TypeVector< Real > & operator/= (const Real &)
 Divide each entry of this vector by scalar value. More...
 
CompareTypes< Real, T2 >::supertype contract (const TypeVector< T2 > &) const
 
TypeVector< typename CompareTypes< Real, T2 >::supertype > cross (const TypeVector< T2 > &v) const
 
TypeVector< Realunit () const
 
auto norm () const
 
auto norm_sq () const
 
auto l1_norm () const
 
auto l1_norm () const
 
auto l1_norm () const
 
bool is_zero () const
 
void zero ()
 Set all entries of the vector to 0. More...
 
bool relative_fuzzy_equals (const TypeVector< Real > &rhs, Real tol=TOLERANCE) const
 
bool absolute_fuzzy_equals (const TypeVector< Real > &rhs, Real tol=TOLERANCE) const
 
bool operator== (const TypeVector< Real > &rhs) const
 
bool operator!= (const TypeVector< Real > &rhs) const
 
bool operator< (const TypeVector< Real > &rhs) const
 
bool operator< (const TypeVector< Complex > &rhs) const
 
bool operator<= (const TypeVector< Real > &rhs) const
 
bool operator<= (const TypeVector< Complex > &rhs) const
 
bool operator> (const TypeVector< Real > &rhs) const
 
bool operator> (const TypeVector< Complex > &rhs) const
 
bool operator>= (const TypeVector< Real > &rhs) const
 
bool operator>= (const TypeVector< Complex > &rhs) const
 
void print (std::ostream &os=libMesh::out) const
 Formatted print, by default to libMesh::out. More...
 
void write_unformatted (std::ostream &out_stream, const bool newline=true) const
 Unformatted print to the stream out. More...
 
DofObjectget_old_dof_object ()
 Pointer accessor for previously public old_dof_object. More...
 
const DofObjectget_old_dof_object () const
 
DofObjectget_old_dof_object_ref ()
 As above, but do not use in situations where the old_dof_object may be nullptr, since this function asserts that the old_dof_object is valid before returning a reference to it. More...
 
const DofObjectget_old_dof_object_ref () const
 
void clear_old_dof_object ()
 Sets the old_dof_object to nullptr. More...
 
void set_old_dof_object ()
 Sets the old_dof_object to a copy of this. More...
 
void clear_dofs ()
 Clear the DofMap data structures holding degree of freedom data. More...
 
void invalidate_dofs (const unsigned int sys_num=libMesh::invalid_uint)
 Sets all degree of freedom numbers to invalid_id. More...
 
void invalidate_id ()
 Sets the id to invalid_id. More...
 
void invalidate_processor_id ()
 Sets the processor id to invalid_processor_id. More...
 
void invalidate ()
 Invalidates all the indices for this DofObject. More...
 
unsigned int n_dofs (const unsigned int s, const unsigned int var=libMesh::invalid_uint) const
 
dof_id_type id () const
 
dof_id_typeset_id ()
 
void set_id (const dof_id_type dofid)
 Sets the id for this DofObject. More...
 
unique_id_type unique_id () const
 
void set_unique_id (unique_id_type new_id)
 Sets the unique_id for this DofObject. More...
 
bool valid_id () const
 
bool valid_unique_id () const
 
processor_id_type processor_id () const
 
processor_id_typeprocessor_id ()
 
void processor_id (const processor_id_type pid)
 Sets the processor_id for this DofObject. More...
 
bool valid_processor_id () const
 
unsigned int n_systems () const
 
unsigned int n_pseudo_systems () const
 
void set_n_systems (const unsigned int s)
 Sets the number of systems for this DofObject. More...
 
void set_extra_integer (const unsigned int index, const dof_id_type value)
 Sets the value on this object of the extra integer associated with index, which should have been obtained via a call to MeshBase::add_elem_integer or MeshBase::add_node_integer. More...
 
dof_id_type get_extra_integer (const unsigned int index) const
 Gets the value on this object of the extra integer associated with index, which should have been obtained via a call to MeshBase::add_elem_integer or MeshBase::add_node_integer. More...
 
template<typename T >
void set_extra_datum (const unsigned int index, const T value)
 Sets the value on this object of the extra datum associated with index, which should have been obtained via a call to MeshBase::add_elem_datum or MeshBase::add_node_datum using the same type T. More...
 
template<typename T >
get_extra_datum (const unsigned int index) const
 Gets the value on this object of the extra datum associated with index, which should have been obtained via a call to MeshBase::add_elem_datum or MeshBase::add_node_datum using the same type T. More...
 
void add_system ()
 Adds an additional system to the DofObject. More...
 
unsigned int n_var_groups (const unsigned int s) const
 
unsigned int n_vars (const unsigned int s, const unsigned int vg) const
 
unsigned int n_vars (const unsigned int s) const
 
void set_n_vars_per_group (const unsigned int s, const std::vector< unsigned int > &nvpg)
 Sets number of variables in each group associated with system s for this DofObject. More...
 
unsigned int n_comp (const unsigned int s, const unsigned int var) const
 
unsigned int n_comp_group (const unsigned int s, const unsigned int vg) const
 
void set_n_comp (const unsigned int s, const unsigned int var, const unsigned int ncomp)
 Sets the number of components for Variable var of system s associated with this DofObject. More...
 
void set_n_comp_group (const unsigned int s, const unsigned int vg, const unsigned int ncomp)
 Sets the number of components for VariableGroup vg of system s associated with this DofObject. More...
 
dof_id_type dof_number (const unsigned int s, const unsigned int var, const unsigned int comp) const
 
dof_id_type dof_number (const unsigned int s, const unsigned int vg, const unsigned int vig, const unsigned int comp, const unsigned int n_comp) const
 
std::pair< unsigned int, unsigned intvar_to_vg_and_offset (const unsigned int s, const unsigned int var) const
 
void set_dof_number (const unsigned int s, const unsigned int var, const unsigned int comp, const dof_id_type dn)
 Sets the global degree of freedom number for variable var, component comp for system s associated with this DofObject. More...
 
bool has_dofs (const unsigned int s=libMesh::invalid_uint) const
 
void set_vg_dof_base (const unsigned int s, const unsigned int vg, const dof_id_type db)
 VariableGroup DoF indices are indexed as id = base + var_in_vg*ncomp + comp This method allows for direct access to the base. More...
 
dof_id_type vg_dof_base (const unsigned int s, const unsigned int vg) const
 VariableGroup DoF indices are indexed as id = base + var_in_vg*ncomp + comp This method allows for direct access to the base. More...
 
void add_extra_integers (const unsigned int n_integers)
 Assigns a set of extra integers to this DofObject. More...
 
void add_extra_integers (const unsigned int n_integers, const std::vector< dof_id_type > &default_values)
 Assigns a set of extra integers to this DofObject. More...
 
unsigned int n_extra_integers () const
 Returns how many extra integers are associated to the DofObject. More...
 
bool has_extra_integers () const
 Returns whether extra integers are associated to the DofObject. More...
 
unsigned int packed_indexing_size () const
 If we pack our indices into an buffer for communications, how many ints do we need? More...
 
void unpack_indexing (std::vector< largest_id_type >::const_iterator begin)
 A method for creating our index buffer from packed data - basically with our current implementation we investigate the size term and then copy. More...
 
void pack_indexing (std::back_insert_iterator< std::vector< largest_id_type >> target) const
 A method for creating packed data from our index buffer - basically a copy with prepended size with our current implementation. More...
 
void debug_buffer () const
 Print our buffer for debugging. More...
 
void print_dof_info () const
 Print out info for debugging. More...
 
void set_buffer (const std::vector< dof_id_type > &buf)
 

Static Public Member Functions

static std::unique_ptr< Nodebuild (const Node &n)
 
static std::unique_ptr< Nodebuild (const Point &p, const dof_id_type id)
 
static std::unique_ptr< Nodebuild (const Real x, const Real y, const Real z, const dof_id_type id)
 
static unsigned int unpackable_indexing_size (std::vector< largest_id_type >::const_iterator begin)
 If we have indices packed into an buffer for communications, how much of that buffer applies to this dof object? More...
 
static std::string get_info ()
 Gets a string containing the reference information. More...
 
static void print_info (std::ostream &out_stream=libMesh::out)
 Prints the reference information, by default to libMesh::out. More...
 
static unsigned int n_objects ()
 Prints the number of outstanding (created, but not yet destroyed) objects. More...
 
static void enable_print_counter_info ()
 Methods to enable/disable the reference counter output from print_info(). More...
 
static void disable_print_counter_info ()
 
static std::string get_info ()
 Gets a string containing the reference information. More...
 
static void print_info (std::ostream &out_stream=libMesh::out)
 Prints the reference information, by default to libMesh::out. More...
 
static unsigned int n_objects ()
 Prints the number of outstanding (created, but not yet destroyed) objects. More...
 
static void enable_print_counter_info ()
 Methods to enable/disable the reference counter output from print_info(). More...
 
static void disable_print_counter_info ()
 

Static Public Attributes

static constexpr dof_id_type invalid_id = static_cast<dof_id_type>(-1)
 An invalid id to distinguish an uninitialized DofObject. More...
 
static constexpr unique_id_type invalid_unique_id = static_cast<unique_id_type>(-1)
 An invalid unique_id to distinguish an uninitialized DofObject. More...
 
static constexpr processor_id_type invalid_processor_id = static_cast<processor_id_type>(-1)
 An invalid processor_id to distinguish DoFs that have not been assigned to a processor. More...
 

Protected Types

typedef std::map< std::string, std::pair< unsigned int, unsigned int > > Counts
 Data structure to log the information. More...
 
typedef std::map< std::string, std::pair< unsigned int, unsigned int > > Counts
 Data structure to log the information. More...
 

Protected Member Functions

void increment_constructor_count (const std::string &name) noexcept
 Increments the construction counter. More...
 
void increment_destructor_count (const std::string &name) noexcept
 Increments the destruction counter. More...
 
void increment_constructor_count (const std::string &name) noexcept
 Increments the construction counter. More...
 
void increment_destructor_count (const std::string &name) noexcept
 Increments the destruction counter. More...
 

Protected Attributes

Real _coords [LIBMESH_DIM]
 The coordinates of the TypeVector. More...
 
std::unique_ptr< DofObjectold_dof_object
 This object on the last mesh. More...
 

Static Protected Attributes

static Counts _counts
 Actually holds the data. More...
 
static Threads::atomic< unsigned int_n_objects
 The number of objects. More...
 
static Threads::spin_mutex _mutex
 Mutual exclusion object to enable thread-safe reference counting. More...
 
static bool _enable_print_counter = true
 Flag to control whether reference count information is printed when print_info is called. More...
 
static Counts _counts
 Actually holds the data. More...
 
static Threads::atomic< unsigned int_n_objects
 The number of objects. More...
 
static Threads::spin_mutex _mutex
 Mutual exclusion object to enable thread-safe reference counting. More...
 
static bool _enable_print_counter = true
 Flag to control whether reference count information is printed when print_info is called. More...
 

Private Types

typedef unsigned char valence_idx_t
 Type used to store node valence. More...
 

Private Attributes

valence_idx_t _valence
 The number of nodes connected with this node. More...
 

Friends

class MeshRefinement
 This class need access to the node key information, but no one else should be able to mess with it. More...
 
class Elem
 

Detailed Description

A Node is like a Point, but with more information.

A Node is located in space and is associated with some (x,y,z) coordinates. Additionally, a Node may be enumerated with a global id. Finally, a Node may have an arbitrary number of degrees of freedom associated with it.

Author
Benjamin S. Kirk
Date
2003 A geometric point in (x,y,z) space associated with a DOF.

Definition at line 52 of file node.h.

Member Typedef Documentation

◆ Counts [1/2]

typedef std::map<std::string, std::pair<unsigned int, unsigned int> > libMesh::ReferenceCounter::Counts
protectedinherited

Data structure to log the information.

The log is identified by the class name.

Definition at line 119 of file reference_counter.h.

◆ Counts [2/2]

typedef std::map<std::string, std::pair<unsigned int, unsigned int> > libMesh::ReferenceCounter::Counts
protectedinherited

Data structure to log the information.

The log is identified by the class name.

Definition at line 119 of file reference_counter.h.

◆ index_type

typedef unsigned int libMesh::TypeVector< Real >::index_type
inherited

Helper typedef for generic index programming.

Definition at line 122 of file type_vector.h.

◆ valence_idx_t

typedef unsigned char libMesh::Node::valence_idx_t
private

Type used to store node valence.

Definition at line 212 of file node.h.

◆ value_type

typedef Real libMesh::TypeVector< Real >::value_type
inherited

Helper typedef for C++98 generic programming.

Definition at line 117 of file type_vector.h.

Constructor & Destructor Documentation

◆ Node() [1/5]

libMesh::Node::Node ( const Real  x = 0,
const Real  y = 0,
const Real  z = 0,
const dof_id_type  id = invalid_id 
)
inlineexplicit

Constructor.

By default sets all entries to 0. Gives the point 0 in LIBMESH_DIM dimensions with an id of Node::invalid_id.

Definition at line 240 of file node.h.

References libMesh::DofObject::set_id().

243  :
244  Point(x,y,z)
245 #ifdef LIBMESH_ENABLE_NODE_VALENCE
246  ,
247  _valence(0)
248 #endif
249 {
250  this->set_id() = dofid;
251 }
252 
253 
254 #ifdef LIBMESH_ENABLE_DEPRECATED
255 inline
256 Node::Node (const Node & n) :
257  Point(n),
258  DofObject(), // Deliberately slicing!
260 #ifdef LIBMESH_ENABLE_NODE_VALENCE
261  ,
262  _valence(0)
263 #endif
264 {
265  libmesh_deprecated(); // Cast to Point first!
266 }
267 #endif // LIBMESH_ENABLE_DEPRECATED
268 
269 
270 
271 inline
272 Node::Node (const Point & p,
273  const dof_id_type dofid) :
274  Point(p)
275 #ifdef LIBMESH_ENABLE_NODE_VALENCE
276  ,
277  _valence(0)
278 #endif
279 {
280  // optionally assign the id. We have
281  // to do it like this otherwise
282  // Node n = Point p would erase
283  // the id!
284  if (dofid != invalid_id)
285  this->set_id() = dofid;
286 }
287 
288 
289 
290 inline
291 Node::~Node ()
292 {
293 }
valence_idx_t _valence
The number of nodes connected with this node.
Definition: node.h:219
dof_id_type & set_id()
Definition: dof_object.h:827
Node(const Real x=0, const Real y=0, const Real z=0, const dof_id_type id=invalid_id)
Constructor.
Definition: node.h:240
DofObject()
Constructor.
Definition: dof_object.h:718
Point(const Real x=0., const Real y=0., const Real z=0.)
Constructor.
Definition: point.h:47
uint8_t dof_id_type
Definition: id_types.h:67

◆ Node() [2/5]

libMesh::Node::Node ( const Node n)

"Copy"-constructor: deliberately slices the source Node and only copies its' Point information, since copying anything else would likely be a bug.

Deprecated:
  • the constructor from Point is what we really want.

◆ Node() [3/5]

libMesh::Node::Node ( const Node n)
delete

◆ Node() [4/5]

libMesh::Node::Node ( const Point p,
const dof_id_type  id = invalid_id 
)
explicit

Copy-constructor from a Point.

Optionally assigned the id.

◆ Node() [5/5]

template<typename T , typename = typename std::enable_if<ScalarTraits<T>::value,void>::type>
libMesh::Node::Node ( const T  x)
inlineexplicit

Disambiguate constructing from non-Real scalars.

Definition at line 94 of file node.h.

References libMesh::DofObject::invalid_id, and libMesh::DofObject::set_id().

94  :
95  Point (x,0,0)
96  { this->set_id() = invalid_id; }
dof_id_type & set_id()
Definition: dof_object.h:827
Point(const Real x=0., const Real y=0., const Real z=0.)
Constructor.
Definition: point.h:47
static constexpr dof_id_type invalid_id
An invalid id to distinguish an uninitialized DofObject.
Definition: dof_object.h:473

◆ ~Node()

libMesh::Node::~Node ( )

Destructor.

Member Function Documentation

◆ absolute_fuzzy_equals()

bool libMesh::TypeVector< Real >::absolute_fuzzy_equals ( const TypeVector< Real > &  rhs,
Real  tol = TOLERANCE 
) const
inlineinherited
Returns
true if two vectors are equal to within an absolute tolerance of tol.

Definition at line 975 of file type_vector.h.

References libMesh::absolute_fuzzy_equals().

976 {
977  return libMesh::absolute_fuzzy_equals(*this, rhs, tol);
978 }
bool absolute_fuzzy_equals(const T &var1, const T2 &var2, const Real tol=TOLERANCE *TOLERANCE)
Function to check whether two variables are equal within an absolute tolerance.
Definition: fuzzy_equals.h:64

◆ active()

bool libMesh::Node::active ( ) const
inline
Returns
true if the node is active. An active node is defined as one for which id() is not Node::invalid_id. Inactive nodes are nodes that are in the mesh but are not connected to any elements.

Definition at line 345 of file node.h.

References libMesh::DofObject::invalid_id.

346 {
347  return (this->id() != Node::invalid_id);
348 }
static constexpr dof_id_type invalid_id
An invalid id to distinguish an uninitialized DofObject.
Definition: dof_object.h:473

◆ add()

void libMesh::TypeVector< Real >::add ( const TypeVector< T2 > &  p)
inlineinherited

Add to this vector without creating a temporary.

Definition at line 605 of file type_vector.h.

606 {
607 #if LIBMESH_DIM == 1
608  _coords[0] += p._coords[0];
609 #endif
610 
611 #if LIBMESH_DIM == 2
612  _coords[0] += p._coords[0];
613  _coords[1] += p._coords[1];
614 #endif
615 
616 #if LIBMESH_DIM == 3
617  _coords[0] += p._coords[0];
618  _coords[1] += p._coords[1];
619  _coords[2] += p._coords[2];
620 #endif
621 
622 }
Real _coords[LIBMESH_DIM]
The coordinates of the TypeVector.
Definition: type_vector.h:417

◆ add_extra_integers() [1/2]

void libMesh::DofObject::add_extra_integers ( const unsigned int  n_integers)
inherited

Assigns a set of extra integers to this DofObject.

There will now be n_integers associated; this replaces, not augments, any previous count.

Any newly-added values will initially be DofObject::invalid_id

If non-integer data is in the set, each datum of type T should be counted sizeof(T)/sizeof(dof_id_type) times in n_integers.

Definition at line 482 of file dof_object.C.

References libMesh::DofObject::_idx_buf, libMesh::DofObject::invalid_id, and libMesh::DofObject::n_extra_integers().

Referenced by libMesh::ReplicatedMesh::add_elem(), libMesh::DistributedMesh::add_elem(), libMesh::DofObject::add_extra_integers(), libMesh::ReplicatedMesh::add_node(), libMesh::DistributedMesh::add_node(), libMesh::ReplicatedMesh::add_point(), libMesh::UnstructuredMesh::all_first_order(), libMesh::UnstructuredMesh::copy_nodes_and_elements(), libMesh::UnstructuredMesh::create_submesh(), libMesh::ReplicatedMesh::insert_elem(), libMesh::DistributedMesh::insert_elem(), DofObjectTest< Node >::testAddExtraData(), DofObjectTest< Node >::testAddSystemExtraInts(), DofObjectTest< Node >::testSetNSystemsExtraInts(), and DofObjectTest< Node >::testSetNVariableGroupsExtraInts().

483 {
484  if (_idx_buf.empty())
485  {
486  if (n_integers)
487  {
488  _idx_buf.resize(n_integers+1, DofObject::invalid_id);
489  _idx_buf[0] = dof_id_type(-1);
490  }
491  return;
492  }
493  else
494  {
495  const int hdr = dof_id_signed_type(_idx_buf[0]);
496 
497  // We already have some extra integers, but may need more or
498  // less now.
499  if (hdr < 0)
500  {
501  const unsigned int old_n_integers = this->n_extra_integers();
502  if (n_integers != old_n_integers)
503  {
504  // Make or remove space as needed by count change
505  _idx_buf.resize(_idx_buf.size()+n_integers-old_n_integers, DofObject::invalid_id);
506 
507  // The start index for the extra integers is unchanged.
508  }
509  }
510  else if (n_integers)
511  // We had no extra integers, but need to add some
512  {
513  // Mark the DofObject as holding extra integers
514  _idx_buf[0] = dof_id_type(-hdr-1);
515 
516  // Insert the integer start position
517  DofObject::index_buffer_t::iterator it = _idx_buf.begin() + hdr;
518  _idx_buf.insert(it, _idx_buf.size()+1);
519 
520  // Increment the previous system start positions to account
521  // for the new header entry creating an offset
522  for (int i=1; i<hdr; i++)
523  _idx_buf[i]++;
524 
525  // Append space for extra integers
526  _idx_buf.resize(_idx_buf.size()+n_integers, DofObject::invalid_id);
527  }
528  }
529 }
static constexpr dof_id_type invalid_id
An invalid id to distinguish an uninitialized DofObject.
Definition: dof_object.h:473
int8_t dof_id_signed_type
Definition: id_types.h:68
unsigned int n_extra_integers() const
Returns how many extra integers are associated to the DofObject.
Definition: dof_object.h:1146
index_buffer_t _idx_buf
Definition: dof_object.h:671
uint8_t dof_id_type
Definition: id_types.h:67

◆ add_extra_integers() [2/2]

void libMesh::DofObject::add_extra_integers ( const unsigned int  n_integers,
const std::vector< dof_id_type > &  default_values 
)
inherited

Assigns a set of extra integers to this DofObject.

There will now be n_integers associated; this replaces, not augments, any previous count.

Any newly-added values will be copied from default_values.

If non-integer data is in the set, each datum of type T should be counted sizeof(T)/sizeof(dof_id_type) times in n_integers, and its data should be expressed in default_values as per memcpy.

Definition at line 534 of file dof_object.C.

References libMesh::DofObject::_idx_buf, libMesh::DofObject::add_extra_integers(), and libMesh::DofObject::n_extra_integers().

536 {
537  libmesh_assert_equal_to(n_integers, default_values.size());
538 
539  const unsigned int n_old_integers = this->n_extra_integers();
540  this->add_extra_integers(n_integers);
541  if (n_integers > n_old_integers)
542  {
543  const unsigned int n_more_integers = n_integers - n_old_integers;
544  std::copy(default_values.begin()+n_old_integers,
545  default_values.end(),
546  _idx_buf.end()-n_more_integers);
547  }
548 }
void add_extra_integers(const unsigned int n_integers)
Assigns a set of extra integers to this DofObject.
Definition: dof_object.C:482
unsigned int n_extra_integers() const
Returns how many extra integers are associated to the DofObject.
Definition: dof_object.h:1146
index_buffer_t _idx_buf
Definition: dof_object.h:671

◆ add_scaled()

void libMesh::TypeVector< Real >::add_scaled ( const TypeVector< T2 > &  p,
const Real &  factor 
)
inlineinherited

Add a scaled value to this vector without creating a temporary.

Definition at line 629 of file type_vector.h.

630 {
631 #if LIBMESH_DIM == 1
632  _coords[0] += factor*p(0);
633 #endif
634 
635 #if LIBMESH_DIM == 2
636  _coords[0] += factor*p(0);
637  _coords[1] += factor*p(1);
638 #endif
639 
640 #if LIBMESH_DIM == 3
641  _coords[0] += factor*p(0);
642  _coords[1] += factor*p(1);
643  _coords[2] += factor*p(2);
644 #endif
645 
646 }
Real _coords[LIBMESH_DIM]
The coordinates of the TypeVector.
Definition: type_vector.h:417

◆ add_system()

void libMesh::DofObject::add_system ( )
inherited

Adds an additional system to the DofObject.

Definition at line 187 of file dof_object.C.

References libMesh::DofObject::_idx_buf, libMesh::DofObject::has_extra_integers(), libMesh::DofObject::n_systems(), libMesh::DofObject::n_var_groups(), libMesh::DofObject::n_vars(), and libMesh::DofObject::set_n_systems().

Referenced by DofObjectTest< Node >::testAddSystemExtraInts().

188 {
189  // quick return?
190  if (this->n_systems() == 0)
191  {
192  this->set_n_systems(1);
193  return;
194  }
195 
196  // cache this value before we screw it up!
197  const unsigned int ns_orig = this->n_systems();
198 
199  DofObject::index_buffer_t::iterator it = _idx_buf.begin() + ns_orig;
200 
201  // Create the entry for the new system indicating 0 variables.
202  //
203  // increment the number of systems and the offsets for each of
204  // the systems including the new one we just added.
205  if (this->has_extra_integers())
206  {
207  // this inserts the extra_integers' start position as the start
208  // position for the new system. We'll increment all those
209  // counts in one sweep next, to account for header expansion.
210  _idx_buf.insert(it, *it);
211 
212  _idx_buf[0]--;
213  for (unsigned int i=1; i<ns_orig+2; i++)
214  {
215  libmesh_assert_less(i, _idx_buf.size());
216  _idx_buf[i]++;
217  }
218  }
219  else
220  {
221  // this inserts the current vector size at the position for the
222  // new system
223  _idx_buf.insert(it, cast_int<dof_id_type>(_idx_buf.size()));
224 
225  for (unsigned int i=0; i<ns_orig+1; i++)
226  {
227  libmesh_assert_less(i, _idx_buf.size());
228  _idx_buf[i]++;
229  }
230  }
231 
232  libmesh_assert_equal_to (this->n_systems(), (ns_orig+1));
233  libmesh_assert_equal_to (this->n_vars(ns_orig), 0);
234  libmesh_assert_equal_to (this->n_var_groups(ns_orig), 0);
235 }
unsigned int n_var_groups(const unsigned int s) const
Definition: dof_object.h:933
unsigned int n_vars(const unsigned int s, const unsigned int vg) const
Definition: dof_object.h:943
unsigned int n_systems() const
Definition: dof_object.h:913
bool has_extra_integers() const
Returns whether extra integers are associated to the DofObject.
Definition: dof_object.h:1164
void set_n_systems(const unsigned int s)
Sets the number of systems for this DofObject.
Definition: dof_object.C:142
index_buffer_t _idx_buf
Definition: dof_object.h:671

◆ assign()

void libMesh::TypeVector< Real >::assign ( const TypeVector< T2 > &  p)
inlineinherited

Assign to this vector without creating a temporary.

Definition at line 534 of file type_vector.h.

535 {
536  for (unsigned int i=0; i<LIBMESH_DIM; i++)
537  _coords[i] = p._coords[i];
538 }
Real _coords[LIBMESH_DIM]
The coordinates of the TypeVector.
Definition: type_vector.h:417

◆ build() [1/3]

std::unique_ptr< Node > libMesh::Node::build ( const Node n)
inlinestatic
Returns
A Node copied from n and wrapped in a smart pointer.
Deprecated:
  • anyone copying a Node would almost certainly be better off copying the much cheaper Point or taking a reference to the Node.

Definition at line 315 of file node.h.

Referenced by libMesh::ReplicatedMesh::add_point(), libMesh::DistributedMesh::add_point(), libMesh::MeshTools::Generation::build_extrusion(), libMesh::InfElemBuilder::build_inf_elem(), SideVertexAverageNormalTest::construct_elem(), VolumeTest::construct_elem(), libMesh::VariationalSmootherSystem::get_target_elem(), libMesh::XdrIO::read_serialized_connectivity(), and SideVertexAverageNormalTest::testC0Polyhedron().

316 {
317  libmesh_deprecated();
318  return std::make_unique<Node>(n);
319 }

◆ build() [2/3]

std::unique_ptr< Node > libMesh::Node::build ( const Point p,
const dof_id_type  id 
)
inlinestatic
Returns
A Node copied from p with id == id and wrapped in a smart pointer.

Definition at line 325 of file node.h.

References libMesh::DofObject::id().

327 {
328  return std::make_unique<Node>(p,id);
329 }
dof_id_type id() const
Definition: dof_object.h:819

◆ build() [3/3]

std::unique_ptr< Node > libMesh::Node::build ( const Real  x,
const Real  y,
const Real  z,
const dof_id_type  id 
)
inlinestatic
Returns
A Node created from the specified (x,y,z) positions with id == id and wrapped in a smart pointer.

Definition at line 334 of file node.h.

References libMesh::DofObject::id().

338 {
339  return std::make_unique<Node>(x,y,z,id);
340 }
dof_id_type id() const
Definition: dof_object.h:819

◆ choose_processor_id()

processor_id_type libMesh::Node::choose_processor_id ( processor_id_type  pid1,
processor_id_type  pid2 
) const

Return which of pid1 and pid2 would be preferred by the current load-balancing heuristic applied to this node.

Definition at line 78 of file node.C.

References libMesh::DofObject::invalid_processor_id, and libMesh::on_command_line().

Referenced by libMesh::MeshTools::correct_node_proc_ids(), and libMesh::Partitioner::set_node_processor_ids().

79 {
81  return pid2;
82 
83  // Do we want the new load-balanced node partitioning heuristic
84  // instead of the default partitioner-friendlier heuristic?
85  static bool load_balanced_nodes =
86  libMesh::on_command_line ("--load-balanced-nodes");
87 
88  // For better load balancing, we can use the min
89  // even-numberered nodes and the max for odd-numbered.
90  if (load_balanced_nodes)
91  {
92  if (this->id() % 2 &&
94  return std::max(pid1, pid2);
95  else
96  return std::min(pid1, pid2);
97  }
98 
99  // Our default behavior, which puts too many nodes on lower MPI
100  // ranks but which keeps elements' nodes on the same partition more
101  // often, is simply:
102  return std::min(pid1, pid2);
103 }
static constexpr processor_id_type invalid_processor_id
An invalid processor_id to distinguish DoFs that have not been assigned to a processor.
Definition: dof_object.h:484
bool on_command_line(std::string arg)
Definition: libmesh.C:934

◆ clear_dofs()

void libMesh::DofObject::clear_dofs ( )
inlineinherited

Clear the DofMap data structures holding degree of freedom data.

If any extra integers are associated with this DofObject, their count and values are unchanged.

Definition at line 789 of file dof_object.h.

References libMesh::DofObject::set_n_systems().

790 {
791  this->set_n_systems(0);
792 }
void set_n_systems(const unsigned int s)
Sets the number of systems for this DofObject.
Definition: dof_object.C:142

◆ clear_old_dof_object()

void libMesh::DofObject::clear_old_dof_object ( )
inherited

Sets the old_dof_object to nullptr.

Definition at line 120 of file dof_object.C.

References libMesh::DofObject::old_dof_object.

Referenced by libMesh::DofObject::operator=(), libMesh::DofObject::set_old_dof_object(), and libMesh::DofObject::unpack_indexing().

121 {
122  this->old_dof_object.reset(nullptr);
123 }
std::unique_ptr< DofObject > old_dof_object
This object on the last mesh.
Definition: dof_object.h:88

◆ contract()

CompareTypes< Real , T2 >::supertype libMesh::TypeVector< Real >::contract ( const TypeVector< T2 > &  p) const
inlineinherited
Returns
The result of TypeVector::operator*().

Definition at line 875 of file type_vector.h.

876 {
877  return (*this)*(p);
878 }

◆ cross()

TypeVector< typename CompareTypes< Real , T2 >::supertype > libMesh::TypeVector< Real >::cross ( const TypeVector< T2 > &  v) const
inherited
Returns
The cross product of this vector with v.

Definition at line 885 of file type_vector.h.

References libMesh::libmesh_ignore().

886 {
887  typedef typename CompareTypes<T, T2>::supertype TS;
888  libmesh_assert_equal_to (LIBMESH_DIM, 3);
889 
890  // | i j k |
891  // |(*this)(0) (*this)(1) (*this)(2)|
892  // | p(0) p(1) p(2) |
893 
894 #if LIBMESH_DIM == 3
895  return TypeVector<TS>( _coords[1]*p._coords[2] - _coords[2]*p._coords[1],
896  -_coords[0]*p._coords[2] + _coords[2]*p._coords[0],
897  _coords[0]*p._coords[1] - _coords[1]*p._coords[0]);
898 #else
899  libmesh_ignore(p);
900  return TypeVector<TS>(0);
901 #endif
902 }
Real _coords[LIBMESH_DIM]
The coordinates of the TypeVector.
Definition: type_vector.h:417
void libmesh_ignore(const Args &...)

◆ debug_buffer()

void libMesh::DofObject::debug_buffer ( ) const
inherited

Print our buffer for debugging.

Definition at line 652 of file dof_object.C.

References libMesh::DofObject::_idx_buf, libMesh::MeshTools::Generation::Private::idx(), and libMesh::out.

653 {
654  libMesh::out << " [ ";
655  for (const auto & idx : _idx_buf)
656  libMesh::out << idx << " ";
657  libMesh::out << "]\n";
658 }
OStreamProxy out
index_buffer_t _idx_buf
Definition: dof_object.h:671
unsigned int idx(const ElemType type, const unsigned int nx, const unsigned int i, const unsigned int j)
A useful inline function which replaces the macros used previously.

◆ disable_print_counter_info() [1/2]

void libMesh::ReferenceCounter::disable_print_counter_info ( )
staticinherited

Definition at line 100 of file reference_counter.C.

References libMesh::ReferenceCounter::_enable_print_counter.

101 {
102  _enable_print_counter = false;
103  return;
104 }
static bool _enable_print_counter
Flag to control whether reference count information is printed when print_info is called...

◆ disable_print_counter_info() [2/2]

void libMesh::ReferenceCounter::disable_print_counter_info ( )
staticinherited

Definition at line 100 of file reference_counter.C.

References libMesh::ReferenceCounter::_enable_print_counter.

101 {
102  _enable_print_counter = false;
103  return;
104 }
static bool _enable_print_counter
Flag to control whether reference count information is printed when print_info is called...

◆ dof_number() [1/2]

dof_id_type libMesh::DofObject::dof_number ( const unsigned int  s,
const unsigned int  var,
const unsigned int  comp 
) const
inlineinherited
Returns
The global degree of freedom number for variable var, component comp for system s associated with this DofObject

When partitioning and DoF numbering have been performed by libMesh, every current DoF on this DofObject will belong to its processor.

Definition at line 1008 of file dof_object.h.

References libMesh::DofObject::n_comp(), libMesh::DofObject::n_comp_group(), libMesh::DofObject::n_systems(), libMesh::DofObject::n_vars(), and libMesh::DofObject::var_to_vg_and_offset().

Referenced by libMesh::DofMap::_dof_indices(), libMesh::DofMap::_node_dof_indices(), libMesh::DofMap::allgather_recursive_constraints(), assemble_matrix_and_rhs(), assemble_shell(), libMesh::FEGenericBase< FEOutputType< T >::type >::compute_periodic_constraints(), libMesh::VariationalSmootherConstraint::constrain_node_to_line(), libMesh::VariationalSmootherConstraint::constrain_node_to_plane(), libMesh::DofMap::constrain_p_dofs(), libMesh::Nemesis_IO::copy_elemental_solution(), libMesh::ExodusII_IO::copy_elemental_solution(), libMesh::Nemesis_IO::copy_nodal_solution(), libMesh::ExodusII_IO::copy_nodal_solution(), libMesh::DofMap::distribute_dofs(), libMesh::DofMap::dof_indices(), libMesh::DofObject::DofObject(), libMesh::OldSolutionCoefs< Output, point_output >::eval_at_node(), libMesh::OldSolutionValue< Output, point_output >::eval_at_node(), libMesh::OldSolutionCoefs< Output, point_output >::eval_mixed_derivatives(), libMesh::OldSolutionValue< Output, point_output >::eval_mixed_derivatives(), libMesh::OldSolutionCoefs< Output, point_output >::eval_old_dofs(), libMesh::OldSolutionValue< Output, point_output >::eval_old_dofs(), fill_dirichlet_bc(), libMesh::VariationalSmootherConstraint::fix_node(), get_info(), libMesh::Elem::get_info(), libMesh::DofMap::local_variable_indices(), main(), libMesh::DofMap::old_dof_indices(), libMesh::BuildProjectionList::operator()(), libMesh::GenericProjector< FFunctor, GFunctor, FValue, ProjectionAction >::ProjectVertices::operator()(), libMesh::GenericProjector< FFunctor, GFunctor, FValue, ProjectionAction >::ProjectEdges::operator()(), libMesh::GenericProjector< FFunctor, GFunctor, FValue, ProjectionAction >::ProjectSides::operator()(), libMesh::GenericProjector< FFunctor, GFunctor, FValue, ProjectionAction >::ProjectInteriors::operator()(), libMesh::DofObject::operator=(), libMesh::DofObject::print_dof_info(), libMesh::DofMap::process_mesh_constraint_rows(), LinearElasticityWithContact::residual_and_jacobian(), libMesh::HPCoarsenTest::select_refinement(), libMesh::DofObject::set_dof_number(), libMesh::PetscPreconditioner< T >::set_hypre_ads_data(), libMesh::PetscPreconditioner< T >::set_hypre_ams_data(), libMesh::DofMap::set_nonlocal_dof_objects(), ParsedFEMFunctionTest::setUp(), DofObjectTest< Node >::testJensEftangBug(), DofObjectTest< Node >::testManualDofCalculation(), libMesh::BoundaryVolumeSolutionTransfer::transfer_boundary_volume(), libMesh::DTKAdapter::update_variable_values(), and libMesh::Nemesis_IO_Helper::write_nodal_solution().

1011 {
1012  libmesh_assert_less (s, this->n_systems());
1013  libmesh_assert_less (var, this->n_vars(s));
1014  libmesh_assert_less (comp, this->n_comp(s,var));
1015 
1016  const std::pair<unsigned int, unsigned int>
1017  vg_vig = this->var_to_vg_and_offset(s,var);
1018 
1019  const unsigned int
1020  n_comp = this->n_comp_group(s,vg_vig.first);
1021 
1022  return this->dof_number(s, vg_vig.first, vg_vig.second,
1023  comp, n_comp);
1024 }
dof_id_type dof_number(const unsigned int s, const unsigned int var, const unsigned int comp) const
Definition: dof_object.h:1008
unsigned int n_comp(const unsigned int s, const unsigned int var) const
Definition: dof_object.h:978
unsigned int n_vars(const unsigned int s, const unsigned int vg) const
Definition: dof_object.h:943
unsigned int n_systems() const
Definition: dof_object.h:913
std::pair< unsigned int, unsigned int > var_to_vg_and_offset(const unsigned int s, const unsigned int var) const
Definition: dof_object.h:1176
unsigned int n_comp_group(const unsigned int s, const unsigned int vg) const
Definition: dof_object.h:991

◆ dof_number() [2/2]

dof_id_type libMesh::DofObject::dof_number ( const unsigned int  s,
const unsigned int  vg,
const unsigned int  vig,
const unsigned int  comp,
const unsigned int  n_comp 
) const
inlineinherited
Returns
The global degree of freedom number for variable group vg, variable index vig within the group, component comp out of n_comp, for system s on this DofObject

Even users who need to call dof_number from user code probably don't want to call this overload.

Definition at line 1029 of file dof_object.h.

References libMesh::DofObject::_idx_buf, libMesh::DofObject::invalid_id, libMesh::DofObject::n_comp(), libMesh::DofObject::n_systems(), libMesh::DofObject::n_var_groups(), libMesh::DofObject::n_vars(), and libMesh::DofObject::start_idx().

1034 {
1035  libmesh_assert_less (s, this->n_systems());
1036  libmesh_assert_less (vg, this->n_var_groups(s));
1037  libmesh_assert_less (vig, this->n_vars(s,vg));
1038 
1039  const unsigned int
1040  start_idx_sys = this->start_idx(s);
1041 
1042  libmesh_assert_less ((start_idx_sys + 2*vg + 1), _idx_buf.size());
1043 
1044  const dof_id_type
1045  base_idx = _idx_buf[start_idx_sys + 2*vg + 1];
1046 
1047  // if the first component is invalid, they
1048  // are all invalid
1049  if (base_idx == invalid_id)
1050  return invalid_id;
1051 
1052  // otherwise the index is the first component
1053  // index augmented by the component number
1054  else
1055  return cast_int<dof_id_type>(base_idx + vig*n_comp + comp);
1056 }
unsigned int n_comp(const unsigned int s, const unsigned int var) const
Definition: dof_object.h:978
unsigned int n_var_groups(const unsigned int s) const
Definition: dof_object.h:933
static constexpr dof_id_type invalid_id
An invalid id to distinguish an uninitialized DofObject.
Definition: dof_object.h:473
unsigned int n_vars(const unsigned int s, const unsigned int vg) const
Definition: dof_object.h:943
unsigned int n_systems() const
Definition: dof_object.h:913
unsigned int start_idx(const unsigned int s) const
The starting index for system s.
Definition: dof_object.h:1225
index_buffer_t _idx_buf
Definition: dof_object.h:671
uint8_t dof_id_type
Definition: id_types.h:67

◆ enable_print_counter_info() [1/2]

void libMesh::ReferenceCounter::enable_print_counter_info ( )
staticinherited

Methods to enable/disable the reference counter output from print_info().

Enabled by default.

Definition at line 94 of file reference_counter.C.

References libMesh::ReferenceCounter::_enable_print_counter.

Referenced by libMesh::LibMeshInit::~LibMeshInit().

95 {
96  _enable_print_counter = true;
97  return;
98 }
static bool _enable_print_counter
Flag to control whether reference count information is printed when print_info is called...

◆ enable_print_counter_info() [2/2]

void libMesh::ReferenceCounter::enable_print_counter_info ( )
staticinherited

Methods to enable/disable the reference counter output from print_info().

Enabled by default.

Definition at line 94 of file reference_counter.C.

References libMesh::ReferenceCounter::_enable_print_counter.

Referenced by libMesh::LibMeshInit::~LibMeshInit().

95 {
96  _enable_print_counter = true;
97  return;
98 }
static bool _enable_print_counter
Flag to control whether reference count information is printed when print_info is called...

◆ get_extra_datum()

template<typename T >
T libMesh::DofObject::get_extra_datum ( const unsigned int  index) const
inlineinherited

Gets the value on this object of the extra datum associated with index, which should have been obtained via a call to MeshBase::add_elem_datum or MeshBase::add_node_datum using the same type T.

Definition at line 1122 of file dof_object.h.

References libMesh::DofObject::_idx_buf, libMesh::DofObject::n_extra_integers(), libMesh::DofObject::n_systems(), and libMesh::DofObject::start_idx_ints().

Referenced by libMesh::MeshTools::Modification::all_rbb(), libMesh::Elem::get_info(), libMesh::VTKIO::nodes_to_vtk(), libMesh::rational_fe_shape(), libMesh::rational_fe_shape_deriv(), libMesh::rational_fe_shape_second_deriv(), libMesh::rational_fe_weighted_shapes(), libMesh::rational_fe_weighted_shapes_derivs(), libMesh::ExodusII_IO::read(), and DofObjectTest< Node >::testAddExtraData().

1123 {
1124 #ifndef NDEBUG
1125  const unsigned int n_more_integers = (sizeof(T)-1)/sizeof(dof_id_type);
1126 #endif
1127  libmesh_assert_less(index+n_more_integers, this->n_extra_integers());
1128  libmesh_assert_less(this->n_systems(), _idx_buf.size());
1129 
1130  const unsigned int start_idx_i = this->start_idx_ints();
1131 
1132  libmesh_assert_less(start_idx_i+index+n_more_integers, _idx_buf.size());
1133  T returnval;
1134  std::memcpy(&returnval, &_idx_buf[start_idx_i+index], sizeof(T));
1135  return returnval;
1136 }
unsigned int start_idx_ints() const
The starting index for an extra_integers pseudosystem.
Definition: dof_object.h:1249
unsigned int n_systems() const
Definition: dof_object.h:913
unsigned int n_extra_integers() const
Returns how many extra integers are associated to the DofObject.
Definition: dof_object.h:1146
index_buffer_t _idx_buf
Definition: dof_object.h:671
uint8_t dof_id_type
Definition: id_types.h:67

◆ get_extra_integer()

dof_id_type libMesh::DofObject::get_extra_integer ( const unsigned int  index) const
inlineinherited

Gets the value on this object of the extra integer associated with index, which should have been obtained via a call to MeshBase::add_elem_integer or MeshBase::add_node_integer.

Definition at line 1078 of file dof_object.h.

References libMesh::DofObject::_idx_buf, libMesh::DofObject::n_extra_integers(), libMesh::DofObject::n_systems(), and libMesh::DofObject::start_idx_ints().

Referenced by libMesh::MeshTools::Modification::all_tri(), WriteElemsetData::checkByCentroid(), libMesh::MeshTools::Modification::flatten(), libMesh::SyncElementIntegers::gather_data(), libMesh::XdrIO::pack_element(), libMesh::CheckpointIO::read_connectivity(), libMesh::SimplexRefiner::refine_via_edges(), libMesh::DofObject::set_n_vars_per_group(), DofObjectTest< Node >::testAddExtraData(), DofObjectTest< Node >::testAddSystemExtraInts(), ExtraIntegersTest::testExtraIntegersExodusReading(), DofObjectTest< Node >::testSetNSystemsExtraInts(), DofObjectTest< Node >::testSetNVariableGroupsExtraInts(), and libMesh::XdrIO::write_serialized_nodes().

1079 {
1080  libmesh_assert_less(index, this->n_extra_integers());
1081  libmesh_assert_less(this->n_systems(), _idx_buf.size());
1082 
1083  const unsigned int start_idx_i = this->start_idx_ints();
1084 
1085  libmesh_assert_less(start_idx_i+index, _idx_buf.size());
1086  return _idx_buf[start_idx_i+index];
1087 }
unsigned int start_idx_ints() const
The starting index for an extra_integers pseudosystem.
Definition: dof_object.h:1249
unsigned int n_systems() const
Definition: dof_object.h:913
unsigned int n_extra_integers() const
Returns how many extra integers are associated to the DofObject.
Definition: dof_object.h:1146
index_buffer_t _idx_buf
Definition: dof_object.h:671

◆ get_info() [1/3]

std::string libMesh::ReferenceCounter::get_info ( )
staticinherited

Gets a string containing the reference information.

Definition at line 47 of file reference_counter.C.

References libMesh::ReferenceCounter::_counts, and libMesh::Quality::name().

Referenced by libMesh::ReferenceCounter::print_info().

48 {
49 #if defined(LIBMESH_ENABLE_REFERENCE_COUNTING) && defined(DEBUG)
50 
51  std::ostringstream oss;
52 
53  oss << '\n'
54  << " ---------------------------------------------------------------------------- \n"
55  << "| Reference count information |\n"
56  << " ---------------------------------------------------------------------------- \n";
57 
58  for (const auto & [name, cd] : _counts)
59  oss << "| " << name << " reference count information:\n"
60  << "| Creations: " << cd.first << '\n'
61  << "| Destructions: " << cd.second << '\n';
62 
63  oss << " ---------------------------------------------------------------------------- \n";
64 
65  return oss.str();
66 
67 #else
68 
69  return "";
70 
71 #endif
72 }
std::string name(const ElemQuality q)
This function returns a string containing some name for q.
Definition: elem_quality.C:42
static Counts _counts
Actually holds the data.

◆ get_info() [2/3]

std::string libMesh::ReferenceCounter::get_info ( )
staticinherited

Gets a string containing the reference information.

Definition at line 47 of file reference_counter.C.

References libMesh::ReferenceCounter::_counts, and libMesh::Quality::name().

Referenced by libMesh::ReferenceCounter::print_info().

48 {
49 #if defined(LIBMESH_ENABLE_REFERENCE_COUNTING) && defined(DEBUG)
50 
51  std::ostringstream oss;
52 
53  oss << '\n'
54  << " ---------------------------------------------------------------------------- \n"
55  << "| Reference count information |\n"
56  << " ---------------------------------------------------------------------------- \n";
57 
58  for (const auto & [name, cd] : _counts)
59  oss << "| " << name << " reference count information:\n"
60  << "| Creations: " << cd.first << '\n'
61  << "| Destructions: " << cd.second << '\n';
62 
63  oss << " ---------------------------------------------------------------------------- \n";
64 
65  return oss.str();
66 
67 #else
68 
69  return "";
70 
71 #endif
72 }
std::string name(const ElemQuality q)
This function returns a string containing some name for q.
Definition: elem_quality.C:42
static Counts _counts
Actually holds the data.

◆ get_info() [3/3]

std::string libMesh::Node::get_info ( ) const

Prints relevant information about the node to a string.

Definition at line 53 of file node.C.

References libMesh::DofObject::dof_number(), libMesh::DofObject::id(), libMesh::make_range(), libMesh::DofObject::n_comp(), libMesh::DofObject::n_systems(), libMesh::DofObject::n_vars(), libMesh::DofObject::processor_id(), and libMesh::DofObject::valid_id().

Referenced by print_info().

54 {
55  std::ostringstream oss;
56 
57  oss << " Node id()=";
58 
59  if (this->valid_id())
60  oss << this->id();
61  else
62  oss << "invalid";
63 
64  oss << ", processor_id()=" << this->processor_id() <<
65  ", Point=" << *static_cast<const Point *>(this) << '\n';
66 
67  oss << " DoFs=";
68  for (auto s : make_range(this->n_systems()))
69  for (auto v : make_range(this->n_vars(s)))
70  for (auto c : make_range(this->n_comp(s,v)))
71  oss << '(' << s << '/' << v << '/' << this->dof_number(s,v,c) << ") ";
72 
73  return oss.str();
74 }
dof_id_type dof_number(const unsigned int s, const unsigned int var, const unsigned int comp) const
Definition: dof_object.h:1008
unsigned int n_comp(const unsigned int s, const unsigned int var) const
Definition: dof_object.h:978
Point(const Real x=0., const Real y=0., const Real z=0.)
Constructor.
Definition: point.h:47
dof_id_type id() const
Definition: dof_object.h:819
unsigned int n_vars(const unsigned int s, const unsigned int vg) const
Definition: dof_object.h:943
unsigned int n_systems() const
Definition: dof_object.h:913
bool valid_id() const
Definition: dof_object.h:861
IntRange< T > make_range(T beg, T end)
The 2-parameter make_range() helper function returns an IntRange<T> when both input parameters are of...
Definition: int_range.h:176
processor_id_type processor_id() const
Definition: dof_object.h:881

◆ get_old_dof_object() [1/2]

DofObject* libMesh::DofObject::get_old_dof_object ( )
inlineinherited

◆ get_old_dof_object() [2/2]

const DofObject* libMesh::DofObject::get_old_dof_object ( ) const
inlineinherited

Definition at line 97 of file dof_object.h.

References libMesh::DofObject::old_dof_object.

97 { return old_dof_object.get(); }
std::unique_ptr< DofObject > old_dof_object
This object on the last mesh.
Definition: dof_object.h:88

◆ get_old_dof_object_ref() [1/2]

DofObject& libMesh::DofObject::get_old_dof_object_ref ( )
inlineinherited

As above, but do not use in situations where the old_dof_object may be nullptr, since this function asserts that the old_dof_object is valid before returning a reference to it.

Definition at line 104 of file dof_object.h.

References libMesh::libmesh_assert(), and libMesh::DofObject::old_dof_object.

Referenced by libMesh::OldSolutionCoefs< Output, point_output >::eval_old_dofs(), libMesh::OldSolutionValue< Output, point_output >::eval_old_dofs(), and libMesh::DofMap::old_dof_indices().

105  {
107  return *old_dof_object;
108  }
libmesh_assert(ctx)
std::unique_ptr< DofObject > old_dof_object
This object on the last mesh.
Definition: dof_object.h:88

◆ get_old_dof_object_ref() [2/2]

const DofObject& libMesh::DofObject::get_old_dof_object_ref ( ) const
inlineinherited

Definition at line 110 of file dof_object.h.

References libMesh::libmesh_assert(), and libMesh::DofObject::old_dof_object.

111  {
113  return *old_dof_object;
114  }
libmesh_assert(ctx)
std::unique_ptr< DofObject > old_dof_object
This object on the last mesh.
Definition: dof_object.h:88

◆ has_dofs()

bool libMesh::DofObject::has_dofs ( const unsigned int  s = libMesh::invalid_uint) const
inlineinherited
Returns
true if any system has variables which have been assigned, false otherwise.

Definition at line 1202 of file dof_object.h.

References libMesh::invalid_uint, libMesh::make_range(), libMesh::DofObject::n_systems(), and libMesh::DofObject::n_vars().

Referenced by libMesh::DofMap::old_dof_indices().

1203 {
1204  if (sys == libMesh::invalid_uint)
1205  {
1206  for (auto s : make_range(this->n_systems()))
1207  if (this->n_vars(s))
1208  return true;
1209  }
1210 
1211  else
1212  {
1213  libmesh_assert_less (sys, this->n_systems());
1214 
1215  if (this->n_vars(sys))
1216  return true;
1217  }
1218 
1219  return false;
1220 }
const unsigned int invalid_uint
A number which is used quite often to represent an invalid or uninitialized value for an unsigned int...
Definition: libmesh.h:303
unsigned int n_vars(const unsigned int s, const unsigned int vg) const
Definition: dof_object.h:943
unsigned int n_systems() const
Definition: dof_object.h:913
IntRange< T > make_range(T beg, T end)
The 2-parameter make_range() helper function returns an IntRange<T> when both input parameters are of...
Definition: int_range.h:176

◆ has_extra_integers()

bool libMesh::DofObject::has_extra_integers ( ) const
inlineinherited

◆ id()

dof_id_type libMesh::DofObject::id ( ) const
inlineinherited
Returns
The id for this DofObject

Definition at line 819 of file dof_object.h.

References libMesh::DofObject::_id.

Referenced by libMesh::UniformRefinementEstimator::_estimate_error(), libMesh::BoundaryInfo::_find_id_maps(), libMesh::MeshTools::Subdivision::add_boundary_ghosts(), add_cube_convex_hull_to_mesh(), libMesh::ReplicatedMesh::add_elem(), libMesh::DistributedMesh::add_elem(), libMesh::BoundaryInfo::add_elements(), libMesh::TopologyMap::add_node(), libMesh::ReplicatedMesh::add_node(), libMesh::DistributedMesh::add_node(), libMesh::MeshTools::Modification::all_tri(), libMesh::DofMap::allgather_recursive_constraints(), libMesh::ClawSystem::assemble_avg_coupling_matrices(), assemble_ellipticdg(), libMesh::ClawSystem::assemble_jump_coupling_matrix(), build(), libMesh::MeshTools::Generation::build_cube(), libMesh::Partitioner::build_graph(), libMesh::InfElemBuilder::build_inf_elem(), libMesh::EquationSystems::build_parallel_solution_vector(), libMesh::MeshTetInterface::check_hull_integrity(), compute_jacobian(), libMesh::FEGenericBase< FEOutputType< T >::type >::compute_periodic_constraints(), libMesh::FEAbstract::compute_periodic_node_constraints(), compute_residual(), libMesh::InfFE< Dim, T_radial, T_map >::compute_shape_functions(), libMesh::MeshBase::copy_constraint_rows(), libMesh::UnstructuredMesh::copy_nodes_and_elements(), libMesh::MeshRefinement::create_parent_error_vector(), libMesh::ReplicatedMesh::delete_elem(), libMesh::DistributedMesh::delete_elem(), libMesh::ReplicatedMesh::delete_node(), libMesh::DistributedMesh::delete_node(), libMesh::C0Polyhedron::disconnected_clone(), libMesh::Elem::disconnected_clone(), libMesh::StaticCondensationDofMap::dof_indices(), libMesh::DTKAdapter::DTKAdapter(), libMesh::UNVIO::elements_out(), libMesh::JumpErrorEstimator::estimate_error(), libMesh::AdjointRefinementEstimator::estimate_error(), libMesh::ExactErrorEstimator::estimate_error(), libMesh::GenericProjector< FFunctor, GFunctor, FValue, ProjectionAction >::SubFunctor::find_dofs_to_send(), libMesh::UnstructuredMesh::find_neighbors(), libMesh::MeshTools::find_nodal_neighbors(), libMesh::MeshTools::find_nodal_or_face_neighbors(), libMesh::MeshRefinement::flag_elements_by_elem_fraction(), libMesh::MeshRefinement::flag_elements_by_error_fraction(), libMesh::MeshRefinement::flag_elements_by_error_tolerance(), libMesh::MeshTools::Modification::flatten(), libMesh::ReplicatedMesh::get_boundary_points(), libMesh::ReplicatedMesh::get_disconnected_subdomains(), get_info(), libMesh::Elem::get_info(), libMesh::MeshBase::get_info(), libMesh::VariationalSmootherConstraint::get_neighbors_for_boundary_constraint(), libMesh::VariationalSmootherConstraint::get_neighbors_for_subdomain_constraint(), libMesh::MeshTetInterface::improve_hull_integrity(), libMesh::ParmetisPartitioner::initialize(), libMesh::TreeNode< N >::insert(), libMesh::TriangulatorInterface::insert_any_extra_boundary_points(), libMesh::ReplicatedMesh::insert_elem(), libMesh::DistributedMesh::insert_elem(), libMesh::Poly2TriTriangulator::insert_refinement_points(), EIM_F::interior_assembly(), AssemblyEIM::interior_assembly(), libMesh::Elem::interior_parent(), libMesh::FEMap::inverse_map(), libMesh::MeshTools::libmesh_assert_valid_amr_elem_ids(), libMesh::MeshTools::libmesh_assert_valid_constraint_rows(), libMesh::MeshTools::libmesh_assert_valid_neighbors(), libMesh::Tri3Subdivision::local_node_number(), main(), MeshPerElemTest< elem_type >::meshes_equal_enough(), LinearElasticityWithContact::move_mesh(), libMesh::MeshTools::n_connected_components(), libMesh::Elem::node_id(), libMesh::TriangulatorInterface::nodes_to_segments(), libMesh::VTKIO::nodes_to_vtk(), libMesh::CompareElemIdsByLevel::operator()(), libMesh::GhostPointNeighbors::operator()(), libMesh::WeightedPatchRecoveryErrorEstimator::EstimateError::operator()(), libMesh::PatchRecoveryErrorEstimator::EstimateError::operator()(), libMesh::GenericProjector< FFunctor, GFunctor, FValue, ProjectionAction >::ProjectVertices::operator()(), libMesh::CompareDofObjectsByID::operator()(), libMesh::CompareDofObjectsByPIDAndThenID::operator()(), libMesh::BoundaryInfo::operator==(), libMesh::DistributedMesh::own_node(), libMesh::DistributedMesh::parallel_max_elem_id(), libMesh::DistributedMesh::parallel_max_node_id(), libMesh::MetisPartitioner::partition_range(), libMesh::DofObject::print_dof_info(), libMesh::DofMap::process_mesh_constraint_rows(), libMesh::DistributedMesh::query_elem_ptr(), libMesh::query_ghosting_functors(), libMesh::DistributedMesh::query_node_ptr(), libMesh::Nemesis_IO::read(), libMesh::ExodusII_IO::read(), libMesh::EquationSystems::redundant_added_side(), libMesh::SimplexRefiner::refine_via_edges(), libMesh::DistributedMesh::renumber_elem(), libMesh::DistributedMesh::renumber_node(), libMesh::DistributedMesh::renumber_nodes_and_elements(), libMesh::C0Polyhedron::retriangulate(), libMesh::DofMap::scatter_constraints(), libMesh::StaticCondensation::set_current_elem(), libMesh::Partitioner::set_node_processor_ids(), libMesh::DofMap::set_nonlocal_dof_objects(), FETestBase< order, family, elem_type, N_x >::setUp(), libMesh::MeshTools::Modification::smooth(), libMesh::BoundaryInfo::sync(), libMesh::Parallel::sync_dofobject_data_by_id(), libMesh::Parallel::sync_element_data_by_parent_id(), libMesh::Parallel::sync_node_data_by_element_id_once(), ElemTest< elem_type >::test_orient_elements(), DefaultCouplingTest::testCoupling(), MixedDimensionMeshTest::testPointLocatorTree(), InfFERadialTest::testRefinement(), DofObjectTest< Node >::testSetId(), DisjointNeighborTest::testTempJump(), libMesh::Elem::topologically_equal(), libMesh::NetGenMeshInterface::triangulate(), libMesh::TetGenMeshInterface::triangulate_conformingDelaunayMesh_carvehole(), libMesh::Poly2TriTriangulator::triangulate_current_points(), libMesh::MeshTetInterface::volume_to_surface_mesh(), libMesh::GmshIO::write_mesh(), libMesh::ExodusII_IO_Helper::write_nodal_coordinates(), and libMesh::XdrIO::write_serialized_nodes().

820 {
821  return _id;
822 }
dof_id_type _id
The id of the DofObject.
Definition: dof_object.h:574

◆ increment_constructor_count() [1/2]

void libMesh::ReferenceCounter::increment_constructor_count ( const std::string &  name)
inlineprotectednoexceptinherited

Increments the construction counter.

Should be called in the constructor of any derived class that will be reference counted.

Definition at line 183 of file reference_counter.h.

References libMesh::err, libMesh::BasicOStreamProxy< charT, traits >::get(), libMesh::Quality::name(), and libMesh::Threads::spin_mtx.

Referenced by libMesh::ReferenceCountedObject< RBParametrized >::ReferenceCountedObject().

184 {
185  libmesh_try
186  {
187  Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
188  std::pair<unsigned int, unsigned int> & p = _counts[name];
189  p.first++;
190  }
191  libmesh_catch (...)
192  {
193  auto stream = libMesh::err.get();
194  stream->exceptions(stream->goodbit); // stream must not throw
195  libMesh::err << "Encountered unrecoverable error while calling "
196  << "ReferenceCounter::increment_constructor_count() "
197  << "for a(n) " << name << " object." << std::endl;
198  std::terminate();
199  }
200 }
std::string name(const ElemQuality q)
This function returns a string containing some name for q.
Definition: elem_quality.C:42
OStreamProxy err
static Counts _counts
Actually holds the data.
streamT * get()
Rather than implement every ostream/ios/ios_base function, we&#39;ll be lazy and make esoteric uses go th...
spin_mutex spin_mtx
A convenient spin mutex object which can be used for obtaining locks.
Definition: threads.C:30

◆ increment_constructor_count() [2/2]

void libMesh::ReferenceCounter::increment_constructor_count ( const std::string &  name)
inlineprotectednoexceptinherited

Increments the construction counter.

Should be called in the constructor of any derived class that will be reference counted.

Definition at line 183 of file reference_counter.h.

References libMesh::err, libMesh::BasicOStreamProxy< charT, traits >::get(), libMesh::Quality::name(), and libMesh::Threads::spin_mtx.

Referenced by libMesh::ReferenceCountedObject< RBParametrized >::ReferenceCountedObject().

184 {
185  libmesh_try
186  {
187  Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
188  std::pair<unsigned int, unsigned int> & p = _counts[name];
189  p.first++;
190  }
191  libmesh_catch (...)
192  {
193  auto stream = libMesh::err.get();
194  stream->exceptions(stream->goodbit); // stream must not throw
195  libMesh::err << "Encountered unrecoverable error while calling "
196  << "ReferenceCounter::increment_constructor_count() "
197  << "for a(n) " << name << " object." << std::endl;
198  std::terminate();
199  }
200 }
std::string name(const ElemQuality q)
This function returns a string containing some name for q.
Definition: elem_quality.C:42
OStreamProxy err
static Counts _counts
Actually holds the data.
streamT * get()
Rather than implement every ostream/ios/ios_base function, we&#39;ll be lazy and make esoteric uses go th...
spin_mutex spin_mtx
A convenient spin mutex object which can be used for obtaining locks.
Definition: threads.C:30

◆ increment_destructor_count() [1/2]

void libMesh::ReferenceCounter::increment_destructor_count ( const std::string &  name)
inlineprotectednoexceptinherited

Increments the destruction counter.

Should be called in the destructor of any derived class that will be reference counted.

Definition at line 207 of file reference_counter.h.

References libMesh::err, libMesh::BasicOStreamProxy< charT, traits >::get(), libMesh::Quality::name(), and libMesh::Threads::spin_mtx.

Referenced by libMesh::ReferenceCountedObject< RBParametrized >::~ReferenceCountedObject().

208 {
209  libmesh_try
210  {
211  Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
212  std::pair<unsigned int, unsigned int> & p = _counts[name];
213  p.second++;
214  }
215  libmesh_catch (...)
216  {
217  auto stream = libMesh::err.get();
218  stream->exceptions(stream->goodbit); // stream must not throw
219  libMesh::err << "Encountered unrecoverable error while calling "
220  << "ReferenceCounter::increment_destructor_count() "
221  << "for a(n) " << name << " object." << std::endl;
222  std::terminate();
223  }
224 }
std::string name(const ElemQuality q)
This function returns a string containing some name for q.
Definition: elem_quality.C:42
OStreamProxy err
static Counts _counts
Actually holds the data.
streamT * get()
Rather than implement every ostream/ios/ios_base function, we&#39;ll be lazy and make esoteric uses go th...
spin_mutex spin_mtx
A convenient spin mutex object which can be used for obtaining locks.
Definition: threads.C:30

◆ increment_destructor_count() [2/2]

void libMesh::ReferenceCounter::increment_destructor_count ( const std::string &  name)
inlineprotectednoexceptinherited

Increments the destruction counter.

Should be called in the destructor of any derived class that will be reference counted.

Definition at line 207 of file reference_counter.h.

References libMesh::err, libMesh::BasicOStreamProxy< charT, traits >::get(), libMesh::Quality::name(), and libMesh::Threads::spin_mtx.

Referenced by libMesh::ReferenceCountedObject< RBParametrized >::~ReferenceCountedObject().

208 {
209  libmesh_try
210  {
211  Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
212  std::pair<unsigned int, unsigned int> & p = _counts[name];
213  p.second++;
214  }
215  libmesh_catch (...)
216  {
217  auto stream = libMesh::err.get();
218  stream->exceptions(stream->goodbit); // stream must not throw
219  libMesh::err << "Encountered unrecoverable error while calling "
220  << "ReferenceCounter::increment_destructor_count() "
221  << "for a(n) " << name << " object." << std::endl;
222  std::terminate();
223  }
224 }
std::string name(const ElemQuality q)
This function returns a string containing some name for q.
Definition: elem_quality.C:42
OStreamProxy err
static Counts _counts
Actually holds the data.
streamT * get()
Rather than implement every ostream/ios/ios_base function, we&#39;ll be lazy and make esoteric uses go th...
spin_mutex spin_mtx
A convenient spin mutex object which can be used for obtaining locks.
Definition: threads.C:30

◆ invalidate()

void libMesh::DofObject::invalidate ( )
inlineinherited

Invalidates all the indices for this DofObject.

Definition at line 779 of file dof_object.h.

References libMesh::DofObject::invalidate_dofs(), libMesh::DofObject::invalidate_id(), and libMesh::DofObject::invalidate_processor_id().

Referenced by libMesh::DofObject::DofObject().

780 {
781  this->invalidate_dofs ();
782  this->invalidate_id ();
783  this->invalidate_processor_id ();
784 }
void invalidate_id()
Sets the id to invalid_id.
Definition: dof_object.h:763
void invalidate_processor_id()
Sets the processor id to invalid_processor_id.
Definition: dof_object.h:771
void invalidate_dofs(const unsigned int sys_num=libMesh::invalid_uint)
Sets all degree of freedom numbers to invalid_id.
Definition: dof_object.h:742

◆ invalidate_dofs()

void libMesh::DofObject::invalidate_dofs ( const unsigned int  sys_num = libMesh::invalid_uint)
inlineinherited

Sets all degree of freedom numbers to invalid_id.

Definition at line 742 of file dof_object.h.

References libMesh::DofObject::invalid_id, libMesh::make_range(), libMesh::DofObject::n_comp_group(), libMesh::DofObject::n_systems(), libMesh::DofObject::n_var_groups(), and libMesh::DofObject::set_vg_dof_base().

Referenced by libMesh::DofObject::invalidate().

743 {
744  const unsigned int n_sys = this->n_systems();
745  // If the user does not specify the system number...
746  if (sys_num >= n_sys)
747  {
748  for (auto s : make_range(n_sys))
749  for (auto vg : make_range(this->n_var_groups(s)))
750  if (this->n_comp_group(s,vg))
751  this->set_vg_dof_base(s,vg,invalid_id);
752  }
753  // ...otherwise invalidate the dofs for all systems
754  else
755  for (auto vg : make_range(this->n_var_groups(sys_num)))
756  if (this->n_comp_group(sys_num,vg))
757  this->set_vg_dof_base(sys_num,vg,invalid_id);
758 }
unsigned int n_var_groups(const unsigned int s) const
Definition: dof_object.h:933
void set_vg_dof_base(const unsigned int s, const unsigned int vg, const dof_id_type db)
VariableGroup DoF indices are indexed as id = base + var_in_vg*ncomp + comp This method allows for di...
Definition: dof_object.h:1273
static constexpr dof_id_type invalid_id
An invalid id to distinguish an uninitialized DofObject.
Definition: dof_object.h:473
unsigned int n_systems() const
Definition: dof_object.h:913
IntRange< T > make_range(T beg, T end)
The 2-parameter make_range() helper function returns an IntRange<T> when both input parameters are of...
Definition: int_range.h:176
unsigned int n_comp_group(const unsigned int s, const unsigned int vg) const
Definition: dof_object.h:991

◆ invalidate_id()

void libMesh::DofObject::invalidate_id ( )
inlineinherited

Sets the id to invalid_id.

Definition at line 763 of file dof_object.h.

References libMesh::DofObject::invalid_id, and libMesh::DofObject::set_id().

Referenced by libMesh::DofObject::invalidate(), and DofObjectTest< Node >::testInvalidateId().

764 {
765  this->set_id (invalid_id);
766 }
dof_id_type & set_id()
Definition: dof_object.h:827
static constexpr dof_id_type invalid_id
An invalid id to distinguish an uninitialized DofObject.
Definition: dof_object.h:473

◆ invalidate_processor_id()

void libMesh::DofObject::invalidate_processor_id ( )
inlineinherited

Sets the processor id to invalid_processor_id.

Definition at line 771 of file dof_object.h.

References libMesh::DofObject::invalid_processor_id, and libMesh::DofObject::processor_id().

Referenced by libMesh::DofObject::invalidate(), libMesh::Partitioner::set_parent_processor_ids(), and DofObjectTest< Node >::testInvalidateProcId().

772 {
774 }
static constexpr processor_id_type invalid_processor_id
An invalid processor_id to distinguish DoFs that have not been assigned to a processor.
Definition: dof_object.h:484
processor_id_type processor_id() const
Definition: dof_object.h:881

◆ is_zero()

bool libMesh::TypeVector< Real >::is_zero ( ) const
inlineinherited
Returns
True if all values in the vector are zero

Definition at line 949 of file type_vector.h.

950 {
951  for (const auto & val : _coords)
952  if (val != T(0))
953  return false;
954  return true;
955 }
Real _coords[LIBMESH_DIM]
The coordinates of the TypeVector.
Definition: type_vector.h:417

◆ l1_norm() [1/3]

auto libMesh::TypeVector< bool >::l1_norm ( ) const
inherited

Definition at line 203 of file type_vector.C.

References libMesh::libmesh_dim, and libMesh::make_range().

204 {
205  bool ret{};
206  for (const auto i : make_range(libmesh_dim))
207  ret += _coords[i];
208 
209  return ret;
210 }
Real _coords[LIBMESH_DIM]
The coordinates of the TypeVector.
Definition: type_vector.h:417
static constexpr std::size_t libmesh_dim
IntRange< T > make_range(T beg, T end)
The 2-parameter make_range() helper function returns an IntRange<T> when both input parameters are of...
Definition: int_range.h:176

◆ l1_norm() [2/3]

auto libMesh::TypeVector< Real >::l1_norm ( ) const
inherited
Returns
The L1 norm of the vector

Definition at line 963 of file type_vector.h.

References libMesh::libmesh_dim, and libMesh::make_range().

964 {
965  using std::abs;
966  decltype(abs(T())) ret{};
967  for (const auto i : make_range(libmesh_dim))
968  ret += abs(_coords[i]);
969 
970  return ret;
971 }
Real _coords[LIBMESH_DIM]
The coordinates of the TypeVector.
Definition: type_vector.h:417
static constexpr std::size_t libmesh_dim
IntRange< T > make_range(T beg, T end)
The 2-parameter make_range() helper function returns an IntRange<T> when both input parameters are of...
Definition: int_range.h:176

◆ l1_norm() [3/3]

auto libMesh::TypeVector< bool >::l1_norm ( ) const
inherited

◆ n_comp()

unsigned int libMesh::DofObject::n_comp ( const unsigned int  s,
const unsigned int  var 
) const
inlineinherited
Returns
The number of components for variable var of system s associated with this DofObject. For example, the HIERARCHIC shape functions may have multiple DoFs associated with one node. Another example is the MONOMIALs, where only the elements hold the DoFs. For the different spatial directions, and orders, see FE.

Definition at line 978 of file dof_object.h.

References libMesh::DofObject::n_comp_group(), libMesh::DofObject::n_systems(), libMesh::DofObject::n_vars(), and libMesh::DofObject::var_to_vg().

Referenced by libMesh::DofMap::allgather_recursive_constraints(), libMesh::FEGenericBase< FEOutputType< T >::type >::compute_periodic_constraints(), libMesh::DofMap::constrain_p_dofs(), libMesh::Nemesis_IO::copy_elemental_solution(), libMesh::ExodusII_IO::copy_elemental_solution(), libMesh::Nemesis_IO::copy_nodal_solution(), libMesh::ExodusII_IO::copy_nodal_solution(), libMesh::DofMap::distribute_dofs(), libMesh::DofObject::dof_number(), libMesh::DofObject::DofObject(), libMesh::OldSolutionCoefs< Output, point_output >::eval_at_node(), libMesh::OldSolutionValue< Output, point_output >::eval_at_node(), libMesh::OldSolutionCoefs< Output, point_output >::eval_mixed_derivatives(), libMesh::OldSolutionValue< Output, point_output >::eval_mixed_derivatives(), get_info(), libMesh::Elem::get_info(), libMesh::DofMap::local_variable_indices(), main(), libMesh::DofObject::n_dofs(), libMesh::GenericProjector< FFunctor, GFunctor, FValue, ProjectionAction >::ProjectVertices::operator()(), libMesh::GenericProjector< FFunctor, GFunctor, FValue, ProjectionAction >::ProjectSides::operator()(), libMesh::DofObject::operator=(), libMesh::DofObject::print_dof_info(), libMesh::DofObject::set_dof_number(), libMesh::DofObject::set_n_vars_per_group(), libMesh::DofMap::set_nonlocal_dof_objects(), and libMesh::Nemesis_IO_Helper::write_nodal_solution().

980 {
981  libmesh_assert_less (s, this->n_systems());
982  libmesh_assert_less (var, this->n_vars(s));
983 
984  return this->n_comp_group(s,this->var_to_vg(s,var));
985 }
unsigned int var_to_vg(const unsigned int s, const unsigned int var) const
Utility function - for variable var in system s, figure out what variable group it lives in...
Definition: dof_object.h:1317
unsigned int n_vars(const unsigned int s, const unsigned int vg) const
Definition: dof_object.h:943
unsigned int n_systems() const
Definition: dof_object.h:913
unsigned int n_comp_group(const unsigned int s, const unsigned int vg) const
Definition: dof_object.h:991

◆ n_comp_group()

unsigned int libMesh::DofObject::n_comp_group ( const unsigned int  s,
const unsigned int  vg 
) const
inlineinherited
Returns
The number of components for VariableGroup vg of system s associated with this DofObject. For example, the HIERARCHIC shape functions may have multiple DoFs associated with one node. Another example is the MONOMIALs, where only the elements hold the DoFs. For the different spatial directions, and orders, see FE.

Definition at line 991 of file dof_object.h.

References libMesh::DofObject::_idx_buf, libMesh::DofObject::n_systems(), libMesh::DofObject::n_var_groups(), libMesh::DofObject::ncv_magic, and libMesh::DofObject::start_idx().

Referenced by libMesh::DofMap::_dof_indices(), libMesh::DofMap::_node_dof_indices(), libMesh::DofMap::distribute_local_dofs_node_major(), libMesh::DofMap::distribute_local_dofs_var_major(), libMesh::DofMap::dof_indices(), libMesh::DofObject::dof_number(), libMesh::OldSolutionCoefs< Output, point_output >::eval_old_dofs(), libMesh::OldSolutionValue< Output, point_output >::eval_old_dofs(), libMesh::DofObject::invalidate_dofs(), libMesh::DofObject::n_comp(), libMesh::DofMap::old_dof_indices(), libMesh::BuildProjectionList::operator()(), libMesh::DofMap::reinit(), libMesh::DofObject::set_dof_number(), libMesh::DofObject::set_n_comp_group(), libMesh::DofObject::set_n_vars_per_group(), and libMesh::DofMap::set_nonlocal_dof_objects().

993 {
994  libmesh_assert_less (s, this->n_systems());
995  libmesh_assert_less (vg, this->n_var_groups(s));
996 
997  const unsigned int
998  start_idx_sys = this->start_idx(s);
999 
1000  libmesh_assert_less ((start_idx_sys + 2*vg), _idx_buf.size());
1001 
1002  return (_idx_buf[start_idx_sys + 2*vg] % ncv_magic);
1003 }
unsigned int n_var_groups(const unsigned int s) const
Definition: dof_object.h:933
unsigned int n_systems() const
Definition: dof_object.h:913
unsigned int start_idx(const unsigned int s) const
The starting index for system s.
Definition: dof_object.h:1225
index_buffer_t _idx_buf
Definition: dof_object.h:671
static const index_t ncv_magic
Above we introduced the chimera ncv, which is a hybrid of the form ncv = ncv_magic*nv + nc where nv a...
Definition: dof_object.h:682

◆ n_dofs()

unsigned int libMesh::DofObject::n_dofs ( const unsigned int  s,
const unsigned int  var = libMesh::invalid_uint 
) const
inlineinherited
Returns
The number of degrees of freedom associated with system s directly stored on this object. Optionally only degrees of freedom for variable number var are counted. Does not count degrees of freedom only indirectly associated with this object, such as those stored on an element's nodes when n_dofs() is called on the element itself.

Definition at line 797 of file dof_object.h.

References libMesh::invalid_uint, libMesh::make_range(), libMesh::DofObject::n_comp(), libMesh::DofObject::n_systems(), and libMesh::DofObject::n_vars().

Referenced by libMesh::PetscDMWrapper::add_dofs_helper(), and libMesh::EquationSystems::build_parallel_solution_vector().

799 {
800  libmesh_assert_less (s, this->n_systems());
801 
802  unsigned int num = 0;
803 
804  // Count all variables
805  if (var == libMesh::invalid_uint)
806  for (auto v : make_range(this->n_vars(s)))
807  num += this->n_comp(s,v);
808 
809  // Only count specified variable
810  else
811  num = this->n_comp(s,var);
812 
813  return num;
814 }
const unsigned int invalid_uint
A number which is used quite often to represent an invalid or uninitialized value for an unsigned int...
Definition: libmesh.h:303
unsigned int n_comp(const unsigned int s, const unsigned int var) const
Definition: dof_object.h:978
unsigned int n_vars(const unsigned int s, const unsigned int vg) const
Definition: dof_object.h:943
unsigned int n_systems() const
Definition: dof_object.h:913
IntRange< T > make_range(T beg, T end)
The 2-parameter make_range() helper function returns an IntRange<T> when both input parameters are of...
Definition: int_range.h:176

◆ n_extra_integers()

unsigned int libMesh::DofObject::n_extra_integers ( ) const
inlineinherited

Returns how many extra integers are associated to the DofObject.

If non-integer data has been associated, each datum of type T counts for sizeof(T)/sizeof(dof_id_type) times in the return value.

Definition at line 1146 of file dof_object.h.

References libMesh::DofObject::_idx_buf, and libMesh::DofObject::start_idx_ints().

Referenced by libMesh::DofObject::add_extra_integers(), libMesh::MeshTools::Modification::all_tri(), libMesh::C0Polyhedron::disconnected_clone(), libMesh::Elem::disconnected_clone(), libMesh::MeshTools::Modification::flatten(), libMesh::DofObject::get_extra_datum(), libMesh::DofObject::get_extra_integer(), libMesh::CheckpointIO::read_connectivity(), libMesh::CheckpointIO::read_nodes(), libMesh::XdrIO::read_serialized_connectivity(), libMesh::Elem::refine(), libMesh::SimplexRefiner::refine_via_edges(), libMesh::DofObject::set_extra_datum(), libMesh::DofObject::set_extra_integer(), libMesh::DofObject::set_n_systems(), libMesh::DofObject::set_n_vars_per_group(), DofObjectTest< Node >::testAddExtraData(), DofObjectTest< Node >::testAddSystemExtraInts(), DofObjectTest< Node >::testSetNSystemsExtraInts(), and DofObjectTest< Node >::testSetNVariableGroupsExtraInts().

1147 {
1148  if (_idx_buf.empty())
1149  return 0;
1150 
1151  const int hdr = dof_id_signed_type(_idx_buf[0]);
1152  if (hdr >= 0)
1153  return 0;
1154 
1155  const unsigned int start_idx_i = this->start_idx_ints();
1156 
1157  return _idx_buf.size() - start_idx_i;
1158 }
unsigned int start_idx_ints() const
The starting index for an extra_integers pseudosystem.
Definition: dof_object.h:1249
int8_t dof_id_signed_type
Definition: id_types.h:68
index_buffer_t _idx_buf
Definition: dof_object.h:671

◆ n_objects() [1/2]

static unsigned int libMesh::ReferenceCounter::n_objects ( )
inlinestaticinherited

Prints the number of outstanding (created, but not yet destroyed) objects.

Definition at line 85 of file reference_counter.h.

References libMesh::ReferenceCounter::_n_objects.

Referenced by libMesh::LibMeshInit::~LibMeshInit().

86  { return _n_objects; }
static Threads::atomic< unsigned int > _n_objects
The number of objects.

◆ n_objects() [2/2]

static unsigned int libMesh::ReferenceCounter::n_objects ( )
inlinestaticinherited

Prints the number of outstanding (created, but not yet destroyed) objects.

Definition at line 85 of file reference_counter.h.

References libMesh::ReferenceCounter::_n_objects.

Referenced by libMesh::LibMeshInit::~LibMeshInit().

86  { return _n_objects; }
static Threads::atomic< unsigned int > _n_objects
The number of objects.

◆ n_pseudo_systems()

unsigned int libMesh::DofObject::n_pseudo_systems ( ) const
inlineinherited
Returns
The total number of pseudo-systems associated with this DofObject : n_systems(), plus one iff this->has_extra_integers()

Definition at line 923 of file dof_object.h.

References libMesh::DofObject::_idx_buf.

Referenced by libMesh::DofObject::end_idx(), libMesh::DofObject::set_extra_datum(), and libMesh::DofObject::set_extra_integer().

924 {
925  const int hdr = _idx_buf.empty() ?
926  0 : cast_int<int>(dof_id_signed_type(_idx_buf[0]));
927  return std::abs(hdr);
928 }
int8_t dof_id_signed_type
Definition: id_types.h:68
index_buffer_t _idx_buf
Definition: dof_object.h:671

◆ n_systems()

unsigned int libMesh::DofObject::n_systems ( ) const
inlineinherited
Returns
The number of systems associated with this DofObject

Definition at line 913 of file dof_object.h.

References libMesh::DofObject::_idx_buf.

Referenced by libMesh::DofMap::_dof_indices(), libMesh::DofObject::add_system(), libMesh::DofObject::dof_number(), libMesh::DofObject::DofObject(), libMesh::DofObject::end_idx(), libMesh::OldSolutionCoefs< Output, point_output >::eval_old_dofs(), libMesh::OldSolutionValue< Output, point_output >::eval_old_dofs(), libMesh::DofObject::get_extra_datum(), libMesh::DofObject::get_extra_integer(), get_info(), libMesh::Elem::get_info(), libMesh::DofObject::has_dofs(), libMesh::DofObject::invalidate_dofs(), libMesh::DofObject::n_comp(), libMesh::DofObject::n_comp_group(), libMesh::DofObject::n_dofs(), libMesh::DofObject::n_var_groups(), libMesh::DofObject::n_vars(), libMesh::DofMap::old_dof_indices(), libMesh::DofObject::operator=(), libMesh::DofObject::print_dof_info(), libMesh::Elem::refine(), libMesh::DofObject::set_dof_number(), libMesh::DofObject::set_n_comp(), libMesh::DofObject::set_n_comp_group(), libMesh::DofObject::set_n_systems(), libMesh::DofObject::set_n_vars_per_group(), libMesh::DofObject::set_vg_dof_base(), libMesh::DofObject::start_idx(), libMesh::DofObject::start_idx_ints(), DofObjectTest< Node >::testAddSystemExtraInts(), DofObjectTest< Node >::testSetNSystems(), DofObjectTest< Node >::testSetNSystemsExtraInts(), and libMesh::DofObject::vg_dof_base().

914 {
915  const int hdr = _idx_buf.empty() ?
916  0 : cast_int<int>(dof_id_signed_type(_idx_buf[0]));
917  return hdr >= 0 ? hdr : (-hdr-1);
918 }
int8_t dof_id_signed_type
Definition: id_types.h:68
index_buffer_t _idx_buf
Definition: dof_object.h:671

◆ n_var_groups()

unsigned int libMesh::DofObject::n_var_groups ( const unsigned int  s) const
inlineinherited

◆ n_vars() [1/2]

unsigned int libMesh::DofObject::n_vars ( const unsigned int  s,
const unsigned int  vg 
) const
inlineinherited
Returns
The number of Variable variables associated with VariableGroup vg in system s for this DofObject

Definition at line 943 of file dof_object.h.

References libMesh::DofObject::_idx_buf, libMesh::DofObject::n_systems(), libMesh::DofObject::n_var_groups(), libMesh::DofObject::ncv_magic_exp, and libMesh::DofObject::start_idx().

Referenced by libMesh::DofObject::add_system(), libMesh::DofMap::allgather_recursive_constraints(), libMesh::DofMap::distribute_dofs(), libMesh::DofObject::dof_number(), libMesh::DofObject::DofObject(), libMesh::OldSolutionCoefs< Output, point_output >::eval_at_node(), libMesh::OldSolutionValue< Output, point_output >::eval_at_node(), libMesh::OldSolutionCoefs< Output, point_output >::eval_mixed_derivatives(), libMesh::OldSolutionValue< Output, point_output >::eval_mixed_derivatives(), get_info(), libMesh::Elem::get_info(), libMesh::DofObject::has_dofs(), libMesh::DofObject::n_comp(), libMesh::DofObject::n_dofs(), libMesh::DofObject::n_vars(), libMesh::BuildProjectionList::operator()(), libMesh::DofObject::operator=(), libMesh::DofObject::print_dof_info(), libMesh::DofObject::set_dof_number(), libMesh::DofObject::set_n_comp(), libMesh::DofObject::set_n_comp_group(), libMesh::DofObject::set_n_systems(), libMesh::DofObject::set_n_vars_per_group(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::DofObject::system_var_to_vg_var(), DofObjectTest< Node >::testAddSystemExtraInts(), DofObjectTest< Node >::testSetNVariableGroups(), DofObjectTest< Node >::testSetNVariableGroupsExtraInts(), libMesh::DofObject::var_to_vg(), and libMesh::DofObject::var_to_vg_and_offset().

945 {
946  libmesh_assert_less (s, this->n_systems());
947  libmesh_assert_less (vg, this->n_var_groups(s));
948 
949  const unsigned int start_idx_sys = this->start_idx(s);
950 
951  libmesh_assert_less ((start_idx_sys + 2*vg), _idx_buf.size());
952 
953  return (cast_int<unsigned int>
954  (_idx_buf[start_idx_sys + 2*vg]) >> ncv_magic_exp);
955 }
unsigned int n_var_groups(const unsigned int s) const
Definition: dof_object.h:933
unsigned int n_systems() const
Definition: dof_object.h:913
unsigned int start_idx(const unsigned int s) const
The starting index for system s.
Definition: dof_object.h:1225
index_buffer_t _idx_buf
Definition: dof_object.h:671
static const index_t ncv_magic_exp
Definition: dof_object.h:683

◆ n_vars() [2/2]

unsigned int libMesh::DofObject::n_vars ( const unsigned int  s) const
inlineinherited
Returns
The number of Variable variables associated with system s for this DofObject

Definition at line 960 of file dof_object.h.

References libMesh::DofObject::n_systems(), libMesh::DofObject::n_var_groups(), and libMesh::DofObject::n_vars().

961 {
962  libmesh_assert_less (s, this->n_systems());
963 
964  const unsigned int nvg = this->n_var_groups(s);
965 
966  unsigned int val=0;
967 
968  for (unsigned int vg=0; vg<nvg; vg++)
969  val += this->n_vars(s,vg);
970 
971  return val;
972 }
unsigned int n_var_groups(const unsigned int s) const
Definition: dof_object.h:933
unsigned int n_vars(const unsigned int s, const unsigned int vg) const
Definition: dof_object.h:943
unsigned int n_systems() const
Definition: dof_object.h:913

◆ norm()

auto libMesh::TypeVector< Real >::norm ( ) const
inlineinherited
Returns
The magnitude of the vector, i.e. the square-root of the sum of the elements squared.

Definition at line 908 of file type_vector.h.

References libMesh::TensorTools::norm_sq().

909 {
910  using std::sqrt;
911  return sqrt(this->norm_sq());
912 }

◆ norm_sq()

auto libMesh::TypeVector< Real >::norm_sq ( ) const
inlineinherited
Returns
The magnitude of the vector squared, i.e. the sum of the element magnitudes squared.

Definition at line 928 of file type_vector.h.

References libMesh::TensorTools::norm_sq().

929 {
930 #if LIBMESH_DIM == 1
931  return (TensorTools::norm_sq(_coords[0]));
932 #endif
933 
934 #if LIBMESH_DIM == 2
935  return (TensorTools::norm_sq(_coords[0]) +
937 #endif
938 
939 #if LIBMESH_DIM == 3
940  return (TensorTools::norm_sq(_coords[0]) +
943 #endif
944 }
Real _coords[LIBMESH_DIM]
The coordinates of the TypeVector.
Definition: type_vector.h:417
auto norm_sq(const T &a)
Definition: tensor_tools.h:104

◆ operator!=()

bool libMesh::TypeVector< Real >::operator!= ( const TypeVector< Real > &  rhs) const
inlineinherited
Returns
!(*this == rhs)

Definition at line 1015 of file type_vector.h.

1016 {
1017  return (!(*this == rhs));
1018 }

◆ operator()() [1/2]

const Real & libMesh::TypeVector< Real >::operator() ( const unsigned int  i) const
inlineinherited
Returns
A const reference to the \( i^{th} \) entry of the vector.

Definition at line 544 of file type_vector.h.

545 {
546  libmesh_assert_less (i, LIBMESH_DIM);
547 
548  return _coords[i];
549 }
Real _coords[LIBMESH_DIM]
The coordinates of the TypeVector.
Definition: type_vector.h:417

◆ operator()() [2/2]

Real & libMesh::TypeVector< Real >::operator() ( const unsigned int  i)
inlineinherited
Returns
A writable reference to the \( i^{th} \) entry of the vector.

Definition at line 555 of file type_vector.h.

556 {
557  libmesh_assert_less (i, LIBMESH_DIM);
558 
559  return _coords[i];
560 }
Real _coords[LIBMESH_DIM]
The coordinates of the TypeVector.
Definition: type_vector.h:417

◆ operator*() [1/2]

std::enable_if< ScalarTraits< Scalar >::value, TypeVector< typename CompareTypes< Real , Scalar >::supertype > >::type libMesh::TypeVector< Real >::operator* ( const Scalar &  factor) const
inlineinherited

Multiply this vector by a scalar value.

Returns
A copy of the result, this vector is unchanged.

Definition at line 741 of file type_vector.h.

742 {
743  typedef typename CompareTypes<T, Scalar>::supertype SuperType;
744 
745 #if LIBMESH_DIM == 1
746  return TypeVector<SuperType>(_coords[0]*factor);
747 #endif
748 
749 #if LIBMESH_DIM == 2
750  return TypeVector<SuperType>(_coords[0]*factor,
751  _coords[1]*factor);
752 #endif
753 
754 #if LIBMESH_DIM == 3
755  return TypeVector<SuperType>(_coords[0]*factor,
756  _coords[1]*factor,
757  _coords[2]*factor);
758 #endif
759 }
Real _coords[LIBMESH_DIM]
The coordinates of the TypeVector.
Definition: type_vector.h:417

◆ operator*() [2/2]

CompareTypes< Real , T2 >::supertype libMesh::TypeVector< Real >::operator* ( const TypeVector< T2 > &  p) const
inlineinherited
Returns
The dot-product of this vector with another vector.
Note
The complex conjugate is not taken in the complex-valued case.
The vectors may contain different numeric types.

Definition at line 853 of file type_vector.h.

854 {
855 #if LIBMESH_DIM == 1
856  return _coords[0]*p._coords[0];
857 #endif
858 
859 #if LIBMESH_DIM == 2
860  return (_coords[0]*p._coords[0] +
861  _coords[1]*p._coords[1]);
862 #endif
863 
864 #if LIBMESH_DIM == 3
865  return (_coords[0]*p(0) +
866  _coords[1]*p(1) +
867  _coords[2]*p(2));
868 #endif
869 }
Real _coords[LIBMESH_DIM]
The coordinates of the TypeVector.
Definition: type_vector.h:417

◆ operator*=()

const TypeVector< Real > & libMesh::TypeVector< Real >::operator*= ( const Real &  factor)
inlineinherited

Multiply this vector by a scalar value.

Returns
A reference to *this.

Definition at line 778 of file type_vector.h.

779 {
780 #if LIBMESH_DIM == 1
781  _coords[0] *= factor;
782 #endif
783 
784 #if LIBMESH_DIM == 2
785  _coords[0] *= factor;
786  _coords[1] *= factor;
787 #endif
788 
789 #if LIBMESH_DIM == 3
790  _coords[0] *= factor;
791  _coords[1] *= factor;
792  _coords[2] *= factor;
793 #endif
794 
795  return *this;
796 }
Real _coords[LIBMESH_DIM]
The coordinates of the TypeVector.
Definition: type_vector.h:417

◆ operator+()

TypeVector< typename CompareTypes< Real , T2 >::supertype > libMesh::TypeVector< Real >::operator+ ( const TypeVector< T2 > &  p) const
inlineinherited

Add two vectors.

Returns
A copy of the result, this vector is unchanged.

Definition at line 568 of file type_vector.h.

569 {
570  typedef typename CompareTypes<T, T2>::supertype TS;
571 #if LIBMESH_DIM == 1
572  return TypeVector<TS> (_coords[0] + p._coords[0]);
573 #endif
574 
575 #if LIBMESH_DIM == 2
576  return TypeVector<TS> (_coords[0] + p._coords[0],
577  _coords[1] + p._coords[1]);
578 #endif
579 
580 #if LIBMESH_DIM == 3
581  return TypeVector<TS> (_coords[0] + p._coords[0],
582  _coords[1] + p._coords[1],
583  _coords[2] + p._coords[2]);
584 #endif
585 
586 }
Real _coords[LIBMESH_DIM]
The coordinates of the TypeVector.
Definition: type_vector.h:417

◆ operator+=()

const TypeVector< Real > & libMesh::TypeVector< Real >::operator+= ( const TypeVector< T2 > &  p)
inlineinherited

Add to this vector.

Returns
A reference to *this.

Definition at line 593 of file type_vector.h.

594 {
595  this->add (p);
596 
597  return *this;
598 }
void add(const TypeVector< T2 > &)
Add to this vector without creating a temporary.
Definition: type_vector.h:605

◆ operator-() [1/2]

TypeVector< typename CompareTypes< Real , T2 >::supertype > libMesh::TypeVector< Real >::operator- ( const TypeVector< T2 > &  p) const
inlineinherited

Subtract from this vector.

Returns
A copy of the result, this vector is unchanged.

Definition at line 654 of file type_vector.h.

655 {
656  typedef typename CompareTypes<T, T2>::supertype TS;
657 
658 #if LIBMESH_DIM == 1
659  return TypeVector<TS>(_coords[0] - p._coords[0]);
660 #endif
661 
662 #if LIBMESH_DIM == 2
663  return TypeVector<TS>(_coords[0] - p._coords[0],
664  _coords[1] - p._coords[1]);
665 #endif
666 
667 #if LIBMESH_DIM == 3
668  return TypeVector<TS>(_coords[0] - p._coords[0],
669  _coords[1] - p._coords[1],
670  _coords[2] - p._coords[2]);
671 #endif
672 
673 }
Real _coords[LIBMESH_DIM]
The coordinates of the TypeVector.
Definition: type_vector.h:417

◆ operator-() [2/2]

TypeVector< Real > libMesh::TypeVector< Real >::operator- ( ) const
inlineinherited
Returns
The negative of this vector in a separate copy.

Definition at line 713 of file type_vector.h.

714 {
715 
716 #if LIBMESH_DIM == 1
717  return TypeVector(-_coords[0]);
718 #endif
719 
720 #if LIBMESH_DIM == 2
721  return TypeVector(-_coords[0],
722  -_coords[1]);
723 #endif
724 
725 #if LIBMESH_DIM == 3
726  return TypeVector(-_coords[0],
727  -_coords[1],
728  -_coords[2]);
729 #endif
730 
731 }
Real _coords[LIBMESH_DIM]
The coordinates of the TypeVector.
Definition: type_vector.h:417
TypeVector()
Empty constructor.
Definition: type_vector.h:429

◆ operator-=()

const TypeVector< Real > & libMesh::TypeVector< Real >::operator-= ( const TypeVector< T2 > &  p)
inlineinherited

Subtract from this vector.

Returns
A reference to *this.

Definition at line 680 of file type_vector.h.

681 {
682  this->subtract (p);
683 
684  return *this;
685 }
void subtract(const TypeVector< T2 > &)
Subtract from this vector without creating a temporary.
Definition: type_vector.h:692

◆ operator/()

std::enable_if< ScalarTraits< Scalar >::value, TypeVector< typename CompareTypes< Real , Scalar >::supertype > >::type libMesh::TypeVector< Real >::operator/ ( const Scalar &  factor) const
inlineinherited

Divide each entry of this vector by scalar value.

Returns
A copy of the result, this vector is unchanged.

Definition at line 806 of file type_vector.h.

807 {
808  typedef typename CompareTypes<T, Scalar>::supertype TS;
809 
810  libmesh_assert_not_equal_to (static_cast<TS>(factor),
811  static_cast<TS>(0.));
812 
813 #if LIBMESH_DIM == 1
814  return TypeVector<TS>(_coords[0]/factor);
815 #endif
816 
817 #if LIBMESH_DIM == 2
818  return TypeVector<TS>(_coords[0]/factor,
819  _coords[1]/factor);
820 #endif
821 
822 #if LIBMESH_DIM == 3
823  return TypeVector<TS>(_coords[0]/factor,
824  _coords[1]/factor,
825  _coords[2]/factor);
826 #endif
827 
828 }
Real _coords[LIBMESH_DIM]
The coordinates of the TypeVector.
Definition: type_vector.h:417

◆ operator/=()

const TypeVector< Real > & libMesh::TypeVector< Real >::operator/= ( const Real &  factor)
inlineinherited

Divide each entry of this vector by scalar value.

Returns
A reference to *this.

Definition at line 836 of file type_vector.h.

837 {
838  libmesh_assert_not_equal_to (factor, static_cast<T>(0.));
839 
840  for (unsigned int i=0; i<LIBMESH_DIM; i++)
841  _coords[i] /= factor;
842 
843  return *this;
844 }
Real _coords[LIBMESH_DIM]
The coordinates of the TypeVector.
Definition: type_vector.h:417

◆ operator<() [1/2]

bool libMesh::TypeVector< Complex >::operator< ( const TypeVector< Complex > &  rhs) const
inherited

Definition at line 124 of file type_vector.C.

References std::imag(), and std::real().

125 {
126  for (unsigned int i=0; i<LIBMESH_DIM; i++)
127  {
128  if ((*this)(i).real() < rhs(i).real())
129  return true;
130  if ((*this)(i).real() > rhs(i).real())
131  return false;
132  if ((*this)(i).imag() < rhs(i).imag())
133  return true;
134  if ((*this)(i).imag() > rhs(i).imag())
135  return false;
136  }
137  return false;
138 }
boost::multiprecision::float128 real(const boost::multiprecision::float128 in)
boost::multiprecision::float128 imag(const boost::multiprecision::float128)

◆ operator<() [2/2]

bool libMesh::TypeVector< Real >::operator< ( const TypeVector< Real > &  rhs) const
inherited
Returns
true if this vector is "less" than rhs.

Useful for sorting. Also used for choosing some arbitrary basis function orientations.

Definition at line 66 of file type_vector.C.

67 {
68  for (unsigned int i=0; i<LIBMESH_DIM; i++)
69  {
70  if ((*this)(i) < rhs(i))
71  return true;
72  if ((*this)(i) > rhs(i))
73  return false;
74  }
75  return false;
76 }

◆ operator<=() [1/2]

bool libMesh::TypeVector< Complex >::operator<= ( const TypeVector< Complex > &  rhs) const
inherited

Definition at line 143 of file type_vector.C.

References std::imag(), and std::real().

144 {
145  for (unsigned int i=0; i<LIBMESH_DIM; i++)
146  {
147  if ((*this)(i).real() < rhs(i).real())
148  return true;
149  if ((*this)(i).real() > rhs(i).real())
150  return false;
151  if ((*this)(i).imag() < rhs(i).imag())
152  return true;
153  if ((*this)(i).imag() > rhs(i).imag())
154  return false;
155  }
156  return true;
157 }
boost::multiprecision::float128 real(const boost::multiprecision::float128 in)
boost::multiprecision::float128 imag(const boost::multiprecision::float128)

◆ operator<=() [2/2]

bool libMesh::TypeVector< Real >::operator<= ( const TypeVector< Real > &  rhs) const
inherited
Returns
true if this vector is <= to rhs.

Useful for sorting. Also used for choosing some arbitrary constraint equation directions.

Definition at line 80 of file type_vector.C.

81 {
82  for (unsigned int i=0; i<LIBMESH_DIM; i++)
83  {
84  if ((*this)(i) < rhs(i))
85  return true;
86  if ((*this)(i) > rhs(i))
87  return false;
88  }
89  return true;
90 }

◆ operator=()

Node & libMesh::Node::operator= ( const Point p)
inline

Assign to a node from a point.

Definition at line 298 of file node.h.

299 {
300  (*this)(0) = p(0);
301 #if LIBMESH_DIM > 1
302  (*this)(1) = p(1);
303 #endif
304 #if LIBMESH_DIM > 2
305  (*this)(2) = p(2);
306 #endif
307 
308  return *this;
309 }

◆ operator==() [1/2]

bool libMesh::Node::operator== ( const Node rhs) const
Returns
true if this node equals rhs, false otherwise.

Definition at line 37 of file node.C.

References libMesh::TypeVector< Real >::operator==().

38 {
39  // Explicitly calling the operator== defined in Point
40  return this->Point::operator==(rhs);
41 }
bool operator==(const TypeVector< Real > &rhs) const
Definition: type_vector.h:993

◆ operator==() [2/2]

bool libMesh::TypeVector< Real >::operator== ( const TypeVector< Real > &  rhs) const
inlineinherited
Returns
true if this(i)==rhs(i) for each component of the vector.
Note
For floating point types T, the function absolute_fuzzy_equals() may be a more appropriate choice.

Definition at line 993 of file type_vector.h.

Referenced by operator==().

994 {
995 #if LIBMESH_DIM == 1
996  return (_coords[0] == rhs._coords[0]);
997 #endif
998 
999 #if LIBMESH_DIM == 2
1000  return (_coords[0] == rhs._coords[0] &&
1001  _coords[1] == rhs._coords[1]);
1002 #endif
1003 
1004 #if LIBMESH_DIM == 3
1005  return (_coords[0] == rhs._coords[0] &&
1006  _coords[1] == rhs._coords[1] &&
1007  _coords[2] == rhs._coords[2]);
1008 #endif
1009 }
Real _coords[LIBMESH_DIM]
The coordinates of the TypeVector.
Definition: type_vector.h:417

◆ operator>() [1/2]

bool libMesh::TypeVector< Complex >::operator> ( const TypeVector< Complex > &  rhs) const
inherited

Definition at line 162 of file type_vector.C.

References std::imag(), and std::real().

163 {
164  for (unsigned int i=0; i<LIBMESH_DIM; i++)
165  {
166  if ((*this)(i).real() > rhs(i).real())
167  return true;
168  if ((*this)(i).real() < rhs(i).real())
169  return false;
170  if ((*this)(i).imag() > rhs(i).imag())
171  return true;
172  if ((*this)(i).imag() < rhs(i).imag())
173  return false;
174  }
175  return false;
176 }
boost::multiprecision::float128 real(const boost::multiprecision::float128 in)
boost::multiprecision::float128 imag(const boost::multiprecision::float128)

◆ operator>() [2/2]

bool libMesh::TypeVector< Real >::operator> ( const TypeVector< Real > &  rhs) const
inherited
Returns
true if this vector is "greater" than rhs.

Useful for sorting. Also used for choosing some arbitrary basis function orientations.

Definition at line 95 of file type_vector.C.

96 {
97  for (unsigned int i=0; i<LIBMESH_DIM; i++)
98  {
99  if ((*this)(i) > rhs(i))
100  return true;
101  if ((*this)(i) < rhs(i))
102  return false;
103  }
104  return false;
105 }

◆ operator>=() [1/2]

bool libMesh::TypeVector< Complex >::operator>= ( const TypeVector< Complex > &  rhs) const
inherited

Definition at line 181 of file type_vector.C.

References std::imag(), and std::real().

182 {
183  for (unsigned int i=0; i<LIBMESH_DIM; i++)
184  {
185  if ((*this)(i).real() > rhs(i).real())
186  return true;
187  if ((*this)(i).real() < rhs(i).real())
188  return false;
189  if ((*this)(i).imag() > rhs(i).imag())
190  return true;
191  if ((*this)(i).imag() < rhs(i).imag())
192  return false;
193  }
194  return true;
195 }
boost::multiprecision::float128 real(const boost::multiprecision::float128 in)
boost::multiprecision::float128 imag(const boost::multiprecision::float128)

◆ operator>=() [2/2]

bool libMesh::TypeVector< Real >::operator>= ( const TypeVector< Real > &  rhs) const
inherited
Returns
true if this vector is >= rhs.

Useful for sorting. Also used for choosing some arbitrary constraint equation directions.

Definition at line 109 of file type_vector.C.

110 {
111  for (unsigned int i=0; i<LIBMESH_DIM; i++)
112  {
113  if ((*this)(i) > rhs(i))
114  return true;
115  if ((*this)(i) < rhs(i))
116  return false;
117  }
118  return true;
119 }

◆ pack_indexing()

void libMesh::DofObject::pack_indexing ( std::back_insert_iterator< std::vector< largest_id_type >>  target) const
inherited

A method for creating packed data from our index buffer - basically a copy with prepended size with our current implementation.

Definition at line 634 of file dof_object.C.

References libMesh::DofObject::_idx_buf, and libMesh::DofObject::old_dof_object.

635 {
636 #ifdef LIBMESH_ENABLE_AMR
637  // We might need to pack old_dof_object too
638  *target++ = (old_dof_object == nullptr) ? 0 : 1;
639 #endif
640 
641  *target++ = _idx_buf.size();
642  std::copy(_idx_buf.begin(), _idx_buf.end(), target);
643 
644 #ifdef LIBMESH_ENABLE_AMR
645  if (old_dof_object)
646  old_dof_object->pack_indexing(target);
647 #endif
648 }
std::unique_ptr< DofObject > old_dof_object
This object on the last mesh.
Definition: dof_object.h:88
index_buffer_t _idx_buf
Definition: dof_object.h:671

◆ packed_indexing_size()

unsigned int libMesh::DofObject::packed_indexing_size ( ) const
inherited

If we pack our indices into an buffer for communications, how many ints do we need?

Definition at line 552 of file dof_object.C.

References libMesh::DofObject::_idx_buf, and libMesh::DofObject::old_dof_object.

Referenced by packed_size().

553 {
554  return
555  cast_int<unsigned int> (
556 #ifdef LIBMESH_ENABLE_AMR
557  ((old_dof_object == nullptr) ? 0 : old_dof_object->packed_indexing_size()) + 2 +
558 #else
559  1 +
560 #endif
561  _idx_buf.size());
562 }
std::unique_ptr< DofObject > old_dof_object
This object on the last mesh.
Definition: dof_object.h:88
index_buffer_t _idx_buf
Definition: dof_object.h:671

◆ packed_size()

unsigned int libMesh::Node::packed_size ( ) const
inline

Definition at line 159 of file node.h.

References libMesh::DofObject::packed_indexing_size(), and libMesh::Real.

160  {
161  const unsigned int header_size = 2;
162 
163  // use "(a+b-1)/b" trick to get a/b to round up
164  static const unsigned int idtypes_per_Real =
165  (sizeof(Real) + sizeof(largest_id_type) - 1) / sizeof(largest_id_type);
166 
167  return header_size + LIBMESH_DIM*idtypes_per_Real +
168  this->packed_indexing_size();
169  }
uint64_t largest_id_type
Definition: id_types.h:148
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
unsigned int packed_indexing_size() const
If we pack our indices into an buffer for communications, how many ints do we need?
Definition: dof_object.C:552

◆ print()

void libMesh::TypeVector< Real >::print ( std::ostream &  os = libMesh::out) const
inherited

Formatted print, by default to libMesh::out.

Definition at line 1166 of file type_vector.h.

1167 {
1168 #if LIBMESH_DIM == 1
1169 
1170  os << "x=" << (*this)(0);
1171 
1172 #endif
1173 #if LIBMESH_DIM == 2
1174 
1175  os << "(x,y)=("
1176  << std::setw(8) << (*this)(0) << ", "
1177  << std::setw(8) << (*this)(1) << ")";
1178 
1179 #endif
1180 #if LIBMESH_DIM == 3
1181 
1182  os << "(x,y,z)=("
1183  << std::setw(8) << (*this)(0) << ", "
1184  << std::setw(8) << (*this)(1) << ", "
1185  << std::setw(8) << (*this)(2) << ")";
1186 #endif
1187 }

◆ print_dof_info()

void libMesh::DofObject::print_dof_info ( ) const
inherited

Print out info for debugging.

Definition at line 662 of file dof_object.C.

References libMesh::DofObject::dof_number(), libMesh::DofObject::id(), libMesh::make_range(), libMesh::DofObject::n_comp(), libMesh::DofObject::n_systems(), libMesh::DofObject::n_vars(), and libMesh::out.

663 {
664  libMesh::out << this->id() << " [ ";
665 
666  for (auto s : make_range(this->n_systems()))
667  {
668  libMesh::out << "s:" << s << " ";
669  for (auto var : make_range(this->n_vars(s)))
670  {
671  libMesh::out << "v:" << var << " ";
672  for (auto comp : make_range(this->n_comp(s,var)))
673  {
674  libMesh::out << "c:" << comp << " dof:" << this->dof_number(s,var,comp) << " ";
675  }
676  }
677  }
678 
679  libMesh::out << "]\n";
680 }
dof_id_type dof_number(const unsigned int s, const unsigned int var, const unsigned int comp) const
Definition: dof_object.h:1008
unsigned int n_comp(const unsigned int s, const unsigned int var) const
Definition: dof_object.h:978
dof_id_type id() const
Definition: dof_object.h:819
unsigned int n_vars(const unsigned int s, const unsigned int vg) const
Definition: dof_object.h:943
unsigned int n_systems() const
Definition: dof_object.h:913
OStreamProxy out
IntRange< T > make_range(T beg, T end)
The 2-parameter make_range() helper function returns an IntRange<T> when both input parameters are of...
Definition: int_range.h:176

◆ print_info() [1/3]

void libMesh::ReferenceCounter::print_info ( std::ostream &  out_stream = libMesh::out)
staticinherited

Prints the reference information, by default to libMesh::out.

Definition at line 81 of file reference_counter.C.

References libMesh::ReferenceCounter::_enable_print_counter, and libMesh::ReferenceCounter::get_info().

Referenced by libMesh::LibMeshInit::~LibMeshInit().

82 {
84  out_stream << ReferenceCounter::get_info();
85 }
static std::string get_info()
Gets a string containing the reference information.
static bool _enable_print_counter
Flag to control whether reference count information is printed when print_info is called...

◆ print_info() [2/3]

void libMesh::ReferenceCounter::print_info ( std::ostream &  out_stream = libMesh::out)
staticinherited

Prints the reference information, by default to libMesh::out.

Definition at line 81 of file reference_counter.C.

References libMesh::ReferenceCounter::_enable_print_counter, and libMesh::ReferenceCounter::get_info().

Referenced by libMesh::LibMeshInit::~LibMeshInit().

82 {
84  out_stream << ReferenceCounter::get_info();
85 }
static std::string get_info()
Gets a string containing the reference information.
static bool _enable_print_counter
Flag to control whether reference count information is printed when print_info is called...

◆ print_info() [3/3]

void libMesh::Node::print_info ( std::ostream &  os = libMesh::out) const

Prints relevant information about the node.

Definition at line 45 of file node.C.

References get_info().

Referenced by libMesh::operator<<().

46 {
47  os << this->get_info()
48  << std::endl;
49 }
std::string get_info() const
Prints relevant information about the node to a string.
Definition: node.C:53

◆ processor_id() [1/3]

processor_id_type libMesh::DofObject::processor_id ( ) const
inlineinherited
Returns
The processor that this DofObject belongs to.

When partitioning and DoF numbering have been performed by libMesh, every current DoF on this DofObject will belong to its processor.

Definition at line 881 of file dof_object.h.

References libMesh::DofObject::_processor_id.

Referenced by NonManifoldTestPartitioner::_do_partition(), libMesh::BoundaryInfo::_find_id_maps(), libMesh::DistributedMesh::add_elem(), libMesh::BoundaryInfo::add_elements(), libMesh::DistributedMesh::add_node(), libMesh::MeshRefinement::add_node(), libMesh::ReplicatedMesh::add_point(), libMesh::DistributedMesh::add_point(), libMesh::RBConstruction::add_scaled_matrix_and_vector(), libMesh::MeshTools::Modification::all_tri(), libMesh::DofMap::allgather_recursive_constraints(), libMesh::Patch::build_around_element(), libMesh::Partitioner::build_graph(), libMesh::InfElemBuilder::build_inf_elem(), libMesh::BoundaryInfo::build_node_list_from_side_list(), libMesh::MeshFunction::check_found_elem(), libMesh::Nemesis_IO_Helper::compute_num_global_nodesets(), libMesh::Nemesis_IO_Helper::compute_num_global_sidesets(), libMesh::GenericProjector< FFunctor, GFunctor, FValue, ProjectionAction >::SubProjector::construct_projection(), libMesh::MeshBase::copy_constraint_rows(), libMesh::ExodusII_IO::copy_nodal_solution(), libMesh::DistributedMesh::delete_elem(), libMesh::MeshCommunication::delete_remote_elements(), libMesh::DofMap::distribute_dofs(), libMesh::DofMap::distribute_local_dofs_node_major(), libMesh::DofMap::distribute_local_dofs_var_major(), libMesh::Elem::Elem(), libMesh::GenericProjector< FFunctor, GFunctor, FValue, ProjectionAction >::SubFunctor::find_dofs_to_send(), libMesh::UnstructuredMesh::find_neighbors(), libMesh::MeshTools::Modification::flatten(), get_info(), libMesh::Elem::get_info(), libMesh::Elem::inherit_data_from(), libMesh::RBEIMConstruction::initialize_qp_data(), libMesh::DistributedMesh::insert_elem(), libMesh::DofObject::invalidate_processor_id(), libMesh::MeshTools::libmesh_assert_consistent_distributed(), libMesh::MeshTools::libmesh_assert_consistent_distributed_nodes(), libMesh::MeshTools::libmesh_assert_parallel_consistent_new_node_procids(), libMesh::MeshTools::libmesh_assert_parallel_consistent_procids< Elem >(), libMesh::MeshTools::libmesh_assert_parallel_consistent_procids< Node >(), libMesh::MeshTools::libmesh_assert_topology_consistent_procids< Elem >(), libMesh::MeshTools::libmesh_assert_valid_amr_elem_ids(), libMesh::MeshTools::libmesh_assert_valid_neighbors(), libMesh::DofMap::local_variable_indices(), libMesh::MeshRefinement::make_coarsening_compatible(), libMesh::MeshCommunication::make_new_node_proc_ids_parallel_consistent(), AugmentSparsityOnInterface::mesh_reinit(), MeshPerElemTest< elem_type >::meshes_equal_enough(), libMesh::PeriodicBoundaries::neighbor(), libMesh::RBEIMEvaluation::node_distribute_bfs(), AugmentSparsityOnNodes::operator()(), AugmentSparsityOnInterface::operator()(), OverlappingCouplingFunctor::operator()(), libMesh::GhostPointNeighbors::operator()(), libMesh::GenericProjector< FFunctor, GFunctor, FValue, ProjectionAction >::SortAndCopy::operator()(), libMesh::GenericProjector< FFunctor, GFunctor, FValue, ProjectionAction >::ProjectVertices::operator()(), libMesh::GenericProjector< FFunctor, GFunctor, FValue, ProjectionAction >::ProjectEdges::operator()(), libMesh::GenericProjector< FFunctor, GFunctor, FValue, ProjectionAction >::ProjectSides::operator()(), libMesh::GenericProjector< FFunctor, GFunctor, FValue, ProjectionAction >::ProjectInteriors::operator()(), libMesh::CompareDofObjectsByPIDAndThenID::operator()(), libMesh::DistributedMesh::own_node(), libMesh::XdrIO::pack_element(), libMesh::LinearPartitioner::partition_range(), libMesh::SFCPartitioner::partition_range(), libMesh::CentroidPartitioner::partition_range(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), libMesh::Polygon::Polygon(), libMesh::Polyhedron::Polyhedron(), libMesh::DofMap::process_mesh_constraint_rows(), libMesh::DofObject::processor_id(), libMesh::CheckpointIO::read_connectivity(), libMesh::SimplexRefiner::refine_via_edges(), libMesh::DistributedMesh::renumber_nodes_and_elements(), libMesh::DofMap::scatter_constraints(), libMesh::Partitioner::set_interface_node_processor_ids_BFS(), libMesh::Partitioner::set_interface_node_processor_ids_linear(), libMesh::Partitioner::set_interface_node_processor_ids_petscpartitioner(), libMesh::Partitioner::set_node_processor_ids(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::Partitioner::set_parent_processor_ids(), ParsedFEMFunctionTest::setUp(), libMesh::Partitioner::single_partition_range(), libMesh::Parallel::sync_dofobject_data_by_id(), libMesh::Parallel::sync_element_data_by_parent_id(), libMesh::Parallel::sync_node_data_by_element_id_once(), MeshFunctionTest::test_bad_gradient_var_with_out_of_mesh_value(), MeshFunctionTest::test_bad_hessian_var_with_out_of_mesh_value(), DefaultCouplingTest::testCoupling(), PointNeighborCouplingTest::testCoupling(), DofObjectTest< Node >::testInvalidateProcId(), EquationSystemsTest::testPostInitAddElem(), DofObjectTest< Node >::testSetProcId(), BoundaryInfoTest::testShellFaceConstraints(), DofObjectTest< Node >::testValidProcId(), libMesh::DTKAdapter::update_variable_values(), NonManifoldGhostingFunctorTest::verify_send_list_entries_helper(), libMesh::GmshIO::write_mesh(), and libMesh::Nemesis_IO_Helper::write_sidesets().

882 {
883  return _processor_id;
884 }
processor_id_type _processor_id
The processor_id of the DofObject.
Definition: dof_object.h:585

◆ processor_id() [2/3]

processor_id_type & libMesh::DofObject::processor_id ( )
inlineinherited
Returns
The processor that this DofObject belongs to as a writable reference.

Definition at line 889 of file dof_object.h.

References libMesh::DofObject::_processor_id.

890 {
891  return _processor_id;
892 }
processor_id_type _processor_id
The processor_id of the DofObject.
Definition: dof_object.h:585

◆ processor_id() [3/3]

void libMesh::DofObject::processor_id ( const processor_id_type  pid)
inlineinherited

Sets the processor_id for this DofObject.

Definition at line 897 of file dof_object.h.

References libMesh::DofObject::processor_id().

898 {
899  this->processor_id() = pid;
900 }
processor_id_type processor_id() const
Definition: dof_object.h:881

◆ relative_fuzzy_equals()

bool libMesh::TypeVector< Real >::relative_fuzzy_equals ( const TypeVector< Real > &  rhs,
Real  tol = TOLERANCE 
) const
inlineinherited
Returns
true if two vectors are equal to within a relative tolerance of tol.

Definition at line 984 of file type_vector.h.

References libMesh::relative_fuzzy_equals().

985 {
986  return libMesh::relative_fuzzy_equals(*this, rhs, tol);
987 }
bool relative_fuzzy_equals(const T &var1, const T2 &var2, const Real tol=TOLERANCE *TOLERANCE)
Function to check whether two variables are equal within a relative tolerance.
Definition: fuzzy_equals.h:78

◆ set_buffer()

void libMesh::DofObject::set_buffer ( const std::vector< dof_id_type > &  buf)
inlineinherited

Definition at line 708 of file dof_object.h.

References libMesh::DofObject::_idx_buf.

Referenced by DofObjectTest< Node >::testJensEftangBug().

709  { _idx_buf = buf; }
index_buffer_t _idx_buf
Definition: dof_object.h:671

◆ set_dof_number()

void libMesh::DofObject::set_dof_number ( const unsigned int  s,
const unsigned int  var,
const unsigned int  comp,
const dof_id_type  dn 
)
inherited

Sets the global degree of freedom number for variable var, component comp for system s associated with this DofObject.

Definition at line 446 of file dof_object.C.

References libMesh::DofObject::_idx_buf, libMesh::DofObject::dof_number(), libMesh::DofObject::invalid_id, libMesh::libmesh_assert(), libMesh::DofObject::n_comp(), libMesh::DofObject::n_comp_group(), libMesh::DofObject::n_systems(), libMesh::DofObject::n_vars(), libMesh::DofObject::start_idx(), libMesh::DofObject::system_var_to_vg_var(), and libMesh::DofObject::var_to_vg().

450 {
451  libmesh_assert_less (s, this->n_systems());
452  libmesh_assert_less (var, this->n_vars(s));
453  libmesh_assert_less (comp, this->n_comp(s,var));
454 
455  const unsigned int
456  vg = this->var_to_vg(s,var),
457 #ifndef NDEBUG
458  ncg = this->n_comp_group(s,vg),
459 #endif
460  vig = this->system_var_to_vg_var(s,vg,var),
461  start_idx_sys = this->start_idx(s);
462 
463  libmesh_assert_less ((start_idx_sys + 2*vg + 1), _idx_buf.size());
464 
465  dof_id_type & base_idx = _idx_buf[start_idx_sys + 2*vg + 1];
466 
467  // We intend to change all dof numbers together or not at all
468  if (comp || vig)
469  libmesh_assert ((dn == invalid_id && base_idx == invalid_id) ||
470  (dn == base_idx + vig*ncg + comp));
471 
472  // only explicitly store the base index for vig==0, comp==0
473  else
474  base_idx = dn;
475 
476  libmesh_assert_equal_to (this->dof_number(s, var, comp), dn);
477 }
unsigned int system_var_to_vg_var(const unsigned int s, const unsigned int vg, const unsigned int var) const
Utility function - for variable var in system s, figure out what variable group it lives in...
Definition: dof_object.h:1335
dof_id_type dof_number(const unsigned int s, const unsigned int var, const unsigned int comp) const
Definition: dof_object.h:1008
unsigned int n_comp(const unsigned int s, const unsigned int var) const
Definition: dof_object.h:978
unsigned int var_to_vg(const unsigned int s, const unsigned int var) const
Utility function - for variable var in system s, figure out what variable group it lives in...
Definition: dof_object.h:1317
static constexpr dof_id_type invalid_id
An invalid id to distinguish an uninitialized DofObject.
Definition: dof_object.h:473
unsigned int n_vars(const unsigned int s, const unsigned int vg) const
Definition: dof_object.h:943
unsigned int n_systems() const
Definition: dof_object.h:913
libmesh_assert(ctx)
unsigned int start_idx(const unsigned int s) const
The starting index for system s.
Definition: dof_object.h:1225
index_buffer_t _idx_buf
Definition: dof_object.h:671
unsigned int n_comp_group(const unsigned int s, const unsigned int vg) const
Definition: dof_object.h:991
uint8_t dof_id_type
Definition: id_types.h:67

◆ set_extra_datum()

template<typename T >
void libMesh::DofObject::set_extra_datum ( const unsigned int  index,
const T  value 
)
inlineinherited

Sets the value on this object of the extra datum associated with index, which should have been obtained via a call to MeshBase::add_elem_datum or MeshBase::add_node_datum using the same type T.

Definition at line 1102 of file dof_object.h.

References libMesh::DofObject::_idx_buf, libMesh::DofObject::n_extra_integers(), libMesh::DofObject::n_pseudo_systems(), libMesh::DofObject::start_idx_ints(), and value.

Referenced by libMesh::MeshTools::Modification::all_rbb(), libMesh::ExodusII_IO::read(), libMesh::DynaIO::read_mesh(), and DofObjectTest< Node >::testAddExtraData().

1104 {
1105 #ifndef NDEBUG
1106  const unsigned int n_more_integers = (sizeof(T)-1)/sizeof(dof_id_type);
1107 #endif
1108  libmesh_assert_less(index+n_more_integers, this->n_extra_integers());
1109  libmesh_assert_less(this->n_pseudo_systems(), _idx_buf.size());
1110 
1111  const unsigned int start_idx_i = this->start_idx_ints();
1112 
1113  libmesh_assert_less(start_idx_i+index+n_more_integers, _idx_buf.size());
1114  std::memcpy(&_idx_buf[start_idx_i+index], &value, sizeof(T));
1115 }
unsigned int n_pseudo_systems() const
Definition: dof_object.h:923
unsigned int start_idx_ints() const
The starting index for an extra_integers pseudosystem.
Definition: dof_object.h:1249
static const bool value
Definition: xdr_io.C:55
unsigned int n_extra_integers() const
Returns how many extra integers are associated to the DofObject.
Definition: dof_object.h:1146
index_buffer_t _idx_buf
Definition: dof_object.h:671
uint8_t dof_id_type
Definition: id_types.h:67

◆ set_extra_integer()

void libMesh::DofObject::set_extra_integer ( const unsigned int  index,
const dof_id_type  value 
)
inlineinherited

Sets the value on this object of the extra integer associated with index, which should have been obtained via a call to MeshBase::add_elem_integer or MeshBase::add_node_integer.

Definition at line 1062 of file dof_object.h.

References libMesh::DofObject::_idx_buf, libMesh::DofObject::n_extra_integers(), libMesh::DofObject::n_pseudo_systems(), libMesh::DofObject::start_idx_ints(), and value.

Referenced by libMesh::SyncElementIntegers::act_on_data(), libMesh::BoundaryInfo::add_elements(), libMesh::UnstructuredMesh::all_first_order(), libMesh::UnstructuredMesh::create_submesh(), libMesh::ExodusII_IO::read(), libMesh::CheckpointIO::read_connectivity(), libMesh::CheckpointIO::read_nodes(), libMesh::XdrIO::read_serialized_connectivity(), libMesh::XdrIO::read_serialized_nodes(), libMesh::Elem::refine(), DofObjectTest< Node >::testAddExtraData(), DofObjectTest< Node >::testAddSystemExtraInts(), DofObjectTest< Node >::testSetNSystemsExtraInts(), and DofObjectTest< Node >::testSetNVariableGroupsExtraInts().

1064 {
1065  libmesh_assert_less(index, this->n_extra_integers());
1066  libmesh_assert_less(this->n_pseudo_systems(), _idx_buf.size());
1067 
1068  const unsigned int start_idx_i = this->start_idx_ints();
1069 
1070  libmesh_assert_less(start_idx_i+index, _idx_buf.size());
1071  _idx_buf[start_idx_i+index] = value;
1072 }
unsigned int n_pseudo_systems() const
Definition: dof_object.h:923
unsigned int start_idx_ints() const
The starting index for an extra_integers pseudosystem.
Definition: dof_object.h:1249
static const bool value
Definition: xdr_io.C:55
unsigned int n_extra_integers() const
Returns how many extra integers are associated to the DofObject.
Definition: dof_object.h:1146
index_buffer_t _idx_buf
Definition: dof_object.h:671

◆ set_id() [1/2]

dof_id_type & libMesh::DofObject::set_id ( )
inlineinherited

◆ set_id() [2/2]

void libMesh::DofObject::set_id ( const dof_id_type  dofid)
inlineinherited

Sets the id for this DofObject.

Definition at line 192 of file dof_object.h.

References libMesh::DofObject::set_id().

193  { this->set_id() = dofid; }
dof_id_type & set_id()
Definition: dof_object.h:827

◆ set_n_comp()

void libMesh::DofObject::set_n_comp ( const unsigned int  s,
const unsigned int  var,
const unsigned int  ncomp 
)
inherited

Sets the number of components for Variable var of system s associated with this DofObject.

Definition at line 377 of file dof_object.C.

References libMesh::DofObject::n_systems(), libMesh::DofObject::n_vars(), libMesh::DofObject::set_n_comp_group(), and libMesh::DofObject::var_to_vg().

380 {
381  libmesh_assert_less (s, this->n_systems());
382  libmesh_assert_less (var, this->n_vars(s));
383 
384  this->set_n_comp_group(s, this->var_to_vg(s,var), ncomp);
385 }
unsigned int var_to_vg(const unsigned int s, const unsigned int var) const
Utility function - for variable var in system s, figure out what variable group it lives in...
Definition: dof_object.h:1317
unsigned int n_vars(const unsigned int s, const unsigned int vg) const
Definition: dof_object.h:943
unsigned int n_systems() const
Definition: dof_object.h:913
void set_n_comp_group(const unsigned int s, const unsigned int vg, const unsigned int ncomp)
Sets the number of components for VariableGroup vg of system s associated with this DofObject...
Definition: dof_object.C:389

◆ set_n_comp_group()

void libMesh::DofObject::set_n_comp_group ( const unsigned int  s,
const unsigned int  vg,
const unsigned int  ncomp 
)
inherited

Sets the number of components for VariableGroup vg of system s associated with this DofObject.

Definition at line 389 of file dof_object.C.

References libMesh::DofObject::_idx_buf, libMesh::DofObject::invalid_id, libMesh::DofObject::n_comp_group(), libMesh::DofObject::n_systems(), libMesh::DofObject::n_var_groups(), libMesh::DofObject::n_vars(), libMesh::DofObject::ncv_magic, and libMesh::DofObject::start_idx().

Referenced by libMesh::DofMap::reinit(), libMesh::DofObject::set_n_comp(), libMesh::DofObject::set_n_vars_per_group(), libMesh::DofMap::set_nonlocal_dof_objects(), and DofObjectTest< Node >::testManualDofCalculation().

392 {
393  libmesh_assert_less (s, this->n_systems());
394  libmesh_assert_less (vg, this->n_var_groups(s));
395 
396  // Check for trivial return
397  if (ncomp == this->n_comp_group(s,vg)) return;
398 
399 #ifndef NDEBUG
400  if (ncomp >= ncv_magic)
401  {
402  const index_t ncvm = ncv_magic;
403  libmesh_error_msg("ERROR: ncomp must be less than DofObject::ncv_magic!\n" \
404  << "ncomp = " \
405  << ncomp \
406  << ", ncv_magic = " \
407  << ncvm \
408  << "\nrecompile and try again!");
409  }
410 #endif
411 
412  const unsigned int
413  start_idx_sys = this->start_idx(s),
414  n_vars_group = this->n_vars(s,vg),
415  base_offset = start_idx_sys + 2*vg;
416 
417  libmesh_assert_less ((base_offset + 1), _idx_buf.size());
418 
419  // if (ncomp)
420  // libMesh::out << "s,vg,ncomp="
421  // << s << ","
422  // << vg << ","
423  // << ncomp << '\n';
424 
425  // set the number of components, maintaining the number
426  // of variables in the group
427  _idx_buf[base_offset] = ncv_magic*n_vars_group + ncomp;
428 
429  // We use (invalid_id - 1) to signify no
430  // components for this object
431  _idx_buf[base_offset + 1] = (ncomp == 0) ? invalid_id - 1 : invalid_id;
432 
433  // this->debug_buffer();
434  // libMesh::out << "s,vg = " << s << "," << vg << '\n'
435  // << "base_offset=" << base_offset << '\n'
436  // << "this->n_comp(s,vg)=" << this->n_comp(s,vg) << '\n'
437  // << "this->n_comp_group(s,vg)=" << this->n_comp_group(s,vg) << '\n'
438  // << "this->n_vars(s,vg)=" << this->n_vars(s,vg) << '\n'
439  // << "this->n_var_groups(s)=" << this->n_var_groups(s) << '\n';
440 
441  libmesh_assert_equal_to (ncomp, this->n_comp_group(s,vg));
442 }
unsigned int n_var_groups(const unsigned int s) const
Definition: dof_object.h:933
dof_id_type index_t
DoF index information.
Definition: dof_object.h:669
static constexpr dof_id_type invalid_id
An invalid id to distinguish an uninitialized DofObject.
Definition: dof_object.h:473
unsigned int n_vars(const unsigned int s, const unsigned int vg) const
Definition: dof_object.h:943
unsigned int n_systems() const
Definition: dof_object.h:913
unsigned int start_idx(const unsigned int s) const
The starting index for system s.
Definition: dof_object.h:1225
index_buffer_t _idx_buf
Definition: dof_object.h:671
unsigned int n_comp_group(const unsigned int s, const unsigned int vg) const
Definition: dof_object.h:991
static const index_t ncv_magic
Above we introduced the chimera ncv, which is a hybrid of the form ncv = ncv_magic*nv + nc where nv a...
Definition: dof_object.h:682

◆ set_n_systems()

void libMesh::DofObject::set_n_systems ( const unsigned int  s)
inherited

Sets the number of systems for this DofObject.

If this number is a change, also clears all variable count and DoF indexing associated with this DofObject.

If any extra integers are associated with this DofObject, their count and values are unchanged.

Definition at line 142 of file dof_object.C.

References libMesh::DofObject::_idx_buf, libMesh::make_range(), libMesh::DofObject::n_extra_integers(), libMesh::DofObject::n_systems(), libMesh::DofObject::n_var_groups(), libMesh::DofObject::n_vars(), and libMesh::DofObject::start_idx_ints().

Referenced by libMesh::DofObject::add_system(), libMesh::DofObject::clear_dofs(), libMesh::Elem::refine(), DofObjectTest< Node >::testManualDofCalculation(), DofObjectTest< Node >::testSetNSystems(), DofObjectTest< Node >::testSetNSystemsExtraInts(), DofObjectTest< Node >::testSetNVariableGroups(), and DofObjectTest< Node >::testSetNVariableGroupsExtraInts().

143 {
144  const unsigned int old_ns = this->n_systems();
145 
146  // Check for trivial return
147  if (ns == old_ns)
148  return;
149 
150  const unsigned int nei = this->n_extra_integers();
151  const dof_id_type header_size = ns + bool(nei);
152  const dof_id_type hdr = nei ?
153  static_cast<dof_id_type>(-static_cast<std::ptrdiff_t>(header_size))
154  : header_size;
155  index_buffer_t new_buf(header_size + nei, hdr);
156  if (nei)
157  {
158  const unsigned int start_idx_ints = old_ns ?
159  cast_int<unsigned int>(_idx_buf[old_ns]) :
160  1;
161  libmesh_assert_less(start_idx_ints, _idx_buf.size());
162  std::copy(_idx_buf.begin()+start_idx_ints,
163  _idx_buf.end(),
164  new_buf.begin()+header_size);
165  if (ns)
166  std::fill(new_buf.begin()+1, new_buf.begin()+ns+1, ns+1);
167  }
168 
169  // vector swap trick to force deallocation when shrinking
170  new_buf.swap(_idx_buf);
171 
172 #ifdef DEBUG
173  libmesh_assert_equal_to(nei, this->n_extra_integers());
174 
175  // check that all systems now exist and that they have 0 size
176  libmesh_assert_equal_to (ns, this->n_systems());
177  for (auto s : make_range(this->n_systems()))
178  {
179  libmesh_assert_equal_to (this->n_vars(s), 0);
180  libmesh_assert_equal_to (this->n_var_groups(s), 0);
181  }
182 #endif
183 }
unsigned int n_var_groups(const unsigned int s) const
Definition: dof_object.h:933
unsigned int start_idx_ints() const
The starting index for an extra_integers pseudosystem.
Definition: dof_object.h:1249
unsigned int n_vars(const unsigned int s, const unsigned int vg) const
Definition: dof_object.h:943
unsigned int n_systems() const
Definition: dof_object.h:913
std::vector< index_t > index_buffer_t
Definition: dof_object.h:670
IntRange< T > make_range(T beg, T end)
The 2-parameter make_range() helper function returns an IntRange<T> when both input parameters are of...
Definition: int_range.h:176
unsigned int n_extra_integers() const
Returns how many extra integers are associated to the DofObject.
Definition: dof_object.h:1146
index_buffer_t _idx_buf
Definition: dof_object.h:671
uint8_t dof_id_type
Definition: id_types.h:67

◆ set_n_vars_per_group()

void libMesh::DofObject::set_n_vars_per_group ( const unsigned int  s,
const std::vector< unsigned int > &  nvpg 
)
inherited

Sets number of variables in each group associated with system s for this DofObject.

Implicit in this is also setting the number of VariableGroup variable groups for the system. Has the effect of setting the number of components to 0 even when called even with (nvg == this->n_var_groups(s)).

Definition at line 239 of file dof_object.C.

References libMesh::DofObject::_idx_buf, libMesh::DofObject::end_idx(), libMesh::DofObject::get_extra_integer(), libMesh::DofObject::has_extra_integers(), libMesh::DofObject::invalid_id, libMesh::make_range(), libMesh::DofObject::n_comp(), libMesh::DofObject::n_comp_group(), libMesh::DofObject::n_extra_integers(), libMesh::DofObject::n_systems(), libMesh::DofObject::n_var_groups(), libMesh::DofObject::n_vars(), libMesh::DofObject::ncv_magic, libMesh::DofObject::set_n_comp_group(), and libMesh::DofObject::start_idx().

Referenced by DofObjectTest< Node >::testManualDofCalculation(), DofObjectTest< Node >::testSetNVariableGroups(), and DofObjectTest< Node >::testSetNVariableGroupsExtraInts().

241 {
242  const unsigned int n_sys = this->n_systems();
243 
244  libmesh_assert_less (s, n_sys);
245 
246  // number of variable groups for this system - inferred
247  const unsigned int nvg = cast_int<unsigned int>(nvpg.size());
248 
249  // BSK - note that for compatibility with the previous implementation
250  // calling this method when (nvars == this->n_vars()) requires that
251  // we invalidate the DOF indices and set the number of components to 0.
252  // Note this was a bit of a surprise to me - there was no quick return in
253  // the old method, which caused removal and readdition of the DOF indices
254  // even in the case of (nvars == this->n_vars()), resulting in n_comp(s,v)
255  // implicitly becoming 0 regardless of any previous value.
256  // quick return?
257  if (nvg == this->n_var_groups(s))
258  {
259  for (unsigned int vg=0; vg<nvg; vg++)
260  {
261  this->set_n_comp_group(s,vg,0);
262  libmesh_assert_equal_to (this->n_vars(s,vg), nvpg[vg]);
263  }
264  return;
265  }
266 
267  const bool hei = this->has_extra_integers();
268 
269  // since there is ample opportunity to screw up other systems, let us
270  // cache their current sizes and later assert that they are unchanged.
271 #ifdef DEBUG
272  const unsigned int nei = this->n_extra_integers();
273 
274  DofObject::index_buffer_t old_system_sizes, old_extra_integers;
275  old_system_sizes.reserve(n_sys);
276  old_extra_integers.reserve(nei);
277 
278  for (unsigned int s_ctr=0; s_ctr<n_sys; s_ctr++)
279  old_system_sizes.push_back(this->n_var_groups(s_ctr));
280 
281  for (unsigned int ei=0; ei != nei; ++ei)
282  old_extra_integers.push_back(this->get_extra_integer(ei));
283 #endif
284 
285  // remove current indices if we have some
286  if (this->n_var_groups(s) != 0)
287  {
288  const unsigned int old_nvg_s = this->n_var_groups(s);
289 
290  DofObject::index_buffer_t::iterator
291  it = _idx_buf.begin(),
292  end = _idx_buf.begin();
293 
294  std::advance(it, this->start_idx(s));
295  std::advance(end, this->end_idx(s));
296  _idx_buf.erase(it,end);
297 
298  for (unsigned int ctr=(s+1); ctr<n_sys; ctr++)
299  _idx_buf[ctr] -= 2*old_nvg_s;
300 
301  if (hei)
302  _idx_buf[n_sys] -= 2*old_nvg_s;
303  }
304 
305  // better not have any now!
306  libmesh_assert_equal_to (this->n_var_groups(s), 0);
307 
308  // Make sure we didn't screw up any of our sizes!
309 #ifdef DEBUG
310  for (auto s_ctr : make_range(this->n_systems()))
311  if (s_ctr != s)
312  libmesh_assert_equal_to (this->n_var_groups(s_ctr), old_system_sizes[s_ctr]);
313 
314  libmesh_assert_equal_to (nei, this->n_extra_integers());
315 
316  for (unsigned int ei=0; ei != nei; ++ei)
317  libmesh_assert_equal_to(old_extra_integers[ei], this->get_extra_integer(ei));
318 #endif
319 
320  // OK, if the user requested 0 that is what we have
321  if (nvg == 0)
322  return;
323 
324  {
325  // array to hold new indices
326  DofObject::index_buffer_t var_idxs(2*nvg);
327  for (unsigned int vg=0; vg<nvg; vg++)
328  {
329  var_idxs[2*vg ] = ncv_magic*nvpg[vg] + 0;
330  var_idxs[2*vg + 1] = invalid_id - 1;
331  }
332 
333  DofObject::index_buffer_t::iterator it = _idx_buf.begin();
334  std::advance(it, this->end_idx(s));
335  _idx_buf.insert(it, var_idxs.begin(), var_idxs.end());
336 
337  for (unsigned int ctr=(s+1); ctr<n_sys; ctr++)
338  _idx_buf[ctr] += 2*nvg;
339 
340  if (hei)
341  _idx_buf[n_sys] += 2*nvg;
342 
343  // resize _idx_buf to fit so no memory is wasted.
345  }
346 
347  libmesh_assert_equal_to (nvg, this->n_var_groups(s));
348 
349 #ifdef DEBUG
350 
351  libmesh_assert_equal_to (this->n_var_groups(s), nvpg.size());
352 
353  for (auto vg : make_range(this->n_var_groups(s)))
354  {
355  libmesh_assert_equal_to (this->n_vars(s,vg), nvpg[vg]);
356  libmesh_assert_equal_to (this->n_comp_group(s,vg), 0);
357  }
358 
359  for (auto v : make_range(this->n_vars(s)))
360  libmesh_assert_equal_to (this->n_comp(s,v), 0);
361 
362  // again, all other system sizes should be unchanged!
363  for (auto s_ctr : make_range(this->n_systems()))
364  if (s_ctr != s)
365  libmesh_assert_equal_to (this->n_var_groups(s_ctr), old_system_sizes[s_ctr]);
366 
367  // Extra integers count and values should also be unchanged!
368  libmesh_assert_equal_to (nei, this->n_extra_integers());
369 
370  for (unsigned int ei=0; ei != nei; ++ei)
371  libmesh_assert_equal_to(old_extra_integers[ei], this->get_extra_integer(ei));
372 #endif
373 }
unsigned int n_comp(const unsigned int s, const unsigned int var) const
Definition: dof_object.h:978
unsigned int n_var_groups(const unsigned int s) const
Definition: dof_object.h:933
unsigned int end_idx(const unsigned int s) const
The ending index for system s.
Definition: dof_object.h:1236
static constexpr dof_id_type invalid_id
An invalid id to distinguish an uninitialized DofObject.
Definition: dof_object.h:473
unsigned int n_vars(const unsigned int s, const unsigned int vg) const
Definition: dof_object.h:943
unsigned int n_systems() const
Definition: dof_object.h:913
bool has_extra_integers() const
Returns whether extra integers are associated to the DofObject.
Definition: dof_object.h:1164
std::vector< index_t > index_buffer_t
Definition: dof_object.h:670
void set_n_comp_group(const unsigned int s, const unsigned int vg, const unsigned int ncomp)
Sets the number of components for VariableGroup vg of system s associated with this DofObject...
Definition: dof_object.C:389
unsigned int start_idx(const unsigned int s) const
The starting index for system s.
Definition: dof_object.h:1225
IntRange< T > make_range(T beg, T end)
The 2-parameter make_range() helper function returns an IntRange<T> when both input parameters are of...
Definition: int_range.h:176
unsigned int n_extra_integers() const
Returns how many extra integers are associated to the DofObject.
Definition: dof_object.h:1146
index_buffer_t _idx_buf
Definition: dof_object.h:671
unsigned int n_comp_group(const unsigned int s, const unsigned int vg) const
Definition: dof_object.h:991
dof_id_type get_extra_integer(const unsigned int index) const
Gets the value on this object of the extra integer associated with index, which should have been obta...
Definition: dof_object.h:1078
static const index_t ncv_magic
Above we introduced the chimera ncv, which is a hybrid of the form ncv = ncv_magic*nv + nc where nv a...
Definition: dof_object.h:682

◆ set_old_dof_object()

void libMesh::DofObject::set_old_dof_object ( )
inherited

Sets the old_dof_object to a copy of this.

Definition at line 127 of file dof_object.C.

References libMesh::DofObject::clear_old_dof_object(), libMesh::DofObject::construct(), libMesh::libmesh_assert(), and libMesh::DofObject::old_dof_object.

128 {
129  this->clear_old_dof_object();
130 
132 
133  // Make a new DofObject, assign a copy of \p this.
134  // Make sure the copy ctor for DofObject works!!
135  this->old_dof_object = this->construct(this);
136 }
std::unique_ptr< DofObject > construct(const DofObject *other=nullptr)
Convenient factory function that calls either the (deep) copy constructor or the default constructor ...
Definition: dof_object.h:732
void clear_old_dof_object()
Sets the old_dof_object to nullptr.
Definition: dof_object.C:120
libmesh_assert(ctx)
std::unique_ptr< DofObject > old_dof_object
This object on the last mesh.
Definition: dof_object.h:88

◆ set_unique_id()

void libMesh::DofObject::set_unique_id ( unique_id_type  new_id)
inlineinherited

◆ set_valence()

void libMesh::Node::set_valence ( unsigned int  val)
inline

Sets the number of nodes connected with this node.

Definition at line 355 of file node.h.

References _valence.

356 {
357  _valence = cast_int<valence_idx_t>(val);
358 }
valence_idx_t _valence
The number of nodes connected with this node.
Definition: node.h:219

◆ set_vg_dof_base()

void libMesh::DofObject::set_vg_dof_base ( const unsigned int  s,
const unsigned int  vg,
const dof_id_type  db 
)
inlineinherited

VariableGroup DoF indices are indexed as id = base + var_in_vg*ncomp + comp This method allows for direct access to the base.

Definition at line 1273 of file dof_object.h.

References libMesh::DofObject::_idx_buf, libMesh::DofObject::n_systems(), libMesh::DofObject::n_var_groups(), libMesh::DofObject::start_idx(), and libMesh::DofObject::vg_dof_base().

Referenced by libMesh::DofMap::distribute_local_dofs_node_major(), libMesh::DofMap::distribute_local_dofs_var_major(), libMesh::DofObject::invalidate_dofs(), libMesh::DofMap::reinit(), libMesh::DofMap::set_nonlocal_dof_objects(), and DofObjectTest< Node >::testManualDofCalculation().

1276 {
1277  libmesh_assert_less (s, this->n_systems());
1278  libmesh_assert_less (vg, this->n_var_groups(s));
1279 
1280  const unsigned int
1281  start_idx_sys = this->start_idx(s);
1282 
1283  libmesh_assert_less ((start_idx_sys + 2*vg + 1), _idx_buf.size());
1284 
1285  _idx_buf[start_idx_sys + 2*vg + 1] = db;
1286 
1287  libmesh_assert_equal_to (this->vg_dof_base(s,vg), db);
1288 }
dof_id_type vg_dof_base(const unsigned int s, const unsigned int vg) const
VariableGroup DoF indices are indexed as id = base + var_in_vg*ncomp + comp This method allows for di...
Definition: dof_object.h:1293
unsigned int n_var_groups(const unsigned int s) const
Definition: dof_object.h:933
unsigned int n_systems() const
Definition: dof_object.h:913
unsigned int start_idx(const unsigned int s) const
The starting index for system s.
Definition: dof_object.h:1225
index_buffer_t _idx_buf
Definition: dof_object.h:671

◆ slice() [1/2]

const Real & libMesh::TypeVector< Real >::slice ( const unsigned int  i) const
inlineinherited

Definition at line 160 of file type_vector.h.

160 { return (*this)(i); }

◆ slice() [2/2]

Real & libMesh::TypeVector< Real >::slice ( const unsigned int  i)
inlineinherited

Definition at line 166 of file type_vector.h.

166 { return (*this)(i); }

◆ subtract()

void libMesh::TypeVector< Real >::subtract ( const TypeVector< T2 > &  p)
inlineinherited

Subtract from this vector without creating a temporary.

Definition at line 692 of file type_vector.h.

693 {
694  for (unsigned int i=0; i<LIBMESH_DIM; i++)
695  _coords[i] -= p._coords[i];
696 }
Real _coords[LIBMESH_DIM]
The coordinates of the TypeVector.
Definition: type_vector.h:417

◆ subtract_scaled()

void libMesh::TypeVector< Real >::subtract_scaled ( const TypeVector< T2 > &  p,
const Real &  factor 
)
inlineinherited

Subtract a scaled value from this vector without creating a temporary.

Definition at line 703 of file type_vector.h.

704 {
705  for (unsigned int i=0; i<LIBMESH_DIM; i++)
706  _coords[i] -= factor*p(i);
707 }
Real _coords[LIBMESH_DIM]
The coordinates of the TypeVector.
Definition: type_vector.h:417

◆ unique_id()

unique_id_type libMesh::DofObject::unique_id ( ) const
inlineinherited
Returns
The globally unique_id for this DofObject

Definition at line 835 of file dof_object.h.

References libMesh::DofObject::_unique_id, libMesh::DofObject::invalid_unique_id, libMesh::libmesh_assert(), and libMesh::DofObject::valid_unique_id().

Referenced by libMesh::ReplicatedMesh::add_elem(), libMesh::DistributedMesh::add_elem(), libMesh::ReplicatedMesh::add_node(), libMesh::DistributedMesh::add_node(), libMesh::ReplicatedMesh::add_point(), libMesh::MeshTools::Modification::all_tri(), libMesh::C0Polyhedron::disconnected_clone(), libMesh::Elem::disconnected_clone(), libMesh::MeshTools::Modification::flatten(), libMesh::Elem::get_info(), libMesh::ReplicatedMesh::insert_elem(), libMesh::DistributedMesh::insert_elem(), libMesh::XdrIO::pack_element(), libMesh::ExodusII_IO::read_elemental_variable(), MeshInputTest::testExodusSetNodeUniqueIdsFromMaps_implementation(), SlitMeshRefinedSystemTest::testRestart(), libMesh::ExodusII_IO_Helper::write_elements(), libMesh::ExodusII_IO_Helper::write_nodal_coordinates(), and libMesh::XdrIO::write_serialized_nodes().

836 {
837 #ifdef LIBMESH_ENABLE_UNIQUE_ID
839  return _unique_id;
840 #else
841  return invalid_unique_id;
842 #endif
843 }
static constexpr unique_id_type invalid_unique_id
An invalid unique_id to distinguish an uninitialized DofObject.
Definition: dof_object.h:478
unique_id_type _unique_id
A globally unique id, guaranteed not to change as the mesh is repartitioned or adapted.
Definition: dof_object.h:568
libmesh_assert(ctx)
bool valid_unique_id() const
Definition: dof_object.h:869

◆ unit()

TypeVector< Real > libMesh::TypeVector< Real >::unit ( ) const
inlineinherited
Returns
A unit vector in the direction of *this.

Definition at line 1141 of file type_vector.h.

References std::norm().

1142 {
1143 
1144  auto && length = norm();
1145 
1146  libmesh_assert_not_equal_to (length, static_cast<Real>(0.));
1147 
1148 #if LIBMESH_DIM == 1
1149  return TypeVector<T>(_coords[0]/length);
1150 #endif
1151 
1152 #if LIBMESH_DIM == 2
1153  return TypeVector<T>(_coords[0]/length,
1154  _coords[1]/length);
1155 #endif
1156 
1157 #if LIBMESH_DIM == 3
1158  return TypeVector<T>(_coords[0]/length,
1159  _coords[1]/length,
1160  _coords[2]/length);
1161 #endif
1162 
1163 }
Real _coords[LIBMESH_DIM]
The coordinates of the TypeVector.
Definition: type_vector.h:417

◆ unpack_indexing()

void libMesh::DofObject::unpack_indexing ( std::vector< largest_id_type >::const_iterator  begin)
inherited

A method for creating our index buffer from packed data - basically with our current implementation we investigate the size term and then copy.

Definition at line 587 of file dof_object.C.

References libMesh::DofObject::_idx_buf, libMesh::DofObject::clear_old_dof_object(), libMesh::DofObject::construct(), libMesh::libmesh_assert(), and libMesh::DofObject::old_dof_object.

588 {
589  _idx_buf.clear();
590 
591 #ifdef LIBMESH_ENABLE_AMR
592  this->clear_old_dof_object();
593  const bool has_old_dof_object = cast_int<bool>(*begin++);
594 #endif
595 
596  const largest_id_type size = *begin++;
597  _idx_buf.reserve(size);
598  std::copy(begin, begin+size, back_inserter(_idx_buf));
599 
600  // Check as best we can for internal consistency now
601  libmesh_assert(_idx_buf.empty() ||
602  (std::abs(dof_id_signed_type(_idx_buf[0])) <=
603  cast_int<dof_id_signed_type>(_idx_buf.size())));
604 #ifdef DEBUG
605  if (!_idx_buf.empty())
606  {
607  const int hdr = cast_int<int>(dof_id_signed_type(_idx_buf[0]));
608  const unsigned int ns = hdr >= 0 ? hdr : (-hdr-1);
609  for (unsigned int i=1; i < ns; ++i)
610  {
611  if (hdr > 0 || i > 1)
612  libmesh_assert_greater_equal (_idx_buf[i], _idx_buf[i-1]);
613  else
614  libmesh_assert_greater_equal (_idx_buf[i], ns);
615  libmesh_assert_equal_to ((_idx_buf[i] - _idx_buf[i-1])%2, 0);
616  libmesh_assert_less_equal (_idx_buf[i], _idx_buf.size());
617  }
618  if (hdr < 0 && ns > 0)
619  libmesh_assert_less_equal(_idx_buf[ns], _idx_buf.size());
620  }
621 #endif
622 
623 #ifdef LIBMESH_ENABLE_AMR
624  if (has_old_dof_object)
625  {
626  this->old_dof_object = this->construct();
627  this->old_dof_object->unpack_indexing(begin+size);
628  }
629 #endif
630 }
std::unique_ptr< DofObject > construct(const DofObject *other=nullptr)
Convenient factory function that calls either the (deep) copy constructor or the default constructor ...
Definition: dof_object.h:732
uint64_t largest_id_type
Definition: id_types.h:148
void clear_old_dof_object()
Sets the old_dof_object to nullptr.
Definition: dof_object.C:120
libmesh_assert(ctx)
int8_t dof_id_signed_type
Definition: id_types.h:68
std::unique_ptr< DofObject > old_dof_object
This object on the last mesh.
Definition: dof_object.h:88
index_buffer_t _idx_buf
Definition: dof_object.h:671

◆ unpackable_indexing_size()

unsigned int libMesh::DofObject::unpackable_indexing_size ( std::vector< largest_id_type >::const_iterator  begin)
staticinherited

If we have indices packed into an buffer for communications, how much of that buffer applies to this dof object?

Definition at line 567 of file dof_object.C.

568 {
569 #ifdef LIBMESH_ENABLE_AMR
570  const bool has_old_dof_object = cast_int<bool>(*begin++);
571 
572  static const int dof_header_size = 2;
573 #else
574  static const bool has_old_dof_object = false;
575  static const int dof_header_size = 1;
576 #endif
577 
578  const largest_id_type this_indexing_size = *begin++;
579 
580  return cast_int<unsigned int>
581  (dof_header_size + this_indexing_size +
582  (has_old_dof_object ?
583  unpackable_indexing_size(begin+this_indexing_size) : 0));
584 }
static unsigned int unpackable_indexing_size(std::vector< largest_id_type >::const_iterator begin)
If we have indices packed into an buffer for communications, how much of that buffer applies to this ...
Definition: dof_object.C:567
uint64_t largest_id_type
Definition: id_types.h:148

◆ valence()

unsigned int libMesh::Node::valence ( ) const
inline
Returns
The number of nodes connected with this node. Currently, this value is invalid (zero) except for subdivision meshes.

Definition at line 178 of file node.h.

References _valence, and libMesh::invalid_uint.

Referenced by libMesh::Tri3Subdivision::get_ordered_valence().

179  {
180 #ifdef LIBMESH_ENABLE_NODE_VALENCE
181  return _valence;
182 #else
183  libmesh_not_implemented();
184  return libMesh::invalid_uint;
185 #endif
186  }
const unsigned int invalid_uint
A number which is used quite often to represent an invalid or uninitialized value for an unsigned int...
Definition: libmesh.h:303
valence_idx_t _valence
The number of nodes connected with this node.
Definition: node.h:219

◆ valid_id()

bool libMesh::DofObject::valid_id ( ) const
inlineinherited

◆ valid_processor_id()

bool libMesh::DofObject::valid_processor_id ( ) const
inlineinherited
Returns
true if this DofObject has a valid id set, false otherwise.

Definition at line 905 of file dof_object.h.

References libMesh::DofObject::_processor_id, and libMesh::DofObject::invalid_processor_id.

Referenced by DofObjectTest< Node >::testInvalidateProcId(), and DofObjectTest< Node >::testValidProcId().

906 {
908 }
static constexpr processor_id_type invalid_processor_id
An invalid processor_id to distinguish DoFs that have not been assigned to a processor.
Definition: dof_object.h:484
processor_id_type _processor_id
The processor_id of the DofObject.
Definition: dof_object.h:585

◆ valid_unique_id()

bool libMesh::DofObject::valid_unique_id ( ) const
inlineinherited
Returns
true if this DofObject has a valid unique_id set, false otherwise.

Definition at line 869 of file dof_object.h.

References libMesh::DofObject::_unique_id, and libMesh::DofObject::invalid_unique_id.

Referenced by libMesh::ReplicatedMesh::add_elem(), libMesh::DistributedMesh::add_elem(), libMesh::ReplicatedMesh::add_node(), libMesh::DistributedMesh::add_node(), libMesh::ReplicatedMesh::add_point(), libMesh::C0Polyhedron::disconnected_clone(), libMesh::Elem::disconnected_clone(), libMesh::Elem::get_info(), libMesh::ReplicatedMesh::insert_elem(), libMesh::DistributedMesh::insert_elem(), and libMesh::DofObject::unique_id().

870 {
871 #ifdef LIBMESH_ENABLE_UNIQUE_ID
873 #else
874  return false;
875 #endif
876 }
static constexpr unique_id_type invalid_unique_id
An invalid unique_id to distinguish an uninitialized DofObject.
Definition: dof_object.h:478
unique_id_type _unique_id
A globally unique id, guaranteed not to change as the mesh is repartitioned or adapted.
Definition: dof_object.h:568

◆ var_to_vg_and_offset()

std::pair< unsigned int, unsigned int > libMesh::DofObject::var_to_vg_and_offset ( const unsigned int  s,
const unsigned int  var 
) const
inlineinherited
Returns
A pair consisting of the variable group number and the offset index from the start of that group for variable var on system s associated with this DofObject

Definition at line 1176 of file dof_object.h.

References libMesh::DofObject::n_var_groups(), and libMesh::DofObject::n_vars().

Referenced by libMesh::DofMap::_dof_indices(), libMesh::DofMap::_node_dof_indices(), libMesh::DofObject::dof_number(), libMesh::OldSolutionCoefs< Output, point_output >::eval_old_dofs(), and libMesh::OldSolutionValue< Output, point_output >::eval_old_dofs().

1178 {
1179  std::pair<unsigned int, unsigned int> returnval(0,0);
1180 
1181  unsigned int & vg = returnval.first;
1182  unsigned int & offset = returnval.second;
1183 
1184  unsigned int vg_start = 0;
1185  for (; ; vg++)
1186  {
1187  libmesh_assert_less(vg, this->n_var_groups(s));
1188 
1189  const unsigned int vg_end = vg_start + this->n_vars(s,vg);
1190  if (var < vg_end)
1191  {
1192  offset = var - vg_start;
1193  return returnval;
1194  }
1195  vg_start = vg_end;
1196  }
1197 }
unsigned int n_var_groups(const unsigned int s) const
Definition: dof_object.h:933
unsigned int n_vars(const unsigned int s, const unsigned int vg) const
Definition: dof_object.h:943

◆ vg_dof_base()

dof_id_type libMesh::DofObject::vg_dof_base ( const unsigned int  s,
const unsigned int  vg 
) const
inlineinherited

VariableGroup DoF indices are indexed as id = base + var_in_vg*ncomp + comp This method allows for direct access to the base.

Definition at line 1293 of file dof_object.h.

References libMesh::DofObject::_idx_buf, libMesh::DofObject::n_systems(), libMesh::DofObject::n_var_groups(), and libMesh::DofObject::start_idx().

Referenced by libMesh::DofMap::distribute_local_dofs_node_major(), libMesh::DofMap::distribute_local_dofs_var_major(), libMesh::DofMap::reinit(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::DofObject::set_vg_dof_base(), and DofObjectTest< Node >::testManualDofCalculation().

1295 {
1296  libmesh_assert_less (s, this->n_systems());
1297  libmesh_assert_less (vg, this->n_var_groups(s));
1298 
1299  const unsigned int
1300  start_idx_sys = this->start_idx(s);
1301 
1302  libmesh_assert_less ((start_idx_sys + 2*vg + 1), _idx_buf.size());
1303 
1304  // #ifdef DEBUG
1305  // std::cout << " [ ";
1306  // for (auto i : _idx_buf)
1307  // std::cout << i << " ";
1308  // std::cout << "]\n";
1309  // #endif
1310 
1311  return _idx_buf[start_idx_sys + 2*vg + 1];
1312 }
unsigned int n_var_groups(const unsigned int s) const
Definition: dof_object.h:933
unsigned int n_systems() const
Definition: dof_object.h:913
unsigned int start_idx(const unsigned int s) const
The starting index for system s.
Definition: dof_object.h:1225
index_buffer_t _idx_buf
Definition: dof_object.h:671

◆ write_unformatted()

void libMesh::TypeVector< Real >::write_unformatted ( std::ostream &  out_stream,
const bool  newline = true 
) const
inherited

Unformatted print to the stream out.

Simply prints the elements of the vector separated by spaces. Also prints a newline by default, however, this behavior can be controlled with the newline parameter.

Definition at line 51 of file type_vector.C.

53 {
54  os << std::setiosflags(std::ios::showpoint)
55  << (*this)(0) << " "
56  << (*this)(1) << " "
57  << (*this)(2) << " ";
58 
59  if (newline)
60  os << '\n';
61 }

◆ zero()

void libMesh::TypeVector< Real >::zero ( )
inlineinherited

Set all entries of the vector to 0.

Definition at line 918 of file type_vector.h.

919 {
920  for (unsigned int i=0; i<LIBMESH_DIM; i++)
921  _coords[i] = 0.;
922 }
Real _coords[LIBMESH_DIM]
The coordinates of the TypeVector.
Definition: type_vector.h:417

Friends And Related Function Documentation

◆ Elem

friend class Elem
friend

Definition at line 206 of file node.h.

◆ MeshRefinement

friend class MeshRefinement
friend

This class need access to the node key information, but no one else should be able to mess with it.

Definition at line 205 of file node.h.

Member Data Documentation

◆ _coords

Real libMesh::TypeVector< Real >::_coords[LIBMESH_DIM]
protectedinherited

The coordinates of the TypeVector.

Definition at line 417 of file type_vector.h.

◆ _counts [1/2]

ReferenceCounter::Counts libMesh::ReferenceCounter::_counts
staticprotectedinherited

Actually holds the data.

Definition at line 124 of file reference_counter.h.

Referenced by libMesh::ReferenceCounter::get_info().

◆ _counts [2/2]

ReferenceCounter::Counts libMesh::ReferenceCounter::_counts
staticprotectedinherited

Actually holds the data.

Definition at line 124 of file reference_counter.h.

Referenced by libMesh::ReferenceCounter::get_info().

◆ _enable_print_counter [1/2]

bool libMesh::ReferenceCounter::_enable_print_counter = true
staticprotectedinherited

Flag to control whether reference count information is printed when print_info is called.

Definition at line 143 of file reference_counter.h.

Referenced by libMesh::ReferenceCounter::disable_print_counter_info(), libMesh::ReferenceCounter::enable_print_counter_info(), and libMesh::ReferenceCounter::print_info().

◆ _enable_print_counter [2/2]

bool libMesh::ReferenceCounter::_enable_print_counter = true
staticprotectedinherited

Flag to control whether reference count information is printed when print_info is called.

Definition at line 143 of file reference_counter.h.

Referenced by libMesh::ReferenceCounter::disable_print_counter_info(), libMesh::ReferenceCounter::enable_print_counter_info(), and libMesh::ReferenceCounter::print_info().

◆ _mutex [1/2]

Threads::spin_mutex libMesh::ReferenceCounter::_mutex
staticprotectedinherited

Mutual exclusion object to enable thread-safe reference counting.

Definition at line 137 of file reference_counter.h.

◆ _mutex [2/2]

Threads::spin_mutex libMesh::ReferenceCounter::_mutex
staticprotectedinherited

Mutual exclusion object to enable thread-safe reference counting.

Definition at line 137 of file reference_counter.h.

◆ _n_objects [1/2]

Threads::atomic< unsigned int > libMesh::ReferenceCounter::_n_objects
staticprotectedinherited

The number of objects.

Print the reference count information when the number returns to 0.

Definition at line 132 of file reference_counter.h.

Referenced by libMesh::ReferenceCounter::n_objects(), libMesh::ReferenceCounter::ReferenceCounter(), and libMesh::ReferenceCounter::~ReferenceCounter().

◆ _n_objects [2/2]

Threads::atomic< unsigned int > libMesh::ReferenceCounter::_n_objects
staticprotectedinherited

The number of objects.

Print the reference count information when the number returns to 0.

Definition at line 132 of file reference_counter.h.

Referenced by libMesh::ReferenceCounter::n_objects(), libMesh::ReferenceCounter::ReferenceCounter(), and libMesh::ReferenceCounter::~ReferenceCounter().

◆ _valence

valence_idx_t libMesh::Node::_valence
private

The number of nodes connected with this node.

Currently, this value is invalid (zero) except for subdivision meshes.

Definition at line 219 of file node.h.

Referenced by set_valence(), and valence().

◆ invalid_id

constexpr dof_id_type libMesh::DofObject::invalid_id = static_cast<dof_id_type>(-1)
staticinherited

An invalid id to distinguish an uninitialized DofObject.

Definition at line 473 of file dof_object.h.

Referenced by libMesh::DofMap::_dof_indices(), libMesh::DofMap::_node_dof_indices(), active(), libMesh::MeshBase::add_elem_datum(), libMesh::MeshBase::add_elem_integers(), libMesh::DofObject::add_extra_integers(), libMesh::StaticCondensation::add_matrix(), libMesh::DofMap::add_neighbors_to_send_list(), libMesh::TopologyMap::add_node(), libMesh::MeshRefinement::add_node(), libMesh::MeshBase::add_node_datum(), libMesh::MeshBase::add_node_integers(), libMesh::ReplicatedMesh::add_point(), libMesh::MeshTools::Modification::all_tri(), libMesh::DofMap::allgather_recursive_constraints(), libMesh::DofMap::assert_no_nodes_missed(), libMesh::Elem::bracketing_nodes(), ExtraIntegersTest::checkpoint_helper(), libMesh::StaticCondensation::clear(), libMesh::FEGenericBase< FEOutputType< T >::type >::compute_periodic_constraints(), libMesh::FEGenericBase< FEOutputType< T >::type >::compute_proj_constraints(), libMesh::DofMap::distribute_dofs(), libMesh::DofMap::distribute_local_dofs_node_major(), libMesh::DofMap::distribute_local_dofs_var_major(), libMesh::DofMap::dof_indices(), libMesh::DofObject::dof_number(), libMesh::RBEIMConstruction::enrich_eim_approximation_on_interiors(), libMesh::RBEIMConstruction::enrich_eim_approximation_on_nodes(), libMesh::RBEIMConstruction::enrich_eim_approximation_on_sides(), libMesh::OldSolutionValue< Output, point_output >::eval_old_dofs(), libMesh::TopologyMap::find(), libMesh::DofMap::gather_constraints(), libMesh::MeshBase::get_elemset_code(), libMesh::Poly2TriTriangulator::insert_refinement_points(), libMesh::Elem::interior_parent(), libMesh::DofObject::invalidate_dofs(), libMesh::DofObject::invalidate_id(), libMesh::MeshTools::libmesh_assert_valid_neighbors(), libMesh::DistributedMesh::libmesh_assert_valid_parallel_object_ids(), Node(), libMesh::Elem::node_id(), libMesh::DofMap::old_dof_indices(), libMesh::DistributedMesh::own_node(), libMesh::XdrIO::pack_element(), libMesh::SFCPartitioner::partition_range(), libMesh::Elem::point(), libMesh::ExodusII_IO::read(), libMesh::DynaIO::read_mesh(), libMesh::System::read_parallel_data(), libMesh::XdrIO::read_serialized_connectivity(), libMesh::SimplexRefiner::refine_via_edges(), libMesh::StaticCondensationDofMap::reinit(), libMesh::DofMap::SCALAR_dof_indices(), libMesh::DofObject::set_dof_number(), libMesh::DofObject::set_n_comp_group(), libMesh::DofObject::set_n_vars_per_group(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::Parallel::sync_node_data_by_element_id_once(), ExtraIntegersTest::test_and_set_initial_data(), DofObjectTest< Node >::testAddExtraData(), DofObjectTest< Node >::testAddSystemExtraInts(), ExtraIntegersTest::testExtraIntegersExodusReading(), InfFERadialTest::testRefinement(), DofObjectTest< Node >::testSetNSystemsExtraInts(), DofObjectTest< Node >::testSetNVariableGroupsExtraInts(), MeshTetTest::testTetInterfaceBase(), DofObjectTest< Node >::testValidId(), MeshSmootherTest::testVariationalSmoother(), WriteElemsetData::testWriteImpl(), libMesh::NetGenMeshInterface::triangulate(), libMesh::Poly2TriTriangulator::triangulate_current_points(), libMesh::DofObject::valid_id(), libMesh::System::write_parallel_data(), and libMesh::XdrIO::write_serialized_connectivity().

◆ invalid_processor_id

constexpr processor_id_type libMesh::DofObject::invalid_processor_id = static_cast<processor_id_type>(-1)
staticinherited

An invalid processor_id to distinguish DoFs that have not been assigned to a processor.

Definition at line 484 of file dof_object.h.

Referenced by libMesh::BoundaryInfo::_find_id_maps(), libMesh::DistributedMesh::add_elem(), libMesh::DistributedMesh::add_node(), libMesh::MeshRefinement::add_node(), libMesh::MeshCommunication::allgather(), choose_processor_id(), libMesh::GenericProjector< FFunctor, GFunctor, FValue, ProjectionAction >::SubProjector::construct_projection(), libMesh::MeshTools::correct_node_proc_ids(), libMesh::MeshTools::create_bounding_box(), libMesh::MeshTools::create_nodal_bounding_box(), libMesh::MeshCommunication::delete_remote_elements(), libMesh::Elem::Elem(), libMesh::GenericProjector< FFunctor, GFunctor, FValue, ProjectionAction >::SubFunctor::find_dofs_to_send(), libMesh::MeshCommunication::find_global_indices(), libMesh::MeshBase::get_info(), libMesh::DistributedMesh::insert_elem(), libMesh::DofObject::invalidate_processor_id(), libMesh::MeshTools::libmesh_assert_consistent_distributed(), libMesh::MeshTools::libmesh_assert_consistent_distributed_nodes(), libMesh::DistributedMesh::libmesh_assert_valid_parallel_object_ids(), libMesh::MeshCommunication::make_new_node_proc_ids_parallel_consistent(), libMesh::DistributedMesh::n_active_elem(), libMesh::MeshBase::n_constraint_rows(), libMesh::MeshBase::n_elem_on_proc(), libMesh::MeshBase::n_nodes_on_proc(), libMesh::MeshBase::n_unpartitioned_elem(), libMesh::MeshBase::n_unpartitioned_nodes(), libMesh::SparsityPattern::Build::operator()(), libMesh::Partitioner::processor_pairs_to_interface_nodes(), libMesh::Nemesis_IO_Helper::read_var_names_impl(), libMesh::DistributedMesh::renumber_dof_objects(), libMesh::DistributedMesh::renumber_nodes_and_elements(), OverlappingFunctorTest::run_coupling_functor_test(), libMesh::GenericProjector< FFunctor, GFunctor, FValue, ProjectionAction >::send_and_insert_dof_values(), libMesh::Partitioner::set_node_processor_ids(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::Partitioner::set_parent_processor_ids(), libMesh::LaplaceMeshSmoother::smooth(), libMesh::Parallel::sync_dofobject_data_by_id(), libMesh::Parallel::sync_dofobject_data_by_xyz(), libMesh::Parallel::sync_element_data_by_parent_id(), libMesh::Parallel::sync_node_data_by_element_id_once(), DofObjectTest< Node >::testValidProcId(), libMesh::MeshTools::total_weight(), libMesh::DofObject::valid_processor_id(), and libMesh::CheckpointIO::write().

◆ invalid_unique_id

constexpr unique_id_type libMesh::DofObject::invalid_unique_id = static_cast<unique_id_type>(-1)
staticinherited

An invalid unique_id to distinguish an uninitialized DofObject.

Definition at line 478 of file dof_object.h.

Referenced by libMesh::DistributedMesh::renumber_dof_objects(), libMesh::DofObject::unique_id(), and libMesh::DofObject::valid_unique_id().

◆ old_dof_object

std::unique_ptr<DofObject> libMesh::DofObject::old_dof_object
protectedinherited

This object on the last mesh.

Useful for projecting solutions from one mesh to another.

Public access to old_dof_object is now officially deprecated and will be removed in future libMesh versions. Use the get_old_dof_object() accessor instead.

Definition at line 88 of file dof_object.h.

Referenced by libMesh::DofObject::clear_old_dof_object(), libMesh::DofObject::get_old_dof_object(), libMesh::DofObject::get_old_dof_object_ref(), libMesh::DofObject::operator=(), libMesh::DofObject::pack_indexing(), libMesh::DofObject::packed_indexing_size(), libMesh::DofObject::set_old_dof_object(), and libMesh::DofObject::unpack_indexing().


The documentation for this class was generated from the following files: