1#ifndef included_AMP_MeshTests
2#define included_AMP_MeshTests
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"
48 std::shared_ptr<AMP::Mesh::Mesh> mesh,
60 std::shared_ptr<AMP::Mesh::Mesh> mesh,
98 std::shared_ptr<AMP::Mesh::Mesh> mesh );
144 std::shared_ptr<AMP::Mesh::Mesh> mesh );
229 std::shared_ptr<AMP::Mesh::Mesh> mesh );
231 std::shared_ptr<AMP::Mesh::Mesh> mesh );
258 std::shared_ptr<const AMP::Mesh::Mesh> mesh );
267 std::shared_ptr<const AMP::Mesh::Mesh> mesh );
281 mesh, type, gcw, dofs_per_node, split ) ),
288 auto var = std::make_shared<AMP::LinearAlgebra::Variable>(
"test vector" );
292 std::string
name()
const override {
return "MeshVectorFactory"; }
308 template<
int DOF_PER_NODE,
bool SPLIT>
310 std::shared_ptr<AMP::Mesh::Mesh> mesh,
311 std::shared_ptr<AMP::Discretization::DOFManager> DOFs,
321 template<
int DOF_PER_NODE,
bool SPLIT>
327 std::shared_ptr<AMP::Mesh::Mesh> mesh,
332 std::shared_ptr<AMP::Mesh::Mesh> mesh,
339 std::shared_ptr<AMP::Mesh::Mesh> mesh,
342 const std::vector<int> &blockIds,
343 const std::string &name );
353#include "AMP/mesh/testHelpers/meshVectorTests.inline.h"
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.
A class used to iterate over elements in a Mesh.
Factory to create a vector from a mesh.
std::string name() const override
Get the name.
MeshVectorFactory(std::shared_ptr< AMP::Mesh::Mesh > mesh, AMP::Mesh::GeomType type, int gcw, int dofs_per_node, bool split)
std::shared_ptr< AMP::Discretization::DOFManager > d_dofManager
AMP::LinearAlgebra::Vector::shared_ptr getVector() const override
Get the Vector.
A helper class to store/run tests for a mesh.
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
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...
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.