OPAL (Object Oriented Parallel Accelerator Library)  2021.1.99
OPAL
OpalUndulator.h
Go to the documentation of this file.
1 //
2 // Class OpalUndulator
3 // Defines the Undulator/Wiggler element and its attributes.
4 //
5 // Copyright (c) 2020, Arnau AlbĂ , Paul Scherrer Institut, Villigen PSI, Switzerland
6 // All rights reserved.
7 //
8 // Implemented as part of the MSc thesis
9 // "Start-to-End Modelling of the AWA Micro-Bunched Electron Cooling POP-Experiment"
10 //
11 // This file is part of OPAL.
12 //
13 // OPAL is free software: you can redistribute it and/or modify
14 // it under the terms of the GNU General Public License as published by
15 // the Free Software Foundation, either version 3 of the License, or
16 // (at your option) any later version.
17 //
18 // You should have received a copy of the GNU General Public License
19 // along with OPAL. If not, see <https://www.gnu.org/licenses/>.
20 //
21 #ifndef OPAL_OpalUndulator_HH
22 #define OPAL_OpalUndulator_HH
23 
24 #include "Elements/OpalElement.h"
25 
26 class OpalUndulator : public OpalElement {
27 public:
28  enum {
29  K = COMMON, // The undulator parameter
30  LAMBDA, // The undulator period
31  NUMPERIODS, // Number of undulator periods
32  ANGLE, // Polarisation angle of the undulator
33  FNAME, // File specifying the wanted output from the full wave simulation
34  MESHLENGTH, // Size of the computational domain
35  MESHRESOLUTION, // Size of the grid-cells
36  TRUNORDER, // Order of the Absorbing Boundary Conditions, 1st or 2nd
37  TOTALTIME, // Total time of the full wave simulation
38  DTBUNCH, // Time-step for particle update can be smaller than field update step
39  SIZE
40  };
41 
43  OpalUndulator();
44 
45  virtual ~OpalUndulator();
46 
48  virtual OpalUndulator* clone(const std::string& name);
49 
51  virtual void update();
52 
53 private:
54  // Not implemented.
56  void operator=(const OpalUndulator&);
57 
58  // Clone constructor.
59  OpalUndulator(const std::string& name, OpalUndulator* parent);
60 };
61 
62 #endif // OPAL_OpalUndulator_HH
const std::string name
virtual void update()
Update the embedded CLASSIC drift.
virtual ~OpalUndulator()
OpalUndulator(const OpalUndulator &)
virtual OpalUndulator * clone(const std::string &name)
Make clone.
OpalUndulator()
Exemplar constructor.
void operator=(const OpalUndulator &)