libMesh
|
This is the base class from which all geometric element types are derived. More...
#include <elem.h>
Classes | |
class | ChildRefIter |
class | ConstChildRefIter |
class | ConstNodeRefIter |
class | NodeRefIter |
struct | side_iterator |
The definition of the struct used for iterating over sides. More... | |
class | SideIter |
The definition of the protected nested SideIter class. More... | |
Public Types | |
enum | RefinementState { COARSEN = 0, DO_NOTHING, REFINE, JUST_REFINED, JUST_COARSENED, INACTIVE, COARSEN_INACTIVE, INVALID_REFINEMENTSTATE } |
Enumeration of possible element refinement states. More... | |
typedef Elem *const * | NeighborPtrIter |
Nested "classes" for use iterating over all neighbors of an element. More... | |
typedef const Elem *const * | ConstNeighborPtrIter |
typedef Predicates::multi_predicate | Predicate |
Useful iterator typedefs. More... | |
Public Member Functions | |
Elem (Elem &&)=delete | |
Elems are responsible for allocating and deleting their children during refinement, so they cannot be (default) copied or assigned. More... | |
Elem (const Elem &)=delete | |
Elem & | operator= (const Elem &)=delete |
Elem & | operator= (Elem &&)=delete |
virtual | ~Elem () |
Destructor. More... | |
const Point & | point (const unsigned int i) const |
Point & | point (const unsigned int i) |
virtual Point | master_point (const unsigned int i) const =0 |
dof_id_type | node_id (const unsigned int i) const |
dof_id_type | node (const unsigned int i) const |
unsigned int | local_node (const dof_id_type i) const |
unsigned int | get_node_index (const Node *node_ptr) const |
const Node *const * | get_nodes () const |
const Node * | node_ptr (const unsigned int i) const |
Node * | node_ptr (const unsigned int i) |
const Node & | node_ref (const unsigned int i) const |
Node & | node_ref (const unsigned int i) |
Node * | get_node (const unsigned int i) const |
virtual Node *& | set_node (const unsigned int i) |
SimpleRange< NodeRefIter > | node_ref_range () |
Returns a range with all nodes of an element, usable in range-based for loops. More... | |
SimpleRange< ConstNodeRefIter > | node_ref_range () const |
subdomain_id_type | subdomain_id () const |
subdomain_id_type & | subdomain_id () |
const Elem * | reference_elem () const |
virtual dof_id_type | key (const unsigned int s) const =0 |
virtual dof_id_type | key () const |
bool | operator== (const Elem &rhs) const |
const Elem * | neighbor_ptr (unsigned int i) const |
Elem * | neighbor_ptr (unsigned int i) |
Elem * | neighbor (const unsigned int i) const |
SimpleRange< NeighborPtrIter > | neighbor_ptr_range () |
Returns a range with all neighbors of an element, usable in range-based for loops. More... | |
SimpleRange< ConstNeighborPtrIter > | neighbor_ptr_range () const |
const Elem * | topological_neighbor (const unsigned int i, const MeshBase &mesh, const PointLocatorBase &point_locator, const PeriodicBoundaries *pb) const |
Elem * | topological_neighbor (const unsigned int i, MeshBase &mesh, const PointLocatorBase &point_locator, const PeriodicBoundaries *pb) |
bool | has_topological_neighbor (const Elem *elem, const MeshBase &mesh, const PointLocatorBase &point_locator, const PeriodicBoundaries *pb) const |
void | set_neighbor (const unsigned int i, Elem *n) |
Assigns n as the ![]() | |
bool | has_neighbor (const Elem *elem) const |
Elem * | child_neighbor (Elem *elem) |
const Elem * | child_neighbor (const Elem *elem) const |
bool | on_boundary () const |
bool | is_semilocal (const processor_id_type my_pid) const |
unsigned int | which_neighbor_am_i (const Elem *e) const |
This function tells you which neighbor e is. More... | |
unsigned int | which_side_am_i (const Elem *e) const |
This function tells you which side the boundary element e is. More... | |
virtual unsigned int | which_node_am_i (unsigned int side, unsigned int side_node) const =0 |
bool | contains_vertex_of (const Elem *e) const |
bool | contains_edge_of (const Elem *e) const |
void | find_point_neighbors (const Point &p, std::set< const Elem *> &neighbor_set) const |
This function finds all active elements (including this one) which are in the same manifold as this element and which touch the current active element at the specified point, which should be a point in the current element. More... | |
void | find_point_neighbors (std::set< const Elem *> &neighbor_set) const |
This function finds all active elements (including this one) in the same manifold as this element which touch this active element at any point. More... | |
void | find_point_neighbors (std::set< const Elem *> &neighbor_set, const Elem *start_elem) const |
This function finds all active elements (including this one) in the same manifold as start_elem (which must be active and must touch this element) which touch this element at any point. More... | |
void | find_point_neighbors (std::set< Elem *> &neighbor_set, Elem *start_elem) |
Non-const version of function above. More... | |
void | find_edge_neighbors (const Point &p1, const Point &p2, std::set< const Elem *> &neighbor_set) const |
This function finds all active elements in the same manifold as this element which touch the current active element along the whole edge defined by the two points p1 and p2 . More... | |
void | find_edge_neighbors (std::set< const Elem *> &neighbor_set) const |
This function finds all active elements in the same manifold as this element which touch the current active element along any edge (more precisely, at at least two points). More... | |
void | find_interior_neighbors (std::set< const Elem *> &neighbor_set) const |
This function finds all active elements (not including this one) in the parent manifold of this element whose intersection with this element has non-zero measure. More... | |
void | find_interior_neighbors (std::set< Elem *> &neighbor_set) |
Non-const version of function above that fills up a vector of non-const Elem pointers instead. More... | |
void | remove_links_to_me () |
Resets this element's neighbors' appropriate neighbor pointers and its parent's and children's appropriate pointers to point to null instead of to this. More... | |
void | make_links_to_me_remote () |
Resets this element's neighbors' appropriate neighbor pointers and its parent's and children's appropriate pointers to point to the global remote_elem instead of this. More... | |
void | make_links_to_me_local (unsigned int n) |
Resets the appropriate neighbor pointers of our nth neighbor (and its descendants, if appropriate) to point to this Elem instead of to the global remote_elem. More... | |
virtual bool | is_remote () const |
virtual void | connectivity (const unsigned int sc, const IOPackage iop, std::vector< dof_id_type > &conn) const =0 |
void | write_connectivity (std::ostream &out, const IOPackage iop) const |
Writes the element connectivity for various IO packages to the passed ostream "out". More... | |
virtual ElemType | type () const =0 |
virtual unsigned short | dim () const =0 |
virtual unsigned int | n_nodes () const =0 |
IntRange< unsigned short > | node_index_range () const |
virtual unsigned int | n_nodes_in_child (unsigned int) const |
virtual unsigned int | n_sides () const =0 |
IntRange< unsigned short > | side_index_range () const |
unsigned int | n_neighbors () const |
virtual unsigned int | n_vertices () const =0 |
virtual unsigned int | n_edges () const =0 |
IntRange< unsigned short > | edge_index_range () const |
virtual unsigned int | n_faces () const =0 |
virtual unsigned int | n_children () const =0 |
virtual bool | is_vertex (const unsigned int i) const =0 |
virtual unsigned int | is_vertex_on_child (unsigned int, unsigned int n) const |
virtual bool | is_vertex_on_parent (unsigned int c, unsigned int n) const |
virtual bool | is_edge (const unsigned int i) const =0 |
virtual bool | is_face (const unsigned int i) const =0 |
virtual bool | is_node_on_side (const unsigned int n, const unsigned int s) const =0 |
virtual std::vector< unsigned int > | nodes_on_side (const unsigned int) const =0 |
virtual bool | is_node_on_edge (const unsigned int n, const unsigned int e) const =0 |
virtual bool | is_edge_on_side (const unsigned int e, const unsigned int s) const =0 |
virtual unsigned int | opposite_side (const unsigned int s) const |
virtual unsigned int | opposite_node (const unsigned int n, const unsigned int s) const |
virtual unsigned int | n_sub_elem () const =0 |
virtual std::unique_ptr< Elem > | side_ptr (unsigned int i)=0 |
std::unique_ptr< const Elem > | side_ptr (unsigned int i) const |
virtual void | side_ptr (std::unique_ptr< Elem > &side, const unsigned int i)=0 |
Resets the loose element side , which may currently point to a different side than i or even a different element than this , to point to side i on this . More... | |
void | side_ptr (std::unique_ptr< const Elem > &side, const unsigned int i) const |
std::unique_ptr< Elem > | side (const unsigned int i) const |
virtual std::unique_ptr< Elem > | build_side_ptr (const unsigned int i, bool proxy=true)=0 |
std::unique_ptr< const Elem > | build_side_ptr (const unsigned int i, bool proxy=true) const |
virtual void | build_side_ptr (std::unique_ptr< Elem > &side, const unsigned int i)=0 |
Resets the loose element side , which may currently point to a different side than i or even a different element than this , to point to side i on this . More... | |
void | build_side_ptr (std::unique_ptr< const Elem > &side, const unsigned int i) const |
std::unique_ptr< Elem > | build_side (const unsigned int i, bool proxy=true) const |
virtual std::unique_ptr< Elem > | build_edge_ptr (const unsigned int i)=0 |
std::unique_ptr< const Elem > | build_edge_ptr (const unsigned int i) const |
std::unique_ptr< Elem > | build_edge (const unsigned int i) const |
Creates an element coincident with edge i . More... | |
virtual Order | default_order () const =0 |
virtual Point | centroid () const |
virtual Real | hmin () const |
virtual Real | hmax () const |
virtual Real | volume () const |
virtual BoundingBox | loose_bounding_box () const |
virtual Real | quality (const ElemQuality q) const |
virtual std::pair< Real, Real > | qual_bounds (const ElemQuality) const |
virtual bool | contains_point (const Point &p, Real tol=TOLERANCE) const |
virtual bool | close_to_point (const Point &p, Real tol) const |
virtual bool | has_affine_map () const |
virtual bool | is_linear () const |
void | print_info (std::ostream &os=libMesh::out) const |
Prints relevant information about the element. More... | |
std::string | get_info () const |
Prints relevant information about the element to a string. More... | |
bool | active () const |
bool | ancestor () const |
bool | subactive () const |
bool | has_children () const |
bool | has_ancestor_children () const |
bool | is_ancestor_of (const Elem *descendant) const |
const Elem * | parent () const |
Elem * | parent () |
void | set_parent (Elem *p) |
Sets the pointer to the element's parent. More... | |
const Elem * | top_parent () const |
const Elem * | interior_parent () const |
Elem * | interior_parent () |
void | set_interior_parent (Elem *p) |
Sets the pointer to the element's interior_parent. More... | |
Real | length (const unsigned int n1, const unsigned int n2) const |
virtual unsigned int | n_second_order_adjacent_vertices (const unsigned int n) const |
virtual unsigned short int | second_order_adjacent_vertex (const unsigned int n, const unsigned int v) const |
virtual std::pair< unsigned short int, unsigned short int > | second_order_child_vertex (const unsigned int n) const |
unsigned int | level () const |
unsigned int | p_level () const |
virtual bool | is_child_on_side (const unsigned int c, const unsigned int s) const =0 |
const Elem * | raw_child_ptr (unsigned int i) const |
const Elem * | child_ptr (unsigned int i) const |
Elem * | child_ptr (unsigned int i) |
Elem * | child (const unsigned int i) const |
SimpleRange< ChildRefIter > | child_ref_range () |
Returns a range with all children of a parent element, usable in range-based for loops. More... | |
SimpleRange< ConstChildRefIter > | child_ref_range () const |
unsigned int | which_child_am_i (const Elem *e) const |
virtual bool | is_child_on_edge (const unsigned int c, const unsigned int e) const |
void | add_child (Elem *elem) |
Adds a child pointer to the array of children of this element. More... | |
void | add_child (Elem *elem, unsigned int c) |
Adds a new child pointer to the specified index in the array of children of this element. More... | |
void | replace_child (Elem *elem, unsigned int c) |
Replaces the child pointer at the specified index in the child array. More... | |
void | family_tree (std::vector< const Elem *> &family, bool reset=true) const |
Fills the vector family with the children of this element, recursively. More... | |
void | family_tree (std::vector< Elem *> &family, bool reset=true) |
Non-const version of function above; fills a vector of non-const pointers. More... | |
void | total_family_tree (std::vector< const Elem *> &family, bool reset=true) const |
Same as the family_tree() member, but also adds any subactive descendants. More... | |
void | total_family_tree (std::vector< Elem *> &family, bool reset=true) |
Non-const version of function above; fills a vector of non-const pointers. More... | |
void | active_family_tree (std::vector< const Elem *> &active_family, bool reset=true) const |
Same as the family_tree() member, but only adds the active children. More... | |
void | active_family_tree (std::vector< Elem *> &active_family, bool reset=true) |
Non-const version of function above; fills a vector of non-const pointers. More... | |
void | family_tree_by_side (std::vector< const Elem *> &family, unsigned int side, bool reset=true) const |
Same as the family_tree() member, but only adds elements which are next to side . More... | |
void | family_tree_by_side (std::vector< Elem *> &family, unsigned int side, bool reset=true) |
Non-const version of function above; fills a vector of non-const pointers. More... | |
void | active_family_tree_by_side (std::vector< const Elem *> &family, unsigned int side, bool reset=true) const |
Same as the active_family_tree() member, but only adds elements which are next to side . More... | |
void | active_family_tree_by_side (std::vector< Elem *> &family, unsigned int side, bool reset=true) |
Non-const version of function above; fills a vector of non-const pointers. More... | |
void | family_tree_by_neighbor (std::vector< const Elem *> &family, const Elem *neighbor, bool reset=true) const |
Same as the family_tree() member, but only adds elements which are next to neighbor . More... | |
void | family_tree_by_neighbor (std::vector< Elem *> &family, Elem *neighbor, bool reset=true) |
Non-const version of function above; fills a vector of non-const pointers. More... | |
void | total_family_tree_by_neighbor (std::vector< const Elem *> &family, const Elem *neighbor, bool reset=true) const |
Same as the family_tree_by_neighbor() member, but also adds any subactive descendants. More... | |
void | total_family_tree_by_neighbor (std::vector< Elem *> &family, Elem *neighbor, bool reset=true) |
Non-const version of function above; fills a vector of non-const pointers. More... | |
void | family_tree_by_subneighbor (std::vector< const Elem *> &family, const Elem *neighbor, const Elem *subneighbor, bool reset=true) const |
Same as the family_tree() member, but only adds elements which are next to subneighbor . More... | |
void | family_tree_by_subneighbor (std::vector< Elem *> &family, Elem *neighbor, Elem *subneighbor, bool reset=true) |
Non-const version of function above; fills a vector of non-const pointers. More... | |
void | total_family_tree_by_subneighbor (std::vector< const Elem *> &family, const Elem *neighbor, const Elem *subneighbor, bool reset=true) const |
Same as the family_tree_by_subneighbor() member, but also adds any subactive descendants. More... | |
void | total_family_tree_by_subneighbor (std::vector< Elem *> &family, Elem *neighbor, Elem *subneighbor, bool reset=true) |
Non-const version of function above; fills a vector of non-const pointers. More... | |
void | active_family_tree_by_neighbor (std::vector< const Elem *> &family, const Elem *neighbor, bool reset=true) const |
Same as the active_family_tree() member, but only adds elements which are next to neighbor . More... | |
void | active_family_tree_by_neighbor (std::vector< Elem *> &family, Elem *neighbor, bool reset=true) |
Non-const version of function above; fills a vector of non-const pointers. More... | |
void | active_family_tree_by_topological_neighbor (std::vector< const Elem *> &family, const Elem *neighbor, const MeshBase &mesh, const PointLocatorBase &point_locator, const PeriodicBoundaries *pb, bool reset=true) const |
Same as the active_family_tree_by_neighbor() member, but the neighbor here may be a topological (e.g. More... | |
void | active_family_tree_by_topological_neighbor (std::vector< Elem *> &family, Elem *neighbor, const MeshBase &mesh, const PointLocatorBase &point_locator, const PeriodicBoundaries *pb, bool reset=true) |
Non-const version of function above; fills a vector of non-const pointers. More... | |
RefinementState | refinement_flag () const |
void | set_refinement_flag (const RefinementState rflag) |
Sets the value of the refinement flag for the element. More... | |
RefinementState | p_refinement_flag () const |
void | set_p_refinement_flag (const RefinementState pflag) |
Sets the value of the p-refinement flag for the element. More... | |
unsigned int | max_descendant_p_level () const |
unsigned int | min_p_level_by_neighbor (const Elem *neighbor, unsigned int current_min) const |
unsigned int | min_new_p_level_by_neighbor (const Elem *neighbor, unsigned int current_min) const |
void | set_p_level (const unsigned int p) |
Sets the value of the p-refinement level for the element. More... | |
void | hack_p_level (const unsigned int p) |
Sets the value of the p-refinement level for the element without altering the p-level of its ancestors. More... | |
virtual void | refine (MeshRefinement &mesh_refinement) |
Refine the element. More... | |
void | coarsen () |
Coarsen the element. More... | |
void | contract () |
Contract an active element, i.e. More... | |
void | libmesh_assert_valid_neighbors () const |
Checks for consistent neighbor links on this element. More... | |
void | libmesh_assert_valid_node_pointers () const |
Checks for a valid id and pointers to nodes with valid ids on this element. More... | |
side_iterator | boundary_sides_begin () |
Iterator accessor functions. More... | |
side_iterator | boundary_sides_end () |
virtual bool | infinite () const =0 |
virtual bool | is_mid_infinite_edge_node (const unsigned int) const |
virtual Point | origin () const |
virtual unsigned int | as_parent_node (unsigned int c, unsigned int n) const |
virtual const std::vector< std::pair< unsigned char, unsigned char > > & | parent_bracketing_nodes (unsigned int c, unsigned int n) const |
virtual const std::vector< std::pair< dof_id_type, dof_id_type > > | bracketing_nodes (unsigned int c, unsigned int n) const |
virtual float | embedding_matrix (const unsigned int child_num, const unsigned int child_node_num, const unsigned int parent_node_num) const =0 |
virtual unsigned int | embedding_matrix_version () const |
void | nullify_neighbors () |
Replaces this element with nullptr for all of its neighbors. More... | |
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 and return to a pristine state. 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_type & | set_id () |
void | set_id (const dof_id_type dofid) |
Sets the id for this DofObject . More... | |
unique_id_type | unique_id () const |
unique_id_type & | set_unique_id () |
bool | valid_id () const |
bool | valid_unique_id () const |
processor_id_type | processor_id () const |
processor_id_type & | processor_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 |
void | set_n_systems (const unsigned int s) |
Sets the number of systems for this DofObject . 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 int > | var_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... | |
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 ElemType | second_order_equivalent_type (const ElemType et, const bool full_ordered=true) |
static ElemType | first_order_equivalent_type (const ElemType et) |
static std::unique_ptr< Elem > | build (const ElemType type, Elem *p=nullptr) |
static std::string | get_info () |
Gets a string containing the reference information. More... | |
static void | print_info (std::ostream &out=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 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=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 () |
Public Attributes | |
DofObject * | old_dof_object |
This object on the last mesh. More... | |
Static Public Attributes | |
static const subdomain_id_type | invalid_subdomain_id |
A static integral constant representing an invalid subdomain id. More... | |
static const unsigned int | type_to_n_nodes_map [INVALID_ELEM] |
This array maps the integer representation of the ElemType enum to the number of nodes in the element. More... | |
static const unsigned int | max_n_nodes = 27 |
The maximum number of nodes any element can contain. More... | |
static const unsigned int | type_to_n_sides_map [INVALID_ELEM] |
This array maps the integer representation of the ElemType enum to the number of sides on the element. More... | |
static const unsigned int | type_to_n_edges_map [INVALID_ELEM] |
This array maps the integer representation of the ElemType enum to the number of edges on the element. More... | |
static const dof_id_type | invalid_id = static_cast<dof_id_type>(-1) |
An invalid id to distinguish an uninitialized DofObject . More... | |
static const unique_id_type | invalid_unique_id = static_cast<unique_id_type>(-1) |
An invalid unique_id to distinguish an uninitialized DofObject . More... | |
static const 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 | |
Elem (const unsigned int n_nodes, const unsigned int n_sides, Elem *parent, Elem **elemlinkdata, Node **nodelinkdata) | |
Constructor. More... | |
template<typename Subclass > | |
void | simple_build_side_ptr (std::unique_ptr< Elem > &side, const unsigned int i, ElemType sidetype) |
An implementation for simple (all sides equal) elements. More... | |
template<typename Subclass , typename Mapclass > | |
void | simple_side_ptr (std::unique_ptr< Elem > &side, const unsigned int i, ElemType sidetype) |
An implementation for simple (all sides equal) elements. More... | |
virtual std::vector< std::vector< std::vector< std::vector< std::pair< unsigned char, unsigned char > > > > > & | _get_bracketing_node_cache () const |
Elem subclasses which don't do their own bracketing node calculations will need to supply a static cache, since the default calculation is slow. More... | |
virtual std::vector< std::vector< std::vector< signed char > > > & | _get_parent_indices_cache () const |
Elem subclasses which don't do their own child-to-parent node calculations will need to supply a static cache, since the default calculation is slow. More... | |
void | increment_constructor_count (const std::string &name) |
Increments the construction counter. More... | |
void | increment_destructor_count (const std::string &name) |
Increments the destruction counter. More... | |
void | increment_constructor_count (const std::string &name) |
Increments the construction counter. More... | |
void | increment_destructor_count (const std::string &name) |
Increments the destruction counter. More... | |
Static Protected Member Functions | |
static dof_id_type | compute_key (dof_id_type n0) |
static dof_id_type | compute_key (dof_id_type n0, dof_id_type n1) |
static dof_id_type | compute_key (dof_id_type n0, dof_id_type n1, dof_id_type n2) |
static dof_id_type | compute_key (dof_id_type n0, dof_id_type n1, dof_id_type n2, dof_id_type n3) |
Protected Attributes | |
Node ** | _nodes |
Pointers to the nodes we are connected to. More... | |
Elem ** | _elemlinks |
Pointers to this element's parent and neighbors, and for lower-dimensional elements' interior_parent. More... | |
Elem ** | _children |
Pointers to this element's children. More... | |
subdomain_id_type | _sbd_id |
The subdomain to which this element belongs. More... | |
unsigned char | _rflag |
h refinement flag. More... | |
unsigned char | _pflag |
p refinement flag. More... | |
unsigned char | _p_level |
p refinement level - the difference between the polynomial degree on this element and the minimum polynomial degree on the 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 |
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 |
Flag to control whether reference count information is printed when print_info is called. More... | |
Private Member Functions | |
bool | point_test (const Point &p, Real box_tol, Real map_tol) const |
Shared private implementation used by the contains_point() and close_to_point() routines. More... | |
void | set_child (unsigned int c, Elem *elem) |
Sets the pointer to the ![]() | |
SideIter | _first_side () |
Side iterator helper functions. More... | |
SideIter | _last_side () |
This is the base class from which all geometric element types are derived.
The Elem
class provides standard information such as the number of nodes, edges, faces, vertices, children, and neighbors it has, as well as access to (or the ability to construct) these entities.
An Elem
has pointers to its Node
objects. Some of these nodes live at the vertices of the element, while others may live on edges (and faces in 3D), or interior to the element. The number of nodes in a given element, n_nodes()
, is encoded into the name of the class. For example, a Tri3
has three nodes which correspond to the vertices, while a Tri6
has six nodes, three of which are located at vertices, and three which are located at the midpoint of each edge. Nodes on edges, faces, and element interiors are called second-order nodes.
A 1D Elem is an Edge
, a 2D Elem is a Face
, and a 3D Elem is a Cell
. An Elem
is composed of a number of sides, which can be accessed as dim-1 dimensional Elem
types. For example, a Hex8
is a 3D hexahedral element. A Hex8
has 6 sides, which are Faces
of type Quad4.
typedef const Elem* const* libMesh::Elem::ConstNeighborPtrIter |
|
protectedinherited |
Data structure to log the information.
The log is identified by the class name.
Definition at line 117 of file reference_counter.h.
|
protectedinherited |
Data structure to log the information.
The log is identified by the class name.
Definition at line 117 of file reference_counter.h.
typedef Elem* const* libMesh::Elem::NeighborPtrIter |
Enumeration of possible element refinement states.
Enumerator | |
---|---|
COARSEN | |
DO_NOTHING | |
REFINE | |
JUST_REFINED | |
JUST_COARSENED | |
INACTIVE | |
COARSEN_INACTIVE | |
INVALID_REFINEMENTSTATE |
Definition at line 1211 of file elem.h.
|
protected |
Constructor.
Creates an element with n_nodes
nodes, n_sides
sides, n_children
possible children, and parent p
. The constructor allocates the memory necessary to support this data.
Definition at line 1911 of file elem.h.
References _elemlinks, _nodes, libMesh::DofObject::invalid_processor_id, max_n_nodes, p_level(), parent(), libMesh::DofObject::processor_id(), set_p_level(), and subdomain_id().
|
delete |
Elems are responsible for allocating and deleting their children during refinement, so they cannot be (default) copied or assigned.
We therefore explicitly delete these operations. Note that because _children is a C-style array, an Elem cannot even be safely default move-constructed (we would have to maintain a custom move constructor that explicitly sets _children to nullptr to do this safely).
|
delete |
|
virtual |
Destructor.
Frees all the memory associated with the element.
|
private |
|
protectedvirtual |
Elem subclasses which don't do their own bracketing node calculations will need to supply a static cache, since the default calculation is slow.
|
protectedvirtual |
Elem subclasses which don't do their own child-to-parent node calculations will need to supply a static cache, since the default calculation is slow.
|
private |
bool libMesh::Elem::active | ( | ) | const |
true
if the element is active (i.e. has no active descendants) or AMR is disabled, false
otherwise.Definition at line 2518 of file elem.h.
References COARSEN_INACTIVE, INACTIVE, and refinement_flag().
Referenced by max_descendant_p_level(), subactive(), and libMesh::Parallel::sync_element_data_by_parent_id().
void libMesh::Elem::active_family_tree | ( | std::vector< const Elem *> & | active_family, |
bool | reset = true |
||
) | const |
Same as the family_tree()
member, but only adds the active children.
Can be thought of as removing all the inactive elements from the vector created by family_tree
, but is implemented more efficiently.
void libMesh::Elem::active_family_tree | ( | std::vector< Elem *> & | active_family, |
bool | reset = true |
||
) |
Non-const version of function above; fills a vector of non-const pointers.
void libMesh::Elem::active_family_tree_by_neighbor | ( | std::vector< const Elem *> & | family, |
const Elem * | neighbor, | ||
bool | reset = true |
||
) | const |
Same as the active_family_tree()
member, but only adds elements which are next to neighbor
.
void libMesh::Elem::active_family_tree_by_neighbor | ( | std::vector< Elem *> & | family, |
Elem * | neighbor, | ||
bool | reset = true |
||
) |
Non-const version of function above; fills a vector of non-const pointers.
void libMesh::Elem::active_family_tree_by_side | ( | std::vector< const Elem *> & | family, |
unsigned int | side, | ||
bool | reset = true |
||
) | const |
Same as the active_family_tree()
member, but only adds elements which are next to side
.
void libMesh::Elem::active_family_tree_by_side | ( | std::vector< Elem *> & | family, |
unsigned int | side, | ||
bool | reset = true |
||
) |
Non-const version of function above; fills a vector of non-const pointers.
void libMesh::Elem::active_family_tree_by_topological_neighbor | ( | std::vector< const Elem *> & | family, |
const Elem * | neighbor, | ||
const MeshBase & | mesh, | ||
const PointLocatorBase & | point_locator, | ||
const PeriodicBoundaries * | pb, | ||
bool | reset = true |
||
) | const |
Same as the active_family_tree_by_neighbor()
member, but the neighbor
here may be a topological (e.g.
periodic boundary condition) neighbor, not just a local neighbor.
void libMesh::Elem::active_family_tree_by_topological_neighbor | ( | std::vector< Elem *> & | family, |
Elem * | neighbor, | ||
const MeshBase & | mesh, | ||
const PointLocatorBase & | point_locator, | ||
const PeriodicBoundaries * | pb, | ||
bool | reset = true |
||
) |
Non-const version of function above; fills a vector of non-const pointers.
void libMesh::Elem::add_child | ( | Elem * | elem | ) |
Adds a child pointer to the array of children of this element.
If this is the first child to be added, this method allocates memory in the parent's _children array, otherwise, it just sets the pointer.
void libMesh::Elem::add_child | ( | Elem * | elem, |
unsigned int | c | ||
) |
Adds a new child pointer to the specified index in the array of children of this element.
If this is the first child to be added, this method allocates memory in the parent's _children array, otherwise, it just sets the pointer.
|
inherited |
Adds an additional system to the DofObject
.
bool libMesh::Elem::ancestor | ( | ) | const |
true
if the element is an ancestor (i.e. has an active child or ancestor child), false
otherwise or when AMR is disabled.
|
virtual |
n
of child c
, or invalid_uint
if no such parent node exists. side_iterator libMesh::Elem::boundary_sides_begin | ( | ) |
Iterator accessor functions.
side_iterator libMesh::Elem::boundary_sides_end | ( | ) |
|
virtual |
n
of child c
.
|
static |
type
wrapped in a smart pointer. Referenced by FETest< order, family, elem_type >::setUp().
std::unique_ptr< Elem > libMesh::Elem::build_edge | ( | const unsigned int | i | ) | const |
Creates an element coincident with edge i
.
Definition at line 2420 of file elem.h.
References build_edge_ptr().
|
pure virtual |
i
wrapped in a smart pointer.The element returned is full-ordered. For example, calling build_edge_ptr(0) on a 20-noded hex will build a 3-noded edge coincident with edge 0 and pass back the pointer. A std::unique_ptr<Elem>
is returned to prevent a memory leak. This way the user need not remember to delete the object.
The const version of this function is non-virtual; it simply calls the virtual non-const version and const_casts the return type.
Implemented in libMesh::Pyramid14, libMesh::Prism18, libMesh::Hex27, libMesh::RemoteElem, libMesh::InfQuad, libMesh::InfHex16, libMesh::Prism15, libMesh::Pyramid13, libMesh::Edge, libMesh::Hex20, libMesh::Tet10, libMesh::InfHex18, libMesh::InfPrism12, libMesh::Tet4, libMesh::InfPrism6, libMesh::InfHex8, libMesh::Hex8, libMesh::NodeElem, libMesh::Prism6, libMesh::Pyramid5, and libMesh::Face.
Referenced by build_edge(), and build_edge_ptr().
std::unique_ptr< const Elem > libMesh::Elem::build_edge_ptr | ( | const unsigned int | i | ) | const |
Definition at line 2406 of file elem.h.
References build_edge_ptr().
std::unique_ptr< Elem > libMesh::Elem::build_side | ( | const unsigned int | i, |
bool | proxy = true |
||
) | const |
i
.Definition at line 2343 of file elem.h.
References build_side_ptr().
|
pure virtual |
i
wrapped in a smart pointer.The element returned is full-ordered, in contrast to the side method. For example, calling build_side_ptr(0) on a 20-noded hex will build a 8-noded quadrilateral coincident with face 0 and pass back the pointer. A std::unique_ptr<Elem>
is returned to prevent a memory leak. This way the user need not remember to delete the object.
The second argument, which is true by default, specifies that a "proxy" element (of type Side) will be returned. This type of value is useful because it does not allocate additional memory, and is usually sufficient for FE calculation purposes. If you really need a full-ordered, non-proxy side object, call this function with proxy=false.
The const version of this function is non-virtual; it simply calls the virtual non-const version and const_casts the return type.
Implemented in libMesh::RemoteElem, libMesh::Pyramid14, libMesh::Prism18, libMesh::Hex27, libMesh::Quad9, libMesh::Edge, libMesh::Prism15, libMesh::Pyramid13, libMesh::Hex20, libMesh::Tri6, libMesh::Tet10, libMesh::InfHex16, libMesh::Quad8, libMesh::InfQuad6, libMesh::InfHex18, libMesh::Tet4, libMesh::InfPrism12, libMesh::NodeElem, libMesh::Hex8, libMesh::InfPrism6, libMesh::Tri3, libMesh::InfHex8, libMesh::Prism6, libMesh::Pyramid5, libMesh::InfQuad4, and libMesh::Quad4.
Referenced by libMesh::Elem::SideIter::_update_side_ptr(), libMesh::Face::build_edge_ptr(), libMesh::InfQuad::build_edge_ptr(), build_side(), and build_side_ptr().
std::unique_ptr< const Elem > libMesh::Elem::build_side_ptr | ( | const unsigned int | i, |
bool | proxy = true |
||
) | const |
Definition at line 2315 of file elem.h.
References build_side_ptr().
|
pure virtual |
Resets the loose element side
, which may currently point to a different side than i
or even a different element than this
, to point to side i
on this
.
If side
is currently an element of the wrong type, it will be freed and a new element allocated; otherwise no memory allocation will occur.
This should not be called with proxy Side elements. This will cause side
to be a full-ordered element, even if it is handed a lower-ordered element that must be replaced.
The const version of this function is non-virtual; it simply calls the virtual non-const version and const_casts the return type.
Implemented in libMesh::Pyramid14, libMesh::RemoteElem, libMesh::Prism18, libMesh::Hex27, libMesh::Quad9, libMesh::Edge, libMesh::Prism15, libMesh::Pyramid13, libMesh::Hex20, libMesh::Tri6, libMesh::InfHex16, libMesh::Tet10, libMesh::Quad8, libMesh::InfQuad6, libMesh::InfHex18, libMesh::Tet4, libMesh::InfPrism12, libMesh::InfPrism6, libMesh::NodeElem, libMesh::Hex8, libMesh::Tri3, libMesh::InfHex8, libMesh::Prism6, libMesh::Pyramid5, libMesh::InfQuad4, and libMesh::Quad4.
void libMesh::Elem::build_side_ptr | ( | std::unique_ptr< const Elem > & | side, |
const unsigned int | i | ||
) | const |
Definition at line 2328 of file elem.h.
References build_side_ptr().
|
virtual |
This method is virtual since some derived elements might want to use shortcuts to compute their centroid.
Referenced by A0::interior_assembly(), A1::interior_assembly(), and OutputAssembly::interior_assembly().
Elem * libMesh::Elem::child | ( | const unsigned int | i | ) | const |
Definition at line 2726 of file elem.h.
References child_ptr().
elem
is a neighbor of a child of this element, a pointer to that child, otherwise nullptr
. Definition at line 2205 of file elem.h.
References neighbor_ptr_range().
elem
is a neighbor of a child of this element, a pointer to that child, otherwise nullptr
. Definition at line 2217 of file elem.h.
References neighbor_ptr_range().
const Elem * libMesh::Elem::child_ptr | ( | unsigned int | i | ) | const |
Definition at line 2706 of file elem.h.
References _children.
Referenced by child(), libMesh::Parallel::sync_element_data_by_parent_id(), and which_child_am_i().
Elem * libMesh::Elem::child_ptr | ( | unsigned int | i | ) |
Definition at line 2715 of file elem.h.
References _children.
SimpleRange< Elem::ChildRefIter > libMesh::Elem::child_ref_range | ( | ) |
Returns a range with all children of a parent element, usable in range-based for loops.
The exact type of the return value here may be subject to change in future libMesh releases, but the iterators will always dereference to produce a reference to a child element.
Definition at line 1879 of file elem.h.
References _children, and n_children().
Referenced by libMesh::OldSolutionBase< Output, point_output >::check_old_context(), has_ancestor_children(), max_descendant_p_level(), and set_p_level().
SimpleRange< Elem::ConstChildRefIter > libMesh::Elem::child_ref_range | ( | ) | const |
Definition at line 1887 of file elem.h.
References _children, and n_children().
|
inherited |
Clear the DofMap
data structures and return to a pristine state.
Definition at line 621 of file dof_object.h.
References libMesh::DofObject::_idx_buf, and libMesh::DofObject::n_systems().
Referenced by libMesh::DofObject::~DofObject().
|
inherited |
Sets the old_dof_object
to nullptr.
Referenced by libMesh::DofObject::~DofObject().
true
if this element is "close" to the point p, where "close" is determined by the tolerance tol. void libMesh::Elem::coarsen | ( | ) |
Coarsen the element.
This function is non-virtual since it is the same for all element types.
|
staticprotected |
Definition at line 2882 of file elem.h.
Referenced by libMesh::Edge::key().
|
staticprotected |
Definition at line 2890 of file elem.h.
References libMesh::Utility::hashword2(), and swap().
|
staticprotected |
Definition at line 2902 of file elem.h.
References libMesh::Utility::hashword(), and swap().
|
staticprotected |
Definition at line 2936 of file elem.h.
References libMesh::Utility::hashword(), and swap().
|
pure virtual |
Implemented in libMesh::NodeElem, libMesh::Pyramid14, libMesh::InfHex18, libMesh::Prism18, libMesh::Hex27, libMesh::InfHex16, libMesh::Prism15, libMesh::Pyramid13, libMesh::Hex20, libMesh::Tet10, libMesh::Quad9, libMesh::Tri6, libMesh::InfPrism12, libMesh::Tet4, libMesh::Quad8, libMesh::InfQuad6, libMesh::InfPrism6, libMesh::InfHex8, libMesh::Hex8, libMesh::Prism6, libMesh::Pyramid5, libMesh::Tri3, libMesh::InfQuad4, libMesh::Quad4, libMesh::Edge4, libMesh::Edge3, libMesh::Edge2, libMesh::InfEdge2, and libMesh::RemoteElem.
bool libMesh::Elem::contains_edge_of | ( | const Elem * | e | ) | const |
true
if an edge of e
is contained in this element. (Internally, this is done by checking whether at least two vertices of e
are contained in this element). true
if the point p is contained in this element, false otherwise.For linear elements, performs an initial tight bounding box check (as an optimization step) and (if that passes) then uses the user-defined tolerance "tol" in a call to inverse_map() to actually test if the point is in the element. For quadratic elements, the bounding box optimization is skipped, and only the inverse_map() steps are performed.
Reimplemented in libMesh::Tet4, libMesh::InfHex, libMesh::Tri3, libMesh::InfPrism, and libMesh::InfQuad4.
Referenced by FETest< order, family, elem_type >::testGradU(), FETest< order, family, elem_type >::testGradUComp(), and FETest< order, family, elem_type >::testU().
bool libMesh::Elem::contains_vertex_of | ( | const Elem * | e | ) | const |
true
if a vertex of e
is contained in this element. void libMesh::Elem::contract | ( | ) |
Contract an active element, i.e.
remove pointers to any subactive children. This should only be called via MeshRefinement::contract, which will also remove subactive children from the mesh.
|
inherited |
Print our buffer for debugging.
|
pure virtual |
Implemented in libMesh::NodeElem, libMesh::RemoteElem, libMesh::Pyramid14, libMesh::Prism15, libMesh::Prism18, libMesh::Pyramid13, libMesh::Hex20, libMesh::Hex27, libMesh::Tet10, libMesh::Tet4, libMesh::InfHex16, libMesh::Tri3, libMesh::Tri6, libMesh::InfPrism12, libMesh::Hex8, libMesh::Edge4, libMesh::Edge3, libMesh::InfPrism6, libMesh::Edge2, libMesh::Quad8, libMesh::Quad9, libMesh::InfEdge2, libMesh::InfHex8, libMesh::Prism6, libMesh::Pyramid5, libMesh::InfQuad6, libMesh::InfQuad4, libMesh::Quad4, libMesh::InfHex18, and libMesh::Tri3Subdivision.
|
pure virtual |
Implemented in libMesh::RemoteElem, libMesh::InfQuad, libMesh::NodeElem, libMesh::InfCell, libMesh::Edge, libMesh::Cell, and libMesh::Face.
Referenced by level().
|
staticinherited |
|
staticinherited |
|
inherited |
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 833 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::OldSolutionValue< Output, point_output >::eval_at_node(), DofObjectTest< DerivedClass >::testJensEftangBug(), and DofObjectTest< DerivedClass >::testManualDofCalculation().
|
inherited |
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 854 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().
IntRange< unsigned short > libMesh::Elem::edge_index_range | ( | ) | const |
|
pure virtual |
Implemented in libMesh::Hex27, libMesh::Prism18, libMesh::InfHex18, libMesh::Pyramid14, libMesh::NodeElem, libMesh::Hex20, libMesh::Prism15, libMesh::Tet10, libMesh::Tet4, libMesh::InfHex16, libMesh::Quad9, libMesh::Tri6, libMesh::Pyramid13, libMesh::InfPrism12, libMesh::Quad8, libMesh::InfQuad6, libMesh::Edge3, libMesh::RemoteElem, libMesh::Hex8, libMesh::Edge4, libMesh::Prism6, libMesh::Tri3, libMesh::InfHex8, libMesh::InfPrism6, libMesh::Pyramid5, libMesh::Edge2, libMesh::InfQuad4, libMesh::Quad4, and libMesh::InfEdge2.
|
virtual |
Some element types may use a different embedding matrix depending on their geometric characteristics.
Reimplemented in libMesh::Tet.
|
staticinherited |
Methods to enable/disable the reference counter output from print_info()
|
staticinherited |
Methods to enable/disable the reference counter output from print_info()
void libMesh::Elem::family_tree | ( | std::vector< const Elem *> & | family, |
bool | reset = true |
||
) | const |
Fills the vector family
with the children of this element, recursively.
Calling this method on a twice-refined element will give you the element itself, its direct children, and their children, etc... When the optional parameter reset
is true, the vector will be cleared before the element and its descendants are added.
The family tree only includes ancestor and active elements. To include subactive elements as well, use total_family_tree().
void libMesh::Elem::family_tree | ( | std::vector< Elem *> & | family, |
bool | reset = true |
||
) |
Non-const version of function above; fills a vector of non-const pointers.
void libMesh::Elem::family_tree_by_neighbor | ( | std::vector< const Elem *> & | family, |
const Elem * | neighbor, | ||
bool | reset = true |
||
) | const |
Same as the family_tree()
member, but only adds elements which are next to neighbor
.
void libMesh::Elem::family_tree_by_neighbor | ( | std::vector< Elem *> & | family, |
Elem * | neighbor, | ||
bool | reset = true |
||
) |
Non-const version of function above; fills a vector of non-const pointers.
void libMesh::Elem::family_tree_by_side | ( | std::vector< const Elem *> & | family, |
unsigned int | side, | ||
bool | reset = true |
||
) | const |
Same as the family_tree()
member, but only adds elements which are next to side
.
void libMesh::Elem::family_tree_by_side | ( | std::vector< Elem *> & | family, |
unsigned int | side, | ||
bool | reset = true |
||
) |
Non-const version of function above; fills a vector of non-const pointers.
void libMesh::Elem::family_tree_by_subneighbor | ( | std::vector< const Elem *> & | family, |
const Elem * | neighbor, | ||
const Elem * | subneighbor, | ||
bool | reset = true |
||
) | const |
Same as the family_tree()
member, but only adds elements which are next to subneighbor
.
Only applicable when this->has_neighbor(neighbor)
and neighbor->is_ancestor(subneighbor)
void libMesh::Elem::family_tree_by_subneighbor | ( | std::vector< Elem *> & | family, |
Elem * | neighbor, | ||
Elem * | subneighbor, | ||
bool | reset = true |
||
) |
Non-const version of function above; fills a vector of non-const pointers.
void libMesh::Elem::find_edge_neighbors | ( | const Point & | p1, |
const Point & | p2, | ||
std::set< const Elem *> & | neighbor_set | ||
) | const |
This function finds all active elements in the same manifold as this element which touch the current active element along the whole edge defined by the two points p1
and p2
.
void libMesh::Elem::find_edge_neighbors | ( | std::set< const Elem *> & | neighbor_set | ) | const |
This function finds all active elements in the same manifold as this element which touch the current active element along any edge (more precisely, at at least two points).
In this case, elements are included even if they do not touch a whole edge of this element.
void libMesh::Elem::find_interior_neighbors | ( | std::set< const Elem *> & | neighbor_set | ) | const |
This function finds all active elements (not including this one) in the parent manifold of this element whose intersection with this element has non-zero measure.
void libMesh::Elem::find_interior_neighbors | ( | std::set< Elem *> & | neighbor_set | ) |
Non-const version of function above that fills up a vector of non-const Elem pointers instead.
void libMesh::Elem::find_point_neighbors | ( | const Point & | p, |
std::set< const Elem *> & | neighbor_set | ||
) | const |
This function finds all active elements (including this one) which are in the same manifold as this element and which touch the current active element at the specified point, which should be a point in the current element.
Elements which are not "in the same manifold" (e.g. the interior_parent of a boundary element) will not be found with this method.
Elements which overlap the specified point but which are only connected to the current element via elements which do not overlap that point (e.g. in a folded or tangled mesh) are not considered to "touch" the current element and will not be found with this method.
void libMesh::Elem::find_point_neighbors | ( | std::set< const Elem *> & | neighbor_set | ) | const |
This function finds all active elements (including this one) in the same manifold as this element which touch this active element at any point.
void libMesh::Elem::find_point_neighbors | ( | std::set< const Elem *> & | neighbor_set, |
const Elem * | start_elem | ||
) | const |
This function finds all active elements (including this one) in the same manifold as start_elem (which must be active and must touch this element) which touch this element at any point.
Non-const version of function above.
Fills a set of non-const Elem pointers.
INVALID_ELEM
for first-order or other elements that cannot be converted into lower order equivalents.For example, when this
is a TET10
, then TET4
is returned.
|
staticinherited |
Gets a string containing the reference information.
|
staticinherited |
Gets a string containing the reference information.
std::string libMesh::Elem::get_info | ( | ) | const |
Prints relevant information about the element to a string.
Node * libMesh::Elem::get_node | ( | const unsigned int | i | ) | const |
Node
i
.Definition at line 2096 of file elem.h.
References node_ptr().
unsigned int libMesh::Elem::get_node_index | ( | const Node * | node_ptr | ) | const |
Node
pointer node_ptr
, or invalid_id
if node_ptr
is not a local node. Definition at line 2112 of file elem.h.
References _nodes, libMesh::invalid_uint, n_nodes(), and node_ptr().
const Node *const * libMesh::Elem::get_nodes | ( | ) | const |
Definition at line 2049 of file elem.h.
References _nodes.
void libMesh::Elem::hack_p_level | ( | const unsigned int | p | ) |
Sets the value of the p-refinement level for the element without altering the p-level of its ancestors.
Definition at line 2867 of file elem.h.
References _p_level, JUST_REFINED, and p_refinement_flag().
|
virtual |
true
if the element map is definitely affine (i.e. the same at every quadrature point) within numerical tolerances. Reimplemented in libMesh::NodeElem, libMesh::Pyramid14, libMesh::Prism15, libMesh::Prism18, libMesh::Pyramid13, libMesh::Hex20, libMesh::Hex27, libMesh::Tet10, libMesh::Tet4, libMesh::Tri6, libMesh::Hex8, libMesh::Quad8, libMesh::Quad9, libMesh::Tri3, libMesh::Edge4, libMesh::Prism6, libMesh::Pyramid5, libMesh::Edge3, libMesh::Quad4, libMesh::Edge2, and libMesh::Tri3Subdivision.
bool libMesh::Elem::has_ancestor_children | ( | ) | const |
true
if the element has any descendants other than its immediate children, false
otherwise, or if AMR is disabled. Definition at line 2570 of file elem.h.
References _children, and child_ref_range().
bool libMesh::Elem::has_children | ( | ) | const |
true
if the element has any children (active or not), false
otherwise, or if AMR is disabled. Definition at line 2556 of file elem.h.
References _children.
Referenced by set_child(), subactive(), libMesh::Parallel::sync_element_data_by_parent_id(), and which_child_am_i().
|
inherited |
true
if any system has variables which have been assigned, false
otherwise. Definition at line 913 of file dof_object.h.
References libMesh::invalid_uint, libMesh::DofObject::n_systems(), and libMesh::DofObject::n_vars().
bool libMesh::Elem::has_neighbor | ( | const Elem * | elem | ) | const |
true
if the element elem
in question is a neighbor of this element, false
otherwise. Definition at line 2193 of file elem.h.
References neighbor_ptr_range().
Referenced by on_boundary().
bool libMesh::Elem::has_topological_neighbor | ( | const Elem * | elem, |
const MeshBase & | mesh, | ||
const PointLocatorBase & | point_locator, | ||
const PeriodicBoundaries * | pb | ||
) | const |
true
if the element elem
in question is a neighbor or topological neighbor of this element, false
otherwise.
|
virtual |
Referenced by libMesh::OldSolutionBase< Output, point_output >::check_old_context().
|
virtual |
|
inherited |
id
for this DofObject
Definition at line 655 of file dof_object.h.
References libMesh::DofObject::_id, and libMesh::DofObject::valid_id().
Referenced by libMesh::Node::build(), node_id(), libMesh::CompareElemIdsByLevel::operator()(), libMesh::Parallel::sync_dofobject_data_by_id(), libMesh::Parallel::sync_element_data_by_parent_id(), libMesh::Parallel::sync_node_data_by_element_id_once(), and DofObjectTest< DerivedClass >::testSetId().
|
protectedinherited |
Increments the construction counter.
Should be called in the constructor of any derived class that will be reference counted.
Definition at line 181 of file reference_counter.h.
References libMesh::ReferenceCounter::_counts, libMesh::Quality::name(), and libMesh::Threads::spin_mtx.
Referenced by libMesh::ReferenceCountedObject< RBParametrized >::ReferenceCountedObject().
|
protectedinherited |
Increments the construction counter.
Should be called in the constructor of any derived class that will be reference counted.
Definition at line 181 of file reference_counter.h.
References libMesh::ReferenceCounter::_counts, libMesh::Quality::name(), and libMesh::Threads::spin_mtx.
Referenced by libMesh::ReferenceCountedObject< RBParametrized >::ReferenceCountedObject().
|
protectedinherited |
Increments the destruction counter.
Should be called in the destructor of any derived class that will be reference counted.
Definition at line 194 of file reference_counter.h.
References libMesh::ReferenceCounter::_counts, libMesh::Quality::name(), and libMesh::Threads::spin_mtx.
Referenced by libMesh::ReferenceCountedObject< RBParametrized >::~ReferenceCountedObject().
|
protectedinherited |
Increments the destruction counter.
Should be called in the destructor of any derived class that will be reference counted.
Definition at line 194 of file reference_counter.h.
References libMesh::ReferenceCounter::_counts, libMesh::Quality::name(), and libMesh::Threads::spin_mtx.
Referenced by libMesh::ReferenceCountedObject< RBParametrized >::~ReferenceCountedObject().
|
pure virtual |
true
if the element is an infinite element, false
otherwise. Implemented in libMesh::NodeElem, libMesh::InfQuad, libMesh::RemoteElem, libMesh::Edge3, libMesh::Edge4, libMesh::Edge2, libMesh::InfEdge2, libMesh::Face, libMesh::Cell, and libMesh::InfCell.
Referenced by is_mid_infinite_edge_node().
const Elem* libMesh::Elem::interior_parent | ( | ) | const |
In some cases it is desirable to extract the boundary (or a subset thereof) of a D-dimensional mesh as a (D-1)-dimensional manifold. In this case we may want to know the 'parent' element from which the manifold elements were extracted. We can easily do that for the level-0 manifold elements by storing the D-dimensional parent. This method provides access to that element.
This method is not safe to call if this->dim() == LIBMESH_DIM; in such cases no data storage for an interior parent pointer has been allocated.
Elem* libMesh::Elem::interior_parent | ( | ) |
|
inherited |
Invalidates all the indices for this DofObject
.
Definition at line 611 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().
|
inherited |
Sets all degree of freedom numbers to invalid_id
.
Definition at line 575 of file dof_object.h.
References libMesh::DofObject::invalid_id, 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().
|
inherited |
Sets the id to invalid_id
.
Definition at line 595 of file dof_object.h.
References libMesh::DofObject::invalid_id, and libMesh::DofObject::set_id().
Referenced by libMesh::DofObject::invalidate(), and DofObjectTest< DerivedClass >::testInvalidateId().
|
inherited |
Sets the processor id to invalid_processor_id
.
Definition at line 603 of file dof_object.h.
References libMesh::DofObject::invalid_processor_id, and libMesh::DofObject::processor_id().
Referenced by libMesh::DofObject::invalidate(), and DofObjectTest< DerivedClass >::testInvalidateProcId().
bool libMesh::Elem::is_ancestor_of | ( | const Elem * | descendant | ) | const |
true
if descendant
is a child of this
, or a child of a child of this
, etc., false
otherwise or if AMR is disabled. Definition at line 2586 of file elem.h.
References parent().
|
virtual |
true
if the specified child is on the specified edge.
|
pure virtual |
true
if the specified child is on the specified side. Implemented in libMesh::NodeElem, libMesh::RemoteElem, libMesh::InfQuad, libMesh::Tet10, libMesh::Tet4, libMesh::InfHex, libMesh::InfPrism, libMesh::Tri, libMesh::Quad, libMesh::Pyramid, libMesh::Prism, libMesh::Edge, and libMesh::Hex.
|
pure virtual |
true
if the specified (local) node number is an edge. Implemented in libMesh::NodeElem, libMesh::RemoteElem, libMesh::InfHex18, libMesh::Pyramid14, libMesh::InfHex16, libMesh::Prism15, libMesh::Prism18, libMesh::Pyramid13, libMesh::Hex20, libMesh::Hex27, libMesh::InfPrism12, libMesh::Tet10, libMesh::InfPrism6, libMesh::InfHex8, libMesh::Tri6, libMesh::Hex8, libMesh::Tet4, libMesh::InfQuad6, libMesh::InfEdge2, libMesh::InfQuad4, libMesh::Edge4, libMesh::Quad8, libMesh::Quad9, libMesh::Tri3, libMesh::Edge3, libMesh::Prism6, libMesh::Pyramid5, libMesh::Quad4, and libMesh::Edge2.
|
pure virtual |
true
if the specified edge is on the specified side. Implemented in libMesh::NodeElem, libMesh::InfQuad, libMesh::RemoteElem, libMesh::InfHex, libMesh::InfPrism, libMesh::Pyramid, libMesh::Prism, libMesh::Edge, libMesh::Hex, libMesh::Tet, and libMesh::Face.
|
pure virtual |
true
if the specified (local) node number is a face. Implemented in libMesh::NodeElem, libMesh::RemoteElem, libMesh::InfHex18, libMesh::Pyramid14, libMesh::InfHex16, libMesh::Prism15, libMesh::Prism18, libMesh::Pyramid13, libMesh::Hex20, libMesh::Hex27, libMesh::InfPrism12, libMesh::Tet10, libMesh::InfPrism6, libMesh::InfHex8, libMesh::Tri6, libMesh::Hex8, libMesh::Tet4, libMesh::InfQuad6, libMesh::InfEdge2, libMesh::InfQuad4, libMesh::Edge4, libMesh::Quad8, libMesh::Quad9, libMesh::Tri3, libMesh::Edge3, libMesh::Prism6, libMesh::Pyramid5, libMesh::Quad4, and libMesh::Edge2.
|
virtual |
true
if the Lagrange shape functions on this element are linear. Reimplemented in libMesh::NodeElem, libMesh::Tet4, libMesh::Tri3, libMesh::Edge2, and libMesh::Tri3Subdivision.
|
virtual |
true
if the specified (local) node number is a "mid-edge" node on an infinite element edge.This is false for all nodes on non-infinite elements, so we won't make it pure virtual, to simplify their code.
Reimplemented in libMesh::InfEdge2, libMesh::InfQuad, libMesh::InfPrism, and libMesh::InfHex.
Definition at line 1636 of file elem.h.
References infinite().
|
pure virtual |
true
if the specified (local) node number is on the specified edge. Implemented in libMesh::NodeElem, libMesh::RemoteElem, libMesh::InfHex18, libMesh::Pyramid14, libMesh::InfHex16, libMesh::Prism15, libMesh::Prism18, libMesh::Pyramid13, libMesh::Hex20, libMesh::Hex27, libMesh::InfPrism12, libMesh::Tet10, libMesh::InfPrism6, libMesh::InfHex8, libMesh::Tri6, libMesh::Hex8, libMesh::Tet4, libMesh::InfQuad6, libMesh::InfEdge2, libMesh::InfQuad4, libMesh::Quad8, libMesh::Quad9, libMesh::Tri3, libMesh::Edge4, libMesh::Prism6, libMesh::Pyramid5, libMesh::Edge3, libMesh::Quad4, and libMesh::Edge2.
|
pure virtual |
true
if the specified (local) node number is on the specified side. Implemented in libMesh::NodeElem, libMesh::RemoteElem, libMesh::InfHex18, libMesh::Pyramid14, libMesh::InfHex16, libMesh::Prism15, libMesh::Prism18, libMesh::Pyramid13, libMesh::Hex20, libMesh::Hex27, libMesh::InfPrism12, libMesh::Tet10, libMesh::InfPrism6, libMesh::InfHex8, libMesh::Tri6, libMesh::Hex8, libMesh::Tet4, libMesh::InfQuad6, libMesh::InfEdge2, libMesh::InfQuad4, libMesh::Edge4, libMesh::Quad8, libMesh::Quad9, libMesh::Tri3, libMesh::Edge3, libMesh::Prism6, libMesh::Pyramid5, libMesh::Quad4, and libMesh::Edge2.
Referenced by which_side_am_i().
|
virtual |
true
if this element is remote, false otherwise.A remote element (see RemoteElem
) is a syntactic convenience – it is a placeholder for an element which exists on some other processor. Local elements are required to have valid neighbors, and these ghost elements may have remote neighbors for data structure consistency. The use of remote elements helps ensure that any element we may access has a nullptr
neighbor only if it lies on the physical boundary of the domain.
Reimplemented in libMesh::RemoteElem.
bool libMesh::Elem::is_semilocal | ( | const processor_id_type | my_pid | ) | const |
true
if this element is semilocal to the calling processor, which must specify its rank.
|
pure virtual |
true
if the specified (local) node number is a vertex. Implemented in libMesh::NodeElem, libMesh::RemoteElem, libMesh::InfHex18, libMesh::Pyramid14, libMesh::InfHex16, libMesh::Prism15, libMesh::Prism18, libMesh::Pyramid13, libMesh::Hex20, libMesh::Hex27, libMesh::InfPrism12, libMesh::Tet10, libMesh::InfPrism6, libMesh::InfHex8, libMesh::Tri6, libMesh::Hex8, libMesh::Tet4, libMesh::InfQuad6, libMesh::InfEdge2, libMesh::InfQuad4, libMesh::Edge4, libMesh::Quad8, libMesh::Quad9, libMesh::Tri3, libMesh::Edge3, libMesh::Prism6, libMesh::Pyramid5, libMesh::Quad4, and libMesh::Edge2.
Referenced by is_vertex_on_child().
|
virtual |
true
if the specified child has a vertex at the specified (child-local) node number. Except in odd cases like pyramid refinement the child will have the same local structure as the parent element. Definition at line 707 of file elem.h.
References is_vertex().
|
virtual |
true
if this element has a vertex at the specified (child-local) node number n
of the specified child c
.
|
pure virtual |
s
side of this element. The id is not necessarily unique, but should be close. This is particularly useful in the MeshBase::find_neighbors()
routine. Implemented in libMesh::InfHex18, libMesh::Pyramid14, libMesh::Prism18, libMesh::Hex27, libMesh::InfQuad, libMesh::Tri6, libMesh::Quad8, libMesh::Quad9, libMesh::InfHex, libMesh::Quad, libMesh::InfQuad6, libMesh::InfPrism, libMesh::Edge, libMesh::Hex, libMesh::Pyramid, libMesh::Tri, libMesh::Prism, libMesh::NodeElem, libMesh::Tet, and libMesh::RemoteElem.
Referenced by libMesh::ElemHashUtils::operator()().
|
virtual |
Reimplemented in libMesh::Tet4, libMesh::Edge3, libMesh::Edge4, libMesh::Edge2, libMesh::Quad9, libMesh::Quad, and libMesh::Tri.
Real libMesh::Elem::length | ( | const unsigned int | n1, |
const unsigned int | n2 | ||
) | const |
Useful for computing the lengths of the sides of elements.
unsigned int libMesh::Elem::level | ( | ) | const |
If the element's parent is nullptr
then by convention it is at level 0, otherwise it is simply at one level greater than its parent.
Definition at line 2649 of file elem.h.
References dim(), level(), and parent().
Referenced by level(), libMesh::CompareElemIdsByLevel::operator()(), top_parent(), and which_neighbor_am_i().
void libMesh::Elem::libmesh_assert_valid_neighbors | ( | ) | const |
Checks for consistent neighbor links on this element.
void libMesh::Elem::libmesh_assert_valid_node_pointers | ( | ) | const |
Checks for a valid id and pointers to nodes with valid ids on this element.
unsigned int libMesh::Elem::local_node | ( | const dof_id_type | i | ) | const |
Definition at line 2037 of file elem.h.
References libMesh::invalid_uint, n_nodes(), and node_id().
|
virtual |
The base class implementation determines a bounding box for the element nodes, which should be sufficient for first order finite elements. Higher order geometric elements will need to override with an implementation which takes curved elements into account.
Reimplemented in libMesh::Quad9, libMesh::Tri6, libMesh::Quad8, libMesh::Hex8, libMesh::Prism6, libMesh::Tri3, libMesh::Pyramid5, libMesh::Edge3, libMesh::Quad4, libMesh::Edge4, and libMesh::Cell.
void libMesh::Elem::make_links_to_me_local | ( | unsigned int | n | ) |
Resets the appropriate neighbor pointers of our nth neighbor (and its descendants, if appropriate) to point to this Elem instead of to the global remote_elem.
Used by the library when a formerly remote element is being added to the local processor.
void libMesh::Elem::make_links_to_me_remote | ( | ) |
Resets this element's neighbors' appropriate neighbor pointers and its parent's and children's appropriate pointers to point to the global remote_elem instead of this.
Used by the library before an element becomes remote on the local processor.
|
pure virtual |
unsigned int libMesh::Elem::max_descendant_p_level | ( | ) | const |
Definition at line 2802 of file elem.h.
References _p_level, active(), child_ref_range(), std::max(), p_level(), and subactive().
unsigned int libMesh::Elem::min_new_p_level_by_neighbor | ( | const Elem * | neighbor, |
unsigned int | current_min | ||
) | const |
neighbor
. unsigned int libMesh::Elem::min_p_level_by_neighbor | ( | const Elem * | neighbor, |
unsigned int | current_min | ||
) | const |
neighbor
.
|
pure virtual |
Implemented in libMesh::RemoteElem, libMesh::InfQuad, libMesh::InfHex, libMesh::Tri, libMesh::Quad, libMesh::InfPrism, libMesh::Pyramid, libMesh::NodeElem, libMesh::Prism, libMesh::Tet, libMesh::Edge, and libMesh::Hex.
Referenced by child_ref_range(), and which_child_am_i().
|
inherited |
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 803 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::DofObject::dof_number(), libMesh::OldSolutionValue< Output, point_output >::eval_at_node(), and libMesh::DofObject::n_dofs().
|
inherited |
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 816 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::DofObject::dof_number(), libMesh::DofObject::invalidate_dofs(), and libMesh::DofObject::n_comp().
|
inherited |
s
for this object. Optionally only counts degrees of freedom for variable number var
Definition at line 633 of file dof_object.h.
References libMesh::invalid_uint, libMesh::DofObject::n_comp(), libMesh::DofObject::n_systems(), and libMesh::DofObject::n_vars().
|
pure virtual |
Implemented in libMesh::RemoteElem, libMesh::InfQuad, libMesh::InfHex, libMesh::Tri, libMesh::Quad, libMesh::InfPrism, libMesh::Pyramid, libMesh::NodeElem, libMesh::Prism, libMesh::Tet, libMesh::Edge, and libMesh::Hex.
Referenced by edge_index_range().
|
pure virtual |
Implemented in libMesh::RemoteElem, libMesh::InfQuad, libMesh::InfHex, libMesh::InfPrism, libMesh::Pyramid, libMesh::NodeElem, libMesh::Prism, libMesh::Tet, libMesh::Edge, libMesh::Hex, and libMesh::Face.
unsigned int libMesh::Elem::n_neighbors | ( | ) | const |
Only face (or edge in 2D) neighbors are stored, so this method returns n_sides(). At one point we intended to allow derived classes to override this, but too much current libMesh code assumes n_neighbors==n_sides.
Definition at line 657 of file elem.h.
References n_sides().
Referenced by _last_side(), neighbor_ptr(), neighbor_ptr_range(), and set_neighbor().
|
pure virtual |
Implemented in libMesh::RemoteElem, libMesh::Prism15, libMesh::Prism18, libMesh::Hex20, libMesh::Hex27, libMesh::Pyramid14, libMesh::InfHex16, libMesh::InfHex18, libMesh::Pyramid13, libMesh::Tri, libMesh::Tet10, libMesh::Quad, libMesh::InfPrism12, libMesh::Tri6, libMesh::Hex8, libMesh::Tet4, libMesh::InfPrism6, libMesh::Pyramid, libMesh::NodeElem, libMesh::InfHex8, libMesh::Edge4, libMesh::Quad8, libMesh::Quad9, libMesh::Edge3, libMesh::Prism, libMesh::InfQuad6, libMesh::InfQuad4, and libMesh::Edge.
Referenced by get_node_index(), local_node(), libMesh::Hex::master_point(), libMesh::Tet::master_point(), libMesh::InfPrism::master_point(), libMesh::InfHex::master_point(), libMesh::InfQuad::master_point(), n_nodes_in_child(), node_id(), node_index_range(), node_ptr(), node_ref_range(), point(), set_node(), libMesh::Parallel::sync_node_data_by_element_id_once(), and which_side_am_i().
|
virtual |
|
staticinherited |
Prints the number of outstanding (created, but not yet destroyed) objects.
Definition at line 83 of file reference_counter.h.
References libMesh::ReferenceCounter::_n_objects.
|
staticinherited |
Prints the number of outstanding (created, but not yet destroyed) objects.
Definition at line 83 of file reference_counter.h.
References libMesh::ReferenceCounter::_n_objects.
|
virtual |
This method is useful when converting linear elements to quadratic elements.
n
has to be greater than or equal to this->n_vertices()
. Reimplemented in libMesh::InfHex18, libMesh::Pyramid14, libMesh::Hex27, libMesh::Prism18, libMesh::InfHex16, libMesh::Pyramid13, libMesh::Hex20, libMesh::Prism15, libMesh::Tet10, libMesh::Quad9, libMesh::Tri6, libMesh::InfPrism12, libMesh::Quad8, libMesh::InfQuad6, libMesh::Edge4, and libMesh::Edge3.
|
pure virtual |
Implemented in libMesh::RemoteElem, libMesh::InfQuad, libMesh::Tri, libMesh::Quad, libMesh::InfHex, libMesh::Pyramid, libMesh::NodeElem, libMesh::InfPrism, libMesh::Prism, libMesh::Tet, libMesh::Edge, and libMesh::Hex.
Referenced by n_neighbors(), side_index_range(), simple_build_side_ptr(), simple_side_ptr(), which_neighbor_am_i(), and which_side_am_i().
|
pure virtual |
Implemented in libMesh::RemoteElem, libMesh::NodeElem, libMesh::Pyramid14, libMesh::InfHex16, libMesh::InfHex18, libMesh::Prism15, libMesh::Prism18, libMesh::Pyramid13, libMesh::Hex20, libMesh::Hex27, libMesh::InfPrism12, libMesh::Tet10, libMesh::InfPrism6, libMesh::InfHex8, libMesh::Tri6, libMesh::Hex8, libMesh::Tet4, libMesh::InfQuad6, libMesh::InfEdge2, libMesh::InfQuad4, libMesh::Edge4, libMesh::Quad8, libMesh::Quad9, libMesh::Tri3, libMesh::Edge3, libMesh::Prism6, libMesh::Pyramid5, libMesh::Quad4, and libMesh::Edge2.
|
inherited |
DofObject
Definition at line 749 of file dof_object.h.
References libMesh::DofObject::_idx_buf.
Referenced by libMesh::DofObject::clear_dofs(), libMesh::DofObject::dof_number(), libMesh::DofObject::end_idx(), 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::DofObject::set_vg_dof_base(), libMesh::DofObject::start_idx(), DofObjectTest< DerivedClass >::testSetNSystems(), and libMesh::DofObject::vg_dof_base().
|
inherited |
VariableGroup
variable groups associated with system s
for this DofObject
Definition at line 758 of file dof_object.h.
References libMesh::DofObject::end_idx(), libMesh::DofObject::n_systems(), and libMesh::DofObject::start_idx().
Referenced by libMesh::DofObject::dof_number(), libMesh::DofObject::invalidate_dofs(), libMesh::DofObject::n_comp_group(), libMesh::DofObject::n_vars(), libMesh::DofObject::set_vg_dof_base(), DofObjectTest< DerivedClass >::testSetNVariableGroups(), libMesh::DofObject::var_to_vg(), libMesh::DofObject::var_to_vg_and_offset(), and libMesh::DofObject::vg_dof_base().
|
inherited |
Variable
variables associated with VariableGroup
vg
in system s
for this DofObject
Definition at line 768 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::dof_number(), libMesh::OldSolutionValue< Output, point_output >::eval_at_node(), libMesh::DofObject::has_dofs(), libMesh::DofObject::n_comp(), libMesh::DofObject::n_dofs(), libMesh::DofObject::n_vars(), libMesh::DofObject::system_var_to_vg_var(), DofObjectTest< DerivedClass >::testSetNVariableGroups(), libMesh::DofObject::var_to_vg(), and libMesh::DofObject::var_to_vg_and_offset().
|
inherited |
Definition at line 785 of file dof_object.h.
References libMesh::DofObject::n_systems(), libMesh::DofObject::n_var_groups(), and libMesh::DofObject::n_vars().
|
pure virtual |
Implemented in libMesh::RemoteElem, libMesh::InfQuad, libMesh::Tri, libMesh::Quad, libMesh::InfHex, libMesh::Pyramid, libMesh::NodeElem, libMesh::InfPrism, libMesh::Prism, libMesh::Tet, libMesh::Edge, and libMesh::Hex.
Referenced by libMesh::InfCell::origin().
Elem * libMesh::Elem::neighbor | ( | const unsigned int | i | ) | const |
Definition at line 2171 of file elem.h.
References neighbor_ptr().
const Elem * libMesh::Elem::neighbor_ptr | ( | unsigned int | i | ) | const |
nullptr
if MeshBase::find_neighbors()
has not been called.MeshBase::find_neighbors()
has been called and this function still returns nullptr
, then the side is on a boundary of the domain. Definition at line 2150 of file elem.h.
References _elemlinks, and n_neighbors().
Referenced by neighbor(), libMesh::Elem::SideIter::side_on_boundary(), and which_neighbor_am_i().
Elem * libMesh::Elem::neighbor_ptr | ( | unsigned int | i | ) |
Definition at line 2160 of file elem.h.
References _elemlinks, and n_neighbors().
SimpleRange< Elem::NeighborPtrIter > libMesh::Elem::neighbor_ptr_range | ( | ) |
Returns a range with all neighbors of an element, usable in range-based for loops.
The exact type of the return value here may be subject to change in future libMesh releases, but the iterators will always dereference to produce a pointer to a neighbor element (or a null pointer, for sides which have no neighbors).
Definition at line 3116 of file elem.h.
References _elemlinks, and n_neighbors().
Referenced by child_neighbor(), and has_neighbor().
SimpleRange< Elem::ConstNeighborPtrIter > libMesh::Elem::neighbor_ptr_range | ( | ) | const |
Definition at line 3123 of file elem.h.
References _elemlinks, and n_neighbors().
dof_id_type libMesh::Elem::node | ( | const unsigned int | i | ) | const |
dof_id_type libMesh::Elem::node_id | ( | const unsigned int | i | ) | const |
Node
i
. Definition at line 2014 of file elem.h.
References _nodes, libMesh::DofObject::id(), libMesh::DofObject::invalid_id, and n_nodes().
Referenced by libMesh::Edge::key(), local_node(), and node().
IntRange< unsigned short > libMesh::Elem::node_index_range | ( | ) | const |
const Node * libMesh::Elem::node_ptr | ( | const unsigned int | i | ) | const |
Node
i
. Definition at line 2057 of file elem.h.
References _nodes, and n_nodes().
Referenced by get_node(), get_node_index(), node_ref(), simple_build_side_ptr(), and simple_side_ptr().
Node * libMesh::Elem::node_ptr | ( | const unsigned int | i | ) |
const Node & libMesh::Elem::node_ref | ( | const unsigned int | i | ) | const |
Node
i
. Definition at line 2079 of file elem.h.
References node_ptr().
Referenced by libMesh::Parallel::sync_node_data_by_element_id_once().
Node & libMesh::Elem::node_ref | ( | const unsigned int | i | ) |
Node
i
. Definition at line 2087 of file elem.h.
References node_ptr().
SimpleRange< Elem::NodeRefIter > libMesh::Elem::node_ref_range | ( | ) |
Returns a range with all nodes of an element, usable in range-based for loops.
The exact type of the return value here may be subject to change in future libMesh releases, but the iterators will always dereference to produce a reference to a Node.
Definition at line 2230 of file elem.h.
References _nodes, and n_nodes().
SimpleRange< Elem::ConstNodeRefIter > libMesh::Elem::node_ref_range | ( | ) | const |
Definition at line 2239 of file elem.h.
References _nodes, and n_nodes().
|
pure virtual |
Implemented in libMesh::NodeElem, libMesh::Edge, libMesh::RemoteElem, libMesh::InfHex18, libMesh::Pyramid14, libMesh::InfHex16, libMesh::Prism15, libMesh::Prism18, libMesh::Pyramid13, libMesh::Hex20, libMesh::Hex27, libMesh::InfPrism12, libMesh::Tet10, libMesh::InfPrism6, libMesh::InfHex8, libMesh::Tri6, libMesh::Hex8, libMesh::Tet4, libMesh::InfQuad6, libMesh::InfEdge2, libMesh::InfQuad4, libMesh::Quad8, libMesh::Quad9, libMesh::Tri3, libMesh::Prism6, libMesh::Pyramid5, and libMesh::Quad4.
void libMesh::Elem::nullify_neighbors | ( | ) |
Replaces this element with nullptr
for all of its neighbors.
This is useful when deleting an element.
bool libMesh::Elem::on_boundary | ( | ) | const |
true
if this element has a side coincident with a boundary (indicated by a nullptr
neighbor), false
otherwise. Definition at line 2432 of file elem.h.
References has_neighbor().
bool libMesh::Elem::operator== | ( | const Elem & | rhs | ) | const |
true
if two elements are identical, false otherwise. This is true if the elements are connected to identical global nodes, regardless of how those nodes might be numbered local to the elements.
|
virtual |
opposite_side(s)
(for a tensor product element), or throws an error otherwise. Reimplemented in libMesh::Quad, libMesh::Edge, and libMesh::Hex.
|
virtual |
s
(for a tensor product element), or throws an error otherwise. Reimplemented in libMesh::Quad, libMesh::Edge, and libMesh::Hex.
|
virtual |
Currently, all infinite elements used in a mesh share the same origin. Override this in infinite element classes.
Reimplemented in libMesh::InfQuad, libMesh::InfEdge2, and libMesh::InfCell.
unsigned int libMesh::Elem::p_level | ( | ) | const |
Definition at line 2683 of file elem.h.
References _p_level.
Referenced by Elem(), max_descendant_p_level(), set_p_level(), and set_p_refinement_flag().
Elem::RefinementState libMesh::Elem::p_refinement_flag | ( | ) | const |
Definition at line 2782 of file elem.h.
References _pflag.
Referenced by hack_p_level().
|
inherited |
A method for creating packed data from our index buffer - basically a copy with prepended size with our current implementation.
|
inherited |
If we pack our indices into an buffer for communications, how many ints do we need?
Referenced by libMesh::Node::packed_size().
const Elem * libMesh::Elem::parent | ( | ) | const |
nullptr
if the element was not created via refinement. Definition at line 2607 of file elem.h.
References _elemlinks.
Referenced by libMesh::OldSolutionBase< Output, point_output >::check_old_context(), Elem(), is_ancestor_of(), level(), set_p_level(), subactive(), libMesh::Parallel::sync_element_data_by_parent_id(), top_parent(), and which_neighbor_am_i().
Elem * libMesh::Elem::parent | ( | ) |
nullptr
if the element was not created via refinement. Definition at line 2615 of file elem.h.
References _elemlinks.
|
virtual |
n
of child c
. const Point & libMesh::Elem::point | ( | const unsigned int | i | ) | const |
Definition at line 1992 of file elem.h.
References _nodes, libMesh::DofObject::invalid_id, and n_nodes().
Referenced by libMesh::InfCell::origin(), libMesh::InfEdge2::origin(), libMesh::InfQuad::origin(), and which_side_am_i().
Point & libMesh::Elem::point | ( | const unsigned int | i | ) |
Definition at line 2004 of file elem.h.
References _nodes, and n_nodes().
Shared private implementation used by the contains_point() and close_to_point() routines.
The box_tol tolerance is used in the bounding box optimization, the map_tol tolerance is used in the calls to inverse_map() and on_reference_element().
|
inherited |
Print out info for debugging.
|
staticinherited |
Prints the reference information, by default to libMesh::out
.
|
staticinherited |
Prints the reference information, by default to libMesh::out
.
void libMesh::Elem::print_info | ( | std::ostream & | os = libMesh::out | ) | const |
Prints relevant information about the element.
Referenced by libMesh::operator<<().
|
inherited |
When partitioning and DoF numbering have been performed by libMesh, every current DoF on this DofObject will belong to its processor.
Definition at line 717 of file dof_object.h.
References libMesh::DofObject::_processor_id.
Referenced by Elem(), libMesh::DofObject::invalidate_processor_id(), libMesh::DofObject::processor_id(), libMesh::Parallel::sync_dofobject_data_by_id(), libMesh::Parallel::sync_element_data_by_parent_id(), libMesh::Parallel::sync_node_data_by_element_id_once(), DofObjectTest< DerivedClass >::testInvalidateProcId(), DofObjectTest< DerivedClass >::testSetProcId(), and DofObjectTest< DerivedClass >::testValidProcId().
|
inherited |
Definition at line 725 of file dof_object.h.
References libMesh::DofObject::_processor_id.
|
inherited |
Sets the processor_id
for this DofObject
.
Definition at line 733 of file dof_object.h.
References libMesh::DofObject::processor_id().
|
virtual |
q
.These are the values suggested by the CUBIT User's Manual. Since this function can have no possible meaning for an abstract Elem, it is an error in the base class.
Reimplemented in libMesh::InfQuad, libMesh::Quad, libMesh::InfHex, libMesh::Tri, libMesh::Hex, and libMesh::Tet.
|
virtual |
q
specified by the user. Reimplemented in libMesh::InfQuad, libMesh::Quad, libMesh::InfHex, libMesh::Tri, libMesh::Hex, and libMesh::Tet.
const Elem * libMesh::Elem::raw_child_ptr | ( | unsigned int | i | ) | const |
Definition at line 2697 of file elem.h.
References _children.
const Elem* libMesh::Elem::reference_elem | ( | ) | const |
Quad4
elements share the same reference_elem()
.
|
virtual |
Refine the element.
Elem::RefinementState libMesh::Elem::refinement_flag | ( | ) | const |
Definition at line 2766 of file elem.h.
References _rflag.
Referenced by active(), and libMesh::OldSolutionBase< Output, point_output >::check_old_context().
void libMesh::Elem::remove_links_to_me | ( | ) |
Resets this element's neighbors' appropriate neighbor pointers and its parent's and children's appropriate pointers to point to null instead of to this.
Used by the library before an element is deleted from a mesh.
void libMesh::Elem::replace_child | ( | Elem * | elem, |
unsigned int | c | ||
) |
Replaces the child pointer at the specified index in the child array.
|
virtual |
this->n_vertices()
, while n
has to be greater than or equal to this->n_vertices()
. Reimplemented in libMesh::InfHex18, libMesh::Pyramid14, libMesh::Hex27, libMesh::Prism18, libMesh::InfHex16, libMesh::Hex20, libMesh::Prism15, libMesh::Tet10, libMesh::Pyramid13, libMesh::Quad9, libMesh::Tri6, libMesh::InfPrism12, libMesh::Quad8, libMesh::InfQuad6, libMesh::Edge3, and libMesh::Edge4.
|
virtual |

second-order node on the parent element. For linear elements, (0,0) is returned.this->n_children()
and this->child_ptr(c)->n_vertices()
.n
has to be greater than or equal to this->n_vertices()
.this->node_ptr(n)
== this->child_ptr(c)->node_ptr(v). Reimplemented in libMesh::InfHex18, libMesh::Hex27, libMesh::Prism18, libMesh::InfHex16, libMesh::Hex20, libMesh::Prism15, libMesh::Tet10, libMesh::Quad9, libMesh::Tri6, libMesh::InfPrism12, libMesh::Quad8, libMesh::InfQuad6, and libMesh::Edge3.
|
static |
For example, when this
is a TET4
, then TET10
is returned.
For some elements, there exist two second-order equivalents, e.g. for Quad4
there is Quad8
and Quad9
. When the optional full_ordered
is true
, then QUAD9
is returned. When full_ordered
is false
, then QUAD8
is returned.
|
inherited |
Definition at line 535 of file dof_object.h.
References libMesh::DofObject::_idx_buf.
Referenced by DofObjectTest< DerivedClass >::testJensEftangBug().
|
private |
Sets the pointer to the child for this element.
Do not call if this element has no children, i.e. is active.
Definition at line 2738 of file elem.h.
References _children, and has_children().
|
inherited |
Sets the global degree of freedom number for variable var
, component comp
for system s
associated with this DofObject
.
|
inherited |
id
for this DofObject
as a writable reference. Definition at line 664 of file dof_object.h.
References libMesh::DofObject::_id.
Referenced by libMesh::DofObject::invalidate_id(), libMesh::Node::Node(), libMesh::RemoteElem::RemoteElem(), libMesh::DofObject::set_id(), DofObjectTest< DerivedClass >::testInvalidateId(), DofObjectTest< DerivedClass >::testSetId(), and DofObjectTest< DerivedClass >::testValidId().
|
inherited |
Sets the id
for this DofObject
.
Definition at line 151 of file dof_object.h.
References libMesh::DofObject::set_id().
void libMesh::Elem::set_interior_parent | ( | Elem * | p | ) |
Sets the pointer to the element's interior_parent.
Dangerous! Only use this if you know what you are doing!
Referenced by libMesh::Edge::Edge(), libMesh::Hex::Hex(), libMesh::InfHex::InfHex(), libMesh::InfQuad::InfQuad(), libMesh::NodeElem::NodeElem(), libMesh::Prism::Prism(), libMesh::Pyramid::Pyramid(), libMesh::Quad::Quad(), libMesh::Tet::Tet(), and libMesh::Tri::Tri().
|
inherited |
|
inherited |
Sets the number of components for VariableGroup
vg
of system s
associated with this DofObject
.
Referenced by DofObjectTest< DerivedClass >::testManualDofCalculation().
|
inherited |
Sets the number of systems for this DofObject
.
Referenced by DofObjectTest< DerivedClass >::testManualDofCalculation(), DofObjectTest< DerivedClass >::testSetNSystems(), and DofObjectTest< DerivedClass >::testSetNVariableGroups().
|
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)).
Referenced by DofObjectTest< DerivedClass >::testManualDofCalculation(), and DofObjectTest< DerivedClass >::testSetNVariableGroups().
void libMesh::Elem::set_neighbor | ( | const unsigned int | i, |
Elem * | n | ||
) |
Assigns n
as the neighbor.
Definition at line 2183 of file elem.h.
References _elemlinks, and n_neighbors().
|
virtual |
Node
i
as a writable reference. Reimplemented in libMesh::RemoteElem.
Definition at line 2124 of file elem.h.
References _nodes, and n_nodes().
Referenced by libMesh::RemoteElem::set_node().
|
inherited |
Sets the old_dof_object
to a copy of this
.
void libMesh::Elem::set_p_level | ( | const unsigned int | p | ) |
Sets the value of the p-refinement level for the element.
Definition at line 2820 of file elem.h.
References _p_level, child_ref_range(), JUST_COARSENED, JUST_REFINED, std::min(), p_level(), parent(), set_p_level(), and set_p_refinement_flag().
Referenced by Elem(), and set_p_level().
void libMesh::Elem::set_p_refinement_flag | ( | const RefinementState | pflag | ) |
Sets the value of the p-refinement flag for the element.
Definition at line 2790 of file elem.h.
References _pflag, JUST_REFINED, and p_level().
Referenced by set_p_level().
void libMesh::Elem::set_parent | ( | Elem * | p | ) |
Sets the pointer to the element's parent.
Dangerous! Only use this if you know what you are doing!
Definition at line 2623 of file elem.h.
References _elemlinks.
void libMesh::Elem::set_refinement_flag | ( | const RefinementState | rflag | ) |
|
inherited |
unique_id
for this DofObject
as a writable reference. Definition at line 685 of file dof_object.h.
References libMesh::DofObject::_unique_id.
|
inherited |
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 960 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::DofObject::invalidate_dofs(), and DofObjectTest< DerivedClass >::testManualDofCalculation().
std::unique_ptr< Elem > libMesh::Elem::side | ( | const unsigned int | i | ) | const |
i
.Definition at line 2302 of file elem.h.
References side_ptr().
Referenced by simple_build_side_ptr(), and simple_side_ptr().
IntRange< unsigned short > libMesh::Elem::side_index_range | ( | ) | const |
|
pure virtual |
i
.Implemented in libMesh::RemoteElem, libMesh::InfQuad, libMesh::Quad, libMesh::InfHex, libMesh::InfPrism, libMesh::Edge, libMesh::Tri, libMesh::Hex, libMesh::Pyramid, libMesh::Prism, libMesh::NodeElem, and libMesh::Tet.
Referenced by side(), and side_ptr().
std::unique_ptr< const Elem > libMesh::Elem::side_ptr | ( | unsigned int | i | ) | const |
Definition at line 2275 of file elem.h.
References side_ptr().
|
pure virtual |
Resets the loose element side
, which may currently point to a different side than i
or even a different element than this
, to point to side i
on this
.
If side
is currently an element of the wrong type, it will be freed and a new element allocated; otherwise no memory allocation will occur.
This should not be called with proxy Side elements. This will cause side
to be a minimum-ordered element, even if it is handed a higher-ordered element that must be replaced.
The const version of this function is non-virtual; it simply calls the virtual non-const version and const_casts the return type.
Implemented in libMesh::RemoteElem, libMesh::InfQuad, libMesh::Quad, libMesh::InfHex, libMesh::InfPrism, libMesh::Edge, libMesh::Tri, libMesh::Hex, libMesh::Pyramid, libMesh::Prism, libMesh::NodeElem, and libMesh::Tet.
void libMesh::Elem::side_ptr | ( | std::unique_ptr< const Elem > & | side, |
const unsigned int | i | ||
) | const |
Definition at line 2288 of file elem.h.
References side_ptr().
|
protected |
An implementation for simple (all sides equal) elements.
Definition at line 2357 of file elem.h.
References n_sides(), node_ptr(), side(), and subdomain_id().
|
protected |
An implementation for simple (all sides equal) elements.
Definition at line 2382 of file elem.h.
References n_sides(), node_ptr(), side(), and subdomain_id().
bool libMesh::Elem::subactive | ( | ) | const |
true
if the element is subactive (i.e. has no active descendants), false
otherwise or if AMR is disabled. Definition at line 2536 of file elem.h.
References active(), has_children(), and parent().
Referenced by max_descendant_p_level().
subdomain_id_type libMesh::Elem::subdomain_id | ( | ) | const |
Definition at line 2134 of file elem.h.
References _sbd_id.
Referenced by Elem(), simple_build_side_ptr(), and simple_side_ptr().
subdomain_id_type & libMesh::Elem::subdomain_id | ( | ) |
Definition at line 2142 of file elem.h.
References _sbd_id.
const Elem * libMesh::Elem::top_parent | ( | ) | const |
That is, this
if this is a level-0 element, this element's parent if this is a level-1 element, this element's grandparent if this is a level-2 element, etc...
Definition at line 2631 of file elem.h.
References level(), and parent().
const Elem* libMesh::Elem::topological_neighbor | ( | const unsigned int | i, |
const MeshBase & | mesh, | ||
const PointLocatorBase & | point_locator, | ||
const PeriodicBoundaries * | pb | ||
) | const |
Elem* libMesh::Elem::topological_neighbor | ( | const unsigned int | i, |
MeshBase & | mesh, | ||
const PointLocatorBase & | point_locator, | ||
const PeriodicBoundaries * | pb | ||
) |
void libMesh::Elem::total_family_tree | ( | std::vector< const Elem *> & | family, |
bool | reset = true |
||
) | const |
Same as the family_tree()
member, but also adds any subactive descendants.
void libMesh::Elem::total_family_tree | ( | std::vector< Elem *> & | family, |
bool | reset = true |
||
) |
Non-const version of function above; fills a vector of non-const pointers.
void libMesh::Elem::total_family_tree_by_neighbor | ( | std::vector< const Elem *> & | family, |
const Elem * | neighbor, | ||
bool | reset = true |
||
) | const |
Same as the family_tree_by_neighbor()
member, but also adds any subactive descendants.
void libMesh::Elem::total_family_tree_by_neighbor | ( | std::vector< Elem *> & | family, |
Elem * | neighbor, | ||
bool | reset = true |
||
) |
Non-const version of function above; fills a vector of non-const pointers.
void libMesh::Elem::total_family_tree_by_subneighbor | ( | std::vector< const Elem *> & | family, |
const Elem * | neighbor, | ||
const Elem * | subneighbor, | ||
bool | reset = true |
||
) | const |
Same as the family_tree_by_subneighbor()
member, but also adds any subactive descendants.
void libMesh::Elem::total_family_tree_by_subneighbor | ( | std::vector< Elem *> & | family, |
Elem * | neighbor, | ||
Elem * | subneighbor, | ||
bool | reset = true |
||
) |
Non-const version of function above; fills a vector of non-const pointers.
|
pure virtual |
Implemented in libMesh::NodeElem, libMesh::Edge4, libMesh::Edge3, libMesh::Edge2, libMesh::InfEdge2, libMesh::RemoteElem, libMesh::Pyramid14, libMesh::InfHex16, libMesh::InfHex18, libMesh::Pyramid13, libMesh::Prism15, libMesh::Prism18, libMesh::Hex20, libMesh::Hex27, libMesh::InfPrism12, libMesh::InfPrism6, libMesh::InfHex8, libMesh::Tet10, libMesh::InfQuad6, libMesh::InfQuad4, libMesh::Tri3, libMesh::Tri6, libMesh::Hex8, libMesh::Tet4, libMesh::Prism6, libMesh::Pyramid5, libMesh::Quad4, libMesh::Quad8, libMesh::Quad9, libMesh::Tri3Subdivision, libMesh::QuadShell4, libMesh::QuadShell8, and libMesh::TriShell3.
|
inherited |
unique_id
for this DofObject
Definition at line 672 of file dof_object.h.
References libMesh::DofObject::_unique_id, libMesh::DofObject::invalid_unique_id, and libMesh::DofObject::valid_unique_id().
|
inherited |
A method for creating our index buffer from packed data - basically with our current implementation we investigate the size term and then copy.
|
staticinherited |
If we have indices packed into an buffer for communications, how much of that buffer applies to this dof object?
|
inherited |
true
if this DofObject
has a valid id
set, false
otherwise. Definition at line 697 of file dof_object.h.
References libMesh::DofObject::_id, and libMesh::DofObject::invalid_id.
Referenced by libMesh::DofObject::id(), DofObjectTest< DerivedClass >::testInvalidateId(), and DofObjectTest< DerivedClass >::testValidId().
|
inherited |
true
if this DofObject
has a valid id
set, false
otherwise. Definition at line 741 of file dof_object.h.
References libMesh::DofObject::_processor_id, and libMesh::DofObject::invalid_processor_id.
Referenced by DofObjectTest< DerivedClass >::testInvalidateProcId(), and DofObjectTest< DerivedClass >::testValidProcId().
|
inherited |
true
if this DofObject
has a valid unique_id
set, false
otherwise. Definition at line 705 of file dof_object.h.
References libMesh::DofObject::_unique_id, and libMesh::DofObject::invalid_unique_id.
Referenced by libMesh::DofObject::unique_id().
|
inherited |
var
on system s
associated with this DofObject
Definition at line 887 of file dof_object.h.
References libMesh::DofObject::n_var_groups(), and libMesh::DofObject::n_vars().
Referenced by libMesh::DofObject::dof_number().
|
inherited |
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 980 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::DofObject::set_vg_dof_base(), and DofObjectTest< DerivedClass >::testManualDofCalculation().
|
virtual |
Reimplemented in libMesh::Hex27, libMesh::Prism18, libMesh::Pyramid14, libMesh::Hex20, libMesh::Prism15, libMesh::Tet10, libMesh::Pyramid13, libMesh::Quad9, libMesh::Tri6, libMesh::Quad8, libMesh::Tet4, libMesh::Hex8, libMesh::Edge4, libMesh::Prism6, libMesh::Pyramid5, libMesh::Tri3, libMesh::Edge3, libMesh::Quad4, and libMesh::Edge2.
unsigned int libMesh::Elem::which_child_am_i | ( | const Elem * | e | ) | const |
e
corresponds to.I.e. if c = a->which_child_am_i(e); then a->child_ptr(c) will be e.
Definition at line 2748 of file elem.h.
References child_ptr(), has_children(), libMesh::invalid_uint, and n_children().
Referenced by libMesh::Parallel::sync_element_data_by_parent_id().
unsigned int libMesh::Elem::which_neighbor_am_i | ( | const Elem * | e | ) | const |
This function tells you which neighbor e
is.
I.e. if s = a->which_neighbor_am_i(e); then a->neighbor(s) will be an ancestor of e.
Definition at line 2442 of file elem.h.
References libMesh::invalid_uint, level(), n_sides(), neighbor_ptr(), and parent().
|
pure virtual |
side_node
on side side
of this Elem. Simply relies on the side_nodes_map
for each of the derived types. For example, Tri3::which_node_am_i(0, 0) -> 0 Tri3::which_node_am_i(0, 1) -> 1 Tri3::which_node_am_i(1, 0) -> 1 Tri3::which_node_am_i(1, 1) -> 2 etc... Implemented in libMesh::InfHex18, libMesh::Pyramid14, libMesh::Prism18, libMesh::Hex27, libMesh::InfQuad, libMesh::Quad9, libMesh::Quad, libMesh::Tri6, libMesh::Prism15, libMesh::Pyramid13, libMesh::Hex20, libMesh::Tet10, libMesh::Quad8, libMesh::InfHex, libMesh::InfHex16, libMesh::InfQuad6, libMesh::InfPrism, libMesh::Edge, libMesh::Tri, libMesh::Hex, libMesh::InfPrism12, libMesh::Pyramid, libMesh::Prism, libMesh::NodeElem, libMesh::Tet, and libMesh::RemoteElem.
unsigned int libMesh::Elem::which_side_am_i | ( | const Elem * | e | ) | const |
This function tells you which side the boundary element e
is.
I.e. if e = a->build_side_ptr(s) or e = a->side_ptr(s); then a->which_side_am_i(e) will be s.
e
is made with the nodal positions of this
in order to perform this test. The idea is that the test will return a valid side id if e
either directly shares Node pointers with this
, or was created by exactly copying some of the nodes of this
(e.g. through BoundaryMesh::sync()). In these circumstances, non-fuzzy floating point equality is expected.this
the element which e
is, otherwise invalid_uint
. Definition at line 2464 of file elem.h.
References libMesh::invalid_uint, is_node_on_side(), n_nodes(), n_sides(), and point().
void libMesh::Elem::write_connectivity | ( | std::ostream & | out, |
const IOPackage | iop | ||
) | const |
Writes the element connectivity for various IO packages to the passed ostream "out".
Not virtual, since it is implemented in the base class.
|
protected |
Pointers to this element's children.
Definition at line 1807 of file elem.h.
Referenced by child_ptr(), child_ref_range(), has_ancestor_children(), has_children(), raw_child_ptr(), and set_child().
|
staticprotectedinherited |
Actually holds the data.
Definition at line 122 of file reference_counter.h.
Referenced by libMesh::ReferenceCounter::increment_constructor_count(), and libMesh::ReferenceCounter::increment_destructor_count().
|
staticprotectedinherited |
Actually holds the data.
Definition at line 122 of file reference_counter.h.
Referenced by libMesh::ReferenceCounter::increment_constructor_count(), and libMesh::ReferenceCounter::increment_destructor_count().
|
protected |
Pointers to this element's parent and neighbors, and for lower-dimensional elements' interior_parent.
Definition at line 1801 of file elem.h.
Referenced by Elem(), neighbor_ptr(), neighbor_ptr_range(), parent(), set_neighbor(), and set_parent().
|
staticprotectedinherited |
Flag to control whether reference count information is printed when print_info is called.
Definition at line 141 of file reference_counter.h.
|
staticprotectedinherited |
Flag to control whether reference count information is printed when print_info is called.
Definition at line 141 of file reference_counter.h.
|
staticprotectedinherited |
Mutual exclusion object to enable thread-safe reference counting.
Definition at line 135 of file reference_counter.h.
|
staticprotectedinherited |
Mutual exclusion object to enable thread-safe reference counting.
Definition at line 135 of file reference_counter.h.
|
staticprotectedinherited |
The number of objects.
Print the reference count information when the number returns to 0.
Definition at line 130 of file reference_counter.h.
Referenced by libMesh::ReferenceCounter::n_objects(), libMesh::ReferenceCounter::ReferenceCounter(), and libMesh::ReferenceCounter::~ReferenceCounter().
|
staticprotectedinherited |
The number of objects.
Print the reference count information when the number returns to 0.
Definition at line 130 of file reference_counter.h.
Referenced by libMesh::ReferenceCounter::n_objects(), libMesh::ReferenceCounter::ReferenceCounter(), and libMesh::ReferenceCounter::~ReferenceCounter().
|
protected |
Pointers to the nodes we are connected to.
Definition at line 1795 of file elem.h.
Referenced by Elem(), get_node_index(), get_nodes(), node_id(), node_ptr(), node_ref_range(), point(), and set_node().
|
protected |
p refinement level - the difference between the polynomial degree on this element and the minimum polynomial degree on the mesh.
This is stored as an unsigned char to save space. In theory, these last four bytes might have been padding anyway.
Definition at line 1836 of file elem.h.
Referenced by hack_p_level(), max_descendant_p_level(), p_level(), and set_p_level().
|
protected |
p refinement flag.
This is stored as an unsigned char to save space.
Definition at line 1826 of file elem.h.
Referenced by p_refinement_flag(), and set_p_refinement_flag().
|
protected |
h refinement flag.
This is stored as an unsigned char to save space.
Definition at line 1820 of file elem.h.
Referenced by refinement_flag(), and set_refinement_flag().
|
protected |
The subdomain to which this element belongs.
Definition at line 1813 of file elem.h.
Referenced by subdomain_id().
|
staticinherited |
An invalid id
to distinguish an uninitialized DofObject
.
Definition at line 347 of file dof_object.h.
Referenced by libMesh::Node::active(), libMesh::DofObject::dof_number(), libMesh::DofObject::invalidate_dofs(), libMesh::DofObject::invalidate_id(), node_id(), point(), libMesh::Parallel::sync_node_data_by_element_id_once(), DofObjectTest< DerivedClass >::testValidId(), and libMesh::DofObject::valid_id().
|
staticinherited |
An invalid processor_id
to distinguish DoFs that have not been assigned to a processor.
Definition at line 358 of file dof_object.h.
Referenced by libMesh::MeshCommunication::allgather(), Elem(), libMesh::DofObject::invalidate_processor_id(), libMesh::MeshBase::n_unpartitioned_elem(), libMesh::MeshBase::n_unpartitioned_nodes(), 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< DerivedClass >::testValidProcId(), and libMesh::DofObject::valid_processor_id().
|
static |
A static integral constant representing an invalid subdomain id.
See also DofObject::{invalid_id, invalid_unique_id, invalid_processor_id}.
subdomain_id_type
is sometimes a signed integer for compatibility reasons (see libmesh/id_types.h).
|
staticinherited |
An invalid unique_id
to distinguish an uninitialized DofObject
.
Definition at line 352 of file dof_object.h.
Referenced by libMesh::DofObject::unique_id(), and libMesh::DofObject::valid_unique_id().
|
static |
|
inherited |
This object on the last mesh.
Useful for projecting solutions from one mesh to another.
Definition at line 79 of file dof_object.h.
Referenced by libMesh::OldSolutionBase< Output, point_output >::check_old_context(), and libMesh::OldSolutionValue< Output, point_output >::eval_at_node().
|
static |
|
static |
|
static |