libMesh
Public Member Functions | List of all members
MeshBaseTest Class Reference
Inheritance diagram for MeshBaseTest:
[legend]

Public Member Functions

 LIBMESH_CPPUNIT_TEST_SUITE (MeshBaseTest)
 This test verifies various operations on the MeshBase and derived classes. More...
 
 CPPUNIT_TEST (testDistributedMeshVerifyHasNeighborPtrs)
 
 CPPUNIT_TEST (testMeshVerifyHasNeighborPtrs)
 
 CPPUNIT_TEST (testReplicatedMeshVerifyHasNeighborPtrs)
 
 CPPUNIT_TEST (testDistributedMeshVerifyHasCachedElemData)
 
 CPPUNIT_TEST (testMeshVerifyHasCachedElemData)
 
 CPPUNIT_TEST (testReplicatedMeshVerifyHasCachedElemData)
 
 CPPUNIT_TEST (testDistributedMeshVerifyRemovalPreparation)
 
 CPPUNIT_TEST (testMeshVerifyRemovalPreparation)
 
 CPPUNIT_TEST (testReplicatedMeshVerifyRemovalPreparation)
 
 CPPUNIT_TEST (testDistributedMeshVerifyIsPrepared)
 
 CPPUNIT_TEST (testMeshVerifyIsPrepared)
 
 CPPUNIT_TEST (testReplicatedMeshVerifyIsPrepared)
 
 CPPUNIT_TEST_SUITE_END ()
 
void setUp ()
 
void tearDown ()
 
void BrokenNeighborMesh (UnstructuredMesh &mesh)
 
void testMeshBaseVerifyHasNeighborPtrs (UnstructuredMesh &mesh)
 
void testDistributedMeshVerifyHasNeighborPtrs ()
 
void testMeshVerifyHasNeighborPtrs ()
 
void testReplicatedMeshVerifyHasNeighborPtrs ()
 
void testMeshBaseVerifyHasCachedElemData (UnstructuredMesh &mesh)
 
void testDistributedMeshVerifyHasCachedElemData ()
 
void testMeshVerifyHasCachedElemData ()
 
void testReplicatedMeshVerifyHasCachedElemData ()
 
void testMeshBaseVerifyRemovalPreparation (UnstructuredMesh &mesh)
 
void testDistributedMeshVerifyRemovalPreparation ()
 
void testMeshVerifyRemovalPreparation ()
 
void testReplicatedMeshVerifyRemovalPreparation ()
 
void testMeshBaseVerifyIsPrepared (UnstructuredMesh &mesh)
 
void testDistributedMeshVerifyIsPrepared ()
 
void testMeshVerifyIsPrepared ()
 
void testReplicatedMeshVerifyIsPrepared ()
 

Detailed Description

Definition at line 15 of file mesh_base_test.C.

Member Function Documentation

◆ BrokenNeighborMesh()

void MeshBaseTest::BrokenNeighborMesh ( UnstructuredMesh mesh)
inline

Build a 2d 2x2 square mesh (mesh_one) covering [0.0, 1.0] x [0.0, 1.0] with linear Quad elements.

Definition at line 47 of file mesh_base_test.C.

References libMesh::MeshTools::Generation::build_square(), libMesh::invalid_uint, mesh, libMesh::Elem::neighbor_ptr(), libMesh::QUAD9, libMesh::MeshBase::query_elem_ptr(), libMesh::Elem::set_neighbor(), libMesh::Elem::side_index_range(), and libMesh::Elem::which_neighbor_am_i().

48  {
54  2, 2,
55  0., 1.,
56  0., 1.,
57  QUAD9);
58 
59  // Break some neighbor links. Of course nobody would do this in
60  // real life, right?
61  Elem * elem0 = mesh.query_elem_ptr(0);
62  if (elem0)
63  for (auto n : elem0->side_index_range())
64  {
65  Elem * neigh = elem0->neighbor_ptr(n);
66  if (!neigh)
67  continue;
68  auto n_neigh = neigh->which_neighbor_am_i(elem0);
69  CPPUNIT_ASSERT(n_neigh != libMesh::invalid_uint);
70 
71  elem0->set_neighbor(n, nullptr);
72  neigh->set_neighbor(n_neigh, nullptr);
73  }
74  }
const unsigned int invalid_uint
A number which is used quite often to represent an invalid or uninitialized value for an unsigned int...
Definition: libmesh.h:303
IntRange< unsigned short > side_index_range() const
Definition: elem.h:2724
This is the base class from which all geometric element types are derived.
Definition: elem.h:94
MeshBase & mesh
void build_square(UnstructuredMesh &mesh, const unsigned int nx, const unsigned int ny, const Real xmin=0., const Real xmax=1., const Real ymin=0., const Real ymax=1., const ElemType type=INVALID_ELEM, const bool gauss_lobatto_grid=false)
A specialized build_cube() for 2D meshes.
unsigned int which_neighbor_am_i(const Elem *e) const
This function tells you which neighbor e is.
Definition: elem.h:2933
void set_neighbor(const unsigned int i, Elem *n)
Assigns n as the neighbor.
Definition: elem.h:2632
const Elem * neighbor_ptr(unsigned int i) const
Definition: elem.h:2612
virtual const Elem * query_elem_ptr(const dof_id_type i) const =0

◆ CPPUNIT_TEST() [1/12]

MeshBaseTest::CPPUNIT_TEST ( testDistributedMeshVerifyHasNeighborPtrs  )

◆ CPPUNIT_TEST() [2/12]

MeshBaseTest::CPPUNIT_TEST ( testMeshVerifyHasNeighborPtrs  )

◆ CPPUNIT_TEST() [3/12]

MeshBaseTest::CPPUNIT_TEST ( testReplicatedMeshVerifyHasNeighborPtrs  )

◆ CPPUNIT_TEST() [4/12]

MeshBaseTest::CPPUNIT_TEST ( testDistributedMeshVerifyHasCachedElemData  )

◆ CPPUNIT_TEST() [5/12]

MeshBaseTest::CPPUNIT_TEST ( testMeshVerifyHasCachedElemData  )

◆ CPPUNIT_TEST() [6/12]

MeshBaseTest::CPPUNIT_TEST ( testReplicatedMeshVerifyHasCachedElemData  )

◆ CPPUNIT_TEST() [7/12]

MeshBaseTest::CPPUNIT_TEST ( testDistributedMeshVerifyRemovalPreparation  )

◆ CPPUNIT_TEST() [8/12]

MeshBaseTest::CPPUNIT_TEST ( testMeshVerifyRemovalPreparation  )

◆ CPPUNIT_TEST() [9/12]

MeshBaseTest::CPPUNIT_TEST ( testReplicatedMeshVerifyRemovalPreparation  )

◆ CPPUNIT_TEST() [10/12]

MeshBaseTest::CPPUNIT_TEST ( testDistributedMeshVerifyIsPrepared  )

◆ CPPUNIT_TEST() [11/12]

MeshBaseTest::CPPUNIT_TEST ( testMeshVerifyIsPrepared  )

◆ CPPUNIT_TEST() [12/12]

MeshBaseTest::CPPUNIT_TEST ( testReplicatedMeshVerifyIsPrepared  )

◆ CPPUNIT_TEST_SUITE_END()

MeshBaseTest::CPPUNIT_TEST_SUITE_END ( )

◆ LIBMESH_CPPUNIT_TEST_SUITE()

MeshBaseTest::LIBMESH_CPPUNIT_TEST_SUITE ( MeshBaseTest  )

This test verifies various operations on the MeshBase and derived classes.

◆ setUp()

void MeshBaseTest::setUp ( )
inline

Definition at line 43 of file mesh_base_test.C.

43 {}

◆ tearDown()

void MeshBaseTest::tearDown ( )
inline

Definition at line 45 of file mesh_base_test.C.

45 {}

◆ testDistributedMeshVerifyHasCachedElemData()

void MeshBaseTest::testDistributedMeshVerifyHasCachedElemData ( )
inline

Definition at line 130 of file mesh_base_test.C.

References mesh, and TestCommWorld.

131  {
134  }
libMesh::Parallel::Communicator * TestCommWorld
Definition: driver.C:218
MeshBase & mesh
void testMeshBaseVerifyHasCachedElemData(UnstructuredMesh &mesh)
The DistributedMesh class is derived from the MeshBase class, and is intended to provide identical fu...

◆ testDistributedMeshVerifyHasNeighborPtrs()

void MeshBaseTest::testDistributedMeshVerifyHasNeighborPtrs ( )
inline

Definition at line 85 of file mesh_base_test.C.

References mesh, and TestCommWorld.

86  {
89  }
libMesh::Parallel::Communicator * TestCommWorld
Definition: driver.C:218
MeshBase & mesh
void testMeshBaseVerifyHasNeighborPtrs(UnstructuredMesh &mesh)
The DistributedMesh class is derived from the MeshBase class, and is intended to provide identical fu...

◆ testDistributedMeshVerifyIsPrepared()

void MeshBaseTest::testDistributedMeshVerifyIsPrepared ( )
inline

Definition at line 210 of file mesh_base_test.C.

References mesh, and TestCommWorld.

211  {
214  }
void testMeshBaseVerifyIsPrepared(UnstructuredMesh &mesh)
libMesh::Parallel::Communicator * TestCommWorld
Definition: driver.C:218
MeshBase & mesh
The DistributedMesh class is derived from the MeshBase class, and is intended to provide identical fu...

◆ testDistributedMeshVerifyRemovalPreparation()

void MeshBaseTest::testDistributedMeshVerifyRemovalPreparation ( )
inline

Definition at line 183 of file mesh_base_test.C.

References mesh, and TestCommWorld.

184  {
187  }
libMesh::Parallel::Communicator * TestCommWorld
Definition: driver.C:218
MeshBase & mesh
The DistributedMesh class is derived from the MeshBase class, and is intended to provide identical fu...
void testMeshBaseVerifyRemovalPreparation(UnstructuredMesh &mesh)

◆ testMeshBaseVerifyHasCachedElemData()

void MeshBaseTest::testMeshBaseVerifyHasCachedElemData ( UnstructuredMesh mesh)
inline

Build a 2d 2x2 square mesh (mesh_one) covering [0.0, 1.0] x [0.0, 1.0] with linear Quad elements.

Definition at line 103 of file mesh_base_test.C.

References libMesh::MeshTools::Generation::build_square(), libMesh::MeshBase::complete_preparation(), libMesh::MeshBase::is_prepared(), mesh, libMesh::QUAD9, libMesh::MeshBase::query_elem_ptr(), libMesh::Elem::subdomain_id(), libMesh::MeshBase::unset_has_cached_elem_data(), and libMesh::MeshTools::valid_is_prepared().

104  {
110  2, 2,
111  0., 1.,
112  0., 1.,
113  QUAD9);
114 
115  // Invalidate the subdomain ids cache
116  Elem * elem0 = mesh.query_elem_ptr(0);
117  if (elem0)
118  elem0->subdomain_id() = 1;
119 
120  // We're unprepared (prepare_for_use() will update that cache) but
121  // we're not marked that way.
122  CPPUNIT_ASSERT(!MeshTools::valid_is_prepared(mesh));
123 
126  CPPUNIT_ASSERT(mesh.is_prepared());
127  CPPUNIT_ASSERT(MeshTools::valid_is_prepared(mesh));
128  }
bool is_prepared() const
Definition: mesh_base.C:1042
bool valid_is_prepared(const MeshBase &mesh)
A function for testing whether a mesh&#39;s cached is_prepared() setting is not a false positive...
Definition: mesh_tools.C:1228
This is the base class from which all geometric element types are derived.
Definition: elem.h:94
MeshBase & mesh
void build_square(UnstructuredMesh &mesh, const unsigned int nx, const unsigned int ny, const Real xmin=0., const Real xmax=1., const Real ymin=0., const Real ymax=1., const ElemType type=INVALID_ELEM, const bool gauss_lobatto_grid=false)
A specialized build_cube() for 2D meshes.
void unset_has_cached_elem_data()
Tells this we have done some operation (e.g.
Definition: mesh_base.h:287
void complete_preparation()
Definition: mesh_base.C:860
virtual const Elem * query_elem_ptr(const dof_id_type i) const =0
subdomain_id_type subdomain_id() const
Definition: elem.h:2588

◆ testMeshBaseVerifyHasNeighborPtrs()

void MeshBaseTest::testMeshBaseVerifyHasNeighborPtrs ( UnstructuredMesh mesh)
inline

Definition at line 76 of file mesh_base_test.C.

References libMesh::MeshBase::complete_preparation(), libMesh::MeshBase::is_prepared(), mesh, libMesh::MeshBase::unset_has_neighbor_ptrs(), and libMesh::MeshTools::valid_is_prepared().

77  {
78  this->BrokenNeighborMesh(mesh);
81  CPPUNIT_ASSERT(mesh.is_prepared());
82  CPPUNIT_ASSERT(MeshTools::valid_is_prepared(mesh));
83  }
void BrokenNeighborMesh(UnstructuredMesh &mesh)
bool is_prepared() const
Definition: mesh_base.C:1042
bool valid_is_prepared(const MeshBase &mesh)
A function for testing whether a mesh&#39;s cached is_prepared() setting is not a false positive...
Definition: mesh_tools.C:1228
MeshBase & mesh
void unset_has_neighbor_ptrs()
Tells this we have done some operation (e.g.
Definition: mesh_base.h:276
void complete_preparation()
Definition: mesh_base.C:860

◆ testMeshBaseVerifyIsPrepared()

void MeshBaseTest::testMeshBaseVerifyIsPrepared ( UnstructuredMesh mesh)
inline

Definition at line 201 of file mesh_base_test.C.

References mesh, and libMesh::MeshTools::valid_is_prepared().

202  {
203  this->BrokenNeighborMesh(mesh);
204 
205  // We're unprepared (prepare_for_use() will restitch those
206  // neighbor pointers) but we're not marked that way.
207  CPPUNIT_ASSERT(!MeshTools::valid_is_prepared(mesh));
208  }
void BrokenNeighborMesh(UnstructuredMesh &mesh)
bool valid_is_prepared(const MeshBase &mesh)
A function for testing whether a mesh&#39;s cached is_prepared() setting is not a false positive...
Definition: mesh_tools.C:1228
MeshBase & mesh

◆ testMeshBaseVerifyRemovalPreparation()

void MeshBaseTest::testMeshBaseVerifyRemovalPreparation ( UnstructuredMesh mesh)
inline

Build a 2d 2x2 square mesh (mesh_one) covering [0.0, 1.0] x [0.0, 1.0] with linear Quad elements.

Definition at line 148 of file mesh_base_test.C.

References libMesh::MeshTools::Generation::build_square(), libMesh::MeshBase::complete_preparation(), libMesh::MeshBase::delete_elem(), libMesh::MeshBase::is_prepared(), mesh, libMesh::QUAD9, libMesh::MeshBase::unset_has_boundary_id_sets(), libMesh::MeshBase::unset_has_removed_orphaned_nodes(), libMesh::MeshBase::unset_is_partitioned(), and libMesh::MeshTools::valid_is_prepared().

149  {
155  2, 2,
156  0., 1.,
157  0., 1.,
158  QUAD9);
159 
160  // Remove elements on one side, orphaning 4 nodes and removing one
161  // boundary condition. Remove dangling neighbor pointers too; we
162  // can't even clone a mesh with dangling pointers.
163  for (auto & elem : mesh.element_ptr_range())
164  if (elem->vertex_average()(0) > 0.5)
165  mesh.delete_elem(elem);
166  else
167  elem->set_neighbor(1, nullptr);
168 
169  // We're unprepared (prepare_for_use() will remove those orphaned
170  // nodes and fix the boundary id sets and fix the partitioning of
171  // nodes that might need new owners) but we're not marked that
172  // way.
173  CPPUNIT_ASSERT(!MeshTools::valid_is_prepared(mesh));
174 
179  CPPUNIT_ASSERT(mesh.is_prepared());
180  CPPUNIT_ASSERT(MeshTools::valid_is_prepared(mesh));
181  }
bool is_prepared() const
Definition: mesh_base.C:1042
bool valid_is_prepared(const MeshBase &mesh)
A function for testing whether a mesh&#39;s cached is_prepared() setting is not a false positive...
Definition: mesh_tools.C:1228
MeshBase & mesh
void build_square(UnstructuredMesh &mesh, const unsigned int nx, const unsigned int ny, const Real xmin=0., const Real xmax=1., const Real ymin=0., const Real ymax=1., const ElemType type=INVALID_ELEM, const bool gauss_lobatto_grid=false)
A specialized build_cube() for 2D meshes.
virtual void delete_elem(Elem *e)=0
Removes element e from the mesh.
void unset_is_partitioned()
Tells this we have done some operation creating unpartitioned elements.
Definition: mesh_base.h:252
void complete_preparation()
Definition: mesh_base.C:860
void unset_has_boundary_id_sets()
Tells this we have done some operation which may have invalidated our cached boundary id sets...
Definition: mesh_base.h:346
void unset_has_removed_orphaned_nodes()
Tells this we have done some operation (e.g.
Definition: mesh_base.h:324

◆ testMeshVerifyHasCachedElemData()

void MeshBaseTest::testMeshVerifyHasCachedElemData ( )
inline

Definition at line 136 of file mesh_base_test.C.

References mesh, and TestCommWorld.

137  {
140  }
libMesh::Parallel::Communicator * TestCommWorld
Definition: driver.C:218
MeshBase & mesh
void testMeshBaseVerifyHasCachedElemData(UnstructuredMesh &mesh)
The Mesh class is a thin wrapper, around the ReplicatedMesh class by default.
Definition: mesh.h:50

◆ testMeshVerifyHasNeighborPtrs()

void MeshBaseTest::testMeshVerifyHasNeighborPtrs ( )
inline

Definition at line 91 of file mesh_base_test.C.

References mesh, and TestCommWorld.

92  {
95  }
libMesh::Parallel::Communicator * TestCommWorld
Definition: driver.C:218
MeshBase & mesh
void testMeshBaseVerifyHasNeighborPtrs(UnstructuredMesh &mesh)
The Mesh class is a thin wrapper, around the ReplicatedMesh class by default.
Definition: mesh.h:50

◆ testMeshVerifyIsPrepared()

void MeshBaseTest::testMeshVerifyIsPrepared ( )
inline

Definition at line 216 of file mesh_base_test.C.

References mesh, and TestCommWorld.

217  {
220  }
void testMeshBaseVerifyIsPrepared(UnstructuredMesh &mesh)
libMesh::Parallel::Communicator * TestCommWorld
Definition: driver.C:218
MeshBase & mesh
The Mesh class is a thin wrapper, around the ReplicatedMesh class by default.
Definition: mesh.h:50

◆ testMeshVerifyRemovalPreparation()

void MeshBaseTest::testMeshVerifyRemovalPreparation ( )
inline

Definition at line 189 of file mesh_base_test.C.

References mesh, and TestCommWorld.

190  {
193  }
libMesh::Parallel::Communicator * TestCommWorld
Definition: driver.C:218
MeshBase & mesh
void testMeshBaseVerifyRemovalPreparation(UnstructuredMesh &mesh)
The Mesh class is a thin wrapper, around the ReplicatedMesh class by default.
Definition: mesh.h:50

◆ testReplicatedMeshVerifyHasCachedElemData()

void MeshBaseTest::testReplicatedMeshVerifyHasCachedElemData ( )
inline

Definition at line 142 of file mesh_base_test.C.

References mesh, and TestCommWorld.

143  {
146  }
The ReplicatedMesh class is derived from the MeshBase class, and is used to store identical copies of...
libMesh::Parallel::Communicator * TestCommWorld
Definition: driver.C:218
MeshBase & mesh
void testMeshBaseVerifyHasCachedElemData(UnstructuredMesh &mesh)

◆ testReplicatedMeshVerifyHasNeighborPtrs()

void MeshBaseTest::testReplicatedMeshVerifyHasNeighborPtrs ( )
inline

Definition at line 97 of file mesh_base_test.C.

References mesh, and TestCommWorld.

98  {
101  }
The ReplicatedMesh class is derived from the MeshBase class, and is used to store identical copies of...
libMesh::Parallel::Communicator * TestCommWorld
Definition: driver.C:218
MeshBase & mesh
void testMeshBaseVerifyHasNeighborPtrs(UnstructuredMesh &mesh)

◆ testReplicatedMeshVerifyIsPrepared()

void MeshBaseTest::testReplicatedMeshVerifyIsPrepared ( )
inline

Definition at line 222 of file mesh_base_test.C.

References mesh, and TestCommWorld.

223  {
226  }
The ReplicatedMesh class is derived from the MeshBase class, and is used to store identical copies of...
void testMeshBaseVerifyIsPrepared(UnstructuredMesh &mesh)
libMesh::Parallel::Communicator * TestCommWorld
Definition: driver.C:218
MeshBase & mesh

◆ testReplicatedMeshVerifyRemovalPreparation()

void MeshBaseTest::testReplicatedMeshVerifyRemovalPreparation ( )
inline

Definition at line 195 of file mesh_base_test.C.

References mesh, and TestCommWorld.

196  {
199  }
The ReplicatedMesh class is derived from the MeshBase class, and is used to store identical copies of...
libMesh::Parallel::Communicator * TestCommWorld
Definition: driver.C:218
MeshBase & mesh
void testMeshBaseVerifyRemovalPreparation(UnstructuredMesh &mesh)

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