24#if defined(ESPRESSO_DP3M)
28#include "communication.hpp"
36template <
typename FloatType>
39template <
typename FloatType>
42 out.rs_scalar = std::span(rs_mesh);
43 for (
auto i = 0
u; i < 3u; ++i) {
44 out.rs_fields[i] = std::span(rs_mesh_fields[i]);
52template <
typename FloatType>
54 rs_mesh.resize(ca_mesh_size);
60template <
typename FloatType>
62 std::array<FloatType *, 3u>
meshes = get_vector_mesh();
66template <
typename FloatType>
68 std::array<FloatType *, 3u>
meshes = get_vector_mesh();
72template <
typename FloatType>
74 mesh_comm.spread_grid(
::comm_cart, rs_mesh.data(), local_mesh.dim);
77template <
typename FloatType>
79 return rs_mesh.data();
82template <
typename FloatType>
84 return {{rs_mesh_fields[0
u].data(), rs_mesh_fields[1u].data(),
85 rs_mesh_fields[2u].data()}};
Buffers for FFTBackendLegacy.
void update_mesh_views(P3MFFTMesh< FloatType > &out) override
HOST_ONLY_QUALIFIER ~FFTBuffersLegacy() override
void perform_scalar_halo_spread() override
void perform_vector_halo_spread() override
void perform_vector_halo_gather() override
void init_halo() override
void init_meshes(int ca_mesh_size) override
FloatType * get_scalar_mesh() override
std::array< FloatType *, 3u > get_vector_mesh() override
cudaStream_t stream[1]
CUDA streams for parallel computing on CPU and GPU.
boost::mpi::communicator comm_cart
The communicator.
#define HOST_ONLY_QUALIFIER
Common functions for dipolar and charge P3M.