ARTS  2.0.49
methods.cc
Go to the documentation of this file.
1 /* Copyright (C) 2000-2008
2  Stefan Buehler <sbuehler@uni-bremen.de>
3  Patrick Eriksson <patrick.eriksson@chalmers.se>
4  Oliver Lemke <olemke@ltu.se>
5 
6  This program is free software; you can redistribute it and/or modify it
7  under the terms of the GNU General Public License as published by the
8  Free Software Foundation; either version 2, or (at your option) any
9  later version.
10 
11  This program is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with this program; if not, write to the Free Software
18  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
19  USA. */
20 
33 #include "arts.h"
34 #include "make_array.h"
35 #include "methods.h"
36 #include "wsv_aux.h"
37 
38 // Some #defines and typedefs to make the records better readable:
39 #define NAME(x) x
40 #define DESCRIPTION(x) x
41 #define AUTHORS MakeArray<String>
42 #define OUT MakeArray<String>
43 #define GOUT MakeArray<String>
44 #define GOUT_TYPE MakeArray<String>
45 #define GOUT_DESC MakeArray<String>
46 #define IN MakeArray<String>
47 #define GIN MakeArray<String>
48 #define GIN_TYPE MakeArray<String>
49 #define GIN_DEFAULT MakeArray<String>
50 #define GIN_DESC MakeArray<String>
51 #define SETMETHOD(x) x
52 #define AGENDAMETHOD(x) x
53 #define SUPPRESSHEADER(x) x
54 #define PASSWORKSPACE(x) x
55 #define PASSWSVNAMES(x) x
56 
57 
58 /* Here's a template record entry: (PE 2008-09-20)
59 
60  md_data_raw.push_back
61  ( MdRecord
62  ( NAME( "MethodName" ),
63  DESCRIPTION
64  (
65  "A concise summary of the method.\n"
66  "\n"
67  "A more detailed description of the method. Try to describe the\n"
68  "purpose of the method and important considerations. Try to avoid\n"
69  "references to other WSMs as they might change. Refer to the user\n"
70  "guide for more complex information (as long as it exists, or that\n"
71  "you add it to AUG!).\n"
72  "\n"
73  "You do not need to describe workspace variables used. That\n"
74  "information is found in workspace.cc. Generic\n"
75  "output and input variables must be described in GIN_DESC and\n"
76  "GOUT_DESC below.\n"
77  ),
78  AUTHORS( "Your Name" ),
79  OUT(),
80  GOUT(),
81  GOUT_TYPE(),
82  GOUT_DESC(),
83  IN(),
84  GIN( "descriptive_name_for_generic_input1" ),
85  GIN_TYPE( "GenericInput1Type" ),
86  GIN_DEFAULT( NODEF ),
87  GIN_DESC( "Description for Generic Input Variable 1" )
88  ));
89 
90  For variable descriptions longer than one line, use the following format.
91  Don't forget to remove the space in '/ *' and '* /' if you copy this template.
92  I had to put it in there because C++ doesn't allow nested comments.
93 
94  md_data_raw.push_back
95  ( MdRecord
96  ( NAME( "MethodName" ),
97  ...
98  ...
99  ...
100  GIN( gin_var1, gin_var2, gin_var3 )
101  GIN_TYPE( "GInput1Type", "GInput2Type", "GInput3Type" ),
102  GIN_DEFAULT( NODEF ),
103  GIN_DESC( / * gin_var1 * /
104  "Long description for Generic Input Variable 1 "
105  "which can span multiple lines like for example "
106  "this one. Don't put any \n in the variable descriptions.",
107  / * gin_var2 * /
108  "Long description for Generic Input Variable 2 "
109  "which can span multiple lines like for example "
110  "this one. Don't put any \n in the variable descriptions.",
111  / * gin_var3 * /
112  "Long description for Generic Input Variable 3 "
113  "which can span multiple lines like for example "
114  "this one. Don't put any \n in the variable descriptions."
115  )
116 
117 */
118 
119 
120 
122 {
123  // The variable md_data is defined in file methods_aux.cc.
125 
126  // Initialise to zero, just in case:
127  md_data_raw.resize(0);
128 
129  const String ARRAY_GROUPS = get_array_groups_as_string();
130 
131  extern const ArrayOfString wsv_group_names;
132 
133  for (ArrayOfString::const_iterator it = wsv_group_names.begin();
134  it != wsv_group_names.end(); it++)
135  {
136  if (*it != "Any")
137  {
138  md_data_raw.push_back
139  (MdRecord
140  (NAME( String(*it + "Create").c_str() ),
142  (
143  String("Creates a variable of group " + *it + ".\n"
144  "\n"
145  "If the variable already exists, it'll be reinitialized.\n").c_str()
146  ),
147  AUTHORS( "Oliver Lemke" ),
148  OUT(),
149  GOUT( "var" ),
150  GOUT_TYPE( (*it).c_str() ),
151  GOUT_DESC( "Variable to create." ),
152  IN(),
153  GIN(),
154  GIN_TYPE(),
155  GIN_DEFAULT(),
156  GIN_DESC()
157  )
158  );
159  }
160  }
161 
163  // Let's put in the functions in alphabetical order. This gives a clear rule
164  // for where to place a new function and this gives a nicer results when
165  // the functions are listed by "arts -m all".
166  // No distinction is made between uppercase and lowercase letters. The sign
167  // "_" comes after all letters.
168  // Patrick Eriksson 2002-05-08
170 
171  md_data_raw.push_back
172  ( MdRecord
173  ( NAME( "AbsInputFromAtmFields" ),
175  (
176  "Initialises the WSVs *abs_p*, *abs_t* and *abs_vmrs* from\n"
177  "*p_grid, *t_field* and *vmr_field*.\n"
178  "\n"
179  "This only works for a 1D atmosphere!\n"
180  ),
181  AUTHORS( "Stefan Buehler" ),
182  OUT( "abs_p", "abs_t", "abs_vmrs" ),
183  GOUT(),
184  GOUT_TYPE(),
185  GOUT_DESC(),
186  IN( "atmosphere_dim", "p_grid", "t_field", "vmr_field" ),
187  GIN(),
188  GIN_TYPE(),
189  GIN_DEFAULT(),
190  GIN_DESC()
191  ));
192 
193  md_data_raw.push_back
194  ( MdRecord
195  ( NAME( "AbsInputFromRteScalars" ),
197  (
198  "Initialize absorption input WSVs from local atmospheric conditions.\n"
199  "\n"
200  "The purpose of this method is to allow an explicit line-by-line\n"
201  "calculation, e.g., by *abs_coefCalc*, to be put inside the\n"
202  "*abs_scalar_gas_agenda*. What the method does is to prepare absorption\n"
203  "input parameters (pressure, temperature, VMRs), from the input\n"
204  "parameters to *abs_scalar_gas_agenda*. There is a matching method to\n"
205  "turn the output of *abs_coefCalc* into what the agenda expects\n"
206  "(*abs_scalar_gasFromAbsCoef*).\n"
207  ),
208  AUTHORS( "Stefan Buehler" ),
209  OUT( "abs_p", "abs_t", "abs_vmrs" ),
210  GOUT(),
211  GOUT_TYPE(),
212  GOUT_DESC(),
213  IN( "rte_pressure", "rte_temperature", "rte_vmr_list" ),
214  GIN(),
215  GIN_TYPE(),
216  GIN_DEFAULT(),
217  GIN_DESC()
218  ));
219 
220  md_data_raw.push_back
221  ( MdRecord
222  ( NAME( "abs_coefCalc" ),
224  (
225  "Calculate absorption coefficients.\n"
226  "\n"
227  "This function calculates both the total absorption (*abs_coef*), and\n"
228  "the absorption per species (*abs_coef_per_species*).\n"
229  "\n"
230  "The method calls four other methods:\n"
231  "\n"
232  "1. *abs_xsec_per_speciesInit*:\n"
233  " Initialize *abs_xsec_per_species*\n"
234  "\n"
235  "2. *abs_xsec_per_speciesAddLines*:\n"
236  " Calculate cross sections per tag group for line spectra.\n"
237  "\n"
238  "3. *abs_xsec_per_speciesAddConts*:\n"
239  " Calculate cross sections per tag group for continua.\n"
240  "\n"
241  "4. *abs_coefCalcFromXsec*:\n"
242  " Calculate absorption coefficients from the cross sections by\n"
243  " multiplying each cross section by n*VMR.\n"
244  "\n"
245  "This is done once for each tag group (output *abs_coef_per_species*),\n"
246  "and for the sum of all tag groups (output *abs_coef*).\n"
247  ),
248  AUTHORS( "Axel von Engeln", "Stefan Buehler" ),
249  OUT( "abs_coef" , "abs_coef_per_species" ),
250  GOUT(),
251  GOUT_TYPE(),
252  GOUT_DESC(),
253  IN( "abs_species", "f_grid", "abs_p", "abs_t", "abs_n2", "abs_h2o",
254  "abs_vmrs", "abs_lines_per_species", "abs_lineshape",
255  "abs_cont_names", "abs_cont_models",
256  "abs_cont_parameters" ),
257  GIN(),
258  GIN_TYPE(),
259  GIN_DEFAULT(),
260  GIN_DESC()
261  ));
262 
263  md_data_raw.push_back
264  ( MdRecord
265  ( NAME( "abs_coefCalcFromXsec" ),
267  (
268  "Calculate absorption coefficients from cross sections.\n"
269  "\n"
270  "This calculates both the total absorption and the\n"
271  "absorption per species.\n"
272  "\n"
273  "Cross sections are multiplied by n*VMR.\n"
274  ),
275  AUTHORS( "Stefan Buehler", "Axel von Engeln" ),
276  OUT( "abs_coef", "abs_coef_per_species" ),
277  GOUT(),
278  GOUT_TYPE(),
279  GOUT_DESC(),
280  IN( "abs_xsec_per_species", "abs_vmrs", "abs_p", "abs_t" ),
281  GIN(),
282  GIN_TYPE(),
283  GIN_DEFAULT(),
284  GIN_DESC()
285  ));
286 
287  md_data_raw.push_back
288  ( MdRecord
289  ( NAME( "abs_coefCalcSaveMemory" ),
291  (
292  "Calculate absorption coefficients, trying to conserve memory.\n"
293  "\n"
294  "This function calculates only the total absorption (*abs_coef*),\n"
295  "NOT the absorption per tag group (*abs_coef_per_species*).\n"
296  "\n"
297  "This means you cannot use it if you want to calculate Jacobians\n"
298  "later.\n"
299  "\n"
300  "The implementation follows abs_coefCalc.\n"
301  ),
302  AUTHORS( "Stefan Buehler" ),
303  OUT( "abs_coef" ),
304  GOUT(),
305  GOUT_TYPE(),
306  GOUT_DESC(),
307  IN( "abs_species", "f_grid", "abs_p", "abs_t", "abs_n2", "abs_h2o",
308  "abs_vmrs", "abs_lines_per_species", "abs_lineshape",
309  "abs_cont_names", "abs_cont_models",
310  "abs_cont_parameters" ),
311  GIN(),
312  GIN_TYPE(),
313  GIN_DEFAULT(),
314  GIN_DESC()
315  ));
316 
317  md_data_raw.push_back
318  ( MdRecord
319  ( NAME( "abs_cont_descriptionAppend" ),
321  (
322  "Appends the description of a continuum model or a complete absorption\n"
323  "model to *abs_cont_names* and *abs_cont_parameters*.\n"
324  "\n"
325  "See online documentation for *abs_cont_names* for a list of\n"
326  "allowed models and for information what parameters they require. See\n"
327  "file includes/continua.arts for default parameters for the various models.\n"
328  ),
329  AUTHORS( "Thomas Kuhn", "Stefan Buehler" ),
330  OUT( "abs_cont_names",
331  "abs_cont_models",
332  "abs_cont_parameters" ),
333  GOUT(),
334  GOUT_TYPE(),
335  GOUT_DESC(),
336  IN( "abs_cont_names",
337  "abs_cont_models",
338  "abs_cont_parameters" ),
339  GIN( "tagname", "model", "userparameters" ),
340  GIN_TYPE( "String", "String", "Vector" ),
342  GIN_DESC(
343  "The name (species tag) of a continuum model. Must match one\n"
344  "of the models implemented in ARTS.\n",
345  "A string selecting a particular continuum/full model under this\n"
346  "species tag.\n",
347  "A Vector containing the required parameters for the selected model.\n"
348  "The meaning of the parameters and how many parameters are required\n"
349  "depends on the model.\n" )
350  ));
351 
352  md_data_raw.push_back
353  ( MdRecord
354  ( NAME( "abs_cont_descriptionInit" ),
356  (
357  "Initializes the two workspace variables for the continuum description,\n"
358  "*abs_cont_names* and *abs_cont_parameters*.\n"
359  "\n"
360  "This method does not really do anything, except setting the two\n"
361  "variables to empty Arrays. It is just necessary because the method\n"
362  "*abs_cont_descriptionAppend* wants to append to the variables.\n"
363  "\n"
364  "Formally, the continuum description workspace variables are required\n"
365  "by the absorption calculation methods (e.g., *abs_coefCalc*). Therefore you\n"
366  "always have to call at least *abs_cont_descriptionInit*, even if you do\n"
367  "not want to use any continua.\n"
368  ),
369  AUTHORS( "Thomas Kuhn", "Stefan Buehler" ),
370  OUT( "abs_cont_names",
371  "abs_cont_models",
372  "abs_cont_parameters" ),
373  GOUT(),
374  GOUT_TYPE(),
375  GOUT_DESC(),
376  IN(),
377  GIN(),
378  GIN_TYPE(),
379  GIN_DEFAULT(),
380  GIN_DESC()
381  ));
382 
383  md_data_raw.push_back
384  ( MdRecord
385  ( NAME( "abs_h2oSet" ),
387  (
388  "Sets abs_h2o to the profile of the first tag group containing\n"
389  "water.\n"
390  "\n"
391  "This is necessary, because for example *abs_coefCalc* requires abs_h2o\n"
392  "to contain the water vapour profile(the reason for this is the\n"
393  "calculation of oxygen line broadening requires water vapour profile).\n"
394  "Then this function can be used to copy the profile of the first tag\n"
395  "group of water.\n"
396  ),
397  AUTHORS( "Stefan Buehler" ),
398  OUT( "abs_h2o" ),
399  GOUT(),
400  GOUT_TYPE(),
401  GOUT_DESC(),
402  IN( "abs_species", "abs_vmrs" ),
403  GIN(),
404  GIN_TYPE(),
405  GIN_DEFAULT(),
406  GIN_DESC()
407  ));
408 
409  md_data_raw.push_back
410  ( MdRecord
411  ( NAME( "abs_lineshapeDefine" ),
413  (
414  "Set the lineshape for all calculated lines.\n"
415  "\n"
416  "Sets the lineshape function. Beside the lineshape function itself, you\n"
417  "also have so select a forefactor and a frequency cutoff. The\n"
418  "forefactor is later multiplied with the lineshape function.\n"
419  "\n"
420  "The cutoff frequency is used to make lineshapes finite in frequency,\n"
421  "the response outside the cutoff is set to zero, and the lineshape\n"
422  "value at the cutoff frequency is subtracted from the overall lineshape\n"
423  "as a constant offset. This ensures that the lineshape goes to zero at\n"
424  "the cutoff frequency without a discontinuity.\n"
425  "\n"
426  "We generate only one copy of the lineshape settings. Absorption\n"
427  "routines check for this case and use it for all species.\n"
428  "\n"
429  "The allowed values for the input parameters are:\n"
430  "\n"
431  "shape:\n"
432  " no_shape: no specified shape\n"
433  " Doppler: Doppler lineshape\n"
434  " Lorentz: Lorentz lineshape\n"
435  " Voigt_Kuntz3: Kuntz approximation to the Voigt lineshape,\n"
436  " accuracy > 2x10^(-3)\n"
437  " Voigt_Kuntz4: Kuntz approximation to the Voigt lineshape,\n"
438  " accuracy > 2x10^(-4)\n"
439  " Voigt_Kuntz6: Kuntz approximation to the Voigt lineshape,\n"
440  " accuracy > 2x10^(-6)\n"
441  " Voigt_Drayson: Drayson approximation to the Voigt lineshape\n"
442  " Rosenkranz_Voigt_Drayson: Rosenkrantz oxygen absortion with overlap correction\n"
443  " on the basis of Drayson routine\n"
444  " Rosenkranz_Voigt_Kuntz6 : Rosenkrantz oxygen absortion with overlap correction\n"
445  " on the basis of Kuntz routine, accuracy > 2x10^(-6)\n"
446  " CO2_Lorentz: Lorentz multiplied with Cousin's chi factors\n"
447  " CO2_Drayson: Drayson multiplied with Cousin's chi factors\n"
448  "\n"
449  "forefactor:\n"
450  " no_norm: 1\n"
451  " quadratic: (f/f0)^2\n"
452  " VVH: (f*tanh(h*f/(2k*T))) / (f0*tanh(h*f0/(2k*T)))\n"
453  "\n"
454  "cutoff:\n"
455  " -1: no cutoff\n"
456  " <Number>: positive cutoff frequency in Hz\n"
457  ),
458  AUTHORS( "Axel von Engeln", "Stefan Buehler" ),
459  OUT( "abs_lineshape" ),
460  GOUT(),
461  GOUT_TYPE(),
462  GOUT_DESC(),
463  IN(),
464  GIN( "shape", "normalizationfactor", "cutoff" ),
465  GIN_TYPE( "String", "String", "Numeric" ),
467  GIN_DESC( "Line shape function.",
468  "Normalization factor.",
469  "Cutoff frequency [Hz]." )
470  ));
471 
472  md_data_raw.push_back
473  ( MdRecord
474  ( NAME( "abs_lineshape_per_tgDefine" ),
476  (
477  "Set the lineshape, separately for each absorption species.\n"
478  "\n"
479  "This method is similar to *abs_lineshapeDefine*, except that a\n"
480  "different lineshape can be set for each absorption species (see\n"
481  "*abs_species*). For example, you might want to use different values of\n"
482  "the cutoff frequency for different species.\n"
483  "\n"
484  "For detailed documentation on the available options for the input\n"
485  "parameters see documentation of method *abs_lineshapeDefine*.\n"
486  ),
487  AUTHORS( "Axel von Engeln", "Stefan Buehler" ),
488  OUT( "abs_lineshape" ),
489  GOUT(),
490  GOUT_TYPE(),
491  GOUT_DESC(),
492  IN( "abs_species" ),
493  GIN( "shape", "normalizationfactor", "cutoff" ),
494  GIN_TYPE( "ArrayOfString", "ArrayOfString", "Vector" ),
496  GIN_DESC( "Line shape function for each species.",
497  "Normalization factor for each species.",
498  "Cutoff frequency [Hz] for each species." )
499  ));
500 
501  md_data_raw.push_back
502  ( MdRecord
503  ( NAME( "abs_linesReadFromArts" ),
505  (
506  "Read all the lines from an Arts catalogue file in the\n"
507  "given frequency range. Otherwise a runtime error will be\n"
508  "thrown\n"
509  "\n"
510  "Please note that all lines must correspond\n"
511  "to legal species / isotope combinations\n"
512  ),
513  AUTHORS( "Stefan Buehler" ),
514  OUT( "abs_lines" ),
515  GOUT(),
516  GOUT_TYPE(),
517  GOUT_DESC(),
518  IN(),
519  GIN( "filename", "fmin", "fmax" ),
520  GIN_TYPE( "String", "Numeric", "Numeric" ),
522  GIN_DESC( "Name (and path) of the catalogue file.",
523  "Minimum frequency for lines to read [Hz].",
524  "Maximum frequency for lines to read [Hz]." )
525  ));
526 
527  md_data_raw.push_back
528  ( MdRecord
529  ( NAME( "abs_linesReadFromSplitArtscat" ),
531  (
532  "Read all the lines in the given frequency range from a split\n"
533  "Arts catalogue file.\n"
534  "\n"
535  "Please note that all lines must correspond\n"
536  "to legal species / isotope combinations\n"
537  ),
538  AUTHORS( "Oliver Lemke" ),
539  OUT( "abs_lines" ),
540  GOUT(),
541  GOUT_TYPE(),
542  GOUT_DESC(),
543  IN( "abs_species" ),
544  GIN( "basename", "fmin", "fmax" ),
545  GIN_TYPE( "String", "Numeric", "Numeric" ),
547  GIN_DESC("Basename of the catalogue.",
548  "Minimum frequency for lines to read [Hz].",
549  "Maximum frequency for lines to read [Hz]." )
550  ));
551 
552  md_data_raw.push_back
553  ( MdRecord
554  ( NAME( "abs_linesReadFromHitran" ),
556  (
557  "Read all the lines from a HITRAN 1986-2001 catalogue file in\n"
558  "the given frequency range. Otherwise a runtime error will be\n"
559  "thrown. For HITRAN 2004 line data use the workspace method\n"
560  "*abs_linesReadFromHitran2004*.\n"
561  "\n"
562  "Please note that all lines must correspond to legal\n"
563  "species / isotope combinations and that the line data\n"
564  "file must be sorted by increasing frequency\n"
565  "\n"
566  "WWW access of the HITRAN catalogue: http://www.hitran.com/\n"
567  ),
568  AUTHORS( "Thomas Kuhn" ),
569  OUT( "abs_lines" ),
570  GOUT(),
571  GOUT_TYPE(),
572  GOUT_DESC(),
573  IN(),
574  GIN( "filename", "fmin", "fmax" ),
575  GIN_TYPE( "String", "Numeric", "Numeric" ),
577  GIN_DESC( "Name (and path) of the catalogue file.",
578  "Minimum frequency for lines to read [Hz].",
579  "Maximum frequency for lines to read [Hz]." )
580  ));
581 
582  md_data_raw.push_back
583  ( MdRecord
584  ( NAME( "abs_linesReadFromHitran2004" ),
586  (
587  "Read all the lines from a HITRAN 2004 catalogue file in the\n"
588  "given frequency range. Otherwise a runtime error is thrown.\n"
589  "\n"
590  "Records of molecules unknown to ARTS are ignored but a\n"
591  "warning is issued. In particular this happens for CH3OH\n"
592  "(HITRAN molecule number 39) because there is no total internal\n"
593  "partition sum available.\n"
594  "\n"
595  "The database must be sorted by increasing frequency!\n"
596  "\n"
597  "WWW access of the HITRAN catalogue: http://www.hitran.com/\n"
598  "\n"
599  "For data in the Hitran 1986-2001 format use the workspace\n"
600  "method: abs_linesReadFromHitran\n"
601  ),
602  AUTHORS( "Hermann Berg", "Thomas Kuhn" ),
603  OUT( "abs_lines" ),
604  GOUT(),
605  GOUT_TYPE(),
606  GOUT_DESC(),
607  IN(),
608  GIN( "filename", "fmin", "fmax" ),
609  GIN_TYPE( "String", "Numeric", "Numeric" ),
611  GIN_DESC( "Name (and path) of the catalogue file.",
612  "Minimum frequency for lines to read [Hz].",
613  "Maximum frequency for lines to read [Hz]." )
614  ));
615 
616  md_data_raw.push_back
617  ( MdRecord
618  ( NAME( "abs_linesReadFromJpl" ),
620  (
621  "Read all the lines from a JPL catalogue file in the\n"
622  "given frequency range. Otherwise a runtime error will be\n"
623  "thrown\n"
624  "\n"
625  "Please note that all lines must correspond\n"
626  "to legal species / isotope combinations.\n"
627  "\n"
628  "WWW access of the JPL catalogue: http://spec.jpl.nasa.gov/\n"
629  ),
630  AUTHORS( "Thomas Kuhn" ),
631  OUT( "abs_lines" ),
632  GOUT(),
633  GOUT_TYPE(),
634  GOUT_DESC(),
635  IN(),
636  GIN( "filename", "fmin", "fmax" ),
637  GIN_TYPE( "String", "Numeric", "Numeric" ),
639  GIN_DESC( "Name (and path) of the catalogue file.",
640  "Minimum frequency for lines to read [Hz].",
641  "Maximum frequency for lines to read [Hz]." )
642  ));
643 
644  md_data_raw.push_back
645  ( MdRecord
646  ( NAME( "abs_linesReadFromMytran2" ),
648  (
649  "Read all the lines from a MYTRAN2 catalogue file in the\n"
650  "given frequency range. Otherwise a runtime error will be\n"
651  "thrown\n"
652  "\n"
653  "Please note that all lines must correspond\n"
654  "to legal species / isotope combinations\n"
655  ),
656  AUTHORS( "Axel von Engeln", "Stefan Buehler" ),
657  OUT( "abs_lines" ),
658  GOUT(),
659  GOUT_TYPE(),
660  GOUT_DESC(),
661  IN(),
662  GIN( "filename", "fmin", "fmax" ),
663  GIN_TYPE( "String", "Numeric", "Numeric" ),
665  GIN_DESC( "Name (and path) of the catalogue file.",
666  "Minimum frequency for lines to read [Hz].",
667  "Maximum frequency for lines to read [Hz]." )
668  ));
669 
670  md_data_raw.push_back
671  ( MdRecord
672  ( NAME( "abs_lines_per_speciesAddMirrorLines" ),
674  (
675  "Adds mirror lines at negative frequencies to *abs_lines_per_species*.\n"
676  "\n"
677  "For each line at frequency +f in *abs_lines_per_species* a corresponding\n"
678  "entry at frequency -f is added to *abs_lines_per_species*. The mirror\n"
679  "lines are appended to the line list after the original lines.\n"
680  ),
681  AUTHORS( "Axel von Engeln", "Stefan Buehler" ),
682  OUT( "abs_lines_per_species" ),
683  GOUT(),
684  GOUT_TYPE(),
685  GOUT_DESC(),
686  IN( "abs_lines_per_species" ),
687  GIN(),
688  GIN_TYPE(),
689  GIN_DEFAULT(),
690  GIN_DESC()
691  ));
692 
693  md_data_raw.push_back
694  ( MdRecord
695  ( NAME( "abs_lines_per_speciesCompact" ),
697  (
698  "Removes all lines outside the defined lineshape cutoff frequencies\n"
699  "from *abs_lines_per_species*. This can save computation time.\n"
700  "It should be particularly useful to call this method after\n"
701  "*abs_lines_per_speciesAddMirrorLines*.\n"
702  ),
703  AUTHORS( "Axel von Engeln", "Stefan Buehler" ),
704  OUT( "abs_lines_per_species" ),
705  GOUT(),
706  GOUT_TYPE(),
707  GOUT_DESC(),
708  IN( "abs_lines_per_species", "abs_lineshape", "f_grid" ),
709  GIN(),
710  GIN_TYPE(),
711  GIN_DEFAULT(),
712  GIN_DESC()
713  ));
714 
715  md_data_raw.push_back
716  ( MdRecord
717  ( NAME( "abs_lines_per_speciesCreateFromLines" ),
719  (
720  "Split lines up into the different species.\n"
721  "\n"
722  "The species are tested in the order in which they are specified in the\n"
723  "controlfile. Lines are assigned to the first species that\n"
724  "matches. That means if the list of species is [\"O3-666\",\"O3\"], then\n"
725  "the last group O3 gets assigned all the O3 lines that do not fit in\n"
726  "the first group (all other isotopes than the main isotope).\n"
727  ),
728  AUTHORS( "Stefan Buehler" ),
729  OUT( "abs_lines_per_species" ),
730  GOUT(),
731  GOUT_TYPE(),
732  GOUT_DESC(),
733  IN( "abs_lines", "abs_species" ),
734  GIN(),
735  GIN_TYPE(),
736  GIN_DEFAULT(),
737  GIN_DESC()
738  ));
739 
740  md_data_raw.push_back
741  ( MdRecord
742  ( NAME( "abs_lines_per_speciesReadFromCatalogues" ),
744  (
745  "Read spectral line data from different line catalogues.\n"
746  "\n"
747  "For each absorption species, you can specify which catalogue to\n"
748  "use. Because the method creates *abs_lines_per_species* directly, it\n"
749  "replaces for example the following two method calls:\n"
750  "\n"
751  " - abs_linesReadFromHitran\n"
752  " - abs_lines_per_speciesCreateFromLines\n"
753  "\n"
754  "This method needs as input WSVs the list of species\n"
755  "*abs_species*. Generic input parameters must specify the names of the\n"
756  "catalogue files to use and the matching formats. Names can be\n"
757  "anything, formats can currently be HITRAN96 (for HITRAN 1986-2001\n"
758  "databases), HITRAN04 (for HITRAN 2004 database), MYTRAN2, JPL, or\n"
759  "ARTS. Furthermore, you have to specify minimum and maximum frequency\n"
760  "for each species. To safe typing, if there are less elements in the\n"
761  "keyword parameters than there are species, the last parameters are\n"
762  "applied to all following species.\n"
763  "\n"
764  "Example usage:\n"
765  "\n"
766  "abs_lines_per_speciesReadFromCatalogues(\n"
767  " [ \"../data/cat1.dat\", \"../data/cat2.dat\" ]\n"
768  " [ \"MYTRAN2\", \"HITRAN96\" ]\n"
769  " [ 0, 0 ]\n"
770  " [ 2000e9, 100e9 ]\n"
771  ")\n"
772  "\n"
773  "In this example, lines for the first species will be taken from cat1,\n"
774  "lines for all other species will be taken from cat2. This allows you\n"
775  "for example to use a special line file just for water vapor lines.\n"
776  "\n"
777  "Catalogues are only read once, even if several tag groups have the\n"
778  "same catalogue. However, in that case the frequency ranges MUST be the\n"
779  "same. (If you want to do fine-tuning of the frequency ranges, you can\n"
780  "do this inside the tag definitions, e.g., \"H2O-*-0-2000e9\".)\n"
781  "\n"
782  "This function uses the various reading routines\n"
783  "(*abs_linesReadFromHitran*, etc.), as well as\n"
784  "*abs_lines_per_speciesCreateFromLines*.\n"
785  ),
786  AUTHORS( "Stefan Buehler" ),
787  OUT( "abs_lines_per_species" ),
788  GOUT(),
789  GOUT_TYPE(),
790  GOUT_DESC(),
791  IN( "abs_species" ),
792  GIN( "filenames", "formats", "fmin", "fmax" ),
793  GIN_TYPE( "ArrayOfString", "ArrayOfString", "Vector", "Vector" ),
795  GIN_DESC( "Name (and path) of the catalogue files.",
796  "Format of each file. (Allowed formats are\n"
797  "HITRAN96, HITRAN04, MYTRAN2, JPL, ARTS.",
798  "Minimum frequency for lines to read [Hz].",
799  "Maximum frequency for lines to read [Hz]." )
800  ));
801 
802  md_data_raw.push_back
803  ( MdRecord
804  ( NAME( "abs_lines_per_speciesSetEmpty" ),
806  (
807  "Sets abs_lines_per_species to empty line lists.\n"
808  "\n"
809  "You can use this method to set *abs_lines_per_species* if you do not\n"
810  "really want to compute line spectra. Formally, abs_coefCalc will still\n"
811  "require *abs_lines_per_species* to be set.\n"
812  ),
813  AUTHORS( "Stefan Buehler" ),
814  OUT( "abs_lines_per_species" ),
815  GOUT(),
816  GOUT_TYPE(),
817  GOUT_DESC(),
818  IN( "abs_species" ),
819  GIN(),
820  GIN_TYPE(),
821  GIN_DEFAULT(),
822  GIN_DESC()
823  ));
824 
825  md_data_raw.push_back
826  ( MdRecord
827  ( NAME( "abs_lookupAdapt" ),
829  (
830  "Adapts a gas absorption lookup table to the current calculation.\n"
831  "\n"
832  "The lookup table can contain more species and more frequencies than\n"
833  "are needed for the current calculation. This method cuts down the\n"
834  "table in memory, so that it contains just what is needed. Also, the\n"
835  "species in the table are brought in the same order as the species in\n"
836  "the current calculation.\n"
837  "\n"
838  "Of course, the method also performs quite a lot of checks on the\n"
839  "table. If something is not ok, a runtime error is thrown.\n"
840  "\n"
841  "The method sets a flag *abs_lookup_is_adapted* to indicate that the\n"
842  "table has been checked and that it is ok. Never set this by hand,\n"
843  "always use this method to set it!\n"
844  ),
845  AUTHORS( "Stefan Buehler" ),
846  OUT( "abs_lookup", "abs_lookup_is_adapted" ),
847  GOUT(),
848  GOUT_TYPE(),
849  GOUT_DESC(),
850  IN( "abs_lookup", "abs_species", "f_grid" ),
851  GIN(),
852  GIN_TYPE(),
853  GIN_DEFAULT(),
854  GIN_DESC()
855  ));
856 
857  md_data_raw.push_back
858  ( MdRecord
859  ( NAME( "abs_lookupCreate" ),
861  (
862  "Creates a gas absorption lookup table.\n"
863  "\n"
864  "The lookup table stores absorption cross-sections as a function of\n"
865  "pressure. Additionally, absorption can be stored as a function of\n"
866  "temperature for temperature perturbations from a reference\n"
867  "profile.\n"
868  "\n"
869  "Additionally, absorption can be stored as a function of water vapor\n"
870  "VMR perturbations from a reference profile. The variable *abs_nls*\n"
871  "specifies, for which species water vapor perturbations should be\n"
872  "generated.\n"
873  "\n"
874  "Note, that the absorbing gas can be any gas, but the perturbing gas is\n"
875  "always H2O.\n"
876  "\n"
877  "In contrast to other absorption functions, this method does not use\n"
878  "the input variable *abs_h2o*. This is because *abs_h2o* has to be set\n"
879  "interally to allow perturbations. If there are more than one H2O\n"
880  "species, the first is assumed to be the main one.\n"
881  ),
882  AUTHORS( "Stefan Buehler" ),
883  OUT( "abs_lookup", "abs_lookup_is_adapted" ),
884  GOUT(),
885  GOUT_TYPE(),
886  GOUT_DESC(),
887  IN( "abs_species",
888  "abs_lines_per_species",
889  "abs_lineshape",
890  "abs_nls",
891  "f_grid",
892  "abs_p",
893  "abs_vmrs",
894  "abs_t",
895  "abs_t_pert",
896  "abs_nls_pert",
897  "abs_n2",
898  "abs_cont_names",
899  "abs_cont_models",
900  "abs_cont_parameters"
901  ),
902  GIN(),
903  GIN_TYPE(),
904  GIN_DEFAULT(),
905  GIN_DESC()
906  ));
907 
908  md_data_raw.push_back
909  ( MdRecord
910  ( NAME( "abs_lookupInit" ),
912  (
913  "Creates an empty gas absorption lookup table.\n"
914  "\n"
915  "This is mainly there to help developers. For example, you can write\n"
916  "the empty table to an XML file, to see the file format.\n"
917  ),
918  AUTHORS( "Stefan Buehler" ),
919  OUT( "abs_lookup" ),
920  GOUT(),
921  GOUT_TYPE(),
922  GOUT_DESC(),
923  IN(),
924  GIN(),
925  GIN_TYPE(),
926  GIN_DEFAULT(),
927  GIN_DESC()
928  ));
929 
930  md_data_raw.push_back
931  ( MdRecord
932  ( NAME( "abs_lookupSetup" ),
934  (
935  "Set up input parameters for abs_lookupCreate.\n"
936  "\n"
937  "More information can be found in the documentation for method\n"
938  "*abs_lookupSetupBatch*\n"
939  "\n"
940  "Max and min values of H2O and temperature are adjusted to allow for\n"
941  "numerical perturbations in Jacobian calculation.\n"
942  "\n"
943  "The input variables *abs_nls_interp_order* and *abs_t_interp_order*\n"
944  "are used to make sure that there are enough points in *abs_nls_pert*\n"
945  "and *abs_t_pert* for the chosen interpolation order.\n"
946  "\n"
947  "See also:\n"
948  " *abs_lookupSetupBatch*\n"
949  ),
950  AUTHORS( "Stefan Buehler" ),
951  OUT( "abs_p",
952  "abs_t",
953  "abs_t_pert",
954  "abs_vmrs",
955  "abs_nls",
956  "abs_nls_pert" ),
957  GOUT(),
958  GOUT_TYPE(),
959  GOUT_DESC(),
960  IN( "atmosphere_dim",
961  "p_grid",
962  "lat_grid",
963  "lon_grid",
964  "t_field",
965  "vmr_field",
966  "abs_species",
967  "abs_p_interp_order",
968  "abs_t_interp_order",
969  "abs_nls_interp_order" ),
970  GIN( "p_step", "t_step", "h2o_step" ),
971  GIN_TYPE( "Numeric", "Numeric", "Numeric" ),
972  GIN_DEFAULT( "0.05", "100", "100" ),
973  GIN_DESC( /* p_step */
974  "Maximum step in log10(p[Pa]) (base 10 logarithm)."
975  "If the pressure grid is coarser than this, additional "
976  "points are added until each log step is smaller than this.",
977  /* t_step */
978  "The temperature variation grid step in Kelvin, "
979  "for a 2D or 3D atmosphere. For a 1D atmosphere this "
980  "parameter is not used.",
981  /* h2o_step */
982  "The H2O variation grid step [fractional], if "
983  "H2O variations are done (which is determined automatically, "
984  "based on abs_species and the atmospheric dimension). For a "
985  "1D atmosphere this parameter is not used."
986  )
987  ));
988 
989  md_data_raw.push_back
990  ( MdRecord
991  ( NAME( "abs_lookupSetupBatch" ),
993  (
994  "Set up input parameters for abs_lookupCreate for batch calculations.\n"
995  "\n"
996  "This method performs a similar task as *abs_lookupSetup*, with the\n"
997  "difference, that the lookup table setup is not for a single\n"
998  "atmospheric state, but for a whole batch of them, stored in\n"
999  "*batch_atm_fields_compact*.\n"
1000  "\n"
1001  "The method checks *abs_species* to decide, which species depend on\n"
1002  "*abs_h2o*, and hence require nonlinear treatment in the lookup table.\n"
1003  "\n"
1004  "The method also checks which range of pressures, temperatures, and\n"
1005  "VMRs occurs, and sets *abs_p*, *abs_t*, *abs_t_pert*, and *abs_vmrs*\n"
1006  "accordingly.\n"
1007  "\n"
1008  "If nonlinear species are present, *abs_nls* and *abs_nls_pert* are also\n"
1009  "generated.\n"
1010  "\n"
1011  "Max and min values of H2O and temperature are adjusted to allow for\n"
1012  "numerical perturbations in Jacobian calculation.\n"
1013  "\n"
1014  "The input variables *abs_nls_interp_order* and *abs_t_interp_order*\n"
1015  "are used to make sure that there are enough points in *abs_nls_pert*\n"
1016  "and *abs_t_pert* for the chosen interpolation order.\n"
1017  "\n"
1018  "See also:\n"
1019  " *abs_lookupSetup*\n"
1020  ),
1021  AUTHORS( "Stefan Buehler" ),
1022  OUT( "abs_p",
1023  "abs_t",
1024  "abs_t_pert",
1025  "abs_vmrs",
1026  "abs_nls",
1027  "abs_nls_pert" ),
1028  GOUT(),
1029  GOUT_TYPE(),
1030  GOUT_DESC(),
1031  IN( "abs_species",
1032  "batch_atm_fields_compact",
1033  "abs_p_interp_order",
1034  "abs_t_interp_order",
1035  "abs_nls_interp_order" ),
1036  GIN( "p_step", "t_step", "h2o_step", "extremes" ),
1037  GIN_TYPE( "Numeric", "Numeric", "Numeric", "Vector" ),
1038  GIN_DEFAULT( "0.05", "20", "100", "[]" ),
1039  GIN_DESC( /* p_step */
1040  "Grid step in log10(p[Pa]) (base 10 logarithm).",
1041  /* t_step */
1042  "The temperature variation grid step in Kelvin. The true "
1043  "step can become finer than this, if required by the "
1044  "interpolation order.",
1045  /* h2o_step */
1046  "The H2O variation grid step [fractional], if H2O variations "
1047  "are done (which is determined automatically, based on "
1048  "abs_species and the atmospheric dimension). As for T, the true "
1049  "step can turn out finer if required by the interpolation order.",
1050  /* extremes */
1051  "You can give here explicit extreme values to add to "
1052  "abs_t_pert and abs_nls_pert. The order is [t_pert_min, "
1053  "t_pert_max, nls_pert_min, nls_pert_max]."
1054  )
1055  ));
1056 
1057  md_data_raw.push_back
1058  ( MdRecord
1059  ( NAME( "abs_lookupSetupWide" ),
1060  DESCRIPTION
1061  (
1062  "Set up input parameters for abs_lookupCalc for a wide range of\n"
1063  "atmospheric conditions.\n"
1064  "\n"
1065  "This method can be used to set up parameters for a lookup table that\n"
1066  "really covers all reasonable atmospheric conditions.\n"
1067  "\n"
1068  "Reference profiles of T and H2O will be constant, so that the\n"
1069  "different dimensions in the lookup table are actually \"orthogonal\",\n"
1070  "unlike the traditional case where we have pressure dependent reference\n"
1071  "profiles. This makes the table numerically somewhat more robust then\n"
1072  "the traditional ones, and it makes it straightforward to calculate the\n"
1073  "accuracy for the different interpolations with abs_lookupTestAccuracy.\n"
1074  "\n"
1075  "You can give min an max values for the atmospheric conditions. The\n"
1076  "default values are chosen such that they cover all Chevallier data set\n"
1077  "cases, and a bit more. The statistics of the Chevallier data are:\n"
1078  "\n"
1079  "min(p) / max(p) [Pa]: 1 / 104960\n"
1080  "min(T) / max(T) [K]: 158.21 / 320.39\n"
1081  "min(H2O) / max(H2O) [VMR]: -5.52e-07 / 0.049\n"
1082  ),
1083  AUTHORS( "Stefan Buehler" ),
1084  OUT( "abs_p",
1085  "abs_t",
1086  "abs_t_pert",
1087  "abs_vmrs",
1088  "abs_nls",
1089  "abs_nls_pert" ),
1090  GOUT(),
1091  GOUT_TYPE(),
1092  GOUT_DESC(),
1093  IN( "abs_species",
1094  "abs_p_interp_order",
1095  "abs_t_interp_order",
1096  "abs_nls_interp_order" ),
1097  GIN( "p_min", "p_max", "p_step", "t_min", "t_max", "h2o_min", "h2o_max" ),
1098  GIN_TYPE( "Numeric", "Numeric", "Numeric", "Numeric", "Numeric", "Numeric", "Numeric" ),
1099  GIN_DEFAULT( "0.5", "110000", "0.05", "100", "400", "0", "0.05" ),
1100  GIN_DESC( "Pressure grid minimum [Pa].",
1101  "Pressure grid maximum [Pa].",
1102  "Pressure grid step in log10(p[Pa]) (base 10 logarithm).",
1103  "Temperature grid minimum [K].",
1104  "Temperature grid maximum [K].",
1105  "Humidity grid minimum [fractional].",
1106  "Humidity grid maximum [fractional]." )
1107  ));
1108 
1109  md_data_raw.push_back
1110  ( MdRecord
1111  ( NAME( "abs_lookupTestAccuracy" ),
1112  DESCRIPTION
1113  (
1114  "Test accuracy of absorption lookup table.\n"
1115  "\n"
1116  "Explicitly compare absorption from the lookup table with line-by-line\n"
1117  "calculations for strategically selected conditions (in-between the\n"
1118  "lookup table grid points).\n"
1119  "\n"
1120  "For error units see *abs_lookupTestAccMC*\n"
1121  "\n"
1122  "Produces no workspace output, only output to the output streams.\n"
1123  ),
1124  AUTHORS( "Stefan Buehler" ),
1125  OUT(),
1126  GOUT(),
1127  GOUT_TYPE(),
1128  GOUT_DESC(),
1129  IN( "abs_lookup",
1130  "abs_lookup_is_adapted",
1131  "abs_p_interp_order",
1132  "abs_t_interp_order",
1133  "abs_nls_interp_order",
1134  "abs_n2",
1135  "abs_lines_per_species",
1136  "abs_lineshape",
1137  "abs_cont_names",
1138  "abs_cont_models",
1139  "abs_cont_parameters" ),
1140  GIN(),
1141  GIN_TYPE(),
1142  GIN_DEFAULT(),
1143  GIN_DESC()
1144  ));
1145 
1146  md_data_raw.push_back
1147  ( MdRecord
1148  ( NAME( "abs_lookupTestAccMC" ),
1149  DESCRIPTION
1150  (
1151  "Test accuracy of absorption lookup table with Monte Carlo Algorithm.\n"
1152  "\n"
1153  "Explicitly compare absorption from the lookup table with line-by-line\n"
1154  "calculations for random conditions.\n"
1155  "\n"
1156  "The quantities returned are the mean value and standard deviation of\n"
1157  "the absolute value of the relative error in percent.\n"
1158  "The relative error itself is computed for a large number of cases\n"
1159  "(pressure, temperature, and H2O VMR combinations). In the frequency\n"
1160  "dimension the maximum value is taken for each case.\n"
1161  "\n"
1162  "Produces no workspace output, only output to the output streams.\n"
1163  ),
1164  AUTHORS( "Stefan Buehler" ),
1165  OUT(),
1166  GOUT(),
1167  GOUT_TYPE(),
1168  GOUT_DESC(),
1169  IN( "abs_lookup",
1170  "abs_lookup_is_adapted",
1171  "abs_p_interp_order",
1172  "abs_t_interp_order",
1173  "abs_nls_interp_order",
1174  "abs_n2",
1175  "abs_lines_per_species",
1176  "abs_lineshape",
1177  "abs_cont_names",
1178  "abs_cont_models",
1179  "abs_cont_parameters",
1180  "mc_seed"),
1181  GIN(),
1182  GIN_TYPE(),
1183  GIN_DEFAULT(),
1184  GIN_DESC()
1185  ));
1186 
1187  md_data_raw.push_back
1188  ( MdRecord
1189  ( NAME( "abs_n2Set" ),
1190  DESCRIPTION
1191  (
1192  "Sets abs_n2 to the profile of the first tag group containing\n"
1193  "molecular nitrogen. See *abs_h2oSet* for more details.\n"
1194  ),
1195  AUTHORS( "Stefan Buehler" ),
1196  OUT( "abs_n2" ),
1197  GOUT(),
1198  GOUT_TYPE(),
1199  GOUT_DESC(),
1200  IN( "abs_species", "abs_vmrs" ),
1201  GIN(),
1202  GIN_TYPE(),
1203  GIN_DEFAULT(),
1204  GIN_DESC()
1205  ));
1206 
1207  md_data_raw.push_back
1208  ( MdRecord
1209  ( NAME( "abs_scalar_gasCalcLBL" ),
1210  DESCRIPTION
1211  (
1212  "Calculates scalar gas absorption coefficients line-by-line.\n"
1213  "\n"
1214  "This method can be used inside *abs_scalar_gas_agenda* just like\n"
1215  "*abs_scalar_gasExtractFromLookup*. It is a shortcut for putting in some\n"
1216  "other methods explicitly, namely:\n"
1217  "\n"
1218  " 1. *f_gridSelectFIndex*\n"
1219  " 2. *NumericScale*( rte_doppler, rte_doppler, -1 )\n"
1220  " 3. *VectorAddScalar*( f_grid, f_grid, rte_doppler )\n"
1221  " 4. *AbsInputFromRteScalars*\n"
1222  " 5. *abs_h2oSet*\n"
1223  " 6. *abs_coefCalc*\n"
1224  " 7. *abs_scalar_gasFromAbsCoef*\n"
1225  "\n"
1226  "Sub-methods 2 and 3 are called only if rte_doppler is not zero.\n"
1227  "The treatment of the Doppler-shift here is exact, since the underlying\n"
1228  "frequency grid is shifted.\n"
1229  "\n"
1230  "The calculation is for one specific atmospheric condition, i.e., a set\n"
1231  "of pressure, temperature, VMR values, and Doppler shift. It can be\n"
1232  "either for a single frequency (f_index>=0), or for all frequencies\n"
1233  "(f_index<0). The dimension of the output abs_scalar_gas is adjusted\n"
1234  "accordingly.\n"
1235  ),
1236  AUTHORS( "Stefan Buehler" ),
1237  OUT( "abs_scalar_gas" ),
1238  GOUT(),
1239  GOUT_TYPE(),
1240  GOUT_DESC(),
1241  IN( "f_grid",
1242  "abs_species",
1243  "abs_n2",
1244  "abs_lines_per_species",
1245  "abs_lineshape",
1246  "abs_cont_names",
1247  "abs_cont_models",
1248  "abs_cont_parameters",
1249  "f_index",
1250  "rte_pressure", "rte_temperature", "rte_vmr_list", "rte_doppler" ),
1251  GIN(),
1252  GIN_TYPE(),
1253  GIN_DEFAULT(),
1254  GIN_DESC()
1255  ));
1256 
1257  md_data_raw.push_back
1258  ( MdRecord
1259  ( NAME( "abs_scalar_gasExtractFromLookup" ),
1260  DESCRIPTION
1261  (
1262  "Extract scalar gas absorption coefficients from lookup table.\n"
1263  "\n"
1264  "This extracts the absorption coefficient for all species in the\n"
1265  "current calculation from the lookup table. Extraction is for one\n"
1266  "specific atmospheric condition, i.e., a set of pressure, temperature,\n"
1267  "VMR values, and Doppler shift.\n"
1268  "\n"
1269  "Extraction can be either for a single frequency (f_index>=0), or for\n"
1270  "all frequencies (f_index<0). The dimension of the output\n"
1271  "abs_scalar_gas is adjusted accordingly.\n"
1272  "\n"
1273  "The interpolation order in T and H2O is given by *abs_t_interp_order*\n"
1274  "and *abs_nls_interp_order*, respectively.\n"
1275  "\n"
1276  "Note that the treatment of the Doppler-shift here is approximate, since\n"
1277  "there is a linear interpolation of absorption to a shifted frequency grid.\n"
1278  "Due to this, with Doppler shift there will be an extrapolation on one edge\n"
1279  "of the grid, where the spectrum is pushed out of the calculated range.\n"
1280  "Use extpolfac to control how much extrapolation to tolerate before throwing\n"
1281  "a runtime error. Default is to allow ten times the outermost grid distance.\n"
1282  "\n"
1283  "See also: *abs_scalar_gasCalcLBL*.\n"
1284  ),
1285  AUTHORS( "Stefan Buehler" ),
1286  OUT( "abs_scalar_gas" ),
1287  GOUT(),
1288  GOUT_TYPE(),
1289  GOUT_DESC(),
1290  IN( "abs_lookup", "abs_lookup_is_adapted",
1291  "abs_p_interp_order", "abs_t_interp_order", "abs_nls_interp_order",
1292  "f_index",
1293  "rte_pressure", "rte_temperature", "rte_vmr_list", "rte_doppler" ),
1294  GIN("extpolfac"),
1295  GIN_TYPE("Numeric"),
1296  GIN_DEFAULT("10"),
1297  GIN_DESC("Extrapolation factor (for grid edge).")
1298  ));
1299 
1300  md_data_raw.push_back
1301  ( MdRecord
1302  ( NAME( "abs_scalar_gasFromAbsCoef" ),
1303  DESCRIPTION
1304  (
1305  "Copy *abs_scalar_gas* from *abs_coef*. This is handy for putting an\n"
1306  "explicit line-by-line calculation into the\n"
1307  "*abs_scalar_gas_agenda*. See also method *AbsInputFromRteScalars*.\n"
1308  ),
1309  AUTHORS( "Stefan Buehler" ),
1310  OUT( "abs_scalar_gas" ),
1311  GOUT(),
1312  GOUT_TYPE(),
1313  GOUT_DESC(),
1314  IN( "abs_coef_per_species" ),
1315  GIN(),
1316  GIN_TYPE(),
1317  GIN_DEFAULT(),
1318  GIN_DESC()
1319  ));
1320 
1321  md_data_raw.push_back
1322  ( MdRecord
1323  ( NAME( "abs_fieldCalc" ),
1324  DESCRIPTION
1325  (
1326  "Calculate scalar gas absorption for all points in the atmosphere.\n"
1327  "\n"
1328  "This is useful in two different contexts:\n"
1329  "\n"
1330  "1. For testing and plotting gas absorption. (For RT calculations, gas\n"
1331  "absorption is calculated or extracted locally, therefore there is no\n"
1332  "need to calculate a global field. But this method is handy for easy\n"
1333  "plotting of absorption vs. pressure, for example.)\n"
1334  "\n"
1335  "2. Inside the scattering region, monochromatic absorption is\n"
1336  "pre-calculated for the entire atmospheric field.\n"
1337  "\n"
1338  "Because of the different contexts, the method can calculate absorption\n"
1339  "either for all frequencies in the frequency grid (f_index<0), or just\n"
1340  "for the frequency indicated by f_index (f_index>=0).\n"
1341  "\n"
1342  "The calculation itself is performed by the\n"
1343  "*abs_scalar_gas_agenda*.\n"
1344  ),
1345  AUTHORS( "Stefan Buehler" ),
1346  OUT( "abs_field" ),
1347  GOUT(),
1348  GOUT_TYPE(),
1349  GOUT_DESC(),
1350  IN( "abs_scalar_gas_agenda",
1351  "f_index",
1352  "f_grid",
1353  "atmosphere_dim",
1354  "p_grid", "lat_grid", "lon_grid",
1355  "t_field", "vmr_field" ),
1356  GIN("doppler"),
1357  GIN_TYPE("Vector"),
1358  GIN_DEFAULT("[]"),
1359  GIN_DESC("A vector of doppler shift values in Hz. Must either be\n"
1360  "empty or have same dimension as p_grid\n")
1361  ));
1362 
1363  md_data_raw.push_back
1364  ( MdRecord
1365  ( NAME( "abs_speciesAdd" ),
1366  DESCRIPTION
1367  (
1368  "Adds species tag groups to the list of absorption species.\n"
1369  "\n"
1370  "This WSM is similar to *SpeciesSet*, the only difference is that\n"
1371  "this method appends species to an existing list of absorption species instead\n"
1372  "of creating the whole list.\n"
1373  "\n"
1374  "See *SpeciesSet* for details on how tags are defined and examples of\n"
1375  "how to input them in the control file.\n"
1376  ),
1377  AUTHORS( "Stefan Buehler" ),
1378  OUT( "abs_species" ),
1379  GOUT(),
1380  GOUT_TYPE(),
1381  GOUT_DESC(),
1382  IN( "abs_species" ),
1383  GIN( "species" ),
1384  GIN_TYPE( "ArrayOfString" ),
1385  GIN_DEFAULT( NODEF ),
1386  GIN_DESC( "Specify one String for each tag group that you want to\n"
1387  "add. Inside the String, separate the tags by commas\n"
1388  "(plus optional blanks).\n")
1389  ));
1390 
1391  md_data_raw.push_back
1392  ( MdRecord
1393  ( NAME( "abs_speciesAdd2" ),
1394  DESCRIPTION
1395  (
1396  "Adds a species tag group to the list of absorption species and\n"
1397  "jacobian quantities.\n"
1398  "\n"
1399  "The method is basically a combined call of *abs_speciesAdd* and\n"
1400  "*jacobianAddAbsSpecies*. In this way it is not needed to specify a\n"
1401  "tag group in two different places.\n"
1402  "\n"
1403  "Arguments exactly as for *jacobianAddAbsSpecies*. Note that this\n"
1404  "method only handles a single tag group, in contrast to\n"
1405  "*abs_speciesAdd*\n"
1406  ),
1407  AUTHORS( "Patrick Eriksson" ),
1408  OUT( "abs_species", "jacobian_quantities", "jacobian_agenda" ),
1409  GOUT(),
1410  GOUT_TYPE(),
1411  GOUT_DESC(),
1412  IN( "abs_species", "atmosphere_dim", "p_grid", "lat_grid",
1413  "lon_grid" ),
1414  GIN( "gin1" , "gin2" , "gin3" ,
1415  "species", "method", "unit", "dx" ),
1416  GIN_TYPE( "Vector", "Vector", "Vector",
1417  "String", "String", "String", "Numeric" ),
1418  GIN_DEFAULT( NODEF , NODEF , NODEF ,
1419  NODEF, NODEF, NODEF, NODEF ),
1420  GIN_DESC( "Pressure retrieval grid.",
1421  "Latitude retrieval grid.",
1422  "Longitude retreival grid.",
1423  "The species tag of the retrieval quantity.",
1424  "Calculation method. See above.",
1425  "Retrieval unit. See above.",
1426  "Size of perturbation."
1427  ),
1428  SETMETHOD( false ),
1429  AGENDAMETHOD( false ),
1430  SUPPRESSHEADER( false ),
1431  PASSWORKSPACE( true )
1432  ));
1433 
1434  md_data_raw.push_back
1435  ( MdRecord
1436  ( NAME( "abs_speciesDefineAllInScenario" ),
1437  DESCRIPTION
1438  (
1439  "Define one tag group for each species known to ARTS and included in an\n"
1440  "atmospheric scenario.\n"
1441  "\n"
1442  "You can use this as an alternative to tgsDefine if you want to make an\n"
1443  "absorption calculation that is as complete as possible. The method\n"
1444  "goes through all defined species and tries to open the VMR file. If\n"
1445  "this works the tag is included, otherwise it is skipped.\n"
1446  ),
1447  AUTHORS( "Stefan Buehler" ),
1448  OUT( "abs_species" ),
1449  GOUT(),
1450  GOUT_TYPE(),
1451  GOUT_DESC(),
1452  IN(),
1453  GIN( "basename" ),
1454  GIN_TYPE( "String" ),
1455  GIN_DEFAULT( NODEF ),
1456  GIN_DESC( "The name and path of a particular atmospheric scenario.\n"
1457  "For example: /pool/lookup2/arts-data/atmosphere/fascod/tropical" )
1458  ));
1459 
1460  md_data_raw.push_back
1461  ( MdRecord
1462  ( NAME( "abs_speciesInit" ),
1463  DESCRIPTION
1464  (
1465  "Sets *abs_species* to be empty.\n"
1466  ),
1467  AUTHORS( "Stefan Buehler" ),
1468  OUT( "abs_species" ),
1469  GOUT(),
1470  GOUT_TYPE(),
1471  GOUT_DESC(),
1472  IN(),
1473  GIN(),
1474  GIN_TYPE(),
1475  GIN_DEFAULT(),
1476  GIN_DESC()
1477  ));
1478 
1479  md_data_raw.push_back
1480  ( MdRecord
1481  ( NAME( "abs_vecAddGas" ),
1482  DESCRIPTION
1483  (
1484  "Add gas absorption to first element of absorption vector.\n"
1485  "\n"
1486  "The task of this method is to sum up the gas absorption of the\n"
1487  "different gas species and add the result to the first element of the\n"
1488  "absorption vector.\n"
1489  ),
1490  AUTHORS( "Stefan Buehler" ),
1491  OUT( "abs_vec" ),
1492  GOUT(),
1493  GOUT_TYPE(),
1494  GOUT_DESC(),
1495  IN( "abs_vec", "abs_scalar_gas" ),
1496  GIN(),
1497  GIN_TYPE(),
1498  GIN_DEFAULT(),
1499  GIN_DESC()
1500  ));
1501 
1502  md_data_raw.push_back
1503  ( MdRecord
1504  ( NAME( "abs_vecAddPart" ),
1505  DESCRIPTION
1506  (
1507  "The particle absorption is added to *abs_vec*\n"
1508  "\n"
1509  "This function sums up the absorption vectors for all particle\n"
1510  "types weighted with particle number density.\n"
1511  "The resluling absorption vector is added to the workspace\n"
1512  "variable *abs_vec*\n"
1513  "Output and input of this method is *abs_vec* (stokes_dim).\n"
1514  "The inputs are the absorption vector for the single particle type\n"
1515  "*abs_vec_spt* (part_types, stokes_dim) and the local particle\n"
1516  " number densities for all particle types namely the\n"
1517  "*pnd_field* (part_types, p_grid, lat_grid, lon_grid, ) for given\n"
1518  "*p_grid*, *lat_grid*, and *lon_grid*. The particle types required\n"
1519  "are specified in the control file.\n"
1520  ),
1521  AUTHORS( "Sreerekha T.R." ),
1522  OUT( "abs_vec" ),
1523  GOUT(),
1524  GOUT_TYPE(),
1525  GOUT_DESC(),
1526  IN( "abs_vec", "abs_vec_spt", "pnd_field", "atmosphere_dim",
1527  "scat_p_index", "scat_lat_index", "scat_lon_index" ),
1528  GIN(),
1529  GIN_TYPE(),
1530  GIN_DEFAULT(),
1531  GIN_DESC()
1532  ));
1533 
1534  md_data_raw.push_back
1535  ( MdRecord
1536  ( NAME( "abs_vecInit" ),
1537  DESCRIPTION
1538  (
1539  "Initialize absorption vector.\n"
1540  "\n"
1541  "This method is necessary, because all other absorption methods just\n"
1542  "add to the existing absorption vector.\n"
1543  "\n"
1544  "So, here we have to make it the right size and fill it with 0.\n"
1545  "\n"
1546  "Note, that the vector is not really a vector, because it has a\n"
1547  "leading frequency dimension.\n"
1548  ),
1549  AUTHORS( "Stefan Buehler" ),
1550  OUT( "abs_vec" ),
1551  GOUT(),
1552  GOUT_TYPE(),
1553  GOUT_DESC(),
1554  IN( "f_grid", "stokes_dim", "f_index" ),
1555  GIN(),
1556  GIN_TYPE(),
1557  GIN_DEFAULT(),
1558  GIN_DESC()
1559  ));
1560 
1561  md_data_raw.push_back
1562  ( MdRecord
1563  ( NAME( "abs_xsec_per_speciesAddConts" ),
1564  DESCRIPTION
1565  (
1566  "Calculate absorption cross sections per tag group for continua.\n"
1567  ),
1568  AUTHORS( "Stefan Buehler" ),
1569  OUT( "abs_xsec_per_species" ),
1570  GOUT(),
1571  GOUT_TYPE(),
1572  GOUT_DESC(),
1573  IN( "abs_species", "f_grid", "abs_p", "abs_t", "abs_n2", "abs_h2o",
1574  "abs_vmrs", "abs_cont_names", "abs_cont_parameters",
1575  "abs_cont_models" ),
1576  GIN(),
1577  GIN_TYPE(),
1578  GIN_DEFAULT(),
1579  GIN_DESC()
1580  ));
1581 
1582  md_data_raw.push_back
1583  ( MdRecord
1584  ( NAME( "abs_xsec_per_speciesAddLines" ),
1585  DESCRIPTION
1586  (
1587  "Calculates the line spectrum for each tag group and adds\n"
1588  "it to abs_xsec_per_species.\n"
1589  ),
1590  AUTHORS( "Stefan Buehler", "Axel von Engeln" ),
1591  OUT( "abs_xsec_per_species" ),
1592  GOUT(),
1593  GOUT_TYPE(),
1594  GOUT_DESC(),
1595  IN( "abs_species", "f_grid", "abs_p", "abs_t", "abs_h2o",
1596  "abs_vmrs", "abs_lines_per_species", "abs_lineshape" ),
1597  GIN(),
1598  GIN_TYPE(),
1599  GIN_DEFAULT(),
1600  GIN_DESC()
1601  ));
1602 
1603  md_data_raw.push_back
1604  ( MdRecord
1605  ( NAME( "abs_xsec_per_speciesInit" ),
1606  DESCRIPTION
1607  (
1608  "Initialize *abs_xsec_per_species*.\n"
1609  "\n"
1610  "The initialization is\n"
1611  "necessary, because methods *abs_xsec_per_speciesAddLines*\n"
1612  "and *abs_xsec_per_speciesAddConts* just add to *abs_xsec_per_species*.\n"
1613  "The size is determined from *tgs*.\n"
1614  ),
1615  AUTHORS( "Stefan Buehler" ),
1616  OUT( "abs_xsec_per_species" ),
1617  GOUT(),
1618  GOUT_TYPE(),
1619  GOUT_DESC(),
1620  IN( "abs_species", "f_grid", "abs_p" ),
1621  GIN(),
1622  GIN_TYPE(),
1623  GIN_DEFAULT(),
1624  GIN_DESC()
1625  ));
1626 
1627  md_data_raw.push_back
1628  ( MdRecord
1629  ( NAME( "AgendaExecute" ),
1630  DESCRIPTION
1631  (
1632  "Execute an agenda.\n"
1633  ),
1634  AUTHORS( "Oliver Lemke" ),
1635  OUT(),
1636  GOUT(),
1637  GOUT_TYPE(),
1638  GOUT_DESC(),
1639  IN(),
1640  GIN( "a" ),
1641  GIN_TYPE( "Agenda" ),
1642  GIN_DEFAULT( NODEF ),
1643  GIN_DESC( "Agenda to be executed." ),
1644  SETMETHOD( false ),
1645  AGENDAMETHOD( false )
1646  ));
1647 
1648  md_data_raw.push_back
1649  ( MdRecord
1650  ( NAME( "AgendaAppend" ),
1651  DESCRIPTION
1652  (
1653  "Append methods to an agenda.\n"
1654  "\n"
1655  "An agenda is used to store a list of methods that are meant to be\n"
1656  "executed sequentially.\n"
1657  "\n"
1658  "This method takes the methods given in the body (in the curly braces)\n"
1659  "and appends them to the agenda given by the output argument (in the round\n"
1660  "braces).\n"
1661  "\n"
1662  "It also uses the agenda lookup data (defined in file agendas.cc) to\n"
1663  "check, whether the given methods use the right input WSVs and produce\n"
1664  "the right output WSVs.\n"
1665  ),
1666  AUTHORS( "Oliver Lemke" ),
1667  OUT(),
1668  GOUT( "aout" ),
1669  GOUT_TYPE( "Agenda" ),
1670  GOUT_DESC( "Target agenda." ),
1671  IN(),
1672  GIN( "ain" ),
1673  GIN_TYPE( "Agenda" ),
1674  GIN_DEFAULT( NODEF ),
1675  GIN_DESC( "Source agenda." ),
1676  SETMETHOD( false ),
1677  AGENDAMETHOD( true ),
1678  SUPPRESSHEADER( false ),
1679  PASSWORKSPACE( false ),
1680  PASSWSVNAMES( true )
1681  ));
1682 
1683  md_data_raw.push_back
1684  ( MdRecord
1685  ( NAME( "AgendaSet" ),
1686  DESCRIPTION
1687  (
1688  "Set up an agenda.\n"
1689  "\n"
1690  "An agenda is used to store a list of methods that are meant to be\n"
1691  "executed sequentially.\n"
1692  "\n"
1693  "This method takes the methods given in the body (in the curly braces)\n"
1694  "and puts them in the agenda given by the output argument (in the round\n"
1695  "braces).\n"
1696  "\n"
1697  "It also uses the agenda lookup data (defined in file agendas.cc) to\n"
1698  "check, whether the given methods use the right input WSVs and\n"
1699  "produce the right output WSVs.\n"
1700  ),
1701  AUTHORS( "Oliver Lemke" ),
1702  OUT(),
1703  GOUT( "a" ),
1704  GOUT_TYPE( "Agenda" ),
1705  GOUT_DESC( "The new agenda." ),
1706  IN(),
1707  GIN(),
1708  GIN_TYPE(),
1709  GIN_DEFAULT(),
1710  GIN_DESC(),
1711  SETMETHOD( false ),
1712  AGENDAMETHOD( true ),
1713  SUPPRESSHEADER( false ),
1714  PASSWORKSPACE( false ),
1715  PASSWSVNAMES( true )
1716  ));
1717 
1718  md_data_raw.push_back
1719  ( MdRecord
1720  ( NAME( "AntennaConstantGaussian1D" ),
1721  DESCRIPTION
1722  (
1723  "Sets up a 1D gaussian antenna response and a matching\n"
1724  "*mblock_za_grid*.\n"
1725  "\n"
1726  "As *antenna_responseGaussian*, but alsp creates *mblock_za_grid*.\n"
1727  "For returned antenna response, see *antenna_responseGaussian*.\n"
1728  "\n"
1729  "The length of *mblock_za_grid* is determined by *n_za_grid*.\n"
1730  "The end points of the grid are set to be the same as for the\n"
1731  "antenna response. The spacing of the grid follows the magnitude of\n"
1732  "the response; the spacing is smaller where the response is high.\n"
1733  "More precisely, the grid points are determined by dividing\n"
1734  "the cumulative sum of the response in equal steps. This makes sense\n"
1735  "if the representation error of the radiance (as a function of\n"
1736  " zenith angle) increases linearly with the grid spacing.\n"
1737  "\n"
1738  "The WSV *antenna_los* is set to 0.\n"
1739  ),
1740  AUTHORS( "Patrick Eriksson" ),
1741  OUT( "antenna_dim", "mblock_za_grid", "mblock_aa_grid",
1742  "antenna_response", "antenna_los" ),
1743  GOUT(),
1744  GOUT_TYPE(),
1745  GOUT_DESC(),
1746  IN( ),
1747  GIN( "n_za_grid", "fwhm", "xwidth_si", "dx_si" ),
1748  GIN_TYPE( "Index", "Numeric", "Numeric", "Numeric" ),
1749  GIN_DEFAULT( NODEF, NODEF, "3", "0.1" ),
1750  GIN_DESC( "Number of poits to include in*mblock_za_grid*.",
1751  "Full width at half-maximum",
1752  "Half-width of response, in terms of std. dev.",
1753  "Grid spacing, in terms of std. dev." )
1754  ));
1755 
1756  md_data_raw.push_back
1757  ( MdRecord
1758  ( NAME( "AntennaMultiBeamsToPencilBeams" ),
1759  DESCRIPTION
1760  (
1761  "Maps a multi-beam case to a matching pencil beam case.\n"
1762  "\n"
1763  "Cases with overlapping beams are most efficiently handled by\n"
1764  "letting *antenna_los* have several rows. That is, there are\n"
1765  "multiple beams for each measurement block. The drawback is that\n"
1766  "many variables must be adjusted if the corresponding pencil beam\n"
1767  "spectra shall be calculated. This method makes this adjustment.\n"
1768  "That is, if you have a control file for a multiple beam case and\n"
1769  "for some reason want to avoid the antenna weighting, you add this\n"
1770  "method before *sensor_responseInit*, and remove the call of\n"
1771  "*sensor_responseAntenna* and you will get the matching pencil beam\n"
1772  "spectra.\n"
1773  ),
1774  AUTHORS( "Patrick Eriksson" ),
1775  OUT( "sensor_pos", "sensor_los", "antenna_los", "antenna_dim",
1776  "mblock_za_grid", "mblock_aa_grid" ),
1777  GOUT(),
1778  GOUT_TYPE(),
1779  GOUT_DESC(),
1780  IN( "sensor_pos", "sensor_los", "antenna_los", "antenna_dim",
1781  "mblock_za_grid", "mblock_aa_grid", "atmosphere_dim" ),
1782  GIN(),
1783  GIN_TYPE(),
1784  GIN_DEFAULT(),
1785  GIN_DESC()
1786  ));
1787 
1788  md_data_raw.push_back
1789  ( MdRecord
1790  ( NAME( "AntennaOff" ),
1791  DESCRIPTION
1792  (
1793  "Sets some antenna related variables\n"
1794  "\n"
1795  "Use this method to set *antenna_dim*, *mblock_za_grid* and\n"
1796  "*mblock_aa_grid* to suitable values (1, [0] and [], respectively)\n"
1797  "for cases when a sensor is included, but the antenna pattern is\n"
1798  "neglected.\n"
1799  ),
1800  AUTHORS( "Patrick Eriksson" ),
1801  OUT( "antenna_dim", "mblock_za_grid", "mblock_aa_grid" ),
1802  GOUT(),
1803  GOUT_TYPE(),
1804  GOUT_DESC(),
1805  IN(),
1806  GIN(),
1807  GIN_TYPE(),
1808  GIN_DEFAULT(),
1809  GIN_DESC()
1810  ));
1811 
1812  md_data_raw.push_back
1813  ( MdRecord
1814  ( NAME( "AntennaSet1D" ),
1815  DESCRIPTION
1816  (
1817  "Sets the antenna dimension to 1D.\n"
1818  "\n"
1819  "Sets *antenna_dim* to 1 and sets *mblock_aa_grid* to be empty.\n"
1820  ),
1821  AUTHORS( "Patrick Eriksson" ),
1822  OUT( "antenna_dim", "mblock_aa_grid" ),
1823  GOUT(),
1824  GOUT_TYPE(),
1825  GOUT_DESC(),
1826  IN(),
1827  GIN(),
1828  GIN_TYPE(),
1829  GIN_DEFAULT(),
1830  GIN_DESC()
1831  ));
1832 
1833  md_data_raw.push_back
1834  ( MdRecord
1835  ( NAME( "AntennaSet2D" ),
1836  DESCRIPTION
1837  (
1838  "Sets the antenna dimension to 2D.\n"
1839  "\n"
1840  "Sets *antenna_dim* to 2.\n"
1841  "\n"
1842  "It is only allowed to set *antenna_dim* to 2 when *atmosphere_dim*\n"
1843  "equals 3.\n"
1844  ),
1845  AUTHORS( "Patrick Eriksson" ),
1846  OUT( "antenna_dim" ),
1847  GOUT(),
1848  GOUT_TYPE(),
1849  GOUT_DESC(),
1850  IN( "atmosphere_dim" ),
1851  GIN(),
1852  GIN_TYPE(),
1853  GIN_DEFAULT(),
1854  GIN_DESC()
1855  ));
1856 
1857  md_data_raw.push_back
1858  ( MdRecord
1859  ( NAME( "antenna_responseGaussian" ),
1860  DESCRIPTION
1861  (
1862  "Sets up a gaussian antenna response.\n"
1863  "\n"
1864  "The method assumes that the response is the same for all\n"
1865  "frequencies and polarisations, and that it can be modelled as\n"
1866  "gaussian.\n"
1867  "\n"
1868  "The grid generated can be written as\n"
1869  " si * [-xwidth_si:dx_si:xwidth_si]\n"
1870  "where si is the standard deviation corresponding to the FWHM.\n"
1871  "That is, width and spacing of the grid is specified in terms of\n"
1872  "number of standard deviations. If xwidth_si is set to 2, the\n"
1873  "response will cover about 95% the complete response. For\n"
1874  "xwidth_si=3, about 99% is covered.\n"
1875  ),
1876  AUTHORS( "Patrick Eriksson" ),
1877  OUT( "antenna_response" ),
1878  GOUT(),
1879  GOUT_TYPE(),
1880  GOUT_DESC(),
1881  IN( ),
1882  GIN( "fwhm", "xwidth_si", "dx_si" ),
1883  GIN_TYPE( "Numeric", "Numeric", "Numeric" ),
1884  GIN_DEFAULT( NODEF, "3", "0.1" ),
1885  GIN_DESC( "Full width at half-maximum",
1886  "Half-width of response, in terms of std. dev.",
1887  "Grid spacing, in terms of std. dev." )
1888  ));
1889 
1890  md_data_raw.push_back
1891  ( MdRecord
1892  ( NAME( "Append" ),
1893  DESCRIPTION
1894  (
1895  "Appends a workspace *in* variable to another workspace *out* variable.\n"
1896  "\n"
1897  "This method can append a workspace variable\n"
1898  "to another workspace variable of the same group. (E.g., a\n"
1899  "*ArrayOfMatrix* to another * ArrayOfMatrix*.)\n"
1900  "\n"
1901  "This method is not implemented for all types, just for those where an\n"
1902  "append makes sense (see variable list below.).\n"
1903  "\n"
1904  "As always, output comes first in the argument list!\n"
1905  ),
1906  AUTHORS( "Stefan Buehler" ),
1907  OUT(),
1908  GOUT( "out" ),
1909  GOUT_TYPE( ARRAY_GROUPS + ", Vector" + ", String" +
1910  ", ArrayOfSingleScatteringData" + ", ArrayOfScatteringMetaData" ),
1911  GOUT_DESC( "The variable to append to." ),
1912  IN(),
1913  GIN( "in" ),
1914  GIN_TYPE( ARRAY_GROUPS + ", Vector" + ", String" +
1915  ", SingleScatteringData" + ", ScatteringMetaData" ),
1916  GIN_DEFAULT( NODEF ),
1917  GIN_DESC( "The variable to append." ),
1918  SETMETHOD( false ),
1919  AGENDAMETHOD( false ),
1920  SUPPRESSHEADER( true )
1921  ));
1922 
1923  md_data_raw.push_back
1924  ( MdRecord
1925  ( NAME( "ArrayOfIndexSet" ),
1926  DESCRIPTION
1927  (
1928  "Creates an ArrayOfIndex from the given list of numbers.\n"
1929  ),
1930  AUTHORS( "Oliver Lemke" ),
1931  OUT(),
1932  GOUT( "ai" ),
1933  GOUT_TYPE( "ArrayOfIndex" ),
1934  GOUT_DESC( "Variable to initialize." ),
1935  IN(),
1936  GIN( "values" ),
1937  GIN_TYPE( "ArrayOfIndex" ),
1938  GIN_DEFAULT( NODEF ),
1939  GIN_DESC( "Indexes for initializiation." ),
1940  SETMETHOD( true )
1941  ));
1942 
1943  md_data_raw.push_back
1944  ( MdRecord
1945  ( NAME( "ArrayOfIndexSetConstant" ),
1946  DESCRIPTION
1947  (
1948  "Creates an ArrayOfIndex of length *nelem*, with all values\n"
1949  "identical.\n"
1950  ),
1951  AUTHORS( "Patrick Eriksson" ),
1952  OUT(),
1953  GOUT( "ai" ),
1954  GOUT_TYPE( "ArrayOfIndex" ),
1955  GOUT_DESC( "Variable to initialize." ),
1956  IN( "nelem" ),
1957  GIN( "value" ),
1958  GIN_TYPE( "Index" ),
1959  GIN_DEFAULT( NODEF ),
1960  GIN_DESC( "Array value.." ),
1961  SETMETHOD( true )
1962  ));
1963 
1964  md_data_raw.push_back
1965  ( MdRecord
1966  ( NAME( "ArrayOfStringSet" ),
1967  DESCRIPTION
1968  (
1969  "Sets a String array according the given text.\n"
1970  "The format is text = [\"String1\",\"String2\",...]\n"
1971  ),
1972  AUTHORS( "Oliver Lemke" ),
1973  OUT(),
1974  GOUT( "as" ),
1975  GOUT_TYPE( "ArrayOfString" ),
1976  GOUT_DESC( "Variable to initialize." ),
1977  IN(),
1978  GIN( "text" ),
1979  GIN_TYPE( "ArrayOfString" ),
1980  GIN_DEFAULT( NODEF ),
1981  GIN_DESC( "Strings for initialization." ),
1982  SETMETHOD( true )
1983  ));
1984 
1985  md_data_raw.push_back
1986  ( MdRecord
1987  ( NAME( "Arts" ),
1988  DESCRIPTION
1989  (
1990  "Runs the agenda that is specified inside the curly braces. ARTS\n"
1991  "controlfiles must define this method. It is executed automatically\n"
1992  "when ARTS is run on the controlfile and cannot be called by the user.\n"
1993  "This methods was used for Arts 1 controlfiles and is now obsolete.\n"
1994  "See *Arts2*\n"
1995  ),
1996  AUTHORS( "Stefan Buehler" ),
1997  OUT(),
1998  GOUT(),
1999  GOUT_TYPE(),
2000  GOUT_DESC(),
2001  IN(),
2002  GIN(),
2003  GIN_TYPE(),
2004  GIN_DEFAULT(),
2005  GIN_DESC(),
2006  SETMETHOD( false ),
2007  AGENDAMETHOD( true )
2008  ));
2009 
2010  md_data_raw.push_back
2011  ( MdRecord
2012  ( NAME( "Arts2" ),
2013  DESCRIPTION
2014  (
2015  "Runs the agenda that is specified inside the curly braces. ARTS\n"
2016  "controlfiles must define this method. It is executed automatically\n"
2017  "when ARTS is run on the controlfile and cannot be called by the user.\n"
2018  ),
2019  AUTHORS( "Oliver Lemke" ),
2020  OUT(),
2021  GOUT(),
2022  GOUT_TYPE(),
2023  GOUT_DESC(),
2024  IN(),
2025  GIN(),
2026  GIN_TYPE(),
2027  GIN_DEFAULT(),
2028  GIN_DESC(),
2029  SETMETHOD( false ),
2030  AGENDAMETHOD( true )
2031  ));
2032 
2033  md_data_raw.push_back
2034  ( MdRecord
2035  ( NAME( "AtmFieldsCalc" ),
2036  DESCRIPTION
2037  (
2038  "Interpolation of raw atmospheric fields.\n"
2039  "\n"
2040  "An atmospheric scenario includes the following data for each\n"
2041  "position (pressure, latitude, longitude) in the atmosphere:\n"
2042  " 1. temperature field\n"
2043  " 2. the corresponding altitude field\n"
2044  " 3. vmr fields for the gaseous species\n"
2045  "This method interpolates the fields of raw data (*t_field_raw*,\n"
2046  "*z_field_raw*) which can be stored on arbitrary\n"
2047  "grids to the calculation grids (*p_grid*, *lat_grid*, *lon_grid*).\n"
2048  "\n"
2049  "With parameter interp_order you can control the order of \n"
2050  "interpolation. The default is 1 (linear interpolation).\n"
2051  ),
2052  AUTHORS( "Claudia Emde", "Stefan Buehler" ),
2053  OUT( "t_field", "z_field", "vmr_field" ),
2054  GOUT(),
2055  GOUT_TYPE(),
2056  GOUT_DESC(),
2057  IN( "p_grid", "lat_grid", "lon_grid", "t_field_raw", "z_field_raw",
2058  "vmr_field_raw", "atmosphere_dim" ),
2059  GIN( "interp_order" ),
2060  GIN_TYPE( "Index" ),
2061  GIN_DEFAULT( "1" ),
2062  GIN_DESC( "Interpolation order." )
2063  ));
2064 
2065  md_data_raw.push_back
2066  ( MdRecord
2067  ( NAME( "AtmFieldsCalcExpand1D" ),
2068  DESCRIPTION
2069  (
2070  "Interpolation of 1D raw atmospheric fields to create 2D or 3D\n"
2071  "homogeneous atmospheric fields.\n"
2072  "\n"
2073  "The method works as *AtmFieldsCalc*, but accepts only raw 1D\n"
2074  "atmospheres. The raw atmosphere is interpolated to *p_grid* and\n"
2075  "the obtained values are applied for all latitudes, and also\n"
2076  "longitudes for 3D, to create a homogeneous atmosphere.\n"
2077  "\n"
2078  "The method deals only with the atmospheric fields, and to create\n"
2079  "a true 2D or 3D version of a 1D case, a demand is also that the\n"
2080  "geoid radius is set to be constant for all latitudes/longitudes.\n"
2081  "\n"
2082  "With parameter interp_order you can control the order of \n"
2083  "interpolation. The default is 1 (linear interpolation).\n"
2084  ),
2085  AUTHORS( "Patrick Eriksson", "Claudia Emde", "Stefan Buehler" ),
2086  OUT( "t_field", "z_field", "vmr_field" ),
2087  GOUT(),
2088  GOUT_TYPE(),
2089  GOUT_DESC(),
2090  IN( "p_grid", "lat_grid", "lon_grid", "t_field_raw", "z_field_raw",
2091  "vmr_field_raw", "atmosphere_dim" ),
2092  GIN( "interp_order" ),
2093  GIN_TYPE( "Index" ),
2094  GIN_DEFAULT( "1" ),
2095  GIN_DESC( "Interpolation order." )
2096  ));
2097 
2098  md_data_raw.push_back
2099  ( MdRecord
2100  ( NAME( "AtmFieldsExpand1D" ),
2101  DESCRIPTION
2102  (
2103  "Maps a 1D case to 2D or 3D homogeneous atmospheric fields.\n"
2104  "\n"
2105  "This method takes a 1D atmospheric case and converts it to the\n"
2106  "corresponding case for 2D or 3D. The atmospheric fields (t_field,\n"
2107  "z_field and vmr_field) must be 1D and match *p_grid*. The size of\n"
2108  "the new data is determined by *atmosphere_dim*, *lat_grid* and\n"
2109  "*lon_grid*. That is, these later variables have been changed since\n"
2110  "the original fields were created.\n"
2111  "\n"
2112  "The method deals only with the atmospheric fields, and to create\n"
2113  "a true 2D or 3D version of a 1D case, a demand is also that the\n"
2114  "geoid radius is set to be constant for all latitudes/longitudes.\n"
2115  ),
2116  AUTHORS( "Patrick Eriksson" ),
2117  OUT( "t_field", "z_field", "vmr_field" ),
2118  GOUT(),
2119  GOUT_TYPE(),
2120  GOUT_DESC(),
2121  IN( "t_field", "z_field", "vmr_field", "p_grid", "lat_grid",
2122  "lon_grid", "atmosphere_dim" ),
2123  GIN(),
2124  GIN_TYPE(),
2125  GIN_DEFAULT(),
2126  GIN_DESC()
2127  ));
2128 
2129  md_data_raw.push_back
2130  ( MdRecord
2131  ( NAME( "AtmFieldsRefinePgrid" ),
2132  DESCRIPTION
2133  (
2134  "Refine the pressure grid in the atmospheric fields.\n"
2135  "\n"
2136  "This method is used for absorption lookup table testing. It probably\n"
2137  "has no other application.\n"
2138  "\n"
2139  "It adds additional vertical grid points to the atmospheric fields, by\n"
2140  "interpolating them in the usual ARTS way (linear in log pressure).\n"
2141  "\n"
2142  "How fine the new grid will be is determined by the keyword parameter\n"
2143  "p_step. The definition of p_step, and the interpolation behavior, is\n"
2144  "consistent with *abs_lookupSetup* and *abs_lookupSetupBatch*. (New\n"
2145  "points are added between the original ones, so that the spacing is\n"
2146  "always below p_step.)\n"
2147  ),
2148  AUTHORS( "Stefan Buehler" ),
2149  OUT( "p_grid",
2150  "t_field", "z_field", "vmr_field" ),
2151  GOUT(),
2152  GOUT_TYPE(),
2153  GOUT_DESC(),
2154  IN( "p_grid", "lat_grid", "lon_grid",
2155  "t_field", "z_field", "vmr_field", "atmosphere_dim" ),
2156  GIN( "p_step" ),
2157  GIN_TYPE( "Numeric" ),
2158  GIN_DEFAULT( NODEF ),
2159  GIN_DESC("Maximum step in log(p[Pa]) (natural logarithm, as always). If\n"
2160  "the pressure grid is coarser than this, additional points\n"
2161  "are added until each log step is smaller than this.\n")
2162  ));
2163 
2164  md_data_raw.push_back
2165  ( MdRecord
2166  ( NAME( "atm_fields_compactAddConstant" ),
2167  DESCRIPTION
2168  (
2169  "Adds a constant field to atm_fields_compact.\n"
2170  "\n"
2171  "This is handy for nitrogen or oxygen. The constant value is\n"
2172  "appended at the end of the fields that are already there. All\n"
2173  "dimensions (pressure, latitude, longitude) are filled up, so this\n"
2174  "works for 1D, 2D, or 3D atmospheres.\n"
2175  ),
2176  AUTHORS( "Stefan Buehler" ),
2177  OUT( "atm_fields_compact" ),
2178  GOUT(),
2179  GOUT_TYPE(),
2180  GOUT_DESC(),
2181  IN( "atm_fields_compact" ),
2182  GIN( "name", "value" ),
2183  GIN_TYPE( "String", "Numeric" ),
2184  GIN_DEFAULT( NODEF, NODEF ),
2185  GIN_DESC( "Name of additional atmospheric field, with constant value.",
2186  "Constant value of additional field." )
2187  ));
2188 
2189  md_data_raw.push_back
2190  ( MdRecord
2191  ( NAME( "atm_fields_compactAddSpecies" ),
2192  DESCRIPTION
2193  (
2194  "Adds a field to atm_fields_compact, with interpolation.\n"
2195  "\n"
2196  "This method appends a *GriddedField3* to *atm_fields_compact*.\n"
2197  "The *GriddedField3* is interpolated upon the grid of *atm_fields_compact*.\n"
2198  "A typical use case for this method may be to add a climatology of some gas\n"
2199  "when this gas is needed for radiative transfer calculations, but\n"
2200  "not yet present in *atm_fields_compact*. One case where this happens\n"
2201  "is when using the Chevalier dataset for infrared simulations.\n"
2202  "\n"
2203  "The grids in *atm_fields_compact* must fully encompass the grids in\n"
2204  "the *GriddedField3* to be added, for interpolation to succeed. If\n"
2205  "this is not the case, a RuntimeError is thrown.\n"
2206  ),
2207  AUTHORS( "Gerrit Holl" ),
2208  OUT( "atm_fields_compact" ),
2209  GOUT(),
2210  GOUT_TYPE(),
2211  GOUT_DESC(),
2212  IN( "atm_fields_compact" ),
2213  GIN( "name", "value" ),
2214  GIN_TYPE( "String", "GriddedField3" ),
2215  GIN_DEFAULT( NODEF, NODEF ),
2216  GIN_DESC( "Name of additional atmospheric field.",
2217  "Value of additional atmospheric field." )
2218  ));
2219 
2220  md_data_raw.push_back
2221  ( MdRecord
2222  ( NAME( "batch_atm_fields_compactAddConstant" ),
2223  DESCRIPTION
2224  (
2225  "Adds a constant field to batch_atm_fields_compact.\n"
2226  "\n"
2227  "Applies *atm_fields_compactAddConstant* to each batch.\n"
2228  "The format is equal to that WSM.\n"
2229  ),
2230  AUTHORS( "Gerrit Holl" ),
2231  OUT( "batch_atm_fields_compact" ),
2232  GOUT(),
2233  GOUT_TYPE(),
2234  GOUT_DESC(),
2235  IN( "batch_atm_fields_compact" ),
2236  GIN( "name", "value" ),
2237  GIN_TYPE( "String", "Numeric" ),
2238  GIN_DEFAULT( NODEF, NODEF ),
2239  GIN_DESC( "Name of additional atmospheric field, with constant value.",
2240  "Constant value of additional field." )
2241  ));
2242 
2243 
2244  md_data_raw.push_back
2245  ( MdRecord
2246  ( NAME( "batch_atm_fields_compactAddSpecies" ),
2247  DESCRIPTION
2248  (
2249  "Adds a field to *batch_atm_fields_compact*, with interpolation.\n"
2250  "\n"
2251  "This method appends a *GriddedField3* to each *atm_fields_compact*.\n"
2252  "in *batch_atm_fields_compact*. For details, see *atm_fields_compactAddSpecies*.\n"
2253  ),
2254  AUTHORS( "Gerrit Holl" ),
2255  OUT( "batch_atm_fields_compact" ),
2256  GOUT(),
2257  GOUT_TYPE(),
2258  GOUT_DESC(),
2259  IN( "batch_atm_fields_compact" ),
2260  GIN( "name", "value" ),
2261  GIN_TYPE( "String", "GriddedField3" ),
2262  GIN_DEFAULT( NODEF, NODEF ),
2263  GIN_DESC( "Name of additional atmospheric field. Use, e.g., vmr_ch4 for methane VMR",
2264  "Value of additional atmospheric field." )
2265  ));
2266 
2267 
2268  md_data_raw.push_back
2269  ( MdRecord
2270  ( NAME( "atm_fields_compactFromMatrix" ),
2271  DESCRIPTION
2272  (
2273  "Set *atm_fields_compact* from 1D profiles in a matrix.\n"
2274  "\n"
2275  "For clear-sky batch calculations it is handy to store atmospheric\n"
2276  "profiles in an array of matrix. We take such a matrix, and create\n"
2277  "*atm_fields_compact* from it.\n"
2278  "\n"
2279  "The matrix must contain one row for each pressure level.\n"
2280  "The matrix can contain some additional fields which are not directly used\n"
2281  "by ARTS for calculations but can be required for further processing,\n"
2282  "for e.g. wind speed and direction. In this case, additional fields must\n"
2283  "be put at the end of the matrix and they must be flagged by 'ignore',\n"
2284  "large or small letters, in the field names.\n"
2285  "Recommended row format:\n"
2286  "\n"
2287  "p[Pa] T[K] z[m] VMR_1[fractional] ... VMR[fractional] IGNORE ... IGNORE\n"
2288  "\n"
2289  "Works only for *atmosphere_dim==1.*\n"
2290  "\n"
2291  "Keywords:\n"
2292  " field_names : Field names to store in atm_fields_compact.\n"
2293  " This should be, e.g.:\n"
2294  " [\"T[K]\", \"z[m]\", \"vmr_h2o[fractional]\", \"ignore\"]\n"
2295  " There must be one name less than matrix columns,\n"
2296  " because the first column must contain pressure.\n"
2297  ),
2298  AUTHORS( "Stefan Buehler" ),
2299  OUT( "atm_fields_compact" ),
2300  GOUT(),
2301  GOUT_TYPE(),
2302  GOUT_DESC(),
2303  IN( "atmosphere_dim" ),
2304  GIN( "gin1" ,
2305  "field_names" ),
2306  GIN_TYPE( "Matrix",
2307  "ArrayOfString" ),
2308  GIN_DEFAULT( NODEF ,
2309  NODEF ),
2310  GIN_DESC( "One atmosphere matrix from batch input ArrayOfMatrix.",
2311  "Order/names of atmospheric fields." )
2312  ));
2313 
2314  md_data_raw.push_back
2315  ( MdRecord
2316  ( NAME( "atm_fields_compactFromMatrixChevalAll" ),
2317  DESCRIPTION
2318  (
2319  "Set *atm_fields_compact* and *atm_fields_compact_all* from 1D profiles in a matrix.\n"
2320  "\n"
2321  "This WSM replaces *atm_fields_compactFromMatrix* in case of calculations,\n"
2322  "including scattering. *atm_fields_compact_all* additionally contains \n"
2323  "the mass concentration profiles of scattering particles.\n"
2324  "\n"
2325  "In case of batch calculations, this WSM is called internally by\n"
2326  "*batch_atm_fields_compactFromArrayOfMatrixChevalAll*.\n"
2327  "In this case *atm_fields_compact* is also still needed, for the WSM *abs_lookupSetupBatch*.\n"
2328  "For that reason both GriddedField4 are defined as output here.\n"
2329  "\n"
2330  "For further documentation see: *atm_fields_compactFromMatrix*\n"
2331  "\n"
2332  "Row format:\n"
2333  "\n"
2334  "p[Pa] T[K] z[m] LWC[kg/m3] IWC[kg/m3] Rain[kg/m2/s] Snow[kg/m2/s] VMR_1[fractional] ... VMR[fractional] IGNORE ... IGNORE\n"
2335  "\n"
2336  "Works only for *atmosphere_dim*==1.\n"
2337  "\n"
2338  "Possible future changes: name should fit naming conventions.\n"
2339  "\tWSM *abs_lookupSetupBatch* could be edited to handle *batch_atm_fields_compact*\n"
2340  "\tincluding scattering particles. Then two different *batch_atm_fields_compact*s\n"
2341  "\tand two different *atm_fields_compact*s would no longer be necessary.\n"
2342  ),
2343  AUTHORS( "Daniel Kreyling" ),
2344  OUT( "atm_fields_compact_all", "atm_fields_compact" ),
2345  GOUT(),
2346  GOUT_TYPE(),
2347  GOUT_DESC(),
2348  IN( "atmosphere_dim" ),
2349  GIN( "gin1" ,
2350  "field_names" ),
2351  GIN_TYPE( "Matrix",
2352  "ArrayOfString" ),
2353  GIN_DEFAULT( NODEF ,
2354  NODEF ),
2355  GIN_DESC( "One atmosphere matrix from batch input ArrayOfMatrix.",
2356  "Order/Names of atmospheric fields." )
2357  ));
2358 
2359 
2360  md_data_raw.push_back
2361  ( MdRecord
2362  ( NAME( "AtmFieldsFromCompact" ),
2363  DESCRIPTION
2364  (
2365  "Extract pressure grid and atmospheric fields from\n"
2366  "*atm_fields_compact*.\n"
2367  "\n"
2368  "An atmospheric scenario includes the following data for each\n"
2369  "position (pressure, latitude, longitude) in the atmosphere:\n"
2370  " 1. temperature field\n"
2371  " 2. the corresponding altitude field\n"
2372  " 3. vmr fields for the gaseous species\n"
2373  "\n"
2374  "This method just splits up the data found in *atm_fields_compact* to\n"
2375  "p_grid, lat_grid, lon_grid, and the various fields. No interpolation.\n"
2376  "See documentation of *atm_fields_compact* for a definition of the data.\n"
2377  "\n"
2378  "There are some safety checks on the names of the fields: The first\n"
2379  "field must be called \"T\", the second \"z\"*. Remaining fields must be\n"
2380  "trace gas species volume mixing ratios, named for example \"H2O\", \"O3\",\n"
2381  "and so on. The species names must fit the species in *abs_species*.\n"
2382  "(Same species in same order.) Only the species name must fit, not the\n"
2383  "full tag.\n"
2384  "\n"
2385  "Possible future extensions: Add a keyword parameter to refine the\n"
2386  "pressure grid if it is too coarse. Or a version that interpolates onto\n"
2387  "given grids, instead of using and returning the original grids.\n"
2388  ),
2389  AUTHORS( "Stefan Buehler" ),
2390  OUT( "p_grid", "lat_grid", "lon_grid", "t_field", "z_field", "vmr_field" ),
2391  GOUT(),
2392  GOUT_TYPE(),
2393  GOUT_DESC(),
2394  IN( "abs_species", "atm_fields_compact", "atmosphere_dim" ),
2395  GIN(),
2396  GIN_TYPE(),
2397  GIN_DEFAULT(),
2398  GIN_DESC()
2399  ));
2400 
2401  md_data_raw.push_back
2402  ( MdRecord
2403  ( NAME( "AtmFieldsFromCompactChevalAll" ),
2404  DESCRIPTION
2405  (
2406  "Extract pressure grid and atmospheric fields from\n"
2407  "*atm_fields_compact_all*.\n"
2408  "\n"
2409  "In contrast to *atm_fields_compact*, *atm_fields_compact_all*\n"
2410  "also contains mass concentrations for scattering particles\n"
2411  "\n"
2412  "An atmospheric scenario includes the following data for each\n"
2413  "position (pressure, latitude, longitude) in the atmosphere:\n"
2414  " 1. temperature field\n"
2415  " 2. the corresponding altitude field\n"
2416  " 3. mass concentration fields for the scattering particles\n"
2417  " 4. vmr fields for the gaseous species\n"
2418  "This method just splits up the data found in *atm_fields_compact_all* to\n"
2419  "p_grid, lat_grid, lon_grid, and the various fields. No interpolation.\n"
2420  "See documentation of *atm_fields_compact_all* for a definition of the data.\n"
2421  "\n"
2422  "NOTE: HARD WIRED code!\n"
2423  "\n"
2424  "There are some safety checks on the names of the fields: The first\n"
2425  "field must be called \"T\", the second \"z\".\n"
2426  "The following 4 fields must be \"LWC\", \"IWC\", \"Rain\" and \"Snow\".\n"
2427  "Remaining fields must be trace gas species volume mixing ratios,\n"
2428  "named for example \"H2O\", \"O3\", and so on. The species names must fit \n"
2429  "the species in *abs_species*.\n"
2430  "(Same species in same order.) Only the species name must fit, not the\n"
2431  "full tag.\n"
2432  "\n"
2433  "Possible future extensions: Add a keyword parameter to refine the\n"
2434  "pressure grid if it is too coarse. Or a version that interpolates onto\n"
2435  "given grids, instead of using and returning the original grids.\n"
2436  "Name should fit naming conventions.\n"
2437  ),
2438  AUTHORS( "Daniel Kreyling" ),
2439  OUT( "p_grid", "lat_grid", "lon_grid", "t_field", "z_field", "massdensity_field", "vmr_field" ),
2440  GOUT(),
2441  GOUT_TYPE(),
2442  GOUT_DESC(),
2443  IN( "abs_species", "atm_fields_compact_all", "atmosphere_dim" ),
2444  GIN(),
2445  GIN_TYPE(),
2446  GIN_DEFAULT(),
2447  GIN_DESC()
2448  ));
2449 
2450  md_data_raw.push_back
2451  ( MdRecord
2452  ( NAME( "AtmosphereSet1D" ),
2453  DESCRIPTION
2454  (
2455  "Sets the atmospheric dimension to 1D.\n"
2456  "\n"
2457  "Sets *atmosphere_dim* to 1 and gives some variables dummy values.\n"
2458  "\n"
2459  "The latitude and longitude grids are set to be empty.\n"
2460  ),
2461  AUTHORS( "Patrick Eriksson" ),
2462  OUT( "atmosphere_dim", "lat_grid", "lon_grid" ),
2463  GOUT(),
2464  GOUT_TYPE(),
2465  GOUT_DESC(),
2466  IN(),
2467  GIN(),
2468  GIN_TYPE(),
2469  GIN_DEFAULT(),
2470  GIN_DESC()
2471  ));
2472 
2473  md_data_raw.push_back
2474  ( MdRecord
2475  ( NAME( "AtmosphereSet2D" ),
2476  DESCRIPTION
2477  (
2478  "Sets the atmospheric dimension to be 2D.\n"
2479  "\n"
2480  "Sets *atmosphere_dim* to 2 and the longitude grid to be empty.\n"
2481  ),
2482  AUTHORS( "Patrick Eriksson" ),
2483  OUT( "atmosphere_dim", "lon_grid" ),
2484  GOUT(),
2485  GOUT_TYPE(),
2486  GOUT_DESC(),
2487  IN(),
2488  GIN(),
2489  GIN_TYPE(),
2490  GIN_DEFAULT(),
2491  GIN_DESC()
2492  ));
2493 
2494  md_data_raw.push_back
2495  ( MdRecord
2496  ( NAME( "AtmosphereSet3D" ),
2497  DESCRIPTION
2498  (
2499  "Sets the atmospheric dimension to 3D.\n"
2500  ),
2501  AUTHORS( "Patrick Eriksson" ),
2502  OUT( "atmosphere_dim" ),
2503  GOUT(),
2504  GOUT_TYPE(),
2505  GOUT_DESC(),
2506  IN(),
2507  GIN(),
2508  GIN_TYPE(),
2509  GIN_DEFAULT(),
2510  GIN_DESC()
2511  ));
2512 
2513  md_data_raw.push_back
2514  ( MdRecord
2515  ( NAME( "AtmRawRead" ),
2516  DESCRIPTION
2517  (
2518  "Reads atmospheric data from a scenario.\n"
2519  "\n"
2520  "An atmospheric scenario includes the following data for each\n"
2521  "position (pressure, latitude, longitude) in the atmosphere:\n"
2522  " 1. temperature field\n"
2523  " 2. the corresponding altitude field\n"
2524  " 3. vmr fields for the gaseous species\n"
2525  "The data is stored in different files. This methods reads all\n"
2526  "files and creates the variables *t_field_raw*, *z_field_raw* and\n"
2527  "*vmr_field_raw*.\n"
2528  "\n"
2529  "Files in a scenarios should be named matching the pattern of:\n"
2530  "tropical.H2O.xml\n"
2531  "\n"
2532  "The files can be anywhere, but they must be all in the same\n"
2533  "directory, selected by 'basename'. The files are chosen by the\n"
2534  "species name. If you have more than one tag group for the same\n"
2535  "species, the same profile will be used.\n"
2536  ),
2537  AUTHORS( "Claudia Emde" ),
2538  OUT( "t_field_raw", "z_field_raw", "vmr_field_raw" ),
2539  GOUT(),
2540  GOUT_TYPE(),
2541  GOUT_DESC(),
2542  IN( "abs_species" ),
2543  GIN( "basename" ),
2544  GIN_TYPE( "String" ),
2545  GIN_DEFAULT( NODEF ),
2546  GIN_DESC( "Name of scenario, probably including the full path. For "
2547  "example: \"/smiles_local/arts-data/atmosphere/fascod/"
2548  "tropical\"" )
2549  ));
2550 
2551  md_data_raw.push_back
2552  ( MdRecord
2553  ( NAME( "backend_channel_responseFlat" ),
2554  DESCRIPTION
2555  (
2556  "Sets up a rectangular channel response.\n"
2557  "\n"
2558  "The response of the backend channels is hee assumed to be constant\n"
2559  "inside the resolution width, and zero outside.\n"
2560  "\n"
2561  "The method assumes that all channels have the same response.\n"
2562  ),
2563  AUTHORS( "Patrick Eriksson" ),
2564  OUT( "backend_channel_response" ),
2565  GOUT(),
2566  GOUT_TYPE(),
2567  GOUT_DESC(),
2568  IN( ),
2569  GIN( "resolution" ),
2570  GIN_TYPE( "Numeric" ),
2571  GIN_DEFAULT( NODEF ),
2572  GIN_DESC( "The spectrometer resolution." )
2573  ));
2574 
2575  md_data_raw.push_back
2576  ( MdRecord
2577  ( NAME( "backend_channel_responseGaussian" ),
2578  DESCRIPTION
2579  (
2580  "Sets up a gaussian backend channel response.\n"
2581  "\n"
2582  "The method assumes that all channels have the same response, and\n"
2583  "that it can be modelled as gaussian.\n"
2584  "\n"
2585  "The grid generated can be written as\n"
2586  " si * [-xwidth_si:dx_si:xwidth_si]\n"
2587  "where si is the standard deviation corresponding to the FWHM.\n"
2588  "That is, width and spacing of the grid is specified in terms of\n"
2589  "number of standard deviations. If xwidth_si is set to 2, the\n"
2590  "response will cover about 95% the complete response. For\n"
2591  "xwidth_si=3, about 99% is covered.\n"
2592  ),
2593  AUTHORS( "Patrick Eriksson" ),
2594  OUT( "backend_channel_response" ),
2595  GOUT(),
2596  GOUT_TYPE(),
2597  GOUT_DESC(),
2598  IN( ),
2599  GIN( "fwhm", "xwidth_si", "dx_si" ),
2600  GIN_TYPE( "Numeric", "Numeric", "Numeric" ),
2601  GIN_DEFAULT( NODEF, "3", "0.1" ),
2602  GIN_DESC( "Full width at half-maximum",
2603  "Half-width of response, in terms of std. dev.",
2604  "Grid spacing, in terms of std. dev." )
2605  ));
2606 
2607  md_data_raw.push_back
2608  ( MdRecord
2609  ( NAME( "basics_checkedCalc" ),
2610  DESCRIPTION
2611  (
2612  "Checks consistency of the (clear sky) atmosphere.\n"
2613  "\n"
2614  "The following WSVs are treated: f_grid, stokes_dim, p_grid,\n"
2615  "lat_grid, lon_grid, t_field, z_field, vmr_field, wind_u/v/w_field,\n"
2616  "r_geoid and z_surface.\n"
2617  "If any of these variables are changed, then this method shall be\n"
2618  "called again (no automatic check that this is fulfilled!).\n"
2619  "\n"
2620  "The tests include:\n"
2621  " 1. That basic control variables *stokes_dim* and *atmosphere_dim*\n"
2622  " are inside defined ranges.\n"
2623  " 2. That *f_grid* is sorted and increasing.\n"
2624  " 3. If atmospheric grids (p/lat/lon_grid) are OK with respect to\n"
2625  " *atmosphere_dim*.\n"
2626  " 4. If atmospheric fields, *r_geoid* and *z_surface* have sizes\n"
2627  " consistent with the atmospheric grids.\n"
2628  " 5. There is no gap between *z_surface* and *z_field*.\n"
2629  "\n"
2630  "If any test fails, there is an error. Otherwise, *basics_checked*\n"
2631  "is set to 1.\n"
2632  "\n"
2633  "The cloudbox is covered by *cloudbox_checked*.\n"
2634  ),
2635  AUTHORS( "Patrick Eriksson" ),
2636  OUT( "basics_checked" ),
2637  GOUT(),
2638  GOUT_TYPE(),
2639  GOUT_DESC(),
2640  IN( "atmosphere_dim", "p_grid", "lat_grid", "lon_grid", "abs_species",
2641  "z_field", "t_field", "vmr_field", "wind_u_field", "wind_v_field",
2642  "wind_w_field", "r_geoid", "z_surface", "stokes_dim", "f_grid" ),
2643  GIN(),
2644  GIN_TYPE(),
2645  GIN_DEFAULT(),
2646  GIN_DESC()
2647  ));
2648 
2649  md_data_raw.push_back
2650  ( MdRecord
2651  ( NAME( "batch_atm_fields_compactFromArrayOfMatrix" ),
2652  DESCRIPTION
2653  (
2654  "Expand batch of 1D atmospheric states to a batch_atm_fields_compact.\n"
2655  "\n"
2656  "This is used to handle 1D batch cases, for example from the Chevallier\n"
2657  "data set, stored in a matrix.\n"
2658  "\n"
2659  "The matrix must contain one row for each pressure level.\n"
2660  "The matrix can contain some additional fiels which are not directly used\n"
2661  "by ARTS for calculations but can be required for further processing,\n"
2662  "for e.g. wind speed and direction. In this case, additional fields must\n"
2663  "be put at the end of the matrix and they must be flagged by 'ignore',\n"
2664  "large or small letters, in the field names.\n"
2665  "Row format:\n"
2666  "\n"
2667  "p[Pa] T[K] z[m] VMR_1[fractional] ... VMR[fractional] IGNORE ... IGNORE\n"
2668  "\n"
2669  "Keywords:\n"
2670  " field_names : Field names to store in atm_fields_compact.\n"
2671  " This should be, e.g.:\n"
2672  " [\"T\", \"z\", \"H2O\", \"O3\", \"ignore\"]\n"
2673  " There must be one name less than matrix columns,\n"
2674  " because the first column must contain pressure.\n"
2675  "\n"
2676  " extra_field_names : You can add additional constant VMR fields,\n"
2677  " which is handy for O2 and N2. Give here the\n"
2678  " field name, e.g., \"O2\". Default: Empty.\n"
2679  "\n"
2680  " extra_field_values : Give here the constant field value. Default:\n"
2681  " Empty. Dimension must match extra_field_names.\n"
2682  ),
2683  AUTHORS( "Stefan Buehler" ),
2684  OUT( "batch_atm_fields_compact" ),
2685  GOUT(),
2686  GOUT_TYPE(),
2687  GOUT_DESC(),
2688  IN( "atmosphere_dim" ),
2689  GIN( "gin1" ,
2690  "field_names", "extra_field_names", "extra_field_values" ),
2691  GIN_TYPE( "ArrayOfMatrix",
2692  "ArrayOfString", "ArrayOfString", "Vector" ),
2693  GIN_DEFAULT( NODEF ,
2694  NODEF, "[]", "[]" ),
2695  //KW_DEFAULT( NODEF, NODEF, NODEF ),
2696  GIN_DESC( "Batch of atmospheres stored in one array of matrix",
2697  "Order/names of atmospheric fields.",
2698  "Names of additional atmospheric fields, with constant values.",
2699  "Constant values of additional fields.")
2700  ));
2701 
2702 
2703  md_data_raw.push_back
2704  ( MdRecord
2705  ( NAME( "batch_atm_fields_compactFromArrayOfMatrixChevalAll" ),
2706  DESCRIPTION
2707  (
2708  "Expand batch of 1D atmospheric states to a *batch_atm_fields_compact_all*.\n"
2709  "\n"
2710  "In contrast to *batch_atm_fields_compactFromArrayOfMatrix*, this WSM\n"
2711  "includes reading scattering particle profiles from the Chevallier\n"
2712  "data set, stored in a matrix.\n"
2713  "\n"
2714  "This WSM fully replaces *batch_atm_fields_compactFromArrayOfMatrix*, since the\n"
2715  "*batch_atm_fields_compact* without scattering particle profiles is also still\n"
2716  "an output. It is needed for lookup table creation in WSM *abs_lookupSetupBatch*.\n"
2717  "\n"
2718  "Please also see:*batch_atm_fields_compactFromArrayOfMatrix*.\n"
2719  "\n"
2720  "Row format:\n"
2721  "\n"
2722  "p[Pa] T[K] z[m] LWC[kg/m3] IWC[kg/m3] Rain[kg/m2/s] Snow[kg/m2/s] VMR_1[fractional] ... VMR[fractional] IGNORE ... IGNORE\n"
2723  "\n"
2724  "Keywords:\n"
2725  " field_names : Field names to store in atm_fields_compact_all.\n"
2726  " This should be, e.g.:\n"
2727  " [\"T\", \"z\", \"LWC\", \"IWC\", \"Rain\", \"Snow\", \"H2O\", \"O3\", \"ignore\"]\n"
2728  " There must be one name less than matrix columns,\n"
2729  " because the first column must contain pressure.\n"
2730  "\n"
2731  " extra_field_names : You can add additional constant VMR fields,\n"
2732  " which is handy for O2 and N2. Give here the\n"
2733  " field name, e.g., \"O2\". Default: Empty.\n"
2734  "\n"
2735  " extra_field_values : Give here the constant field value. Default:\n"
2736  " Empty. Dimension must match extra_field_names.\n"
2737  "\n"
2738  "Possible future changes:\n"
2739  " Either:\n"
2740  " Name should fit naming convention.\n"
2741  " Or:\n"
2742  " WSM *abs_lookupSetupBatch* could be edited to handle *batch_atm_fields_compact*\n"
2743  " including scattering particles. Then two different *batch_atm_fields_compact*s\n"
2744  " and two different *atm_fields_compact*s would no longer be necessary.\n"
2745 
2746  ),
2747  AUTHORS( "Daniel Kreyling" ),
2748  OUT( "batch_atm_fields_compact", "batch_atm_fields_compact_all" ),
2749  GOUT(),
2750  GOUT_TYPE(),
2751  GOUT_DESC(),
2752  IN( "atmosphere_dim" ),
2753  GIN( "gin1" ,
2754  "field_names", "extra_field_names", "extra_field_values" ),
2755  GIN_TYPE( "ArrayOfMatrix",
2756  "ArrayOfString", "ArrayOfString", "Vector" ),
2757  GIN_DEFAULT( NODEF ,
2758  NODEF, "[]", "[]" ),
2759  //KW_DEFAULT( NODEF, NODEF, NODEF ),
2760  GIN_DESC( "Batch of atmospheres stored in one array of matrix,\n"
2761  "including scattering particles.",
2762  "Order/names of atmospheric fields.",
2763  "Names of additional atmospheric fields, with constant values.",
2764  "Constant values of additional fields." )
2765  ));
2766 
2767  md_data_raw.push_back
2768  ( MdRecord
2769  ( NAME( "CloudboxGetIncoming" ),
2770  DESCRIPTION
2771  (
2772  "Calculates incoming radiation field of the cloudbox by repeated\n"
2773  "radiative transfer calculations.\n"
2774  "\n"
2775  "The method performs monochromatic pencil beam calculations for\n"
2776  "all grid positions on the cloudbox boundary, and all directions\n"
2777  "given by scattering angle grids (*scat_za/aa_grid*). Found radiances\n"
2778  "are stored in *scat_i_p/lat/lon* which can be used as boundary\n"
2779  "conditions when scattering inside the cloud box is solved by the\n"
2780  "DOIT method.\n"
2781  ),
2782  AUTHORS( "Sreerekha T.R.", "Claudia Emde" ),
2783  OUT( "scat_i_p", "scat_i_lat", "scat_i_lon" ),
2784  GOUT(),
2785  GOUT_TYPE(),
2786  GOUT_DESC(),
2787  IN( "iy_clearsky_basic_agenda", "atmosphere_dim", "lat_grid",
2788  "lon_grid", "z_field", "r_geoid", "cloudbox_on", "cloudbox_limits",
2789  "f_grid", "stokes_dim", "scat_za_grid", "scat_aa_grid" ),
2790  GIN(),
2791  GIN_TYPE(),
2792  GIN_DEFAULT(),
2793  GIN_DESC()
2794  ));
2795 
2796  md_data_raw.push_back
2797  ( MdRecord
2798  ( NAME( "CloudboxGetIncoming1DAtm" ),
2799  DESCRIPTION
2800  (
2801  "As *CloudboxGetIncoming* but assumes clear sky part to be 1D."
2802  "\n"
2803  "The incoming field is calculated only for one position and azimuth\n"
2804  "angle for each cloud box boundary, and obtained values are used\n"
2805  "for all other postions and azimuth angles. This works if a 3D\n"
2806  "cloud box is put into an 1D background atmosphere.\n"
2807  "\n"
2808  "This method can only be used for 3D cases.\n"
2809  ),
2810  AUTHORS( "Sreerekha T.R.", "Claudia Emde" ),
2811  OUT( "scat_i_p", "scat_i_lat", "scat_i_lon", "cloudbox_on" ),
2812  GOUT(),
2813  GOUT_TYPE(),
2814  GOUT_DESC(),
2815  IN( "iy_clearsky_basic_agenda", "atmosphere_dim", "lat_grid",
2816  "lon_grid", "z_field", "r_geoid", "cloudbox_on", "cloudbox_limits",
2817  "f_grid", "stokes_dim", "scat_za_grid", "scat_aa_grid" ),
2818  GIN(),
2819  GIN_TYPE(),
2820  GIN_DEFAULT(),
2821  GIN_DESC()
2822  ));
2823 
2824  md_data_raw.push_back
2825  ( MdRecord
2826  ( NAME( "cloudboxOff" ),
2827  DESCRIPTION
2828  (
2829  "Deactivates the cloud box.\n"
2830  "\n"
2831  "Use this method if no scattering calculations shall be performed.\n"
2832  "The function sets *cloudbox_on* to 0, *cloudbox_limits* to be an\n"
2833  "empty vector and *iy_cloudbox_agenda* to an empty agenda.\n"
2834  ),
2835  AUTHORS( "Patrick Eriksson" ),
2836  OUT( "cloudbox_on", "cloudbox_limits", "iy_cloudbox_agenda" ),
2837  GOUT(),
2838  GOUT_TYPE(),
2839  GOUT_DESC(),
2840  IN(),
2841  GIN(),
2842  GIN_TYPE(),
2843  GIN_DEFAULT(),
2844  GIN_DESC()
2845  ));
2846 
2847 
2848  md_data_raw.push_back
2849  ( MdRecord
2850  ( NAME( "cloudboxSetAutomatically" ),
2851  DESCRIPTION
2852  (
2853  "Sets the cloud box to encompass the cloud given by the entries\n"
2854  "in *massdensity_field*. \n"
2855  "\n"
2856  "The function must be called before any *cloudbox_limits* using\n"
2857  "WSMs.\n"
2858  "NOTE: only 1-dim case is handeled in the moment!\n"
2859  "\n"
2860  "The function iterates over all *part_species* and performs a \n"
2861  "check, to see if the corresponding scattering particle profiles do not\n"
2862  "contain a cloud (all values equal zero). If, after all iterations,\n"
2863  "all the considrered profiles proove to contain no cloud,\n"
2864  "the cloudbox is switched off! (see WSM *cloudboxOff*)\n"
2865  "\n"
2866  "Each scattering particle profile is searched for the first and last\n"
2867  "pressure index, where the value is unequal to zero. This index\n"
2868  "is then copied to *cloudbox_limits*.\n"
2869  "\n"
2870  "Additionaly the lower cloudbox_limit is altered by\n"
2871  "*cloudbox_margin*.\n"
2872  "The margin is given as a height difference in meters and\n"
2873  "trasformed into a pressure.(via isothermal barometric heightformula)\n"
2874  "This alteration is needed to ensure, that scattered photons\n"
2875  "do not leave and re-enter the cloudbox, due to its convex\n"
2876  "shape.\n"
2877  "If *cloudbox_margin* is set to -1 (default), the cloudbox will extend to\n"
2878  "the surface. Hence the lower cloudbox_limit is set to 0 (index\n"
2879  "of first pressure level).\n"
2880  ),
2881  AUTHORS( "Daniel Kreyling" ),
2882  OUT( "cloudbox_on", "cloudbox_limits"),
2883  GOUT(),
2884  GOUT_TYPE(),
2885  GOUT_DESC(),
2886  IN( "atmosphere_dim", "part_species", "p_grid", "lat_grid", "lon_grid", "massdensity_field"),
2887  GIN( "cloudbox_margin"),
2888  GIN_TYPE( "Numeric" ),
2889  GIN_DEFAULT( "-1" ),
2890  GIN_DESC( "The margin alters the lower vertical\n"
2891  "cloudbox limit. Value must be given in [m].\n"
2892  "If cloudbox_margin is set to *-1* (default), the lower\n"
2893  "cloudbox limit equals 0, what corresponds to the surface !\n"
2894  )
2895  ));
2896 
2897  md_data_raw.push_back
2898  ( MdRecord
2899  ( NAME( "cloudboxSetDisort" ),
2900  DESCRIPTION
2901  (
2902  "For Disort calculation the cloudbox must be extended to\n"
2903  "cover the full atmosphere.\n"
2904  "This method sets *cloudbox_limits* accordingly.\n"
2905  ),
2906  AUTHORS( "Claudia Emde" ),
2907  OUT( "cloudbox_on", "cloudbox_limits" ),
2908  GOUT(),
2909  GOUT_TYPE(),
2910  GOUT_DESC(),
2911  IN( "p_grid" ),
2912  GIN(),
2913  GIN_TYPE(),
2914  GIN_DEFAULT(),
2915  GIN_DESC()
2916  ));
2917 
2918 
2919  md_data_raw.push_back
2920  ( MdRecord
2921  ( NAME( "cloudboxSetManually" ),
2922  DESCRIPTION
2923  (
2924  "Sets the cloud box to encompass the given positions.\n"
2925  "\n"
2926  "The function sets *cloudbox_on* to 1 and sets *cloudbox_limits*\n"
2927  "following the given pressure, latitude and longitude positions.\n"
2928  "The index limits in *cloudbox_limits* are selected to give the\n"
2929  "smallest possible cloud box that encompass the given points.\n"
2930  "\n"
2931  "The points must be given in the same order as used in\n"
2932  "*cloudbox_limits*. That means that the first keyword argument\n"
2933  "shall be a higher pressure than argument two, while the latitude\n"
2934  "and longitude points are given in increasing order. Positions\n"
2935  "given for dimensions not used by the selected atmospheric\n"
2936  "dimensionality are ignored.\n"
2937  "\n"
2938  "The given pressure points can be outside the range of *p_grid*.\n"
2939  "The pressure limit is then set to the end point of *p_grid*.\n"
2940  "The given latitude and longitude points must be inside the range\n"
2941  "of the corresponding grid. In addition, the latitude and longitude\n"
2942  "points cannot be inside the outermost grid ranges as the latitude\n"
2943  "and longitude limits in *cloudbox_limits* are not allowed to be\n"
2944  "grid end points.\n"
2945  ),
2946  AUTHORS( "Patrick Eriksson" ),
2947  OUT( "cloudbox_on", "cloudbox_limits" ),
2948  GOUT(),
2949  GOUT_TYPE(),
2950  GOUT_DESC(),
2951  IN( "atmosphere_dim", "p_grid", "lat_grid", "lon_grid" ),
2952  GIN( "p1", "p2", "lat1", "lat2", "lon1",
2953  "lon2" ),
2954  GIN_TYPE( "Numeric", "Numeric", "Numeric", "Numeric", "Numeric",
2955  "Numeric" ),
2957  NODEF ),
2958  GIN_DESC( "Upper pressure point.",
2959  "Lower pressure point.",
2960  "Lower latitude point.",
2961  "Upper latitude point.",
2962  "Lower longitude point.",
2963  "Upper longitude point." )
2964  ));
2965 
2966  md_data_raw.push_back
2967  ( MdRecord
2968  ( NAME( "cloudboxSetManuallyAltitude" ),
2969  DESCRIPTION
2970  (
2971  "Sets the cloud box to encompass the given positions.\n"
2972  "\n"
2973  "As *cloudboxSetManually* but uses altitudes instead of pressure.\n"
2974  "The given altitude points can be outside the range of *z_field*.\n"
2975  "The altitude limit is then set to the end point of *p_grid*.\n"
2976  ),
2977  AUTHORS( "Claudia Emde" ),
2978  OUT( "cloudbox_on", "cloudbox_limits" ),
2979  GOUT(),
2980  GOUT_TYPE(),
2981  GOUT_DESC(),
2982  IN( "atmosphere_dim", "z_field", "lat_grid", "lon_grid" ),
2983  GIN( "z1", "z2", "lat1", "lat2", "lon1",
2984  "lon2" ),
2985  GIN_TYPE( "Numeric", "Numeric", "Numeric", "Numeric", "Numeric",
2986  "Numeric" ),
2988  NODEF ),
2989  GIN_DESC( "Lower altitude point.",
2990  "Upper altitude point.",
2991  "Lower latitude point.",
2992  "Upper latitude point.",
2993  "Lower longitude point.",
2994  "Upper longitude point." )
2995  ));
2996 
2997  md_data_raw.push_back
2998  ( MdRecord
2999  ( NAME( "cloudbox_checkedCalc" ),
3000  DESCRIPTION
3001  (
3002  "Checks consistency between the cloudbox and other variables.\n"
3003  "\n"
3004  "The following WSVs are treated: cloudbox_on, cloudbox_limits and\n"
3005  "wind_u/v/w_field.\n"
3006  "If any of these variables are changed, then this method shall be\n"
3007  "called again (no automatic check that this is fulfilled!).\n"
3008  "\n"
3009  "The main check is if the cloudbox limits are OK with respect to\n"
3010  "the atmospheric dimensionality and the limits of the atmosphere.\n"
3011  "\n"
3012  "If any test fails, there is an error. Otherwise, *cloudbox_checked*\n"
3013  "is set to 1.\n"
3014  ),
3015  AUTHORS( "Patrick Eriksson" ),
3016  OUT( "cloudbox_checked" ),
3017  GOUT(),
3018  GOUT_TYPE(),
3019  GOUT_DESC(),
3020  IN( "basics_checked", "atmosphere_dim", "p_grid", "lat_grid",
3021  "lon_grid", "wind_u_field", "wind_v_field", "wind_w_field",
3022  "cloudbox_on", "cloudbox_limits" ),
3023  GIN(),
3024  GIN_TYPE(),
3025  GIN_DEFAULT(),
3026  GIN_DESC()
3027  ));
3028 
3029  md_data_raw.push_back
3030  ( MdRecord
3031  ( NAME( "complex_nWaterLiebe93" ),
3032  DESCRIPTION
3033  (
3034  "Complex refractive index of liquid water according to Liebe 1993.\n"
3035  "\n"
3036  "The method treats liquid water without salt. Thus, not valid below\n"
3037  "10 GHz. Upper frequency limit not known, here set to 1000 GHz.\n"
3038  "Model parameters taken from Atmlab function epswater93 (by\n"
3039  "C. Maetzler), which refer to Liebe 1993 without closer\n"
3040  "specifications.\n"
3041  "\n"
3042  "Temperature must be between 0 and 100 degrees Celsius.\n"
3043  ),
3044  AUTHORS( "Patrick Eriksson" ),
3045  OUT( "complex_n" ),
3046  GOUT(),
3047  GOUT_TYPE(),
3048  GOUT_DESC(),
3049  IN( "f_grid" ),
3050  GIN( "t" ),
3051  GIN_TYPE( "Numeric" ),
3052  GIN_DEFAULT( NODEF ),
3053  GIN_DESC( "Temperature [K]." )
3054  ));
3055 
3056  md_data_raw.push_back
3057  ( MdRecord
3058  ( NAME( "Copy" ),
3059  DESCRIPTION
3060  (
3061  "Copy a workspace variable.\n"
3062  "\n"
3063  "This method can copy any workspace variable\n"
3064  "to another workspace variable of the same group. (E.g., a Matrix to\n"
3065  "another Matrix.)\n"
3066  "\n"
3067  "As always, output comes first in the argument list!\n"
3068  "\n"
3069  "Usage example:\n"
3070  "\n"
3071  "Copy(f_grid, p_grid)\n"
3072  "\n"
3073  "Will copy the content of *p_grid* to *f_grid*. The size of *f_grid*\n"
3074  "is adjusted automatically (the normal behaviour for workspace\n"
3075  "methods).\n"
3076  ),
3077  AUTHORS( "Stefan Buehler" ),
3078  OUT(),
3079  GOUT( "gout1" ),
3080  GOUT_TYPE( "Any" ),
3081  GOUT_DESC( "Destination variable." ),
3082  IN(),
3083  GIN( "gin1" ),
3084  GIN_TYPE( "Any" ),
3085  GIN_DEFAULT( NODEF ),
3086  GIN_DESC( "Source variable." ),
3087  SETMETHOD( false ),
3088  AGENDAMETHOD( false ),
3089  SUPPRESSHEADER( true )
3090  ));
3091 
3092  md_data_raw.push_back
3093  ( MdRecord
3094  ( NAME( "Delete" ),
3095  DESCRIPTION
3096  (
3097  "Deletes a workspace variable.\n"
3098  "\n"
3099  "The variable is marked as uninitialized and its memory freed.\n"
3100  "It is not removed from the workspace though.\n"
3101  ),
3102  AUTHORS( "Oliver Lemke" ),
3103  OUT(),
3104  GOUT(),
3105  GOUT_TYPE(),
3106  GOUT_DESC(),
3107  IN(),
3108  GIN( "v" ),
3109  GIN_TYPE( "Any" ),
3110  GIN_DEFAULT( NODEF ),
3111  GIN_DESC( "Variable to be deleted." ),
3112  SETMETHOD( false ),
3113  AGENDAMETHOD( false ),
3114  SUPPRESSHEADER( true ),
3115  PASSWORKSPACE( true ),
3116  PASSWSVNAMES( true )
3117  ));
3118 
3119  md_data_raw.push_back
3120  ( MdRecord
3121  ( NAME( "DoitAngularGridsSet" ),
3122  DESCRIPTION
3123  (
3124  "Sets the angular grids for DOIT calculation."
3125  "\n"
3126  "In this method the angular grids for a DOIT calculation are\n"
3127  "specified. For down-looking geometries it is sufficient to define\n"
3128  "*N_za_grid* and *N_aa_grid*. From these numbers equally spaced\n"
3129  "grids are created and stored in the WSVs *scat_za_grid* and\n"
3130  "*scat_aa_grid*.\n"
3131  "\n"
3132  "For limb simulations it is important to use an optimized zenith \n"
3133  "angle grid with a very fine resolution about 90 degrees. Such a grid can be\n"
3134  "generated using *doit_za_grid_optCalc*. The filename of an optimized\n"
3135  "zenith angle grid can be given as a keyword (*za_grid_opt_file*).\n"
3136  "\n"
3137  "If a filename is given, the equidistant grid is used for the\n"
3138  "calculation of the scattering integrals and the optimized grid is\n"
3139  "applied for integration of the radiative transfer equation. \n"
3140  "\n"
3141  "For down-looking cases no filename should be specified (za_grid_opt_file = \"\" ) \n"
3142  "Using only the equidistant grid makes sense to speed up the calculation.\n"
3143  ),
3144  AUTHORS( "Claudia Emde" ),
3145  OUT( "doit_za_grid_size", "scat_aa_grid", "scat_za_grid" ),
3146  GOUT(),
3147  GOUT_TYPE(),
3148  GOUT_DESC(),
3149  IN(),
3150  GIN( "N_za_grid", "N_aa_grid", "za_grid_opt_file" ),
3151  GIN_TYPE( "Index", "Index", "String" ),
3153  GIN_DESC( "Number of grid points in zenith angle grid. "
3154  "Recommended value is 19.",
3155  "Number of grid points in azimuth angle grid. "
3156  "Recommended value is 37.",
3157  "Name of special grid for RT part." )
3158  ));
3159 
3160  md_data_raw.push_back
3161  ( MdRecord
3162  ( NAME( "DoitCloudboxFieldPut" ),
3163  DESCRIPTION
3164  (
3165  "Method for the DOIT communication between cloudbox and clearsky.\n"
3166  "\n"
3167  "This method puts the scattered radiation field into the interface\n"
3168  "variables between the cloudbox and the clearsky, which are\n"
3169  "*scat_i_p*, *scat_i_lat* and *scat_i_lon*.\n"
3170  "\n"
3171  "The best way to calculate spectra including the influence of\n"
3172  "scattering is to set up the *doit_mono_agenda* where this method\n"
3173  "can be included.\n"
3174  ),
3175  AUTHORS( "Claudia Emde" ),
3176  OUT( "scat_i_p", "scat_i_lat", "scat_i_lon",
3177  "doit_i_field1D_spectrum" ),
3178  GOUT(),
3179  GOUT_TYPE(),
3180  GOUT_DESC(),
3181  IN( "scat_i_p", "doit_i_field", "f_grid", "f_index", "p_grid", "lat_grid",
3182  "lon_grid", "scat_za_grid", "scat_aa_grid", "stokes_dim",
3183  "atmosphere_dim", "cloudbox_limits", "sensor_pos", "z_field" ),
3184  GIN(),
3185  GIN_TYPE(),
3186  GIN_DEFAULT(),
3187  GIN_DESC()
3188  ));
3189 
3190  md_data_raw.push_back
3191  ( MdRecord
3192  ( NAME( "doit_conv_flagAbs" ),
3193  DESCRIPTION
3194  (
3195  "DOIT convergence test (maximum absolute difference).\n"
3196  "\n"
3197  "The function calculates the absolute differences for two successive\n"
3198  "iteration fields. It picks out the maximum values for each Stokes\n"
3199  "component separately. The convergence test is fullfilled under the\n"
3200  "following conditions:\n"
3201  " |I(m+1) - I(m)| < epsilon_1 Intensity.\n"
3202  " |Q(m+1) - Q(m)| < epsilon_2 The other Stokes components.\n"
3203  " |U(m+1) - U(m)| < epsilon_3 \n"
3204  " |V(m+1) - V(m)| < epsilon_4 \n"
3205  "These conditions have to be valid for all positions in the\n"
3206  "cloudbox and for all directions.\n"
3207  ),
3208  AUTHORS( "Claudia Emde" ),
3209  OUT( "doit_conv_flag", "doit_iteration_counter" ),
3210  GOUT(),
3211  GOUT_TYPE(),
3212  GOUT_DESC(),
3213  IN( "doit_conv_flag", "doit_iteration_counter",
3214  "doit_i_field", "doit_i_field_old" ),
3215  GIN( "epsilon" ),
3216  GIN_TYPE( "Vector" ),
3217  GIN_DEFAULT( NODEF ),
3218  GIN_DESC( "Limits for convergence. A vector with length matching "
3219  "*stokes_dim* with unit [W / (m^2 Hz sr)]."
3220  )
3221  ));
3222 
3223  md_data_raw.push_back
3224  ( MdRecord
3225  ( NAME( "doit_conv_flagLsq" ),
3226  DESCRIPTION
3227  (
3228  "DOIT convergence test (least squares).\n"
3229  "\n"
3230  "As *doit_conv_flagAbsBT* but applies a least squares convergence\n"
3231  "test between two successive iteration fields.\n"
3232  "\n"
3233  "Warning: This method is not recommended because this kind of\n"
3234  "convergence test is not sufficiently strict, so that the\n"
3235  "DOIT result might be wrong.\n"
3236  ),
3237  AUTHORS( "Claudia Emde" ),
3238  OUT( "doit_conv_flag", "doit_iteration_counter" ),
3239  GOUT(),
3240  GOUT_TYPE(),
3241  GOUT_DESC(),
3242  IN( "doit_conv_flag", "doit_iteration_counter",
3243  "doit_i_field", "doit_i_field_old", "f_grid", "f_index" ),
3244  GIN( "epsilon" ),
3245  GIN_TYPE( "Vector" ),
3246  GIN_DEFAULT( NODEF ),
3247  GIN_DESC( "Limits for convergence. A vector with length matching "
3248  "*stokes_dim* with unit [K]."
3249  )
3250  ));
3251 
3252  md_data_raw.push_back
3253  ( MdRecord
3254  ( NAME( "doit_conv_flagAbsBT" ),
3255  DESCRIPTION
3256  (
3257  "DOIT convergence test (maximum absolute difference in Rayleigh Jeans "
3258  "BT)\n"
3259  "\n"
3260  "As *doit_conv_flagAbs* but convergence limits are specified in\n"
3261  "Rayleigh-Jeans brighntess temperatures.\n"
3262  ),
3263  AUTHORS( "Sreerekha T.R.", "Claudia Emde" ),
3264  OUT( "doit_conv_flag", "doit_iteration_counter" ),
3265  GOUT(),
3266  GOUT_TYPE(),
3267  GOUT_DESC(),
3268  IN( "doit_conv_flag", "doit_iteration_counter",
3269  "doit_i_field", "doit_i_field_old", "f_grid", "f_index" ),
3270  GIN( "epsilon" ),
3271  GIN_TYPE( "Vector" ),
3272  GIN_DEFAULT( NODEF ),
3273  GIN_DESC( "Limits for convergence. A vector with length matching "
3274  "*stokes_dim* with unit [K]."
3275  )
3276  ));
3277 
3278  md_data_raw.push_back
3279  ( MdRecord
3280  ( NAME( "DoitInit" ),
3281  DESCRIPTION
3282  (
3283  "Initialises variables for DOIT scattering calculations.\n"
3284  ),
3285  AUTHORS( "Claudia Emde" ),
3286  OUT( "scat_p_index", "scat_lat_index", "scat_lon_index",
3287  "scat_za_index", "scat_aa_index", "doit_scat_field",
3288  "doit_i_field", "doit_is_initialized" ),
3289  GOUT(),
3290  GOUT_TYPE(),
3291  GOUT_DESC(),
3292  IN( "stokes_dim", "atmosphere_dim", "scat_za_grid", "scat_aa_grid",
3293  "doit_za_grid_size", "cloudbox_on", "cloudbox_limits", "scat_data_raw" ),
3294  GIN(),
3295  GIN_TYPE(),
3296  GIN_DEFAULT(),
3297  GIN_DESC()
3298  ));
3299 
3300  md_data_raw.push_back
3301  ( MdRecord
3302  ( NAME( "doit_i_fieldIterate" ),
3303  DESCRIPTION
3304  (
3305  "Iterative solution of the VRTE (DOIT method).\n"
3306  "\n"
3307  "A solution for the RTE with scattering is found using the\n"
3308  "DOIT method:\n"
3309  " 1. Calculate scattering integral using *doit_scat_field_agenda*.\n"
3310  " 2. Calculate RT with fixed scattered field using\n"
3311  " *doit_rte_agenda*.\n"
3312  " 3. Convergence test using *doit_conv_test_agenda*.\n"
3313  "\n"
3314  "Note: The atmospheric dimensionality *atmosphere_dim* can be\n"
3315  " either 1 or 3. To these dimensions the method adapts\n"
3316  " automatically. 2D scattering calculations are not\n"
3317  " supported.\n"
3318  ),
3319  AUTHORS( "Claudia Emde" ),
3320  OUT( "doit_i_field" ),
3321  GOUT(),
3322  GOUT_TYPE(),
3323  GOUT_DESC(),
3324  IN( "doit_i_field", "doit_scat_field_agenda", "doit_rte_agenda",
3325  "doit_conv_test_agenda" ),
3326  GIN(),
3327  GIN_TYPE(),
3328  GIN_DEFAULT(),
3329  GIN_DESC()
3330  ));
3331 
3332  md_data_raw.push_back
3333  ( MdRecord
3334  ( NAME( "doit_i_fieldSetClearsky" ),
3335  DESCRIPTION
3336  (
3337  "Interpolate clearsky field on all gridpoints in cloudbox.\n"
3338  "\n"
3339  "This method uses a linear 1D/3D interpolation scheme to obtain the\n"
3340  "radiation field on all grid points inside the cloud box from the\n"
3341  "clear sky field on the cloud box boundary. This radiation field\n"
3342  "is taken as the first guess radiation field in the DOIT module.\n"
3343  "\n"
3344  "Set the *all_frequencies* to 1 if the clearsky field shall be used\n"
3345  "as initial field for all frequencies. Set it to 0 if the clear sky\n"
3346  "field shall be used only for the first frequency in *f_grid*. For\n"
3347  "later frequencies, *doit_i_field* of the previous frequency is then\n"
3348  "used.\n"
3349  ),
3350  AUTHORS( "Sreerekha T.R. and Claudia Emde" ),
3351  OUT( "doit_i_field" ),
3352  GOUT(),
3353  GOUT_TYPE(),
3354  GOUT_DESC(),
3355  IN( "scat_i_p", "scat_i_lat", "scat_i_lon", "f_grid",
3356  "f_index", "p_grid", "lat_grid", "lon_grid",
3357  "cloudbox_limits", "atmosphere_dim" ),
3358  GIN( "all_frequencies" ),
3359  GIN_TYPE( "Index" ),
3360  GIN_DEFAULT( "1" ),
3361  GIN_DESC( "See above." )
3362  ));
3363 
3364  md_data_raw.push_back
3365  ( MdRecord
3366  ( NAME( "doit_i_fieldSetConst" ),
3367  DESCRIPTION
3368  (
3369  "This method sets the initial field inside the cloudbox to a\n"
3370  "constant value. The method works only for monochromatic\n"
3371  "calculations (number of elements in f_grid=1).\n"
3372  "\n"
3373  "The user can specify a value for each Stokes dimension in the\n"
3374  "control file by *value*.\n"
3375  ),
3376  AUTHORS( "Claudia Emde" ),
3377  OUT( "doit_i_field" ),
3378  GOUT(),
3379  GOUT_TYPE(),
3380  GOUT_DESC(),
3381  IN( "scat_i_p", "scat_i_lat", "scat_i_lon", "p_grid", "lat_grid",
3382  "lon_grid",
3383  "cloudbox_limits", "atmosphere_dim", "stokes_dim" ),
3384  GIN( "value" ),
3385  GIN_TYPE( "Vector" ),
3386  GIN_DEFAULT( NODEF ),
3387  GIN_DESC( "A vector containing 4 elements with the value of the "
3388  "initial field for each Stokes dimension."
3389  )
3390  ));
3391 
3392  md_data_raw.push_back
3393  ( MdRecord
3394  ( NAME( "doit_i_fieldUpdate1D" ),
3395  DESCRIPTION
3396  (
3397  "RT calculation in cloudbox with fixed scattering integral (1D).\n"
3398  "\n"
3399  "Updates the radiation field (DOIT method). The method loops\n"
3400  "through the cloudbox to update the radiation field for all\n"
3401  "positions and directions in the 1D cloudbox.\n"
3402  "\n"
3403  "Note: This method is very inefficient, because the number of\n"
3404  "iterations scales with the number of cloudbox pressure levels.\n"
3405  "It is recommended to use *doit_i_fieldUpdateSeq1D*.\n"
3406  ),
3407  AUTHORS( "Claudia Emde" ),
3408  OUT( "doit_i_field" ),
3409  GOUT(),
3410  GOUT_TYPE(),
3411  GOUT_DESC(),
3412  IN( "doit_i_field_old", "doit_scat_field", "cloudbox_limits",
3413  "abs_scalar_gas_agenda",
3414  "vmr_field", "spt_calc_agenda", "scat_za_grid", "pnd_field",
3415  "opt_prop_part_agenda", "opt_prop_gas_agenda",
3416  "ppath_step_agenda", "p_grid", "z_field", "r_geoid", "z_surface",
3417  "t_field", "f_grid", "f_index", "surface_prop_agenda",
3418  "doit_za_interp" ),
3419  GIN(),
3420  GIN_TYPE(),
3421  GIN_DEFAULT(),
3422  GIN_DESC()
3423  ));
3424 
3425  md_data_raw.push_back
3426  ( MdRecord
3427  ( NAME( "doit_i_fieldUpdateSeq1D" ),
3428  DESCRIPTION
3429  (
3430  "RT calculation in cloudbox with fixed scattering integral.\n"
3431  "\n"
3432  "Updates radiation field (*doit_i_field*) in DOIT module.\n"
3433  "This method loops through the cloudbox to update the\n"
3434  "radiation field for all positions and directions in the 1D\n"
3435  "cloudbox. The method applies the sequential update. For more\n"
3436  "information refer to AUG.\n"
3437  ),
3438  AUTHORS( "Claudia Emde" ),
3439  OUT( "doit_i_field" ),
3440  GOUT(),
3441  GOUT_TYPE(),
3442  GOUT_DESC(),
3443  IN( "doit_i_field", "doit_scat_field", "cloudbox_limits",
3444  "abs_scalar_gas_agenda",
3445  "vmr_field", "spt_calc_agenda", "scat_za_grid", "pnd_field",
3446  "opt_prop_part_agenda", "opt_prop_gas_agenda",
3447  "ppath_step_agenda", "p_grid", "z_field", "r_geoid", "z_surface",
3448  "t_field", "f_grid", "f_index", "surface_prop_agenda",
3449  "doit_za_interp" ),
3450  GIN(),
3451  GIN_TYPE(),
3452  GIN_DEFAULT(),
3453  GIN_DESC()
3454  ));
3455 
3456  md_data_raw.push_back
3457  ( MdRecord
3458  ( NAME( "doit_i_fieldUpdateSeq1DPP" ),
3459  DESCRIPTION
3460  (
3461  "RT calculation in cloudbox with fixed scattering integral.\n"
3462  "\n "
3463  "Update radiation field (*doit_i_field*) in DOIT module.\n"
3464  "This method loops through the cloudbox to update the\n"
3465  "radiation field for all\n"
3466  "positions and directions in the 1D cloudbox. The method applies\n"
3467  "the sequential update and the plane parallel approximation.\n"
3468  "This method is only slightly faster than\n"
3469  "*doit_i_fieldUpdateSeq1D* and it is less accurate. It can not\n"
3470  "be used for limb simulations.\n"
3471  ),
3472  AUTHORS( "Sreerekha T.R." ),
3473  OUT( "doit_i_field", "scat_za_index" ),
3474  GOUT(),
3475  GOUT_TYPE(),
3476  GOUT_DESC(),
3477  IN( "doit_scat_field", "cloudbox_limits",
3478  "abs_scalar_gas_agenda",
3479  "vmr_field", "spt_calc_agenda", "scat_za_grid", "pnd_field",
3480  "opt_prop_part_agenda", "opt_prop_gas_agenda",
3481  "ppath_step_agenda", "p_grid", "z_field", "r_geoid", "t_field",
3482  "f_grid", "f_index" ),
3483  GIN(),
3484  GIN_TYPE(),
3485  GIN_DEFAULT(),
3486  GIN_DESC()
3487  ));
3488 
3489  md_data_raw.push_back
3490  ( MdRecord
3491  ( NAME( "doit_i_fieldUpdateSeq3D" ),
3492  DESCRIPTION
3493  (
3494  "RT calculation in cloudbox with fixed scattering integral.\n"
3495  "\n"
3496  "Update radiation field (*doit_i_field*) in DOIT module.\n"
3497  "This method loops through the cloudbox to update the\n"
3498  "radiation field for all positions and directions in the 3D\n"
3499  "cloudbox. The method applies the sequential update. For more\n"
3500  "information please refer to AUG.\n"
3501  "Surface reflections are not yet implemented in 3D scattering\n"
3502  "calculations.\n"
3503  ),
3504  AUTHORS( "Claudia Emde" ),
3505  OUT( "doit_i_field" ),
3506  GOUT(),
3507  GOUT_TYPE(),
3508  GOUT_DESC(),
3509  IN( "doit_i_field", "doit_scat_field", "cloudbox_limits",
3510  "abs_scalar_gas_agenda",
3511  "vmr_field", "spt_calc_agenda", "scat_za_grid", "scat_aa_grid",
3512  "pnd_field",
3513  "opt_prop_part_agenda", "opt_prop_gas_agenda",
3514  "ppath_step_agenda", "p_grid", "lat_grid", "lon_grid", "z_field",
3515  "r_geoid", "z_surface", "t_field",
3516  "f_grid", "f_index", "doit_za_interp" ),
3517  GIN(),
3518  GIN_TYPE(),
3519  GIN_DEFAULT(),
3520  GIN_DESC()
3521  ));
3522 
3523  md_data_raw.push_back
3524  ( MdRecord
3525  ( NAME( "doit_scat_fieldCalc" ),
3526  DESCRIPTION
3527  (
3528  "Calculates the scattering integral field in the DOIT module.\n"
3529  "\n"
3530  "The scattering integral field is generated by integrating\n"
3531  "the product of phase matrix and Stokes vector over all incident\n"
3532  "angles. For more information please refer to AUG.\n"
3533  ),
3534  AUTHORS( "Sreerekha T.R.", "Claudia Emde" ),
3535  OUT( "doit_scat_field" ),
3536  GOUT(),
3537  GOUT_TYPE(),
3538  GOUT_DESC(),
3539  IN( "doit_scat_field", "pha_mat_spt_agenda",
3540  "doit_i_field", "pnd_field", "t_field", "atmosphere_dim",
3541  "cloudbox_limits", "scat_za_grid", "scat_aa_grid",
3542  "doit_za_grid_size" ),
3543  GIN(),
3544  GIN_TYPE(),
3545  GIN_DEFAULT(),
3546  GIN_DESC()
3547  ));
3548 
3549  md_data_raw.push_back
3550  ( MdRecord
3551  ( NAME( "doit_scat_fieldCalcLimb" ),
3552  DESCRIPTION
3553  (
3554  "Calculates the scattering integral field in the DOIT module (limb).\n"
3555  "\n"
3556  "The scattering integral field is the field generated by integrating\n"
3557  "the product of phase matrix and the Stokes vector over all incident\n"
3558  "angles.\n"
3559  "\n"
3560  "For limb simulations it makes sense to use different\n"
3561  "zenith angle grids for the scattering integral part and the RT part,\n"
3562  "because the latter part requires a much finer resolution near\n"
3563  "90 degrees. Taking an optimized grid for the RT part and an equidistant\n"
3564  "grid for the scattering integral part saves very much CPU time.\n"
3565  "This method uses the equidistant za_grid defined in\n"
3566  "*DoitAngularGridsSet* and it should always be used for limb\n"
3567  "simulations.\n"
3568  "\n"
3569  "For more information please refer to AUG.\n"
3570  ),
3571  AUTHORS( "Claudia Emde" ),
3572  OUT( "doit_scat_field" ),
3573  GOUT(),
3574  GOUT_TYPE(),
3575  GOUT_DESC(),
3576  IN( "doit_scat_field", "pha_mat_spt_agenda",
3577  "doit_i_field", "pnd_field", "t_field", "atmosphere_dim",
3578  "cloudbox_limits", "scat_za_grid", "scat_aa_grid",
3579  "doit_za_grid_size", "doit_za_interp" ),
3580  GIN(),
3581  GIN_TYPE(),
3582  GIN_DEFAULT(),
3583  GIN_DESC()
3584  ));
3585 
3586  md_data_raw.push_back
3587  ( MdRecord
3588  ( NAME( "DoitScatteringDataPrepare" ),
3589  DESCRIPTION
3590  (
3591  "Prepares single scattering data for a DOIT scattering calculation.\n"
3592  "\n"
3593  "First the scattering data is interpolated in frequency using\n"
3594  "*scat_data_monoCalc*. Then the phase matrix data is\n"
3595  "transformed or interpolated from the raw data to the laboratory frame\n"
3596  "for all possible combinations of the angles contained in the angular\n"
3597  "grids which are set in *DoitAngularGridsSet*. The resulting phase\n"
3598  "matrices are stored in *pha_mat_sptDOITOpt*.\n"
3599  ),
3600  AUTHORS( "Claudia Emde" ),
3601  OUT( "pha_mat_sptDOITOpt", "scat_data_mono" ),
3602  GOUT(),
3603  GOUT_TYPE(),
3604  GOUT_DESC(),
3605  IN( "doit_za_grid_size", "scat_aa_grid", "scat_data_raw", "f_grid",
3606  "f_index", "atmosphere_dim", "stokes_dim" ),
3607  GIN(),
3608  GIN_TYPE(),
3609  GIN_DEFAULT(),
3610  GIN_DESC()
3611  ));
3612 
3613  md_data_raw.push_back
3614  ( MdRecord
3615  ( NAME( "DoitWriteIterationFields" ),
3616  DESCRIPTION
3617  (
3618  "Writes DOIT iteration fields.\n"
3619  "\n"
3620  "This method writes intermediate iteration fields to xml-files. The\n"
3621  "method can be used as a part of *doit_conv_test_agenda*.\n"
3622  "\n"
3623  "The iterations to be stored are specified by *iterations*, e.g.:\n"
3624  " iterations = [3, 6, 9]\n"
3625  "In this case the 3rd, 6th and 9th iterations are stored in the\n"
3626  "files 'doit_iteration_3.xml', 'doit_iteration_6.xml' ...\n"
3627  "If a number is larger than the total number of iterations, this\n"
3628  "number is ignored. If all iterations should be stored set\n"
3629  " iterations = [0]\n"
3630  ),
3631  AUTHORS( "Claudia Emde" ),
3632  OUT(),
3633  GOUT(),
3634  GOUT_TYPE(),
3635  GOUT_DESC(),
3636  IN( "doit_iteration_counter", "doit_i_field" ),
3637  GIN( "iterations" ),
3638  GIN_TYPE( "ArrayOfIndex" ),
3639  GIN_DEFAULT( NODEF ),
3640  GIN_DESC( "See above." )
3641  ));
3642 
3643  md_data_raw.push_back
3644  ( MdRecord
3645  ( NAME( "doit_za_grid_optCalc" ),
3646  DESCRIPTION
3647  (
3648  "Zenith angle grid optimization for scattering calculation.\n"
3649  "\n"
3650  "This method optimizes the zenith angle grid. As input it requires\n"
3651  "a radiation field (*doit_i_field*) which is calculated on a very\n"
3652  "fine zenith angle grid (*scat_za_grid*). Based on this field\n"
3653  "zenith angle grid points are selected, such that the maximum\n"
3654  "difference between the radiation field represented on the very\n"
3655  "fine zenith angle grid and the radiation field represented on the\n"
3656  "optimized grid (*doit_za_grid_opt*) is less than the accuracy\n"
3657  "(*acc*). Between the grid points the radiation field is interpolated\n"
3658  "linearly or polynomially depending on *doit_za_interp*.\n"
3659  "\n"
3660  "Note: The method works only for a 1D atmosphere and for one\n"
3661  "frequency.\n"
3662  ),
3663  AUTHORS( "Claudia Emde" ),
3664  OUT( "doit_za_grid_opt" ),
3665  GOUT(),
3666  GOUT_TYPE(),
3667  GOUT_DESC(),
3668  IN( "doit_i_field", "scat_za_grid", "doit_za_interp" ),
3669  GIN( "acc" ),
3670  GIN_TYPE( "Numeric" ),
3671  GIN_DEFAULT( NODEF ),
3672  GIN_DESC( "Accuracy to achieve [%]." )
3673  ));
3674 
3675  md_data_raw.push_back
3676  ( MdRecord
3677  ( NAME( "doit_za_interpSet" ),
3678  DESCRIPTION
3679  (
3680  "Define interpolation method for zenith angle dimension.\n"
3681  "\n"
3682  "You can use this method to choose the interpolation method for\n"
3683  "interpolations in the zenith angle dimension.\n"
3684  ),
3685  AUTHORS( "Claudia Emde" ),
3686  OUT( "doit_za_interp" ),
3687  GOUT(),
3688  GOUT_TYPE(),
3689  GOUT_DESC(),
3690  IN( "atmosphere_dim" ),
3691  GIN( "interp_method" ),
3692  GIN_TYPE( "String" ),
3693  GIN_DEFAULT( "linear" ),
3694  GIN_DESC( "Interpolation method (\"linear\" or \"polynomial\")." )
3695  ));
3696 
3697  md_data_raw.push_back
3698  ( MdRecord
3699  ( NAME( "emissionPlanck" ),
3700  DESCRIPTION
3701  (
3702  "Emission source term for LTE.\n"
3703  "\n"
3704  "Sets *emission* for cases when emission is considered and local\n"
3705  "thermodynamic equilibrium is valid. The standard definition, in\n"
3706  "ARTS, of the Planck function is followed and the unit of the\n"
3707  "returned data is W/(m^2 Hz sr).\n"
3708  ),
3709  AUTHORS( "Patrick Eriksson" ),
3710  OUT( "emission" ),
3711  GOUT(),
3712  GOUT_TYPE(),
3713  GOUT_DESC(),
3714  IN( "f_grid", "rte_temperature" ),
3715  GIN(),
3716  GIN_TYPE(),
3717  GIN_DEFAULT(),
3718  GIN_DESC()
3719  ));
3720 
3721  md_data_raw.push_back
3722  ( MdRecord
3723  ( NAME( "Error" ),
3724  DESCRIPTION
3725  (
3726  "Issues an error and exits ARTS.\n"
3727  "\n"
3728  "This method can be placed in agendas that must be specified, but\n"
3729  "are expected not to be used for the particular case. An inclusion\n"
3730  "in *surface_prop_agenda* could look like:\n "
3731  "Error{\"Surface interceptions of propagation path not expected.\"}\n"
3732  "\n"
3733  "Ignore and other dummy method calls must still be included.\n"
3734  ),
3735  AUTHORS( "Patrick Eriksson" ),
3736  OUT(),
3737  GOUT(),
3738  GOUT_TYPE(),
3739  GOUT_DESC(),
3740  IN(),
3741  GIN( "msg" ),
3742  GIN_TYPE( "String" ),
3743  GIN_DEFAULT( NODEF ),
3744  GIN_DESC( "String describing the error." )
3745  ));
3746 
3747  md_data_raw.push_back
3748  ( MdRecord
3749  ( NAME( "Exit" ),
3750  DESCRIPTION
3751  (
3752  "Stops the execution and exits ARTS.\n"
3753  "\n"
3754  "This method is handy if you want to debug one of your control\n"
3755  "files. You can insert it anywhere in the control file. When\n"
3756  "it is reached, it will terminate the program.\n"
3757  ),
3758  AUTHORS( "Patrick Eriksson" ),
3759  OUT(),
3760  GOUT(),
3761  GOUT_TYPE(),
3762  GOUT_DESC(),
3763  IN(),
3764  GIN(),
3765  GIN_TYPE(),
3766  GIN_DEFAULT(),
3767  GIN_DESC()
3768  ));
3769 
3770  md_data_raw.push_back
3771  ( MdRecord
3772  ( NAME( "Extract" ),
3773  DESCRIPTION
3774  (
3775  "Extract an element from an array.\n"
3776  "\n"
3777  "Copies the element with the given Index from the input\n"
3778  "variable to the output variable.\n"
3779  "\n"
3780  "For a Tensor3 as an input, it copies the page with the given\n"
3781  "Index from the input Tensor3 variable to the output Matrix.\n"
3782  "\n"
3783  "In other words, the selection is always done on the first dimension.\n"
3784  ),
3785  AUTHORS( "Oliver Lemke" ),
3786  OUT(),
3787  GOUT( "needle" ),
3788  GOUT_TYPE( "ArrayOfIndex, Numeric, Vector, Matrix, Matrix, Tensor3, Tensor4,"
3789  "Tensor4, ArrayOfGriddedField3, GriddedField4, String" ),
3790  GOUT_DESC( "Extracted element." ),
3791  IN(),
3792  GIN( "haystack", "index" ),
3793  GIN_TYPE( "ArrayOfArrayOfIndex, Vector, ArrayOfVector, ArrayOfMatrix, Tensor3,"
3794  "Tensor4, ArrayOfTensor4, Tensor5, ArrayOfArrayOfGriddedField3,"
3795  "ArrayOfGriddedField4, ArrayOfString",
3796  "Index" ),
3797  GIN_DEFAULT( NODEF, NODEF ),
3798  GIN_DESC( "Variable to extract from.",
3799  "Position of the element which should be extracted." ),
3800  SETMETHOD( false ),
3801  AGENDAMETHOD( false ),
3802  SUPPRESSHEADER( true )
3803  ));
3804 
3805  md_data_raw.push_back
3806  ( MdRecord
3807  ( NAME( "ext_matAddGas" ),
3808  DESCRIPTION
3809  (
3810  "Add gas absorption to all diagonal elements of extinction matrix.\n"
3811  "\n"
3812  "The task of this method is to sum up the gas absorption of the\n"
3813  "different gas species and add the result to the extinction matrix.\n"
3814  ),
3815  AUTHORS( "Stefan Buehler" ),
3816  OUT( "ext_mat" ),
3817  GOUT(),
3818  GOUT_TYPE(),
3819  GOUT_DESC(),
3820  IN( "ext_mat", "abs_scalar_gas" ),
3821  GIN(),
3822  GIN_TYPE(),
3823  GIN_DEFAULT(),
3824  GIN_DESC()
3825  ));
3826 
3827  md_data_raw.push_back
3828  ( MdRecord
3829  ( NAME( "ext_matAddPart" ),
3830  DESCRIPTION
3831  (
3832  "The particle extinction is added to *ext_mat*\n"
3833  "\n"
3834  "This function sums up the extinction matrices for all particle\n"
3835  "types weighted with particle number density.\n"
3836  "The resulting extinction matrix is added to the workspace\n"
3837  "variable *ext_mat*\n"
3838  "The output of this method is *ext_mat* (stokes_dim, stokes_dim).\n"
3839  "The inputs are the extinction matrix for the single particle type\n"
3840  "*ext_mat_spt* (part_types, stokes_dim, stokes_dim) and the local\n"
3841  "particle number densities for all particle types namely the\n"
3842  "*pnd_field* (part_types, p_grid, lat_grid, lon_grid ) for given\n"
3843  "*p_grid*, *lat_grid*, and *lon_grid*. The particle types required\n"
3844  "are specified in the control file.\n"
3845  ),
3846  AUTHORS( "Sreerekha T.R." ),
3847  OUT( "ext_mat" ),
3848  GOUT(),
3849  GOUT_TYPE(),
3850  GOUT_DESC(),
3851  IN( "ext_mat", "ext_mat_spt", "pnd_field", "atmosphere_dim",
3852  "scat_p_index", "scat_lat_index", "scat_lon_index" ),
3853  GIN(),
3854  GIN_TYPE(),
3855  GIN_DEFAULT(),
3856  GIN_DESC()
3857  ));
3858 
3859  md_data_raw.push_back
3860  ( MdRecord
3861  ( NAME( "ext_matInit" ),
3862  DESCRIPTION
3863  (
3864  "Initialize extinction matrix.\n"
3865  "\n"
3866  "This method is necessary, because all other extinction methods just\n"
3867  "add to the existing extinction matrix.\n"
3868  "\n"
3869  "So, here we have to make it the right size and fill it with 0.\n"
3870  "\n"
3871  "Note, that the matrix is not really a matrix, because it has a\n"
3872  "leading frequency dimension.\n"
3873  ),
3874  AUTHORS( "Stefan Buehler" ),
3875  OUT( "ext_mat" ),
3876  GOUT(),
3877  GOUT_TYPE(),
3878  GOUT_DESC(),
3879  IN( "f_grid", "stokes_dim", "f_index" ),
3880  GIN(),
3881  GIN_TYPE(),
3882  GIN_DEFAULT(),
3883  GIN_DESC()
3884  ));
3885 
3886  md_data_raw.push_back
3887  ( MdRecord
3888  ( NAME( "FrequencyFromWavelength" ),
3889  DESCRIPTION
3890  (
3891  "Convert from wavelength [m] to frequency [Hz].\n"
3892  "\n"
3893  "This is a generic method. It can take a single wavelength value or a wavelength vector as input.\n"
3894  ),
3895  AUTHORS( "Claudia Emde" ),
3896  OUT(),
3897  GOUT("frequency"),
3898  GOUT_TYPE("Numeric, Vector"),
3899  GOUT_DESC("frequency [Hz]"),
3900  IN(),
3901  GIN( "wavelength"),
3902  GIN_TYPE("Numeric, Vector" ),
3903  GIN_DEFAULT( NODEF ),
3904  GIN_DESC("wavelength [m]" ),
3905  SETMETHOD( false ),
3906  AGENDAMETHOD( false ),
3907  SUPPRESSHEADER( true )
3908  ));
3909 
3910  md_data_raw.push_back
3911  ( MdRecord
3912  ( NAME( "FlagOff" ),
3913  DESCRIPTION
3914  (
3915  "Sets an index variable that acts as an on/off flag to 0.\n"
3916  ),
3917  AUTHORS( "Patrick Eriksson" ),
3918  OUT(),
3919  GOUT( "i" ),
3920  GOUT_TYPE( "Index" ),
3921  GOUT_DESC( "Variable to set to 0." ),
3922  IN(),
3923  GIN(),
3924  GIN_TYPE(),
3925  GIN_DEFAULT(),
3926  GIN_DESC()
3927  ));
3928 
3929  md_data_raw.push_back
3930  ( MdRecord
3931  ( NAME( "FlagOn" ),
3932  DESCRIPTION
3933  (
3934  "Sets an index variable that acts as an on/off flag to 1.\n"
3935  ),
3936  AUTHORS( "Patrick Eriksson" ),
3937  OUT(),
3938  GOUT( "i" ),
3939  GOUT_TYPE( "Index" ),
3940  GOUT_DESC( "Variable to set to 1." ),
3941  IN(),
3942  GIN(),
3943  GIN_TYPE(),
3944  GIN_DEFAULT(),
3945  GIN_DESC()
3946  ));
3947 
3948  md_data_raw.push_back
3949  ( MdRecord
3950  ( NAME( "ForLoop" ),
3951  DESCRIPTION
3952  (
3953  "A simple for loop.\n"
3954  "\n"
3955  "This method is handy when you quickly want to test out a calculation\n"
3956  "with a set of different settings.\n"
3957  "\n"
3958  "It does a for loop from start to stop in steps of step. (Who would\n"
3959  "have guessed that.) For each iteration, the agenda *forloop_agenda* is\n"
3960  "executed. Inside the agenda, the variable *forloop_index* is available\n"
3961  "as index counter.\n"
3962  "\n"
3963  "There are no other inputs to *forloop_agenda*, and also no outputs. That\n"
3964  "means, if you want to get any results out of this loop, you have to\n"
3965  "save it to files (for example with *WriteXMLIndexed*), since\n"
3966  "variables used inside the agenda will only be local.\n"
3967  "\n"
3968  "Note that this kind of for loop is not parallel.\n"
3969  "\n"
3970  "The method is intended for simple testing, not as a replacement of\n"
3971  "*ybatchCalc*. However, it is compatible with *ybatchCalc*, in the sense\n"
3972  "that *ybatchCalc* may occur inside *forloop_agenda*.\n"
3973  ),
3974  AUTHORS( "Stefan Buehler" ),
3975  OUT(),
3976  GOUT(),
3977  GOUT_TYPE(),
3978  GOUT_DESC(),
3979  IN( "forloop_agenda" ),
3980  GIN( "start", "stop", "step" ),
3981  GIN_TYPE( "Index", "Index", "Index" ),
3983  GIN_DESC( "Start value.",
3984  "End value.",
3985  "Step size." )
3986  ));
3987 
3988  md_data_raw.push_back
3989  ( MdRecord
3990  ( NAME( "f_gridFromGasAbsLookup" ),
3991  DESCRIPTION
3992  (
3993  "Sets *f_grid* to the frequency grid of *abs_lookup*.\n"
3994  "\n"
3995  "Must be called between importing/creating raw absorption table and\n"
3996  "call of *abs_lookupAdapt*.\n"
3997  ),
3998  AUTHORS( "Stefan Buehler" ),
3999  OUT( "f_grid" ),
4000  GOUT(),
4001  GOUT_TYPE(),
4002  GOUT_DESC(),
4003  IN( "abs_lookup" ),
4004  GIN(),
4005  GIN_TYPE(),
4006  GIN_DEFAULT(),
4007  GIN_DESC()
4008  ));
4009 
4010  md_data_raw.push_back
4011  ( MdRecord
4012  ( NAME( "f_gridFromSensorAMSU" ),
4013  DESCRIPTION
4014  (
4015  "Automatically calculate f_grid to match the sensor.\n"
4016  "\n"
4017  "This method is handy if you are simulating an AMSU-type instrument,\n"
4018  "consisting of a few discrete channels. The case that channels touch,\n"
4019  "as for MHS, is handled correctly. But the case that channels overlap\n"
4020  "is not (yet) handled and results in an error message.\n"
4021  "\n"
4022  "The method calculates *f_grid* to match the instrument, as given by\n"
4023  "the local oscillator frequencies *lo_multi*, the backend\n"
4024  "frequencies *f_backend_multi*, and the backend channel\n"
4025  "responses *backend_channel_response_multi*.\n"
4026  "\n"
4027  "You have to specify the desired spacing in the keyword *spacing*,\n"
4028  "which has a default value of 100 MHz. (The actual value is 0.1e9,\n"
4029  "since our unit is Hz.)\n"
4030  "\n"
4031  "The produced grid will not have exactly the requested spacing, but\n"
4032  "will not be coarser than requested. The algorithm starts with the band\n"
4033  "edges, then adds additional points until the spacing is at least as\n"
4034  "fine as requested.\n"
4035  "\n"
4036  "There is a similar method for HIRS-type instruments,\n"
4037  "see *f_gridFromSensorHIRS*.\n"
4038  ),
4039  AUTHORS( "Stefan Buehler, Mathias Milz" ),
4040  OUT( "f_grid" ),
4041  GOUT(),
4042  GOUT_TYPE(),
4043  GOUT_DESC(),
4044  IN( "lo_multi", "f_backend_multi", "backend_channel_response_multi" ),
4045  GIN( "spacing" ),
4046  GIN_TYPE( "Numeric" ),
4047  GIN_DEFAULT( ".1e9" ),
4048  GIN_DESC( "Desired grid spacing in Hz." )
4049  ));
4050 
4051  md_data_raw.push_back
4052  ( MdRecord
4053  ( NAME( "f_gridFromSensorHIRS" ),
4054  DESCRIPTION
4055  (
4056  "Automatically calculate f_grid to match the sensor.\n"
4057  "\n"
4058  "This method is handy if you are simulating a HIRS-type instrument,\n"
4059  "consisting of a few discrete channels.\n"
4060  "\n"
4061  "It calculates f_grid to match the instrument, as given by the nominal\n"
4062  "band frequencies *f_backend* and the spectral channel response\n"
4063  "functions given by *backend_channel_response*.\n"
4064  "\n"
4065  "You have to specify the desired spacing in the keyword *spacing*, which\n"
4066  "has a default value of 5e8 Hz.\n"
4067  "\n"
4068  "The produced grid will not have exactly the requested spacing, but\n"
4069  "will not be coarser than requested. The algorithm starts with the band\n"
4070  "edges, then adds additional points until the spacing is at least as\n"
4071  "fine as requested.\n"
4072  "\n"
4073  "There is a similar method for AMSU-type instruments, see\n"
4074  "*f_gridFromSensorAMSU*.\n"
4075  ),
4076  AUTHORS( "Stefan Buehler" ),
4077  OUT( "f_grid" ),
4078  GOUT( ),
4079  GOUT_TYPE( ),
4080  GOUT_DESC(),
4081  IN( "f_backend", "backend_channel_response" ),
4082  GIN( "spacing" ),
4083  GIN_TYPE( "Numeric" ),
4084  GIN_DEFAULT( "5e8" ),
4085  GIN_DESC( "Desired grid spacing in Hz." )
4086  ));
4087 
4088  md_data_raw.push_back
4089  ( MdRecord
4090  ( NAME( "f_gridSelectFIndex" ),
4091  DESCRIPTION
4092  (
4093  "Reduce f_grid to the frequency given by f_index.\n"
4094  "\n"
4095  "This is one of the methods necessary to do line by line absorption\n"
4096  "calculations inside *abs_scalar_gas_agenda*.\n"
4097  "\n"
4098  "It reduces the f_grid to only one frequency, the one given by\n"
4099  "f_index. If f_index is -1, then all frequencies are kept. This\n"
4100  "behavior is consistent with *abs_scalar_gasExtractFromLookup*.\n"
4101  ),
4102  AUTHORS( "Stefan Buehler" ),
4103  OUT( "f_grid" ),
4104  GOUT(),
4105  GOUT_TYPE(),
4106  GOUT_DESC(),
4107  IN( "f_grid", "f_index" ),
4108  GIN(),
4109  GIN_TYPE(),
4110  GIN_DEFAULT(),
4111  GIN_DESC()
4112  ));
4113 
4114  md_data_raw.push_back
4115  ( MdRecord
4116  ( NAME( "Massdensity_cleanup" ),
4117  DESCRIPTION
4118  (
4119  "This WSM checks if *massdensity_field* contains values smaller than\n"
4120  "*massdensity_threshold*. In this case, these values will be set to zero.\n"
4121  "\n"
4122  "The Method should be applied if *massdensity_field* contains unrealistic small\n"
4123  "or erroneous data. (e.g. the chevallierl_91l data sets contain these small values)\n"
4124  "\n"
4125  "*Massdensity_cleanup* is called after generation of atmopheric fields.\n"
4126  "\n"
4127  "*Default value*:\t1e-15\n"
4128  ),
4129  AUTHORS( "Daniel Kreyling" ),
4130  OUT( "massdensity_field" ),
4131  GOUT(),
4132  GOUT_TYPE(),
4133  GOUT_DESC(),
4134  IN( "massdensity_field" ),
4135  GIN( "massdensity_threshold" ),
4136  GIN_TYPE( "Numeric" ),
4137  GIN_DEFAULT( "1e-15" ),
4138  GIN_DESC( "Values in *massdensity_field* smaller than *massdensity_threshold* will be set to zero." )
4139  ));
4140 
4141  md_data_raw.push_back
4142  ( MdRecord
4143  ( NAME( "Ignore" ),
4144  DESCRIPTION
4145  (
4146  "Ignore a workspace variable.\n"
4147  "\n"
4148  "This method is handy for use in agendas in order to suppress warnings\n"
4149  "about unused input workspace variables. What it does is: Nothing!\n"
4150  "In other words, it just ignores the variable it is called on.\n"
4151  "\n"
4152  "This method can ignore any workspace variable\n"
4153  "you want.\n"
4154  "\n"
4155  "Usage example:\n"
4156  "\n"
4157  "AgendaSet(els_agenda){\n"
4158  " Ignore(ls_sigma)\n"
4159  " elsLorentz\n"
4160  "}\n"
4161  "\n"
4162  "Without Ignore you would get an error message, because 'els_agenda' is\n"
4163  "supposed to use the Doppler width 'ls_sigma', but the Lorentz lineshape\n"
4164  "'elsLorentz' does not need it.\n"
4165  ),
4166  AUTHORS( "Stefan Buehler" ),
4167  OUT(),
4168  GOUT(),
4169  GOUT_TYPE(),
4170  GOUT_DESC(),
4171  IN(),
4172  GIN( "gin1" ),
4173  GIN_TYPE( "Any" ),
4174  GIN_DEFAULT( NODEF ),
4175  GIN_DESC( "Variable to be ignored." ),
4176  SETMETHOD( false ),
4177  AGENDAMETHOD( false ),
4178  SUPPRESSHEADER( true )
4179  ));
4180 
4181  md_data_raw.push_back
4182  ( MdRecord
4183  ( NAME( "INCLUDE" ),
4184  DESCRIPTION
4185  (
4186  "Includes the contents of another controlfile.\n"
4187  "\n"
4188  "The INCLUDE statement inserts the contents of the controlfile\n"
4189  "with the given name into the current controlfile.\n"
4190  "If the filename is given without path information, ARTS will\n"
4191  "first search for the file in all directories specified with the\n"
4192  "-I (see arts -h) commandline option and then in directories given\n"
4193  "in the environment variable ARTS_INCLUDE_PATH. In the environment\n"
4194  "variable multiple paths have to be separated by colons.\n"
4195  "\n"
4196  "Note that INCLUDE is not a workspace method and thus the\n"
4197  "syntax is different:\n"
4198  "\n"
4199  "Arts {\n"
4200  " INCLUDE \"general.arts\"\n"
4201  "}\n"
4202  "\n"
4203  "Includes can also be nested. In the example above general.arts\n"
4204  "can contain further includes which will then be treated\n"
4205  "the same way.\n"
4206  "\n"
4207  "The idea behind this mechanism is that you can write common settings\n"
4208  "for a bunch of calculations into one file. Then, you can create\n"
4209  "several controlfiles which include the basic settings and tweak them\n"
4210  "for different cases. When you decide to make changes to your setup\n"
4211  "that should apply to all calculations, you only have to make a\n"
4212  "single change in the include file instead of modifying all your\n"
4213  "controlfiles.\n"
4214  ),
4215  AUTHORS( "Oliver Lemke" ),
4216  OUT(),
4217  GOUT(),
4218  GOUT_TYPE(),
4219  GOUT_DESC(),
4220  IN(),
4221  GIN(),
4222  GIN_TYPE(),
4223  GIN_DEFAULT(),
4224  GIN_DESC()
4225  ));
4226 
4227  md_data_raw.push_back
4228  ( MdRecord
4229  ( NAME( "IndexSet" ),
4230  DESCRIPTION
4231  (
4232  "Sets an index workspace variable to the given value.\n"
4233  ),
4234  AUTHORS( "Patrick Eriksson" ),
4235  OUT(),
4236  GOUT( "i" ),
4237  GOUT_TYPE( "Index" ),
4238  GOUT_DESC( "Variable to initialize." ),
4239  IN(),
4240  GIN( "value" ),
4241  GIN_TYPE( "Index" ),
4242  GIN_DEFAULT( NODEF ),
4243  GIN_DESC( "Value." ),
4244  SETMETHOD( true )
4245  ));
4246 
4247  md_data_raw.push_back
4248  ( MdRecord
4249  ( NAME( "IndexStep" ),
4250  DESCRIPTION
4251  (
4252  "Performs i2 = i1 + 1\n"
4253  "\n"
4254  "Input and output can be same variable.\n"
4255  ),
4256  AUTHORS( "Patrick Eriksson" ),
4257  OUT(),
4258  GOUT( "i2" ),
4259  GOUT_TYPE( "Index" ),
4260  GOUT_DESC( "Output index variable." ),
4261  IN(),
4262  GIN( "gin1" ),
4263  GIN_TYPE( "Index" ),
4264  GIN_DEFAULT( NODEF ),
4265  GIN_DESC( "Input index variable." )
4266  ));
4267 
4268  md_data_raw.push_back
4269  ( MdRecord
4270  ( NAME( "InterpAtmFieldToRteGps" ),
4271  DESCRIPTION
4272  (
4273  "Scalar interpolation of atmospheric fields.\n"
4274  "\n"
4275  "The position is specified by the combination of *rte_gp_p*,\n"
4276  "*rte_gp_lat* and *rte_gp_lon*.\n"
4277  ),
4278  AUTHORS( "Patrick Eriksson" ),
4279  OUT(),
4280  GOUT( "x" ),
4281  GOUT_TYPE( "Numeric" ),
4282  GOUT_DESC( "Value obtained by the interpolation." ),
4283  IN( "atmosphere_dim", "rte_gp_p", "rte_gp_lat", "rte_gp_lon" ),
4284  GIN( "field" ),
4285  GIN_TYPE( "Tensor3" ),
4286  GIN_DEFAULT( NODEF ),
4287  GIN_DESC( "Field to interpolate." )
4288  ));
4289 
4290  md_data_raw.push_back
4291  ( MdRecord
4292  ( NAME( "InterpSurfaceEmissivityFieldIncLatLon" ),
4293  DESCRIPTION
4294  (
4295  "Interpolation of surface emissivity specified as a function of\n"
4296  "incidence angle, latitude and longitude.\n"
4297  "\n"
4298  "The surface emissivity field has here three dimension, with\n"
4299  "incidence angle as first/column dimension, latitude as second/row\n"
4300  "dimension and longitude as third/page dimension. Grid names must\n"
4301  "be set exactly to \"Incidence angle\", \"Latitude\" and\n"
4302  "\"Longitude\". No extrapolation is allowed.\n"
4303  "\n"
4304  "For 1D cases it is expected that the latitude and longitude grids\n"
4305  "have both a length of 1. For 2D the same applies to the longitude\n"
4306  "grid.\n"
4307  "\n"
4308  "This method can be used together with e.g.\n"
4309  "*surfaceFlatSingleEmissivity*.\n"
4310  ),
4311  AUTHORS( "Patrick Eriksson" ),
4312  OUT(),
4313  GOUT( "outvalue" ),
4314  GOUT_TYPE( "Numeric" ),
4315  GOUT_DESC( "Value obtained by interpolation" ),
4316  IN( "atmosphere_dim", "rte_pos", "rte_los" ),
4317  GIN( "gfield" ),
4318  GIN_TYPE( "GriddedField3" ),
4319  GIN_DEFAULT( NODEF ),
4320  GIN_DESC( "Gridded field to be interpolated." )
4321  ));
4322 
4323  md_data_raw.push_back
4324  ( MdRecord
4325  ( NAME( "InterpSurfaceFieldToRteGps" ),
4326  DESCRIPTION
4327  (
4328  "Scalar interpolation of surface fields.\n"
4329  "\n"
4330  "The position is specified by the combination of *rte_gp_lat* and\n"
4331  "*rte_gp_lon*.\n"
4332  ),
4333  AUTHORS( "Patrick Eriksson" ),
4334  OUT(),
4335  GOUT( "x" ),
4336  GOUT_TYPE( "Numeric" ),
4337  GOUT_DESC( "Value obtained by interpolation." ),
4338  IN( "atmosphere_dim", "rte_gp_lat", "rte_gp_lon" ),
4339  GIN( "gin1" ),
4340  GIN_TYPE( "Matrix" ),
4341  GIN_DEFAULT( NODEF ),
4342  GIN_DESC( "Field to interpolate." )
4343  ));
4344 
4345  md_data_raw.push_back
4346  ( MdRecord
4347  ( NAME( "iyBeerLambertStandardClearsky" ),
4348  DESCRIPTION
4349  (
4350  "Standard method for handling transmission measurements.\n"
4351  "\n"
4352  "Designed to be part of *iy_clearsky_agenda*. That is, only valid\n"
4353  "outside the cloudbox (no scattering or polarised absorption).\n"
4354  "\n"
4355  "This method works exactly as *iyEmissionStandardClearsky*, but does\n"
4356  "add any emission. In fact, the latter method with *emission_agenda*\n"
4357  "set to return zero would give exactly the same result as this WSM.\n"
4358  "For propagation paths above the surface, the result is the output\n"
4359  "of *iy_space_agenda* times the (vector) transmission through the\n"
4360  "atmosphere (i.e. standard Beer-Lambert). \n"
4361  "\n"
4362  "If the propagation paths intercepts with the surface, the surface\n"
4363  "variables are used as for *iyEmissionStandardClearsky*, and \n"
4364  "*surface_emission* should probably be set to 0. Multiple-beams\n"
4365  "will be followed if *surface_los* has length > 1.\n"
4366  "\n"
4367  "*iy_aux* is not set.\n"
4368  ),
4369  AUTHORS( "Patrick Eriksson" ),
4370  OUT( "iy", "iy_error", "iy_error_type", "iy_aux", "diy_dx" ),
4371  GOUT(),
4372  GOUT_TYPE(),
4373  GOUT_DESC(),
4374  IN( "iy_error", "iy_error_type", "iy_aux", "diy_dx",
4375  "iy_agenda_call1", "iy_transmission",
4376  "rte_pos", "rte_los", "jacobian_do",
4377  "atmosphere_dim", "p_grid", "lat_grid", "lon_grid", "z_field",
4378  "t_field", "vmr_field", "wind_u_field", "wind_v_field",
4379  "wind_w_field", "r_geoid", "z_surface", "cloudbox_on",
4380  "cloudbox_limits", "stokes_dim", "f_grid", "abs_species",
4381  "ppath_step_agenda", "abs_scalar_gas_agenda", "iy_clearsky_agenda",
4382  "iy_space_agenda", "surface_prop_agenda", "iy_cloudbox_agenda",
4383  "jacobian_quantities", "jacobian_indices" ),
4384  GIN(),
4385  GIN_TYPE(),
4386  GIN_DEFAULT(),
4387  GIN_DESC()
4388  ));
4389 
4390  md_data_raw.push_back
4391  ( MdRecord
4392  ( NAME( "iyBeerLambertStandardCloudbox" ),
4393  DESCRIPTION
4394  (
4395  "Standard method for handling transmission measurements.\n"
4396  "\n"
4397  "Designed to be part of *iy_cloudbox_agenda*, and is thus a\n"
4398  "complement to *iyBeerLambertStandardClearsky*.\n"
4399  "\n"
4400  "Only scattering out of the propagation path is considered. Thus,\n"
4401  "this method could be used for direct solar occultation measurements\n"
4402  "but clearly not for observations of scattered solar radiation.\n"
4403  "\n"
4404  "For regions of no scattering there is a marginal difference between\n"
4405  "running this method and the corresponding pure clear-sky agenda,\n"
4406  "and there is not critical to set the cloudbox limits in a \"tight\"\n"
4407  "manner.\n"
4408  ),
4409  AUTHORS( "Patrick Eriksson" ),
4410  OUT( "iy", "iy_error", "iy_error_type", "iy_aux", "diy_dx" ),
4411  GOUT(),
4412  GOUT_TYPE(),
4413  GOUT_DESC(),
4414  IN( "iy_error", "iy_error_type", "iy_aux", "diy_dx", "iy_transmission",
4415  "rte_pos", "rte_los", "jacobian_do", "atmosphere_dim",
4416  "p_grid", "lat_grid", "lon_grid", "z_field", "t_field",
4417  "vmr_field", "r_geoid", "z_surface", "cloudbox_on",
4418  "cloudbox_limits", "stokes_dim", "f_grid", "ppath_step_agenda",
4419  "abs_scalar_gas_agenda", "iy_clearsky_agenda", "pnd_field",
4420  "use_mean_scat_data", "scat_data_raw", "opt_prop_gas_agenda" ),
4421  GIN(),
4422  GIN_TYPE(),
4423  GIN_DEFAULT(),
4424  GIN_DESC()
4425  ));
4426 
4427  md_data_raw.push_back
4428  ( MdRecord
4429  ( NAME( "iyEmissionStandardClearsky" ),
4430  DESCRIPTION
4431  (
4432  "Standard method for radiative transfer calculations with emission.\n"
4433  "\n"
4434  "Designed to be part of *iy_clearsky_agenda*. That is, only valid\n"
4435  "outside the cloudbox (no scattering or polarised absorption).\n"
4436  "Assumes local thermodynamic equilibrium for emission.\n"
4437  "\n"
4438  "The overall strategy is to take the average of the absorption and\n"
4439  "the emission source function at the end points of each step of\n"
4440  "the propagation path. See further the user guide. *iy_error*\n"
4441  "is considered to be 0. \n"
4442  "\n"
4443  "The WSV *iy_aux* is set to hold the transmission, if the radiative\n"
4444  "background is space or the surface. That is, as long as there is no\n"
4445  "intersection with a cloudbox, the method sets *iy_aux* to the\n"
4446  "transmission through the atmosphere either down to the surface, or\n"
4447  "to the top of the atmosphere. The treatment of *iy_aux* if there\n"
4448  "is an interesection with the cloudbox depends on the scattering\n"
4449  "method selected.\n"
4450  ),
4451  AUTHORS( "Patrick Eriksson" ),
4452  OUT( "iy", "iy_error", "iy_error_type", "iy_aux", "diy_dx" ),
4453  GOUT(),
4454  GOUT_TYPE(),
4455  GOUT_DESC(),
4456  IN( "iy_error", "iy_error_type", "iy_aux", "diy_dx",
4457  "iy_agenda_call1", "iy_transmission",
4458  "rte_pos", "rte_los", "jacobian_do",
4459  "atmosphere_dim", "p_grid", "lat_grid", "lon_grid", "z_field",
4460  "t_field", "vmr_field", "wind_u_field", "wind_v_field",
4461  "wind_w_field", "r_geoid", "z_surface",
4462  "cloudbox_on", "cloudbox_limits", "stokes_dim", "f_grid",
4463  "abs_species", "ppath_step_agenda", "emission_agenda",
4464  "abs_scalar_gas_agenda", "iy_clearsky_agenda", "iy_space_agenda",
4465  "surface_prop_agenda", "iy_cloudbox_agenda",
4466  "jacobian_quantities", "jacobian_indices" ),
4467  GIN(),
4468  GIN_TYPE(),
4469  GIN_DEFAULT(),
4470  GIN_DESC()
4471  ));
4472 
4473  md_data_raw.push_back
4474  ( MdRecord
4475  ( NAME( "iyEmissionStandardClearskyBasic" ),
4476  DESCRIPTION
4477  (
4478  "As *iyEmissionStandardClearsky*, but lacking support for auxilary\n"
4479  "variables and jacobian calculations.\n"
4480  "\n"
4481  "Designed to be part of *iy_clearsky_basic_agenda*. See further\n"
4482  "*iyEmissionStandardClearsky*.\n"
4483  ),
4484  AUTHORS( "Patrick Eriksson" ),
4485  OUT( "iy" ),
4486  GOUT(),
4487  GOUT_TYPE(),
4488  GOUT_DESC(),
4489  IN( "rte_pos", "rte_los", "jacobian_do", "atmosphere_dim", "p_grid",
4490  "lat_grid", "lon_grid", "z_field", "t_field", "vmr_field",
4491  "wind_u_field", "wind_v_field", "wind_w_field", "r_geoid",
4492  "z_surface", "cloudbox_on", "cloudbox_limits", "stokes_dim",
4493  "f_grid", "ppath_step_agenda", "emission_agenda",
4494  "abs_scalar_gas_agenda", "iy_clearsky_basic_agenda",
4495  "iy_space_agenda", "surface_prop_agenda", "iy_cloudbox_agenda" ),
4496  GIN(),
4497  GIN_TYPE(),
4498  GIN_DEFAULT(),
4499  GIN_DESC()
4500  ));
4501 
4502  md_data_raw.push_back
4503  ( MdRecord
4504  ( NAME( "iyMC" ),
4505  DESCRIPTION
4506  (
4507  "Interface to Monte Carlo part for *iy_clearsky_agenda*.\n"
4508  "\n"
4509  "Basically an interface to *MCGeneral* for doing monochromatic\n"
4510  "pencil beam calculations. This functions allows Monte Carlo (MC)\n"
4511  "calculations for sets of frequencies and sensor pos/los in a single\n"
4512  "run. Sensor responses can be included in the standard manner\n"
4513  "(through *yCalc*).\n"
4514  "\n"
4515  "MC unit is set as for *MCGeneral*. No antenna pattern is included.\n"
4516  "\n"
4517  "This function does not apply the MC approach when it comes\n"
4518  "to sensor properties. These properties are not considered when\n"
4519  "tracking photons, which is done in *MCGeneral* (but then only for\n"
4520  "the antenna pattern).\n"
4521  "\n"
4522  "The MC calculation errors are all assumed be uncorrelated and each\n"
4523  "have a normal distribution. These properties are of relevance when\n"
4524  "weighting the errors with the sensor repsonse matrix. The seed is\n"
4525  "reset for each call of *MCGeneral* to obtain uncorrelated errors.\n"
4526  "\n"
4527  "MC control arguments (mc_std_err, mc_max_time, mc_max_iter and\n"
4528  "mc_z_field_is_1D) as for *MCGeneral*. The arguments are applied\n"
4529  "for each monochromatic pencil beam calculation individually.\n"
4530  "\n"
4531  "*iy_aux* is not set.\n"
4532  ),
4533  AUTHORS( "Patrick Eriksson" ),
4534  OUT( "iy", "iy_error", "iy_error_type", "iy_aux", "diy_dx" ),
4535  GOUT(),
4536  GOUT_TYPE(),
4537  GOUT_DESC(),
4538  IN( "iy_error", "iy_error_type", "iy_aux", "diy_dx",
4539  "iy_agenda_call1", "iy_transmission",
4540  "rte_pos", "rte_los",
4541  "jacobian_do", "atmosphere_dim", "p_grid", "lat_grid",
4542  "lon_grid", "z_field", "t_field", "vmr_field", "r_geoid",
4543  "z_surface", "cloudbox_on", "cloudbox_limits", "cloudbox_checked",
4544  "stokes_dim", "f_grid", "scat_data_raw",
4545  "iy_space_agenda", "surface_prop_agenda", "abs_scalar_gas_agenda",
4546  "opt_prop_gas_agenda", "pnd_field", "y_unit",
4547  "mc_std_err", "mc_max_time", "mc_max_iter"),
4548  GIN(),
4549  GIN_TYPE(),
4550  GIN_DEFAULT(),
4551  GIN_DESC()
4552  ));
4553 
4554  md_data_raw.push_back
4555  ( MdRecord
4556  ( NAME( "iyInterpCloudboxField" ),
4557  DESCRIPTION
4558  (
4559  "Interpolates the intensity field of the cloud box.\n"
4560  "\n"
4561  "This is the standard method to put in *iy_cloudbox_agenda* if the\n"
4562  "the scattering inside the cloud box is handled by the DOIT method.\n"
4563  "\n"
4564  "The intensity field is interpolated to the position (specified by\n"
4565  "*rte_gp_p/lat/lon*) and direction (specified by *scat_za/aa_grid*)\n"
4566  "given. A linear interpolation is used for all dimensions.\n"
4567  "\n"
4568  "The intensity field on the cloux box boundaries is provided by\n"
4569  "*scat_i_p/lat/lon* and these variables are interpolated if the\n"
4570  "given position is at any boundary.\n"
4571  "\n"
4572  "Interpolation of the internal field is not yet possible.\n"
4573  "\n"
4574  "Further, *iy_aux* is set to the transmission to the boundary of the\n"
4575  "cloudbox. *iy_error* is so far set to a constant value of\n"
4576  "[0.5 0.1 0.1 0.1] K (the RJBT for each Stokes element). These\n"
4577  "values are valid at the cloudbox boundary, and weighted with the\n"
4578  "transmission to the sensor. *iy_error_type* is set to 2.\n"
4579  ),
4580  AUTHORS( "Claudia Emde" ),
4581  OUT( "iy", "iy_error", "iy_error_type", "iy_aux", "diy_dx" ),
4582  GOUT(),
4583  GOUT_TYPE(),
4584  GOUT_DESC(),
4585  IN( "iy_error", "iy_error_type", "iy_aux", "diy_dx",
4586  "iy_transmission",
4587  "scat_i_p", "scat_i_lat", "scat_i_lon", "doit_i_field1D_spectrum",
4588  "rte_gp_p", "rte_gp_lat", "rte_gp_lon", "rte_los", "jacobian_do",
4589  "cloudbox_on", "cloudbox_limits", "atmosphere_dim", "stokes_dim",
4590  "scat_za_grid", "scat_aa_grid", "f_grid" ),
4591  GIN(),
4592  GIN_TYPE(),
4593  GIN_DEFAULT(),
4594  GIN_DESC()
4595  ));
4596 
4597  md_data_raw.push_back
4598  ( MdRecord
4599  ( NAME( "iyInterpPolyCloudboxField" ),
4600  DESCRIPTION
4601  (
4602  "As *iyInterpCloudboxField* but performs cubic interpolation.\n"
4603  "\n"
4604  "Works so far only for 1D cases, and accordingly a cubic\n"
4605  "interpolation along *scat_za_grid* is performed.\n"
4606  "\n"
4607  "*iy_aux*, *iy_error* and *iy_error_type* treated as by|n"
4608  "*iyInterpPolyCloudboxField*.\n"
4609  ),
4610  AUTHORS( "Claudia Emde" ),
4611  OUT( "iy", "iy_error", "iy_error_type", "iy_aux", "diy_dx" ),
4612  GOUT(),
4613  GOUT_TYPE(),
4614  GOUT_DESC(),
4615  IN( "iy_error", "iy_error_type", "iy_aux", "diy_dx",
4616  "iy_transmission",
4617  "scat_i_p", "scat_i_lat", "scat_i_lon", "doit_i_field1D_spectrum",
4618  "rte_gp_p", "rte_gp_lat", "rte_gp_lon", "rte_los", "jacobian_do",
4619  "cloudbox_on", "cloudbox_limits",
4620  "atmosphere_dim", "stokes_dim", "scat_za_grid", "scat_aa_grid",
4621  "f_grid" ),
4622  GIN(),
4623  GIN_TYPE(),
4624  GIN_DEFAULT(),
4625  GIN_DESC()
4626  ));
4627 
4628  md_data_raw.push_back
4629  ( MdRecord
4630  ( NAME( "jacobianAddAbsSpecies" ),
4631  DESCRIPTION
4632  (
4633  "Includes an absorption species in the Jacobian.\n"
4634  "\n"
4635  "Details are given in the user guide.\n"
4636  "\n"
4637  "For 1D or 2D calculations the latitude and/or longitude grid of\n"
4638  "the retrieval field should set to have zero length.\n"
4639  "\n"
4640  "There are two possible calculation methods:\n"
4641  " \"analytical\" : (semi-)analytical expressions are used\n"
4642  " \"perturbation\" : pure numerical perturbations are used\n"
4643  "\n"
4644  "The retrieval unit can be:\n"
4645  " \"vmr\" : Volume mixing ratio.\n"
4646  " \"nd\" : Number density.\n"
4647  " \"rel\" : Relative unit (e.g. 1.1 means 10% more of the gas).\n"
4648  " \"logrel\" : The retrieval is performed with the logarithm of\n"
4649  " the \"rel\" option.\n"
4650  "\n"
4651  "For perturbation calculations the size of the perturbation is set\n"
4652  "by the user. The unit for the perturbation is the same as for the\n"
4653  "retrieval unit.\n"
4654  ),
4655  AUTHORS( "Mattias Ekstrom", "Patrick Eriksson" ),
4656  OUT( "jacobian_quantities", "jacobian_agenda" ),
4657  GOUT(),
4658  GOUT_TYPE(),
4659  GOUT_DESC(),
4660  IN( "jacobian_quantities", "jacobian_agenda",
4661  "atmosphere_dim", "p_grid", "lat_grid", "lon_grid" ),
4662  GIN( "g1", "g2", "g3", "species", "method", "unit","dx" ),
4663  GIN_TYPE( "Vector", "Vector", "Vector", "String", "String", "String",
4664  "Numeric" ),
4665  GIN_DEFAULT( NODEF, NODEF, NODEF, NODEF, "analytical", "rel", "0.001" ),
4666  GIN_DESC( "Pressure retrieval grid.",
4667  "Latitude retrieval grid.",
4668  "Longitude retreival grid.",
4669  "The species tag of the retrieval quantity.",
4670  "Calculation method. See above.",
4671  "Retrieval unit. See above.",
4672  "Size of perturbation."
4673  ),
4674  SETMETHOD( false ),
4675  AGENDAMETHOD( false ),
4676  SUPPRESSHEADER( false ),
4677  PASSWORKSPACE( true )
4678  ));
4679 
4680  md_data_raw.push_back
4681  ( MdRecord
4682  ( NAME( "jacobianAddFreqShiftAndStretch" ),
4683  DESCRIPTION
4684  (
4685  "Includes a frequency fit in the Jacobian.\n"
4686  "\n"
4687  "Retrieval of deviations between nominal and actual backend\n"
4688  "frequencies can be included by this method. The calculations can be\n"
4689  "performed in the following ways:\n"
4690  " calcmode = \"interp\": Interpolation of monochromatic spectra,\n"
4691  " shifted with *df* from nominal values.\n"
4692  "\n"
4693  "The frequencies can be fitted with 1 or 2 variables. The first one\n"
4694  "is a \"shift\". That is, an off-set common for all backend channels.\n"
4695  "The second variable is \"stretch\", that is included only if\n"
4696  "*do_stretch* is set to 1. The stretch is a frequency shift that goes\n"
4697  "from -x at the first channel and increases linearly to reach x at\n"
4698  "the last channel, where x is the retrieved value.\n"
4699  ),
4700  AUTHORS( "Patrick Eriksson" ),
4701  OUT( "jacobian_quantities", "jacobian_agenda" ),
4702  GOUT(),
4703  GOUT_TYPE(),
4704  GOUT_DESC(),
4705  IN( "jacobian_quantities", "jacobian_agenda", "f_grid" ),
4706  GIN( "calcmode", "df", "do_stretch" ),
4707  GIN_TYPE( "String", "Numeric", "Index" ),
4708  GIN_DEFAULT( "interp", "100e3", "0" ),
4709  GIN_DESC( "Calculation method. See above",
4710  "Size of perturbation to apply.",
4711  "Flag to also include frequency stretch."
4712  )
4713  ));
4714 
4715  md_data_raw.push_back
4716  ( MdRecord
4717  ( NAME( "jacobianAddPointingZa" ),
4718  DESCRIPTION
4719  (
4720  "Adds sensor pointing zenith angle off-set jacobian.\n"
4721  "\n"
4722  "Retrieval of deviations between nominal and actual zenith angle of\n"
4723  "the sensor can be included by this method. The weighing functions\n"
4724  "can be calculated in several ways:\n"
4725  " calcmode = \"recalc\": Recalculation of pencil beam spectra,\n"
4726  " shifted with *dza* from nominal values. A single-sided\n"
4727  " perturbation is applied (towards higher zenith angles).\n"
4728  " calcmode = \"interp\": Inter/extrapolation of existing pencil\n"
4729  " beam spectra. For this option, allow some extra margins for\n"
4730  " zenith angle grids, to avoid artifacts when extrapolating\n"
4731  " the data (to shifted zenith angles). The average of a\n"
4732  " negative and a positive shift is taken."
4733  "\n"
4734  "The interp option is recommended. It should in general be both\n"
4735  "faster and more accurate (due to the double sided disturbance).\n"
4736  "In addition, it is less sensitive to the choice of dza (as long\n"
4737  "as a small value is applied).\n"
4738  "\n"
4739  "The pointing off-set can be modelled to be time varying. The time\n"
4740  "variation is then described by a polynomial (with standard base\n"
4741  "functions). For example, a polynomial order of 0 means that the\n"
4742  "off-set is constant in time. If the off-set is totally uncorrelated\n"
4743  "between the spectra, set the order to -1.\n"
4744  ),
4745  AUTHORS( "Patrick Eriksson", "Mattias Ekstrom" ),
4746  OUT( "jacobian_quantities", "jacobian_agenda" ),
4747  GOUT(),
4748  GOUT_TYPE(),
4749  GOUT_DESC(),
4750  IN( "jacobian_quantities", "jacobian_agenda", "sensor_pos",
4751  "sensor_time" ),
4752  GIN( "poly_order", "calcmode", "dza" ),
4753  GIN_TYPE( "Index", "String", "Numeric" ),
4754  GIN_DEFAULT( "0", "recalc", "0.01" ),
4755  GIN_DESC( "Order of polynomial to describe the time variation of "
4756  "pointing off-sets.",
4757  "Calculation method. See above",
4758  "Size of perturbation to apply (when applicable)."
4759  )
4760  ));
4761 
4762  md_data_raw.push_back
4763  ( MdRecord
4764  ( NAME( "jacobianAddPolyfit" ),
4765  DESCRIPTION
4766  (
4767  "Includes polynomial baseline fit in the Jacobian.\n"
4768  "\n"
4769  "This method deals with retrieval of disturbances of the spectra\n"
4770  "that can be described by an addidative term, a baseline off-set.\n"
4771  "\n"
4772  "The baseline off-set is here modelled as a polynomial. The\n"
4773  "polynomial spans the complete frequency range spanned by\n"
4774  "*sensor_response_f_grid* and the method should only of interest for\n"
4775  "cases with no frequency gap in the spectra. The default assumption\n"
4776  "is that the off-set differs between all spectra, but it can also be\n"
4777  "assumed that the off-set is common for all e.g. line-of-sights.\n"
4778  ),
4779  AUTHORS( "Patrick Eriksson" ),
4780  OUT( "jacobian_quantities", "jacobian_agenda" ),
4781  GOUT(),
4782  GOUT_TYPE(),
4783  GOUT_DESC(),
4784  IN( "jacobian_quantities", "jacobian_agenda",
4785  "sensor_response_pol_grid", "sensor_response_f_grid",
4786  "sensor_response_za_grid", "sensor_pos" ),
4787  GIN( "poly_order", "no_pol_variation", "no_los_variation",
4788  "no_mblock_variation" ),
4789  GIN_TYPE( "Index", "Index", "Index", "Index" ),
4790  GIN_DEFAULT( NODEF, "0", "0", "0" ),
4791  GIN_DESC( "Polynomial order to use for the fit.",
4792  "Set to 1 if the baseline off-set is the same for all "
4793  "Stokes components.",
4794  "Set to 1 if the baseline off-set is the same for all "
4795  "line-of-sights (inside each measurement block).",
4796  "Set to 1 if the baseline off-set is the same for all "
4797  "measurement blocks."
4798  )
4799  ));
4800 
4801  md_data_raw.push_back
4802  ( MdRecord
4803  ( NAME( "jacobianAddTemperature" ),
4804  DESCRIPTION
4805  (
4806  "Includes atmospheric temperatures in the Jacobian.\n"
4807  "\n"
4808  "The calculations can be performed by (semi-)analytical expressions\n"
4809  "or by perturbations. Hydrostatic equilibrium (HSE) can be included.\n"
4810  "For perturbation calculations, all possible effects are included\n"
4811  "(but is a costly option). The analytical calculation approach\n"
4812  "neglects refraction totally, but considers the local effect of HSE.\n"
4813  "The later should be accaptable for observations around zenith and\n"
4814  "nadir. There is no warning if the method is applied incorrectly, \n"
4815  "with respect to these issues.\n"
4816  "\n"
4817  "The calculations (both options) assume that gas species are defined\n"
4818  "in VMR (a change in temperature then changes the number density). \n"
4819  "This has the consequence that retrieval of temperatures and number\n"
4820  "density can not be mixed. Neither any warning here!\n"
4821  "\n"
4822  "The choices for *method* are:\n"
4823  " \"analytical\" : (semi-)analytical expressions are used\n"
4824  " \"perturbation\" : pure numerical perturbations are used\n"
4825  ),
4826  AUTHORS( "Mattias Ekstrom", "Patrick Eriksson" ),
4827  OUT( "jacobian_quantities", "jacobian_agenda" ),
4828  GOUT(),
4829  GOUT_TYPE(),
4830  GOUT_DESC(),
4831  IN( "jacobian_quantities", "jacobian_agenda",
4832  "atmosphere_dim", "p_grid", "lat_grid", "lon_grid" ),
4833  GIN( "g1", "g2", "g3", "hse", "method", "dt" ),
4834  GIN_TYPE( "Vector", "Vector", "Vector", "String", "String", "Numeric" ),
4835  GIN_DEFAULT( NODEF, NODEF, NODEF, "off", "analytical", "1" ),
4836  GIN_DESC( "Pressure retrieval grid.",
4837  "Latitude retrieval grid.",
4838  "Longitude retreival grid.",
4839  "Flag to assume HSE or not (\"on\" or \"off\").",
4840  "Calculation method. See above.",
4841  "Size of perturbation [K]."
4842  )
4843  ));
4844 
4845  /*
4846  md_data_raw.push_back
4847  ( MdRecord
4848  ( NAME( "jacobianAddParticle" ),
4849  DESCRIPTION
4850  (
4851  "Add particle number density as retrieval quantity to the Jacobian.\n"
4852  "\n"
4853  "The Jacobian is done by perturbation calculation by adding elements\n"
4854  "of *pnd_field_perturb* to *pnd_field*. Only 1D and 3D atmospheres\n"
4855  "can be handled by this method.\n"
4856  "\n"
4857  "The perturbation field and the unit of it are defined outside ARTS.\n"
4858  "This method only returns the difference between the reference and\n"
4859  "perturbed spectra. The division by the size of the perturbation\n"
4860  "also has to be done outside ARTS.\n"
4861  "The unit of the particle jacobian is the same as for *y*.\n"
4862  "\n"
4863  "Generic input:\n"
4864  " Vector : The pressure grid of the retrieval field.\n"
4865  " Vector : The latitude grid of the retrieval field.\n"
4866  " Vector : The longitude grid of the retrieval field.\n"
4867  ),
4868  AUTHORS( "Mattias Ekstrom", "Patrick Eriksson" ),
4869  OUT( "jacobian_quantities", "jacobian_agenda" ),
4870  GOUT(),
4871  GOUT_TYPE(),
4872  GOUT_DESC(),
4873  IN( "jacobian", "atmosphere_dim", "p_grid", "lat_grid", "lon_grid",
4874  "pnd_field", "pnd_field_perturb", "cloudbox_limits" ),
4875  GIN( "gin1" , "gin2" , "gin3" ),
4876  GIN_TYPE( "Vector", "Vector", "Vector" ),
4877  GIN_DEFAULT( NODEF , NODEF , NODEF ),
4878  GIN_DESC( "FIXME DOC",
4879  "FIXME DOC",
4880  "FIXME DOC" )
4881  ));
4882  */
4883 
4884  md_data_raw.push_back
4885  ( MdRecord
4886  ( NAME( "jacobianCalcAbsSpeciesAnalytical" ),
4887  DESCRIPTION
4888  (
4889  "This function doesn't do anything. It just exists to satisfy\n"
4890  "the input and output requirement of the *jacobian_agenda*.\n"
4891  "\n"
4892  "This function is added to *jacobian_agenda* by\n"
4893  "jacobianAddAbsSpecies and should normally not be called\n"
4894  "by the user.\n"
4895  ),
4896  AUTHORS( "Oliver Lemke" ),
4897  OUT( "jacobian" ),
4898  GOUT(),
4899  GOUT_TYPE(),
4900  GOUT_DESC(),
4901  IN( "jacobian",
4902  "imblock", "iyb", "yb" ),
4903  GIN(),
4904  GIN_TYPE(),
4905  GIN_DEFAULT(),
4906  GIN_DESC()
4907  ));
4908 
4909  md_data_raw.push_back
4910  ( MdRecord
4911  ( NAME( "jacobianCalcAbsSpeciesPerturbations" ),
4912  DESCRIPTION
4913  (
4914  "Calculates absorption species jacobians by perturbations.\n"
4915  "\n"
4916  "This function is added to *jacobian_agenda* by\n"
4917  "jacobianAddAbsSpecies and should normally not be called\n"
4918  "by the user.\n"
4919  ),
4920  AUTHORS( "Mattias Ekstrom", "Patrick Eriksson" ),
4921  OUT( "jacobian" ),
4922  GOUT(),
4923  GOUT_TYPE(),
4924  GOUT_DESC(),
4925  IN( "jacobian",
4926  "imblock", "iyb", "yb", "atmosphere_dim", "p_grid", "lat_grid",
4927  "lon_grid", "t_field", "z_field", "vmr_field", "abs_species",
4928  "cloudbox_on", "stokes_dim",
4929  "f_grid", "sensor_pos", "sensor_los", "mblock_za_grid",
4930  "mblock_aa_grid", "antenna_dim", "sensor_response",
4931  "iy_clearsky_agenda", "y_unit", "jacobian_quantities",
4932  "jacobian_indices" ),
4933  GIN( "species" ),
4934  GIN_TYPE( "String" ),
4935  GIN_DEFAULT( NODEF ),
4936  GIN_DESC( "Species of interest." ),
4937  SETMETHOD( true )
4938  ));
4939 
4940  md_data_raw.push_back
4941  ( MdRecord
4942  ( NAME( "jacobianCalcFreqShiftAndStretchInterp" ),
4943  DESCRIPTION
4944  (
4945  "Calculates frequency shift and stretch jacobians by interpolation\n"
4946  "of *iyb*.\n"
4947  "\n"
4948  "This function is added to *jacobian_agenda* by\n"
4949  "jacobianAddFreqShiftAndStretch and should normally\n"
4950  "not be called by the user.\n"
4951  ),
4952  AUTHORS( "Patrick Eriksson" ),
4953  OUT( "jacobian" ),
4954  GOUT(),
4955  GOUT_TYPE(),
4956  GOUT_DESC(),
4957  IN( "jacobian",
4958  "imblock", "iyb", "yb", "stokes_dim", "f_grid", "mblock_za_grid",
4959  "mblock_aa_grid", "antenna_dim",
4960  "sensor_response", "sensor_response_pol_grid",
4961  "sensor_response_f_grid", "sensor_response_za_grid",
4962  "jacobian_quantities", "jacobian_indices" ),
4963  GIN(),
4964  GIN_TYPE(),
4965  GIN_DEFAULT(),
4966  GIN_DESC()
4967  ));
4968 
4969  md_data_raw.push_back
4970  ( MdRecord
4971  ( NAME( "jacobianCalcPointingZaInterp" ),
4972  DESCRIPTION
4973  (
4974  "Calculates zenith angle pointing deviation jacobians by\n"
4975  "inter-extrapolation of *iyb*.\n"
4976  "\n"
4977  "This function is added to *jacobian_agenda* by\n"
4978  "jacobianAddPointingZa and should normally not be\n"
4979  "called by the user.\n"
4980  ),
4981  AUTHORS( "Patrick Eriksson" ),
4982  OUT( "jacobian" ),
4983  GOUT(),
4984  GOUT_TYPE(),
4985  GOUT_DESC(),
4986  IN( "jacobian", "imblock", "iyb", "yb", "stokes_dim", "f_grid",
4987  "sensor_los", "mblock_za_grid", "mblock_aa_grid", "antenna_dim",
4988  "sensor_response", "sensor_time",
4989  "jacobian_quantities", "jacobian_indices" ),
4990  GIN(),
4991  GIN_TYPE(),
4992  GIN_DEFAULT(),
4993  GIN_DESC()
4994  ));
4995 
4996  md_data_raw.push_back
4997  ( MdRecord
4998  ( NAME( "jacobianCalcPointingZaRecalc" ),
4999  DESCRIPTION
5000  (
5001  "Calculates zenith angle pointing deviation jacobians by\n"
5002  "recalulation of *iyb*.\n"
5003  "\n"
5004  "This function is added to *jacobian_agenda* by\n"
5005  "jacobianAddPointingZa and should normally not be\n"
5006  "called by the user.\n"
5007  ),
5008  AUTHORS( "Mattias Ekstrom", "Patrick Eriksson" ),
5009  OUT( "jacobian" ),
5010  GOUT(),
5011  GOUT_TYPE(),
5012  GOUT_DESC(),
5013  IN( "jacobian",
5014  "imblock", "iyb", "yb", "atmosphere_dim", "p_grid", "lat_grid",
5015  "lon_grid", "t_field", "z_field", "vmr_field", "cloudbox_on",
5016  "stokes_dim", "f_grid", "sensor_pos", "sensor_los",
5017  "mblock_za_grid", "mblock_aa_grid", "antenna_dim",
5018  "sensor_response", "sensor_time",
5019  "iy_clearsky_agenda", "y_unit", "jacobian_quantities",
5020  "jacobian_indices" ),
5021  GIN(),
5022  GIN_TYPE(),
5023  GIN_DEFAULT(),
5024  GIN_DESC()
5025  ));
5026 
5027  md_data_raw.push_back
5028  ( MdRecord
5029  ( NAME( "jacobianCalcPolyfit" ),
5030  DESCRIPTION
5031  (
5032  "Calculates jacobians for polynomial baseline fit.\n"
5033  "\n"
5034  "This function is added to *jacobian_agenda* by jacobianAddPolyfit\n"
5035  "and should normally not be called by the user.\n"
5036  ),
5037  AUTHORS( "Patrick Eriksson" ),
5038  OUT( "jacobian" ),
5039  GOUT(),
5040  GOUT_TYPE(),
5041  GOUT_DESC(),
5042  IN( "jacobian", "imblock", "iyb", "yb", "sensor_response",
5043  "sensor_response_pol_grid", "sensor_response_f_grid",
5044  "sensor_response_za_grid",
5045  "jacobian_quantities", "jacobian_indices" ),
5046  GIN( "poly_coeff" ),
5047  GIN_TYPE( "Index" ),
5048  GIN_DEFAULT( NODEF ),
5049  GIN_DESC( "Polynomial coefficient to handle." ),
5050  SETMETHOD( true )
5051  ));
5052 
5053  md_data_raw.push_back
5054  ( MdRecord
5055  ( NAME( "jacobianCalcTemperatureAnalytical" ),
5056  DESCRIPTION
5057  (
5058  "This function doesn't do anything. It just exists to satisfy\n"
5059  "the input and output requirement of the *jacobian_agenda*.\n"
5060  "\n"
5061  "This function is added to *jacobian_agenda* by\n"
5062  "jacobianAddTemperature and should normally not be called\n"
5063  "by the user.\n"
5064  ),
5065  AUTHORS( "Oliver Lemke" ),
5066  OUT( "jacobian" ),
5067  GOUT(),
5068  GOUT_TYPE(),
5069  GOUT_DESC(),
5070  IN( "jacobian",
5071  "imblock", "iyb", "yb" ),
5072  GIN(),
5073  GIN_TYPE(),
5074  GIN_DEFAULT(),
5075  GIN_DESC()
5076  ));
5077 
5078  md_data_raw.push_back
5079  ( MdRecord
5080  ( NAME( "jacobianCalcTemperaturePerturbations" ),
5081  DESCRIPTION
5082  (
5083  "Calculates atmospheric temperature jacobians by perturbations.\n"
5084  "\n"
5085  "This function is added to *jacobian_agenda* by\n"
5086  "jacobianAddTemperature and should normally not be called\n"
5087  "by the user.\n"
5088  ),
5089  AUTHORS( "Mattias Ekstrom", "Patrick Eriksson" ),
5090  OUT( "jacobian" ),
5091  GOUT(),
5092  GOUT_TYPE(),
5093  GOUT_DESC(),
5094  IN( "jacobian",
5095  "imblock", "iyb", "yb", "atmosphere_dim", "p_grid", "lat_grid",
5096  "lon_grid", "t_field", "z_field", "vmr_field", "abs_species",
5097  "r_geoid", "z_surface", "cloudbox_on", "stokes_dim", "f_grid",
5098  "sensor_pos", "sensor_los", "mblock_za_grid", "mblock_aa_grid",
5099  "antenna_dim", "sensor_response", "iy_clearsky_agenda", "y_unit",
5100  "p_hse", "z_hse_accuracy",
5101  "jacobian_quantities", "jacobian_indices" ),
5102  GIN(),
5103  GIN_TYPE(),
5104  GIN_DEFAULT(),
5105  GIN_DESC()
5106  ));
5107 
5108 
5109  /*
5110  md_data_raw.push_back
5111  ( MdRecord
5112  ( NAME( "jacobianCalcParticle" ),
5113  DESCRIPTION
5114  (
5115  "Calculates particle number densities jacobians by perturbations\n"
5116  "\n"
5117  "This function is added to *jacobian_agenda* by jacobianAddParticle\n"
5118  "and should normally not be called by the user.\n"
5119  ),
5120  AUTHORS( "Mattias Ekstrom", "Patrick Eriksson" ),
5121  OUT( "jacobian" ),
5122  GOUT(),
5123  GOUT_TYPE(),
5124  GOUT_DESC(),
5125  IN( "y", "jacobian_quantities", "jacobian_indices", "pnd_field_perturb",
5126  "jacobian_particle_update_agenda",
5127  "ppath_step_agenda", "rte_agenda", "iy_space_agenda",
5128  "surface_prop_agenda", "iy_cloudbox_agenda", "atmosphere_dim",
5129  "p_grid", "lat_grid", "lon_grid", "z_field", "t_field", "vmr_field",
5130  "r_geoid", "z_surface",
5131  "cloudbox_on", "cloudbox_limits", "pnd_field",
5132  "sensor_response", "sensor_pos", "sensor_los", "f_grid",
5133  "stokes_dim", "antenna_dim", "mblock_za_grid", "mblock_aa_grid" ),
5134  GIN(),
5135  GIN_TYPE(),
5136  GIN_DEFAULT(),
5137  GIN_DESC()
5138  ));
5139 
5140  */
5141 
5142  md_data_raw.push_back
5143  ( MdRecord
5144  ( NAME( "jacobianClose" ),
5145  DESCRIPTION
5146  (
5147  "Closes the array of retrieval quantities and prepares for\n"
5148  "calculation of the Jacobian matrix.\n"
5149  "\n"
5150  "This function closes the *jacobian_quantities* array, sets the\n"
5151  "correct size of *jacobian* and sets *jacobian_do* to 1.\n"
5152  "\n"
5153  "Retrieval quantities should not be added after a call to this WSM.\n"
5154  "No calculations are performed here.\n"
5155  ),
5156  AUTHORS( "Mattias Ekstrom" ),
5157  OUT( "jacobian_do", "jacobian", "jacobian_indices", "jacobian_agenda" ),
5158  GOUT(),
5159  GOUT_TYPE(),
5160  GOUT_DESC(),
5161  IN( "jacobian_agenda", "jacobian_quantities", "sensor_pos", "sensor_response" ),
5162  GIN(),
5163  GIN_TYPE(),
5164  GIN_DEFAULT(),
5165  GIN_DESC()
5166  ));
5167 
5168  md_data_raw.push_back
5169  ( MdRecord
5170  ( NAME( "jacobianInit" ),
5171  DESCRIPTION
5172  (
5173  "Initialises the variables connected to the Jacobian matrix.\n"
5174  "\n"
5175  "This function initialises the *jacobian_quantities* array so\n"
5176  "that retrieval quantities can be added to it. Accordingly, it has\n"
5177  "to be called before any calls to jacobianAddTemperature or\n"
5178  "similar methods.\n"
5179  "\n"
5180  "The Jacobian quantities are initialised to be empty.\n"
5181  ),
5182  AUTHORS( "Mattias Ekstrom" ),
5183  OUT( "jacobian_quantities", "jacobian_agenda" ),
5184  GOUT(),
5185  GOUT_TYPE(),
5186  GOUT_DESC(),
5187  IN(),
5188  GIN(),
5189  GIN_TYPE(),
5190  GIN_DEFAULT(),
5191  GIN_DESC()
5192  ));
5193 
5194  md_data_raw.push_back
5195  ( MdRecord
5196  ( NAME( "jacobianOff" ),
5197  DESCRIPTION
5198  (
5199  "Makes mandatory initialisation of some jacobian variables.\n"
5200  "\n"
5201  "Some jacobian WSVs must be initilised even if no such calculations\n"
5202  "will be performed and this is handled with this method. That is,\n"
5203  "this method must be called when no jacobians will be calculated.\n"
5204  "Sets *jacobian_on* to 0.\n"
5205  ),
5206  AUTHORS( "Patrick Eriksson" ),
5207  OUT( "jacobian_do", "jacobian_agenda", "jacobian_quantities",
5208  "jacobian_indices" ),
5209  GOUT(),
5210  GOUT_TYPE(),
5211  GOUT_DESC(),
5212  IN(),
5213  GIN(),
5214  GIN_TYPE(),
5215  GIN_DEFAULT(),
5216  GIN_DESC()
5217  ));
5218 
5219  md_data_raw.push_back
5220  ( MdRecord
5221  ( NAME( "MatrixCBR" ),
5222  DESCRIPTION
5223  (
5224  "Sets a matrix to hold cosmic background radiation (CBR).\n"
5225  "\n"
5226  "The CBR is assumed to be un-polarized and Stokes components 2-4\n"
5227  "are zero. Number of Stokes components, that equals the number\n"
5228  "of columns in the created matrix, is determined by *stokes_dim*.\n"
5229  "The number of rows in the created matrix equals the length of the\n"
5230  "given frequency vector.\n"
5231  "\n"
5232  "The cosmic radiation is modelled as blackbody radiation for the\n"
5233  "temperature given by the global constant COSMIC_BG_TEMP, set in\n"
5234  "the file constants.cc. The frequencies are taken from the generic\n"
5235  "input vector.\n"
5236  "\n"
5237  "The standard definition, in ARTS, of the Planck function is\n"
5238  "followed and the unit of the returned data is W/(m3 * Hz * sr).\n"
5239  ),
5240  AUTHORS( "Patrick Eriksson" ),
5241  OUT(),
5242  GOUT( "m" ),
5243  GOUT_TYPE( "Matrix" ),
5244  GOUT_DESC( "Variable to initialize." ),
5245  IN( "stokes_dim" ),
5246  GIN( "f" ),
5247  GIN_TYPE( "Vector" ),
5248  GIN_DEFAULT( NODEF ),
5249  GIN_DESC( "Frequency vector." )
5250  ));
5251 
5252  md_data_raw.push_back
5253  ( MdRecord
5254  ( NAME( "MatrixMatrixMultiply" ),
5255  DESCRIPTION
5256  (
5257  "Multiply a Matrix with another Matrix and store the result in the result\n"
5258  "Matrix.\n"
5259  "\n"
5260  "This just computes the normal Matrix-Matrix product, Y=M*X. It is ok\n"
5261  "if Y and X are the same Matrix. This function is handy for\n"
5262  "multiplying the H Matrix to batch spectra.\n"
5263  ),
5264  AUTHORS( "Stefan Buehler" ),
5265  OUT(),
5266  GOUT( "gout1" ),
5267  GOUT_TYPE( "Matrix" ),
5268  GOUT_DESC( "The result of the multiplication (dimension mxc)." ),
5269  IN(),
5270  GIN( "gin1" , "gin2" ),
5271  GIN_TYPE( "Matrix", "Matrix" ),
5272  GIN_DEFAULT( NODEF , NODEF ),
5273  GIN_DESC( "The Matrix to multiply (dimension mxn).",
5274  "The original Matrix (dimension nxc)." )
5275  ));
5276 
5277  md_data_raw.push_back
5278  ( MdRecord
5279  ( NAME( "MatrixPlanck" ),
5280  DESCRIPTION
5281  (
5282  "Sets a matrix to hold blackbody radiation.\n"
5283  "\n"
5284  "The radiation is assumed to be un-polarized and Stokes components\n"
5285  "2-4 are zero. Number of Stokes components, that equals the number\n"
5286  "of columns in the created matrix, is determined by *stokes_dim*.\n"
5287  "The number of rows in the created matrix equals the length of the\n"
5288  "given frequency vector.\n"
5289  "\n"
5290  "The standard definition, in ARTS, of the Planck function is\n"
5291  "followed and the unit of the returned data is W/(m3 * Hz * sr).\n"
5292  ),
5293  AUTHORS( "Patrick Eriksson" ),
5294  OUT(),
5295  GOUT( "m" ),
5296  GOUT_TYPE( "Matrix" ),
5297  GOUT_DESC( "Variable to initialize." ),
5298  IN( "stokes_dim" ),
5299  GIN( "gin1" , "gin2" ),
5300  GIN_TYPE( "Vector", "Numeric" ),
5301  GIN_DEFAULT( NODEF , NODEF ),
5302  GIN_DESC( "Frequency vector.",
5303  "Temperature [K]." )
5304  ));
5305 
5306  md_data_raw.push_back
5307  ( MdRecord
5308  ( NAME( "MatrixScale" ),
5309  DESCRIPTION
5310  (
5311  "Scales all elements of a matrix with the specified value.\n"
5312  "\n"
5313  "The result can either be stored in the same or another\n"
5314  "variable.\n"
5315  ),
5316  AUTHORS( "Patrick Eriksson" ),
5317  OUT(),
5318  GOUT( "mout" ),
5319  GOUT_TYPE( "Matrix" ),
5320  GOUT_DESC( "Output matrix" ),
5321  IN(),
5322  GIN( "min" , "value" ),
5323  GIN_TYPE( "Matrix", "Numeric" ),
5324  GIN_DEFAULT( NODEF , NODEF ),
5325  GIN_DESC( "Input matrix.",
5326  "The value to be multiplied with the matrix."
5327  )
5328  ));
5329 
5330  md_data_raw.push_back
5331  ( MdRecord
5332  ( NAME( "MatrixSetConstant" ),
5333  DESCRIPTION
5334  (
5335  "Creates a matrix and sets all elements to the specified value.\n"
5336  "\n"
5337  "The size is determined by *ncols* and *nrows*.\n"
5338  ),
5339  AUTHORS( "Patrick Eriksson" ),
5340  OUT(),
5341  GOUT( "m" ),
5342  GOUT_TYPE( "Matrix" ),
5343  GOUT_DESC( "Variable to initialize." ),
5344  IN( "nrows", "ncols" ),
5345  GIN( "value" ),
5346  GIN_TYPE( "Numeric" ),
5347  GIN_DEFAULT( NODEF ),
5348  GIN_DESC( "Matrix value." )
5349  ));
5350 
5351  md_data_raw.push_back
5352  ( MdRecord
5353  ( NAME( "MatrixSet" ),
5354  DESCRIPTION
5355  (
5356  "Create a Matrix from the given list of numbers.\n"
5357  "\n"
5358  "Usage:\n"
5359  " MatrixSet(m1, [1, 2, 3; 4, 5, 6])\n"
5360  ),
5361  AUTHORS( "Oliver Lemke" ),
5362  OUT(),
5363  GOUT( "gout1" ),
5364  GOUT_TYPE( "Matrix" ),
5365  GOUT_DESC( "The newly created matrix" ),
5366  IN(),
5367  GIN( "values" ),
5368  GIN_TYPE( "Matrix" ),
5369  GIN_DEFAULT( NODEF ),
5370  GIN_DESC( "The values of the newly created matrix. Elements are separated "
5371  "by commas, rows by semicolons."),
5372  SETMETHOD( true )
5373  ));
5374 
5375  md_data_raw.push_back
5376  ( MdRecord
5377  ( NAME( "MatrixUnitIntensity" ),
5378  DESCRIPTION
5379  (
5380  "Sets a matrix to hold unpolarised radiation with unit intensity.\n"
5381  "\n"
5382  "Works as MatrixPlanck where the radiation is set to 1.\n"
5383  ),
5384  AUTHORS( "Patrick Eriksson" ),
5385  OUT(),
5386  GOUT( "m" ),
5387  GOUT_TYPE( "Matrix" ),
5388  GOUT_DESC( "Variable to initialize." ),
5389  IN( "stokes_dim" ),
5390  GIN( "f" ),
5391  GIN_TYPE( "Vector" ),
5392  GIN_DEFAULT( NODEF ),
5393  GIN_DESC( "Frequency vector." )
5394  ));
5395 
5396  md_data_raw.push_back
5397  ( MdRecord
5398  ( NAME( "Matrix1ColFromVector" ),
5399  DESCRIPTION
5400  (
5401  "Forms a matrix containing one column from a vector.\n"
5402  ),
5403  AUTHORS( "Mattias Ekstrom" ),
5404  OUT(),
5405  GOUT( "m" ),
5406  GOUT_TYPE( "Matrix" ),
5407  GOUT_DESC( "Variable to initialize." ),
5408  IN(),
5409  GIN( "v" ),
5410  GIN_TYPE( "Vector" ),
5411  GIN_DEFAULT( NODEF ),
5412  GIN_DESC( "The vector to be copied." )
5413  ));
5414 
5415  md_data_raw.push_back
5416  ( MdRecord
5417  ( NAME( "Matrix2ColFromVectors" ),
5418  DESCRIPTION
5419  (
5420  "Forms a matrix containing two columns from two vectors.\n"
5421  "\n"
5422  "The vectors are included as columns in the matrix in the same order\n"
5423  "as they are given.\n"
5424  ),
5425  AUTHORS( "Mattias Ekstrom" ),
5426  OUT(),
5427  GOUT( "m" ),
5428  GOUT_TYPE( "Matrix" ),
5429  GOUT_DESC( "Variable to initialize." ),
5430  IN(),
5431  GIN( "v1" , "v2" ),
5432  GIN_TYPE( "Vector", "Vector" ),
5433  GIN_DEFAULT( NODEF , NODEF ),
5434  GIN_DESC( "The vector to be copied into the first column.",
5435  "The vector to be copied into the second column."
5436  )
5437  ));
5438 
5439  md_data_raw.push_back
5440  ( MdRecord
5441  ( NAME( "Matrix3ColFromVectors" ),
5442  DESCRIPTION
5443  (
5444  "Forms a matrix containing three columns from three vectors.\n"
5445  "\n"
5446  "The vectors are included as columns in the matrix in the same order\n"
5447  "as they are given.\n"
5448  ),
5449  AUTHORS( "Mattias Ekstrom" ),
5450  OUT(),
5451  GOUT( "m" ),
5452  GOUT_TYPE( "Matrix" ),
5453  GOUT_DESC( "Variable to initialize." ),
5454  IN(),
5455  GIN( "v1" , "v2" , "v3" ),
5456  GIN_TYPE( "Vector", "Vector", "Vector" ),
5457  GIN_DEFAULT( NODEF , NODEF , NODEF ),
5458  GIN_DESC( "The vector to be copied into the first column.",
5459  "The vector to be copied into the second column.",
5460  "The vector to be copied into the third column."
5461  )
5462  ));
5463 
5464  md_data_raw.push_back
5465  ( MdRecord
5466  ( NAME( "MatrixCompare" ),
5467  DESCRIPTION
5468  (
5469  "Checks the deviation between two matrices.\n"
5470  "\n"
5471  "The method was implemented having jacobian matrices in mind, but\n"
5472  "can be applied on any matrices.\n"
5473  "\n"
5474  "It is checked if the maximum absolute difference is below the given\n"
5475  "limit.\n"
5476  ),
5477  AUTHORS( "Patrick Eriksson" ),
5478  OUT(),
5479  GOUT(),
5480  GOUT_TYPE(),
5481  GOUT_DESC(),
5482  IN( ),
5483  GIN( "matrix1", "matrix2", "maxabsdiff" ),
5484  GIN_TYPE( "Matrix", "Matrix", "Numeric" ),
5485  GIN_DEFAULT( NODEF, NODEF, "0.01" ),
5486  GIN_DESC( "A first jacobian matrix", "A second jacobian matrix",
5487  "Threshold for maximum absolute difference." )
5488  ));
5489 
5490  md_data_raw.push_back
5491  ( MdRecord
5492  ( NAME( "Matrix1RowFromVector" ),
5493  DESCRIPTION
5494  (
5495  "Forms a matrix containing one row from a vector.\n"
5496  ),
5497  AUTHORS( "Mattias Ekstrom" ),
5498  OUT(),
5499  GOUT( "m" ),
5500  GOUT_TYPE( "Matrix" ),
5501  GOUT_DESC( "Variable to initialize." ),
5502  IN(),
5503  GIN( "v" ),
5504  GIN_TYPE( "Vector" ),
5505  GIN_DEFAULT( NODEF ),
5506  GIN_DESC( "The vector to be copied." )
5507  ));
5508 
5509  md_data_raw.push_back
5510  ( MdRecord
5511  ( NAME( "Matrix2RowFromVectors" ),
5512  DESCRIPTION
5513  (
5514  "Forms a matrix containing two rows from two vectors.\n"
5515  "\n"
5516  "The vectors are included as rows in the matrix in the same order\n"
5517  "as they are given.\n"
5518  ),
5519  AUTHORS( "Mattias Ekstrom" ),
5520  OUT(),
5521  GOUT( "m" ),
5522  GOUT_TYPE( "Matrix" ),
5523  GOUT_DESC( "Variable to initialize." ),
5524  IN(),
5525  GIN( "v1" , "v2" ),
5526  GIN_TYPE( "Vector", "Vector" ),
5527  GIN_DEFAULT( NODEF , NODEF ),
5528  GIN_DESC( "The vector to be copied into the first row.",
5529  "The vector to be copied into the second row."
5530  )
5531  ));
5532 
5533  md_data_raw.push_back
5534  ( MdRecord
5535  ( NAME( "Matrix3RowFromVectors" ),
5536  DESCRIPTION
5537  (
5538  "Forms a matrix containing three rows from three vectors.\n"
5539  "\n"
5540  "The vectors are included as rows in the matrix in the same order\n"
5541  "as they are given.\n"
5542  ),
5543  AUTHORS( "Mattias Ekstrom" ),
5544  OUT(),
5545  GOUT( "m" ),
5546  GOUT_TYPE( "Matrix" ),
5547  GOUT_DESC( "Variable to initialize." ),
5548  IN(),
5549  GIN( "v1" , "v2" , "v3" ),
5550  GIN_TYPE( "Vector", "Vector", "Vector" ),
5551  GIN_DEFAULT( NODEF , NODEF , NODEF ),
5552  GIN_DESC( "The vector to be copied into the first row.",
5553  "The vector to be copied into the second row.",
5554  "The vector to be copied into the third row."
5555  )
5556  ));
5557 
5558  md_data_raw.push_back
5559  ( MdRecord
5560  ( NAME( "mc_antennaSetGaussian" ),
5561  DESCRIPTION
5562  (
5563  "Makes mc_antenna (used by MCGeneral) a 2D Gaussian pattern.\n"
5564  "\n"
5565  "The gaussian antenna pattern is determined by *za_sigma* and\n"
5566  "*aa_sigma*, which represent the standard deviations in the\n"
5567  "uncorrelated bivariate normal distribution.\n"
5568  ),
5569  AUTHORS( "Cory Davis" ),
5570  OUT( "mc_antenna" ),
5571  GOUT(),
5572  GOUT_TYPE(),
5573  GOUT_DESC(),
5574  IN(),
5575  GIN( "za_sigma", "aa_sigma" ),
5576  GIN_TYPE( "Numeric", "Numeric" ),
5577  GIN_DEFAULT( NODEF, NODEF ),
5578  GIN_DESC( "Width in the zenith angle dimension as described above.",
5579  "Width in the azimuth angle dimension as described above."
5580  )
5581  ));
5582 
5583  md_data_raw.push_back
5584  ( MdRecord
5585  ( NAME( "mc_antennaSetGaussianByFWHM" ),
5586  DESCRIPTION
5587  (
5588  "Makes mc_antenna (used by MCGeneral) a 2D Gaussian pattern.\n"
5589  "\n"
5590  "The gaussian antenna pattern is determined by *za_fwhm* and\n"
5591  "*aa_fwhm*, which represent the full width half maximum (FWHM)\n"
5592  "of the antenna response, in the zenith and azimuthal planes.\n"
5593  ),
5594  AUTHORS( "Cory Davis" ),
5595  OUT( "mc_antenna" ),
5596  GOUT(),
5597  GOUT_TYPE(),
5598  GOUT_DESC(),
5599  IN(),
5600  GIN( "za_fwhm", "aa_fwhm" ),
5601  GIN_TYPE( "Numeric", "Numeric" ),
5602  GIN_DEFAULT( NODEF, NODEF ),
5603  GIN_DESC( "Width in the zenith angle dimension as described above.",
5604  "Width in the azimuth angle dimension as described above."
5605  )
5606  ));
5607 
5608  md_data_raw.push_back
5609  ( MdRecord
5610  ( NAME( "mc_antennaSetPencilBeam" ),
5611  DESCRIPTION
5612  (
5613  "Makes mc_antenna (used by MCGeneral) a pencil beam.\n"
5614  "\n"
5615  "This WSM makes the subsequent MCGeneral WSM perform pencil beam\n"
5616  "RT calculations.\n"
5617  ),
5618  AUTHORS( "Cory Davis" ),
5619  OUT( "mc_antenna" ),
5620  GOUT(),
5621  GOUT_TYPE(),
5622  GOUT_DESC(),
5623  IN(),
5624  GIN(),
5625  GIN_TYPE(),
5626  GIN_DEFAULT(),
5627  GIN_DESC()
5628  ));
5629 
5630  md_data_raw.push_back
5631  ( MdRecord
5632  ( NAME( "mc_IWP_cloud_opt_pathCalc" ),
5633  DESCRIPTION
5634  (
5635  "Calculates the FOV averaged ice water path and cloud optical path\n"
5636  "for a given viewing direction\n"
5637  ),
5638  AUTHORS( "Cory Davis" ),
5639  OUT( "mc_IWP", "mc_cloud_opt_path", "mc_IWP_error",
5640  "mc_cloud_opt_path_error", "mc_iteration_count" ),
5641  GOUT(),
5642  GOUT_TYPE(),
5643  GOUT_DESC(),
5644  IN( "mc_antenna", "sensor_pos", "sensor_los", "ppath_step_agenda",
5645  "p_grid", "lat_grid", "lon_grid", "r_geoid", "z_surface",
5646  "z_field", "t_field", "vmr_field", "cloudbox_limits", "pnd_field",
5647  "scat_data_mono", "particle_masses", "mc_seed" ),
5648  GIN( "max_iter" ),
5649  GIN_TYPE( "Index" ),
5650  GIN_DEFAULT( NODEF ),
5651  GIN_DESC( "Maximum number of iterations." )
5652  ));
5653 
5654  md_data_raw.push_back
5655  ( MdRecord
5656  ( NAME( "MCGeneral" ),
5657  DESCRIPTION
5658  ( "A generalised 3D reversed Monte Carlo radiative algorithm, that\n"
5659  "allows for 2D antenna patterns, surface reflection and arbitrary\n"
5660  "sensor positions.\n"
5661  "\n"
5662  "The main output variables *y* and *mc_error* represent the\n"
5663  "Stokes vector integrated over the antenna function, and the\n"
5664  "estimated error in this vector respectively.\n"
5665  "\n"
5666  "The WSV *mc_max_iter* describes the number of `photons\'\n"
5667  "used in the simulation (more photons means smaller *mc_error*).\n"
5668  "*mc_std_err* is the desired value of mc_error. *mc_max_time* is\n"
5669  "the maximum allowed number of seconds for MCGeneral. The method\n"
5670  "will terminate once any of the max_iter, std_err, max_time\n"
5671  "criteria are met. If negative values are given for these\n"
5672  " parameters then it isignored.\n"
5673  "\n"
5674  "Negative values of *mc_seed* seed the random number generator\n"
5675  "according to system time, positive *mc_seed* values are taken\n"
5676  "literally.\n" ),
5677  AUTHORS( "Cory Davis" ),
5678  OUT( "y", "mc_iteration_count", "mc_error", "mc_points" ),
5679  GOUT(),
5680  GOUT_TYPE(),
5681  GOUT_DESC(),
5682  IN( "mc_antenna", "f_grid", "f_index", "sensor_pos", "sensor_los",
5683  "stokes_dim", "atmosphere_dim", "iy_space_agenda", "surface_prop_agenda",
5684  "opt_prop_gas_agenda", "abs_scalar_gas_agenda", "p_grid",
5685  "lat_grid", "lon_grid", "z_field", "r_geoid", "z_surface",
5686  "t_field", "vmr_field", "cloudbox_on", "cloudbox_limits",
5687  "pnd_field", "scat_data_mono", "basics_checked", "cloudbox_checked",
5688  "mc_seed", "y_unit",
5689  "mc_std_err", "mc_max_time", "mc_max_iter"),//, "mc_z_field_is_1D" ),
5690  GIN(),
5691  GIN_TYPE(),
5692  GIN_DEFAULT(),
5693  GIN_DESC()
5694  ));
5695 
5696  md_data_raw.push_back
5697  ( MdRecord
5698  ( NAME( "MCIPA" ),
5699  DESCRIPTION
5700  ( "A specialised 3D reversed Monte Carlo radiative algorithm, that\n"
5701  "mimics independent pixel appoximation simulations.\n"
5702  ),
5703  AUTHORS( "Cory Davis" ),
5704  OUT( "y", "mc_iteration_count", "mc_error", "mc_points" ),
5705  GOUT(),
5706  GOUT_TYPE(),
5707  GOUT_DESC(),
5708  IN( "mc_antenna", "f_grid", "f_index", "sensor_pos", "sensor_los",
5709  "stokes_dim", "atmosphere_dim", "iy_space_agenda", "surface_prop_agenda",
5710  "opt_prop_gas_agenda", "abs_scalar_gas_agenda", "ppath_step_agenda",
5711  "p_grid", "lat_grid", "lon_grid", "z_field", "r_geoid", "z_surface",
5712  "t_field", "vmr_field", "cloudbox_limits", "pnd_field",
5713  "scat_data_mono", "mc_seed", "y_unit",
5714  "mc_std_err", "mc_max_time", "mc_max_iter", "mc_z_field_is_1D" ),
5715  GIN(),
5716  GIN_TYPE(),
5717  GIN_DEFAULT(),
5718  GIN_DESC()
5719  ));
5720 
5721  md_data_raw.push_back
5722  ( MdRecord
5723  ( NAME( "MCSetSeedFromTime" ),
5724  DESCRIPTION
5725  ( "Sets the value of mc_seed from system time\n" ),
5726  AUTHORS( "Cory Davis" ),
5727  OUT( "mc_seed" ),
5728  GOUT(),
5729  GOUT_TYPE(),
5730  GOUT_DESC(),
5731  IN(),
5732  GIN(),
5733  GIN_TYPE(),
5734  GIN_DEFAULT(),
5735  GIN_DESC()
5736  ));
5737 
5738  md_data_raw.push_back
5739  ( MdRecord
5740  ( NAME( "NumericAdd" ),
5741  DESCRIPTION
5742  (
5743  "Adds a numeric and a value (b = a+v).\n"
5744  "\n"
5745  "The result can either be stored in the same or another numeric.\n"
5746  "(a and b can be the same varible, but not b and v)\n"
5747  ),
5748  AUTHORS( "Patrick Eriksson" ),
5749  OUT(),
5750  GOUT( "b" ),
5751  GOUT_TYPE( "Numeric" ),
5752  GOUT_DESC( "Output numeric." ),
5753  IN(),
5754  GIN( "a" ,
5755  "v" ),
5756  GIN_TYPE( "Numeric",
5757  "Numeric" ),
5758  GIN_DEFAULT( NODEF ,
5759  NODEF ),
5760  GIN_DESC( "Input numeric.",
5761  "Value to add." )
5762  ));
5763 
5764  md_data_raw.push_back
5765  ( MdRecord
5766  ( NAME( "NumericScale" ),
5767  DESCRIPTION
5768  (
5769  "Scales/multiplies a numeric with a value (b = a*v).\n"
5770  "\n"
5771  "The result can either be stored in the same or another numeric.\n"
5772  "(a and b can be the same varible, but not b and v)\n"
5773  ),
5774  AUTHORS( "Patrick Eriksson" ),
5775  OUT(),
5776  GOUT( "b" ),
5777  GOUT_TYPE( "Numeric" ),
5778  GOUT_DESC( "Output numeric." ),
5779  IN(),
5780  GIN( "a" ,
5781  "v" ),
5782  GIN_TYPE( "Numeric",
5783  "Numeric" ),
5784  GIN_DEFAULT( NODEF ,
5785  NODEF ),
5786  GIN_DESC( "Input numeric.",
5787  "Scaling value." )
5788  ));
5789 
5790  md_data_raw.push_back
5791  ( MdRecord
5792  ( NAME( "NumericSet" ),
5793  DESCRIPTION
5794  (
5795  "Sets a numeric workspace variable to the given value.\n"
5796  ),
5797  AUTHORS( "Patrick Eriksson" ),
5798  OUT(),
5799  GOUT( "n" ),
5800  GOUT_TYPE( "Numeric" ),
5801  GOUT_DESC( "Variable to initialize." ),
5802  IN(),
5803  GIN( "value" ),
5804  GIN_TYPE( "Numeric" ),
5805  GIN_DEFAULT( NODEF ),
5806  GIN_DESC( "The value." ),
5807  SETMETHOD( true )
5808  ));
5809 
5810  md_data_raw.push_back
5811  ( MdRecord
5812  ( NAME( "nelemGet" ),
5813  DESCRIPTION
5814  (
5815  "Retrieve nelem from given variable and store the value in the\n"
5816  "workspace variable *nelem*\n"
5817  ),
5818  AUTHORS( "Oliver Lemke" ),
5819  OUT( "nelem" ),
5820  GOUT(),
5821  GOUT_TYPE(),
5822  GOUT_DESC(),
5823  IN(),
5824  GIN( "v" ),
5825  GIN_TYPE( ARRAY_GROUPS + ", Vector" ),
5826  GIN_DEFAULT( NODEF ),
5827  GIN_DESC( "Variable to get the number of elements from." ),
5828  SETMETHOD( false ),
5829  AGENDAMETHOD( false ),
5830  SUPPRESSHEADER( true )
5831  ));
5832 
5833  md_data_raw.push_back
5834  ( MdRecord
5835  ( NAME( "ncolsGet" ),
5836  DESCRIPTION
5837  (
5838  "Retrieve ncols from given variable and store the value in the\n"
5839  "workspace variable *ncols*\n"
5840  ),
5841  AUTHORS( "Oliver Lemke" ),
5842  OUT( "ncols" ),
5843  GOUT(),
5844  GOUT_TYPE(),
5845  GOUT_DESC(),
5846  IN(),
5847  GIN( "v" ),
5848  GIN_TYPE( "Matrix, Sparse, Tensor3, Tensor4, Tensor5, Tensor6, Tensor7" ),
5849  GIN_DEFAULT( NODEF ),
5850  GIN_DESC( "Variable to get the number of columns from." ),
5851  SETMETHOD( false ),
5852  AGENDAMETHOD( false ),
5853  SUPPRESSHEADER( true )
5854  ));
5855 
5856  md_data_raw.push_back
5857  ( MdRecord
5858  ( NAME( "nrowsGet" ),
5859  DESCRIPTION
5860  (
5861  "Retrieve nrows from given variable and store the value in the\n"
5862  "workspace variable *nrows*\n"
5863  ),
5864  AUTHORS( "Oliver Lemke" ),
5865  OUT( "nrows" ),
5866  GOUT(),
5867  GOUT_TYPE(),
5868  GOUT_DESC(),
5869  IN(),
5870  GIN( "v" ),
5871  GIN_TYPE( "Matrix, Sparse, Tensor3, Tensor4, Tensor5, Tensor6, Tensor7" ),
5872  GIN_DEFAULT( NODEF ),
5873  GIN_DESC( "Variable to get the number of rows from." ),
5874  SETMETHOD( false ),
5875  AGENDAMETHOD( false ),
5876  SUPPRESSHEADER( true )
5877  ));
5878 
5879  md_data_raw.push_back
5880  ( MdRecord
5881  ( NAME( "npagesGet" ),
5882  DESCRIPTION
5883  (
5884  "Retrieve npages from given variable and store the value in the\n"
5885  "workspace variable *npages*\n"
5886  ),
5887  AUTHORS( "Oliver Lemke" ),
5888  OUT( "npages" ),
5889  GOUT(),
5890  GOUT_TYPE(),
5891  GOUT_DESC(),
5892  IN(),
5893  GIN( "v" ),
5894  GIN_TYPE( "Tensor3, Tensor4, Tensor5, Tensor6, Tensor7" ),
5895  GIN_DEFAULT( NODEF ),
5896  GIN_DESC( "Variable to get the number of pages from." ),
5897  SETMETHOD( false ),
5898  AGENDAMETHOD( false ),
5899  SUPPRESSHEADER( true )
5900  ));
5901 
5902  md_data_raw.push_back
5903  ( MdRecord
5904  ( NAME( "nbooksGet" ),
5905  DESCRIPTION
5906  (
5907  "Retrieve nbooks from given variable and store the value in the\n"
5908  "workspace variable *nbooks*\n"
5909  ),
5910  AUTHORS( "Oliver Lemke" ),
5911  OUT( "nbooks" ),
5912  GOUT(),
5913  GOUT_TYPE(),
5914  GOUT_DESC(),
5915  IN(),
5916  GIN( "v" ),
5917  GIN_TYPE( "Tensor4, Tensor5, Tensor6, Tensor7" ),
5918  GIN_DEFAULT( NODEF ),
5919  GIN_DESC( "Variable to get the number of books from." ),
5920  SETMETHOD( false ),
5921  AGENDAMETHOD( false ),
5922  SUPPRESSHEADER( true )
5923  ));
5924 
5925  md_data_raw.push_back
5926  ( MdRecord
5927  ( NAME( "nshelvesGet" ),
5928  DESCRIPTION
5929  (
5930  "Retrieve nshelves from given variable and store the value in the\n"
5931  "workspace variable *nshelves*\n"
5932  ),
5933  AUTHORS( "Oliver Lemke" ),
5934  OUT( "nshelves" ),
5935  GOUT(),
5936  GOUT_TYPE(),
5937  GOUT_DESC(),
5938  IN(),
5939  GIN( "v" ),
5940  GIN_TYPE( "Tensor5, Tensor6, Tensor7" ),
5941  GIN_DEFAULT( NODEF ),
5942  GIN_DESC( "Variable to get the number of shelves from." ),
5943  SETMETHOD( false ),
5944  AGENDAMETHOD( false ),
5945  SUPPRESSHEADER( true )
5946  ));
5947 
5948  md_data_raw.push_back
5949  ( MdRecord
5950  ( NAME( "nvitrinesGet" ),
5951  DESCRIPTION
5952  (
5953  "Retrieve nvitrines from given variable and store the value in the\n"
5954  "workspace variable *nvitrines*\n"
5955  ),
5956  AUTHORS( "Oliver Lemke" ),
5957  OUT( "nvitrines" ),
5958  GOUT(),
5959  GOUT_TYPE(),
5960  GOUT_DESC(),
5961  IN(),
5962  GIN( "v" ),
5963  GIN_TYPE( "Tensor6, Tensor7" ),
5964  GIN_DEFAULT( NODEF ),
5965  GIN_DESC( "Variable to get the number of vitrines from." ),
5966  SETMETHOD( false ),
5967  AGENDAMETHOD( false ),
5968  SUPPRESSHEADER( true )
5969  ));
5970 
5971  md_data_raw.push_back
5972  ( MdRecord
5973  ( NAME( "nlibrariesGet" ),
5974  DESCRIPTION
5975  (
5976  "Retrieve nlibraries from given variable and store the value in the\n"
5977  "workspace variable *nlibraries*\n"
5978  ),
5979  AUTHORS( "Oliver Lemke" ),
5980  OUT( "nlibraries" ),
5981  GOUT(),
5982  GOUT_TYPE(),
5983  GOUT_DESC(),
5984  IN(),
5985  GIN( "v" ),
5986  GIN_TYPE( "Tensor7" ),
5987  GIN_DEFAULT( NODEF ),
5988  GIN_DESC( "Variable to get the number of libraries from." ),
5989  SETMETHOD( false ),
5990  AGENDAMETHOD( false ),
5991  SUPPRESSHEADER( true )
5992  ));
5993 
5994  md_data_raw.push_back
5995  ( MdRecord
5996  ( NAME( "opt_prop_sptFromData" ),
5997  DESCRIPTION
5998  (
5999  "Calculates opticle properties for the single particle types.\n"
6000  "\n"
6001  "In this function the extinction matrix and the absorption vector\n"
6002  "are calculated in the laboratory frame. An interpolation of the\n"
6003  "data on the actual frequency is the first step in this function.\n"
6004  "The next step is a transformation from the database coordinate\n"
6005  "system to the laboratory coordinate system.\n"
6006  "\n"
6007  "Output of the function are *ext_mat_spt* and *abs_vec_spt* which\n"
6008  "hold the optical properties for a specified propagation direction\n"
6009  "for each particle type.\n"
6010  ),
6011  AUTHORS( "Claudia Emde" ),
6012  OUT( "ext_mat_spt", "abs_vec_spt" ),
6013  GOUT(),
6014  GOUT_TYPE(),
6015  GOUT_DESC(),
6016  IN( "ext_mat_spt", "abs_vec_spt", "scat_data_raw", "scat_za_grid",
6017  "scat_aa_grid", "scat_za_index", "scat_aa_index",
6018  "f_index", "f_grid", "rte_temperature",
6019  "pnd_field", "scat_p_index", "scat_lat_index", "scat_lon_index" ),
6020  GIN(),
6021  GIN_TYPE(),
6022  GIN_DEFAULT(),
6023  GIN_DESC()
6024  ));
6025 
6026  md_data_raw.push_back
6027  ( MdRecord
6028  ( NAME( "opt_prop_sptFromMonoData" ),
6029  DESCRIPTION
6030  (
6031  "Calculates optical properties for the single particle types.\n"
6032  "\n"
6033  "As *opt_prop_sptFromData* but no frequency interpolation is\n"
6034  "performed. The single scattering data is here obtained from\n"
6035  "*scat_data_mono*, instead of *scat_data_raw*.\n"
6036  ),
6037  AUTHORS( "Cory Davis" ),
6038  OUT( "ext_mat_spt", "abs_vec_spt" ),
6039  GOUT(),
6040  GOUT_TYPE(),
6041  GOUT_DESC(),
6042  IN( "ext_mat_spt", "abs_vec_spt", "scat_data_mono", "scat_za_grid",
6043  "scat_aa_grid", "scat_za_index", "scat_aa_index", "rte_temperature",
6044  "pnd_field", "scat_p_index", "scat_lat_index", "scat_lon_index" ),
6045  GIN(),
6046  GIN_TYPE(),
6047  GIN_DEFAULT(),
6048  GIN_DESC()
6049  ));
6050 
6051  md_data_raw.push_back
6052  ( MdRecord
6053  ( NAME( "output_file_formatSetAscii" ),
6054  DESCRIPTION
6055  (
6056  "Sets the output file format to ASCII.\n"
6057  ),
6058  AUTHORS( "Oliver Lemke" ),
6059  OUT( "output_file_format" ),
6060  GOUT(),
6061  GOUT_TYPE(),
6062  GOUT_DESC(),
6063  IN(),
6064  GIN(),
6065  GIN_TYPE(),
6066  GIN_DEFAULT(),
6067  GIN_DESC()
6068  ));
6069 
6070  md_data_raw.push_back
6071  ( MdRecord
6072  ( NAME( "output_file_formatSetBinary" ),
6073  DESCRIPTION
6074  (
6075  "Sets the output file format to binary.\n"
6076  ),
6077  AUTHORS( "Oliver Lemke" ),
6078  OUT( "output_file_format" ),
6079  GOUT(),
6080  GOUT_TYPE(),
6081  GOUT_DESC(),
6082  IN(),
6083  GIN(),
6084  GIN_TYPE(),
6085  GIN_DEFAULT(),
6086  GIN_DESC()
6087  ));
6088 
6089  md_data_raw.push_back
6090  ( MdRecord
6091  ( NAME( "output_file_formatSetZippedAscii" ),
6092  DESCRIPTION
6093  (
6094  "Sets the output file format to zipped ASCII.\n"
6095  ),
6096  AUTHORS( "Oliver Lemke" ),
6097  OUT( "output_file_format" ),
6098  GOUT(),
6099  GOUT_TYPE(),
6100  GOUT_DESC(),
6101  IN(),
6102  GIN(),
6103  GIN_TYPE(),
6104  GIN_DEFAULT(),
6105  GIN_DESC()
6106  ));
6107 
6108  md_data_raw.push_back
6109  ( MdRecord
6110  ( NAME( "ParticleSpeciesInit" ),
6111  DESCRIPTION
6112  (
6113  "Initializes empty *part_species* array.\n"
6114  ),
6115  AUTHORS( "Daniel Kreyling" ),
6116  OUT( "part_species" ),
6117  GOUT(),
6118  GOUT_TYPE(),
6119  GOUT_DESC(),
6120  IN(),
6121  GIN(),
6122  GIN_TYPE(),
6123  GIN_DEFAULT(),
6124  GIN_DESC()
6125  ));
6126 
6127 
6128  md_data_raw.push_back
6129  ( MdRecord
6130  ( NAME( "ParticleSpeciesSet" ),
6131  DESCRIPTION
6132  (
6133  "With this function, the user specifies settings for the \n"
6134  "particle number density calculations using *pnd_fieldSetup*.\n"
6135  "The input is an ArrayOfString that needs to be in a specific format:\n"
6136  "\n"
6137  "*Example:* \t ['IWC-MH97-0.1-200', 'LWC-liquid-0.1-50'] \n"
6138  "\n"
6139  "The order of the Strings can be arbitrarily chosen.\n"
6140  "\n"
6141  "For more details, see WSV *part_species*.\n"
6142  ),
6143  AUTHORS( "Daniel Kreyling" ),
6144  OUT( "part_species" ),
6145  GOUT( ),
6146  GOUT_TYPE( ),
6147  GOUT_DESC( ),
6148  IN(),
6149  GIN( "names" ),
6150  GIN_TYPE( "ArrayOfString" ),
6151  GIN_DEFAULT( NODEF ),
6152  GIN_DESC("Array of selection criteria." )
6153  ));
6154 
6155 
6156  md_data_raw.push_back
6157  ( MdRecord
6158  ( NAME( "ParticleTypeAddAll" ),
6159  DESCRIPTION
6160  (
6161  "Reads single scattering data and particle number densities.\n"
6162  "\n"
6163  "The WSV *pnd_field_raw* containing particle number densities for all\n"
6164  "scattering particle species can be generated outside ARTS, for example by using\n"
6165  "PyARTS. This method needs as input an XML-file containing an array of filenames\n"
6166  "(ArrayOfString) of single scattering data and a file containing the corresponding\n"
6167  "*pnd_field_raw*. In contrast to the scattering data, all corresponding pnd-fields\n"
6168  "are stored in a single XML-file containing an ArrayofGriddedField3\n"
6169  "\n"
6170  "Very important note:\n"
6171  "The order of the filenames for the scattering data files has to\n"
6172  "correspond to the order of the pnd-fields, stored in the variable\n"
6173  "*pnd_field_raw*.\n"
6174  ),
6175  AUTHORS( "Claudia Emde" ),
6176  OUT( "scat_data_raw", "pnd_field_raw" ),
6177  GOUT(),
6178  GOUT_TYPE(),
6179  GOUT_DESC(),
6180  IN( "atmosphere_dim", "f_grid", "p_grid", "lat_grid", "lon_grid",
6181  "cloudbox_limits" ),
6182  GIN( "filename_scat_data", "filename_pnd_field" ),
6183  GIN_TYPE( "String", "String" ),
6184  GIN_DEFAULT( NODEF, NODEF ),
6185  GIN_DESC( "File containing single scattering data.",
6186  "File including *pnd_field_raw*."
6187  )
6188  ));
6189 
6190 
6191  md_data_raw.push_back
6192  ( MdRecord
6193  ( NAME( "ParticleTypeAdd" ),
6194  DESCRIPTION
6195  (
6196  "This method reads single scattering data and the corresonding\n"
6197  "particle number density fields.\n"
6198  "\n"
6199  "The methods reads the specified files and appends the obtained data\n"
6200  "to *scat_data_raw* and *pnd_field_raw*.\n"
6201  ),
6202  AUTHORS( "Claudia Emde" ),
6203  OUT( "scat_data_raw", "pnd_field_raw" ),
6204  GOUT(),
6205  GOUT_TYPE(),
6206  GOUT_DESC(),
6207  IN( "atmosphere_dim", "f_grid", "p_grid", "lat_grid", "lon_grid",
6208  "cloudbox_limits" ),
6209  GIN( "filename_scat_data", "filename_pnd_field" ),
6210  GIN_TYPE( "String", "String" ),
6211  GIN_DEFAULT( NODEF, NODEF ),
6212  GIN_DESC( "Filename of single scattering data.",
6213  "Filename of the corresponding pnd_field."
6214  )
6215  ));
6216 
6217  md_data_raw.push_back
6218  ( MdRecord
6219  ( NAME( "ParticleTypeInit" ),
6220  DESCRIPTION
6221  (
6222  "Initializes *scat_data_raw* and *pnd_field_raw*.\n"
6223  "\n"
6224  "This method initializes variables containing data about the\n"
6225  "optical properties of particles (*scat_data_raw*) and about the\n"
6226  "particle number distribution (*pnd_field_raw*)\n"
6227  "\n"
6228  "This method has to be executed before executing e.g.\n"
6229  "*ParticleTypeAdd*.\n"
6230  ),
6231  AUTHORS( "Claudia Emde" ),
6232  OUT( "scat_data_raw", "pnd_field_raw" ),
6233  GOUT(),
6234  GOUT_TYPE(),
6235  GOUT_DESC(),
6236  IN(),
6237  GIN(),
6238  GIN_TYPE(),
6239  GIN_DEFAULT(),
6240  GIN_DESC()
6241  ));
6242 
6243  md_data_raw.push_back
6244  ( MdRecord
6245  ( NAME( "pha_matCalc" ),
6246  DESCRIPTION
6247  (
6248  "This function sums up the phase matrices for all particle\n"
6249  "types weighted with particle number density.\n"
6250  ),
6251  AUTHORS( "Sreerekha T.R." ),
6252  OUT( "pha_mat" ),
6253  GOUT(),
6254  GOUT_TYPE(),
6255  GOUT_DESC(),
6256  IN( "pha_mat_spt", "pnd_field", "atmosphere_dim", "scat_p_index",
6257  "scat_lat_index", "scat_lon_index" ),
6258  GIN(),
6259  GIN_TYPE(),
6260  GIN_DEFAULT(),
6261  GIN_DESC()
6262  ));
6263 
6264  md_data_raw.push_back
6265  ( MdRecord
6266  ( NAME( "pha_matExtractManually" ),
6267  DESCRIPTION
6268  (
6269  "A simple function for manually extract a single phase matrix.\n"
6270  "\n"
6271  "The function returns the phase matrix for a single particle, for\n"
6272  "scattering from (za_in,aa_in) to (za_out,aa_out).\n"
6273  "\n"
6274  "Only a single particle type is handled and *scat_data_raw* must\n"
6275  "have length 1. The frequency is selected by *f_grid* and *f_index*.\n"
6276  "The temperature is set by *rte_temperature*.\n"
6277  ),
6278  AUTHORS( "Patrick Eriksson" ),
6279  OUT( ),
6280  GOUT( "pha_mat_single" ),
6281  GOUT_TYPE( "Matrix" ),
6282  GOUT_DESC(
6283  "Phase matrix for a single frequency and combination of angles" ),
6284  IN( "f_grid", "f_index", "stokes_dim", "scat_data_raw",
6285  "rte_temperature" ),
6286  GIN( "za_out", "aa_out", "za_in", "aa_in" ),
6287  GIN_TYPE( "Numeric", "Numeric", "Numeric", "Numeric" ),
6289  GIN_DESC( "Outgoing zenith angle", "Outgoing azimuth angle",
6290  "Incoming zenith angle", "Incoming azimuth angle" )
6291  ));
6292 
6293  md_data_raw.push_back
6294  ( MdRecord
6295  ( NAME( "pha_mat_sptFromData" ),
6296  DESCRIPTION
6297  (
6298  "Calculation of the phase matrix for the single particle types.\n"
6299  "\n"
6300  "This function can be used in *pha_mat_spt_agenda* as part of\n"
6301  "the calculation of the scattering integral.\n"
6302  "\n"
6303  "The interpolation of the data on the actual frequency is the first\n"
6304  "step in this function. This is followed by a transformation from the\n"
6305  "database coordinate system to the laboratory coordinate system.\n"
6306  ),
6307  AUTHORS( "Claudia Emde" ),
6308  OUT( "pha_mat_spt" ),
6309  GOUT(),
6310  GOUT_TYPE(),
6311  GOUT_DESC(),
6312  IN( "pha_mat_spt", "scat_data_raw", "scat_za_grid", "scat_aa_grid",
6313  "scat_za_index", "scat_aa_index", "f_index", "f_grid",
6314  "rte_temperature", "pnd_field", "scat_p_index", "scat_lat_index",
6315  "scat_lon_index" ),
6316  GIN(),
6317  GIN_TYPE(),
6318  GIN_DEFAULT(),
6319  GIN_DESC()
6320  ));
6321 
6322  md_data_raw.push_back
6323  ( MdRecord
6324  ( NAME( "pha_mat_sptFromMonoData" ),
6325  DESCRIPTION
6326  (
6327  "Calculation of the phase matrix for the single particle types.\n"
6328  "\n"
6329  "This function is the monochromatic version of *pha_mat_sptFromData*.\n"
6330  ),
6331  AUTHORS( "Claudia Emde" ),
6332  OUT( "pha_mat_spt" ),
6333  GOUT(),
6334  GOUT_TYPE(),
6335  GOUT_DESC(),
6336  IN( "pha_mat_spt", "scat_data_mono", "doit_za_grid_size",
6337  "scat_aa_grid", "scat_za_index", "scat_aa_index", "rte_temperature",
6338  "pnd_field", "scat_p_index", "scat_lat_index", "scat_lon_index" ),
6339  GIN(),
6340  GIN_TYPE(),
6341  GIN_DEFAULT(),
6342  GIN_DESC()
6343  ));
6344 
6345  md_data_raw.push_back
6346  ( MdRecord
6347  ( NAME( "pha_mat_sptFromDataDOITOpt" ),
6348  DESCRIPTION
6349  (
6350  "Calculation of the phase matrix for the single particle types.\n"
6351  "\n"
6352  "In this function the phase matrix is extracted from\n"
6353  "*pha_mat_sptDOITOpt*. It can be used in the agenda\n"
6354  "*pha_mat_spt_agenda*. This method must be used in \n "
6355  "combination with *DoitScatteringDataPrepare*.\n"
6356  ),
6357  AUTHORS( "Claudia Emde" ),
6358  OUT( "pha_mat_spt" ),
6359  GOUT(),
6360  GOUT_TYPE(),
6361  GOUT_DESC(),
6362  IN( "pha_mat_spt", "pha_mat_sptDOITOpt", "scat_data_mono",
6363  "doit_za_grid_size",
6364  "scat_aa_grid",
6365  "scat_za_index", "scat_aa_index", "rte_temperature",
6366  "pnd_field", "scat_p_index", "scat_lat_index", "scat_lon_index" ),
6367  GIN(),
6368  GIN_TYPE(),
6369  GIN_DEFAULT(),
6370  GIN_DESC()
6371  ));
6372 
6373  md_data_raw.push_back
6374  ( MdRecord
6375  ( NAME( "pnd_fieldCalc" ),
6376  DESCRIPTION
6377  ( "Interpolates the particle number density fields.\n"
6378  "\n"
6379  "This methods interpolates the particle number density field\n"
6380  "from the raw data *pnd_field_raw* to obtain *pnd_field*.\n"
6381  ),
6382  AUTHORS( "Sreerekha T.R.", "Claudia Emde" ),
6383  OUT( "pnd_field" ),
6384  GOUT(),
6385  GOUT_TYPE(),
6386  GOUT_DESC(),
6387  IN( "p_grid", "lat_grid", "lon_grid", "pnd_field_raw", "atmosphere_dim",
6388  "cloudbox_limits" ),
6389  GIN(),
6390  GIN_TYPE(),
6391  GIN_DEFAULT(),
6392  GIN_DESC()
6393  ));
6394 
6395  md_data_raw.push_back
6396  ( MdRecord
6397  ( NAME( "pnd_fieldExpand1D" ),
6398  DESCRIPTION
6399  (
6400  "Maps a 1D pnd_field to 2D or 3D pnd_field.\n"
6401  "\n"
6402  "This method takes a 1D *pnd_field* and converts it to 2D or 3D\n"
6403  "\"cloud\". It is assumed that a complete 1D case has been created\n"
6404  "and after this *atmosphere_dim*, *lat_grid*, *lon_grid* and\n"
6405  "*cloudbox_limits* have been changed to a 2D or 3D case. This\n"
6406  "without changing the vertical extension of the cloudbox.\n"
6407  "\n"
6408  "No modification of *pnd_field* is made for the pressure dimension.\n"
6409  "At the latitude and longitude cloudbox edges *pnd_field* is set to\n"
6410  "zero. This corresponds to nzero=1. If you want a larger margin between\n"
6411  "the lat and lon cloudbox edgess and the \"cloud\" you increase\n"
6412  "*nzero*, where *nzero* is the number of grid points for which\n"
6413  "*pnd_field* shall be set to 0, counted from each lat and lon edge.\n"
6414  "\n"
6415  "See further *AtmFieldsExpand1D*.\n"
6416  ),
6417  AUTHORS( "Patrick Eriksson" ),
6418  OUT( "pnd_field" ),
6419  GOUT(),
6420  GOUT_TYPE(),
6421  GOUT_DESC(),
6422  IN( "pnd_field", "atmosphere_dim", "cloudbox_checked", "cloudbox_on",
6423  "cloudbox_limits" ),
6424  GIN( "nzero" ),
6425  GIN_TYPE( "Index"),
6426  GIN_DEFAULT( "1" ),
6427  GIN_DESC( "Number of zero values inside lat and lon limits." )
6428  ));
6429 
6430  md_data_raw.push_back
6431  ( MdRecord
6432  ( NAME( "pnd_fieldSetup" ),
6433  DESCRIPTION
6434  (
6435  "Calculation of *pnd_field* using ScatteringMetaData and *massdensity_field*.\n"
6436  "\n"
6437  "The WSM first checks if cloudbox is empty. If so, the pnd calculations\n"
6438  "will be skipped.\n"
6439  "The *cloudbox_limits* are used to determine the p, lat and lon size for\n"
6440  "the *pnd_field* tensor.\n"
6441  "Currently there are three particle size distribution parameterisations implemented:\n"
6442  "\t1. MH97 for ice particles. Using a first-order gamma distribution for particles\n"
6443  "\t smaller than 100 microns (melted diameter) and a lognormal distribution for\n"
6444  "\t particles bigger 100 microns. Values from both modes are cumulative.\n"
6445  "\t See internal function 'IWCtopnd_MH97' for implementation/units/output.\n"
6446  "\t (src.: McFarquhar G.M., Heymsfield A.J., 1997)"
6447  "\n"
6448  "\t2. H11 for ice particles and precepitating ice (snow). H11 in NOT dependent\n"
6449  "\t on massdensity of ice/snow, but on atmospheric temperature.\n"
6450  "\t The PSD is scaled to the current IWC/Snow density in an additional step.\n"
6451  "\t See internal function 'pnd_H11' and 'scale_H11' for implementation/units/output.\n"
6452  "\t (src.: Heymsfield A.J., 2011, not published yet)\n"
6453  "\t3. Gamma distribution for liquid cloud particles.\n"
6454  "\t See internal function 'LWCtopnd' for implementation/units/output.\n"
6455  "\t (src.: Deirmendjian D., 1963 and Hess M., et al 1998)\n"
6456  "\n"
6457  "According to the selection criteria in *part_species*, the first specified\n"
6458  "psd parametrisation is selected together with all particles of specified phase\n"
6459  "and size. Then pnd calculations are performed on all levels inside the cloudbox.\n"
6460  "The *massdensity_field* input weights the pnds by the amount of scattering\n"
6461  "particles in each gridbox inside the cloudbox. Where *massdensity_field* is zero,\n"
6462  "the *pnd_field* will be zero as well.\n"
6463  "Subsequently the pnd values get written to *pnd_field*.\n"
6464  "\n"
6465  "Now the next selection criteria string in *part_species* is used to repeat\n"
6466  "the process.The new pnd values will be appended to the existing *pnd_field*.\n"
6467  "And so on...\n"
6468  "\n"
6469  "NOTE: the order of scattering particle profiles in *massdensity_field* is HARD WIRED!\n"
6470  ),
6471  AUTHORS( "Daniel Kreyling" ),
6472  OUT( "pnd_field"),
6473  GOUT(),
6474  GOUT_TYPE(),
6475  GOUT_DESC(),
6476  IN( "atmosphere_dim","cloudbox_on", "cloudbox_limits", "massdensity_field", "t_field", "scat_data_meta_array", "part_species", "scat_data_nelem" ),
6477  GIN(),
6478  GIN_TYPE(),
6479  GIN_DEFAULT(),
6480  GIN_DESC()
6481  ));
6482 
6483  md_data_raw.push_back
6484  ( MdRecord
6485  ( NAME( "pnd_fieldZero" ),
6486  DESCRIPTION
6487  (
6488  "Sets *pnd_field* to hold only zeros.\n"
6489  "\n"
6490  "Scattering calculations using the DOIT method include\n"
6491  "interpolation errors. If one is interested in this effect, one\n"
6492  "should compare the DOIT result with a clearsky calculation using\n"
6493  "an empty cloudbox. That means that the iterative method is\n"
6494  "performed for a cloudbox including no particles. This method sets\n"
6495  "the particle number density field to zero and creates a\n"
6496  "dummy *scat_data_raw* structure. \n"
6497  ),
6498  AUTHORS( "Claudia Emde" ),
6499  OUT( "pnd_field", "scat_data_raw" ),
6500  GOUT(),
6501  GOUT_TYPE(),
6502  GOUT_DESC(),
6503  IN( "p_grid", "lat_grid", "lon_grid" ),
6504  GIN(),
6505  GIN_TYPE(),
6506  GIN_DEFAULT(),
6507  GIN_DESC()
6508  ));
6509 
6510  md_data_raw.push_back
6511  ( MdRecord
6512  ( NAME( "ppathCalc" ),
6513  DESCRIPTION
6514  (
6515  "Main method for calculation of propagation paths.\n"
6516  "\n"
6517  "There exists only one function to calculate total propagation\n"
6518  "paths and this is that function. The function is normally not\n"
6519  "visible in the control file, it is called from inside *yCalc*.\n"
6520  "A reason to call this function directly would be to plot a\n"
6521  "propgation path.\n"
6522  "\n"
6523  "The definition of a propgation path cannot be accomodated here.\n"
6524  "For more information read the chapter on propagation paths in the\n"
6525  "ARTS user guide and read the on-line information for\n"
6526  "*ppath_step_agenda* (type \"arts -d ppath_step_agenda\" ).\n"
6527  ),
6528  AUTHORS( "Patrick Eriksson" ),
6529  OUT( "ppath" ),
6530  GOUT(),
6531  GOUT_TYPE(),
6532  GOUT_DESC(),
6533  IN( "ppath_step_agenda", "atmosphere_dim", "p_grid", "lat_grid",
6534  "lon_grid", "z_field", "r_geoid", "z_surface",
6535  "cloudbox_on", "cloudbox_limits", "rte_pos", "rte_los" ),
6536  GIN(),
6537  GIN_TYPE(),
6538  GIN_DEFAULT(),
6539  GIN_DESC()
6540  ));
6541 
6542  md_data_raw.push_back
6543  ( MdRecord
6544  ( NAME( "ppath_stepGeometric" ),
6545  DESCRIPTION
6546  (
6547  "Calculates a geometrical propagation path step.\n"
6548  "\n"
6549  "This function determines a propagation path step by pure\n"
6550  "geometrical calculations. That is, refraction is neglected. Path\n"
6551  "points are always included for crossings with the grids, tangent\n"
6552  "points and intersection points with the surface. The WSV *ppath_lmax*\n"
6553  "gives the option to include additional points to ensure that the\n"
6554  "distance along the path between the points does not exceed the\n"
6555  "selected maximum length. No additional points are included if\n"
6556  "*ppath_lmax* is set to <= 0.\n"
6557  "\n"
6558  "For further information, type see the on-line information for\n"
6559  "*ppath_step_agenda* (type \"arts -d ppath_step_agenda\" ).\n"
6560  ),
6561  AUTHORS( "Patrick Eriksson" ),
6562  OUT( "ppath_step" ),
6563  GOUT(),
6564  GOUT_TYPE(),
6565  GOUT_DESC(),
6566  IN( "ppath_step", "atmosphere_dim", "p_grid", "lat_grid", "lon_grid",
6567  "z_field", "r_geoid", "z_surface", "ppath_lmax" ),
6568  GIN(),
6569  GIN_TYPE(),
6570  GIN_DEFAULT(),
6571  GIN_DESC()
6572  ));
6573 
6574  md_data_raw.push_back
6575  ( MdRecord
6576  ( NAME( "ppath_stepRefractionEuler" ),
6577  DESCRIPTION
6578  (
6579  "Calculates a propagation path step, considering refraction by a\n"
6580  "straightforward Euler approach.\n"
6581  "\n"
6582  "Refraction is taken into account by probably the simplest approach\n"
6583  "possible. The path is treated to consist of piece-wise geometric\n"
6584  "steps. A geometric path step is calculated from each point by\n"
6585  "using the local line-of-sight. Except for 1D zenith angles, the\n"
6586  "path quantities are propagated by solving the differential\n"
6587  "equations by the Euler method. Snell's law for spherical symmetry\n"
6588  "is used for 1D to update the zenith angles.\n"
6589  "\n"
6590  "See further the on-line information for *ppath_stepGeometric*\n"
6591  "(type \"arts -d ppath_stepGeometric\" ) and the user guide for more\n"
6592  "details on the algorithms used.\n"
6593  "\n"
6594  "The maximum length of each ray tracing step is given by the WSV\n"
6595  "*ppath_lraytrace*. The length will never exceed the\n"
6596  "given maximum value, but can be smaller. The ray tracing steps are\n"
6597  "only used to determine the path. Points to describe the path for\n"
6598  "*yCalc* are included as for *ppath_stepGeometric*, this\n"
6599  "including the functionality of *ppath_lmax*.\n"
6600  ),
6601  AUTHORS( "Patrick Eriksson" ),
6602  OUT( "ppath_step", "rte_pressure", "rte_temperature", "rte_vmr_list",
6603  "refr_index" ),
6604  GOUT(),
6605  GOUT_TYPE(),
6606  GOUT_DESC(),
6607  IN( "refr_index_agenda", "ppath_step", "atmosphere_dim", "p_grid",
6608  "lat_grid", "lon_grid", "z_field", "t_field", "vmr_field", "r_geoid",
6609  "z_surface", "ppath_lmax", "ppath_lraytrace" ),
6610  GIN(),
6611  GIN_TYPE(),
6612  GIN_DEFAULT(),
6613  GIN_DESC()
6614  ));
6615 
6616  md_data_raw.push_back
6617  ( MdRecord
6618  ( NAME( "Print" ),
6619  DESCRIPTION
6620  (
6621  "Prints a variable on the screen.\n"
6622  ),
6623  AUTHORS( "Oliver Lemke" ),
6624  OUT(),
6625  GOUT(),
6626  GOUT_TYPE(),
6627  GOUT_DESC(),
6628  IN(),
6629  GIN( "v" ,
6630  "level" ),
6631  GIN_TYPE( "Any",
6632  "Index" ),
6633  GIN_DEFAULT( NODEF,
6634  "1" ),
6635  GIN_DESC( "Variable to be printed.",
6636  "Output level to use." ),
6637  SETMETHOD( false ),
6638  AGENDAMETHOD( false ),
6639  SUPPRESSHEADER( true )
6640  ));
6641 
6642  md_data_raw.push_back
6643  ( MdRecord
6644  ( NAME( "PrintWorkspace" ),
6645  DESCRIPTION
6646  (
6647  "Prints a list of the workspace variables.\n"
6648  ),
6649  AUTHORS( "Oliver Lemke" ),
6650  OUT(),
6651  GOUT(),
6652  GOUT_TYPE(),
6653  GOUT_DESC(),
6654  IN(),
6655  GIN( "only_allocated", "level" ),
6656  GIN_TYPE( "Index", "Index" ),
6657  GIN_DEFAULT( "1", "1" ),
6658  GIN_DESC( "Flag for printing either all variables (0) or only "
6659  "allocated ones (1).",
6660  "Output level to use." ),
6661  SETMETHOD( false ),
6662  AGENDAMETHOD( false ),
6663  SUPPRESSHEADER( true ),
6664  PASSWORKSPACE( true )
6665  ));
6666 
6667  md_data_raw.push_back
6668  ( MdRecord
6669  ( NAME( "p_gridFromAtmRaw" ),
6670  DESCRIPTION
6671  (
6672  "Sets *p_grid* according to input atmosphere defined using *AtmRawRead*.\n"
6673  "Only pressure values corresponding to altitudes >= 0 are extracted.\n"
6674  ),
6675  AUTHORS( "Claudia Emde" ),
6676  OUT( "p_grid" ),
6677  GOUT(),
6678  GOUT_TYPE(),
6679  GOUT_DESC(),
6680  IN( "z_field_raw" ),
6681  GIN(),
6682  GIN_TYPE(),
6683  GIN_DEFAULT(),
6684  GIN_DESC()
6685  ));
6686 
6687  md_data_raw.push_back
6688  ( MdRecord
6689  ( NAME( "p_gridFromGasAbsLookup" ),
6690  DESCRIPTION
6691  (
6692  "Sets *p_grid* to the frequency grid of *abs_lookup*.\n"
6693  ),
6694  AUTHORS( "Patrick Eriksson" ),
6695  OUT( "p_grid" ),
6696  GOUT(),
6697  GOUT_TYPE(),
6698  GOUT_DESC(),
6699  IN( "abs_lookup" ),
6700  GIN(),
6701  GIN_TYPE(),
6702  GIN_DEFAULT(),
6703  GIN_DESC()
6704  ));
6705 
6706  md_data_raw.push_back
6707  ( MdRecord
6708  ( NAME( "ReadNetCDF" ),
6709  DESCRIPTION
6710  (
6711  "Reads a workspace variable from a NetCDF file.\n"
6712  "\n"
6713  "This method can read variables of any group.\n"
6714  "\n"
6715  "If the filename is omitted, the variable is read\n"
6716  "from <basename>.<variable_name>.nc.\n"
6717  ),
6718  AUTHORS( "Oliver Lemke" ),
6719  OUT(),
6720  GOUT( "v" ),
6721  GOUT_TYPE( "Vector, Matrix, Tensor3, Tensor4, Tensor5, ArrayOfVector,"
6722  "ArrayOfMatrix" ),
6723  GOUT_DESC( "Variable to be read." ),
6724  IN(),
6725  GIN( "filename" ),
6726  GIN_TYPE( "String" ),
6727  GIN_DEFAULT( NODEF ),
6728  GIN_DESC( "Name of the NetCDF file." ),
6729  SETMETHOD( false ),
6730  AGENDAMETHOD( false ),
6731  SUPPRESSHEADER( true ),
6732  PASSWORKSPACE( false ),
6733  PASSWSVNAMES( true )
6734  ));
6735 
6736  md_data_raw.push_back
6737  ( MdRecord
6738  ( NAME( "ReadXML" ),
6739  DESCRIPTION
6740  (
6741  "Reads a workspace variable from an XML file.\n"
6742  "\n"
6743  "This method can read variables of any group.\n"
6744  "\n"
6745  "If the filename is omitted, the variable is read\n"
6746  "from <basename>.<variable_name>.xml.\n"
6747  ),
6748  AUTHORS( "Oliver Lemke" ),
6749  OUT(),
6750  GOUT( "v" ),
6751  GOUT_TYPE( "Any" ),
6752  GOUT_DESC( "Variable to be read." ),
6753  IN(),
6754  GIN( "filename" ),
6755  GIN_TYPE( "String" ),
6756  GIN_DEFAULT( "" ),
6757  GIN_DESC( "Name of the XML file." ),
6758  SETMETHOD( false ),
6759  AGENDAMETHOD( false ),
6760  SUPPRESSHEADER( true ),
6761  PASSWORKSPACE( false ),
6762  PASSWSVNAMES( true )
6763  ));
6764 
6765  md_data_raw.push_back
6766  ( MdRecord
6767  ( NAME( "refr_indexIR" ),
6768  DESCRIPTION
6769  (
6770  "Calculates the IR refractive index due to gases in the\n"
6771  "Earth's atmosphere.\n"
6772  "\n"
6773  "Only refractivity of dry air is considered. The formula used is\n"
6774  "contributed by Michael Hoefner, Forschungszentrum Karlsruhe.\n"
6775  ),
6776  AUTHORS( "Mattias Ekstrom" ),
6777  OUT( "refr_index" ),
6778  GOUT(),
6779  GOUT_TYPE(),
6780  GOUT_DESC(),
6781  IN( "rte_pressure", "rte_temperature", "rte_vmr_list" ),
6782  GIN(),
6783  GIN_TYPE(),
6784  GIN_DEFAULT(),
6785  GIN_DESC()
6786  ));
6787 
6788  md_data_raw.push_back
6789  ( MdRecord
6790  ( NAME( "refr_indexThayer" ),
6791  DESCRIPTION
6792  (
6793  "Calculates the microwave refractive index due to gases in the\n"
6794  "Earth's atmosphere.\n"
6795  "\n"
6796  "The refractivity of dry air and water vapour is summed. All\n"
6797  "other gases are assumed to have a negligible contribution. \n"
6798  "\n"
6799  "The parameterisation of Thayer (Radio Science, 9, 803-807, 1974)\n"
6800  "is used. See also Eq. 3 and 5 of Solheim et al. (JGR, 104,\n"
6801  "pp. 9664).\n"
6802  ),
6803  AUTHORS( "Patrick Eriksson" ),
6804  OUT( "refr_index" ),
6805  GOUT(),
6806  GOUT_TYPE(),
6807  GOUT_DESC(),
6808  IN( "rte_pressure", "rte_temperature", "rte_vmr_list", "abs_species" ),
6809  GIN(),
6810  GIN_TYPE(),
6811  GIN_DEFAULT(),
6812  GIN_DESC()
6813  ));
6814 
6815  md_data_raw.push_back
6816  ( MdRecord
6817  ( NAME( "refr_indexUnit" ),
6818  DESCRIPTION
6819  (
6820  "Sets the refractive index to 1.\n"
6821  "\n"
6822  "If this method is used, the obtained path should be identical to\n"
6823  "the geomtrical path.\n"
6824  ),
6825  AUTHORS( "Patrick Eriksson" ),
6826  OUT( "refr_index" ),
6827  GOUT(),
6828  GOUT_TYPE(),
6829  GOUT_DESC(),
6830  IN(),
6831  GIN(),
6832  GIN_TYPE(),
6833  GIN_DEFAULT(),
6834  GIN_DESC()
6835  ));
6836 
6837  md_data_raw.push_back
6838  ( MdRecord
6839  ( NAME( "rte_losSet" ),
6840  DESCRIPTION
6841  (
6842  "Sets *rte_los* to the given angles.\n"
6843  "\n"
6844  "The azimuth angle is ignored for 1D and 2D.\n"
6845  ),
6846  AUTHORS( "Patrick Eriksson" ),
6847  OUT( "rte_los" ),
6848  GOUT(),
6849  GOUT_TYPE(),
6850  GOUT_DESC(),
6851  IN( "atmosphere_dim" ),
6852  GIN( "za", "aa" ),
6853  GIN_TYPE( "Numeric", "Numeric" ),
6854  GIN_DEFAULT( NODEF, NODEF ),
6855  GIN_DESC( "Zenith angle of sensor line-of-sight.",
6856  "Azimuth angle of sensor line-of-sight."
6857  )
6858  ));
6859 
6860  md_data_raw.push_back
6861  ( MdRecord
6862  ( NAME( "rte_posAddRgeoid" ),
6863  DESCRIPTION
6864  (
6865  "Adds a geoid radius by interpolating *r_geoid*.\n"
6866  "\n"
6867  "This function assumes that the first element of *rte_pos* is set\n"
6868  "to the geometric altitude for the position of the sensor.\n"
6869  "The variable *rte_pos* shall contain the radius instead of the\n"
6870  "altitude and that can be achieved by this function. The function\n"
6871  "adds a geoid radius to the given altitude. The geoid radius is\n"
6872  "obtained by interpolation of *r_geoid*. There is an error if the\n"
6873  "given position is outside the latitude and longitude grids.\n"
6874  ),
6875  AUTHORS( "Patrick Eriksson" ),
6876  OUT( "rte_pos" ),
6877  GOUT(),
6878  GOUT_TYPE(),
6879  GOUT_DESC(),
6880  IN( "rte_pos", "atmosphere_dim", "lat_grid", "lon_grid", "r_geoid" ),
6881  GIN(),
6882  GIN_TYPE(),
6883  GIN_DEFAULT(),
6884  GIN_DESC()
6885  ));
6886 
6887  md_data_raw.push_back
6888  ( MdRecord
6889  ( NAME( "rte_posSet" ),
6890  DESCRIPTION
6891  (
6892  "Sets *rte_pos* to the given co-ordinates.\n"
6893  "\n"
6894  "The longitude is ignored for 1D and 2D, and the latitude is also \n"
6895  "ignored for 1D.\n"
6896  "\n"
6897  "The argument *r_or_z* can either be a radius, or an altitude\n"
6898  "above the geoid. In the latter case, a function such as\n"
6899  "*rte_posAddGeoidWGS84* could be called to obtain a radius as\n"
6900  "first element of *rte_pos*.\n"
6901  ),
6902  AUTHORS( "Patrick Eriksson" ),
6903  OUT( "rte_pos" ),
6904  GOUT(),
6905  GOUT_TYPE(),
6906  GOUT_DESC(),
6907  IN( "atmosphere_dim" ),
6908  GIN( "r_or_z", "lat", "lon" ),
6909  GIN_TYPE( "Numeric", "Numeric", "Numeric" ),
6911  GIN_DESC( "Radius or geometrical altitude of sensor position.",
6912  "Latitude of sensor position.",
6913  "Longitude of sensor position."
6914  )
6915  ));
6916 
6917  md_data_raw.push_back
6918  ( MdRecord
6919  ( NAME( "r_geoidSpherical" ),
6920  DESCRIPTION
6921  (
6922  "Sets the geoid to be a perfect sphere.\n"
6923  "\n"
6924  "The radius of the sphere is selected by the generic argument r.\n"
6925  ),
6926  AUTHORS( "Patrick Eriksson" ),
6927  OUT( "r_geoid" ),
6928  GOUT(),
6929  GOUT_TYPE(),
6930  GOUT_DESC(),
6931  IN( "atmosphere_dim", "lat_grid", "lon_grid" ),
6932  GIN( "r" ),
6933  GIN_TYPE( "Numeric" ),
6934  GIN_DEFAULT( NODEF ),
6935  GIN_DESC( "Radius of the geoid sphere. If negative, the radius is set to the "
6936  "global internal variable EARTH_RADIUS, defined in constants.cc."
6937  )
6938  ));
6939 
6940  md_data_raw.push_back
6941  ( MdRecord
6942  ( NAME( "r_geoidWGS84" ),
6943  DESCRIPTION
6944  (
6945  "Sets the geoid radius to match the WGS-84 reference ellipsoid.\n"
6946  "\n"
6947  "For 1D, the geoid radius is set to the radius of curvature of the\n"
6948  "WGS-84 ellipsoid in the north-south direction. The latitude is\n"
6949  "taken from *lat_grid*, that then is demanded to have length 1.\n"
6950  "\n"
6951  "For 2D and 3D, *r_geoid* is set to the radius of the WGS-84\n"
6952  "ellipsoid for the crossing points of the latitude and longitude\n"
6953  "grids.\n"
6954  "\n"
6955  "Please note that the latitude grid must contain true latitudes\n"
6956  "if the function shall give correct result, and not just arbitrary\n"
6957  "orbit angles which is allowed elsewhere for 2D cases.\n"
6958  ),
6959  AUTHORS( "Patrick Eriksson" ),
6960  OUT( "r_geoid" ),
6961  GOUT(),
6962  GOUT_TYPE(),
6963  GOUT_DESC(),
6964  IN( "atmosphere_dim", "lat_grid", "lon_grid" ),
6965  GIN(),
6966  GIN_TYPE(),
6967  GIN_DEFAULT(),
6968  GIN_DESC()
6969  ));
6970 
6971  md_data_raw.push_back
6972  ( MdRecord
6973  ( NAME( "ScatteringDisort" ),
6974  DESCRIPTION
6975  (
6976  "Calls DISORT RT solver from ARTS.\n"
6977  ),
6978  AUTHORS( "Claudia Emde" ),
6979  OUT( "scat_i_p", "scat_i_lat", "scat_i_lon",
6980  "f_index", "scat_data_mono", "doit_i_field1D_spectrum" ),
6981  GOUT(),
6982  GOUT_TYPE(),
6983  GOUT_DESC(),
6984  IN( "cloudbox_limits", "stokes_dim", "opt_prop_part_agenda",
6985  "abs_scalar_gas_agenda", "spt_calc_agenda", "pnd_field", "t_field",
6986  "z_field", "p_grid", "vmr_field", "scat_data_raw", "f_grid",
6987  "scat_za_grid", "surface_emissivity_DISORT" ),
6988  GIN(),
6989  GIN_TYPE(),
6990  GIN_DEFAULT(),
6991  GIN_DESC()
6992  ));
6993 
6994  md_data_raw.push_back
6995  ( MdRecord
6996  ( NAME( "ScatteringDoit" ),
6997  DESCRIPTION
6998  (
6999  "Main DOIT method.\n"
7000  "\n"
7001  "This method executes *doit_mono_agenda* for each frequency\n"
7002  "in *f_grid*. The output is the radiation field inside the cloudbox\n"
7003  "(*doit_i_field*) and on the cloudbox boundary (*scat_i_p* (1D),\n"
7004  "*scat_i_lat* and *scat_i_lon* (3D)).\n"
7005  ),
7006  AUTHORS( "Claudia Emde" ),
7007  OUT( "doit_i_field", "scat_i_p", "scat_i_lat", "scat_i_lon",
7008  "doit_i_field1D_spectrum" ),
7009  GOUT(),
7010  GOUT_TYPE(),
7011  GOUT_DESC(),
7012  IN( "cloudbox_on", "f_grid", "scat_i_p", "scat_i_lat", "scat_i_lon",
7013  "doit_mono_agenda", "doit_is_initialized" ),
7014  GIN(),
7015  GIN_TYPE(),
7016  GIN_DEFAULT(),
7017  GIN_DESC()
7018  ));
7019 
7020  md_data_raw.push_back
7021  ( MdRecord
7022  ( NAME( "ScatteringParticleTypeAndMetaRead" ),
7023  DESCRIPTION
7024  (
7025  "Reads single scattering data and scattering meta data.\n"
7026  "\n"
7027  "This method's input needs two XML-files, one containing an array \n"
7028  "of path/filenames (*ArrayOfString*) of single scattering data and the \n"
7029  "corresponding path/filenames to scattering meta data.\n"
7030  "For each single scattering file, there needs to be exactly one\n"
7031  "scattering meta data file.\n"
7032  "\n"
7033  "Currently particles of phase ice and/or water can be added for the same calculation.\n"
7034  "It is also possible to read *SingleScatteringData* for different shapes of\n"
7035  "ice particles. But all ice particels will share the same IWC, while performing\n"
7036  "the *pnd_field* calculations with *pnd_fieldSetup*.\n"
7037  "Also make sure, that two scattering particles of the same phase are never equal\n"
7038  "in size. This will break the calculations in *pnd_fieldSetup*\n"
7039  "\n"
7040  "Very important note:\n"
7041  "The order of the filenames for the single scattering data files has to\n"
7042  "exactly correspond to the order of the scattering meta data files.\n"
7043  ),
7044  AUTHORS( "Daniel Kreyling" ),
7045  OUT( "scat_data_raw", "scat_data_meta_array" ),
7046  GOUT(),
7047  GOUT_TYPE(),
7048  GOUT_DESC(),
7049  IN( "f_grid" ),
7050  GIN( "filename_scat_data", "filename_scat_meta_data" ),
7051  GIN_TYPE( "String", "String" ),
7052  GIN_DEFAULT( NODEF, NODEF ),
7053  GIN_DESC( "File containing single scattering data file names.",
7054  "File containing scattering meta data file names."
7055  )
7056  ));
7057 
7058 
7059  md_data_raw.push_back
7060  ( MdRecord
7061  ( NAME( "ScatteringParticlesSelect" ),
7062  DESCRIPTION
7063  (
7064  "This method is a selection function for scattering particles.\n"
7065  "\n"
7066  "In *part_species* the user defines selection criteria for:\n"
7067  "\t...which type of scattering particle profile\n"
7068  "\t...what particle size ditribution parametrisation\n"
7069  "\t...the minimum and maximum size of the particle (in terms of volume equivalent radius)\n"
7070  "to use in the scattering calculations.\n"
7071  "Minimum and maximum size may be omitted or symbol \"*\" be used as a wildcard.\n"
7072  "\n"
7073  "The scattering particle arrays, *scat_data_raw* and *scat_data_meta_array*\n"
7074  "are searched for particles, that fullfill the selection criteria. \n"
7075  "Only these particles will be used for scattering calculations.\n"
7076  "\n"
7077  "Additionaly an *ArrayOfIndex* *scat_data_nelem* is created. This Array\n"
7078  "stores the number of scattering particles, that have been selected by each\n"
7079  "selection string in *part_species*\n"
7080  ),
7081  AUTHORS( "Daniel Kreyling" ),
7082  OUT( "scat_data_raw", "scat_data_meta_array", "scat_data_nelem" ),
7083  GOUT(),
7084  GOUT_TYPE(),
7085  GOUT_DESC(),
7086  IN( "part_species", "scat_data_raw", "scat_data_meta_array" ),
7087  GIN( ),
7088  GIN_TYPE(),
7089  GIN_DEFAULT( ),
7090  GIN_DESC( )
7091  ));
7092 
7093  md_data_raw.push_back
7094  ( MdRecord
7095  ( NAME( "scat_data_monoCalc" ),
7096  DESCRIPTION
7097  (
7098  "Interpolates *scat_data_raw* by frequency to give *scat_data_mono*.\n"
7099  ),
7100  AUTHORS( "Cory Davis" ),
7101  OUT( "scat_data_mono" ),
7102  GOUT(),
7103  GOUT_TYPE(),
7104  GOUT_DESC(),
7105  IN( "scat_data_raw", "f_grid", "f_index" ),
7106  GIN(),
7107  GIN_TYPE(),
7108  GIN_DEFAULT(),
7109  GIN_DESC()
7110  ));
7111 
7112  md_data_raw.push_back
7113  ( MdRecord
7114  ( NAME( "scat_data_rawCheck" ),
7115  DESCRIPTION
7116  (
7117  "Method for checking the consistency of the optical properties\n"
7118  "in the database.\n"
7119  "\n"
7120  "This function can be used to check datafiles containing data for\n"
7121  "randomly oriented scattering media.\n"
7122  "It is checked whether the data is consistent. The integral over\n"
7123  "the phase matrix should result the scattering cross section\n"
7124  "<C_sca>.\n"
7125  "\n"
7126  "The check is if:\n"
7127  "<C_ext> - <C_sca> = <C_abs>\n"
7128  "\n"
7129  "The result is printed on the screen.\n"
7130  ),
7131  AUTHORS( "Claudia Emde" ),
7132  OUT(),
7133  GOUT(),
7134  GOUT_TYPE(),
7135  GOUT_DESC(),
7136  IN( "scat_data_raw" ),
7137  GIN(),
7138  GIN_TYPE(),
7139  GIN_DEFAULT(),
7140  GIN_DESC()
7141  ));
7142 
7143  md_data_raw.push_back
7144  ( MdRecord
7145  ( NAME( "Select" ),
7146  DESCRIPTION
7147  (
7148  "Method to select some elements from one array and copy them to\n"
7149  "a new array. (Works also for vectors.)\n"
7150  "\n"
7151  "This works also for higher dimensional objects, where the selection is\n"
7152  "always performed in the first dimension.\n"
7153  "\n"
7154  "For example:\n"
7155  "\n"
7156  "Select(y,x,[0,3])\n"
7157  "\n"
7158  "will select the first and fourth row of matrix x and copy them to the\n"
7159  "output matrix y.\n"
7160  "\n"
7161  "Note that it is even safe to use this method if needles and haystack\n"
7162  "are the same variable.\n"
7163  ),
7164  AUTHORS( "Oliver Lemke" ),
7165  OUT(),
7166  GOUT( "needles" ),
7167  GOUT_TYPE( ARRAY_GROUPS + ", Vector, Matrix, Sparse" ),
7168  GOUT_DESC( "Selected elements. Must have the same variable type as "
7169  "haystack." ),
7170  IN(),
7171  GIN( "haystack", "needleindexes" ),
7172  GIN_TYPE( ARRAY_GROUPS + ", Vector, Matrix, Sparse",
7173  "ArrayOfIndex" ),
7174  GIN_DEFAULT( NODEF, NODEF ),
7175  GIN_DESC( "Variable to select from. May be the same variable as needles.",
7176  "The elements to select (zero based indexing, as always.)" ),
7177  SETMETHOD( false ),
7178  AGENDAMETHOD( false ),
7179  SUPPRESSHEADER( true )
7180  ));
7181 
7182  md_data_raw.push_back
7183  ( MdRecord
7184  ( NAME( "sensorOff" ),
7185  DESCRIPTION
7186  (
7187  "Sets sensor WSVs to obtain monochromatic pencil beam values.\n"
7188  "\n"
7189  "A 1D antenna pattern is assumed. The variables are set as follows:\n"
7190  " antenna_dim : 1.\n"
7191  " mblock_za_grid : Length 1, value 0.\n"
7192  " mblock_aa_grid : Empty.\n"
7193  " sensor_response* : As returned by *sensor_responseInit*.\n"
7194  ),
7195  AUTHORS( "Patrick Eriksson" ),
7196  OUT( "sensor_response", "sensor_response_f",
7197  "sensor_response_pol", "sensor_response_za",
7198  "sensor_response_aa",
7199  "sensor_response_f_grid", "sensor_response_pol_grid",
7200  "sensor_response_za_grid", "sensor_response_aa_grid",
7201  "antenna_dim", "mblock_za_grid", "mblock_aa_grid" ),
7202  GOUT(),
7203  GOUT_TYPE(),
7204  GOUT_DESC(),
7205  IN( "atmosphere_dim", "stokes_dim", "f_grid" ),
7206  GIN(),
7207  GIN_TYPE(),
7208  GIN_DEFAULT(),
7209  GIN_DESC()
7210  ));
7211 
7212  md_data_raw.push_back
7213  ( MdRecord
7214  ( NAME( "sensor_posAddRgeoid" ),
7215  DESCRIPTION
7216  (
7217  "Adds a geoid radius by interpolating *r_geoid*.\n"
7218  "\n"
7219  "This function assumes that the first element of *sensor_pos* is set\n"
7220  "to the geometric altitude for the position of the sensor.\n"
7221  "The variable *rte_pos* shall contain the radius instead of the\n"
7222  "altitude and that can be achieved by this function. The function\n"
7223  "adds a geoid radius to the given altitude. The geoid radius is\n"
7224  "obtained by interpolation of *r_geoid*. There is an error if the\n"
7225  "given position is outside the latitude and longitude grids.\n"
7226  ),
7227  AUTHORS( "Patrick Eriksson" ),
7228  OUT( "sensor_pos" ),
7229  GOUT(),
7230  GOUT_TYPE(),
7231  GOUT_DESC(),
7232  IN( "sensor_pos", "atmosphere_dim", "lat_grid", "lon_grid", "r_geoid" ),
7233  GIN(),
7234  GIN_TYPE(),
7235  GIN_DEFAULT(),
7236  GIN_DESC()
7237  ));
7238 
7239  md_data_raw.push_back
7240  ( MdRecord
7241  ( NAME( "sensor_responseAntenna" ),
7242  DESCRIPTION
7243  (
7244  "Includes response of the antenna.\n"
7245  "\n"
7246  "The function returns the sensor response matrix after the antenna\n"
7247  "characteristics have been included.\n"
7248  "\n"
7249  "The function handles \"multi-beam\" cases where the polarisation\n"
7250  "coordinate system is the same for all beams.\n"
7251  "\n"
7252  "See *antenna_dim*, *antenna_los* and *antenna_response* for\n"
7253  "details on how to specify the antenna response.\n"
7254  ),
7255  AUTHORS( "Mattias Ekstrom", "Patrick Eriksson" ),
7256  OUT( "sensor_response", "sensor_response_f", "sensor_response_pol",
7257  "sensor_response_za", "sensor_response_aa",
7258  "sensor_response_za_grid", "sensor_response_aa_grid" ),
7259  GOUT(),
7260  GOUT_TYPE(),
7261  GOUT_DESC(),
7262  IN( "sensor_response", "sensor_response_f", "sensor_response_pol",
7263  "sensor_response_za", "sensor_response_aa", "sensor_response_f_grid",
7264  "sensor_response_pol_grid", "sensor_response_za_grid",
7265  "sensor_response_aa_grid", "atmosphere_dim", "antenna_dim",
7266  "antenna_los", "antenna_response", "sensor_norm" ),
7267  GIN(),
7268  GIN_TYPE(),
7269  GIN_DEFAULT(),
7270  GIN_DESC()
7271  ));
7272 
7273  md_data_raw.push_back
7274  ( MdRecord
7275  ( NAME( "sensor_responseBackend" ),
7276  DESCRIPTION
7277  (
7278  "Includes response of the backend (spectrometer).\n"
7279  "\n"
7280  "The function returns the sensor response matrix after the backend\n"
7281  "characteristics have been included.\n"
7282  "\n"
7283  "See *f_backend*, *backend_channel_response* and *sensor_norm* for\n"
7284  "details on how to specify the backend response.\n"
7285  ),
7286  AUTHORS( "Mattias Ekstrom", "Patrick Eriksson" ),
7287  OUT( "sensor_response", "sensor_response_f", "sensor_response_pol",
7288  "sensor_response_za", "sensor_response_aa",
7289  "sensor_response_f_grid" ),
7290  GOUT(),
7291  GOUT_TYPE(),
7292  GOUT_DESC(),
7293  IN( "sensor_response", "sensor_response_f", "sensor_response_pol",
7294  "sensor_response_za", "sensor_response_aa",
7295  "sensor_response_f_grid", "sensor_response_pol_grid",
7296  "sensor_response_za_grid", "sensor_response_aa_grid",
7297  "f_backend", "backend_channel_response", "sensor_norm" ),
7298  GIN(),
7299  GIN_TYPE(),
7300  GIN_DEFAULT(),
7301  GIN_DESC()
7302  ));
7303 
7304  md_data_raw.push_back
7305  ( MdRecord
7306  ( NAME( "sensor_responseFillFgrid" ),
7307  DESCRIPTION
7308  (
7309  "Polynomial frequency interpolation of spectra.\n"
7310  "z\n"
7311  "The sensor response methods treat the spectra to be piece-wise linear\n"
7312  "functions. This method is a workaround for making methods handling\n"
7313  "the spectra in a more elaborate way: it generates spectra on a more\n"
7314  "dense grid by polynomial interpolation. The interpolation is not\n"
7315  "done explicitly, it is incorporated into *sensor_response*.\n"
7316  "\n"
7317  "This method should in general increase the calculation accuracy for\n"
7318  "a given *f_grid*. However, the selection of (original) grid points\n"
7319  "becomes more sensitive when using this method. A poor choice of grid\n"
7320  "points can result in a decreased accuracy, or generation of negative\n"
7321  "radiances. Test calculations indicated that the error easily can\n"
7322  "increase with this method close the edge of *f_grid*, and it could\n"
7323  "be wise to make *f_grid* a bit wider than actually necessary to avoid\n"
7324  "this effect\n"
7325  "\n"
7326  "The method shall be inserted before the antenna stage. That is, this\n"
7327  "method shall normally be called directly after *sensor_responseInit*.\n"
7328  "\n"
7329  "Between each neighbouring points of *f_grid*, this method adds\n"
7330  "*nfill* grid points. The polynomial order of the interpolation is\n"
7331  "*polyorder*.\n"
7332  ),
7333  AUTHORS( "Patrick Eriksson" ),
7334  OUT( "sensor_response", "sensor_response_f", "sensor_response_pol",
7335  "sensor_response_za", "sensor_response_aa",
7336  "sensor_response_f_grid" ),
7337  GOUT(),
7338  GOUT_TYPE(),
7339  GOUT_DESC(),
7340  IN( "sensor_response", "sensor_response_f", "sensor_response_pol",
7341  "sensor_response_za", "sensor_response_aa",
7342  "sensor_response_f_grid", "sensor_response_pol_grid",
7343  "sensor_response_za_grid", "sensor_response_aa_grid" ),
7344  GIN( "polyorder", "nfill" ),
7345  GIN_TYPE( "Index", "Index" ),
7346  GIN_DEFAULT( "3", "2" ),
7347  GIN_DESC( "Polynomial order of interpolation",
7348  "Number of points to insert in each gap of f_grid" )
7349  ));
7350 
7351  md_data_raw.push_back
7352  ( MdRecord
7353  ( NAME( "sensor_responseBackendFrequencySwitching" ),
7354  DESCRIPTION
7355  (
7356  "Frequency switching for a pure SSB reciever.\n"
7357  "\n"
7358  "This function can be used for simulation of frequency switching.\n"
7359  "That is, when the final spectrum is the difference of two spectra\n"
7360  "shifted in frequency. The switching is performed by the LO, but\n"
7361  "for a pure singel sideband reciever this is most easily simulated\n"
7362  "by instead shifting the backend, as done here.\n"
7363  "\n"
7364  "A strightforward frequency switching is modelled (no folding)\n"
7365  "The channel positions for the first measurement cycle are\n"
7366  "f_backend+df1, and for the second f_backend+df2. The first\n"
7367  "measurement cycle is given the negive weight. That is, the output\n"
7368  "is the spectrum for cycle2 minus the spectrum for cycle1.\n"
7369  "Output frequency grids are set to *f_backend*.\n"
7370  "\n"
7371  "Use *sensor_responseFrequencySwitching* for double sideband cases.\n"
7372  "\n"
7373  "The method has the same general functionality as, and can replace,\n"
7374  "*sensor_responseBackend*.\n"
7375  ),
7376  AUTHORS( "Patrick Eriksson" ),
7377  OUT( "sensor_response", "sensor_response_f", "sensor_response_pol",
7378  "sensor_response_za", "sensor_response_aa",
7379  "sensor_response_f_grid" ),
7380  GOUT(),
7381  GOUT_TYPE(),
7382  GOUT_DESC(),
7383  IN( "sensor_response", "sensor_response_f", "sensor_response_pol",
7384  "sensor_response_za", "sensor_response_aa",
7385  "sensor_response_f_grid", "sensor_response_pol_grid",
7386  "sensor_response_za_grid", "sensor_response_aa_grid",
7387  "f_backend", "backend_channel_response", "sensor_norm" ),
7388  GIN( "df_1", "df2" ),
7389  GIN_TYPE( "Numeric", "Numeric" ),
7390  GIN_DEFAULT( NODEF, NODEF ),
7391  GIN_DESC( "Frequency throw for cycle1.", "Frequency throw for cycle2.")
7392  ));
7393 
7394  md_data_raw.push_back
7395  ( MdRecord
7396  ( NAME( "sensor_responseBeamSwitching" ),
7397  DESCRIPTION
7398  (
7399  "Simulation of \"beam switching\".\n"
7400  "\n"
7401  "The measurement procedure is based on taking the difference between\n"
7402  "two spectra measured in different directions, and the calculation\n"
7403  "set-up must treat exactly two observation directions.\n"
7404  "\n"
7405  "The returned spectrum is y = w1*y + w2*y2, where y1 and w1 are the\n"
7406  "spectrum and weight for the first direction, respectively (y2 and\n"
7407  "(w2 defined correspondingly for the second direction).\n"
7408  "\n"
7409  "Zenith and azimuth angles after beam switching are set to the\n"
7410  "values of the second direction.\n"
7411  ),
7412  AUTHORS( "Patrick Eriksson" ),
7413  OUT( "sensor_response", "sensor_response_f", "sensor_response_pol",
7414  "sensor_response_za", "sensor_response_aa",
7415  "sensor_response_za_grid", "sensor_response_aa_grid" ),
7416  GOUT(),
7417  GOUT_TYPE(),
7418  GOUT_DESC(),
7419  IN( "sensor_response", "sensor_response_f", "sensor_response_pol",
7420  "sensor_response_za", "sensor_response_aa",
7421  "sensor_response_f_grid", "sensor_response_pol_grid",
7422  "sensor_response_za_grid", "sensor_response_aa_grid" ),
7423  GIN( "w1", "w2" ),
7424  GIN_TYPE( "Numeric", "Numeric" ),
7425  GIN_DEFAULT( "-1", "1" ),
7426  GIN_DESC( "Weight for values from first viewing direction.",
7427  "Weight for values from second viewing direction."
7428  )
7429  ));
7430 
7431  md_data_raw.push_back
7432  ( MdRecord
7433  ( NAME( "sensor_responseFrequencySwitching" ),
7434  DESCRIPTION
7435  (
7436  "Simulation of \"frequency switching\".\n"
7437  "\n"
7438  "A general method for frequency switching. The WSM\n"
7439  "*sensor_responseBackendFrequencySwitching* gives a description of\n"
7440  "this observation technique, and is also a more straightforward\n"
7441  " method for pure singel sideband cases.\n"
7442  "\n"
7443  "It is here assume that *sensor_responseMultiMixerBackend* has been\n"
7444  "used to calculate the spectrum for two LO positions. This method\n"
7445  "calculates the difference between these two spectra, where the\n"
7446  "second spectrum gets weight 1 and the first weight -1 (as in\n"
7447  "*sensor_responseBackendFrequencySwitching*).\n"
7448  "\n"
7449  "Output frequency grids are taken from the second spectrum..\n"
7450  ),
7451  AUTHORS( "Patrick Eriksson" ),
7452  OUT( "sensor_response", "sensor_response_f", "sensor_response_pol",
7453  "sensor_response_za", "sensor_response_aa",
7454  "sensor_response_f_grid" ),
7455  GOUT(),
7456  GOUT_TYPE(),
7457  GOUT_DESC(),
7458  IN( "sensor_response", "sensor_response_f", "sensor_response_pol",
7459  "sensor_response_za", "sensor_response_aa",
7460  "sensor_response_f_grid", "sensor_response_pol_grid",
7461  "sensor_response_za_grid", "sensor_response_aa_grid" ),
7462  GIN(),
7463  GIN_TYPE(),
7464  GIN_DEFAULT(),
7465  GIN_DESC()
7466  ));
7467 
7468  md_data_raw.push_back
7469  ( MdRecord
7470  ( NAME( "sensor_responseFromArrayData" ),
7471  DESCRIPTION
7472  (
7473  "Sets up *sensor_response_array* from an existing *sensor_response*.\n"
7474  "\n"
7475  "Fills *sensor_response_array* and associated variables with\n"
7476  "corresponding non-array data. Hence, the array variables get all a\n"
7477  "length of 1.\n"
7478  ),
7479  AUTHORS( "Patrick Eriksson" ),
7480  OUT( "sensor_response", "sensor_response_f", "sensor_response_pol",
7481  "sensor_response_za", "sensor_response_aa" ),
7482  GOUT(),
7483  GOUT_TYPE(),
7484  GOUT_DESC(),
7485  IN( "imblock", "sensor_response_array", "sensor_response_f_array",
7486  "sensor_response_pol_array", "sensor_response_za_array",
7487  "sensor_response_aa_array", "sensor_response_index" ),
7488  GIN(),
7489  GIN_TYPE(),
7490  GIN_DEFAULT(),
7491  GIN_DESC()
7492  ));
7493 
7494  md_data_raw.push_back
7495  ( MdRecord
7496  ( NAME( "sensor_responseIF2RF" ),
7497  DESCRIPTION
7498  (
7499  "Converts sensor response variables from IF to RF.\n"
7500  "\n"
7501  "The function converts intermediate frequencies (IF) in\n"
7502  "*sensor_response_f* and *sensor_response_f_grid* to radio\n"
7503  "frequencies (RF). This conversion is needed if the frequency\n"
7504  "translation of a mixer is included and the position of backend\n"
7505  "channels are specified in RF.\n"
7506  "\n"
7507  "A direct frequency conversion is performed. Values are not\n"
7508  "sorted in any way.\n"
7509  ),
7510  AUTHORS( "Patrick Eriksson" ),
7511  OUT( "sensor_response_f", "sensor_response_f_grid" ),
7512  GOUT(),
7513  GOUT_TYPE(),
7514  GOUT_DESC(),
7515  IN( "sensor_response_f", "sensor_response_f_grid", "lo",
7516  "sideband_mode" ),
7517  GIN(),
7518  GIN_TYPE(),
7519  GIN_DEFAULT(),
7520  GIN_DESC()
7521  ));
7522 
7523  md_data_raw.push_back
7524  ( MdRecord
7525  ( NAME( "sensor_responseInit" ),
7526  DESCRIPTION
7527  (
7528  "Initialises the variables summarising the sensor response.\n"
7529  "\n"
7530  "This method sets the variables to match monochromatic pencil beam\n"
7531  "calculations, to be further modified by inclusion of sensor\n"
7532  "characteristics. Use *sensorOff* if pure monochromatic pencil\n"
7533  "beam calculations shall be performed.\n"
7534  "\n"
7535  "The variables are set as follows:\n"
7536  " sensor_response : Identity matrix, with size matching *f_grid*,\n"
7537  " *stokes_dim* *mblock_za_grid* and\n"
7538  " *mblock_aa_grid*.\n"
7539  " sensor_response_f : Repeated values of *f_grid*.\n"
7540  " sensor_response_pol : Data matching *stokes_dim*.\n"
7541  " sensor_response_za : Repeated values of *mblock_za_grid*.\n"
7542  " sensor_response_aa : Repeated values of *mblock_aa_grid*.\n"
7543  " sensor_response_f_grid : Equal to *f_grid*.\n"
7544  " sensor_response_pol_grid: Set to 1:*stokes_dim*.\n"
7545  " sensor_response_za_grid : Equal to *mblock_za_grid*.\n"
7546  " sensor_response_aa_grid : Equal to *mblock_aa_grid*.\n"
7547  ),
7548  AUTHORS( "Mattias Ekstrom", "Patrick Eriksson" ),
7549  OUT( "sensor_response", "sensor_response_f", "sensor_response_pol",
7550  "sensor_response_za", "sensor_response_aa",
7551  "sensor_response_f_grid", "sensor_response_pol_grid",
7552  "sensor_response_za_grid", "sensor_response_aa_grid" ),
7553  GOUT(),
7554  GOUT_TYPE(),
7555  GOUT_DESC(),
7556  IN( "f_grid", "mblock_za_grid", "mblock_aa_grid", "antenna_dim",
7557  "atmosphere_dim", "stokes_dim", "sensor_norm" ),
7558  GIN(),
7559  GIN_TYPE(),
7560  GIN_DEFAULT(),
7561  GIN_DESC()
7562  ));
7563 
7564  md_data_raw.push_back
7565  ( MdRecord
7566  ( NAME( "sensor_responseMixer" ),
7567  DESCRIPTION
7568  (
7569  "Includes response of the mixer of a heterodyne system.\n"
7570  "\n"
7571  "The function returns the sensor response matrix after the mixer\n"
7572  "characteristics have been included. Frequency variables are\n"
7573  "converted from radio frequency (RF) to intermediate frequency (IF).\n"
7574  "The returned frequency grid covers the range [0,max_if], where\n"
7575  "max_if is the highest IF covered by the sideband response grid.\n"
7576  "\n"
7577  "See *lo* and *sideband_response* for details on how to specify the\n"
7578  "mixer response\n"
7579  ),
7580  AUTHORS( "Mattias Ekstrom", "Patrick Eriksson" ),
7581  OUT( "sensor_response", "sensor_response_f", "sensor_response_pol",
7582  "sensor_response_za", "sensor_response_aa",
7583  "sensor_response_f_grid" ),
7584  GOUT(),
7585  GOUT_TYPE(),
7586  GOUT_DESC(),
7587  IN( "sensor_response", "sensor_response_f", "sensor_response_pol",
7588  "sensor_response_za", "sensor_response_aa", "sensor_response_f_grid",
7589  "sensor_response_pol_grid", "sensor_response_za_grid",
7590  "sensor_response_aa_grid", "lo", "sideband_response", "sensor_norm" ),
7591  GIN(),
7592  GIN_TYPE(),
7593  GIN_DEFAULT(),
7594  GIN_DESC()
7595  ));
7596 
7597  md_data_raw.push_back
7598  ( MdRecord
7599  ( NAME( "sensor_responseMultiMixerBackend" ),
7600  DESCRIPTION
7601  (
7602  "Handles mixer and backend parts for an instrument having multiple\n"
7603  "mixer chains.\n"
7604  "\n"
7605  "The WSMs *sensor_responseMixer*, *sensor_responseIF2RF* and\n"
7606  "*sensor_responseBackend* are called for each mixer chain, and a\n"
7607  "complete *sensor_response* is assembled. The instrument responses\n"
7608  "are described by *lo_multi*, *sideband_response_multi*,\n"
7609  "*sideband_mode_multi*, *f_backend_multi* and\n"
7610  "*backend_channel_response_multi*. All these WSVs must have same\n"
7611  "vector or array length. As *sensor_responseIF2RF* is called,\n"
7612  "*f_backend_multi* must hold RF (not IF) and output frequencies\n"
7613  "will be in absolute frequency (RF).\n"
7614  ),
7615  AUTHORS( "Patrick Eriksson" ),
7616  OUT( "sensor_response", "sensor_response_f", "sensor_response_pol",
7617  "sensor_response_za", "sensor_response_aa",
7618  "sensor_response_f_grid" ),
7619  GOUT(),
7620  GOUT_TYPE(),
7621  GOUT_DESC(),
7622  IN( "sensor_response", "sensor_response_f", "sensor_response_pol",
7623  "sensor_response_za", "sensor_response_aa",
7624  "sensor_response_f_grid", "sensor_response_pol_grid",
7625  "sensor_response_za_grid", "sensor_response_aa_grid",
7626  "lo_multi", "sideband_response_multi",
7627  "sideband_mode_multi", "f_backend_multi",
7628  "backend_channel_response_multi", "sensor_norm" ),
7629  GIN(),
7630  GIN_TYPE(),
7631  GIN_DEFAULT(),
7632  GIN_DESC()
7633  ));
7634 
7635  md_data_raw.push_back
7636  ( MdRecord
7637  ( NAME( "sensor_responsePolarisation" ),
7638  DESCRIPTION
7639  (
7640  "Extraction of non-default polarisation components.\n"
7641  "\n"
7642  "The default is to output the Stokes elements I, Q, U and V (up to\n"
7643  "*stokes_dim*). This method allows to change the \"polarisation\" of\n"
7644  "the output. Polarisation components to be extracted are selected by\n"
7645  "*sensor_pol*. This method can be applied at any step of the sensor\n"
7646  "matrix set-up.\n"
7647  "\n"
7648  "The method can only be applied on data for I, Q, U and V. The value\n"
7649  "of *stokes_dim* must be sufficiently large for the selected\n"
7650  "components. For example, I+45 requires that *stokes_dim* is at\n"
7651  "least 3. \n"
7652  "\n"
7653  "See *sensor_pol* for coding of polarisation states.\n"
7654  "\n"
7655  "Note that the state of *y_unit* is considered. This WSV must give\n"
7656  "the actual unit of the data. This as, the extraction of components\n"
7657  "is slightly different if data are radiances or brightness\n"
7658  "temperatures. In practise this means that *y_unit* (as to be\n"
7659  "applied inside *yCalc*) must be set before calling this method.\n"
7660  ),
7661  AUTHORS( "Patrick Eriksson" ),
7662  OUT( "sensor_response", "sensor_response_f", "sensor_response_pol",
7663  "sensor_response_za", "sensor_response_aa",
7664  "sensor_response_pol_grid" ),
7665  GOUT(),
7666  GOUT_TYPE(),
7667  GOUT_DESC(),
7668  IN( "sensor_response", "sensor_response_f", "sensor_response_pol",
7669  "sensor_response_za", "sensor_response_aa", "sensor_response_f_grid",
7670  "sensor_response_pol_grid", "sensor_response_za_grid",
7671  "sensor_response_aa_grid", "stokes_dim", "y_unit", "sensor_pol" ),
7672  GIN(),
7673  GIN_TYPE(),
7674  GIN_DEFAULT(),
7675  GIN_DESC()
7676  ));
7677 
7678  md_data_raw.push_back
7679  ( MdRecord
7680  ( NAME( "sensor_responseSimpleAMSU" ),
7681  DESCRIPTION
7682  (
7683  "Simplified sensor setup for an AMSU-type instrument.\n"
7684  "\n"
7685  "This method allows quick and simple definition of AMSU-type\n"
7686  "sensors. Assumptions:\n"
7687  "\n"
7688  "1. Pencil beam antenna.\n"
7689  "2. Douple sideband receivers.\n"
7690  "3. Sideband mode \"upper\"\n"
7691  "4. The channel response is rectangular.\n"
7692  "\n"
7693  "Under these assumptions the only inputs needed are the LO positions,\n"
7694  "the offsets from the LO, and the IF bandwidths. They are provieded\n"
7695  "in sensor_description_amsu.\n"
7696  ),
7697  AUTHORS( "Stefan Buehler" ),
7698  OUT( "f_grid",
7699  "antenna_dim",
7700  "mblock_za_grid",
7701  "mblock_aa_grid",
7702  "sensor_response",
7703  "sensor_response_f",
7704  "sensor_response_pol",
7705  "sensor_response_za",
7706  "sensor_response_aa",
7707  "sensor_response_f_grid",
7708  "sensor_response_pol_grid",
7709  "sensor_response_za_grid",
7710  "sensor_response_aa_grid",
7711  "sensor_norm"
7712  ),
7713  GOUT(),
7714  GOUT_TYPE(),
7715  GOUT_DESC(),
7716  IN( "atmosphere_dim",
7717  "stokes_dim",
7718  "sensor_description_amsu" ),
7719  GIN( "spacing" ),
7720  GIN_TYPE( "Numeric" ),
7721  GIN_DEFAULT( ".1e9" ),
7722  GIN_DESC( "Desired grid spacing in Hz." )
7723  ));
7724 
7725  /* Not yet updated
7726  md_data_raw.push_back
7727  ( MdRecord
7728  ( NAME( "sensor_responsePolarisation" ),
7729  DESCRIPTION
7730  (
7731  "Adds polarisation to the response matrix.\n"
7732  "\n"
7733  "The output polarisations are given by matrix *sensor_pol*.\n"
7734  ),
7735  AUTHORS( "Mattias Ekstrom" ),
7736  OUT( "sensor_response", "sensor_response_pol" ),
7737  GOUT(),
7738  GOUT_TYPE(),
7739  GOUT_DESC(),
7740  IN( "sensor_pol", "sensor_response_za", "sensor_response_aa",
7741  "sensor_response_f", "stokes_dim" ),
7742  GIN(),
7743  GIN_TYPE(),
7744  GIN_DEFAULT(),
7745  GIN_DESC()
7746  ));
7747  */
7748 
7749  /* Not yet updated
7750  md_data_raw.push_back
7751  ( MdRecord
7752  ( NAME( "sensor_responseRotation" ),
7753  DESCRIPTION
7754  (
7755  "Adds rotation to the response matrix.\n"
7756  "\n"
7757  "The rotations are given by *sensor_rot* combined with *antenna_los*.\n"
7758  "The rotations are performed within each measurement block for the\n"
7759  "individual antennae.\n"
7760  "\n"
7761  "If used this method has to be run after the antenna response\n"
7762  "function and prior to sensor_responsePolarisation.\n"
7763  ),
7764  AUTHORS( "Mattias Ekstrom" ),
7765  OUT( "sensor_response" ),
7766  GOUT(),
7767  GOUT_TYPE(),
7768  GOUT_DESC(),
7769  IN( "sensor_rot", "antenna_los", "antenna_dim", "stokes_dim",
7770  "sensor_response_f", "sensor_response_za" ),
7771  GIN(),
7772  GIN_TYPE(),
7773  GIN_DEFAULT(),
7774  GIN_DESC()
7775  ));
7776  */
7777 
7778  md_data_raw.push_back
7779  ( MdRecord
7780  ( NAME( "sensor_responseWMRF" ),
7781  DESCRIPTION
7782  (
7783  "Adds WMRF weights to sensor response.\n"
7784  "\n"
7785  "This method adds a spectrometer response that has been calculated\n"
7786  "with the weighted mean of representative frequencies (WMRF) method. It\n"
7787  "consists of a set of selected frequencies, and associated weights.\n"
7788  ),
7789  AUTHORS( "Stefan Buehler, based on Patrick Erikssons sensor_responseBackend" ),
7790  OUT( "sensor_response",
7791  "sensor_response_f",
7792  "sensor_response_pol",
7793  "sensor_response_za",
7794  "sensor_response_aa",
7795  "sensor_response_f_grid"),
7796  GOUT(),
7797  GOUT_TYPE(),
7798  GOUT_DESC(),
7799  IN( "sensor_response", "sensor_response_f", "sensor_response_pol",
7800  "sensor_response_za", "sensor_response_aa",
7801  "sensor_response_f_grid", "sensor_response_pol_grid",
7802  "sensor_response_za_grid", "sensor_response_aa_grid",
7803  "wmrf_weights",
7804  "f_backend" ),
7805  GIN(),
7806  GIN_TYPE(),
7807  GIN_DEFAULT(),
7808  GIN_DESC()
7809  ));
7810 
7811  md_data_raw.push_back
7812  ( MdRecord
7813  ( NAME( "sensor_response_arraySingle" ),
7814  DESCRIPTION
7815  (
7816  "Sets up *sensor_response_array* from an existing *sensor_response*.\n"
7817  "\n"
7818  "Fills *sensor_response_array* and associated variables with\n"
7819  "corresponding non-array data. Hence, the array variables get all a\n"
7820  "length of 1.\n"
7821  ),
7822  AUTHORS( "Patrick Eriksson" ),
7823  OUT( "sensor_response_array", "sensor_response_f_array",
7824  "sensor_response_pol_array", "sensor_response_za_array",
7825  "sensor_response_aa_array" ),
7826  GOUT(),
7827  GOUT_TYPE(),
7828  GOUT_DESC(),
7829  IN( "sensor_response", "sensor_response_f", "sensor_response_pol",
7830  "sensor_response_za", "sensor_response_aa" ),
7831  GIN(),
7832  GIN_TYPE(),
7833  GIN_DEFAULT(),
7834  GIN_DESC()
7835  ));
7836 
7837  md_data_raw.push_back
7838  ( MdRecord
7839  ( NAME( "SparseSparseMultiply" ),
7840  DESCRIPTION
7841  (
7842  "Multiplies a Sparse with another Sparse, result stored in Sparse.\n"
7843  "\n"
7844  "Makes the calculation gout: = gin1 * gin2\n"
7845  ),
7846  AUTHORS( "Patrick Eriksson" ),
7847  OUT(),
7848  GOUT( "gout" ),
7849  GOUT_TYPE( "Sparse" ),
7850  GOUT_DESC( "Product, can be same variable as any of the inputs." ),
7851  IN(),
7852  GIN( "gin1" , "gin2" ),
7853  GIN_TYPE( "Sparse", "Sparse" ),
7854  GIN_DEFAULT( NODEF , NODEF ),
7855  GIN_DESC( "Left sparse matrix.",
7856  "Right sparse matrix." )
7857  ));
7858 
7859  // This is duplicate with the 1-0 method tgsDefine. Merge!
7860  md_data_raw.push_back
7861  ( MdRecord
7862  ( NAME( "SpeciesSet" ),
7863  DESCRIPTION
7864  (
7865  "Set up a list of absorption species tag groups.\n"
7866  "\n"
7867  "Workspace variables like *abs_species* contain several tag\n"
7868  "groups. Each tag group contains one or more tags. This method converts\n"
7869  "descriptions of tag groups given in the keyword to the ARTS internal\n"
7870  "representation (an *ArrayOfArrayOfSpeciesTag*). A tag group selects\n"
7871  "spectral features which belong to the same species.\n"
7872  "\n"
7873  "A tag is defined in terms of the name of the species, isotope, and a\n"
7874  "range of frequencies. Species are named after the standard chemical\n"
7875  "names, e.g., \"O3\". Isotopes are given by the last digit of the atomic\n"
7876  "weight, i.g., \"O3-668\" for the asymmetric ozone molecule including an\n"
7877  "oxygen 18 atom. Groups of transitions are specified by giving a lower\n"
7878  "and upper limit of a frequency range, e.g., \"O3-666-500e9-501e9\".\n"
7879  "\n"
7880  "The symbol \"*\" acts as a wild card. Furthermore, frequency range or\n"
7881  "frequency range and isotope may be omitted.\n"
7882  "\n"
7883  "Finally, instead of the isotope the special letter \"nl\" may be given,\n"
7884  "e.g., \"H2O-nl\". This means that no absorption at all is associated\n"
7885  "with this tag. (It is not quite clear if this feature is useful for\n"
7886  "anything right now.)\n"
7887  "\n"
7888  "This method used to be a specific method for *abs_species*. Now it is\n"
7889  "generic, so that it can also be used to set *abs_nls* and *abs_pts*.\n"
7890  "\n"
7891  "Example:\n"
7892  "\n"
7893  " species = [ \"O3-666-500e9-501e9, O3-686\",\n"
7894  " \"O3\",\n"
7895  " \"H2O-PWR98\" ]\n"
7896  "\n"
7897  " The first tag group selects all O3-666 lines between 500 and\n"
7898  " 501 GHz plus all O3-686 lines. \n"
7899  "\n"
7900  " The second tag group selects all remaining O3 transitions.\n"
7901  "\n"
7902  " The third tag group selects H2O, with one of the complete\n"
7903  " absorption models (Rosenkranz 98). No spectrocopic line catalogue\n"
7904  " data will be used for that third tag group.\n"
7905  ),
7906  AUTHORS( "Stefan Buehler" ),
7907  OUT(),
7908  GOUT( "gout1" ),
7909  GOUT_TYPE( "ArrayOfArrayOfSpeciesTag" ),
7910  GOUT_DESC( "Output tag groups" ),
7911  IN(),
7912  GIN( "species" ),
7913  GIN_TYPE( "ArrayOfString" ),
7914  GIN_DEFAULT( NODEF ),
7915  GIN_DESC("Specify one String for each tag group that you want to\n"
7916  "create. Inside the String, separate the tags by commas\n"
7917  "(plus optional blanks).\n")
7918  ));
7919 
7920 
7921  md_data_raw.push_back
7922  ( MdRecord
7923  ( NAME( "StringSet" ),
7924  DESCRIPTION
7925  (
7926  "Sets a String to the given text string.\n"
7927  ),
7928  AUTHORS( "Patrick Eriksson" ),
7929  OUT(),
7930  GOUT( "s" ),
7931  GOUT_TYPE( "String" ),
7932  GOUT_DESC( "Variable to initialize." ),
7933  IN(),
7934  GIN( "text" ),
7935  GIN_TYPE( "String" ),
7936  GIN_DEFAULT( NODEF ),
7937  GIN_DESC( "Input text string." ),
7938  SETMETHOD( true )
7939  ));
7940 
7941  md_data_raw.push_back
7942  ( MdRecord
7943  ( NAME( "surfaceBlackbody" ),
7944  DESCRIPTION
7945  (
7946  "Creates variables to mimic a blackbody surface.\n"
7947  "\n"
7948  "This method sets up *surface_los*, *surface_rmatrix* and\n"
7949  "*surface_emission* for *surface_prop_agenda*. Here, *surface_los*\n"
7950  "and *surface_rmatrix* are set to be empty, and *surface_emission*\n"
7951  "to hold blackbody radiation for a temperature of *surface_skin_t*.\n"
7952  ),
7953  AUTHORS( "Patrick Eriksson" ),
7954  OUT( "surface_los", "surface_rmatrix", "surface_emission" ),
7955  GOUT(),
7956  GOUT_TYPE(),
7957  GOUT_DESC(),
7958  IN( "f_grid", "stokes_dim", "surface_skin_t" ),
7959  GIN(),
7960  GIN_TYPE(),
7961  GIN_DEFAULT(),
7962  GIN_DESC()
7963  ));
7964 
7965  md_data_raw.push_back
7966  ( MdRecord
7967  ( NAME( "surfaceFlatReflectivity" ),
7968  DESCRIPTION
7969  (
7970  "Creates variables to mimic specular reflection by a (flat) surface\n"
7971  "where the reflectivity is specified.\n"
7972  "\n"
7973  "The surface is treated to be flat, and the same (amplitude)\n"
7974  "reflectivity is assumed for vertical and horisontal polarisation.\n"
7975  "This assumption results in a pure diagonal *surface_rmatrix* (see\n"
7976  "surface chapter in AUG).\n"
7977  "\n"
7978  "Local thermodynamic equilibrium is assumed, which corresponds to\n"
7979  "that reflectivity and emissivity add up to 1. The\n"
7980  "emission is unpolarised here.\n"
7981  ),
7982  AUTHORS( "Patrick Eriksson" ),
7983  OUT( "surface_los", "surface_rmatrix", "surface_emission" ),
7984  GOUT(),
7985  GOUT_TYPE(),
7986  GOUT_DESC(),
7987  IN( "f_grid", "stokes_dim", "atmosphere_dim", "rte_los",
7988  "surface_skin_t", "surface_scalar_reflectivity" ),
7989  GIN(),
7990  GIN_TYPE(),
7991  GIN_DEFAULT(),
7992  GIN_DESC()
7993  ));
7994 
7995  md_data_raw.push_back
7996  ( MdRecord
7997  ( NAME( "surfaceFlatRefractiveIndex" ),
7998  DESCRIPTION
7999  (
8000  "Creates variables to mimic specular reflection by a (flat) surface\n"
8001  "where the refracive index is specified.\n"
8002  "\n"
8003  "The dielectric properties of the surface are described by\n"
8004  "*complex_n*. The Fresnel eqiuations are used to calculate\n"
8005  "amplitude reflection coefficients. The method can thus result\n"
8006  "in that the reflection properties differ between frequencies\n"
8007  "and polarizations."
8008  "\n"
8009  "Local thermodynamic equilibrium is assumed, which corresponds to\n"
8010  "that the reflection and emission coefficients add up to 1.\n"
8011  ),
8012  AUTHORS( "Patrick Eriksson" ),
8013  OUT( "surface_los", "surface_rmatrix", "surface_emission" ),
8014  GOUT(),
8015  GOUT_TYPE(),
8016  GOUT_DESC(),
8017  IN( "f_grid", "stokes_dim", "atmosphere_dim", "rte_los",
8018  "surface_skin_t", "complex_n" ),
8019  GIN(),
8020  GIN_TYPE(),
8021  GIN_DEFAULT(),
8022  GIN_DESC()
8023  ));
8024 
8025  md_data_raw.push_back
8026  ( MdRecord
8027  ( NAME( "surfaceFlatSingleEmissivity" ),
8028  DESCRIPTION
8029  (
8030  "Creates variables to mimic specular reflection by a (flat) surface\n"
8031  "where the emissivity is specified.\n"
8032  "\n"
8033  "As *surfaceFlatVaryingEmissivity*, but assumes that the emissivity\n"
8034  "does not vary with frequency. The emissivity can be defined with a\n"
8035  "a varying degree of complexity and there is no specific workspace\n"
8036  "variable defined to hold the emissivity. You have to define the\n"
8037  "'surface_emissivity' to match your needs.\n"
8038  ),
8039  AUTHORS( "Patrick Eriksson" ),
8040  OUT( "surface_los", "surface_rmatrix", "surface_emission" ),
8041  GOUT(),
8042  GOUT_TYPE(),
8043  GOUT_DESC(),
8044  IN( "f_grid", "stokes_dim", "atmosphere_dim", "rte_los",
8045  "surface_skin_t" ),
8046  GIN( "surface_emissivity" ),
8047  GIN_TYPE( "Numeric" ),
8048  GIN_DEFAULT( NODEF ),
8049  GIN_DESC( "The emissivity, a value between 0 and 1." )
8050  ));
8051 
8052  md_data_raw.push_back
8053  ( MdRecord
8054  ( NAME( "surfaceFlatVaryingEmissivity" ),
8055  DESCRIPTION
8056  (
8057  "Creates variables to mimic specular reflection by a (flat) surface\n"
8058  "where the emissivity is specified.\n"
8059  "\n"
8060  "The usage of emissivity does not provide any polarisation\n"
8061  "information and it is only formally correct to use this method\n"
8062  "for *stokes_dim* = 1 (but there is no hard-coded restriction).\n"
8063  "\n"
8064  "Local thermodynamic equilibrium is assumed, which corresponds to\n"
8065  "that the reflection and emission coefficients add up to 1.\n"
8066  "\n"
8067  "As *surfaceFlatSingleEmissivity*, but assumes that the emissivity\n"
8068  "varies with frequency. The emissivity can be defined with a\n"
8069  "a varying degree of complexity and there is no specific workspace\n"
8070  "variable defined to hold the emissivity. You have to define the\n"
8071  "'surface_emissivity' to match your needs.\n"
8072  ),
8073  AUTHORS( "Patrick Eriksson" ),
8074  OUT( "surface_los", "surface_rmatrix", "surface_emission" ),
8075  GOUT(),
8076  GOUT_TYPE(),
8077  GOUT_DESC(),
8078  IN( "f_grid", "stokes_dim", "atmosphere_dim", "rte_los",
8079  "surface_skin_t" ),
8080  GIN( "surface_emissivity" ),
8081  GIN_TYPE( "Vector" ),
8082  GIN_DEFAULT( NODEF ),
8083  GIN_DESC( "The emissivity, for each frequency in *f_grid*. Values "
8084  "between 0 and 1."
8085  )
8086  ));
8087 
8088  md_data_raw.push_back
8089  ( MdRecord
8090  ( NAME( "surfaceLambertianSimple" ),
8091  DESCRIPTION
8092  (
8093  "Creates variables to mimic a Lambertian surface, ignoring the\n"
8094  "azimuthal dimension.\n"
8095  "\n"
8096  "A lambertian surface can be characterised solely by its\n"
8097  "reflectivity, here taken from *surface_scalar_reflectivity*.\n"
8098  "\n"
8099  "The down-welling radiation field is estimated by making calculations\n"
8100  "for *np* directions. The range of zenith angles ([0,90]) is divided\n"
8101  "in an equidistant manner. The values for *surface_rmatrix* are\n"
8102  "assuming a constant radiance over each zenith angle range. See AUG.\n"
8103  "\n"
8104  "Default is to select the zenith angles for *sensor_los* to be placed\n"
8105  "centrally in the grid ranges. For example, if *np* is set to 9,\n"
8106  "down-welling radiation will be calculated for zenith angles = \n"
8107  "5, 15, ..., 85. The position of these angles can be shifted by\n"
8108  "*za_pos*. This variable specifies the fractional distance inside the\n"
8109  "ranges. For example, a *za_pos* of 0.7 (np still 9) gives the angles\n"
8110  "7, 17, ..., 87.\n"
8111  "Any aziumuth angle in *sensor_los* is set to 0.\n"
8112  "\n"
8113  "Local thermodynamic equilibrium is assumed, which corresponds to\n"
8114  "that the reflection and emission coefficients \"add up to 1\".\n"
8115  ),
8116  AUTHORS( "Patrick Eriksson" ),
8117  OUT( "surface_los", "surface_rmatrix", "surface_emission" ),
8118  GOUT(),
8119  GOUT_TYPE(),
8120  GOUT_DESC(),
8121  IN( "f_grid", "stokes_dim", "atmosphere_dim", "rte_los",
8122  "surface_skin_t", "surface_scalar_reflectivity" ),
8123  GIN( "np", "za_pos" ),
8124  GIN_TYPE( "Index", "Numeric" ),
8125  GIN_DEFAULT( NODEF, "0.5" ),
8126  GIN_DESC( "Number of zenith angles for calculation of down-welling "
8127  "radition.",
8128  "Position of angle in *surface_los* inside ranges of zenith "
8129  "angle grid. See above."
8130  )
8131  ));
8132 
8133  md_data_raw.push_back
8134  ( MdRecord
8135  ( NAME( "Tensor3AddScalar" ),
8136  DESCRIPTION
8137  (
8138  "Adds a scalar value to all elements of a tensor3.\n"
8139  "\n"
8140  "The result can either be stored in the same or another\n"
8141  "variable.\n"
8142  ),
8143  AUTHORS( "Patrick Eriksson" ),
8144  OUT(),
8145  GOUT( "tout" ),
8146  GOUT_TYPE( "Tensor3" ),
8147  GOUT_DESC( "Output tensor." ),
8148  IN(),
8149  GIN( "tin", "value" ),
8150  GIN_TYPE( "Tensor3", "Numeric" ),
8151  GIN_DEFAULT( NODEF , NODEF ),
8152  GIN_DESC( "Input tensor.",
8153  "The value to be added to the tensor." )
8154  ));
8155 
8156  md_data_raw.push_back
8157  ( MdRecord
8158  ( NAME( "Tensor3Scale" ),
8159  DESCRIPTION
8160  (
8161  "Scales all elements of a tensor with the specified value.\n"
8162  "\n"
8163  "The result can either be stored in the same or another\n"
8164  "variable.\n"
8165  ),
8166  AUTHORS( "Mattias Ekstrom" ),
8167  OUT(),
8168  GOUT( "tout" ),
8169  GOUT_TYPE( "Tensor3" ),
8170  GOUT_DESC( "Output tensor." ),
8171  IN(),
8172  GIN( "tin", "value" ),
8173  GIN_TYPE( "Tensor3", "Numeric" ),
8174  GIN_DEFAULT( NODEF , NODEF ),
8175  GIN_DESC( "Input tensor.",
8176  "The value to be multiplied with the tensor." )
8177  ));
8178 
8179  md_data_raw.push_back
8180  ( MdRecord
8181  ( NAME( "Tensor3SetConstant" ),
8182  DESCRIPTION
8183  (
8184  "Creates a tensor and sets all elements to the specified value.\n"
8185  "\n"
8186  "The size is determined by *ncols*, *nrows* etc.\n"
8187  ),
8188  AUTHORS( "Claudia Emde" ),
8189  OUT(),
8190  GOUT( "t" ),
8191  GOUT_TYPE( "Tensor3" ),
8192  GOUT_DESC( "Variable to initialize." ),
8193  IN( "npages", "nrows", "ncols" ),
8194  GIN( "value" ),
8195  GIN_TYPE( "Numeric" ),
8196  GIN_DEFAULT( NODEF ),
8197  GIN_DESC( "Tensor value." )
8198  ));
8199 
8200  md_data_raw.push_back
8201  ( MdRecord
8202  ( NAME( "Tensor4Scale" ),
8203  DESCRIPTION
8204  (
8205  "Scales all elements of a tensor with the specified value.\n"
8206  "\n"
8207  "The result can either be stored in the same or another\n"
8208  "variable.\n"
8209  ),
8210  AUTHORS( "Mattias Ekstrom" ),
8211  OUT(),
8212  GOUT( "tout" ),
8213  GOUT_TYPE( "Tensor4" ),
8214  GOUT_DESC( "Output tensor." ),
8215  IN(),
8216  GIN( "tin", "value" ),
8217  GIN_TYPE( "Tensor4", "Numeric" ),
8218  GIN_DEFAULT( NODEF , NODEF ),
8219  GIN_DESC( "Input tensor.",
8220  "The value to be multiplied with the tensor." )
8221  ));
8222 
8223  md_data_raw.push_back
8224  ( MdRecord
8225  ( NAME( "Tensor4SetConstant" ),
8226  DESCRIPTION
8227  (
8228  "Creates a tensor and sets all elements to the specified value.\n"
8229  "\n"
8230  "The size is determined by *ncols*, *nrows* etc.\n"
8231  ),
8232  AUTHORS( "Claudia Emde" ),
8233  OUT(),
8234  GOUT( "t" ),
8235  GOUT_TYPE( "Tensor4" ),
8236  GOUT_DESC( "Variable to initialize." ),
8237  IN( "nbooks", "npages", "nrows", "ncols" ),
8238  GIN( "value" ),
8239  GIN_TYPE( "Numeric" ),
8240  GIN_DEFAULT( NODEF ),
8241  GIN_DESC( "Tensor value." )
8242  ));
8243 
8244  md_data_raw.push_back
8245  ( MdRecord
8246  ( NAME( "Tensor5Scale" ),
8247  DESCRIPTION
8248  (
8249  "Scales all elements of a tensor with the specified value.\n"
8250  "\n"
8251  "The result can either be stored in the same or another\n"
8252  "variable.\n"
8253  ),
8254  AUTHORS( "Mattias Ekstrom" ),
8255  OUT(),
8256  GOUT( "tout" ),
8257  GOUT_TYPE( "Tensor5" ),
8258  GOUT_DESC( "Output tensor." ),
8259  IN(),
8260  GIN( "tin", "value" ),
8261  GIN_TYPE( "Tensor5", "Numeric" ),
8262  GIN_DEFAULT( NODEF , NODEF ),
8263  GIN_DESC( "Input tensor.",
8264  "The value to be multiplied with the tensor." )
8265  ));
8266 
8267  md_data_raw.push_back
8268  ( MdRecord
8269  ( NAME( "Tensor5SetConstant" ),
8270  DESCRIPTION
8271  (
8272  "Creates a tensor and sets all elements to the specified value.\n"
8273  "\n"
8274  "The size is determined by *ncols*, *nrows* etc.\n"
8275  ),
8276  AUTHORS( "Claudia Emde" ),
8277  OUT(),
8278  GOUT( "t" ),
8279  GOUT_TYPE( "Tensor5" ),
8280  GOUT_DESC( "Variable to initialize." ),
8281  IN( "nshelves", "nbooks", "npages", "nrows", "ncols" ),
8282  GIN( "value" ),
8283  GIN_TYPE( "Numeric" ),
8284  GIN_DEFAULT( NODEF ),
8285  GIN_DESC( "Tensor value." )
8286  ));
8287 
8288  md_data_raw.push_back
8289  ( MdRecord
8290  ( NAME( "Tensor6Scale" ),
8291  DESCRIPTION
8292  (
8293  "Scales all elements of a tensor with the specified value.\n"
8294  "\n"
8295  "The result can either be stored in the same or another\n"
8296  "variable.\n"
8297  ),
8298  AUTHORS( "Mattias Ekstrom" ),
8299  OUT(),
8300  GOUT( "tout" ),
8301  GOUT_TYPE( "Tensor6" ),
8302  GOUT_DESC( "Output tensor." ),
8303  IN(),
8304  GIN( "tin", "value" ),
8305  GIN_TYPE( "Tensor6", "Numeric" ),
8306  GIN_DEFAULT( NODEF , NODEF ),
8307  GIN_DESC( "Input tensor.",
8308  "The value to be multiplied with the tensor." )
8309  ));
8310 
8311  md_data_raw.push_back
8312  ( MdRecord
8313  ( NAME( "Tensor6SetConstant" ),
8314  DESCRIPTION
8315  (
8316  "Creates a tensor and sets all elements to the specified value.\n"
8317  "\n"
8318  "The size is determined by *ncols*, *nrows* etc.\n"
8319  ),
8320  AUTHORS( "Claudia Emde" ),
8321  OUT(),
8322  GOUT( "t" ),
8323  GOUT_TYPE( "Tensor6" ),
8324  GOUT_DESC( "Variable to initialize." ),
8325  IN( "nvitrines", "nshelves", "nbooks", "npages", "nrows", "ncols" ),
8326  GIN( "value" ),
8327  GIN_TYPE( "Numeric" ),
8328  GIN_DEFAULT( NODEF ),
8329  GIN_DESC( "Tensor value." )
8330  ));
8331 
8332  md_data_raw.push_back
8333  ( MdRecord
8334  ( NAME( "Tensor7Scale" ),
8335  DESCRIPTION
8336  (
8337  "Scales all elements of a tensor with the specified value.\n"
8338  "\n"
8339  "The result can either be stored in the same or another\n"
8340  "variable.\n"
8341  ),
8342  AUTHORS( "Mattias Ekstrom" ),
8343  OUT(),
8344  GOUT( "tout" ),
8345  GOUT_TYPE( "Tensor7" ),
8346  GOUT_DESC( "Output tensor." ),
8347  IN(),
8348  GIN( "tin", "value" ),
8349  GIN_TYPE( "Tensor7", "Numeric" ),
8350  GIN_DEFAULT( NODEF , NODEF ),
8351  GIN_DESC( "Input tensor.",
8352  "The value to be multiplied with the tensor." )
8353  ));
8354 
8355  md_data_raw.push_back
8356  ( MdRecord
8357  ( NAME( "Tensor7SetConstant" ),
8358  DESCRIPTION
8359  (
8360  "Creates a tensor and sets all elements to the specified value.\n"
8361  "\n"
8362  "The size is determined by *ncols*, *nrows* etc.\n"
8363  ),
8364  AUTHORS( "Claudia Emde" ),
8365  OUT(),
8366  GOUT( "t" ),
8367  GOUT_TYPE( "Tensor7" ),
8368  GOUT_DESC( "Variable to initialize." ),
8369  IN( "nlibraries", "nvitrines", "nshelves", "nbooks", "npages", "nrows",
8370  "ncols" ),
8371  GIN( "value" ),
8372  GIN_TYPE( "Numeric" ),
8373  GIN_DEFAULT( NODEF ),
8374  GIN_DESC( "Tensor value." )
8375  ));
8376 
8377  md_data_raw.push_back
8378  ( MdRecord
8379  ( NAME( "Test" ),
8380  DESCRIPTION
8381  (
8382  "A dummy method that can be used for test purposes.\n"
8383  "\n"
8384  "This method can be used by ARTS developers to quickly test stuff.\n"
8385  "The implementation is in file m_general.cc. This just saves you the\n"
8386  "trouble of adding a dummy method everytime you want to try\n"
8387  "something out quickly.\n"
8388  ),
8389  AUTHORS( "Patrick Eriksson" ),
8390  OUT(),
8391  GOUT(),
8392  GOUT_TYPE(),
8393  GOUT_DESC(),
8394  IN(),
8395  GIN(),
8396  GIN_TYPE(),
8397  GIN_DEFAULT(),
8398  GIN_DESC()
8399  ));
8400 
8401  md_data_raw.push_back
8402  ( MdRecord
8403  ( NAME( "timerStart" ),
8404  DESCRIPTION
8405  (
8406  "Initializes the CPU timer."
8407  "\n"
8408  "Use *timerStop* to output the consumed cpu time since *timerStart*.\n"
8409  "\n"
8410  "Usage example:\n"
8411  " timerStart\n"
8412  " ReadXML(f_grid,\"frequencies.xml\")\n"
8413  " timerStop\n"
8414  ),
8415  AUTHORS( "Oliver Lemke" ),
8416  OUT( "timer" ),
8417  GOUT(),
8418  GOUT_TYPE(),
8419  GOUT_DESC(),
8420  IN(),
8421  GIN(),
8422  GIN_TYPE(),
8423  GIN_DEFAULT(),
8424  GIN_DESC()
8425  ));
8426 
8427  md_data_raw.push_back
8428  ( MdRecord
8429  ( NAME( "timerStop" ),
8430  DESCRIPTION
8431  (
8432  "Stops the CPU timer."
8433  "\n"
8434  "Use *timerStop* to output the consumed cpu time since *timerStart*.\n"
8435  "See *timerStart* for example usage.\n"
8436  ),
8437  AUTHORS( "Oliver Lemke" ),
8438  OUT(),
8439  GOUT(),
8440  GOUT_TYPE(),
8441  GOUT_DESC(),
8442  IN( "timer" ),
8443  GIN(),
8444  GIN_TYPE(),
8445  GIN_DEFAULT(),
8446  GIN_DESC()
8447  ));
8448 
8449  md_data_raw.push_back
8450  ( MdRecord
8451  ( NAME( "Touch" ),
8452  DESCRIPTION
8453  (
8454  "As *Ignore* but for agenda output.\n"
8455  "\n"
8456  "This method is handy for use in agendas in order to suppress\n"
8457  "warnings about unused output workspace variables. What it does is:\n"
8458  "Nothing!\n"
8459  ),
8460  AUTHORS( "Oliver Lemke" ),
8461  OUT(),
8462  GOUT( "gout1" ),
8463  GOUT_TYPE( "Any" ),
8464  GOUT_DESC( "Variable to do nothing with." ),
8465  IN(),
8466  GIN(),
8467  GIN_TYPE(),
8468  GIN_DEFAULT(),
8469  GIN_DESC(),
8470  SETMETHOD( false ),
8471  AGENDAMETHOD( false ),
8472  SUPPRESSHEADER( true )
8473  ));
8474 
8475  md_data_raw.push_back
8476  ( MdRecord
8477  ( NAME( "VectorAddScalar" ),
8478  DESCRIPTION
8479  (
8480  "Adds a scalar to all elements of a vector.\n"
8481  "\n"
8482  "The result can either be stored in the same or another vector.\n"
8483  ),
8484  AUTHORS( "Patrick Eriksson" ),
8485  OUT(),
8486  GOUT( "v1" ),
8487  GOUT_TYPE( "Vector" ),
8488  GOUT_DESC( "Input vector" ),
8489  IN(),
8490  GIN( "v2" , "value" ),
8491  GIN_TYPE( "Vector", "Numeric" ),
8492  GIN_DEFAULT( NODEF , NODEF ),
8493  GIN_DESC( "Output vector", "The value to be added to the vector." )
8494  ));
8495 
8496  md_data_raw.push_back
8497  ( MdRecord
8498  ( NAME( "VectorExtractFromMatrix" ),
8499  DESCRIPTION
8500  (
8501  "Extract a Vector from a Matrix.\n"
8502  "\n"
8503  "Copies row or column with given Index from input Matrix variable\n"
8504  "to create output Vector.\n"
8505  ),
8506  AUTHORS( "Patrick Eriksson, Oliver Lemke, Stefan Buehler" ),
8507  OUT(),
8508  GOUT( "v" ),
8509  GOUT_TYPE( "Vector" ),
8510  GOUT_DESC( "Extracted vector." ),
8511  IN(),
8512  GIN( "m" , "i" , "direction" ),
8513  GIN_TYPE( "Matrix", "Index", "String" ),
8514  GIN_DEFAULT( NODEF , NODEF , NODEF ),
8515  GIN_DESC( "Input matrix.",
8516  "Index of row or column.",
8517  "Direction. \"row\" or \"column\"."
8518  )
8519  ));
8520 
8521  md_data_raw.push_back
8522  ( MdRecord
8523  ( NAME( "VectorFlip" ),
8524  DESCRIPTION
8525  (
8526  "Flips a vector.\n"
8527  "\n"
8528  "The output is the input vector in reversed order. The result can\n"
8529  "either be stored in the same or another vector.\n"
8530  ),
8531  AUTHORS( "Patrick Eriksson" ),
8532  OUT(),
8533  GOUT( "gout1" ),
8534  GOUT_TYPE( "Vector" ),
8535  GOUT_DESC( "Output vector." ),
8536  IN(),
8537  GIN( "gin1" ),
8538  GIN_TYPE( "Vector" ),
8539  GIN_DEFAULT( NODEF ),
8540  GIN_DESC( "Input vector." )
8541  ));
8542 
8543  md_data_raw.push_back
8544  ( MdRecord
8545  ( NAME( "VectorInsertGridPoints" ),
8546  DESCRIPTION
8547  (
8548  "Insert some additional points into a grid.\n"
8549  "\n"
8550  "This method can for example be used to add line center frequencies to\n"
8551  "a regular frequency grid. If the original grid is [1,2,3], and the\n"
8552  "additional points are [2.2,2.4], the result will be [1,2,2.2,2.4,3].\n"
8553  "\n"
8554  "It is assumed that the original grid is sorted, otherwise a runtime\n"
8555  "error is thrown. The vector with the points to insert does not have to\n"
8556  "be sorted. If some of the input points are already in the grid, these\n"
8557  "points are not inserted again. New points outside the original grid are\n"
8558  "appended at the appropriate end. Input vector and output vector can be\n"
8559  "the same.\n"
8560  "\n"
8561  "Generic output:\n"
8562  " Vector : The new grid vector.\n"
8563  "\n"
8564  "Generic input:\n"
8565  " Vector : The original grid vector.\n"
8566  " Vector : The points to insert.\n"
8567  ),
8568  AUTHORS( "Stefan Buehler" ),
8569  OUT(),
8570  GOUT( "gout1" ),
8571  GOUT_TYPE( "Vector" ),
8572  GOUT_DESC( "The new grid vector" ),
8573  IN(),
8574  GIN( "gin1" , "gin2" ),
8575  GIN_TYPE( "Vector", "Vector" ),
8576  GIN_DEFAULT( NODEF , NODEF ),
8577  GIN_DESC( "The original grid vector",
8578  "The points to insert" )
8579  ));
8580 
8581  md_data_raw.push_back
8582  ( MdRecord
8583  ( NAME( "VectorLinSpace" ),
8584  DESCRIPTION
8585  (
8586  "Creates a vector with linear spacing.\n"
8587  "\n"
8588  "The first element equals always the start value, and the spacing\n"
8589  "equals always the step value, but the last value can deviate from\n"
8590  "the stop value. *step* can be both positive and negative.\n"
8591  "\n"
8592  "The created vector is [start, start+step, start+2*step, ...]\n "
8593  ),
8594  AUTHORS( "Patrick Eriksson" ),
8595  OUT(),
8596  GOUT( "v" ),
8597  GOUT_TYPE( "Vector" ),
8598  GOUT_DESC( "Output vector." ),
8599  IN(),
8600  GIN( "start", "stop", "step" ),
8601  GIN_TYPE( "Numeric", "Numeric", "Numeric" ),
8603  GIN_DESC( "Start value.",
8604  "Maximum/minimum value of the end value",
8605  "Spacing of the vector."
8606  )
8607  ));
8608 
8609  md_data_raw.push_back
8610  ( MdRecord
8611  ( NAME( "VectorLogSpace" ),
8612  DESCRIPTION
8613  (
8614  "Creates a vector with logarithmic spacing.\n"
8615  "\n"
8616  "The first element equals always the start value, and the spacing\n"
8617  "equals always the step value, but note that the last value can \n"
8618  "deviate from the stop value. The keyword step can be both positive\n"
8619  "and negative.\n"
8620  "\n"
8621  "Note, that although start has to be given in direct coordinates,\n"
8622  "step has to be given in log coordinates.\n"
8623  "\n"
8624  "Explicitly, the vector is:\n"
8625  " exp([ln(start), ln(start)+step, ln(start)+2*step, ...])\n"
8626  ),
8627  AUTHORS( "Stefan Buehler" ),
8628  OUT(),
8629  GOUT( "gout1" ),
8630  GOUT_TYPE( "Vector" ),
8631  GOUT_DESC( "Variable to initialize." ),
8632  IN(),
8633  GIN( "start", "stop", "step" ),
8634  GIN_TYPE( "Numeric", "Numeric", "Numeric" ),
8636  GIN_DESC( "The start value. (Direct coordinates!)",
8637  "The maximum value of the end value. (Direct coordinates!)",
8638  "The spacing of the vector. (Log coordinates!)" )
8639  ));
8640 
8641  md_data_raw.push_back
8642  ( MdRecord
8643  ( NAME( "VectorMatrixMultiply" ),
8644  DESCRIPTION
8645  (
8646  "Multiply a Vector with a Matrix and store the result in another\n"
8647  "Vector.\n"
8648  "\n"
8649  "This just computes the normal Matrix-Vector product, y=M*x. It is ok\n"
8650  "if input and output Vector are the same. This function is handy for\n"
8651  "multiplying the H Matrix to spectra.\n"
8652  ),
8653  AUTHORS( "Stefan Buehler" ),
8654  OUT(),
8655  GOUT( "gout1" ),
8656  GOUT_TYPE( "Vector" ),
8657  GOUT_DESC( "The result of the multiplication (dimension m)." ),
8658  IN(),
8659  GIN( "gin1" , "gin2" ),
8660  GIN_TYPE( "Matrix", "Vector" ),
8661  GIN_DEFAULT( NODEF , NODEF ),
8662  GIN_DESC( "The Matrix to multiply (dimension mxn).",
8663  "The original Vector (dimension n)." )
8664  ));
8665 
8666  md_data_raw.push_back
8667  ( MdRecord
8668  ( NAME( "VectorNLinSpace" ),
8669  DESCRIPTION
8670  (
8671  "Creates a vector with length *nelem*, equally spaced between the\n"
8672  "given end values.\n"
8673  "\n"
8674  "The length (*nelem*) must be larger than 1.\n"
8675  ),
8676  AUTHORS( "Patrick Eriksson" ),
8677  OUT(),
8678  GOUT( "v" ),
8679  GOUT_TYPE( "Vector" ),
8680  GOUT_DESC( "Variable to initialize." ),
8681  IN( "nelem" ),
8682  GIN( "start", "stop" ),
8683  GIN_TYPE( "Numeric", "Numeric" ),
8684  GIN_DEFAULT( NODEF, NODEF ),
8685  GIN_DESC( "Start value.",
8686  "End value."
8687  )
8688  ));
8689 
8690  md_data_raw.push_back
8691  ( MdRecord
8692  ( NAME( "VectorNLogSpace" ),
8693  DESCRIPTION
8694  (
8695  "Creates a vector with length *nelem*, equally logarithmically\n"
8696  "spaced between the given end values.\n"
8697  "\n"
8698  "The length (*nelem*) must be larger than 1.\n"
8699  ),
8700  AUTHORS( "Patrick Eriksson" ),
8701  OUT(),
8702  GOUT( "v" ),
8703  GOUT_TYPE( "Vector" ),
8704  GOUT_DESC( "Variable to initialize." ),
8705  IN( "nelem" ),
8706  GIN( "start", "stop" ),
8707  GIN_TYPE( "Numeric", "Numeric" ),
8708  GIN_DEFAULT( NODEF, NODEF ),
8709  GIN_DESC( "Start value.",
8710  "End value."
8711  )
8712  ));
8713 
8714  md_data_raw.push_back
8715  ( MdRecord
8716  ( NAME( "VectorScale" ),
8717  DESCRIPTION
8718  (
8719  "Scales all elements of a vector with the same value.\n"
8720  "\n"
8721  "The result can either be stored in the same or another vector.\n"
8722  ),
8723  AUTHORS( "Patrick Eriksson" ),
8724  OUT(),
8725  GOUT( "gout1" ),
8726  GOUT_TYPE( "Vector" ),
8727  GOUT_DESC( "Output vector." ),
8728  IN(),
8729  GIN( "gin1" ,
8730  "value" ),
8731  GIN_TYPE( "Vector",
8732  "Numeric" ),
8733  GIN_DEFAULT( NODEF ,
8734  NODEF ),
8735  GIN_DESC( "Input vector.",
8736  "Scaling value." )
8737  ));
8738 
8739  md_data_raw.push_back
8740  ( MdRecord
8741  ( NAME( "VectorSetConstant" ),
8742  DESCRIPTION
8743  (
8744  "Creates a vector and sets all elements to the specified value.\n"
8745  "\n"
8746  "The vector length is determined by *nelem*.\n"
8747  ),
8748  AUTHORS( "Patrick Eriksson" ),
8749  OUT(),
8750  GOUT( "v" ),
8751  GOUT_TYPE( "Vector" ),
8752  GOUT_DESC( "Variable to initialize." ),
8753  IN( "nelem" ),
8754  GIN( "value" ),
8755  GIN_TYPE( "Numeric" ),
8756  GIN_DEFAULT( NODEF ),
8757  GIN_DESC( "Vector value." )
8758  ));
8759 
8760  md_data_raw.push_back
8761  ( MdRecord
8762  ( NAME( "VectorSet" ),
8763  DESCRIPTION
8764  (
8765  "Create a vector from the given list of numbers.\n"
8766  "\n"
8767  " VectorSet(p_grid, [1000, 100, 10] )\n"
8768  " Will create a p_grid vector with these three elements.\n"
8769  ),
8770  AUTHORS( "Stefan Buehler" ),
8771  OUT(),
8772  GOUT( "gout1" ),
8773  GOUT_TYPE( "Vector" ),
8774  GOUT_DESC( "Variable to initialize." ),
8775  IN(),
8776  GIN( "values" ),
8777  GIN_TYPE( "Vector" ),
8778  GIN_DEFAULT( NODEF ),
8779  GIN_DESC( "The vector elements." ),
8780  SETMETHOD( true )
8781  ));
8782 
8783  md_data_raw.push_back
8784  ( MdRecord
8785  ( NAME( "VectorZtanToZaRefr1D" ),
8786  DESCRIPTION
8787  (
8788  "Converts a set of true tangent altitudes to zenith angles.\n"
8789  "\n"
8790  "The tangent altitudes are given to the function as a vector, which\n"
8791  "are converted to a generic vector of zenith angles. The position of\n"
8792  "the sensor is given by the WSV *sensor_pos*. The function works\n"
8793  "only for 1D. The zenith angles are always set to be positive.\n"
8794  "The tangent altitudes are given as the altitude above the geoid.\n"
8795  ),
8796  AUTHORS( "Patrick Eriksson", "Mattias Ekstrom" ),
8797  OUT(),
8798  GOUT( "v_za" ),
8799  GOUT_TYPE( "Vector" ),
8800  GOUT_DESC( "Vector with zenith angles." ),
8801  IN( "refr_index_agenda", "sensor_pos", "p_grid", "t_field", "z_field",
8802  "vmr_field", "r_geoid", "atmosphere_dim" ),
8803  GIN( "v_ztan" ),
8804  GIN_TYPE( "Vector" ),
8805  GIN_DEFAULT( NODEF ),
8806  GIN_DESC( "Vector with tangent altitudes." )
8807  ));
8808 
8809  md_data_raw.push_back
8810  ( MdRecord
8811  ( NAME( "VectorZtanToZa1D" ),
8812  DESCRIPTION
8813  (
8814  "Converts a set of geometrical tangent altitudes to zenith angles.\n"
8815  "\n"
8816  "The tangent altitudes are given to the function as a vector, which\n"
8817  "are converted to a generic vector of zenith angles. The position of\n"
8818  "the sensor is given by the WSV *sensor_pos*. The function works\n"
8819  "only for 1D, where the geoid radius is taken from *r_geoid*. The\n"
8820  "zenith angles are always set to be positive. The tangent altitudes\n"
8821  "are given as the altitude above the geoid.\n"
8822  ),
8823  AUTHORS( "Patrick Eriksson", "Mattias Ekstrom" ),
8824  OUT(),
8825  GOUT( "v_za" ),
8826  GOUT_TYPE( "Vector" ),
8827  GOUT_DESC( "Vector with zenith angles." ),
8828  IN( "sensor_pos", "r_geoid", "atmosphere_dim" ),
8829  GIN( "v_ztan" ),
8830  GIN_TYPE( "Vector" ),
8831  GIN_DEFAULT( NODEF ),
8832  GIN_DESC( "Vector with tangent altitudes." )
8833  ));
8834 
8835  md_data_raw.push_back
8836  ( MdRecord
8837  ( NAME( "verbosityInit" ),
8838  DESCRIPTION
8839  (
8840  "Initializes the verbosity levels.\n"
8841  "\n"
8842  "Sets verbosity to defaults or the levels specified by -r on the command line.\n"
8843  ),
8844  AUTHORS( "Oliver Lemke" ),
8845  OUT( "verbosity" ),
8846  GOUT(),
8847  GOUT_TYPE(),
8848  GOUT_DESC(),
8849  IN(),
8850  GIN(),
8851  GIN_TYPE(),
8852  GIN_DEFAULT(),
8853  GIN_DESC()
8854  ));
8855 
8856  md_data_raw.push_back
8857  ( MdRecord
8858  ( NAME( "verbositySet" ),
8859  DESCRIPTION
8860  (
8861  "Sets the verbosity levels.\n"
8862  "\n"
8863  "Sets the reporting level for agenda calls, screen and file.\n"
8864  "All reporting levels can reach from 0 (only error messages)\n"
8865  "to 3 (everything). The agenda setting applies in addition\n"
8866  "to both screen and file output.\n"
8867  ),
8868  AUTHORS( "Oliver Lemke" ),
8869  OUT( "verbosity" ),
8870  GOUT(),
8871  GOUT_TYPE(),
8872  GOUT_DESC(),
8873  IN(),
8874  GIN( "agenda", "screen", "file" ),
8875  GIN_TYPE( "Index", "Index", "Index" ),
8877  GIN_DESC( "Agenda verbosity level",
8878  "Screen verbosity level",
8879  "Report file verbosity level")
8880  ));
8881 
8882  md_data_raw.push_back
8883  ( MdRecord
8884  ( NAME( "verbositySetAgenda" ),
8885  DESCRIPTION
8886  (
8887  "Sets the verbosity level for agenda output.\n"
8888  "\n"
8889  "See *verbositySet*\n"
8890  ),
8891  AUTHORS( "Oliver Lemke" ),
8892  OUT( "verbosity" ),
8893  GOUT(),
8894  GOUT_TYPE(),
8895  GOUT_DESC(),
8896  IN( "verbosity" ),
8897  GIN( "level" ),
8898  GIN_TYPE( "Index" ),
8899  GIN_DEFAULT( NODEF),
8900  GIN_DESC( "Agenda verbosity level")
8901  ));
8902 
8903  md_data_raw.push_back
8904  ( MdRecord
8905  ( NAME( "verbositySetFile" ),
8906  DESCRIPTION
8907  (
8908  "Sets the verbosity level for report file output.\n"
8909  "\n"
8910  "See *verbositySet*\n"
8911  ),
8912  AUTHORS( "Oliver Lemke" ),
8913  OUT( "verbosity" ),
8914  GOUT(),
8915  GOUT_TYPE(),
8916  GOUT_DESC(),
8917  IN( "verbosity" ),
8918  GIN( "level" ),
8919  GIN_TYPE( "Index" ),
8920  GIN_DEFAULT( NODEF),
8921  GIN_DESC( "Report file verbosity level")
8922  ));
8923 
8924  md_data_raw.push_back
8925  ( MdRecord
8926  ( NAME( "verbositySetScreen" ),
8927  DESCRIPTION
8928  (
8929  "Sets the verbosity level for screen output.\n"
8930  "\n"
8931  "See *verbositySet*\n"
8932  ),
8933  AUTHORS( "Oliver Lemke" ),
8934  OUT( "verbosity" ),
8935  GOUT(),
8936  GOUT_TYPE(),
8937  GOUT_DESC(),
8938  IN( "verbosity" ),
8939  GIN( "level" ),
8940  GIN_TYPE( "Index" ),
8941  GIN_DEFAULT( NODEF),
8942  GIN_DESC( "Screen verbosity level")
8943  ));
8944 
8945  md_data_raw.push_back
8946  ( MdRecord
8947  ( NAME( "WMRFSelectChannels" ),
8948  DESCRIPTION
8949  (
8950  "Select some channels for WMRF calculation.\n"
8951  "\n"
8952  "The HIRS fast setup consists of a precalculated frequency grid\n"
8953  "covering all HIRS channels, and associated weights for each channel,\n"
8954  "stored in a weight matrix. (A *sensor_response* matrix.)\n"
8955  "\n"
8956  "If not all channels are requested for\n"
8957  "simulation, then this method can be used to remove the unwanted\n"
8958  "channels. It changes a number of variables in consistent fashion:\n"
8959  "\n"
8960  "- Unwanted channels are removed from f_backend. \n"
8961  "- Unwanted channels are removed from wmrf_weights.\n"
8962  "- Unnecessary frequencies are removed from f_grid.\n"
8963  "- Unnecessary frequencies are removed from wmrf_weights.\n"
8964  ),
8965  AUTHORS( "Stefan Buehler" ),
8966  OUT( "f_grid", "wmrf_weights",
8967  "f_backend" ),
8968  GOUT( ),
8969  GOUT_TYPE( ),
8970  GOUT_DESC(),
8971  IN( "f_grid", "f_backend",
8972  "wmrf_weights", "wmrf_channels" ),
8973  GIN(),
8974  GIN_TYPE(),
8975  GIN_DEFAULT(),
8976  GIN_DESC()
8977  ));
8978 
8979  md_data_raw.push_back
8980  ( MdRecord
8981  ( NAME( "WriteMolTau" ),
8982  DESCRIPTION
8983  (
8984  "Writes a 'molecular_tau_file' as required for libRadtran.\n"
8985  "\n"
8986  "The libRadtran (www.libradtran.org) radiative transfer package is a \n"
8987  "comprehensive package for various applications, it can be used to \n"
8988  "compute radiances, irradiances, actinic fluxes, ... for the solar \n"
8989  "and the thermal spectral ranges. Absorption is usually treated using \n"
8990  "k-distributions or other parameterizations. For calculations with high \n"
8991  "spectral resolution it requires absorption coefficients from an external \n"
8992  "line-by-line model. Using this method, arts generates a file that can be \n"
8993  "used by libRadtran (option molecular_tau_file)."
8994  "\n"
8995  ),
8996  AUTHORS( "Claudia Emde" ),
8997  OUT(),
8998  GOUT(),
8999  GOUT_TYPE(),
9000  GOUT_DESC(),
9001  IN("f_grid", "z_field", "abs_field", "atmosphere_dim" ),
9002  GIN("filename"),
9003  GIN_TYPE("String"),
9004  GIN_DEFAULT( NODEF),
9005  GIN_DESC("Name of the *molecular_tau_file*." )
9006  ));
9007 
9008  md_data_raw.push_back
9009  ( MdRecord
9010  ( NAME( "WriteNetCDF" ),
9011  DESCRIPTION
9012  (
9013  "Writes a workspace variable to a NetCDF file.\n"
9014  "\n"
9015  "This method can write variables of any group.\n"
9016  "\n"
9017  "If the filename is omitted, the variable is written\n"
9018  "to <basename>.<variable_name>.nc.\n"
9019  ),
9020  AUTHORS( "Oliver Lemke" ),
9021  OUT(),
9022  GOUT(),
9023  GOUT_TYPE(),
9024  GOUT_DESC(),
9025  IN(),
9026  GIN( "v",
9027  "filename" ),
9028  GIN_TYPE( "Vector, Matrix, Tensor3, Tensor4, Tensor5, ArrayOfVector,"
9029  "ArrayOfMatrix",
9030  "String" ),
9031  GIN_DEFAULT( NODEF,
9032  "" ),
9033  GIN_DESC( "Variable to be saved.",
9034  "Name of the NetCDF file." ),
9035  SETMETHOD( false ),
9036  AGENDAMETHOD( false ),
9037  SUPPRESSHEADER( true ),
9038  PASSWORKSPACE( false ),
9039  PASSWSVNAMES( true )
9040  ));
9041 
9042  md_data_raw.push_back
9043  ( MdRecord
9044  ( NAME( "WriteXML" ),
9045  DESCRIPTION
9046  (
9047  "Writes a workspace variable to an XML file.\n"
9048  "\n"
9049  "This method can write variables of any group.\n"
9050  "\n"
9051  "If the filename is omitted, the variable is written\n"
9052  "to <basename>.<variable_name>.xml.\n"
9053  ),
9054  AUTHORS( "Oliver Lemke" ),
9055  OUT(),
9056  GOUT(),
9057  GOUT_TYPE(),
9058  GOUT_DESC(),
9059  IN( "output_file_format" ),
9060  GIN( "v",
9061  "filename" ),
9062  GIN_TYPE( "Any",
9063  "String" ),
9064  GIN_DEFAULT( NODEF,
9065  "" ),
9066  GIN_DESC( "Variable to be saved.",
9067  "Name of the XML file." ),
9068  SETMETHOD( false ),
9069  AGENDAMETHOD( false ),
9070  SUPPRESSHEADER( true ),
9071  PASSWORKSPACE( false ),
9072  PASSWSVNAMES( true )
9073  ));
9074 
9075  md_data_raw.push_back
9076  ( MdRecord
9077  ( NAME( "WriteXMLIndexed" ),
9078  DESCRIPTION
9079  (
9080  "As *WriteXML*, but creates indexed file names.\n"
9081  "\n"
9082  "The variable is written to a file with name:\n"
9083  " <filename>.<file_index>.xml.\n"
9084  "where <file_index> is the value of *file_index*.\n"
9085  "\n"
9086  "This means that *filename* shall here not include the .xml\n"
9087  "extension. Omitting filename works as for *WriteXML*.\n"
9088  ),
9089  AUTHORS( "Patrick Eriksson" ),
9090  OUT(),
9091  GOUT(),
9092  GOUT_TYPE(),
9093  GOUT_DESC(),
9094  IN( "output_file_format", "file_index" ),
9095  GIN( "wsv", "filename" ),
9096  GIN_TYPE( "Any", "String" ),
9097  GIN_DEFAULT( NODEF, "" ),
9098  GIN_DESC( "Workspace variable to be saved.",
9099  "File name. See above."
9100  ),
9101  SETMETHOD( false ),
9102  AGENDAMETHOD( false ),
9103  SUPPRESSHEADER( true ),
9104  PASSWORKSPACE( false ),
9105  PASSWSVNAMES( true )
9106  ));
9107 
9108  md_data_raw.push_back
9109  ( MdRecord
9110  ( NAME( "ybatchCalc" ),
9111  DESCRIPTION
9112  (
9113  "Performs batch calculations for the measurement vector y.\n"
9114  "\n"
9115  "We perform *ybatch_n* jobs, starting at index *ybatch_start*. (Zero\n"
9116  "based indexing, as usual.) The output matrix *ybatch* will have\n"
9117  "dimension (y.nelem(),ybatch_n). So, indices in the output matrix start\n"
9118  "with zero, independent of *ybatch_start*.\n"
9119  "\n"
9120  "The method performs the following:\n"
9121  " 1. Sets *ybatch_index* = *ybatch_start*.\n"
9122  " 2. Performs a-d until\n"
9123  " *ybatch_index* = *ybatch_start* + *ybatch_n*.\n"
9124  " a. Executes *ybatch_calc_agenda*.\n"
9125  " b. If *ybatch_index* = *ybatch_start*, resizes *ybatch*\n"
9126  " based on *ybatch_n* and length of *y*.\n"
9127  " c. Copies *y* to column *ybatch_index* - *ybatch_start*\n"
9128  " of *ybatch*.\n"
9129  " d. Adds 1 to *ybatch_index*.\n"
9130  "\n"
9131  "Beside the *ybatch_calc_agenda*, the WSVs *ybatch_start*\n"
9132  "and *ybatch_n* must be set before calling this method.\n"
9133  "Further, *ybatch_calc_agenda* is expected to produce a\n"
9134  "spectrum and should accordingly include a call of *yCalc*\n"
9135  "(or asimilar method).\n"
9136  "\n"
9137  "The input variable *ybatch_start* is set to a default of zero in\n"
9138  "*general.arts*.\n"
9139  "\n"
9140  "An agenda that calculates spectra for different temperature profiles\n"
9141  "could look like this:\n"
9142  "\n"
9143  " AgendaSet(ybatch_calc_agenda){\n"
9144  " Extract(t_field,tensor4_1,ybatch_index)\n"
9145  " yCalc\n"
9146  " }\n"
9147  "\n"
9148  "Jacobians are also collected, and stored in output variable *ybatch_jacobians*. \n"
9149  "(This will be empty if yCalc produces empty Jacobians.)\n"
9150  "\n"
9151  "See the user guide for further practical examples.\n"
9152  ),
9153  AUTHORS( "Stefan Buehler" ),
9154  OUT( "ybatch", "ybatch_jacobians" ),
9155  GOUT(),
9156  GOUT_TYPE(),
9157  GOUT_DESC(),
9158  IN( "ybatch_start", "ybatch_n", "ybatch_calc_agenda" ),
9159  GIN( "robust" ),
9160  GIN_TYPE( "Index" ),
9161  GIN_DEFAULT( "0" ),
9162  GIN_DESC(
9163  "A flag with value 1 or 0. If set to one, the batch\n"
9164  "calculation will continue, even if individual jobs\n"
9165  "fail. In that case, a warning message is written to\n"
9166  "screen and file (out1 output stream), and ybatch for the\n"
9167  "failed job is set to -1. The robust behavior does only work\n"
9168  "properly if your control file is run single threaded.\n"
9169  "Set \"--numthreads 1\". See \"arts --help\"."
9170  )
9171  ));
9172 
9173  md_data_raw.push_back
9174  ( MdRecord
9175  ( NAME( "ybatchMetProfiles" ),
9176  DESCRIPTION
9177  (
9178  "This method is used for simulating ARTS for metoffice model fields"
9179  "\n"
9180  "This method reads in *met_amsu_data* which contains the\n"
9181  "lat-lon of the metoffice profile files as a Matrix. It then\n"
9182  "loops over the number of profiles and corresponding to each\n"
9183  "longitude create the appropriate profile basename. Then,\n"
9184  "corresponding to each basename we have temperature field, altitude\n"
9185  "field, humidity field and particle number density field. The\n"
9186  "temperature field and altitude field are stored in the same dimensions\n"
9187  "as *t_field_raw* and *z_field_raw*. The oxygen and nitrogen VMRs are\n"
9188  "set to constant values of 0.209 and 0.782, respectively and are used\n"
9189  "along with humidity field to generate *vmr_field_raw*. \n"
9190  "\n"
9191  "The three fields *t_field_raw*, *z_field_raw*, and *vmr_field_raw* are\n"
9192  "given as input to *met_profile_calc_agenda* which is called in this\n"
9193  "method. See documentation of WSM *met_profile_calc_agenda* for more\n"
9194  "information on this agenda. \n"
9195  "\n"
9196  "The method also converts satellite zenith angle to appropriate\n"
9197  "*sensor_los*. It also sets the *p_grid* and *cloudbox_limits*\n"
9198  "from the profiles inside the function\n"
9199  ),
9200  AUTHORS( "Sreerekha T.R." ),
9201  OUT( "ybatch" ),
9202  GOUT(),
9203  GOUT_TYPE(),
9204  GOUT_DESC(),
9205  IN( "abs_species", "met_profile_calc_agenda", "f_grid", "met_amsu_data",
9206  "sensor_pos", "r_geoid", "lat_grid", "lon_grid", "atmosphere_dim",
9207  "scat_data_raw" ),
9208  GIN( "nelem_p_grid", "met_profile_path", "met_profile_pnd_path" ),
9209  GIN_TYPE( "Index", "String", "String" ),
9211  GIN_DESC( "FIXME DOC",
9212  "FIXME DOC",
9213  "FIXME DOC" )
9214  ));
9215 
9216  md_data_raw.push_back
9217  ( MdRecord
9218  ( NAME( "ybatchMetProfilesClear" ),
9219  DESCRIPTION
9220  (
9221  "This method is used for simulating ARTS for metoffice model fields\n"
9222  "for clear sky conditions.\n"
9223  "\n"
9224  "This method reads in *met_amsu_data* which contains the\n"
9225  "lat-lon of the metoffice profile files as a Matrix. It then\n"
9226  "loops over the number of profiles and corresponding to each\n"
9227  "longitude create the appropriate profile basename. Then,\n"
9228  "Corresponding to each basename we have temperature field, altitude\n"
9229  "field, humidity field and particle number density field. The\n"
9230  "temperature field and altitude field are stored in the same dimensions\n"
9231  "as *t_field_raw* and *z_field_raw*. The oxygen and nitrogen VMRs are\n"
9232  "set to constant values of 0.209 and 0.782, respectively and are used\n"
9233  "along with humidity field to generate *vmr_field_raw*. \n"
9234  "\n"
9235  "The three fields *t_field_raw*, *z_field_raw*, and *vmr_field_raw* are\n"
9236  "given as input to *met_profile_calc_agenda* which is called in this\n"
9237  "method. See documentation of WSM *met_profile_calc_agenda* for more\n"
9238  "information on this agenda. \n"
9239  "\n"
9240  "The method also converts satellite zenith angle to appropriate\n"
9241  "*sensor_los*. It also sets the *p_grid* and *cloudbox_limits*\n"
9242  "from the profiles inside the function\n"
9243  ),
9244  AUTHORS( "Seerekha T.R." ),
9245  OUT( "ybatch" ),
9246  GOUT(),
9247  GOUT_TYPE(),
9248  GOUT_DESC(),
9249  IN( "abs_species", "met_profile_calc_agenda",
9250  "f_grid", "met_amsu_data", "sensor_pos", "r_geoid" ),
9251  GIN( "nelem_p_grid", "met_profile_path" ),
9252  GIN_TYPE( "Index", "String" ),
9253  GIN_DEFAULT( NODEF, NODEF ),
9254  GIN_DESC( "FIXME DOC",
9255  "FIXME DOC" )
9256  ));
9257 
9258  md_data_raw.push_back
9259  ( MdRecord
9260  ( NAME( "yCalc" ),
9261  DESCRIPTION
9262  (
9263  "Calculation of complete measurement vectors (y).\n"
9264  "\n"
9265  "The method performs radiative transfer calculations from a sensor\n"
9266  "perspective. Radiative transfer calculations are performed for\n"
9267  "monochromatic pencil beams, following *iy_clearsky_agenda* and\n"
9268  "associated agendas. Obtained radiances are weighted together by\n"
9269  "*sensor_response*, to include the characteristics of the sensor.\n"
9270  "The measurement vector obtained can contain anything from a single\n"
9271  "frequency value to a series of measurement scans (each consisting\n"
9272  "of a series of spectra), all depending on the settings. Spectra\n"
9273  "and jacobians are calculated in parallel.\n"
9274  "\n"
9275  "The unit of output radiances and jacobians follow *y_unit*. The\n"
9276  "conversion is applied on monochromatic pencil beam values. That\n"
9277  "is, before any sensor responses have been included.\n"
9278  "The frequency, polarisation etc. for each measurement value is\n"
9279  "given by *y_f*, *y_pol* etc. No unit conversion is applied for\n"
9280  "*y_aux*.\n"
9281  ),
9282  AUTHORS( "Patrick Eriksson" ),
9283  OUT( "y", "y_f", "y_pol", "y_pos", "y_los", "y_error", "y_aux",
9284  "jacobian" ),
9285  GOUT(),
9286  GOUT_TYPE(),
9287  GOUT_DESC(),
9288  IN( "basics_checked", "atmosphere_dim", "p_grid", "lat_grid",
9289  "lon_grid", "t_field", "z_field", "vmr_field", "cloudbox_on",
9290  "cloudbox_checked", "stokes_dim", "f_grid", "sensor_pos",
9291  "sensor_los", "mblock_za_grid", "mblock_aa_grid", "antenna_dim",
9292  "sensor_response", "sensor_response_f",
9293  "sensor_response_pol", "sensor_response_za", "sensor_response_aa",
9294  "iy_clearsky_agenda", "y_unit",
9295  "jacobian_agenda", "jacobian_do", "jacobian_quantities",
9296  "jacobian_indices" ),
9297  GIN(),
9298  GIN_TYPE(),
9299  GIN_DEFAULT(),
9300  GIN_DESC()
9301  ));
9302 
9303  md_data_raw.push_back
9304  ( MdRecord
9305  ( NAME( "yCalc2" ),
9306  DESCRIPTION
9307  (
9308  "Calculation of complete measurement vectors (y).\n"
9309  "\n"
9310  "The method performs radiative transfer calculations from a sensor\n"
9311  "perspective. Radiative transfer calculations are performed for\n"
9312  "monochromatic pencil beams, following *iy_clearsky_agenda* and\n"
9313  "associated agendas. Obtained radiances are weighted together by\n"
9314  "*sensor_response*, to include the characteristics of the sensor.\n"
9315  "The measurement vector obtained can contain anything from a single\n"
9316  "frequency value to a series of measurement scans (each consisting\n"
9317  "of a series of spectra), all depending on the settings. Spectra\n"
9318  "and jacobians are calculated in parallel.\n"
9319  "\n"
9320  "The unit of output radiances and jacobians follow *y_unit*. The\n"
9321  "conversion is applied on monochromatic pencil beam values. That\n"
9322  "is, before any sensor responses have been included.\n"
9323  "The frequency, polarisation etc. for each measurement value is\n"
9324  "given by *y_f*, *y_pol* etc. No unit conversion is applied for\n"
9325  "*y_aux*.\n"
9326  ),
9327  AUTHORS( "Patrick Eriksson" ),
9328  OUT( "y", "y_f", "y_pol", "y_pos", "y_los", "y_error", "y_aux",
9329  "jacobian" ),
9330  GOUT(),
9331  GOUT_TYPE(),
9332  GOUT_DESC(),
9333  IN( "basics_checked", "atmosphere_dim", "p_grid", "lat_grid",
9334  "lon_grid", "t_field", "z_field", "vmr_field", "cloudbox_on",
9335  "cloudbox_checked", "stokes_dim", "f_grid", "sensor_pos",
9336  "sensor_los", "mblock_za_grid", "mblock_aa_grid", "antenna_dim",
9337  "sensor_response_agenda", "iy_clearsky_agenda", "y_unit",
9338  "jacobian_agenda", "jacobian_do", "jacobian_quantities",
9339  "jacobian_indices" ),
9340  GIN(),
9341  GIN_TYPE(),
9342  GIN_DEFAULT(),
9343  GIN_DESC()
9344  ));
9345 
9346  md_data_raw.push_back
9347  ( MdRecord
9348  ( NAME( "y_unitApply" ),
9349  DESCRIPTION
9350  (
9351  "Conversion to other spectral units.\n"
9352  "\n"
9353  "Any conversion to brightness temperature is normally made inside\n"
9354  "*yCalc*. This method makes it possible to also make this conversion\n"
9355  "after *yCalc*, but with restrictions for *jacobian*.\n"
9356  "\n"
9357  "The method handles *y*, *y_error* and *jacobian* in parallel, where\n"
9358  "the two last variables are only considered if they are set. The\n"
9359  "input data must be in original radiance units. A completely\n"
9360  "stringent check of this can not be performed.\n"
9361  "\n"
9362  "The method can not be used with jacobian quantities that are not\n"
9363  "obtained through radiative transfer calculations. One example on\n"
9364  "quantity that can not be handled is *jacobianAddPolyfit*.\n"
9365  "\n"
9366  "If you are using this method, *y_unit* should be set to \"1\" when\n"
9367  "calling *yCalc*, and be changed before calling this method.\n"
9368  "\n"
9369  "See further *y_unit*.\n"
9370  ),
9371  AUTHORS( "Patrick Eriksson" ),
9372  OUT( "y", "y_error", "jacobian" ),
9373  GOUT(),
9374  GOUT_TYPE(),
9375  GOUT_DESC(),
9376  IN( "y", "y_error", "jacobian", "y_f", "y_pol", "y_unit" ),
9377  GIN(),
9378  GIN_TYPE(),
9379  GIN_DEFAULT(),
9380  GIN_DESC()
9381  ));
9382 
9383  md_data_raw.push_back
9384  ( MdRecord
9385  ( NAME( "z_fieldFromHSE" ),
9386  DESCRIPTION
9387  (
9388  "Altitudes to fulfil hydrostatic equilibrium.\n"
9389  "\n"
9390  "The method applies hydrostatic equilibrium, considering the effect\n"
9391  "of water vapour (but not liquid or ice water). Several variables\n"
9392  "are hard-coded and the method is only valid for the Earth\n"
9393  "\n"
9394  "The output is an update of *z_field*. This variable is expected to\n"
9395  "contain approximative altitudes when calling the function. The\n"
9396  "altitude matching *p_hse* is kept constant. Other altitudes are\n"
9397  "basically arbitrary, but good estimates give quicker calculations.\n"
9398  "\n"
9399  "The calculations are repeated until the change in altitude is below\n"
9400  "*z_hse_accuracy*. An iterative process is needed as gravity varies\n"
9401  "with altitude.\n"
9402  "\n"
9403  "The values in *lat_grid* must be \"geophysical\" latitudes. For 1D,\n"
9404  "this method requires that the length of *lat_grid* is 1.\n"
9405  "\n"
9406  "As a last step, it is checked that no gap between *z_surface* and\n"
9407  "*z_field* has been genereted.\n"
9408  ),
9409  AUTHORS( "Patrick Eriksson" ),
9410  OUT( "z_field" ),
9411  GOUT(),
9412  GOUT_TYPE(),
9413  GOUT_DESC(),
9414  IN( "atmosphere_dim", "p_grid", "lat_grid", "lon_grid", "abs_species",
9415  "t_field", "z_field", "vmr_field", "r_geoid", "z_surface",
9416  "basics_checked", "p_hse", "z_hse_accuracy" ),
9417  GIN(),
9418  GIN_TYPE(),
9419  GIN_DEFAULT(),
9420  GIN_DESC()
9421  ));
9422 }
9423 
md_data_raw
Array< MdRecord > md_data_raw
Lookup information for workspace methods.
Definition: globals_2.cc:54
GIN_DESC
#define GIN_DESC
Definition: methods.cc:50
IN
#define IN
Definition: methods.cc:46
get_array_groups_as_string
String get_array_groups_as_string()
Definition: groups.cc:201
AGENDAMETHOD
#define AGENDAMETHOD(x)
Definition: methods.cc:52
PASSWSVNAMES
#define PASSWSVNAMES(x)
Definition: methods.cc:55
PASSWORKSPACE
#define PASSWORKSPACE(x)
Definition: methods.cc:54
OUT
#define OUT
Definition: methods.cc:42
Array
This can be used to make arrays out of anything.
Definition: array.h:103
SUPPRESSHEADER
#define SUPPRESSHEADER(x)
Definition: methods.cc:53
my_basic_string
The implementation for String, the ARTS string class.
Definition: mystring.h:62
NODEF
#define NODEF
Definition: methods.h:36
GIN_DEFAULT
#define GIN_DEFAULT
Definition: methods.cc:49
GOUT_DESC
#define GOUT_DESC
Definition: methods.cc:45
GOUT_TYPE
#define GOUT_TYPE
Definition: methods.cc:44
wsv_group_names
ArrayOfString wsv_group_names
Definition: groups.cc:40
AUTHORS
#define AUTHORS
Definition: methods.cc:41
DESCRIPTION
#define DESCRIPTION(x)
Definition: methods.cc:40
make_array.h
Implements the class MakeArray, which is a derived class of Array, allowing explicit initialization.
SETMETHOD
#define SETMETHOD(x)
Definition: methods.cc:51
NAME
#define NAME(x)
Definition: methods.cc:39
GIN
#define GIN
Definition: methods.cc:47
MdRecord
All information for one workspace method.
Definition: methods.h:42
String
my_basic_string< char > String
The String type for ARTS.
Definition: mystring.h:305
GOUT
#define GOUT
Definition: methods.cc:43
methods.h
Declaration of the class MdRecord.
wsv_aux.h
Auxiliary header stuff related to workspace variable groups.
GIN_TYPE
#define GIN_TYPE
Definition: methods.cc:48
define_md_data_raw
void define_md_data_raw()
Definition: methods.cc:121
arts.h
The global header file for ARTS.