Select Git revision
Connectivity.hpp
Mesh.hpp 2.11 KiB
#ifndef MESH_HPP
#define MESH_HPP
#include <Kokkos_Core.hpp>
#include <TinyVector.hpp>
template <typename ConnectivityType>
class Mesh
{
public:
typedef ConnectivityType Connectivity;
static constexpr size_t dimension = ConnectivityType::dimension;
typedef TinyVector<dimension> Rd;
private:
const Connectivity& m_connectivity;
Kokkos::View<Rd*> m_xr;
public:
const Connectivity& connectivity() const
{
return m_connectivity;
}
const size_t& numberOfNodes() const
{
return m_connectivity.numberOfNodes();
}
const size_t& numberOfFaces() const
{
return m_connectivity.numberOfFaces();
}
const size_t& numberOfCells() const
{
return m_connectivity.numberOfCells();
}
Kokkos::View<Rd*> xr()
{
return m_xr;
}
const Kokkos::View<const Rd*> xr() const
{
return m_xr;
}
// pas 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){
// m_xr[r][0] = r*delta_x;
// });
//}
// 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())
{
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()
{
;
}
};
#endif // MESH_HPP