Skip to content
Snippets Groups Projects
Select Git revision
  • b608903df813f3cc0252259cb57e977dea94f4b5
  • develop default protected
  • feature/gmsh-reader
  • origin/stage/bouguettaia
  • feature/kinetic-schemes
  • feature/reconstruction
  • feature/local-dt-fsi
  • feature/composite-scheme-sources
  • feature/composite-scheme-other-fluxes
  • feature/serraille
  • feature/variational-hydro
  • feature/composite-scheme
  • hyperplastic
  • feature/polynomials
  • feature/gks
  • feature/implicit-solver-o2
  • feature/coupling_module
  • feature/implicit-solver
  • feature/merge-local-dt-fsi
  • master protected
  • feature/escobar-smoother
  • v0.5.0 protected
  • v0.4.1 protected
  • v0.4.0 protected
  • v0.3.0 protected
  • v0.2.0 protected
  • v0.1.0 protected
  • Kidder
  • v0.0.4 protected
  • v0.0.3 protected
  • v0.0.2 protected
  • v0 protected
  • v0.0.1 protected
33 results

Connectivity.cpp

Blame
  • Connectivity.cpp 7.85 KiB
    #include <Connectivity.hpp>
    #include <map>
    
    template<>
    void Connectivity<3>::_computeFaceCellConnectivities()
    {
      Kokkos::View<unsigned short*> cell_nb_faces("cell_nb_faces", this->numberOfCells());
    
      typedef std::tuple<unsigned int, unsigned short, bool> CellFaceInfo;
    
      const auto& cell_to_node_matrix
          = m_item_to_item_matrix[itemId(TypeOfItem::cell)][itemId(TypeOfItem::node)];
    
      std::map<Face, std::vector<CellFaceInfo>> face_cells_map;
      for (unsigned int j=0; j<this->numberOfCells(); ++j) {
        const auto& cell_nodes = cell_to_node_matrix.rowConst(j);
    
        switch (cell_nodes.length) {
          case 4: { // tetrahedron
            cell_nb_faces[j] = 4;
            // face 0
            Face f0({cell_nodes(1),
                     cell_nodes(2),
                     cell_nodes(3)});
            face_cells_map[f0].emplace_back(std::make_tuple(j, 0, f0.reversed()));
    
            // face 1
            Face f1({cell_nodes(0),
                     cell_nodes(3),
                     cell_nodes(2)});
            face_cells_map[f1].emplace_back(std::make_tuple(j, 1, f1.reversed()));
    
            // face 2
            Face f2({cell_nodes(0),
                     cell_nodes(1),
                     cell_nodes(3)});
            face_cells_map[f2].emplace_back(std::make_tuple(j, 2, f2.reversed()));
    
            // face 3
            Face f3({cell_nodes(0),
                     cell_nodes(2),
                     cell_nodes(1)});
            face_cells_map[f3].emplace_back(std::make_tuple(j, 3, f3.reversed()));
            break;
          }
          case 8: { // hexahedron
            // face 0
            Face f0({cell_nodes(3),
                     cell_nodes(2),
                     cell_nodes(1),
                     cell_nodes(0)});
            face_cells_map[f0].emplace_back(std::make_tuple(j, 0, f0.reversed()));
    
            // face 1
            Face f1({cell_nodes(4),
                     cell_nodes(5),
                     cell_nodes(6),
                     cell_nodes(7)});
            face_cells_map[f1].emplace_back(std::make_tuple(j, 1, f1.reversed()));
    
            // face 2
            Face f2({cell_nodes(0),
                     cell_nodes(4),
                     cell_nodes(7),
                     cell_nodes(3)});
            face_cells_map[f2].emplace_back(std::make_tuple(j, 2, f2.reversed()));
    
            // face 3
            Face f3({cell_nodes(1),
                     cell_nodes(2),