ImpactX
|
Classes | |
class | ImpactX |
struct | CopyAndMarkNegative |
struct | Aperture |
struct | Buncher |
struct | CFbend |
struct | ChrDrift |
struct | ChrPlasmaLens |
struct | ChrQuad |
struct | ChrAcc |
struct | ConstF |
struct | DipEdge |
struct | Drift |
struct | ExactDrift |
struct | ExactSbend |
struct | Kicker |
struct | Multipole |
struct | None |
struct | NonlinearLens |
struct | Programmable |
struct | PRot |
struct | Quad |
struct | RF_field_data |
struct | RFCavity |
struct | Sbend |
struct | ShortRF |
struct | Quad_field_data |
struct | SoftQuadrupole |
struct | Sol_field_data |
struct | SoftSolenoid |
struct | Sol |
struct | ThinDipole |
struct | RealSoA |
struct | IntSoA |
class | ParIterSoA |
class | ParConstIterSoA |
class | ImpactXParticleContainer |
struct | RefPart |
struct | Config |
Typedefs | |
using | KnownElements = std::variant< None, Aperture, Buncher, CFbend, ChrAcc, ChrDrift, ChrPlasmaLens, ChrQuad, ConstF, diagnostics::BeamMonitor, DipEdge, Drift, ExactDrift, ExactSbend, Kicker, Multipole, NonlinearLens, Programmable, PRot, Quad, RFCavity, Sbend, ShortRF, SoftSolenoid, SoftQuadrupole, Sol, ThinDipole > |
Enumerations | |
enum class | CoordSystem { s , t } |
Functions | |
void | read_element (std::string const &element_name, std::list< KnownElements > &m_lattice, int nslice_default, int mapsteps_default) |
void | collect_lost_particles (ImpactXParticleContainer &source) |
void | Push (ImpactXParticleContainer &pc, KnownElements &element_variant, int step) |
template<typename T_Element > | |
void | push_all (ImpactXParticleContainer &pc, T_Element &element, [[maybe_unused]] int step, [[maybe_unused]] bool omp_parallel=true) |
Variables | |
pwd = __file__.rsplit(os.sep, 1)[0] + os.sep | |
paths = os.environ.get("PATH", "") | |
p_abs = os.path.abspath(os.path.expanduser(os.path.expandvars(p))) | |
__version__ = cxx.__version__ | |
__doc__ = cxx.__doc__ | |
__license__ = cxx.__license__ | |
__author__ = cxx.__author__ | |
load_file | |
self | |
madx_file | |
nslice | |
using impactx::KnownElements = typedef std::variant< None, Aperture, Buncher, CFbend, ChrAcc, ChrDrift, ChrPlasmaLens, ChrQuad, ConstF, diagnostics::BeamMonitor, DipEdge, Drift, ExactDrift, ExactSbend, Kicker, Multipole, NonlinearLens, Programmable, PRot, Quad, RFCavity, Sbend, ShortRF, SoftSolenoid, SoftQuadrupole, Sol, ThinDipole > |
|
strong |
void impactx::collect_lost_particles | ( | ImpactXParticleContainer & | source | ) |
Move lost particles into a separate container
If particles are marked as lost, by setting their id to negative, we will move them to another particle container, store their position when lost and stop pushing them in the beamline.
source | the beam particle container that might loose particles |
void impactx::Push | ( | ImpactXParticleContainer & | pc, |
KnownElements & | element_variant, | ||
int | step | ||
) |
Push particles
[in,out] | pc | container of the particles to push |
[in,out] | element_variant | a single element to push the particles through |
[in] | step | global step for diagnostics |
void impactx::push_all | ( | ImpactXParticleContainer & | pc, |
T_Element & | element, | ||
[[maybe_unused] ] int | step, | ||
[[maybe_unused] ] bool | omp_parallel = true |
||
) |
Push all particles in a particle container.
This element pushes first the reference particle, then all other particles. All particles are pushed independently with the same logic. Particles are relative to the reference particle.
[in,out] | pc | particle container to push |
[in,out] | element | the beamline element |
[in] | step | global step for diagnostics |
[in] | omp_parallel | allow threading via OpenMP for the particle iterator loop (note: if OMP backend is active) |
void impactx::read_element | ( | std::string const & | element_name, |
std::list< KnownElements > & | m_lattice, | ||
int | nslice_default, | ||
int | mapsteps_default | ||
) |
Read a lattice element
Read a lattice element from amrex::ParmParse, initialize it and append it to m_lattice.
[in] | element_name | element name |
[in,out] | m_lattice | the accelerator lattice |
[in] | nslice_default | |
[in] | mapsteps_default |
|
private |
|
private |
|
private |
|
private |
impactx.load_file |
impactx.madx_file |
impactx.nslice |
impactx.p_abs = os.path.abspath(os.path.expanduser(os.path.expandvars(p))) |
impactx.paths = os.environ.get("PATH", "") |
impactx.pwd = __file__.rsplit(os.sep, 1)[0] + os.sep |
impactx.self |