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

Connectivities are now stored using shared_ptr

parent 2f93edc9
No related branches found
No related tags found
No related merge requests found
......@@ -226,7 +226,7 @@ int main(int argc, char *argv[])
// class for acoustic solver test
Kokkos::Timer timer;
timer.reset();
Connectivity1D connectivity(number);
std::shared_ptr<Connectivity1D>connectivity( new Connectivity1D(number));
typedef Mesh<Connectivity1D> MeshType;
typedef MeshData<MeshType> MeshDataType;
typedef FiniteVolumesEulerUnknowns<MeshDataType> UnknownsType;
......
......@@ -805,8 +805,8 @@ GmshReader::__proceedData()
for (size_t j=nb_triangles; j<nb_triangles+nb_quadrangles; ++j) {
cell_nb_nodes[j] = 4;
}
m_connectivity = new Connectivity2D(cell_nb_nodes, cell_nodes);
Connectivity2D& connectivity = *m_connectivity;
Connectivity2D* p_connectivity = new Connectivity2D(cell_nb_nodes, cell_nodes);
Connectivity2D& connectivity = *p_connectivity;
std::map<unsigned int, std::vector<unsigned int>> ref_faces_map;
for (unsigned int e=0; e<__edges.extent(0); ++e) {
......@@ -856,7 +856,8 @@ GmshReader::__proceedData()
xr[i][0] = __vertices[i][0];
xr[i][1] = __vertices[i][1];
}
m_mesh = new MeshType(connectivity, xr);
m_mesh = new MeshType(std::shared_ptr<Connectivity2D>(p_connectivity),
xr);
MeshType& mesh = *m_mesh;
std::ofstream gnuplot("mesh.gnu");
......
......@@ -184,7 +184,6 @@ private:
*/
void __readPhysicalNames2_2();
Connectivity2D* m_connectivity;
Mesh<Connectivity2D>* m_mesh;
public:
......
......@@ -4,6 +4,8 @@
#include <Kokkos_Core.hpp>
#include <TinyVector.hpp>
#include <memory>
template <typename ConnectivityType>
class Mesh
{
......@@ -13,29 +15,29 @@ public:
typedef TinyVector<dimension> Rd;
private:
const Connectivity& m_connectivity;
const std::shared_ptr<Connectivity> m_connectivity;
Kokkos::View<Rd*> m_xr;
public:
const Connectivity& connectivity() const
{
return m_connectivity;
return *m_connectivity;
}
const size_t& numberOfNodes() const
{
return m_connectivity.numberOfNodes();
return m_connectivity->numberOfNodes();
}
const size_t& numberOfFaces() const
{
return m_connectivity.numberOfFaces();
return m_connectivity->numberOfFaces();
}
const size_t& numberOfCells() const
{
return m_connectivity.numberOfCells();
return m_connectivity->numberOfCells();
}
Kokkos::View<Rd*> xr() const
......@@ -44,19 +46,19 @@ public:
}
KOKKOS_INLINE_FUNCTION
Mesh(const Connectivity& connectivity)
Mesh(const std::shared_ptr<Connectivity>& connectivity)
: m_connectivity(connectivity),
m_xr("xr", connectivity.numberOfNodes())
m_xr("xr", connectivity->numberOfNodes())
{
static_assert (Connectivity::dimension ==1,"no automatic calculation of vertices in dim>1");
const double delta_x = 1./connectivity.numberOfCells();
Kokkos::parallel_for(connectivity.numberOfNodes(), KOKKOS_LAMBDA(const int& r){
const double delta_x = 1./connectivity->numberOfCells();
Kokkos::parallel_for(connectivity->numberOfNodes(), KOKKOS_LAMBDA(const int& r){
m_xr[r][0] = r*delta_x;
});
}
KOKKOS_INLINE_FUNCTION
Mesh(const Connectivity& connectivity,
Mesh(const std::shared_ptr<Connectivity>& connectivity,
Kokkos::View<Rd*>& xr)
: m_connectivity(connectivity),
m_xr(xr)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment