Nektar++
Loading...
Searching...
No Matches
Functions
Nektar::HexCollectionTests Namespace Reference

The above copyright notice and this permission notice shall be included. More...

Functions

SpatialDomains::SegGeomUniquePtr CreateSegGeom (unsigned int id, SpatialDomains::PointGeom *v0, SpatialDomains::PointGeom *v1)
 
SpatialDomains::HexGeomUniquePtr CreateHex (std::array< SpatialDomains::PointGeom *, 8 > v, std::array< SpatialDomains::SegGeomUniquePtr, 12 > &segVec, std::array< SpatialDomains::QuadGeomUniquePtr, 6 > &faceVec)
 
 BOOST_AUTO_TEST_CASE (TestHexBwdTrans_StdMat_UniformP)
 

Detailed Description

The above copyright notice and this permission notice shall be included.

Function Documentation

◆ BOOST_AUTO_TEST_CASE()

Nektar::HexCollectionTests::BOOST_AUTO_TEST_CASE ( TestHexBwdTrans_StdMat_UniformP  )

Definition at line 103 of file TestHexCollection.cpp.

104{
106 new SpatialDomains::PointGeom(3u, 0u, -1.0, -1.0, -1.0));
108 new SpatialDomains::PointGeom(3u, 1u, 1.0, -1.0, -1.0));
110 new SpatialDomains::PointGeom(3u, 2u, 1.0, 1.0, -1.0));
112 new SpatialDomains::PointGeom(3u, 3u, -1.0, 1.0, -1.0));
114 new SpatialDomains::PointGeom(3u, 4u, -1.0, -1.0, 1.0));
116 new SpatialDomains::PointGeom(3u, 5u, 1.0, -1.0, 1.0));
118 new SpatialDomains::PointGeom(3u, 6u, 1.0, 1.0, 1.0));
120 new SpatialDomains::PointGeom(3u, 7u, -1.0, 1.0, 1.0));
121
122 std::array<SpatialDomains::PointGeom *, 8> v = {
123 v0.get(), v1.get(), v2.get(), v3.get(),
124 v4.get(), v5.get(), v6.get(), v7.get()};
125 std::array<SpatialDomains::SegGeomUniquePtr, 12> segVec;
126 std::array<SpatialDomains::QuadGeomUniquePtr, 6> faceVec;
127 SpatialDomains::HexGeomUniquePtr hexGeom = CreateHex(v, segVec, faceVec);
128
129 Nektar::LibUtilities::PointsType quadPointsTypeDir1 =
131 Nektar::LibUtilities::BasisType basisTypeDir1 =
133 unsigned int numQuadPoints = 6;
134 const Nektar::LibUtilities::PointsKey quadPointsKeyDir1(numQuadPoints,
135 quadPointsTypeDir1);
136 const Nektar::LibUtilities::BasisKey basisKeyDir1(basisTypeDir1, 4,
137 quadPointsKeyDir1);
138
141 basisKeyDir1, basisKeyDir1, basisKeyDir1, hexGeom.get());
142
143 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
144 CollExp.push_back(Exp);
145
147 Collections::CollectionOptimisation colOpt(dummySession, 3,
148 Collections::eStdMat);
149 Collections::OperatorImpMap impTypes = colOpt.GetOperatorImpMap(Exp);
150 Collections::Collection c(CollExp, impTypes);
151 c.Initialise(Collections::eBwdTrans);
152
153 Array<OneD, NekDouble> coeffs(Exp->GetNcoeffs(), 1.0), tmp;
154 for (int i = 0; i < coeffs.size(); ++i)
155 {
156 coeffs[i] = i + 1;
157 }
158 Array<OneD, NekDouble> phys1(Exp->GetTotPoints());
159 Array<OneD, NekDouble> phys2(Exp->GetTotPoints());
160
161 Exp->BwdTrans(coeffs, phys1);
162 c.ApplyOperator(Collections::eBwdTrans, coeffs, phys2);
163
164 double epsilon = 1.0e-8;
165 for (int i = 0; i < phys1.size(); ++i)
166 {
167 BOOST_CHECK_CLOSE(phys1[i], phys2[i], epsilon);
168 }
169}
Describes the specification for a Basis.
Definition Basis.h:45
Defines a specification for a set of points.
Definition Points.h:50
General purpose memory allocation routines with the ability to allocate from thread specific memory p...
std::map< OperatorType, ImplementationType > OperatorImpMap
Definition Operator.h:131
std::shared_ptr< SessionReader > SessionReaderSharedPtr
@ eGaussLobattoLegendre
1D Gauss-Lobatto-Legendre quadrature points
Definition PointsType.h:51
@ eModified_A
Principle Modified Functions .
Definition BasisType.h:48
std::shared_ptr< HexExp > HexExpSharedPtr
Definition HexExp.h:258
unique_ptr_objpool< HexGeom > HexGeomUniquePtr
Definition MeshGraph.h:104
unique_ptr_objpool< PointGeom > PointGeomUniquePtr
Definition MeshGraph.h:93

References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), Nektar::Collections::Collection::ApplyOperator(), CreateHex(), Nektar::Collections::eBwdTrans, Nektar::LibUtilities::eGaussLobattoLegendre, Nektar::LibUtilities::eModified_A, Nektar::Collections::eStdMat, Nektar::Collections::CollectionOptimisation::GetOperatorImpMap(), and Nektar::Collections::Collection::Initialise().

◆ CreateHex()

SpatialDomains::HexGeomUniquePtr Nektar::HexCollectionTests::CreateHex ( std::array< SpatialDomains::PointGeom *, 8 >  v,
std::array< SpatialDomains::SegGeomUniquePtr, 12 > &  segVec,
std::array< SpatialDomains::QuadGeomUniquePtr, 6 > &  faceVec 
)

Definition at line 54 of file TestHexCollection.cpp.

58{
59 std::array<std::array<int, 2>, 12> edgeVerts = {{{{0, 1}},
60 {{1, 2}},
61 {{2, 3}},
62 {{3, 0}},
63 {{0, 4}},
64 {{1, 5}},
65 {{2, 6}},
66 {{3, 7}},
67 {{4, 5}},
68 {{5, 6}},
69 {{6, 7}},
70 {{7, 4}}}};
71 std::array<std::array<int, 4>, 6> faceEdges = {{{{0, 1, 2, 3}},
72 {{0, 5, 8, 4}},
73 {{1, 6, 9, 5}},
74 {{2, 6, 10, 7}},
75 {{3, 7, 11, 4}},
76 {{8, 9, 10, 11}}}};
77
78 // Create segments from vertices
79 for (int i = 0; i < 12; ++i)
80 {
81 segVec[i] = CreateSegGeom(i, v[edgeVerts[i][0]], v[edgeVerts[i][1]]);
82 }
83
84 // Create faces from edges
85 std::array<SpatialDomains::QuadGeom *, 6> faces;
86 for (int i = 0; i < 6; ++i)
87 {
88 std::array<SpatialDomains::SegGeom *, 4> face;
89 for (int j = 0; j < 4; ++j)
90 {
91 face[j] = segVec[faceEdges[i][j]].get();
92 }
93 faceVec[i] = SpatialDomains::QuadGeomUniquePtr(
94 new SpatialDomains::QuadGeom(i, face));
95 faces[i] = faceVec[i].get();
96 }
97
98 SpatialDomains::HexGeomUniquePtr hexGeom(
99 new SpatialDomains::HexGeom(0, faces));
100 return hexGeom;
101}
SpatialDomains::SegGeomUniquePtr CreateSegGeom(unsigned int id, SpatialDomains::PointGeom *v0, SpatialDomains::PointGeom *v1)

References CreateSegGeom().

Referenced by BOOST_AUTO_TEST_CASE().

◆ CreateSegGeom()

SpatialDomains::SegGeomUniquePtr Nektar::HexCollectionTests::CreateSegGeom ( unsigned int  id,
SpatialDomains::PointGeom v0,
SpatialDomains::PointGeom v1 
)

Definition at line 44 of file TestHexCollection.cpp.

47{
48 std::array<SpatialDomains::PointGeom *, 2> vertices = {v0, v1};
50 new SpatialDomains::SegGeom(id, 3, vertices));
51 return result;
52}
unique_ptr_objpool< SegGeom > SegGeomUniquePtr
Definition MeshGraph.h:98

Referenced by CreateHex().