24#if defined(ESPRESSO_DP3M)
28#include "communication.hpp"
34template <
typename FloatType>
37template <
typename FloatType>
40 out.rs_scalar = std::span(rs_mesh);
41 for (
auto i = 0
u; i < 3u; ++i) {
42 out.rs_fields[i] = std::span(rs_mesh_fields[i]);
50template <
typename FloatType>
52 rs_mesh.resize(ca_mesh_size);
58template <
typename FloatType>
60 std::array<FloatType *, 3u>
meshes = get_vector_mesh();
64template <
typename FloatType>
66 std::array<FloatType *, 3u>
meshes = get_vector_mesh();
70template <
typename FloatType>
72 mesh_comm.spread_grid(
::comm_cart, rs_mesh.data(), local_mesh.dim);
75template <
typename FloatType>
77 return rs_mesh.data();
80template <
typename FloatType>
82 return {{rs_mesh_fields[0
u].data(), rs_mesh_fields[1u].data(),
83 rs_mesh_fields[2u].data()}};
Buffers for FFTBackendLegacy.
void update_mesh_views(P3MFFTMesh< FloatType > &out) override
void perform_scalar_halo_spread() override
void perform_vector_halo_spread() override
void perform_vector_halo_gather() override
~FFTBuffersLegacy() 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.
Common functions for dipolar and charge P3M.