Advanced Multi-Physics (AMP)
On-Line Documentation
meshTests.h
Go to the documentation of this file.
1#ifndef included_AMP_MeshTests
2#define included_AMP_MeshTests
3
4#include "AMP/discretization/simpleDOF_Manager.h"
5#include "AMP/mesh/Mesh.h"
6#include "AMP/utils/UnitTest.h"
7#include "AMP/vectors/Variable.h"
8#include "AMP/vectors/Vector.h"
9#include "AMP/vectors/VectorBuilder.h"
10#include "AMP/vectors/testHelpers/VectorTests.h"
11
12
13namespace AMP::Mesh {
14
15
21{
22public:
29 static void MeshTestLoop( AMP::UnitTest &ut, std::shared_ptr<AMP::Mesh::Mesh> mesh );
30
37 static void MeshGeometryTestLoop( AMP::UnitTest &ut, std::shared_ptr<AMP::Mesh::Mesh> mesh );
38
39
48 std::shared_ptr<AMP::Mesh::Mesh> mesh,
49 bool fast = false );
50
51
60 std::shared_ptr<AMP::Mesh::Mesh> mesh,
61 bool fast = false );
62
63public: // Basic tests
69 static void testID( AMP::UnitTest &ut );
70
71
78 static void testBoxMeshIndicies( AMP::UnitTest &ut, int ndim );
79
80
81public: // Mesh based tests
88 static void MeshIteratorTest( AMP::UnitTest &ut, std::shared_ptr<AMP::Mesh::Mesh> mesh );
89
90
98 std::shared_ptr<AMP::Mesh::Mesh> mesh );
99
107 static void MeshIteratorSetOPTest( AMP::UnitTest &ut, std::shared_ptr<AMP::Mesh::Mesh> mesh );
108
116 static void MeshCountTest( AMP::UnitTest &ut, std::shared_ptr<AMP::Mesh::Mesh> mesh );
117
118
125 static void MeshBasicTest( AMP::UnitTest &ut, std::shared_ptr<AMP::Mesh::Mesh> mesh );
126
127
134 static void VerifyGhostIsOwned( AMP::UnitTest &ut, std::shared_ptr<AMP::Mesh::Mesh> mesh );
135
136
144 std::shared_ptr<AMP::Mesh::Mesh> mesh );
145
152 static void VerifyBoundaryIterator( AMP::UnitTest &ut, std::shared_ptr<AMP::Mesh::Mesh> mesh );
153
154
161 static void testBlockIDs( AMP::UnitTest &ut, std::shared_ptr<AMP::Mesh::Mesh> mesh );
162
163
170 static void getNodeNeighbors( AMP::UnitTest &ut, std::shared_ptr<AMP::Mesh::Mesh> mesh );
171
172
179 static void DisplaceMeshScalar( AMP::UnitTest &ut, std::shared_ptr<AMP::Mesh::Mesh> mesh );
180
181
188 static void DisplaceMeshVector( AMP::UnitTest &ut, std::shared_ptr<AMP::Mesh::Mesh> mesh );
189
190
197 static void getParents( AMP::UnitTest &ut, std::shared_ptr<AMP::Mesh::Mesh> mesh );
198
199
206 static void cloneMesh( AMP::UnitTest &ut, std::shared_ptr<const AMP::Mesh::Mesh> mesh );
207
208
215 static void testBoxMesh( AMP::UnitTest &ut, std::shared_ptr<const AMP::Mesh::Mesh> mesh );
216
217
224 static void MeshPerformance( AMP::UnitTest &ut, std::shared_ptr<AMP::Mesh::Mesh> mesh );
225
226
227public: // Old tests
229 std::shared_ptr<AMP::Mesh::Mesh> mesh );
231 std::shared_ptr<AMP::Mesh::Mesh> mesh );
232 static void VerifyElementForNode( AMP::UnitTest &ut, std::shared_ptr<AMP::Mesh::Mesh> mesh );
233
234public: // Geometry based tests
241 static void TestBasicGeometry( AMP::UnitTest &ut, std::shared_ptr<const AMP::Mesh::Mesh> mesh );
242
249 static void TestInside( AMP::UnitTest &ut, std::shared_ptr<const AMP::Mesh::Mesh> mesh );
250
258 std::shared_ptr<const AMP::Mesh::Mesh> mesh );
259
267 std::shared_ptr<const AMP::Mesh::Mesh> mesh );
268
269
270public: // Vector based tests
273 {
274 public:
275 MeshVectorFactory( std::shared_ptr<AMP::Mesh::Mesh> mesh,
277 int gcw,
278 int dofs_per_node,
279 bool split )
280 : d_dofManager( AMP::Discretization::simpleDOFManager::create(
281 mesh, type, gcw, dofs_per_node, split ) ),
282 SPLIT( split )
283 {
284 }
287 {
288 auto var = std::make_shared<AMP::LinearAlgebra::Variable>( "test vector" );
290 }
292 std::string name() const override { return "MeshVectorFactory"; }
293
294 private:
296 std::shared_ptr<AMP::Discretization::DOFManager> d_dofManager;
297 bool SPLIT;
298 };
299
308 template<int DOF_PER_NODE, bool SPLIT>
310 std::shared_ptr<AMP::Mesh::Mesh> mesh,
311 std::shared_ptr<AMP::Discretization::DOFManager> DOFs,
312 int gcw );
313
314
321 template<int DOF_PER_NODE, bool SPLIT>
322 static void VerifyGetVectorTest( AMP::UnitTest &ut, std::shared_ptr<AMP::Mesh::Mesh> mesh );
323
324
325public: // Matrix based tests
327 std::shared_ptr<AMP::Mesh::Mesh> mesh,
328 int dofsPerNode,
329 bool split );
330
331 static void RowWriteTest( AMP::UnitTest &ut,
332 std::shared_ptr<AMP::Mesh::Mesh> mesh,
333 int dofsPerNode,
334 bool split );
335
336
337public:
338 static std::pair<size_t, size_t> ElementIteratorTest( AMP::UnitTest &ut,
339 std::shared_ptr<AMP::Mesh::Mesh> mesh,
340 const AMP::Mesh::MeshIterator &iterator,
341 const AMP::Mesh::GeomType type,
342 const std::vector<int> &blockIds,
343 const std::string &name );
344
345private:
346 static std::shared_ptr<AMP::Mesh::Mesh> globalMeshForMeshVectorFactory;
347};
348
349
350} // namespace AMP::Mesh
351
352// Extra includes
353#include "AMP/mesh/testHelpers/meshVectorTests.inline.h"
354
355
356#endif
static std::shared_ptr< Vector > create(int64_t fid, AMP::IO::RestartManager *manager)
Create the vector from the restart file.
std::shared_ptr< Vector > shared_ptr
Shorthand for shared pointer to Vector.
Definition Vector.h:60
A class used to iterate over elements in a Mesh.
Factory to create a vector from a mesh.
Definition meshTests.h:273
std::string name() const override
Get the name.
Definition meshTests.h:292
MeshVectorFactory(std::shared_ptr< AMP::Mesh::Mesh > mesh, AMP::Mesh::GeomType type, int gcw, int dofs_per_node, bool split)
Definition meshTests.h:275
std::shared_ptr< AMP::Discretization::DOFManager > d_dofManager
Definition meshTests.h:296
AMP::LinearAlgebra::Vector::shared_ptr getVector() const override
Get the Vector.
Definition meshTests.h:286
A helper class to store/run tests for a mesh.
Definition meshTests.h:21
static void VerifyGhostIsOwned(AMP::UnitTest &ut, std::shared_ptr< AMP::Mesh::Mesh > mesh)
Check ghost elements.
static void VerifyGetMatrixTrivialTest(AMP::UnitTest &ut, std::shared_ptr< AMP::Mesh::Mesh > mesh, int dofsPerNode, bool split)
static void VerifyBoundaryIDNodeIterator(AMP::UnitTest &ut, std::shared_ptr< AMP::Mesh::Mesh > mesh)
Check boundary ids.
static void MeshBasicTest(AMP::UnitTest &ut, std::shared_ptr< AMP::Mesh::Mesh > mesh)
Run basic tests.
static void testBoxMeshIndicies(AMP::UnitTest &ut, int ndim)
Check box mesh indicies.
static void VerifyBoundaryIterator(AMP::UnitTest &ut, std::shared_ptr< AMP::Mesh::Mesh > mesh)
Check boundary.
static void MeshPerformance(AMP::UnitTest &ut, std::shared_ptr< AMP::Mesh::Mesh > mesh)
Check mesh performance.
static void MeshMatrixTestLoop(AMP::UnitTest &ut, std::shared_ptr< AMP::Mesh::Mesh > mesh, bool fast=false)
Run all matrix based tests.
static void MeshTestLoop(AMP::UnitTest &ut, std::shared_ptr< AMP::Mesh::Mesh > mesh)
Run all mesh based tests.
static void MeshIteratorTest(AMP::UnitTest &ut, std::shared_ptr< AMP::Mesh::Mesh > mesh)
Checks the mesh iterators.
static void MeshGeometryTestLoop(AMP::UnitTest &ut, std::shared_ptr< AMP::Mesh::Mesh > mesh)
Run all mesh geometry based tests.
static std::pair< size_t, size_t > ElementIteratorTest(AMP::UnitTest &ut, std::shared_ptr< AMP::Mesh::Mesh > mesh, const AMP::Mesh::MeshIterator &iterator, const AMP::Mesh::GeomType type, const std::vector< int > &blockIds, const std::string &name)
static void simpleNodalVectorTests(AMP::UnitTest &ut, std::shared_ptr< AMP::Mesh::Mesh > mesh, std::shared_ptr< AMP::Discretization::DOFManager > DOFs, int gcw)
Simple nodal vector tests.
static void TestInside(AMP::UnitTest &ut, std::shared_ptr< const AMP::Mesh::Mesh > mesh)
Checks Geometry::inside.
static void getNodeNeighbors(AMP::UnitTest &ut, std::shared_ptr< AMP::Mesh::Mesh > mesh)
Check neighbors.
static void testID(AMP::UnitTest &ut)
Check basic id info.
static void MeshVectorTestLoop(AMP::UnitTest &ut, std::shared_ptr< AMP::Mesh::Mesh > mesh, bool fast=false)
Run all vector based tests.
static std::shared_ptr< AMP::Mesh::Mesh > globalMeshForMeshVectorFactory
Definition meshTests.h:346
static void VerifyNodeElemMapIteratorTest(AMP::UnitTest &ut, std::shared_ptr< AMP::Mesh::Mesh > mesh)
static void MeshIteratorOperationTest(AMP::UnitTest &ut, std::shared_ptr< AMP::Mesh::Mesh > mesh)
Checks the mesh operators.
static void TestBasicGeometry(AMP::UnitTest &ut, std::shared_ptr< const AMP::Mesh::Mesh > mesh)
Basic geometry class tests.
static void VerifyBoundaryIteratorTest(AMP::UnitTest &ut, std::shared_ptr< AMP::Mesh::Mesh > mesh)
static void VerifyGetVectorTest(AMP::UnitTest &ut, std::shared_ptr< AMP::Mesh::Mesh > mesh)
VerifyGetVectorTest.
static void TestPhysicalLogical(AMP::UnitTest &ut, std::shared_ptr< const AMP::Mesh::Mesh > mesh)
Checks Geometry::inside.
static void VerifyElementForNode(AMP::UnitTest &ut, std::shared_ptr< AMP::Mesh::Mesh > mesh)
static void TestNormalGeometry(AMP::UnitTest &ut, std::shared_ptr< const AMP::Mesh::Mesh > mesh)
Checks noraml.
static void testBoxMesh(AMP::UnitTest &ut, std::shared_ptr< const AMP::Mesh::Mesh > mesh)
Check BoxMesh.
static void MeshCountTest(AMP::UnitTest &ut, std::shared_ptr< AMP::Mesh::Mesh > mesh)
Checks the number of elements in a mesh.
static void MeshIteratorSetOPTest(AMP::UnitTest &ut, std::shared_ptr< AMP::Mesh::Mesh > mesh)
Checks the mesh set operations.
static void cloneMesh(AMP::UnitTest &ut, std::shared_ptr< const AMP::Mesh::Mesh > mesh)
Check clone.
static void testBlockIDs(AMP::UnitTest &ut, std::shared_ptr< AMP::Mesh::Mesh > mesh)
Check block ids.
static void DisplaceMeshVector(AMP::UnitTest &ut, std::shared_ptr< AMP::Mesh::Mesh > mesh)
Check displacement by a vector.
static void DisplaceMeshScalar(AMP::UnitTest &ut, std::shared_ptr< AMP::Mesh::Mesh > mesh)
Check displacement by a scalar.
static void RowWriteTest(AMP::UnitTest &ut, std::shared_ptr< AMP::Mesh::Mesh > mesh, int dofsPerNode, bool split)
static void getParents(AMP::UnitTest &ut, std::shared_ptr< AMP::Mesh::Mesh > mesh)
Check parents.
Class UnitTest is simple utility for running unit tests. It provides basic routines for tracing succe...
Definition UnitTest.h:49
AMP::LinearAlgebra::Vector::shared_ptr createVector(std::shared_ptr< AMP::Discretization::DOFManager > DOFs, std::shared_ptr< AMP::LinearAlgebra::Variable > variable, bool split=true)
This function will create a vector from an arbitrary DOFManager.
GeomType
Enumeration for basic mesh-based quantities.
Definition MeshID.h:12



Advanced Multi-Physics (AMP)
Oak Ridge National Laboratory
Idaho National Laboratory
Los Alamos National Laboratory
This page automatically produced from the
source code by doxygen
Last updated: Tue Mar 10 2026 13:06:41.
Comments on this page