Skip to content

Commit e401f7e

Browse files
author
Kloepfer
committed
Added num comp parameter to template
1 parent cb7fc5e commit e401f7e

File tree

4 files changed

+19
-18
lines changed

4 files changed

+19
-18
lines changed

src/MeshField.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -189,11 +189,11 @@ class OmegahMeshField {
189189
static_assert(dim == 1 || dim == 2 || dim == 3);
190190
}
191191

192-
template <typename DataType, size_t order>
192+
template <typename DataType, size_t order, size_t numComp>
193193
// Ordering of field indexing changed to 'entity, node, component'
194194
auto CreateLagrangeField() {
195195
return MeshField::CreateLagrangeField<ExecutionSpace, Controller, DataType,
196-
order, dim>(meshInfo);
196+
order, dim, numComp>(meshInfo);
197197
}
198198

199199
auto getCoordField() { return coordField; }

src/MeshField_ShapeField.hpp

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ template <typename VtxAccessor> struct LinearAccessor {
158158
template <typename ExecutionSpace,
159159
template <typename...>
160160
typename Controller = MeshField::KokkosController,
161-
typename DataType, size_t order, size_t dim>
161+
typename DataType, size_t order, size_t dim, size_t numComp>
162162
auto CreateLagrangeField(const MeshInfo &meshInfo) {
163163
static_assert((std::is_same_v<Real4, DataType> == true ||
164164
std::is_same_v<Real8, DataType> == true),
@@ -179,10 +179,10 @@ auto CreateLagrangeField(const MeshInfo &meshInfo) {
179179
std::is_same_v<
180180
Controller<ExecutionSpace, MemorySpace, DataType>,
181181
MeshField::CabanaController<ExecutionSpace, MemorySpace, DataType>>,
182-
Controller<ExecutionSpace, MemorySpace, DataType[1][1]>,
182+
Controller<ExecutionSpace, MemorySpace, DataType[1][numComp]>,
183183
Controller<MemorySpace, ExecutionSpace, DataType ***>>;
184184
// 1 dof with 1 component per vtx
185-
auto createController = [](const int numComp, auto numVtx) {
185+
auto createController = [](auto numVtx) {
186186
if constexpr (std::is_same_v<
187187
Controller<ExecutionSpace, MemorySpace, DataType>,
188188
MeshField::CabanaController<ExecutionSpace, MemorySpace,
@@ -192,7 +192,7 @@ auto CreateLagrangeField(const MeshInfo &meshInfo) {
192192
return Ctrlr({/*field 0*/ numVtx, 1, numComp});
193193
}
194194
};
195-
Ctrlr kk_ctrl = createController(1, meshInfo.numVtx);
195+
Ctrlr kk_ctrl = createController(meshInfo.numVtx);
196196
#else
197197
using Ctrlr = Controller<MemorySpace, ExecutionSpace, DataType ***>;
198198
Ctrlr kk_ctrl({/*field 0*/ meshInfo.numVtx, 1, 1});
@@ -214,10 +214,11 @@ auto CreateLagrangeField(const MeshInfo &meshInfo) {
214214
std::is_same_v<
215215
Controller<ExecutionSpace, MemorySpace, DataType>,
216216
MeshField::CabanaController<ExecutionSpace, MemorySpace, DataType>>,
217-
Controller<ExecutionSpace, MemorySpace, DataType[1][1], DataType[1][1]>,
217+
Controller<ExecutionSpace, MemorySpace, DataType[1][numComp],
218+
DataType[1][numComp]>,
218219
Controller<MemorySpace, ExecutionSpace, DataType ***, DataType ***>>;
219220
// 1 dof with 1 comp per vtx/edge
220-
auto createController = [](const int numComp, auto numVtx, auto numEdge) {
221+
auto createController = [](auto numVtx, auto numEdge) {
221222
if constexpr (std::is_same_v<
222223
Controller<ExecutionSpace, MemorySpace, DataType>,
223224
MeshField::CabanaController<ExecutionSpace, MemorySpace,
@@ -228,12 +229,12 @@ auto CreateLagrangeField(const MeshInfo &meshInfo) {
228229
/*field 1*/ numEdge, 1, numComp});
229230
}
230231
};
231-
Ctrlr kk_ctrl = createController(1, meshInfo.numVtx, meshInfo.numEdge);
232+
Ctrlr kk_ctrl = createController(meshInfo.numVtx, meshInfo.numEdge);
232233
#else
233234
using Ctrlr =
234235
Controller<MemorySpace, ExecutionSpace, DataType ***, DataType ***>;
235-
Ctrlr kk_ctrl({/*field 0*/ meshInfo.numVtx, 1, 1,
236-
/*field 1*/ meshInfo.numEdge, 1, 1});
236+
Ctrlr kk_ctrl({/*field 0*/ meshInfo.numVtx, 1, numComp,
237+
/*field 1*/ meshInfo.numEdge, 1, numComp});
237238
#endif
238239
auto vtxField = MeshField::makeField<Ctrlr, 0>(kk_ctrl);
239240
auto edgeField = MeshField::makeField<Ctrlr, 1>(kk_ctrl);

test/testElement.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ void triangleLocalPointEval() {
4141
const auto numElms = 3; // provided by the mesh
4242
const MeshField::MeshInfo meshInfo{.numVtx = 5, .numTri = 3};
4343
auto field = MeshField::CreateLagrangeField<
44-
ExecutionSpace, MeshField::KokkosController, MeshField::Real, 1, 2>(
44+
ExecutionSpace, MeshField::KokkosController, MeshField::Real, 1, 2, 1>(
4545
meshInfo);
4646

4747
MeshField::FieldElement f(numElms, field, MeshField::LinearTriangleShape(),
@@ -85,7 +85,7 @@ struct LinearEdgeToVertexField {
8585
void edgeLocalPointEval() {
8686
const MeshField::MeshInfo meshInfo{.numVtx = 5, .numEdge = 7, .dim = 1};
8787
auto field = MeshField::CreateLagrangeField<
88-
ExecutionSpace, MeshField::KokkosController, MeshField::Real, 1, 1>(
88+
ExecutionSpace, MeshField::KokkosController, MeshField::Real, 1, 1, 1>(
8989
meshInfo);
9090

9191
MeshField::FieldElement f(meshInfo.numEdge, field,
@@ -137,7 +137,7 @@ void quadraticTriangleLocalPointEval() {
137137
const MeshField::MeshInfo meshInfo{
138138
.numVtx = 3, .numEdge = 3, .numTri = 1, .dim = 2};
139139
auto field = MeshField::CreateLagrangeField<
140-
ExecutionSpace, MeshField::KokkosController, MeshField::Real, 2, 2>(
140+
ExecutionSpace, MeshField::KokkosController, MeshField::Real, 2, 2, 1>(
141141
meshInfo);
142142

143143
MeshField::FieldElement f(meshInfo.numTri, field,
@@ -192,7 +192,7 @@ void quadraticTetrahedronLocalPointEval() {
192192
auto field =
193193
MeshField::CreateLagrangeField<ExecutionSpace,
194194
MeshField::KokkosController,
195-
MeshField::Real, ShapeOrder, MeshDim>(
195+
MeshField::Real, ShapeOrder, MeshDim, 1>(
196196
meshInfo);
197197

198198
MeshField::FieldElement f(meshInfo.numTet, field,

test/testOmegahElement.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ void doRun(Omega_h::Mesh &mesh,
172172
const auto ShapeOrder = 1;
173173

174174
auto field =
175-
omf.template CreateLagrangeField<MeshField::Real, ShapeOrder>();
175+
omf.template CreateLagrangeField<MeshField::Real, ShapeOrder, 1>();
176176
LinearFunction func = LinearFunction();
177177
setVertices(mesh, func, field);
178178
using FieldType = decltype(field);
@@ -187,7 +187,7 @@ void doRun(Omega_h::Mesh &mesh,
187187
{
188188
const auto ShapeOrder = 2;
189189
auto field =
190-
omf.template CreateLagrangeField<MeshField::Real, ShapeOrder>();
190+
omf.template CreateLagrangeField<MeshField::Real, ShapeOrder, 1>();
191191
auto func = QuadraticFunction();
192192
setVertices(mesh, func, field);
193193
setEdges(mesh, func, field);
@@ -203,7 +203,7 @@ void doRun(Omega_h::Mesh &mesh,
203203
{
204204
const auto ShapeOrder = 2;
205205
auto field =
206-
omf.template CreateLagrangeField<MeshField::Real, ShapeOrder>();
206+
omf.template CreateLagrangeField<MeshField::Real, ShapeOrder, 1>();
207207
auto func = LinearFunction();
208208
setVertices(mesh, func, field);
209209
setEdges(mesh, func, field);

0 commit comments

Comments
 (0)