OPALX (Object Oriented Parallel Accelerator Library for Exascal) master (dc2a29eed580)
OPALX
Loading...
Searching...
No Matches
SamplingBase Class Reference

#include <SamplingBase.hpp>

Inheritance diagram for SamplingBase:
Inheritance graph
Collaboration diagram for SamplingBase:
Collaboration graph

Public Member Functions

 SamplingBase (std::shared_ptr< ParticleContainer_t > pc, std::shared_ptr< FieldContainer_t > fc, Distribution_t *dist)
 
 SamplingBase (std::shared_ptr< ParticleContainer_t > pc, std::shared_ptr< FieldContainer_t > fc)
 
 SamplingBase (std::shared_ptr< ParticleContainer_t > pc)
 
virtual ~SamplingBase ()
 
void setEmissionOffsets (ippl::Vector< double, 3 > R0, ippl::Vector< double, 3 > P0, double t0, const std::string &emissionModel="NONE")
 
void setInitialPolarization (const ippl::Vector< double, 3 > &pol)
 
void fillPolarization (size_t startIdx, size_t count)
 
Vector_t< double, 3 > getEmissionR0 () const
 
virtual void generateParticles (size_t &, Vector_t< double, 3 >)
 
virtual void emitParticles (double, double)
 
virtual bool isEmissionDone (double t) const
 Whether this sampler has finished all emission (no more particles will be created).
 
virtual double getGlobalTimeShift () const
 Optional tracker time shift needed before the first emitted particles are born.
 
virtual bool hasInitialReferenceMomentum () const
 Optional initial reference momentum in the source-local frame.
 
virtual Vector_t< double, 3 > getInitialReferenceMomentum () const
 
virtual double getEmissionTimeStep () const
 Optional OPAL-like tracker time step while this sampler is still emitting.
 
virtual void testNumEmitParticles (size_t, double)
 
virtual void testEmitParticles (size_t, double)
 
virtual void initDomainDecomp (double)
 
virtual void setWithDomainDecomp (bool)
 
size_t computeLocalEmitCount (size_t totalToSample) const
 Computes the number of particles this rank should emit so that the global total equals totalToSample and no rank exceeds its capacity (space left).
 

Protected Attributes

std::shared_ptr< ParticleContainer_tpc_m
 
std::shared_ptr< FieldContainer_tfc_m
 
Distribution_topalDist_m = nullptr
 
std::string samplingMethod_m
 
Vector_t< double, 3 > R0_m = 0.0
 Emission source offset: position R0, momentum P0, start time t0 (applied in sample step).
 
Vector_t< double, 3 > P0_m = 0.0
 
double t0_m = 0.0
 
std::string emissionModel_m = "NONE"
 
Vector_t< double, 3 > initialPol_m = 0.0
 
bool hasEmittedOnce_m = false
 For one-shot emitters (e.g. Gaussian at delayed t0): guard to avoid double sampling.
 

Detailed Description

Definition at line 15 of file SamplingBase.hpp.

Constructor & Destructor Documentation

◆ SamplingBase() [1/3]

SamplingBase::SamplingBase ( std::shared_ptr< ParticleContainer_t pc,
std::shared_ptr< FieldContainer_t fc,
Distribution_t dist 
)
inline

Definition at line 36 of file SamplingBase.hpp.

◆ SamplingBase() [2/3]

SamplingBase::SamplingBase ( std::shared_ptr< ParticleContainer_t pc,
std::shared_ptr< FieldContainer_t fc 
)
inline

Definition at line 41 of file SamplingBase.hpp.

◆ SamplingBase() [3/3]

SamplingBase::SamplingBase ( std::shared_ptr< ParticleContainer_t pc)
inline

Definition at line 44 of file SamplingBase.hpp.

◆ ~SamplingBase()

virtual SamplingBase::~SamplingBase ( )
inlinevirtual

Definition at line 46 of file SamplingBase.hpp.

Member Function Documentation

◆ computeLocalEmitCount()

size_t SamplingBase::computeLocalEmitCount ( size_t  totalToSample) const

Computes the number of particles this rank should emit so that the global total equals totalToSample and no rank exceeds its capacity (space left).

Parameters
totalToSampleGlobal number of particles to emit this timestep.
Returns
Local number of particles this rank should create/emit.

Definition at line 6 of file SamplingBase.cpp.

References pc_m.

Referenced by FlatTop::countEnteringParticlesPerRank(), FromFile::generateParticles(), Gaussian::generateParticles(), and MultiVariateGaussian::generateParticles().

◆ emitParticles()

virtual void SamplingBase::emitParticles ( double  ,
double   
)
inlinevirtual

Reimplemented in EmittedFromFile, FlatTop, FromFile, Gaussian, MultiVariateGaussian, and OpalFlatTop.

Definition at line 82 of file SamplingBase.hpp.

◆ fillPolarization()

void SamplingBase::fillPolarization ( size_t  startIdx,
size_t  count 
)
inline

Fill the Pol particle attribute with initialPol_m on the half-open range [startIdx, startIdx + count). No-op when the container does not store spin. Must be called after the particles have been created and before they are pushed downstream.

Definition at line 63 of file SamplingBase.hpp.

References initialPol_m, and pc_m.

Referenced by FlatTop::emitParticles(), FromFile::generateParticles(), Gaussian::generateParticles(), and MultiVariateGaussian::generateParticles().

◆ generateParticles()

virtual void SamplingBase::generateParticles ( size_t &  ,
Vector_t< double, 3 >   
)
inlinevirtual

Reimplemented in EmittedFromFile, FlatTop, FromFile, Gaussian, MultiVariateGaussian, and OpalFlatTop.

Definition at line 80 of file SamplingBase.hpp.

◆ getEmissionR0()

Vector_t< double, 3 > SamplingBase::getEmissionR0 ( ) const
inline

Definition at line 78 of file SamplingBase.hpp.

References R0_m.

◆ getEmissionTimeStep()

virtual double SamplingBase::getEmissionTimeStep ( ) const
inlinevirtual

Optional OPAL-like tracker time step while this sampler is still emitting.

Reimplemented in EmittedFromFile, and OpalFlatTop.

Definition at line 102 of file SamplingBase.hpp.

◆ getGlobalTimeShift()

virtual double SamplingBase::getGlobalTimeShift ( ) const
inlinevirtual

Optional tracker time shift needed before the first emitted particles are born.

Reimplemented in EmittedFromFile, and OpalFlatTop.

Definition at line 92 of file SamplingBase.hpp.

◆ getInitialReferenceMomentum()

virtual Vector_t< double, 3 > SamplingBase::getInitialReferenceMomentum ( ) const
inlinevirtual

Reimplemented in EmittedFromFile, and OpalFlatTop.

Definition at line 97 of file SamplingBase.hpp.

◆ hasInitialReferenceMomentum()

virtual bool SamplingBase::hasInitialReferenceMomentum ( ) const
inlinevirtual

Optional initial reference momentum in the source-local frame.

Reimplemented in EmittedFromFile, and OpalFlatTop.

Definition at line 95 of file SamplingBase.hpp.

◆ initDomainDecomp()

virtual void SamplingBase::initDomainDecomp ( double  )
inlinevirtual

Reimplemented in FlatTop, and OpalFlatTop.

Definition at line 110 of file SamplingBase.hpp.

◆ isEmissionDone()

virtual bool SamplingBase::isEmissionDone ( double  t) const
inlinevirtual

Whether this sampler has finished all emission (no more particles will be created).

Parameters
tCurrent simulation time (s).

Reimplemented in FlatTop, EmittedFromFile, and OpalFlatTop.

Definition at line 86 of file SamplingBase.hpp.

References hasEmittedOnce_m.

◆ setEmissionOffsets()

void SamplingBase::setEmissionOffsets ( ippl::Vector< double, 3 >  R0,
ippl::Vector< double, 3 >  P0,
double  t0,
const std::string &  emissionModel = "NONE" 
)
inline

Definition at line 48 of file SamplingBase.hpp.

References emissionModel_m, P0_m, R0_m, and t0_m.

Referenced by TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), and TEST_F().

◆ setInitialPolarization()

void SamplingBase::setInitialPolarization ( const ippl::Vector< double, 3 > &  pol)
inline

Definition at line 57 of file SamplingBase.hpp.

References initialPol_m.

◆ setWithDomainDecomp()

virtual void SamplingBase::setWithDomainDecomp ( bool  )
inlinevirtual

Reimplemented in FlatTop, and OpalFlatTop.

Definition at line 112 of file SamplingBase.hpp.

◆ testEmitParticles()

virtual void SamplingBase::testEmitParticles ( size_t  ,
double   
)
inlinevirtual

Definition at line 108 of file SamplingBase.hpp.

◆ testNumEmitParticles()

virtual void SamplingBase::testNumEmitParticles ( size_t  ,
double   
)
inlinevirtual

Definition at line 105 of file SamplingBase.hpp.

Member Data Documentation

◆ emissionModel_m

◆ fc_m

std::shared_ptr<FieldContainer_t> SamplingBase::fc_m
protected

◆ hasEmittedOnce_m

bool SamplingBase::hasEmittedOnce_m = false
protected

◆ initialPol_m

Vector_t<double, 3> SamplingBase::initialPol_m = 0.0
protected

Initial polarization vector P applied to every particle this sampler creates. Rest-frame Pauli expectations along lab-frame axes; |Pol| in [0, 1]. Ignored when the container does not have a spin attribute (hasSpin() == false).

Definition at line 30 of file SamplingBase.hpp.

Referenced by fillPolarization(), and setInitialPolarization().

◆ opalDist_m

◆ P0_m

◆ pc_m

◆ R0_m

Vector_t<double, 3> SamplingBase::R0_m = 0.0
protected

◆ samplingMethod_m

std::string SamplingBase::samplingMethod_m
protected

Definition at line 20 of file SamplingBase.hpp.

◆ t0_m


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