2#ifndef OPAL_PARTICLE_CONTAINER_H
3#define OPAL_PARTICLE_CONTAINER_H
7#include "Manager/BaseManager.h"
17template <
typename T,
unsigned Dim = 3>
19 using Base = ippl::ParticleBase<ippl::ParticleSpatialLayout<T, Dim>>;
27 ippl::ParticleAttrib<double>
Q;
30 ippl::ParticleAttrib<double>
M;
33 ippl::ParticleAttrib<double>
dt;
36 ippl::ParticleAttrib<double>
Phi;
39 ippl::ParticleAttrib<bin_index_type>
Bin;
42 ippl::ParticleAttrib<short>
Sp;
45 typename Base::particle_position_type
P;
48 typename Base::particle_position_type
E;
54 typename Base::particle_position_type
B;
57 this->initialize(
pl_m);
67 this->addAttribute(
Q);
68 this->addAttribute(
M);
69 this->addAttribute(
dt);
70 this->addAttribute(
Phi);
71 this->addAttribute(
Bin);
72 this->addAttribute(
Sp);
73 this->addAttribute(
P);
74 this->addAttribute(
E);
76 this->addAttribute(
B);
88 size_t Np = this->getTotalNum();
89 Np = (Np == 0) ? 1 : Np;
91 size_t Nlocal = this->getLocalNum();
92 distMoments_m.computeMoments(this->R.getView(), this->P.getView(), this->M.getView(), Np, Nlocal);
116 size_t Nlocal = this->getLocalNum();
117 distMoments_m.computeMinMaxPosition(this->R.getView(), Nlocal);
185 size_t Np = this->getTotalNum();
186 Np = (Np == 0) ? 1 : Np;
188 size_t Nlocal = this->getLocalNum();
189 distMoments_m.computeDebyeLength(this->R.getView(), this->P.getView(), Np, Nlocal, density);
195 this->setParticleBC(ippl::BC::PERIODIC);
ippl::FieldLayout< Dim > FieldLayout_t
ippl::UniformCartesian< double, 3 > Mesh_t
boost::numeric::ublas::matrix< double > matrix_t
ippl::Vector< T, Dim > Vector_t
typename ippl::ParticleSpatialLayout< T, Dim, Mesh_t< Dim > > PLayout_t
ippl::detail::size_type size_type
ippl::ParticleAttrib< T > ParticleAttrib
Vector_t< double, 3 > getMeanP() const
Vector_t< double, 6 > getMeans() const
Vector_t< double, 3 > getMaxR() const
ippl::ParticleAttrib< double > M
double getMeanGammaZ() const
ippl::ParticleAttrib< double > dt
double getPlasmaParameter() const
ippl::ParticleAttrib< double > Phi
Vector_t< double, 3 > getRmsP() const
Vector_t< double, 3 > getMinR() const
Vector_t< double, 3 > getRmsRP() const
Base::particle_position_type B
ippl::ParticleAttrib< double > Q
double computeDebyeLength(double density)
Vector_t< double, 6 > getCentroid() const
Vector_t< double, 3 > getNormEmit() const
matrix_t getCovMatrix() const
double getMeanKineticEnergy() const
PLayout_t< double, Dim > pl_m
ippl::ParticleAttrib< bin_index_type > Bin
Vector_t< double, 3 > getMeanR() const
Vector_t< double, 3 > getRmsR() const
ippl::ParticleBase< ippl::ParticleSpatialLayout< double, Dim > > Base
Base::particle_position_type E
Base::particle_position_type P
double getTemperature() const
double getStdKineticEnergy() const
ippl::ParticleAttrib< short > Sp
ParticleContainer(Mesh_t< Dim > &mesh, FieldLayout_t< Dim > &FL)
DistributionMoments distMoments_m
double getDebyeLength() const
PLayout_t< T, Dim > & getPL()
void registerAttributes()