| 
    OPAL (Object Oriented Parallel Accelerator Library)
    2021.1.99
    
   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) | 
| 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 () | 
| 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) | 
| calculates the 1d line density (not normalized) and append it to a file.  More... | |
| 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) | 
| void | getLocalBounds (Vector_t &rmin, Vector_t &rmax) | 
| 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 | 
| 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 | 
| 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 () | 
| std::string | getFieldSolverType () const | 
| Return the fieldsolver type if we have a fieldsolver.  More... | |
| 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 () | 
| 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 () | 
| double | getQ () const | 
| Access to reference data.  More... | |
| double | getM () const | 
| double | getP () const | 
| double | getE () const | 
| ParticleOrigin | getPOrigin () const | 
| ParticleType | getPType () const | 
| std::string | getPTypeString () | 
| double | getInitialBeta () const | 
| double | getInitialGamma () const | 
| void | resetQ (double q) | 
| void | resetM (double m) | 
| void | setPOrigin (ParticleOrigin) | 
| void | setPType (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.
Definition at line 34 of file AmrPartBunch.cpp.
| AmrPartBunch::~AmrPartBunch | ( | ) | 
Definition at line 43 of file AmrPartBunch.cpp.
      
  | 
  virtual | 
Reimplemented from PartBunchBase< double, 3 >.
Definition at line 139 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 180 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 193 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 200 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 207 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 63 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 227 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 95 of file AmrPartBunch.cpp.
References amrpbase_mp, AmrParticleBase< PLayout >::getScalingFactor(), and PartBunchBase< double, 3 >::hr_m.

      
  | 
  inline | 
Definition at line 82 of file AmrPartBunch.h.
References amrobj_mp.
Referenced by GridLBalWriter::fillHeader(), and GridLBalWriter::write().
| AmrPartBunch::pbase_t * AmrPartBunch::getAmrParticleBase | ( | ) | 
Definition at line 48 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 53 of file AmrPartBunch.cpp.
References amrpbase_mp.
      
  | 
  virtual | 
Implements PartBunchBase< double, 3 >.
Definition at line 114 of file AmrPartBunch.cpp.
References amrobj_mp, and AmrObject::getEExtrema().

      
  | 
  virtual | 
Implements PartBunchBase< double, 3 >.
Definition at line 132 of file AmrPartBunch.cpp.
References fieldlayout_m.
      
  | 
  inline | 
Definition at line 86 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 90 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 248 of file AmrPartBunch.cpp.
References globalPartPerLevel_m.
      
  | 
  virtual | 
Implements PartBunchBase< double, 3 >.
Definition at line 118 of file AmrPartBunch.cpp.
References amrobj_mp, and AmrObject::getRho().

      
  | 
  virtual | 
Implements PartBunchBase< double, 3 >.
Definition at line 58 of file AmrPartBunch.cpp.
      
  | 
  virtual | 
Reimplemented from PartBunchBase< double, 3 >.
Definition at line 101 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 222 of file AmrPartBunch.cpp.
References amrpbase_mp, AmrParticleBase< PLayout >::getAmrLayout(), and BoxLibLayout< T, Dim >::setDomainRatio().

      
  | 
  inline | 
Definition at line 94 of file AmrPartBunch.h.
References PartBunchBase< double, 3 >::hr_m.
Referenced by AmrBoxLib::updateMesh().
      
  | 
  inlinevirtual | 
Reimplemented from PartBunchBase< double, 3 >.
Definition at line 133 of file AmrPartBunch.h.
      
  | 
  inlinevirtual | 
Reimplemented from PartBunchBase< double, 3 >.
Definition at line 132 of file AmrPartBunch.h.
      
  | 
  inlinevirtual | 
Reimplemented from PartBunchBase< double, 3 >.
Definition at line 134 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 76 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 75 of file AmrPartBunch.h.
      
  | 
  inlinevirtual | 
Reimplemented from PartBunchBase< double, 3 >.
Definition at line 70 of file AmrPartBunch.h.
References amrobj_mp, Hypervolume::fs, FieldSolver::getAmrObject(), and PartBunchBase< T, Dim >::setSolver().

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

      
  | 
  private | 
Definition at line 292 of file AmrPartBunch.cpp.
Reimplemented from PartBunchBase< double, 3 >.
Definition at line 301 of file AmrPartBunch.cpp.
| 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 278 of file AmrPartBunch.cpp.
References amrpbase_mp, OpalData::getInstance(), and AmrParticleBase< PLayout >::setLorentzFactor().

| 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 253 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().

      
  | 
  private | 
Definition at line 149 of file AmrPartBunch.h.
Referenced by boundp(), computeSelfFields(), computeSelfFields_cycl(), do_binaryRepart(), gatherLevelStatistics(), getAmrObject(), getEExtrema(), getRho(), setSolver(), and updateDomainLength().
      
  | 
  private | 
Definition at line 150 of file AmrPartBunch.h.
Referenced by boundp(), do_binaryRepart(), gatherLevelStatistics(), get_hr(), getAmrParticleBase(), set_meshEnlargement(), setAmrDomainRatio(), and updateLorentzFactor().
      
  | 
  private | 
Definition at line 155 of file AmrPartBunch.h.
Referenced by getFieldLayout().
      
  | 
  private | 
Definition at line 157 of file AmrPartBunch.h.
Referenced by gatherLevelStatistics(), and getLevelStatistics().