From 2d7a8431aca560e8384a78b580335728499bc9c4 Mon Sep 17 00:00:00 2001 From: Joshua Kloepfer Date: Tue, 18 Nov 2025 11:34:16 -0500 Subject: [PATCH 1/3] Making user functions as const where possible --- src/MeshField.hpp | 14 +++++++------- src/MeshField_Element.hpp | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/MeshField.hpp b/src/MeshField.hpp index 08d5942..1ac6cae 100644 --- a/src/MeshField.hpp +++ b/src/MeshField.hpp @@ -299,7 +299,7 @@ class OmegahMeshField { template // Ordering of field indexing changed to 'entity, node, component' - auto CreateLagrangeField() { + auto CreateLagrangeField() const { return MeshField::CreateLagrangeField(meshInfo); } @@ -307,7 +307,7 @@ class OmegahMeshField { auto getCoordField() { return coordField; } // FIXME support 2d and 3d and fields with order>1 - template void writeVtk(Field &field) { + template void writeVtk(Field &field) const { using FieldDataType = typename decltype(field.vtxField)::BaseType; // HACK assumes there is a vertex field.. in the Field Mixin object auto field_view = field.vtxField.serialize(); @@ -318,7 +318,7 @@ class OmegahMeshField { } template > - ViewType createOffsets(size_t numTri, size_t numPtsPerElem) { + ViewType createOffsets(size_t numTri, size_t numPtsPerElem) const { ViewType offsets("offsets", numTri + 1); Kokkos::parallel_for( "setOffsets", numTri, @@ -331,7 +331,7 @@ class OmegahMeshField { // evaluate a field at the specified local coordinate for each triangle template auto triangleLocalPointEval(ViewType localCoords, size_t NumPtsPerElem, - ShapeField field) { + ShapeField field) const { auto offsets = createOffsets(meshInfo.numTri, NumPtsPerElem); auto eval = triangleLocalPointEval(localCoords, offsets, field); @@ -341,7 +341,7 @@ class OmegahMeshField { // evaluate a field at the specified local coordinates for each triangle template auto triangleLocalPointEval(ViewType localCoords, Kokkos::View offsets, - ShapeField field) { + ShapeField field) const { const auto MeshDim = 2; if (mesh.dim() != MeshDim) { MeshField::fail("input mesh must be 2d\n"); @@ -361,7 +361,7 @@ class OmegahMeshField { template auto tetrahedronLocalPointEval(ViewType localCoords, size_t NumPtsPerElem, - ShapeField field) { + ShapeField field) const { auto offsets = createOffsets(meshInfo.numTet, NumPtsPerElem); auto eval = tetrahedronLocalPointEval(localCoords, offsets, field); return eval; @@ -369,7 +369,7 @@ class OmegahMeshField { template auto tetrahedronLocalPointEval(ViewType localCoords, - Kokkos::View offsets, ShapeField field) { + Kokkos::View offsets, ShapeField field) const { const auto MeshDim = 3; if (mesh.dim() != MeshDim) { MeshField::fail("input mesh must be 3d\n"); diff --git a/src/MeshField_Element.hpp b/src/MeshField_Element.hpp index d7612bf..dfe302f 100644 --- a/src/MeshField_Element.hpp +++ b/src/MeshField_Element.hpp @@ -236,7 +236,7 @@ struct FieldElement { * heavily based on SCOREC/core @ 7cd76473 apf/apfVectorElement.cc */ template - Kokkos::View getJacobianDeterminants(Matrices const &J) { + Kokkos::View getJacobianDeterminants(Matrices const &J) const { static_assert(has_static_rank::value, "Matrices must have a static rank() method."); static_assert(has_extent_method::value, @@ -321,7 +321,7 @@ struct FieldElement { * @return Kokkos::View containing the jacobian for all the mesh elements */ Kokkos::View getJacobians(Kokkos::View localCoords, - Kokkos::View offsets) { + Kokkos::View offsets) const { if (Debug) { // check input parametric coords are positive and sum to one LO numErrors = 0; From d83c84de476957800f8b7ff947222ec26f5c15c3 Mon Sep 17 00:00:00 2001 From: Joshua Kloepfer Date: Tue, 18 Nov 2025 11:38:56 -0500 Subject: [PATCH 2/3] Format --- src/MeshField.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/MeshField.hpp b/src/MeshField.hpp index 1ac6cae..7c71f77 100644 --- a/src/MeshField.hpp +++ b/src/MeshField.hpp @@ -369,7 +369,8 @@ class OmegahMeshField { template auto tetrahedronLocalPointEval(ViewType localCoords, - Kokkos::View offsets, ShapeField field) const { + Kokkos::View offsets, + ShapeField field) const { const auto MeshDim = 3; if (mesh.dim() != MeshDim) { MeshField::fail("input mesh must be 3d\n"); From 26457ad24f9a064070f0020072760495a12786fb Mon Sep 17 00:00:00 2001 From: Joshua Kloepfer Date: Tue, 18 Nov 2025 14:24:38 -0500 Subject: [PATCH 3/3] Converting some arguments to be const reference --- src/MeshField.hpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/MeshField.hpp b/src/MeshField.hpp index 7c71f77..2424710 100644 --- a/src/MeshField.hpp +++ b/src/MeshField.hpp @@ -330,8 +330,8 @@ class OmegahMeshField { // evaluate a field at the specified local coordinate for each triangle template - auto triangleLocalPointEval(ViewType localCoords, size_t NumPtsPerElem, - ShapeField field) const { + auto triangleLocalPointEval(const ViewType &localCoords, size_t NumPtsPerElem, + const ShapeField &field) const { auto offsets = createOffsets(meshInfo.numTri, NumPtsPerElem); auto eval = triangleLocalPointEval(localCoords, offsets, field); @@ -340,8 +340,9 @@ class OmegahMeshField { // evaluate a field at the specified local coordinates for each triangle template - auto triangleLocalPointEval(ViewType localCoords, Kokkos::View offsets, - ShapeField field) const { + auto triangleLocalPointEval(const ViewType &localCoords, + Kokkos::View offsets, + const ShapeField &field) const { const auto MeshDim = 2; if (mesh.dim() != MeshDim) { MeshField::fail("input mesh must be 2d\n"); @@ -360,17 +361,18 @@ class OmegahMeshField { } template - auto tetrahedronLocalPointEval(ViewType localCoords, size_t NumPtsPerElem, - ShapeField field) const { + auto tetrahedronLocalPointEval(const ViewType &localCoords, + size_t NumPtsPerElem, + const ShapeField &field) const { auto offsets = createOffsets(meshInfo.numTet, NumPtsPerElem); auto eval = tetrahedronLocalPointEval(localCoords, offsets, field); return eval; } template - auto tetrahedronLocalPointEval(ViewType localCoords, + auto tetrahedronLocalPointEval(const ViewType &localCoords, Kokkos::View offsets, - ShapeField field) const { + const ShapeField &field) const { const auto MeshDim = 3; if (mesh.dim() != MeshDim) { MeshField::fail("input mesh must be 3d\n");