OPAL (Object Oriented Parallel Accelerator Library)  2024.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 - 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 
21 #include "Attributes/Attributes.h"
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
46  CREATE_STRINGCONSTANT("RING");
47  CREATE_STRINGCONSTANT("CARBONCYCL");
48  CREATE_STRINGCONSTANT("CYCIAE");
49  CREATE_STRINGCONSTANT("AVFEQ");
50  CREATE_STRINGCONSTANT("FFA");
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");
66  CREATE_STRINGCONSTANT("MUON");
67  CREATE_STRINGCONSTANT("DEUTERON");
68  CREATE_STRINGCONSTANT("XENON");
69  CREATE_STRINGCONSTANT("H2P");
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
83  CREATE_STRINGCONSTANT("NONE");
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
127  CREATE_STRINGCONSTANT("AC");
128  CREATE_STRINGCONSTANT("DC");
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
143  CREATE_STRINGCONSTANT("FFT");
144  CREATE_STRINGCONSTANT("FFTPERIODIC");
145  CREATE_STRINGCONSTANT("SAAMG");
146  CREATE_STRINGCONSTANT("FMG");
147  CREATE_STRINGCONSTANT("ML");
148  CREATE_STRINGCONSTANT("AMR_MG");
149  CREATE_STRINGCONSTANT("P3M");
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
162  CREATE_STRINGCONSTANT("CG");
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");
176  CREATE_STRINGCONSTANT("SA");
177 
178  // FieldSolver / INTERPL
179  CREATE_STRINGCONSTANT("CONSTANT");
180  CREATE_STRINGCONSTANT("LINEAR");
181  CREATE_STRINGCONSTANT("QUADRATIC");
182 
183  // FieldSolver / PRECMODE
184  CREATE_STRINGCONSTANT("STD");
185  CREATE_STRINGCONSTANT("HIERARCHY");
186  CREATE_STRINGCONSTANT("REUSE");
187 
188  // FieldSolver / AMR_MG_SMOOTHER
189  CREATE_STRINGCONSTANT("GS");
190  CREATE_STRINGCONSTANT("SGS");
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");
204  CREATE_STRINGCONSTANT("PC");
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
212  CREATE_STRINGCONSTANT("RP");
213  CREATE_STRINGCONSTANT("RAP");
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
245  CREATE_STRINGCONSTANT("AIR");
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
261  CREATE_STRINGCONSTANT("RK4");
262  CREATE_STRINGCONSTANT("LF2");
263  CREATE_STRINGCONSTANT("MTS");
264 
265  // OpalVacuum / GAS
266  CREATE_STRINGCONSTANT("H2");
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 
289  Attributes::setString(itsAttr[0], value);
290  itsAttr[0].setReadOnly(true);
291  builtin = true;
292 }
293 
295 {}
296 
298  return false;
299 }
300 
302  return new StringConstant(name, this);
303 }
304 
305 std::string StringConstant::getString() const {
306  return Attributes::getString(itsAttr[0]);
307 }
308 
309 void StringConstant::print(std::ostream& os) const {
310  os << "STRING " << getOpalName() << '=' << itsAttr[0] << ';';
311  os << std::endl;
312 }
313 
314 void StringConstant::printValue(std::ostream& os) const {
315  os << itsAttr[0];
316 }
The global OPAL structure.
Definition: OpalData.h:49
static OpalData * getInstance()
Definition: OpalData.cpp:196
bool builtin
Built-in flag.
Definition: Object.h:233
void setString(Attribute &attr, const std::string &val)
Set string value.
Definition: Attributes.cpp:391
The base class for all OPAL objects.
Definition: Object.h:48
std::string getString(const Attribute &attr)
Get string value.
Definition: Attributes.cpp:343
std::string getGitRevision()
Definition: Util.cpp:33
virtual StringConstant * clone(const std::string &name)
Make clone.
Inform & endl(Inform &inf)
Definition: Inform.cpp:42
virtual ~StringConstant()
void create(Object *newObject)
Create new object.
Definition: OpalData.cpp:476
StringConstant()
Exemplar constructor.
void registerOwnership(const AttributeHandler::OwnerType &itsClass) const
Definition: Object.cpp:191
Attribute makeString(const std::string &name, const std::string &help)
Make string attribute.
Definition: Attributes.cpp:332
virtual bool canReplaceBy(Object *object)
Test if object can be replaced.
virtual void print(std::ostream &) const
Print the constant.
const std::string & getOpalName() const
Return object name.
Definition: Object.cpp:310
std::vector< Attribute > itsAttr
The object attributes.
Definition: Object.h:216
The base class for all OPAL value definitions.
const std::string name
#define CREATE_STRINGCONSTANT(x)
virtual std::string getString() const
Return value.
virtual void printValue(std::ostream &os) const
Print its value.