OPAL (Object Oriented Parallel Accelerator Library) 2024.2
OPAL
StringConstant.cpp
Go to the documentation of this file.
1//
2// Class StringConstant
3// The STRING CONSTANT definition.
4//
5// Copyright (c) 2000 - 2023, Paul Scherrer Institut, Villigen PSI, Switzerland
6// All rights reserved
7//
8// This file is part of OPAL.
9//
10// OPAL is free software: you can redistribute it and/or modify
11// it under the terms of the GNU General Public License as published by
12// the Free Software Foundation, either version 3 of the License, or
13// (at your option) any later version.
14//
15// You should have received a copy of the GNU General Public License
16// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
17//
19
22#include "Utilities/Util.h"
23
24#include <iostream>
25
26#define CREATE_STRINGCONSTANT(x) \
27 opal->create(new StringConstant(x, this, x));
28
29
31 ValueDefinition(1, "STRING_CONSTANT",
32 "The \"STRING CONSTANT\" statement defines a global "
33 "string constant:\n"
34 "\tSTRING CONSTANT <name> = <String-expression>;\n") {
35 itsAttr[0] = Attributes::makeString("VALUE", "The constant value");
36
38
40 opal->create(new StringConstant("GITREVISION", this, Util::getGitRevision()));
41
42 // NOTE: Strings that contain a hyphen can't be written without quotes and
43 // no string constant should be defined for them
44
45 // Element / TYPE
47 CREATE_STRINGCONSTANT("CARBONCYCL");
48 CREATE_STRINGCONSTANT("CYCIAE");
49 CREATE_STRINGCONSTANT("AVFEQ");
51 CREATE_STRINGCONSTANT("BANDRF");
52 CREATE_STRINGCONSTANT("SYNCHROCYCLOTRON");
53 CREATE_STRINGCONSTANT("SINGLEGAP");
54 CREATE_STRINGCONSTANT("STANDING");
55 CREATE_STRINGCONSTANT("TEMPORAL");
56 CREATE_STRINGCONSTANT("SPATIAL");
57
58 // Beam / PARTICLE
59 CREATE_STRINGCONSTANT("ELECTRON");
60 CREATE_STRINGCONSTANT("PROTON");
61 CREATE_STRINGCONSTANT("POSITRON");
62 CREATE_STRINGCONSTANT("ANTIPROTON");
63 CREATE_STRINGCONSTANT("CARBON");
64 CREATE_STRINGCONSTANT("HMINUS");
65 CREATE_STRINGCONSTANT("URANIUM");
67 CREATE_STRINGCONSTANT("DEUTERON");
68 CREATE_STRINGCONSTANT("XENON");
70 CREATE_STRINGCONSTANT("ALPHA");
71
72 // Distribution / TYPE
73 CREATE_STRINGCONSTANT("FROMFILE");
74 CREATE_STRINGCONSTANT("GAUSS");
75 CREATE_STRINGCONSTANT("BINOMIAL");
76 CREATE_STRINGCONSTANT("FLATTOP");
77 CREATE_STRINGCONSTANT("MULTIGAUSS");
78 CREATE_STRINGCONSTANT("GUNGAUSSFLATTOPTH");
79 CREATE_STRINGCONSTANT("ASTRAFLATTOPTH");
80 CREATE_STRINGCONSTANT("GAUSSMATCHED");
81
82 // Distribution / INPUTMOUNITS
84 CREATE_STRINGCONSTANT("EVOVERC");
85
86 // Distribution / EMISSIONMODEL
87 CREATE_STRINGCONSTANT("ASTRA");
88 CREATE_STRINGCONSTANT("NONEQUIL");
89 // additionally: NONE
90
91 // TrimCoil / TYPE
92 // CREATE_STRINGCONSTANT("PSI-BFIELD");
93 // CREATE_STRINGCONSTANT("PSI-PHASE");
94 // CREATE_STRINGCONSTANT("PSI-BFIELD-MIRRORED");
95
96 // OptimizeCmd / CROSSOVER
97 CREATE_STRINGCONSTANT("BLEND");
98 CREATE_STRINGCONSTANT("NAIVEONEPOINT");
99 CREATE_STRINGCONSTANT("NAIVEUNIFORM");
100 CREATE_STRINGCONSTANT("SIMULATEDBINARY");
101
102 // OptimizeCmd / MUTATION
103 CREATE_STRINGCONSTANT("ONEBIT");
104 CREATE_STRINGCONSTANT("INDEPENDENTBIT");
105
106 // OpalSample / TYPE
107 CREATE_STRINGCONSTANT("UNIFORM");
108 CREATE_STRINGCONSTANT("UNIFORM_INT");
109 CREATE_STRINGCONSTANT("GAUSSIAN");
110 CREATE_STRINGCONSTANT("LATIN_HYPERCUBE");
111 CREATE_STRINGCONSTANT("RANDOM_SEQUENCE_UNIFORM_INT");
112 CREATE_STRINGCONSTANT("RANDOM_SEQUENCE_UNIFORM");
113
114 // Option / RNGTYPE
115 CREATE_STRINGCONSTANT("RANDOM");
116 CREATE_STRINGCONSTANT("HALTON");
117 CREATE_STRINGCONSTANT("SOBOL");
118 CREATE_STRINGCONSTANT("NIEDERREITER");
119
120 // OpalWake / TYPE
121 // CREATE_STRINGCONSTANT("1D-CSR");
122 // CREATE_STRINGCONSTANT("1D-CSR-IGF");
123 // CREATE_STRINGCONSTANT("LONG-SHORT-RANGE");
124 // CREATE_STRINGCONSTANT("TRANSV-SHORT-RANGE");
125
126 // OpalWake / CONDUCT
129
130 // OutputPlane / PLACEMENT_STYLE
131 CREATE_STRINGCONSTANT("CENTRE_NORMAL");
132 // additionally: PROBE;
133
134 // OutputPlane / ALGORITHM
135 CREATE_STRINGCONSTANT("INTERPOLATION");
136 // additionally: RK4;
137
138 // ParticleMatterInteraction / TYPE
139 CREATE_STRINGCONSTANT("SCATTERING");
140 CREATE_STRINGCONSTANT("BEAMSTRIPPING");
141
142 // FieldSolver / FSTYPE
144 CREATE_STRINGCONSTANT("FFTPERIODIC");
145 CREATE_STRINGCONSTANT("SAAMG");
148 CREATE_STRINGCONSTANT("AMR_MG");
150 // additionally: NONE
151
152 // FieldSolver / BCFFT
153 CREATE_STRINGCONSTANT("OPEN");
154 CREATE_STRINGCONSTANT("DIRICHLET");
155 CREATE_STRINGCONSTANT("PERIODIC");
156
157 // FieldSolver / GREENSF
158 CREATE_STRINGCONSTANT("STANDARD");
159 CREATE_STRINGCONSTANT("INTEGRATED");
160
161 // FieldSolver / ITSOLVER
163 CREATE_STRINGCONSTANT("BICGSTAB");
164 CREATE_STRINGCONSTANT("GMRES");
165 CREATE_STRINGCONSTANT("MINRES");
166 CREATE_STRINGCONSTANT("PCPG");
167 CREATE_STRINGCONSTANT("STOCHASTIC_CG");
168 CREATE_STRINGCONSTANT("RECYCLING_CG");
169 CREATE_STRINGCONSTANT("RECYCLING_GMRES");
170 CREATE_STRINGCONSTANT("KLU2");
171 CREATE_STRINGCONSTANT("SUPERLU");
172 CREATE_STRINGCONSTANT("UMFPACK");
173 CREATE_STRINGCONSTANT("PARDISO_MKL");
174 CREATE_STRINGCONSTANT("MUMPS");
175 CREATE_STRINGCONSTANT("LAPACK");
177
178 // FieldSolver / INTERPL
179 CREATE_STRINGCONSTANT("CONSTANT");
180 CREATE_STRINGCONSTANT("LINEAR");
181 CREATE_STRINGCONSTANT("QUADRATIC");
182
183 // FieldSolver / PRECMODE
185 CREATE_STRINGCONSTANT("HIERARCHY");
186 CREATE_STRINGCONSTANT("REUSE");
187
188 // FieldSolver / AMR_MG_SMOOTHER
191 CREATE_STRINGCONSTANT("JACOBI");
192
193 // FieldSolver / AMR_MG_PREC
194 CREATE_STRINGCONSTANT("ILUT");
195 CREATE_STRINGCONSTANT("CHEBYSHEV");
196 CREATE_STRINGCONSTANT("RILUK");
197 CREATE_STRINGCONSTANT("BLOCK_JACOBI");
198 CREATE_STRINGCONSTANT("BLOCK_GS");
199 // additionally: NONE, JACOBI, GS, SA
200
201 // FieldSolver / AMR_MG_INTERP
202 CREATE_STRINGCONSTANT("TRILINEAR");
203 CREATE_STRINGCONSTANT("LAGRANGE");
205
206 // FieldSolver / AMR_MG_NORM
207 CREATE_STRINGCONSTANT("L1_NORM");
208 CREATE_STRINGCONSTANT("L2_NORM");
209 CREATE_STRINGCONSTANT("LINF_NORM");
210
211 // FieldSolver / AMR_MG_REUSE
214 CREATE_STRINGCONSTANT("SYMBOLIC");
215 CREATE_STRINGCONSTANT("FULL");
216 // additionally: NONE
217
218 // Option / PSDUMPFRAME
219 CREATE_STRINGCONSTANT("GLOBAL");
220 CREATE_STRINGCONSTANT("BUNCH_MEAN");
221 CREATE_STRINGCONSTANT("REFERENCE");
222
223 // OpalFilter / TYPE
224 // CREATE_STRINGCONSTANT("SAVITZKY-GOLAY");
225 CREATE_STRINGCONSTANT("FIXEDFFTLOWPASS");
226 CREATE_STRINGCONSTANT("RELATIVEFFTLOWPASS");
227 CREATE_STRINGCONSTANT("STENCIL");
228
229 // TrackRun / METHOD
230 CREATE_STRINGCONSTANT("THICK");
231 // CREATE_STRINGCONSTANT("OPAL-T");
232 // CREATE_STRINGCONSTANT("PARALLEL-T");
233 // CREATE_STRINGCONSTANT("OPAL-CYCL");
234 // CREATE_STRINGCONSTANT("CYCLOTRON-T");
235
236 // TrackRun / MBMODE
237 CREATE_STRINGCONSTANT("FORCE");
238 CREATE_STRINGCONSTANT("AUTO");
239
240 // TrackRun / MB_BINNING
241 CREATE_STRINGCONSTANT("GAMMA_BINNING");
242 CREATE_STRINGCONSTANT("BUNCH_BINNING");
243
244 // ParticleMatterInteraction / MATERIAL
246 CREATE_STRINGCONSTANT("ALUMINAAL2O3");
247 CREATE_STRINGCONSTANT("ALUMINUM");
248 CREATE_STRINGCONSTANT("BERYLLIUM");
249 CREATE_STRINGCONSTANT("BORONCARBIDE");
250 CREATE_STRINGCONSTANT("COPPER");
251 CREATE_STRINGCONSTANT("GOLD");
252 CREATE_STRINGCONSTANT("GRAPHITE");
253 CREATE_STRINGCONSTANT("GRAPHITER6710");
254 CREATE_STRINGCONSTANT("KAPTON");
255 CREATE_STRINGCONSTANT("MOLYBDENUM");
256 CREATE_STRINGCONSTANT("MYLAR");
257 CREATE_STRINGCONSTANT("TITANIUM");
258 CREATE_STRINGCONSTANT("WATER");
259
260 // TrackCmd / TIMEINTEGRATOR
264
265 // OpalVacuum / GAS
267 // additionally: AIR
268
269 // BoundaryGeometry / TOPO
270 CREATE_STRINGCONSTANT("RECTANGULAR");
271 CREATE_STRINGCONSTANT("BOXCORNER");
272 CREATE_STRINGCONSTANT("ELLIPTIC");
273
274 // DumpEMFields / COORDINATE_SYSTEM
275 CREATE_STRINGCONSTANT("CARTESIAN");
276 CREATE_STRINGCONSTANT("CYLINDRICAL");
277}
278
280 StringConstant* parent)
281 : ValueDefinition(name, parent) {
282}
283
285 StringConstant* parent,
286 const std::string& value)
287 : ValueDefinition(name, parent) {
288
290 itsAttr[0].setReadOnly(true);
291 builtin = true;
292}
293
296
298 return false;
299}
300
302 return new StringConstant(name, this);
303}
304
305std::string StringConstant::getString() const {
307}
308
309void StringConstant::print(std::ostream& os) const {
310 os << "STRING " << getOpalName() << '=' << itsAttr[0] << ';';
311 os << std::endl;
312}
313
314void StringConstant::printValue(std::ostream& os) const {
315 os << itsAttr[0];
316}
#define CREATE_STRINGCONSTANT(x)
const std::string name
void setString(Attribute &attr, const std::string &val)
Set string value.
std::string getString(const Attribute &attr)
Get string value.
Attribute makeString(const std::string &name, const std::string &help)
Make string attribute.
std::string getGitRevision()
Definition Util.cpp:33
void registerOwnership(const AttributeHandler::OwnerType &itsClass) const
Definition Object.cpp:191
const std::string & getOpalName() const
Return object name.
Definition Object.cpp:310
Object(int size, const char *name, const char *help)
Constructor for exemplars.
Definition Object.cpp:356
std::vector< Attribute > itsAttr
The object attributes.
Definition Object.h:216
bool builtin
Built-in flag.
Definition Object.h:233
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
ValueDefinition(int size, const char *name, const char *help)
Constructor for exemplars.
Attribute & value()
Return the attribute representing the value of the definition.
virtual std::string getString() const
Return value.
virtual StringConstant * clone(const std::string &name)
Make clone.
virtual void print(std::ostream &) const
Print the constant.
virtual ~StringConstant()
StringConstant()
Exemplar constructor.
virtual void printValue(std::ostream &os) const
Print its value.
virtual bool canReplaceBy(Object *object)
Test if object can be replaced.