Skip to content
Snippets Groups Projects
Commit dc71a736 authored by Stéphane Del Pino's avatar Stéphane Del Pino
Browse files

SymmetryBoundaryCondition now uses RefNodeList

- this step allows to improve code structure in view of flexibility
- enforces pressure bc in the 1d case (temporary)
parent a074cb30
Branches
Tags
No related merge requests found
......@@ -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
......
......@@ -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;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment