diff --git a/src/main.cpp b/src/main.cpp index 06060150665d432eb8eb8c227a4c4af9ee6a1a84..1a1d939cc020272ceb76dd61808a74c92b990a0d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -197,7 +197,7 @@ int main(int argc, char *argv[]) typedef TinyVector<MeshType::dimension> Rd; const Kokkos::View<const double*> Vj = mesh_data.Vj(); - const Kokkos::View<const Rd**> Cjr = mesh_data.Cjr(); + const NodeByCellData<Rd> Cjr = mesh_data.Cjr(); const double tmax=0.2; double t=0; @@ -304,10 +304,7 @@ int main(int argc, char *argv[]) AcousticSolver<MeshDataType> acoustic_solver(mesh_data, unknowns, bc_list); - typedef TinyVector<MeshType::dimension> Rd; - const Kokkos::View<const double*> Vj = mesh_data.Vj(); - const Kokkos::View<const Rd**> Cjr = mesh_data.Cjr(); const double tmax=0.2; double t=0; @@ -403,10 +400,7 @@ int main(int argc, char *argv[]) AcousticSolver<MeshDataType> acoustic_solver(mesh_data, unknowns, bc_list); - typedef TinyVector<MeshType::dimension> Rd; - const Kokkos::View<const double*> Vj = mesh_data.Vj(); - const Kokkos::View<const Rd**> Cjr = mesh_data.Cjr(); const double tmax=0.2; double t=0; @@ -431,7 +425,6 @@ int main(int argc, char *argv[]) dt=tmax-t; } acoustic_solver.computeNextStep(t,dt, unknowns); - block_eos.updatePandCFromRhoE(); t += dt; @@ -490,7 +483,6 @@ int main(int argc, char *argv[]) typedef TinyVector<MeshType::dimension> Rd; const Kokkos::View<const double*> Vj = mesh_data.Vj(); - const Kokkos::View<const Rd**> Cjr = mesh_data.Cjr(); const double tmax=0.2; double t=0; diff --git a/src/mesh/MeshData.hpp b/src/mesh/MeshData.hpp index f9732fbe98cec1c312b2d244a33e964493f1a9be..4086090a27f7c6b21b69e8f65e66ad7ee8c77630 100644 --- a/src/mesh/MeshData.hpp +++ b/src/mesh/MeshData.hpp @@ -4,6 +4,8 @@ #include <Kokkos_Core.hpp> #include <TinyVector.hpp> +#include <NodeByCellData.hpp> + #include <map> template <typename M> @@ -21,7 +23,7 @@ public: private: const MeshType& m_mesh; - Kokkos::View<Rd**> m_Cjr; + NodeByCellData<Rd> m_Cjr; Kokkos::View<double**> m_ljr; Kokkos::View<Rd**> m_njr; Kokkos::View<Rd*> m_xj; @@ -179,7 +181,7 @@ public: return m_mesh; } - const Kokkos::View<const Rd**> Cjr() const + const NodeByCellData<Rd>& Cjr() const { return m_Cjr; } @@ -213,7 +215,7 @@ public: MeshData(const MeshType& mesh) : m_mesh(mesh), - m_Cjr("Cjr", mesh.numberOfCells(), mesh.connectivity().maxNbNodePerCell()), + m_Cjr(mesh.connectivity().m_node_id_per_cell_matrix), m_ljr("ljr", mesh.numberOfCells(), mesh.connectivity().maxNbNodePerCell()), m_njr("njr", mesh.numberOfCells(), mesh.connectivity().maxNbNodePerCell()), m_xj("xj", mesh.numberOfCells()), @@ -222,15 +224,18 @@ public: if constexpr (dimension==1) { // in 1d Cjr are computed once for all Kokkos::parallel_for(m_mesh.numberOfCells(), KOKKOS_LAMBDA(const int& j) { - m_Cjr(j,0)=-1; - m_Cjr(j,1)= 1; - }); + m_Cjr(j,0)=-1; + m_Cjr(j,1)= 1; + }); // in 1d njr=Cjr - m_njr=m_Cjr; Kokkos::parallel_for(m_mesh.numberOfCells(), KOKKOS_LAMBDA(const int& j) { - m_ljr(j,0)= 1; - m_ljr(j,1)= 1; - }); + m_njr(j,0)=-1; + m_njr(j,1)= 1; + }); + Kokkos::parallel_for(m_mesh.numberOfCells(), KOKKOS_LAMBDA(const int& j) { + m_ljr(j,0)= 1; + m_ljr(j,1)= 1; + }); } this->updateAllData(); } diff --git a/src/scheme/AcousticSolver.hpp b/src/scheme/AcousticSolver.hpp index d9c5965195256bda75f1c87ab60a4c56e8cc4f64..e814a1434ffbcab623abe69aac02ed8b1a41503b 100644 --- a/src/scheme/AcousticSolver.hpp +++ b/src/scheme/AcousticSolver.hpp @@ -85,7 +85,7 @@ private: const Kokkos::View<const double**>& ljr, const Kokkos::View<const Rd**>& njr) { - const Kokkos::View<const Rd**> Cjr = m_mesh_data.Cjr(); + const NodeByCellData<Rd>& Cjr = m_mesh_data.Cjr(); Kokkos::parallel_for("new nested Ajr", m_mesh.numberOfCells(), KOKKOS_LAMBDA(const int& j) { const size_t& nb_nodes =m_Ajr.numberOfSubValues(j); const double& rho_c = rhocj(j); @@ -116,7 +116,7 @@ private: KOKKOS_INLINE_FUNCTION const Kokkos::View<const Rd*> computeBr(const NodeByCellData<Rdd>& Ajr, - const Kokkos::View<const Rd**>& Cjr, + const NodeByCellData<Rd>& Cjr, const Kokkos::View<const Rd*>& uj, const Kokkos::View<const double*>& pj) { Kokkos::parallel_for(m_mesh.numberOfNodes(), KOKKOS_LAMBDA(const int& r) { @@ -192,7 +192,7 @@ private: void computeFjr(const NodeByCellData<Rdd>& Ajr, const Kokkos::View<const Rd*>& ur, - const Kokkos::View<const Rd**>& Cjr, + const NodeByCellData<Rd>& Cjr, const Kokkos::View<const Rd*>& uj, const Kokkos::View<const double*>& pj) { @@ -221,7 +221,7 @@ private: const Kokkos::View<const double*>& pj, const Kokkos::View<const double*>& cj, const Kokkos::View<const double*>& Vj, - const Kokkos::View<const Rd**>& Cjr, + const NodeByCellData<Rd>& Cjr, const Kokkos::View<const double**>& ljr, const Kokkos::View<const Rd**>& njr) { const Kokkos::View<const double*> rhocj = computeRhoCj(rhoj, cj); @@ -304,7 +304,7 @@ public: const Kokkos::View<const Rd*> xj = m_mesh_data.xj(); const Kokkos::View<const double*> Vj = m_mesh_data.Vj(); - const Kokkos::View<const Rd**> Cjr = m_mesh_data.Cjr(); + const NodeByCellData<Rd>& Cjr = m_mesh_data.Cjr(); const Kokkos::View<const double**> ljr = m_mesh_data.ljr(); const Kokkos::View<const Rd**> njr = m_mesh_data.njr(); Kokkos::View<Rd*> xr = m_mesh.xr(); diff --git a/src/scheme/NodeByCellData.hpp b/src/scheme/NodeByCellData.hpp index 52f9b02cf3e7356ede2ebd84d9a3e41a2a53c203..723cd1f4811e5eb127acaeafea27dee77102a41f 100644 --- a/src/scheme/NodeByCellData.hpp +++ b/src/scheme/NodeByCellData.hpp @@ -3,6 +3,8 @@ #include <Kokkos_StaticCrsGraph.hpp> +#warning should not stand in the scheme directory + typedef Kokkos::StaticCrsGraph<unsigned int, Kokkos::HostSpace> ConnectivityMatrix; template <typename DataType>