libMesh
Public Types | Public Member Functions | Public Attributes | List of all members
libMesh::SyncRefinementFlags Struct Reference

#include <sync_refinement_flags.h>

Public Types

typedef unsigned char datum
 
typedef Elem::RefinementState(Elem::* get_a_flag) () const
 
typedef void(Elem::* set_a_flag) (const Elem::RefinementState)
 

Public Member Functions

 SyncRefinementFlags (MeshBase &_mesh, get_a_flag _getter, set_a_flag _setter)
 
void gather_data (const std::vector< dof_id_type > &ids, std::vector< datum > &flags) const
 
void act_on_data (const std::vector< dof_id_type > &ids, const std::vector< datum > &flags)
 

Public Attributes

MeshBasemesh
 
bool parallel_consistent
 
get_a_flag get_flag
 
set_a_flag set_flag
 

Detailed Description

Definition at line 39 of file sync_refinement_flags.h.

Member Typedef Documentation

◆ datum

typedef unsigned char libMesh::SyncRefinementFlags::datum

Definition at line 41 of file sync_refinement_flags.h.

◆ get_a_flag

typedef Elem::RefinementState(Elem::* libMesh::SyncRefinementFlags::get_a_flag) () const

Definition at line 42 of file sync_refinement_flags.h.

◆ set_a_flag

typedef void(Elem::* libMesh::SyncRefinementFlags::set_a_flag) (const Elem::RefinementState)

Definition at line 43 of file sync_refinement_flags.h.

Constructor & Destructor Documentation

◆ SyncRefinementFlags()

libMesh::SyncRefinementFlags::SyncRefinementFlags ( MeshBase _mesh,
get_a_flag  _getter,
set_a_flag  _setter 
)
inline

Member Function Documentation

◆ act_on_data()

void libMesh::SyncRefinementFlags::act_on_data ( const std::vector< dof_id_type > &  ids,
const std::vector< datum > &  flags 
)
inline

Definition at line 76 of file sync_refinement_flags.h.

References libMesh::MeshBase::elem_ref(), get_flag, libMesh::index_range(), mesh, parallel_consistent, and set_flag.

78  {
79  for (auto i : index_range(ids))
80  {
81  Elem & elem = mesh.elem_ref(ids[i]);
82 
83  datum old_flag = (elem.*get_flag)();
84  datum new_flag = flags[i];
85 
86  if (old_flag != new_flag)
87  {
88  // It's possible for foreign flags to be (temporarily) more
89  // conservative than our own, such as when a refinement in
90  // one of the foreign processor's elements is mandated by a
91  // refinement in one of our neighboring elements it can see
92  // which was mandated by a refinement in one of our
93  // neighboring elements it can't see
94  // libmesh_assert (!(new_flag != Elem::REFINE &&
95  // old_flag == Elem::REFINE));
96  //
97  (elem.*set_flag)
98  (static_cast<Elem::RefinementState>(new_flag));
99  parallel_consistent = false;
100  }
101  }
102  }
virtual const Elem & elem_ref(const dof_id_type i) const
Definition: mesh_base.h:618
auto index_range(const T &sizable)
Helper function that returns an IntRange<std::size_t> representing all the indices of the passed-in v...
Definition: int_range.h:111

◆ gather_data()

void libMesh::SyncRefinementFlags::gather_data ( const std::vector< dof_id_type > &  ids,
std::vector< datum > &  flags 
) const
inline

Definition at line 60 of file sync_refinement_flags.h.

References libMesh::MeshBase::elem_ref(), get_flag, libMesh::index_range(), and mesh.

62  {
63  flags.resize(ids.size());
64 
65  for (auto i : index_range(ids))
66  {
67  // Look for this element in the mesh
68  // We'd better find every element we're asked for
69  Elem & elem = mesh.elem_ref(ids[i]);
70 
71  // Return the element's refinement flag
72  flags[i] = (elem.*get_flag)();
73  }
74  }
virtual const Elem & elem_ref(const dof_id_type i) const
Definition: mesh_base.h:618
auto index_range(const T &sizable)
Helper function that returns an IntRange<std::size_t> representing all the indices of the passed-in v...
Definition: int_range.h:111

Member Data Documentation

◆ get_flag

get_a_flag libMesh::SyncRefinementFlags::get_flag

Definition at line 53 of file sync_refinement_flags.h.

Referenced by act_on_data(), and gather_data().

◆ mesh

MeshBase& libMesh::SyncRefinementFlags::mesh

Definition at line 51 of file sync_refinement_flags.h.

Referenced by act_on_data(), and gather_data().

◆ parallel_consistent

bool libMesh::SyncRefinementFlags::parallel_consistent

◆ set_flag

set_a_flag libMesh::SyncRefinementFlags::set_flag

Definition at line 54 of file sync_refinement_flags.h.

Referenced by act_on_data().


The documentation for this struct was generated from the following file: