|
OPAL (Object Oriented Parallel Accelerator Library)
2024.1
OPAL
|
#include <AmrPartBunch.h>


Public Types | |
| typedef AmrParticle_t | pbase_t |
Public Types inherited from PartBunchBase< double, 3 > | |
| enum | UnitState_t |
| typedef AbstractParticle < double, Dim >::ParticlePos_t | ParticlePos_t |
| typedef AbstractParticle < double, Dim > ::ParticleIndex_t | ParticleIndex_t |
| typedef AbstractParticle < double, Dim >::UpdateFlags | UpdateFlags_t |
| typedef AbstractParticle < double, Dim >::Position_t | Position_t |
| typedef std::pair< Vector_t, Vector_t > | VectorPair_t |
Public Member Functions | |
| AmrPartBunch (const PartData *ref) | |
| AmrPartBunch (const PartData *ref, pbase_t *pbase_p) | |
| ~AmrPartBunch () | |
| pbase_t * | getAmrParticleBase () |
| const pbase_t * | getAmrParticleBase () const |
| void | initialize (FieldLayout_t *fLayout) |
| void | do_binaryRepart () |
| Vector_t | get_hr () const |
| void | set_meshEnlargement (double dh) |
| VectorPair_t | getEExtrema () |
| double | getRho (int x, int y, int z) |
| FieldLayout_t & | getFieldLayout () |
| void | boundp () |
| void | computeSelfFields () |
| void | computeSelfFields (int bin) |
| void | computeSelfFields_cycl (double gamma) |
| void | computeSelfFields_cycl (int bin) |
| void | setSolver (FieldSolver *fs) |
| virtual void | setBinCharge (int, double) |
| Set the charge of one bin to the value of q and all other to zero. More... | |
| virtual void | setBinCharge (int) |
| Set the charge of all other the ones in bin to zero. More... | |
| const AmrObject * | getAmrObject () const |
| PoissonSolver * | getFieldSolver () |
| const PoissonSolver * | getFieldSolver () const |
| void | setBaseLevelMeshSpacing (const Vector_t &hr) |
| void | setAmrDomainRatio (const std::vector< double > &ratio) |
| void | gatherLevelStatistics () |
| const size_t & | getLevelStatistics (int l) const |
| void | updateLorentzFactor (int bin=0) |
| void | updateLorentzFactor (double gamma) |
| void | setBCAllPeriodic () |
| void | setBCAllOpen () |
| void | setBCForDCBeam () |
Public Member Functions inherited from PartBunchBase< double, 3 > | |
| virtual | ~PartBunchBase () |
| PartBunchBase (AbstractParticle< double, Dim > *pb, const PartData *ref) | |
| PartBunchBase (const PartBunchBase &rhs)=delete | |
| bool | getIfBeamEmitting () |
| int | getLastEmittedEnergyBin () |
| size_t | getNumberOfEmissionSteps () |
| int | getNumberOfEnergyBins () |
| void | Rebin () |
| void | setEnergyBins (int numberOfEnergyBins) |
| bool | weHaveEnergyBins () |
| void | switchToUnitlessPositions (bool use_dt_per_particle=false) |
| void | switchOffUnitlessPositions (bool use_dt_per_particle=false) |
| void | setDistribution (Distribution *d, std::vector< Distribution * > addedDistributions, size_t &np) |
| void | setDistribution (Distribution *d, size_t numberOfParticles, double current, const Beamline &bl) |
| bool | isGridFixed () const |
| bool | hasBinning () const |
| void | setTEmission (double t) |
| double | getTEmission () |
| bool | doEmission () |
| bool | weHaveBins () const |
| void | setPBins (PartBins *pbin) |
| void | setPBins (PartBinsCyc *pbin) |
| size_t | emitParticles (double eZ) |
| Emit particles in the given bin i.e. copy the particles from the bin structure into the particle container. More... | |
| void | updateNumTotal () |
| void | rebin () |
| int | getLastemittedBin () |
| void | setLocalBinCount (size_t num, int bin) |
| void | calcGammas () |
| Compute the gammas of all bins. More... | |
| void | calcGammas_cycl () |
| void | calcDebyeLength () |
| Compute the (global) Debye length for the beam. More... | |
| double | getBinGamma (int bin) |
| Get gamma of one bin. More... | |
| size_t | calcNumPartsOutside (Vector_t x) |
| returns the number of particles outside of a box defined by x More... | |
| void | calcLineDensity (unsigned int nBins, std::vector< double > &lineDensity, std::pair< double, double > &meshInfo) |
| void | setBeamFrequency (double v) |
| void | boundp_destroyCycl () |
| size_t | boundp_destroyT () |
| size_t | destroyT () |
| virtual double | getPx (int i) |
| virtual double | getPy (int i) |
| virtual double | getPz (int i) |
| virtual double | getPx0 (int i) |
| virtual double | getPy0 (int i) |
| virtual double | getX (int i) |
| virtual double | getY (int i) |
| virtual double | getZ (int i) |
| virtual double | getX0 (int i) |
| virtual double | getY0 (int i) |
| virtual void | setZ (int i, double zcoo) |
| void | get_bounds (Vector_t &rmin, Vector_t &rmax) const |
| void | getLocalBounds (Vector_t &rmin, Vector_t &rmax) const |
| std::pair< Vector_t, double > | getBoundingSphere () |
| std::pair< Vector_t, double > | getLocalBoundingSphere () |
| void | push_back (OpalParticle const &p) |
| void | setParticle (FVector< double, 6 > z, int ii) |
| void | setParticle (OpalParticle const &p, int ii) |
| OpalParticle | getParticle (int ii) |
| ConstIterator | begin () const |
| ConstIterator | end () const |
| void | maximumAmplitudes (const FMatrix< double, 6, 6 > &D, double &axmax, double &aymax) |
| Return maximum amplitudes. More... | |
| void | setdT (double dt) |
| double | getdT () const |
| void | setT (double t) |
| void | incrementT () |
| double | getT () const |
| double | get_sPos () const |
| void | set_sPos (double s) |
| double | get_gamma () const |
| double | get_meanKineticEnergy () const |
| double | get_temperature () const |
| double | get_debyeLength () const |
| double | get_plasmaParameter () const |
| double | get_rmsDensity () const |
| Vector_t | get_origin () const |
| Vector_t | get_maxExtent () const |
| Vector_t | get_centroid () const |
| Vector_t | get_rrms () const |
| Vector_t | get_rprms () const |
| Vector_t | get_rmean () const |
| Vector_t | get_prms () const |
| Vector_t | get_pmean () const |
| Vector_t | get_pmean_Distribution () const |
| Vector_t | get_emit () const |
| Vector_t | get_norm_emit () const |
| Vector_t | get_halo () const |
| Vector_t | get_68Percentile () const |
| Vector_t | get_95Percentile () const |
| Vector_t | get_99Percentile () const |
| Vector_t | get_99_99Percentile () const |
| Vector_t | get_normalizedEps_68Percentile () const |
| Vector_t | get_normalizedEps_95Percentile () const |
| Vector_t | get_normalizedEps_99Percentile () const |
| Vector_t | get_normalizedEps_99_99Percentile () const |
| double | get_Dx () const |
| double | get_Dy () const |
| double | get_DDx () const |
| double | get_DDy () const |
| void | gatherLoadBalanceStatistics () |
| size_t | getLoadBalance (int p) const |
| void | get_PBounds (Vector_t &min, Vector_t &max) const |
| void | calcBeamParameters () |
| void | calcBeamParametersInitial () |
| double | getCouplingConstant () const |
| void | setCouplingConstant (double c) |
| void | setCharge (double q) |
| void | setChargeZeroPart (double q) |
| void | setMass (double mass) |
| void | setMassZeroPart (double mass) |
| double | getCharge () const |
| get the total charge per simulation particle More... | |
| double | getChargePerParticle () const |
| get the macro particle charge More... | |
| double | getMassPerParticle () const |
| bool | hasFieldSolver () |
| FieldSolverType | getFieldSolverType () const |
| void | setStepsPerTurn (int n) |
| int | getStepsPerTurn () const |
| void | setGlobalTrackStep (long long n) |
| step in multiple TRACK commands More... | |
| long long | getGlobalTrackStep () const |
| void | setLocalTrackStep (long long n) |
| step in a TRACK command More... | |
| void | incTrackSteps () |
| long long | getLocalTrackStep () const |
| void | setNumBunch (short n) |
| short | getNumBunch () const |
| void | setTotalNumPerBunch (size_t numpart, short n) |
| size_t | getTotalNumPerBunch (short n) const |
| void | setLocalNumPerBunch (size_t numpart, short n) |
| size_t | getLocalNumPerBunch (short n) const |
| void | countTotalNumPerBunch () |
| void | setGlobalMeanR (Vector_t globalMeanR) |
| Vector_t | getGlobalMeanR () |
| void | setGlobalToLocalQuaternion (Quaternion_t globalToLocalQuaternion) |
| Quaternion_t | getGlobalToLocalQuaternion () |
| void | setSteptoLastInj (int n) |
| int | getSteptoLastInj () const |
| double | calcMeanPhi () |
| calculate average angle of longitudinal direction of bins More... | |
| bool | resetPartBinID2 (const double eta) |
| reset Bin[] for each particle according to the method given in paper PAST-AB(064402) by G. Fubiani et al. More... | |
| bool | resetPartBinBunch () |
| double | getdE () const |
| virtual double | getGamma (int i) |
| virtual double | getBeta (int i) |
| virtual void | actT () |
| const PartData * | getReference () const |
| double | getEmissionDeltaT () |
| DistributionType | getDistType () const |
| double | getMomentumTolerance () const |
| Quaternion_t | getQKs3D () |
| void | setQKs3D (Quaternion_t q) |
| Vector_t | getKs3DRefr () |
| void | setKs3DRefr (Vector_t r) |
| Vector_t | getKs3DRefp () |
| void | setKs3DRefp (Vector_t p) |
| void | iterateEmittedBin (int binNumber) |
| void | calcEMean () |
| Inform & | print (Inform &os) |
| virtual void | runTests () |
| virtual void | resetInterpolationCache (bool clearCache=false) |
| virtual void | swap (unsigned int i, unsigned int j) |
| virtual void | resizeMesh () |
| size_t | getTotalNum () const |
| void | setTotalNum (size_t n) |
| void | setLocalNum (size_t n) |
| size_t | getLocalNum () const |
| size_t | getDestroyNum () const |
| size_t | getGhostNum () const |
| ParticleLayout< double, Dim > & | getLayout () |
| const ParticleLayout< double, Dim > & | getLayout () const |
| bool | getUpdateFlag (UpdateFlags_t f) const |
| void | setUpdateFlag (UpdateFlags_t f, bool val) |
| ParticleBConds< Position_t, Dimension > & | getBConds () |
| void | setBConds (const ParticleBConds< Position_t, Dimension > &bc) |
| bool | singleInitNode () const |
| void | resetID () |
| void | update () |
| void | update (const ParticleAttrib< char > &canSwap) |
| void | createWithID (unsigned id) |
| void | create (size_t M) |
| void | globalCreate (size_t np) |
| void | destroy (size_t M, size_t I, bool doNow=false) |
| void | performDestroy (bool updateLocalNum=false) |
| void | ghostDestroy (size_t M, size_t I) |
| FMatrix< double, 2 *Dim, 2 *Dim > | getSigmaMatrix () const |
| double | getQ () const |
| Access to reference data. More... | |
| double | getM () const |
| double | getP () const |
| double | getE () const |
| ParticleOrigin | getPOrigin () const |
| ParticleType | getPType () const |
| double | getInitialBeta () const |
| double | getInitialGamma () const |
| void | resetQ (double q) |
| void | resetM (double m) |
| void | setPOrigin (ParticleOrigin) |
| void | setPType (const std::string &type) |
Private Member Functions | |
| void | updateFieldContainers_m () |
| void | updateDomainLength (Vektor< int, 3 > &grid) |
| void | updateFields (const Vector_t &hr, const Vector_t &origin) |
Private Attributes | |
| AmrObject * | amrobj_mp |
| pbase_t * | amrpbase_mp |
| FieldLayout_t * | fieldlayout_m |
| std::unique_ptr< size_t[]> | globalPartPerLevel_m |
Definition at line 27 of file AmrPartBunch.h.
| typedef AmrParticle_t AmrPartBunch::pbase_t |
Definition at line 30 of file AmrPartBunch.h.
| AmrPartBunch::AmrPartBunch | ( | const PartData * | ref | ) |
Definition at line 25 of file AmrPartBunch.cpp.
References amrpbase_mp, and AmrParticleBase< PLayout >::initializeAmr().

Definition at line 34 of file AmrPartBunch.cpp.
References amrpbase_mp, and AmrParticleBase< PLayout >::initializeAmr().

| AmrPartBunch::~AmrPartBunch | ( | ) |
Definition at line 43 of file AmrPartBunch.cpp.
|
virtual |
Reimplemented from PartBunchBase< double, 3 >.
Definition at line 137 of file AmrPartBunch.cpp.
References amrobj_mp, amrpbase_mp, PartBunchBase< double, 3 >::boundpTimer_m, AmrParticleBase< PLayout >::domainMapping(), PartBunchBase< double, 3 >::ID, ParticleAttrib< T >::isDirty(), AmrParticleBase< PLayout >::isForbidTransform(), PartBunchBase< double, 3 >::R, ParticleAttrib< T >::resetDirtyFlag(), AmrParticleBase< PLayout >::setForbidTransform(), IpplTimings::startTimer(), PartBunchBase< double, 3 >::stateOfLastBoundP_, IpplTimings::stopTimer(), PartBunchBase< double, 3 >::unit_state_, PartBunchBase< double, 3 >::update(), and updateLorentzFactor().

|
virtual |
Implements PartBunchBase< double, 3 >.
Definition at line 178 of file AmrPartBunch.cpp.
References amrobj_mp, AmrObject::computeSelfFields(), PartBunchBase< double, 3 >::fs_m, FieldSolver::hasValidSolver(), PartBunchBase< double, 3 >::selfFieldTimer_m, IpplTimings::startTimer(), and IpplTimings::stopTimer().

|
virtual |
Implements PartBunchBase< double, 3 >.
Definition at line 191 of file AmrPartBunch.cpp.
References amrobj_mp, AmrObject::computeSelfFields(), PartBunchBase< double, 3 >::selfFieldTimer_m, IpplTimings::startTimer(), and IpplTimings::stopTimer().

|
virtual |
Implements PartBunchBase< double, 3 >.
Definition at line 198 of file AmrPartBunch.cpp.
References amrobj_mp, AmrObject::computeSelfFields_cycl(), PartBunchBase< double, 3 >::selfFieldTimer_m, IpplTimings::startTimer(), and IpplTimings::stopTimer().

|
virtual |
Implements PartBunchBase< double, 3 >.
Definition at line 205 of file AmrPartBunch.cpp.
References amrobj_mp, AmrObject::computeSelfFields_cycl(), AmrObject::initFineLevels(), AmrObject::isRefined(), PartBunchBase< double, 3 >::selfFieldTimer_m, IpplTimings::startTimer(), and IpplTimings::stopTimer().

|
virtual |
Reimplemented from PartBunchBase< double, 3 >.
Definition at line 61 of file AmrPartBunch.cpp.
References amrobj_mp, amrpbase_mp, AmrParticleBase< PLayout >::domainMapping(), AmrObject::initFineLevels(), AmrParticleBase< PLayout >::isForbidTransform(), AmrObject::isRefined(), AmrParticleBase< PLayout >::setForbidTransform(), PartBunchBase< double, 3 >::update(), and updateLorentzFactor().
Referenced by set_meshEnlargement().

| void AmrPartBunch::gatherLevelStatistics | ( | ) |
Definition at line 225 of file AmrPartBunch.cpp.
References amrobj_mp, amrpbase_mp, AmrParticleBase< PLayout >::getLocalNumPerLevel(), globalPartPerLevel_m, AmrObject::maxLevel(), and reduce().

|
virtual |
Reimplemented from PartBunchBase< double, 3 >.
Definition at line 93 of file AmrPartBunch.cpp.
References amrpbase_mp, AmrParticleBase< PLayout >::getScalingFactor(), and PartBunchBase< double, 3 >::hr_m.

|
inline |
Definition at line 80 of file AmrPartBunch.h.
References amrobj_mp.
Referenced by GridLBalWriter::fillHeader(), and GridLBalWriter::write().
| AmrPartBunch::pbase_t * AmrPartBunch::getAmrParticleBase | ( | ) |
Definition at line 46 of file AmrPartBunch.cpp.
References amrpbase_mp.
Referenced by AmrBoxLib::computeSelfFields_cycl(), AmrBoxLib::initFineLevels(), AmrBoxLib::postRegrid_m(), MultiBunchHandler::readBunch(), AmrBoxLib::solvePoisson_m(), AmrBoxLib::tagForChargeDensity_m(), AmrBoxLib::tagForMaxNumParticles_m(), AmrBoxLib::tagForMinNumParticles_m(), AmrBoxLib::tagForMomenta_m(), AmrYtWriter::writeBunch(), and AmrYtWriter::writeParticles_m().
| const AmrPartBunch::pbase_t * AmrPartBunch::getAmrParticleBase | ( | ) | const |
Definition at line 51 of file AmrPartBunch.cpp.
References amrpbase_mp.
|
virtual |
Implements PartBunchBase< double, 3 >.
Definition at line 112 of file AmrPartBunch.cpp.
References amrobj_mp, and AmrObject::getEExtrema().

|
virtual |
Implements PartBunchBase< double, 3 >.
Definition at line 130 of file AmrPartBunch.cpp.
References fieldlayout_m.
|
inline |
Definition at line 84 of file AmrPartBunch.h.
References PartBunchBase< double, 3 >::fs_m, and FieldSolver::solver_m.
Referenced by AmrBoxLib::computeSelfFields_cycl(), AmrBoxLib::postRegrid_m(), and AmrBoxLib::solvePoisson_m().
|
inline |
Definition at line 88 of file AmrPartBunch.h.
References PartBunchBase< double, 3 >::fs_m, and FieldSolver::solver_m.
| const size_t & AmrPartBunch::getLevelStatistics | ( | int | l | ) | const |
Only a valid call of root core (core 0)
| l | is the level |
Definition at line 246 of file AmrPartBunch.cpp.
References globalPartPerLevel_m.
|
virtual |
Implements PartBunchBase< double, 3 >.
Definition at line 116 of file AmrPartBunch.cpp.
References amrobj_mp, and AmrObject::getRho().

|
virtual |
Implements PartBunchBase< double, 3 >.
Definition at line 56 of file AmrPartBunch.cpp.
|
virtual |
Reimplemented from PartBunchBase< double, 3 >.
Definition at line 99 of file AmrPartBunch.cpp.
References amrpbase_mp, do_binaryRepart(), AmrParticleBase< PLayout >::getAmrLayout(), PartBunchBase< T, Dim >::set_meshEnlargement(), and BoxLibLayout< T, Dim >::setBoundingBox().

| void AmrPartBunch::setAmrDomainRatio | ( | const std::vector< double > & | ratio | ) |
Change the AMR Poisson computation domain.
| ratio | per direction. |
Definition at line 220 of file AmrPartBunch.cpp.
References amrpbase_mp, AmrParticleBase< PLayout >::getAmrLayout(), and BoxLibLayout< T, Dim >::setDomainRatio().

Definition at line 92 of file AmrPartBunch.h.
References PartBunchBase< double, 3 >::hr_m.
Referenced by AmrBoxLib::updateMesh().
|
inlinevirtual |
Reimplemented from PartBunchBase< double, 3 >.
Definition at line 130 of file AmrPartBunch.h.
|
inlinevirtual |
Reimplemented from PartBunchBase< double, 3 >.
Definition at line 129 of file AmrPartBunch.h.
|
inlinevirtual |
Reimplemented from PartBunchBase< double, 3 >.
Definition at line 131 of file AmrPartBunch.h.
|
inlinevirtual |
Set the charge of one bin to the value of q and all other to zero.
Reimplemented from PartBunchBase< double, 3 >.
Definition at line 73 of file AmrPartBunch.h.
|
inlinevirtual |
Set the charge of all other the ones in bin to zero.
Reimplemented from PartBunchBase< double, 3 >.
Definition at line 74 of file AmrPartBunch.h.
|
inlinevirtual |
Reimplemented from PartBunchBase< double, 3 >.
Definition at line 68 of file AmrPartBunch.h.
References amrobj_mp, FieldSolver::getAmrObject(), and PartBunchBase< T, Dim >::setSolver().

Implements PartBunchBase< double, 3 >.
Definition at line 291 of file AmrPartBunch.cpp.
References amrobj_mp, and AmrObject::getBaseLevelGridPoints().

|
private |
Definition at line 289 of file AmrPartBunch.cpp.
Reimplemented from PartBunchBase< double, 3 >.
Definition at line 296 of file AmrPartBunch.cpp.
| void AmrPartBunch::updateLorentzFactor | ( | int | bin = 0 | ) |
Update the Lorentz factor before every domainMapping in order to have the correct boosted frame for the particle redistribution, regrid and computation of the self-field forces
| bin | is the energy bin |
Definition at line 251 of file AmrPartBunch.cpp.
References PartBunchBase< double, 3 >::get_gamma(), PartBunchBase< double, 3 >::getBinGamma(), and PartBunchBase< double, 3 >::weHaveBins().
Referenced by boundp(), AmrBoxLib::computeSelfFields_cycl(), and do_binaryRepart().

| void AmrPartBunch::updateLorentzFactor | ( | double | gamma | ) |
Update the Lorentz factor before every domainMapping in order to have the correct boosted frame for the particle redistribution, regrid and computation of the self-field forces. This function is only used in the single bunch case.
| gamma | is the Lorentz factor |
Definition at line 275 of file AmrPartBunch.cpp.
References amrpbase_mp, OpalData::getInstance(), and AmrParticleBase< PLayout >::setLorentzFactor().

|
private |
Definition at line 145 of file AmrPartBunch.h.
Referenced by boundp(), computeSelfFields(), computeSelfFields_cycl(), do_binaryRepart(), gatherLevelStatistics(), getAmrObject(), getEExtrema(), getRho(), setSolver(), and updateDomainLength().
|
private |
Definition at line 146 of file AmrPartBunch.h.
Referenced by AmrPartBunch(), boundp(), do_binaryRepart(), gatherLevelStatistics(), get_hr(), getAmrParticleBase(), set_meshEnlargement(), setAmrDomainRatio(), and updateLorentzFactor().
|
private |
Definition at line 151 of file AmrPartBunch.h.
Referenced by getFieldLayout().
|
private |
Definition at line 153 of file AmrPartBunch.h.
Referenced by gatherLevelStatistics(), and getLevelStatistics().
1.8.5