|
IPPL (Independent Parallel Particle Layer)
IPPL
|
#include <FFTPeriodicPoissonSolver.h>
Public Types | |
| using | Field_t = FieldRHS |
| using | FFT_t = FFT<RCTransform, FieldRHS> |
| using | Complex_t = typename FFT_t::Complex_t |
| using | CxField_t = typename FFT_t::ComplexField |
| using | Layout_t = FieldLayout<Dim> |
| using | Vector_t = Vector<Trhs, Dim> |
| using | Base = Poisson<FieldLHS, FieldRHS> |
| using | scalar_type = typename FieldLHS::Mesh_t::value_type |
| using | vector_type = typename FieldLHS::Mesh_t::vector_type |
| using | lhs_type |
| using | rhs_type |
| enum | OutputType { SOL = 0b01 , GRAD = 0b10 , SOL_AND_GRAD = 0b11 } |
| using | Tlhs = typename FieldLHS::value_type |
| using | grad_type = Field<Vector<Tlhs, Dim>, Dim, Mesh, CenteringCentering> |
Public Member Functions | |
| FFTPeriodicPoissonSolver () | |
| FFTPeriodicPoissonSolver (lhs_type &lhs, rhs_type &rhs) | |
| void | setRhs (rhs_type &rhs) override |
| void | solve () override |
| template<typename T> | |
| void | updateParameter (const std::string &key, const T &value) |
| void | updateParameters (const ParameterList ¶ms) |
| void | mergeParameters (const ParameterList ¶ms) |
| void | setLhs (lhs_type &lhs) |
| virtual MField_t * | getHessian () |
| void | setGradient (grad_type &grad) |
Protected Member Functions | |
| virtual void | setDefaultParameters () override |
Protected Attributes | |
| ParameterList | params_m |
| rhs_type * | rhs_mp = nullptr |
| lhs_type * | lhs_mp = nullptr |
| grad_type * | grad_mp |
Private Types | |
| using | Trhs = typename FieldRHS::value_type |
| using | mesh_type = typename FieldRHS::Mesh_t |
| typedef FieldLHS::Mesh_t | Mesh |
| typedef FieldLHS::Centering_t | Centering |
| typedef Mesh::matrix_type | Matrix_t |
| typedef Field< Matrix_t, Dim, Mesh, CenteringCentering > | MField_t |
Private Member Functions | |
| void | initialize () |
Private Attributes | |
| std::shared_ptr< FFT_t > | fft_mp |
| CxField_t | fieldComplex_m |
| CxField_t | tempFieldComplex_m |
| NDIndex< Dim > | domain_m |
| std::shared_ptr< Layout_t > | layoutComplex_mp |
Static Private Attributes | |
| static constexpr unsigned | Dim = FieldLHS::dim |
Definition at line 23 of file FFTPeriodicPoissonSolver.h.
| using ippl::FFTPeriodicPoissonSolver< FieldLHS, FieldRHS >::Base = Poisson<FieldLHS, FieldRHS> |
Definition at line 36 of file FFTPeriodicPoissonSolver.h.
|
privateinherited |
| using ippl::FFTPeriodicPoissonSolver< FieldLHS, FieldRHS >::Complex_t = typename FFT_t::Complex_t |
Definition at line 31 of file FFTPeriodicPoissonSolver.h.
| using ippl::FFTPeriodicPoissonSolver< FieldLHS, FieldRHS >::CxField_t = typename FFT_t::ComplexField |
Definition at line 32 of file FFTPeriodicPoissonSolver.h.
| using ippl::FFTPeriodicPoissonSolver< FieldLHS, FieldRHS >::FFT_t = FFT<RCTransform, FieldRHS> |
Definition at line 30 of file FFTPeriodicPoissonSolver.h.
| using ippl::FFTPeriodicPoissonSolver< FieldLHS, FieldRHS >::Field_t = FieldRHS |
Definition at line 29 of file FFTPeriodicPoissonSolver.h.
| using ippl::FFTPeriodicPoissonSolver< FieldLHS, FieldRHS >::Layout_t = FieldLayout<Dim> |
Definition at line 33 of file FFTPeriodicPoissonSolver.h.
| using ippl::Poisson< FieldLHS, FieldRHS >::lhs_type |
|
privateinherited |
|
privateinherited |
|
private |
Definition at line 26 of file FFTPeriodicPoissonSolver.h.
| using ippl::Poisson< FieldLHS, FieldRHS >::rhs_type |
| using ippl::FFTPeriodicPoissonSolver< FieldLHS, FieldRHS >::scalar_type = typename FieldLHS::Mesh_t::value_type |
Definition at line 38 of file FFTPeriodicPoissonSolver.h.
|
inherited |
|
private |
Definition at line 25 of file FFTPeriodicPoissonSolver.h.
| using ippl::FFTPeriodicPoissonSolver< FieldLHS, FieldRHS >::Vector_t = Vector<Trhs, Dim> |
Definition at line 34 of file FFTPeriodicPoissonSolver.h.
| using ippl::FFTPeriodicPoissonSolver< FieldLHS, FieldRHS >::vector_type = typename FieldLHS::Mesh_t::vector_type |
Definition at line 39 of file FFTPeriodicPoissonSolver.h.
|
inherited |
|
inline |
Definition at line 41 of file FFTPeriodicPoissonSolver.h.
References setDefaultParameters().
|
inline |
Definition at line 49 of file FFTPeriodicPoissonSolver.h.
References setDefaultParameters().
|
inlinevirtualinherited |
Get the Hessian matrix of the solution
Reimplemented in ippl::FFTOpenPoissonSolver< FieldLHS, FieldRHS >.
|
private |
Definition at line 17 of file FFTPeriodicPoissonSolver.hpp.
References ippl::FieldLayout< Dim >::comm, Dim, domain_m, fft_mp, fieldComplex_m, ippl::get(), ippl::FieldLayout< Dim >::getDomain(), ippl::Poisson< FieldLHS, FieldRHS >::GRAD, ippl::FieldLayout< Dim >::isParallel(), layoutComplex_mp, ippl::Poisson< FieldLHS, FieldRHS >::params_m, ippl::Poisson< FieldLHS, FieldRHS >::rhs_mp, and tempFieldComplex_m.
|
inlineinherited |
|
inlineoverrideprotectedvirtual |
Utility function for initializing a solver's default parameters (to be overridden for each base class)
Reimplemented from ippl::Poisson< FieldLHS, FieldRHS >.
Definition at line 73 of file FFTPeriodicPoissonSolver.h.
References ippl::a2a, ippl::a2av, ippl::p2p, ippl::p2p_pl, and ippl::Poisson< FieldLHS, FieldRHS >::params_m.
Referenced by FFTPeriodicPoissonSolver(), and FFTPeriodicPoissonSolver().
|
inlineinherited |
Set the field in which the gradient of the computed potential should be stored
| grad | Reference to field in which to store the gradient |
Definition at line 109 of file Poisson.h.
References ippl::grad(), and grad_mp.
|
inlineinherited |
Set the problem LHS
| lhs | Reference to problem LHS field |
Definition at line 90 of file Poisson.h.
References lhs_mp.
Referenced by ippl::FFTOpenPoissonSolver< FieldLHS, FieldRHS >::FFTOpenPoissonSolver(), ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::FFTTruncatedGreenPeriodicPoissonSolver(), and Poisson().
|
overridevirtual |
Set the problem RHS
| rhs | Reference to problem RHS field |
Reimplemented from ippl::Poisson< FieldLHS, FieldRHS >.
Definition at line 11 of file FFTPeriodicPoissonSolver.hpp.
References ippl::initialize(), and ippl::Poisson< FieldLHS, FieldRHS >::setRhs().
|
overridevirtual |
Solve the Poisson problem described by -laplace(lhs) = rhs
Implements ippl::Poisson< FieldLHS, FieldRHS >.
Definition at line 53 of file FFTPeriodicPoissonSolver.hpp.
References ippl::apply(), ippl::BACKWARD, Dim, domain_m, fft_mp, fieldComplex_m, ippl::FORWARD, ippl::get(), ippl::getRangePolicy(), ippl::Poisson< FieldLHS, FieldRHS >::GRAD, layoutComplex_mp, ippl::Poisson< FieldLHS, FieldRHS >::lhs_mp, ippl::parallel_for(), ippl::Poisson< FieldLHS, FieldRHS >::params_m, pi, ippl::Poisson< FieldLHS, FieldRHS >::rhs_mp, ippl::Poisson< FieldLHS, FieldRHS >::SOL, and tempFieldComplex_m.
|
inlineinherited |
Update one of the solver's parameters
| key | The parameter key |
| value | The new value |
| IpplException | Fails if there is no existing parameter with the given key |
Definition at line 67 of file Poisson.h.
References params_m.
|
inlineinherited |
Updates all solver parameters based on values in another parameter set
| params | Parameter list with updated values |
| IpplException | Fails if the provided parameter list includes keys not already present |
Definition at line 77 of file Poisson.h.
References params_m.
|
staticconstexprprivate |
Definition at line 24 of file FFTPeriodicPoissonSolver.h.
Referenced by initialize(), and solve().
|
private |
Definition at line 69 of file FFTPeriodicPoissonSolver.h.
Referenced by initialize(), and solve().
|
private |
Definition at line 66 of file FFTPeriodicPoissonSolver.h.
Referenced by initialize(), and solve().
|
private |
Definition at line 67 of file FFTPeriodicPoissonSolver.h.
Referenced by initialize(), and solve().
|
protectedinherited |
Definition at line 125 of file Poisson.h.
Referenced by Poisson(), Poisson(), and setGradient().
|
private |
Definition at line 70 of file FFTPeriodicPoissonSolver.h.
Referenced by initialize(), and solve().
|
protectedinherited |
Definition at line 123 of file Poisson.h.
Referenced by setLhs(), ippl::FFTOpenPoissonSolver< FieldLHS, FieldRHS >::solve(), ippl::FFTPeriodicPoissonSolver< FieldLHS, FieldRHS >::solve(), and ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::solve().
|
protectedinherited |
Definition at line 120 of file Poisson.h.
Referenced by ippl::FFTOpenPoissonSolver< FieldLHS, FieldRHS >::FFTOpenPoissonSolver(), ippl::FFTOpenPoissonSolver< FieldLHS, FieldRHS >::FFTOpenPoissonSolver(), ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::FFTTruncatedGreenPeriodicPoissonSolver(), ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::FFTTruncatedGreenPeriodicPoissonSolver(), ippl::FFTOpenPoissonSolver< FieldLHS, FieldRHS >::getHessian(), ippl::FFTOpenPoissonSolver< FieldLHS, FieldRHS >::greensFunction(), ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::greensFunction(), ippl::FFTPeriodicPoissonSolver< FieldLHS, FieldRHS >::initialize(), ippl::FFTOpenPoissonSolver< FieldLHS, FieldRHS >::initializeFields(), ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::initializeFields(), mergeParameters(), ippl::FFTOpenPoissonSolver< FieldLHS, FieldRHS >::setDefaultParameters(), ippl::FFTPeriodicPoissonSolver< FieldLHS, FieldRHS >::setDefaultParameters(), ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::setDefaultParameters(), ippl::FFTOpenPoissonSolver< FieldLHS, FieldRHS >::setGradFD(), ippl::FFTOpenPoissonSolver< FieldLHS, FieldRHS >::solve(), ippl::FFTPeriodicPoissonSolver< FieldLHS, FieldRHS >::solve(), ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::solve(), updateParameter(), and updateParameters().
|
protectedinherited |
Definition at line 122 of file Poisson.h.
Referenced by ippl::FFTPeriodicPoissonSolver< FieldLHS, FieldRHS >::initialize(), ippl::FFTOpenPoissonSolver< FieldLHS, FieldRHS >::initializeFields(), ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::initializeFields(), setRhs(), ippl::FFTOpenPoissonSolver< FieldLHS, FieldRHS >::solve(), ippl::FFTPeriodicPoissonSolver< FieldLHS, FieldRHS >::solve(), and ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::solve().
|
private |
Definition at line 68 of file FFTPeriodicPoissonSolver.h.
Referenced by initialize(), and solve().