IPPL (Independent Parallel Particle Layer)
IPPL
Loading...
Searching...
No Matches
ippl Namespace Reference

Namespaces

namespace  detail
namespace  mpi
namespace  random

Classes

class  BufferHandler
 Interface for memory buffer handling. More...
class  DefaultBufferHandler
 Concrete implementation of BufferHandler for managing memory buffers. More...
struct  LogEntry
class  LoggingBufferHandler
 Decorator class for buffer management that adds logging capabilities to buffer operations. More...
class  OrthogonalRecursiveBisection
struct  ExtractExpressionRank
class  EdgeElement
class  Element
 Base class for all elements. More...
class  HexahedralElement
class  QuadrilateralElement
class  FEMVector
 1D vector used in the context of FEM. More...
class  FiniteElementSpace
 The FiniteElementSpace class handles the mesh index mapping to vertices and elements and is the base class for other FiniteElementSpace classes (e.g. LagrangeSpace). More...
class  LagrangeSpace
 A class representing a Lagrange space for finite element methods on a structured, rectilinear grid. More...
class  NedelecSpace
 A class representing a Nedelec space for finite element methods on a structured, rectilinear grid. More...
class  GaussJacobiQuadrature
 This is class represents the Gauss-Jacobi quadrature rule on a reference element. More...
class  GaussLegendreQuadrature
 This is class represents the Gauss-Legendre quadrature rule. It is a special case of the Gauss-Jacobi quadrature rule with alpha = beta = 0.0. More...
class  ChebyshevGaussQuadrature
 This is class represents the Chebyshev-Gauss quadrature rule. It is a special case of the Gauss-Jacobi quadrature rule with alpha = beta = -0.5. More...
class  MidpointQuadrature
 This is a class representing the midpoint quadrature rule. More...
class  Quadrature
 This is the base class for all quadrature rules. More...
class  CCTransform
class  RCTransform
class  SineTransform
class  CosTransform
class  Cos1Transform
class  FFTBase
class  FFT
class  FFT< CCTransform, ComplexField >
class  FFT< RCTransform, RealField >
class  FFT< SineTransform, Field >
class  FFT< CosTransform, Field >
class  FFT< Cos1Transform, Field >
class  BareField
class  BConds
class  ExtrapolateFace
class  NoBcFace
class  ConstantFace
class  ZeroFace
class  PeriodicFace
class  Field
class  FieldLayout
class  SubFieldLayout
 SubFieldLayout provides a layout for a sub-region of a larger field. More...
class  Index
class  NDIndex
class  ParticleInteractionBase
class  TruncatedGreenParticleInteraction
class  CG
class  CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, FEMVector< T >, FEMVector< T > >
class  PCG
struct  preconditioner
struct  jacobi_preconditioner
struct  polynomial_newton_preconditioner
struct  polynomial_chebyshev_preconditioner
struct  richardson_preconditioner
struct  richardson_preconditioner_alt
struct  gs_preconditioner
struct  ssor_preconditioner
class  SolverAlgorithm
class  BaseManager
 A base class for managing simulations using IPPL. More...
class  FieldSolverBase
class  PicManager
 A template class for managing Particle-in-Cell (PIC) simulations. More...
class  FDTDSolverBase
 Base class for FDTD solvers in the ippl library. More...
struct  EvalFunctor
 Representation of the lhs of the problem we are trying to solve. More...
class  FEMMaxwellDiffusionSolver
 A solver for the electric diffusion equation given by \( \nabla \times \nabla \times E + E = f \text{ in } \Omega\) and \( n \times E = 0 \text{ on } \partial \Omega\) using the Nédélec basis functions. More...
class  Maxwell
class  NonStandardFDTDSolver
 A solver for Maxwell's equations using a non-standard Finite-Difference Time-Domain (FDTD) method. More...
class  StandardFDTDSolver
 A solver for Maxwell's equations using the Finite-Difference Time-Domain (FDTD) method. More...
class  Mesh
class  UniformCartesian
class  ParticleAttrib
class  ParticleBaseBase
class  ParticleBase
class  ParticleSpatialLayout
struct  increment_type
class  ParticleSpatialOverlapLayout
class  FEMPoissonSolver
 A solver for the poisson equation using finite element methods and Conjugate Gradient (CG). More...
class  FFTOpenPoissonSolver
class  FFTPeriodicPoissonSolver
class  FFTTruncatedGreenPeriodicPoissonSolver
class  NullSolver
class  Poisson
class  PoissonCG
class  PreconditionedFEMPoissonSolver
 A solver for the poisson equation using finite element methods and Conjugate Gradient (CG). More...
class  NDRegion
class  PRegion
struct  TupleImpl
 Implementation details for the Tuple class. More...
struct  TupleImpl< i, N, T, R, Ts... >
struct  TupleImpl< i, N, T >
 Partial specialization of TupleImpl for handling the terminal element. More...
class  Tuple
 Generic tuple class with various operations. More...
struct  TupleTypeImpl
struct  TupleTypeImpl< 0, T, Ts... >
class  Vector
struct  RangePolicy
struct  RangePolicy< 1, PolicyArgs... >
class  ParameterList

Typedefs

template<typename T, unsigned NumVertices>
using Element1D = Element<T, 1, NumVertices>
 Base class for all 1D elements.
template<typename T, unsigned NumVertices>
using Element2D = Element<T, 2, NumVertices>
 Base class for all 2D elements.
template<typename T, unsigned NumVertices>
using Element3D = Element<T, 3, NumVertices>
 Base class for all 3D elements.
template<std::size_t Idx, typename... Ts>
using TupleType = typename TupleTypeImpl<Idx, Ts...>::type

Enumerations

enum  InitialGuessType { Chebyshev , LehrFEM }
enum  FFTComm { a2av = 0 , a2a = 1 , p2p = 2 , p2p_pl = 3 }
enum  TransformDirection { FORWARD , BACKWARD }
enum  FieldBC {
  PERIODIC_FACE = 0b0000 , CONSTANT_FACE = 0b0001 , ZERO_FACE = 0b0011 , EXTRAPOLATE_FACE = 0b0100 ,
  NO_FACE = 0b1000
}
enum  e_cube_tag { UPPER = 0 , LOWER = 1 , IS_PARALLEL = 2 }
enum  fdtd_bc { periodic , absorbing }
enum  BC { PERIODIC , REFLECTIVE , SINK , NO }

Functions

void serializeString (std::vector< char > &buffer, const std::string &str)
std::string deserializeString (const std::vector< char > &buffer, size_t &offset)
template<typename T>
void serializeBasicType (std::vector< char > &buffer, const T &value)
template<typename T>
T deserializeBasicType (const std::vector< char > &buffer, size_t &offset)
template<typename View, typename Coords, size_t... Idx>
KOKKOS_INLINE_FUNCTION constexpr decltype(auto) apply_impl (const View &view, const Coords &coords, const std::index_sequence< Idx... > &)
template<typename View, typename Coords>
KOKKOS_INLINE_FUNCTION constexpr decltype(auto) apply (const View &view, const Coords &coords)
template<typename E1, size_t N1, typename E2, size_t N2>
KOKKOS_INLINE_FUNCTION detail::meta_cross< E1, E2 > cross (const detail::Expression< E1, N1 > &u, const detail::Expression< E2, N2 > &v)
template<typename E1, size_t N1, typename E2, size_t N2>
KOKKOS_INLINE_FUNCTION detail::meta_dot< E1, E2 > dot (const detail::Expression< E1, N1 > &u, const detail::Expression< E2, N2 > &v)
template<typename T, unsigned Dim>
KOKKOS_INLINE_FUNCTION void locate_element_nd_and_xi (const Vector< T, Dim > &hr, const Vector< T, Dim > &origin, const Vector< T, Dim > &x, Vector< size_t, Dim > &e_nd, Vector< T, Dim > &xi)
 Mapping from global position to element ND index and reference coordinates (xi ∈ [0,1)^Dim) on a UniformCartesian mesh.
template<class View, class IVec, std::size_t... Is>
KOKKOS_INLINE_FUNCTION auto view_ptr_impl (View &v, const IVec &I, std::index_sequence< Is... >) -> decltype(&v(I[Is]...))
template<int D, class View, class IVec>
KOKKOS_INLINE_FUNCTION auto view_ptr (View &v, const IVec &I) -> decltype(view_ptr_impl(v, I, std::make_index_sequence< D >{}))
template<typename AttribIn, typename Field, typename PosAttrib, typename Space, typename policy_type = Kokkos::RangePolicy<typename Field::execution_space>>
void assemble_rhs_from_particles (const AttribIn &attrib, Field &f, const PosAttrib &pp, const Space &space, policy_type iteration_policy)
 Assemble a P1 FEM load vector (RHS) from particle attributes.
template<class View, class IVec, std::size_t... Is>
KOKKOS_INLINE_FUNCTION decltype(auto) view_ref_impl (View &v, const IVec &I, std::index_sequence< Is... >)
template<int D, class View, class IVec>
KOKKOS_INLINE_FUNCTION decltype(auto) view_ref (View &v, const IVec &I)
template<typename AttribOut, typename Field, typename PosAttrib, typename Space, typename policy_type = Kokkos::RangePolicy<typename Field::execution_space>>
void interpolate_to_diracs (AttribOut &attrib_out, const Field &coeffs, const PosAttrib &pp, const Space &space, policy_type iteration_policy)
 Interpolate a P1 FEM field to particle positions.
template<typename T>
T innerProduct (const FEMVector< T > &a, const FEMVector< T > &b)
 Calculate the inner product between two ippl::FEMVector(s).
template<typename T>
T norm (const FEMVector< T > &v, int p=2)
constexpr unsigned calculateNumElementVertices (unsigned Dim)
 DefineReduction (Sum, sum, valL+=myVal, std::plus) DefineReduction(Max
std::greater DefineReduction (Min, min, using Kokkos::min;valL=min(valL, myVal), std::less) DefineReduction(Prod
template<typename BareField>
BareField::value_type innerProduct (const BareField &f1, const BareField &f2)
template<typename BareField>
BareField::value_type norm (const BareField &field, int p=2)
template<typename Field, unsigned Dim>
std::ostream & operator<< (std::ostream &os, const BConds< Field, Dim > &bc)
template<typename Field>
detail::meta_grad< Fieldgrad (Field &u)
template<typename Field>
detail::meta_div< Fielddiv (Field &u)
template<typename Field>
detail::meta_laplace< Fieldlaplace (Field &u)
template<typename Field>
detail::meta_curl< Fieldcurl (Field &u)
template<typename Field>
detail::meta_hess< Fieldhess (Field &u)
template<unsigned Dim>
std::ostream & operator<< (std::ostream &, const FieldLayout< Dim > &)
std::ostream & operator<< (std::ostream &out, const Index &I)
KOKKOS_INLINE_FUNCTION Index operator+ (const Index &i, int off)
KOKKOS_INLINE_FUNCTION Index operator+ (int off, const Index &i)
KOKKOS_INLINE_FUNCTION Index operator- (const Index &i, int off)
KOKKOS_INLINE_FUNCTION Index operator- (int off, const Index &i)
KOKKOS_INLINE_FUNCTION Index operator- (const Index &i)
KOKKOS_INLINE_FUNCTION Index operator* (const Index &i, int m)
KOKKOS_INLINE_FUNCTION Index operator* (int m, const Index &i)
KOKKOS_INLINE_FUNCTION Index operator/ (const Index &i, int d)
KOKKOS_INLINE_FUNCTION void lcm (int s1, int s2, int &s, int &m1, int &m2)
static KOKKOS_INLINE_FUNCTION Index do_intersect (const Index &a, const Index &b)
template<unsigned Dim>
std::ostream & operator<< (std::ostream &out, const NDIndex< Dim > &idx)
template<unsigned Dim>
bool operator== (const NDIndex< Dim > &nd1, const NDIndex< Dim > &nd2)
template<unsigned Dim>
bool operator!= (const NDIndex< Dim > &nd1, const NDIndex< Dim > &nd2)
void initialize (int &argc, char *argv[], MPI_Comm comm)
void finalize ()
void fence ()
void abort (const char *msg, int errorcode)
template<typename Field, typename Functor>
double powermethod (Functor &&f, Field &x_0, unsigned int max_iter=5000, double tol=1e-3)
template<typename Field, typename Functor>
double adapted_powermethod (Functor &&f, Field &x_0, double lambda_max, unsigned int max_iter=5000, double tol=1e-3)
template<typename Attrib1, typename Field, typename Attrib2, typename policy_type = Kokkos::RangePolicy<typename Field::execution_space>>
void scatter (const Attrib1 &attrib, Field &f, const Attrib2 &pp)
 Non-class interface for scattering particle attribute data onto a field.
template<typename Attrib1, typename Field, typename Attrib2, typename policy_type = Kokkos::RangePolicy<typename Field::execution_space>>
void scatter (const Attrib1 &attrib, Field &f, const Attrib2 &pp, policy_type iteration_policy, typename Attrib1::hash_type hash_array={})
 Non-class interface for scattering with a custom iteration policy and optional index array.
template<typename Attrib1, typename Field, typename Attrib2>
void gather (Attrib1 &attrib, Field &f, const Attrib2 &pp, const bool addToAttribute=false)
 Non-class interface for gathering field data into a particle attribute.
 DefineParticleReduction (Sum, sum, valL+=myVal, std::plus) DefineParticleReduction(Max
 if (myVal > valL) valL
std::greater DefineParticleReduction (Min, min, if(myVal< valL) valL=myVal, std::less) DefineParticleReduction(Prod
template<typename Field>
detail::meta_poisson< Fieldpoisson (Field &u)
template<typename Field>
detail::meta_lower_laplace< Fieldlower_laplace (Field &u)
template<typename Field>
detail::meta_lower_laplace< Fieldlower_laplace_no_comm (Field &u)
template<typename Field>
detail::meta_upper_laplace< Fieldupper_laplace (Field &u)
template<typename Field>
detail::meta_upper_laplace< Fieldupper_laplace_no_comm (Field &u)
template<typename Field>
detail::meta_upper_and_lower_laplace< Fieldupper_and_lower_laplace (Field &u)
template<typename Field>
detail::meta_upper_and_lower_laplace< Fieldupper_and_lower_laplace_no_comm (Field &u)
template<typename Field>
double negative_inverse_diagonal_laplace (Field &u)
template<typename Field>
double diagonal_laplace (Field &u)
template<typename Field>
void mult (Field &u, const double c)
template<typename T, unsigned Dim>
std::ostream & operator<< (std::ostream &out, const NDRegion< T, Dim > &idx)
template<typename T>
std::ostream & operator<< (std::ostream &out, const PRegion< T > &r)
template<std::size_t Idx, typename... Ts>
KOKKOS_INLINE_FUNCTION auto & get (Tuple< Ts... > &t)
 Accessor function to get an element mutable reference at a specific index from a Tuple.
template<std::size_t Idx, typename... Ts>
KOKKOS_INLINE_FUNCTION const auto & get (const Tuple< Ts... > &t)
 Accessor function to get a element const reference at a specific index from a Tuple.
template<typename... Ts>
KOKKOS_INLINE_FUNCTION Tuple< Ts... > makeTuple (Ts &&... args)
 Function to create a Tuple with specified elements.
template<typename T, unsigned Dim>
KOKKOS_INLINE_FUNCTION Vector< T, Dimmin (const Vector< T, Dim > &a, const Vector< T, Dim > &b)
template<typename T, unsigned Dim>
KOKKOS_INLINE_FUNCTION Vector< T, Dimmax (const Vector< T, Dim > &a, const Vector< T, Dim > &b)
template<typename T, unsigned Dim>
std::ostream & operator<< (std::ostream &out, const Vector< T, Dim > &v)
template<class... PolicyArgs, typename View>
RangePolicy< View::rank, typenameView::execution_space, PolicyArgs... >::policy_type getRangePolicy (const View &view, int shift=0)
template<size_t Dim, class... PolicyArgs>
RangePolicy< Dim, PolicyArgs... >::policy_type createRangePolicy (const Kokkos::Array< typename RangePolicy< Dim, PolicyArgs... >::index_type, Dim > &begin, const Kokkos::Array< typename RangePolicy< Dim, PolicyArgs... >::index_type, Dim > &end)
template<class ExecPolicy, class FunctorType>
void parallel_for (const std::string &name, const ExecPolicy &policy, const FunctorType &functor)
template<class ExecPolicy, class FunctorType, class... ReducerArgument>
void parallel_reduce (const std::string &name, const ExecPolicy &policy, const FunctorType &functor, ReducerArgument &&... reducer)

Variables

 max
 valL = max(valL, myVal)
std::greater prod
std::unique_ptr< mpi::CommunicatorComm = 0
std::unique_ptr< mpi::EnvironmentEnv = 0
std::unique_ptr< InformInfo = 0
std::unique_ptr< InformWarn = 0
std::unique_ptr< InformError = 0

Detailed Description

Implementations for FFT constructor/destructor and transforms

Typedef Documentation

◆ Element1D

template<typename T, unsigned NumVertices>
using ippl::Element1D = Element<T, 1, NumVertices>

Base class for all 1D elements.

Template Parameters
TThe type of the coordinates of the vertices of the element.
NumVerticesThe number of vertices of the element.

Definition at line 47 of file Element.h.

◆ Element2D

template<typename T, unsigned NumVertices>
using ippl::Element2D = Element<T, 2, NumVertices>

Base class for all 2D elements.

Template Parameters
TThe type of the coordinates of the vertices of the element.
NumVerticesThe number of vertices of the element.

Definition at line 55 of file Element.h.

◆ Element3D

template<typename T, unsigned NumVertices>
using ippl::Element3D = Element<T, 3, NumVertices>

Base class for all 3D elements.

Template Parameters
TThe type of the coordinates of the vertices of the element.
NumVerticesThe number of vertices of the element.

Definition at line 63 of file Element.h.

◆ TupleType

template<std::size_t Idx, typename... Ts>
using ippl::TupleType = typename TupleTypeImpl<Idx, Ts...>::type

Definition at line 349 of file Tuple.h.

Enumeration Type Documentation

◆ BC

enum ippl::BC
Enumerator
PERIODIC 
REFLECTIVE 
SINK 
NO 

Definition at line 11 of file ParticleBC.h.

◆ e_cube_tag

Enumerator
UPPER 
LOWER 
IS_PARALLEL 

Definition at line 32 of file FieldLayout.h.

◆ fdtd_bc

Enumerator
periodic 
absorbing 

Definition at line 14 of file FDTDSolverBase.h.

◆ FFTComm

Enumerator
a2av 
a2a 
p2p 
p2p_pl 

Definition at line 55 of file FFT.h.

◆ FieldBC

Enumerator
PERIODIC_FACE 
CONSTANT_FACE 
ZERO_FACE 
EXTRAPOLATE_FACE 
NO_FACE 

Definition at line 33 of file BcTypes.h.

◆ InitialGuessType

Enumerator
Chebyshev 
LehrFEM 

Definition at line 13 of file GaussJacobiQuadrature.h.

◆ TransformDirection

Enumerator
FORWARD 
BACKWARD 

Definition at line 62 of file FFT.h.

Function Documentation

◆ abort()

void ippl::abort ( const char * msg,
int errorcode )

Definition at line 107 of file Ippl.cpp.

References Comm, endl(), and Error.

Here is the call graph for this function:

◆ adapted_powermethod()

template<typename Field, typename Functor>
double ippl::adapted_powermethod ( Functor && f,
Field & x_0,
double lambda_max,
unsigned int max_iter = 5000,
double tol = 1e-3 )

Computes the smallest Eigenvalue of the Functor f (f must be symmetric positive definite)

Parameters
fFunctor
x_0initial guess
lambda_maxlargest Eigenvalue
max_itermaximum number of iterations
toltolerance

Definition at line 639 of file Preconditioner.h.

References ippl::Field< T, Dim, Mesh, Centering, ViewArgs >::deepCopy(), ippl::Field< T, Dim, Mesh, Centering, ViewArgs >::get_mesh(), ippl::BareField< T, Dim, ViewArgs >::getLayout(), and norm().

Here is the call graph for this function:

◆ apply()

template<typename View, typename Coords>
KOKKOS_INLINE_FUNCTION constexpr decltype(auto) ippl::apply ( const View & view,
const Coords & coords )
constexpr

Accesses the element of a view at the indices contained in an array-like structure instead of having the indices being separate arguments

Template Parameters
Viewthe view type
Coordsan array-like container of indices
Parameters
viewthe view to access
coordsthe indices
Returns
The element in the view at the given location

Definition at line 64 of file IpplOperations.h.

References apply_impl().

Referenced by ippl::ExtrapolateFace< Field >::apply(), ippl::PeriodicFace< Field >::apply(), ippl::detail::HaloCells< T, Dim, ViewArgs >::applyPeriodicSerialDim(), ippl::ExtrapolateFace< Field >::assignGhostToPhysical(), ippl::PeriodicFace< Field >::assignGhostToPhysical(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::computeAvg(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::computeErrorL2(), ChargedParticles< PLayout, T, Dim >::dumpBumponTail(), BumponTailInstabilityManager< T, Dim >::dumpBumponTailInstability(), ChargedParticles< PLayout, T, Dim >::dumpData(), PenningTrapManager< T, Dim >::dumpData(), ChargedParticles< PLayout, T, Dim >::dumpLandau(), LandauDampingManager< T, Dim >::dumpLandau(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateAx(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateAx_diag(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateAx_inversediag(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateAx_lift(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateAx_lower(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateAx_upper(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateAx_upperlower(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateLoadVector(), ippl::detail::meta_hess< E >::hessianEntry(), BumponTailInstabilityManager< T, Dim >::initializeParticles(), LandauDampingManager< T, Dim >::initializeParticles(), PenningTrapManager< T, Dim >::initializeParticles(), innerProduct(), main(), norm(), ippl::detail::meta_div< E >::operator()(), ippl::detail::meta_grad< E >::operator()(), ippl::detail::meta_laplace< E >::operator()(), ippl::detail::meta_lower_laplace< E >::operator()(), ippl::detail::meta_poisson< E >::operator()(), ippl::detail::meta_upper_and_lower_laplace< E >::operator()(), ippl::detail::meta_upper_laplace< E >::operator()(), second_order_abc_corner< _scalar, x0, y0, z0 >::operator()(), second_order_abc_edge< _scalar, edge_axis, normal_axis1, normal_axis2, na1_zero, na2_zero >::operator()(), second_order_abc_face< _scalar, _main_axis, _side_axes >::operator()(), ippl::BareField< T, Dim, ViewArgs >::operator=(), ippl::BareField< T, Dim, ViewArgs... >::operator=(), ippl::detail::HaloCells< T, Dim, ViewArgs >::pack(), ippl::OrthogonalRecursiveBisection< Field, Tp >::perpendicularReduction(), ippl::FFTPeriodicPoissonSolver< FieldLHS, FieldRHS >::solve(), ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::solve(), ippl::FFT< CCTransform, ComplexField >::transform(), ippl::FFT< Cos1Transform, Field >::transform(), ippl::FFT< CosTransform, Field >::transform(), ippl::FFT< RCTransform, RealField >::transform(), ippl::FFT< SineTransform, Field >::transform(), and ippl::detail::HaloCells< T, Dim, ViewArgs >::unpack().

Here is the call graph for this function:

◆ apply_impl()

template<typename View, typename Coords, size_t... Idx>
KOKKOS_INLINE_FUNCTION constexpr decltype(auto) ippl::apply_impl ( const View & view,
const Coords & coords,
const std::index_sequence< Idx... > &  )
constexpr

Utility function for apply (see its docstring)

Template Parameters
Idx...indices of the elements to take (in practice, always the sequence of natural numbers up to the dimension of the view)

Definition at line 22 of file IpplOperations.h.

Referenced by apply().

Here is the caller graph for this function:

◆ assemble_rhs_from_particles()

template<typename AttribIn, typename Field, typename PosAttrib, typename Space, typename policy_type = Kokkos::RangePolicy<typename Field::execution_space>>
void ippl::assemble_rhs_from_particles ( const AttribIn & attrib,
Field & f,
const PosAttrib & pp,
const Space & space,
policy_type iteration_policy )
inline

Assemble a P1 FEM load vector (RHS) from particle attributes.

For each particle position x, locate the owning element (ND index e_nd) and reference coordinate xi. Deposit the particle attribute value into the element's nodal DOFs using P1 Lagrange shape functions evaluated at xi.

Template Parameters
AttribInParticle attribute type with getView()(p) -> scalar
Fieldippl::Field with rank=Dim nodal coefficients (RHS)
PosAttribParticle position attribute with getView()(p) -> Vector<T,Dim>
SpaceLagrange space providing element/DOF/topology queries
policy_typeKokkos execution policy (defaults to Field::execution_space)

Definition at line 60 of file FEMInterpolate.hpp.

References ippl::BareField< T, Dim, ViewArgs >::accumulateHalo(), Dim, ippl::Field< T, Dim, Mesh_t< Dim >, Centering_t< Dim >, ViewArgs... >::dim, ippl::NDIndex< Dim >::first(), ippl::Field< T, Dim, Mesh, Centering, ViewArgs >::get_mesh(), ippl::BareField< T, Dim, ViewArgs >::getLayout(), ippl::FieldLayout< Dim >::getLocalNDIndex(), ippl::Mesh< T, Dim >::getMeshSpacing(), ippl::BareField< T, Dim, ViewArgs >::getNghost(), ippl::Mesh< T, Dim >::getOrigin(), IpplTimings::getTimer(), ippl::BareField< T, Dim, ViewArgs >::getView(), locate_element_nd_and_xi(), IpplTimings::startTimer(), IpplTimings::stopTimer(), and view_ptr().

Here is the call graph for this function:

◆ calculateNumElementVertices()

unsigned ippl::calculateNumElementVertices ( unsigned Dim)
constexpr

Definition at line 22 of file FiniteElementSpace.h.

References Dim.

◆ createRangePolicy()

template<size_t Dim, class... PolicyArgs>
RangePolicy< Dim, PolicyArgs... >::policy_type ippl::createRangePolicy ( const Kokkos::Array< typename RangePolicy< Dim, PolicyArgs... >::index_type, Dim > & begin,
const Kokkos::Array< typename RangePolicy< Dim, PolicyArgs... >::index_type, Dim > & end )

Create a range policy for an index range given in the form of arrays (required because Kokkos doesn't allow the initialization of 1D range policies using arrays)

Template Parameters
Dimthe dimension of the range
PolicyArgs...additional template parameters for the range policy
Parameters
beginthe starting indices
endthe ending indices
Returns
A (MD)RangePolicy spanning the given range

Definition at line 88 of file ParallelDispatch.h.

References Dim.

Referenced by ippl::ExtrapolateFace< Field >::apply(), ippl::PeriodicFace< Field >::apply(), ippl::detail::HaloCells< T, Dim, ViewArgs >::applyPeriodicSerialDim(), ippl::ExtrapolateFace< Field >::assignGhostToPhysical(), ippl::PeriodicFace< Field >::assignGhostToPhysical(), and ippl::OrthogonalRecursiveBisection< Field, Tp >::perpendicularReduction().

Here is the caller graph for this function:

◆ cross()

template<typename E1, size_t N1, typename E2, size_t N2>
KOKKOS_INLINE_FUNCTION detail::meta_cross< E1, E2 > ippl::cross ( const detail::Expression< E1, N1 > & u,
const detail::Expression< E2, N2 > & v )

Definition at line 246 of file IpplOperations.h.

Referenced by ippl::detail::meta_cross< E1, E2 >::operator()().

Here is the caller graph for this function:

◆ curl()

template<typename Field>
detail::meta_curl< Field > ippl::curl ( Field & u)

User interface of curl in three dimensions.

Parameters
ufield

Definition at line 81 of file FieldOperations.hpp.

References ippl::BConds< Field, Dim >::apply(), Dim, ippl::Field< T, Dim, Mesh_t< Dim >, Centering_t< Dim >, ViewArgs... >::dim, ippl::BareField< T, Dim, ViewArgs >::fillHalo(), ippl::Field< T, Dim, Mesh, Centering, ViewArgs >::get_mesh(), and ippl::Field< T, Dim, Mesh, Centering, ViewArgs >::getFieldBC().

Here is the call graph for this function:

◆ DefineParticleReduction() [1/2]

std::greater ippl::DefineParticleReduction ( Min ,
min ,
if(myVal< valL) valL = myVal,
std::less  )

References DefineParticleReduction(), if(), min(), prod, and valL.

Here is the call graph for this function:

◆ DefineParticleReduction() [2/2]

ippl::DefineParticleReduction ( Sum ,
sum ,
valL+ = myVal,
std::plus  )

References valL.

Referenced by DefineParticleReduction(), and if().

Here is the caller graph for this function:

◆ DefineReduction() [1/2]

std::greater ippl::DefineReduction ( Min ,
min ,
using Kokkos::min; valL = min(valL, myVal),
std::less  )

References DefineReduction(), min(), and valL.

Here is the call graph for this function:

◆ DefineReduction() [2/2]

ippl::DefineReduction ( Sum ,
sum ,
valL+ = myVal,
std::plus  )

References valL.

Referenced by DefineReduction().

Here is the caller graph for this function:

◆ deserializeBasicType()

template<typename T>
T ippl::deserializeBasicType ( const std::vector< char > & buffer,
size_t & offset )

Definition at line 33 of file LogEntry.h.

Referenced by ippl::LogEntry::deserialize(), and deserializeString().

Here is the caller graph for this function:

◆ deserializeString()

std::string ippl::deserializeString ( const std::vector< char > & buffer,
size_t & offset )

Definition at line 11 of file LogEntry.cpp.

References deserializeBasicType().

Referenced by ippl::LogEntry::deserialize().

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

◆ diagonal_laplace()

template<typename Field>
double ippl::diagonal_laplace ( Field & u)

Definition at line 346 of file LaplaceHelpers.h.

References Dim, ippl::Field< T, Dim, Mesh_t< Dim >, Centering_t< Dim >, ViewArgs... >::dim, and ippl::Field< T, Dim, Mesh, Centering, ViewArgs >::get_mesh().

Referenced by ippl::PoissonCG< Field< T, Dim >, Field_t< Dim > >::setSolver().

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

◆ div()

template<typename Field>
detail::meta_div< Field > ippl::div ( Field & u)

User interface of divergence in three dimensions.

Parameters
ufield

Definition at line 36 of file FieldOperations.hpp.

References ippl::BConds< Field, Dim >::apply(), Dim, ippl::Field< T, Dim, Mesh_t< Dim >, Centering_t< Dim >, ViewArgs... >::dim, ippl::BareField< T, Dim, ViewArgs >::fillHalo(), ippl::Field< T, Dim, Mesh, Centering, ViewArgs >::get_mesh(), ippl::Field< T, Dim, Mesh, Centering, ViewArgs >::getFieldBC(), and ippl::Mesh< T, Dim >::getMeshSpacing().

Here is the call graph for this function:

◆ do_intersect()

KOKKOS_INLINE_FUNCTION Index ippl::do_intersect ( const Index & a,
const Index & b )
static

Definition at line 271 of file Index.hpp.

References ippl::Index::first(), lcm(), ippl::Index::length(), ippl::Index::max(), PAssert_GE, PAssert_GT, and ippl::Index::stride().

Referenced by ippl::Index::general_intersect().

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

◆ dot()

template<typename E1, size_t N1, typename E2, size_t N2>
KOKKOS_INLINE_FUNCTION detail::meta_dot< E1, E2 > ippl::dot ( const detail::Expression< E1, N1 > & u,
const detail::Expression< E2, N2 > & v )

Definition at line 293 of file IpplOperations.h.

Referenced by ippl::detail::meta_div< E >::operator()(), ippl::detail::meta_dot< E1, E2 >::operator()(), ippl::EvalFunctor< T, Dim, numElementDOFs >::operator()(), and ippl::EvalFunctor< T, Dim, numElementDOFs >::operator()().

Here is the caller graph for this function:

◆ fence()

void ippl::fence ( )

Definition at line 103 of file Ippl.cpp.

◆ finalize()

void ippl::finalize ( )

Definition at line 94 of file Ippl.cpp.

References Comm, and Env.

Referenced by main().

Here is the caller graph for this function:

◆ gather()

template<typename Attrib1, typename Field, typename Attrib2>
void ippl::gather ( Attrib1 & attrib,
Field & f,
const Attrib2 & pp,
const bool addToAttribute = false )
inline

Non-class interface for gathering field data into a particle attribute.

This interface calls the member ParticleAttrib::gather() function with the provided parameters and preserving legacy behavior by assigning addToAttribute a default value.

Note
See ParticleAttrib::gather() for more information on the behavior of addToAttribute.
Template Parameters
Attrib1The type of the particle attribute.
FieldThe type of the field.
Attrib2The type of the particle position attribute.
Parameters
attribThe particle attribute to gather data into.
fThe field from which data is gathered.
ppThe ParticleAttrib representing particle positions.
addToAttributeIf true, the gathered field value is added to the current attribute value; otherwise, the attribute value is overwritten.

Definition at line 327 of file ParticleAttrib.hpp.

◆ get() [1/2]

template<std::size_t Idx, typename... Ts>
KOKKOS_INLINE_FUNCTION const auto & ippl::get ( const Tuple< Ts... > & t)

Accessor function to get a element const reference at a specific index from a Tuple.

Template Parameters
IdxIndex of the element to retrieve.
TsTypes of elements in the Tuple.
Parameters
tTuple from which to retrieve the element.
Returns
Reference to the specified element.

Definition at line 326 of file Tuple.h.

References get().

Here is the call graph for this function:

◆ get() [2/2]

template<std::size_t Idx, typename... Ts>
KOKKOS_INLINE_FUNCTION auto & ippl::get ( Tuple< Ts... > & t)

Accessor function to get an element mutable reference at a specific index from a Tuple.

Template Parameters
IdxIndex of the element to retrieve.
TsTypes of elements in the Tuple.
Parameters
tTuple from which to retrieve the element.
Returns
Reference to the specified element.

Definition at line 314 of file Tuple.h.

References get().

Referenced by ippl::ParticleBase< PLayout, IDProperties >::addAttribute(), ippl::ParticleBase< ippl::ParticleSpatialLayout< T, 3 > >::addAttribute(), ippl::ParticleBase< ippl::ParticleSpatialLayout< T, Dim > >::forAllAttributes(), ippl::ParticleBase< ippl::ParticleSpatialLayout< T, Dim > >::forAllAttributes(), get(), get(), ippl::TupleImpl< i, N, T, R, Ts... >::get(), ippl::TupleImpl< i, N, T, R, Ts... >::get(), ippl::ParticleBase< ippl::ParticleSpatialLayout< T, Dim > >::getAttribute(), ippl::ParticleBase< ippl::ParticleSpatialLayout< T, Dim > >::getAttributeNum(), 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(), ippl::ParticleBase< PLayout, IDProperties >::pack(), ippl::ParticleBase< PLayout, IDProperties >::sendToRank(), ippl::FFTOpenPoissonSolver< FieldLHS, FieldRHS >::setGradFD(), ippl::PoissonCG< Field< T, Dim >, Field_t< Dim > >::setSolver(), ippl::FEMPoissonSolver< FieldLHS, FieldRHS, Order, QuadNumNodes >::solve(), ippl::FFTOpenPoissonSolver< FieldLHS, FieldRHS >::solve(), ippl::FFTPeriodicPoissonSolver< FieldLHS, FieldRHS >::solve(), ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::solve(), ippl::PoissonCG< Field< T, Dim >, Field_t< Dim > >::solve(), ippl::PreconditionedFEMPoissonSolver< FieldLHS, FieldRHS >::solve(), ippl::TruncatedGreenParticleInteraction< ParticleContainer, VectorAttribute, ScalarAttribute >::solve(), and ippl::ParticleBase< PLayout, IDProperties >::unpack().

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

◆ getRangePolicy()

template<class... PolicyArgs, typename View>
RangePolicy< View::rank, typenameView::execution_space, PolicyArgs... >::policy_type ippl::getRangePolicy ( const View & view,
int shift = 0 )

Create a range policy that spans an entire Kokkos view, excluding a specifiable number of ghost cells at the extremes.

Template Parameters
Tagrange policy tag
Viewthe view type
Parameters
viewto span
shiftnumber of ghost cells
Returns
A (MD)RangePolicy that spans the desired elements of the given view

Definition at line 56 of file ParallelDispatch.h.

References Dim.

Referenced by second_order_mur_boundary_conditions::apply(), ChargedParticles< PLayout, T, Dim >::dumpBumponTail(), BumponTailInstabilityManager< T, Dim >::dumpBumponTailInstability(), ChargedParticles< PLayout, T, Dim >::dumpData(), PenningTrapManager< T, Dim >::dumpData(), ChargedParticles< PLayout, T, Dim >::dumpLandau(), LandauDampingManager< T, Dim >::dumpLandau(), ippl::BareField< T, Dim, ViewArgs... >::getFieldRangePolicy(), ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::greensFunction(), ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::initializeFields(), main(), ippl::BareField< T, Dim, ViewArgs >::operator=(), ippl::BareField< T, Dim, ViewArgs... >::operator=(), ippl::detail::HaloCells< T, Dim, ViewArgs >::pack(), ippl::FFTPeriodicPoissonSolver< FieldLHS, FieldRHS >::solve(), ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::solve(), ippl::NonStandardFDTDSolver< EMField, SourceField, boundary_conditions >::step(), ippl::StandardFDTDSolver< EMField, SourceField, boundary_conditions >::step(), ippl::FFT< CCTransform, ComplexField >::transform(), ippl::FFT< Cos1Transform, Field >::transform(), ippl::FFT< CosTransform, Field >::transform(), ippl::FFT< RCTransform, RealField >::transform(), ippl::FFT< SineTransform, Field >::transform(), and ippl::detail::HaloCells< T, Dim, ViewArgs >::unpack().

Here is the caller graph for this function:

◆ grad()

template<typename Field>
detail::meta_grad< Field > ippl::grad ( Field & u)

◆ hess()

template<typename Field>
detail::meta_hess< Field > ippl::hess ( Field & u)

User interface of Hessian in three dimensions.

Parameters
ufield

Definition at line 106 of file FieldOperations.hpp.

References ippl::BConds< Field, Dim >::apply(), Dim, ippl::Field< T, Dim, Mesh_t< Dim >, Centering_t< Dim >, ViewArgs... >::dim, ippl::BareField< T, Dim, ViewArgs >::fillHalo(), ippl::Field< T, Dim, Mesh, Centering, ViewArgs >::get_mesh(), ippl::Field< T, Dim, Mesh, Centering, ViewArgs >::getFieldBC(), and ippl::Mesh< T, Dim >::getMeshSpacing().

Referenced by ippl::FFTOpenPoissonSolver< FieldLHS, FieldRHS >::solve().

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

◆ if()

ippl::if ( myVal ,
valL  )

References DefineParticleReduction(), if(), max, and valL.

Referenced by DefineParticleReduction(), if(), and ippl::ParticleSpatialLayout< T, 3 >::ParticleSpatialLayout().

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

◆ initialize()

void ippl::initialize ( int & argc,
char * argv[],
MPI_Comm comm )

Definition at line 16 of file Ippl.cpp.

References ippl::detail::checkOption(), Comm, IpplInfo::compileOptions(), Timer::enableFences, endl(), Env, Error, ippl::detail::getNumericalOption(), Info, INFORM_ALL_NODES, IpplInfo::printHelp(), IpplInfo::printVersion(), and Warn.

Referenced by main(), ippl::FFTOpenPoissonSolver< FieldLHS, FieldRHS >::setRhs(), ippl::FFTPeriodicPoissonSolver< FieldLHS, FieldRHS >::setRhs(), and ippl::UniformCartesian< T, Dim >::UniformCartesian().

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

◆ innerProduct() [1/2]

template<typename BareField>
BareField::value_type ippl::innerProduct ( const BareField & f1,
const BareField & f2 )

Computes the inner product of two fields

Parameters
f1first field
f2second field
Returns
Result of f1^T f2

Definition at line 14 of file BareFieldOperations.hpp.

References apply(), Dim, ippl::BareField< T, Dim, ViewArgs >::dim, ippl::BareField< T, Dim, ViewArgs >::getFieldRangePolicy(), ippl::BareField< T, Dim, ViewArgs >::getLayout(), ippl::BareField< T, Dim, ViewArgs >::getView(), and parallel_reduce().

Here is the call graph for this function:

◆ innerProduct() [2/2]

template<typename T>
T ippl::innerProduct ( const FEMVector< T > & a,
const FEMVector< T > & b )

Calculate the inner product between two ippl::FEMVector(s).

Calculates the inner product \( a^T b\) between the ippl::FEMVector(s) a and b. Note that during the inner product computations the halo cells are included, if this should not be the case the hallo cells should be set to 0 using the ippl::FEMVector::setHalo() function.

Parameters
aFirst field.
bSecond field.
Returns
The value \(a^Tb\).

Definition at line 405 of file FEMVector.h.

References Comm, and ippl::FEMVector< T >::getView().

Referenced by ippl::CG< FEMVector< T >, FEMVector< T >, FEMVector< T >, FEMVector< T >, FEMVector< T >, FEMVector< T >, FEMVector< T > >::operator()(), ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, FEMVector< T >, FEMVector< T > >::operator()(), and ippl::PCG< lhs_type, lhs_type, lhs_type, lhs_type, lhs_type, FieldLHS, FieldRHS >::operator()().

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

◆ interpolate_to_diracs()

template<typename AttribOut, typename Field, typename PosAttrib, typename Space, typename policy_type = Kokkos::RangePolicy<typename Field::execution_space>>
void ippl::interpolate_to_diracs ( AttribOut & attrib_out,
const Field & coeffs,
const PosAttrib & pp,
const Space & space,
policy_type iteration_policy )
inline

Interpolate a P1 FEM field to particle positions.

For each particle position x, locate the owning element (ND index e_nd) and reference coordinate xi. Evaluate P1 Lagrange shape functions at xi to combine nodal coefficients and write u(x) to the particle attribute.

Template Parameters
AttribOutParticle attribute type with getView()(p) -> scalar
Fieldippl::Field with rank=Dim nodal coefficients
PosAttribParticle position attribute with getView()(p) -> Vector<T,Dim>
SpaceLagrange space providing element/DOF/topology queries
policy_typeKokkos execution policy (defaults to Field::execution_space)

Definition at line 156 of file FEMInterpolate.hpp.

References Dim, ippl::Field< T, Dim, Mesh_t< Dim >, Centering_t< Dim >, ViewArgs... >::dim, ippl::NDIndex< Dim >::first(), ippl::Field< T, Dim, Mesh, Centering, ViewArgs >::get_mesh(), ippl::BareField< T, Dim, ViewArgs >::getLayout(), ippl::FieldLayout< Dim >::getLocalNDIndex(), ippl::Mesh< T, Dim >::getMeshSpacing(), ippl::BareField< T, Dim, ViewArgs >::getNghost(), ippl::Mesh< T, Dim >::getOrigin(), IpplTimings::getTimer(), ippl::BareField< T, Dim, ViewArgs >::getView(), locate_element_nd_and_xi(), IpplTimings::startTimer(), and view_ref().

Here is the call graph for this function:

◆ laplace()

template<typename Field>
detail::meta_laplace< Field > ippl::laplace ( Field & u)

User interface of Laplacian

Parameters
ufield

Definition at line 60 of file FieldOperations.hpp.

References ippl::BConds< Field, Dim >::apply(), Dim, ippl::Field< T, Dim, Mesh_t< Dim >, Centering_t< Dim >, ViewArgs... >::dim, ippl::BareField< T, Dim, ViewArgs >::fillHalo(), ippl::Field< T, Dim, Mesh, Centering, ViewArgs >::get_mesh(), and ippl::Field< T, Dim, Mesh, Centering, ViewArgs >::getFieldBC().

Referenced by ippl::PoissonCG< Field< T, Dim >, Field_t< Dim > >::setSolver(), and ippl::PoissonCG< Field< T, Dim >, Field_t< Dim > >::solve().

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

◆ lcm()

KOKKOS_INLINE_FUNCTION void ippl::lcm ( int s1,
int s2,
int & s,
int & m1,
int & m2 )

Definition at line 200 of file Index.hpp.

References PAssert_GT.

Referenced by do_intersect().

Here is the caller graph for this function:

◆ locate_element_nd_and_xi()

template<typename T, unsigned Dim>
KOKKOS_INLINE_FUNCTION void ippl::locate_element_nd_and_xi ( const Vector< T, Dim > & hr,
const Vector< T, Dim > & origin,
const Vector< T, Dim > & x,
Vector< size_t, Dim > & e_nd,
Vector< T, Dim > & xi )

Mapping from global position to element ND index and reference coordinates (xi ∈ [0,1)^Dim) on a UniformCartesian mesh.

Assumes the input x is strictly inside the computational domain so that for each dimension d: 0 ≤ (x[d]-origin[d])/h[d] < nr[d]-1.

Definition at line 16 of file FEMInterpolate.hpp.

References Dim.

Referenced by assemble_rhs_from_particles(), and interpolate_to_diracs().

Here is the caller graph for this function:

◆ lower_laplace()

template<typename Field>
detail::meta_lower_laplace< Field > ippl::lower_laplace ( Field & u)

User interface of lower triangular Laplacian

Parameters
ufield

Definition at line 222 of file LaplaceHelpers.h.

References ippl::BConds< Field, Dim >::apply(), Dim, ippl::Field< T, Dim, Mesh_t< Dim >, Centering_t< Dim >, ViewArgs... >::dim, ippl::BareField< T, Dim, ViewArgs >::fillHalo(), ippl::Field< T, Dim, Mesh, Centering, ViewArgs >::getFieldBC(), and lower_laplace_no_comm().

Referenced by ippl::PoissonCG< Field< T, Dim >, Field_t< Dim > >::setSolver().

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

◆ lower_laplace_no_comm()

template<typename Field>
detail::meta_lower_laplace< Field > ippl::lower_laplace_no_comm ( Field & u)

User interface of lower triangular Laplacian without exchange of halo cells

Parameters
ufield

Definition at line 237 of file LaplaceHelpers.h.

References Dim, ippl::Field< T, Dim, Mesh_t< Dim >, Centering_t< Dim >, ViewArgs... >::dim, ippl::Field< T, Dim, Mesh, Centering, ViewArgs >::get_mesh(), ippl::BareField< T, Dim, ViewArgs >::getLayout(), and ippl::BareField< T, Dim, ViewArgs >::getNghost().

Referenced by lower_laplace(), and ippl::PoissonCG< Field< T, Dim >, Field_t< Dim > >::setSolver().

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

◆ makeTuple()

template<typename... Ts>
KOKKOS_INLINE_FUNCTION Tuple< Ts... > ippl::makeTuple ( Ts &&... args)

Function to create a Tuple with specified elements.

Template Parameters
TsTypes of elements in the Tuple.
Parameters
argsElements to initialize the Tuple.
Returns
Newly created Tuple.

Definition at line 337 of file Tuple.h.

◆ max()

template<typename T, unsigned Dim>
KOKKOS_INLINE_FUNCTION Vector< T, Dim > ippl::max ( const Vector< T, Dim > & a,
const Vector< T, Dim > & b )

Definition at line 226 of file Vector.hpp.

References Dim, and max.

◆ min()

template<typename T, unsigned Dim>
KOKKOS_INLINE_FUNCTION Vector< T, Dim > ippl::min ( const Vector< T, Dim > & a,
const Vector< T, Dim > & b )

◆ mult()

template<typename Field>
void ippl::mult ( Field & u,
const double c )

Definition at line 360 of file LaplaceHelpers.h.

References ippl::BareField< T, Dim, ViewArgs >::getFieldRangePolicy(), and ippl::BareField< T, Dim, ViewArgs >::getView().

Here is the call graph for this function:

◆ negative_inverse_diagonal_laplace()

template<typename Field>
double ippl::negative_inverse_diagonal_laplace ( Field & u)

Returns the factor by which to multiply the u field to get the inverse of the diagonal of the Laplacian.

Parameters
ufield

Definition at line 329 of file LaplaceHelpers.h.

References Dim, ippl::Field< T, Dim, Mesh_t< Dim >, Centering_t< Dim >, ViewArgs... >::dim, and ippl::Field< T, Dim, Mesh, Centering, ViewArgs >::get_mesh().

Referenced by ippl::PoissonCG< Field< T, Dim >, Field_t< Dim > >::setSolver().

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

◆ norm() [1/2]

template<typename BareField>
BareField::value_type ippl::norm ( const BareField & field,
int p = 2 )

Computes the Lp-norm of a field

Parameters
fieldfield
pdesired norm (default 2)
Returns
The desired norm of the field

Definition at line 42 of file BareFieldOperations.hpp.

References apply(), Dim, ippl::BareField< T, Dim, ViewArgs >::dim, ippl::BareField< T, Dim, ViewArgs >::getFieldRangePolicy(), ippl::BareField< T, Dim, ViewArgs >::getLayout(), ippl::BareField< T, Dim, ViewArgs >::getView(), and parallel_reduce().

Here is the call graph for this function:

◆ norm() [2/2]

template<typename T>
T ippl::norm ( const FEMVector< T > & v,
int p = 2 )

Definition at line 425 of file FEMVector.h.

References Comm, and ippl::FEMVector< T >::getView().

Referenced by adapted_powermethod(), ippl::CG< FEMVector< T >, FEMVector< T >, FEMVector< T >, FEMVector< T >, FEMVector< T >, FEMVector< T >, FEMVector< T > >::operator()(), ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, FEMVector< T >, FEMVector< T > >::operator()(), and powermethod().

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

◆ operator!=()

template<unsigned Dim>
bool ippl::operator!= ( const NDIndex< Dim > & nd1,
const NDIndex< Dim > & nd2 )

Definition at line 218 of file NDIndex.hpp.

◆ operator*() [1/2]

KOKKOS_INLINE_FUNCTION Index ippl::operator* ( const Index & i,
int m )

Definition at line 134 of file Index.hpp.

◆ operator*() [2/2]

KOKKOS_INLINE_FUNCTION Index ippl::operator* ( int m,
const Index & i )

Definition at line 138 of file Index.hpp.

◆ operator+() [1/2]

KOKKOS_INLINE_FUNCTION Index ippl::operator+ ( const Index & i,
int off )

Definition at line 114 of file Index.hpp.

◆ operator+() [2/2]

KOKKOS_INLINE_FUNCTION Index ippl::operator+ ( int off,
const Index & i )

Definition at line 118 of file Index.hpp.

◆ operator-() [1/3]

KOKKOS_INLINE_FUNCTION Index ippl::operator- ( const Index & i)

Definition at line 130 of file Index.hpp.

◆ operator-() [2/3]

KOKKOS_INLINE_FUNCTION Index ippl::operator- ( const Index & i,
int off )

Definition at line 122 of file Index.hpp.

◆ operator-() [3/3]

KOKKOS_INLINE_FUNCTION Index ippl::operator- ( int off,
const Index & i )

Definition at line 126 of file Index.hpp.

◆ operator/()

KOKKOS_INLINE_FUNCTION Index ippl::operator/ ( const Index & i,
int d )

Definition at line 142 of file Index.hpp.

◆ operator<<() [1/7]

template<unsigned Dim>
std::ostream & ippl::operator<< ( std::ostream & out,
const FieldLayout< Dim > & f )
inline

Definition at line 396 of file FieldLayout.h.

References ippl::FieldLayout< Dim >::write().

Here is the call graph for this function:

◆ operator<<() [2/7]

template<typename Field, unsigned Dim>
std::ostream & ippl::operator<< ( std::ostream & os,
const BConds< Field, Dim > & bc )
inline

Definition at line 49 of file BConds.h.

References ippl::BConds< Field, Dim >::write().

Here is the call graph for this function:

◆ operator<<() [3/7]

std::ostream & ippl::operator<< ( std::ostream & out,
const Index & I )
inline

Definition at line 255 of file Index.h.

References ippl::Index::first(), ippl::Index::last(), and ippl::Index::stride().

Here is the call graph for this function:

◆ operator<<() [4/7]

template<unsigned Dim>
std::ostream & ippl::operator<< ( std::ostream & out,
const NDIndex< Dim > & idx )
inline

Definition at line 61 of file NDIndex.hpp.

References Dim.

◆ operator<<() [5/7]

template<typename T, unsigned Dim>
std::ostream & ippl::operator<< ( std::ostream & out,
const NDRegion< T, Dim > & idx )
inline

Definition at line 95 of file NDRegion.hpp.

References Dim.

◆ operator<<() [6/7]

template<typename T>
std::ostream & ippl::operator<< ( std::ostream & out,
const PRegion< T > & r )
inline

Definition at line 102 of file PRegion.hpp.

References ippl::PRegion< T >::max(), and ippl::PRegion< T >::min().

Here is the call graph for this function:

◆ operator<<() [7/7]

template<typename T, unsigned Dim>
std::ostream & ippl::operator<< ( std::ostream & out,
const Vector< T, Dim > & v )
inline

Definition at line 202 of file Vector.hpp.

References Dim.

◆ operator==()

template<unsigned Dim>
bool ippl::operator== ( const NDIndex< Dim > & nd1,
const NDIndex< Dim > & nd2 )

Definition at line 208 of file NDIndex.hpp.

References Dim.

◆ parallel_for()

template<class ExecPolicy, class FunctorType>
void ippl::parallel_for ( const std::string & name,
const ExecPolicy & policy,
const FunctorType & functor )

Definition at line 215 of file ParallelDispatch.h.

References ippl::detail::functorize().

Referenced by ippl::ExtrapolateFace< Field >::apply(), ippl::PeriodicFace< Field >::apply(), ippl::detail::HaloCells< T, Dim, ViewArgs >::applyPeriodicSerialDim(), ippl::ExtrapolateFace< Field >::assignGhostToPhysical(), ippl::PeriodicFace< Field >::assignGhostToPhysical(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateAx_inversediag(), BumponTailInstabilityManager< T, Dim >::initializeParticles(), LandauDampingManager< T, Dim >::initializeParticles(), PenningTrapManager< T, Dim >::initializeParticles(), main(), ippl::BareField< T, Dim, ViewArgs >::operator=(), ippl::BareField< T, Dim, ViewArgs... >::operator=(), ippl::detail::HaloCells< T, Dim, ViewArgs >::pack(), ippl::FFTPeriodicPoissonSolver< FieldLHS, FieldRHS >::solve(), ippl::FFTTruncatedGreenPeriodicPoissonSolver< FieldLHS, FieldRHS >::solve(), ippl::FFT< CCTransform, ComplexField >::transform(), ippl::FFT< Cos1Transform, Field >::transform(), ippl::FFT< CosTransform, Field >::transform(), ippl::FFT< RCTransform, RealField >::transform(), ippl::FFT< SineTransform, Field >::transform(), and ippl::detail::HaloCells< T, Dim, ViewArgs >::unpack().

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

◆ parallel_reduce()

template<class ExecPolicy, class FunctorType, class... ReducerArgument>
void ippl::parallel_reduce ( const std::string & name,
const ExecPolicy & policy,
const FunctorType & functor,
ReducerArgument &&... reducer )

Definition at line 221 of file ParallelDispatch.h.

References ippl::detail::functorize(), and ippl::detail::REDUCE.

Referenced by ChargedParticles< PLayout, T, Dim >::dumpBumponTail(), BumponTailInstabilityManager< T, Dim >::dumpBumponTailInstability(), ChargedParticles< PLayout, T, Dim >::dumpData(), PenningTrapManager< T, Dim >::dumpData(), ChargedParticles< PLayout, T, Dim >::dumpLandau(), LandauDampingManager< T, Dim >::dumpLandau(), innerProduct(), norm(), and ippl::OrthogonalRecursiveBisection< Field, Tp >::perpendicularReduction().

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

◆ poisson()

template<typename Field>
detail::meta_poisson< Field > ippl::poisson ( Field & u)

User interface of poisson

Parameters
ufield

Definition at line 207 of file LaplaceHelpers.h.

References ippl::BConds< Field, Dim >::apply(), Dim, ippl::Field< T, Dim, Mesh_t< Dim >, Centering_t< Dim >, ViewArgs... >::dim, ippl::BareField< T, Dim, ViewArgs >::fillHalo(), and ippl::Field< T, Dim, Mesh, Centering, ViewArgs >::getFieldBC().

Here is the call graph for this function:

◆ powermethod()

template<typename Field, typename Functor>
double ippl::powermethod ( Functor && f,
Field & x_0,
unsigned int max_iter = 5000,
double tol = 1e-3 )

Computes the largest Eigenvalue of the Functor f

Parameters
fFunctor
x_0initial guess
max_itermaximum number of iterations
toltolerance

Definition at line 604 of file Preconditioner.h.

References ippl::Field< T, Dim, Mesh, Centering, ViewArgs >::deepCopy(), ippl::Field< T, Dim, Mesh, Centering, ViewArgs >::get_mesh(), ippl::BareField< T, Dim, ViewArgs >::getLayout(), and norm().

Here is the call graph for this function:

◆ scatter() [1/2]

template<typename Attrib1, typename Field, typename Attrib2, typename policy_type = Kokkos::RangePolicy<typename Field::execution_space>>
void ippl::scatter ( const Attrib1 & attrib,
Field & f,
const Attrib2 & pp )
inline

Non-class interface for scattering particle attribute data onto a field.

This overload preserves legacy functionality by providing a default iteration policy. It calls the member scatter() with a default Kokkos::RangePolicy.

Note
The default behaviour is to scatter all particles without any custom index mapping.
Template Parameters
Attrib1The type of the particle attribute.
FieldThe type of the field.
Attrib2The type of the particle position attribute.
policy_type(Default: Kokkos::RangePolicy<typename Field::execution_space>)
Parameters
attribThe particle attribute to scatter.
fThe field onto which the data is scattered.
ppThe ParticleAttrib representing particle positions.

Definition at line 280 of file ParticleAttrib.hpp.

◆ scatter() [2/2]

template<typename Attrib1, typename Field, typename Attrib2, typename policy_type = Kokkos::RangePolicy<typename Field::execution_space>>
void ippl::scatter ( const Attrib1 & attrib,
Field & f,
const Attrib2 & pp,
policy_type iteration_policy,
typename Attrib1::hash_type hash_array = {} )
inline

Non-class interface for scattering with a custom iteration policy and optional index array.

This overload allows the caller to specify a custom Kokkos::range_policy and an optional ippl::hash_type array. It forwards the parameters to the member scatter() function.

Note
See ParticleAttrib::scatter() for more information on the custom iteration functionality.
Template Parameters
Attrib1The type of the particle attribute.
FieldThe type of the field.
Attrib2The type of the particle position attribute.
policy_type(Default: Kokkos::RangePolicy<typename Field::execution_space>)
Parameters
attribThe particle attribute to scatter.
fThe field onto which the data is scattered.
ppThe ParticleAttrib representing particle positions.
iteration_policyA custom Kokkos::range_policy defining the iteration range.
hash_arrayAn optional ippl::hash_type array for index mapping.

Definition at line 304 of file ParticleAttrib.hpp.

◆ serializeBasicType()

template<typename T>
void ippl::serializeBasicType ( std::vector< char > & buffer,
const T & value )

Definition at line 26 of file LogEntry.h.

Referenced by ippl::LogEntry::serialize(), and serializeString().

Here is the caller graph for this function:

◆ serializeString()

void ippl::serializeString ( std::vector< char > & buffer,
const std::string & str )

Definition at line 5 of file LogEntry.cpp.

References serializeBasicType().

Referenced by ippl::LogEntry::serialize().

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

◆ upper_and_lower_laplace()

template<typename Field>
detail::meta_upper_and_lower_laplace< Field > ippl::upper_and_lower_laplace ( Field & u)

User interface of upper+lower triangular Laplacian

Parameters
ufield

Definition at line 294 of file LaplaceHelpers.h.

References ippl::BConds< Field, Dim >::apply(), Dim, ippl::Field< T, Dim, Mesh_t< Dim >, Centering_t< Dim >, ViewArgs... >::dim, ippl::BareField< T, Dim, ViewArgs >::fillHalo(), ippl::Field< T, Dim, Mesh, Centering, ViewArgs >::getFieldBC(), and upper_and_lower_laplace_no_comm().

Referenced by ippl::PoissonCG< Field< T, Dim >, Field_t< Dim > >::setSolver().

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

◆ upper_and_lower_laplace_no_comm()

template<typename Field>
detail::meta_upper_and_lower_laplace< Field > ippl::upper_and_lower_laplace_no_comm ( Field & u)

User interface of upper+lower triangular Laplacian without exchange of halo cells

Parameters
ufield

Definition at line 309 of file LaplaceHelpers.h.

References Dim, ippl::Field< T, Dim, Mesh_t< Dim >, Centering_t< Dim >, ViewArgs... >::dim, and ippl::Field< T, Dim, Mesh, Centering, ViewArgs >::get_mesh().

Referenced by ippl::PoissonCG< Field< T, Dim >, Field_t< Dim > >::setSolver(), and upper_and_lower_laplace().

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

◆ upper_laplace()

template<typename Field>
detail::meta_upper_laplace< Field > ippl::upper_laplace ( Field & u)

User interface of upper triangular Laplacian

Parameters
ufield

Definition at line 258 of file LaplaceHelpers.h.

References ippl::BConds< Field, Dim >::apply(), Dim, ippl::Field< T, Dim, Mesh_t< Dim >, Centering_t< Dim >, ViewArgs... >::dim, ippl::BareField< T, Dim, ViewArgs >::fillHalo(), ippl::Field< T, Dim, Mesh, Centering, ViewArgs >::getFieldBC(), and upper_laplace_no_comm().

Referenced by ippl::PoissonCG< Field< T, Dim >, Field_t< Dim > >::setSolver().

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

◆ upper_laplace_no_comm()

template<typename Field>
detail::meta_upper_laplace< Field > ippl::upper_laplace_no_comm ( Field & u)

User interface of upper triangular Laplacian without exchange of halo cells

Parameters
ufield

Definition at line 273 of file LaplaceHelpers.h.

References Dim, ippl::Field< T, Dim, Mesh_t< Dim >, Centering_t< Dim >, ViewArgs... >::dim, ippl::Field< T, Dim, Mesh, Centering, ViewArgs >::get_mesh(), ippl::BareField< T, Dim, ViewArgs >::getLayout(), and ippl::BareField< T, Dim, ViewArgs >::getNghost().

Referenced by ippl::PoissonCG< Field< T, Dim >, Field_t< Dim > >::setSolver(), and upper_laplace().

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

◆ view_ptr()

template<int D, class View, class IVec>
KOKKOS_INLINE_FUNCTION auto ippl::view_ptr ( View & v,
const IVec & I ) -> decltype(view_ptr_impl(v, I, std::make_index_sequence< D >{}))

Definition at line 40 of file FEMInterpolate.hpp.

Referenced by assemble_rhs_from_particles().

Here is the caller graph for this function:

◆ view_ptr_impl()

template<class View, class IVec, std::size_t... Is>
KOKKOS_INLINE_FUNCTION auto ippl::view_ptr_impl ( View & v,
const IVec & I,
std::index_sequence< Is... >  ) -> decltype(&v(I[Is]...))

Definition at line 33 of file FEMInterpolate.hpp.

◆ view_ref()

template<int D, class View, class IVec>
KOKKOS_INLINE_FUNCTION decltype(auto) ippl::view_ref ( View & v,
const IVec & I )

Definition at line 137 of file FEMInterpolate.hpp.

References view_ref_impl().

Referenced by interpolate_to_diracs().

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

◆ view_ref_impl()

template<class View, class IVec, std::size_t... Is>
KOKKOS_INLINE_FUNCTION decltype(auto) ippl::view_ref_impl ( View & v,
const IVec & I,
std::index_sequence< Is... >  )

Definition at line 131 of file FEMInterpolate.hpp.

Referenced by view_ref().

Here is the caller graph for this function:

Variable Documentation

◆ Comm

std::unique_ptr<mpi::Communicator> ippl::Comm = 0
inline

Definition at line 22 of file Ippl.h.

Referenced by abort(), ippl::FEMVector< T >::accumulateHalo(), ippl::ParticleBase< ippl::ParticleSpatialLayout< T, 3 > >::addAttribute(), ChargedParticles< PLayout, T, Dim >::balance(), LoadBalancer< T, Dim >::balance(), ippl::ParticleSpatialOverlapLayout< T, Dim, Mesh, PositionProperties >::buildCells(), checkSignalHandler(), ippl::FFTOpenPoissonSolver< FieldLHS, FieldRHS >::communicateVico(), ippl::FFTOpenPoissonSolver< FieldLHS, FieldRHS >::communicateVico(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::computeAvg(), ippl::NedelecSpace< T, Dim, Order, ElementType, QuadratureType, FieldType >::computeError(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::computeErrorL2(), ippl::ParticleAttrib< T, Properties >::create(), ippl::ParticleAttrib< ippl::Vector< double, 2 > >::create(), ippl::ParticleBase< PLayout, IDProperties >::create(), ippl::NedelecSpace< T, Dim, Order, ElementType, QuadratureType, FieldType >::createFEMVector2d(), ippl::NedelecSpace< T, Dim, Order, ElementType, QuadratureType, FieldType >::createFEMVector3d(), ippl::ParticleBase< PLayout, IDProperties >::destroy(), Inform::display_single_line(), BumponTailInstabilityManager< T, Dim >::PhaseDump::dump(), ChargedParticles< PLayout, T, Dim >::dumpBumponTail(), BumponTailInstabilityManager< T, Dim >::dumpBumponTailInstability(), ChargedParticles< PLayout, T, Dim >::dumpData(), PenningTrapManager< T, Dim >::dumpData(), ChargedParticles< PLayout, T, Dim >::dumpLandau(), LandauDampingManager< T, Dim >::dumpLandau(), ChargedParticles< PLayout, T, Dim >::dumpLocalDomains(), ChargedParticles< PLayout, T, Dim >::dumpParticleData(), ippl::detail::HaloCells< T, Dim, ViewArgs >::exchangeBoundaries(), ippl::FEMVector< T >::fillHalo(), finalize(), ChargedParticles< PLayout, T, Dim >::gatherStatistics(), ippl::ParticleSpatialOverlapLayout< T, Dim, Mesh, PositionProperties >::getNonNeighborRanks(), ippl::ParticleSpatialOverlapLayout< T, Dim, Mesh, PositionProperties >::getParticleNeighborData(), ippl::ParticleBase< PLayout, IDProperties >::globalCreate(), ippl::FFTOpenPoissonSolver< FieldLHS, FieldRHS >::greensFunction(), Inform::Inform(), BumponTailInstabilityManager< T, Dim >::PhaseDump::initialize(), initialize(), ippl::ParticleSpatialOverlapLayout< T, Dim, Mesh, PositionProperties >::initializeCells(), BumponTailInstabilityManager< T, Dim >::initializeParticles(), LandauDampingManager< T, Dim >::initializeParticles(), PenningTrapManager< T, Dim >::initializeParticles(), innerProduct(), ippl::random::InverseTransformSampling< T, Dim, DeviceType, Distribution >::InverseTransformSampling(), PenningTrapManager< T, Dim >::LeapFrogStep(), ippl::ParticleSpatialLayout< T, Dim, Mesh, PositionProperties... >::locateParticles(), ippl::ParticleSpatialOverlapLayout< T, Dim, Mesh, PositionProperties >::locateParticles(), main(), norm(), ippl::ParticleSpatialLayout< T, 3 >::numberOfSends(), ippl::ParticleAttrib< ippl::Vector< double, 2 > >::operator=(), ippl::detail::HaloCells< T, Dim, ViewArgs >::pack(), ippl::FEMVector< T >::pack(), pack(), ippl::ParticleBase< PLayout, IDProperties >::ParticleBase(), ippl::ParticleBase< ippl::ParticleSpatialLayout< T, 3 > >::ParticleBase(), ippl::ParticleSpatialOverlapLayout< T, Dim, Mesh, PositionProperties >::particleExchange(), ippl::ParticleSpatialLayout< T, 3 >::ParticleSpatialLayout(), BumponTailInstabilityManager< T, Dim >::pre_run(), Timing::print(), Timing::print(), ippl::ParticleBase< PLayout, IDProperties >::recvFromRank(), ChargedParticles< PLayout, T, Dim >::runSolver(), FieldSolver< T, Dim >::runSolver(), AlpineManager< T, Dim >::scatterCIC(), ChargedParticles< PLayout, T, Dim >::scatterCIC(), setSignalHandler(), ippl::FFTBase< Field, FFT, Backend, BufferType >::setup(), ippl::FFTOpenPoissonSolver< FieldLHS, FieldRHS >::solve(), solver_recv(), solver_send(), ippl::FEMVector< T >::unpack(), ippl::ParticleAttrib< ippl::Vector< double, 2 > >::unpack(), ippl::ParticleSpatialLayout< T, Dim, Mesh, PositionProperties >::update(), ippl::random::InverseTransformSampling< T, Dim, DeviceType, Distribution >::updateBounds(), and ippl::detail::RegionLayout< T, Dim, Mesh, Properties >::write().

◆ Env

std::unique_ptr<mpi::Environment> ippl::Env = 0
inline

Definition at line 24 of file Ippl.h.

Referenced by finalize(), and initialize().

◆ Error

std::unique_ptr<Inform> ippl::Error = 0
inline

Definition at line 31 of file Ippl.h.

Referenced by abort(), and initialize().

◆ Info

std::unique_ptr<Inform> ippl::Info = 0
inline

Definition at line 29 of file Ippl.h.

Referenced by initialize(), and Inform::setup().

◆ max

◆ prod

std::greater ippl::prod

Definition at line 227 of file BareField.hpp.

Referenced by DefineParticleReduction().

◆ valL

ippl::valL = max(valL, myVal)

◆ Warn

std::unique_ptr<Inform> ippl::Warn = 0
inline

Definition at line 30 of file Ippl.h.

Referenced by initialize().