12#ifndef IPPL_FFT_TRUNCATED_GREEN_PERIODIC_POISSON_SOLVER_H_SOLVER_H_
13#define IPPL_FFT_TRUNCATED_GREEN_PERIODIC_POISSON_SOLVER_H_SOLVER_H_
25 template <
typename FieldLHS,
typename FieldRHS>
27 constexpr static unsigned Dim = FieldLHS::dim;
28 using Trhs =
typename FieldRHS::value_type;
64 void solve()
override;
104 using heffteBackend =
typename FFT_t::heffteBackend;
105 heffte::plan_options opts = heffte::default_options<heffteBackend>();
106 this->
params_m.add(
"use_pencils", opts.use_pencils);
107 this->
params_m.add(
"use_reorder", opts.use_reorder);
108 this->
params_m.add(
"use_gpu_aware", opts.use_gpu_aware);
109 this->
params_m.add(
"r2c_direction", 0);
110 this->
params_m.template add<Trhs>(
"alpha", 1);
111 this->
params_m.template add<Trhs>(
"force_constant", 1);
113 switch (opts.algorithm) {
114 case heffte::reshape_algorithm::alltoall:
117 case heffte::reshape_algorithm::alltoallv:
120 case heffte::reshape_algorithm::p2p:
123 case heffte::reshape_algorithm::p2p_plined:
127 throw IpplException(
"FFTTruncatedGreenPeriodicPoissonSolver::setDefaultParameters",
128 "Unrecognized heffte communication type");
void setRhs(rhs_type &rhs) override
void setDefaultParameters() override
IField_t grnIField_m[Dim]
Vector< Trhs, Dim > Vector_t
std::unique_ptr< FFT_t > fft_m
typename FieldRHS::value_type Trhs
FFT< RCTransform, FieldRHS > FFT_t
~FFTTruncatedGreenPeriodicPoissonSolver()=default
CxField_t tempFieldComplex_m
FFT_t::ComplexField CxField_t
NDIndex< Dim > domainComplex_m
FieldLayout< Dim > FieldLayout_t
std::unique_ptr< mesh_type > meshComplex_m
static constexpr unsigned Dim
Field< int, Dim, mesh_type, typename FieldLHS::Centering_t > IField_t
Poisson< FieldLHS, FieldRHS > Base
FieldLayout_t * layout_mp
FFTTruncatedGreenPeriodicPoissonSolver()
typename FieldRHS::Mesh_t mesh_type
std::unique_ptr< FieldLayout_t > layoutComplex_m