diff --git a/src/main.cpp b/src/main.cpp index 2bc9dd2d294d7105a8ef8050386d58af4f57e03f..5a333d3b925672954ad2ea250c1503adb2dfd375 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -261,12 +261,8 @@ int main(int argc, char *argv[]) RefNodeList ref_node_list(ref, node_id_list); - std::vector<unsigned int> node_boundary_vector(node_id_list.extent(0)); - for (size_t r=0; r<node_id_list.extent(0); ++r) { - node_boundary_vector[r] = node_id_list[r]; - } SymmetryBoundaryCondition<MeshType::dimension>* sym_bc - = new SymmetryBoundaryCondition<MeshType::dimension>(node_boundary_vector, normal); + = new SymmetryBoundaryCondition<MeshType::dimension>(ref_node_list, normal); std::shared_ptr<SymmetryBoundaryCondition<MeshType::dimension>> bc(sym_bc); bc_list.push_back(BoundaryConditionHandler(bc)); } @@ -341,10 +337,15 @@ int main(int argc, char *argv[]) std::vector<BoundaryConditionHandler> bc_list; { // quite dirty! - SymmetryBoundaryCondition<MeshType::dimension>* sym_bc0 - = new SymmetryBoundaryCondition<MeshType::dimension>(std::vector<unsigned int>({0u}), - TinyVector<1>(-1)); - std::shared_ptr<SymmetryBoundaryCondition<1>> bc0(sym_bc0); + // SymmetryBoundaryCondition<MeshType::dimension>* sym_bc0 + // = new SymmetryBoundaryCondition<MeshType::dimension>(std::vector<unsigned int>({0u}), + // TinyVector<1>(-1)); + // std::shared_ptr<SymmetryBoundaryCondition<1>> bc0(sym_bc0); + // bc_list.push_back(BoundaryConditionHandler(bc0)); + PressureBoundaryCondition* pres_bc0 + = new PressureBoundaryCondition(1, + std::vector<unsigned int>({static_cast<unsigned int>(0u)})); + std::shared_ptr<PressureBoundaryCondition> bc0(pres_bc0); bc_list.push_back(BoundaryConditionHandler(bc0)); PressureBoundaryCondition* pres_bc1 diff --git a/src/scheme/BoundaryCondition.hpp b/src/scheme/BoundaryCondition.hpp index b43bc0c561f14ed67333911e0b1fa670cdd23a34..5486c62375f6b222d124a94701fbb6f47aaf46e7 100644 --- a/src/scheme/BoundaryCondition.hpp +++ b/src/scheme/BoundaryCondition.hpp @@ -6,6 +6,8 @@ #include <Kokkos_Core.hpp> +#include <RefNodeList.hpp> + class BoundaryCondition { public: @@ -82,7 +84,8 @@ public: typedef TinyVector<dimension, double> Rd; private: - Kokkos::View<unsigned int*> m_node_list; + const RefNodeList m_ref_node_list; + // Kokkos::View<unsigned int*> m_node_list; const Rd m_outgoing_normal; public: const Rd& outgoingNormal() const @@ -91,23 +94,21 @@ public: } size_t numberOfNodes() const { - return m_node_list.size(); + return m_ref_node_list.nodeList().extent(0); } const Kokkos::View<const unsigned int*> nodeList() const { - return m_node_list; + return m_ref_node_list.nodeList(); } - SymmetryBoundaryCondition(const std::vector<unsigned int>& nodes, + SymmetryBoundaryCondition(const RefNodeList& ref_node_list, const Rd& outgoing_normal) : BoundaryCondition(BoundaryCondition::symmetry), - m_node_list("node_list", nodes.size()), + m_ref_node_list(ref_node_list), m_outgoing_normal(outgoing_normal) { - Kokkos::parallel_for(m_node_list.size(), KOKKOS_LAMBDA(const int& f){ - m_node_list[f]=nodes[f]; - }); + ; } ~SymmetryBoundaryCondition() = default;