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

Public Types

typedef void(MeshGenerationTest::* Builder) (UnstructuredMesh &, unsigned int, ElemType)
 

Public Member Functions

 LIBMESH_CPPUNIT_TEST_SUITE (MeshGenerationTest)
 The goal of this test is to verify proper operation of MeshGeneration functions, as well as to indirectly verify the MeshBase functions they rely on. More...
 
 CPPUNIT_TEST (buildLineEdge2)
 
 CPPUNIT_TEST (buildLineEdge3)
 
 CPPUNIT_TEST (buildLineEdge4)
 
 CPPUNIT_TEST (buildSphereEdge2)
 
 CPPUNIT_TEST (buildSphereEdge3)
 
 CPPUNIT_TEST (buildSquareTri3)
 
 CPPUNIT_TEST (buildSquareTri6)
 
 CPPUNIT_TEST (buildSquareTri7)
 
 CPPUNIT_TEST (buildSquareQuad4)
 
 CPPUNIT_TEST (buildSquareQuad8)
 
 CPPUNIT_TEST (buildSquareQuad9)
 
 CPPUNIT_TEST (buildSquareC0PolygonEven)
 
 CPPUNIT_TEST (buildSquareC0PolygonOdd)
 
 CPPUNIT_TEST (buildSphereTri3)
 
 CPPUNIT_TEST (buildSphereQuad4)
 
 CPPUNIT_TEST (buildCubeTet4)
 
 CPPUNIT_TEST (buildCubeTet10)
 
 CPPUNIT_TEST (buildCubeTet14)
 
 CPPUNIT_TEST (buildCubeHex8)
 
 CPPUNIT_TEST (buildCubeHex20)
 
 CPPUNIT_TEST (buildCubeHex27)
 
 CPPUNIT_TEST (buildCubePrism6)
 
 CPPUNIT_TEST (buildCubePrism15)
 
 CPPUNIT_TEST (buildCubePrism18)
 
 CPPUNIT_TEST (buildCubePrism20)
 
 CPPUNIT_TEST (buildCubePrism21)
 
 CPPUNIT_TEST (buildCubePyramid5)
 
 CPPUNIT_TEST (buildCubePyramid13)
 
 CPPUNIT_TEST (buildCubePyramid14)
 
 CPPUNIT_TEST (buildSphereHex27)
 
 CPPUNIT_TEST (buildSphereHex8)
 
 CPPUNIT_TEST_SUITE_END ()
 
void setUp ()
 
void tearDown ()
 
void testBuildLine (UnstructuredMesh &mesh, unsigned int n, ElemType type)
 
void testBuildSquare (UnstructuredMesh &mesh, unsigned int n, ElemType type)
 
void testBuildCube (UnstructuredMesh &mesh, unsigned int n, ElemType type)
 
void testBuildSphere (unsigned int n_ref, ElemType type)
 
void tester (Builder f, unsigned int n, ElemType type)
 
void buildLineEdge2 ()
 
void buildLineEdge3 ()
 
void buildLineEdge4 ()
 
void buildSphereEdge2 ()
 
void buildSphereEdge3 ()
 
void buildSphereEdge4 ()
 
void buildSquareTri3 ()
 
void buildSquareTri6 ()
 
void buildSquareTri7 ()
 
void buildSquareQuad4 ()
 
void buildSquareQuad8 ()
 
void buildSquareQuad9 ()
 
void buildSquareC0PolygonOdd ()
 
void buildSquareC0PolygonEven ()
 
void buildSphereTri3 ()
 
void buildSphereQuad4 ()
 
void buildCubeTet4 ()
 
void buildCubeTet10 ()
 
void buildCubeTet14 ()
 
void buildCubeHex8 ()
 
void buildCubeHex20 ()
 
void buildCubeHex27 ()
 
void buildCubePrism6 ()
 
void buildCubePrism15 ()
 
void buildCubePrism18 ()
 
void buildCubePrism20 ()
 
void buildCubePrism21 ()
 
void buildCubePyramid5 ()
 
void buildCubePyramid13 ()
 
void buildCubePyramid14 ()
 
void buildSphereHex8 ()
 
void buildSphereHex27 ()
 

Protected Member Functions

std::unique_ptr< UnstructuredMeshnew_mesh (bool is_replicated)
 

Detailed Description

Definition at line 14 of file mesh_generation_test.C.

Member Typedef Documentation

◆ Builder

typedef void(MeshGenerationTest::* MeshGenerationTest::Builder) (UnstructuredMesh &, unsigned int, ElemType)

Definition at line 275 of file mesh_generation_test.C.

Member Function Documentation

◆ buildCubeHex20()

void MeshGenerationTest::buildCubeHex20 ( )
inline

Definition at line 315 of file mesh_generation_test.C.

References libMesh::HEX20, testBuildCube(), and tester().

315 { LOG_UNIT_TEST; tester(&MeshGenerationTest::testBuildCube, 2, HEX20); }
void testBuildCube(UnstructuredMesh &mesh, unsigned int n, ElemType type)
void tester(Builder f, unsigned int n, ElemType type)

◆ buildCubeHex27()

void MeshGenerationTest::buildCubeHex27 ( )
inline

Definition at line 316 of file mesh_generation_test.C.

References libMesh::HEX27, testBuildCube(), and tester().

316 { LOG_UNIT_TEST; tester(&MeshGenerationTest::testBuildCube, 2, HEX27); }
void testBuildCube(UnstructuredMesh &mesh, unsigned int n, ElemType type)
void tester(Builder f, unsigned int n, ElemType type)

◆ buildCubeHex8()

void MeshGenerationTest::buildCubeHex8 ( )
inline

Definition at line 314 of file mesh_generation_test.C.

References libMesh::HEX8, testBuildCube(), and tester().

314 { LOG_UNIT_TEST; tester(&MeshGenerationTest::testBuildCube, 2, HEX8); }
void testBuildCube(UnstructuredMesh &mesh, unsigned int n, ElemType type)
void tester(Builder f, unsigned int n, ElemType type)

◆ buildCubePrism15()

void MeshGenerationTest::buildCubePrism15 ( )
inline

Definition at line 318 of file mesh_generation_test.C.

References libMesh::PRISM15, testBuildCube(), and tester().

318 { LOG_UNIT_TEST; tester(&MeshGenerationTest::testBuildCube, 2, PRISM15); }
void testBuildCube(UnstructuredMesh &mesh, unsigned int n, ElemType type)
void tester(Builder f, unsigned int n, ElemType type)

◆ buildCubePrism18()

void MeshGenerationTest::buildCubePrism18 ( )
inline

Definition at line 319 of file mesh_generation_test.C.

References libMesh::PRISM18, testBuildCube(), and tester().

319 { LOG_UNIT_TEST; tester(&MeshGenerationTest::testBuildCube, 2, PRISM18); }
void testBuildCube(UnstructuredMesh &mesh, unsigned int n, ElemType type)
void tester(Builder f, unsigned int n, ElemType type)

◆ buildCubePrism20()

void MeshGenerationTest::buildCubePrism20 ( )
inline

Definition at line 320 of file mesh_generation_test.C.

References libMesh::PRISM20, testBuildCube(), and tester().

320 { LOG_UNIT_TEST; tester(&MeshGenerationTest::testBuildCube, 2, PRISM20); }
void testBuildCube(UnstructuredMesh &mesh, unsigned int n, ElemType type)
void tester(Builder f, unsigned int n, ElemType type)

◆ buildCubePrism21()

void MeshGenerationTest::buildCubePrism21 ( )
inline

Definition at line 321 of file mesh_generation_test.C.

References libMesh::PRISM21, testBuildCube(), and tester().

321 { LOG_UNIT_TEST; tester(&MeshGenerationTest::testBuildCube, 2, PRISM21); }
void testBuildCube(UnstructuredMesh &mesh, unsigned int n, ElemType type)
void tester(Builder f, unsigned int n, ElemType type)

◆ buildCubePrism6()

void MeshGenerationTest::buildCubePrism6 ( )
inline

Definition at line 317 of file mesh_generation_test.C.

References libMesh::PRISM6, testBuildCube(), and tester().

317 { LOG_UNIT_TEST; tester(&MeshGenerationTest::testBuildCube, 2, PRISM6); }
void testBuildCube(UnstructuredMesh &mesh, unsigned int n, ElemType type)
void tester(Builder f, unsigned int n, ElemType type)

◆ buildCubePyramid13()

void MeshGenerationTest::buildCubePyramid13 ( )
inline

Definition at line 327 of file mesh_generation_test.C.

References libMesh::PYRAMID13, testBuildCube(), and tester().

327 { LOG_UNIT_TEST; tester(&MeshGenerationTest::testBuildCube, 2, PYRAMID13); }
void testBuildCube(UnstructuredMesh &mesh, unsigned int n, ElemType type)
void tester(Builder f, unsigned int n, ElemType type)

◆ buildCubePyramid14()

void MeshGenerationTest::buildCubePyramid14 ( )
inline

Definition at line 328 of file mesh_generation_test.C.

References libMesh::PYRAMID14, testBuildCube(), and tester().

328 { LOG_UNIT_TEST; tester(&MeshGenerationTest::testBuildCube, 2, PYRAMID14); }
void testBuildCube(UnstructuredMesh &mesh, unsigned int n, ElemType type)
void tester(Builder f, unsigned int n, ElemType type)

◆ buildCubePyramid5()

void MeshGenerationTest::buildCubePyramid5 ( )
inline

Definition at line 326 of file mesh_generation_test.C.

References libMesh::PYRAMID5, testBuildCube(), and tester().

326 { LOG_UNIT_TEST; tester(&MeshGenerationTest::testBuildCube, 2, PYRAMID5); }
void testBuildCube(UnstructuredMesh &mesh, unsigned int n, ElemType type)
void tester(Builder f, unsigned int n, ElemType type)

◆ buildCubeTet10()

void MeshGenerationTest::buildCubeTet10 ( )
inline

Definition at line 312 of file mesh_generation_test.C.

References testBuildCube(), tester(), and libMesh::TET10.

312 { LOG_UNIT_TEST; tester(&MeshGenerationTest::testBuildCube, 2, TET10); }
void testBuildCube(UnstructuredMesh &mesh, unsigned int n, ElemType type)
void tester(Builder f, unsigned int n, ElemType type)

◆ buildCubeTet14()

void MeshGenerationTest::buildCubeTet14 ( )
inline

Definition at line 313 of file mesh_generation_test.C.

References testBuildCube(), tester(), and libMesh::TET14.

313 { LOG_UNIT_TEST; tester(&MeshGenerationTest::testBuildCube, 2, TET14); }
void testBuildCube(UnstructuredMesh &mesh, unsigned int n, ElemType type)
void tester(Builder f, unsigned int n, ElemType type)

◆ buildCubeTet4()

void MeshGenerationTest::buildCubeTet4 ( )
inline

Definition at line 311 of file mesh_generation_test.C.

References testBuildCube(), tester(), and libMesh::TET4.

311 { LOG_UNIT_TEST; tester(&MeshGenerationTest::testBuildCube, 2, TET4); }
void testBuildCube(UnstructuredMesh &mesh, unsigned int n, ElemType type)
void tester(Builder f, unsigned int n, ElemType type)

◆ buildLineEdge2()

void MeshGenerationTest::buildLineEdge2 ( )
inline

Definition at line 291 of file mesh_generation_test.C.

References libMesh::EDGE2, testBuildLine(), and tester().

291 { LOG_UNIT_TEST; tester(&MeshGenerationTest::testBuildLine, 5, EDGE2); }
void testBuildLine(UnstructuredMesh &mesh, unsigned int n, ElemType type)
void tester(Builder f, unsigned int n, ElemType type)

◆ buildLineEdge3()

void MeshGenerationTest::buildLineEdge3 ( )
inline

Definition at line 292 of file mesh_generation_test.C.

References libMesh::EDGE3, testBuildLine(), and tester().

292 { LOG_UNIT_TEST; tester(&MeshGenerationTest::testBuildLine, 5, EDGE3); }
void testBuildLine(UnstructuredMesh &mesh, unsigned int n, ElemType type)
void tester(Builder f, unsigned int n, ElemType type)

◆ buildLineEdge4()

void MeshGenerationTest::buildLineEdge4 ( )
inline

Definition at line 293 of file mesh_generation_test.C.

References libMesh::EDGE4, testBuildLine(), and tester().

293 { LOG_UNIT_TEST; tester(&MeshGenerationTest::testBuildLine, 5, EDGE4); }
void testBuildLine(UnstructuredMesh &mesh, unsigned int n, ElemType type)
void tester(Builder f, unsigned int n, ElemType type)

◆ buildSphereEdge2()

void MeshGenerationTest::buildSphereEdge2 ( )
inline

Definition at line 295 of file mesh_generation_test.C.

References libMesh::EDGE2.

295 { LOG_UNIT_TEST; testBuildSphere(2, EDGE2); }
void testBuildSphere(unsigned int n_ref, ElemType type)

◆ buildSphereEdge3()

void MeshGenerationTest::buildSphereEdge3 ( )
inline

Definition at line 296 of file mesh_generation_test.C.

References libMesh::EDGE3.

296 { LOG_UNIT_TEST; testBuildSphere(2, EDGE3); }
void testBuildSphere(unsigned int n_ref, ElemType type)

◆ buildSphereEdge4()

void MeshGenerationTest::buildSphereEdge4 ( )
inline

Definition at line 297 of file mesh_generation_test.C.

References libMesh::EDGE4.

297 { LOG_UNIT_TEST; testBuildSphere(2, EDGE4); }
void testBuildSphere(unsigned int n_ref, ElemType type)

◆ buildSphereHex27()

void MeshGenerationTest::buildSphereHex27 ( )
inline

Definition at line 332 of file mesh_generation_test.C.

References libMesh::HEX27.

332 { LOG_UNIT_TEST; testBuildSphere(2, HEX27); }
void testBuildSphere(unsigned int n_ref, ElemType type)

◆ buildSphereHex8()

void MeshGenerationTest::buildSphereHex8 ( )
inline

Definition at line 331 of file mesh_generation_test.C.

References libMesh::HEX8.

331 { LOG_UNIT_TEST; testBuildSphere(2, HEX8); }
void testBuildSphere(unsigned int n_ref, ElemType type)

◆ buildSphereQuad4()

void MeshGenerationTest::buildSphereQuad4 ( )
inline

Definition at line 309 of file mesh_generation_test.C.

References libMesh::QUAD4.

309 { LOG_UNIT_TEST; testBuildSphere(2, QUAD4); }
void testBuildSphere(unsigned int n_ref, ElemType type)

◆ buildSphereTri3()

void MeshGenerationTest::buildSphereTri3 ( )
inline

Definition at line 308 of file mesh_generation_test.C.

References libMesh::TRI3.

308 { LOG_UNIT_TEST; testBuildSphere(2, TRI3); }
void testBuildSphere(unsigned int n_ref, ElemType type)

◆ buildSquareC0PolygonEven()

void MeshGenerationTest::buildSquareC0PolygonEven ( )
inline

Definition at line 306 of file mesh_generation_test.C.

References libMesh::C0POLYGON, testBuildSquare(), and tester().

306 { LOG_UNIT_TEST; tester(&MeshGenerationTest::testBuildSquare, 6, C0POLYGON); }
void testBuildSquare(UnstructuredMesh &mesh, unsigned int n, ElemType type)
void tester(Builder f, unsigned int n, ElemType type)

◆ buildSquareC0PolygonOdd()

void MeshGenerationTest::buildSquareC0PolygonOdd ( )
inline

Definition at line 305 of file mesh_generation_test.C.

References libMesh::C0POLYGON, testBuildSquare(), and tester().

305 { LOG_UNIT_TEST; tester(&MeshGenerationTest::testBuildSquare, 5, C0POLYGON); }
void testBuildSquare(UnstructuredMesh &mesh, unsigned int n, ElemType type)
void tester(Builder f, unsigned int n, ElemType type)

◆ buildSquareQuad4()

void MeshGenerationTest::buildSquareQuad4 ( )
inline

Definition at line 302 of file mesh_generation_test.C.

References libMesh::QUAD4, testBuildSquare(), and tester().

302 { LOG_UNIT_TEST; tester(&MeshGenerationTest::testBuildSquare, 4, QUAD4); }
void testBuildSquare(UnstructuredMesh &mesh, unsigned int n, ElemType type)
void tester(Builder f, unsigned int n, ElemType type)

◆ buildSquareQuad8()

void MeshGenerationTest::buildSquareQuad8 ( )
inline

Definition at line 303 of file mesh_generation_test.C.

References libMesh::QUAD8, testBuildSquare(), and tester().

303 { LOG_UNIT_TEST; tester(&MeshGenerationTest::testBuildSquare, 4, QUAD8); }
void testBuildSquare(UnstructuredMesh &mesh, unsigned int n, ElemType type)
void tester(Builder f, unsigned int n, ElemType type)

◆ buildSquareQuad9()

void MeshGenerationTest::buildSquareQuad9 ( )
inline

Definition at line 304 of file mesh_generation_test.C.

References libMesh::QUAD9, testBuildSquare(), and tester().

304 { LOG_UNIT_TEST; tester(&MeshGenerationTest::testBuildSquare, 4, QUAD9); }
void testBuildSquare(UnstructuredMesh &mesh, unsigned int n, ElemType type)
void tester(Builder f, unsigned int n, ElemType type)

◆ buildSquareTri3()

void MeshGenerationTest::buildSquareTri3 ( )
inline

Definition at line 299 of file mesh_generation_test.C.

References testBuildSquare(), tester(), and libMesh::TRI3.

299 { LOG_UNIT_TEST; tester(&MeshGenerationTest::testBuildSquare, 3, TRI3); }
void testBuildSquare(UnstructuredMesh &mesh, unsigned int n, ElemType type)
void tester(Builder f, unsigned int n, ElemType type)

◆ buildSquareTri6()

void MeshGenerationTest::buildSquareTri6 ( )
inline

Definition at line 300 of file mesh_generation_test.C.

References testBuildSquare(), tester(), and libMesh::TRI6.

300 { LOG_UNIT_TEST; tester(&MeshGenerationTest::testBuildSquare, 4, TRI6); }
void testBuildSquare(UnstructuredMesh &mesh, unsigned int n, ElemType type)
void tester(Builder f, unsigned int n, ElemType type)

◆ buildSquareTri7()

void MeshGenerationTest::buildSquareTri7 ( )
inline

Definition at line 301 of file mesh_generation_test.C.

References testBuildSquare(), tester(), and libMesh::TRI7.

301 { LOG_UNIT_TEST; tester(&MeshGenerationTest::testBuildSquare, 4, TRI7); }
void testBuildSquare(UnstructuredMesh &mesh, unsigned int n, ElemType type)
void tester(Builder f, unsigned int n, ElemType type)

◆ CPPUNIT_TEST() [1/31]

MeshGenerationTest::CPPUNIT_TEST ( buildLineEdge2  )

◆ CPPUNIT_TEST() [2/31]

MeshGenerationTest::CPPUNIT_TEST ( buildLineEdge3  )

◆ CPPUNIT_TEST() [3/31]

MeshGenerationTest::CPPUNIT_TEST ( buildLineEdge4  )

◆ CPPUNIT_TEST() [4/31]

MeshGenerationTest::CPPUNIT_TEST ( buildSphereEdge2  )

◆ CPPUNIT_TEST() [5/31]

MeshGenerationTest::CPPUNIT_TEST ( buildSphereEdge3  )

◆ CPPUNIT_TEST() [6/31]

MeshGenerationTest::CPPUNIT_TEST ( buildSquareTri3  )

◆ CPPUNIT_TEST() [7/31]

MeshGenerationTest::CPPUNIT_TEST ( buildSquareTri6  )

◆ CPPUNIT_TEST() [8/31]

MeshGenerationTest::CPPUNIT_TEST ( buildSquareTri7  )

◆ CPPUNIT_TEST() [9/31]

MeshGenerationTest::CPPUNIT_TEST ( buildSquareQuad4  )

◆ CPPUNIT_TEST() [10/31]

MeshGenerationTest::CPPUNIT_TEST ( buildSquareQuad8  )

◆ CPPUNIT_TEST() [11/31]

MeshGenerationTest::CPPUNIT_TEST ( buildSquareQuad9  )

◆ CPPUNIT_TEST() [12/31]

MeshGenerationTest::CPPUNIT_TEST ( buildSquareC0PolygonEven  )

◆ CPPUNIT_TEST() [13/31]

MeshGenerationTest::CPPUNIT_TEST ( buildSquareC0PolygonOdd  )

◆ CPPUNIT_TEST() [14/31]

MeshGenerationTest::CPPUNIT_TEST ( buildSphereTri3  )

◆ CPPUNIT_TEST() [15/31]

MeshGenerationTest::CPPUNIT_TEST ( buildSphereQuad4  )

◆ CPPUNIT_TEST() [16/31]

MeshGenerationTest::CPPUNIT_TEST ( buildCubeTet4  )

◆ CPPUNIT_TEST() [17/31]

MeshGenerationTest::CPPUNIT_TEST ( buildCubeTet10  )

◆ CPPUNIT_TEST() [18/31]

MeshGenerationTest::CPPUNIT_TEST ( buildCubeTet14  )

◆ CPPUNIT_TEST() [19/31]

MeshGenerationTest::CPPUNIT_TEST ( buildCubeHex8  )

◆ CPPUNIT_TEST() [20/31]

MeshGenerationTest::CPPUNIT_TEST ( buildCubeHex20  )

◆ CPPUNIT_TEST() [21/31]

MeshGenerationTest::CPPUNIT_TEST ( buildCubeHex27  )

◆ CPPUNIT_TEST() [22/31]

MeshGenerationTest::CPPUNIT_TEST ( buildCubePrism6  )

◆ CPPUNIT_TEST() [23/31]

MeshGenerationTest::CPPUNIT_TEST ( buildCubePrism15  )

◆ CPPUNIT_TEST() [24/31]

MeshGenerationTest::CPPUNIT_TEST ( buildCubePrism18  )

◆ CPPUNIT_TEST() [25/31]

MeshGenerationTest::CPPUNIT_TEST ( buildCubePrism20  )

◆ CPPUNIT_TEST() [26/31]

MeshGenerationTest::CPPUNIT_TEST ( buildCubePrism21  )

◆ CPPUNIT_TEST() [27/31]

MeshGenerationTest::CPPUNIT_TEST ( buildCubePyramid5  )

◆ CPPUNIT_TEST() [28/31]

MeshGenerationTest::CPPUNIT_TEST ( buildCubePyramid13  )

◆ CPPUNIT_TEST() [29/31]

MeshGenerationTest::CPPUNIT_TEST ( buildCubePyramid14  )

◆ CPPUNIT_TEST() [30/31]

MeshGenerationTest::CPPUNIT_TEST ( buildSphereHex27  )

◆ CPPUNIT_TEST() [31/31]

MeshGenerationTest::CPPUNIT_TEST ( buildSphereHex8  )

◆ CPPUNIT_TEST_SUITE_END()

MeshGenerationTest::CPPUNIT_TEST_SUITE_END ( )

◆ LIBMESH_CPPUNIT_TEST_SUITE()

MeshGenerationTest::LIBMESH_CPPUNIT_TEST_SUITE ( MeshGenerationTest  )

The goal of this test is to verify proper operation of MeshGeneration functions, as well as to indirectly verify the MeshBase functions they rely on.

◆ new_mesh()

std::unique_ptr<UnstructuredMesh> MeshGenerationTest::new_mesh ( bool  is_replicated)
inlineprotected

Definition at line 80 of file mesh_generation_test.C.

81  {
82  if (is_replicated)
83  return std::make_unique<ReplicatedMesh>(*TestCommWorld);
84  return std::make_unique<DistributedMesh>(*TestCommWorld);
85  }

◆ setUp()

void MeshGenerationTest::setUp ( )
inline

Definition at line 88 of file mesh_generation_test.C.

88 {}

◆ tearDown()

void MeshGenerationTest::tearDown ( )
inline

Definition at line 90 of file mesh_generation_test.C.

90 {}

◆ testBuildCube()

void MeshGenerationTest::testBuildCube ( UnstructuredMesh mesh,
unsigned int  n,
ElemType  type 
)
inline

Definition at line 162 of file mesh_generation_test.C.

References libMesh::MeshTools::Generation::build_cube(), libMesh::MeshTools::create_bounding_box(), libMesh::HEX20, libMesh::BoundingBox::max(), mesh, libMesh::BoundingBox::min(), libMesh::MeshBase::n_elem(), libMesh::MeshBase::n_nodes(), libMesh::PRISM15, libMesh::PRISM18, libMesh::PRISM20, libMesh::PRISM21, libMesh::PRISM6, libMesh::PYRAMID13, libMesh::PYRAMID14, libMesh::PYRAMID5, libMesh::Real, libMesh::Elem::type_to_n_nodes_map, and libMesh::Elem::type_to_n_sides_map.

Referenced by buildCubeHex20(), buildCubeHex27(), buildCubeHex8(), buildCubePrism15(), buildCubePrism18(), buildCubePrism20(), buildCubePrism21(), buildCubePrism6(), buildCubePyramid13(), buildCubePyramid14(), buildCubePyramid5(), buildCubeTet10(), buildCubeTet14(), and buildCubeTet4().

163  {
164  MeshTools::Generation::build_cube (mesh, n, n, n, -2.0, 3.0, -4.0, 5.0, -6.0, 7.0, type);
165  switch (Elem::type_to_n_sides_map[type])
166  {
167  case 4: // tets
168  CPPUNIT_ASSERT_EQUAL(mesh.n_elem(), cast_int<dof_id_type>(n*n*n*24));
169  break;
170  case 5: // prisms, pyramids
171  if (type == PRISM6 || type == PRISM15 || type == PRISM18 ||
172  type == PRISM20 || type == PRISM21)
173  CPPUNIT_ASSERT_EQUAL(mesh.n_elem(), cast_int<dof_id_type>(n*n*n*2));
174  else
175  CPPUNIT_ASSERT_EQUAL(mesh.n_elem(), cast_int<dof_id_type>(n*n*n*6));
176  break;
177  case 6: // hexes
178  CPPUNIT_ASSERT_EQUAL(mesh.n_elem(), cast_int<dof_id_type>(n*n*n));
179  break;
180  default:
181  libmesh_error();
182  }
183 
184 
185  switch (Elem::type_to_n_nodes_map[type])
186  {
187  case 4: // First-order tets
188  CPPUNIT_ASSERT_EQUAL(mesh.n_nodes(),
189  cast_int<dof_id_type>((n+1)*(n+1)*(n+1) + n*n*n + 3*(n+1)*n*n));
190  break;
191  case 6: // First-order prisms and hexes use the same nodes
192  case 8:
193  CPPUNIT_ASSERT_EQUAL(mesh.n_nodes(),
194  cast_int<dof_id_type>((n+1)*(n+1)*(n+1)));
195  break;
196  case 10: // Second-order tets
197  CPPUNIT_ASSERT_EQUAL(mesh.n_nodes(),
198  cast_int<dof_id_type>((2*n+1)*(2*n+1)*(2*n+1) + 14*n*n*n + 4*3*(n+1)*n*n));
199  break;
200  case 18:
201  case 27: // Second-order prisms and hexes use the same nodes
202  CPPUNIT_ASSERT_EQUAL(mesh.n_nodes(),
203  cast_int<dof_id_type>((2*n+1)*(2*n+1)*(2*n+1)));
204  break;
205  case 20:
206  if (type == HEX20)
207  CPPUNIT_ASSERT_EQUAL(mesh.n_nodes(),
208  cast_int<dof_id_type>((2*n+1)*(2*n+1)*(2*n+1) - n*n*n - 3*(n+1)*n*n));
209  if (type == PRISM20)
210  CPPUNIT_ASSERT_EQUAL(mesh.n_nodes(),
211  cast_int<dof_id_type>((2*n+1)*(2*n+1)*(2*n+1) + 2*(n+1)*n*n));
212  break;
213  case 21: // Prisms based on full Tri7 cross sections
214  CPPUNIT_ASSERT_EQUAL(mesh.n_nodes(),
215  cast_int<dof_id_type>((2*n+1)*(2*n+1)*(2*n+1) + 2*(2*n+1)*n*n));
216  break;
217  case 15: // weird partial order prism
218  CPPUNIT_ASSERT_EQUAL(mesh.n_nodes(),
219  cast_int<dof_id_type>((2*n+1)*(2*n+1)*(2*n+1) - n*n*n - 2*(n+1)*n*n));
220  break;
221  case 5: // pyramids
222  CPPUNIT_ASSERT_EQUAL(mesh.n_nodes(),
223  cast_int<dof_id_type>((n+1)*(n+1)*(n+1) + n*n*n));
224  break;
225  case 13:
226  CPPUNIT_ASSERT_EQUAL(mesh.n_nodes(),
227  cast_int<dof_id_type>((2*n+1)*(2*n+1)*(2*n+1) + 8*n*n*n - 3*(n+1)*n*n));
228  break;
229  case 14: // pyramids, tets
230  if (type == PYRAMID14)
231  CPPUNIT_ASSERT_EQUAL(mesh.n_nodes(),
232  cast_int<dof_id_type>((2*n+1)*(2*n+1)*(2*n+1) + 8*n*n*n));
233  else // TET14
234  CPPUNIT_ASSERT_EQUAL(mesh.n_nodes(),
235  cast_int<dof_id_type>((2*n+1)*(2*n+1)*(2*n+1) + 14*n*n*n + 4*3*(n+1)*n*n +
236  36*n*n*n + 4*3*(n+1)*n*n));
237  break;
238  default:
239  libmesh_error();
240  }
241 
242  // Our bounding boxes can be loose on higher order elements, but
243  // we can at least assert that they're not too tight
245  CPPUNIT_ASSERT(bbox.min()(0) <= Real(-2.0));
246  CPPUNIT_ASSERT(bbox.max()(0) >= Real(3.0));
247  CPPUNIT_ASSERT(bbox.min()(1) <= Real(-4.0));
248  CPPUNIT_ASSERT(bbox.max()(1) >= Real(5.0));
249  CPPUNIT_ASSERT(bbox.min()(2) <= Real(-6.0));
250  CPPUNIT_ASSERT(bbox.max()(2) >= Real(7.0));
251 
252  // We don't yet try to do affine map optimizations on pyramids
253  if (type == PYRAMID5 ||
254  type == PYRAMID13 ||
255  type == PYRAMID14)
256  return;
257 
258  // Do serial assertions *after* all parallel assertions, so we
259  // stay in sync after failure on only some processor(s)
260  for (auto & elem : mesh.element_ptr_range())
261  CPPUNIT_ASSERT(elem->has_affine_map());
262  }
libMesh::BoundingBox create_bounding_box(const MeshBase &mesh)
Definition: mesh_tools.C:566
MeshBase & mesh
const Point & min() const
Definition: bounding_box.h:77
Defines a Cartesian bounding box by the two corner extremum.
Definition: bounding_box.h:40
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const Point & max() const
Definition: bounding_box.h:86
virtual dof_id_type n_elem() const =0
void build_cube(UnstructuredMesh &mesh, const unsigned int nx=0, const unsigned int ny=0, const unsigned int nz=0, const Real xmin=0., const Real xmax=1., const Real ymin=0., const Real ymax=1., const Real zmin=0., const Real zmax=1., const ElemType type=INVALID_ELEM, const bool gauss_lobatto_grid=false)
Builds a (elements) cube.
virtual dof_id_type n_nodes() const =0

◆ testBuildLine()

void MeshGenerationTest::testBuildLine ( UnstructuredMesh mesh,
unsigned int  n,
ElemType  type 
)
inline

Definition at line 92 of file mesh_generation_test.C.

References libMesh::MeshTools::Generation::build_line(), libMesh::MeshTools::create_bounding_box(), mesh, libMesh::MeshBase::n_elem(), libMesh::MeshBase::n_nodes(), libMesh::Real, and libMesh::Elem::type_to_n_nodes_map.

Referenced by buildLineEdge2(), buildLineEdge3(), and buildLineEdge4().

93  {
94  MeshTools::Generation::build_line (mesh, n, -1.0, 2.0, type);
95  CPPUNIT_ASSERT_EQUAL(mesh.n_elem(), cast_int<dof_id_type>(n));
96  CPPUNIT_ASSERT_EQUAL(mesh.n_nodes(),
97  cast_int<dof_id_type>((Elem::type_to_n_nodes_map[type]-1)*n + 1));
98 
100  CPPUNIT_ASSERT_EQUAL(bbox.min()(0), Real(-1.0));
101  CPPUNIT_ASSERT_EQUAL(bbox.max()(0), Real(2.0));
102 
103  // Do serial assertions *after* all parallel assertions, so we
104  // stay in sync after failure on only some processor(s)
105  for (auto & elem : mesh.element_ptr_range())
106  CPPUNIT_ASSERT(elem->has_affine_map());
107  }
libMesh::BoundingBox create_bounding_box(const MeshBase &mesh)
Definition: mesh_tools.C:566
MeshBase & mesh
Defines a Cartesian bounding box by the two corner extremum.
Definition: bounding_box.h:40
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void build_line(UnstructuredMesh &mesh, const unsigned int nx, const Real xmin=0., const Real xmax=1., const ElemType type=INVALID_ELEM, const bool gauss_lobatto_grid=false)
A specialized build_cube() for 1D meshes.
virtual dof_id_type n_elem() const =0
virtual dof_id_type n_nodes() const =0

◆ testBuildSphere()

void MeshGenerationTest::testBuildSphere ( unsigned int  n_ref,
ElemType  type 
)
inline

Definition at line 264 of file mesh_generation_test.C.

References libMesh::MeshBase::allow_renumbering(), libMesh::MeshTools::Generation::build_sphere(), and TestCommWorld.

265  {
267  MeshTools::Generation::build_sphere (rmesh, 2.0, n_ref, type);
268 
270  dmesh.allow_renumbering(false);
271  MeshTools::Generation::build_sphere (dmesh, 2.0, n_ref, type);
272  }
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
The DistributedMesh class is derived from the MeshBase class, and is intended to provide identical fu...
void build_sphere(UnstructuredMesh &mesh, const Real radius=1, const unsigned int n_refinements=2, const ElemType type=INVALID_ELEM, const unsigned int n_smooth=2, const bool flat=true)
Meshes a spherical or mapped-spherical domain.

◆ testBuildSquare()

void MeshGenerationTest::testBuildSquare ( UnstructuredMesh mesh,
unsigned int  n,
ElemType  type 
)
inline

Definition at line 109 of file mesh_generation_test.C.

References libMesh::MeshTools::Generation::build_square(), libMesh::C0POLYGON, libMesh::MeshTools::create_bounding_box(), libMesh::BoundingBox::max(), mesh, libMesh::BoundingBox::min(), libMesh::MeshBase::n_elem(), libMesh::MeshBase::n_nodes(), libMesh::QUAD4, libMesh::QUAD8, libMesh::QUAD9, libMesh::Real, libMesh::TRI3, libMesh::TRI6, libMesh::TRI7, and libMesh::Elem::type_to_n_sides_map.

Referenced by buildSquareC0PolygonEven(), buildSquareC0PolygonOdd(), buildSquareQuad4(), buildSquareQuad8(), buildSquareQuad9(), buildSquareTri3(), buildSquareTri6(), and buildSquareTri7().

110  {
111  MeshTools::Generation::build_square (mesh, n, n, -2.0, 3.0, -4.0, 5.0, type);
112  if (type == C0POLYGON)
113  CPPUNIT_ASSERT_EQUAL(mesh.n_elem(), cast_int<dof_id_type>(n*n + 4 + 2 * (n - 1) + ((n - 1) / 2)));
114  else if (Elem::type_to_n_sides_map[type] == 4)
115  CPPUNIT_ASSERT_EQUAL(mesh.n_elem(), cast_int<dof_id_type>(n*n));
116  else
117  CPPUNIT_ASSERT_EQUAL(mesh.n_elem(), cast_int<dof_id_type>(n*n*2));
118 
119  switch (type)
120  {
121  case TRI3: // First-order elements
122  case QUAD4:
123  CPPUNIT_ASSERT_EQUAL(mesh.n_nodes(),
124  cast_int<dof_id_type>((n+1)*(n+1)));
125  break;
126  case TRI6: // Second-order elements
127  case QUAD9:
128  CPPUNIT_ASSERT_EQUAL(mesh.n_nodes(),
129  cast_int<dof_id_type>((2*n+1)*(2*n+1)));
130  break;
131  case QUAD8: // Not-really-second-order element missing center nodes
132  CPPUNIT_ASSERT_EQUAL(mesh.n_nodes(),
133  cast_int<dof_id_type>((2*n+1)*(2*n+1) - n*n));
134  break;
135  case TRI7: // Not-really-second-order element with extra center nodes
136  CPPUNIT_ASSERT_EQUAL(mesh.n_nodes(),
137  cast_int<dof_id_type>((2*n+1)*(2*n+1) + 2*n*n));
138  break;
139  case C0POLYGON:
140  CPPUNIT_ASSERT_EQUAL(mesh.n_nodes(),
141  cast_int<dof_id_type>(4 + 2*n*n + (n - 1) + 2*n + 2 * (n%2)));
142  break;
143  default: // Wait, what did we try to build?
144  CPPUNIT_ASSERT(false);
145  }
146 
147  // Our bounding boxes can be loose on higher order elements, but
148  // we can at least assert that they're not too tight
150  CPPUNIT_ASSERT(bbox.min()(0) <= Real(-2.0));
151  CPPUNIT_ASSERT(bbox.max()(0) >= Real(3.0));
152  CPPUNIT_ASSERT(bbox.min()(1) <= Real(-4.0));
153  CPPUNIT_ASSERT(bbox.max()(1) >= Real(5.0));
154 
155  // Do serial assertions *after* all parallel assertions, so we
156  // stay in sync after failure on only some processor(s)
157  if (type != C0POLYGON)
158  for (auto & elem : mesh.element_ptr_range())
159  CPPUNIT_ASSERT(elem->has_affine_map());
160  }
libMesh::BoundingBox create_bounding_box(const MeshBase &mesh)
Definition: mesh_tools.C:566
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 Point & min() const
Definition: bounding_box.h:77
Defines a Cartesian bounding box by the two corner extremum.
Definition: bounding_box.h:40
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const Point & max() const
Definition: bounding_box.h:86
virtual dof_id_type n_elem() const =0
virtual dof_id_type n_nodes() const =0

◆ tester()

void MeshGenerationTest::tester ( Builder  f,
unsigned int  n,
ElemType  type 
)
inline

Definition at line 277 of file mesh_generation_test.C.

References libMesh::MeshBase::allow_renumbering(), and mesh.

278  {
279  for (int is_replicated = 0; is_replicated != 2; ++is_replicated)
280  {
281  for (int skip_renumber = 0 ; skip_renumber != 2; ++skip_renumber)
282  {
283  std::unique_ptr<UnstructuredMesh> mesh =
284  new_mesh(is_replicated);
285  mesh->allow_renumbering(!skip_renumber);
286  (this->*f)(*mesh, n, type);
287  }
288  }
289  }
void allow_renumbering(bool allow)
If false is passed in then this mesh will no longer be renumbered when being prepared for use...
Definition: mesh_base.h:1345
MeshBase & mesh
std::unique_ptr< UnstructuredMesh > new_mesh(bool is_replicated)

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