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

Use m_item_to_item_matrix instead of m_face_to_cell_matrix

parent 14ea5b10
Branches
Tags
1 merge request!6Feature/crs
......@@ -153,13 +153,14 @@ void Connectivity<3>::_computeFaceCellConnectivities()
const auto& cell_to_face_matrix
= m_item_to_item_matrix[itemId(TypeOfItem::cell)][itemId(TypeOfItem::face)];
auto& face_to_cell_matrix
= m_item_to_item_matrix[itemId(TypeOfItem::face)][itemId(TypeOfItem::cell)];
m_connectivity_computer.computeInverseConnectivityMatrix(cell_to_face_matrix,
m_face_to_cell_matrix);
face_to_cell_matrix);
m_face_to_cell_local_face = CellValuePerFace<unsigned short>(*this);
m_connectivity_computer.computeLocalChildItemNumberInItem(cell_to_face_matrix,
m_face_to_cell_matrix,
face_to_cell_matrix,
m_face_to_cell_local_face);
const auto& face_to_node_matrix
......@@ -246,6 +247,8 @@ void Connectivity<2>::_computeFaceCellConnectivities()
}
++l;
}
m_face_to_cell_matrix = face_to_cell_vector;
auto& face_to_cell_matrix
= m_item_to_item_matrix[itemId(TypeOfItem::face)][itemId(TypeOfItem::cell)];
face_to_cell_matrix = face_to_cell_vector;
}
}
......@@ -243,6 +243,12 @@ class Connectivity final
return m_item_to_item_matrix[itemId(TypeOfItem::cell)][itemId(TypeOfItem::face)];
}
KOKKOS_INLINE_FUNCTION
ConnectivityMatrix faceToCellMatrix() const
{
return m_item_to_item_matrix[itemId(TypeOfItem::face)][itemId(TypeOfItem::cell)];
}
KOKKOS_INLINE_FUNCTION
ConnectivityMatrix faceToNodeMatrix() const
{
......@@ -259,7 +265,6 @@ class Connectivity final
FaceValuePerCell<bool> m_cell_face_is_reversed;
ConnectivityMatrix m_face_to_cell_matrix;
CellValuePerFace<unsigned short> m_face_to_cell_local_face;
CellValuePerNode<unsigned short> m_node_to_cell_local_node;
......@@ -333,7 +338,9 @@ private:
KOKKOS_INLINE_FUNCTION
size_t numberOfFaces() const
{
return m_face_to_cell_matrix.numRows();
const auto& face_to_node_matrix
= m_item_to_item_matrix[itemId(TypeOfItem::face)][itemId(TypeOfItem::node)];
return face_to_node_matrix.numRows();
}
KOKKOS_INLINE_FUNCTION
......@@ -440,8 +447,12 @@ inline const ConnectivityMatrix&
Connectivity<3>::itemToItemMatrix<TypeOfItem::face,
TypeOfItem::cell>() const
{
return m_face_to_cell_matrix;
const auto& face_to_cell_matrix
= m_item_to_item_matrix[itemId(TypeOfItem::face)][itemId(TypeOfItem::cell)];
return face_to_cell_matrix;
}
template <>
template <>
inline const ConnectivityMatrix&
......@@ -497,7 +508,10 @@ inline const ConnectivityMatrix&
Connectivity<2>::itemToItemMatrix<TypeOfItem::face,
TypeOfItem::cell>() const
{
return m_face_to_cell_matrix;
const auto& face_to_cell_matrix
= m_item_to_item_matrix[itemId(TypeOfItem::face)][itemId(TypeOfItem::cell)];
return face_to_cell_matrix;
}
template <>
......@@ -554,8 +568,10 @@ inline const ConnectivityMatrix&
Connectivity<1>::itemToItemMatrix<TypeOfItem::face,
TypeOfItem::cell>() const
{
#warning in 1d, faces and node are the same
return m_face_to_cell_matrix;
const auto& face_to_cell_matrix
= m_item_to_item_matrix[itemId(TypeOfItem::face)][itemId(TypeOfItem::cell)];
return face_to_cell_matrix;
}
template <>
......
......@@ -29,9 +29,10 @@ class MeshNodeBoundary
const RefFaceList& ref_face_list)
{
static_assert(dimension == MeshType::dimension);
const auto& face_to_cell_matrix = mesh.connectivity().faceToCellMatrix();
const Kokkos::View<const unsigned int*>& face_list = ref_face_list.faceList();
Kokkos::parallel_for(face_list.extent(0), KOKKOS_LAMBDA(const int& l){
const auto& face_cells = mesh.connectivity().m_face_to_cell_matrix.rowConst(face_list[l]);
const auto& face_cells = face_to_cell_matrix.rowConst(face_list[l]);
if (face_cells.length>1) {
std::cerr << "internal faces cannot be used to define mesh boundaries\n";
std::exit(1);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment