OPAL (Object Oriented Parallel Accelerator Library) 2022.1
OPAL
StringConstant.cpp
Go to the documentation of this file.
1//
2// Class StringConstant
3// The STRING CONSTANT definition.
4//
5// Copyright (c) 2000 - 2021, 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 // Beam / PARTICLE
58 CREATE_STRINGCONSTANT("ELECTRON");
59 CREATE_STRINGCONSTANT("PROTON");
60 CREATE_STRINGCONSTANT("POSITRON");
61 CREATE_STRINGCONSTANT("ANTIPROTON");
62 CREATE_STRINGCONSTANT("CARBON");
63 CREATE_STRINGCONSTANT("HMINUS");
64 CREATE_STRINGCONSTANT("URANIUM");
66 CREATE_STRINGCONSTANT("DEUTERON");
67 CREATE_STRINGCONSTANT("XENON");
69 CREATE_STRINGCONSTANT("ALPHA");
70 // Distribution / TYPE
71 CREATE_STRINGCONSTANT("FROMFILE");
72 CREATE_STRINGCONSTANT("GAUSS");
73 CREATE_STRINGCONSTANT("BINOMIAL");
74 CREATE_STRINGCONSTANT("FLATTOP");
75 CREATE_STRINGCONSTANT("MULTIGAUSS");
76 CREATE_STRINGCONSTANT("GUNGAUSSFLATTOPTH");
77 CREATE_STRINGCONSTANT("ASTRAFLATTOPTH");
78 CREATE_STRINGCONSTANT("GAUSSMATCHED");
79
80 // Distribution / INPUTMOUNITS
82 CREATE_STRINGCONSTANT("EVOVERC");
83
84 // Distribution / EMISSIONMODEL
85 CREATE_STRINGCONSTANT("ASTRA");
86 CREATE_STRINGCONSTANT("NONEQUIL");
87 // additionally: NONE
88
89 // TrimCoil / TYPE
90 // CREATE_STRINGCONSTANT("PSI-BFIELD");
91 // CREATE_STRINGCONSTANT("PSI-PHASE");
92 // CREATE_STRINGCONSTANT("PSI-BFIELD-MIRRORED");
93
94 // OptimizeCmd / CROSSOVER
95 CREATE_STRINGCONSTANT("BLEND");
96 CREATE_STRINGCONSTANT("NAIVEONEPOINT");
97 CREATE_STRINGCONSTANT("NAIVEUNIFORM");
98 CREATE_STRINGCONSTANT("SIMULATEDBINARY");
99
100 // OptimizeCmd / MUTATION
101 CREATE_STRINGCONSTANT("ONEBIT");
102 CREATE_STRINGCONSTANT("INDEPENDENTBIT");
103
104 // OpalSample / TYPE
105 CREATE_STRINGCONSTANT("UNIFORM");
106 CREATE_STRINGCONSTANT("UNIFORM_INT");
107 CREATE_STRINGCONSTANT("GAUSSIAN");
108 CREATE_STRINGCONSTANT("LATIN_HYPERCUBE");
109 CREATE_STRINGCONSTANT("RANDOM_SEQUENCE_UNIFORM_INT");
110 CREATE_STRINGCONSTANT("RANDOM_SEQUENCE_UNIFORM");
111
112 // Option / RNGTYPE
113 CREATE_STRINGCONSTANT("RANDOM");
114 CREATE_STRINGCONSTANT("HALTON");
115 CREATE_STRINGCONSTANT("SOBOL");
116 CREATE_STRINGCONSTANT("NIEDERREITER");
117
118 // OpalWake / TYPE
119 // CREATE_STRINGCONSTANT("1D-CSR");
120 // CREATE_STRINGCONSTANT("1D-CSR-IGF");
121 // CREATE_STRINGCONSTANT("LONG-SHORT-RANGE");
122 // CREATE_STRINGCONSTANT("TRANSV-SHORT-RANGE");
123
124 // OpalWake / CONDUCT
127
128 // ParticleMatterInteraction / TYPE
129 CREATE_STRINGCONSTANT("SCATTERING");
130 CREATE_STRINGCONSTANT("BEAMSTRIPPING");
131
132 // FieldSolver / FSTYPE
134 CREATE_STRINGCONSTANT("FFTPERIODIC");
135 CREATE_STRINGCONSTANT("SAAMG");
138 CREATE_STRINGCONSTANT("AMR_MG");
140 // additionally: NONE
141
142 // FieldSolver / BCFFT
143 CREATE_STRINGCONSTANT("OPEN");
144 CREATE_STRINGCONSTANT("DIRICHLET");
145 CREATE_STRINGCONSTANT("PERIODIC");
146
147 // FieldSolver / GREENSF
148 CREATE_STRINGCONSTANT("STANDARD");
149 CREATE_STRINGCONSTANT("INTEGRATED");
150
151 // FieldSolver / ITSOLVER
153 CREATE_STRINGCONSTANT("BICGSTAB");
154 CREATE_STRINGCONSTANT("GMRES");
155 CREATE_STRINGCONSTANT("MINRES");
156 CREATE_STRINGCONSTANT("PCPG");
157 CREATE_STRINGCONSTANT("STOCHASTIC_CG");
158 CREATE_STRINGCONSTANT("RECYCLING_CG");
159 CREATE_STRINGCONSTANT("RECYCLING_GMRES");
160 CREATE_STRINGCONSTANT("KLU2");
161 CREATE_STRINGCONSTANT("SUPERLU");
162 CREATE_STRINGCONSTANT("UMFPACK");
163 CREATE_STRINGCONSTANT("PARDISO_MKL");
164 CREATE_STRINGCONSTANT("MUMPS");
165 CREATE_STRINGCONSTANT("LAPACK");
167
168 // FieldSolver / INTERPL
169 CREATE_STRINGCONSTANT("CONSTANT");
170 CREATE_STRINGCONSTANT("LINEAR");
171 CREATE_STRINGCONSTANT("QUADRATIC");
172
173 // FieldSolver / PRECMODE
175 CREATE_STRINGCONSTANT("HIERARCHY");
176 CREATE_STRINGCONSTANT("REUSE");
177
178 // FieldSolver / AMR_MG_SMOOTHER
181 CREATE_STRINGCONSTANT("JACOBI");
182
183 // FieldSolver / AMR_MG_PREC
184 CREATE_STRINGCONSTANT("ILUT");
185 CREATE_STRINGCONSTANT("CHEBYSHEV");
186 CREATE_STRINGCONSTANT("RILUK");
187 CREATE_STRINGCONSTANT("BLOCK_JACOBI");
188 CREATE_STRINGCONSTANT("BLOCK_GS");
189 // additionally: NONE, JACOBI, GS, SA
190
191 // FieldSolver / AMR_MG_INTERP
192 CREATE_STRINGCONSTANT("TRILINEAR");
193 CREATE_STRINGCONSTANT("LAGRANGE");
195
196 // FieldSolver / AMR_MG_NORM
197 CREATE_STRINGCONSTANT("L1_NORM");
198 CREATE_STRINGCONSTANT("L2_NORM");
199 CREATE_STRINGCONSTANT("LINF_NORM");
200
201 // FieldSolver / AMR_MG_REUSE
204 CREATE_STRINGCONSTANT("SYMBOLIC");
205 CREATE_STRINGCONSTANT("FULL");
206 // additionally: NONE
207
208 // Option / PSDUMPFRAME
209 CREATE_STRINGCONSTANT("GLOBAL");
210 CREATE_STRINGCONSTANT("BUNCH_MEAN");
211 CREATE_STRINGCONSTANT("REFERENCE");
212
213 // OpalFilter / TYPE
214 // CREATE_STRINGCONSTANT("SAVITZKY-GOLAY");
215 CREATE_STRINGCONSTANT("FIXEDFFTLOWPASS");
216 CREATE_STRINGCONSTANT("RELATIVEFFTLOWPASS");
217 CREATE_STRINGCONSTANT("STENCIL");
218
219 // TrackRun / METHOD
220 CREATE_STRINGCONSTANT("THICK");
221 // CREATE_STRINGCONSTANT("OPAL-T");
222 // CREATE_STRINGCONSTANT("PARALLEL-T");
223 // CREATE_STRINGCONSTANT("OPAL-CYCL");
224 // CREATE_STRINGCONSTANT("CYCLOTRON-T");
225
226 // TrackRun / MBMODE
227 CREATE_STRINGCONSTANT("FORCE");
228 CREATE_STRINGCONSTANT("AUTO");
229
230 // TrackRun / MB_BINNING
231 CREATE_STRINGCONSTANT("GAMMA_BINNING");
232 CREATE_STRINGCONSTANT("BUNCH_BINNING");
233
234 // ParticleMatterInteraction / MATERIAL
236 CREATE_STRINGCONSTANT("ALUMINAAL2O3");
237 CREATE_STRINGCONSTANT("ALUMINUM");
238 CREATE_STRINGCONSTANT("BERYLLIUM");
239 CREATE_STRINGCONSTANT("BORONCARBIDE");
240 CREATE_STRINGCONSTANT("COPPER");
241 CREATE_STRINGCONSTANT("GOLD");
242 CREATE_STRINGCONSTANT("GRAPHITE");
243 CREATE_STRINGCONSTANT("GRAPHITER6710");
244 CREATE_STRINGCONSTANT("KAPTON");
245 CREATE_STRINGCONSTANT("MOLYBDENUM");
246 CREATE_STRINGCONSTANT("MYLAR");
247 CREATE_STRINGCONSTANT("TITANIUM");
248 CREATE_STRINGCONSTANT("WATER");
249
250 // TrackCmd / TIMEINTEGRATOR
254
255 // OpalVacuum / GAS
257 // additionally: AIR
258
259 // BoundaryGeometry / TOPO
260 CREATE_STRINGCONSTANT("RECTANGULAR");
261 CREATE_STRINGCONSTANT("BOXCORNER");
262 CREATE_STRINGCONSTANT("ELLIPTIC");
263
264 // DumpEMFields / COORDINATE_SYSTEM
265 CREATE_STRINGCONSTANT("CARTESIAN");
266 CREATE_STRINGCONSTANT("CYLINDRICAL");
267}
268
270 ValueDefinition(name, parent)
271{}
272
273
274StringConstant::StringConstant(const std::string &name, StringConstant *parent, const std::string &value):
275 ValueDefinition(name, parent)
276{
278 itsAttr[0].setReadOnly(true);
279 builtin = true;
280}
281
282
284{}
285
286
288 return false;
289}
290
291
293 return new StringConstant(name, this);
294}
295
296
297std::string StringConstant::getString() const {
299}
300
301
302void StringConstant::print(std::ostream &os) const {
303 os << "STRING " << getOpalName() << '=' << itsAttr[0] << ';';
304 os << std::endl;
305}
306
307void StringConstant::printValue(std::ostream &os) const {
308 os << itsAttr[0];
309}
#define CREATE_STRINGCONSTANT(x)
Inform & endl(Inform &inf)
Definition: Inform.cpp:42
const std::string name
void setString(Attribute &attr, const std::string &val)
Set string value.
Definition: Attributes.cpp:391
std::string getString(const Attribute &attr)
Get string value.
Definition: Attributes.cpp:343
Attribute makeString(const std::string &name, const std::string &help)
Make string attribute.
Definition: Attributes.cpp:332
std::string getGitRevision()
Definition: Util.cpp:32
The base class for all OPAL objects.
Definition: Object.h:48
void registerOwnership(const AttributeHandler::OwnerType &itsClass) const
Definition: Object.cpp:191
const std::string & getOpalName() const
Return object name.
Definition: Object.cpp:310
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
The base class for all OPAL value definitions.
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.