libMesh
Loading...
Searching...
No Matches
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.
 
 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.

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 }
This is the base class from which all geometric element types are derived.
Definition elem.h:96
void set_neighbor(const unsigned int i, Elem *n)
Assigns n as the neighbor.
Definition elem.h:2635
unsigned int which_neighbor_am_i(const Elem *e) const
This function tells you which neighbor e is.
Definition elem.h:2936
const Elem * neighbor_ptr(unsigned int i) const
Definition elem.h:2615
virtual const Elem * query_elem_ptr(const dof_id_type i) const =0
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.
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

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().

Referenced by testMeshBaseVerifyHasNeighborPtrs(), and testMeshBaseVerifyIsPrepared().

◆ CPPUNIT_TEST() [1/12]

MeshBaseTest::CPPUNIT_TEST ( testDistributedMeshVerifyHasCachedElemData  )

◆ CPPUNIT_TEST() [2/12]

MeshBaseTest::CPPUNIT_TEST ( testDistributedMeshVerifyHasNeighborPtrs  )

◆ CPPUNIT_TEST() [3/12]

MeshBaseTest::CPPUNIT_TEST ( testDistributedMeshVerifyIsPrepared  )

◆ CPPUNIT_TEST() [4/12]

MeshBaseTest::CPPUNIT_TEST ( testDistributedMeshVerifyRemovalPreparation  )

◆ CPPUNIT_TEST() [5/12]

MeshBaseTest::CPPUNIT_TEST ( testMeshVerifyHasCachedElemData  )

◆ CPPUNIT_TEST() [6/12]

MeshBaseTest::CPPUNIT_TEST ( testMeshVerifyHasNeighborPtrs  )

◆ CPPUNIT_TEST() [7/12]

MeshBaseTest::CPPUNIT_TEST ( testMeshVerifyIsPrepared  )

◆ CPPUNIT_TEST() [8/12]

MeshBaseTest::CPPUNIT_TEST ( testMeshVerifyRemovalPreparation  )

◆ CPPUNIT_TEST() [9/12]

MeshBaseTest::CPPUNIT_TEST ( testReplicatedMeshVerifyHasCachedElemData  )

◆ CPPUNIT_TEST() [10/12]

MeshBaseTest::CPPUNIT_TEST ( testReplicatedMeshVerifyHasNeighborPtrs  )

◆ CPPUNIT_TEST() [11/12]

MeshBaseTest::CPPUNIT_TEST ( testReplicatedMeshVerifyIsPrepared  )

◆ CPPUNIT_TEST() [12/12]

MeshBaseTest::CPPUNIT_TEST ( testReplicatedMeshVerifyRemovalPreparation  )

◆ 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.

131 {
132 DistributedMesh mesh(*TestCommWorld);
134 }
void testMeshBaseVerifyHasCachedElemData(UnstructuredMesh &mesh)
The DistributedMesh class is derived from the MeshBase class, and is intended to provide identical fu...

References mesh, TestCommWorld, and testMeshBaseVerifyHasCachedElemData().

◆ testDistributedMeshVerifyHasNeighborPtrs()

void MeshBaseTest::testDistributedMeshVerifyHasNeighborPtrs ( )
inline

Definition at line 85 of file mesh_base_test.C.

86 {
87 DistributedMesh mesh(*TestCommWorld);
89 }
void testMeshBaseVerifyHasNeighborPtrs(UnstructuredMesh &mesh)

References mesh, TestCommWorld, and testMeshBaseVerifyHasNeighborPtrs().

◆ testDistributedMeshVerifyIsPrepared()

void MeshBaseTest::testDistributedMeshVerifyIsPrepared ( )
inline

Definition at line 210 of file mesh_base_test.C.

211 {
212 DistributedMesh mesh(*TestCommWorld);
214 }
void testMeshBaseVerifyIsPrepared(UnstructuredMesh &mesh)

References mesh, TestCommWorld, and testMeshBaseVerifyIsPrepared().

◆ testDistributedMeshVerifyRemovalPreparation()

void MeshBaseTest::testDistributedMeshVerifyRemovalPreparation ( )
inline

Definition at line 183 of file mesh_base_test.C.

184 {
185 DistributedMesh mesh(*TestCommWorld);
187 }
void testMeshBaseVerifyRemovalPreparation(UnstructuredMesh &mesh)

References mesh, TestCommWorld, and testMeshBaseVerifyRemovalPreparation().

◆ 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.

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 }
subdomain_id_type subdomain_id() const
Definition elem.h:2591
bool is_prepared() const
Definition mesh_base.C:1064
void complete_preparation()
Definition mesh_base.C:874
void unset_has_cached_elem_data()
Tells this we have done some operation (e.g.
Definition mesh_base.h:281
bool valid_is_prepared(const MeshBase &mesh)
A function for testing whether a mesh's cached is_prepared() setting is not a false positive.

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().

Referenced by testDistributedMeshVerifyHasCachedElemData(), testMeshVerifyHasCachedElemData(), and testReplicatedMeshVerifyHasCachedElemData().

◆ testMeshBaseVerifyHasNeighborPtrs()

void MeshBaseTest::testMeshBaseVerifyHasNeighborPtrs ( UnstructuredMesh mesh)
inline

◆ testMeshBaseVerifyIsPrepared()

void MeshBaseTest::testMeshBaseVerifyIsPrepared ( UnstructuredMesh mesh)
inline

Definition at line 201 of file mesh_base_test.C.

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 }

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

Referenced by testDistributedMeshVerifyIsPrepared(), testMeshVerifyIsPrepared(), and testReplicatedMeshVerifyIsPrepared().

◆ 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.

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 }
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:340
void unset_has_removed_orphaned_nodes()
Tells this we have done some operation (e.g.
Definition mesh_base.h:318
void unset_is_partitioned()
Tells this we have done some operation creating unpartitioned elements.
Definition mesh_base.h:246

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().

Referenced by testDistributedMeshVerifyRemovalPreparation(), testMeshVerifyRemovalPreparation(), and testReplicatedMeshVerifyRemovalPreparation().

◆ testMeshVerifyHasCachedElemData()

void MeshBaseTest::testMeshVerifyHasCachedElemData ( )
inline

Definition at line 136 of file mesh_base_test.C.

137 {
138 Mesh mesh(*TestCommWorld);
140 }
The Mesh class is a thin wrapper, around the ReplicatedMesh class by default.
Definition mesh.h:51

References mesh, TestCommWorld, and testMeshBaseVerifyHasCachedElemData().

◆ testMeshVerifyHasNeighborPtrs()

void MeshBaseTest::testMeshVerifyHasNeighborPtrs ( )
inline

Definition at line 91 of file mesh_base_test.C.

92 {
93 Mesh mesh(*TestCommWorld);
95 }

References mesh, TestCommWorld, and testMeshBaseVerifyHasNeighborPtrs().

◆ testMeshVerifyIsPrepared()

void MeshBaseTest::testMeshVerifyIsPrepared ( )
inline

Definition at line 216 of file mesh_base_test.C.

217 {
218 Mesh mesh(*TestCommWorld);
220 }

References mesh, TestCommWorld, and testMeshBaseVerifyIsPrepared().

◆ testMeshVerifyRemovalPreparation()

void MeshBaseTest::testMeshVerifyRemovalPreparation ( )
inline

Definition at line 189 of file mesh_base_test.C.

190 {
191 Mesh mesh(*TestCommWorld);
193 }

References mesh, TestCommWorld, and testMeshBaseVerifyRemovalPreparation().

◆ testReplicatedMeshVerifyHasCachedElemData()

void MeshBaseTest::testReplicatedMeshVerifyHasCachedElemData ( )
inline

Definition at line 142 of file mesh_base_test.C.

143 {
144 ReplicatedMesh mesh(*TestCommWorld);
146 }
The ReplicatedMesh class is derived from the MeshBase class, and is used to store identical copies of...

References mesh, TestCommWorld, and testMeshBaseVerifyHasCachedElemData().

◆ testReplicatedMeshVerifyHasNeighborPtrs()

void MeshBaseTest::testReplicatedMeshVerifyHasNeighborPtrs ( )
inline

Definition at line 97 of file mesh_base_test.C.

98 {
99 ReplicatedMesh mesh(*TestCommWorld);
101 }

References mesh, TestCommWorld, and testMeshBaseVerifyHasNeighborPtrs().

◆ testReplicatedMeshVerifyIsPrepared()

void MeshBaseTest::testReplicatedMeshVerifyIsPrepared ( )
inline

Definition at line 222 of file mesh_base_test.C.

223 {
224 ReplicatedMesh mesh(*TestCommWorld);
226 }

References mesh, TestCommWorld, and testMeshBaseVerifyIsPrepared().

◆ testReplicatedMeshVerifyRemovalPreparation()

void MeshBaseTest::testReplicatedMeshVerifyRemovalPreparation ( )
inline

Definition at line 195 of file mesh_base_test.C.

196 {
197 ReplicatedMesh mesh(*TestCommWorld);
199 }

References mesh, TestCommWorld, and testMeshBaseVerifyRemovalPreparation().


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