IPPL (Independent Parallel Particle Layer)
IPPL
Loading...
Searching...
No Matches
ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS > Class Template Reference

#include <FFTTruncatedGreenPeriodicPoissonSolver.h>

Inheritance diagram for ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >:
Collaboration diagram for ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >:

Public Types

using Base = Poisson<FieldLHS, FieldRHS>
typedef FFT< RCTransform, FieldRHS > FFT_t
typedef FieldRHS Field_t
typedef Field< int, Dim, mesh_type, typename FieldLHS::Centering_t > IField_t
typedef FFT_t::ComplexField CxField_t
typedef Vector< Trhs, DimVector_t
typedef FieldLayout< DimFieldLayout_t
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

 FFTTruncatedGreenPeriodicPoissonSolver ()
 FFTTruncatedGreenPeriodicPoissonSolver (rhs_type &rhs, ParameterList &params)
 FFTTruncatedGreenPeriodicPoissonSolver (lhs_type &lhs, rhs_type &rhs, ParameterList &params)
 ~FFTTruncatedGreenPeriodicPoissonSolver ()=default
void setRhs (rhs_type &rhs) override
void solve () override
void initializeFields ()
void greensFunction ()
template<typename T>
void updateParameter (const std::string &key, const T &value)
void updateParameters (const ParameterList &params)
void mergeParameters (const ParameterList &params)
void setLhs (lhs_type &lhs)
virtual MField_tgetHessian ()
void setGradient (grad_type &grad)

Protected Member Functions

void setDefaultParameters () override

Protected Attributes

ParameterList params_m
rhs_typerhs_mp = nullptr
lhs_typelhs_mp = nullptr
grad_typegrad_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, CenteringCenteringMField_t

Private Attributes

Field_t grn_m
CxField_t rhotr_m
CxField_t grntr_m
CxField_t tempFieldComplex_m
IField_t grnIField_m [Dim]
std::unique_ptr< FFT_tfft_m
mesh_typemesh_mp
FieldLayout_tlayout_mp
std::unique_ptr< mesh_typemeshComplex_m
std::unique_ptr< FieldLayout_tlayoutComplex_m
NDIndex< Dimdomain_m
NDIndex< DimdomainComplex_m
Vector_t hr_m
Vector< int, Dimnr_m

Static Private Attributes

static constexpr unsigned Dim = FieldLHS::dim

Detailed Description

template<typename FieldLHS, typename FieldRHS>
class ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >

Definition at line 26 of file FFTTruncatedGreenPeriodicPoissonSolver.h.

Member Typedef Documentation

◆ Base

template<typename FieldLHS, typename FieldRHS>
using ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::Base = Poisson<FieldLHS, FieldRHS>

Definition at line 33 of file FFTTruncatedGreenPeriodicPoissonSolver.h.

◆ Centering

template<typename FieldLHS, typename FieldRHS>
typedef FieldLHS::Centering_t ippl::Poisson< FieldLHS, FieldRHS >::Centering
privateinherited

Definition at line 19 of file Poisson.h.

◆ CxField_t

template<typename FieldLHS, typename FieldRHS>
typedef FFT_t::ComplexField ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::CxField_t

Definition at line 46 of file FFTTruncatedGreenPeriodicPoissonSolver.h.

◆ FFT_t

template<typename FieldLHS, typename FieldRHS>
typedef FFT<RCTransform, FieldRHS> ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::FFT_t

Definition at line 39 of file FFTTruncatedGreenPeriodicPoissonSolver.h.

◆ Field_t

template<typename FieldLHS, typename FieldRHS>
typedef FieldRHS ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::Field_t

Definition at line 44 of file FFTTruncatedGreenPeriodicPoissonSolver.h.

◆ FieldLayout_t

template<typename FieldLHS, typename FieldRHS>
typedef FieldLayout<Dim> ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::FieldLayout_t

Definition at line 50 of file FFTTruncatedGreenPeriodicPoissonSolver.h.

◆ grad_type

template<typename FieldLHS, typename FieldRHS>
using ippl::Poisson< FieldLHS, FieldRHS >::grad_type = Field<Vector<Tlhs, Dim>, Dim, Mesh, CenteringCentering>
inherited

Definition at line 29 of file Poisson.h.

◆ IField_t

template<typename FieldLHS, typename FieldRHS>
typedef Field<int, Dim, mesh_type, typename FieldLHS::Centering_t> ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::IField_t

Definition at line 45 of file FFTTruncatedGreenPeriodicPoissonSolver.h.

◆ lhs_type

template<typename FieldLHS, typename FieldRHS>
using ippl::Poisson< FieldLHS, FieldRHS >::lhs_type

Definition at line 24 of file Poisson.h.

◆ Matrix_t

template<typename FieldLHS, typename FieldRHS>
typedef Mesh::matrix_type ippl::Poisson< FieldLHS, FieldRHS >::Matrix_t
privateinherited

Definition at line 20 of file Poisson.h.

◆ Mesh

template<typename FieldLHS, typename FieldRHS>
typedef FieldLHS::Mesh_t ippl::Poisson< FieldLHS, FieldRHS >::Mesh
privateinherited

Definition at line 18 of file Poisson.h.

◆ mesh_type

template<typename FieldLHS, typename FieldRHS>
using ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::mesh_type = typename FieldRHS::Mesh_t
private

Definition at line 29 of file FFTTruncatedGreenPeriodicPoissonSolver.h.

◆ MField_t

template<typename FieldLHS, typename FieldRHS>
typedef Field<Matrix_t, Dim, Mesh, CenteringCentering> ippl::Poisson< FieldLHS, FieldRHS >::MField_t
privateinherited

Definition at line 21 of file Poisson.h.

◆ rhs_type

template<typename FieldLHS, typename FieldRHS>
using ippl::Poisson< FieldLHS, FieldRHS >::rhs_type

Definition at line 25 of file Poisson.h.

◆ Tlhs

template<typename FieldLHS, typename FieldRHS>
using ippl::Poisson< FieldLHS, FieldRHS >::Tlhs = typename FieldLHS::value_type
inherited

Definition at line 26 of file Poisson.h.

◆ Trhs

template<typename FieldLHS, typename FieldRHS>
using ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::Trhs = typename FieldRHS::value_type
private

Definition at line 28 of file FFTTruncatedGreenPeriodicPoissonSolver.h.

◆ Vector_t

template<typename FieldLHS, typename FieldRHS>
typedef Vector<Trhs, Dim> ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::Vector_t

Definition at line 47 of file FFTTruncatedGreenPeriodicPoissonSolver.h.

Member Enumeration Documentation

◆ OutputType

template<typename FieldLHS, typename FieldRHS>
enum ippl::Poisson::OutputType
inherited

Represents the types of fields that should be output by the solver

Enumerator
SOL 
GRAD 
SOL_AND_GRAD 

Definition at line 35 of file Poisson.h.

Constructor & Destructor Documentation

◆ FFTTruncatedGreenPeriodicPoissonSolver() [1/3]

template<typename FieldLHS, typename FieldRHS>
ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::FFTTruncatedGreenPeriodicPoissonSolver ( )

Definition at line 18 of file FFTTruncatedGreenPeriodicPoissonSolver.hpp.

References layout_mp, layoutComplex_m, mesh_mp, meshComplex_m, and setDefaultParameters().

Here is the call graph for this function:

◆ FFTTruncatedGreenPeriodicPoissonSolver() [2/3]

template<typename FieldLHS, typename FieldRHS>
ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::FFTTruncatedGreenPeriodicPoissonSolver ( rhs_type & rhs,
ParameterList & params )

Definition at line 28 of file FFTTruncatedGreenPeriodicPoissonSolver.hpp.

References layout_mp, layoutComplex_m, mesh_mp, meshComplex_m, ippl::Poisson< FieldLHS, FieldRHS >::params_m, setDefaultParameters(), setRhs(), and ippl::Poisson< FieldLHS, FieldRHS >::SOL.

Here is the call graph for this function:

◆ FFTTruncatedGreenPeriodicPoissonSolver() [3/3]

template<typename FieldLHS, typename FieldRHS>
ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::FFTTruncatedGreenPeriodicPoissonSolver ( lhs_type & lhs,
rhs_type & rhs,
ParameterList & params )

Definition at line 42 of file FFTTruncatedGreenPeriodicPoissonSolver.hpp.

References layout_mp, layoutComplex_m, mesh_mp, meshComplex_m, ippl::Poisson< FieldLHS, FieldRHS >::params_m, setDefaultParameters(), ippl::Poisson< FieldLHS, FieldRHS >::setLhs(), and setRhs().

Here is the call graph for this function:

◆ ~FFTTruncatedGreenPeriodicPoissonSolver()

template<typename FieldLHS, typename FieldRHS>
ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::~FFTTruncatedGreenPeriodicPoissonSolver ( )
default

Member Function Documentation

◆ getHessian()

template<typename FieldLHS, typename FieldRHS>
virtual MField_t * ippl::Poisson< FieldLHS, FieldRHS >::getHessian ( )
inlinevirtualinherited

Get the Hessian matrix of the solution

Returns
Matrix field containing the Hessian of the lhs

Reimplemented in ippl::FFTOpenPoissonSolver< FieldLHS, FieldRHS >.

Definition at line 102 of file Poisson.h.

◆ greensFunction()

template<typename FieldLHS, typename FieldRHS>
void ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::greensFunction ( )

Definition at line 307 of file FFTTruncatedGreenPeriodicPoissonSolver.hpp.

References Dim, fft_m, ippl::FORWARD, ippl::get(), ippl::getRangePolicy(), grn_m, grnIField_m, grntr_m, hr_m, layout_mp, and ippl::Poisson< FieldLHS, FieldRHS >::params_m.

Referenced by initializeFields(), and solve().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ initializeFields()

template<typename FieldLHS, typename FieldRHS>
void ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::initializeFields ( )

Definition at line 65 of file FFTTruncatedGreenPeriodicPoissonSolver.hpp.

References Dim, domain_m, domainComplex_m, fft_m, ippl::get(), ippl::getRangePolicy(), greensFunction(), grn_m, grnIField_m, grntr_m, hr_m, layout_mp, layoutComplex_m, mesh_mp, meshComplex_m, nr_m, ippl::Poisson< FieldLHS, FieldRHS >::params_m, rhotr_m, ippl::Poisson< FieldLHS, FieldRHS >::rhs_mp, and tempFieldComplex_m.

Referenced by setRhs().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ mergeParameters()

template<typename FieldLHS, typename FieldRHS>
void ippl::Poisson< FieldLHS, FieldRHS >::mergeParameters ( const ParameterList & params)
inlineinherited

Merges another parameter set into the solver's parameters, overwriting existing parameters in case of conflict

Parameters
paramsParameter list with desired values

Definition at line 84 of file Poisson.h.

References params_m.

◆ setDefaultParameters()

template<typename FieldLHS, typename FieldRHS>
void ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::setDefaultParameters ( )
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 103 of file FFTTruncatedGreenPeriodicPoissonSolver.h.

References ippl::a2a, ippl::a2av, ippl::p2p, ippl::p2p_pl, and ippl::Poisson< FieldLHS, FieldRHS >::params_m.

Referenced by FFTTruncatedGreenPeriodicPoissonSolver(), FFTTruncatedGreenPeriodicPoissonSolver(), and FFTTruncatedGreenPeriodicPoissonSolver().

Here is the caller graph for this function:

◆ setGradient()

template<typename FieldLHS, typename FieldRHS>
void ippl::Poisson< FieldLHS, FieldRHS >::setGradient ( grad_type & grad)
inlineinherited

Set the field in which the gradient of the computed potential should be stored

Parameters
gradReference to field in which to store the gradient

Definition at line 109 of file Poisson.h.

References ippl::grad(), and grad_mp.

Here is the call graph for this function:

◆ setLhs()

template<typename FieldLHS, typename FieldRHS>
void ippl::Poisson< FieldLHS, FieldRHS >::setLhs ( lhs_type & lhs)
inlineinherited

Set the problem LHS

Parameters
lhsReference 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().

Here is the caller graph for this function:

◆ setRhs()

template<typename FieldLHS, typename FieldRHS>
void ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::setRhs ( rhs_type & rhs)
overridevirtual

Set the problem RHS

Parameters
rhsReference to problem RHS field

Reimplemented from ippl::Poisson< FieldLHS, FieldRHS >.

Definition at line 56 of file FFTTruncatedGreenPeriodicPoissonSolver.hpp.

References initializeFields(), and ippl::Poisson< FieldLHS, FieldRHS >::setRhs().

Referenced by FFTTruncatedGreenPeriodicPoissonSolver(), and FFTTruncatedGreenPeriodicPoissonSolver().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ solve()

template<typename FieldLHS, typename FieldRHS>
void ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::solve ( )
overridevirtual

◆ updateParameter()

template<typename FieldLHS, typename FieldRHS>
template<typename T>
void ippl::Poisson< FieldLHS, FieldRHS >::updateParameter ( const std::string & key,
const T & value )
inlineinherited

Update one of the solver's parameters

Parameters
keyThe parameter key
valueThe new value
Exceptions
IpplExceptionFails if there is no existing parameter with the given key

Definition at line 67 of file Poisson.h.

References params_m.

◆ updateParameters()

template<typename FieldLHS, typename FieldRHS>
void ippl::Poisson< FieldLHS, FieldRHS >::updateParameters ( const ParameterList & params)
inlineinherited

Updates all solver parameters based on values in another parameter set

Parameters
paramsParameter list with updated values
Exceptions
IpplExceptionFails if the provided parameter list includes keys not already present

Definition at line 77 of file Poisson.h.

References params_m.

Member Data Documentation

◆ Dim

template<typename FieldLHS, typename FieldRHS>
unsigned ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::Dim = FieldLHS::dim
staticconstexprprivate

◆ domain_m

template<typename FieldLHS, typename FieldRHS>
NDIndex<Dim> ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::domain_m
private

Definition at line 95 of file FFTTruncatedGreenPeriodicPoissonSolver.h.

Referenced by initializeFields().

◆ domainComplex_m

template<typename FieldLHS, typename FieldRHS>
NDIndex<Dim> ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::domainComplex_m
private

Definition at line 96 of file FFTTruncatedGreenPeriodicPoissonSolver.h.

Referenced by initializeFields().

◆ fft_m

template<typename FieldLHS, typename FieldRHS>
std::unique_ptr<FFT_t> ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::fft_m
private

◆ grad_mp

template<typename FieldLHS, typename FieldRHS>
grad_type* ippl::Poisson< FieldLHS, FieldRHS >::grad_mp
protectedinherited

Definition at line 125 of file Poisson.h.

Referenced by Poisson(), Poisson(), and setGradient().

◆ grn_m

template<typename FieldLHS, typename FieldRHS>
Field_t ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::grn_m
private

Definition at line 74 of file FFTTruncatedGreenPeriodicPoissonSolver.h.

Referenced by greensFunction(), and initializeFields().

◆ grnIField_m

template<typename FieldLHS, typename FieldRHS>
IField_t ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::grnIField_m[Dim]
private

Definition at line 81 of file FFTTruncatedGreenPeriodicPoissonSolver.h.

Referenced by greensFunction(), and initializeFields().

◆ grntr_m

template<typename FieldLHS, typename FieldRHS>
CxField_t ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::grntr_m
private

◆ hr_m

template<typename FieldLHS, typename FieldRHS>
Vector_t ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::hr_m
private

◆ layout_mp

◆ layoutComplex_m

template<typename FieldLHS, typename FieldRHS>
std::unique_ptr<FieldLayout_t> ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::layoutComplex_m
private

◆ lhs_mp

template<typename FieldLHS, typename FieldRHS>
lhs_type* ippl::Poisson< FieldLHS, FieldRHS >::lhs_mp = nullptr
protectedinherited

◆ mesh_mp

◆ meshComplex_m

template<typename FieldLHS, typename FieldRHS>
std::unique_ptr<mesh_type> ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::meshComplex_m
private

◆ nr_m

template<typename FieldLHS, typename FieldRHS>
Vector<int, Dim> ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::nr_m
private

Definition at line 100 of file FFTTruncatedGreenPeriodicPoissonSolver.h.

Referenced by initializeFields(), and solve().

◆ params_m

template<typename FieldLHS, typename FieldRHS>
ParameterList ippl::Poisson< FieldLHS, FieldRHS >::params_m
protectedinherited

◆ rhotr_m

template<typename FieldLHS, typename FieldRHS>
CxField_t ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::rhotr_m
private

Definition at line 76 of file FFTTruncatedGreenPeriodicPoissonSolver.h.

Referenced by initializeFields(), and solve().

◆ rhs_mp

◆ tempFieldComplex_m

template<typename FieldLHS, typename FieldRHS>
CxField_t ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::tempFieldComplex_m
private

Definition at line 78 of file FFTTruncatedGreenPeriodicPoissonSolver.h.

Referenced by initializeFields(), and solve().


The documentation for this class was generated from the following files: