diff --git a/include/Stencil/stencil.h b/include/Stencil/stencil.h index d1c65817..558d4ce7 100644 --- a/include/Stencil/stencil.h +++ b/include/Stencil/stencil.h @@ -1,8 +1,11 @@ #pragma once -#include #include +#include + +#include "../include/LinearAlgebra/Vector/vector.h" + enum class StencilPosition { TopLeft, @@ -32,10 +35,29 @@ enum class StencilPosition class Stencil { public: - Stencil(std::initializer_list init); - int operator[](StencilPosition type) const; + Stencil(std::initializer_list init) + : values_("stencil_values", 9) + , stencil_size_(0) + { + int i = 0; + for (int v : init) { + values_(i++) = v; + if (v != -1) + stencil_size_++; + } + } + + KOKKOS_INLINE_FUNCTION int operator[](StencilPosition type) const + { + return values_(static_cast(type)); + } + + KOKKOS_INLINE_FUNCTION int stencil_size() const + { + return stencil_size_; + } private: - std::array values_; + AllocatableVector values_; int stencil_size_; }; diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 0b00e56f..8e4e6e58 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -40,11 +40,6 @@ set(LEVEL_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/Level/levelCache.cpp ) -# file(GLOB_RECURSE STENCIL_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/Stencil/*.cpp) -set(STENCIL_SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/Stencil/stencil.cpp -) - # file(GLOB_RECURSE INTERPOLATION_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/Interpolation/*.cpp) set(INTERPOLATION_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/Interpolation/extrapolated_prolongation.cpp @@ -171,7 +166,6 @@ add_library(GMGPolarLib STATIC ${GMG_POLAR_SOURCES} ${MULTIGRID_METHODS_SOURCES} ${LEVEL_SOURCES} - ${STENCIL_SOURCES} ${INTERPOLATION_SOURCES} ${DIRECT_SOLVER_SOURCES} ${RESIDUAL_SOURCES} diff --git a/src/Stencil/stencil.cpp b/src/Stencil/stencil.cpp deleted file mode 100644 index 7ca20e2b..00000000 --- a/src/Stencil/stencil.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "../../include/Stencil/stencil.h" - -Stencil::Stencil(std::initializer_list init) - : values_{} -{ - std::copy(init.begin(), init.end(), values_.begin()); - stencil_size_ = 0; - for (int i = 0; i < std::ssize(init); i++) { - if (values_[i] != -1) - stencil_size_++; - } -} - -int Stencil::operator[](StencilPosition type) const -{ - return values_[static_cast(type)]; -}