OPAL (Object Oriented Parallel Accelerator Library)
2024.1
OPAL
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
src
OpalConfigure
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/OpalMultipoleTStraight.h
"
85
#include "
Elements/OpalMultipoleTCurvedConstRadius.h
"
86
#include "
Elements/OpalMultipoleTCurvedVarRadius.h
"
87
#include "
Elements/OpalOctupole.h
"
88
#include "
Elements/OpalOffset/OpalLocalCartesianOffset.h
"
89
#include "
Elements/OpalOffset/OpalLocalCylindricalOffset.h
"
90
#include "
Elements/OpalOffset/OpalGlobalCartesianOffset.h
"
91
#include "
Elements/OpalOffset/OpalGlobalCylindricalOffset.h
"
92
#include "
Elements/OpalOutputPlane.h
"
93
#include "
Elements/OpalPepperPot.h
"
94
#include "
Elements/OpalPolynomialTimeDependence.h
"
95
#include "
Elements/OpalProbe.h
"
96
#include "
Elements/OpalQuadrupole.h
"
97
#include "
Elements/OpalRBend.h
"
98
#include "
Elements/OpalRBend3D.h
"
99
#include "
Elements/OpalRCollimator.h
"
100
#include "
Elements/OpalRingDefinition.h
"
101
#include "
Elements/OpalSBend.h
"
102
#include "
Elements/OpalSBend3D.h
"
103
#include "
Elements/OpalScalingFFAMagnet.h
"
104
#include "
Elements/OpalSeptum.h
"
105
#include "
Elements/OpalSextupole.h
"
106
#include "
Elements/OpalSlit.h
"
107
#include "
Elements/OpalSolenoid.h
"
108
#include "
Elements/OpalSource.h
"
109
#include "
Elements/OpalStripper.h
"
110
#include "
Elements/OpalTravelingWave.h
"
111
#include "
Elements/OpalVacuum.h
"
112
#include "
Elements/OpalVariableRFCavity.h
"
113
#include "
Elements/OpalVariableRFCavityFringeField.h
"
114
#include "
Elements/OpalVerticalFFAMagnet.h
"
115
#include "
Elements/OpalVKicker.h
"
116
117
#ifdef ENABLE_OPAL_FEL
118
#include "
Elements/OpalUndulator.h
"
119
#endif
120
121
// Structure-related commands.
122
#include "
Lines/Line.h
"
123
#include "
Lines/Sequence.h
"
124
125
// Optimize command
126
#include "
Optimize/OptimizeCmd.h
"
127
#include "
Optimize/DVar.h
"
128
#include "
Optimize/Objective.h
"
129
#include "
Optimize/Constraint.h
"
130
131
// Sample command
132
#include "
Sample/SampleCmd.h
"
133
#include "
Sample/OpalSample.h
"
134
135
#include "
changes.h
"
136
137
// Modify these methods to add new commands.
138
// ------------------------------------------------------------------------
139
140
namespace
{
141
142
void
makeActions() {
143
OpalData
*opal =
OpalData::getInstance
();
144
opal->
create
(
new
Call
());
145
opal->
create
(
new
DumpFields
());
146
opal->
create
(
new
DumpEMFields
());
147
opal->
create
(
new
Echo
());
148
opal->
create
(
new
Help
());
149
opal->
create
(
new
List
());
150
opal->
create
(
new
Option
());
151
opal->
create
(
new
OptimizeCmd
());
152
opal->
create
(
new
SampleCmd
());
153
opal->
create
(
new
Select
());
154
opal->
create
(
new
Stop
());
155
opal->
create
(
new
Quit
());
156
opal->
create
(
new
PSystem
());
157
opal->
create
(
new
System
());
158
opal->
create
(
new
Title
());
159
opal->
create
(
new
TrackCmd
());
160
opal->
create
(
new
Value
());
161
}
162
163
void
makeDefinitions() {
164
OpalData
*opal =
OpalData::getInstance
();
165
// Must create the value definitions first.
166
opal->
create
(
new
BoolConstant
());
167
opal->
create
(
new
RealConstant
());
168
opal->
create
(
new
RealVariable
());
169
opal->
create
(
new
RealVector
());
170
opal->
create
(
new
StringConstant
());
171
172
opal->
create
(
new
Beam
());
173
opal->
create
(
new
FieldSolver
());
174
opal->
create
(
new
BoundaryGeometry
());
175
opal->
create
(
new
OpalWake
());
176
opal->
create
(
new
ParticleMatterInteraction
());
177
178
opal->
create
(
new
OpalFilter
());
179
opal->
create
(
new
OpalTrimCoil
());
180
181
opal->
create
(
new
Distribution
());
182
183
opal->
create
(
new
MacroCmd
());
184
185
opal->
create
(
new
DVar
());
186
opal->
create
(
new
Objective
());
187
opal->
create
(
new
Constraint
());
188
189
opal->
create
(
new
OpalSample
());
190
}
191
192
void
makeElements() {
193
OpalData
*opal =
OpalData::getInstance
();
194
opal->
create
(
new
OpalAsymmetricEnge
());
195
opal->
create
(
new
OpalCavity
());
196
opal->
create
(
new
OpalCCollimator
());
197
opal->
create
(
new
OpalCyclotron
());
198
opal->
create
(
new
OpalDegrader
());
199
opal->
create
(
new
OpalDrift
());
200
opal->
create
(
new
OpalECollimator
());
201
opal->
create
(
new
OpalFlexibleCollimator
());
202
opal->
create
(
new
OpalHKicker
());
203
opal->
create
(
new
OpalKicker
());
204
opal->
create
(
new
OpalMarker
());
205
opal->
create
(
new
OpalMonitor
());
206
opal->
create
(
new
OpalMultipole
());
207
opal->
create
(
new
OpalMultipoleT
());
208
opal->
create
(
new
OpalMultipoleTStraight
());
209
opal->
create
(
new
OpalMultipoleTCurvedConstRadius
());
210
opal->
create
(
new
OpalMultipoleTCurvedVarRadius
());
211
opal->
create
(
new
OpalOctupole
());
212
opal->
create
(
new
OpalOffset::OpalLocalCartesianOffset
());
213
// opal->create(new OpalOffset::OpalLocalCylindricalOffset());
214
// opal->create(new OpalOffset::OpalGlobalCartesianOffset());
215
// opal->create(new OpalOffset::OpalGlobalCylindricalOffset());
216
opal->
create
(
new
OpalOutputPlane
());
217
opal->
create
(
new
OpalPepperPot
());
218
opal->
create
(
new
OpalPolynomialTimeDependence
());
219
opal->
create
(
new
OpalProbe
());
220
opal->
create
(
new
OpalQuadrupole
());
221
opal->
create
(
new
OpalRBend
());
222
opal->
create
(
new
OpalRBend3D
());
223
opal->
create
(
new
OpalRCollimator
());
224
opal->
create
(
new
OpalRingDefinition
());
225
opal->
create
(
new
OpalSBend
());
226
opal->
create
(
new
OpalSBend3D
());
227
opal->
create
(
new
OpalScalingFFAMagnet
());
228
opal->
create
(
new
OpalSeptum
());
229
opal->
create
(
new
OpalSextupole
());
230
opal->
create
(
new
OpalSlit
());
231
opal->
create
(
new
OpalSolenoid
());
232
opal->
create
(
new
OpalSource
());
233
opal->
create
(
new
OpalStripper
());
234
opal->
create
(
new
OpalTravelingWave
());
235
#ifdef ENABLE_OPAL_FEL
236
opal->
create
(
new
OpalUndulator
());
237
#endif
238
opal->
create
(
new
OpalVacuum
());
239
opal->
create
(
new
OpalVariableRFCavity
());
240
opal->
create
(
new
OpalVariableRFCavityFringeField
());
241
opal->
create
(
new
OpalVerticalFFAMagnet
());
242
opal->
create
(
new
OpalVKicker
());
243
244
opal->
create
(
new
Line
());
245
opal->
create
(
new
Sequence
());
246
}
247
};
248
249
namespace
Configure {
250
void
configure
() {
251
makeDefinitions();
252
makeElements();
253
makeActions();
254
Versions::fillChanges
();
255
}
256
};
OpalVariableRFCavity.h
OpalProbe
Definition:
OpalProbe.h:25
OpalData
The global OPAL structure.
Definition:
OpalData.h:49
RealVariable.h
OpalData::getInstance
static OpalData * getInstance()
Definition:
OpalData.cpp:196
OpalSource.h
OpalMonitor
Definition:
OpalMonitor.h:23
OpalFilter.h
OpalSBend3D.h
Constraint
Definition:
Constraint.h:6
TrackCmd.h
OpalSample.h
OpalSBend.h
Distribution
Definition:
Distribution.h:188
OpalDrift
Definition:
OpalDrift.h:28
OpalCavity.h
OpalRBend3D
Definition:
OpalRBend3D.h:26
Echo.h
FieldSolver.h
OpalUndulator
Definition:
OpalUndulator.h:26
OpalMultipoleTCurvedConstRadius
Definition:
OpalMultipoleTCurvedConstRadius.h:40
OpalSBend3D
Definition:
OpalSBend3D.h:37
OpalFilter
Definition:
OpalFilter.h:30
Call
Definition:
Call.h:24
OpalUndulator.h
OpalSample
Definition:
OpalSample.h:31
OpalMultipoleTCurvedVarRadius.h
BoolConstant.h
Select.h
OpalTravelingWave.h
Distribution.h
OpalOctupole
Definition:
OpalOctupole.h:25
OpalAsymmetricEnge
Definition:
OpalAsymmetricEnge.h:9
OpalKicker.h
OpalVariableRFCavityFringeField
Definition:
OpalVariableRFCavityFringeField.h:24
BoolConstant
Definition:
BoolConstant.h:24
OpalDrift.h
RealVariable
Definition:
RealVariable.h:24
OpalSextupole
Definition:
OpalSextupole.h:24
OpalVKicker.h
OpalPolynomialTimeDependence
Definition:
OpalPolynomialTimeDependence.h:37
DumpEMFields.h
OpalVerticalFFAMagnet.h
OpalAsymmetricEnge.h
OptimizeCmd
The OPTIMIZE command.
Definition:
OptimizeCmd.h:16
StringConstant.h
OpalWake
Definition:
OpalWake.h:26
Configure.h
OpalMarker
The MARKER element.
Definition:
OpalMarker.h:28
OpalProbe.h
Call.h
OpalSolenoid
Definition:
OpalSolenoid.h:24
Sequence.h
OpalOffset::OpalLocalCartesianOffset
Definition:
OpalLocalCartesianOffset.h:44
OpalGlobalCylindricalOffset.h
Value.h
OpalMultipoleT.h
Sequence
Definition:
Sequence.h:33
List.h
PSystem.h
OpalFlexibleCollimator.h
Option.h
OpalTrimCoil
Definition:
OpalTrimCoil.h:38
OpalEnge.h
OpalWake.h
Objective.h
OpalSBend
Definition:
OpalSBend.h:26
OpalSextupole.h
MacroCmd.h
OpalRingDefinition
Definition:
OpalRingDefinition.h:31
OpalRCollimator.h
OpalCyclotron
Definition:
OpalCyclotron.h:25
DVar
Definition:
DVar.h:6
OpalPepperPot.h
OpalData::create
void create(Object *newObject)
Create new object.
Definition:
OpalData.cpp:476
OpalOctupole.h
BoundaryGeometry.h
Select
Definition:
Select.h:26
Line.h
OpalMultipoleTStraight.h
OpalVariableRFCavityFringeField.h
Echo
Definition:
Echo.h:24
TrackCmd
Definition:
TrackCmd.h:27
FieldSolver
Definition:
FieldSolver.h:52
OpalRBend
Definition:
OpalRBend.h:26
OpalDegrader
Definition:
OpalDegrader.h:25
RealVector.h
Configure::configure
void configure()
Configure all commands.
Definition:
Configure.cpp:250
Help
Definition:
Help.h:24
OpalVKicker
Definition:
OpalVKicker.h:25
OpalMultipoleT
Definition:
OpalMultipoleT.h:24
Constraint.h
OpalScalingFFAMagnet.h
Versions::fillChanges
void fillChanges()
Definition:
changes.cpp:9
OpalRBend.h
Objective
Definition:
Objective.h:6
OpalCCollimator.h
OpalQuadrupole.h
Help.h
OpalVariableRFCavity
Definition:
OpalVariableRFCavity.h:23
OpalMultipoleTStraight
Definition:
OpalMultipoleTStraight.h:40
OpalSeptum
Definition:
OpalSeptum.h:25
Quit
Definition:
Quit.h:24
OpalVacuum.h
OpalPepperPot
Definition:
OpalPepperPot.h:26
OpalCCollimator
Definition:
OpalCCollimator.h:25
RealConstant.h
Stop.h
OpalData.h
OptimizeCmd.h
OpalSolenoid.h
System
Definition:
System.h:24
OpalMarker.h
OpalSlit.h
OpalKicker
Definition:
OpalKicker.h:26
OpalECollimator.h
OpalSlit
Definition:
OpalSlit.h:25
OpalQuadrupole
Definition:
OpalQuadrupole.h:25
DumpFields.h
Option
Definition:
Option.h:30
List
The LIST command.
Definition:
List.h:32
OpalTravelingWave
Definition:
OpalTravelingWave.h:25
OpalMultipole
Definition:
OpalMultipole.h:24
OpalLocalCartesianOffset.h
changes.h
OpalRCollimator
Definition:
OpalRCollimator.h:25
OpalECollimator
Definition:
OpalECollimator.h:25
OpalMultipoleTCurvedConstRadius.h
Quit.h
DumpFields
Definition:
DumpFields.h:54
OpalHKicker.h
OpalVacuum
Definition:
OpalVacuum.h:29
ParticleMatterInteraction
Definition:
ParticleMatterInteraction.h:34
OpalDegrader.h
Value
Definition:
Value.h:24
ParticleMatterInteraction.h
OpalScalingFFAMagnet
Definition:
OpalScalingFFAMagnet.h:27
SampleCmd.h
Title
Definition:
Title.h:24
OpalCyclotron.h
OpalRingDefinition.h
OpalVerticalFFAMagnet
Definition:
OpalVerticalFFAMagnet.h:23
OpalOutputPlane
Interface for output plane element.
Definition:
OpalOutputPlane.h:25
OpalPolynomialTimeDependence.h
OpalGlobalCartesianOffset.h
RealVector
Definition:
RealVector.h:24
Title.h
OpalMultipole.h
System.h
OpalMonitor.h
Beam
Definition:
Beam.h:31
OpalTrimCoil.h
OpalStripper
Definition:
OpalStripper.h:31
OpalStripper.h
OpalMultipoleTCurvedVarRadius
Definition:
OpalMultipoleTCurvedVarRadius.h:40
BoundaryGeometry
Definition:
BoundaryGeometry.h:58
PSystem
Definition:
PSystem.h:24
DVar.h
OpalSource
Definition:
OpalSource.h:24
Stop
Definition:
Stop.h:24
OpalSeptum.h
OpalFlexibleCollimator
Definition:
OpalFlexibleCollimator.h:25
RealConstant
Definition:
RealConstant.h:24
OpalRBend3D.h
OpalCavity
Definition:
OpalCavity.h:26
DumpEMFields
Definition:
DumpEMFields.h:54
OpalOutputPlane.h
StringConstant
Definition:
StringConstant.h:24
OpalLocalCylindricalOffset.h
Line
Definition:
Line.h:32
Beam.h
SampleCmd
Definition:
SampleCmd.h:28
OpalHKicker
Definition:
OpalHKicker.h:24
MacroCmd
Definition:
MacroCmd.h:35
Generated on Tue Jul 2 2024 15:05:24 for OPAL (Object Oriented Parallel Accelerator Library) by
1.8.5