diff --git a/src/mesh/ItemValue.hpp b/src/mesh/ItemValue.hpp index ef4b5310768f0016b7b3e8f118e9c5d29bc85be4..23d92d53761c2e4c7d75270b6cf60d8eb7ddd2a0 100644 --- a/src/mesh/ItemValue.hpp +++ b/src/mesh/ItemValue.hpp @@ -33,15 +33,6 @@ class ItemValue return m_is_built; } - // Following Kokkos logic, these classes are view and const view does allow - // changes in data - KOKKOS_FORCEINLINE_FUNCTION - DataType& operator()(const size_t& j) const - { - Assert(m_is_built); - return m_values(j); - } - KOKKOS_INLINE_FUNCTION size_t numberOfValues() const { diff --git a/src/mesh/MeshData.hpp b/src/mesh/MeshData.hpp index aa24493e89a9ede90f1d46cb2c3e935db3d4fa35..b30c3d42f909edd51a31cc19f1ea3091045d9dd8 100644 --- a/src/mesh/MeshData.hpp +++ b/src/mesh/MeshData.hpp @@ -106,7 +106,7 @@ class MeshData for (size_t R=0; R<cell_nodes.length; ++R) { int Rp1 = (R+1)%cell_nodes.length; int Rm1 = (R+cell_nodes.length-1)%cell_nodes.length; - Rd half_xrp_xrm = 0.5*(xr(cell_nodes(Rp1))-xr(cell_nodes(Rm1))); + Rd half_xrp_xrm = 0.5*(xr[cell_nodes(Rp1)]-xr[cell_nodes(Rm1)]); Cjr(j,R) = Rd{-half_xrp_xrm[1], half_xrp_xrm[0]}; } }); diff --git a/src/mesh/MeshNodeBoundary.hpp b/src/mesh/MeshNodeBoundary.hpp index 8dff6d526d5342d5f3862c2fa84dbd3845c2b1af..e8e3403f5e7077a656902b35f9d977aa9bdc00e8 100644 --- a/src/mesh/MeshNodeBoundary.hpp +++ b/src/mesh/MeshNodeBoundary.hpp @@ -330,7 +330,7 @@ _getOutgoingNormal(const MeshType& mesh) const auto& j0_nodes = cell_to_node_matrix.rowConst(j0); double max_height = 0; for (size_t r=0; r<j0_nodes.length; ++r) { - const double height = (xr(j0_nodes(r))-xr(r0), normal); + const double height = (xr[j0_nodes(r)]-xr[r0], normal); if (std::abs(height) > std::abs(max_height)) { max_height = height; } @@ -367,7 +367,7 @@ _getOutgoingNormal(const MeshType& mesh) const auto& j0_nodes = cell_to_node_matrix.rowConst(j0); double max_height = 0; for (size_t r=0; r<j0_nodes.length; ++r) { - const double height = (xr(j0_nodes(r))-xr(r0), normal); + const double height = (xr[j0_nodes(r)]-xr[r0], normal); if (std::abs(height) > std::abs(max_height)) { max_height = height; } @@ -404,7 +404,7 @@ _getOutgoingNormal(const MeshType& mesh) const auto& j0_nodes = cell_to_node_matrix.rowConst(j0); double max_height = 0; for (size_t r=0; r<j0_nodes.length; ++r) { - const double height = (xr(j0_nodes(r))-xr(r0), normal); + const double height = (xr[j0_nodes(r)]-xr[r0], normal); if (std::abs(height) > std::abs(max_height)) { max_height = height; } diff --git a/src/scheme/AcousticSolver.hpp b/src/scheme/AcousticSolver.hpp index a44fea85ecf5891428f186da174aa8c02d20ccef..0f3c2f384260428450a0c2a89d0f8b2a6ca4226e 100644 --- a/src/scheme/AcousticSolver.hpp +++ b/src/scheme/AcousticSolver.hpp @@ -49,8 +49,8 @@ class AcousticSolver KOKKOS_INLINE_FUNCTION void operator() (const size_type i, value_type& update) const { - if (x_(i) < update) { - update = x_(i); + if (x_[i] < update) { + update = x_[i]; } } @@ -89,7 +89,7 @@ class AcousticSolver { Kokkos::parallel_for(m_mesh.numberOfCells(), KOKKOS_LAMBDA(const int& j) { const size_t& nb_nodes =m_Ajr.numberOfSubValues(j); - const double& rho_c = rhocj(j); + const double& rho_c = rhocj[j]; for (size_t r=0; r<nb_nodes; ++r) { m_Ajr(j,r) = tensorProduct(rho_c*Cjr(j,r), njr(j,r)); } @@ -116,7 +116,7 @@ class AcousticSolver const unsigned int R = node_local_number_in_its_cells[j]; sum += Ajr(J,R); } - m_Ar(r) = sum; + m_Ar[r] = sum; }); return m_Ar; @@ -135,7 +135,7 @@ class AcousticSolver = m_connectivity.nodeLocalNumbersInTheirCells(); Kokkos::parallel_for(m_mesh.numberOfNodes(), KOKKOS_LAMBDA(const int& r) { - Rd& br = m_br(r); + Rd& br = m_br[r]; br = zero; const auto& node_to_cell = node_to_cell_matrix.rowConst(r); const auto& node_local_number_in_its_cells @@ -143,7 +143,7 @@ class AcousticSolver for (size_t j=0; j<node_to_cell.length; ++j) { const unsigned int J = node_to_cell(j); const unsigned int R = node_local_number_in_its_cells[j]; - br += Ajr(J,R)*uj(J) + pj(J)*Cjr(J,R); + br += Ajr(J,R)*uj[J] + pj[J]*Cjr(J,R); } }); @@ -180,11 +180,13 @@ class AcousticSolver const Rdd nxn = tensorProduct(n,n); const Rdd P = I-nxn; + const Array<const unsigned int>& node_list + = symmetry_bc.nodeList(); Kokkos::parallel_for(symmetry_bc.numberOfNodes(), KOKKOS_LAMBDA(const int& r_number) { - const int r = symmetry_bc.nodeList()[r_number]; + const int r = node_list[r_number]; - m_Ar(r) = P*m_Ar(r)*P + nxn; - m_br(r) = P*m_br(r); + m_Ar[r] = P*m_Ar[r]*P + nxn; + m_br[r] = P*m_br[r]; }); break; } @@ -199,7 +201,7 @@ class AcousticSolver inverse(Ar, m_inv_Ar); const NodeValue<const Rdd> invAr = m_inv_Ar; Kokkos::parallel_for(m_mesh.numberOfNodes(), KOKKOS_LAMBDA(const int& r) { - m_ur[r]=invAr(r)*br(r); + m_ur[r]=invAr[r]*br[r]; }); return m_ur; @@ -220,7 +222,7 @@ class AcousticSolver const auto& cell_nodes = cell_to_node_matrix.rowConst(j); for (size_t r=0; r<cell_nodes.length; ++r) { - m_Fjr(j,r) = Ajr(j,r)*(uj(j)-ur(cell_nodes(r)))+pj(j)*Cjr(j,r); + m_Fjr(j,r) = Ajr(j,r)*(uj[j]-ur[cell_nodes(r)])+pj[j]*Cjr(j,r); } }); } @@ -229,7 +231,7 @@ class AcousticSolver NodeValue<Rdd>& inv_A) const { Kokkos::parallel_for(m_mesh.numberOfNodes(), KOKKOS_LAMBDA(const int& r) { - inv_A(r) = ::inverse(A(r)); + inv_A[r] = ::inverse(A[r]); }); } @@ -247,7 +249,7 @@ class AcousticSolver const CellValue<const double> rhocj = computeRhoCj(rhoj, cj); computeAjr(rhocj, Cjr, ljr, njr); - NodeValuePerCell<const Rdd> Ajr = m_Ajr;; + NodeValuePerCell<const Rdd> Ajr = m_Ajr; const NodeValue<const Rdd> Ar = computeAr(Ajr); const NodeValue<const Rd> br = computeBr(m_Ajr, Cjr, uj, pj);