OPAL (Object Oriented Parallel Accelerator Library)
2024.2
OPAL
Configure.cpp
Go to the documentation of this file.
1
//
2
// Namespace Configure
3
// The OPAL configurator.
4
// This class must be modified to configure the commands to be contained
5
// in an executable OPAL program. For each command an exemplar object
6
// is constructed and linked to the main directory. This exemplar is then
7
// available to the OPAL parser for cloning.
8
// This class could be part of the class OpalData. It is separated from
9
// that class and opale into a special module in order to reduce
10
// dependencies between modules.
11
//
12
// Copyright (c) 200x - 2020, Paul Scherrer Institut, Villigen PSI, Switzerland
13
// All rights reserved
14
//
15
// This file is part of OPAL.
16
//
17
// OPAL is free software: you can redistribute it and/or modify
18
// it under the terms of the GNU General Public License as published by
19
// the Free Software Foundation, either version 3 of the License, or
20
// (at your option) any later version.
21
//
22
// You should have received a copy of the GNU General Public License
23
// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
24
//
25
#include "
OpalConfigure/Configure.h
"
26
#include "
AbstractObjects/OpalData.h
"
27
28
#include "
Distribution/Distribution.h
"
29
30
// Basic action commands.
31
#include "
BasicActions/Call.h
"
32
#include "
BasicActions/DumpFields.h
"
33
#include "
BasicActions/DumpEMFields.h
"
34
#include "
BasicActions/Echo.h
"
35
#include "
BasicActions/Help.h
"
36
#include "
BasicActions/Option.h
"
37
#include "
BasicActions/Select.h
"
38
#include "
BasicActions/Stop.h
"
39
#include "
BasicActions/Quit.h
"
40
#include "
BasicActions/System.h
"
41
#include "
BasicActions/PSystem.h
"
42
#include "
BasicActions/Title.h
"
43
#include "
BasicActions/Value.h
"
44
45
// Macro command.
46
#include "
OpalParser/MacroCmd.h
"
47
48
// Commands introducing a special mode.
49
#include "
Track/TrackCmd.h
"
50
51
// Table-related commands.
52
#include "
Structure/Beam.h
"
53
#include "
Structure/FieldSolver.h
"
54
#include "
Structure/BoundaryGeometry.h
"
55
#include "
Structure/OpalWake.h
"
56
#include "
Structure/ParticleMatterInteraction.h
"
57
#include "
Utilities/OpalFilter.h
"
58
#include "
TrimCoils/OpalTrimCoil.h
"
59
#include "
Tables/List.h
"
60
61
// Value definitions commands.
62
#include "
ValueDefinitions/BoolConstant.h
"
63
#include "
ValueDefinitions/RealConstant.h
"
64
#include "
ValueDefinitions/RealVariable.h
"
65
#include "
ValueDefinitions/RealVector.h
"
66
#include "
ValueDefinitions/StringConstant.h
"
67
68
// Element commands.
69
#include "
Elements/OpalAsymmetricEnge.h
"
70
#include "
Elements/OpalCavity.h
"
71
#include "
Elements/OpalCCollimator.h
"
72
#include "
Elements/OpalCyclotron.h
"
73
#include "
Elements/OpalDegrader.h
"
74
#include "
Elements/OpalDrift.h
"
75
#include "
Elements/OpalECollimator.h
"
76
#include "
Elements/OpalEnge.h
"
77
#include "
Elements/OpalFlexibleCollimator.h
"
78
#include "
Elements/OpalHKicker.h
"
79
#include "
Elements/OpalKicker.h
"
80
#include "
Elements/OpalMarker.h
"
81
#include "
Elements/OpalMonitor.h
"
82
#include "
Elements/OpalMultipole.h
"
83
#include "
Elements/OpalMultipoleT.h
"
84
#include "
Elements/OpalOctupole.h
"
85
#include "
Elements/OpalOffset/OpalLocalCartesianOffset.h
"
86
#include "
Elements/OpalOffset/OpalLocalCylindricalOffset.h
"
87
#include "
Elements/OpalOffset/OpalGlobalCartesianOffset.h
"
88
#include "
Elements/OpalOffset/OpalGlobalCylindricalOffset.h
"
89
#include "
Elements/OpalOutputPlane.h
"
90
#include "
Elements/OpalPepperPot.h
"
91
#include "
Elements/OpalPolynomialTimeDependence.h
"
92
#include "
Elements/OpalSinusoidalTimeDependence.h
"
93
#include "
Elements/OpalProbe.h
"
94
#include "
Elements/OpalQuadrupole.h
"
95
#include "
Elements/OpalRBend.h
"
96
#include "
Elements/OpalRBend3D.h
"
97
#include "
Elements/OpalRCollimator.h
"
98
#include "
Elements/OpalRingDefinition.h
"
99
#include "
Elements/OpalSBend.h
"
100
#include "
Elements/OpalSBend3D.h
"
101
#include "
Elements/OpalScalingFFAMagnet.h
"
102
#include "
Elements/OpalSeptum.h
"
103
#include "
Elements/OpalSextupole.h
"
104
#include "
Elements/OpalSlit.h
"
105
#include "
Elements/OpalSolenoid.h
"
106
#include "
Elements/OpalSource.h
"
107
#include "
Elements/OpalStripper.h
"
108
#include "
Elements/OpalTravelingWave.h
"
109
#include "
Elements/OpalVacuum.h
"
110
#include "
Elements/OpalVariableRFCavity.h
"
111
#include "
Elements/OpalVariableRFCavityFringeField.h
"
112
#include "
Elements/OpalVerticalFFAMagnet.h
"
113
#include "
Elements/OpalVKicker.h
"
114
115
#ifdef ENABLE_OPAL_FEL
116
#include "
Elements/OpalUndulator.h
"
117
#endif
118
119
// Structure-related commands.
120
#include "
Lines/Line.h
"
121
#include "
Lines/Sequence.h
"
122
123
// Optimize command
124
#include "
Optimize/OptimizeCmd.h
"
125
#include "
Optimize/DVar.h
"
126
#include "
Optimize/Objective.h
"
127
#include "
Optimize/Constraint.h
"
128
129
// Sample command
130
#include "
Sample/SampleCmd.h
"
131
#include "
Sample/OpalSample.h
"
132
133
#include "
changes.h
"
134
135
// Modify these methods to add new commands.
136
// ------------------------------------------------------------------------
137
138
namespace
{
139
140
void
makeActions() {
141
OpalData
*opal =
OpalData::getInstance
();
142
opal->
create
(
new
Call
());
143
opal->
create
(
new
DumpFields
());
144
opal->
create
(
new
DumpEMFields
());
145
opal->
create
(
new
Echo
());
146
opal->
create
(
new
Help
());
147
opal->
create
(
new
List
());
148
opal->
create
(
new
Option
());
149
opal->
create
(
new
OptimizeCmd
());
150
opal->
create
(
new
SampleCmd
());
151
opal->
create
(
new
Select
());
152
opal->
create
(
new
Stop
());
153
opal->
create
(
new
Quit
());
154
opal->
create
(
new
PSystem
());
155
opal->
create
(
new
System
());
156
opal->
create
(
new
Title
());
157
opal->
create
(
new
TrackCmd
());
158
opal->
create
(
new
Value
());
159
}
160
161
void
makeDefinitions() {
162
OpalData
*opal =
OpalData::getInstance
();
163
// Must create the value definitions first.
164
opal->
create
(
new
BoolConstant
());
165
opal->
create
(
new
RealConstant
());
166
opal->
create
(
new
RealVariable
());
167
opal->
create
(
new
RealVector
());
168
opal->
create
(
new
StringConstant
());
169
170
opal->
create
(
new
Beam
());
171
opal->
create
(
new
FieldSolver
());
172
opal->
create
(
new
BoundaryGeometry
());
173
opal->
create
(
new
OpalWake
());
174
opal->
create
(
new
ParticleMatterInteraction
());
175
176
opal->
create
(
new
OpalFilter
());
177
opal->
create
(
new
OpalTrimCoil
());
178
179
opal->
create
(
new
Distribution
());
180
181
opal->
create
(
new
MacroCmd
());
182
183
opal->
create
(
new
DVar
());
184
opal->
create
(
new
Objective
());
185
opal->
create
(
new
Constraint
());
186
187
opal->
create
(
new
OpalSample
());
188
}
189
190
void
makeElements() {
191
OpalData
*opal =
OpalData::getInstance
();
192
opal->
create
(
new
OpalAsymmetricEnge
());
193
opal->
create
(
new
OpalCavity
());
194
opal->
create
(
new
OpalCCollimator
());
195
opal->
create
(
new
OpalCyclotron
());
196
opal->
create
(
new
OpalDegrader
());
197
opal->
create
(
new
OpalDrift
());
198
opal->
create
(
new
OpalECollimator
());
199
opal->
create
(
new
OpalFlexibleCollimator
());
200
opal->
create
(
new
OpalHKicker
());
201
opal->
create
(
new
OpalKicker
());
202
opal->
create
(
new
OpalMarker
());
203
opal->
create
(
new
OpalMonitor
());
204
opal->
create
(
new
OpalMultipole
());
205
opal->
create
(
new
OpalMultipoleT
());
206
opal->
create
(
new
OpalOctupole
());
207
opal->
create
(
new
OpalOffset::OpalLocalCartesianOffset
());
208
// opal->create(new OpalOffset::OpalLocalCylindricalOffset());
209
// opal->create(new OpalOffset::OpalGlobalCartesianOffset());
210
// opal->create(new OpalOffset::OpalGlobalCylindricalOffset());
211
opal->
create
(
new
OpalOutputPlane
());
212
opal->
create
(
new
OpalPepperPot
());
213
opal->
create
(
new
OpalPolynomialTimeDependence
());
214
opal->
create
(
new
OpalSinusoidalTimeDependence
());
215
opal->
create
(
new
OpalProbe
());
216
opal->
create
(
new
OpalQuadrupole
());
217
opal->
create
(
new
OpalRBend
());
218
opal->
create
(
new
OpalRBend3D
());
219
opal->
create
(
new
OpalRCollimator
());
220
opal->
create
(
new
OpalRingDefinition
());
221
opal->
create
(
new
OpalSBend
());
222
opal->
create
(
new
OpalSBend3D
());
223
opal->
create
(
new
OpalScalingFFAMagnet
());
224
opal->
create
(
new
OpalSeptum
());
225
opal->
create
(
new
OpalSextupole
());
226
opal->
create
(
new
OpalSlit
());
227
opal->
create
(
new
OpalSolenoid
());
228
opal->
create
(
new
OpalSource
());
229
opal->
create
(
new
OpalStripper
());
230
opal->
create
(
new
OpalTravelingWave
());
231
#ifdef ENABLE_OPAL_FEL
232
opal->
create
(
new
OpalUndulator
());
233
#endif
234
opal->
create
(
new
OpalVacuum
());
235
opal->
create
(
new
OpalVariableRFCavity
());
236
opal->
create
(
new
OpalVariableRFCavityFringeField
());
237
opal->
create
(
new
OpalVerticalFFAMagnet
());
238
opal->
create
(
new
OpalVKicker
());
239
240
opal->
create
(
new
Line
());
241
opal->
create
(
new
Sequence
());
242
}
243
};
244
245
namespace
Configure
{
246
void
configure
() {
247
makeDefinitions();
248
makeElements();
249
makeActions();
250
Versions::fillChanges
();
251
}
252
};
List.h
TrackCmd.h
DVar.h
Objective.h
Constraint.h
OptimizeCmd.h
Help.h
Quit.h
Stop.h
DumpEMFields.h
Title.h
Echo.h
Call.h
Value.h
DumpFields.h
Option.h
System.h
PSystem.h
Select.h
OpalTrimCoil.h
Distribution.h
StringConstant.h
RealVector.h
RealVariable.h
RealConstant.h
BoolConstant.h
OpalFilter.h
OpalSolenoid.h
OpalMonitor.h
OpalKicker.h
OpalStripper.h
OpalQuadrupole.h
OpalMarker.h
OpalVariableRFCavity.h
OpalSource.h
OpalCCollimator.h
OpalVacuum.h
OpalHKicker.h
OpalPolynomialTimeDependence.h
OpalGlobalCylindricalOffset.h
OpalLocalCylindricalOffset.h
OpalLocalCartesianOffset.h
OpalGlobalCartesianOffset.h
OpalEnge.h
OpalRBend3D.h
OpalVKicker.h
OpalRingDefinition.h
OpalSextupole.h
OpalDegrader.h
OpalDrift.h
OpalOctupole.h
OpalAsymmetricEnge.h
OpalECollimator.h
OpalSBend3D.h
OpalSlit.h
OpalProbe.h
OpalOutputPlane.h
OpalSeptum.h
OpalMultipoleT.h
OpalRBend.h
OpalTravelingWave.h
OpalUndulator.h
OpalCyclotron.h
OpalSinusoidalTimeDependence.h
OpalVerticalFFAMagnet.h
OpalRCollimator.h
OpalVariableRFCavityFringeField.h
OpalSBend.h
OpalPepperPot.h
OpalMultipole.h
OpalScalingFFAMagnet.h
OpalFlexibleCollimator.h
OpalCavity.h
Configure.h
changes.h
OpalSample.h
SampleCmd.h
MacroCmd.h
OpalData.h
Beam.h
FieldSolver.h
OpalWake.h
BoundaryGeometry.h
ParticleMatterInteraction.h
Sequence.h
Line.h
Versions::fillChanges
void fillChanges()
Definition
changes.cpp:9
Configure
Definition
Configure.cpp:245
Configure::configure
void configure()
Configure all commands.
Definition
Configure.cpp:246
OpalData
The global OPAL structure.
Definition
OpalData.h:49
OpalData::create
void create(Object *newObject)
Create new object.
Definition
OpalData.cpp:476
OpalData::getInstance
static OpalData * getInstance()
Definition
OpalData.cpp:196
Call
Definition
Call.h:24
DumpEMFields
Definition
DumpEMFields.h:54
DumpFields
Definition
DumpFields.h:54
Echo
Definition
Echo.h:24
Help
Definition
Help.h:24
Option
Definition
Option.h:30
PSystem
Definition
PSystem.h:24
Quit
Definition
Quit.h:24
Select
Definition
Select.h:26
Stop
Definition
Stop.h:24
System
Definition
System.h:24
Title
Definition
Title.h:24
Value
Definition
Value.h:24
OpalTrimCoil
Definition
OpalTrimCoil.h:38
Distribution
Definition
Distribution.h:188
OpalAsymmetricEnge
Definition
OpalAsymmetricEnge.h:9
OpalCavity
Definition
OpalCavity.h:26
OpalCCollimator
Definition
OpalCCollimator.h:25
OpalCyclotron
Definition
OpalCyclotron.h:25
OpalDegrader
Definition
OpalDegrader.h:25
OpalDrift
Definition
OpalDrift.h:28
OpalECollimator
Definition
OpalECollimator.h:25
OpalFlexibleCollimator
Definition
OpalFlexibleCollimator.h:25
OpalHKicker
Definition
OpalHKicker.h:24
OpalKicker
Definition
OpalKicker.h:26
OpalMarker
The MARKER element.
Definition
OpalMarker.h:28
OpalMonitor
Definition
OpalMonitor.h:23
OpalMultipole
Definition
OpalMultipole.h:24
OpalMultipoleT
Definition
OpalMultipoleT.h:25
OpalOctupole
Definition
OpalOctupole.h:25
OpalOffset::OpalLocalCartesianOffset
Definition
OpalLocalCartesianOffset.h:44
OpalOutputPlane
Interface for output plane element.
Definition
OpalOutputPlane.h:25
OpalPepperPot
Definition
OpalPepperPot.h:26
OpalPolynomialTimeDependence
Definition
OpalPolynomialTimeDependence.h:37
OpalProbe
Definition
OpalProbe.h:25
OpalQuadrupole
Definition
OpalQuadrupole.h:25
OpalRBend
Definition
OpalRBend.h:26
OpalRBend3D
Definition
OpalRBend3D.h:26
OpalRCollimator
Definition
OpalRCollimator.h:25
OpalRingDefinition
Definition
OpalRingDefinition.h:31
OpalSBend
Definition
OpalSBend.h:26
OpalSBend3D
Definition
OpalSBend3D.h:37
OpalScalingFFAMagnet
Definition
OpalScalingFFAMagnet.h:27
OpalSeptum
Definition
OpalSeptum.h:25
OpalSextupole
Definition
OpalSextupole.h:24
OpalSinusoidalTimeDependence
Definition
OpalSinusoidalTimeDependence.h:24
OpalSlit
Definition
OpalSlit.h:25
OpalSolenoid
Definition
OpalSolenoid.h:24
OpalSource
Definition
OpalSource.h:24
OpalStripper
Definition
OpalStripper.h:31
OpalTravelingWave
Definition
OpalTravelingWave.h:25
OpalUndulator
Definition
OpalUndulator.h:26
OpalVacuum
Definition
OpalVacuum.h:29
OpalVariableRFCavity
Definition
OpalVariableRFCavity.h:23
OpalVariableRFCavityFringeField
Definition
OpalVariableRFCavityFringeField.h:24
OpalVerticalFFAMagnet
Definition
OpalVerticalFFAMagnet.h:23
OpalVKicker
Definition
OpalVKicker.h:25
Line
Definition
Line.h:32
Sequence
Definition
Sequence.h:33
MacroCmd
Definition
MacroCmd.h:35
Constraint
Definition
Constraint.h:6
DVar
Definition
DVar.h:6
Objective
Definition
Objective.h:6
OptimizeCmd
The OPTIMIZE command.
Definition
OptimizeCmd.h:16
OpalSample
Definition
OpalSample.h:31
SampleCmd
Definition
SampleCmd.h:28
Beam
Definition
Beam.h:31
BoundaryGeometry
Definition
BoundaryGeometry.h:58
FieldSolver
Definition
FieldSolver.h:52
OpalWake
Definition
OpalWake.h:26
ParticleMatterInteraction
Definition
ParticleMatterInteraction.h:34
List
The LIST command.
Definition
List.h:32
TrackCmd
Definition
TrackCmd.h:27
OpalFilter
Definition
OpalFilter.h:30
BoolConstant
Definition
BoolConstant.h:24
RealConstant
Definition
RealConstant.h:24
RealVariable
Definition
RealVariable.h:24
RealVector
Definition
RealVector.h:24
StringConstant
Definition
StringConstant.h:24