49 for (
Index i = 0; i < wsv_groups.
nelem(); ++i) {
50 WsvGroupMap[wsv_groups[i]] = i;
73 wsv_groups.emplace_back(
75 "Contains line-by-line absorption information for a number of related absorption lines");
77 wsv_groups.emplace_back(
78 "Agenda",
"Describes a set of function calls and variable definitions");
80 wsv_groups.emplace_back(
82 "Meta type for when methods can take any argument (avoid manual use)");
84 wsv_groups.emplace_back(
"ArrayOfAbsorptionLines",
85 "A list of *AbsorptionLines*");
87 wsv_groups.emplace_back(
"ArrayOfArrayOfAbsorptionLines",
88 "A list of *ArrayOfAbsorptionLines*");
90 wsv_groups.emplace_back(
"ArrayOfAgenda",
"A list of *Agenda*");
92 wsv_groups.emplace_back(
"ArrayOfArrayOfGriddedField1",
93 "A list of *ArrayOfGriddedField1*");
95 wsv_groups.emplace_back(
"ArrayOfArrayOfGriddedField2",
96 "A list of *ArrayOfGriddedField2*");
98 wsv_groups.emplace_back(
"ArrayOfArrayOfGriddedField3",
99 "A list of *ArrayOfGriddedField3*");
101 wsv_groups.emplace_back(
"ArrayOfArrayOfIndex",
"A list of *ArrayOfIndex*");
103 wsv_groups.emplace_back(
"ArrayOfArrayOfMatrix",
"A list of *ArrayOfMatrix*");
105 wsv_groups.emplace_back(
"ArrayOfPpath",
"A list of *Ppath*");
107 wsv_groups.emplace_back(
"ArrayOfArrayOfPropagationMatrix",
108 "A list of *ArrayOfPropagationMatrix*");
110 wsv_groups.emplace_back(
"ArrayOfArrayOfRadiationVector",
111 "A list of *ArrayOfRadiationVector*");
113 wsv_groups.emplace_back(
"ArrayOfArrayOfScatteringMetaData",
114 "A list of *ArrayOfScatteringMetaData*");
116 wsv_groups.emplace_back(
"ArrayOfArrayOfSingleScatteringData",
117 "A list of *ArrayOfSingleScatteringData*");
119 wsv_groups.emplace_back(
"ArrayOfArrayOfSpeciesTag",
120 "A list of *ArrayOfSpeciesTag*");
122 wsv_groups.emplace_back(
"ArrayOfArrayOfStokesVector",
123 "A list of *ArrayOfStokesVector*");
125 wsv_groups.emplace_back(
"ArrayOfArrayOfString",
"A list of *ArrayOfString*");
127 wsv_groups.emplace_back(
"ArrayOfArrayOfTensor3",
128 "A list of *ArrayOfTensor3*");
130 wsv_groups.emplace_back(
"ArrayOfArrayOfTensor6",
131 "A list of *ArrayOfTensor6*");
133 wsv_groups.emplace_back(
"ArrayOfArrayOfTime",
"A list of *ArrayOfTime*");
135 wsv_groups.emplace_back(
"ArrayOfArrayOfTransmissionMatrix",
136 "A list of *ArrayOfTransmissionMatrix*");
138 wsv_groups.emplace_back(
"ArrayOfArrayOfVector",
"A list of *ArrayOfVector*");
140 wsv_groups.emplace_back(
"ArrayOfCIARecord",
"A list of *CIARecord*");
142 wsv_groups.emplace_back(
"ArrayOfGriddedField1",
"A list of *GriddedField1*");
144 wsv_groups.emplace_back(
"ArrayOfGriddedField2",
"A list of *GriddedField2*");
146 wsv_groups.emplace_back(
"ArrayOfGriddedField3",
"A list of *GriddedField3*");
148 wsv_groups.emplace_back(
"ArrayOfGriddedField4",
"A list of *GriddedField4*");
150 wsv_groups.emplace_back(
"ArrayOfIndex",
"A list of *Index*");
152 wsv_groups.emplace_back(
"ArrayOfJacobianTarget",
153 "A list of *JacobianTarget*");
155 wsv_groups.emplace_back(
"ArrayOfMatrix",
"A list of *Matrix*");
157 wsv_groups.emplace_back(
"ArrayOfPropagationMatrix",
158 "A list of *PropagationMatrix*");
160 wsv_groups.emplace_back(
"ArrayOfQuantumIdentifier",
161 "A list of *QuantumIdentifier*");
163 wsv_groups.emplace_back(
"ArrayOfRadiationVector",
164 "A list of *RadiationVector*");
166 wsv_groups.emplace_back(
"ArrayOfRetrievalQuantity",
167 "A list of retrieval quantitities");
169 wsv_groups.emplace_back(
"ArrayOfScatteringMetaData",
170 "A list of *ScatteringMetaData*");
172 wsv_groups.emplace_back(
"ArrayOfSingleScatteringData",
173 "A list of *SingleScatteringData*");
175 wsv_groups.emplace_back(
"ArrayOfSpeciesTag", R
"--(A list of species tags
177These tags include the species and a lot of optional information
178about the isotopologue, the absorption scheme, and the frequency limits)--");
180 wsv_groups.emplace_back("ArrayOfSparse",
"A list of *Sparse*");
182 wsv_groups.emplace_back(
"ArrayOfStar",
"A list of star");
184 wsv_groups.emplace_back(
"ArrayOfStokesVector",
"A list of *StokesVector*");
186 wsv_groups.emplace_back(
"ArrayOfString",
"A list of *String*");
188 wsv_groups.emplace_back(
"ArrayOfTelsemAtlas",
"A list of *TelsemAtlas*");
190 wsv_groups.emplace_back(
"ArrayOfTensor3",
"A list of *Tensor3*");
192 wsv_groups.emplace_back(
"ArrayOfTensor4",
"A list of *Tensor4*");
194 wsv_groups.emplace_back(
"ArrayOfTensor5",
"A list of *Tensor5*");
196 wsv_groups.emplace_back(
"ArrayOfTensor6",
"A list of *Tensor6*");
198 wsv_groups.emplace_back(
"ArrayOfTensor7",
"A list of *Tensor7*");
200 wsv_groups.emplace_back(
"ArrayOfTime",
"A list of *Time*");
202 wsv_groups.emplace_back(
"ArrayOfTransmissionMatrix",
203 "A list of *TransmissionMatrix*");
205 wsv_groups.emplace_back(
"ArrayOfVector",
"A list of *Vector*");
207 wsv_groups.emplace_back(
"ArrayOfXsecRecord",
208 R
"--(A list of cross-section records
210These cross-section records contains information about the valid temperature and
211pressure ranges as well as well as the fitting coefficients used to compute
212and interpolate the cross-section to other temperatures and pressures)--");
214 wsv_groups.emplace_back(
216 R
"--(Contains information to compute collision induced absorption for a pair of species
218Holds an the record data in a gridded field with grids of temperature and frequency in
219units of m^5 molec^(-2) )--");
221 wsv_groups.emplace_back("CallbackFunction",
222 "Used to inject custom code into *Agenda*");
224 wsv_groups.emplace_back(
"CovarianceMatrix",
"Contains the covariance matrix");
226 wsv_groups.emplace_back(
"EnergyLevelMap",
227 R
"--(Maps data based on energy levels
229Used for keeping track of non-local thermodynamic equilibrium data)--");
231 wsv_groups.emplace_back("GasAbsLookup", R
"--(An absorption lookup table
233This class holds an absorption lookup table, as well as all
234information that is necessary to use the table to extract
237 wsv_groups.emplace_back("GridPos",
"A position in a grid");
239 wsv_groups.emplace_back(
"GriddedField1",
240 R
"--(A 1 dimensional gridded set of *Numeric* data
242The grid is 1 *Vector* or *ArrayOfString*
244Both the data and the grid may be named)--");
246 wsv_groups.emplace_back("GriddedField2",
247 R
"--(A 2 dimensional gridded set *Numeric* data
249The grid is a combination of 2 *Vector* and/or *ArrayOfString*
251Both the data and the grid may be named)--");
253 wsv_groups.emplace_back("GriddedField3",
254 R
"--(A 3 dimensional gridded set of *Numeric* data
256The grid is a combination of 3 *Vector* and/or *ArrayOfString*
258Both the data and the grid may be named)--");
260 wsv_groups.emplace_back("GriddedField4",
261 R
"--(A 4 dimensional gridded set of *Numeric* data
263The grid is a combination of 4 *Vector* and/or *ArrayOfString*
265Both the data and the grid may be named)--");
267 wsv_groups.emplace_back("GriddedField5",
268 R
"--(A 5 dimensional gridded set of *Numeric* data
270The grid is a combination of 5 *Vector* and/or *ArrayOfString*
272Both the data and the grid may be named)--");
274 wsv_groups.emplace_back("GriddedField6",
275 R
"--(A 6 dimensional gridded set of *Numeric* data
277The grid is a combination of 6 *Vector* and/or *ArrayOfString*
279Both the data and the grid may be named)--");
281 wsv_groups.emplace_back("HitranRelaxationMatrixData",
282 "Wraps data required to use Hitran line mixing");
284 wsv_groups.emplace_back(
"Index",
"A 64 bit signed integer type");
286 wsv_groups.emplace_back(
287 "JacobianTarget",
"A single target if a partial derivative computation");
289 wsv_groups.emplace_back(
290 "MapOfErrorCorrectedSuddenData",
291 R
"--(A map of data required for computing the error-corrected-sudden relaxation matrix
293This map contains a list of an underlying data type. This underlying data type contains a
294*QuantumIdentifier* and a list of species dependent computational data for various components
295required to compute the relaxation matrix
297If there is no identifier or species avaialable, default values that approximates a diagonal
298relaxation matrix are set)--");
300 wsv_groups.emplace_back("MCAntenna",
"An Antenna object used by *MCGeneral*");
302 wsv_groups.emplace_back(
"Matrix",
"A 2 dimensional array of *Numeric*");
304 wsv_groups.emplace_back(
"Numeric",
"IEEE 754 binary64 floating point number");
306 wsv_groups.emplace_back(
"Ppath",
"Describes a propagation path");
308 wsv_groups.emplace_back(
"PredefinedModelData",
309 R
"--(Contains any data required for a predefined model)--");
311 wsv_groups.emplace_back("PropagationMatrix",
312 R
"--(The propagation matrix data is help by this type
314This type is related to *StokesVector*
316The data type is *Tensor4* in units of [1/m]
318The dimensionality is kept as:
320Number of frequencies as *Index* (usually from *f_grid*)
321Number of zenith angles as *Index*
322Number of azimuth angles as *Index*
323The Stokes dimension as *Index* (usually from *stokes_dim*)
325An individual propagation matrix (i.e., for a given frequency, zenith,
326and azimuth angle) follows certain symmetries depending on the Stokes
329For Stokes dimension 4:
336For Stokes dimension 3:
342For Stokes dimension 2:
347For Stokes dimension 1:
351The propagation matrix make use of these symmetries to computate the matrix inverses and exponents
352required to turn the data into a *TransmissionMatrix* (with information about the distance))--");
354 wsv_groups.emplace_back("QuantumIdentifier",
355 R
"--(An ID for an absorption species state
357It contains information about the species and a set of quantum numbers
358and can thus be used to identify one of the following:
3602) an isotopologue of a species
3613) an absorption band of an isotopologue
3624) an absorption line of an isotopologue
3635) the energy level of absorption band(s) of an isotopologue
3646) the energy level of absorption line(s) of an isotopologue)--");
366 wsv_groups.emplace_back(
368 R
"--(Contains the radiation vector as a function of frequency
370This type is related to *TransmissionMatrix*
372The stokes dimensionality translates directly to the size of the vector
374Internally, this holds an efficiently packed list of these vectors
376This is often used in combination with *TransmissionMatrix* to compute the radiative
377transfer through the atmosphere
379It holds information about the radiance, unlike its cousin *StokesVector*, which holds information
380about the vector absorption/emission)--");
382 wsv_groups.emplace_back("Rational",
383 "Holds a rational number as two *Index* n / d");
385 wsv_groups.emplace_back(
"ScatteringMetaData",
386 "Holds meta data about the scattering");
388 wsv_groups.emplace_back(
"SingleScatteringData",
389 "Holds single scattering data");
391 wsv_groups.emplace_back(
"Sparse",
"A sparse version of *Matrix*");
393 wsv_groups.emplace_back(
394 "SpeciesIsotopologueRatios",
395 "Contains a list of isotopologue ratios for all defined species");
397 wsv_groups.emplace_back(
"StokesVector", R
"--(A stokes vector
399This type is related to *PropagationMatrix*
401The data type is *Tensor4* in units of [1/m]
403The dimensionality is kept as:
405Number of frequencies as *Index* (usually from *f_grid*)
406Number of zenith angles as *Index*
407Number of azimuth angles as *Index*
408The Stokes dimension as *Index* (usually from *stokes_dim*)
410This is often used to compute the source emission with the help of a *PropagationMatrix*)--");
412 wsv_groups.emplace_back("String",
"Basic string type");
414 wsv_groups.emplace_back(
"TelsemAtlas", R
"--(A telsem atlas
416Represents a Telsem2 atlas containing land surface microwave emissivities.
417Since the Atlas contains emissivities only for land surfaces, the data is
418stored in a sparse format.
420The emissivities are represented on an equal area grid and numbered
421sequentially starting with the first latitude band at -90 degrees and
422moving up to 90 degrees.
424The correspondance array contains the data indices for each cellnumber
425if it is contained in the Atlas and NAN otherwise.)--");
427 wsv_groups.emplace_back("Tensor3",
"A 3 dimensional array of *Numeric*");
429 wsv_groups.emplace_back(
"Tensor4",
"A 4 dimensional array of *Numeric*");
431 wsv_groups.emplace_back(
"Tensor5",
"A 5 dimensional array of *Numeric*");
433 wsv_groups.emplace_back(
"Tensor6",
"A 6 dimensional array of *Numeric*");
435 wsv_groups.emplace_back(
"Tensor7",
"A 7 dimensional array of *Numeric*");
437 wsv_groups.emplace_back(
"Timer",
"Represents a clock");
439 wsv_groups.emplace_back(
"Time",
"Represents a time stamp");
441 wsv_groups.emplace_back(
442 "TessemNN",
"Data required by TESSEM to calculate surface emissivity");
444 wsv_groups.emplace_back(
445 "TransmissionMatrix",
446 R
"--(Contains the transmission matrix as a function of frequency
448This type is related to *RadiationVector*
450The stokes dimensionality squared translates directly to the size of the matrix
452Internally, this holds an efficiently packed list of these matrices
454This is often used in combination with *RadiationVector* to compute the radiative
455transfer through the atmosphere
457The transmission matrix is often computed from the combination of two *PropagationMatrix*
458at different atmospheric path points (using the distance between these points)
460It holds information about the polarized transmission, unlike its cousin *PropagationMatrix*,
461which holds information about the polarized absorption)--");
463 wsv_groups.emplace_back("Vector",
"A 1 dimensional array of *Numeric*");
465 wsv_groups.emplace_back(
467 "Controls the screen, agenda, and file verbosity level (i.e. the level of information printed)");
469 std::sort(wsv_groups.begin(), wsv_groups.end(), [](
auto&
a,
auto&
b) {
470 return a.name < b.name;
487 while (pos < name.
nelem()) {
502 while (pos < name.
nelem()) {
503 while (pos < name.
nelem() && name[pos] !=
',') pos++;
521 bool return_basetype_only) {
527 if (wsv_groups[i].name.substr(0,
String(
"ArrayOf").length()) ==
"ArrayOf") {
529 String(
"ArrayOf").length(), wsv_groups[i].name.length());
532 if (return_basetype_only) {
535 if (basetype_exists) {
540 arraygroups += basetype;
543 if (!basetype_is_group || (basetype_is_group && basetype_exists)) {
This file contains the definition of Array.
The global header file for ARTS.
This can be used to make arrays out of anything.
Index nelem() const ARTS_NOEXCEPT
Index get_wsv_group_id(const String &name)
Returns the id of the given group.
bool is_agenda_group_id(const Index group)
Check if group is an agenda group.
String get_array_groups_as_string(bool basetype_is_group, bool return_basetype_only)
Return string list of array types.
void get_wsv_group_ids(ArrayOfIndex &ids, String name)
Returns list of ids of the given group names.
void define_wsv_groups()
Define the array of workspace variable group names.
void define_wsv_group_map()
INDEX Index
The type to use for all integer numbers and indices.
This file contains the definition of String, the ARTS string class.
my_basic_string< char > String
The String type for ARTS.
const ArrayOfGroupRecord wsv_groups
The names associated with Wsv groups as Strings.
const map< String, Index > WsvGroupMap
The map associated with wsv_groups.