diff --git a/src/main.cpp b/src/main.cpp index b6c3216bc619e736d9bf51be36e1622f211655b3..babd25dcb30af0137ea287c5ebff1f37e20f0511 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -196,7 +196,7 @@ int main(int argc, char *argv[]) const Kokkos::View<const Rd*> xj = mesh_data.xj(); const Kokkos::View<const Rd*> uj = unknowns.uj(); double pi = 4.*std::atan(1.); - std::ofstream fout("comparaison_u_k_non_cst_maill_non_unif_640"); + std::ofstream fout("comparaison_u_k_non_cst_maill_non_unif_320"); for (size_t j=0; j<mesh.numberOfCells(); ++j) { //fout << xj[j][0] << ' ' << uj[j][0] << ' ' << std::sin(pi*xj[j][0])*std::exp(-2.*pi*pi*0.2) <<'\n'; //cas k constant fout << xj[j][0] << ' ' << uj[j][0] << ' ' << std::sin(pi*xj[j][0])*std::exp(-0.2) <<'\n'; // cas k non constant diff --git a/src/mesh/Mesh.hpp b/src/mesh/Mesh.hpp index a1d12a0abb659c57d663e023b0ffddc530551a2e..f28169f8377aa39f97f4e5ba6a4eb41edcc5be1a 100644 --- a/src/mesh/Mesh.hpp +++ b/src/mesh/Mesh.hpp @@ -62,36 +62,42 @@ public: // pas non constant - //Mesh(const Connectivity& connectivity) - // : m_connectivity(connectivity), - // m_xr("xr", connectivity.numberOfNodes()) - //{ - // const double delta_x = 1./connectivity.numberOfCells(); - // Kokkos::parallel_for(connectivity.numberOfNodes(), KOKKOS_LAMBDA(const int& r){ - // if (r%2 == 0) { - // m_xr[r][0] = r*delta_x; - // } - // else { - // m_xr[r][0] = (r*2+1)*0.5*delta_x; - // } - // }); - //} - - // pas non constant avec fonction x^2 - - Mesh(const Connectivity& connectivity) - : m_connectivity(connectivity), - m_xr("xr", connectivity.numberOfNodes()) + Mesh(const Connectivity& connectivity) + : m_connectivity(connectivity), + m_xr("xr", connectivity.numberOfNodes()) { 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::parallel_for(connectivity.numberOfNodes(), KOKKOS_LAMBDA(const int& r){ - m_xr[r][0] = m_xr[r][0]*m_xr[r][0]; + if (r%4 == 1) { + m_xr[r][0] = (r*2+1)*0.5*delta_x; + } + else { + if (r%4==3) { + m_xr[r][0] = ((r*3-1)/3.)*delta_x; + } + else + { + m_xr[r][0] = r*delta_x; + } + } }); } + // pas non constant avec fonction x^2 (mauvais choix pas, hyper lent) + + // Mesh(const Connectivity& connectivity) + // : m_connectivity(connectivity), + // m_xr("xr", connectivity.numberOfNodes()) + //{ + // 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::parallel_for(connectivity.numberOfNodes(), KOKKOS_LAMBDA(const int& r){ + // m_xr[r][0] = m_xr[r][0]*m_xr[r][0]; + // }); + //} + ~Mesh() { ;