OPALX (Object Oriented Parallel Accelerator Library for Exascal) master (dc2a29eed580)
OPALX
Loading...
Searching...
No Matches
Drift.cpp
Go to the documentation of this file.
1// ------------------------------------------------------------------------
2// $RCSfile: Drift.cpp,v $
3// ------------------------------------------------------------------------
4// $Revision: 1.1.1.1 $
5// ------------------------------------------------------------------------
6// Copyright: see Copyright.readme
7// ------------------------------------------------------------------------
8//
9// Class: Drift
10// Defines the abstract interface for a drift space.
11//
12// ------------------------------------------------------------------------
13// Class category: AbsBeamline
14// ------------------------------------------------------------------------
15//
16// $Date: 2000/03/27 09:32:31 $
17// $Author: fci $
18//
19// ------------------------------------------------------------------------
20
21#include "AbsBeamline/Drift.h"
23#include "PartBunch/PartBunch.h"
24
25extern Inform* gmsg;
26
27// Class Drift
28// ------------------------------------------------------------------------
29
31
32Drift::Drift(const Drift& right) : Component(right), nSlices_m(right.nSlices_m) {}
33
34Drift::Drift(const std::string& name) : Component(name), nSlices_m(1) {}
35
37
38void Drift::accept(BeamlineVisitor& visitor) const { visitor.visitDrift(*this); }
39
40void Drift::initialise(PartBunch_t* bunch, double& startField, double& endField) {
41 endField = startField + getElementLength();
42 RefPartBunch_m = bunch;
43 startField_m = startField;
44}
45
46// set the number of slices for map tracking
47void Drift::setNSlices(const std::size_t& nSlices) { nSlices_m = nSlices; }
48
49// get the number of slices for map tracking
50std::size_t Drift::getNSlices() const { return nSlices_m; }
51
53
54bool Drift::bends() const { return false; }
55
56void Drift::getFieldExtend(double& zBegin, double& zEnd) const {
57 zBegin = startField_m;
59}
60
Inform * gmsg
Definition changes.cpp:7
ElementType
Definition ElementBase.h:94
Template PIC bunch: IPPL PicManager, shared field mesh/solver, and multiple particle containers.
virtual void visitDrift(const Drift &)=0
Apply the algorithm to a drift space.
PartBunch_t * RefPartBunch_m
Definition Component.h:225
Interface for drift space.
Definition Drift.h:31
virtual bool bends() const override
Definition Drift.cpp:54
virtual ~Drift()
Definition Drift.cpp:36
virtual void finalise() override
Definition Drift.cpp:52
Drift()
Definition Drift.cpp:30
virtual void getFieldExtend(double &zBegin, double &zEnd) const override
Return the field-support extent of the component.
Definition Drift.cpp:56
virtual void initialise(PartBunch_t *bunch, double &startField, double &endField) override
Definition Drift.cpp:40
std::size_t nSlices_m
Definition Drift.h:63
void setNSlices(const std::size_t &nSlices)
Definition Drift.cpp:47
virtual ElementType getType() const override
Get element type std::string.
Definition Drift.cpp:61
virtual void accept(BeamlineVisitor &) const override
Apply visitor to Drift.
Definition Drift.cpp:38
double startField_m
Definition Drift.h:62
std::size_t getNSlices() const
Definition Drift.cpp:50
virtual double getElementLength() const
Get design length.