@@ -158,7 +158,7 @@ template <typename VtxAccessor> struct LinearAccessor {
158158template <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 >
162162auto 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);
0 commit comments