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//
27
29
30// Basic action commands.
31#include "BasicActions/Call.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"
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"
55#include "Structure/OpalWake.h"
59#include "Tables/List.h"
60
61// Value definitions commands.
67
68// Element commands.
70#include "Elements/OpalCavity.h"
74#include "Elements/OpalDrift.h"
76#include "Elements/OpalEnge.h"
79#include "Elements/OpalKicker.h"
80#include "Elements/OpalMarker.h"
93#include "Elements/OpalProbe.h"
95#include "Elements/OpalRBend.h"
99#include "Elements/OpalSBend.h"
100#include "Elements/OpalSBend3D.h"
102#include "Elements/OpalSeptum.h"
104#include "Elements/OpalSlit.h"
106#include "Elements/OpalSource.h"
109#include "Elements/OpalVacuum.h"
113#include "Elements/OpalVKicker.h"
114
115#ifdef ENABLE_OPAL_FEL
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
138namespace {
139
140 void makeActions() {
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() {
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());
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() {
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());
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());
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());
237 opal->create(new OpalVerticalFFAMagnet());
238 opal->create(new OpalVKicker());
239
240 opal->create(new Line());
241 opal->create(new Sequence());
242 }
243};
244
245namespace Configure {
246 void configure() {
247 makeDefinitions();
248 makeElements();
249 makeActions();
251 }
252};
void fillChanges()
Definition changes.cpp:9
void configure()
Configure all commands.
The global OPAL structure.
Definition OpalData.h:49
void create(Object *newObject)
Create new object.
Definition OpalData.cpp:476
static OpalData * getInstance()
Definition OpalData.cpp:196
Definition Call.h:24
Definition Echo.h:24
Definition Help.h:24
Definition Quit.h:24
Definition Stop.h:24
Definition Title.h:24
Definition Value.h:24
The MARKER element.
Definition OpalMarker.h:28
Interface for output plane element.
Definition Line.h:32
Definition DVar.h:6
The OPTIMIZE command.
Definition OptimizeCmd.h:16
Definition Beam.h:31
The LIST command.
Definition List.h:32