11 template <
typename Field>
20 using vector_type =
typename mesh_type::vector_type;
23 vector_type vectors[
Dim];
24 for (
unsigned d = 0; d <
Dim; d++) {
35 template <
typename Field>
44 using vector_type =
typename mesh_type::vector_type;
47 vector_type vectors[
Dim];
48 for (
unsigned d = 0; d <
Dim; d++) {
59 template <
typename Field>
69 typename mesh_type::vector_type hvector(0);
70 for (
unsigned d = 0; d <
Dim; d++) {
71 hvector[d] = 1.0 / std::pow(mesh.getMeshSpacing(d), 2);
80 template <
typename Field>
90 typename mesh_type::vector_type xvector(0);
92 typename mesh_type::vector_type yvector(0);
94 typename mesh_type::vector_type zvector(0);
96 typename mesh_type::vector_type hvector(0);
97 hvector = mesh.getMeshSpacing();
105 template <
typename Field>
114 using vector_type =
typename mesh_type::vector_type;
117 vector_type vectors[
Dim];
118 for (
unsigned d = 0; d <
Dim; d++) {
Implementations for FFT constructor/destructor and transforms.
detail::meta_div< Field > div(Field &u)
detail::meta_hess< Field > hess(Field &u)
detail::meta_grad< Field > grad(Field &u)
detail::meta_curl< Field > curl(Field &u)
detail::meta_laplace< Field > laplace(Field &u)
static constexpr unsigned dim
KOKKOS_INLINE_FUNCTION Mesh_t & get_mesh() const
virtual KOKKOS_INLINE_FUNCTION const vector_type & getMeshSpacing() const =0