ARTS  2.2.66
methods.cc
Go to the documentation of this file.
1 /* Copyright (C) 2000-2012
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 namespace global_data {
40  extern const ArrayOfString wsv_group_names;
41 }
42 
43 // Some #defines and typedefs to make the records better readable:
44 #define NAME(x) x
45 #define DESCRIPTION(x) x
46 #define AUTHORS MakeArray<String>
47 #define OUT MakeArray<String>
48 #define GOUT MakeArray<String>
49 #define GOUT_TYPE MakeArray<String>
50 #define GOUT_DESC MakeArray<String>
51 #define IN MakeArray<String>
52 #define GIN MakeArray<String>
53 #define GIN_TYPE MakeArray<String>
54 #define GIN_DEFAULT MakeArray<String>
55 #define GIN_DESC MakeArray<String>
56 #define SETMETHOD(x) x
57 #define AGENDAMETHOD(x) x
58 #define USES_TEMPLATES(x) x
59 #define PASSWORKSPACE(x) x
60 #define PASSWSVNAMES(x) x
61 
62 
63 /* Here's a template record entry: (PE 2008-09-20)
64 
65  md_data_raw.push_back
66  ( MdRecord
67  ( NAME( "MethodName" ),
68  DESCRIPTION
69  (
70  "A concise summary of the method.\n"
71  "\n"
72  "A more detailed description of the method. Try to describe the\n"
73  "purpose of the method and important considerations. Try to avoid\n"
74  "references to other WSMs as they might change. Refer to the user\n"
75  "guide for more complex information (as long as it exists, or that\n"
76  "you add it to AUG!).\n"
77  "\n"
78  "You do not need to describe workspace variables used. That\n"
79  "information is found in workspace.cc. Generic\n"
80  "output and input variables must be described in GIN_DESC and\n"
81  "GOUT_DESC below.\n"
82  ),
83  AUTHORS( "Your Name" ),
84  OUT(),
85  GOUT(),
86  GOUT_TYPE(),
87  GOUT_DESC(),
88  IN(),
89  GIN( "descriptive_name_for_generic_input1" ),
90  GIN_TYPE( "GenericInput1Type" ),
91  GIN_DEFAULT( NODEF ),
92  GIN_DESC( "Description for Generic Input Variable 1" )
93  ));
94 
95  For variable descriptions longer than one line, use the following format.
96  Don't forget to remove the space in '/ *' and '* /' if you copy this template.
97  I had to put it in there because C++ doesn't allow nested comments.
98 
99  md_data_raw.push_back
100  ( MdRecord
101  ( NAME( "MethodName" ),
102  ...
103  ...
104  ...
105  GIN( gin_var1, gin_var2, gin_var3 )
106  GIN_TYPE( "GInput1Type", "GInput2Type", "GInput3Type" ),
107  GIN_DEFAULT( NODEF ),
108  GIN_DESC( / * gin_var1 * /
109  "Long description for Generic Input Variable 1 "
110  "which can span multiple lines like for example "
111  "this one. Don't put any \n in the variable descriptions.",
112  / * gin_var2 * /
113  "Long description for Generic Input Variable 2 "
114  "which can span multiple lines like for example "
115  "this one. Don't put any \n in the variable descriptions.",
116  / * gin_var3 * /
117  "Long description for Generic Input Variable 3 "
118  "which can span multiple lines like for example "
119  "this one. Don't put any \n in the variable descriptions."
120  )
121 
122 */
123 
124 
125 
127 {
128  // The variable md_data is defined in file methods_aux.cc.
130 
131  // Initialise to zero, just in case:
132  md_data_raw.resize(0);
133 
134  // String with all array groups
135  const String ARRAY_GROUPS = get_array_groups_as_string();
136  // String with all groups that also exist as an array type
137  const String GROUPS_WITH_ARRAY_TYPE = get_array_groups_as_string(true, true);
138  // String with all array types whose element type is also available as a group
139  const String ARRAY_GROUPS_WITH_BASETYPE = get_array_groups_as_string(true, false);
140 
142 
143  for (ArrayOfString::const_iterator it = wsv_group_names.begin();
144  it != wsv_group_names.end(); it++)
145  {
146  if (*it != "Any")
147  {
148  md_data_raw.push_back
149  (MdRecord
150  (NAME( String(*it + "Create").c_str() ),
152  (
153  String("Creates a variable of group " + *it + ".\n"
154  "\n"
155  "After being created, the variable is uninitialized.\n"
156  ).c_str()
157  ),
158  AUTHORS( "Oliver Lemke" ),
159  OUT(),
160  GOUT( "out" ),
161  GOUT_TYPE( (*it).c_str() ),
162  GOUT_DESC( "Variable to create." ),
163  IN(),
164  GIN(),
165  GIN_TYPE(),
166  GIN_DEFAULT(),
167  GIN_DESC()
168  )
169  );
170  }
171  }
172 
174  // Let's put in the functions in alphabetical order. This gives a clear rule
175  // for where to place a new function and this gives a nicer results when
176  // the functions are listed by "arts -m all".
177  // No distinction is made between uppercase and lowercase letters. The sign
178  // "_" comes after all letters.
179  // Patrick Eriksson 2002-05-08
181 
182  md_data_raw.push_back
183  ( MdRecord
184  ( NAME( "AbsInputFromAtmFields" ),
186  (
187  "Initialises the WSVs *abs_p*, *abs_t* and *abs_vmrs* from\n"
188  "*p_grid, *t_field* and *vmr_field*.\n"
189  "\n"
190  "This only works for a 1D atmosphere!\n"
191  ),
192  AUTHORS( "Stefan Buehler" ),
193  OUT( "abs_p", "abs_t", "abs_vmrs" ),
194  GOUT(),
195  GOUT_TYPE(),
196  GOUT_DESC(),
197  IN( "atmosphere_dim", "p_grid", "t_field", "vmr_field" ),
198  GIN(),
199  GIN_TYPE(),
200  GIN_DEFAULT(),
201  GIN_DESC()
202  ));
203 
204  md_data_raw.push_back
205  ( MdRecord
206  ( NAME( "AbsInputFromRteScalars" ),
208  (
209  "Initialize absorption input WSVs from local atmospheric conditions.\n"
210  "\n"
211  "The purpose of this method is to allow an explicit line-by-line\n"
212  "calculation, e.g., by *abs_coefCalc*, to be put inside the\n"
213  "*propmat_clearsky_agenda*. What the method does is to prepare absorption\n"
214  "input parameters (pressure, temperature, VMRs), from the input\n"
215  "parameters to *propmat_clearsky_agenda*.\n"
216  ),
217  AUTHORS( "Stefan Buehler" ),
218  OUT( "abs_p", "abs_t", "abs_vmrs" ),
219  GOUT(),
220  GOUT_TYPE(),
221  GOUT_DESC(),
222  IN( "rtp_pressure", "rtp_temperature", "rtp_vmr" ),
223  GIN(),
224  GIN_TYPE(),
225  GIN_DEFAULT(),
226  GIN_DESC()
227  ));
228 
229  md_data_raw.push_back
230  ( MdRecord
231  ( NAME( "abs_coefCalcFromXsec" ),
233  (
234  "Calculate absorption coefficients from cross sections.\n"
235  "\n"
236  "This calculates both the total absorption and the\n"
237  "absorption per species.\n"
238  "\n"
239  "Cross sections are multiplied by n*VMR.\n"
240  ),
241  AUTHORS( "Stefan Buehler", "Axel von Engeln" ),
242  OUT( "abs_coef", "abs_coef_per_species" ),
243  GOUT(),
244  GOUT_TYPE(),
245  GOUT_DESC(),
246  IN( "abs_xsec_per_species", "abs_vmrs", "abs_p", "abs_t" ),
247  GIN(),
248  GIN_TYPE(),
249  GIN_DEFAULT(),
250  GIN_DESC()
251  ));
252 
253  md_data_raw.push_back
254  ( MdRecord
255  ( NAME( "abs_cont_descriptionAppend" ),
257  (
258  "Appends the description of a continuum model or a complete absorption\n"
259  "model to *abs_cont_names* and *abs_cont_parameters*.\n"
260  "\n"
261  "See online documentation for *abs_cont_names* for a list of\n"
262  "allowed models and for information what parameters they require. See\n"
263  "file includes/continua.arts for default parameters for the various models.\n"
264  ),
265  AUTHORS( "Thomas Kuhn", "Stefan Buehler" ),
266  OUT( "abs_cont_names",
267  "abs_cont_models",
268  "abs_cont_parameters" ),
269  GOUT(),
270  GOUT_TYPE(),
271  GOUT_DESC(),
272  IN( "abs_cont_names",
273  "abs_cont_models",
274  "abs_cont_parameters" ),
275  GIN( "tagname", "model", "userparam" ),
276  GIN_TYPE( "String", "String", "Vector" ),
277  GIN_DEFAULT( NODEF, NODEF, "[]"),
278  GIN_DESC(
279  "The name (species tag) of a continuum model. Must match one\n"
280  "of the models implemented in ARTS.\n",
281  "A string selecting a particular continuum/full model under this\n"
282  "species tag.\n",
283  "A Vector containing the required parameters for the selected model.\n"
284  "The meaning of the parameters and how many parameters are required\n"
285  "depends on the model.\n" )
286  ));
287 
288  md_data_raw.push_back
289  ( MdRecord
290  ( NAME( "abs_cont_descriptionInit" ),
292  (
293  "Initializes the two workspace variables for the continuum description,\n"
294  "*abs_cont_names* and *abs_cont_parameters*.\n"
295  "\n"
296  "This method does not really do anything, except setting the two\n"
297  "variables to empty Arrays. It is just necessary because the method\n"
298  "*abs_cont_descriptionAppend* wants to append to the variables.\n"
299  "\n"
300  "Formally, the continuum description workspace variables are required\n"
301  "by the absorption calculation methods (e.g., *abs_coefCalc*). Therefore you\n"
302  "always have to call at least *abs_cont_descriptionInit*, even if you do\n"
303  "not want to use any continua.\n"
304  ),
305  AUTHORS( "Thomas Kuhn", "Stefan Buehler" ),
306  OUT( "abs_cont_names",
307  "abs_cont_models",
308  "abs_cont_parameters" ),
309  GOUT(),
310  GOUT_TYPE(),
311  GOUT_DESC(),
312  IN(),
313  GIN(),
314  GIN_TYPE(),
315  GIN_DEFAULT(),
316  GIN_DESC()
317  ));
318 
319  md_data_raw.push_back
320  ( MdRecord
321  ( NAME( "abs_lineshapeDefine" ),
323  (
324  "Set the lineshape for all calculated lines.\n"
325  "\n"
326  "Sets the lineshape function. Beside the lineshape function itself, you\n"
327  "also have so select a forefactor and a frequency cutoff. The\n"
328  "forefactor is later multiplied with the lineshape function.\n"
329  "\n"
330  "The cutoff frequency is used to make lineshapes finite in frequency,\n"
331  "the response outside the cutoff is set to zero, and the lineshape\n"
332  "value at the cutoff frequency is subtracted from the overall lineshape\n"
333  "as a constant offset. This ensures that the lineshape goes to zero at\n"
334  "the cutoff frequency without a discontinuity.\n"
335  "\n"
336  "We generate only one copy of the lineshape settings. Absorption\n"
337  "routines check for this case and use it for all species.\n"
338  "\n"
339  "The allowed values for the input parameters are:\n"
340  "\n"
341  "shape:\n"
342  " no_shape: no specified shape\n"
343  " Doppler: Doppler lineshape\n"
344  " Lorentz: Lorentz lineshape\n"
345  " Voigt_Kuntz3: Kuntz approximation to the Voigt lineshape,\n"
346  " accuracy > 2x10^(-3)\n"
347  " Voigt_Kuntz4: Kuntz approximation to the Voigt lineshape,\n"
348  " accuracy > 2x10^(-4)\n"
349  " Voigt_Kuntz6: Kuntz approximation to the Voigt lineshape,\n"
350  " accuracy > 2x10^(-6)\n"
351  " Voigt_Drayson: Drayson approximation to the Voigt lineshape\n"
352  " Rosenkranz_Voigt_Drayson: Rosenkrantz oxygen absortion with overlap correction\n"
353  " on the basis of Drayson routine\n"
354  " Rosenkranz_Voigt_Kuntz6 : Rosenkrantz oxygen absortion with overlap correction\n"
355  " on the basis of Kuntz routine, accuracy > 2x10^(-6)\n"
356  " CO2_Lorentz: Lorentz multiplied with Cousin's chi factors\n"
357  " CO2_Drayson: Drayson multiplied with Cousin's chi factors\n"
358  " Faddeeva_Algorithm_916: Faddeeva function based on Zaghloul, M.R. and\n"
359  " A.N. Ali (2011). Implementation by Steven G. Johnson\n"
360  " under the MIT License (attainable through\n"
361  " http://ab-initio.mit.edu/Faddeeva)\n"
362  "\n"
363  "forefactor:\n"
364  " no_norm: 1\n"
365  " quadratic: (f/f0)^2\n"
366  " VVH: (f*tanh(h*f/(2k*T))) / (f0*tanh(h*f0/(2k*T)))\n"
367  "\n"
368  "cutoff:\n"
369  " -1: no cutoff\n"
370  " <Number>: positive cutoff frequency in Hz\n"
371  ),
372  AUTHORS( "Axel von Engeln", "Stefan Buehler" ),
373  OUT( "abs_lineshape" ),
374  GOUT(),
375  GOUT_TYPE(),
376  GOUT_DESC(),
377  IN(),
378  GIN( "shape", "forefactor", "cutoff" ),
379  GIN_TYPE( "String", "String", "Numeric" ),
381  GIN_DESC( "Line shape function.",
382  "Normalization factor.",
383  "Cutoff frequency [Hz]." )
384  ));
385 
386  md_data_raw.push_back
387  ( MdRecord
388  ( NAME( "abs_lineshape_per_tgDefine" ),
390  (
391  "Set the lineshape, separately for each absorption species.\n"
392  "\n"
393  "This method is similar to *abs_lineshapeDefine*, except that a\n"
394  "different lineshape can be set for each absorption species (see\n"
395  "*abs_species*). For example, you might want to use different values of\n"
396  "the cutoff frequency for different species.\n"
397  "\n"
398  "For detailed documentation on the available options for the input\n"
399  "parameters see documentation of method *abs_lineshapeDefine*.\n"
400  ),
401  AUTHORS( "Axel von Engeln", "Stefan Buehler" ),
402  OUT( "abs_lineshape" ),
403  GOUT(),
404  GOUT_TYPE(),
405  GOUT_DESC(),
406  IN( "abs_species" ),
407  GIN( "shape", "normalizationfactor", "cutoff" ),
408  GIN_TYPE( "ArrayOfString", "ArrayOfString", "Vector" ),
410  GIN_DESC( "Line shape function for each species.",
411  "Normalization factor for each species.",
412  "Cutoff frequency [Hz] for each species." )
413  ));
414 
415  md_data_raw.push_back
416  ( MdRecord
417  ( NAME( "abs_linesArtscat4FromArtscat3" ),
419  (
420  "Convert a line list from ARTSCAT-3 to ARTSCAT-4 format.\n"
421  "\n"
422  "ARTSCAT-4 lines contain more information than ARTSCAT-3 lines,\n"
423  "particularly they contain separate broadening parameters for six\n"
424  "different broadening species. So a real conversion is not\n"
425  "possible. What this method does is copy the air broadening (and shift)\n"
426  "parameters from ARTSCAT-3 to all ARTSCAT-4 broadening species. The\n"
427  "case that one of the broadening species is identical to the Self\n"
428  "species is also handled correctly.\n"
429  "\n"
430  "The idea is that the ARTSCAT-4 line list generated in this way should\n"
431  "give identical RT simulation results as the original ARTSCAT-3\n"
432  "list. This is verified in one of the test controlfiles.\n"
433  "\n"
434  "Currently only broadening and shift parameters are handled here. There\n"
435  "are some other additional fields in ARTSCAT-4, which we so far ignore.\n"
436  ),
437  AUTHORS( "Stefan Buehler" ),
438  OUT( "abs_lines" ),
439  GOUT(),
440  GOUT_TYPE(),
441  GOUT_DESC(),
442  IN( "abs_lines" ),
443  GIN( ),
444  GIN_TYPE( ),
445  GIN_DEFAULT( ),
446  GIN_DESC( )
447  ));
448 
449  md_data_raw.push_back
450  ( MdRecord
451  ( NAME( "abs_linesReadFromArts" ),
453  (
454  "Read all the lines from an Arts catalogue file in the\n"
455  "given frequency range. Otherwise a runtime error will be\n"
456  "thrown\n"
457  "\n"
458  "Please note that all lines must correspond\n"
459  "to legal species / isotopologue combinations\n"
460  ),
461  AUTHORS( "Stefan Buehler" ),
462  OUT( "abs_lines" ),
463  GOUT(),
464  GOUT_TYPE(),
465  GOUT_DESC(),
466  IN(),
467  GIN( "filename", "fmin", "fmax" ),
468  GIN_TYPE( "String", "Numeric", "Numeric" ),
470  GIN_DESC( "Name (and path) of the catalogue file.",
471  "Minimum frequency for lines to read [Hz].",
472  "Maximum frequency for lines to read [Hz]." )
473  ));
474 
475  md_data_raw.push_back
476  ( MdRecord
477  ( NAME( "abs_linesReadFromHitran" ),
479  (
480  "Read all the lines from HITRAN 2004 and later catalogue file in\n"
481  "the given frequency range. Otherwise a runtime error is thrown.\n"
482  "\n"
483  "Records of molecules unknown to ARTS are ignored but a\n"
484  "warning is issued. In particular this happens for CH3OH\n"
485  "(HITRAN molecule number 39) because there is no total internal\n"
486  "partition sum available.\n"
487  "\n"
488  "The database must be sorted by increasing frequency!\n"
489  "\n"
490  "WWW access of the HITRAN catalogue: http://www.hitran.com/\n"
491  "\n"
492  "For data in the Hitran 1986-2001 format use the workspace\n"
493  "method *abs_linesReadFromHitranPre2004*\n"
494  ),
495  AUTHORS( "Hermann Berg", "Thomas Kuhn" ),
496  OUT( "abs_lines" ),
497  GOUT(),
498  GOUT_TYPE(),
499  GOUT_DESC(),
500  IN(),
501  GIN( "filename", "fmin", "fmax" ),
502  GIN_TYPE( "String", "Numeric", "Numeric" ),
504  GIN_DESC( "Name (and path) of the catalogue file.",
505  "Minimum frequency for lines to read [Hz].",
506  "Maximum frequency for lines to read [Hz]." )
507  ));
508 
509  md_data_raw.push_back
510  ( MdRecord
511  ( NAME( "abs_linesReadFromHitranPre2004" ),
513  (
514  "Read all the lines from a HITRAN 1986-2001 catalogue file in\n"
515  "the given frequency range. Otherwise a runtime error will be\n"
516  "thrown. For HITRAN 2004 and later line data use the workspace\n"
517  "method *abs_linesReadFromHitran*.\n"
518  "\n"
519  "Please note that all lines must correspond to legal\n"
520  "species / isotopologue combinations and that the line data\n"
521  "file must be sorted by increasing frequency\n"
522  "\n"
523  "WWW access of the HITRAN catalogue: http://www.hitran.com/\n"
524  ),
525  AUTHORS( "Thomas Kuhn" ),
526  OUT( "abs_lines" ),
527  GOUT(),
528  GOUT_TYPE(),
529  GOUT_DESC(),
530  IN(),
531  GIN( "filename", "fmin", "fmax" ),
532  GIN_TYPE( "String", "Numeric", "Numeric" ),
534  GIN_DESC( "Name (and path) of the catalogue file.",
535  "Minimum frequency for lines to read [Hz].",
536  "Maximum frequency for lines to read [Hz]." )
537  ));
538 
539  md_data_raw.push_back
540  ( MdRecord
541  ( NAME( "abs_linesReadFromJpl" ),
543  (
544  "Read all the lines from a JPL catalogue file in the\n"
545  "given frequency range. Otherwise a runtime error will be\n"
546  "thrown\n"
547  "\n"
548  "Please note that all lines must correspond\n"
549  "to legal species / isotopologue combinations.\n"
550  "\n"
551  "WWW access of the JPL catalogue: http://spec.jpl.nasa.gov/\n"
552  ),
553  AUTHORS( "Thomas Kuhn" ),
554  OUT( "abs_lines" ),
555  GOUT(),
556  GOUT_TYPE(),
557  GOUT_DESC(),
558  IN(),
559  GIN( "filename", "fmin", "fmax" ),
560  GIN_TYPE( "String", "Numeric", "Numeric" ),
562  GIN_DESC( "Name (and path) of the catalogue file.",
563  "Minimum frequency for lines to read [Hz].",
564  "Maximum frequency for lines to read [Hz]." )
565  ));
566 
567  md_data_raw.push_back
568  ( MdRecord
569  ( NAME( "abs_linesReadFromMytran2" ),
571  (
572  "Read all the lines from a MYTRAN2 catalogue file in the\n"
573  "given frequency range. Otherwise a runtime error will be\n"
574  "thrown\n"
575  "\n"
576  "Please note that all lines must correspond\n"
577  "to legal species / isotopologue combinations\n"
578  ),
579  AUTHORS( "Axel von Engeln", "Stefan Buehler" ),
580  OUT( "abs_lines" ),
581  GOUT(),
582  GOUT_TYPE(),
583  GOUT_DESC(),
584  IN(),
585  GIN( "filename", "fmin", "fmax" ),
586  GIN_TYPE( "String", "Numeric", "Numeric" ),
588  GIN_DESC( "Name (and path) of the catalogue file.",
589  "Minimum frequency for lines to read [Hz].",
590  "Maximum frequency for lines to read [Hz]." )
591  ));
592 
593  md_data_raw.push_back
594  ( MdRecord
595  ( NAME( "abs_linesReadFromSplitArtscat" ),
597  (
598  "Read all the lines in the given frequency range from a split\n"
599  "Arts catalogue file.\n"
600  "\n"
601  "Please note that all lines must correspond\n"
602  "to legal species / isotopologue combinations\n"
603  ),
604  AUTHORS( "Oliver Lemke" ),
605  OUT( "abs_lines" ),
606  GOUT(),
607  GOUT_TYPE(),
608  GOUT_DESC(),
609  IN( "abs_species" ),
610  GIN( "basename", "fmin", "fmax" ),
611  GIN_TYPE( "String", "Numeric", "Numeric" ),
613  GIN_DESC("Basename of the catalogue.",
614  "Minimum frequency for lines to read [Hz].",
615  "Maximum frequency for lines to read [Hz]." )
616  ));
617 
618  md_data_raw.push_back
619  ( MdRecord
620  ( NAME( "abs_lines_per_speciesAddMirrorLines" ),
622  (
623  "Adds mirror lines at negative frequencies to *abs_lines_per_species*.\n"
624  "\n"
625  "For each line at frequency +f in *abs_lines_per_species* a corresponding\n"
626  "entry at frequency -f is added to *abs_lines_per_species*. The mirror\n"
627  "lines are appended to the line list after the original lines.\n"
628  ),
629  AUTHORS( "Axel von Engeln", "Stefan Buehler", "Patrick Eriksson"),
630  OUT( "abs_lines_per_species" ),
631  GOUT(),
632  GOUT_TYPE(),
633  GOUT_DESC(),
634  IN( "abs_lines_per_species" ),
635  GIN( "max_f" ),
636  GIN_TYPE( "Numeric" ),
637  GIN_DEFAULT( "-1" ),
638  GIN_DESC( "Limit for mirroring, ie. lines above this frequency do "
639  "not generate a mirror line. All lines mirrored if *max_f* "
640  "is < 0, that is the default setting.")
641  ));
642 
643  md_data_raw.push_back
644  ( MdRecord
645  ( NAME( "abs_lines_per_speciesCompact" ),
647  (
648  "Removes all lines outside the defined lineshape cutoff frequencies\n"
649  "from *abs_lines_per_species*. This can save computation time.\n"
650  "It should be particularly useful to call this method after\n"
651  "*abs_lines_per_speciesAddMirrorLines*.\n"
652  ),
653  AUTHORS( "Axel von Engeln", "Stefan Buehler" ),
654  OUT( "abs_lines_per_species" ),
655  GOUT(),
656  GOUT_TYPE(),
657  GOUT_DESC(),
658  IN( "abs_lines_per_species", "abs_lineshape", "f_grid" ),
659  GIN(),
660  GIN_TYPE(),
661  GIN_DEFAULT(),
662  GIN_DESC()
663  ));
664 
665  md_data_raw.push_back
666  ( MdRecord
667  ( NAME( "abs_lines_per_speciesCreateFromLines" ),
669  (
670  "Split lines up into the different species.\n"
671  "\n"
672  "The species are tested in the order in which they are specified in the\n"
673  "controlfile. Lines are assigned to the first species that\n"
674  "matches. That means if the list of species is [\"O3-666\",\"O3\"], then\n"
675  "the last group O3 gets assigned all the O3 lines that do not fit in\n"
676  "the first group (all other isotopologues than the main isotopologue).\n"
677  ),
678  AUTHORS( "Stefan Buehler" ),
679  OUT( "abs_lines_per_species" ),
680  GOUT(),
681  GOUT_TYPE(),
682  GOUT_DESC(),
683  IN( "abs_lines", "abs_species" ),
684  GIN(),
685  GIN_TYPE(),
686  GIN_DEFAULT(),
687  GIN_DESC()
688  ));
689 
690  md_data_raw.push_back
691  ( MdRecord
692  ( NAME( "abs_lines_per_speciesReadFromCatalogues" ),
694  (
695  "Read spectral line data from different line catalogues.\n"
696  "\n"
697  "For each absorption species, you can specify which catalogue to\n"
698  "use. Because the method creates *abs_lines_per_species* directly, it\n"
699  "replaces for example the following two method calls:\n"
700  "\n"
701  " - abs_linesReadFromHitran\n"
702  " - abs_lines_per_speciesCreateFromLines\n"
703  "\n"
704  "This method needs as input WSVs the list of species\n"
705  "*abs_species*. Generic input parameters must specify the names of the\n"
706  "catalogue files to use and the matching formats. Names can be\n"
707  "anything, formats can currently be HITRAN96 (for HITRAN 1986-2001\n"
708  "databases), HITRAN04 (for HITRAN 2004 database), MYTRAN2, JPL, or\n"
709  "ARTS. Furthermore, you have to specify minimum and maximum frequency\n"
710  "for each species. To safe typing, if there are less elements in the\n"
711  "keyword parameters than there are species, the last parameters are\n"
712  "applied to all following species.\n"
713  "\n"
714  "Example usage:\n"
715  "\n"
716  "abs_lines_per_speciesReadFromCatalogues(\n"
717  " [ \"../data/cat1.dat\", \"../data/cat2.dat\" ]\n"
718  " [ \"MYTRAN2\", \"HITRAN96\" ]\n"
719  " [ 0, 0 ]\n"
720  " [ 2000e9, 100e9 ]\n"
721  ")\n"
722  "\n"
723  "In this example, lines for the first species will be taken from cat1,\n"
724  "lines for all other species will be taken from cat2. This allows you\n"
725  "for example to use a special line file just for water vapor lines.\n"
726  "\n"
727  "Catalogues are only read once, even if several tag groups have the\n"
728  "same catalogue. However, in that case the frequency ranges MUST be the\n"
729  "same. (If you want to do fine-tuning of the frequency ranges, you can\n"
730  "do this inside the tag definitions, e.g., \"H2O-*-0-2000e9\".)\n"
731  "\n"
732  "This function uses the various reading routines\n"
733  "(*abs_linesReadFromHitran*, etc.), as well as\n"
734  "*abs_lines_per_speciesCreateFromLines*.\n"
735  ),
736  AUTHORS( "Stefan Buehler" ),
737  OUT( "abs_lines_per_species" ),
738  GOUT(),
739  GOUT_TYPE(),
740  GOUT_DESC(),
741  IN( "abs_species" ),
742  GIN( "filenames", "formats", "fmin", "fmax" ),
743  GIN_TYPE( "ArrayOfString", "ArrayOfString", "Vector", "Vector" ),
745  GIN_DESC( "Name (and path) of the catalogue files.",
746  "Format of each file. (Allowed formats are\n"
747  "HITRAN96, HITRAN04, MYTRAN2, JPL, ARTS.",
748  "Minimum frequency for lines to read [Hz].",
749  "Maximum frequency for lines to read [Hz]." )
750  ));
751 
752  md_data_raw.push_back
753  ( MdRecord
754  ( NAME( "abs_lines_per_speciesSetEmpty" ),
756  (
757  "Sets abs_lines_per_species to empty line lists.\n"
758  "\n"
759  "You can use this method to set *abs_lines_per_species* if you do not\n"
760  "really want to compute line spectra. Formally, abs_coefCalc will still\n"
761  "require *abs_lines_per_species* to be set.\n"
762  ),
763  AUTHORS( "Stefan Buehler" ),
764  OUT( "abs_lines_per_species" ),
765  GOUT(),
766  GOUT_TYPE(),
767  GOUT_DESC(),
768  IN( "abs_species" ),
769  GIN(),
770  GIN_TYPE(),
771  GIN_DEFAULT(),
772  GIN_DESC()
773  ));
774 
775  md_data_raw.push_back
776  ( MdRecord
777  ( NAME( "abs_lines_per_speciesWriteToSplitArtscat" ),
779  (
780  "Write each species to a separate catalogue file.\n"
781  ),
782  AUTHORS( "Oliver Lemke" ),
783  OUT(),
784  GOUT(),
785  GOUT_TYPE(),
786  GOUT_DESC(),
787  IN( "output_file_format", "abs_lines_per_species" ),
788  GIN( "basename" ),
789  GIN_TYPE( "String" ),
790  GIN_DEFAULT( "" ),
791  GIN_DESC( "Basename of the catalogue." )
792  ));
793 
794  md_data_raw.push_back
795  ( MdRecord
796  ( NAME( "abs_lookupAdapt" ),
798  (
799  "Adapts a gas absorption lookup table to the current calculation.\n"
800  "\n"
801  "The lookup table can contain more species and more frequencies than\n"
802  "are needed for the current calculation. This method cuts down the\n"
803  "table in memory, so that it contains just what is needed. Also, the\n"
804  "species in the table are brought in the same order as the species in\n"
805  "the current calculation.\n"
806  "\n"
807  "Of course, the method also performs quite a lot of checks on the\n"
808  "table. If something is not ok, a runtime error is thrown.\n"
809  "\n"
810  "The method sets a flag *abs_lookup_is_adapted* to indicate that the\n"
811  "table has been checked and that it is ok. Never set this by hand,\n"
812  "always use this method to set it!\n"
813  ),
814  AUTHORS( "Stefan Buehler" ),
815  OUT( "abs_lookup", "abs_lookup_is_adapted" ),
816  GOUT(),
817  GOUT_TYPE(),
818  GOUT_DESC(),
819  IN( "abs_lookup", "abs_species", "f_grid" ),
820  GIN(),
821  GIN_TYPE(),
822  GIN_DEFAULT(),
823  GIN_DESC()
824  ));
825 
826  md_data_raw.push_back
827  ( MdRecord
828  ( NAME( "abs_lookupCalc" ),
830  (
831  "Creates a gas absorption lookup table.\n"
832  "\n"
833  "The lookup table stores absorption cross-sections as a function of\n"
834  "pressure. Additionally, absorption can be stored as a function of\n"
835  "temperature for temperature perturbations from a reference\n"
836  "profile.\n"
837  "\n"
838  "Additionally, absorption can be stored as a function of water vapor\n"
839  "VMR perturbations from a reference profile. The variable *abs_nls*\n"
840  "specifies, for which species water vapor perturbations should be\n"
841  "generated.\n"
842  "\n"
843  "Note, that the absorbing gas can be any gas, but the perturbing gas is\n"
844  "always H2O.\n"
845  "\n"
846  "In contrast to other absorption functions, this method does not use\n"
847  "the input variable *abs_h2o*. This is because *abs_h2o* has to be set\n"
848  "interally to allow perturbations. If there are more than one H2O\n"
849  "species, the first is assumed to be the main one.\n"
850  ),
851  AUTHORS( "Stefan Buehler" ),
852  OUT( "abs_lookup", "abs_lookup_is_adapted" ),
853  GOUT(),
854  GOUT_TYPE(),
855  GOUT_DESC(),
856  IN( "abs_species",
857  "abs_nls",
858  "f_grid",
859  "abs_p",
860  "abs_vmrs",
861  "abs_t",
862  "abs_t_pert",
863  "abs_nls_pert",
864  "abs_xsec_agenda"
865  ),
866  GIN(),
867  GIN_TYPE(),
868  GIN_DEFAULT(),
869  GIN_DESC()
870  ));
871 
872  md_data_raw.push_back
873  ( MdRecord
874  ( NAME( "abs_lookupInit" ),
876  (
877  "Creates an empty gas absorption lookup table.\n"
878  "\n"
879  "This is mainly there to help developers. For example, you can write\n"
880  "the empty table to an XML file, to see the file format.\n"
881  ),
882  AUTHORS( "Stefan Buehler" ),
883  OUT( "abs_lookup" ),
884  GOUT(),
885  GOUT_TYPE(),
886  GOUT_DESC(),
887  IN(),
888  GIN(),
889  GIN_TYPE(),
890  GIN_DEFAULT(),
891  GIN_DESC()
892  ));
893 
894  md_data_raw.push_back
895  ( MdRecord
896  ( NAME( "abs_lookupSetup" ),
898  (
899  "Set up input parameters for abs_lookupCalc.\n"
900  "\n"
901  "More information can be found in the documentation for method\n"
902  "*abs_lookupSetupBatch*\n"
903  "\n"
904  "Max and min values of H2O and temperature are adjusted to allow for\n"
905  "numerical perturbations in Jacobian calculation.\n"
906  "\n"
907  "The input variables *abs_nls_interp_order* and *abs_t_interp_order*\n"
908  "are used to make sure that there are enough points in *abs_nls_pert*\n"
909  "and *abs_t_pert* for the chosen interpolation order.\n"
910  "\n"
911  "Note: For homogeneous 1D cases, it can be advantageous to calculate\n"
912  "*abs_lookup* from the 1D atmosphere, and to expand the atmosphere\n"
913  "to 3D only after that. This particularly if nonlinear species\n"
914  "(i.e., H2O) are involved."
915  "\n"
916  "See also:\n"
917  " *abs_lookupSetupBatch*\n"
918  ),
919  AUTHORS( "Stefan Buehler" ),
920  OUT( "abs_p",
921  "abs_t",
922  "abs_t_pert",
923  "abs_vmrs",
924  "abs_nls",
925  "abs_nls_pert" ),
926  GOUT(),
927  GOUT_TYPE(),
928  GOUT_DESC(),
929  IN( "atmosphere_dim",
930  "p_grid",
931 // "lat_grid",
932 // "lon_grid",
933  "t_field",
934  "vmr_field",
935  "atmfields_checked",
936  "abs_species",
937  "abs_p_interp_order",
938  "abs_t_interp_order",
939  "abs_nls_interp_order" ),
940  GIN( "p_step", "t_step", "h2o_step" ),
941  GIN_TYPE( "Numeric", "Numeric", "Numeric" ),
942  GIN_DEFAULT( "0.05", "100", "100" ),
943  GIN_DESC( /* p_step */
944  "Maximum step in log10(p[Pa]) (base 10 logarithm)."
945  "If the pressure grid is coarser than this, additional "
946  "points are added until each log step is smaller than this.",
947  /* t_step */
948  "The temperature variation grid step in Kelvin, "
949  "for a 2D or 3D atmosphere. For a 1D atmosphere this "
950  "parameter is not used.",
951  /* h2o_step */
952  "The H2O variation grid step [fractional], if "
953  "H2O variations are done (which is determined automatically, "
954  "based on abs_species and the atmospheric dimension). For a "
955  "1D atmosphere this parameter is not used."
956  )
957  ));
958 
959  md_data_raw.push_back
960  ( MdRecord
961  ( NAME( "abs_lookupSetupBatch" ),
963  (
964  "Set up input parameters for abs_lookupCalc for batch calculations.\n"
965  "\n"
966  "This method performs a similar task as *abs_lookupSetup*, with the\n"
967  "difference, that the lookup table setup is not for a single\n"
968  "atmospheric state, but for a whole batch of them, stored in\n"
969  "*batch_atm_fields_compact*.\n"
970  "\n"
971  "The method checks *abs_species* to decide, which species depend on\n"
972  "*abs_h2o*, and hence require nonlinear treatment in the lookup table.\n"
973  "\n"
974  "The method also checks which range of pressures, temperatures, and\n"
975  "VMRs occurs, and sets *abs_p*, *abs_t*, *abs_t_pert*, and *abs_vmrs*\n"
976  "accordingly.\n"
977  "\n"
978  "If nonlinear species are present, *abs_nls* and *abs_nls_pert* are also\n"
979  "generated.\n"
980  "\n"
981  "Max and min values of H2O and temperature are adjusted to allow for\n"
982  "numerical perturbations in Jacobian calculation.\n"
983  "\n"
984  "The input variables *abs_nls_interp_order* and *abs_t_interp_order*\n"
985  "are used to make sure that there are enough points in *abs_nls_pert*\n"
986  "and *abs_t_pert* for the chosen interpolation order.\n"
987  "\n"
988  "See also:\n"
989  " *abs_lookupSetup*\n"
990  ),
991  AUTHORS( "Stefan Buehler" ),
992  OUT( "abs_p",
993  "abs_t",
994  "abs_t_pert",
995  "abs_vmrs",
996  "abs_nls",
997  "abs_nls_pert" ),
998  GOUT(),
999  GOUT_TYPE(),
1000  GOUT_DESC(),
1001  IN( "abs_species",
1002  "batch_atm_fields_compact",
1003  "abs_p_interp_order",
1004  "abs_t_interp_order",
1005  "abs_nls_interp_order" ),
1006  GIN( "p_step", "t_step", "h2o_step", "extremes" ),
1007  GIN_TYPE( "Numeric", "Numeric", "Numeric", "Vector" ),
1008  GIN_DEFAULT( "0.05", "20", "100", "[]" ),
1009  GIN_DESC( /* p_step */
1010  "Grid step in log10(p[Pa]) (base 10 logarithm).",
1011  /* t_step */
1012  "The temperature variation grid step in Kelvin. The true "
1013  "step can become finer than this, if required by the "
1014  "interpolation order.",
1015  /* h2o_step */
1016  "The H2O variation grid step [fractional], if H2O variations "
1017  "are done (which is determined automatically, based on "
1018  "abs_species and the atmospheric dimension). As for T, the true "
1019  "step can turn out finer if required by the interpolation order.",
1020  /* extremes */
1021  "You can give here explicit extreme values to add to "
1022  "abs_t_pert and abs_nls_pert. The order is [t_pert_min, "
1023  "t_pert_max, nls_pert_min, nls_pert_max]."
1024  )
1025  ));
1026 
1027  md_data_raw.push_back
1028  ( MdRecord
1029  ( NAME( "abs_lookupSetupWide" ),
1030  DESCRIPTION
1031  (
1032  "Set up input parameters for abs_lookupCalc for a wide range of\n"
1033  "atmospheric conditions.\n"
1034  "\n"
1035  "This method can be used to set up parameters for a lookup table that\n"
1036  "really covers all reasonable atmospheric conditions.\n"
1037  "\n"
1038  "Reference profiles of T and H2O will be constant, so that the\n"
1039  "different dimensions in the lookup table are actually \"orthogonal\",\n"
1040  "unlike the traditional case where we have pressure dependent reference\n"
1041  "profiles. This makes the table numerically somewhat more robust then\n"
1042  "the traditional ones, and it makes it straightforward to calculate the\n"
1043  "accuracy for the different interpolations with abs_lookupTestAccuracy.\n"
1044  "\n"
1045  "You can give min an max values for the atmospheric conditions. The\n"
1046  "default values are chosen such that they cover all Chevallier data set\n"
1047  "cases, and a bit more. The statistics of the Chevallier data are:\n"
1048  "\n"
1049  "min(p) / max(p) [Pa]: 1 / 104960\n"
1050  "min(T) / max(T) [K]: 158.21 / 320.39\n"
1051  "min(H2O) / max(H2O) [VMR]: -5.52e-07 / 0.049\n"
1052  ),
1053  AUTHORS( "Stefan Buehler" ),
1054  OUT( "abs_p",
1055  "abs_t",
1056  "abs_t_pert",
1057  "abs_vmrs",
1058  "abs_nls",
1059  "abs_nls_pert" ),
1060  GOUT(),
1061  GOUT_TYPE(),
1062  GOUT_DESC(),
1063  IN( "abs_species",
1064  "abs_p_interp_order",
1065  "abs_t_interp_order",
1066  "abs_nls_interp_order" ),
1067  GIN( "p_min", "p_max", "p_step", "t_min", "t_max", "h2o_min", "h2o_max" ),
1068  GIN_TYPE( "Numeric", "Numeric", "Numeric", "Numeric", "Numeric", "Numeric", "Numeric" ),
1069  GIN_DEFAULT( "0.5", "110000", "0.05", "100", "400", "0", "0.05" ),
1070  GIN_DESC( "Pressure grid minimum [Pa].",
1071  "Pressure grid maximum [Pa].",
1072  "Pressure grid step in log10(p[Pa]) (base 10 logarithm).",
1073  "Temperature grid minimum [K].",
1074  "Temperature grid maximum [K].",
1075  "Humidity grid minimum [fractional].",
1076  "Humidity grid maximum [fractional]." )
1077  ));
1078 
1079  md_data_raw.push_back
1080  ( MdRecord
1081  ( NAME( "abs_lookupTestAccuracy" ),
1082  DESCRIPTION
1083  (
1084  "Test accuracy of absorption lookup table.\n"
1085  "\n"
1086  "Explicitly compare absorption from the lookup table with line-by-line\n"
1087  "calculations for strategically selected conditions (in-between the\n"
1088  "lookup table grid points).\n"
1089  "\n"
1090  "For error units see *abs_lookupTestAccMC*\n"
1091  "\n"
1092  "Produces no workspace output, only output to the output streams.\n"
1093  ),
1094  AUTHORS( "Stefan Buehler" ),
1095  OUT(),
1096  GOUT(),
1097  GOUT_TYPE(),
1098  GOUT_DESC(),
1099  IN( "abs_lookup",
1100  "abs_lookup_is_adapted",
1101  "abs_p_interp_order",
1102  "abs_t_interp_order",
1103  "abs_nls_interp_order",
1104  "abs_xsec_agenda" ),
1105  GIN(),
1106  GIN_TYPE(),
1107  GIN_DEFAULT(),
1108  GIN_DESC()
1109  ));
1110 
1111  md_data_raw.push_back
1112  ( MdRecord
1113  ( NAME( "abs_lookupTestAccMC" ),
1114  DESCRIPTION
1115  (
1116  "Test accuracy of absorption lookup table with Monte Carlo Algorithm.\n"
1117  "\n"
1118  "Explicitly compare absorption from the lookup table with line-by-line\n"
1119  "calculations for random conditions.\n"
1120  "\n"
1121  "The quantities returned are the mean value and standard deviation of\n"
1122  "the absolute value of the relative error in percent.\n"
1123  "The relative error itself is computed for a large number of cases\n"
1124  "(pressure, temperature, and H2O VMR combinations). In the frequency\n"
1125  "dimension the maximum value is taken for each case.\n"
1126  "\n"
1127  "Produces no workspace output, only output to the output streams.\n"
1128  ),
1129  AUTHORS( "Stefan Buehler" ),
1130  OUT(),
1131  GOUT(),
1132  GOUT_TYPE(),
1133  GOUT_DESC(),
1134  IN( "abs_lookup",
1135  "abs_lookup_is_adapted",
1136  "abs_p_interp_order",
1137  "abs_t_interp_order",
1138  "abs_nls_interp_order",
1139  "mc_seed",
1140  "abs_xsec_agenda" ),
1141  GIN(),
1142  GIN_TYPE(),
1143  GIN_DEFAULT(),
1144  GIN_DESC()
1145  ));
1146 
1147  md_data_raw.push_back
1148  ( MdRecord
1149  ( NAME( "abs_xsec_agenda_checkedCalc" ),
1150  DESCRIPTION
1151  (
1152  "Checks if the *abs_xsec_agenda* contains all necessary\n"
1153  "methods to calculate all the species in *abs_species*.\n"
1154  "\n"
1155  "This method should be called just before the *abs_xsec_agenda*\n"
1156  "is used, e.g. *abs_lookupCalc*, *ybatchCalc*, *yCalc*\n"
1157  ),
1158  AUTHORS( "Oliver Lemke" ),
1159  OUT( "abs_xsec_agenda_checked" ),
1160  GOUT(),
1161  GOUT_TYPE(),
1162  GOUT_DESC(),
1163  IN( "abs_species", "abs_xsec_agenda" ),
1164  GIN(),
1165  GIN_TYPE(),
1166  GIN_DEFAULT(),
1167  GIN_DESC()
1168  ));
1169 
1170  md_data_raw.push_back
1171  ( MdRecord
1172  ( NAME( "abs_speciesAdd" ),
1173  DESCRIPTION
1174  (
1175  "Adds species tag groups to the list of absorption species.\n"
1176  "\n"
1177  "This WSM is similar to *abs_speciesSet*, the only difference is that\n"
1178  "this method appends species to an existing list of absorption species instead\n"
1179  "of creating the whole list.\n"
1180  "\n"
1181  "See *abs_speciesSet* for details on how tags are defined and examples of\n"
1182  "how to input them in the control file.\n"
1183  ),
1184  AUTHORS( "Stefan Buehler" ),
1185  OUT( "abs_species", "propmat_clearsky_agenda_checked", "abs_xsec_agenda_checked" ),
1186  GOUT(),
1187  GOUT_TYPE(),
1188  GOUT_DESC(),
1189  IN( "abs_species" ),
1190  GIN( "species" ),
1191  GIN_TYPE( "ArrayOfString" ),
1192  GIN_DEFAULT( NODEF ),
1193  GIN_DESC( "Specify one String for each tag group that you want to\n"
1194  "add. Inside the String, separate the tags by commas\n"
1195  "(plus optional blanks).\n")
1196  ));
1197 
1198  md_data_raw.push_back
1199  ( MdRecord
1200  ( NAME( "abs_speciesAdd2" ),
1201  DESCRIPTION
1202  (
1203  "Adds a species tag group to the list of absorption species and\n"
1204  "jacobian quantities.\n"
1205  "\n"
1206  "The method is basically a combined call of *abs_speciesAdd* and\n"
1207  "*jacobianAddAbsSpecies*. In this way it is not needed to specify a\n"
1208  "tag group in two different places.\n"
1209  "\n"
1210  "Arguments exactly as for *jacobianAddAbsSpecies*. Note that this\n"
1211  "method only handles a single tag group, in contrast to\n"
1212  "*abs_speciesAdd*\n"
1213  ),
1214  AUTHORS( "Patrick Eriksson" ),
1215  OUT( "abs_species", "jacobian_quantities", "jacobian_agenda",
1216  "propmat_clearsky_agenda_checked", "abs_xsec_agenda_checked" ),
1217  GOUT(),
1218  GOUT_TYPE(),
1219  GOUT_DESC(),
1220  IN( "abs_species", "atmosphere_dim", "p_grid", "lat_grid",
1221  "lon_grid" ),
1222  GIN( "gin1" , "gin2" , "gin3" ,
1223  "species", "method", "unit", "dx" ),
1224  GIN_TYPE( "Vector", "Vector", "Vector",
1225  "String", "String", "String", "Numeric" ),
1226  GIN_DEFAULT( NODEF , NODEF , NODEF ,
1227  NODEF, NODEF, NODEF, NODEF ),
1228  GIN_DESC( "Pressure retrieval grid.",
1229  "Latitude retrieval grid.",
1230  "Longitude retreival grid.",
1231  "The species tag of the retrieval quantity.",
1232  "Calculation method. See above.",
1233  "Retrieval unit. See above.",
1234  "Size of perturbation."
1235  ),
1236  SETMETHOD( false ),
1237  AGENDAMETHOD( false ),
1238  USES_TEMPLATES( false ),
1239  PASSWORKSPACE( true )
1240  ));
1241 
1242  md_data_raw.push_back
1243  ( MdRecord
1244  ( NAME( "abs_speciesDefineAllInScenario" ),
1245  DESCRIPTION
1246  (
1247  "Define one tag group for each species known to ARTS and included in an\n"
1248  "atmospheric scenario.\n"
1249  "\n"
1250  "You can use this as an alternative to *abs_speciesSet* if you want to make an\n"
1251  "absorption calculation that is as complete as possible. The method\n"
1252  "goes through all defined species and tries to open the VMR file. If\n"
1253  "this works the tag is included, otherwise it is skipped.\n"
1254  ),
1255  AUTHORS( "Stefan Buehler" ),
1256  OUT( "abs_species", "propmat_clearsky_agenda_checked", "abs_xsec_agenda_checked" ),
1257  GOUT(),
1258  GOUT_TYPE(),
1259  GOUT_DESC(),
1260  IN(),
1261  GIN( "basename" ),
1262  GIN_TYPE( "String" ),
1263  GIN_DEFAULT( NODEF ),
1264  GIN_DESC( "The name and path of a particular atmospheric scenario.\n"
1265  "For example: /pool/lookup2/arts-data/atmosphere/fascod/tropical" )
1266  ));
1267 
1268  md_data_raw.push_back
1269  ( MdRecord
1270  ( NAME( "abs_speciesInit" ),
1271  DESCRIPTION
1272  (
1273  "Sets *abs_species* to be empty.\n"
1274  ),
1275  AUTHORS( "Stefan Buehler" ),
1276  OUT( "abs_species" ),
1277  GOUT(),
1278  GOUT_TYPE(),
1279  GOUT_DESC(),
1280  IN(),
1281  GIN(),
1282  GIN_TYPE(),
1283  GIN_DEFAULT(),
1284  GIN_DESC()
1285  ));
1286 
1287  md_data_raw.push_back
1288  ( MdRecord
1289  ( NAME( "abs_speciesSet" ),
1290  DESCRIPTION
1291  (
1292  "Set up a list of absorption species tag groups.\n"
1293  "\n"
1294  "Workspace variables like *abs_species* contain several tag\n"
1295  "groups. Each tag group contains one or more tags. This method converts\n"
1296  "descriptions of tag groups given in the keyword to the ARTS internal\n"
1297  "representation (an *ArrayOfArrayOfSpeciesTag*). A tag group selects\n"
1298  "spectral features which belong to the same species.\n"
1299  "\n"
1300  "A tag is defined in terms of the name of the species, isotopologue, and a\n"
1301  "range of frequencies. Species are named after the standard chemical\n"
1302  "names, e.g., \"O3\". Isotopologues are given by the last digit of the atomic\n"
1303  "weight, i.g., \"O3-668\" for the asymmetric ozone molecule including an\n"
1304  "oxygen 18 atom. Groups of transitions are specified by giving a lower\n"
1305  "and upper limit of a frequency range, e.g., \"O3-666-500e9-501e9\".\n"
1306  "\n"
1307  "To turn on Zeeman calculation for a Species, \"-Z\" may be appended\n"
1308  "to its name: \"O2-Z\" or \"O2-Z-66\"\n"
1309  "\n"
1310  "To turn on line mixing for a Species, \"-LM_METHOD\" may be appended\n"
1311  "to its name. Currently only one METHOD is supported: 2NDORDER.\n"
1312  "Line mixing data has to be provided if this is turned on.\n"
1313  "See *line_mixing_dataInit* and *line_mixing_dataRead*\n."
1314  "Example: \"O2-66-LM_2NDORDER\".\n"
1315  "\n"
1316  "The symbol \"*\" acts as a wild card. Furthermore, frequency range or\n"
1317  "frequency range and isotopologue may be omitted.\n"
1318  "\n"
1319  "Finally, instead of the isotopologue the special letter \"nl\" may be given,\n"
1320  "e.g., \"H2O-nl\". This means that no absorption at all is associated\n"
1321  "with this tag. (It is not quite clear if this feature is useful for\n"
1322  "anything right now.)\n"
1323  "\n"
1324  "Example:\n"
1325  "\n"
1326  " species = [ \"O3-666-500e9-501e9, O3-686\",\n"
1327  " \"O3\",\n"
1328  " \"H2O-PWR98\" ]\n"
1329  "\n"
1330  " The first tag group selects all O3-666 lines between 500 and\n"
1331  " 501 GHz plus all O3-686 lines. \n"
1332  "\n"
1333  " The second tag group selects all remaining O3 transitions.\n"
1334  "\n"
1335  " The third tag group selects H2O, with one of the complete\n"
1336  " absorption models (Rosenkranz 98). No spectrocopic line catalogue\n"
1337  " data will be used for that third tag group.\n"
1338  "\n"
1339  " Note that order of tag groups in the species list matters. In our\n"
1340  " example, changing the order of the first two tag group will give\n"
1341  " different results: as \"O3\" already selects all O3 transitions,\n"
1342  " no lines will remain to be selected by the\n"
1343  " \"O3-666-500e9-501e9, O3-686\" tag.\n"
1344  ),
1345  AUTHORS( "Stefan Buehler" ),
1346  OUT( "abs_species", "abs_xsec_agenda_checked", "propmat_clearsky_agenda_checked" ),
1347  GOUT(),
1348  GOUT_TYPE(),
1349  GOUT_DESC(),
1350  IN(),
1351  GIN( "species" ),
1352  GIN_TYPE( "ArrayOfString" ),
1353  GIN_DEFAULT( NODEF ),
1354  GIN_DESC("Specify one String for each tag group that you want to\n"
1355  "create. Inside the String, separate the tags by commas\n"
1356  "(plus optional blanks).\n")
1357  ));
1358 
1359 
1360  md_data_raw.push_back
1361  ( MdRecord
1362  ( NAME( "abs_vecAddGas" ),
1363  DESCRIPTION
1364  (
1365  "Add gas absorption to first element of absorption vector.\n"
1366  "\n"
1367  "The task of this method is to sum up the gas absorption of the\n"
1368  "different gas species and add the result to the first element of the\n"
1369  "absorption vector.\n"
1370  ),
1371  AUTHORS( "Stefan Buehler" ),
1372  OUT( "abs_vec" ),
1373  GOUT(),
1374  GOUT_TYPE(),
1375  GOUT_DESC(),
1376  IN( "abs_vec", "propmat_clearsky" ),
1377  GIN(),
1378  GIN_TYPE(),
1379  GIN_DEFAULT(),
1380  GIN_DESC()
1381  ));
1382 
1383  md_data_raw.push_back
1384  ( MdRecord
1385  ( NAME( "abs_vecAddPart" ),
1386  DESCRIPTION
1387  (
1388  "The particle absorption is added to *abs_vec*\n"
1389  "\n"
1390  "This function sums up the absorption vectors for all particle\n"
1391  "types weighted with particle number density.\n"
1392  "The resluling absorption vector is added to the workspace\n"
1393  "variable *abs_vec*\n"
1394  "Output and input of this method is *abs_vec* (stokes_dim).\n"
1395  "The inputs are the absorption vector for the single particle type\n"
1396  "*abs_vec_spt* (N_particletypes, stokes_dim) and the local particle\n"
1397  " number densities for all particle types namely the\n"
1398  "*pnd_field* (N_particletypes, p_grid, lat_grid, lon_grid, ) for given\n"
1399  "*p_grid*, *lat_grid*, and *lon_grid*. The particle types required\n"
1400  "are specified in the control file.\n"
1401  ),
1402  AUTHORS( "Sreerekha T.R." ),
1403  OUT( "abs_vec" ),
1404  GOUT(),
1405  GOUT_TYPE(),
1406  GOUT_DESC(),
1407  IN( "abs_vec", "abs_vec_spt", "pnd_field", "atmosphere_dim",
1408  "scat_p_index", "scat_lat_index", "scat_lon_index" ),
1409  GIN(),
1410  GIN_TYPE(),
1411  GIN_DEFAULT(),
1412  GIN_DESC()
1413  ));
1414 
1415  md_data_raw.push_back
1416  ( MdRecord
1417  ( NAME( "abs_vecInit" ),
1418  DESCRIPTION
1419  (
1420  "Initialize absorption vector.\n"
1421  "\n"
1422  "This method is necessary, because all other absorption methods just\n"
1423  "add to the existing absorption vector.\n"
1424  "\n"
1425  "So, here we have to make it the right size and fill it with 0.\n"
1426  "\n"
1427  "Note, that the vector is not really a vector, because it has a\n"
1428  "leading frequency dimension.\n"
1429  ),
1430  AUTHORS( "Stefan Buehler" ),
1431  OUT( "abs_vec" ),
1432  GOUT(),
1433  GOUT_TYPE(),
1434  GOUT_DESC(),
1435  IN( "f_grid", "stokes_dim", "f_index" ),
1436  GIN(),
1437  GIN_TYPE(),
1438  GIN_DEFAULT(),
1439  GIN_DESC()
1440  ));
1441 
1442  md_data_raw.push_back
1443  ( MdRecord
1444  ( NAME( "abs_xsec_per_speciesAddCIA" ),
1445  DESCRIPTION
1446  (
1447  "Calculate absorption cross sections per tag group for HITRAN CIA continua.\n"
1448  "\n"
1449  "This interpolates the cross sections from *abs_cia_data*.\n"
1450  "\n"
1451  "The robust option is intended only for testing. Do not use for normal\n"
1452  "runs, since subsequent functions will not be able to deal with NAN values.\n"
1453  ),
1454  AUTHORS( "Stefan Buehler" ),
1455  OUT( "abs_xsec_per_species" ),
1456  GOUT(),
1457  GOUT_TYPE(),
1458  GOUT_DESC(),
1459  IN( "abs_xsec_per_species", "abs_species", "abs_species_active",
1460  "f_grid", "abs_p", "abs_t",
1461  "abs_vmrs", "abs_cia_data" ),
1462  GIN( "T_extrapolfac", "robust" ),
1463  GIN_TYPE( "Numeric", "Index"),
1464  GIN_DEFAULT( "0.5", "0" ),
1465  GIN_DESC( "Temperature extrapolation factor (relative to grid spacing).",
1466  "Set to 1 to suppress runtime errors (and return NAN values instead).")
1467  ));
1468 
1469  md_data_raw.push_back
1470  ( MdRecord
1471  ( NAME( "abs_xsec_per_speciesAddConts" ),
1472  DESCRIPTION
1473  (
1474  "Calculate absorption cross sections per tag group for continua.\n"
1475  ),
1476  AUTHORS( "Stefan Buehler" ),
1477  OUT( "abs_xsec_per_species" ),
1478  GOUT(),
1479  GOUT_TYPE(),
1480  GOUT_DESC(),
1481  IN( "abs_xsec_per_species", "abs_species", "abs_species_active",
1482  "f_grid", "abs_p", "abs_t",
1483  "abs_vmrs", "abs_cont_names", "abs_cont_parameters",
1484  "abs_cont_models" ),
1485  GIN(),
1486  GIN_TYPE(),
1487  GIN_DEFAULT(),
1488  GIN_DESC()
1489  ));
1490 
1491  md_data_raw.push_back
1492  ( MdRecord
1493  ( NAME( "abs_xsec_per_speciesAddLines" ),
1494  DESCRIPTION
1495  (
1496  "Calculates the line spectrum for both attenuation and phase\n"
1497  "for each tag group and adds it to abs_xsec_per_species.\n"
1498  ),
1499  AUTHORS( "Stefan Buehler", "Axel von Engeln" ),
1500  OUT( "abs_xsec_per_species"),
1501  GOUT(),
1502  GOUT_TYPE(),
1503  GOUT_DESC(),
1504  IN( "abs_xsec_per_species", "abs_species", "abs_species_active",
1505  "f_grid", "abs_p", "abs_t",
1506  "abs_vmrs", "abs_lines_per_species", "abs_lineshape",
1507  "isotopologue_ratios", "line_mixing_data", "line_mixing_data_lut" ),
1508  GIN(),
1509  GIN_TYPE(),
1510  GIN_DEFAULT(),
1511  GIN_DESC()
1512  ));
1513 
1514  md_data_raw.push_back
1515  ( MdRecord
1516  ( NAME( "abs_xsec_per_speciesInit" ),
1517  DESCRIPTION
1518  (
1519  "Initialize *abs_xsec_per_species*.\n"
1520  "\n"
1521  "The initialization is\n"
1522  "necessary, because methods *abs_xsec_per_speciesAddLines*\n"
1523  "and *abs_xsec_per_speciesAddConts* just add to *abs_xsec_per_species*.\n"
1524  "The size is determined from *abs_species*.\n"
1525  ),
1526  AUTHORS( "Stefan Buehler" ),
1527  OUT( "abs_xsec_per_species" ),
1528  GOUT(),
1529  GOUT_TYPE(),
1530  GOUT_DESC(),
1531  IN( "abs_species", "abs_species_active", "f_grid", "abs_p",
1532  "abs_xsec_agenda_checked" ),
1533  GIN(),
1534  GIN_TYPE(),
1535  GIN_DEFAULT(),
1536  GIN_DESC()
1537  ));
1538 
1539  md_data_raw.push_back
1540  ( MdRecord
1541  ( NAME( "AgendaAppend" ),
1542  DESCRIPTION
1543  (
1544  "Append methods to an agenda.\n"
1545  "\n"
1546  "An agenda is used to store a list of methods that are meant to be\n"
1547  "executed sequentially.\n"
1548  "\n"
1549  "This method takes the methods given in the body (in the curly braces)\n"
1550  "and appends them to the agenda given by the output argument (in the round\n"
1551  "braces).\n"
1552  "\n"
1553  "It also uses the agenda lookup data (defined in file agendas.cc) to\n"
1554  "check, whether the given methods use the right input WSVs and produce\n"
1555  "the right output WSVs.\n"
1556  ),
1557  AUTHORS( "Oliver Lemke" ),
1558  OUT(),
1559  GOUT( "out" ),
1560  GOUT_TYPE( "Agenda" ),
1561  GOUT_DESC( "Target agenda." ),
1562  IN(),
1563  GIN( "in" ),
1564  GIN_TYPE( "Agenda" ),
1565  GIN_DEFAULT( NODEF ),
1566  GIN_DESC( "Source agenda." ),
1567  SETMETHOD( false ),
1568  AGENDAMETHOD( true ),
1569  USES_TEMPLATES( false ),
1570  PASSWORKSPACE( false ),
1571  PASSWSVNAMES( true )
1572  ));
1573 
1574  md_data_raw.push_back
1575  ( MdRecord
1576  ( NAME( "AgendaExecute" ),
1577  DESCRIPTION
1578  (
1579  "Execute an agenda.\n"
1580  ),
1581  AUTHORS( "Oliver Lemke" ),
1582  OUT(),
1583  GOUT(),
1584  GOUT_TYPE(),
1585  GOUT_DESC(),
1586  IN(),
1587  GIN( "a" ),
1588  GIN_TYPE( "Agenda" ),
1589  GIN_DEFAULT( NODEF ),
1590  GIN_DESC( "Agenda to be executed." ),
1591  SETMETHOD( false ),
1592  AGENDAMETHOD( false )
1593  ));
1594 
1595  md_data_raw.push_back
1596  ( MdRecord
1597  ( NAME( "AgendaExecuteExclusive" ),
1598  DESCRIPTION
1599  (
1600  "Execute an agenda exclusively.\n"
1601  "\n"
1602  "Only one call to *AgendaExecuteExclusive* is executed at a time.\n"
1603  "Other calls to this function are blocked until the current one\n"
1604  "finishes. WARNING: Can cause deadlocks! Use with care.\n"
1605  ),
1606  AUTHORS( "Oliver Lemke" ),
1607  OUT(),
1608  GOUT(),
1609  GOUT_TYPE(),
1610  GOUT_DESC(),
1611  IN(),
1612  GIN( "a" ),
1613  GIN_TYPE( "Agenda" ),
1614  GIN_DEFAULT( NODEF ),
1615  GIN_DESC( "Agenda to be executed." ),
1616  SETMETHOD( false ),
1617  AGENDAMETHOD( false )
1618  ));
1619 
1620  md_data_raw.push_back
1621  ( MdRecord
1622  ( NAME( "AgendaSet" ),
1623  DESCRIPTION
1624  (
1625  "Set up an agenda.\n"
1626  "\n"
1627  "An agenda is used to store a list of methods that are meant to be\n"
1628  "executed sequentially.\n"
1629  "\n"
1630  "This method takes the methods given in the body (in the curly braces)\n"
1631  "and puts them in the agenda given by the output argument (in the round\n"
1632  "braces).\n"
1633  "\n"
1634  "It also uses the agenda lookup data (defined in file agendas.cc) to\n"
1635  "check, whether the given methods use the right input WSVs and\n"
1636  "produce the right output WSVs.\n"
1637  ),
1638  AUTHORS( "Oliver Lemke" ),
1639  OUT(),
1640  GOUT( "out" ),
1641  GOUT_TYPE( "Agenda" ),
1642  GOUT_DESC( "The new agenda." ),
1643  IN(),
1644  GIN(),
1645  GIN_TYPE(),
1646  GIN_DEFAULT(),
1647  GIN_DESC(),
1648  SETMETHOD( false ),
1649  AGENDAMETHOD( true ),
1650  USES_TEMPLATES( false ),
1651  PASSWORKSPACE( false ),
1652  PASSWSVNAMES( true )
1653  ));
1654 
1655  md_data_raw.push_back
1656  ( MdRecord
1657  ( NAME( "AntennaConstantGaussian1D" ),
1658  DESCRIPTION
1659  (
1660  "Sets up a 1D gaussian antenna response and a matching\n"
1661  "*mblock_za_grid*.\n"
1662  "\n"
1663  "As *antenna_responseGaussian*, but alsp creates *mblock_za_grid*.\n"
1664  "For returned antenna response, see *antenna_responseGaussian*.\n"
1665  "\n"
1666  "The length of *mblock_za_grid* is determined by *n_za_grid*.\n"
1667  "The end points of the grid are set to be the same as for the\n"
1668  "antenna response. The spacing of the grid follows the magnitude of\n"
1669  "the response; the spacing is smaller where the response is high.\n"
1670  "More precisely, the grid points are determined by dividing\n"
1671  "the cumulative sum of the response in equal steps. This makes sense\n"
1672  "if the representation error of the radiance (as a function of\n"
1673  "zenith angle) increases linearly with the grid spacing.\n"
1674  "\n"
1675  "The WSV *antenna_los* is set to 0.\n"
1676  ),
1677  AUTHORS( "Patrick Eriksson" ),
1678  OUT( "antenna_dim", "mblock_za_grid", "mblock_aa_grid",
1679  "antenna_response", "antenna_los" ),
1680  GOUT(),
1681  GOUT_TYPE(),
1682  GOUT_DESC(),
1683  IN( ),
1684  GIN( "n_za_grid", "fwhm", "xwidth_si", "dx_si" ),
1685  GIN_TYPE( "Index", "Numeric", "Numeric", "Numeric" ),
1686  GIN_DEFAULT( NODEF, NODEF, "3", "0.1" ),
1687  GIN_DESC( "Number of points to include in *mblock_za_grid*.",
1688  "Full width at half-maximum of antenna beam [deg].",
1689  "Half-width of response, in terms of std. dev.",
1690  "Grid spacing, in terms of std. dev." )
1691  ));
1692 
1693  md_data_raw.push_back
1694  ( MdRecord
1695  ( NAME( "AntennaMultiBeamsToPencilBeams" ),
1696  DESCRIPTION
1697  (
1698  "Maps a multi-beam case to a matching pencil beam case.\n"
1699  "\n"
1700  "Cases with overlapping beams are most efficiently handled by\n"
1701  "letting *antenna_los* have several rows. That is, there are\n"
1702  "multiple beams for each measurement block. The drawback is that\n"
1703  "many variables must be adjusted if the corresponding pencil beam\n"
1704  "spectra shall be calculated. This method makes this adjustment.\n"
1705  "That is, if you have a control file for a multiple beam case and\n"
1706  "for some reason want to avoid the antenna weighting, you add this\n"
1707  "method before *sensor_responseInit*, and remove the call of\n"
1708  "*sensor_responseAntenna* and you will get the matching pencil beam\n"
1709  "spectra.\n"
1710  ),
1711  AUTHORS( "Patrick Eriksson" ),
1712  OUT( "sensor_pos", "sensor_los", "antenna_los", "antenna_dim",
1713  "mblock_za_grid", "mblock_aa_grid" ),
1714  GOUT(),
1715  GOUT_TYPE(),
1716  GOUT_DESC(),
1717  IN( "sensor_pos", "sensor_los", "antenna_los", "antenna_dim",
1718  "mblock_za_grid", "mblock_aa_grid", "atmosphere_dim" ),
1719  GIN(),
1720  GIN_TYPE(),
1721  GIN_DEFAULT(),
1722  GIN_DESC()
1723  ));
1724 
1725  md_data_raw.push_back
1726  ( MdRecord
1727  ( NAME( "AntennaOff" ),
1728  DESCRIPTION
1729  (
1730  "Sets some antenna related variables\n"
1731  "\n"
1732  "Use this method to set *antenna_dim*, *mblock_za_grid* and\n"
1733  "*mblock_aa_grid* to suitable values (1, [0] and [], respectively)\n"
1734  "for cases when a sensor is included, but the antenna pattern is\n"
1735  "neglected.\n"
1736  ),
1737  AUTHORS( "Patrick Eriksson" ),
1738  OUT( "antenna_dim", "mblock_za_grid", "mblock_aa_grid" ),
1739  GOUT(),
1740  GOUT_TYPE(),
1741  GOUT_DESC(),
1742  IN(),
1743  GIN(),
1744  GIN_TYPE(),
1745  GIN_DEFAULT(),
1746  GIN_DESC()
1747  ));
1748 
1749  md_data_raw.push_back
1750  ( MdRecord
1751  ( NAME( "AntennaSet1D" ),
1752  DESCRIPTION
1753  (
1754  "Sets the antenna dimension to 1D.\n"
1755  "\n"
1756  "Sets *antenna_dim* to 1 and sets *mblock_aa_grid* to be empty.\n"
1757  ),
1758  AUTHORS( "Patrick Eriksson" ),
1759  OUT( "antenna_dim", "mblock_aa_grid" ),
1760  GOUT(),
1761  GOUT_TYPE(),
1762  GOUT_DESC(),
1763  IN(),
1764  GIN(),
1765  GIN_TYPE(),
1766  GIN_DEFAULT(),
1767  GIN_DESC()
1768  ));
1769 
1770  md_data_raw.push_back
1771  ( MdRecord
1772  ( NAME( "AntennaSet2D" ),
1773  DESCRIPTION
1774  (
1775  "Sets the antenna dimension to 2D.\n"
1776  "\n"
1777  "Sets *antenna_dim* to 2.\n"
1778  "\n"
1779  "It is only allowed to set *antenna_dim* to 2 when *atmosphere_dim*\n"
1780  "equals 3.\n"
1781  ),
1782  AUTHORS( "Patrick Eriksson" ),
1783  OUT( "antenna_dim" ),
1784  GOUT(),
1785  GOUT_TYPE(),
1786  GOUT_DESC(),
1787  IN( "atmosphere_dim" ),
1788  GIN(),
1789  GIN_TYPE(),
1790  GIN_DEFAULT(),
1791  GIN_DESC()
1792  ));
1793 
1794  md_data_raw.push_back
1795  ( MdRecord
1796  ( NAME( "antenna_responseGaussian" ),
1797  DESCRIPTION
1798  (
1799  "Sets up a gaussian antenna response.\n"
1800  "\n"
1801  "The method assumes that the response is the same for all\n"
1802  "frequencies and polarisations, and that it can be modelled as\n"
1803  "gaussian.\n"
1804  "\n"
1805  "The grid generated is approximately\n"
1806  " si * [-xwidth_si:dx_si:xwidth_si]\n"
1807  "where si is the standard deviation corresponding to the FWHM.\n"
1808  "That is, width and spacing of the grid is specified in terms of\n"
1809  "number of standard deviations. If xwidth_si is set to 2, the\n"
1810  "response will cover about 95% the complete response. For\n"
1811  "xwidth_si=3, about 99% is covered. If xwidth_si/dx_si is not\n"
1812  "an integer, the end points of the grid are kept and the spacing\n"
1813  "of the grid is reduced (ie. spacing is equal or smaller *dx_si*).\n"
1814  ),
1815  AUTHORS( "Patrick Eriksson" ),
1816  OUT( "antenna_response" ),
1817  GOUT(),
1818  GOUT_TYPE(),
1819  GOUT_DESC(),
1820  IN( ),
1821  GIN( "fwhm", "xwidth_si", "dx_si" ),
1822  GIN_TYPE( "Numeric", "Numeric", "Numeric" ),
1823  GIN_DEFAULT( NODEF, "3", "0.1" ),
1824  GIN_DESC( "Full width at half-maximum",
1825  "Half-width of response, in terms of std. dev.",
1826  "Grid spacing, in terms of std. dev." )
1827  ));
1828 
1829  md_data_raw.push_back
1830  ( MdRecord
1831  ( NAME( "antenna_responseVaryingGaussian" ),
1832  DESCRIPTION
1833  (
1834  "Sets up gaussian antenna responses.\n"
1835  "\n"
1836  "Similar to *antenna_responseGaussian* but allows to set up\n"
1837  "responses that varies with frequency. That is, the method assumes\n"
1838  "that the response is the same for all polarisations, and that it\n"
1839  "can be modelled as a gaussian function varying with frequency.\n"
1840  "\n"
1841  "The full width at half maximum (FWHM in radians) is calculated as:\n"
1842  " fwhm = lambda / leff\n"
1843  "where lambda is the wavelength and *leff* is the effective size of\n"
1844  "the antenna. Normally, *leff* is smaller than the physical antenna\n"
1845  "size.\n"
1846  "\n"
1847  "Antenna responses are created for *nf* frequencies spanning the\n"
1848  "range [*fstart*,*fstop*], with a logarithmic spacing. That is, the\n"
1849  "frequency grid of the responses is taken from *VectorNLogSpace*.\n"
1850  "\n"
1851  "The responses have a common angular grid. The width, determined by\n"
1852  "*xwidth_si*, is set for the lowest frequency, while the spacing\n"
1853  "(*dx_si*) is set for the highest frequency. This ensures that both\n"
1854  "the width and spacing are equal or better than *xwidth_si* and\n"
1855  "*dx_si*, respectively, for all frequencies.\n"
1856  ),
1857  AUTHORS( "Patrick Eriksson" ),
1858  OUT( "antenna_response" ),
1859  GOUT(),
1860  GOUT_TYPE(),
1861  GOUT_DESC(),
1862  IN( ),
1863  GIN( "leff", "xwidth_si", "dx_si", "nf", "fstart", "fstop" ),
1864  GIN_TYPE( "Numeric", "Numeric", "Numeric", "Index", "Numeric",
1865  "Numeric" ),
1866  GIN_DEFAULT( NODEF, "3", "0.1", NODEF, NODEF, NODEF ),
1867  GIN_DESC( "Effective size of the antenna",
1868  "Half-width of response, in terms of std. dev.",
1869  "Grid spacing, in terms of std. dev.",
1870  "Number of points in frequency grid (must be >= 2)",
1871  "Start point of frequency grid",
1872  "End point of frequency grid" )
1873  ));
1874 
1875  md_data_raw.push_back
1876  ( MdRecord
1877  ( NAME( "Append" ),
1878  DESCRIPTION
1879  (
1880  "Append one workspace variable to another.\n"
1881  "\n"
1882  "This method can append an array to another array of the same type,\n"
1883  "e.g. ArrayOfIndex to ArrayOfIndex. Or a single element to an array\n"
1884  "such as a Tensor3 to an ArrayOfTensor3.\n"
1885  "\n"
1886  "Appending two vectors or a numeric to a vector works as for array\n"
1887  "variables.\n"
1888  "\n"
1889  "Both another matrix or a vector can be appended to a matrix. In\n"
1890  "addition, for matrices, the 'append dimension' can be selected.\n"
1891  "The third argument, *dimension*, indicates how to append, where\n"
1892  "\"leading\" means to append row-wise, and \"trailing\" means\n"
1893  "column-wise. Other types are currently only implemented for\n"
1894  "appending to the leading dimension.\n"
1895  "\n"
1896  "This method is not implemented for all types, just for those that\n"
1897  "were thought to be useful. (See variable list below.).\n"
1898  ),
1899  AUTHORS( "Stefan Buehler, Oliver Lemke" ),
1900  OUT(),
1901  GOUT( "out" ),
1902  GOUT_TYPE( "Vector, Vector, Matrix, Matrix, Tensor4, String, " +
1903  ARRAY_GROUPS + ", " + ARRAY_GROUPS_WITH_BASETYPE ),
1904  GOUT_DESC( "The variable to append to." ),
1905  IN(),
1906  GIN( "in",
1907  "dimension" ),
1908  GIN_TYPE( "Numeric, Vector, Matrix, Vector, Tensor4, String, " +
1909  ARRAY_GROUPS + "," + GROUPS_WITH_ARRAY_TYPE,
1910  "String" ),
1911  GIN_DEFAULT( NODEF,
1912  "leading" ),
1913  GIN_DESC( "The variable to append.",
1914  "Where to append. Could be either the \"leading\" or \"trailing\" dimension." ),
1915  SETMETHOD( false ),
1916  AGENDAMETHOD( false ),
1917  USES_TEMPLATES( true )
1918  ));
1919 
1920  md_data_raw.push_back
1921  ( MdRecord
1922  ( NAME( "ArrayOfIndexLinSpace" ),
1923  DESCRIPTION
1924  (
1925  "Initializes an ArrayOfIndex with linear spacing.\n"
1926  "\n"
1927  "The first element equals always the start value, and the spacing\n"
1928  "equals always the step value, but the last value can deviate from\n"
1929  "the stop value. *step* can be both positive and negative.\n"
1930  "\n"
1931  "The created array is [start, start+step, start+2*step, ...]\n "
1932  ),
1933  AUTHORS( "Oliver Lemke" ),
1934  OUT(),
1935  GOUT( "out" ),
1936  GOUT_TYPE( "ArrayOfIndex" ),
1937  GOUT_DESC( "Output array." ),
1938  IN(),
1939  GIN( "start", "stop", "step" ),
1940  GIN_TYPE( "Index", "Index", "Index" ),
1942  GIN_DESC( "Start value.",
1943  "Maximum/minimum value of the end value",
1944  "Spacing of the array."
1945  )
1946  ));
1947 
1948  md_data_raw.push_back
1949  ( MdRecord
1950  ( NAME( "ArrayOfIndexSet" ),
1951  DESCRIPTION
1952  (
1953  "Creates an ArrayOfIndex from the given list of numbers.\n"
1954  ),
1955  AUTHORS( "Oliver Lemke" ),
1956  OUT(),
1957  GOUT( "out" ),
1958  GOUT_TYPE( "ArrayOfIndex" ),
1959  GOUT_DESC( "Variable to initialize." ),
1960  IN(),
1961  GIN( "value" ),
1962  GIN_TYPE( "ArrayOfIndex" ),
1963  GIN_DEFAULT( NODEF ),
1964  GIN_DESC( "Indexes for initializiation." ),
1965  SETMETHOD( true )
1966  ));
1967 
1968  md_data_raw.push_back
1969  ( MdRecord
1970  ( NAME( "ArrayOfIndexSetConstant" ),
1971  DESCRIPTION
1972  (
1973  "Creates an ArrayOfIndex of length *nelem*, with all values\n"
1974  "identical.\n"
1975  ),
1976  AUTHORS( "Patrick Eriksson" ),
1977  OUT(),
1978  GOUT( "out" ),
1979  GOUT_TYPE( "ArrayOfIndex" ),
1980  GOUT_DESC( "Variable to initialize." ),
1981  IN( "nelem" ),
1982  GIN( "value" ),
1983  GIN_TYPE( "Index" ),
1984  GIN_DEFAULT( NODEF ),
1985  GIN_DESC( "Array value.." ),
1986  SETMETHOD( true )
1987  ));
1988 
1989  md_data_raw.push_back
1990  ( MdRecord
1991  ( NAME( "ArrayOfLineMixingRecordReadAscii" ),
1992  DESCRIPTION
1993  (
1994  "Read line mixing data from an ASCII file.\n"
1995  "\n"
1996  "This is merely a convenience function to convert data from Richard's\n"
1997  "ASCII format into XML. For example:\n"
1998  " ArrayOfLineMixingRecordCreate(lm_convert)\n"
1999  " ArrayOfLineMixingRecordReadAscii(lm_convert, \"o2_v1_0_band_40-120_GHz\")\n"
2000  " WriteXML(\"zascii\", lm_convert, \"o2_v1_0_band_40-120_GHz.xml\")\n"
2001  "\n"
2002  "After reading the data it must be matched to *abs_lines_per_species*.\n"
2003  "See *line_mixing_dataMatch*.\n"
2004  "\n"
2005  "Format Documentation:\n"
2006  "Quantum numbers: v1, Upper N, Lower N, Upper J, Lower J,\n"
2007  "First Order Zeroth Phase Correction,\n"
2008  "First Order First Phase Correction,\n"
2009  "Second Order Zeroth Absorption Correction,\n"
2010  "Second Order First Absorption Correction,\n"
2011  "Second Order Zeroth Line-Center Correction,\n"
2012  "Second Order First Line-Center Correction,\n"
2013  "Standard Temperature For Corrections,\n"
2014  "First Order Phase Temperature Correction Exponential Term,\n"
2015  "Second Order Absorption Temperature Correction Exponential Term, and \n"
2016  "Second Order Line-Center Temperature Correction Exponential Term.\n"
2017  ),
2018  AUTHORS( "Oliver Lemke" ),
2019  OUT(),
2020  GOUT( "line_mixing_records" ),
2021  GOUT_TYPE( "ArrayOfLineMixingRecord"),
2022  GOUT_DESC( "Unmatched line mixing data." ),
2023  IN(),
2024  GIN( "filename" ),
2025  GIN_TYPE( "String" ),
2026  GIN_DEFAULT( NODEF ),
2027  GIN_DESC( "Line mixing data file.")
2028  ));
2029 
2030  md_data_raw.push_back
2031  ( MdRecord
2032  ( NAME( "ArrayOfStringSet" ),
2033  DESCRIPTION
2034  (
2035  "Sets a String array according the given text.\n"
2036  "The format is text = [\"String1\",\"String2\",...]\n"
2037  ),
2038  AUTHORS( "Oliver Lemke" ),
2039  OUT(),
2040  GOUT( "out" ),
2041  GOUT_TYPE( "ArrayOfString" ),
2042  GOUT_DESC( "Variable to initialize." ),
2043  IN(),
2044  GIN( "value" ),
2045  GIN_TYPE( "ArrayOfString" ),
2046  GIN_DEFAULT( NODEF ),
2047  GIN_DESC( "Strings for initialization." ),
2048  SETMETHOD( true )
2049  ));
2050 
2051  md_data_raw.push_back
2052  ( MdRecord
2053  ( NAME( "Arts" ),
2054  DESCRIPTION
2055  (
2056  "Runs the agenda that is specified inside the curly braces. ARTS\n"
2057  "controlfiles must define this method. It is executed automatically\n"
2058  "when ARTS is run on the controlfile and cannot be called by the user.\n"
2059  "This methods was used for Arts 1 controlfiles and is now obsolete.\n"
2060  "See *Arts2*\n"
2061  ),
2062  AUTHORS( "Stefan Buehler" ),
2063  OUT(),
2064  GOUT(),
2065  GOUT_TYPE(),
2066  GOUT_DESC(),
2067  IN(),
2068  GIN(),
2069  GIN_TYPE(),
2070  GIN_DEFAULT(),
2071  GIN_DESC(),
2072  SETMETHOD( false ),
2073  AGENDAMETHOD( true )
2074  ));
2075 
2076  md_data_raw.push_back
2077  ( MdRecord
2078  ( NAME( "Arts2" ),
2079  DESCRIPTION
2080  (
2081  "Runs the agenda that is specified inside the curly braces. ARTS\n"
2082  "controlfiles must define this method. It is executed automatically\n"
2083  "when ARTS is run on the controlfile and cannot be called by the user.\n"
2084  ),
2085  AUTHORS( "Oliver Lemke" ),
2086  OUT(),
2087  GOUT(),
2088  GOUT_TYPE(),
2089  GOUT_DESC(),
2090  IN(),
2091  GIN(),
2092  GIN_TYPE(),
2093  GIN_DEFAULT(),
2094  GIN_DESC(),
2095  SETMETHOD( false ),
2096  AGENDAMETHOD( true )
2097  ));
2098 
2099  md_data_raw.push_back
2100  ( MdRecord
2101  ( NAME( "AtmFieldsCalc" ),
2102  DESCRIPTION
2103  (
2104  "Interpolation of raw atmospheric T, z, and VMR fields to calculation grids.\n"
2105  "\n"
2106  "An atmospheric scenario includes the following data for each\n"
2107  "position (pressure, latitude, longitude) in the atmosphere:\n"
2108  " 1. temperature field\n"
2109  " 2. the corresponding altitude field\n"
2110  " 3. vmr fields for the gaseous species\n"
2111  "This method interpolates the fields of raw data (*t_field_raw*,\n"
2112  "*z_field_raw*, *vmr_field_raw*) which can be stored on arbitrary\n"
2113  "grids to the calculation grids (*p_grid*, *lat_grid*, *lon_grid*).\n"
2114  "\n"
2115  "Internally, *AtmFieldsCalc* applies *GriddedFieldPRegrid* and\n"
2116  "*GriddedFieldLatLonRegrid*. Generally, 'half-grid-step' extrapolation\n"
2117  "is allowed and applied. However, if *vmr_zeropadding*=1 then VMRs at\n"
2118  "*p_grid* levels exceeding the raw VMRs' pressure grid are set to 0\n"
2119  "(applying the *zeropadding* option of *GriddedFieldPRegrid*).\n"
2120  "\n"
2121  "Default is to just accept obtained VMRs. If you want to enforce\n"
2122  "that all VMR created are >= 0, set *vmr_nonegative* to 1. Negative\n"
2123  "values are then set 0. Beside being present in input data, negative\n"
2124  "VMR can be generated from the interpolation if *interp_order* is\n"
2125  "above 1.\n"
2126  ),
2127  AUTHORS( "Claudia Emde", "Stefan Buehler" ),
2128  OUT( "t_field", "z_field", "vmr_field" ),
2129  GOUT(),
2130  GOUT_TYPE(),
2131  GOUT_DESC(),
2132  IN( "p_grid", "lat_grid", "lon_grid", "t_field_raw", "z_field_raw",
2133  "vmr_field_raw", "atmosphere_dim" ),
2134  GIN( "interp_order", "vmr_zeropadding", "vmr_nonegative" ),
2135  GIN_TYPE( "Index", "Index", "Index" ),
2136  GIN_DEFAULT( "1", "0", "0" ),
2137  GIN_DESC( "Interpolation order (1=linear interpolation).",
2138  "Pad VMRs with zeroes to fit the pressure grid if necessary.",
2139  "If set to 1, negative VMRs are set to 0." )
2140  ));
2141 
2142  md_data_raw.push_back
2143  ( MdRecord
2144  ( NAME( "AtmFieldsCalcExpand1D" ),
2145  DESCRIPTION
2146  (
2147  "Interpolation of 1D raw atmospheric fields to create 2D or 3D\n"
2148  "homogeneous atmospheric fields.\n"
2149  "\n"
2150  "The method works as *AtmFieldsCalc*, but accepts only raw 1D\n"
2151  "atmospheres. The raw atmosphere is interpolated to *p_grid* and\n"
2152  "the obtained values are applied for all latitudes, and also\n"
2153  "longitudes for 3D, to create a homogeneous atmosphere.\n"
2154  "\n"
2155  "The method deals only with the atmospheric fields, and to create\n"
2156  "a true 2D or 3D version of a 1D case, a demand is also that the\n"
2157  "ellipsoid is set to be a sphere.\n"
2158  ),
2159  AUTHORS( "Patrick Eriksson", "Claudia Emde", "Stefan Buehler" ),
2160  OUT( "t_field", "z_field", "vmr_field" ),
2161  GOUT(),
2162  GOUT_TYPE(),
2163  GOUT_DESC(),
2164  IN( "p_grid", "lat_grid", "lon_grid", "t_field_raw", "z_field_raw",
2165  "vmr_field_raw", "atmosphere_dim" ),
2166  GIN( "interp_order", "vmr_zeropadding", "vmr_nonegative" ),
2167  GIN_TYPE( "Index", "Index", "Index" ),
2168  GIN_DEFAULT( "1", "0", "0" ),
2169  GIN_DESC( "Interpolation order (1=linear interpolation).",
2170  "Pad VMRs with zeroes to fit the pressure grid if necessary.",
2171  "If set to 1, negative VMRs are set to 0." )
2172  ));
2173 
2174  md_data_raw.push_back
2175  ( MdRecord
2176  ( NAME( "AtmFieldsExpand1D" ),
2177  DESCRIPTION
2178  (
2179  "Maps a 1D case to 2D or 3D homogeneous atmospheric fields.\n"
2180  "\n"
2181  "This method takes a 1D atmospheric case and converts it to the\n"
2182  "corresponding case for 2D or 3D. The atmospheric fields (t_field,\n"
2183  "z_field and vmr_field) must be 1D and match *p_grid*. The size of\n"
2184  "the new data is determined by *atmosphere_dim*, *lat_grid* and\n"
2185  "*lon_grid*. That is, these later variables have been changed since\n"
2186  "the original fields were created.\n"
2187  "\n"
2188  "The method deals only with the atmospheric fields, and to create\n"
2189  "a true 2D or 3D version of a 1D case, a demand is also that the\n"
2190  "ellipsoid is set to be a sphere.\n"
2191  ),
2192  AUTHORS( "Patrick Eriksson" ),
2193  OUT( "t_field", "z_field", "vmr_field" ),
2194  GOUT(),
2195  GOUT_TYPE(),
2196  GOUT_DESC(),
2197  IN( "t_field", "z_field", "vmr_field", "p_grid", "lat_grid",
2198  "lon_grid", "atmosphere_dim" ),
2199  GIN(),
2200  GIN_TYPE(),
2201  GIN_DEFAULT(),
2202  GIN_DESC()
2203  ));
2204 
2205  md_data_raw.push_back
2206  ( MdRecord
2207  ( NAME( "AtmFieldsRefinePgrid" ),
2208  DESCRIPTION
2209  (
2210  "Refine the pressure grid in the atmospheric fields.\n"
2211  "\n"
2212  "This method is used for absorption lookup table testing. It probably\n"
2213  "has no other application.\n"
2214  "\n"
2215  "It adds additional vertical grid points to the atmospheric fields, by\n"
2216  "interpolating them in the usual ARTS way (linear in log pressure).\n"
2217  "\n"
2218  "How fine the new grid will be is determined by the keyword parameter\n"
2219  "p_step. The definition of p_step, and the interpolation behavior, is\n"
2220  "consistent with *abs_lookupSetup* and *abs_lookupSetupBatch*. (New\n"
2221  "points are added between the original ones, so that the spacing is\n"
2222  "always below p_step.)\n"
2223  ),
2224  AUTHORS( "Stefan Buehler" ),
2225  OUT( "p_grid",
2226  "t_field", "z_field", "vmr_field" ),
2227  GOUT(),
2228  GOUT_TYPE(),
2229  GOUT_DESC(),
2230  IN( "p_grid", "lat_grid", "lon_grid",
2231  "t_field", "z_field", "vmr_field", "atmosphere_dim" ),
2232  GIN( "p_step" ),
2233  GIN_TYPE( "Numeric" ),
2234  GIN_DEFAULT( NODEF ),
2235  GIN_DESC("Maximum step in log(p[Pa]) (natural logarithm, as always). If\n"
2236  "the pressure grid is coarser than this, additional points\n"
2237  "are added until each log step is smaller than this.\n")
2238  ));
2239 
2240  md_data_raw.push_back
2241  ( MdRecord
2242  ( NAME( "atmfields_checkedCalc" ),
2243  DESCRIPTION
2244  (
2245  "Checks consistency of (clear sky) atmospheric fields.\n"
2246  "\n"
2247  "The following WSVs are treated: *p_grid*, *lat_grid*, *lon_grid*,\n"
2248  "*t_field*, *vmr_field*, wind_u/v/w_field and mag_u/v/w_field.\n"
2249  "\n"
2250  "If any of the variables above is changed, then this method shall be\n"
2251  "called again (no automatic check that this is fulfilled!).\n"
2252  "\n"
2253  "The tests include that:\n"
2254  " 1. Atmospheric grids (p/lat/lon_grid) are OK with respect to\n"
2255  " *atmosphere_dim* (and vmr_field also regarding *abs_species*).\n"
2256  " 2. Atmospheric fields have sizes consistent with the atmospheric\n"
2257  " grids.\n"
2258  " 3. *abs_f_interp_order* is not zero if any wind is nonzero.\n"
2259  " 4. All values in *t_field* are > 0.\n"
2260  "\n"
2261  "Default is that values in *vmr_field* are demanded to be >= 0\n"
2262  "(ie. zero allowed, in contrast to *t_field*), but this\n"
2263  "requirement can be removed by the *negative_vmr_ok* argument.\n"
2264  "\n"
2265  "If any test fails, there is an error. Otherwise,\n"
2266  "*atmfields_checked* is set to 1.\n"
2267  "\n"
2268  "The cloudbox is covered by *cloudbox_checked*, *z_field* is\n"
2269  "part of the checks done around *atmgeom_checked*.\n"
2270  ),
2271  AUTHORS( "Patrick Eriksson" ),
2272  OUT( "atmfields_checked" ),
2273  GOUT(),
2274  GOUT_TYPE(),
2275  GOUT_DESC(),
2276  IN( "atmosphere_dim", "p_grid", "lat_grid", "lon_grid", "abs_species",
2277  "t_field", "vmr_field", "wind_u_field", "wind_v_field",
2278  "wind_w_field", "mag_u_field", "mag_v_field", "mag_w_field",
2279  "abs_f_interp_order" ),
2280  GIN( "negative_vmr_ok" ),
2281  GIN_TYPE( "Index" ),
2282  GIN_DEFAULT( "0" ),
2283  GIN_DESC("Boolean for demanding vmr_field > 0 or not.")
2284  ));
2285 
2286  md_data_raw.push_back
2287  ( MdRecord
2288  ( NAME( "atmgeom_checkedCalc" ),
2289  DESCRIPTION
2290  (
2291  "Checks consistency of geometric considerations of the atmosphere.\n"
2292  "\n"
2293  "The following WSVs are checked: *z_field*, *refellipsoid* and\n"
2294  "*z_surface*. If any of the variables above is changed, then this\n"
2295  "method shall be called again (no automatic check that this is\n"
2296  "fulfilled!).\n"
2297  "\n"
2298  "The tests include that:\n"
2299  " 1. *refellipsoid* has correct size, and that eccentricity is\n"
2300  " set to zero if 1D atmosphere.\n"
2301  " 2. *z_field* and *z_surface* have sizes consistent with the\n"
2302  " atmospheric grids.\n"
2303  " 3. There is no gap between *z_surface* and *z_field*.\n"
2304  "\n"
2305  "If any test fails, there is an error. Otherwise, *atmgeom_checked*\n"
2306  "is set to 1.\n"
2307  "\n"
2308  "See further *atmgeom_checkedCalc*.\n"
2309  ),
2310  AUTHORS( "Patrick Eriksson" ),
2311  OUT( "atmgeom_checked" ),
2312  GOUT(),
2313  GOUT_TYPE(),
2314  GOUT_DESC(),
2315  IN( "atmosphere_dim", "p_grid", "lat_grid", "lon_grid",
2316  "z_field", "refellipsoid", "z_surface" ),
2317  GIN(),
2318  GIN_TYPE(),
2319  GIN_DEFAULT(),
2320  GIN_DESC()
2321  ));
2322 
2323 
2324  md_data_raw.push_back
2325  ( MdRecord
2326  ( NAME( "atm_fields_compactAddConstant" ),
2327  DESCRIPTION
2328  (
2329  "Adds a constant field to atm_fields_compact.\n"
2330  "\n"
2331  "This is handy for nitrogen or oxygen. The constant value is\n"
2332  "appended at the end of the fields that are already there. All\n"
2333  "dimensions (pressure, latitude, longitude) are filled up, so this\n"
2334  "works for 1D, 2D, or 3D atmospheres.\n"
2335  ),
2336  AUTHORS( "Stefan Buehler" ),
2337  OUT( "atm_fields_compact" ),
2338  GOUT(),
2339  GOUT_TYPE(),
2340  GOUT_DESC(),
2341  IN( "atm_fields_compact" ),
2342  GIN( "name", "value" ),
2343  GIN_TYPE( "String", "Numeric" ),
2344  GIN_DEFAULT( NODEF, NODEF ),
2345  GIN_DESC( "Name of additional atmospheric field, with constant value.",
2346  "Constant value of additional field." )
2347  ));
2348 
2349  md_data_raw.push_back
2350  ( MdRecord
2351  ( NAME( "atm_fields_compactAddSpecies" ),
2352  DESCRIPTION
2353  (
2354  "Adds a field to atm_fields_compact, with interpolation.\n"
2355  "\n"
2356  "This method appends a *GriddedField3* to *atm_fields_compact*.\n"
2357  "The *GriddedField3* is interpolated upon the grid of *atm_fields_compact*.\n"
2358  "A typical use case for this method may be to add a climatology of some gas\n"
2359  "when this gas is needed for radiative transfer calculations, but\n"
2360  "not yet present in *atm_fields_compact*. One case where this happens\n"
2361  "is when using the Chevalier dataset for infrared simulations.\n"
2362  "\n"
2363  "The grids in *atm_fields_compact* must fully encompass the grids in\n"
2364  "the *GriddedField3* to be added, for interpolation to succeed. If\n"
2365  "this is not the case, a RuntimeError is thrown.\n"
2366  ),
2367  AUTHORS( "Gerrit Holl" ),
2368  OUT( "atm_fields_compact" ),
2369  GOUT(),
2370  GOUT_TYPE(),
2371  GOUT_DESC(),
2372  IN( "atm_fields_compact" ),
2373  GIN( "name", "value" ),
2374  GIN_TYPE( "String", "GriddedField3" ),
2375  GIN_DEFAULT( NODEF, NODEF ),
2376  GIN_DESC( "Name of additional atmospheric field.",
2377  "Value of additional atmospheric field." )
2378  ));
2379 
2380  md_data_raw.push_back
2381  ( MdRecord
2382  ( NAME( "atm_fields_compactFromMatrix" ),
2383  DESCRIPTION
2384  (
2385  "Set *atm_fields_compact* from 1D profiles in a matrix.\n"
2386  "\n"
2387  "For clear-sky batch calculations it is handy to store atmospheric\n"
2388  "profiles in an array of matrix. We take such a matrix, and create\n"
2389  "*atm_fields_compact* from it.\n"
2390  "\n"
2391  "The matrix must contain one row for each pressure level.\n"
2392  "The matrix can contain some additional fields which are not directly used\n"
2393  "by ARTS for calculations but can be required for further processing,\n"
2394  "for e.g. wind speed and direction. In this case, additional fields must\n"
2395  "be put at the end of the matrix and they must be flagged by 'ignore',\n"
2396  "large or small letters, in the field names.\n"
2397  "Recommended row format:\n"
2398  "\n"
2399  "p[Pa] T[K] z[m] VMR_1[fractional] ... VMR[fractional] IGNORE ... IGNORE\n"
2400  "\n"
2401  "Works only for *atmosphere_dim==1.*\n"
2402  "\n"
2403  "Keywords:\n"
2404  " field_names : Field names to store in atm_fields_compact.\n"
2405  " This should be, e.g.:\n"
2406  " [\"T[K]\", \"z[m]\", \"vmr_h2o[fractional]\", \"ignore\"]\n"
2407  " There must be one name less than matrix columns,\n"
2408  " because the first column must contain pressure.\n"
2409  ),
2410  AUTHORS( "Stefan Buehler", "Daniel Kreyling", "Jana Mendrok" ),
2411  OUT( "atm_fields_compact" ),
2412  GOUT(),
2413  GOUT_TYPE(),
2414  GOUT_DESC(),
2415  IN( "atmosphere_dim" ),
2416  GIN( "gin1" ,
2417  "field_names" ),
2418  GIN_TYPE( "Matrix",
2419  "ArrayOfString" ),
2420  GIN_DEFAULT( NODEF ,
2421  NODEF ),
2422  GIN_DESC( "One atmosphere matrix from batch input ArrayOfMatrix.",
2423  "Order/names of atmospheric fields." )
2424  ));
2425 
2426 
2427  md_data_raw.push_back
2428  ( MdRecord
2429  ( NAME( "AtmFieldsFromCompact" ),
2430  DESCRIPTION
2431  (
2432  "Extract pressure grid and atmospheric fields from\n"
2433  "*atm_fields_compact*.\n"
2434  "\n"
2435  "An atmospheric scenario includes the following data for each\n"
2436  "position (pressure, latitude, longitude) in the atmosphere:\n"
2437  " 1. temperature field\n"
2438  " 2. the corresponding altitude field\n"
2439  " 3. vmr fields for the gaseous species\n"
2440  "\n"
2441  "This method just splits up the data found in *atm_fields_compact* to\n"
2442  "p_grid, lat_grid, lon_grid, and the various fields. No interpolation.\n"
2443  "See documentation of *atm_fields_compact* for a definition of the data.\n"
2444  "\n"
2445  "There are some safety checks on the names of the fields: The first\n"
2446  "field must be called \"T\", the second \"z\"*. Remaining fields must be\n"
2447  "trace gas species volume mixing ratios, named for example \"H2O\", \"O3\",\n"
2448  "and so on. The species names must fit the species in *abs_species*.\n"
2449  "(Same species in same order.) Only the species name must fit, not the\n"
2450  "full tag.\n"
2451  "\n"
2452  "Possible future extensions: Add a keyword parameter to refine the\n"
2453  "pressure grid if it is too coarse. Or a version that interpolates onto\n"
2454  "given grids, instead of using and returning the original grids.\n"
2455  ),
2456  AUTHORS( "Stefan Buehler", "Daniel Kreyling", "Jana Mendrok" ),
2457  OUT( "p_grid", "lat_grid", "lon_grid", "t_field", "z_field",
2458  "vmr_field", "massdensity_field" ),
2459  GOUT(),
2460  GOUT_TYPE(),
2461  GOUT_DESC(),
2462  IN( "abs_species", "part_species", "atm_fields_compact", "atmosphere_dim" ),
2463  GIN( "delim" ),
2464  GIN_TYPE( "String" ),
2465  GIN_DEFAULT( "-" ),
2466  GIN_DESC( "Delimiter string of *part_species* elements." )
2467  ));
2468 
2469  md_data_raw.push_back
2470  ( MdRecord
2471  ( NAME( "AtmosphereSet1D" ),
2472  DESCRIPTION
2473  (
2474  "Sets the atmospheric dimension to 1D.\n"
2475  "\n"
2476  "Sets *atmosphere_dim* to 1 and gives some variables dummy values.\n"
2477  "\n"
2478  "The latitude and longitude grids are set to be empty.\n"
2479  ),
2480  AUTHORS( "Patrick Eriksson" ),
2481  OUT( "atmosphere_dim", "lat_grid", "lon_grid" ),
2482  GOUT(),
2483  GOUT_TYPE(),
2484  GOUT_DESC(),
2485  IN(),
2486  GIN(),
2487  GIN_TYPE(),
2488  GIN_DEFAULT(),
2489  GIN_DESC()
2490  ));
2491 
2492  md_data_raw.push_back
2493  ( MdRecord
2494  ( NAME( "AtmosphereSet2D" ),
2495  DESCRIPTION
2496  (
2497  "Sets the atmospheric dimension to be 2D.\n"
2498  "\n"
2499  "Sets *atmosphere_dim* to 2 and the longitude grid to be empty.\n"
2500  ),
2501  AUTHORS( "Patrick Eriksson" ),
2502  OUT( "atmosphere_dim", "lon_grid" ),
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( "AtmosphereSet3D" ),
2516  DESCRIPTION
2517  (
2518  "Sets the atmospheric dimension to 3D.\n"
2519  ),
2520  AUTHORS( "Patrick Eriksson" ),
2521  OUT( "atmosphere_dim" ),
2522  GOUT(),
2523  GOUT_TYPE(),
2524  GOUT_DESC(),
2525  IN(),
2526  GIN(),
2527  GIN_TYPE(),
2528  GIN_DEFAULT(),
2529  GIN_DESC()
2530  ));
2531 
2532  md_data_raw.push_back
2533  ( MdRecord
2534  ( NAME( "AtmRawRead" ),
2535  DESCRIPTION
2536  (
2537  "Reads atmospheric data from a scenario.\n"
2538  "\n"
2539  "An atmospheric scenario includes the following data for each\n"
2540  "position (pressure, latitude, longitude) in the atmosphere:\n"
2541  " 1. temperature field\n"
2542  " 2. the corresponding altitude field\n"
2543  " 3. vmr fields for the gaseous species\n"
2544  "The data is stored in different files. This methods reads all\n"
2545  "files and creates the variables *t_field_raw*, *z_field_raw* and\n"
2546  "*vmr_field_raw*.\n"
2547  "\n"
2548  "Files in a scenarios should be named matching the pattern of:\n"
2549  "tropical.H2O.xml\n"
2550  "\n"
2551  "The files can be anywhere, but they must be all in the same\n"
2552  "directory, selected by 'basename'. The files are chosen by the\n"
2553  "species name. If you have more than one tag group for the same\n"
2554  "species, the same profile will be used.\n"
2555  ),
2556  AUTHORS( "Claudia Emde" ),
2557  OUT( "t_field_raw", "z_field_raw", "vmr_field_raw" ),
2558  GOUT(),
2559  GOUT_TYPE(),
2560  GOUT_DESC(),
2561  IN( "abs_species" ),
2562  GIN( "basename" ),
2563  GIN_TYPE( "String" ),
2564  GIN_DEFAULT( NODEF ),
2565  GIN_DESC( "Name of scenario, probably including the full path. For "
2566  "example: \"/smiles_local/arts-data/atmosphere/fascod/"
2567  "tropical\"" )
2568  ));
2569 
2570  md_data_raw.push_back
2571  ( MdRecord
2572  ( NAME( "backend_channel_responseFlat" ),
2573  DESCRIPTION
2574  (
2575  "Sets up a rectangular channel response.\n"
2576  "\n"
2577  "The response of the backend channels is hee assumed to be constant\n"
2578  "inside the resolution width, and zero outside.\n"
2579  "\n"
2580  "The method assumes that all channels have the same response.\n"
2581  ),
2582  AUTHORS( "Patrick Eriksson" ),
2583  OUT( "backend_channel_response" ),
2584  GOUT(),
2585  GOUT_TYPE(),
2586  GOUT_DESC(),
2587  IN( ),
2588  GIN( "resolution" ),
2589  GIN_TYPE( "Numeric" ),
2590  GIN_DEFAULT( NODEF ),
2591  GIN_DESC( "The spectrometer resolution." )
2592  ));
2593 
2594  md_data_raw.push_back
2595  ( MdRecord
2596  ( NAME( "backend_channel_responseGaussian" ),
2597  DESCRIPTION
2598  (
2599  "Sets up a gaussian backend channel response.\n"
2600  "\n"
2601  "The method assumes that all channels have the same response, and\n"
2602  "that it can be modelled as gaussian.\n"
2603  "\n"
2604  "The grid generated can be written as\n"
2605  " si * [-xwidth_si:dx_si:xwidth_si]\n"
2606  "where si is the standard deviation corresponding to the FWHM.\n"
2607  "That is, width and spacing of the grid is specified in terms of\n"
2608  "number of standard deviations. If xwidth_si is set to 2, the\n"
2609  "response will cover about 95% the complete response. For\n"
2610  "xwidth_si=3, about 99% is covered. If xwidth_si/dx_si is not\n"
2611  "an integer, the end points of the grid are kept and the spacing\n"
2612  "if the grid is adjusted in the downward direction (ie. spacing is.\n"
2613  "is max *dx_si*).\n"
2614  ),
2615  AUTHORS( "Patrick Eriksson" ),
2616  OUT( "backend_channel_response" ),
2617  GOUT(),
2618  GOUT_TYPE(),
2619  GOUT_DESC(),
2620  IN( ),
2621  GIN( "fwhm", "xwidth_si", "dx_si" ),
2622  GIN_TYPE( "Numeric", "Numeric", "Numeric" ),
2623  GIN_DEFAULT( NODEF, "3", "0.1" ),
2624  GIN_DESC( "Full width at half-maximum",
2625  "Half-width of response, in terms of std. dev.",
2626  "Grid spacing, in terms of std. dev." )
2627  ));
2628 
2629  md_data_raw.push_back
2630  ( MdRecord
2631  ( NAME( "batch_atm_fields_compactAddConstant" ),
2632  DESCRIPTION
2633  (
2634  "Adds a constant field to batch_atm_fields_compact.\n"
2635  "\n"
2636  "Applies *atm_fields_compactAddConstant* to each batch.\n"
2637  "The format is equal to that WSM.\n"
2638  ),
2639  AUTHORS( "Gerrit Holl" ),
2640  OUT( "batch_atm_fields_compact" ),
2641  GOUT(),
2642  GOUT_TYPE(),
2643  GOUT_DESC(),
2644  IN( "batch_atm_fields_compact" ),
2645  GIN( "name", "value" ),
2646  GIN_TYPE( "String", "Numeric" ),
2647  GIN_DEFAULT( NODEF, NODEF ),
2648  GIN_DESC( "Name of additional atmospheric field, with constant value.",
2649  "Constant value of additional field." )
2650  ));
2651 
2652  md_data_raw.push_back
2653  ( MdRecord
2654  ( NAME( "batch_atm_fields_compactAddSpecies" ),
2655  DESCRIPTION
2656  (
2657  "Adds a field to *batch_atm_fields_compact*, with interpolation.\n"
2658  "\n"
2659  "This method appends a *GriddedField3* to each *atm_fields_compact*.\n"
2660  "in *batch_atm_fields_compact*. For details, see *atm_fields_compactAddSpecies*.\n"
2661  ),
2662  AUTHORS( "Gerrit Holl" ),
2663  OUT( "batch_atm_fields_compact" ),
2664  GOUT(),
2665  GOUT_TYPE(),
2666  GOUT_DESC(),
2667  IN( "batch_atm_fields_compact" ),
2668  GIN( "name", "value" ),
2669  GIN_TYPE( "String", "GriddedField3" ),
2670  GIN_DEFAULT( NODEF, NODEF ),
2671  GIN_DESC( "Name of additional atmospheric field. Use, e.g., vmr_ch4 for methane VMR",
2672  "Value of additional atmospheric field." )
2673  ));
2674 
2675  md_data_raw.push_back
2676  ( MdRecord
2677  ( NAME( "batch_atm_fields_compactFromArrayOfMatrix" ),
2678  DESCRIPTION
2679  (
2680  "Expand batch of 1D atmospheric states to a batch_atm_fields_compact.\n"
2681  "\n"
2682  "This is used to handle 1D batch cases, for example from the Chevallier\n"
2683  "data set, stored in a matrix.\n"
2684  "\n"
2685  "The matrix must contain one row for each pressure level.\n"
2686  "The matrix can contain some additional fiels which are not directly used\n"
2687  "by ARTS for calculations but can be required for further processing,\n"
2688  "for e.g. wind speed and direction. In this case, additional fields must\n"
2689  "be put at the end of the matrix and they must be flagged by 'ignore',\n"
2690  "large or small letters, in the field names.\n"
2691  "Row format:\n"
2692  "\n"
2693  "p[Pa] T[K] z[m] VMR_1[fractional] ... VMR[fractional] IGNORE ... IGNORE\n"
2694  "\n"
2695  "Keywords:\n"
2696  " field_names : Field names to store in atm_fields_compact.\n"
2697  " This should be, e.g.:\n"
2698  " [\"T\", \"z\", \"H2O\", \"O3\", \"ignore\"]\n"
2699  " There must be one name less than matrix columns,\n"
2700  " because the first column must contain pressure.\n"
2701  "\n"
2702  " extra_field_names : You can add additional constant VMR fields,\n"
2703  " which is handy for O2 and N2. Give here the\n"
2704  " field name, e.g., \"O2\". Default: Empty.\n"
2705  "\n"
2706  " extra_field_values : Give here the constant field value. Default:\n"
2707  " Empty. Dimension must match extra_field_names.\n"
2708  ),
2709  AUTHORS( "Stefan Buehler", "Daniel Kreyling", "Jana Mendrok" ),
2710  OUT( "batch_atm_fields_compact" ),
2711  GOUT(),
2712  GOUT_TYPE(),
2713  GOUT_DESC(),
2714  IN( "atmosphere_dim" ),
2715  GIN( "gin1" ,
2716  "field_names", "extra_field_names", "extra_field_values" ),
2717  GIN_TYPE( "ArrayOfMatrix",
2718  "ArrayOfString", "ArrayOfString", "Vector" ),
2719  GIN_DEFAULT( NODEF ,
2720  NODEF, "[]", "[]" ),
2721  //KW_DEFAULT( NODEF, NODEF, NODEF ),
2722  GIN_DESC( "Batch of atmospheres stored in one array of matrix",
2723  "Order/names of atmospheric fields.",
2724  "Names of additional atmospheric fields, with constant values.",
2725  "Constant values of additional fields.")
2726  ));
2727 
2728  md_data_raw.push_back
2729  ( MdRecord
2730  ( NAME( "blackbody_radiationPlanck" ),
2731  DESCRIPTION
2732  (
2733  "The Planck function (frequency version).\n"
2734  "\n"
2735  "The standard function for *blackbody_radiation_agenda*.\n"
2736  "\n"
2737  "The is considered as the standard version inside ARTS of the Planck\n"
2738  "function. The unit of the returned data is W/(m^2 Hz sr).\n"
2739  ),
2740  AUTHORS( "Patrick Eriksson" ),
2741  OUT( "blackbody_radiation" ),
2742  GOUT(),
2743  GOUT_TYPE(),
2744  GOUT_DESC(),
2745  IN( "f_grid", "rtp_temperature" ),
2746  GIN(),
2747  GIN_TYPE(),
2748  GIN_DEFAULT(),
2749  GIN_DESC()
2750  ));
2751 
2752  md_data_raw.push_back
2753  ( MdRecord
2754  ( NAME( "abs_cia_dataReadFromCIA" ),
2755  DESCRIPTION
2756  (
2757  "Read data from a CIA data file for all CIA molecules defined\n"
2758  "in *abs_species*.\n"
2759  "\n"
2760  "The units in the HITRAN file are:\n"
2761  "Frequency: cm^(-1)\n"
2762  "Binary absorption cross-section: cm^5 molec^(-2)\n"
2763  "\n"
2764  "Upon reading we convert this to the ARTS internal SI units \n"
2765  "of Hz and m^5 molec^(-2).\n"
2766  ),
2767  AUTHORS( "Oliver Lemke" ),
2768  OUT( "abs_cia_data" ),
2769  GOUT(),
2770  GOUT_TYPE(),
2771  GOUT_DESC(),
2772  IN( "abs_species" ),
2773  GIN( "catalogpath" ),
2774  GIN_TYPE( "String" ),
2775  GIN_DEFAULT( NODEF ),
2776  GIN_DESC( "Path to the CIA catalog directory." )
2777  ));
2778 
2779  md_data_raw.push_back
2780  ( MdRecord
2781  ( NAME( "abs_cia_dataReadFromXML" ),
2782  DESCRIPTION
2783  (
2784  "Read data from a CIA XML file and check that all CIA tags defined\n"
2785  "in *abs_species* are present in the file.\n"
2786  "\n"
2787  "The units of the data are described in *abs_cia_dataReadFromCIA*.\n"
2788  ),
2789  AUTHORS( "Oliver Lemke" ),
2790  OUT( "abs_cia_data" ),
2791  GOUT(),
2792  GOUT_TYPE(),
2793  GOUT_DESC(),
2794  IN( "abs_species" ),
2795  GIN( "filename" ),
2796  GIN_TYPE( "String" ),
2797  GIN_DEFAULT( "" ),
2798  GIN_DESC( "Name of the XML file." )
2799  ));
2800 
2801  md_data_raw.push_back
2802  ( MdRecord
2803  ( NAME( "CIAInfo" ),
2804  DESCRIPTION
2805  (
2806  "Display information about the given CIA tags.\n"
2807  "The CIA tags shown are in the same format as needed by *abs_speciesSet*.\n"
2808  ),
2809  AUTHORS( "Oliver Lemke" ),
2810  OUT(),
2811  GOUT(),
2812  GOUT_TYPE(),
2813  GOUT_DESC(),
2814  IN(),
2815  GIN( "catalogpath", "cia_tags" ),
2816  GIN_TYPE( "String", "ArrayOfString" ),
2817  GIN_DEFAULT( NODEF, NODEF ),
2818  GIN_DESC( "Path to the CIA catalog directory.",
2819  "Array of CIA tags to view, e.g. [ \"N2-N2\", \"H2-H2\" ]" )
2820  ));
2821 
2822  md_data_raw.push_back
2823  ( MdRecord
2824  ( NAME( "CloudboxGetIncoming" ),
2825  DESCRIPTION
2826  (
2827  "Calculates incoming radiation field of the cloudbox by repeated\n"
2828  "radiative transfer calculations.\n"
2829  "\n"
2830  "The method performs monochromatic pencil beam calculations for\n"
2831  "all grid positions on the cloudbox boundary, and all directions\n"
2832  "given by scattering angle grids (*scat_za/aa_grid*). Found radiances\n"
2833  "are stored in *scat_i_p/lat/lon* which can be used as boundary\n"
2834  "conditions when scattering inside the cloud box is solved by the\n"
2835  "DOIT method.\n"
2836  "\n"
2837  "Can only handle *iy_unit*=1 (intensity in terms of radiances). Other\n"
2838  "output units need to be derived by unit conversion later on (e.g.\n"
2839  "after yCalc).\n"
2840  ),
2841  AUTHORS( "Sreerekha T.R.", "Claudia Emde" ),
2842  OUT( "scat_i_p", "scat_i_lat", "scat_i_lon" ),
2843  GOUT(),
2844  GOUT_TYPE(),
2845  GOUT_DESC(),
2846  IN( "atmfields_checked", "atmgeom_checked", "cloudbox_checked",
2847  "doit_is_initialized", "iy_main_agenda", "atmosphere_dim",
2848  "lat_grid", "lon_grid", "z_field", "t_field", "vmr_field",
2849  "cloudbox_on", "cloudbox_limits", "f_grid", "stokes_dim",
2850  "iy_unit", "blackbody_radiation_agenda",
2851  "scat_za_grid", "scat_aa_grid" ),
2852  GIN( "rigorous", "maxratio" ),
2853  GIN_TYPE( "Index", "Numeric" ),
2854  GIN_DEFAULT( "1", "100" ),
2855  GIN_DESC( "Fail if incoming field is not safely interpolable.",
2856  "Maximum allowed ratio of two radiances regarded as interpolable." )
2857  ));
2858 
2859  md_data_raw.push_back
2860  ( MdRecord
2861  ( NAME( "CloudboxGetIncoming1DAtm" ),
2862  DESCRIPTION
2863  (
2864  "As *CloudboxGetIncoming* but assumes clear sky part to be 1D."
2865  "\n"
2866  "The incoming field is calculated only for one position and azimuth\n"
2867  "angle for each cloud box boundary, and obtained values are used\n"
2868  "for all other postions and azimuth angles. This works if a 3D\n"
2869  "cloud box is put into an 1D background atmosphere.\n"
2870  "\n"
2871  "This method can only be used for 3D cases.\n"
2872  ),
2873  AUTHORS( "Sreerekha T.R.", "Claudia Emde" ),
2874  OUT( "scat_i_p", "scat_i_lat", "scat_i_lon", "cloudbox_on" ),
2875  GOUT(),
2876  GOUT_TYPE(),
2877  GOUT_DESC(),
2878  IN( "atmfields_checked", "atmgeom_checked",
2879  "cloudbox_checked", "iy_main_agenda", "atmosphere_dim",
2880  "lat_grid", "lon_grid", "z_field", "t_field", "vmr_field",
2881  "cloudbox_on", "cloudbox_limits",
2882  "f_grid", "stokes_dim", "iy_unit",
2883  "blackbody_radiation_agenda", "scat_za_grid", "scat_aa_grid" ),
2884  GIN(),
2885  GIN_TYPE(),
2886  GIN_DEFAULT(),
2887  GIN_DESC()
2888  ));
2889 
2890  md_data_raw.push_back
2891  ( MdRecord
2892  ( NAME( "cloudboxOff" ),
2893  DESCRIPTION
2894  (
2895  "Deactivates the cloud box.\n"
2896  "\n"
2897  "Use this method if no scattering calculations shall be performed.\n"
2898  "\n"
2899  "The function sets *cloudbox_on* to 0, *cloudbox_limits*,\n"
2900  "*pnd_field*, *scat_data_array*, *iy_cloudbox_agenda* and\n"
2901  "*particle_masses* to be empty and *use_mean_scat_data* to -999.\n"
2902  ),
2903  AUTHORS( "Patrick Eriksson" ),
2904  OUT( "cloudbox_on", "cloudbox_limits", "iy_cloudbox_agenda",
2905  "pnd_field", "scat_data_array", "particle_masses"
2906  ),
2907  GOUT(),
2908  GOUT_TYPE(),
2909  GOUT_DESC(),
2910  IN(),
2911  GIN(),
2912  GIN_TYPE(),
2913  GIN_DEFAULT(),
2914  GIN_DESC()
2915  ));
2916 
2917 
2918  md_data_raw.push_back
2919  ( MdRecord
2920  ( NAME( "cloudboxSetAutomatically" ),
2921  DESCRIPTION
2922  (
2923  "Sets the cloud box to encompass the cloud given by the entries\n"
2924  "in *massdensity_field*. \n"
2925  "\n"
2926  "The function must be called before any *cloudbox_limits* using\n"
2927  "WSMs.\n"
2928  "NOTE: only 1-dim case is handeled in the moment!\n"
2929  "\n"
2930  "The function iterates over all *part_species* and performs a \n"
2931  "check, to see if the corresponding scattering particle profiles do not\n"
2932  "contain a cloud (all values equal zero). If, after all iterations,\n"
2933  "all the considrered profiles proove to contain no cloud,\n"
2934  "the cloudbox is switched off! (see WSM *cloudboxOff*)\n"
2935  "\n"
2936  "Each scattering particle profile is searched for the first and last\n"
2937  "pressure index, where the value is unequal to zero. This index\n"
2938  "is then copied to *cloudbox_limits*.\n"
2939  "\n"
2940  "Additionaly the lower cloudbox_limit is altered by\n"
2941  "*cloudbox_margin*.\n"
2942  "The margin is given as a height difference in meters and\n"
2943  "trasformed into a pressure.(via isothermal barometric heightformula)\n"
2944  "This alteration is needed to ensure, that scattered photons\n"
2945  "do not leave and re-enter the cloudbox, due to its convex\n"
2946  "shape.\n"
2947  "If *cloudbox_margin* is set to -1 (default), the cloudbox will extend to\n"
2948  "the surface. Hence the lower cloudbox_limit is set to 0 (index\n"
2949  "of first pressure level).\n"
2950  ),
2951  AUTHORS( "Daniel Kreyling" ),
2952  OUT( "cloudbox_on", "cloudbox_limits"),
2953  GOUT(),
2954  GOUT_TYPE(),
2955  GOUT_DESC(),
2956  IN( "atmosphere_dim", "p_grid", "lat_grid", "lon_grid", "massdensity_field"),
2957  GIN( "cloudbox_margin"),
2958  GIN_TYPE( "Numeric" ),
2959  GIN_DEFAULT( "-1" ),
2960  GIN_DESC( "The margin alters the lower vertical\n"
2961  "cloudbox limit. Value must be given in [m].\n"
2962  "If cloudbox_margin is set to *-1* (default), the lower\n"
2963  "cloudbox limit equals 0, what corresponds to the surface !\n"
2964  )
2965  ));
2966 
2967  md_data_raw.push_back
2968  ( MdRecord
2969  ( NAME( "cloudboxSetFullAtm" ),
2970  DESCRIPTION
2971  (
2972  "Sets the cloudbox to cover the full atmosphere.\n"
2973  "\n"
2974  "Can only handle *atmosphere_dim*=1 cases.\n"
2975  ),
2976  AUTHORS( "Claudia Emde" ),
2977  OUT( "cloudbox_on", "cloudbox_limits" ),
2978  GOUT(),
2979  GOUT_TYPE(),
2980  GOUT_DESC(),
2981  IN( "atmosphere_dim", "p_grid" ),
2982  GIN(),
2983  GIN_TYPE(),
2984  GIN_DEFAULT(),
2985  GIN_DESC()
2986  ));
2987 
2988 
2989  md_data_raw.push_back
2990  ( MdRecord
2991  ( NAME( "cloudboxSetManually" ),
2992  DESCRIPTION
2993  (
2994  "Sets the cloud box to encompass the given positions.\n"
2995  "\n"
2996  "The function sets *cloudbox_on* to 1 and sets *cloudbox_limits*\n"
2997  "following the given pressure, latitude and longitude positions.\n"
2998  "The index limits in *cloudbox_limits* are selected to give the\n"
2999  "smallest possible cloud box that encompass the given points.\n"
3000  "\n"
3001  "The points must be given in the same order as used in\n"
3002  "*cloudbox_limits*. That means that the first keyword argument\n"
3003  "shall be a higher pressure than argument two, while the latitude\n"
3004  "and longitude points are given in increasing order. Positions\n"
3005  "given for dimensions not used by the selected atmospheric\n"
3006  "dimensionality are ignored.\n"
3007  "\n"
3008  "The given pressure points can be outside the range of *p_grid*.\n"
3009  "The pressure limit is then set to the end point of *p_grid*.\n"
3010  "The given latitude and longitude points must be inside the range\n"
3011  "of the corresponding grid. In addition, the latitude and longitude\n"
3012  "points cannot be inside the outermost grid ranges as the latitude\n"
3013  "and longitude limits in *cloudbox_limits* are not allowed to be\n"
3014  "grid end points.\n"
3015  ),
3016  AUTHORS( "Patrick Eriksson" ),
3017  OUT( "cloudbox_on", "cloudbox_limits" ),
3018  GOUT(),
3019  GOUT_TYPE(),
3020  GOUT_DESC(),
3021  IN( "atmosphere_dim", "p_grid", "lat_grid", "lon_grid" ),
3022  GIN( "p1", "p2", "lat1", "lat2", "lon1",
3023  "lon2" ),
3024  GIN_TYPE( "Numeric", "Numeric", "Numeric", "Numeric", "Numeric",
3025  "Numeric" ),
3027  NODEF ),
3028  GIN_DESC( "Upper pressure point.",
3029  "Lower pressure point.",
3030  "Lower latitude point.",
3031  "Upper latitude point.",
3032  "Lower longitude point.",
3033  "Upper longitude point." )
3034  ));
3035 
3036  md_data_raw.push_back
3037  ( MdRecord
3038  ( NAME( "cloudboxSetManuallyAltitude" ),
3039  DESCRIPTION
3040  (
3041  "Sets the cloud box to encompass the given positions.\n"
3042  "\n"
3043  "As *cloudboxSetManually* but uses altitudes instead of pressure.\n"
3044  "The given altitude points can be outside the range of *z_field*.\n"
3045  "The altitude limit is then set to the end point of *p_grid*.\n"
3046  ),
3047  AUTHORS( "Claudia Emde" ),
3048  OUT( "cloudbox_on", "cloudbox_limits" ),
3049  GOUT(),
3050  GOUT_TYPE(),
3051  GOUT_DESC(),
3052  IN( "atmosphere_dim", "z_field", "lat_grid", "lon_grid" ),
3053  GIN( "z1", "z2", "lat1", "lat2", "lon1",
3054  "lon2" ),
3055  GIN_TYPE( "Numeric", "Numeric", "Numeric", "Numeric", "Numeric",
3056  "Numeric" ),
3058  NODEF ),
3059  GIN_DESC( "Lower altitude point.",
3060  "Upper altitude point.",
3061  "Lower latitude point.",
3062  "Upper latitude point.",
3063  "Lower longitude point.",
3064  "Upper longitude point." )
3065  ));
3066 
3067  md_data_raw.push_back
3068  ( MdRecord
3069  ( NAME( "cloudbox_checkedCalc" ),
3070  DESCRIPTION
3071  (
3072  "Checks consistency between cloudbox and particle variables.\n"
3073  "\n"
3074  "The following WSVs are treated: *cloudbox_on*, *cloudbox_limits*,\n"
3075  "*pnd_field*, *scat_data_array*, *particle_masses* and\n"
3076  "wind_u/v/w_field.\n"
3077  "\n"
3078  "If any of these variables are changed, then this method shall be\n"
3079  "called again (no automatic check that this is fulfilled!).\n"
3080  "\n"
3081  "The main checks are if the cloudbox limits are OK with respect to\n"
3082  "the atmospheric dimensionality and the limits of the atmosphere,\n"
3083  "and that the particle variables match in size.\n"
3084  "\n"
3085  "If any test fails, there is an error. Otherwise, *cloudbox_checked*\n"
3086  "is set to 1.\n"
3087  ),
3088  AUTHORS( "Patrick Eriksson" ),
3089  OUT( "cloudbox_checked" ),
3090  GOUT(),
3091  GOUT_TYPE(),
3092  GOUT_DESC(),
3093  IN( "atmfields_checked", "atmosphere_dim", "p_grid", "lat_grid",
3094  "lon_grid", "z_field", "z_surface",
3095  "wind_u_field", "wind_v_field", "wind_w_field",
3096  "cloudbox_on", "cloudbox_limits", "pnd_field", "scat_data_array",
3097  "particle_masses", "abs_species" ),
3098  GIN(),
3099  GIN_TYPE(),
3100  GIN_DEFAULT(),
3101  GIN_DESC()
3102  ));
3103 
3104  md_data_raw.push_back
3105  ( MdRecord
3106  ( NAME( "Compare" ),
3107  DESCRIPTION
3108  (
3109  "Checks the consistency between two variables.\n"
3110  "\n"
3111  "The two variables are checked to not deviate outside the specified\n"
3112  "value (*maxabsdiff*). An error is issued if this is not fulfilled.\n"
3113  "\n"
3114  "The main application of this method is to be part of the test\n"
3115  "control files, and then used to check that a calculated value\n"
3116  "is consistent with an old, reference, value.\n"
3117  ),
3118  AUTHORS( "Oliver Lemke" ),
3119  OUT( ),
3120  GOUT(),
3121  GOUT_TYPE(),
3122  GOUT_DESC(),
3123  IN(),
3124  GIN( "var1", "var2", "maxabsdiff", "error_message" ),
3125  GIN_TYPE( "Numeric, Vector, Matrix, Tensor3, Tensor7, ArrayOfVector, ArrayOfMatrix, GriddedField3",
3126  "Numeric, Vector, Matrix, Tensor3, Tensor7, ArrayOfVector, ArrayOfMatrix, GriddedField3",
3127  "Numeric", "String" ),
3128  GIN_DEFAULT( NODEF, NODEF, "", "" ),
3129  GIN_DESC( "A first variable", "A second variable",
3130  "Threshold for maximum absolute difference.",
3131  "Additional error message."),
3132  SETMETHOD( false ),
3133  AGENDAMETHOD( false ),
3134  USES_TEMPLATES( false ),
3135  PASSWORKSPACE( false ),
3136  PASSWSVNAMES( true )
3137  ));
3138 
3139  md_data_raw.push_back
3140  ( MdRecord
3141  ( NAME( "complex_refr_indexConstant" ),
3142  DESCRIPTION
3143  (
3144  "Set complex refractive index to a constant value.\n"
3145  "\n"
3146  "Frequency and temperature grids are set to have length 1 (and\n"
3147  "set to the value 0).\n"
3148  ),
3149  AUTHORS( "Oliver Lemke" ),
3150  OUT( "complex_refr_index" ),
3151  GOUT(),
3152  GOUT_TYPE(),
3153  GOUT_DESC(),
3154  IN(),
3155  GIN( "refr_index_real", "refr_index_imag" ),
3156  GIN_TYPE( "Numeric", "Numeric" ),
3157  GIN_DEFAULT( NODEF, NODEF ),
3158  GIN_DESC( "Real part of refractive index",
3159  "Imag part of refractive index" )
3160  ));
3161 
3162  md_data_raw.push_back
3163  ( MdRecord
3164  ( NAME( "complex_refr_indexIceWarren84" ),
3165  DESCRIPTION
3166  (
3167  "Refractive index of ice follwoing Warren84 parameterization.\n"
3168  "\n"
3169  "Calculates complex refractive index of Ice 1H for wavelengths\n"
3170  "between 45 nm and 8.6 m.\n"
3171  "For wavelengths above 167 microns, temperature dependence is\n"
3172  "included for temperatures between 213 and 272K.\n"
3173  "Mainly intended for applications in Earth ice\n"
3174  "clouds and snow, not other planets or interstellar space;\n"
3175  "the temperature dependence or crystalline form of ice may be\n"
3176  "incorrect for these latter applications.\n"
3177  "\n"
3178  "Authors of Fortran function:\n"
3179  "Stephen Warren, Univ. of Washington (1983)\n"
3180  "Bo-Cai Gao, JCESS, Univ. of Maryland (1995)\n"
3181  "Warren Wiscombe, NASA Goddard (1995)\n"
3182  "\n"
3183  "References:\n"
3184  "Warren, S., 1984: Optical Constants of Ice from the Ultraviolet\n"
3185  "to the Microwave, Appl. Opt. 23, 1206-1225\n"
3186  "\n"
3187  "Kou, L., D. Labrie, and P. Chylek, 1994: Refractive indices\n"
3188  "of water and ice in the 0.65- to 2.5-micron spectral range,\n"
3189  "Appl. Opt. 32, 3531-3540\n"
3190  "\n"
3191  "Perovich, D., and J. Govoni, 1991: Absorption Coefficients\n"
3192  "of Ice from 250 to 400 nm, Geophys. Res. Lett. 18, 1233-1235\n"
3193  ),
3194  AUTHORS( "Oliver Lemke" ),
3195  OUT( "complex_refr_index" ),
3196  GOUT(),
3197  GOUT_TYPE(),
3198  GOUT_DESC(),
3199  IN(),
3200  GIN( "data_f_grid", "data_T_grid" ),
3201  GIN_TYPE( "Vector", "Vector" ),
3202  GIN_DEFAULT( NODEF, NODEF ),
3203  GIN_DESC( "Frequency grid for refractive index calculation",
3204  "Temperature grid for refractive index calculation" )
3205  ));
3206 
3207  md_data_raw.push_back
3208  ( MdRecord
3209  ( NAME( "complex_refr_indexWaterLiebe93" ),
3210  DESCRIPTION
3211  (
3212  "Complex refractive index of liquid water according to Liebe 1993.\n"
3213  "\n"
3214  "The method treats liquid water without salt. Thus, not valid below\n"
3215  "10 GHz. Upper frequency limit not known, here set to 1000 GHz.\n"
3216  "Model parameters taken from Atmlab function epswater93 (by\n"
3217  "C. Maetzler), which refer to Liebe 1993 without closer\n"
3218  "specifications.\n"
3219  "\n"
3220  "Temperatures must be between -40 and 100 degrees Celsius. The\n"
3221  "accuracy of the parametrization below 0 C is not known by us.\n"
3222  ),
3223  AUTHORS( "Patrick Eriksson", "Oliver Lemke" ),
3224  OUT( "complex_refr_index" ),
3225  GOUT(),
3226  GOUT_TYPE(),
3227  GOUT_DESC(),
3228  IN(),
3229  GIN( "data_f_grid", "data_T_grid" ),
3230  GIN_TYPE( "Vector", "Vector" ),
3231  GIN_DEFAULT( NODEF, NODEF ),
3232  GIN_DESC( "Frequency grid for refractive index calculation",
3233  "Temperature grid for refractive index calculation" )
3234  ));
3235 
3236  md_data_raw.push_back
3237  ( MdRecord
3238  ( NAME( "Copy" ),
3239  DESCRIPTION
3240  (
3241  "Copy a workspace variable.\n"
3242  "\n"
3243  "This method can copy any workspace variable\n"
3244  "to another workspace variable of the same group. (E.g., a Matrix to\n"
3245  "another Matrix.)\n"
3246  "\n"
3247  "As always, output comes first in the argument list!\n"
3248  "\n"
3249  "Usage example:\n"
3250  "\n"
3251  "Copy(f_grid, p_grid)\n"
3252  "\n"
3253  "Will copy the content of *p_grid* to *f_grid*. The size of *f_grid*\n"
3254  "is adjusted automatically (the normal behaviour for workspace\n"
3255  "methods).\n"
3256  ),
3257  AUTHORS( "Stefan Buehler" ),
3258  OUT(),
3259  GOUT( "out" ),
3260  GOUT_TYPE( "Any" ),
3261  GOUT_DESC( "Destination variable." ),
3262  IN(),
3263  GIN( "in" ),
3264  GIN_TYPE( "Any" ),
3265  GIN_DEFAULT( NODEF ),
3266  GIN_DESC( "Source variable." ),
3267  SETMETHOD( false ),
3268  AGENDAMETHOD( false ),
3269  USES_TEMPLATES( true ),
3270  PASSWORKSPACE( false ),
3271  PASSWSVNAMES( true )
3272  ));
3273 
3274  md_data_raw.push_back
3275  ( MdRecord
3276  ( NAME( "Delete" ),
3277  DESCRIPTION
3278  (
3279  "Deletes a workspace variable.\n"
3280  "\n"
3281  "The variable is marked as uninitialized and its memory freed.\n"
3282  "It is not removed from the workspace though, therefore you\n"
3283  "don't need to/can't call Create for this variable again.\n"
3284  ),
3285  AUTHORS( "Oliver Lemke" ),
3286  OUT(),
3287  GOUT(),
3288  GOUT_TYPE(),
3289  GOUT_DESC(),
3290  IN(),
3291  GIN( "v" ),
3292  GIN_TYPE( "Any" ),
3293  GIN_DEFAULT( NODEF ),
3294  GIN_DESC( "Variable to be deleted." ),
3295  SETMETHOD( false ),
3296  AGENDAMETHOD( false ),
3297  USES_TEMPLATES( true ),
3298  PASSWORKSPACE( true ),
3299  PASSWSVNAMES( true )
3300  ));
3301 
3302  md_data_raw.push_back
3303  ( MdRecord
3304  ( NAME( "dN_H11" ),
3305  DESCRIPTION
3306  (
3307  "Calculation of particle size distribution (dN/dD) following\n"
3308  "a parametrization by Heymsfield (2011; unpublished).\n"
3309  "\n"
3310  "A wrapper to internal particle size distribution calculation.\n"
3311  "Heymsfield (2011) is an unpublished pre-version of\n"
3312  "Heymsfield (2013). It is a globally valid parametrization for cloud\n"
3313  "ice. The parametrization is in ambient atmospheric temperature over\n"
3314  "particle size in terms of maximum dimension of the particles.\n"
3315  "Provides only the shape of the number density disribution function.\n"
3316  "\n"
3317  "For testing purposes mainly.\n"
3318  ),
3319  AUTHORS( "Jana Mendrok" ),
3320  OUT(),
3321  GOUT( "dN" ),
3322  GOUT_TYPE( "Vector" ),
3323  GOUT_DESC( "size distribution number density" ),
3324  IN(),
3325  GIN( "Dmax", "t" ),
3326  GIN_TYPE( "Vector", "Numeric" ),
3327  GIN_DEFAULT( NODEF, NODEF ),
3328  GIN_DESC( "Maximum dimension of the particles [m]",
3329  "Ambient atmospheric temperature [K]" )
3330  ));
3331 
3332  md_data_raw.push_back
3333  ( MdRecord
3334  ( NAME( "dN_Ar_H13" ),
3335  DESCRIPTION
3336  (
3337  "Calculation of particle size and shape distribution (dN/dD, area\n"
3338  "ratio) following Heymsfield (2013).\n"
3339  "\n"
3340  "A wrapper to internal particle size and shape distribution\n"
3341  "calculation. Heymsfield (2013) is a globally valid parametrization\n"
3342  "for cloud ice. The parametrization is in ambient atmospheric\n"
3343  "temperature over particle size in terms of maximum dimension. It\n"
3344  "provides the shape of the distribution function of both number\n"
3345  "density and area ratio.\n"
3346  "\n"
3347  "For testing purposes mainly.\n"
3348  ),
3349  AUTHORS( "Jana Mendrok" ),
3350  OUT(),
3351  GOUT( "dN", "Ar" ),
3352  GOUT_TYPE( "Vector", "Vector" ),
3353  GOUT_DESC( "size distribution number density", "area ratio distribution" ),
3354  IN(),
3355  GIN( "Dmax", "t" ),
3356  GIN_TYPE( "Vector", "Numeric" ),
3357  GIN_DEFAULT( NODEF, NODEF ),
3358  GIN_DESC( "Maximum dimension of the particles [m]",
3359  "Ambient atmospheric temperature [K]" )
3360  ));
3361 
3362  md_data_raw.push_back
3363  ( MdRecord
3364  ( NAME( "dN_H98" ),
3365  DESCRIPTION
3366  (
3367  "Calculation of particle size shape distribution (dN/dR) following\n"
3368  "Hess et al. (1998).\n"
3369  "\n"
3370  "A wrapper to internal particle size distribution calculation. The\n"
3371  "distribution implemented here is for cloud liquid water,\n"
3372  "specifically for continental stratus. The parametrization is over\n"
3373  "radius of spherical droplets. Provides number density normalized to\n"
3374  "the given liquid water content.\n"
3375  "\n"
3376  "For testing purposes mainly.\n"
3377  ),
3378  AUTHORS( "Jana Mendrok" ),
3379  OUT(),
3380  GOUT( "dN" ),
3381  GOUT_TYPE( "Vector" ),
3382  GOUT_DESC( "size distribution number density" ),
3383  IN(),
3384  GIN( "R", "LWC", "density" ),
3385  GIN_TYPE( "Vector", "Numeric", "Vector" ),
3387  GIN_DESC( "Radii of the particles [m]",
3388  "Atmospheric liquid water content [kg/m3]",
3389  "Density of the particles [kg/m3]" )
3390  ));
3391 
3392  md_data_raw.push_back
3393  ( MdRecord
3394  ( NAME( "dN_MH97" ),
3395  DESCRIPTION
3396  (
3397  "Calculation of particle size distribution (dN/dD) following\n"
3398  "McFarquahar and Heymsfield (1997) parametrization.\n"
3399  "\n"
3400  "A wrapper to internal particle size distribution calculation.\n"
3401  "McFarquhar and Heymsfield (1997) is a parametrization for cloud\n"
3402  "ice in the tropics. Parametrization is in ice water content (IWC)\n"
3403  "and ambient atmospheric temperature over particle size in terms of\n"
3404  "mass equivalent sphere diameter. McFarquhar and Heymsfield (1997)\n"
3405  "additionally provide uncertainties of the distribution's\n"
3406  "parameters, which can be used here to created perturbed\n"
3407  "distributions (set *noisy* to 1). Provides number density\n"
3408  "normalized to the given ice water content.\n"
3409  "\n"
3410  "For testing purposes mainly.\n"
3411  ),
3412  AUTHORS( "Jana Mendrok" ),
3413  OUT(),
3414  GOUT( "dN" ),
3415  GOUT_TYPE( "Vector" ),
3416  GOUT_DESC( "size distribution number density" ),
3417  IN(),
3418  GIN( "Dme", "IWC", "t", "density", "noisy" ),
3419  GIN_TYPE( "Vector", "Numeric", "Numeric", "Vector", "Index" ),
3420  GIN_DEFAULT( NODEF, NODEF, NODEF, NODEF, "0" ),
3421  GIN_DESC( "Mass equivalent sphere diameter of the particles [m]",
3422  "Atmospheric ice water content [kg/m3]",
3423  "Ambient atmospheric temperature [K]",
3424  "Density of the particles [kg/m3]",
3425  "Distribution parameter perturbance flag" )
3426  ));
3427 
3428  md_data_raw.push_back
3429  ( MdRecord
3430  ( NAME( "dN_F07TR" ),
3431  DESCRIPTION
3432  (
3433  "Calculation of particle size distribution (dN/dD) following\n"
3434  "Field et al. (2007) for tropics parametrization.\n"
3435  "\n"
3436  "A wrapper to internal particle size distribution calculation.\n"
3437  "Field et al. (2007) for tropics is a parametrization for Snow\n"
3438  "and cloud ice in the tropics. Parametrization is in ice water content (IWC)\n"
3439  "and ambient atmospheric temperature over particle size in terms of\n"
3440  "maximum diameter. Provides number density\n"
3441  "normalized to the given snow/ice water content.\n"
3442  ),
3443  AUTHORS( "Manfred Brath" ),
3444  OUT(),
3445  GOUT( "dN" ),
3446  GOUT_TYPE( "Vector" ),
3447  GOUT_DESC( "size distribution number density" ),
3448  IN(),
3449  GIN( "diameter_max", "SWC", "t", "alpha", "beta" ),
3450  GIN_TYPE( "Vector", "Numeric", "Numeric", "Numeric", "Numeric" ),
3451  GIN_DEFAULT( NODEF, NODEF, NODEF, "0.0257","2.0" ),
3452  GIN_DESC( "Maximum diameter of the particles [m]",
3453  "Atmospheric ice water content [kg/m3]",
3454  "Ambient atmospheric temperature [K]",
3455  "Factor for the mass-dimension (m=alpha*(Dmax/D0)^beta) relationship [kg]",
3456  "Exponent for the mass-dimension relationship [pure number]")
3457  ));
3458 
3459  md_data_raw.push_back
3460  ( MdRecord
3461  ( NAME( "dN_F07ML" ),
3462  DESCRIPTION
3463  (
3464  "Calculation of particle size distribution (dN/dD) following\n"
3465  "Field et al. (2007) for mid latitude parametrization.\n"
3466  "\n"
3467  "A wrapper to internal particle size distribution calculation.\n"
3468  "Field et al. (2007) for mid latitude is a parametrization for Snow\n"
3469  "and cloud ice in the mid latitude. Parametrization is in ice water content (IWC)\n"
3470  "and ambient atmospheric temperature over particle size in terms of\n"
3471  "maximum diameter. Provides number density\n"
3472  "normalized to the given snow/ice water content.\n"
3473  ),
3474  AUTHORS( "Manfred Brath" ),
3475  OUT(),
3476  GOUT( "dN" ),
3477  GOUT_TYPE( "Vector" ),
3478  GOUT_DESC( "size distribution number density" ),
3479  IN(),
3480  GIN( "diameter_max", "SWC", "t", "alpha", "beta" ),
3481  GIN_TYPE( "Vector", "Numeric", "Numeric", "Numeric", "Numeric" ),
3482  GIN_DEFAULT( NODEF, NODEF, NODEF, "0.0257","2.0" ),
3483  GIN_DESC( "Maximum diameter of the particles [m]",
3484  "Atmospheric ice water content [kg/m3]",
3485  "Ambient atmospheric temperature [K]",
3486  "Factor for the mass-dimension (m=alpha*(Dmax/D0)^beta) relationship [kg]",
3487  "Exponent for the mass-dimension relationship [pure number]")
3488  ));
3489 
3490  md_data_raw.push_back
3491  ( MdRecord
3492  ( NAME( "dN_MGD_LWC" ),
3493  DESCRIPTION
3494  (
3495  "Calculation of particle size distribution (dN/dD) according\n"
3496  "to the modified gamma distribution for cloud water\n"
3497  "inside of Geer and Baordo (2014)\n"
3498  "\n"
3499  "A wrapper to internal particle size distribution calculation.\n"
3500  "MDG_LWC is a parametrization for cloud liquid water. It is a\n"
3501  "modified gamma distribution with the coefficients of Geer and Baordo (2014)\n"
3502  "Parametrization is in liquid water content (LWC)\n"
3503  "Assumptions are: density of particles is constant and particle shape is sphere.\n"
3504  "Provides number density normalized to the given liquid water content.\n"
3505  ),
3506  AUTHORS( "Manfred Brath" ),
3507  OUT(),
3508  GOUT( "dN" ),
3509  GOUT_TYPE( "Vector" ),
3510  GOUT_DESC( "size distribution number density" ),
3511  IN(),
3512  GIN( "deq","rho","LWC"),
3513  GIN_TYPE( "Vector","Numeric","Numeric" ),
3515  GIN_DESC( "volume equivalent diameter of the particles [m]",
3516  "Density of the particles [kg/m^3]",
3517  "Atmospheric ice water content [kg/m3]")
3518  ));
3519 
3520  md_data_raw.push_back
3521  ( MdRecord
3522  ( NAME( "dN_MGD_IWC" ),
3523  DESCRIPTION
3524  (
3525  "Calculation of particle size distribution (dN/dD) according\n"
3526  "to the modified gamma distribution for cloud ice\n"
3527  "inside of Geer and Baordo (2014)\n"
3528  "\n"
3529  "A wrapper to internal particle size distribution calculation.\n"
3530  "MDG_IWC is a parametrization for cloud ice. It is a\n"
3531  "modified gamma distribution with the coefficients of Geer and Baordo (2014)\n"
3532  "Parametrization is in liquid water content (IWC)\n"
3533  "Assumptions are: density of particles is constant and particle shape is sphere.\n"
3534  "Provides number density normalized to the given ice water content.\n"
3535  ),
3536  AUTHORS( "Manfred Brath" ),
3537  OUT(),
3538  GOUT( "dN" ),
3539  GOUT_TYPE( "Vector" ),
3540  GOUT_DESC( "size distribution number density" ),
3541  IN(),
3542  GIN( "deq","rho","IWC"),
3543  GIN_TYPE( "Vector","Numeric","Numeric" ),
3545  GIN_DESC( "volume equivalent diameter of the particles [m]",
3546  "Density of the particles [kg/m^3]",
3547  "Atmospheric ice water content [kg/m3]")
3548  ));
3549 
3550  md_data_raw.push_back
3551  ( MdRecord
3552  ( NAME( "dN_MP48" ),
3553  DESCRIPTION
3554  (
3555  "Calculation of particle size distribution (dN/dD) following\n"
3556  "Marshall and Palmer (1948) parametrization.\n"
3557  "\n"
3558  "A wrapper to internal particle size distribution calculation.\n"
3559  "Marshall and Palmer (1948) is a parametrization for liquid and ice\n"
3560  "precipitation, i.e., rain and snow. Parametrization is in\n"
3561  "precipitation rate (PR) over particle size in terms of mass\n"
3562  "equivalent sphere diameter. Provides number density normalized to\n"
3563  "the given precipitation rate.\n"
3564  "\n"
3565  "For testing purposes mainly.\n"
3566  ),
3567  AUTHORS( "Jana Mendrok" ),
3568  OUT(),
3569  GOUT( "dN" ),
3570  GOUT_TYPE( "Vector" ),
3571  GOUT_DESC( "size distribution number density" ),
3572  IN(),
3573  GIN( "Dme", "PR" ),
3574  GIN_TYPE( "Vector", "Numeric" ),
3575  GIN_DEFAULT( NODEF, NODEF ),
3576  GIN_DESC( "Mass equivalent sphere diameter of the particles [m]",
3577  "Precipitation rate [mm/h]" )
3578  ));
3579 
3580  md_data_raw.push_back
3581  ( MdRecord
3582  ( NAME( "DoitAngularGridsSet" ),
3583  DESCRIPTION
3584  (
3585  "Sets the angular grids for DOIT calculation."
3586  "\n"
3587  "In this method the angular grids for a DOIT calculation are\n"
3588  "specified. For down-looking geometries it is sufficient to define\n"
3589  "*N_za_grid* and *N_aa_grid*. From these numbers equally spaced\n"
3590  "grids are created and stored in the WSVs *scat_za_grid* and\n"
3591  "*scat_aa_grid*.\n"
3592  "\n"
3593  "For limb simulations it is important to use an optimized zenith \n"
3594  "angle grid with a very fine resolution about 90 degrees. Such a grid can be\n"
3595  "generated using *doit_za_grid_optCalc*. The filename of an optimized\n"
3596  "zenith angle grid can be given as a keyword (*za_grid_opt_file*).\n"
3597  "\n"
3598  "If a filename is given, the equidistant grid is used for the\n"
3599  "calculation of the scattering integrals and the optimized grid is\n"
3600  "applied for integration of the radiative transfer equation. \n"
3601  "\n"
3602  "For down-looking cases no filename should be specified (za_grid_opt_file = \"\" ) \n"
3603  "Using only the equidistant grid makes sense to speed up the calculation.\n"
3604  ),
3605  AUTHORS( "Claudia Emde" ),
3606  OUT( "doit_za_grid_size", "scat_aa_grid", "scat_za_grid" ),
3607  GOUT(),
3608  GOUT_TYPE(),
3609  GOUT_DESC(),
3610  IN(),
3611  GIN( "N_za_grid", "N_aa_grid", "za_grid_opt_file" ),
3612  GIN_TYPE( "Index", "Index", "String" ),
3614  GIN_DESC( "Number of grid points in zenith angle grid. "
3615  "Recommended value is 19.",
3616  "Number of grid points in azimuth angle grid. "
3617  "Recommended value is 37.",
3618  "Name of special grid for RT part." )
3619  ));
3620 
3621  md_data_raw.push_back
3622  ( MdRecord
3623  ( NAME( "DoitCloudboxFieldPut" ),
3624  DESCRIPTION
3625  (
3626  "Method for the DOIT communication between cloudbox and clearsky.\n"
3627  "\n"
3628  "This method puts the scattered radiation field into the interface\n"
3629  "variables between the cloudbox and the clearsky, which are\n"
3630  "*scat_i_p*, *scat_i_lat* and *scat_i_lon*.\n"
3631  "\n"
3632  "The best way to calculate spectra including the influence of\n"
3633  "scattering is to set up the *doit_mono_agenda* where this method\n"
3634  "can be included.\n"
3635  ),
3636  AUTHORS( "Claudia Emde" ),
3637  OUT( "scat_i_p", "scat_i_lat", "scat_i_lon",
3638  "doit_i_field1D_spectrum" ),
3639  GOUT(),
3640  GOUT_TYPE(),
3641  GOUT_DESC(),
3642  IN( "scat_i_p", "doit_i_field1D_spectrum", "doit_i_field",
3643  "f_grid", "f_index", "p_grid", "lat_grid", "lon_grid",
3644  "scat_za_grid", "scat_aa_grid", "stokes_dim",
3645  "atmosphere_dim", "cloudbox_limits" ),
3646  GIN(),
3647  GIN_TYPE(),
3648  GIN_DEFAULT(),
3649  GIN_DESC()
3650  ));
3651 
3652  md_data_raw.push_back
3653  ( MdRecord
3654  ( NAME( "doit_conv_flagAbs" ),
3655  DESCRIPTION
3656  (
3657  "DOIT convergence test (maximum absolute difference).\n"
3658  "\n"
3659  "The function calculates the absolute differences for two successive\n"
3660  "iteration fields. It picks out the maximum values for each Stokes\n"
3661  "component separately. The convergence test is fullfilled under the\n"
3662  "following conditions:\n"
3663  " |I(m+1) - I(m)| < epsilon_1 Intensity.\n"
3664  " |Q(m+1) - Q(m)| < epsilon_2 The other Stokes components.\n"
3665  " |U(m+1) - U(m)| < epsilon_3 \n"
3666  " |V(m+1) - V(m)| < epsilon_4 \n"
3667  "These conditions have to be valid for all positions in the\n"
3668  "cloudbox and for all directions.\n"
3669  ),
3670  AUTHORS( "Claudia Emde" ),
3671  OUT( "doit_conv_flag", "doit_iteration_counter", "doit_i_field" ),
3672  GOUT(),
3673  GOUT_TYPE(),
3674  GOUT_DESC(),
3675  IN( "doit_conv_flag", "doit_iteration_counter",
3676  "doit_i_field", "doit_i_field_old" ),
3677  GIN( "epsilon", "max_iterations", "nonconv_return_nan" ),
3678  GIN_TYPE( "Vector", "Index", "Index" ),
3679  GIN_DEFAULT( NODEF, "100", "0" ),
3680  GIN_DESC( "Limits for convergence. A vector with length matching "
3681  "*stokes_dim* with unit [W / (m^2 Hz sr)].",
3682  "Maximum number of iterations allowed to reach convergence"
3683  "limit.",
3684  "Flag whether to accept result at max_iterations (0=default)"
3685  "or whether to return NaNs in case of non-convergence at"
3686  "max_iterations"
3687  )
3688  ));
3689 
3690  md_data_raw.push_back
3691  ( MdRecord
3692  ( NAME( "doit_conv_flagAbsBT" ),
3693  DESCRIPTION
3694  (
3695  "DOIT convergence test (maximum absolute difference in Rayleigh Jeans "
3696  "BT)\n"
3697  "\n"
3698  "As *doit_conv_flagAbs* but convergence limits are specified in\n"
3699  "Rayleigh-Jeans brighntess temperatures.\n"
3700  ),
3701  AUTHORS( "Sreerekha T.R.", "Claudia Emde" ),
3702  OUT( "doit_conv_flag", "doit_iteration_counter", "doit_i_field" ),
3703  GOUT(),
3704  GOUT_TYPE(),
3705  GOUT_DESC(),
3706  IN( "doit_conv_flag", "doit_iteration_counter",
3707  "doit_i_field", "doit_i_field_old", "f_grid", "f_index" ),
3708  GIN( "epsilon", "max_iterations", "nonconv_return_nan" ),
3709  GIN_TYPE( "Vector", "Index", "Index" ),
3710  GIN_DEFAULT( NODEF, "100", "0" ),
3711  GIN_DESC( "Limits for convergence. A vector with length matching "
3712  "*stokes_dim* with unit [K].",
3713  "Maximum number of iterations allowed to reach convergence"
3714  "limit.",
3715  "Flag whether to accept result at max_iterations (0=default)"
3716  "or whether to return NaNs in case of non-convergence at"
3717  "max_iterations"
3718  )
3719  ));
3720 
3721  md_data_raw.push_back
3722  ( MdRecord
3723  ( NAME( "doit_conv_flagLsq" ),
3724  DESCRIPTION
3725  (
3726  "DOIT convergence test (least squares).\n"
3727  "\n"
3728  "As *doit_conv_flagAbsBT* but applies a least squares convergence\n"
3729  "test between two successive iteration fields.\n"
3730  "\n"
3731  "Warning: This method is not recommended because this kind of\n"
3732  "convergence test is not sufficiently strict, so that the\n"
3733  "DOIT result might be wrong.\n"
3734  ),
3735  AUTHORS( "Claudia Emde" ),
3736  OUT( "doit_conv_flag", "doit_iteration_counter", "doit_i_field" ),
3737  GOUT(),
3738  GOUT_TYPE(),
3739  GOUT_DESC(),
3740  IN( "doit_conv_flag", "doit_iteration_counter",
3741  "doit_i_field", "doit_i_field_old", "f_grid", "f_index" ),
3742  GIN( "epsilon", "max_iterations", "nonconv_return_nan" ),
3743  GIN_TYPE( "Vector", "Index", "Index" ),
3744  GIN_DEFAULT( NODEF, "100", "0" ),
3745  GIN_DESC( "Limits for convergence. A vector with length matching "
3746  "*stokes_dim* with unit [K].",
3747  "Maximum number of iterations allowed to reach convergence"
3748  "limit.",
3749  "Flag whether to accept result at max_iterations (0=default)"
3750  "or whether to return NaNs in case of non-convergence at"
3751  "max_iterations"
3752  )
3753  ));
3754 
3755  md_data_raw.push_back
3756  ( MdRecord
3757  ( NAME( "DoitInit" ),
3758  DESCRIPTION
3759  (
3760  "Initialises variables for DOIT scattering calculations.\n"
3761  "\n"
3762  "Note that multi-dimensional output variables (Tensors, specifically)\n"
3763  "are zero-initialized. That is, this methods needs to be called\n"
3764  "BEFORE other WSMs that provide input to *ScatteringDOIT*, e.g.\n"
3765  "before *CloudboxGetIncoming*.\n"
3766  ),
3767  AUTHORS( "Claudia Emde" ),
3768  OUT( "scat_p_index", "scat_lat_index", "scat_lon_index",
3769  "scat_za_index", "scat_aa_index", "doit_scat_field",
3770  "doit_i_field", "doit_i_field1D_spectrum",
3771  "scat_i_p", "scat_i_lat", "scat_i_lon",
3772  "doit_is_initialized" ),
3773  GOUT(),
3774  GOUT_TYPE(),
3775  GOUT_DESC(),
3776  IN( "stokes_dim", "atmosphere_dim", "f_grid",
3777  "scat_za_grid", "scat_aa_grid",
3778  "doit_za_grid_size", "cloudbox_on", "cloudbox_limits",
3779  "scat_data_array" ),
3780  GIN(),
3781  GIN_TYPE(),
3782  GIN_DEFAULT(),
3783  GIN_DESC()
3784  ));
3785 
3786  md_data_raw.push_back
3787  ( MdRecord
3788  ( NAME( "doit_i_fieldIterate" ),
3789  DESCRIPTION
3790  (
3791  "Iterative solution of the VRTE (DOIT method).\n"
3792  "\n"
3793  "A solution for the RTE with scattering is found using the\n"
3794  "DOIT method:\n"
3795  " 1. Calculate scattering integral using *doit_scat_field_agenda*.\n"
3796  " 2. Calculate RT with fixed scattered field using\n"
3797  " *doit_rte_agenda*.\n"
3798  " 3. Convergence test using *doit_conv_test_agenda*.\n"
3799  "\n"
3800  "Note: The atmospheric dimensionality *atmosphere_dim* can be\n"
3801  " either 1 or 3. To these dimensions the method adapts\n"
3802  " automatically. 2D scattering calculations are not\n"
3803  " supported.\n"
3804  ),
3805  AUTHORS( "Claudia Emde" ),
3806  OUT( "doit_i_field" ),
3807  GOUT(),
3808  GOUT_TYPE(),
3809  GOUT_DESC(),
3810  IN( "doit_i_field", "doit_scat_field_agenda", "doit_rte_agenda",
3811  "doit_conv_test_agenda" ),
3812  GIN(),
3813  GIN_TYPE(),
3814  GIN_DEFAULT(),
3815  GIN_DESC()
3816  ));
3817 
3818  md_data_raw.push_back
3819  ( MdRecord
3820  ( NAME( "doit_i_fieldSetFromdoit_i_field1D_spectrum" ),
3821  DESCRIPTION
3822  (
3823  "Sets the initial cloudbox intensity field from doit_i_field1D_spectrum.\n"
3824  "\n"
3825  "This method sets the (monochromatic) first guess radiation field\n"
3826  "inside the cloudbox from a precalculated *doit_i_field1D_spectrum*,\n"
3827  "e.g., from the solution of a similar atmospheric scenario. The\n"
3828  "dimensions of *doit_i_field1D_Spectrum* have to be consistent with\n"
3829  "the DOIT setup in terms of frequencies, pressure levels inside the\n"
3830  "cloudbox, polar angles used as well as the stokes dimension.\n"
3831  "Incoming field on the cloudbox boundaries is adapted to the actual\n"
3832  "clearsky incoming field as, e.g., calculated by *DoitGetIncoming*.\n"
3833  ),
3834  AUTHORS( "Jana Mendrok" ),
3835  OUT( "doit_i_field" ),
3836  GOUT(),
3837  GOUT_TYPE(),
3838  GOUT_DESC(),
3839  IN( "doit_i_field1D_spectrum", "scat_i_p", "scat_za_grid",
3840  "f_grid", "f_index",
3841  "atmosphere_dim", "stokes_dim", "cloudbox_limits" ),
3842  GIN(),
3843  GIN_TYPE(),
3844  GIN_DEFAULT(),
3845  GIN_DESC()
3846  ));
3847 
3848  md_data_raw.push_back
3849  ( MdRecord
3850  ( NAME( "doit_i_fieldSetClearsky" ),
3851  DESCRIPTION
3852  (
3853  "Interpolate clearsky field on all gridpoints in cloudbox.\n"
3854  "\n"
3855  "This method uses a linear 1D/3D interpolation scheme to obtain the\n"
3856  "radiation field on all grid points inside the cloud box from the\n"
3857  "clear sky field on the cloud box boundary. This radiation field\n"
3858  "is taken as the first guess radiation field in the DOIT module.\n"
3859  "\n"
3860  "Set the *all_frequencies* to 1 if the clearsky field shall be used\n"
3861  "as initial field for all frequencies. Set it to 0 if the clear sky\n"
3862  "field shall be used only for the first frequency in *f_grid*. For\n"
3863  "later frequencies, *doit_i_field* of the previous frequency is then\n"
3864  "used.\n"
3865  ),
3866  AUTHORS( "Sreerekha T.R. and Claudia Emde" ),
3867  OUT( "doit_i_field" ),
3868  GOUT(),
3869  GOUT_TYPE(),
3870  GOUT_DESC(),
3871  IN( "doit_i_field", "scat_i_p", "scat_i_lat", "scat_i_lon", "f_grid",
3872  "f_index", "p_grid", "lat_grid", "lon_grid",
3873  "cloudbox_limits", "atmosphere_dim" ),
3874  GIN( "all_frequencies" ),
3875  GIN_TYPE( "Index" ),
3876  GIN_DEFAULT( "1" ),
3877  GIN_DESC( "See above." )
3878  ));
3879 
3880  md_data_raw.push_back
3881  ( MdRecord
3882  ( NAME( "doit_i_fieldSetConst" ),
3883  DESCRIPTION
3884  (
3885  "This method sets the initial field inside the cloudbox to a\n"
3886  "constant value. The method works only for monochromatic\n"
3887  "calculations (number of elements in f_grid=1).\n"
3888  "\n"
3889  "The user can specify a value for each Stokes dimension in the\n"
3890  "control file by *value*.\n"
3891  ),
3892  AUTHORS( "Claudia Emde" ),
3893  OUT( "doit_i_field" ),
3894  GOUT(),
3895  GOUT_TYPE(),
3896  GOUT_DESC(),
3897  IN( "scat_i_p", "scat_i_lat", "scat_i_lon", "p_grid", "lat_grid",
3898  "lon_grid",
3899  "cloudbox_limits", "atmosphere_dim", "stokes_dim" ),
3900  GIN( "value" ),
3901  GIN_TYPE( "Vector" ),
3902  GIN_DEFAULT( NODEF ),
3903  GIN_DESC( "A vector containing 4 elements with the value of the "
3904  "initial field for each Stokes dimension."
3905  )
3906  ));
3907 
3908  md_data_raw.push_back
3909  ( MdRecord
3910  ( NAME( "doit_i_fieldUpdate1D" ),
3911  DESCRIPTION
3912  (
3913  "RT calculation in cloudbox with fixed scattering integral (1D).\n"
3914  "\n"
3915  "Updates the radiation field (DOIT method). The method loops\n"
3916  "through the cloudbox to update the radiation field for all\n"
3917  "positions and directions in the 1D cloudbox.\n"
3918  "\n"
3919  "Note: This method is very inefficient, because the number of\n"
3920  "iterations scales with the number of cloudbox pressure levels.\n"
3921  "It is recommended to use *doit_i_fieldUpdateSeq1D*.\n"
3922  ),
3923  AUTHORS( "Claudia Emde" ),
3924  OUT( "doit_i_field" ),
3925  GOUT(),
3926  GOUT_TYPE(),
3927  GOUT_DESC(),
3928  IN( "doit_i_field",
3929  "doit_scat_field", "cloudbox_limits",
3930  "propmat_clearsky_agenda",
3931  "vmr_field", "spt_calc_agenda", "scat_za_grid", "pnd_field",
3932  "opt_prop_part_agenda", "ppath_step_agenda", "ppath_lraytrace",
3933  "p_grid", "z_field", "refellipsoid",
3934  "t_field", "f_grid", "f_index",
3935  "surface_rtprop_agenda", "doit_za_interp" ),
3936  GIN(),
3937  GIN_TYPE(),
3938  GIN_DEFAULT(),
3939  GIN_DESC()
3940  ));
3941 
3942  md_data_raw.push_back
3943  ( MdRecord
3944  ( NAME( "doit_i_fieldUpdateSeq1D" ),
3945  DESCRIPTION
3946  (
3947  "RT calculation in cloudbox with fixed scattering integral.\n"
3948  "\n"
3949  "Updates radiation field (*doit_i_field*) in DOIT module.\n"
3950  "This method loops through the cloudbox to update the\n"
3951  "radiation field for all positions and directions in the 1D\n"
3952  "cloudbox. The method applies the sequential update. For more\n"
3953  "information refer to AUG.\n"
3954  ),
3955  AUTHORS( "Claudia Emde" ),
3956  OUT( "doit_i_field", "doit_scat_field" ),
3957  GOUT(),
3958  GOUT_TYPE(),
3959  GOUT_DESC(),
3960  IN( "doit_i_field", "doit_scat_field", "cloudbox_limits",
3961  "propmat_clearsky_agenda",
3962  "vmr_field", "spt_calc_agenda", "scat_za_grid", "scat_aa_grid",
3963  "pnd_field", "opt_prop_part_agenda", "ppath_step_agenda",
3964  "ppath_lraytrace", "p_grid", "z_field", "refellipsoid",
3965  "t_field", "f_grid", "f_index",
3966  "surface_rtprop_agenda", "doit_za_interp" ),
3967  GIN( "normalize", "norm_error_threshold", "norm_debug" ),
3968  GIN_TYPE( "Index", "Numeric", "Index" ),
3969  GIN_DEFAULT( "1", "1.0", "0" ),
3970  GIN_DESC( "Apply normalization to scattered field.",
3971  "Error threshold for scattered field correction factor.",
3972  "Debugging flag. Set to 1 to output normalization factor to out0.")
3973  ));
3974 
3975  md_data_raw.push_back
3976  ( MdRecord
3977  ( NAME( "doit_i_fieldUpdateSeq1DPP" ),
3978  DESCRIPTION
3979  (
3980  "RT calculation in cloudbox with fixed scattering integral.\n"
3981  "\n "
3982  "Update radiation field (*doit_i_field*) in DOIT module.\n"
3983  "This method loops through the cloudbox to update the\n"
3984  "radiation field for all\n"
3985  "positions and directions in the 1D cloudbox. The method applies\n"
3986  "the sequential update and the plane parallel approximation.\n"
3987  "This method is only slightly faster than\n"
3988  "*doit_i_fieldUpdateSeq1D* and it is less accurate. It can not\n"
3989  "be used for limb simulations.\n"
3990  ),
3991  AUTHORS( "Sreerekha T.R." ),
3992  OUT( "doit_i_field", "scat_za_index" ),
3993  GOUT(),
3994  GOUT_TYPE(),
3995  GOUT_DESC(),
3996  IN( "doit_i_field",
3997  "doit_scat_field", "cloudbox_limits",
3998  "propmat_clearsky_agenda",
3999  "vmr_field", "spt_calc_agenda", "scat_za_grid", "pnd_field",
4000  "opt_prop_part_agenda",
4001  "p_grid", "z_field", "t_field", "f_grid", "f_index" ),
4002  GIN(),
4003  GIN_TYPE(),
4004  GIN_DEFAULT(),
4005  GIN_DESC()
4006  ));
4007 
4008  md_data_raw.push_back
4009  ( MdRecord
4010  ( NAME( "doit_i_fieldUpdateSeq3D" ),
4011  DESCRIPTION
4012  (
4013  "RT calculation in cloudbox with fixed scattering integral.\n"
4014  "\n"
4015  "Update radiation field (*doit_i_field*) in DOIT module.\n"
4016  "This method loops through the cloudbox to update the\n"
4017  "radiation field for all positions and directions in the 3D\n"
4018  "cloudbox. The method applies the sequential update. For more\n"
4019  "information please refer to AUG.\n"
4020  "Surface reflections are not yet implemented in 3D scattering\n"
4021  "calculations.\n"
4022  ),
4023  AUTHORS( "Claudia Emde" ),
4024  OUT( "doit_i_field" ),
4025  GOUT(),
4026  GOUT_TYPE(),
4027  GOUT_DESC(),
4028  IN( "doit_i_field", "doit_scat_field", "cloudbox_limits",
4029  "propmat_clearsky_agenda",
4030  "vmr_field", "spt_calc_agenda", "scat_za_grid", "scat_aa_grid",
4031  "pnd_field", "opt_prop_part_agenda", "ppath_step_agenda",
4032  "ppath_lraytrace", "p_grid", "lat_grid", "lon_grid", "z_field",
4033  "refellipsoid", "t_field",
4034  "f_grid", "f_index", "doit_za_interp" ),
4035  GIN(),
4036  GIN_TYPE(),
4037  GIN_DEFAULT(),
4038  GIN_DESC()
4039  ));
4040 
4041  md_data_raw.push_back
4042  ( MdRecord
4043  ( NAME( "doit_scat_fieldCalc" ),
4044  DESCRIPTION
4045  (
4046  "Calculates the scattering integral field in the DOIT module.\n"
4047  "\n"
4048  "The scattering integral field is generated by integrating\n"
4049  "the product of phase matrix and Stokes vector over all incident\n"
4050  "angles. For more information please refer to AUG.\n"
4051  ),
4052  AUTHORS( "Sreerekha T.R.", "Claudia Emde" ),
4053  OUT( "doit_scat_field" ),
4054  GOUT(),
4055  GOUT_TYPE(),
4056  GOUT_DESC(),
4057  IN( "doit_scat_field", "pha_mat_spt_agenda",
4058  "doit_i_field", "pnd_field", "t_field", "atmosphere_dim",
4059  "cloudbox_limits", "scat_za_grid", "scat_aa_grid",
4060  "doit_za_grid_size" ),
4061  GIN(),
4062  GIN_TYPE(),
4063  GIN_DEFAULT(),
4064  GIN_DESC()
4065  ));
4066 
4067  md_data_raw.push_back
4068  ( MdRecord
4069  ( NAME( "doit_scat_fieldCalcLimb" ),
4070  DESCRIPTION
4071  (
4072  "Calculates the scattering integral field in the DOIT module (limb).\n"
4073  "\n"
4074  "The scattering integral field is the field generated by integrating\n"
4075  "the product of phase matrix and the Stokes vector over all incident\n"
4076  "angles.\n"
4077  "\n"
4078  "For limb simulations it makes sense to use different\n"
4079  "zenith angle grids for the scattering integral part and the RT part,\n"
4080  "because the latter part requires a much finer resolution near\n"
4081  "90 degrees. Taking an optimized grid for the RT part and an equidistant\n"
4082  "grid for the scattering integral part saves very much CPU time.\n"
4083  "This method uses the equidistant za_grid defined in\n"
4084  "*DoitAngularGridsSet* and it should always be used for limb\n"
4085  "simulations.\n"
4086  "\n"
4087  "For more information please refer to AUG.\n"
4088  ),
4089  AUTHORS( "Claudia Emde" ),
4090  OUT( "doit_scat_field" ),
4091  GOUT(),
4092  GOUT_TYPE(),
4093  GOUT_DESC(),
4094  IN( "doit_scat_field", "pha_mat_spt_agenda",
4095  "doit_i_field", "pnd_field", "t_field", "atmosphere_dim",
4096  "cloudbox_limits", "scat_za_grid", "scat_aa_grid",
4097  "doit_za_grid_size", "doit_za_interp" ),
4098  GIN(),
4099  GIN_TYPE(),
4100  GIN_DEFAULT(),
4101  GIN_DESC()
4102  ));
4103 
4104  md_data_raw.push_back
4105  ( MdRecord
4106  ( NAME( "DoitScatteringDataPrepare" ),
4107  DESCRIPTION
4108  (
4109  "Prepares single scattering data for a DOIT scattering calculation.\n"
4110  "\n"
4111  "First the scattering data is interpolated in frequency using\n"
4112  "*scat_data_array_monoCalc*. Then the phase matrix data is\n"
4113  "transformed or interpolated from the raw data to the laboratory frame\n"
4114  "for all possible combinations of the angles contained in the angular\n"
4115  "grids which are set in *DoitAngularGridsSet*. The resulting phase\n"
4116  "matrices are stored in *pha_mat_sptDOITOpt*.\n"
4117  ),
4118  AUTHORS( "Claudia Emde" ),
4119  OUT( "pha_mat_sptDOITOpt", "scat_data_array_mono" ),
4120  GOUT(),
4121  GOUT_TYPE(),
4122  GOUT_DESC(),
4123  IN( "doit_za_grid_size", "scat_aa_grid", "scat_data_array", "f_grid",
4124  "f_index", "atmosphere_dim", "stokes_dim" ),
4125  GIN(),
4126  GIN_TYPE(),
4127  GIN_DEFAULT(),
4128  GIN_DESC()
4129  ));
4130 
4131  md_data_raw.push_back
4132  ( MdRecord
4133  ( NAME( "DoitWriteIterationFields" ),
4134  DESCRIPTION
4135  (
4136  "Writes DOIT iteration fields.\n"
4137  "\n"
4138  "This method writes intermediate iteration fields to xml-files. The\n"
4139  "method can be used as a part of *doit_conv_test_agenda*.\n"
4140  "\n"
4141  "The iterations to be stored are specified by *iterations*, e.g.:\n"
4142  " iterations = [3, 6, 9]\n"
4143  "In this case the 3rd, 6th and 9th iterations are stored in the\n"
4144  "files 'doit_iteration_3.xml', 'doit_iteration_6.xml' ...\n"
4145  "If a number is larger than the total number of iterations, this\n"
4146  "number is ignored. If all iterations should be stored set\n"
4147  " iterations = [0]\n"
4148  ),
4149  AUTHORS( "Claudia Emde" ),
4150  OUT(),
4151  GOUT(),
4152  GOUT_TYPE(),
4153  GOUT_DESC(),
4154  IN( "doit_iteration_counter", "doit_i_field" ),
4155  GIN( "iterations" ),
4156  GIN_TYPE( "ArrayOfIndex" ),
4157  GIN_DEFAULT( NODEF ),
4158  GIN_DESC( "See above." )
4159  ));
4160 
4161  md_data_raw.push_back
4162  ( MdRecord
4163  ( NAME( "doit_za_grid_optCalc" ),
4164  DESCRIPTION
4165  (
4166  "Zenith angle grid optimization for scattering calculation.\n"
4167  "\n"
4168  "This method optimizes the zenith angle grid. As input it requires\n"
4169  "a radiation field (*doit_i_field*) which is calculated on a very\n"
4170  "fine zenith angle grid (*scat_za_grid*). Based on this field\n"
4171  "zenith angle grid points are selected, such that the maximum\n"
4172  "difference between the radiation field represented on the very\n"
4173  "fine zenith angle grid and the radiation field represented on the\n"
4174  "optimized grid (*doit_za_grid_opt*) is less than the accuracy\n"
4175  "(*acc*). Between the grid points the radiation field is interpolated\n"
4176  "linearly or polynomially depending on *doit_za_interp*.\n"
4177  "\n"
4178  "Note: The method works only for a 1D atmosphere and for one\n"
4179  "frequency.\n"
4180  ),
4181  AUTHORS( "Claudia Emde" ),
4182  OUT( "doit_za_grid_opt" ),
4183  GOUT(),
4184  GOUT_TYPE(),
4185  GOUT_DESC(),
4186  IN( "doit_i_field", "scat_za_grid", "doit_za_interp" ),
4187  GIN( "acc" ),
4188  GIN_TYPE( "Numeric" ),
4189  GIN_DEFAULT( NODEF ),
4190  GIN_DESC( "Accuracy to achieve [%]." )
4191  ));
4192 
4193  md_data_raw.push_back
4194  ( MdRecord
4195  ( NAME( "doit_za_interpSet" ),
4196  DESCRIPTION
4197  (
4198  "Define interpolation method for zenith angle dimension.\n"
4199  "\n"
4200  "You can use this method to choose the interpolation method for\n"
4201  "interpolations in the zenith angle dimension.\n"
4202  ),
4203  AUTHORS( "Claudia Emde" ),
4204  OUT( "doit_za_interp" ),
4205  GOUT(),
4206  GOUT_TYPE(),
4207  GOUT_DESC(),
4208  IN( "atmosphere_dim" ),
4209  GIN( "interp_method" ),
4210  GIN_TYPE( "String" ),
4211  GIN_DEFAULT( "linear" ),
4212  GIN_DESC( "Interpolation method (\"linear\" or \"polynomial\")." )
4213  ));
4214 
4215  md_data_raw.push_back
4216  ( MdRecord
4217  ( NAME( "Error" ),
4218  DESCRIPTION
4219  (
4220  "Issues an error and exits ARTS.\n"
4221  "\n"
4222  "This method can be placed in agendas that must be specified, but\n"
4223  "are expected not to be used for the particular case. An inclusion\n"
4224  "in *surface_rtprop_agenda* could look like:\n "
4225  "Error{\"Surface interceptions of propagation path not expected.\"}\n"
4226  "\n"
4227  "Ignore and other dummy method calls must still be included.\n"
4228  ),
4229  AUTHORS( "Patrick Eriksson" ),
4230  OUT(),
4231  GOUT(),
4232  GOUT_TYPE(),
4233  GOUT_DESC(),
4234  IN(),
4235  GIN( "msg" ),
4236  GIN_TYPE( "String" ),
4237  GIN_DEFAULT( NODEF ),
4238  GIN_DESC( "String describing the error." )
4239  ));
4240 
4241  md_data_raw.push_back
4242  ( MdRecord
4243  ( NAME( "Exit" ),
4244  DESCRIPTION
4245  (
4246  "Stops the execution and exits ARTS.\n"
4247  "\n"
4248  "This method is handy if you want to debug one of your control\n"
4249  "files. You can insert it anywhere in the control file. When\n"
4250  "it is reached, it will terminate the program.\n"
4251  ),
4252  AUTHORS( "Patrick Eriksson" ),
4253  OUT(),
4254  GOUT(),
4255  GOUT_TYPE(),
4256  GOUT_DESC(),
4257  IN(),
4258  GIN(),
4259  GIN_TYPE(),
4260  GIN_DEFAULT(),
4261  GIN_DESC()
4262  ));
4263 
4264  md_data_raw.push_back
4265  ( MdRecord
4266  ( NAME( "Extract" ),
4267  DESCRIPTION
4268  (
4269  "Extracts an element from an array.\n"
4270  "\n"
4271  "Copies the element with the given Index from the input\n"
4272  "variable to the output variable.\n"
4273  "\n"
4274  "For a Tensor3 as an input, it copies the page with the given\n"
4275  "Index from the input Tensor3 variable to the output Matrix.\n"
4276  "\n"
4277  "In other words, the selection is always done on the first dimension.\n"
4278  ),
4279  AUTHORS( "Oliver Lemke" ),
4280  OUT(),
4281  GOUT( "needle" ),
4282  GOUT_TYPE( "Index, ArrayOfIndex, Numeric, Vector,"
4283  "Matrix, Matrix,"
4284  "Tensor3, Tensor4, Tensor4,"
4285  "GriddedField3, ArrayOfGriddedField3,"
4286  "GriddedField4, String, SingleScatteringData" ),
4287  GOUT_DESC( "Extracted element." ),
4288  IN(),
4289  GIN( "haystack", "index" ),
4290  GIN_TYPE( "ArrayOfIndex, ArrayOfArrayOfIndex, Vector, ArrayOfVector,"
4291  "ArrayOfMatrix, Tensor3,"
4292  "Tensor4, ArrayOfTensor4, Tensor5,"
4293  "ArrayOfGriddedField3, ArrayOfArrayOfGriddedField3,"
4294  "ArrayOfGriddedField4, ArrayOfString, ArrayOfSingleScatteringData",
4295  "Index" ),
4296  GIN_DEFAULT( NODEF, NODEF ),
4297  GIN_DESC( "Variable to extract from.",
4298  "Position of the element which should be extracted." ),
4299  SETMETHOD( false ),
4300  AGENDAMETHOD( false ),
4301  USES_TEMPLATES( true )
4302  ));
4303 
4304  md_data_raw.push_back
4305  ( MdRecord
4306  ( NAME( "ExtractFromMetaSinglePartSpecies" ),
4307  DESCRIPTION
4308  (
4309  "Extract (numeric) parameters from scat_meta_array of a single scattering\n"
4310  "species.\n"
4311  "\n"
4312  "...\n"
4313  ),
4314  AUTHORS( "Jana Mendrok" ),
4315  OUT(),
4316  GOUT( "meta_param" ),
4317  GOUT_TYPE( "Vector" ),
4318  GOUT_DESC( "The extracted meta parameter values." ),
4319  IN( "scat_meta_array", "scat_data_per_part_species" ),
4320  GIN( "meta_name", "part_species_index" ),
4321  GIN_TYPE( "String", "Index" ),
4322  GIN_DEFAULT( NODEF, NODEF ),
4323  GIN_DESC( "Name of the meta parameter to extract.",
4324  "Array index of scattering species from which to extract." )
4325  ));
4326 
4327  md_data_raw.push_back
4328  ( MdRecord
4329  ( NAME( "ext_matAddGas" ),
4330  DESCRIPTION
4331  (
4332  "Add gas absorption to all diagonal elements of extinction matrix.\n"
4333  "\n"
4334  "The task of this method is to sum up the gas absorption of the\n"
4335  "different gas species and add the result to the extinction matrix.\n"
4336  ),
4337  AUTHORS( "Stefan Buehler" ),
4338  OUT( "ext_mat" ),
4339  GOUT(),
4340  GOUT_TYPE(),
4341  GOUT_DESC(),
4342  IN( "ext_mat", "propmat_clearsky" ),
4343  GIN(),
4344  GIN_TYPE(),
4345  GIN_DEFAULT(),
4346  GIN_DESC()
4347  ));
4348 
4349  md_data_raw.push_back
4350  ( MdRecord
4351  ( NAME( "ext_matAddPart" ),
4352  DESCRIPTION
4353  (
4354  "The particle extinction is added to *ext_mat*\n"
4355  "\n"
4356  "This function sums up the extinction matrices for all particle\n"
4357  "types weighted with particle number density.\n"
4358  "The resulting extinction matrix is added to the workspace\n"
4359  "variable *ext_mat*\n"
4360  "The output of this method is *ext_mat* (stokes_dim, stokes_dim).\n"
4361  "The inputs are the extinction matrix for the single particle type\n"
4362  "*ext_mat_spt* (N_particletypes, stokes_dim, stokes_dim) and the local\n"
4363  "particle number densities for all particle types namely the\n"
4364  "*pnd_field* (N_particletypes, p_grid, lat_grid, lon_grid ) for given\n"
4365  "*p_grid*, *lat_grid*, and *lon_grid*. The particle types required\n"
4366  "are specified in the control file.\n"
4367  ),
4368  AUTHORS( "Sreerekha T.R." ),
4369  OUT( "ext_mat" ),
4370  GOUT(),
4371  GOUT_TYPE(),
4372  GOUT_DESC(),
4373  IN( "ext_mat", "ext_mat_spt", "pnd_field", "atmosphere_dim",
4374  "scat_p_index", "scat_lat_index", "scat_lon_index" ),
4375  GIN(),
4376  GIN_TYPE(),
4377  GIN_DEFAULT(),
4378  GIN_DESC()
4379  ));
4380 
4381  md_data_raw.push_back
4382  ( MdRecord
4383  ( NAME( "ext_matInit" ),
4384  DESCRIPTION
4385  (
4386  "Initialize extinction matrix.\n"
4387  "\n"
4388  "This method is necessary, because all other extinction methods just\n"
4389  "add to the existing extinction matrix.\n"
4390  "\n"
4391  "So, here we have to make it the right size and fill it with 0.\n"
4392  "\n"
4393  "Note, that the matrix is not really a matrix, because it has a\n"
4394  "leading frequency dimension.\n"
4395  ),
4396  AUTHORS( "Stefan Buehler" ),
4397  OUT( "ext_mat" ),
4398  GOUT(),
4399  GOUT_TYPE(),
4400  GOUT_DESC(),
4401  IN( "f_grid", "stokes_dim", "f_index" ),
4402  GIN(),
4403  GIN_TYPE(),
4404  GIN_DEFAULT(),
4405  GIN_DESC()
4406  ));
4407 
4408  md_data_raw.push_back
4409  ( MdRecord
4410  ( NAME( "FieldFromGriddedField" ),
4411  DESCRIPTION
4412  (
4413  "Extract the data from a GriddedField.\n"
4414  "\n"
4415  "A check is performed that the grids from the\n"
4416  "GriddedField match *p_grid*, *lat_grid* and *lon_grid*.\n"
4417  ),
4418  AUTHORS( "Oliver Lemke" ),
4419  OUT(),
4420  GOUT( "out" ),
4421  GOUT_TYPE( "Matrix, Tensor3, Tensor4, Tensor4" ),
4422  GOUT_DESC( "Extracted field." ),
4423  IN( "p_grid", "lat_grid", "lon_grid" ),
4424  GIN( "in" ),
4425  GIN_TYPE( "GriddedField2, GriddedField3, GriddedField4, ArrayOfGriddedField3" ),
4426  GIN_DEFAULT( NODEF ),
4427  GIN_DESC( "Raw input gridded field." )
4428  ));
4429 
4430  md_data_raw.push_back
4431  ( MdRecord
4432  ( NAME( "FlagOff" ),
4433  DESCRIPTION
4434  (
4435  "Sets an index variable that acts as an on/off flag to 0.\n"
4436  ),
4437  AUTHORS( "Patrick Eriksson" ),
4438  OUT(),
4439  GOUT( "flag" ),
4440  GOUT_TYPE( "Index" ),
4441  GOUT_DESC( "Variable to set to 0." ),
4442  IN(),
4443  GIN(),
4444  GIN_TYPE(),
4445  GIN_DEFAULT(),
4446  GIN_DESC()
4447  ));
4448 
4449  md_data_raw.push_back
4450  ( MdRecord
4451  ( NAME( "FlagOn" ),
4452  DESCRIPTION
4453  (
4454  "Sets an index variable that acts as an on/off flag to 1.\n"
4455  ),
4456  AUTHORS( "Patrick Eriksson" ),
4457  OUT(),
4458  GOUT( "flag" ),
4459  GOUT_TYPE( "Index" ),
4460  GOUT_DESC( "Variable to set to 1." ),
4461  IN(),
4462  GIN(),
4463  GIN_TYPE(),
4464  GIN_DEFAULT(),
4465  GIN_DESC()
4466  ));
4467 
4468  md_data_raw.push_back
4469  ( MdRecord
4470  ( NAME( "ForLoop" ),
4471  DESCRIPTION
4472  (
4473  "A simple for-loop.\n"
4474  "\n"
4475  "This method is handy when you quickly want to test out a calculation\n"
4476  "with a set of different settings.\n"
4477  "\n"
4478  "It does a for-loop from start to stop in steps of step (who would\n"
4479  "have guessed that). For each iteration, the agenda *forloop_agenda* is\n"
4480  "executed. Inside the agenda, the variable *forloop_index* is available\n"
4481  "as index counter.\n"
4482  "\n"
4483  "There are no other inputs to *forloop_agenda*, and also no outputs. That\n"
4484  "means, if you want to get any results out of this loop, you have to\n"
4485  "save it to files (for example with *WriteXMLIndexed*), since\n"
4486  "variables used inside the agenda will only be local.\n"
4487  "\n"
4488  "Note that this kind of for loop is not parallel.\n"
4489  "\n"
4490  "The method is intended for simple testing, not as a replacement of\n"
4491  "*ybatchCalc*. However, it is compatible with *ybatchCalc*, in the sense\n"
4492  "that *ybatchCalc* may occur inside *forloop_agenda*.\n"
4493  ),
4494  AUTHORS( "Stefan Buehler" ),
4495  OUT(),
4496  GOUT(),
4497  GOUT_TYPE(),
4498  GOUT_DESC(),
4499  IN( "forloop_agenda" ),
4500  GIN( "start", "stop", "step" ),
4501  GIN_TYPE( "Index", "Index", "Index" ),
4503  GIN_DESC( "Start value.",
4504  "End value.",
4505  "Step size." )
4506  ));
4507 
4508  md_data_raw.push_back
4509  ( MdRecord
4510  ( NAME( "FrequencyFromWavelength" ),
4511  DESCRIPTION
4512  (
4513  "Convert from wavelength [m] to frequency [Hz].\n"
4514  "\n"
4515  "This is a generic method. It can take a single wavelength value or a wavelength vector as input.\n"
4516  ),
4517  AUTHORS( "Claudia Emde" ),
4518  OUT(),
4519  GOUT("frequency"),
4520  GOUT_TYPE("Numeric, Vector"),
4521  GOUT_DESC("frequency [Hz]"),
4522  IN(),
4523  GIN( "wavelength"),
4524  GIN_TYPE("Numeric, Vector" ),
4525  GIN_DEFAULT( NODEF ),
4526  GIN_DESC("wavelength [m]" )
4527  ));
4528 
4529  md_data_raw.push_back
4530  ( MdRecord
4531  ( NAME( "f_gridFromGasAbsLookup" ),
4532  DESCRIPTION
4533  (
4534  "Sets *f_grid* to the frequency grid of *abs_lookup*.\n"
4535  "\n"
4536  "Must be called between importing/creating raw absorption table and\n"
4537  "call of *abs_lookupAdapt*.\n"
4538  ),
4539  AUTHORS( "Stefan Buehler" ),
4540  OUT( "f_grid" ),
4541  GOUT(),
4542  GOUT_TYPE(),
4543  GOUT_DESC(),
4544  IN( "abs_lookup" ),
4545  GIN(),
4546  GIN_TYPE(),
4547  GIN_DEFAULT(),
4548  GIN_DESC()
4549  ));
4550 
4551  md_data_raw.push_back
4552  ( MdRecord
4553  ( NAME( "f_gridFromSensorAMSU" ),
4554  DESCRIPTION
4555  (
4556  "Automatically calculate f_grid to match the sensor.\n"
4557  "\n"
4558  "This method is handy if you are simulating an AMSU-type instrument,\n"
4559  "consisting of a few discrete channels. The case that channels touch,\n"
4560  "as for MHS, is handled correctly. But the case that channels overlap\n"
4561  "is not (yet) handled and results in an error message.\n"
4562  "\n"
4563  "The method calculates *f_grid* to match the instrument, as given by\n"
4564  "the local oscillator frequencies *lo_multi*, the backend\n"
4565  "frequencies *f_backend_multi*, and the backend channel\n"
4566  "responses *backend_channel_response_multi*.\n"
4567  "\n"
4568  "You have to specify the desired spacing in the keyword *spacing*,\n"
4569  "which has a default value of 100 MHz. (The actual value is 0.1e9,\n"
4570  "since our unit is Hz.)\n"
4571  "\n"
4572  "The produced grid will not have exactly the requested spacing, but\n"
4573  "will not be coarser than requested. The algorithm starts with the band\n"
4574  "edges, then adds additional points until the spacing is at least as\n"
4575  "fine as requested.\n"
4576  "\n"
4577  "There is a similar method for HIRS-type instruments,\n"
4578  "see *f_gridFromSensorHIRS*.\n"
4579  ),
4580  AUTHORS( "Stefan Buehler, Mathias Milz" ),
4581  OUT( "f_grid" ),
4582  GOUT(),
4583  GOUT_TYPE(),
4584  GOUT_DESC(),
4585  IN( "lo_multi", "f_backend_multi", "backend_channel_response_multi" ),
4586  GIN( "spacing" ),
4587  GIN_TYPE( "Numeric" ),
4588  GIN_DEFAULT( ".1e9" ),
4589  GIN_DESC( "Desired grid spacing in Hz." )
4590  ));
4591 
4592 
4593  md_data_raw.push_back
4594  ( MdRecord
4595  ( NAME( "f_gridFromSensorAMSUgeneric" ),
4596  DESCRIPTION
4597  (
4598  "Automatcially calculate f_grid to match the sensor. \n"
4599  "This function is based on 'f_gridFromSensorAMSU' \n"
4600  "\n"
4601  "The method calculates *f_grid* to match the instrument, as given by\n"
4602  "the backend frequencies *f_backend*, and the backend channel\n"
4603  "responses *backend_channel_response*.\n"
4604  "\n"
4605  "You have to specify the desired spacing in the keyword *spacing*,\n"
4606  "which has a default value of 100 MHz. (The actual value is 0.1e9,\n"
4607  "since our unit is Hz.)"
4608  "\n"
4609  "The produced grid will not have exactly the requested spacing, but\n"
4610  "it will not be coarser than requested. The algorithm starts with the band\n"
4611  "edges, then adds additional points until the spacing is at least as\n"
4612  "fine as requested.\n"
4613  ),
4614  AUTHORS( "Oscar Isoz" ),
4615  OUT( "f_grid" ),
4616  GOUT(),
4617  GOUT_TYPE(),
4618  GOUT_DESC(),
4619  IN( "f_backend_multi","backend_channel_response_multi" ),
4620  GIN( "spacing","verbosityVect"),
4621  GIN_TYPE( "Numeric","Vector"),
4622  GIN_DEFAULT( ".1e9","[]"),
4623  GIN_DESC( "Desired grid spacing in Hz.","Bandwidth adjusted spacing")
4624  ));
4625 
4626  md_data_raw.push_back
4627  ( MdRecord
4628  ( NAME( "f_gridFromSensorHIRS" ),
4629  DESCRIPTION
4630  (
4631  "Automatically calculate f_grid to match the sensor.\n"
4632  "\n"
4633  "This method is handy if you are simulating a HIRS-type instrument,\n"
4634  "consisting of a few discrete channels.\n"
4635  "\n"
4636  "It calculates f_grid to match the instrument, as given by the nominal\n"
4637  "band frequencies *f_backend* and the spectral channel response\n"
4638  "functions given by *backend_channel_response*.\n"
4639  "\n"
4640  "You have to specify the desired spacing in the keyword *spacing*, which\n"
4641  "has a default value of 5e8 Hz.\n"
4642  "\n"
4643  "The produced grid will not have exactly the requested spacing, but\n"
4644  "will not be coarser than requested. The algorithm starts with the band\n"
4645  "edges, then adds additional points until the spacing is at least as\n"
4646  "fine as requested.\n"
4647  "\n"
4648  "There is a similar method for AMSU-type instruments, see\n"
4649  "*f_gridFromSensorAMSU*.\n"
4650  ),
4651  AUTHORS( "Stefan Buehler" ),
4652  OUT( "f_grid" ),
4653  GOUT(),
4654  GOUT_TYPE( ),
4655  GOUT_DESC(),
4656  IN( "f_backend", "backend_channel_response" ),
4657  GIN( "spacing" ),
4658  GIN_TYPE( "Numeric" ),
4659  GIN_DEFAULT( "5e8" ),
4660  GIN_DESC( "Desired grid spacing in Hz." )
4661  ));
4662 
4663  md_data_raw.push_back
4664  ( MdRecord
4665  ( NAME( "g0Earth" ),
4666  DESCRIPTION
4667  (
4668  "Gravity at zero altitude on Earth.\n"
4669  "\n"
4670  "Sets *g0* for the given latitude using a standard parameterisation.\n"
4671  ),
4672  AUTHORS( "Patrick Eriksson" ),
4673  OUT( "g0" ),
4674  GOUT(),
4675  GOUT_TYPE(),
4676  GOUT_DESC(),
4677  IN( "lat" ),
4678  GIN(),
4679  GIN_TYPE(),
4680  GIN_DEFAULT(),
4681  GIN_DESC()
4682  ));
4683 
4684  md_data_raw.push_back
4685  ( MdRecord
4686  ( NAME( "g0Jupiter" ),
4687  DESCRIPTION
4688  (
4689  "Gravity at zero altitude on Jupiter.\n"
4690  "\n"
4691  "Sets *g0* to mean equatorial gravity on Jupiter. Value provided by\n"
4692  "MPS under ESA-planetary study (TN1).\n"
4693  ),
4694  AUTHORS( "Jana Mendrok" ),
4695  OUT( "g0" ),
4696  GOUT(),
4697  GOUT_TYPE(),
4698  GOUT_DESC(),
4699  IN(),
4700  GIN(),
4701  GIN_TYPE(),
4702  GIN_DEFAULT(),
4703  GIN_DESC()
4704  ));
4705 
4706  md_data_raw.push_back
4707  ( MdRecord
4708  ( NAME( "g0Mars" ),
4709  DESCRIPTION
4710  (
4711  "Gravity at zero altitude on Mars.\n"
4712  "\n"
4713  "Sets *g0* to mean equatorial gravity on Mars. Value provided by\n"
4714  "MPS under ESA-planetary study (TN1).\n"
4715  ),
4716  AUTHORS( "Jana Mendrok" ),
4717  OUT( "g0" ),
4718  GOUT(),
4719  GOUT_TYPE(),
4720  GOUT_DESC(),
4721  IN(),
4722  GIN(),
4723  GIN_TYPE(),
4724  GIN_DEFAULT(),
4725  GIN_DESC()
4726  ));
4727 
4728  md_data_raw.push_back
4729  ( MdRecord
4730  ( NAME( "g0Venus" ),
4731  DESCRIPTION
4732  (
4733  "Gravity at zero altitude on Venus.\n"
4734  "\n"
4735  "Sets *g0* to mean equatorial gravity on Venus. Value from Ahrens\n"
4736  "(1995), provided by MPS under ESA-planetary study (TN1).\n"
4737  ),
4738  AUTHORS( "Jana Mendrok" ),
4739  OUT( "g0" ),
4740  GOUT(),
4741  GOUT_TYPE(),
4742  GOUT_DESC(),
4743  IN(),
4744  GIN(),
4745  GIN_TYPE(),
4746  GIN_DEFAULT(),
4747  GIN_DESC()
4748  ));
4749 
4750  md_data_raw.push_back
4751  ( MdRecord
4752  ( NAME( "GriddedFieldLatLonExpand" ),
4753  DESCRIPTION
4754  (
4755  "Expands the latitude and longitude grid of the GriddedField to\n"
4756  "[-90, 90] and [0,360], respectively. Expansion is only done in\n"
4757  "the dimension(s), where the grid size is 1.\n"
4758  "The values from the input data will be duplicated to accomodate\n"
4759  "for the larger size of the output field.\n"
4760  "gfield_raw_out and gfield_raw_in can be the same variable.\n"
4761  ),
4762  AUTHORS( "Oliver Lemke" ),
4763  OUT(),
4764  GOUT( "out" ),
4765  GOUT_TYPE( "GriddedField2, GriddedField3, GriddedField4, ArrayOfGriddedField3" ),
4766  GOUT_DESC( "Expanded gridded field." ),
4767  IN(),
4768  GIN( "in" ),
4769  GIN_TYPE( "GriddedField2, GriddedField3, GriddedField4, ArrayOfGriddedField3" ),
4770  GIN_DEFAULT( NODEF ),
4771  GIN_DESC( "Raw input gridded field." )
4772  ));
4773 
4774  md_data_raw.push_back
4775  ( MdRecord
4776  ( NAME( "GriddedFieldLatLonRegrid" ),
4777  DESCRIPTION
4778  (
4779  "Interpolates the input field along the latitude and longitude dimensions\n"
4780  "to *lat_true* and *lon_true*.\n"
4781  "\n"
4782  "If the input longitude grid is outside of *lon_true* it will be shifted\n"
4783  "left or right by 360. If it covers 360 degrees, a cyclic interpolation\n"
4784  "will be performed.\n"
4785  "in and out fields can be the same variable.\n"
4786  ),
4787  AUTHORS( "Oliver Lemke" ),
4788  OUT(),
4789  GOUT( "out" ),
4790  GOUT_TYPE( "GriddedField2, GriddedField3, GriddedField4, ArrayOfGriddedField3" ),
4791  GOUT_DESC( "Regridded gridded field." ),
4792  IN( "lat_true", "lon_true" ),
4793  GIN( "in", "interp_order" ),
4794  GIN_TYPE( "GriddedField2, GriddedField3, GriddedField4, ArrayOfGriddedField3",
4795  "Index" ),
4796  GIN_DEFAULT( NODEF, "1" ),
4797  GIN_DESC( "Raw input gridded field.",
4798  "Interpolation order." )
4799  ));
4800 
4801  md_data_raw.push_back
4802  ( MdRecord
4803  ( NAME( "GriddedFieldPRegrid" ),
4804  DESCRIPTION
4805  (
4806  "Interpolates the input field along the pressure dimension to *p_grid*.\n"
4807  "\n"
4808  "If zero-padding is applied (zeropadding=1), pressures that are\n"
4809  "outside the *p_grid* are set to 0. This is thought, e.g., for VMR\n"
4810  "fields that outside the given pressure can safely be assumed to be\n"
4811  "zero.\n"
4812  "Note: Using zeropadding for altitude and temperature fields is\n"
4813  "strongly discouraged (it will work here, though, but likely trigger\n"
4814  "errors later on).\n"
4815  "Extrapolation is allowed within the common 0.5grid-step margin,\n"
4816  "but is overruled by zeropadding.\n"
4817  "in and out fields can be the same variable.\n"
4818  ),
4819  AUTHORS( "Oliver Lemke" ),
4820  OUT(),
4821  GOUT( "out" ),
4822  GOUT_TYPE( "GriddedField3, GriddedField4, ArrayOfGriddedField3" ),
4823  GOUT_DESC( "Regridded gridded field." ),
4824  IN( "p_grid" ),
4825  GIN( "in", "interp_order", "zeropadding" ),
4826  GIN_TYPE( "GriddedField3, GriddedField4, ArrayOfGriddedField3",
4827  "Index",
4828  "Index" ),
4829  GIN_DEFAULT( NODEF, "1", "0" ),
4830  GIN_DESC( "Raw input gridded field.",
4831  "Interpolation order.",
4832  "Apply zero-padding." )
4833  ));
4834 
4835  md_data_raw.push_back
4836  ( MdRecord
4837  ( NAME( "GriddedFieldZToPRegrid" ),
4838  DESCRIPTION
4839  (
4840  "Interpolates the input field along the vertical dimension to *p_grid*.\n"
4841  "\n"
4842  "This is done from z_field, and thus requires the atmosphere to be set \n"
4843  "beforehand.\n"
4844  "\n"
4845  "The latitude and longitude grid of the input field must match *lat_grid*\n"
4846  "and *lon_grid* for the method to work.\n"
4847  "\n"
4848  "BETA mode.\n"
4849  ),
4850  AUTHORS( "Richard Larsson" ),
4851  OUT( ),
4852  GOUT( "out" ),
4853  GOUT_TYPE( "GriddedField3" ),
4854  GOUT_DESC( "Regridded output; Pressure-gridded field." ),
4855  IN( "p_grid", "lat_grid", "lon_grid", "z_field" ),
4856  GIN( "in", "interp_order", "zeropadding"),
4857  GIN_TYPE( "GriddedField3", "Index", "Index"),
4858  GIN_DEFAULT( NODEF, "1", "0" ),
4859  GIN_DESC( "Raw input; Altitude-gridded field.",
4860  "Interpolation order.",
4861  "Apply zero-padding." )
4862  ));
4863 
4864  md_data_raw.push_back
4865  ( MdRecord
4866  ( NAME( "Ignore" ),
4867  DESCRIPTION
4868  (
4869  "Ignore a workspace variable.\n"
4870  "\n"
4871  "This method is handy for use in agendas in order to suppress warnings\n"
4872  "about unused input workspace variables. What it does is: Nothing!\n"
4873  "In other words, it just ignores the variable it is called on.\n"
4874  "\n"
4875  "This method can ignore any workspace variable\n"
4876  "you want.\n"
4877  "\n"
4878  "Usage example:\n"
4879  "\n"
4880  "AgendaSet(els_agenda){\n"
4881  " Ignore(ls_sigma)\n"
4882  " elsLorentz\n"
4883  "}\n"
4884  "\n"
4885  "Without Ignore you would get an error message, because 'els_agenda' is\n"
4886  "supposed to use the Doppler width 'ls_sigma', but the Lorentz lineshape\n"
4887  "'elsLorentz' does not need it.\n"
4888  ),
4889  AUTHORS( "Stefan Buehler" ),
4890  OUT(),
4891  GOUT(),
4892  GOUT_TYPE(),
4893  GOUT_DESC(),
4894  IN(),
4895  GIN( "in" ),
4896  GIN_TYPE( "Any" ),
4897  GIN_DEFAULT( NODEF ),
4898  GIN_DESC( "Variable to be ignored." ),
4899  SETMETHOD( false ),
4900  AGENDAMETHOD( false ),
4901  USES_TEMPLATES( true )
4902  ));
4903 
4904  md_data_raw.push_back
4905  ( MdRecord
4906  ( NAME( "INCLUDE" ),
4907  DESCRIPTION
4908  (
4909  "Includes the contents of another controlfile.\n"
4910  "\n"
4911  "The INCLUDE statement inserts the contents of the controlfile\n"
4912  "with the given name into the current controlfile.\n"
4913  "If the filename is given without path information, ARTS will\n"
4914  "first search for the file in all directories specified with the\n"
4915  "-I (see arts -h) commandline option and then in directories given\n"
4916  "in the environment variable ARTS_INCLUDE_PATH. In the environment\n"
4917  "variable multiple paths have to be separated by colons.\n"
4918  "\n"
4919  "Note that INCLUDE is not a workspace method and thus the\n"
4920  "syntax is different:\n"
4921  "\n"
4922  "Arts {\n"
4923  " INCLUDE \"general.arts\"\n"
4924  "}\n"
4925  "\n"
4926  "Includes can also be nested. In the example above general.arts\n"
4927  "can contain further includes which will then be treated\n"
4928  "the same way.\n"
4929  "\n"
4930  "The idea behind this mechanism is that you can write common settings\n"
4931  "for a bunch of calculations into one file. Then, you can create\n"
4932  "several controlfiles which include the basic settings and tweak them\n"
4933  "for different cases. When you decide to make changes to your setup\n"
4934  "that should apply to all calculations, you only have to make a\n"
4935  "single change in the include file instead of modifying all your\n"
4936  "controlfiles.\n"
4937  ),
4938  AUTHORS( "Oliver Lemke" ),
4939  OUT(),
4940  GOUT(),
4941  GOUT_TYPE(),
4942  GOUT_DESC(),
4943  IN(),
4944  GIN(),
4945  GIN_TYPE(),
4946  GIN_DEFAULT(),
4947  GIN_DESC()
4948  ));
4949 
4950  md_data_raw.push_back
4951  ( MdRecord
4952  ( NAME( "IndexSet" ),
4953  DESCRIPTION
4954  (
4955  "Sets an index workspace variable to the given value.\n"
4956  ),
4957  AUTHORS( "Patrick Eriksson" ),
4958  OUT(),
4959  GOUT( "out" ),
4960  GOUT_TYPE( "Index" ),
4961  GOUT_DESC( "Variable to initialize." ),
4962  IN(),
4963  GIN( "value" ),
4964  GIN_TYPE( "Index" ),
4965  GIN_DEFAULT( NODEF ),
4966  GIN_DESC( "Value." ),
4967  SETMETHOD( true )
4968  ));
4969 
4970  md_data_raw.push_back
4971  ( MdRecord
4972  ( NAME( "IndexStepDown" ),
4973  DESCRIPTION
4974  (
4975  "Performas: out = in - 1\n"
4976  "\n"
4977  "Input and output can be same variable.\n"
4978  ),
4979  AUTHORS( "Patrick Eriksson" ),
4980  OUT(),
4981  GOUT( "out" ),
4982  GOUT_TYPE( "Index" ),
4983  GOUT_DESC( "Output index variable." ),
4984  IN(),
4985  GIN( "in" ),
4986  GIN_TYPE( "Index" ),
4987  GIN_DEFAULT( NODEF ),
4988  GIN_DESC( "Input index variable." )
4989  ));
4990 
4991  md_data_raw.push_back
4992  ( MdRecord
4993  ( NAME( "IndexStepUp" ),
4994  DESCRIPTION
4995  (
4996  "Performas: out = in + 1\n"
4997  "\n"
4998  "Input and output can be same variable.\n"
4999  ),
5000  AUTHORS( "Patrick Eriksson" ),
5001  OUT(),
5002  GOUT( "out" ),
5003  GOUT_TYPE( "Index" ),
5004  GOUT_DESC( "Output index variable." ),
5005  IN(),
5006  GIN( "in" ),
5007  GIN_TYPE( "Index" ),
5008  GIN_DEFAULT( NODEF ),
5009  GIN_DESC( "Input index variable." )
5010  ));
5011 
5012  md_data_raw.push_back
5013  ( MdRecord
5014  ( NAME( "InterpAtmFieldToPosition" ),
5015  DESCRIPTION
5016  (
5017  "Point interpolation of atmospheric fields.\n"
5018  "\n"
5019  "The default way to specify the position is by *rtp_pos*.\n"
5020  "\n"
5021  "Linear interpolation is applied.\n"
5022  ),
5023  AUTHORS( "Patrick Eriksson" ),
5024  OUT(),
5025  GOUT( "out" ),
5026  GOUT_TYPE( "Numeric" ),
5027  GOUT_DESC( "Value obtained by the interpolation." ),
5028  IN( "atmosphere_dim", "p_grid", "lat_grid", "lon_grid", "z_field",
5029  "rtp_pos" ),
5030  GIN( "field"),
5031  GIN_TYPE( "Tensor3" ),
5032  GIN_DEFAULT( NODEF ),
5033  GIN_DESC( "Field to interpolate." )
5034  ));
5035 
5036  md_data_raw.push_back
5037  ( MdRecord
5038  ( NAME( "InterpSurfaceFieldToPosition" ),
5039  DESCRIPTION
5040  (
5041  "Point interpolation of surface fields.\n"
5042  "\n"
5043  "The default way to specify the position is by *rtp_pos*.\n"
5044  "\n"
5045  "Linear interpolation is applied.\n"
5046  "\n"
5047  "The interpolation is done for the latitude and longitude in\n"
5048  "*rtp_pos*, while the altitude in *rtp_pos* is not part of the\n"
5049  "calculations. However, it is checked that the altitude of *rtp_pos*\n"
5050  "is inside the range covered by *z_surface* with a 1 m margin, to\n"
5051  "give a warning when the specified position is not consistent with\n"
5052  "the surface altitudes.\n"
5053  ),
5054  AUTHORS( "Patrick Eriksson" ),
5055  OUT(),
5056  GOUT( "out" ),
5057  GOUT_TYPE( "Numeric" ),
5058  GOUT_DESC( "Value obtained by interpolation." ),
5059  IN( "atmosphere_dim", "lat_grid", "lon_grid", "rtp_pos", "z_surface" ),
5060  GIN( "field" ),
5061  GIN_TYPE( "Matrix" ),
5062  GIN_DEFAULT( NODEF ),
5063  GIN_DESC( "Field to interpolate." )
5064  ));
5065 
5066  md_data_raw.push_back
5067  ( MdRecord
5068  ( NAME( "isotopologue_ratiosInitFromBuiltin" ),
5069  DESCRIPTION
5070  (
5071  "Initialize isotopologue ratios with default values from built-in\n"
5072  "species data.\n"
5073  ),
5074  AUTHORS( "Oliver Lemke" ),
5075  OUT( "isotopologue_ratios" ),
5076  GOUT(),
5077  GOUT_TYPE(),
5078  GOUT_DESC(),
5079  IN(),
5080  GIN(),
5081  GIN_TYPE(),
5082  GIN_DEFAULT(),
5083  GIN_DESC()
5084  ));
5085 
5086  md_data_raw.push_back
5087  ( MdRecord
5088  ( NAME( "iyApplyUnit" ),
5089  DESCRIPTION
5090  (
5091  "Conversion of *iy* to other spectral units.\n"
5092  "\n"
5093  "The method allows a change of unit, as a post-processing step,\n"
5094  "ignoring the n2-law of radiance.\n"
5095  "\n"
5096  "The conversion made inside *iyEmissionStandard* is mimiced,\n"
5097  "see that method for constraints and selection of output units.\n"
5098  "Restricted to that the n2-law can be ignored. This assumption\n"
5099  "is valid if the sensor is placed in space, or if the refractive\n"
5100  "index only deviates slightly from unity.\n"
5101  "\n"
5102  "It is stressed that there is no automatic check that the method is\n"
5103  "applied correctly, it is up to the user to ensure that the input\n"
5104  "data are suitable for the conversion.\n"
5105  "\n"
5106  "Beside *iy*, these auxilary quantities are modified:\n"
5107  " \"iy\", \"Error\" and \"Error (uncorrelated)\"\n"
5108  "\n"
5109  "Please note that *diy_dx* is not handled.\n"
5110  ),
5111  AUTHORS( "Patrick Eriksson" ),
5112  OUT( "iy", "iy_aux" ),
5113  GOUT(),
5114  GOUT_TYPE(),
5115  GOUT_DESC(),
5116  IN( "iy", "iy_aux", "stokes_dim", "f_grid", "iy_aux_vars", "iy_unit" ),
5117  GIN(),
5118  GIN_TYPE(),
5119  GIN_DEFAULT(),
5120  GIN_DESC()
5121  ));
5122 
5123  md_data_raw.push_back
5124  ( MdRecord
5125 
5126  ( NAME( "iyCalc" ),
5127  DESCRIPTION
5128  (
5129  "A single monochromatic pencil beam calculation.\n"
5130  "\n"
5131  "Performs monochromatic radiative transfer calculations for the\n"
5132  "specified position (*rte_pos*) and line-of-sight (*rte_pos*).\n"
5133  "See *iy* and associated variables for format of output.\n"
5134  "\n"
5135  "Please note that Jacobian type calculations not are supported.\n"
5136  "For this use *yCalc*.\n"
5137  "\n"
5138  "No sensor characteristics are applied. These are most easily\n"
5139  "incorporated by using *yCalc*\n"
5140  ),
5141  AUTHORS( "Patrick Eriksson" ),
5142  OUT( "iy", "iy_aux", "ppath" ),
5143  GOUT(),
5144  GOUT_TYPE(),
5145  GOUT_DESC(),
5146  IN( "atmgeom_checked", "atmfields_checked",
5147  "iy_aux_vars", "f_grid", "t_field",
5148  "z_field", "vmr_field", "cloudbox_on", "cloudbox_checked",
5149  "rte_pos", "rte_los", "rte_pos2", "iy_main_agenda" ),
5150  GIN(),
5151  GIN_TYPE(),
5152  GIN_DEFAULT(),
5153  GIN_DESC()
5154  ));
5155 
5156  md_data_raw.push_back
5157  ( MdRecord
5158  ( NAME( "iyCloudRadar" ),
5159  DESCRIPTION
5160  (
5161  "Simulation of cloud radars, restricted to single scattering.\n"
5162  "\n"
5163  "The WSM treats radar measurements of cloud and precipitation, on\n"
5164  "the condition that multiple scattering can be ignored. Beside the\n"
5165  "direct backsacttering, the two-way attenuation by gases and\n"
5166  "particles is considered. Surface scattering is ignored. Further\n"
5167  "details are given in AUG.\n"
5168  "\n"
5169  "The method could potentially be used for lidars, but multiple\n"
5170  "scattering poses here a must stronger constrain for the range of\n"
5171  "applications.\n"
5172  "\n"
5173  "The method can be used with *iyCalc*, but not with *yCalc*. In the\n"
5174  "later case, use instead *yCloudRadar*.\n"
5175  "\n"
5176  "The method returns the backscattering for each point of *ppath*.\n"
5177  "Several frequencies can be treated in parallel. The size of *iy*\n"
5178  "is [ nf*np, stokes_dim ], where nf is the length of *f_grid* and\n"
5179  "np is the number of path points. The data are stored in blocks\n"
5180  "of [ np, stokes_dim ]. That is, all the results for the first\n"
5181  "frequency occupy the np first rows of *iy* etc.\n"
5182  "\n"
5183  "The polarisation state of the transmitted pulse is taken from\n"
5184  "*iy_transmitter_agenda*, see further *iy_transmitterCloudRadar*\n"
5185  "If the radar transmits several polarisations at the same frequency,\n"
5186  "you need to handle this by using two frequencies in *f_grid*, but\n"
5187  "but these can be almost identical.\n"
5188  "\n"
5189  "The options *iy_unit* are:\n"
5190  " \"1\" : Backscatter coefficient. Unit is 1/(m*sr). Without\n"
5191  " attenuation, this equals the scattering matrix value for\n"
5192  " the backward direction. See further AUG.\n"
5193  " \"Ze\" : Equivalent reflectivity. I the conversion, \"K\" is\n"
5194  " calculated using the refractive index for liquid water,\n"
5195  " at the temperature defined by *ze_tref*.\n"
5196  "\n"
5197  "No Jacobian quantities are yet handled.\n"
5198  "\n"
5199  "The following auxiliary data can be obtained:\n"
5200  " \"Pressure\": The pressure along the propagation path.\n"
5201  " Size: [1,1,1,np].\n"
5202  " \"Temperature\": The temperature along the propagation path.\n"
5203  " Size: [1,1,1,np].\n"
5204  " \"Backscattering\": The un-attenuated backscattering. Unit\n"
5205  " follows *iy_unit*. Size: [nf,ns,1,np].\n"
5206  " \"Transmission\": The single-way transmission matrix from the\n"
5207  " transmitter to each propagation path point. The matrix is\n"
5208  " valid for the photon direction. Size: [nf,ns,ns,np].\n"
5209  " \"Round-trip time\": The time for the pulse to propagate. For a \n"
5210  " totally correct result, refraction must be considered (in\n"
5211  " *pppath_agenda*). Size: [1,1,1,np].\n"
5212  " \"PND, type X\": The particle number density for particle type X\n"
5213  " (ie. corresponds to book X in pnd_field). Size: [1,1,1,np].\n"
5214  " \"Mass content, X\": The particle content for mass category X.\n"
5215  " This corresponds to column X in *particle_masses* (zero-\n"
5216  " based indexing). Size: [1,1,1,np].\n"
5217  ),
5218  AUTHORS( "Patrick Eriksson" ),
5219  OUT( "iy", "iy_aux", "ppath" ),
5220  GOUT(),
5221  GOUT_TYPE(),
5222  GOUT_DESC(),
5223  IN( "stokes_dim", "f_grid", "atmosphere_dim", "p_grid", "z_field",
5224  "t_field", "vmr_field",
5225  "wind_u_field", "wind_v_field", "wind_w_field", "mag_u_field",
5226  "mag_v_field", "mag_w_field", "cloudbox_on",
5227  "cloudbox_limits", "pnd_field", "use_mean_scat_data",
5228  "scat_data_array", "particle_masses",
5229  "iy_unit", "iy_aux_vars", "jacobian_do", "ppath_agenda",
5230  "propmat_clearsky_agenda", "iy_transmitter_agenda",
5231  "iy_agenda_call1", "iy_transmission", "rte_pos", "rte_los",
5232  "rte_alonglos_v", "ppath_lraytrace" ),
5233  GIN( "ze_tref" ),
5234  GIN_TYPE( "Numeric" ),
5235  GIN_DEFAULT( "273.15" ),
5236  GIN_DESC( "Reference temperature for conversion to Ze" )
5237  ));
5238 
5239  md_data_raw.push_back
5240  ( MdRecord
5241  ( NAME( "iyEmissionStandard" ),
5242  DESCRIPTION
5243  (
5244  "Standard method for radiative transfer calculations with emission.\n"
5245  "\n"
5246  "Designed to be part of *iy_main_agenda*. That is, only valid\n"
5247  "outside the cloudbox (no scattering). Assumes local thermodynamic\n"
5248  "equilibrium for emission. The basic calculation strategy is to take\n"
5249  "the average of the absorption and the emission source function at\n"
5250  "the end points of each step of the propagation path. For details\n"
5251  "see the user guide.\n"
5252  "\n"
5253  "The internal radiance unit is determined by your definition of\n"
5254  "blackbody radiation inside the atmospheric and surface source\n"
5255  "terms. Set *iy_unit* to \"1\" if you want this to also be the unit\n"
5256  "for output radiances. If you want another output unit, you need to\n"
5257  "make sure that the internal unit is [W/m2/Hz/sr] (ie. the frequency\n"
5258  "version of the Planck function). The possible choices for *iy_unit*\n"
5259  "are:\n"
5260  " \"1\" : No conversion.\n"
5261  " \"RJBT\" : Conversion to Rayleigh-Jean brightness\n"
5262  " temperature.\n"
5263  " \"PlanckBT\" : Conversion to Planck brightness temperature.\n"
5264  " \"W/(m^2 m sr)\" : Conversion to [W/(m^2 m sr)] (radiance per\n"
5265  " wavelength unit).\n"
5266  " \"W/(m^2 m-1 sr)\": Conversion to [W/(m^2 m-1 sr)] (radiance per\n"
5267  " wavenumber unit).\n"
5268  "\n"
5269  "Please note that there is no way for ARTS to strictly check the\n"
5270  "internal unit. In principle, the unit can differ between the\n"
5271  "elements. The user must makes sure that any unit conversion is\n"
5272  "applied correctly, and in accordance with the calibration of the\n"
5273  "instrument of concern. Expressions applied and considerations for\n"
5274  "the unit conversion of radiances are discussed in Sec. 5.7 of the\n"
5275  "ARTS-2 article.\n"
5276  "\n"
5277  "The following auxiliary data can be obtained:\n"
5278  " \"Pressure\": The pressure along the propagation path.\n"
5279  " Size: [1,1,1,np].\n"
5280  " \"Temperature\": The temperature along the propagation path.\n"
5281  " Size: [1,1,1,np].\n"
5282  " \"VMR, species X\": VMR of the species with index X (zero based).\n"
5283  " For example, adding the string \"VMR, species 0\" extracts the\n"
5284  " VMR of the first species. Size: [1,1,1,np].\n"
5285  " \"Absorption, summed\": The total absorption matrix along the\n"
5286  " path. Size: [nf,ns,ns,np].\n"
5287  " \"Absorption, species X\": The absorption matrix along the path\n"
5288  " for an individual species (X works as for VMR).\n"
5289  " Size: [nf,ns,ns,np].\n"
5290  "* \"Radiative background\": Index value flagging the radiative\n"
5291  " background. The following coding is used: 0=space, 1=surface\n"
5292  " and 2=cloudbox. Size: [nf,1,1,1].\n"
5293  " \"iy\": The radiance at each point along the path (*iy_unit* is.\n"
5294  " considered). Size: [nf,ns,1,np].\n"
5295  " \"Transmission\": The transmission matrix from the surface, space\n"
5296  " or cloudbox, to each propagation path point. The matrix is\n"
5297  " valid for the photon direction. Size: [nf,ns,ns,np].\n"
5298  "* \"Optical depth\": The scalar optical depth between the\n"
5299  " observation point and the end of the primary propagation path\n"
5300  " (ie. the optical depth to the surface or space.). Calculated\n"
5301  " in a pure scalar manner, and not dependent on direction.\n"
5302  " Size: [nf,1,1,1].\n"
5303  "where\n"
5304  " nf: Number of frequencies.\n"
5305  " ns: Number of Stokes elements.\n"
5306  " np: Number of propagation path points.\n"
5307  "\n"
5308  "The auxiliary data are returned in *iy_aux* with quantities\n"
5309  "selected by *iy_aux_vars*. Most variables require that the method\n"
5310  "is called directly or by *iyCalc*. For calculations using *yCalc*,\n"
5311  "the selection is restricted to the variables marked with *.\n"
5312  "\n"
5313  "In addition, these choices are accepted but no calculations are\n"
5314  "done:\n"
5315  " \"PND, type X\": Size: [0,0,0,0].\n"
5316  " \"Mass content, X\": Size: [0,0,0,0].\n"
5317  "See e.g. *iyTransmissionStandard* for a definition of these\n"
5318  "variables. To fill these elements of *iy_aux* (after calling\n"
5319  "this WSM), use *iy_auxFillParticleVariables*.\n"
5320  ),
5321  AUTHORS( "Patrick Eriksson" ),
5322  OUT( "iy", "iy_aux", "ppath", "diy_dx" ),
5323  GOUT(),
5324  GOUT_TYPE(),
5325  GOUT_DESC(),
5326  IN( "stokes_dim", "f_grid", "atmosphere_dim", "p_grid", "z_field",
5327  "t_field", "vmr_field", "abs_species",
5328  "wind_u_field", "wind_v_field", "wind_w_field", "mag_u_field",
5329  "mag_v_field", "mag_w_field",
5330  "cloudbox_on", "iy_unit", "iy_aux_vars", "jacobian_do",
5331  "jacobian_quantities", "jacobian_indices",
5332  "ppath_agenda", "blackbody_radiation_agenda",
5333  "propmat_clearsky_agenda", "iy_main_agenda",
5334  "iy_space_agenda", "iy_surface_agenda", "iy_cloudbox_agenda",
5335  "iy_agenda_call1", "iy_transmission", "rte_pos", "rte_los",
5336  "rte_pos2", "rte_alonglos_v", "ppath_lraytrace" ),
5337  GIN(),
5338  GIN_TYPE(),
5339  GIN_DEFAULT(),
5340  GIN_DESC()
5341  ));
5342 
5343  md_data_raw.push_back
5344  ( MdRecord
5345  ( NAME( "iyFOS" ),
5346  DESCRIPTION
5347  (
5348  "Method in development. Don't use without contacting Patrick.\n"
5349  "\n"
5350  "Regarding radiance unit, works exactly as *iyEmissionStandard*.\n"
5351  "\n"
5352  "The *fos_n* argument determines the maximum scattering order that\n"
5353  "will be considered. For example, 1 corresponds to that only single\n"
5354  "scattering is considered. The value 0 is accepted and results\n"
5355  "in calculations of clear-sky type. In the later case, particle\n"
5356  "absorption/emission is considered if cloudbox is active. If\n"
5357  "cloudbox is not active,clear-sky results are returned for all\n"
5358  "values of *fos_n*.\n"
5359  "\n"
5360  "The following auxiliary data can be obtained:\n"
5361  " \"Pressure\": The pressure along the propagation path.\n"
5362  " Size: [1,1,1,np].\n"
5363  " \"Temperature\": The temperature along the propagation path.\n"
5364  " Size: [1,1,1,np].\n"
5365  " \"VMR, species X\": VMR of the species with index X (zero based).\n"
5366  " For example, adding the string \"VMR, species 0\" extracts the\n"
5367  " VMR of the first species. Size: [1,1,1,np].\n"
5368  " \"Absorption, summed\": The total absorption matrix along the\n"
5369  " path. Size: [nf,ns,ns,np].\n"
5370  " \"Absorption, species X\": The absorption matrix along the path\n"
5371  " for an individual species (X works as for VMR).\n"
5372  " Size: [nf,ns,ns,np].\n"
5373  " \"PND, type X\": The particle number density for particle type X\n"
5374  " (ie. corresponds to book X in pnd_field). Size: [1,1,1,np].\n"
5375  " \"Mass content, X\": The particle content for mass category X.\n"
5376  " This corresponds to column X in *particle_masses* (zero-\n"
5377  " based indexing). Size: [1,1,1,np].\n"
5378  "* \"Radiative background\": Index value flagging the radiative\n"
5379  " background. The following coding is used: 0=space and\n"
5380  " and 1=surface. Size: [nf,1,1,1].\n"
5381  " \"iy\": The radiance at each point along the path (*iy_unit* is.\n"
5382  " considered). Size: [nf,ns,1,np].\n"
5383  "* \"Optical depth\": The scalar optical depth between the\n"
5384  " observation point and the end of the primary propagation path\n"
5385  " (ie. the optical depth to the surface or space.). Calculated\n"
5386  " in a pure scalar manner, and not dependent on direction.\n"
5387  " Size: [nf,1,1,1].\n"
5388  "where\n"
5389  " nf: Number of frequencies.\n"
5390  " ns: Number of Stokes elements.\n"
5391  " np: Number of propagation path points.\n"
5392  "\n"
5393  "The auxiliary data are returned in *iy_aux* with quantities\n"
5394  "selected by *iy_aux_vars*. Most variables require that the method\n"
5395  "is called directly or by *iyCalc*. For calculations using *yCalc*,\n"
5396  "the selection is restricted to the variables marked with *.\n"
5397  ),
5398  AUTHORS( "Patrick Eriksson" ),
5399  OUT( "iy", "iy_aux", "ppath", "diy_dx" ),
5400  GOUT(),
5401  GOUT_TYPE(),
5402  GOUT_DESC(),
5403  IN( "stokes_dim", "f_grid", "atmosphere_dim", "p_grid", "z_field",
5404  "t_field", "vmr_field", "abs_species",
5405  "wind_u_field", "wind_v_field", "wind_w_field", "mag_u_field",
5406  "mag_v_field", "mag_w_field", "cloudbox_on", "cloudbox_limits",
5407  "pnd_field", "use_mean_scat_data", "scat_data_array",
5408  "particle_masses", "iy_unit", "iy_aux_vars", "jacobian_do",
5409  "ppath_agenda", "blackbody_radiation_agenda",
5410  "propmat_clearsky_agenda", "iy_main_agenda", "iy_space_agenda",
5411  "iy_surface_agenda", "iy_agenda_call1", "iy_transmission",
5412  "rte_pos", "rte_los", "rte_pos2", "rte_alonglos_v", "ppath_lraytrace",
5413  "fos_scatint_angles", "fos_iyin_za_angles"
5414  ),
5415  GIN( "fos_za_interporder", "fos_n" ),
5416  GIN_TYPE( "Index", "Index" ),
5417  GIN_DEFAULT( "1", "1" ),
5418  GIN_DESC( "Polynomial order for zenith angle interpolation.",
5419  "Max scattering order to consider." )
5420  ));
5421 
5422  md_data_raw.push_back
5423  ( MdRecord
5424  ( NAME( "iyMC" ),
5425  DESCRIPTION
5426  (
5427  "Interface to Monte Carlo part for *iy_main_agenda*.\n"
5428  "\n"
5429  "Basically an interface to *MCGeneral* for doing monochromatic\n"
5430  "pencil beam calculations. This functions allows Monte Carlo (MC)\n"
5431  "calculations for sets of frequencies and sensor pos/los in a single\n"
5432  "run. Sensor responses can be included in the standard manner\n"
5433  "(through *yCalc*).\n"
5434  "\n"
5435  "This function does not apply the MC approach when it comes\n"
5436  "to sensor properties. These properties are not considered when\n"
5437  "tracking photons, which is done in *MCGeneral* (but then only for\n"
5438  "the antenna pattern).\n"
5439  "\n"
5440  "Output unit options (*iy_unit*) exactly as for *MCGeneral*.\n"
5441  "\n"
5442  "The MC calculation errors are all assumed be uncorrelated and each\n"
5443  "have a normal distribution. These properties are of relevance when\n"
5444  "weighting the errors with the sensor repsonse matrix. The seed is\n"
5445  "reset for each call of *MCGeneral* to obtain uncorrelated errors.\n"
5446  "\n"
5447  "MC control arguments (mc_std_err, mc_max_time, mc_min_iter and\n"
5448  "mc_mas_iter) as for *MCGeneral*. The arguments are applied\n"
5449  "for each monochromatic pencil beam calculation individually.\n"
5450  "As or *MCGeneral*, the value of *mc_error* shall be adopted to\n"
5451  "*iy_unit*.\n"
5452  "\n"
5453  "The following auxiliary data can be obtained:\n"
5454  " \"Error (uncorrelated)\": Calculation error. Size: [nf,ns,1,1].\n"
5455  " (The later part of the text string is required. It is used as\n"
5456  " a flag to yCalc for how to apply the sensor data.)\n"
5457  "where\n"
5458  " nf: Number of frequencies.\n"
5459  " ns: Number of Stokes elements.\n"
5460  ),
5461  AUTHORS( "Patrick Eriksson" ),
5462  OUT( "iy", "iy_aux", "diy_dx" ),
5463  GOUT(),
5464  GOUT_TYPE(),
5465  GOUT_DESC(),
5466  IN( "iy_agenda_call1", "iy_transmission", "rte_pos", "rte_los",
5467  "iy_aux_vars", "jacobian_do", "atmosphere_dim", "p_grid",
5468  "lat_grid", "lon_grid", "z_field", "t_field", "vmr_field",
5469  "refellipsoid",
5470  "z_surface", "cloudbox_on", "cloudbox_limits",
5471  "stokes_dim", "f_grid", "scat_data_array", "iy_space_agenda",
5472  "surface_rtprop_agenda", "propmat_clearsky_agenda",
5473  "ppath_step_agenda", "ppath_lraytrace", "pnd_field", "iy_unit",
5474  "mc_std_err", "mc_max_time", "mc_max_iter", "mc_min_iter" ),
5475  GIN(),
5476  GIN_TYPE(),
5477  GIN_DEFAULT(),
5478  GIN_DESC()
5479  ));
5480 
5481  md_data_raw.push_back
5482  ( MdRecord
5483  ( NAME( "iyInterpCloudboxField" ),
5484  DESCRIPTION
5485  (
5486  "Interpolates the intensity field of the cloud box.\n"
5487  "\n"
5488  "This is the standard method to put in *iy_cloudbox_agenda* if the\n"
5489  "the scattering inside the cloud box is handled by the DOIT method.\n"
5490  "\n"
5491  "The intensity field is interpolated to the position (specified by\n"
5492  "*rtp_pos*) and direction (specified by *rtp_los*) given. A linear\n"
5493  "interpolation is used for all dimensions.\n"
5494  "\n"
5495  "The intensity field on the cloux box boundaries is provided by\n"
5496  "*scat_i_p/lat/lon* and these variables are interpolated if the\n"
5497  "given position is at any boundary.\n"
5498  "\n"
5499  "Interpolation of the internal field is not yet possible.\n"
5500  ),
5501  AUTHORS( "Claudia Emde" ),
5502  OUT( "iy" ),
5503  GOUT(),
5504  GOUT_TYPE(),
5505  GOUT_DESC(),
5506  IN( "scat_i_p", "scat_i_lat", "scat_i_lon", "doit_i_field1D_spectrum",
5507  "rtp_pos", "rtp_los", "jacobian_do","cloudbox_on",
5508  "cloudbox_limits", "atmosphere_dim", "p_grid", "lat_grid",
5509  "lon_grid", "z_field", "stokes_dim",
5510  "scat_za_grid", "scat_aa_grid", "f_grid" ),
5511  GIN( "rigorous", "maxratio" ),
5512  GIN_TYPE( "Index", "Numeric" ),
5513  GIN_DEFAULT( "1", "3" ),
5514  GIN_DESC( "Fail if cloudbox field is not safely interpolable.",
5515  "Maximum allowed ratio of two radiances regarded as interpolable." )
5516  ));
5517 
5518  md_data_raw.push_back
5519  ( MdRecord
5520  ( NAME( "iyInterpPolyCloudboxField" ),
5521  DESCRIPTION
5522  (
5523  "As *iyInterpCloudboxField* but performs cubic interpolation.\n"
5524  "\n"
5525  "Works so far only for 1D cases, and accordingly a cubic\n"
5526  "interpolation along *scat_za_grid* is performed.\n"
5527  ),
5528  AUTHORS( "Claudia Emde" ),
5529  OUT( "iy" ),
5530  GOUT(),
5531  GOUT_TYPE(),
5532  GOUT_DESC(),
5533  IN( "scat_i_p", "scat_i_lat", "scat_i_lon", "doit_i_field1D_spectrum",
5534  "rtp_pos", "rtp_los", "jacobian_do", "cloudbox_on",
5535  "cloudbox_limits", "atmosphere_dim", "p_grid", "lat_grid",
5536  "lon_grid", "z_field", "stokes_dim", "scat_za_grid",
5537  "scat_aa_grid", "f_grid" ),
5538  GIN(),
5539  GIN_TYPE(),
5540  GIN_DEFAULT(),
5541  GIN_DESC()
5542  ));
5543 
5544  md_data_raw.push_back
5545  ( MdRecord
5546  ( NAME( "iyLoopFrequencies" ),
5547  DESCRIPTION
5548  (
5549  "Radiative transfer calculations one frequency at the time.\n"
5550  "\n"
5551  "The method loops the frequencies in *f_grid* and calls\n"
5552  "*iy_sub_agenda* for each individual value. This method is placed\n"
5553  "in *iy_main_agenda*, and the actual radiative ransfer method is\n"
5554  "put in *iy_sub_agenda*.\n"
5555  "\n"
5556  "A common justification for using the method should be to consider\n"
5557  "dispersion. By using this method it is ensured that the propagation\n"
5558  "path for each individual frequency is calculated.\n"
5559  "\n"
5560  "Auxiliary data (defined by *iy_aux_vars*) can not contain along-\n"
5561  "the-path quantities (a common ppath is not ensured). The returned\n"
5562  "*ppath* is valid for the last frequency.\n"
5563  ),
5564  AUTHORS( "Patrick Eriksson" ),
5565  OUT( "iy", "iy_aux", "ppath", "diy_dx" ),
5566  GOUT(),
5567  GOUT_TYPE(),
5568  GOUT_DESC(),
5569  IN( "iy_aux_vars", "stokes_dim", "f_grid", "t_field", "z_field",
5570  "vmr_field", "cloudbox_on", "iy_agenda_call1", "iy_transmission",
5571  "rte_pos", "rte_los", "rte_pos2", "jacobian_do", "iy_sub_agenda" ),
5572  GIN(),
5573  GIN_TYPE(),
5574  GIN_DEFAULT(),
5575  GIN_DESC()
5576  ));
5577 
5578  md_data_raw.push_back
5579  ( MdRecord
5580  ( NAME( "iyRadioLink" ),
5581  DESCRIPTION
5582  (
5583  "Radiative transfer for (active) radio links.\n"
5584  "\n"
5585  "The method assumes that *ppath*agenda* is set up to return the\n"
5586  "propagation path between the transmitter and the receiver. The\n"
5587  "position of the transmitter is given as *rte_pos*, and the\n"
5588  "\"sensor\" is taken as the receiver.\n"
5589  "\n"
5590  "The primary output (*y*) is the received signal, where the signal\n"
5591  "transmitted is taken from *iy_transmitter_agenda*. That is, *y*\n"
5592  "is a Stokes vector for each frequency considered. Several other\n"
5593  "possible measurements quantities, such as the bending angle, can\n"
5594  "be obtained as the auxiliary data (see lost below).\n"
5595  "\n"
5596  "If it is found that no link can be obtained due to intersection of\n"
5597  "the ground, all data are set to zero. If no link could be\n"
5598  "determined for other reasons (due to critical refraction or\n"
5599  "numerical problems), all data are set to NaN.\n"
5600  "\n"
5601  "This method is just intended for approximative calculations for\n"
5602  "cases corresponding to relatively simple ray tracing. A detailed,\n"
5603  "and more exact, treatment of several effects require more advanced\n"
5604  "calculation approaches. Here a simple geometrical optics approach\n"
5605  "is followed. See the user guide for details.\n"
5606  "\n"
5607  "Defocusing is a special consideration for radio links. Two\n"
5608  "algorithms are at hand for estimating defocusing, simply denoted\n"
5609  "as method 1 and 2:\n"
5610  " 1: This algorithm is of general character. Defocusing is estimated\n"
5611  " by making two path calculations with slightly shifted zenith\n"
5612  " angles.\n"
5613  " 2: This method is restricted to satellite-to-satellite links, and\n"
5614  " using a standard expression for such links, based on the\n"
5615  " vertical gradient of the bending angle.\n"
5616  "Both methods are described more in detail in the user guide.\n"
5617  "The argument *defocus_shift* is used by both methods.\n"
5618  "\n"
5619  "The following auxiliary data can be obtained:\n"
5620  " \"Pressure\": The pressure along the propagation path.\n"
5621  " Size: [1,1,1,np].\n"
5622  " \"Temperature\": The temperature along the propagation path.\n"
5623  " Size: [1,1,1,np].\n"
5624  " \"VMR, species X\": VMR of the species with index X (zero based).\n"
5625  " For example, adding the string \"VMR, species 0\" extracts the\n"
5626  " VMR of the first species. Size: [1,1,1,np].\n"
5627  " \"Absorption, summed\": The total absorption matrix along the\n"
5628  " path. Size: [nf,ns,ns,np].\n"
5629  " \"Absorption, species X\": The absorption matrix along the path\n"
5630  " for an individual species (X works as for VMR).\n"
5631  " Size: [nf,ns,ns,np].\n"
5632  " \"Particle extinction, summed\": The total particle extinction\n"
5633  " matrix along the path. Size: [nf,ns,ns,np].\n"
5634  " \"PND, type X\": The particle number density for particle type X\n"
5635  " (ie. corresponds to book X in pnd_field). Size: [1,1,1,np].\n"
5636  " \"Mass content, X\": The particle content for mass category X.\n"
5637  " This corresponds to column X in *particle_masses* (zero-\n"
5638  " based indexing). Size: [1,1,1,np].\n"
5639  "* \"Impact parameter\": As normally defined for GNRSS radio\n"
5640  " occultations (this equals the propagation path constant,\n"
5641  " r*n*sin(theta)). Size: [1,1,1,1].\n"
5642  "* \"Free space loss\": The total loss due to the inverse square\n"
5643  " law. Size: [1,1,1,1].\n"
5644  " \"Free space attenuation\": The local attenuation due to the\n"
5645  " inverse square law. Size: [1,1,1,np].\n"
5646  "* \"Atmospheric loss\": Total atmospheric attenuation, reported as\n"
5647  " the transmission. Size: [nf,1,1,1].\n"
5648  "* \"Defocusing loss\": The total loss between the transmitter and\n"
5649  " receiver due to defocusing. Given as a transmission.\n"
5650  " Size: [1,1,1,1].\n"
5651  "* \"Faraday rotation\": Total rotation [deg] along the path, for\n"
5652  " each frequency. Size: [nf,1,1,1].\n"
5653  "* \"Faraday speed\": The rotation per length unit [deg/m], at each\n"
5654  " path point and each frequency. Size: [nf,1,1,np].\n"
5655  "* \"Extra path delay\": The time delay of the signal [s], compared\n"
5656  " to the case of propagation through vacuum. Size: [1,1,1,1].\n"
5657  "* \"Bending angle\": As normally defined for GNRSS radio\n"
5658  " occultations, in [deg]. Size: [1,1,1,1].\n"
5659  "where\n"
5660  " nf: Number of frequencies.\n"
5661  " ns: Number of Stokes elements.\n"
5662  " np: Number of propagation path points.\n"
5663  "\n"
5664  "The auxiliary data are returned in *iy_aux* with quantities\n"
5665  "selected by *iy_aux_vars*. Most variables require that the method\n"
5666  "is called directly or by *iyCalc*. For calculations using *yCalc*,\n"
5667  "the selection is restricted to the variables marked with *.\n"
5668  ),
5669  AUTHORS( "Patrick Eriksson" ),
5670  OUT( "iy", "iy_aux", "ppath", "diy_dx" ),
5671  GOUT(),
5672  GOUT_TYPE(),
5673  GOUT_DESC(),
5674  IN( "stokes_dim", "f_grid", "atmosphere_dim",
5675  "p_grid", "lat_grid", "lon_grid",
5676  "z_field", "t_field", "vmr_field", "abs_species",
5677  "wind_u_field", "wind_v_field", "wind_w_field", "mag_u_field",
5678  "mag_v_field", "mag_w_field",
5679  "refellipsoid", "z_surface", "cloudbox_on", "cloudbox_limits",
5680  "pnd_field", "use_mean_scat_data","scat_data_array",
5681  "particle_masses", "iy_aux_vars", "jacobian_do",
5682  "ppath_agenda", "ppath_step_agenda",
5683  "propmat_clearsky_agenda", "iy_transmitter_agenda",
5684  "iy_agenda_call1", "iy_transmission", "rte_pos", "rte_los",
5685  "rte_pos2", "rte_alonglos_v", "ppath_lraytrace" ),
5686  GIN( "defocus_method", "defocus_shift" ),
5687  GIN_TYPE( "Index", "Numeric" ),
5688  GIN_DEFAULT( "1", "3e-3" ),
5689  GIN_DESC( "Selection of defocusing calculation method. See above.",
5690  "Angular shift to apply in defocusing estimates." )
5691  ));
5692 
5693  md_data_raw.push_back
5694  ( MdRecord
5695  ( NAME( "iyReplaceFromAux" ),
5696  DESCRIPTION
5697  (
5698  "Change of main output variable.\n"
5699  "\n"
5700  "With this method you can replace the content of *iy* with one of\n"
5701  "the auxiliary variables. The selected variable (by *aux_var*) must\n"
5702  "be part of *iy_aux_vars*. The corresponding data from *iy_aux* are\n"
5703  "copied to form a new *iy* (*iy_aux* is left unchanged). Elements of\n"
5704  "*iy* correponding to Stokes elements not covered by the auxiliary\n"
5705  "variable are just set to zero.\n"
5706  "\n"
5707  "Jacobian variables are not handled.\n"
5708  ),
5709  AUTHORS( "Patrick Eriksson" ),
5710  OUT( "iy" ),
5711  GOUT(),
5712  GOUT_TYPE(),
5713  GOUT_DESC(),
5714  IN( "iy", "iy_aux", "iy_aux_vars", "jacobian_do" ),
5715  GIN( "aux_var" ),
5716  GIN_TYPE( "String" ),
5717  GIN_DEFAULT( NODEF ),
5718  GIN_DESC( "Auxiliary variable to insert as *iy*." )
5719  ));
5720 
5721  md_data_raw.push_back
5722  ( MdRecord
5723  ( NAME( "iySurfaceRtpropAgenda" ),
5724  DESCRIPTION
5725  (
5726  "Interface to *surface_rtprop_agenda* for *iy_surface_agenda*.\n"
5727  "\n"
5728  "This method is designed to be part of *iy_surface_agenda*. It\n"
5729  "determines the radiative properties of the surface by\n"
5730  "*surface_rtprop_agenda* and calculates the downwelling radiation\n"
5731  "by *iy_main_agenda*, and sums up the terms as described in AUG.\n"
5732  "That is, this WSM uses the output from *surface_rtprop_agenda*\n"
5733  "in a straightforward fashion.\n"
5734  ),
5735  AUTHORS( "Patrick Eriksson" ),
5736  OUT( "iy", "diy_dx" ),
5737  GOUT(),
5738  GOUT_TYPE(),
5739  GOUT_DESC(),
5740  IN( "iy_transmission", "jacobian_do", "atmosphere_dim", "t_field",
5741  "z_field", "vmr_field", "cloudbox_on", "stokes_dim", "f_grid",
5742  "rtp_pos", "rtp_los", "rte_pos2", "iy_main_agenda",
5743  "surface_rtprop_agenda"
5744  ),
5745  GIN(),
5746  GIN_TYPE(),
5747  GIN_DEFAULT(),
5748  GIN_DESC()
5749  ));
5750 
5751  md_data_raw.push_back
5752  ( MdRecord
5753  ( NAME( "iyTransmissionStandard" ),
5754  DESCRIPTION
5755  (
5756  "Standard method for handling (direct) transmission measurements.\n"
5757  "\n"
5758  "Designed to be part of *iy_main_agenda*. Treatment of the cloudbox\n"
5759  "is incorporated (that is, no need to define *iy_cloudbox_agenda*).\n"
5760  "\n"
5761  "In short, the propagation path is followed until the surface or\n"
5762  "space is reached. At this point *iy_transmitter_agenda* is called\n"
5763  "and the radiative transfer calculations start. That is, the result\n"
5764  "of the method (*iy*) is the output of *iy_transmitter_agenda*\n"
5765  "multiplied with th transmission from the sensor to either the\n"
5766  "surface or space.\n"
5767  "\n"
5768  "The following auxiliary data can be obtained:\n"
5769  " \"Pressure\": The pressure along the propagation path.\n"
5770  " Size: [1,1,1,np].\n"
5771  " \"Temperature\": The temperature along the propagation path.\n"
5772  " Size: [1,1,1,np].\n"
5773  " \"VMR, species X\": VMR of the species with index X (zero based).\n"
5774  " For example, adding the string \"VMR, species 0\" extracts the\n"
5775  " VMR of the first species. Size: [1,1,1,np].\n"
5776  " \"Absorption, summed\": The total absorption matrix along the\n"
5777  " path. Size: [nf,ns,ns,np].\n"
5778  " \"Absorption, species X\": The absorption matrix along the path\n"
5779  " for an individual species (X works as for VMR).\n"
5780  " Size: [nf,ns,ns,np].\n"
5781  " \"Particle extinction, summed\": The total particle extinction\n"
5782  " matrix along the path. Size: [nf,ns,ns,np].\n"
5783  " \"PND, type X\": The particle number density for particle type X\n"
5784  " (ie. corresponds to book X in pnd_field). Size: [1,1,1,np].\n"
5785  " \"Mass content, X\": The particle content for mass category X.\n"
5786  " This corresponds to column X in *particle_masses* (zero-\n"
5787  " based indexing). Size: [1,1,1,np].\n"
5788  "* \"Radiative background\": Index value flagging the radiative\n"
5789  " background. The following coding is used: 0=space, 1=surface\n"
5790  " and 2=cloudbox. Size: [nf,1,1,1].\n"
5791  " \"iy\": The radiance at each point along the path.\n"
5792  " Size: [nf,ns,1,np].\n"
5793  " \"Transmission\": The transmission matrix from the surface or\n"
5794  " space, to each propagation path point. The matrix is valid for\n"
5795  " the photon direction. Size: [nf,ns,ns,np].\n"
5796  "* \"Optical depth\": The scalar optical depth between the\n"
5797  " observation point and the end of the primary propagation path\n"
5798  " (ie. the optical depth to the surface or space.). Calculated\n"
5799  " in a pure scalar manner, and not dependent on direction.\n"
5800  " Size: [nf,1,1,1].\n"
5801  "* \"Faraday rotation\": Total rotation [deg] along the path, for\n"
5802  " each frequency. Size: [nf,1,1,1].\n"
5803  "* \"Faraday speed\": The rotation per length unit [deg/m], at each\n"
5804  " path point and each frequency. Size: [nf,1,1,np].\n"
5805  "where\n"
5806  " nf: Number of frequencies.\n"
5807  " ns: Number of Stokes elements.\n"
5808  " np: Number of propagation path points.\n"
5809  "\n"
5810  "The auxiliary data are returned in *iy_aux* with quantities\n"
5811  "selected by *iy_aux_vars*. Most variables require that the method\n"
5812  "is called directly or by *iyCalc*. For calculations using *yCalc*,\n"
5813  "the selection is restricted to the variables marked with *.\n"
5814  ),
5815  AUTHORS( "Patrick Eriksson" ),
5816  OUT( "iy", "iy_aux", "ppath", "diy_dx" ),
5817  GOUT(),
5818  GOUT_TYPE(),
5819  GOUT_DESC(),
5820  IN( "stokes_dim", "f_grid", "atmosphere_dim", "p_grid",
5821  "z_field", "t_field", "vmr_field", "abs_species",
5822  "wind_u_field", "wind_v_field", "wind_w_field", "mag_u_field",
5823  "mag_v_field", "mag_w_field",
5824  "cloudbox_on", "cloudbox_limits", "pnd_field",
5825  "use_mean_scat_data", "scat_data_array", "particle_masses",
5826  "iy_aux_vars", "jacobian_do", "jacobian_quantities",
5827  "jacobian_indices", "ppath_agenda", "propmat_clearsky_agenda",
5828  "iy_transmitter_agenda", "iy_agenda_call1", "iy_transmission",
5829  "rte_pos", "rte_los", "rte_pos2", "rte_alonglos_v",
5830  "ppath_lraytrace" ),
5831  GIN(),
5832  GIN_TYPE(),
5833  GIN_DEFAULT(),
5834  GIN_DESC()
5835  ));
5836 
5837  md_data_raw.push_back
5838  ( MdRecord
5839  ( NAME( "iy_auxFillParticleVariables" ),
5840  DESCRIPTION
5841  (
5842  "Additional treatment some particle auxiliary variables.\n"
5843  "\n"
5844  "This WSM is intended to complement main radiative transfer methods\n"
5845  "that does not handle scattering, and thus can not provide auxiliary\n"
5846  "data for particle properties. The following auxiliary variables\n"
5847  "are covered:\n"
5848  " \"PND, type X\": The particle number density for particle type X\n"
5849  " (ie. corresponds to book X in pnd_field). Size: [1,1,1,np].\n"
5850  " \"Mass content, X\": The particle content for mass category X.\n"
5851  " This corresponds to column X in *particle_masses* (zero-\n"
5852  " based indexing). Size: [1,1,1,np].\n"
5853  "\n"
5854  "To complement *iyEmissionStandard* should be the main application.\n"
5855  "As a preparatory step you need to set up all cloud variables in\n"
5856  "standard manner. After this you need to set *cloudbox_on* to zero,\n"
5857  "and in *iy_main_agenda* add these lines (after iyEmissionStandard):\n"
5858  " FlagOn(cloudbox_on)\n"
5859  " iy_auxFillParticleVariables\n"
5860  ),
5861  AUTHORS( "Patrick Eriksson" ),
5862  OUT( "iy_aux" ),
5863  GOUT(),
5864  GOUT_TYPE(),
5865  GOUT_DESC(),
5866  IN( "iy_aux", "atmfields_checked", "cloudbox_checked",
5867  "atmosphere_dim", "cloudbox_on", "cloudbox_limits", "pnd_field",
5868  "particle_masses", "ppath", "iy_aux_vars" ),
5869  GIN(),
5870  GIN_TYPE(),
5871  GIN_DEFAULT(),
5872  GIN_DESC()
5873  ));
5874 
5875  md_data_raw.push_back
5876  ( MdRecord
5877  ( NAME( "iy_transmitterMultiplePol" ),
5878  DESCRIPTION
5879  (
5880  "Transmitter definition handling multiple polarisations.\n"
5881  "\n"
5882  "The method is intended to be part of *iy_transmitter_agenda*. It\n"
5883  "sets *iy* to describe the transmitted pulses. The polarisation\n"
5884  "state is taken from *sensor_pol*, where *sensor_pol* must contain\n"
5885  "an element for each frequency in *f_grid*. The transmitted pulses \n"
5886  "are set to be of unit magnitude, such as [1,1,0,0].\n"
5887  ),
5888  AUTHORS( "Patrick Eriksson" ),
5889  OUT( "iy" ),
5890  GOUT(),
5891  GOUT_TYPE(),
5892  GOUT_DESC(),
5893  IN( "stokes_dim", "f_grid", "sensor_pol" ),
5894  GIN(),
5895  GIN_TYPE(),
5896  GIN_DEFAULT(),
5897  GIN_DESC()
5898  ));
5899 
5900  md_data_raw.push_back
5901  ( MdRecord
5902  ( NAME( "iy_transmitterSinglePol" ),
5903  DESCRIPTION
5904  (
5905  "Transmitter definition involving a single polarisation.\n"
5906  "\n"
5907  "The method is intended to be part of *iy_transmitter_agenda*. It\n"
5908  "sets *iy* to describe the transmitted pulses. The polarisation\n"
5909  "state is taken from *sensor_pol*, where *sensor_pol* must contain\n"
5910  "a single value. This polarisation state is applied for all\n"
5911  "frequencies. The transmitted pulses are set to be of unit\n"
5912  "magnitude, such as [1,1,0,0].\n"
5913  ),
5914  AUTHORS( "Patrick Eriksson" ),
5915  OUT( "iy" ),
5916  GOUT(),
5917  GOUT_TYPE(),
5918  GOUT_DESC(),
5919  IN( "stokes_dim", "f_grid", "sensor_pol" ),
5920  GIN(),
5921  GIN_TYPE(),
5922  GIN_DEFAULT(),
5923  GIN_DESC()
5924  ));
5925 
5926  md_data_raw.push_back
5927  ( MdRecord
5928  ( NAME( "jacobianAddAbsSpecies" ),
5929  DESCRIPTION
5930  (
5931  "Includes an absorption species in the Jacobian.\n"
5932  "\n"
5933  "Details are given in the user guide.\n"
5934  "\n"
5935  "For 1D or 2D calculations the latitude and/or longitude grid of\n"
5936  "the retrieval field should set to have zero length.\n"
5937  "\n"
5938  "There are two possible calculation methods:\n"
5939  " \"analytical\" : (semi-)analytical expressions are used\n"
5940  " \"perturbation\" : pure numerical perturbations are used\n"
5941  "\n"
5942  "The retrieval unit can be:\n"
5943  " \"vmr\" : Volume mixing ratio.\n"
5944  " \"nd\" : Number density.\n"
5945  " \"rel\" : Relative unit (e.g. 1.1 means 10% more of the gas).\n"
5946  " \"logrel\" : The retrieval is performed with the logarithm of\n"
5947  " the \"rel\" option.\n"
5948  "\n"
5949  "For perturbation calculations the size of the perturbation is set\n"
5950  "by the user. The unit for the perturbation is the same as for the\n"
5951  "retrieval unit.\n"
5952  ),
5953  AUTHORS( "Mattias Ekstrom", "Patrick Eriksson" ),
5954  OUT( "jacobian_quantities", "jacobian_agenda" ),
5955  GOUT(),
5956  GOUT_TYPE(),
5957  GOUT_DESC(),
5958  IN( "jacobian_quantities", "jacobian_agenda",
5959  "atmosphere_dim", "p_grid", "lat_grid", "lon_grid" ),
5960  GIN( "g1", "g2", "g3", "species", "method", "unit","dx" ),
5961  GIN_TYPE( "Vector", "Vector", "Vector", "String", "String", "String",
5962  "Numeric" ),
5963  GIN_DEFAULT( NODEF, NODEF, NODEF, NODEF, "analytical", "rel", "0.001" ),
5964  GIN_DESC( "Pressure retrieval grid.",
5965  "Latitude retrieval grid.",
5966  "Longitude retreival grid.",
5967  "The species tag of the retrieval quantity.",
5968  "Calculation method. See above.",
5969  "Retrieval unit. See above.",
5970  "Size of perturbation."
5971  ),
5972  SETMETHOD( false ),
5973  AGENDAMETHOD( false ),
5974  USES_TEMPLATES( false ),
5975  PASSWORKSPACE( true )
5976  ));
5977 
5978  md_data_raw.push_back
5979  ( MdRecord
5980  ( NAME( "jacobianAddFreqShift" ),
5981  DESCRIPTION
5982  (
5983  "Includes a frequency for of shift type in the Jacobian.\n"
5984  "\n"
5985  "Retrieval of deviations between nominal and actual backend\n"
5986  "frequencies can be included by this method. The assumption here is\n"
5987  "that the deviation is a constant off-set, a shift, common for all\n"
5988  "frequencies.\n"
5989  "\n"
5990  "The frequency shift can be modelled to be time varying. The time\n"
5991  "variation is then described by a polynomial (with standard base\n"
5992  "functions). For example, a polynomial order of 0 means that the\n"
5993  "shift is constant in time. If the shift is totally uncorrelated\n"
5994  "between the spectra, set the order to -1.\n"
5995  ),
5996  AUTHORS( "Patrick Eriksson" ),
5997  OUT( "jacobian_quantities", "jacobian_agenda" ),
5998  GOUT(),
5999  GOUT_TYPE(),
6000  GOUT_DESC(),
6001  IN( "jacobian_quantities", "jacobian_agenda", "f_grid", "sensor_pos",
6002  "sensor_time" ),
6003  GIN( "poly_order", "df" ),
6004  GIN_TYPE( "Index", "Numeric" ),
6005  GIN_DEFAULT( "0", "100e3" ),
6006  GIN_DESC( "Order of polynomial to describe the time variation of "
6007  "frequency shift.",
6008  "Size of perturbation to apply."
6009  )
6010  ));
6011 
6012  md_data_raw.push_back
6013  ( MdRecord
6014  ( NAME( "jacobianAddFreqStretch" ),
6015  DESCRIPTION
6016  (
6017  "Includes a frequency for of stretch type in the Jacobian.\n"
6018  "\n"
6019  "Retrieval of deviations between nominal and actual backend\n"
6020  "frequencies can be included by this method. The assumption here is\n"
6021  "that the deviation varies linearly over the frequency range\n"
6022  "(following ARTS basis function for polynomial order 1).\n"
6023  "\n"
6024  "The frequency shift can be modelled to be time varying. The time\n"
6025  "variation is then described by a polynomial (with standard base\n"
6026  "functions). For example, a polynomial order of 0 means that the\n"
6027  "shift is constant in time. If the shift is totally uncorrelated\n"
6028  "between the spectra, set the order to -1.\n"
6029  ),
6030  AUTHORS( "Patrick Eriksson" ),
6031  OUT( "jacobian_quantities", "jacobian_agenda" ),
6032  GOUT(),
6033  GOUT_TYPE(),
6034  GOUT_DESC(),
6035  IN( "jacobian_quantities", "jacobian_agenda", "f_grid", "sensor_pos",
6036  "sensor_time" ),
6037  GIN( "poly_order", "df" ),
6038  GIN_TYPE( "Index", "Numeric" ),
6039  GIN_DEFAULT( "0", "100e3" ),
6040  GIN_DESC( "Order of polynomial to describe the time variation of "
6041  "frequency stretch.",
6042  "Size of perturbation to apply."
6043  )
6044  ));
6045 
6046 
6047 
6048  /*
6049  md_data_raw.push_back
6050  ( MdRecord
6051  ( NAME( "jacobianAddParticle" ),
6052  DESCRIPTION
6053  (
6054  "Add particle number density as retrieval quantity to the Jacobian.\n"
6055  "\n"
6056  "The Jacobian is done by perturbation calculation by adding elements\n"
6057  "of *pnd_field_perturb* to *pnd_field*. Only 1D and 3D atmospheres\n"
6058  "can be handled by this method.\n"
6059  "\n"
6060  "The perturbation field and the unit of it are defined outside ARTS.\n"
6061  "This method only returns the difference between the reference and\n"
6062  "perturbed spectra. The division by the size of the perturbation\n"
6063  "also has to be done outside ARTS.\n"
6064  "The unit of the particle jacobian is the same as for *y*.\n"
6065  "\n"
6066  "Generic input:\n"
6067  " Vector : The pressure grid of the retrieval field.\n"
6068  " Vector : The latitude grid of the retrieval field.\n"
6069  " Vector : The longitude grid of the retrieval field.\n"
6070  ),
6071  AUTHORS( "Mattias Ekstrom", "Patrick Eriksson" ),
6072  OUT( "jacobian_quantities", "jacobian_agenda" ),
6073  GOUT(),
6074  GOUT_TYPE(),
6075  GOUT_DESC(),
6076  IN( "jacobian", "atmosphere_dim", "p_grid", "lat_grid", "lon_grid",
6077  "pnd_field", "pnd_field_perturb", "cloudbox_limits" ),
6078  GIN( "gin1" , "gin2" , "gin3" ),
6079  GIN_TYPE( "Vector", "Vector", "Vector" ),
6080  GIN_DEFAULT( NODEF , NODEF , NODEF ),
6081  GIN_DESC( "FIXME DOC",
6082  "FIXME DOC",
6083  "FIXME DOC" )
6084  ));
6085  */
6086 
6087  md_data_raw.push_back
6088  ( MdRecord
6089  ( NAME( "jacobianAddPointingZa" ),
6090  DESCRIPTION
6091  (
6092  "Adds sensor pointing zenith angle off-set jacobian.\n"
6093  "\n"
6094  "Retrieval of deviations between nominal and actual zenith angle of\n"
6095  "the sensor can be included by this method. The weighing functions\n"
6096  "can be calculated in several ways:\n"
6097  " calcmode = \"recalc\": Recalculation of pencil beam spectra,\n"
6098  " shifted with *dza* from nominal values. A single-sided\n"
6099  " perturbation is applied (towards higher zenith angles).\n"
6100  " calcmode = \"interp\": Inter/extrapolation of existing pencil\n"
6101  " beam spectra. For this option, allow some extra margins for\n"
6102  " zenith angle grids, to avoid artifacts when extrapolating\n"
6103  " the data (to shifted zenith angles). The average of a\n"
6104  " negative and a positive shift is taken."
6105  "\n"
6106  "The interp option is recommended. It should in general be both\n"
6107  "faster and more accurate (due to the double sided disturbance).\n"
6108  "In addition, it is less sensitive to the choice of dza (as long\n"
6109  "as a small value is applied).\n"
6110  "\n"
6111  "The pointing off-set can be modelled to be time varying. The time\n"
6112  "variation is then described by a polynomial (with standard base\n"
6113  "functions). For example, a polynomial order of 0 means that the\n"
6114  "off-set is constant in time. If the off-set is totally uncorrelated\n"
6115  "between the spectra, set the order to -1.\n"
6116  ),
6117  AUTHORS( "Patrick Eriksson", "Mattias Ekstrom" ),
6118  OUT( "jacobian_quantities", "jacobian_agenda" ),
6119  GOUT(),
6120  GOUT_TYPE(),
6121  GOUT_DESC(),
6122  IN( "jacobian_quantities", "jacobian_agenda", "sensor_pos",
6123  "sensor_time" ),
6124  GIN( "poly_order", "calcmode", "dza" ),
6125  GIN_TYPE( "Index", "String", "Numeric" ),
6126  GIN_DEFAULT( "0", "recalc", "0.01" ),
6127  GIN_DESC( "Order of polynomial to describe the time variation of "
6128  "pointing off-sets.",
6129  "Calculation method. See above",
6130  "Size of perturbation to apply (when applicable)."
6131  )
6132  ));
6133 
6134  md_data_raw.push_back
6135  ( MdRecord
6136  ( NAME( "jacobianAddPolyfit" ),
6137  DESCRIPTION
6138  (
6139  "Includes polynomial baseline fit in the Jacobian.\n"
6140  "\n"
6141  "This method deals with retrieval of disturbances of the spectra\n"
6142  "that can be described by an addidative term, a baseline off-set.\n"
6143  "\n"
6144  "The baseline off-set is here modelled as a polynomial. The\n"
6145  "polynomial spans the complete frequency range spanned by\n"
6146  "*sensor_response_f_grid* and the method should only of interest for\n"
6147  "cases with no frequency gap in the spectra. The default assumption\n"
6148  "is that the off-set differs between all spectra, but it can also be\n"
6149  "assumed that the off-set is common for all e.g. line-of-sights.\n"
6150  ),
6151  AUTHORS( "Patrick Eriksson" ),
6152  OUT( "jacobian_quantities", "jacobian_agenda" ),
6153  GOUT(),
6154  GOUT_TYPE(),
6155  GOUT_DESC(),
6156  IN( "jacobian_quantities", "jacobian_agenda",
6157  "sensor_response_pol_grid", "sensor_response_za_grid",
6158  "sensor_pos" ),
6159  GIN( "poly_order", "no_pol_variation", "no_los_variation",
6160  "no_mblock_variation" ),
6161  GIN_TYPE( "Index", "Index", "Index", "Index" ),
6162  GIN_DEFAULT( NODEF, "0", "0", "0" ),
6163  GIN_DESC( "Polynomial order to use for the fit.",
6164  "Set to 1 if the baseline off-set is the same for all "
6165  "Stokes components.",
6166  "Set to 1 if the baseline off-set is the same for all "
6167  "line-of-sights (inside each measurement block).",
6168  "Set to 1 if the baseline off-set is the same for all "
6169  "measurement blocks."
6170  )
6171  ));
6172 
6173  md_data_raw.push_back
6174  ( MdRecord
6175  ( NAME( "jacobianAddSinefit" ),
6176  DESCRIPTION
6177  (
6178  "Includes sinusoidal baseline fit in the Jacobian.\n"
6179  "\n"
6180  "Works as *jacobianAddPolyFit*, beside that a series of sine and\n"
6181  "cosine terms are used for the baseline fit.\n"
6182  "\n"
6183  "For each value in *period_lengths one sine and one cosine term are\n"
6184  "included (in mentioned order). By these two terms the amplitude and\n"
6185  "\"phase\" for each period length can be determined. The sine and\n"
6186  "cosine terms have value 0 and 1, respectively, for first frequency.\n"
6187  ),
6188  AUTHORS( "Patrick Eriksson" ),
6189  OUT( "jacobian_quantities", "jacobian_agenda" ),
6190  GOUT(),
6191  GOUT_TYPE(),
6192  GOUT_DESC(),
6193  IN( "jacobian_quantities", "jacobian_agenda",
6194  "sensor_response_pol_grid", "sensor_response_za_grid",
6195  "sensor_pos" ),
6196  GIN( "period_lengths", "no_pol_variation", "no_los_variation",
6197  "no_mblock_variation" ),
6198  GIN_TYPE( "Vector", "Index", "Index", "Index" ),
6199  GIN_DEFAULT( NODEF, "0", "0", "0" ),
6200  GIN_DESC( "Period lengths of the fit.",
6201  "Set to 1 if the baseline off-set is the same for all "
6202  "Stokes components.",
6203  "Set to 1 if the baseline off-set is the same for all "
6204  "line-of-sights (inside each measurement block).",
6205  "Set to 1 if the baseline off-set is the same for all "
6206  "measurement blocks."
6207  )
6208  ));
6209 
6210  md_data_raw.push_back
6211  ( MdRecord
6212  ( NAME( "jacobianAddTemperature" ),
6213  DESCRIPTION
6214  (
6215  "Includes atmospheric temperatures in the Jacobian.\n"
6216  "\n"
6217  "The calculations can be performed by (semi-)analytical expressions\n"
6218  "or by perturbations. Hydrostatic equilibrium (HSE) can be included.\n"
6219  "For perturbation calculations, all possible effects are included\n"
6220  "(but is a costly option). The analytical calculation approach\n"
6221  "neglects refraction totally, but considers the local effect of HSE.\n"
6222  "The later should be accaptable for observations around zenith and\n"
6223  "nadir. There is no warning if the method is applied incorrectly, \n"
6224  "with respect to these issues.\n"
6225  "\n"
6226  "The calculations (both options) assume that gas species are defined\n"
6227  "in VMR (a change in temperature then changes the number density). \n"
6228  "This has the consequence that retrieval of temperatures and number\n"
6229  "density can not be mixed. Neither any warning here!\n"
6230  "\n"
6231  "The choices for *method* are:\n"
6232  " \"analytical\" : (semi-)analytical expressions are used\n"
6233  " \"perturbation\" : pure numerical perturbations are used\n"
6234  ),
6235  AUTHORS( "Mattias Ekstrom", "Patrick Eriksson" ),
6236  OUT( "jacobian_quantities", "jacobian_agenda" ),
6237  GOUT(),
6238  GOUT_TYPE(),
6239  GOUT_DESC(),
6240  IN( "jacobian_quantities", "jacobian_agenda",
6241  "atmosphere_dim", "p_grid", "lat_grid", "lon_grid" ),
6242  GIN( "g1", "g2", "g3", "hse", "method", "dt" ),
6243  GIN_TYPE( "Vector", "Vector", "Vector", "String", "String", "Numeric" ),
6244  GIN_DEFAULT( NODEF, NODEF, NODEF, "on", "analytical", "0.1" ),
6245  GIN_DESC( "Pressure retrieval grid.",
6246  "Latitude retrieval grid.",
6247  "Longitude retreival grid.",
6248  "Flag to assume HSE or not (\"on\" or \"off\").",
6249  "Calculation method. See above.",
6250  "Size of perturbation [K]."
6251  )
6252  ));
6253 
6254  md_data_raw.push_back
6255  ( MdRecord
6256  ( NAME( "jacobianAddWind" ),
6257  DESCRIPTION
6258  (
6259  "Includes one atmospheric wind component in the Jacobian.\n"
6260  "\n"
6261  "The method follows the pattern of other Jacobian methods. The\n"
6262  "calculations can only be performed by analytic expressions.\n"
6263  "\n"
6264  "As mentioned, the wind components are assumed to be retrieved\n"
6265  "separately, and, hence, the argument *component* can be \"u\",\n"
6266  "\"v\" or \"w\". \n"
6267  ),
6268  AUTHORS( "Patrick Eriksson" ),
6269  OUT( "jacobian_quantities", "jacobian_agenda" ),
6270  GOUT(),
6271  GOUT_TYPE(),
6272  GOUT_DESC(),
6273  IN( "jacobian_quantities", "jacobian_agenda",
6274  "atmosphere_dim", "p_grid", "lat_grid", "lon_grid" ),
6275  GIN( "g1", "g2", "g3", "component" ),
6276  GIN_TYPE( "Vector", "Vector", "Vector", "String" ),
6277  GIN_DEFAULT( NODEF, NODEF, NODEF, "v" ),
6278  GIN_DESC( "Pressure retrieval grid.",
6279  "Latitude retrieval grid.",
6280  "Longitude retreival grid.",
6281  "Wind component to retrieve"
6282  )
6283  ));
6284 
6285  md_data_raw.push_back
6286  ( MdRecord
6287  ( NAME( "jacobianCalcAbsSpeciesAnalytical" ),
6288  DESCRIPTION
6289  (
6290  "This function doesn't do anything. It just exists to satisfy\n"
6291  "the input and output requirement of the *jacobian_agenda*.\n"
6292  "\n"
6293  "This function is added to *jacobian_agenda* by\n"
6294  "jacobianAddAbsSpecies and should normally not be called\n"
6295  "by the user.\n"
6296  ),
6297  AUTHORS( "Oliver Lemke" ),
6298  OUT( "jacobian" ),
6299  GOUT(),
6300  GOUT_TYPE(),
6301  GOUT_DESC(),
6302  IN( "jacobian",
6303  "mblock_index", "iyb", "yb" ),
6304  GIN(),
6305  GIN_TYPE(),
6306  GIN_DEFAULT(),
6307  GIN_DESC()
6308  ));
6309 
6310  md_data_raw.push_back
6311  ( MdRecord
6312  ( NAME( "jacobianCalcAbsSpeciesPerturbations" ),
6313  DESCRIPTION
6314  (
6315  "Calculates absorption species jacobians by perturbations.\n"
6316  "\n"
6317  "This function is added to *jacobian_agenda* by\n"
6318  "jacobianAddAbsSpecies and should normally not be called\n"
6319  "by the user.\n"
6320  ),
6321  AUTHORS( "Mattias Ekstrom", "Patrick Eriksson" ),
6322  OUT( "jacobian" ),
6323  GOUT(),
6324  GOUT_TYPE(),
6325  GOUT_DESC(),
6326  IN( "jacobian",
6327  "mblock_index", "iyb", "yb", "atmosphere_dim", "p_grid", "lat_grid",
6328  "lon_grid", "t_field", "z_field", "vmr_field", "abs_species",
6329  "cloudbox_on", "stokes_dim", "f_grid",
6330  "sensor_pos", "sensor_los", "transmitter_pos", "mblock_za_grid",
6331  "mblock_aa_grid", "antenna_dim", "sensor_response",
6332  "iy_main_agenda", "jacobian_quantities", "jacobian_indices" ),
6333  GIN( "species" ),
6334  GIN_TYPE( "String" ),
6335  GIN_DEFAULT( NODEF ),
6336  GIN_DESC( "Species of interest." ),
6337  SETMETHOD( true )
6338  ));
6339 
6340  md_data_raw.push_back
6341  ( MdRecord
6342  ( NAME( "jacobianCalcFreqShift" ),
6343  DESCRIPTION
6344  (
6345  "Calculates frequency shift jacobians by interpolation\n"
6346  "of *iyb*.\n"
6347  "\n"
6348  "This function is added to *jacobian_agenda* by jacobianAddFreqShift\n"
6349  "and should normally not be called by the user.\n"
6350  ),
6351  AUTHORS( "Patrick Eriksson" ),
6352  OUT( "jacobian" ),
6353  GOUT(),
6354  GOUT_TYPE(),
6355  GOUT_DESC(),
6356  IN( "jacobian",
6357  "mblock_index", "iyb", "yb", "stokes_dim", "f_grid", "sensor_los",
6358  "mblock_za_grid", "mblock_aa_grid", "antenna_dim",
6359  "sensor_response", "sensor_time", "jacobian_quantities",
6360  "jacobian_indices" ),
6361  GIN(),
6362  GIN_TYPE(),
6363  GIN_DEFAULT(),
6364  GIN_DESC()
6365  ));
6366 
6367  md_data_raw.push_back
6368  ( MdRecord
6369  ( NAME( "jacobianCalcFreqStretch" ),
6370  DESCRIPTION
6371  (
6372  "Calculates frequency stretch jacobians by interpolation\n"
6373  "of *iyb*.\n"
6374  "\n"
6375  "This function is added to *jacobian_agenda* by jacobianAddFreqStretch\n"
6376  "and should normally not be called by the user.\n"
6377  ),
6378  AUTHORS( "Patrick Eriksson" ),
6379  OUT( "jacobian" ),
6380  GOUT(),
6381  GOUT_TYPE(),
6382  GOUT_DESC(),
6383  IN( "jacobian",
6384  "mblock_index", "iyb", "yb", "stokes_dim", "f_grid", "sensor_los",
6385  "mblock_za_grid", "mblock_aa_grid", "antenna_dim",
6386  "sensor_response", "sensor_response_pol_grid",
6387  "sensor_response_f_grid", "sensor_response_za_grid",
6388  "sensor_time", "jacobian_quantities",
6389  "jacobian_indices" ),
6390  GIN(),
6391  GIN_TYPE(),
6392  GIN_DEFAULT(),
6393  GIN_DESC()
6394  ));
6395 
6396  /*
6397  md_data_raw.push_back
6398  ( MdRecord
6399  ( NAME( "jacobianCalcParticle" ),
6400  DESCRIPTION
6401  (
6402  "Calculates particle number densities jacobians by perturbations\n"
6403  "\n"
6404  "This function is added to *jacobian_agenda* by jacobianAddParticle\n"
6405  "and should normally not be called by the user.\n"
6406  ),
6407  AUTHORS( "Mattias Ekstrom", "Patrick Eriksson" ),
6408  OUT( "jacobian" ),
6409  GOUT(),
6410  GOUT_TYPE(),
6411  GOUT_DESC(),
6412  IN( "y", "jacobian_quantities", "jacobian_indices", "pnd_field_perturb",
6413  "jacobian_particle_update_agenda",
6414  "ppath_step_agenda", "rte_agenda", "iy_space_agenda",
6415  "surface_rtprop_agenda", "iy_cloudbox_agenda", "atmosphere_dim",
6416  "p_grid", "lat_grid", "lon_grid", "z_field", "t_field", "vmr_field",
6417  "refellipsoid", "z_surface",
6418  "cloudbox_on", "cloudbox_limits", "pnd_field",
6419  "sensor_response", "sensor_pos", "sensor_los", "f_grid",
6420  "stokes_dim", "antenna_dim", "mblock_za_grid", "mblock_aa_grid" ),
6421  GIN(),
6422  GIN_TYPE(),
6423  GIN_DEFAULT(),
6424  GIN_DESC()
6425  ));
6426 
6427  */
6428 
6429  md_data_raw.push_back
6430  ( MdRecord
6431  ( NAME( "jacobianCalcPointingZaInterp" ),
6432  DESCRIPTION
6433  (
6434  "Calculates zenith angle pointing deviation jacobians by\n"
6435  "inter-extrapolation of *iyb*.\n"
6436  "\n"
6437  "This function is added to *jacobian_agenda* by\n"
6438  "jacobianAddPointingZa and should normally not be\n"
6439  "called by the user.\n"
6440  ),
6441  AUTHORS( "Patrick Eriksson" ),
6442  OUT( "jacobian" ),
6443  GOUT(),
6444  GOUT_TYPE(),
6445  GOUT_DESC(),
6446  IN( "jacobian", "mblock_index", "iyb", "yb", "stokes_dim", "f_grid",
6447  "sensor_los", "mblock_za_grid", "mblock_aa_grid", "antenna_dim",
6448  "sensor_response", "sensor_time",
6449  "jacobian_quantities", "jacobian_indices" ),
6450  GIN(),
6451  GIN_TYPE(),
6452  GIN_DEFAULT(),
6453  GIN_DESC()
6454  ));
6455 
6456  md_data_raw.push_back
6457  ( MdRecord
6458  ( NAME( "jacobianCalcPointingZaRecalc" ),
6459  DESCRIPTION
6460  (
6461  "Calculates zenith angle pointing deviation jacobians by\n"
6462  "recalulation of *iyb*.\n"
6463  "\n"
6464  "This function is added to *jacobian_agenda* by\n"
6465  "jacobianAddPointingZa and should normally not be\n"
6466  "called by the user.\n"
6467  ),
6468  AUTHORS( "Mattias Ekstrom", "Patrick Eriksson" ),
6469  OUT( "jacobian" ),
6470  GOUT(),
6471  GOUT_TYPE(),
6472  GOUT_DESC(),
6473  IN( "jacobian", "mblock_index", "iyb", "yb", "atmosphere_dim",
6474  "t_field", "z_field", "vmr_field", "cloudbox_on", "stokes_dim",
6475  "f_grid", "sensor_pos", "sensor_los", "transmitter_pos",
6476  "mblock_za_grid", "mblock_aa_grid", "antenna_dim",
6477  "sensor_response", "sensor_time",
6478  "iy_main_agenda", "jacobian_quantities",
6479  "jacobian_indices" ),
6480  GIN(),
6481  GIN_TYPE(),
6482  GIN_DEFAULT(),
6483  GIN_DESC()
6484  ));
6485 
6486  md_data_raw.push_back
6487  ( MdRecord
6488  ( NAME( "jacobianCalcPolyfit" ),
6489  DESCRIPTION
6490  (
6491  "Calculates jacobians for polynomial baseline fit.\n"
6492  "\n"
6493  "This function is added to *jacobian_agenda* by jacobianAddPolyfit\n"
6494  "and should normally not be called by the user.\n"
6495  ),
6496  AUTHORS( "Patrick Eriksson" ),
6497  OUT( "jacobian" ),
6498  GOUT(),
6499  GOUT_TYPE(),
6500  GOUT_DESC(),
6501  IN( "jacobian", "mblock_index", "iyb", "yb", "sensor_response",
6502  "sensor_response_pol_grid", "sensor_response_f_grid",
6503  "sensor_response_za_grid",
6504  "jacobian_quantities", "jacobian_indices" ),
6505  GIN( "poly_coeff" ),
6506  GIN_TYPE( "Index" ),
6507  GIN_DEFAULT( NODEF ),
6508  GIN_DESC( "Polynomial coefficient to handle." ),
6509  SETMETHOD( true )
6510  ));
6511 
6512  md_data_raw.push_back
6513  ( MdRecord
6514  ( NAME( "jacobianCalcSinefit" ),
6515  DESCRIPTION
6516  (
6517  "Calculates jacobians for sinusoidal baseline fit.\n"
6518  "\n"
6519  "This function is added to *jacobian_agenda* by jacobianAddPolyfit\n"
6520  "and should normally not be called by the user.\n"
6521  ),
6522  AUTHORS( "Patrick Eriksson" ),
6523  OUT( "jacobian" ),
6524  GOUT(),
6525  GOUT_TYPE(),
6526  GOUT_DESC(),
6527  IN( "jacobian", "mblock_index", "iyb", "yb", "sensor_response",
6528  "sensor_response_pol_grid", "sensor_response_f_grid",
6529  "sensor_response_za_grid",
6530  "jacobian_quantities", "jacobian_indices" ),
6531  GIN( "period_index" ),
6532  GIN_TYPE( "Index" ),
6533  GIN_DEFAULT( NODEF ),
6534  GIN_DESC( "Index among the period length specified for add-method." ),
6535  SETMETHOD( true )
6536  ));
6537 
6538  md_data_raw.push_back
6539  ( MdRecord
6540  ( NAME( "jacobianCalcTemperatureAnalytical" ),
6541  DESCRIPTION
6542  (
6543  "This function doesn't do anything. It just exists to satisfy\n"
6544  "the input and output requirement of the *jacobian_agenda*.\n"
6545  "\n"
6546  "This function is added to *jacobian_agenda* by\n"
6547  "jacobianAddTemperature and should normally not be called\n"
6548  "by the user.\n"
6549  ),
6550  AUTHORS( "Oliver Lemke" ),
6551  OUT( "jacobian" ),
6552  GOUT(),
6553  GOUT_TYPE(),
6554  GOUT_DESC(),
6555  IN( "jacobian",
6556  "mblock_index", "iyb", "yb" ),
6557  GIN(),
6558  GIN_TYPE(),
6559  GIN_DEFAULT(),
6560  GIN_DESC()
6561  ));
6562 
6563  md_data_raw.push_back
6564  ( MdRecord
6565  ( NAME( "jacobianCalcTemperaturePerturbations" ),
6566  DESCRIPTION
6567  (
6568  "Calculates atmospheric temperature jacobians by perturbations.\n"
6569  "\n"
6570  "This function is added to *jacobian_agenda* by\n"
6571  "jacobianAddTemperature and should normally not be called\n"
6572  "by the user.\n"
6573  ),
6574  AUTHORS( "Mattias Ekstrom", "Patrick Eriksson" ),
6575  OUT( "jacobian" ),
6576  GOUT(),
6577  GOUT_TYPE(),
6578  GOUT_DESC(),
6579  IN( "jacobian",
6580  "mblock_index", "iyb", "yb", "atmosphere_dim", "p_grid", "lat_grid",
6581  "lon_grid", "lat_true", "lon_true", "t_field", "z_field",
6582  "vmr_field", "abs_species", "refellipsoid", "z_surface",
6583  "cloudbox_on", "stokes_dim", "f_grid", "sensor_pos", "sensor_los",
6584  "transmitter_pos", "mblock_za_grid", "mblock_aa_grid",
6585  "antenna_dim", "sensor_response", "iy_main_agenda",
6586  "g0_agenda", "molarmass_dry_air", "p_hse", "z_hse_accuracy",
6587  "jacobian_quantities", "jacobian_indices" ),
6588  GIN(),
6589  GIN_TYPE(),
6590  GIN_DEFAULT(),
6591  GIN_DESC()
6592  ));
6593 
6594  md_data_raw.push_back
6595  ( MdRecord
6596  ( NAME( "jacobianCalcWindAnalytical" ),
6597  DESCRIPTION
6598  (
6599  "This function doesn't do anything. It just exists to satisfy\n"
6600  "the input and output requirement of the *jacobian_agenda*.\n"
6601  "\n"
6602  "This function is added to *jacobian_agenda* by\n"
6603  "jacobianAddWind and should normally not be called\n"
6604  "by the user.\n"
6605  ),
6606  AUTHORS( "Oliver Lemke" ),
6607  OUT( "jacobian" ),
6608  GOUT(),
6609  GOUT_TYPE(),
6610  GOUT_DESC(),
6611  IN( "jacobian",
6612  "mblock_index", "iyb", "yb" ),
6613  GIN(),
6614  GIN_TYPE(),
6615  GIN_DEFAULT(),
6616  GIN_DESC()
6617  ));
6618 
6619  md_data_raw.push_back
6620  ( MdRecord
6621  ( NAME( "jacobianClose" ),
6622  DESCRIPTION
6623  (
6624  "Closes the array of retrieval quantities and prepares for\n"
6625  "calculation of the Jacobian matrix.\n"
6626  "\n"
6627  "This function closes the *jacobian_quantities* array, sets the\n"
6628  "correct size of *jacobian* and sets *jacobian_do* to 1.\n"
6629  "\n"
6630  "Retrieval quantities should not be added after a call to this WSM.\n"
6631  "No calculations are performed here.\n"
6632  ),
6633  AUTHORS( "Mattias Ekstrom" ),
6634  OUT( "jacobian_do", "jacobian_indices", "jacobian_agenda" ),
6635  GOUT(),
6636  GOUT_TYPE(),
6637  GOUT_DESC(),
6638  IN( "jacobian_agenda", "jacobian_quantities", "sensor_pos", "sensor_response" ),
6639  GIN(),
6640  GIN_TYPE(),
6641  GIN_DEFAULT(),
6642  GIN_DESC()
6643  ));
6644 
6645  md_data_raw.push_back
6646  ( MdRecord
6647  ( NAME( "jacobianInit" ),
6648  DESCRIPTION
6649  (
6650  "Initialises the variables connected to the Jacobian matrix.\n"
6651  "\n"
6652  "This function initialises the *jacobian_quantities* array so\n"
6653  "that retrieval quantities can be added to it. Accordingly, it has\n"
6654  "to be called before any calls to jacobianAddTemperature or\n"
6655  "similar methods.\n"
6656  "\n"
6657  "The Jacobian quantities are initialised to be empty.\n"
6658  ),
6659  AUTHORS( "Mattias Ekstrom" ),
6660  OUT( "jacobian_quantities", "jacobian_indices","jacobian_agenda" ),
6661  GOUT(),
6662  GOUT_TYPE(),
6663  GOUT_DESC(),
6664  IN(),
6665  GIN(),
6666  GIN_TYPE(),
6667  GIN_DEFAULT(),
6668  GIN_DESC()
6669  ));
6670 
6671  md_data_raw.push_back
6672  ( MdRecord
6673  ( NAME( "jacobianOff" ),
6674  DESCRIPTION
6675  (
6676  "Makes mandatory initialisation of some jacobian variables.\n"
6677  "\n"
6678  "Some jacobian WSVs must be initilised even if no such calculations\n"
6679  "will be performed and this is handled with this method. That is,\n"
6680  "this method must be called when no jacobians will be calculated.\n"
6681  "Sets *jacobian_on* to 0.\n"
6682  ),
6683  AUTHORS( "Patrick Eriksson" ),
6684  OUT( "jacobian_do", "jacobian_agenda", "jacobian_quantities",
6685  "jacobian_indices" ),
6686  GOUT(),
6687  GOUT_TYPE(),
6688  GOUT_DESC(),
6689  IN(),
6690  GIN(),
6691  GIN_TYPE(),
6692  GIN_DEFAULT(),
6693  GIN_DESC()
6694  ));
6695 
6696  md_data_raw.push_back
6697  ( MdRecord
6698  ( NAME( "lat_gridFromRawField" ),
6699  DESCRIPTION
6700  (
6701  "Sets *lat_grid* according to given raw atmospheric field's lat_grid.\n"
6702  "Similar to *p_gridFromZRaw*, but acting on a generic *GriddedField3*\n"
6703  "(e.g., a wind or magnetic field component).\n"
6704  ),
6705  AUTHORS( "Jana Mendrok" ),
6706  OUT( "lat_grid" ),
6707  GOUT(),
6708  GOUT_TYPE(),
6709  GOUT_DESC(),
6710  IN( ),
6711  GIN( "field_raw" ),
6712  GIN_TYPE( "GriddedField3" ),
6713  GIN_DEFAULT( NODEF ),
6714  GIN_DESC( "A raw atmospheric field." )
6715  ));
6716 
6717  md_data_raw.push_back
6718  ( MdRecord
6719  ( NAME( "lon_gridFromRawField" ),
6720  DESCRIPTION
6721  (
6722  "Sets *lon_grid* according to given raw atmospheric field's lat_grid.\n"
6723  "Similar to *p_gridFromZRaw*, but acting on a generic *GriddedField3*\n"
6724  "(e.g., a wind or magnetic field component).\n"
6725  ),
6726  AUTHORS( "Jana Mendrok" ),
6727  OUT( "lon_grid" ),
6728  GOUT(),
6729  GOUT_TYPE(),
6730  GOUT_DESC(),
6731  IN( ),
6732  GIN( "field_raw" ),
6733  GIN_TYPE( "GriddedField3" ),
6734  GIN_DEFAULT( NODEF ),
6735  GIN_DESC( "A raw atmospheric field." )
6736  ));
6737 
6738  md_data_raw.push_back
6739  ( MdRecord
6740  ( NAME( "line_mixing_dataInit" ),
6741  DESCRIPTION
6742  (
6743  "Initialize *line_mixing_data* and *line_mixing_data_lut*.\n"
6744  "Resizes first dimension of both to the same size as *abs_species*.\n"
6745  ),
6746  AUTHORS( "Oliver Lemke" ),
6747  OUT( "line_mixing_data", "line_mixing_data_lut" ),
6748  GOUT(),
6749  GOUT_TYPE(),
6750  GOUT_DESC(),
6751  IN( "abs_species" ),
6752  GIN(),
6753  GIN_TYPE(),
6754  GIN_DEFAULT(),
6755  GIN_DESC()
6756  ));
6757 
6758  md_data_raw.push_back
6759  ( MdRecord
6760  ( NAME( "line_mixing_dataMatch" ),
6761  DESCRIPTION
6762  (
6763  "Matches line mixing records to a species in *abs_lines_per_species*.\n"
6764  "*line_mixing_dataInit* must be called before this method.\n"
6765  "\n"
6766  " ArrayOfLineMixingRecordCreate(lm_o2)\n"
6767  " ReadXML(lm_o2, \"o2_v1_0_band_40-120_GHz.xml\")\n"
6768  " line_mixing_dataInit\n"
6769  " line_mixing_dataMatch(species_tag=\"O2-66-LM_2NDORDER\",\n"
6770  " line_mixing_records=lm_o2)\n"
6771 
6772  ),
6773  AUTHORS( "Oliver Lemke" ),
6774  OUT( "line_mixing_data", "line_mixing_data_lut" ),
6775  GOUT(),
6776  GOUT_TYPE(),
6777  GOUT_DESC(),
6778  IN( "line_mixing_data", "line_mixing_data_lut",
6779  "abs_lines_per_species", "abs_species" ),
6780  GIN( "species_tag", "line_mixing_records" ),
6781  GIN_TYPE( "String", "ArrayOfLineMixingRecord" ),
6782  GIN_DEFAULT( NODEF, NODEF ),
6783  GIN_DESC( "Species tag", "Unmatched line mixing data.")
6784  ));
6785 
6786  md_data_raw.push_back
6787  ( MdRecord
6788  ( NAME( "Massdensity_cleanup" ),
6789  DESCRIPTION
6790  (
6791  "This WSM checks if *massdensity_field* contains values smaller than\n"
6792  "*massdensity_threshold*. In this case, these values will be set to zero.\n"
6793  "\n"
6794  "The Method should be applied if *massdensity_field* contains unrealistic small\n"
6795  "or erroneous data. (e.g. the chevallierl_91l data sets contain these small values)\n"
6796  "\n"
6797  "*Massdensity_cleanup* is called after generation of atmopheric fields.\n"
6798  "\n"
6799  "*Default value*:\t1e-15\n"
6800  ),
6801  AUTHORS( "Daniel Kreyling" ),
6802  OUT( "massdensity_field" ),
6803  GOUT(),
6804  GOUT_TYPE(),
6805  GOUT_DESC(),
6806  IN( "massdensity_field" ),
6807  GIN( "massdensity_threshold" ),
6808  GIN_TYPE( "Numeric" ),
6809  GIN_DEFAULT( "1e-15" ),
6810  GIN_DESC( "Values in *massdensity_field* smaller than *massdensity_threshold* will be set to zero." )
6811  ));
6812 
6813  md_data_raw.push_back
6814  ( MdRecord
6815  ( NAME( "MatrixAddScalar" ),
6816  DESCRIPTION
6817  (
6818  "Adds a scalar to all elements of a matrix.\n"
6819  "\n"
6820  "The result can either be stored in the same or another matrix.\n"
6821  ),
6822  AUTHORS( "Patrick Eriksson" ),
6823  OUT(),
6824  GOUT( "out" ),
6825  GOUT_TYPE( "Matrix" ),
6826  GOUT_DESC( "Output matrix" ),
6827  IN(),
6828  GIN( "in" , "value" ),
6829  GIN_TYPE( "Matrix", "Numeric" ),
6830  GIN_DEFAULT( NODEF , NODEF ),
6831  GIN_DESC( "Input matrix.", "The value to be added to the matrix." )
6832  ));
6833 
6834  md_data_raw.push_back
6835  ( MdRecord
6836  ( NAME( "MatrixCBR" ),
6837  DESCRIPTION
6838  (
6839  "Sets a matrix to hold cosmic background radiation (CBR).\n"
6840  "\n"
6841  "The CBR is assumed to be un-polarized and Stokes components 2-4\n"
6842  "are zero. Number of Stokes components, that equals the number\n"
6843  "of columns in the created matrix, is determined by *stokes_dim*.\n"
6844  "The number of rows in the created matrix equals the length of the\n"
6845  "given frequency vector.\n"
6846  "\n"
6847  "The cosmic radiation is modelled as blackbody radiation for the\n"
6848  "temperature given by the global constant COSMIC_BG_TEMP, set in\n"
6849  "the file constants.cc. The frequencies are taken from the generic\n"
6850  "input vector.\n"
6851  "\n"
6852  "The standard definition, in ARTS, of the Planck function is\n"
6853  "followed and the unit of the returned data is W/(m3 * Hz * sr).\n"
6854  ),
6855  AUTHORS( "Patrick Eriksson" ),
6856  OUT(),
6857  GOUT( "out" ),
6858  GOUT_TYPE( "Matrix" ),
6859  GOUT_DESC( "Variable to initialize." ),
6860  IN( "stokes_dim" ),
6861  GIN( "f" ),
6862  GIN_TYPE( "Vector" ),
6863  GIN_DEFAULT( NODEF ),
6864  GIN_DESC( "Frequency vector." )
6865  ));
6866 
6867  md_data_raw.push_back
6868  ( MdRecord
6869  ( NAME( "MatrixExtractFromTensor3" ),
6870  DESCRIPTION
6871  (
6872  "Extracts a Matrix from a Tensor3.\n"
6873  "\n"
6874  "Copies page or row or column with given Index from input Tensor3\n"
6875  "variable to output Matrix.\n"
6876  "Higher order equivalent of *VectorExtractFromMatrix*.\n"
6877  ),
6878  AUTHORS( "Jana Mendrok" ),
6879  OUT(),
6880  GOUT( "out" ),
6881  GOUT_TYPE( "Matrix" ),
6882  GOUT_DESC( "Extracted matrix." ),
6883  IN(),
6884  GIN( "in" , "i" , "direction" ),
6885  GIN_TYPE( "Tensor3", "Index", "String" ),
6886  GIN_DEFAULT( NODEF , NODEF , NODEF ),
6887  GIN_DESC( "Input matrix.",
6888  "Index of page or row or column to extract.",
6889  "Direction. \"page\" or \"row\" or \"column\"."
6890  )
6891  ));
6892 
6893  md_data_raw.push_back
6894  ( MdRecord
6895  ( NAME( "MatrixMatrixMultiply" ),
6896  DESCRIPTION
6897  (
6898  "Multiply a Matrix with another Matrix and store the result in the result\n"
6899  "Matrix.\n"
6900  "\n"
6901  "This just computes the normal Matrix-Matrix product, Y=M*X. It is ok\n"
6902  "if Y and X are the same Matrix. This function is handy for\n"
6903  "multiplying the H Matrix to batch spectra.\n"
6904  ),
6905  AUTHORS( "Stefan Buehler" ),
6906  OUT(),
6907  GOUT( "out" ),
6908  GOUT_TYPE( "Matrix" ),
6909  GOUT_DESC( "The result of the multiplication (dimension mxc)." ),
6910  IN(),
6911  GIN( "m" , "x" ),
6912  GIN_TYPE( "Matrix", "Matrix" ),
6913  GIN_DEFAULT( NODEF , NODEF ),
6914  GIN_DESC( "The Matrix to multiply (dimension mxn).",
6915  "The original Matrix (dimension nxc)." )
6916  ));
6917 
6918  md_data_raw.push_back
6919  ( MdRecord
6920  ( NAME( "MatrixPlanck" ),
6921  DESCRIPTION
6922  (
6923  "Sets a matrix to hold blackbody radiation.\n"
6924  "\n"
6925  "The radiation is assumed to be un-polarized and Stokes components\n"
6926  "2-4 are zero. Number of Stokes components, that equals the number\n"
6927  "of columns in the created matrix, is determined by *stokes_dim*.\n"
6928  "The number of rows in the created matrix equals the length of the\n"
6929  "given frequency vector.\n"
6930  "\n"
6931  "The standard definition, in ARTS, of the Planck function is\n"
6932  "followed and the unit of the returned data is W/(m3 * Hz * sr).\n"
6933  ),
6934  AUTHORS( "Patrick Eriksson" ),
6935  OUT(),
6936  GOUT( "out" ),
6937  GOUT_TYPE( "Matrix" ),
6938  GOUT_DESC( "Variable to initialize." ),
6939  IN( "stokes_dim" ),
6940  GIN( "f" , "t" ),
6941  GIN_TYPE( "Vector", "Numeric" ),
6942  GIN_DEFAULT( NODEF , NODEF ),
6943  GIN_DESC( "Frequency vector.",
6944  "Temperature [K]." )
6945  ));
6946 
6947  md_data_raw.push_back
6948  ( MdRecord
6949  ( NAME( "MatrixScale" ),
6950  DESCRIPTION
6951  (
6952  "Scales all elements of a matrix with the specified value.\n"
6953  "\n"
6954  "The result can either be stored in the same or another\n"
6955  "variable.\n"
6956  ),
6957  AUTHORS( "Patrick Eriksson" ),
6958  OUT(),
6959  GOUT( "out" ),
6960  GOUT_TYPE( "Matrix" ),
6961  GOUT_DESC( "Output matrix" ),
6962  IN(),
6963  GIN( "in" , "value" ),
6964  GIN_TYPE( "Matrix", "Numeric" ),
6965  GIN_DEFAULT( NODEF , NODEF ),
6966  GIN_DESC( "Input matrix.",
6967  "The value to be multiplied with the matrix."
6968  )
6969  ));
6970 
6971  md_data_raw.push_back
6972  ( MdRecord
6973  ( NAME( "MatrixSet" ),
6974  DESCRIPTION
6975  (
6976  "Initialize a Matrix from the given list of numbers.\n"
6977  "\n"
6978  "Usage:\n"
6979  " MatrixSet(m1, [1, 2, 3; 4, 5, 6])\n"
6980  ),
6981  AUTHORS( "Oliver Lemke" ),
6982  OUT(),
6983  GOUT( "out" ),
6984  GOUT_TYPE( "Matrix" ),
6985  GOUT_DESC( "The newly created matrix" ),
6986  IN(),
6987  GIN( "value" ),
6988  GIN_TYPE( "Matrix" ),
6989  GIN_DEFAULT( NODEF ),
6990  GIN_DESC( "The values of the newly created matrix. Elements are separated "
6991  "by commas, rows by semicolons."),
6992  SETMETHOD( true )
6993  ));
6994 
6995  md_data_raw.push_back
6996  ( MdRecord
6997  ( NAME( "MatrixSetConstant" ),
6998  DESCRIPTION
6999  (
7000  "Creates a matrix and sets all elements to the specified value.\n"
7001  "\n"
7002  "The size is determined by *ncols* and *nrows*.\n"
7003  ),
7004  AUTHORS( "Patrick Eriksson" ),
7005  OUT(),
7006  GOUT( "out" ),
7007  GOUT_TYPE( "Matrix" ),
7008  GOUT_DESC( "Variable to initialize." ),
7009  IN( "nrows", "ncols" ),
7010  GIN( "value" ),
7011  GIN_TYPE( "Numeric" ),
7012  GIN_DEFAULT( NODEF ),
7013  GIN_DESC( "Matrix value." )
7014  ));
7015 
7016  md_data_raw.push_back
7017  ( MdRecord
7018  ( NAME( "MatrixUnitIntensity" ),
7019  DESCRIPTION
7020  (
7021  "Sets a matrix to hold unpolarised radiation with unit intensity.\n"
7022  "\n"
7023  "Works as MatrixPlanck where the radiation is set to 1.\n"
7024  ),
7025  AUTHORS( "Patrick Eriksson" ),
7026  OUT(),
7027  GOUT( "out" ),
7028  GOUT_TYPE( "Matrix" ),
7029  GOUT_DESC( "Variable to initialize." ),
7030  IN( "stokes_dim" ),
7031  GIN( "f" ),
7032  GIN_TYPE( "Vector" ),
7033  GIN_DEFAULT( NODEF ),
7034  GIN_DESC( "Frequency vector." )
7035  ));
7036 
7037  md_data_raw.push_back
7038  ( MdRecord
7039  ( NAME( "Matrix1ColFromVector" ),
7040  DESCRIPTION
7041  (
7042  "Forms a matrix containing one column from a vector.\n"
7043  ),
7044  AUTHORS( "Mattias Ekstrom" ),
7045  OUT(),
7046  GOUT( "out" ),
7047  GOUT_TYPE( "Matrix" ),
7048  GOUT_DESC( "Variable to initialize." ),
7049  IN(),
7050  GIN( "v" ),
7051  GIN_TYPE( "Vector" ),
7052  GIN_DEFAULT( NODEF ),
7053  GIN_DESC( "The vector to be copied." )
7054  ));
7055 
7056  md_data_raw.push_back
7057  ( MdRecord
7058  ( NAME( "Matrix2ColFromVectors" ),
7059  DESCRIPTION
7060  (
7061  "Forms a matrix containing two columns from two vectors.\n"
7062  "\n"
7063  "The vectors are included as columns in the matrix in the same order\n"
7064  "as they are given.\n"
7065  ),
7066  AUTHORS( "Mattias Ekstrom" ),
7067  OUT(),
7068  GOUT( "out" ),
7069  GOUT_TYPE( "Matrix" ),
7070  GOUT_DESC( "Variable to initialize." ),
7071  IN(),
7072  GIN( "v1" , "v2" ),
7073  GIN_TYPE( "Vector", "Vector" ),
7074  GIN_DEFAULT( NODEF , NODEF ),
7075  GIN_DESC( "The vector to be copied into the first column.",
7076  "The vector to be copied into the second column."
7077  )
7078  ));
7079 
7080  md_data_raw.push_back
7081  ( MdRecord
7082  ( NAME( "Matrix3ColFromVectors" ),
7083  DESCRIPTION
7084  (
7085  "Forms a matrix containing three columns from three vectors.\n"
7086  "\n"
7087  "The vectors are included as columns in the matrix in the same order\n"
7088  "as they are given.\n"
7089  ),
7090  AUTHORS( "Mattias Ekstrom" ),
7091  OUT(),
7092  GOUT( "out" ),
7093  GOUT_TYPE( "Matrix" ),
7094  GOUT_DESC( "Variable to initialize." ),
7095  IN(),
7096  GIN( "v1" , "v2" , "v3" ),
7097  GIN_TYPE( "Vector", "Vector", "Vector" ),
7098  GIN_DEFAULT( NODEF , NODEF , NODEF ),
7099  GIN_DESC( "The vector to be copied into the first column.",
7100  "The vector to be copied into the second column.",
7101  "The vector to be copied into the third column."
7102  )
7103  ));
7104 
7105  md_data_raw.push_back
7106  ( MdRecord
7107  ( NAME( "Matrix1RowFromVector" ),
7108  DESCRIPTION
7109  (
7110  "Forms a matrix containing one row from a vector.\n"
7111  ),
7112  AUTHORS( "Mattias Ekstrom" ),
7113  OUT(),
7114  GOUT( "out" ),
7115  GOUT_TYPE( "Matrix" ),
7116  GOUT_DESC( "Variable to initialize." ),
7117  IN(),
7118  GIN( "v" ),
7119  GIN_TYPE( "Vector" ),
7120  GIN_DEFAULT( NODEF ),
7121  GIN_DESC( "The vector to be copied." )
7122  ));
7123 
7124  md_data_raw.push_back
7125  ( MdRecord
7126  ( NAME( "Matrix2RowFromVectors" ),
7127  DESCRIPTION
7128  (
7129  "Forms a matrix containing two rows from two vectors.\n"
7130  "\n"
7131  "The vectors are included as rows in the matrix in the same order\n"
7132  "as they are given.\n"
7133  ),
7134  AUTHORS( "Mattias Ekstrom" ),
7135  OUT(),
7136  GOUT( "out" ),
7137  GOUT_TYPE( "Matrix" ),
7138  GOUT_DESC( "Variable to initialize." ),
7139  IN(),
7140  GIN( "v1" , "v2" ),
7141  GIN_TYPE( "Vector", "Vector" ),
7142  GIN_DEFAULT( NODEF , NODEF ),
7143  GIN_DESC( "The vector to be copied into the first row.",
7144  "The vector to be copied into the second row."
7145  )
7146  ));
7147 
7148  md_data_raw.push_back
7149  ( MdRecord
7150  ( NAME( "Matrix3RowFromVectors" ),
7151  DESCRIPTION
7152  (
7153  "Forms a matrix containing three rows from three vectors.\n"
7154  "\n"
7155  "The vectors are included as rows in the matrix in the same order\n"
7156  "as they are given.\n"
7157  ),
7158  AUTHORS( "Mattias Ekstrom" ),
7159  OUT(),
7160  GOUT( "out" ),
7161  GOUT_TYPE( "Matrix" ),
7162  GOUT_DESC( "Variable to initialize." ),
7163  IN(),
7164  GIN( "v1" , "v2" , "v3" ),
7165  GIN_TYPE( "Vector", "Vector", "Vector" ),
7166  GIN_DEFAULT( NODEF , NODEF , NODEF ),
7167  GIN_DESC( "The vector to be copied into the first row.",
7168  "The vector to be copied into the second row.",
7169  "The vector to be copied into the third row."
7170  )
7171  ));
7172 
7173  md_data_raw.push_back
7174  ( MdRecord
7175  ( NAME( "mc_antennaSetGaussian" ),
7176  DESCRIPTION
7177  (
7178  "Makes mc_antenna (used by MCGeneral) a 2D Gaussian pattern.\n"
7179  "\n"
7180  "The gaussian antenna pattern is determined by *za_sigma* and\n"
7181  "*aa_sigma*, which represent the standard deviations in the\n"
7182  "uncorrelated bivariate normal distribution.\n"
7183  ),
7184  AUTHORS( "Cory Davis" ),
7185  OUT( "mc_antenna" ),
7186  GOUT(),
7187  GOUT_TYPE(),
7188  GOUT_DESC(),
7189  IN(),
7190  GIN( "za_sigma", "aa_sigma" ),
7191  GIN_TYPE( "Numeric", "Numeric" ),
7192  GIN_DEFAULT( NODEF, NODEF ),
7193  GIN_DESC( "Width in the zenith angle dimension as described above.",
7194  "Width in the azimuth angle dimension as described above."
7195  )
7196  ));
7197 
7198  md_data_raw.push_back
7199  ( MdRecord
7200  ( NAME( "mc_antennaSetGaussianByFWHM" ),
7201  DESCRIPTION
7202  (
7203  "Makes mc_antenna (used by MCGeneral) a 2D Gaussian pattern.\n"
7204  "\n"
7205  "The gaussian antenna pattern is determined by *za_fwhm* and\n"
7206  "*aa_fwhm*, which represent the full width half maximum (FWHM)\n"
7207  "of the antenna response, in the zenith and azimuthal planes.\n"
7208  ),
7209  AUTHORS( "Cory Davis" ),
7210  OUT( "mc_antenna" ),
7211  GOUT(),
7212  GOUT_TYPE(),
7213  GOUT_DESC(),
7214  IN(),
7215  GIN( "za_fwhm", "aa_fwhm" ),
7216  GIN_TYPE( "Numeric", "Numeric" ),
7217  GIN_DEFAULT( NODEF, NODEF ),
7218  GIN_DESC( "Width in the zenith angle dimension as described above.",
7219  "Width in the azimuth angle dimension as described above."
7220  )
7221  ));
7222 
7223  md_data_raw.push_back
7224  ( MdRecord
7225  ( NAME( "mc_antennaSetPencilBeam" ),
7226  DESCRIPTION
7227  (
7228  "Makes mc_antenna (used by MCGeneral) a pencil beam.\n"
7229  "\n"
7230  "This WSM makes the subsequent MCGeneral WSM perform pencil beam\n"
7231  "RT calculations.\n"
7232  ),
7233  AUTHORS( "Cory Davis" ),
7234  OUT( "mc_antenna" ),
7235  GOUT(),
7236  GOUT_TYPE(),
7237  GOUT_DESC(),
7238  IN(),
7239  GIN(),
7240  GIN_TYPE(),
7241  GIN_DEFAULT(),
7242  GIN_DESC()
7243  ));
7244 
7245  md_data_raw.push_back
7246  ( MdRecord
7247  ( NAME( "MCGeneral" ),
7248  DESCRIPTION
7249  ( "A generalised 3D reversed Monte Carlo radiative algorithm, that\n"
7250  "allows for 2D antenna patterns, surface reflection and arbitrary\n"
7251  "sensor positions.\n"
7252  "\n"
7253  "The main output variables *y* and *mc_error* represent the\n"
7254  "Stokes vector integrated over the antenna function, and the\n"
7255  "estimated error in this vector, respectively.\n"
7256  "\n"
7257  "The WSV *mc_max_iter* describes the maximum number of `photons\'\n"
7258  "used in the simulation (more photons means smaller *mc_error*).\n"
7259  "*mc_std_err* is the desired value of mc_error. *mc_max_time* is\n"
7260  "the maximum allowed number of seconds for MCGeneral. The method\n"
7261  "will terminate once any of the max_iter, std_err, max_time\n"
7262  "criteria are met. If negative values are given for these\n"
7263  "parameters then it is ignored.\n"
7264  "\n"
7265  "The WSV *mc_min_iter* sets the minimum number of photons to apply\n"
7266  "before the condition set by *mc_std_err* is considered. Values\n"
7267  "of *mc_min_iter* below 100 are not accepted.\n"
7268  "\n"
7269  "Negative values of *mc_seed* seed the random number generator\n"
7270  "according to system time, positive *mc_seed* values are taken\n"
7271  "literally.\n"
7272  "\n"
7273  "Only \"1\" and \"RJBT\" are allowed for *iy_unit*. The value of\n"
7274  "*mc_error* follows the selection for *iy_unit* (both for in- and\n"
7275  "output.\n"
7276  ),
7277  AUTHORS( "Cory Davis" ),
7278  OUT( "y", "mc_iteration_count", "mc_error", "mc_points" ),
7279  GOUT(),
7280  GOUT_TYPE(),
7281  GOUT_DESC(),
7282  IN( "mc_antenna", "f_grid", "f_index", "sensor_pos", "sensor_los",
7283  "stokes_dim", "atmosphere_dim", "ppath_step_agenda",
7284  "ppath_lraytrace", "iy_space_agenda", "surface_rtprop_agenda",
7285  "propmat_clearsky_agenda", "p_grid",
7286  "lat_grid", "lon_grid", "z_field", "refellipsoid", "z_surface",
7287  "t_field", "vmr_field", "cloudbox_on", "cloudbox_limits",
7288  "pnd_field", "scat_data_array_mono",
7289  "atmfields_checked", "atmgeom_checked",
7290  "cloudbox_checked", "mc_seed", "iy_unit",
7291  "mc_std_err", "mc_max_time", "mc_max_iter", "mc_min_iter" ),
7292  GIN(),
7293  GIN_TYPE(),
7294  GIN_DEFAULT(),
7295  GIN_DESC()
7296  ));
7297 
7298  md_data_raw.push_back
7299  ( MdRecord
7300  ( NAME( "MCSetSeedFromTime" ),
7301  DESCRIPTION
7302  ( "Sets the value of mc_seed from system time\n" ),
7303  AUTHORS( "Cory Davis" ),
7304  OUT( "mc_seed" ),
7305  GOUT(),
7306  GOUT_TYPE(),
7307  GOUT_DESC(),
7308  IN(),
7309  GIN(),
7310  GIN_TYPE(),
7311  GIN_DEFAULT(),
7312  GIN_DESC()
7313  ));
7314 
7315  md_data_raw.push_back
7316  ( MdRecord
7317  ( NAME( "NumericAdd" ),
7318  DESCRIPTION
7319  (
7320  "Adds a numeric and a value (out = in+value).\n"
7321  "\n"
7322  "The result can either be stored in the same or another numeric.\n"
7323  "(in and out can be the same varible, but not out and value)\n"
7324  ),
7325  AUTHORS( "Patrick Eriksson" ),
7326  OUT(),
7327  GOUT( "out" ),
7328  GOUT_TYPE( "Numeric" ),
7329  GOUT_DESC( "Output numeric." ),
7330  IN(),
7331  GIN( "in" ,
7332  "value" ),
7333  GIN_TYPE( "Numeric",
7334  "Numeric" ),
7335  GIN_DEFAULT( NODEF ,
7336  NODEF ),
7337  GIN_DESC( "Input numeric.",
7338  "Value to add." )
7339  ));
7340 
7341  md_data_raw.push_back
7342  ( MdRecord
7343  ( NAME( "NumericInvScale" ),
7344  DESCRIPTION
7345  (
7346  "Inversely scales/divides a numeric with a value (out = in/value).\n"
7347  "\n"
7348  "The result can either be stored in the same or another numeric.\n"
7349  "(in and out can be the same varible, but not out and value)\n"
7350  ),
7351  AUTHORS( "Jana Mendrok" ),
7352  OUT(),
7353  GOUT( "out" ),
7354  GOUT_TYPE( "Numeric" ),
7355  GOUT_DESC( "Output numeric." ),
7356  IN(),
7357  GIN( "in" ,
7358  "value" ),
7359  GIN_TYPE( "Numeric",
7360  "Numeric" ),
7361  GIN_DEFAULT( NODEF ,
7362  NODEF ),
7363  GIN_DESC( "Input numeric.",
7364  "Scaling value." )
7365  ));
7366 
7367  md_data_raw.push_back
7368  ( MdRecord
7369  ( NAME( "NumericScale" ),
7370  DESCRIPTION
7371  (
7372  "Scales/multiplies a numeric with a value (out = in*value).\n"
7373  "\n"
7374  "The result can either be stored in the same or another numeric.\n"
7375  "(in and out can be the same varible, but not out and value)\n"
7376  ),
7377  AUTHORS( "Patrick Eriksson" ),
7378  OUT(),
7379  GOUT( "out" ),
7380  GOUT_TYPE( "Numeric" ),
7381  GOUT_DESC( "Output numeric." ),
7382  IN(),
7383  GIN( "in" ,
7384  "value" ),
7385  GIN_TYPE( "Numeric",
7386  "Numeric" ),
7387  GIN_DEFAULT( NODEF ,
7388  NODEF ),
7389  GIN_DESC( "Input numeric.",
7390  "Scaling value." )
7391  ));
7392 
7393  md_data_raw.push_back
7394  ( MdRecord
7395  ( NAME( "NumericSet" ),
7396  DESCRIPTION
7397  (
7398  "Sets a numeric workspace variable to the given value.\n"
7399  ),
7400  AUTHORS( "Patrick Eriksson" ),
7401  OUT(),
7402  GOUT( "out" ),
7403  GOUT_TYPE( "Numeric" ),
7404  GOUT_DESC( "Variable to initialize." ),
7405  IN(),
7406  GIN( "value" ),
7407  GIN_TYPE( "Numeric" ),
7408  GIN_DEFAULT( NODEF ),
7409  GIN_DESC( "The value." ),
7410  SETMETHOD( true )
7411  ));
7412 
7413  md_data_raw.push_back
7414  ( MdRecord
7415  ( NAME( "nelemGet" ),
7416  DESCRIPTION
7417  (
7418  "Retrieve nelem from given variable and store the value in the\n"
7419  "variable *nelem*.\n"
7420  ),
7421  AUTHORS( "Oliver Lemke" ),
7422  OUT( "nelem" ),
7423  GOUT(),
7424  GOUT_TYPE(),
7425  GOUT_DESC(),
7426  IN(),
7427  GIN( "v" ),
7428  GIN_TYPE( ARRAY_GROUPS + ", Vector" ),
7429  GIN_DEFAULT( NODEF ),
7430  GIN_DESC( "Variable to get the number of elements from." ),
7431  SETMETHOD( false ),
7432  AGENDAMETHOD( false ),
7433  USES_TEMPLATES( true )
7434  ));
7435 
7436  md_data_raw.push_back
7437  ( MdRecord
7438  ( NAME( "ncolsGet" ),
7439  DESCRIPTION
7440  (
7441  "Retrieve ncols from given variable and store the value in the\n"
7442  "workspace variable *ncols*\n"
7443  ),
7444  AUTHORS( "Oliver Lemke" ),
7445  OUT( "ncols" ),
7446  GOUT(),
7447  GOUT_TYPE(),
7448  GOUT_DESC(),
7449  IN(),
7450  GIN( "v" ),
7451  GIN_TYPE( "Matrix, Sparse, Tensor3, Tensor4, Tensor5, Tensor6, Tensor7" ),
7452  GIN_DEFAULT( NODEF ),
7453  GIN_DESC( "Variable to get the number of columns from." ),
7454  SETMETHOD( false ),
7455  AGENDAMETHOD( false ),
7456  USES_TEMPLATES( true )
7457  ));
7458 
7459  md_data_raw.push_back
7460  ( MdRecord
7461  ( NAME( "nrowsGet" ),
7462  DESCRIPTION
7463  (
7464  "Retrieve nrows from given variable and store the value in the\n"
7465  "workspace variable *nrows*\n"
7466  ),
7467  AUTHORS( "Oliver Lemke" ),
7468  OUT( "nrows" ),
7469  GOUT(),
7470  GOUT_TYPE(),
7471  GOUT_DESC(),
7472  IN(),
7473  GIN( "v" ),
7474  GIN_TYPE( "Matrix, Sparse, Tensor3, Tensor4, Tensor5, Tensor6, Tensor7" ),
7475  GIN_DEFAULT( NODEF ),
7476  GIN_DESC( "Variable to get the number of rows from." ),
7477  SETMETHOD( false ),
7478  AGENDAMETHOD( false ),
7479  USES_TEMPLATES( true )
7480  ));
7481 
7482  md_data_raw.push_back
7483  ( MdRecord
7484  ( NAME( "npagesGet" ),
7485  DESCRIPTION
7486  (
7487  "Retrieve npages from given variable and store the value in the\n"
7488  "workspace variable *npages*\n"
7489  ),
7490  AUTHORS( "Oliver Lemke" ),
7491  OUT( "npages" ),
7492  GOUT(),
7493  GOUT_TYPE(),
7494  GOUT_DESC(),
7495  IN(),
7496  GIN( "v" ),
7497  GIN_TYPE( "Tensor3, Tensor4, Tensor5, Tensor6, Tensor7" ),
7498  GIN_DEFAULT( NODEF ),
7499  GIN_DESC( "Variable to get the number of pages from." ),
7500  SETMETHOD( false ),
7501  AGENDAMETHOD( false ),
7502  USES_TEMPLATES( true )
7503  ));
7504 
7505  md_data_raw.push_back
7506  ( MdRecord
7507  ( NAME( "nbooksGet" ),
7508  DESCRIPTION
7509  (
7510  "Retrieve nbooks from given variable and store the value in the\n"
7511  "workspace variable *nbooks*\n"
7512  ),
7513  AUTHORS( "Oliver Lemke" ),
7514  OUT( "nbooks" ),
7515  GOUT(),
7516  GOUT_TYPE(),
7517  GOUT_DESC(),
7518  IN(),
7519  GIN( "v" ),
7520  GIN_TYPE( "Tensor4, Tensor5, Tensor6, Tensor7" ),
7521  GIN_DEFAULT( NODEF ),
7522  GIN_DESC( "Variable to get the number of books from." ),
7523  SETMETHOD( false ),
7524  AGENDAMETHOD( false ),
7525  USES_TEMPLATES( true )
7526  ));
7527 
7528  md_data_raw.push_back
7529  ( MdRecord
7530  ( NAME( "nshelvesGet" ),
7531  DESCRIPTION
7532  (
7533  "Retrieve nshelves from given variable and store the value in the\n"
7534  "workspace variable *nshelves*\n"
7535  ),
7536  AUTHORS( "Oliver Lemke" ),
7537  OUT( "nshelves" ),
7538  GOUT(),
7539  GOUT_TYPE(),
7540  GOUT_DESC(),
7541  IN(),
7542  GIN( "v" ),
7543  GIN_TYPE( "Tensor5, Tensor6, Tensor7" ),
7544  GIN_DEFAULT( NODEF ),
7545  GIN_DESC( "Variable to get the number of shelves from." ),
7546  SETMETHOD( false ),
7547  AGENDAMETHOD( false ),
7548  USES_TEMPLATES( true )
7549  ));
7550 
7551  md_data_raw.push_back
7552  ( MdRecord
7553  ( NAME( "nvitrinesGet" ),
7554  DESCRIPTION
7555  (
7556  "Retrieve nvitrines from given variable and store the value in the\n"
7557  "workspace variable *nvitrines*\n"
7558  ),
7559  AUTHORS( "Oliver Lemke" ),
7560  OUT( "nvitrines" ),
7561  GOUT(),
7562  GOUT_TYPE(),
7563  GOUT_DESC(),
7564  IN(),
7565  GIN( "v" ),
7566  GIN_TYPE( "Tensor6, Tensor7" ),
7567  GIN_DEFAULT( NODEF ),
7568  GIN_DESC( "Variable to get the number of vitrines from." ),
7569  SETMETHOD( false ),
7570  AGENDAMETHOD( false ),
7571  USES_TEMPLATES( true )
7572  ));
7573 
7574  md_data_raw.push_back
7575  ( MdRecord
7576  ( NAME( "nlibrariesGet" ),
7577  DESCRIPTION
7578  (
7579  "Retrieve nlibraries from given variable and store the value in the\n"
7580  "workspace variable *nlibraries*\n"
7581  ),
7582  AUTHORS( "Oliver Lemke" ),
7583  OUT( "nlibraries" ),
7584  GOUT(),
7585  GOUT_TYPE(),
7586  GOUT_DESC(),
7587  IN(),
7588  GIN( "v" ),
7589  GIN_TYPE( "Tensor7" ),
7590  GIN_DEFAULT( NODEF ),
7591  GIN_DESC( "Variable to get the number of libraries from." ),
7592  SETMETHOD( false ),
7593  AGENDAMETHOD( false ),
7594  USES_TEMPLATES( true )
7595  ));
7596 
7597  md_data_raw.push_back
7598  ( MdRecord
7599  ( NAME( "opt_prop_sptFromData" ),
7600  DESCRIPTION
7601  (
7602  "Calculates opticle properties for the single particle types.\n"
7603  "\n"
7604  "In this function the extinction matrix and the absorption vector\n"
7605  "are calculated in the laboratory frame. An interpolation of the\n"
7606  "data on the actual frequency is the first step in this function.\n"
7607  "The next step is a transformation from the database coordinate\n"
7608  "system to the laboratory coordinate system.\n"
7609  "\n"
7610  "Output of the function are *ext_mat_spt* and *abs_vec_spt* which\n"
7611  "hold the optical properties for a specified propagation direction\n"
7612  "for each particle type.\n"
7613  ),
7614  AUTHORS( "Claudia Emde" ),
7615  OUT( "ext_mat_spt", "abs_vec_spt" ),
7616  GOUT(),
7617  GOUT_TYPE(),
7618  GOUT_DESC(),
7619  IN( "ext_mat_spt", "abs_vec_spt", "scat_data_array", "scat_za_grid",
7620  "scat_aa_grid", "scat_za_index", "scat_aa_index",
7621  "f_index", "f_grid", "rtp_temperature",
7622  "pnd_field", "scat_p_index", "scat_lat_index", "scat_lon_index" ),
7623  GIN(),
7624  GIN_TYPE(),
7625  GIN_DEFAULT(),
7626  GIN_DESC()
7627  ));
7628 
7629  md_data_raw.push_back
7630  ( MdRecord
7631  ( NAME( "opt_prop_sptFromMonoData" ),
7632  DESCRIPTION
7633  (
7634  "Calculates optical properties for the single particle types.\n"
7635  "\n"
7636  "As *opt_prop_sptFromData* but no frequency interpolation is\n"
7637  "performed. The single scattering data is here obtained from\n"
7638  "*scat_data_array_mono*, instead of *scat_data_array*.\n"
7639  ),
7640  AUTHORS( "Cory Davis" ),
7641  OUT( "ext_mat_spt", "abs_vec_spt" ),
7642  GOUT(),
7643  GOUT_TYPE(),
7644  GOUT_DESC(),
7645  IN( "ext_mat_spt", "abs_vec_spt", "scat_data_array_mono", "scat_za_grid",
7646  "scat_aa_grid", "scat_za_index", "scat_aa_index", "rtp_temperature",
7647  "pnd_field", "scat_p_index", "scat_lat_index", "scat_lon_index" ),
7648  GIN(),
7649  GIN_TYPE(),
7650  GIN_DEFAULT(),
7651  GIN_DESC()
7652  ));
7653 
7654  md_data_raw.push_back
7655  ( MdRecord
7656  ( NAME( "output_file_formatSetAscii" ),
7657  DESCRIPTION
7658  (
7659  "Sets the output file format to ASCII.\n"
7660  ),
7661  AUTHORS( "Oliver Lemke" ),
7662  OUT( "output_file_format" ),
7663  GOUT(),
7664  GOUT_TYPE(),
7665  GOUT_DESC(),
7666  IN(),
7667  GIN(),
7668  GIN_TYPE(),
7669  GIN_DEFAULT(),
7670  GIN_DESC()
7671  ));
7672 
7673  md_data_raw.push_back
7674  ( MdRecord
7675  ( NAME( "output_file_formatSetBinary" ),
7676  DESCRIPTION
7677  (
7678  "Sets the output file format to binary.\n"
7679  ),
7680  AUTHORS( "Oliver Lemke" ),
7681  OUT( "output_file_format" ),
7682  GOUT(),
7683  GOUT_TYPE(),
7684  GOUT_DESC(),
7685  IN(),
7686  GIN(),
7687  GIN_TYPE(),
7688  GIN_DEFAULT(),
7689  GIN_DESC()
7690  ));
7691 
7692  md_data_raw.push_back
7693  ( MdRecord
7694  ( NAME( "output_file_formatSetZippedAscii" ),
7695  DESCRIPTION
7696  (
7697  "Sets the output file format to zipped ASCII.\n"
7698  ),
7699  AUTHORS( "Oliver Lemke" ),
7700  OUT( "output_file_format" ),
7701  GOUT(),
7702  GOUT_TYPE(),
7703  GOUT_DESC(),
7704  IN(),
7705  GIN(),
7706  GIN_TYPE(),
7707  GIN_DEFAULT(),
7708  GIN_DESC()
7709  ));
7710 
7711  md_data_raw.push_back
7712  ( MdRecord
7713  ( NAME( "particle_massesFromMetaDataSingleCategory" ),
7714  DESCRIPTION
7715  (
7716  "Sets *particle_masses* based on *scat_meta_array* assuming\n"
7717  "all particles are of the same mass category.\n"
7718  "\n"
7719  "This method calculates the particle masses as density*volume\n"
7720  "for each particle type. Single phase particles, and that all\n"
7721  "all particles consist of the same (bulk) matter (e.g. water\n"
7722  "or ice) are assumed. With other words, a single mass category\n"
7723  "is assumed (see *particle_masses* for a definition of \"mass\n"
7724  "category\").\n"
7725  "\n"
7726  "To be clear, the above are assumptions of the method, the user\n"
7727  "is free to work with any particle type. For Earth and just having\n"
7728  "cloud and particles, the resulting mass category can be seen as\n"
7729  "the total cloud water content, with possible contribution from\n"
7730  "both ice and liquid phase.\n"
7731  ),
7732  AUTHORS( "Jana Mendrok", "Patrick Eriksson" ),
7733  OUT( "particle_masses" ),
7734  GOUT(),
7735  GOUT_TYPE(),
7736  GOUT_DESC(),
7737  IN( "scat_meta_array" ),
7738  GIN(),
7739  GIN_TYPE(),
7740  GIN_DEFAULT(),
7741  GIN_DESC()
7742  ));
7743 
7744  md_data_raw.push_back
7745  ( MdRecord
7746  ( NAME( "particle_massesFromMetaDataAndPart_species" ),
7747  DESCRIPTION
7748  (
7749  "Derives *particle_masses* from *scat_meta_array*.\n"
7750  "\n"
7751  "This method is supposed to be used to derive *particle_masses*\n"
7752  "when *pnd_field* is internally calculated using *pnd_fieldSetup*\n"
7753  "(in contrast to reading it from external sources using\n"
7754  "*ParticleTypeAdd* and *pnd_fieldCalc*).\n"
7755  "It extracts particle the mass information (density*volume) from\n"
7756  "*scat_meta_array*. Different entries in *part_species* are\n"
7757  "taken as different categories of particle_masses, i.e., the\n"
7758  "resulting *particle_masses* matrix will contain as many columns as\n"
7759  "entries exist in *part_species*.\n"
7760  ),
7761  AUTHORS( "Jana Mendrok" ),
7762  OUT( "particle_masses" ),
7763  GOUT(),
7764  GOUT_TYPE(),
7765  GOUT_DESC(),
7766  IN( "scat_meta_array", "scat_data_per_part_species", "part_species" ),
7767  GIN(),
7768  GIN_TYPE(),
7769  GIN_DEFAULT(),
7770  GIN_DESC()
7771  ));
7772 
7773  md_data_raw.push_back
7774  ( MdRecord
7775  ( NAME( "ParticleSpeciesInit" ),
7776  DESCRIPTION
7777  (
7778  "Initializes empty *part_species* array.\n"
7779  ),
7780  AUTHORS( "Daniel Kreyling" ),
7781  OUT( "part_species" ),
7782  GOUT(),
7783  GOUT_TYPE(),
7784  GOUT_DESC(),
7785  IN(),
7786  GIN(),
7787  GIN_TYPE(),
7788  GIN_DEFAULT(),
7789  GIN_DESC()
7790  ));
7791 
7792  md_data_raw.push_back
7793  ( MdRecord
7794  ( NAME( "ParticleSpeciesSet" ),
7795  DESCRIPTION
7796  (
7797  "Sets the WSV *part_species*."
7798  "\n"
7799  "With this function, the user specifies settings for the \n"
7800  "particle number density calculations using *pnd_fieldSetup*.\n"
7801  "The input is an ArrayOfString that needs to be in a specific format,\n"
7802  "for details, see WSV *part_species*.\n"
7803  "\n"
7804  "*Example:* \t ['IWC-MH97-Ice-0.1-200', 'LWC-H98_STCO-Water-0.1-50'] \n"
7805  "\n"
7806  "NOTE: The order of the Strings need to match the order of the\n"
7807  "*atm_fields_compact* field names, their number determines how many fields\n"
7808  "of *atm_fields_compact* are considered particle profiles.\n"
7809  ),
7810  AUTHORS( "Daniel Kreyling" ),
7811  OUT( "part_species" ),
7812  GOUT( ),
7813  GOUT_TYPE( ),
7814  GOUT_DESC( ),
7815  IN(),
7816  GIN( "particle_tags", "delim" ),
7817  GIN_TYPE( "ArrayOfString", "String" ),
7818  GIN_DEFAULT( NODEF, "-" ),
7819  GIN_DESC("Array of pnd calculation parameters.",
7820  "Delimiter string of *part_species* elements." )
7821  ));
7822 
7823 
7824  md_data_raw.push_back
7825  ( MdRecord
7826  ( NAME( "ParticleTypeAdd" ),
7827  DESCRIPTION
7828  (
7829  "Reads single scattering data and corresonding particle number\n"
7830  "density fields.\n"
7831  "\n"
7832  "The methods reads the specified files and appends the obtained data\n"
7833  "to *scat_data_array* and *pnd_field_raw*.\n"
7834  ),
7835  AUTHORS( "Claudia Emde" ),
7836  OUT( "scat_data_array", "pnd_field_raw" ),
7837  GOUT(),
7838  GOUT_TYPE(),
7839  GOUT_DESC(),
7840  IN( "atmosphere_dim", "f_grid" ),
7841  GIN( "filename_scat_data", "filename_pnd_field" ),
7842  GIN_TYPE( "String", "String" ),
7843  GIN_DEFAULT( NODEF, NODEF ),
7844  GIN_DESC( "Name of single scattering data file.",
7845  "Name of the corresponding pnd_field file."
7846  )
7847  ));
7848 
7849 
7850  md_data_raw.push_back
7851  ( MdRecord
7852  ( NAME( "ParticleTypeAddAll" ),
7853  DESCRIPTION
7854  (
7855  "Reads single scattering data and particle number densities.\n"
7856  "\n"
7857  "The WSV *pnd_field_raw* containing particle number densities for all\n"
7858  "scattering particle species can be generated outside ARTS, for example by using\n"
7859  "PyARTS. This method needs as input an XML-file containing an array of filenames\n"
7860  "(ArrayOfString) of single scattering data and a file containing the corresponding\n"
7861  "*pnd_field_raw*. In contrast to the scattering data, all corresponding pnd-fields\n"
7862  "are stored in a single XML-file containing an ArrayofGriddedField3\n"
7863  "\n"
7864  "Important note:\n"
7865  "The order of the filenames for the scattering data files has to\n"
7866  "correspond to the order of the pnd-fields, stored in the variable\n"
7867  "*pnd_field_raw*.\n"
7868  ),
7869  AUTHORS( "Claudia Emde" ),
7870  OUT( "scat_data_array", "pnd_field_raw" ),
7871  GOUT(),
7872  GOUT_TYPE(),
7873  GOUT_DESC(),
7874  IN( "atmosphere_dim", "f_grid" ),
7875  GIN( "filelist_scat_data", "filename_pnd_fieldarray" ),
7876  GIN_TYPE( "String", "String" ),
7877  GIN_DEFAULT( NODEF, NODEF ),
7878  GIN_DESC( "Name of file with array of single scattering data filenames.",
7879  "Name of file holding the correspnding array of pnd_field data."
7880  )
7881  ));
7882 
7883 
7884  md_data_raw.push_back
7885  ( MdRecord
7886  ( NAME( "ParticleTypeInit" ),
7887  DESCRIPTION
7888  (
7889  "Initializes *scat_data_array* and *pnd_field_raw*.\n"
7890  "\n"
7891  "This method initializes variables containing data about the\n"
7892  "optical properties of particles (*scat_data_array*) and about the\n"
7893  "particle number distribution (*pnd_field_raw*)\n"
7894  "\n"
7895  "This method has to be executed before executing e.g.\n"
7896  "*ParticleTypeAdd*.\n"
7897  ),
7898  AUTHORS( "Claudia Emde" ),
7899  OUT( "scat_data_array", "pnd_field_raw" ),
7900  GOUT(),
7901  GOUT_TYPE(),
7902  GOUT_DESC(),
7903  IN(),
7904  GIN(),
7905  GIN_TYPE(),
7906  GIN_DEFAULT(),
7907  GIN_DESC()
7908  ));
7909 
7910 
7911  md_data_raw.push_back
7912  ( MdRecord
7913  ( NAME( "ParticleType2abs_speciesAdd" ),
7914  DESCRIPTION
7915  (
7916  "Appends an instance of species 'particles' to *abs_species* including\n"
7917  "reading single scattering data and corresponding pnd field.\n"
7918  "\n"
7919  "The methods reads the specified single scattering and pnd_field\n"
7920  "data and appends the obtained data to *scat_data_array* and\n"
7921  "*vmr_field_raw*. It also appends one instance of species 'particles'\n"
7922  "to *abs_species*.\n"
7923  ),
7924  AUTHORS( "Jana Mendrok" ),
7925  OUT( "scat_data_array", "vmr_field_raw", "abs_species",
7926  "propmat_clearsky_agenda_checked", "abs_xsec_agenda_checked" ),
7927  GOUT(),
7928  GOUT_TYPE(),
7929  GOUT_DESC(),
7930  IN( "vmr_field_raw", "abs_species",
7931  "propmat_clearsky_agenda_checked", "abs_xsec_agenda_checked",
7932  "atmosphere_dim", "f_grid" ),
7933  GIN( "filename_scat_data", "filename_pnd_field" ),
7934  GIN_TYPE( "String", "String" ),
7935  GIN_DEFAULT( NODEF, NODEF ),
7936  GIN_DESC( "Name of single scattering data file.",
7937  "Name of the corresponding pnd_field file."
7938  )
7939  ));
7940 
7941 
7942  md_data_raw.push_back
7943  ( MdRecord
7944  ( NAME( "pha_matCalc" ),
7945  DESCRIPTION
7946  (
7947  "This function sums up the phase matrices for all particle\n"
7948  "types weighted with particle number density.\n"
7949  ),
7950  AUTHORS( "Sreerekha T.R." ),
7951  OUT( "pha_mat" ),
7952  GOUT(),
7953  GOUT_TYPE(),
7954  GOUT_DESC(),
7955  IN( "pha_mat_spt", "pnd_field", "atmosphere_dim", "scat_p_index",
7956  "scat_lat_index", "scat_lon_index" ),
7957  GIN(),
7958  GIN_TYPE(),
7959  GIN_DEFAULT(),
7960  GIN_DESC()
7961  ));
7962 
7963  md_data_raw.push_back
7964  ( MdRecord
7965  ( NAME( "pha_mat_sptFromData" ),
7966  DESCRIPTION
7967  (
7968  "Calculation of the phase matrix for the single particle types.\n"
7969  "\n"
7970  "This function can be used in *pha_mat_spt_agenda* as part of\n"
7971  "the calculation of the scattering integral.\n"
7972  "\n"
7973  "The interpolation of the data on the actual frequency is the first\n"
7974  "step in this function. This is followed by a transformation from the\n"
7975  "database coordinate system to the laboratory coordinate system.\n"
7976  ),
7977  AUTHORS( "Claudia Emde" ),
7978  OUT( "pha_mat_spt" ),
7979  GOUT(),
7980  GOUT_TYPE(),
7981  GOUT_DESC(),
7982  IN( "pha_mat_spt", "scat_data_array", "scat_za_grid", "scat_aa_grid",
7983  "scat_za_index", "scat_aa_index", "f_index", "f_grid",
7984  "rtp_temperature", "pnd_field", "scat_p_index", "scat_lat_index",
7985  "scat_lon_index" ),
7986  GIN(),
7987  GIN_TYPE(),
7988  GIN_DEFAULT(),
7989  GIN_DESC()
7990  ));
7991 
7992  md_data_raw.push_back
7993  ( MdRecord
7994  ( NAME( "pha_mat_sptFromMonoData" ),
7995  DESCRIPTION
7996  (
7997  "Calculation of the phase matrix for the single particle types.\n"
7998  "\n"
7999  "This function is the monochromatic version of *pha_mat_sptFromData*.\n"
8000  ),
8001  AUTHORS( "Claudia Emde" ),
8002  OUT( "pha_mat_spt" ),
8003  GOUT(),
8004  GOUT_TYPE(),
8005  GOUT_DESC(),
8006  IN( "pha_mat_spt", "scat_data_array_mono", "doit_za_grid_size",
8007  "scat_aa_grid", "scat_za_index", "scat_aa_index", "rtp_temperature",
8008  "pnd_field", "scat_p_index", "scat_lat_index", "scat_lon_index" ),
8009  GIN(),
8010  GIN_TYPE(),
8011  GIN_DEFAULT(),
8012  GIN_DESC()
8013  ));
8014 
8015  md_data_raw.push_back
8016  ( MdRecord
8017  ( NAME( "pha_mat_sptFromDataDOITOpt" ),
8018  DESCRIPTION
8019  (
8020  "Calculation of the phase matrix for the single particle types.\n"
8021  "\n"
8022  "In this function the phase matrix is extracted from\n"
8023  "*pha_mat_sptDOITOpt*. It can be used in the agenda\n"
8024  "*pha_mat_spt_agenda*. This method must be used in \n "
8025  "combination with *DoitScatteringDataPrepare*.\n"
8026  ),
8027  AUTHORS( "Claudia Emde" ),
8028  OUT( "pha_mat_spt" ),
8029  GOUT(),
8030  GOUT_TYPE(),
8031  GOUT_DESC(),
8032  IN( "pha_mat_spt", "pha_mat_sptDOITOpt", "scat_data_array_mono",
8033  "doit_za_grid_size",
8034  "scat_aa_grid",
8035  "scat_za_index", "scat_aa_index", "rtp_temperature",
8036  "pnd_field", "scat_p_index", "scat_lat_index", "scat_lon_index" ),
8037  GIN(),
8038  GIN_TYPE(),
8039  GIN_DEFAULT(),
8040  GIN_DESC()
8041  ));
8042 
8043  md_data_raw.push_back
8044  ( MdRecord
8045  ( NAME( "pnd_fieldCalc" ),
8046  DESCRIPTION
8047  ( "Interpolation of particle number density fields to calculation grid\n"
8048  "inside cloudbox.\n"
8049  "\n"
8050  "This method interpolates the particle number density field\n"
8051  "from the raw data *pnd_field_raw* to obtain *pnd_field*.\n"
8052  "For 1D cases, where internally *GriddedFieldPRegrid* and\n"
8053  "*GriddedFieldLatLonRegrid* are applied, *zeropadding*=1 sets the\n"
8054  "*pnd_field* at pressure levels levels exceeding pnd_field_raw's\n"
8055  "pressure grid to 0 (not implemented for 2D and 3D yet). Default:\n"
8056  "zeropadding=0, which throws an error if the calculation pressure grid\n"
8057  "*p_grid* is not completely covered by pnd_field_raw's pressure grid.\n"
8058  ),
8059  AUTHORS( "Sreerekha T.R.", "Claudia Emde", "Oliver Lemke" ),
8060  OUT( "pnd_field" ),
8061  GOUT(),
8062  GOUT_TYPE(),
8063  GOUT_DESC(),
8064  IN( "p_grid", "lat_grid", "lon_grid", "pnd_field_raw", "atmosphere_dim",
8065  "cloudbox_limits" ),
8066  GIN( "zeropadding" ),
8067  GIN_TYPE( "Index" ),
8068  GIN_DEFAULT( "0" ),
8069  GIN_DESC( "Allow zeropadding of pnd_field." )
8070  ));
8071 
8072  md_data_raw.push_back
8073  ( MdRecord
8074  ( NAME( "pnd_fieldExpand1D" ),
8075  DESCRIPTION
8076  (
8077  "Maps a 1D pnd_field to a (homogeneous) 2D or 3D pnd_field.\n"
8078  "\n"
8079  "This method takes a 1D *pnd_field* and converts it to a 2D or 3D\n"
8080  "\"cloud\". It is assumed that a complete 1D case has been created,\n"
8081  "and after this *atmosphere_dim*, *lat_grid*, *lon_grid* and\n"
8082  "*cloudbox_limits* have been changed to a 2D or 3D case (without\n"
8083  "changing the vertical extent of the cloudbox.\n"
8084  "\n"
8085  "No modification of *pnd_field* is made for the pressure dimension.\n"
8086  "At the latitude and longitude cloudbox edge points *pnd_field* is set to\n"
8087  "zero. This corresponds to nzero=1. If you want a larger margin between\n"
8088  "the lat and lon cloudbox edges and the \"cloud\" you increase\n"
8089  "*nzero*, where *nzero* is the number of grid points for which\n"
8090  "*pnd_field* shall be set to 0, counted from each lat and lon edge.\n"
8091  "\n"
8092  "See further *AtmFieldsExpand1D*.\n"
8093  ),
8094  AUTHORS( "Patrick Eriksson" ),
8095  OUT( "pnd_field" ),
8096  GOUT(),
8097  GOUT_TYPE(),
8098  GOUT_DESC(),
8099  IN( "pnd_field", "atmosphere_dim",
8100  "cloudbox_on", "cloudbox_limits" ),
8101  GIN( "nzero" ),
8102  GIN_TYPE( "Index"),
8103  GIN_DEFAULT( "1" ),
8104  GIN_DESC( "Number of zero values inside lat and lon limits." )
8105  ));
8106 
8107  md_data_raw.push_back
8108  ( MdRecord
8109  ( NAME( "pnd_fieldSetup" ),
8110  DESCRIPTION
8111  (
8112  "Calculation of *pnd_field* using ScatteringMetaData and *massdensity_field*.\n"
8113  "\n"
8114  "The WSM first checks if cloudbox is empty. If so, the pnd calculations\n"
8115  "will be skipped.\n"
8116  "The *cloudbox_limits* are used to determine the p, lat and lon size for\n"
8117  "the *pnd_field* tensor.\n"
8118  "Currently there are three particle size distribution (PSD) parameterisations\n"
8119  "implemented:\n"
8120  "\t1. 'MH97' for ice particles. Parameterisation in temperature and mass content.\n"
8121  "\t Using a first-order gamma distribution for particles smaller than \n"
8122  "\t 100 microns (melted diameter) and a lognormal distribution for\n"
8123  "\t particles bigger 100 microns. Values from both modes are cumulative.\n"
8124  "\t See internal function 'IWCtopnd_MH97' for implementation/units/output.\n"
8125  "\t (src.: McFarquhar G.M., Heymsfield A.J., 1997)"
8126  "\n"
8127  "\t2. 'H11' for cloud ice and precipitating ice (snow). H11 is NOT dependent\n"
8128  "\t on mass content of ice/snow, but only on atmospheric temperature.\n"
8129  "\t The PSD is scaled to the current IWC/Snow density in an additional step.\n"
8130  "\t See internal function 'pnd_H11' and 'scale_H11' for implementation/units/output.\n"
8131  "\t (src.: Heymsfield A.J., 2011, not published yet)\n"
8132  "\t3. 'H98_STCO' for liquid water clouds. Using a gamma distribution with\n"
8133  "\t parameters from Hess et al., 1998, continental stratus.\n"
8134  "\t See internal function 'LWCtopnd' for implementation/units/output.\n"
8135  "\t (src.: Deirmendjian D., 1963 and Hess M., et al 1998)\n"
8136  "\n"
8137  "According to the selection criteria in *part_species*, the first specified\n"
8138  "psd parametrisation is selected together with all particles of specified phase\n"
8139  "and size. Then pnd calculations are performed on all levels inside the cloudbox.\n"
8140  "The *massdensity_field* input weights the pnds by the amount of scattering\n"
8141  "particles in each gridbox inside the cloudbox. Where *massdensity_field* is zero,\n"
8142  "the *pnd_field* will be zero as well.\n"
8143  "Subsequently the pnd values get written to *pnd_field*.\n"
8144  "\n"
8145  "Now the next selection criteria string in *part_species* is used to repeat\n"
8146  "the process.The new pnd values will be appended to the existing *pnd_field*.\n"
8147  "And so on...\n"
8148  "\n"
8149  "NOTE: the order of scattering particle profiles in *massdensity_field* has to\n"
8150  "fit the order of part_species tags!\n"
8151  ),
8152  AUTHORS( "Daniel Kreyling" ),
8153  OUT( "pnd_field"),
8154  GOUT(),
8155  GOUT_TYPE(),
8156  GOUT_DESC(),
8157  IN( "atmosphere_dim","cloudbox_on", "cloudbox_limits",
8158  "massdensity_field", "t_field", "scat_meta_array",
8159  "part_species", "scat_data_per_part_species" ),
8160  GIN( "delim" ),
8161  GIN_TYPE( "String" ),
8162  GIN_DEFAULT( "-" ),
8163  GIN_DESC( "Delimiter string of *part_species* elements" )
8164  ));
8165 
8166  md_data_raw.push_back
8167  ( MdRecord
8168  ( NAME( "pnd_fieldZero" ),
8169  DESCRIPTION
8170  (
8171  "Sets *pnd_field* to hold only zeros.\n"
8172  "\n"
8173  "Scattering calculations using the DOIT method include\n"
8174  "interpolation errors. If one is interested in this effect, one\n"
8175  "should compare the DOIT result with a clearsky calculation using\n"
8176  "an empty cloudbox. That means that the iterative method is\n"
8177  "performed for a cloudbox including no particles. This method sets\n"
8178  "the particle number density field to zero and creates a\n"
8179  "dummy *scat_data_array* structure. \n"
8180  ),
8181  AUTHORS( "Claudia Emde" ),
8182  OUT( "pnd_field", "scat_data_array" ),
8183  GOUT(),
8184  GOUT_TYPE(),
8185  GOUT_DESC(),
8186  IN( "p_grid", "lat_grid", "lon_grid" ),
8187  GIN(),
8188  GIN_TYPE(),
8189  GIN_DEFAULT(),
8190  GIN_DESC()
8191  ));
8192 
8193  md_data_raw.push_back
8194  ( MdRecord
8195  ( NAME( "pndFromdN" ),
8196  DESCRIPTION
8197  (
8198  "Calculates pnds from given dN.\n"
8199  "\n"
8200  "The method mimics what happens inside pnd_fieldSetup, but for a\n"
8201  "single size distribution. It is supposed to be used with the *dN*\n"
8202  "methods.\n"
8203  ),
8204  AUTHORS( "Jana Mendrok" ),
8205  OUT(),
8206  GOUT( "pnd" ),
8207  GOUT_TYPE( "Vector" ),
8208  GOUT_DESC( "The pnd vector (pnd as function of particle size)" ),
8209  IN(),
8210  GIN( "dN", "diameter", "total_content",
8211  "scatelem_volume", "scatelem_density" ),
8212  GIN_TYPE( "Vector", "Vector", "Numeric",
8213  "Vector", "Vector" ),
8215  GIN_DESC( "Size distribution number density",
8216  "Size of the particles (the same as used in deriving dNdD",
8217  "Material content that should be contained in the"
8218  "distribution. E.g., Mass density, mass flux, total number"
8219  "density. If dNdD was derived from a content-dependent PSD,"
8220  "then this value should correspond to the one used there.",
8221  "Volume of each particle (scattering element).",
8222  "Density of each particle (scattering element)." )
8223  ));
8224 
8225  md_data_raw.push_back
8226  ( MdRecord
8227  ( NAME( "ppathCalc" ),
8228  DESCRIPTION
8229  (
8230  "Stand-alone calculation of propagation paths.\n"
8231  "\n"
8232  "Beside a few checks of input data, the only operation of this\n"
8233  "method is to execute *ppath_agenda*.\n"
8234  "\n"
8235  "Propagation paths are normally calculated as part of the radiative\n"
8236  "transfer calculations, and this method is not part of the control\n"
8237  "file. A reason to call this function directly would be to obtain a\n"
8238  "propagation path for plotting. Anyhow, use this method instead\n"
8239  "of calling e.g.*ppathStepByStep directly.\n"
8240  ),
8241  AUTHORS( "Patrick Eriksson" ),
8242  OUT( "ppath" ),
8243  GOUT(),
8244  GOUT_TYPE(),
8245  GOUT_DESC(),
8246  IN( "ppath_agenda", "ppath_lraytrace", "atmgeom_checked", "t_field",
8247  "z_field", "vmr_field", "f_grid", "cloudbox_on",
8248  "cloudbox_checked", "ppath_inside_cloudbox_do",
8249  "rte_pos", "rte_los", "rte_pos2" ),
8250  GIN(),
8251  GIN_TYPE(),
8252  GIN_DEFAULT(),
8253  GIN_DESC()
8254  ));
8255 
8256  md_data_raw.push_back
8257  ( MdRecord
8258  ( NAME( "ppathFromRtePos2" ),
8259  DESCRIPTION
8260  (
8261  "Determines the propagation path from *rte_pos2* to *rte_pos*.\n"
8262  "\n"
8263  "The propagation path linking *rte_pos* and *rte_pos2* is calculated\n"
8264  "and returned. The method determines the path in a pure numerical\n"
8265  "manner, where a simple algorithm is applied. The task is to find\n"
8266  "the value of *rte_los* (at *rte_pos*) linking the two positions.\n"
8267  "\n"
8268  "See the user guide for a description of the search algorithm,\n"
8269  "including a more detailed definition of *za_accuracy*, \n"
8270  "*pplrt_factor* and *pplrt_lowest*.\n"
8271  "\n"
8272  "The standard application of this method should be to radio link\n"
8273  "calculations, where *rte_pos2* corresponds to a transmitter, and\n"
8274  "*rte_pos* to the receiver/sensor.\n"
8275  "\n"
8276  "The details of the ray tracing is controlled by *ppath_step_agenda*\n"
8277  "as usual.\n"
8278  ),
8279  AUTHORS( "Patrick Eriksson" ),
8280  OUT( "ppath", "rte_los", "ppath_lraytrace" ),
8281  GOUT(),
8282  GOUT_TYPE(),
8283  GOUT_DESC(),
8284  IN( "ppath_step_agenda", "atmosphere_dim", "p_grid",
8285  "lat_grid", "lon_grid", "t_field", "z_field", "vmr_field",
8286  "f_grid", "refellipsoid", "z_surface",
8287  "rte_pos", "rte_pos2", "rte_los", "ppath_lraytrace" ),
8288  GIN( "za_accuracy", "pplrt_factor", "pplrt_lowest" ),
8289  GIN_TYPE( "Numeric", "Numeric", "Numeric" ),
8290  GIN_DEFAULT( "2e-5", "5", "0.5"),
8291  GIN_DESC(
8292  "Required accuracy, in form of the maximum allowed angular "
8293  "off-set [deg].",
8294  "The factor with which ppath_lraytrace is decreased if "
8295  "no solution is found.",
8296  "Lowest value ppath_lraytrace to consider. The calculations "
8297  "are halted if this length is passed.")
8298  ));
8299 
8300  md_data_raw.push_back
8301  ( MdRecord
8302  ( NAME( "ppathStepByStep" ),
8303  DESCRIPTION
8304  (
8305  "Standard method for calculation of propagation paths.\n"
8306  "\n"
8307  "This method calculates complete propagation paths in a stepwise\n"
8308  "manner. Each step is denoted as a \"ppath_step\" and is the path\n"
8309  "through/inside a single grid box.\n"
8310  "\n"
8311  "The definition of a propgation path cannot be accommodated here.\n"
8312  "For more information read the chapter on propagation paths in the\n"
8313  "ARTS user guide.\n"
8314  "\n"
8315  "This method should never be called directly. Use *ppathCalc* instead\n"
8316  "if you want to extract propagation paths.\n"
8317  ),
8318  AUTHORS( "Patrick Eriksson" ),
8319  OUT( "ppath" ),
8320  GOUT(),
8321  GOUT_TYPE(),
8322  GOUT_DESC(),
8323  IN( "ppath_step_agenda", "ppath_inside_cloudbox_do", "atmosphere_dim",
8324  "p_grid", "lat_grid", "lon_grid", "t_field", "z_field", "vmr_field",
8325  "f_grid", "refellipsoid", "z_surface",
8326  "cloudbox_on", "cloudbox_limits", "rte_pos", "rte_los",
8327  "ppath_lraytrace" ),
8328  GIN(),
8329  GIN_TYPE(),
8330  GIN_DEFAULT(),
8331  GIN_DESC()
8332  ));
8333 
8334  md_data_raw.push_back
8335  ( MdRecord
8336  ( NAME( "ppathWriteXMLPartial" ),
8337  DESCRIPTION
8338  (
8339  "WSM to only write a reduced Ppath, omitting grid positions.\n"
8340  "\n"
8341  "The following fields are set to be empty: gp_p, gp_lat and gp_lon.\n"
8342  "This cam drastically decrease the time for reading the structure\n"
8343  "by some external software.\n"
8344  "\n"
8345  "If *file_index is >= 0, the variable is written to a file with name:\n"
8346  " <filename>.<file_index>.xml.\n"
8347  "where <file_index> is the value of *file_index*.\n"
8348  "\n"
8349  "This means that *filename* shall here not include the .xml\n"
8350  "extension. Omitting filename works as for *WriteXML*.\n"
8351  ),
8352  AUTHORS( "Oliver Lemke" ),
8353  OUT(),
8354  GOUT(),
8355  GOUT_TYPE(),
8356  GOUT_DESC(),
8357  IN( "output_file_format", "ppath" ),
8358  GIN( "filename", "file_index" ),
8359  GIN_TYPE( "String", "Index" ),
8360  GIN_DEFAULT( "", "-1" ),
8361  GIN_DESC( "File name. See above.",
8362  "Optional file index to append to filename."
8363  )
8364  ));
8365 
8366  md_data_raw.push_back
8367  ( MdRecord
8368  ( NAME( "ppath_stepGeometric" ),
8369  DESCRIPTION
8370  (
8371  "Calculates a geometrical propagation path step.\n"
8372  "\n"
8373  "This function determines a propagation path step by pure\n"
8374  "geometrical calculations. That is, refraction is neglected. Path\n"
8375  "points are always included for crossings with the grids, tangent\n"
8376  "points and intersection points with the surface. The WSV *ppath_lmax*\n"
8377  "gives the option to include additional points to ensure that the\n"
8378  "distance along the path between the points does not exceed the\n"
8379  "selected maximum length. No additional points are included if\n"
8380  "*ppath_lmax* is set to <= 0.\n"
8381  "\n"
8382  "For further information, type see the on-line information for\n"
8383  "*ppath_step_agenda*.\n"
8384  ),
8385  AUTHORS( "Patrick Eriksson" ),
8386  OUT( "ppath_step" ),
8387  GOUT(),
8388  GOUT_TYPE(),
8389  GOUT_DESC(),
8390  IN( "ppath_step", "atmosphere_dim", "lat_grid", "lon_grid",
8391  "z_field", "refellipsoid", "z_surface", "ppath_lmax" ),
8392  GIN(),
8393  GIN_TYPE(),
8394  GIN_DEFAULT(),
8395  GIN_DESC()
8396  ));
8397 
8398  md_data_raw.push_back
8399  ( MdRecord
8400  ( NAME( "ppath_stepRefractionBasic" ),
8401  DESCRIPTION
8402  (
8403  "Calculates a propagation path step, considering refraction by a\n"
8404  "basic approach.\n"
8405  "\n"
8406  "Refraction is taken into account by probably the simplest approach\n"
8407  "possible. The path is treated to consist of piece-wise geometric\n"
8408  "steps. A geometric path step is calculated from each point by\n"
8409  "using the local line-of-sight. Snell's law for spherical symmetry\n"
8410  "is used for 1D to determine the zenith angle at the new point.\n"
8411  "For 2D and 3D, the zenith angle is calculated using the average\n"
8412  "gradient of the refractive index between the two points. For 3D,\n"
8413  "the azimuth angle is treated in the same way as the zenith one.\n"
8414  "\n"
8415  "The maximum length of each ray tracing step is given by the WSV\n"
8416  "*ppath_lraytrace*. The length will never exceed the given maximum,\n"
8417  "but it can be smaller. The ray tracing steps are only used to\n"
8418  "determine the path. Points to describe the path are included as\n"
8419  "for *ppath_stepGeometric*, this including the functionality of\n"
8420  "*ppath_lmax*.\n"
8421  ),
8422  AUTHORS( "Patrick Eriksson" ),
8423  OUT( "ppath_step" ),
8424  GOUT(),
8425  GOUT_TYPE(),
8426  GOUT_DESC(),
8427  IN( "refr_index_air_agenda", "ppath_step", "atmosphere_dim", "p_grid",
8428  "lat_grid", "lon_grid", "z_field", "t_field", "vmr_field",
8429  "refellipsoid", "z_surface", "f_grid",
8430  "ppath_lmax", "ppath_lraytrace" ),
8431  GIN(),
8432  GIN_TYPE(),
8433  GIN_DEFAULT(),
8434  GIN_DESC()
8435  ));
8436 
8437  md_data_raw.push_back
8438  ( MdRecord
8439  ( NAME( "Print" ),
8440  DESCRIPTION
8441  (
8442  "Prints a variable on the screen.\n"
8443  ),
8444  AUTHORS( "Oliver Lemke" ),
8445  OUT(),
8446  GOUT(),
8447  GOUT_TYPE(),
8448  GOUT_DESC(),
8449  IN(),
8450  GIN( "in" ,
8451  "level" ),
8452  GIN_TYPE( "Any",
8453  "Index" ),
8454  GIN_DEFAULT( NODEF,
8455  "1" ),
8456  GIN_DESC( "Variable to be printed.",
8457  "Output level to use." ),
8458  SETMETHOD( false ),
8459  AGENDAMETHOD( false ),
8460  USES_TEMPLATES( true )
8461  ));
8462 
8463  md_data_raw.push_back
8464  ( MdRecord
8465  ( NAME( "PrintWorkspace" ),
8466  DESCRIPTION
8467  (
8468  "Prints a list of the workspace variables.\n"
8469  ),
8470  AUTHORS( "Oliver Lemke" ),
8471  OUT(),
8472  GOUT(),
8473  GOUT_TYPE(),
8474  GOUT_DESC(),
8475  IN(),
8476  GIN( "only_allocated", "level" ),
8477  GIN_TYPE( "Index", "Index" ),
8478  GIN_DEFAULT( "1", "1" ),
8479  GIN_DESC( "Flag for printing either all variables (0) or only "
8480  "allocated ones (1).",
8481  "Output level to use." ),
8482  SETMETHOD( false ),
8483  AGENDAMETHOD( false ),
8484  USES_TEMPLATES( true ),
8485  PASSWORKSPACE( true )
8486  ));
8487 
8488  md_data_raw.push_back
8489  ( MdRecord
8490  ( NAME( "propmat_clearskyAddFaraday" ),
8491  DESCRIPTION
8492  (
8493  "Calculates absorption matrix describing Faraday rotation.\n"
8494  "\n"
8495  "Faraday rotation is a change of polarization state of an\n"
8496  "electromagnetic wave propagating through charged matter by\n"
8497  "interaction with a magnetic field. Hence, this method requires\n"
8498  "*abs_species* to contain 'free_electrons' and electron content field\n"
8499  "(as part of *vmr_field*) as well as magnetic field (*mag_u_field*,\n"
8500  "*mag_v_field*, *mag_w_field*) to be specified.\n"
8501  "\n"
8502  "Faraday rotation affects Stokes parameters 2 and 3 (but not\n"
8503  "intensity!). Therefore, this method requires stokes_dim>2.\n"
8504  "\n"
8505  "Like all 'propmat_clearskyAdd*' methods, the method is additive,\n"
8506  "i.e., does not overwrite the propagation matrix *propmat_clearsky*,\n"
8507  "but adds further contributions.\n"
8508  ),
8509  AUTHORS( "Patrick Eriksson" ),
8510  OUT( "propmat_clearsky" ),
8511  GOUT(),
8512  GOUT_TYPE(),
8513  GOUT_DESC(),
8514  IN( "propmat_clearsky", "stokes_dim", "atmosphere_dim", "f_grid",
8515  "abs_species", "rtp_vmr", "rtp_los", "rtp_mag" ),
8516  GIN(),
8517  GIN_TYPE(),
8518  GIN_DEFAULT(),
8519  GIN_DESC()
8520  ));
8521 
8522  md_data_raw.push_back
8523  ( MdRecord
8524  ( NAME( "propmat_clearskyAddFromAbsCoefPerSpecies" ),
8525  DESCRIPTION
8526  (
8527  "Copy *propmat_clearsky* from *abs_coef_per_species*. This is handy for putting an\n"
8528  "explicit line-by-line calculation into the\n"
8529  "*propmat_clearsky_agenda*. This method is also used internally by.\n"
8530  "*propmat_clearskyAddOnTheFly*.\n"
8531  "Like all other propmat_clearsky methods, this method does not overwrite\n"
8532  "prior content of *propmat_clearsky*, but adds to it.\n"
8533  ),
8534  AUTHORS( "Stefan Buehler" ),
8535  OUT( "propmat_clearsky" ),
8536  GOUT(),
8537  GOUT_TYPE(),
8538  GOUT_DESC(),
8539  IN( "propmat_clearsky","abs_coef_per_species" ),
8540  GIN(),
8541  GIN_TYPE(),
8542  GIN_DEFAULT(),
8543  GIN_DESC()
8544  ));
8545 
8546  md_data_raw.push_back
8547  ( MdRecord
8548  ( NAME( "propmat_clearskyAddFromLookup" ),
8549  DESCRIPTION
8550  (
8551  "Extract gas absorption coefficients from lookup table.\n"
8552  "\n"
8553  "This extracts the absorption coefficient for all species from the\n"
8554  "lookup table, and adds them to the propagation matrix. Extraction is\n"
8555  "for one specific atmospheric condition, i.e., a set of pressure,\n"
8556  "temperature, and VMR values.\n"
8557  "\n"
8558  "Some special species are ignored, for example Zeeman species and free\n"
8559  "electrons, since their absorption properties are not simple scalars\n"
8560  "and cannot be handled by the lookup table.\n"
8561  "\n"
8562  "The interpolation order in T and H2O is given by *abs_t_interp_order*\n"
8563  "and *abs_nls_interp_order*, respectively.\n"
8564  "\n"
8565  "Extraction is done for the frequencies in f_grid. Frequency\n"
8566  "interpolation is controlled by *abs_f_interp_order*. If this is zero,\n"
8567  "then f_grid must either be the same as the internal frequency grid of\n"
8568  "the lookup table (for efficiency reasons, only the first and last\n"
8569  "element of f_grid are checked), or must have only a single element.\n"
8570  "If *abs_f_interp_order* is above zero, then frequency is interpolated\n"
8571  "along with the other interpolation dimensions. This is useful for\n"
8572  "calculations with Doppler shift.\n"
8573  "\n"
8574  "For Doppler calculations, you should generate the table with a\n"
8575  "somewhat larger frequency grid than the calculation itself has, since\n"
8576  "the Doppler shift will push the frequency grid out of the table range\n"
8577  "on one side. Alternatively, you can set the input\n"
8578  "parameter *extpolfac* to a larger value, to allow extrapolation at the\n"
8579  "edges.\n"
8580  "\n"
8581  "See also: *propmat_clearskyAddOnTheFly*.\n"
8582  ),
8583  AUTHORS( "Stefan Buehler, Richard Larsson" ),
8584  OUT( "propmat_clearsky" ),
8585  GOUT(),
8586  GOUT_TYPE(),
8587  GOUT_DESC(),
8588  IN( "propmat_clearsky", "abs_lookup", "abs_lookup_is_adapted",
8589  "abs_p_interp_order", "abs_t_interp_order", "abs_nls_interp_order",
8590  "abs_f_interp_order", "f_grid",
8591  "rtp_pressure", "rtp_temperature", "rtp_vmr" ),
8592  GIN("extpolfac"),
8593  GIN_TYPE("Numeric"),
8594  GIN_DEFAULT("0.5"),
8595  GIN_DESC("Extrapolation factor (for grid edges).")
8596  ));
8597 
8598  md_data_raw.push_back
8599  ( MdRecord
8600  ( NAME( "propmat_clearskyAddOnTheFly" ),
8601  DESCRIPTION
8602  (
8603  "Calculates gas absorption coefficients line-by-line.\n"
8604  "\n"
8605  "This method can be used inside *propmat_clearsky_agenda* just like\n"
8606  "*propmat_clearskyAddFromLookup*. It is a shortcut for putting in some\n"
8607  "other methods explicitly, namely:\n"
8608  "\n"
8609  " 1. *AbsInputFromRteScalars*\n"
8610  " 2. Execute *abs_xsec_agenda*\n"
8611  " 3. *abs_coefCalcFromXsec*\n"
8612  " 4. *propmat_clearskyAddFromAbsCoefPerSpecies*\n"
8613  "\n"
8614  "The calculation is for one specific atmospheric condition, i.e., a set\n"
8615  "of pressure, temperature, and VMR values.\n"
8616  ),
8617  AUTHORS( "Stefan Buehler, Richard Larsson" ),
8618  OUT( "propmat_clearsky" ),
8619  GOUT(),
8620  GOUT_TYPE(),
8621  GOUT_DESC(),
8622  IN( "propmat_clearsky",
8623  "f_grid",
8624  "abs_species",
8625  "rtp_pressure", "rtp_temperature", "rtp_vmr",
8626  "abs_xsec_agenda"
8627  ),
8628  GIN(),
8629  GIN_TYPE(),
8630  GIN_DEFAULT(),
8631  GIN_DESC()
8632  ));
8633 
8634  md_data_raw.push_back
8635  ( MdRecord
8636  ( NAME( "propmat_clearskyAddParticles" ),
8637  DESCRIPTION
8638  (
8639  "Calculates absorption coefficients of particles to be used in\n"
8640  "clearsky (non-cloudbox) calculations.\n"
8641  "\n"
8642  "This is a method to include particles (neglecting possible\n"
8643  "scattering components) in a clearsky calculation, i.e. without\n"
8644  "applying the cloudbox and scattering solvers. Particles are handled\n"
8645  "as absorbing species with one instance of 'particles' per particle\n"
8646  "type considered added to *abs_species*. Particle absorption cross-\n"
8647  "sections at current atmospheric conditions are extracted from the\n"
8648  "single scattering data stored in *scat_data_array*, i.e., one array\n"
8649  "element per 'particles' instance in *abs_species* is required. Number\n"
8650  "densities are stored in *vmr_field_raw* or *vmr_field* as for all\n"
8651  "*abs_species*, but can be taken from (raw) pnd_field type data.\n"
8652  "\n"
8653  "A line-of-sight direction *rtp_los* is required as particles can\n"
8654  "exhibit directional dependent absorption properties, which is taken\n"
8655  "into account by this method."
8656  "\n"
8657  "*ParticleType2abs_speciesAdd* can be used to add all required\n"
8658  "settings/data for a single particle type at once, i.e. a 'particles'\n"
8659  "tag to *abs_species*, a set of single scattering data to\n"
8660  "*scat_data_array* and a number density field to *vmr_field_raw*\n"
8661  "(*vmr_field* is derived applying AtmFieldsCalc once VMRs for all\n"
8662  "*abs_species* have been added).\n"
8663  "\n"
8664  "Like all 'propmat_clearskyAdd*' methods, the method is additive,\n"
8665  "i.e., does not overwrite the propagation matrix *propmat_clearsky*,\n"
8666  "but adds further contributions.\n"
8667  ),
8668  AUTHORS( "Jana Mendrok" ),
8669  OUT( "propmat_clearsky" ),
8670  GOUT(),
8671  GOUT_TYPE(),
8672  GOUT_DESC(),
8673  IN( "propmat_clearsky", "stokes_dim", "atmosphere_dim",
8674  "f_grid", "abs_species",
8675  "rtp_vmr", "rtp_los", "rtp_temperature", "scat_data_array" ),
8676  GIN(),
8677  GIN_TYPE(),
8678  GIN_DEFAULT(),
8679  GIN_DESC()
8680  ));
8681 
8682  md_data_raw.push_back
8683  ( MdRecord
8684  ( NAME( "propmat_clearskyAddZeeman" ),
8685  DESCRIPTION
8686  (
8687  "Calculates Zeeman-effected absorption coefficients.\n"
8688  "\n"
8689  "This method will, for each Zeeman species, make a local\n"
8690  "ArrayOfLineRecord for the various transition types with Zeeman\n"
8691  "altered LineRecord(s). These are then composed into a single\n"
8692  "ArrayOfArrayOfLineRecord which is processed as per the scalar case.\n"
8693  "\n"
8694  "The line broadened absorption coefficients are finally multiplied with\n"
8695  "the transition type rotation matrix and the new variable is inserted into\n"
8696  "the out variable. Only species containing a -Z- tag are treated.\n"
8697  "\n"
8698  "Note that between 55 GHz and 65 GHz there is usually ~700 O_2 lines,\n"
8699  "however, when this Zeeman splitting method is used, the number of\n"
8700  "lines is increased to about 45,000. Be aware that this is a time\n"
8701  "consuming method.\n"
8702  "\n"
8703  "The 'manual_zeeman*' variables will let the user set their own simple\n"
8704  "magnetic field. This path can be accessed by setting\n"
8705  "*manual_zeeman_tag* different from zero. The user is also advided to\n"
8706  "read the theory guide to understand what the different variables will\n"
8707  "do in the Zeeman theory. Note that angles are in degrees and strength\n"
8708  "in Tesla.\n"
8709  ),
8710  AUTHORS( "Richard Larsson" ),
8711  OUT("propmat_clearsky"),
8712  GOUT(),
8713  GOUT_TYPE(),
8714  GOUT_DESC(),
8715  IN("propmat_clearsky",
8716  "f_grid",
8717  "abs_species",
8718  "abs_lines_per_species",
8719  "abs_lineshape",
8720  "isotopologue_ratios",
8721  "isotopologue_quantum",
8722  "rtp_pressure", "rtp_temperature", "rtp_vmr",
8723  "rtp_mag", "rtp_los", "atmosphere_dim",
8724  "line_mixing_data", "line_mixing_data_lut" ),
8725  GIN("manual_zeeman_tag","manual_zeeman_magnetic_field_strength",
8726  "manual_zeeman_theta","manual_zeeman_eta"),
8727  GIN_TYPE("Index","Numeric","Numeric","Numeric"),
8728  GIN_DEFAULT("0","1.0","0.0","0.0"),
8729  GIN_DESC("Manual angles tag","Manual Magnetic Field Strength",
8730  "Manual theta given positive tag","Manual eta given positive tag")
8731  ));
8732 
8733  md_data_raw.push_back
8734  ( MdRecord
8735  ( NAME( "propmat_clearskyInit" ),
8736  DESCRIPTION
8737  (
8738  "Initialize *propmat_clearsky*.\n"
8739  "\n"
8740  "This method must be used inside *propmat_clearsky_agenda* and then\n"
8741  "be called first.\n"
8742  ),
8743  AUTHORS( "Oliver Lemke, Richard Larsson" ),
8744  OUT( "propmat_clearsky" ),
8745  GOUT(),
8746  GOUT_TYPE(),
8747  GOUT_DESC(),
8748  IN( "abs_species",
8749  "f_grid",
8750  "stokes_dim",
8751  "propmat_clearsky_agenda_checked"
8752  ),
8753  GIN(),
8754  GIN_TYPE(),
8755  GIN_DEFAULT(),
8756  GIN_DESC()
8757  ));
8758 
8759  md_data_raw.push_back
8760  ( MdRecord
8761  ( NAME( "propmat_clearskyZero" ),
8762  DESCRIPTION
8763  (
8764  "Sets *propmat_clearsky* to match zero attenuation.\n"
8765  "\n"
8766  "Use this method just if you know what you are doing!\n"
8767  "\n"
8768  "If you want to make a calculation with no clear-sky attenuation at\n"
8769  "all, fill *propmat_clearsky_agenda* with this method and required\n"
8770  "Ignore statements (don't include *propmat_clearskyInit*).\n"
8771  ),
8772  AUTHORS( "Patrick Eriksson" ),
8773  OUT( "propmat_clearsky" ),
8774  GOUT(),
8775  GOUT_TYPE(),
8776  GOUT_DESC(),
8777  IN( "f_grid", "stokes_dim" ),
8778  GIN(),
8779  GIN_TYPE(),
8780  GIN_DEFAULT(),
8781  GIN_DESC()
8782  ));
8783 
8784  md_data_raw.push_back
8785  ( MdRecord
8786  ( NAME( "propmat_clearsky_agenda_checkedCalc" ),
8787  DESCRIPTION
8788  (
8789  "Checks if the *propmat_clearsky_agenda* contains all necessary\n"
8790  "methods to calculate all the species in *abs_species*.\n"
8791  "\n"
8792  "This method should be called just before the *propmat_clearsky_agenda*\n"
8793  "is used, e.g. *CloudboxGetIncoming*, *ybatchCalc*, *yCalc*\n"
8794  ),
8795  AUTHORS( "Oliver Lemke" ),
8796  OUT( "propmat_clearsky_agenda_checked" ),
8797  GOUT(),
8798  GOUT_TYPE(),
8799  GOUT_DESC(),
8800  IN( "abs_species", "propmat_clearsky_agenda" ),
8801  GIN(),
8802  GIN_TYPE(),
8803  GIN_DEFAULT(),
8804  GIN_DESC()
8805  ));
8806 
8807  md_data_raw.push_back
8808  ( MdRecord
8809  ( NAME( "propmat_clearsky_fieldCalc" ),
8810  DESCRIPTION
8811  (
8812  "Calculate (vector) gas absorption coefficients for all points in the\n"
8813  "atmosphere.\n"
8814  "\n"
8815  "This is useful in two different contexts:\n"
8816  "\n"
8817  "1. For testing and plotting gas absorption. (For RT calculations, gas\n"
8818  "absorption is calculated or extracted locally, therefore there is no\n"
8819  "need to calculate a global field. But this method is handy for easy\n"
8820  "plotting of absorption vs. pressure, for example.)\n"
8821  "\n"
8822  "2. Inside the scattering region, monochromatic absorption is\n"
8823  "pre-calculated for the entire atmospheric field.\n"
8824  "\n"
8825  "The calculation itself is performed by the\n"
8826  "*propmat_clearsky_agenda*.\n"
8827  ),
8828  AUTHORS( "Stefan Buehler, Richard Larsson" ),
8829  OUT( "propmat_clearsky_field" ),
8830  GOUT(),
8831  GOUT_TYPE(),
8832  GOUT_DESC(),
8833  IN( "atmfields_checked", "f_grid", "stokes_dim",
8834  "p_grid", "lat_grid", "lon_grid",
8835  "t_field", "vmr_field",
8836  "mag_u_field", "mag_v_field", "mag_w_field",
8837  "propmat_clearsky_agenda" ),
8838  GIN("doppler", "los"),
8839  GIN_TYPE("Vector", "Vector"),
8840  GIN_DEFAULT("[]", "[]"),
8841  GIN_DESC("A vector of doppler shift values in Hz. Must either be "
8842  "empty or have same dimension as p_grid.",
8843  "Line of sight"
8844  )
8845  ));
8846 
8847  md_data_raw.push_back
8848  ( MdRecord
8849  ( NAME( "p_gridDensify" ),
8850  DESCRIPTION
8851  (
8852  "A simple way to make *p_grid* more dense.\n"
8853  "\n"
8854  "The method includes new values in *p_grid*. For each intermediate\n"
8855  "pressure range, *nfill* points are added. That is, setting *nfill*\n"
8856  "to zero returns an unmodified *p_grid*. The number of elements of\n"
8857  "the new *p_grid* is (n0-1)*(1+nfill)+1, where n0 is the original\n"
8858  "length.\n"
8859  "\n"
8860  "The new points are distributed equidistant in log(p).\n"
8861  ),
8862  AUTHORS( "Patrick Eriksson" ),
8863  OUT( "p_grid" ),
8864  GOUT(),
8865  GOUT_TYPE(),
8866  GOUT_DESC(),
8867  IN( "p_grid" ),
8868  GIN( "nfill" ),
8869  GIN_TYPE( "Index" ),
8870  GIN_DEFAULT( "-1" ),
8871  GIN_DESC( "Number of points to add between adjacent pressure points."
8872  "The default value (-1) results in an error." )
8873  ));
8874 
8875  md_data_raw.push_back
8876  ( MdRecord
8877  ( NAME( "p_gridFromZRaw" ),
8878  DESCRIPTION
8879  (
8880  "Sets *p_grid* according to input atmosphere's raw z_field, derived\n"
8881  "e.g. from *AtmRawRead*.\n"
8882  "Attention: as default only pressure values for altitudes >= 0 are\n"
8883  "extracted. If negative altitudes shall also be selected, set no_neg=0.\n"
8884  ),
8885  AUTHORS( "Claudia Emde, Jana Mendrok" ),
8886  OUT( "p_grid" ),
8887  GOUT(),
8888  GOUT_TYPE(),
8889  GOUT_DESC(),
8890  IN( "z_field_raw" ),
8891  GIN( "no_negZ" ),
8892  GIN_TYPE( "Index" ),
8893  GIN_DEFAULT( "1" ),
8894  GIN_DESC( "Exclude negative altitudes." )
8895  ));
8896 
8897  md_data_raw.push_back
8898  ( MdRecord
8899  ( NAME( "p_gridFromGasAbsLookup" ),
8900  DESCRIPTION
8901  (
8902  "Sets *p_grid* to the pressure grid of *abs_lookup*.\n"
8903  ),
8904  AUTHORS( "Patrick Eriksson" ),
8905  OUT( "p_grid" ),
8906  GOUT(),
8907  GOUT_TYPE(),
8908  GOUT_DESC(),
8909  IN( "abs_lookup" ),
8910  GIN(),
8911  GIN_TYPE(),
8912  GIN_DEFAULT(),
8913  GIN_DESC()
8914  ));
8915 
8916  md_data_raw.push_back
8917  ( MdRecord
8918  ( NAME( "ReadNetCDF" ),
8919  DESCRIPTION
8920  (
8921  "Reads a workspace variable from a NetCDF file.\n"
8922  "\n"
8923  "This method can read variables of any group.\n"
8924  "\n"
8925  "If the filename is omitted, the variable is read\n"
8926  "from <basename>.<variable_name>.nc.\n"
8927  ),
8928  AUTHORS( "Oliver Lemke" ),
8929  OUT(),
8930  GOUT( "out" ),
8931  GOUT_TYPE( "Vector, Matrix, Tensor3, Tensor4, Tensor5, ArrayOfVector,"
8932  "ArrayOfMatrix, GasAbsLookup" ),
8933  GOUT_DESC( "Variable to be read." ),
8934  IN(),
8935  GIN( "filename" ),
8936  GIN_TYPE( "String" ),
8937  GIN_DEFAULT( NODEF ),
8938  GIN_DESC( "Name of the NetCDF file." ),
8939  SETMETHOD( false ),
8940  AGENDAMETHOD( false ),
8941  USES_TEMPLATES( true ),
8942  PASSWORKSPACE( false ),
8943  PASSWSVNAMES( true )
8944  ));
8945 
8946  md_data_raw.push_back
8947  ( MdRecord
8948  ( NAME( "ReadXML" ),
8949  DESCRIPTION
8950  (
8951  "Reads a workspace variable from an XML file.\n"
8952  "\n"
8953  "This method can read variables of any group.\n"
8954  "\n"
8955  "If the filename is omitted, the variable is read\n"
8956  "from <basename>.<variable_name>.xml.\n"
8957  "If the given filename does not exist, this method will\n"
8958  "also look for files with an added .xml, .xml.gz and .gz extension\n"
8959  ),
8960  AUTHORS( "Oliver Lemke" ),
8961  OUT(),
8962  GOUT( "out" ),
8963  GOUT_TYPE( "Any" ),
8964  GOUT_DESC( "Variable to be read." ),
8965  IN(),
8966  GIN( "filename" ),
8967  GIN_TYPE( "String" ),
8968  GIN_DEFAULT( "" ),
8969  GIN_DESC( "Name of the XML file." ),
8970  SETMETHOD( false ),
8971  AGENDAMETHOD( false ),
8972  USES_TEMPLATES( true ),
8973  PASSWORKSPACE( false ),
8974  PASSWSVNAMES( true )
8975  ));
8976 
8977  md_data_raw.push_back
8978  ( MdRecord
8979  ( NAME( "ReadXMLIndexed" ),
8980  DESCRIPTION
8981  (
8982  "As *ReadXML*, but reads indexed file names.\n"
8983  "\n"
8984  "The variable is read from a file with name:\n"
8985  " <filename>.<file_index>.xml.\n"
8986  "where <file_index> is the value of *file_index*.\n"
8987  "\n"
8988  "This means that *filename* shall here not include the .xml\n"
8989  "extension. Omitting filename works as for *ReadXML*.\n"
8990  ),
8991  AUTHORS( "Oliver Lemke" ),
8992  OUT(),
8993  GOUT( "out" ),
8994  GOUT_TYPE( "Any" ),
8995  GOUT_DESC( "Workspace variable to be read." ),
8996  IN( "file_index" ),
8997  GIN( "filename" ),
8998  GIN_TYPE( "String" ),
8999  GIN_DEFAULT( "" ),
9000  GIN_DESC( "File name. See above." ),
9001  SETMETHOD( false ),
9002  AGENDAMETHOD( false ),
9003  USES_TEMPLATES( true ),
9004  PASSWORKSPACE( false ),
9005  PASSWSVNAMES( true )
9006  ));
9007 
9008  md_data_raw.push_back
9009  ( MdRecord
9010  ( NAME( "Reduce" ),
9011  DESCRIPTION
9012  (
9013  "Reduces a larger class to a smaller class of same size.\n"
9014  "\n"
9015  "The Reduce command reduces all \"1\"-dimensions to nil. Examples:\n"
9016  "\t1) 1 Vector can be reduced to a Numeric\n"
9017  "\t2) 2x1 Matrix can be reduced to 2 Vector\n"
9018  "\t3) 1x3x1 Tensor3 can be reduced to 3 Vector\n"
9019  "\t4) 1x1x1x1 Tensor4 can be reduced to a Numeric\n"
9020  "\t5) 3x1x4x1x5 Tensor5 can only be reduced to 3x4x5 Tensor3\n"
9021  "\t6) 1x1x1x1x2x3 Tensor6 can be reduced to 2x3 Matrix\n"
9022  "\t7) 2x3x4x5x6x7x1 Tensor7 can be reduced to 2x3x4x5x6x7 Tensor6\n"
9023  "And so on\n"
9024  ),
9025  AUTHORS( "Oliver Lemke", "Richard Larsson" ),
9026  OUT(),
9027  GOUT( "o" ),
9028  GOUT_TYPE( "Numeric, Numeric, Numeric, Numeric, Numeric, Numeric, Numeric,"
9029  "Vector, Vector, Vector, Vector, Vector, Vector,"
9030  "Matrix, Matrix, Matrix, Matrix, Matrix,"
9031  "Tensor3, Tensor3, Tensor3, Tensor3,"
9032  "Tensor4, Tensor4, Tensor4,"
9033  "Tensor5, Tensor5,"
9034  "Tensor6"),
9035  GOUT_DESC( "Reduced form of input." ),
9036  IN(),
9037  GIN( "i" ),
9038  GIN_TYPE( "Vector, Matrix, Tensor3, Tensor4, Tensor5, Tensor6, Tensor7,"
9039  "Matrix, Tensor3, Tensor4, Tensor5, Tensor6, Tensor7,"
9040  "Tensor3, Tensor4, Tensor5, Tensor6, Tensor7,"
9041  "Tensor4, Tensor5, Tensor6, Tensor7,"
9042  "Tensor5, Tensor6, Tensor7,"
9043  "Tensor6, Tensor7,"
9044  "Tensor7"),
9045  GIN_DEFAULT( NODEF ),
9046  GIN_DESC( "Over-dimensioned input" ),
9047  SETMETHOD( false ),
9048  AGENDAMETHOD( false ),
9049  USES_TEMPLATES( false )
9050  ));
9051 
9052  md_data_raw.push_back
9053  ( MdRecord
9054  ( NAME( "refellipsoidEarth" ),
9055  DESCRIPTION
9056  (
9057  "Earth reference ellipsoids.\n"
9058  "\n"
9059  "The reference ellipsoid (*refellipsoid*) is set to model the Earth,\n"
9060  "following different models. The options are:\n"
9061  "\n"
9062  " \"Sphere\" : A spherical Earth. The radius is set following\n"
9063  " the value set for the Earth radius in constants.cc.\n"
9064  "\n"
9065  " \"WGS84\" : The reference ellipsoid used by the GPS system.\n"
9066  " Should be the standard choice for a non-spherical Earth.\n"
9067  ),
9068  AUTHORS( "Patrick Eriksson" ),
9069  OUT( "refellipsoid" ),
9070  GOUT(),
9071  GOUT_TYPE(),
9072  GOUT_DESC(),
9073  IN( ),
9074  GIN( "model" ),
9075  GIN_TYPE( "String" ),
9076  GIN_DEFAULT( "Sphere" ),
9077  GIN_DESC( "Model ellipsoid to use. Options listed above." )
9078  ));
9079 
9080  md_data_raw.push_back
9081  ( MdRecord
9082  ( NAME( "refellipsoidForAzimuth" ),
9083  DESCRIPTION
9084  (
9085  "Conversion of 3D ellipsoid to 1D curvature radius.\n"
9086  "\n"
9087  "Calculates the curvature radius for the given latitude and azimuth\n"
9088  "angle, and uses this to set a spherical reference ellipsoid\n"
9089  "suitable for 1D calculations. The curvature radius is a better\n"
9090  "local approximation than using the local ellipsoid radius.\n"
9091  "\n"
9092  "The used expression assumes a geodetic latitude, but also\n"
9093  "latitudes should be OK as using this method anyhow signifies\n"
9094  "an approximation.\n"
9095  ),
9096  AUTHORS( "Patrick Eriksson" ),
9097  OUT( "refellipsoid" ),
9098  GOUT(),
9099  GOUT_TYPE(),
9100  GOUT_DESC(),
9101  IN( "refellipsoid" ),
9102  GIN( "latitude", "azimuth" ),
9103  GIN_TYPE( "Numeric", "Numeric" ),
9104  GIN_DEFAULT( NODEF, NODEF ),
9105  GIN_DESC( "Latitude.", "Azimuth angle." )
9106  ));
9107 
9108  md_data_raw.push_back
9109  ( MdRecord
9110  ( NAME( "refellipsoidJupiter" ),
9111  DESCRIPTION
9112  (
9113  "Jupiter reference ellipsoids.\n"
9114  "\n"
9115  "The reference ellipsoid (*refellipsoid*) is set to model Jupiter,\n"
9116  "folowing different models. The options are:\n"
9117  "\n"
9118  " \"Sphere\" : A spherical planet. The radius is taken from a\n"
9119  " report of the IAU/IAG Working Group.\n"
9120  "\n"
9121  " \"Ellipsoid\" : A reference ellipsoid with parameters taken from\n"
9122  " a report of the IAU/IAG Working Group.\n"
9123  ),
9124  AUTHORS( "Patrick Eriksson" ),
9125  OUT( "refellipsoid" ),
9126  GOUT(),
9127  GOUT_TYPE(),
9128  GOUT_DESC(),
9129  IN( ),
9130  GIN( "model" ),
9131  GIN_TYPE( "String" ),
9132  GIN_DEFAULT( "Sphere" ),
9133  GIN_DESC( "Model ellipsoid to use. Options listed above." )
9134  ));
9135 
9136  md_data_raw.push_back
9137  ( MdRecord
9138  ( NAME( "refellipsoidMars" ),
9139  DESCRIPTION
9140  (
9141  "Mars reference ellipsoids.\n"
9142  "\n"
9143  "The reference ellipsoid (*refellipsoid*) is set to model Mars,\n"
9144  "folowing different models. The options are:\n"
9145  "\n"
9146  " \"Sphere\" : A spherical planet. The radius is taken from a\n"
9147  " report of the IAU/IAG Working Group.\n"
9148  "\n"
9149  " \"Ellipsoid\" : A reference ellipsoid with parameters taken from\n"
9150  " a report of the IAU/IAG Working Group.\n"
9151  ),
9152  AUTHORS( "Patrick Eriksson" ),
9153  OUT( "refellipsoid" ),
9154  GOUT(),
9155  GOUT_TYPE(),
9156  GOUT_DESC(),
9157  IN( ),
9158  GIN( "model" ),
9159  GIN_TYPE( "String" ),
9160  GIN_DEFAULT( "Sphere" ),
9161  GIN_DESC( "Model ellipsoid to use. Options listed above." )
9162  ));
9163 
9164  md_data_raw.push_back
9165  ( MdRecord
9166  ( NAME( "refellipsoidMoon" ),
9167  DESCRIPTION
9168  (
9169  "Moon reference ellipsoids.\n"
9170  "\n"
9171  "The reference ellipsoid (*refellipsoid*) is set to model Moon,\n"
9172  "folowing different models. The options are:\n"
9173  "\n"
9174  " \"Sphere\" : A spherical planet. The radius is taken from a\n"
9175  " report of the IAU/IAG Working Group.\n"
9176  "\n"
9177  " \"Ellipsoid\" : A reference ellipsoid with parameters taken from\n"
9178  " Wikepedia (see code for details). The IAU/IAG working group\n"
9179  " defines the Moon ellipsoid to be a sphere.\n"
9180  ),
9181  AUTHORS( "Patrick Eriksson" ),
9182  OUT( "refellipsoid" ),
9183  GOUT(),
9184  GOUT_TYPE(),
9185  GOUT_DESC(),
9186  IN( ),
9187  GIN( "model" ),
9188  GIN_TYPE( "String" ),
9189  GIN_DEFAULT( "Sphere" ),
9190  GIN_DESC( "Model ellipsoid to use. Options listed above." )
9191  ));
9192 
9193  md_data_raw.push_back
9194  ( MdRecord
9195  ( NAME( "refellipsoidOrbitPlane" ),
9196  DESCRIPTION
9197  (
9198  "Conversion of 3D ellipsoid to 2D orbit track geometry.\n"
9199  "\n"
9200  "Determines an approximate reference ellipsoid following an orbit\n"
9201  "track. The new ellipsoid is determined simply, by determining the\n"
9202  "radius at the maximum latitude and from this value calculate a new\n"
9203  "new eccentricity. The orbit is specified by giving the orbit\n"
9204  "inclination (*orbitinc*), that is normally a value around 100 deg\n"
9205  "for polar sun-synchronous orbits.\n"
9206  ),
9207  AUTHORS( "Patrick Eriksson" ),
9208  OUT( "refellipsoid" ),
9209  GOUT(),
9210  GOUT_TYPE(),
9211  GOUT_DESC(),
9212  IN( "refellipsoid" ),
9213  GIN( "orbitinc" ),
9214  GIN_TYPE( "Numeric" ),
9215  GIN_DEFAULT( NODEF ),
9216  GIN_DESC( "Orbit inclination." )
9217  ));
9218 
9219  md_data_raw.push_back
9220  ( MdRecord
9221  ( NAME( "refellipsoidSet" ),
9222  DESCRIPTION
9223  (
9224  "Manual setting of the reference ellipsoid.\n"
9225  "\n"
9226  "The two values of *refellipsoid* can here be set manually. The two\n"
9227  "arguments correspond directly to first and second element of\n"
9228  "*refellipsoid*.\n"
9229  ),
9230  AUTHORS( "Patrick Eriksson" ),
9231  OUT( "refellipsoid" ),
9232  GOUT(),
9233  GOUT_TYPE(),
9234  GOUT_DESC(),
9235  IN( ),
9236  GIN( "re", "e" ),
9237  GIN_TYPE( "Numeric", "Numeric" ),
9238  GIN_DEFAULT( NODEF, "0" ),
9239  GIN_DESC( "Average or equatorial radius.", "Eccentricity" )
9240  ));
9241 
9242  md_data_raw.push_back
9243  ( MdRecord
9244  ( NAME( "refellipsoidVenus" ),
9245  DESCRIPTION
9246  (
9247  "Venus reference ellipsoids.\n"
9248  "\n"
9249  "The reference ellipsoid (*refellipsoid*) is set to model Venus,\n"
9250  "folowing different models. The options are:\n"
9251  "\n"
9252  " \"Sphere\" : A spherical planet. The radius is taken from a\n"
9253  " report of the IAU/IAG Working Group.\n"
9254  "\n"
9255  "According to the report used above, the Venus ellipsoid lacks\n"
9256  "eccentricity and no further models should be required.\n"
9257  ),
9258  AUTHORS( "Patrick Eriksson" ),
9259  OUT( "refellipsoid" ),
9260  GOUT(),
9261  GOUT_TYPE(),
9262  GOUT_DESC(),
9263  IN( ),
9264  GIN( "model" ),
9265  GIN_TYPE( "String" ),
9266  GIN_DEFAULT( "Sphere" ),
9267  GIN_DESC( "Model ellipsoid to use. Options listed above." )
9268  ));
9269 
9270  md_data_raw.push_back
9271  ( MdRecord
9272  ( NAME( "refr_index_airFreeElectrons" ),
9273  DESCRIPTION
9274  (
9275  "Microwave refractive index due to free electrons.\n"
9276  "\n"
9277  "The refractive index of free electrons is added to *refr_index_air*.\n"
9278  "To obtain the complete value, *refr_index_air* should be set to 1\n"
9279  "before calling this WSM. This applies also to *refr_index_air_group*.\n"
9280  "\n"
9281  "The expression applied is n=sqrt(1-wp^2/w^2) where wp is the plasma\n"
9282  "frequency, and w is the angular frequency (the function returns\n"
9283  "n-1, that here is slightly negative). This expressions is found in\n"
9284  "many textbooks, e.g. Rybicki and Lightman (1979). The above refers\n"
9285  "to *refr_index*. *refr_index_group* is sqrt(1+wp^2/w^2).\n"
9286  "\n"
9287  "The expression is dispersive. The frequency applied is the mean of\n"
9288  "first and last element of *f_grid* is selected. This frequency must\n"
9289  "be at least twice the plasma frequency.\n"
9290  "\n"
9291  "An error is issued if free electrons not are part of *abs_species*\n"
9292  "(and there exist a corresponding \"vmr\"-value). This demand is\n"
9293  "removed if *demand_vmr_value* is set to 0, but use this option\n"
9294  "with care.\n"
9295  ),
9296  AUTHORS( "Patrick Eriksson" ),
9297  OUT( "refr_index_air", "refr_index_air_group" ),
9298  GOUT(),
9299  GOUT_TYPE(),
9300  GOUT_DESC(),
9301  IN( "refr_index_air", "refr_index_air_group", "f_grid", "abs_species",
9302  "rtp_vmr" ),
9303  GIN( "demand_vmr_value" ),
9304  GIN_TYPE( "Index" ),
9305  GIN_DEFAULT( "1" ),
9306  GIN_DESC( "Flag to control if it is demanded that free electrons are "
9307  "in *abs_species*. Default is that this is demanded." )
9308  ));
9309 
9310  md_data_raw.push_back
9311  ( MdRecord
9312  ( NAME( "refr_index_airIR" ),
9313  DESCRIPTION
9314  (
9315  "Calculates the IR refractive index due to gases in the\n"
9316  "Earth's atmosphere.\n"
9317  "\n"
9318  "Only refractivity of dry air is considered. The formula used is\n"
9319  "contributed by Michael Hoefner, Forschungszentrum Karlsruhe.\n"
9320  "\n"
9321  "The refractivity of dry air is added to *refr_index_air*. To obtain\n"
9322  "the complete value, *refr_index_air* should be set to 1 before\n"
9323  "calling this WSM. This applies also to *refr_index_air_group*.\n"
9324  "\n"
9325  "The expression used is non-dispersive. Hence, *refr_index_air* and\n"
9326  "*refr_index_air_group* are identical.\n"
9327  ),
9328  AUTHORS( "Mattias Ekstrom" ),
9329  OUT( "refr_index_air", "refr_index_air_group" ),
9330  GOUT(),
9331  GOUT_TYPE(),
9332  GOUT_DESC(),
9333  IN( "refr_index_air", "refr_index_air_group", "rtp_pressure",
9334  "rtp_temperature" ),
9335  GIN(),
9336  GIN_TYPE(),
9337  GIN_DEFAULT(),
9338  GIN_DESC()
9339  ));
9340 
9341  md_data_raw.push_back
9342  ( MdRecord
9343  ( NAME( "refr_index_airMWgeneral" ),
9344  DESCRIPTION
9345  (
9346  "Microwave refractive index due to gases in planetary atmospheres.\n"
9347  "\n"
9348  "The refractivity of a specified gas mixture is calculated and added\n"
9349  "to *refr_index_air*. To obtain the complete value, *refr_index_air*\n"
9350  "should be set to 1 before calling this WSM. This applies also to\n"
9351  "*refr_index_air_group.\n"
9352  "\n"
9353  "The expression used is non-dispersive. Hence, *refr_index_air* and\n"
9354  "*refr_index_air_group* are identical.\n"
9355  "\n"
9356  "Uses the methodology introduced by Newell&Baird (1965) for calculating\n"
9357  "refractivity of variable gas mixtures based on refractivity of the\n"
9358  "individual gases at reference conditions. Assuming ideal gas law for\n"
9359  "converting reference refractivity to actual pressure and temperature\n"
9360  "conditions. Reference refractivities are also taken from Newell&Baird (1965)\n"
9361  "and are vailable for N2, O2, CO2, H2, and He. Additionally, H2O reference\n"
9362  "refractivity has been derived from H2O contribution in Thayer (see\n"
9363  "*refr_index_airThayer*) for T0=273.15K. Any mixture of these gases\n"
9364  "can be taken into account.\n"
9365  ),
9366  AUTHORS( "Jana Mendrok" ),
9367  OUT( "refr_index_air", "refr_index_air_group" ),
9368  GOUT(),
9369  GOUT_TYPE(),
9370  GOUT_DESC(),
9371  IN( "refr_index_air", "refr_index_air_group", "rtp_pressure",
9372  "rtp_temperature", "rtp_vmr", "abs_species" ),
9373  GIN(),
9374  GIN_TYPE(),
9375  GIN_DEFAULT(),
9376  GIN_DESC()
9377  ));
9378 
9379  md_data_raw.push_back
9380  ( MdRecord
9381  ( NAME( "refr_index_airThayer" ),
9382  DESCRIPTION
9383  (
9384  "Microwave refractive index due to gases in the Earth's atmosphere.\n"
9385  "\n"
9386  "The refractivity of dry air and water vapour is added to\n"
9387  "*refr_index_air*. To obtain the complete value, *refr_index_air*\n"
9388  "shoul be set to 1 before calling this WSM. This applies also to\n"
9389  "*refr_index_air_group.\n"
9390  "\n"
9391  "The expression used is non-dispersive. Hence, *refr_index_air* and\n"
9392  "*refr_index_air_group* are identical.\n"
9393  "\n"
9394  "The parameterisation of Thayer (Radio Science, 9, 803-807, 1974)\n"
9395  "is used. See also Eq. 3 and 5 of Solheim et al. (JGR, 104,\n"
9396  "pp. 9664). The expression can be written as\n"
9397  " N = aP/T + be/T + ce/T^2\n"
9398  "where N is refractivity, P is pressure, T is temperature and\n"
9399  "e is water vapour partial pressure. The values of a, b and c can\n"
9400  "be modified. Default values are taken from Thayer (1974).\n"
9401  "Note that Thayer uses mbar for pressures, while in ARTS Pa is used\n"
9402  "and a, b and c must be scaled accordingly.\n"
9403  ),
9404  AUTHORS( "Patrick Eriksson" ),
9405  OUT( "refr_index_air", "refr_index_air_group" ),
9406  GOUT(),
9407  GOUT_TYPE(),
9408  GOUT_DESC(),
9409  IN( "refr_index_air", "refr_index_air_group", "rtp_pressure",
9410  "rtp_temperature", "rtp_vmr", "abs_species" ),
9411  GIN( "a", "b", "c" ),
9412  GIN_TYPE( "Numeric", "Numeric", "Numeric" ),
9413  GIN_DEFAULT( "77.6e-8", "64.8e-8", "3.776e-3" ),
9414  GIN_DESC( "Coefficient a, see above", "Coefficient b, see above",
9415  "Coefficient c, see above" )
9416  ));
9417 
9418  md_data_raw.push_back
9419  ( MdRecord
9420  ( NAME( "rte_losGeometricFromRtePosToRtePos2" ),
9421  DESCRIPTION
9422  (
9423  "The geometric line-of-sight between two points.\n"
9424  "\n"
9425  "The method sets *rte_los* to the line-of-sight, at *rte_pos*,\n"
9426  "that matches the geometrical propagation path between *rte_pos*\n"
9427  "and *rte_pos2*.\n"
9428  "\n"
9429  "The standard case should be that *rte_pos2* corresponds to a\n"
9430  "transmitter, and *rte_pos* to the receiver/sensor.\n"
9431  ),
9432  AUTHORS( "Patrick Eriksson" ),
9433  OUT( "rte_los" ),
9434  GOUT(),
9435  GOUT_TYPE(),
9436  GOUT_DESC(),
9437  IN( "atmosphere_dim", "lat_grid", "lon_grid", "refellipsoid",
9438  "rte_pos", "rte_pos2" ),
9439  GIN(),
9440  GIN_TYPE(),
9441  GIN_DEFAULT(),
9442  GIN_DESC()
9443  ));
9444 
9445  md_data_raw.push_back
9446  ( MdRecord
9447  ( NAME( "rte_losSet" ),
9448  DESCRIPTION
9449  (
9450  "Sets *rte_los* to the given angles.\n"
9451  "\n"
9452  "The azimuth angle is ignored for 1D and 2D.\n"
9453  ),
9454  AUTHORS( "Patrick Eriksson" ),
9455  OUT( "rte_los" ),
9456  GOUT(),
9457  GOUT_TYPE(),
9458  GOUT_DESC(),
9459  IN( "atmosphere_dim" ),
9460  GIN( "za", "aa" ),
9461  GIN_TYPE( "Numeric", "Numeric" ),
9462  GIN_DEFAULT( NODEF, NODEF ),
9463  GIN_DESC( "Zenith angle of sensor line-of-sight.",
9464  "Azimuth angle of sensor line-of-sight."
9465  )
9466  ));
9467 
9468  md_data_raw.push_back
9469  ( MdRecord
9470  ( NAME( "rte_posSet" ),
9471  DESCRIPTION
9472  (
9473  "Sets *rte_pos* to the given co-ordinates.\n"
9474  "\n"
9475  "The longitude is ignored for 1D and 2D, and the latitude is also \n"
9476  "ignored for 1D.\n"
9477  ),
9478  AUTHORS( "Patrick Eriksson" ),
9479  OUT( "rte_pos" ),
9480  GOUT(),
9481  GOUT_TYPE(),
9482  GOUT_DESC(),
9483  IN( "atmosphere_dim" ),
9484  GIN( "z", "lat", "lon" ),
9485  GIN_TYPE( "Numeric", "Numeric", "Numeric" ),
9487  GIN_DESC( "Geometrical altitude of sensor position.",
9488  "Latitude of sensor position.",
9489  "Longitude of sensor position."
9490  )
9491  ));
9492  md_data_raw.push_back
9493  ( MdRecord
9494  ( NAME( "rte_pos_losMoveToStartOfPpath" ),
9495  DESCRIPTION
9496  (
9497  "Sets *rte_pos* and *rte_los* to values for last point in *ppath*.\n"
9498  "\n"
9499  "For example, if the propagation path intersects with the surface,\n"
9500  "this method gives you the position and angle of *ppath* at the\n"
9501  "surface.\n"
9502  ),
9503  AUTHORS( "Patrick Eriksson" ),
9504  OUT( "rte_pos", "rte_los" ),
9505  GOUT(),
9506  GOUT_TYPE(),
9507  GOUT_DESC(),
9508  IN( "atmosphere_dim", "ppath" ),
9509  GIN(),
9510  GIN_TYPE(),
9511  GIN_DEFAULT(),
9512  GIN_DESC()
9513  ));
9514 
9515  md_data_raw.push_back
9516  ( MdRecord
9517  ( NAME( "ScatteringDisort" ),
9518  DESCRIPTION
9519  (
9520  "Disfunctional.\n"
9521  "\n"
9522  "No DISORT support in ARTS2.2 anymore.\n"
9523  "For using the DISORT RT solver interface, switch to ARTS2.3 or\n"
9524  "higher.\n"
9525  ),
9526  AUTHORS( "Claudia Emde" ),
9527  OUT( "scat_i_p", "scat_i_lat", "scat_i_lon",
9528  "f_index", "scat_data_array_mono", "doit_i_field1D_spectrum" ),
9529  GOUT(),
9530  GOUT_TYPE(),
9531  GOUT_DESC(),
9532  IN( "atmfields_checked", "atmgeom_checked",
9533  "cloudbox_checked", "cloudbox_limits", "stokes_dim",
9534  "opt_prop_part_agenda", "propmat_clearsky_agenda",
9535  "spt_calc_agenda", "pnd_field", "t_field",
9536  "z_field", "p_grid", "vmr_field", "scat_data_array", "f_grid",
9537  "scat_za_grid", "surface_emissivity_DISORT" ),
9538  GIN(),
9539  GIN_TYPE(),
9540  GIN_DEFAULT(),
9541  GIN_DESC()
9542  ));
9543 
9544  md_data_raw.push_back
9545  ( MdRecord
9546  ( NAME( "ScatteringDoit" ),
9547  DESCRIPTION
9548  (
9549  "Main DOIT method.\n"
9550  "\n"
9551  "This method executes *doit_mono_agenda* for each frequency\n"
9552  "in *f_grid*. The output is the radiation field inside the cloudbox\n"
9553  "(*doit_i_field*) and on the cloudbox boundary (*scat_i_p* (1D),\n"
9554  "*scat_i_lat* and *scat_i_lon* (3D)).\n"
9555  ),
9556  AUTHORS( "Claudia Emde" ),
9557  OUT( "doit_i_field",
9558  "scat_i_p", "scat_i_lat", "scat_i_lon",
9559  "doit_i_field1D_spectrum" ),
9560  GOUT(),
9561  GOUT_TYPE(),
9562  GOUT_DESC(),
9563  IN( "atmfields_checked", "atmgeom_checked",
9564  "cloudbox_checked", "cloudbox_on", "f_grid",
9565  "scat_i_p", "scat_i_lat", "scat_i_lon",
9566  "doit_i_field1D_spectrum",
9567  "doit_mono_agenda", "doit_is_initialized" ),
9568  GIN(),
9569  GIN_TYPE(),
9570  GIN_DEFAULT(),
9571  GIN_DESC()
9572  ));
9573 
9574  md_data_raw.push_back
9575  ( MdRecord
9576  ( NAME( "ScatteringMergeParticles1D" ),
9577  DESCRIPTION
9578  (
9579  "This method pre-calculates a weighted sum of all particles per pressure level.\n"
9580  "before the actual DOIT calculation is taking place in *ScatteringDoit*.\n"
9581  "It should be called directly after *pnd_fieldSetup* (but after\n"
9582  "*cloudbox_checkedCalc*). It's purpose is speeding up DOIT calculations.\n"
9583  "\n"
9584  "*pnd_field* is resized to [np, np, 1, 1]. Where np is the number of pressure levels\n"
9585  "inside the cloudbox. The diagonal elements of the new *pnd_field* are set to 1, all\n"
9586  "others to 0. Accordingly, *scat_data_array* is resized to np. Each particle\n"
9587  "is the weighted sum of all particles at this presssure level.\n"
9588  "This is an experimental method currently only working for very specific cases.\n"
9589  "All particles must be of the same type and all particles must share the same\n"
9590  "f_grid and za_grid. And pha_mat_data, ext_mat_data and abs_vec_data must be all\n"
9591  "the same size.\n"
9592  "This method can only be used with a 1D atmosphere.\n"
9593  ),
9594  AUTHORS( "Oliver Lemke" ),
9595  OUT( "pnd_field", "scat_data_array"),
9596  GOUT(),
9597  GOUT_TYPE(),
9598  GOUT_DESC(),
9599  IN( "pnd_field", "scat_data_array", "atmosphere_dim", "cloudbox_on", "cloudbox_limits",
9600  "t_field", "z_field", "z_surface", "cloudbox_checked" ),
9601  GIN(),
9602  GIN_TYPE(),
9603  GIN_DEFAULT(),
9604  GIN_DESC()
9605  ));
9606 
9607  md_data_raw.push_back
9608  ( MdRecord
9609  ( NAME( "ScatteringParticleTypeAndMetaRead" ),
9610  DESCRIPTION
9611  (
9612  "Reads single scattering data and scattering meta data.\n"
9613  "\n"
9614  "This method's input needs two XML-files, one containing an array \n"
9615  "of path/filenames (*ArrayOfString*) of single scattering data and the \n"
9616  "corresponding path/filenames to scattering meta data.\n"
9617  "For each single scattering file, there needs to be exactly one\n"
9618  "scattering meta data file.\n"
9619  "\n"
9620  "Currently particles of phase ice and/or water can be added for the same calculation.\n"
9621  "It is also possible to read *SingleScatteringData* for different shapes of\n"
9622  "ice particles. But all ice particels will share the same IWC, while performing\n"
9623  "the *pnd_field* calculations with *pnd_fieldSetup*.\n"
9624  "Also make sure, that two scattering particles of the same phase are never equal\n"
9625  "in size. This will break the calculations in *pnd_fieldSetup*\n"
9626  "\n"
9627  "Very important note:\n"
9628  "The order of the filenames for the single scattering data files has to\n"
9629  "exactly correspond to the order of the scattering meta data files.\n"
9630  ),
9631  AUTHORS( "Daniel Kreyling" ),
9632  OUT( "scat_data_array", "scat_meta_array" ),
9633  GOUT(),
9634  GOUT_TYPE(),
9635  GOUT_DESC(),
9636  IN( "f_grid" ),
9637  GIN( "filename_scat_data", "filename_scat_meta_data" ),
9638  GIN_TYPE( "String", "String" ),
9639  GIN_DEFAULT( NODEF, NODEF ),
9640  GIN_DESC( "File containing single scattering data file names.",
9641  "File containing scattering meta data file names."
9642  )
9643  ));
9644 
9645 
9646  md_data_raw.push_back
9647  ( MdRecord
9648  ( NAME( "ScatteringParticlesSelect" ),
9649  DESCRIPTION
9650  (
9651  "Selects data of *scat_data_array* corresponding to particles that\n"
9652  "according to *part_species* shall be considered in the scattering\n"
9653  "calculation.\n"
9654  "\n"
9655  "Selection is controlled by *part_species* settings and done based on\n"
9656  "particle type and size. *scat_meta_array* is searched\n"
9657  "for particles that fulfill the selection criteria. Selection is done\n"
9658  "individually for each element of *part_species*, i.e. for each\n"
9659  "considered particle field (implying a sorting of the selected\n"
9660  "*scat_meta_array* and *scat_data_array* according to the\n"
9661  "particle field they correspond to).\n"
9662  "Additionaly *scat_data_per_part_species* is created, which contains the number\n"
9663  "of particles that have been selected for each of the particle fields.\n"
9664  ),
9665  AUTHORS( "Daniel Kreyling" ),
9666  OUT( "scat_data_array", "scat_meta_array", "scat_data_per_part_species" ),
9667  GOUT(),
9668  GOUT_TYPE(),
9669  GOUT_DESC(),
9670  IN( "scat_data_array", "scat_meta_array", "part_species" ),
9671  GIN( "delim" ),
9672  GIN_TYPE( "String" ),
9673  GIN_DEFAULT( "-" ),
9674  GIN_DESC( "Delimiter string of *part_species* elements." )
9675  ));
9676 
9677  md_data_raw.push_back
9678  ( MdRecord
9679  ( NAME( "scat_meta_arrayAddTmatrix" ),
9680  DESCRIPTION
9681  (
9682  "This method adds particle meta data to the workspace variable\n"
9683  "*scat_meta_array*.\n"
9684  "\n"
9685  "One set of meta data is created and added to the array for each combination of\n"
9686  "maximum diameter and aspect ratio in the GINs diamter_max_grid and aspect_ratio_grid. The size of *scat_meta_array*\n"
9687  "and hence the usage has been extended. For that reason, a short\n"
9688  "summary below tells which input parameters are required for certain further\n"
9689  "calculations.\n"
9690  "\n"
9691  "String[description]\t\tNot used for any particular calculations\n"
9692  "String[material]\t\tUsed for PND calculations\n"
9693  "String[shape]\t\t\tUsed for scattering and PND calculations\n"
9694  "Numeric[particle_type]\t\tUsed for scattering calculations\n"
9695  "Numeric[density]\t\tUsed for PND calculations\n"
9696  "Vector[diameter_max_grid]\t\tUsed for both scattering and PND calculations\n"
9697  "Vector[aspect_ratio_grid]\t\tUsed for scattering calculations and PND calculations\n"
9698  "Vector[scat_f_grid]\t\tUsed for scattering calculations\n"
9699  "Vector[scat_T_grid]\t\tUsed for scattering calculations\n"
9700  "Tensor3[complex_refr_index]\tUsed for scattering calculations\n"
9701  ),
9702  AUTHORS( "Johan Strandgren" ),
9703  OUT("scat_meta_array"),
9704  GOUT(),
9705  GOUT_TYPE(),
9706  GOUT_DESC(),
9707  IN( "scat_meta_array", "complex_refr_index" ),
9708  GIN( "description", "material", "shape", "particle_type", "density",
9709  "aspect_ratio_grid", "diameter_max_grid", "scat_f_grid", "scat_T_grid" ),
9710  GIN_TYPE( "String", "String", "String", "String", "Numeric", "Vector",
9711  "Vector", "Vector", "Vector" ),
9712  GIN_DEFAULT( "", "undefined", NODEF, NODEF, "-999", NODEF, NODEF,
9713  NODEF, NODEF ),
9714  GIN_DESC( "Particle description", "Water or Ice", "spheroidal or cylinder",
9715  "Particle Type: MACROS_ISO (20) or PARTICLE_TYPE_HORIZ_AL (30)",
9716  "Particle mass density",
9717  "Particle aspect ratio vector",
9718  "Maximum diameter vector (diameter of a sphere that fully encloses the particle)",
9719  "Frequency grid vector", "Temperature grid vector" )
9720  ));
9721 
9722  md_data_raw.push_back
9723  ( MdRecord
9724  ( NAME( "scat_meta_arrayAddTmatrixOldVersion" ),
9725  DESCRIPTION
9726  (
9727  "This method adds particle meta data to the workspace variable\n"
9728  "*scat_meta_array*.\n"
9729  "\n"
9730  "One set of meta data is created and added to the array for each\n"
9731  "diameter in the GIN diamter_grid. The size of *scat_meta_array*\n"
9732  "and hence the usage has been extended. For that reason, a short\n"
9733  "summary below tells which input parameters are required for certain further\n"
9734  "calculations.\n"
9735  "\n"
9736  "String[description]\t\tNot used for any particular calculations\n"
9737  "String[material]\t\tNot used for any particular calculations\n"
9738  "String[shape]\t\t\tUsed for scattering properties calculations\n"
9739  "Numeric[particle_type]\t\tUsed for scattering properties calculations\n"
9740  "Numeric[density]\t\tUsed for PSD calculations\n"
9741  "Numeric[aspect_ratio]\t\tUsed for scattering properties calculations\n"
9742  "Numeric[diameter_grid]\t\tUsed for both scattering properties and PSD calculations\n"
9743  "Vector[scat_f_grid]\t\tUsed for scattering properties calculations\n"
9744  "Vector[scat_T_grid]\t\tUsed for scattering properties calculations\n"
9745  "Tensor3[complex_refr_index]\tUsed for scattering properties calculations\n"
9746  ),
9747  AUTHORS( "Johan Strandgren" ),
9748  OUT("scat_meta_array"),
9749  GOUT(),
9750  GOUT_TYPE(),
9751  GOUT_DESC(),
9752  IN( "scat_meta_array", "complex_refr_index" ),
9753  GIN( "description", "material", "shape", "particle_type", "density",
9754  "aspect_ratio", "diameter_grid", "scat_f_grid", "scat_T_grid" ),
9755  GIN_TYPE( "String", "String", "String", "String", "Numeric", "Numeric",
9756  "Vector", "Vector", "Vector" ),
9757  GIN_DEFAULT( "", "undefined", NODEF, NODEF, "-999", NODEF, NODEF,
9758  NODEF, NODEF ),
9759  GIN_DESC( "Particle description", "Water or Ice", "spheroidal or cylinder",
9760  "Particle Type: MACROS_ISO (20) or PARTICLE_TYPE_HORIZ_AL (30)",
9761  "Particle mass density",
9762  "Particle aspect ratio (can differ between WSMs. Check the userguide)",
9763  "equivalent diameter vector", "Frequency grid vector",
9764  "Temperature grid vector" )
9765  ));
9766 
9767  md_data_raw.push_back
9768  ( MdRecord
9769  ( NAME( "scat_meta_arrayInit" ),
9770  DESCRIPTION
9771  (
9772  "Initializes the workspace variable *scat_meta_array*.\n"
9773  ),
9774  AUTHORS( "Johan Strandgren" ),
9775  OUT("scat_meta_array"),
9776  GOUT(),
9777  GOUT_TYPE(),
9778  GOUT_DESC(),
9779  IN(),
9780  GIN(),
9781  GIN_TYPE(),
9782  GIN_DEFAULT(),
9783  GIN_DESC()
9784  ));
9785 
9786  md_data_raw.push_back
9787  ( MdRecord
9788  ( NAME( "scat_data_array_monoCalc" ),
9789  DESCRIPTION
9790  (
9791  "Interpolates *scat_data_array* by frequency to give *scat_data_array_mono*.\n"
9792  ),
9793  AUTHORS( "Cory Davis" ),
9794  OUT( "scat_data_array_mono" ),
9795  GOUT(),
9796  GOUT_TYPE(),
9797  GOUT_DESC(),
9798  IN( "scat_data_array", "f_grid", "f_index" ),
9799  GIN(),
9800  GIN_TYPE(),
9801  GIN_DEFAULT(),
9802  GIN_DESC()
9803  ));
9804 
9805  md_data_raw.push_back
9806  ( MdRecord
9807  ( NAME( "scat_data_arrayCheck" ),
9808  DESCRIPTION
9809  (
9810  "Method for checking the consistency of the optical properties\n"
9811  "in the database.\n"
9812  "\n"
9813  "This function can be used to check datafiles containing data for\n"
9814  "randomly oriented scattering media. For other particle types, the\n"
9815  "check is skipped and a warning is printed to screen.\n"
9816  "It is checked whether that the integral over\n"
9817  "the phase matrix element Z11 is equal (or: close to) the scattering\n"
9818  "cross section as derived from the difference of (scalar) extinction\n"
9819  "and absorption cross sections: <int_Z11> == <C_sca> = <K11> - <a1>.\n"
9820  "\n"
9821  "An error is thrown, if the product of the single scattering\n"
9822  "albedo and the fractional deviation of <int_Z11> from <C_sca>\n"
9823  "(which is actually equal the absolute albedo deviation) exceeds\n"
9824  "the given threshold:\n"
9825  "\n"
9826  "( <int_Z11>/<C_sca>-1. ) * ( <C_sca>/<K11> ) > threshold\n"
9827  "\n"
9828  "The results for all calculated quantities are printed on the screen,\n"
9829  "if verbosity>1.\n"
9830  ),
9831  AUTHORS( "Claudia Emde", "Jana Mendrok" ),
9832  OUT(),
9833  GOUT(),
9834  GOUT_TYPE(),
9835  GOUT_DESC(),
9836  IN( "scat_data_array" ),
9837  GIN( "threshold" ),
9838  GIN_TYPE( "Numeric" ),
9839  GIN_DEFAULT( "1e-3" ),
9840  GIN_DESC( "Threshold for allowed deviation in albedo when using integrated "
9841  "phase matrix vs. using extinction-absorption difference." )
9842  ));
9843 
9844  md_data_raw.push_back
9845  ( MdRecord
9846  ( NAME( "scat_data_arrayFromMeta" ),
9847  DESCRIPTION
9848  (
9849  "This workspace method calculates scattering data and adds it to\n"
9850  "*scat_data_array* using particle meta data in *scat_meta_array*.\n"
9851  "The scattering data is calculated with the T-matrix method.\n"
9852  "\n"
9853  "One set of scattering data is calculated for each particle in\n"
9854  "*scat_meta_array*\n"
9855  ),
9856  AUTHORS( "Johan Strandgren, Oliver Lemke" ),
9857  OUT("scat_data_array"),
9858  GOUT(),
9859  GOUT_TYPE(),
9860  GOUT_DESC(),
9861  IN("scat_meta_array"),
9862  GIN( "za_grid", "aa_grid", "precision" ),
9863  GIN_TYPE("Vector", "Vector", "Numeric" ),
9865  GIN_DESC("Zenith angle grid",
9866  "Azimuth angle grid",
9867  "Precision"
9868  )
9869  ));
9870 
9871  md_data_raw.push_back
9872  ( MdRecord
9873  ( NAME( "Select" ),
9874  DESCRIPTION
9875  (
9876  "Method to select some elements from one array and copy them to\n"
9877  "a new array. (Works also for vectors.)\n"
9878  "\n"
9879  "This works also for higher dimensional objects, where the selection is\n"
9880  "always performed in the first dimension.\n"
9881  "\n"
9882  "For example:\n"
9883  "\n"
9884  "Select(y,x,[0,3])\n"
9885  "\n"
9886  "will select the first and fourth row of matrix x and copy them to the\n"
9887  "output matrix y.\n"
9888  "\n"
9889  "Note that it is even safe to use this method if needles and haystack\n"
9890  "are the same variable.\n"
9891  ),
9892  AUTHORS( "Oliver Lemke" ),
9893  OUT(),
9894  GOUT( "needles" ),
9895  GOUT_TYPE( ARRAY_GROUPS + ", Vector, Matrix, Sparse" ),
9896  GOUT_DESC( "Selected elements. Must have the same variable type as "
9897  "haystack." ),
9898  IN(),
9899  GIN( "haystack", "needleindexes" ),
9900  GIN_TYPE( ARRAY_GROUPS + ", Vector, Matrix, Sparse",
9901  "ArrayOfIndex" ),
9902  GIN_DEFAULT( NODEF, NODEF ),
9903  GIN_DESC( "Variable to select from. May be the same variable as needles.",
9904  "The elements to select (zero based indexing, as always.)" ),
9905  SETMETHOD( false ),
9906  AGENDAMETHOD( false ),
9907  USES_TEMPLATES( true )
9908  ));
9909 
9910  md_data_raw.push_back
9911  ( MdRecord
9912  ( NAME( "sensor_checkedCalc" ),
9913  DESCRIPTION
9914  (
9915  "Checks consistency of the sensor variables.\n"
9916  "\n"
9917  "The following WSVs are treated: *sensor_pos*, *sensor_los*,\n"
9918  "*transmitter_pos*, *mblock_za_grid*, *mblock_aa_grid*,\n"
9919  "*antenna_dim*, *sensor_response*, *sensor_response_f*,\n"
9920  "*sensor_response_pol*, *sensor_response_za*, *sensor_response_aa*.\n"
9921  "If any of these variables are changed, then this method shall be\n"
9922  "called again (no automatic check that this is fulfilled!).\n"
9923  "\n"
9924  "The main tests are that dimensions of sensor variables agree\n"
9925  "with other settings, e.g., the size of f_grid, atmosphere_dim,\n"
9926  "stokes_dim, etc.\n"
9927  "\n"
9928  "If any test fails, there is an error. Otherwise, *sensor_checked*\n"
9929  "is set to 1.\n"
9930  ),
9931  AUTHORS( "Jana Mendrok" ),
9932  OUT( "sensor_checked" ),
9933  GOUT(),
9934  GOUT_TYPE(),
9935  GOUT_DESC(),
9936  IN( "atmosphere_dim", "stokes_dim", "f_grid", "sensor_pos",
9937  "sensor_los", "transmitter_pos", "mblock_za_grid", "mblock_aa_grid",
9938  "antenna_dim", "sensor_response", "sensor_response_f",
9939  "sensor_response_pol", "sensor_response_za", "sensor_response_aa"),
9940  GIN(),
9941  GIN_TYPE(),
9942  GIN_DEFAULT(),
9943  GIN_DESC()
9944  ));
9945 
9946  md_data_raw.push_back
9947  ( MdRecord
9948  ( NAME( "sensorOff" ),
9949  DESCRIPTION
9950  (
9951  "Sets sensor WSVs to obtain monochromatic pencil beam values.\n"
9952  "\n"
9953  "A 1D antenna pattern is assumed. The variables are set as follows:\n"
9954  " antenna_dim : 1.\n"
9955  " mblock_za_grid : Length 1, value 0.\n"
9956  " mblock_aa_grid : Empty.\n"
9957  " sensor_response* : As returned by *sensor_responseInit*.\n"
9958  ),
9959  AUTHORS( "Patrick Eriksson" ),
9960  OUT( "sensor_response", "sensor_response_f",
9961  "sensor_response_pol", "sensor_response_za",
9962  "sensor_response_aa",
9963  "sensor_response_f_grid", "sensor_response_pol_grid",
9964  "sensor_response_za_grid", "sensor_response_aa_grid",
9965  "antenna_dim", "mblock_za_grid", "mblock_aa_grid" ),
9966  GOUT(),
9967  GOUT_TYPE(),
9968  GOUT_DESC(),
9969  IN( "stokes_dim", "f_grid" ),
9970  GIN(),
9971  GIN_TYPE(),
9972  GIN_DEFAULT(),
9973  GIN_DESC()
9974  ));
9975 
9976  md_data_raw.push_back
9977  ( MdRecord
9978  ( NAME( "sensor_responseAntenna" ),
9979  DESCRIPTION
9980  (
9981  "Includes response of the antenna.\n"
9982  "\n"
9983  "The function returns the sensor response matrix after the antenna\n"
9984  "characteristics have been included.\n"
9985  "\n"
9986  "The function handles \"multi-beam\" cases where the polarisation\n"
9987  "coordinate system is the same for all beams.\n"
9988  "\n"
9989  "See *antenna_dim*, *antenna_los* and *antenna_response* for\n"
9990  "details on how to specify the antenna response.\n"
9991  ),
9992  AUTHORS( "Mattias Ekstrom", "Patrick Eriksson" ),
9993  OUT( "sensor_response", "sensor_response_f", "sensor_response_pol",
9994  "sensor_response_za", "sensor_response_aa",
9995  "sensor_response_za_grid", "sensor_response_aa_grid" ),
9996  GOUT(),
9997  GOUT_TYPE(),
9998  GOUT_DESC(),
9999  IN( "sensor_response", "sensor_response_f", "sensor_response_pol",
10000  "sensor_response_za", "sensor_response_aa", "sensor_response_f_grid",
10001  "sensor_response_pol_grid", "sensor_response_za_grid",
10002  "sensor_response_aa_grid", "atmosphere_dim", "antenna_dim",
10003  "antenna_los", "antenna_response", "sensor_norm" ),
10004  GIN(),
10005  GIN_TYPE(),
10006  GIN_DEFAULT(),
10007  GIN_DESC()
10008  ));
10009 
10010  md_data_raw.push_back
10011  ( MdRecord
10012  ( NAME( "sensor_responseBackend" ),
10013  DESCRIPTION
10014  (
10015  "Includes response of the backend (spectrometer).\n"
10016  "\n"
10017  "The function returns the sensor response matrix after the backend\n"
10018  "characteristics have been included.\n"
10019  "\n"
10020  "See *f_backend*, *backend_channel_response* and *sensor_norm* for\n"
10021  "details on how to specify the backend response.\n"
10022  ),
10023  AUTHORS( "Mattias Ekstrom", "Patrick Eriksson" ),
10024  OUT( "sensor_response", "sensor_response_f", "sensor_response_pol",
10025  "sensor_response_za", "sensor_response_aa",
10026  "sensor_response_f_grid" ),
10027  GOUT(),
10028  GOUT_TYPE(),
10029  GOUT_DESC(),
10030  IN( "sensor_response", "sensor_response_f", "sensor_response_pol",
10031  "sensor_response_za", "sensor_response_aa",
10032  "sensor_response_f_grid", "sensor_response_pol_grid",
10033  "sensor_response_za_grid", "sensor_response_aa_grid",
10034  "f_backend", "backend_channel_response", "sensor_norm" ),
10035  GIN(),
10036  GIN_TYPE(),
10037  GIN_DEFAULT(),
10038  GIN_DESC()
10039  ));
10040 
10041  md_data_raw.push_back
10042  ( MdRecord
10043  ( NAME( "sensor_responseBackendFrequencySwitching" ),
10044  DESCRIPTION
10045  (
10046  "Frequency switching for a pure SSB reciever.\n"
10047  "\n"
10048  "This function can be used for simulation of frequency switching.\n"
10049  "That is, when the final spectrum is the difference of two spectra\n"
10050  "shifted in frequency. The switching is performed by the LO, but\n"
10051  "for a pure singel sideband reciever this is most easily simulated\n"
10052  "by instead shifting the backend, as done here.\n"
10053  "\n"
10054  "A strightforward frequency switching is modelled (no folding)\n"
10055  "The channel positions for the first measurement cycle are\n"
10056  "f_backend+df1, and for the second f_backend+df2. The first\n"
10057  "measurement cycle is given the negive weight. That is, the output\n"
10058  "is the spectrum for cycle2 minus the spectrum for cycle1.\n"
10059  "Output frequency grids are set to *f_backend*.\n"
10060  "\n"
10061  "Use *sensor_responseFrequencySwitching* for double sideband cases.\n"
10062  "\n"
10063  "The method has the same general functionality as, and can replace,\n"
10064  "*sensor_responseBackend*.\n"
10065  ),
10066  AUTHORS( "Patrick Eriksson" ),
10067  OUT( "sensor_response", "sensor_response_f", "sensor_response_pol",
10068  "sensor_response_za", "sensor_response_aa",
10069  "sensor_response_f_grid" ),
10070  GOUT(),
10071  GOUT_TYPE(),
10072  GOUT_DESC(),
10073  IN( "sensor_response", "sensor_response_f", "sensor_response_pol",
10074  "sensor_response_za", "sensor_response_aa",
10075  "sensor_response_f_grid", "sensor_response_pol_grid",
10076  "sensor_response_za_grid", "sensor_response_aa_grid",
10077  "f_backend", "backend_channel_response", "sensor_norm" ),
10078  GIN( "df1", "df2" ),
10079  GIN_TYPE( "Numeric", "Numeric" ),
10080  GIN_DEFAULT( NODEF, NODEF ),
10081  GIN_DESC( "Frequency throw for cycle1.", "Frequency throw for cycle2.")
10082  ));
10083 
10084  md_data_raw.push_back
10085  ( MdRecord
10086  ( NAME( "sensor_responseBeamSwitching" ),
10087  DESCRIPTION
10088  (
10089  "Simulation of \"beam switching\".\n"
10090  "\n"
10091  "The measurement procedure is based on taking the difference between\n"
10092  "two spectra measured in different directions, and the calculation\n"
10093  "set-up must treat exactly two observation directions.\n"
10094  "\n"
10095  "The returned spectrum is y = w1*y + w2*y2, where y1 and w1 are the\n"
10096  "spectrum and weight for the first direction, respectively (y2 and\n"
10097  "(w2 defined correspondingly for the second direction).\n"
10098  "\n"
10099  "Zenith and azimuth angles after beam switching are set to the\n"
10100  "values of the second direction.\n"
10101  ),
10102  AUTHORS( "Patrick Eriksson" ),
10103  OUT( "sensor_response", "sensor_response_f", "sensor_response_pol",
10104  "sensor_response_za", "sensor_response_aa",
10105  "sensor_response_za_grid", "sensor_response_aa_grid" ),
10106  GOUT(),
10107  GOUT_TYPE(),
10108  GOUT_DESC(),
10109  IN( "sensor_response", "sensor_response_f", "sensor_response_pol",
10110  "sensor_response_za", "sensor_response_aa",
10111  "sensor_response_f_grid", "sensor_response_pol_grid",
10112  "sensor_response_za_grid", "sensor_response_aa_grid" ),
10113  GIN( "w1", "w2" ),
10114  GIN_TYPE( "Numeric", "Numeric" ),
10115  GIN_DEFAULT( "-1", "1" ),
10116  GIN_DESC( "Weight for values from first viewing direction.",
10117  "Weight for values from second viewing direction."
10118  )
10119  ));
10120 
10121  md_data_raw.push_back
10122  ( MdRecord
10123  ( NAME( "sensor_responseFillFgrid" ),
10124  DESCRIPTION
10125  (
10126  "Polynomial frequency interpolation of spectra.\n"
10127  "z\n"
10128  "The sensor response methods treat the spectra to be piece-wise linear\n"
10129  "functions. This method is a workaround for making methods handling\n"
10130  "the spectra in a more elaborate way: it generates spectra on a more\n"
10131  "dense grid by polynomial interpolation. The interpolation is not\n"
10132  "done explicitly, it is incorporated into *sensor_response*.\n"
10133  "\n"
10134  "This method should in general increase the calculation accuracy for\n"
10135  "a given *f_grid*. However, the selection of (original) grid points\n"
10136  "becomes more sensitive when using this method. A poor choice of grid\n"
10137  "points can result in a decreased accuracy, or generation of negative\n"
10138  "radiances. Test calculations indicated that the error easily can\n"
10139  "increase with this method close the edge of *f_grid*, and it could\n"
10140  "be wise to make *f_grid* a bit wider than actually necessary to avoid\n"
10141  "this effect\n"
10142  "\n"
10143  "The method shall be inserted before the antenna stage. That is, this\n"
10144  "method shall normally be called directly after *sensor_responseInit*.\n"
10145  "\n"
10146  "Between each neighbouring points of *f_grid*, this method adds\n"
10147  "*nfill* grid points. The polynomial order of the interpolation is\n"
10148  "*polyorder*.\n"
10149  ),
10150  AUTHORS( "Patrick Eriksson" ),
10151  OUT( "sensor_response", "sensor_response_f", "sensor_response_pol",
10152  "sensor_response_za", "sensor_response_aa",
10153  "sensor_response_f_grid" ),
10154  GOUT(),
10155  GOUT_TYPE(),
10156  GOUT_DESC(),
10157  IN( "sensor_response", "sensor_response_f", "sensor_response_pol",
10158  "sensor_response_za", "sensor_response_aa",
10159  "sensor_response_f_grid", "sensor_response_pol_grid",
10160  "sensor_response_za_grid", "sensor_response_aa_grid" ),
10161  GIN( "polyorder", "nfill" ),
10162  GIN_TYPE( "Index", "Index" ),
10163  GIN_DEFAULT( "3", "2" ),
10164  GIN_DESC( "Polynomial order of interpolation",
10165  "Number of points to insert in each gap of f_grid" )
10166  ));
10167 
10168  md_data_raw.push_back
10169  ( MdRecord
10170  ( NAME( "sensor_responseFrequencySwitching" ),
10171  DESCRIPTION
10172  (
10173  "Simulation of \"frequency switching\".\n"
10174  "\n"
10175  "A general method for frequency switching. The WSM\n"
10176  "*sensor_responseBackendFrequencySwitching* gives a description of\n"
10177  "this observation technique, and is also a more straightforward\n"
10178  " method for pure singel sideband cases.\n"
10179  "\n"
10180  "It is here assume that *sensor_responseMultiMixerBackend* has been\n"
10181  "used to calculate the spectrum for two LO positions. This method\n"
10182  "calculates the difference between these two spectra, where the\n"
10183  "second spectrum gets weight 1 and the first weight -1 (as in\n"
10184  "*sensor_responseBackendFrequencySwitching*).\n"
10185  "\n"
10186  "Output frequency grids are taken from the second spectrum..\n"
10187  ),
10188  AUTHORS( "Patrick Eriksson" ),
10189  OUT( "sensor_response", "sensor_response_f", "sensor_response_pol",
10190  "sensor_response_za", "sensor_response_aa",
10191  "sensor_response_f_grid" ),
10192  GOUT(),
10193  GOUT_TYPE(),
10194  GOUT_DESC(),
10195  IN( "sensor_response", "sensor_response_f", "sensor_response_pol",
10196  "sensor_response_za", "sensor_response_aa",
10197  "sensor_response_f_grid", "sensor_response_pol_grid",
10198  "sensor_response_za_grid", "sensor_response_aa_grid" ),
10199  GIN(),
10200  GIN_TYPE(),
10201  GIN_DEFAULT(),
10202  GIN_DESC()
10203  ));
10204 
10205  md_data_raw.push_back
10206  ( MdRecord
10207  ( NAME( "sensor_responseIF2RF" ),
10208  DESCRIPTION
10209  (
10210  "Converts sensor response variables from IF to RF.\n"
10211  "\n"
10212  "The function converts intermediate frequencies (IF) in\n"
10213  "*sensor_response_f* and *sensor_response_f_grid* to radio\n"
10214  "frequencies (RF). This conversion is needed if the frequency\n"
10215  "translation of a mixer is included and the position of backend\n"
10216  "channels are specified in RF.\n"
10217  "\n"
10218  "A direct frequency conversion is performed. Values are not\n"
10219  "sorted in any way.\n"
10220  ),
10221  AUTHORS( "Patrick Eriksson" ),
10222  OUT( "sensor_response_f", "sensor_response_f_grid" ),
10223  GOUT(),
10224  GOUT_TYPE(),
10225  GOUT_DESC(),
10226  IN( "sensor_response_f", "sensor_response_f_grid", "lo",
10227  "sideband_mode" ),
10228  GIN(),
10229  GIN_TYPE(),
10230  GIN_DEFAULT(),
10231  GIN_DESC()
10232  ));
10233 
10234  md_data_raw.push_back
10235  ( MdRecord
10236  ( NAME( "sensor_responseInit" ),
10237  DESCRIPTION
10238  (
10239  "Initialises the variables summarising the sensor response.\n"
10240  "\n"
10241  "This method sets the variables to match monochromatic pencil beam\n"
10242  "calculations, to be further modified by inclusion of sensor\n"
10243  "characteristics. Use *sensorOff* if pure monochromatic pencil\n"
10244  "beam calculations shall be performed.\n"
10245  "\n"
10246  "The variables are set as follows:\n"
10247  " sensor_response : Identity matrix, with size matching *f_grid*,\n"
10248  " *stokes_dim* *mblock_za_grid* and\n"
10249  " *mblock_aa_grid*.\n"
10250  " sensor_response_f : Repeated values of *f_grid*.\n"
10251  " sensor_response_pol : Data matching *stokes_dim*.\n"
10252  " sensor_response_za : Repeated values of *mblock_za_grid*.\n"
10253  " sensor_response_aa : Repeated values of *mblock_aa_grid*.\n"
10254  " sensor_response_f_grid : Equal to *f_grid*.\n"
10255  " sensor_response_pol_grid: Set to 1:*stokes_dim*.\n"
10256  " sensor_response_za_grid : Equal to *mblock_za_grid*.\n"
10257  " sensor_response_aa_grid : Equal to *mblock_aa_grid*.\n"
10258  ),
10259  AUTHORS( "Mattias Ekstrom", "Patrick Eriksson" ),
10260  OUT( "sensor_response", "sensor_response_f", "sensor_response_pol",
10261  "sensor_response_za", "sensor_response_aa",
10262  "sensor_response_f_grid", "sensor_response_pol_grid",
10263  "sensor_response_za_grid", "sensor_response_aa_grid" ),
10264  GOUT(),
10265  GOUT_TYPE(),
10266  GOUT_DESC(),
10267  IN( "f_grid", "mblock_za_grid", "mblock_aa_grid", "antenna_dim",
10268  "atmosphere_dim", "stokes_dim", "sensor_norm" ),
10269  GIN(),
10270  GIN_TYPE(),
10271  GIN_DEFAULT(),
10272  GIN_DESC()
10273  ));
10274 
10275  md_data_raw.push_back
10276  ( MdRecord
10277  ( NAME( "sensor_responseMixer" ),
10278  DESCRIPTION
10279  (
10280  "Includes response of the mixer of a heterodyne system.\n"
10281  "\n"
10282  "The function returns the sensor response matrix after the mixer\n"
10283  "characteristics have been included. Frequency variables are\n"
10284  "converted from radio frequency (RF) to intermediate frequency (IF).\n"
10285  "The returned frequency grid covers the range [0,max_if], where\n"
10286  "max_if is the highest IF covered by the sideband response grid.\n"
10287  "\n"
10288  "See *lo* and *sideband_response* for details on how to specify the\n"
10289  "mixer response\n"
10290  ),
10291  AUTHORS( "Mattias Ekstrom", "Patrick Eriksson" ),
10292  OUT( "sensor_response", "sensor_response_f", "sensor_response_pol",
10293  "sensor_response_za", "sensor_response_aa",
10294  "sensor_response_f_grid" ),
10295  GOUT(),
10296  GOUT_TYPE(),
10297  GOUT_DESC(),
10298  IN( "sensor_response", "sensor_response_f", "sensor_response_pol",
10299  "sensor_response_za", "sensor_response_aa", "sensor_response_f_grid",
10300  "sensor_response_pol_grid", "sensor_response_za_grid",
10301  "sensor_response_aa_grid", "lo", "sideband_response", "sensor_norm" ),
10302  GIN(),
10303  GIN_TYPE(),
10304  GIN_DEFAULT(),
10305  GIN_DESC()
10306  ));
10307 
10308  md_data_raw.push_back
10309  ( MdRecord
10310  ( NAME( "sensor_responseMultiMixerBackend" ),
10311  DESCRIPTION
10312  (
10313  "Handles mixer and backend parts for an instrument having multiple\n"
10314  "mixer chains.\n"
10315  "\n"
10316  "The WSMs *sensor_responseMixer*, *sensor_responseIF2RF* and\n"
10317  "*sensor_responseBackend* are called for each mixer chain, and a\n"
10318  "complete *sensor_response* is assembled. The instrument responses\n"
10319  "are described by *lo_multi*, *sideband_response_multi*,\n"
10320  "*sideband_mode_multi*, *f_backend_multi* and\n"
10321  "*backend_channel_response_multi*. All these WSVs must have same\n"
10322  "vector or array length. As *sensor_responseIF2RF* is called,\n"
10323  "*f_backend_multi* must hold RF (not IF) and output frequencies\n"
10324  "will be in absolute frequency (RF).\n"
10325  ),
10326  AUTHORS( "Patrick Eriksson" ),
10327  OUT( "sensor_response", "sensor_response_f", "sensor_response_pol",
10328  "sensor_response_za", "sensor_response_aa",
10329  "sensor_response_f_grid" ),
10330  GOUT(),
10331  GOUT_TYPE(),
10332  GOUT_DESC(),
10333  IN( "sensor_response", "sensor_response_f", "sensor_response_pol",
10334  "sensor_response_za", "sensor_response_aa",
10335  "sensor_response_f_grid", "sensor_response_pol_grid",
10336  "sensor_response_za_grid", "sensor_response_aa_grid",
10337  "lo_multi", "sideband_response_multi",
10338  "sideband_mode_multi", "f_backend_multi",
10339  "backend_channel_response_multi", "sensor_norm" ),
10340  GIN(),
10341  GIN_TYPE(),
10342  GIN_DEFAULT(),
10343  GIN_DESC()
10344  ));
10345 
10346  md_data_raw.push_back
10347  ( MdRecord
10348  ( NAME( "sensor_responsePolarisation" ),
10349  DESCRIPTION
10350  (
10351  "Extraction of non-default polarisation components.\n"
10352  "\n"
10353  "The default is to output the Stokes elements I, Q, U and V (up to\n"
10354  "*stokes_dim*). This method allows to change the \"polarisation\" of\n"
10355  "the output. Polarisation components to be extracted are selected by\n"
10356  "*sensor_pol*. This method can be applied at any step of the sensor\n"
10357  "matrix set-up.\n"
10358  "\n"
10359  "The method can only be applied on data for I, Q, U and V. The value\n"
10360  "of *stokes_dim* must be sufficiently large for the selected\n"
10361  "components. For example, I+45 requires that *stokes_dim* is at\n"
10362  "least 3. \n"
10363  "\n"
10364  "See *sensor_pol* for coding of polarisation states.\n"
10365  "\n"
10366  "Note that the state of *iy_unit* is considered. This WSV must give\n"
10367  "the actual unit of the data. This as, the extraction of components\n"
10368  "is slightly different if data are radiances or brightness\n"
10369  "temperatures. In practise this means that *iy_unit* (as to be\n"
10370  "applied inside *iy_main_agenda*) must be set before calling this\n"
10371  "method.\n"
10372  ),
10373  AUTHORS( "Patrick Eriksson" ),
10374  OUT( "sensor_response", "sensor_response_f", "sensor_response_pol",
10375  "sensor_response_za", "sensor_response_aa",
10376  "sensor_response_pol_grid" ),
10377  GOUT(),
10378  GOUT_TYPE(),
10379  GOUT_DESC(),
10380  IN( "sensor_response", "sensor_response_f", "sensor_response_pol",
10381  "sensor_response_za", "sensor_response_aa", "sensor_response_f_grid",
10382  "sensor_response_pol_grid", "sensor_response_za_grid",
10383  "sensor_response_aa_grid", "stokes_dim", "iy_unit", "sensor_pol" ),
10384  GIN(),
10385  GIN_TYPE(),
10386  GIN_DEFAULT(),
10387  GIN_DESC()
10388  ));
10389 
10390  md_data_raw.push_back
10391  ( MdRecord
10392  ( NAME( "sensor_responseStokesRotation" ),
10393  DESCRIPTION
10394  (
10395  "Includes a rotation of the Stokes H and V directions.\n"
10396  "\n"
10397  "The method applies the rotations implied by *stokes_rotation*.\n"
10398  "See the description of that WSV for details.\n"
10399  "\n"
10400  "This method does not change the size of *sensor_response*, and\n"
10401  "the auxiliary variables (sensor_response_f etc.) are not changed.\n"
10402  "\n"
10403  "To apply the method, *stokes_dim* must be >= 3. The complete effect\n"
10404  "of the rotation can not be determibed with lower *stokes_dim*.\n"
10405  ),
10406  AUTHORS( "Patrick Eriksson" ),
10407  OUT( "sensor_response" ),
10408  GOUT(),
10409  GOUT_TYPE(),
10410  GOUT_DESC(),
10411  IN( "sensor_response", "sensor_response_f_grid",
10412  "sensor_response_pol_grid", "sensor_response_za_grid",
10413  "sensor_response_aa_grid", "stokes_dim", "stokes_rotation" ),
10414  GIN(),
10415  GIN_TYPE(),
10416  GIN_DEFAULT(),
10417  GIN_DESC()
10418  ));
10419 
10420  md_data_raw.push_back
10421  ( MdRecord
10422  ( NAME( "sensor_responseSimpleAMSU" ),
10423  DESCRIPTION
10424  (
10425  "Simplified sensor setup for an AMSU-type instrument.\n"
10426  "\n"
10427  "This method allows quick and simple definition of AMSU-type\n"
10428  "sensors. Assumptions:\n"
10429  "\n"
10430  "1. Pencil beam antenna.\n"
10431  "2. Double sideband receivers.\n"
10432  "3. Sideband mode \"upper\"\n"
10433  "4. The channel response is rectangular.\n"
10434  "\n"
10435  "Under these assumptions the only inputs needed are the LO positions,\n"
10436  "the offsets from the LO, and the IF bandwidths. They are provieded\n"
10437  "in sensor_description_amsu.\n"
10438  ),
10439  AUTHORS( "Stefan Buehler" ),
10440  OUT( "f_grid",
10441  "antenna_dim",
10442  "mblock_za_grid",
10443  "mblock_aa_grid",
10444  "sensor_response",
10445  "sensor_response_f",
10446  "sensor_response_pol",
10447  "sensor_response_za",
10448  "sensor_response_aa",
10449  "sensor_response_f_grid",
10450  "sensor_response_pol_grid",
10451  "sensor_response_za_grid",
10452  "sensor_response_aa_grid",
10453  "sensor_norm"
10454  ),
10455  GOUT(),
10456  GOUT_TYPE(),
10457  GOUT_DESC(),
10458  IN( "atmosphere_dim",
10459  "stokes_dim",
10460  "sensor_description_amsu" ),
10461  GIN( "spacing" ),
10462  GIN_TYPE( "Numeric" ),
10463  GIN_DEFAULT( ".1e9" ),
10464  GIN_DESC( "Desired grid spacing in Hz." )
10465  ));
10466 
10467 
10468  md_data_raw.push_back
10469  ( MdRecord
10470  ( NAME( "sensor_responseGenericAMSU" ),
10471  DESCRIPTION
10472  (
10473  "Simplified sensor setup for an AMSU-type instrument.\n"
10474  "\n"
10475  "This function is derived from 'sensor_responseSimpleAMSU' \n"
10476  "but is more generalized since the number of passbands in each \n"
10477  "can be in the range from 1 to 4 - in order to correctly simulate\n"
10478  "AMSU-A type sensors \n"
10479  "\n"
10480  "This method allows quick and simple definition of AMSU-type\n"
10481  "sensors. Assumptions:\n"
10482  "\n"
10483  "1. Pencil beam antenna.\n"
10484  "2. 1-4 Passband/sidebands per channel.\n"
10485  "3. Sideband mode \"upper\"\n"
10486  "4. The channel response is rectangular.\n"
10487  "\n"
10488  "Under these assumptions the only inputs needed are the LO positions,\n"
10489  "the offsets from the LO, and the IF bandwidths. They are provided\n"
10490  "in sensor_description_amsu.\n"
10491  ),
10492  AUTHORS( "Oscar Isoz" ),
10493  OUT( "f_grid",
10494  "antenna_dim",
10495  "mblock_za_grid",
10496  "mblock_aa_grid",
10497  "sensor_response",
10498  "sensor_response_f",
10499  "sensor_response_pol",
10500  "sensor_response_za",
10501  "sensor_response_aa",
10502  "sensor_response_f_grid",
10503  "sensor_response_pol_grid",
10504  "sensor_response_za_grid",
10505  "sensor_response_aa_grid",
10506  "sensor_norm"
10507  ),
10508  GOUT(),
10509  GOUT_TYPE(),
10510  GOUT_DESC(),
10511  IN( "atmosphere_dim",
10512  "stokes_dim",
10513  "sensor_description_amsu" ),
10514  GIN( "spacing" ),
10515  GIN_TYPE( "Numeric" ),
10516  GIN_DEFAULT( ".1e9" ),
10517  GIN_DESC( "Desired grid spacing in Hz." )
10518  ));
10519 
10520 
10521  /* Not yet updated
10522  md_data_raw.push_back
10523  ( MdRecord
10524  ( NAME( "sensor_responsePolarisation" ),
10525  DESCRIPTION
10526  (
10527  "Adds polarisation to the response matrix.\n"
10528  "\n"
10529  "The output polarisations are given by matrix *sensor_pol*.\n"
10530  ),
10531  AUTHORS( "Mattias Ekstrom" ),
10532  OUT( "sensor_response", "sensor_response_pol" ),
10533  GOUT(),
10534  GOUT_TYPE(),
10535  GOUT_DESC(),
10536  IN( "sensor_pol", "sensor_response_za", "sensor_response_aa",
10537  "sensor_response_f", "stokes_dim" ),
10538  GIN(),
10539  GIN_TYPE(),
10540  GIN_DEFAULT(),
10541  GIN_DESC()
10542  ));
10543  */
10544 
10545  /* Not yet updated
10546  md_data_raw.push_back
10547  ( MdRecord
10548  ( NAME( "sensor_responseRotation" ),
10549  DESCRIPTION
10550  (
10551  "Adds rotation to the response matrix.\n"
10552  "\n"
10553  "The rotations are given by *sensor_rot* combined with *antenna_los*.\n"
10554  "The rotations are performed within each measurement block for the\n"
10555  "individual antennae.\n"
10556  "\n"
10557  "If used this method has to be run after the antenna response\n"
10558  "function and prior to sensor_responsePolarisation.\n"
10559  ),
10560  AUTHORS( "Mattias Ekstrom" ),
10561  OUT( "sensor_response" ),
10562  GOUT(),
10563  GOUT_TYPE(),
10564  GOUT_DESC(),
10565  IN( "sensor_rot", "antenna_los", "antenna_dim", "stokes_dim",
10566  "sensor_response_f", "sensor_response_za" ),
10567  GIN(),
10568  GIN_TYPE(),
10569  GIN_DEFAULT(),
10570  GIN_DESC()
10571  ));
10572  */
10573 
10574  md_data_raw.push_back
10575  ( MdRecord
10576  ( NAME( "sensor_responseWMRF" ),
10577  DESCRIPTION
10578  (
10579  "Adds WMRF weights to sensor response.\n"
10580  "\n"
10581  "This method adds a spectrometer response that has been calculated\n"
10582  "with the weighted mean of representative frequencies (WMRF) method. It\n"
10583  "consists of a set of selected frequencies, and associated weights.\n"
10584  ),
10585  AUTHORS( "Stefan Buehler, based on Patrick Erikssons sensor_responseBackend" ),
10586  OUT( "sensor_response",
10587  "sensor_response_f",
10588  "sensor_response_pol",
10589  "sensor_response_za",
10590  "sensor_response_aa",
10591  "sensor_response_f_grid"),
10592  GOUT(),
10593  GOUT_TYPE(),
10594  GOUT_DESC(),
10595  IN( "sensor_response", "sensor_response_f", "sensor_response_pol",
10596  "sensor_response_za", "sensor_response_aa",
10597  "sensor_response_f_grid", "sensor_response_pol_grid",
10598  "sensor_response_za_grid", "sensor_response_aa_grid",
10599  "wmrf_weights",
10600  "f_backend" ),
10601  GIN(),
10602  GIN_TYPE(),
10603  GIN_DEFAULT(),
10604  GIN_DESC()
10605  ));
10606 
10607  md_data_raw.push_back
10608  ( MdRecord
10609  ( NAME( "SparseSparseMultiply" ),
10610  DESCRIPTION
10611  (
10612  "Multiplies a Sparse with another Sparse, result stored in Sparse.\n"
10613  "\n"
10614  "Makes the calculation: out = m1 * m2\n"
10615  ),
10616  AUTHORS( "Patrick Eriksson" ),
10617  OUT(),
10618  GOUT( "out" ),
10619  GOUT_TYPE( "Sparse" ),
10620  GOUT_DESC( "Product, can be same variable as any of the inputs." ),
10621  IN(),
10622  GIN( "m1" , "m2" ),
10623  GIN_TYPE( "Sparse", "Sparse" ),
10624  GIN_DEFAULT( NODEF , NODEF ),
10625  GIN_DESC( "Left sparse matrix.",
10626  "Right sparse matrix." )
10627  ));
10628 
10629  md_data_raw.push_back
10630  ( MdRecord
10631  ( NAME( "specular_losCalc" ),
10632  DESCRIPTION
10633  (
10634  "Calculates the specular direction for intersections with the\n"
10635  "surface.\n"
10636  "\n"
10637  "A help method to set up the surface properties. This method\n"
10638  "calculates *specular_los*, that is required in several methods\n"
10639  "to convert zenith angles to incidence angles.\n"
10640  "\n"
10641  "The method also returns the line-of-sight for the surface normal.\n"
10642  ),
10643  AUTHORS( "Patrick Eriksson" ),
10644  OUT( "specular_los", "surface_normal" ),
10645  GOUT(),
10646  GOUT_TYPE(),
10647  GOUT_DESC(),
10648  IN( "rtp_pos", "rtp_los", "atmosphere_dim", "lat_grid", "lon_grid",
10649  "refellipsoid", "z_surface" ),
10650  GIN(),
10651  GIN_TYPE(),
10652  GIN_DEFAULT(),
10653  GIN_DESC()
10654  ));
10655 
10656  md_data_raw.push_back
10657  ( MdRecord
10658  ( NAME( "StringCompose" ),
10659  DESCRIPTION
10660  (
10661  "Concatenate two or more strings.\n"
10662  "\n"
10663  "The output string is overwritten, but is allowed to appear\n"
10664  "in the input list. Up to 10 strings can be concatenated at once.\n"
10665  ),
10666  AUTHORS( "Oliver Lemke" ),
10667  OUT(),
10668  GOUT( "out" ),
10669  GOUT_TYPE( "String" ),
10670  GOUT_DESC( "Concatenated string." ),
10671  IN(),
10672  GIN( "in1", "in2", "in3", "in4", "in5",
10673  "in6", "in7", "in8", "in9", "in10"),
10674  GIN_TYPE( "String", "String", "String", "String", "String",
10675  "String", "String", "String", "String", "String" ),
10676  GIN_DEFAULT( NODEF, NODEF, "", "", "",
10677  "", "", "", "", ""),
10678  GIN_DESC( "Input text string.", "Input text string.", "Input text string.",
10679  "Input text string.", "Input text string.", "Input text string.",
10680  "Input text string.", "Input text string.", "Input text string.",
10681  "Input text string.")
10682  ));
10683 
10684  md_data_raw.push_back
10685  ( MdRecord
10686  ( NAME( "StringSet" ),
10687  DESCRIPTION
10688  (
10689  "Sets a String to the given text string.\n"
10690  ),
10691  AUTHORS( "Patrick Eriksson" ),
10692  OUT(),
10693  GOUT( "out" ),
10694  GOUT_TYPE( "String" ),
10695  GOUT_DESC( "Variable to initialize." ),
10696  IN(),
10697  GIN( "text" ),
10698  GIN_TYPE( "String" ),
10699  GIN_DEFAULT( NODEF ),
10700  GIN_DESC( "Input text string." ),
10701  SETMETHOD( true )
10702  ));
10703 
10704  md_data_raw.push_back
10705  ( MdRecord
10706  ( NAME( "surfaceBlackbody" ),
10707  DESCRIPTION
10708  (
10709  "Creates variables to mimic a blackbody surface.\n"
10710  "\n"
10711  "This method sets up *surface_los*, *surface_rmatrix* and\n"
10712  "*surface_emission* for *surface_rtprop_agenda*. Here, *surface_los*\n"
10713  "and *surface_rmatrix* are set to be empty, and *surface_emission*\n"
10714  "to hold blackbody radiation for a temperature of *surface_skin_t*.\n"
10715  ),
10716  AUTHORS( "Patrick Eriksson" ),
10717  OUT( "surface_los", "surface_rmatrix", "surface_emission" ),
10718  GOUT(),
10719  GOUT_TYPE(),
10720  GOUT_DESC(),
10721  IN( "f_grid", "stokes_dim", "surface_skin_t",
10722  "blackbody_radiation_agenda" ),
10723  GIN(),
10724  GIN_TYPE(),
10725  GIN_DEFAULT(),
10726  GIN_DESC()
10727  ));
10728 
10729  md_data_raw.push_back
10730  ( MdRecord
10731  ( NAME( "surfaceFlatRefractiveIndex" ),
10732  DESCRIPTION
10733  (
10734  "Creates variables to mimic specular reflection by a (flat) surface\n"
10735  "where the complex refractive index is specified.\n"
10736  "\n"
10737  "The dielectric properties of the surface are described by\n"
10738  "*surface_complex_refr_index*. The Fresnel equations are used to\n"
10739  "calculate amplitude reflection coefficients. The method can thus\n"
10740  "result in that the reflection properties differ between frequencies\n"
10741  "and polarisations.\n"
10742  "\n"
10743  "Local thermodynamic equilibrium is assumed, which corresponds to\n"
10744  "that the reflection and emission coefficients add up to 1.\n"
10745  ),
10746  AUTHORS( "Patrick Eriksson" ),
10747  OUT( "surface_los", "surface_rmatrix", "surface_emission" ),
10748  GOUT(),
10749  GOUT_TYPE(),
10750  GOUT_DESC(),
10751  IN( "f_grid", "stokes_dim", "atmosphere_dim", "rtp_los", "specular_los",
10752  "surface_skin_t", "surface_complex_refr_index",
10753  "blackbody_radiation_agenda" ),
10754  GIN(),
10755  GIN_TYPE(),
10756  GIN_DEFAULT(),
10757  GIN_DESC()
10758  ));
10759 
10760  md_data_raw.push_back
10761  ( MdRecord
10762  ( NAME( "surfaceFlatReflectivity" ),
10763  DESCRIPTION
10764  (
10765  "Creates variables to mimic specular reflection by a (flat) surface\n"
10766  "where *surface_reflectivity* is specified.\n"
10767  "\n"
10768  "Works basically as *surfaceFlatScalarReflectivity* but is more\n"
10769  "general as also vector radiative transfer is handled. See\n"
10770  "the ARTS theory document (ATD) for details around how\n"
10771  "*surface_emission* is determined. In the nomenclature of ATD,\n"
10772  "*surface_reflectivity* gives R.\n"
10773  ),
10774  AUTHORS( "Patrick Eriksson" ),
10775  OUT( "surface_los", "surface_rmatrix", "surface_emission" ),
10776  GOUT(),
10777  GOUT_TYPE(),
10778  GOUT_DESC(),
10779  IN( "f_grid", "stokes_dim", "atmosphere_dim",
10780  "specular_los", "surface_skin_t", "surface_reflectivity",
10781  "blackbody_radiation_agenda" ),
10782  GIN(),
10783  GIN_TYPE(),
10784  GIN_DEFAULT(),
10785  GIN_DESC()
10786  ));
10787 
10788  md_data_raw.push_back
10789  ( MdRecord
10790  ( NAME( "surfaceFlatScalarReflectivity" ),
10791  DESCRIPTION
10792  (
10793  "Creates variables to mimic specular reflection by a (flat) surface\n"
10794  "where *surface_scalar_reflectivity* is specified.\n"
10795  "\n"
10796  "The method can only be used for *stokes_dim* equal to 1. Local\n"
10797  "thermodynamic equilibrium is assumed, which corresponds to that\n"
10798  "reflectivity and emissivity add up to 1.\n"
10799  ),
10800  AUTHORS( "Patrick Eriksson" ),
10801  OUT( "surface_los", "surface_rmatrix", "surface_emission" ),
10802  GOUT(),
10803  GOUT_TYPE(),
10804  GOUT_DESC(),
10805  IN( "f_grid", "stokes_dim", "atmosphere_dim",
10806  "specular_los", "surface_skin_t", "surface_scalar_reflectivity",
10807  "blackbody_radiation_agenda" ),
10808  GIN(),
10809  GIN_TYPE(),
10810  GIN_DEFAULT(),
10811  GIN_DESC()
10812  ));
10813 
10814  md_data_raw.push_back
10815  ( MdRecord
10816  ( NAME( "surfaceLambertianSimple" ),
10817  DESCRIPTION
10818  (
10819  "Creates variables to mimic a Lambertian surface.\n"
10820  "\n"
10821  "The method can only be used for 1D calculations.\n"
10822  "\n"
10823  "A Lambertian surface can be characterised solely by its\n"
10824  "reflectivity, here taken from *surface_scalar_reflectivity*.\n"
10825  "\n"
10826  "The down-welling radiation field is estimated by making calculations\n"
10827  "for *lambertian_nza* directions. The range of zenith angles ([0,90])\n"
10828  "is divided in an equidistant manner. The values for *surface_rmatrix*\n"
10829  "are assuming a constant radiance over each zenith angle range.\n"
10830  "See AUG.\n"
10831  "\n"
10832  "Default is to select the zenith angles for *sensor_los* to be placed\n"
10833  "centrally in the grid ranges. For example, if *lambertian_nza* is set\n"
10834  "to 9, down-welling radiation will be calculated for zenith angles = \n"
10835  "5, 15, ..., 85. The position of these angles can be shifted by\n"
10836  "*za_pos*. This variable specifies the fractional distance inside the\n"
10837  "ranges. For example, a *za_pos* of 0.7 (np still 9) gives the angles\n"
10838  "7, 17, ..., 87.\n"
10839  "\n"
10840  "Only upper-left diagonal element of the *surface_rmatrix*-es is\n"
10841  "non-zero. That is, the upwelling radiation is always unpolarised.\n"
10842  "\n"
10843  "Local thermodynamic equilibrium is assumed, which corresponds to\n"
10844  "that the reflection and emission coefficients \"add up to 1\".\n"
10845  ),
10846  AUTHORS( "Patrick Eriksson" ),
10847  OUT( "surface_los", "surface_rmatrix", "surface_emission" ),
10848  GOUT(),
10849  GOUT_TYPE(),
10850  GOUT_DESC(),
10851  IN( "f_grid", "stokes_dim", "atmosphere_dim", "rtp_los",
10852  "surface_skin_t", "surface_scalar_reflectivity", "lambertian_nza",
10853  "blackbody_radiation_agenda" ),
10854  GIN( "za_pos" ),
10855  GIN_TYPE( "Numeric" ),
10856  GIN_DEFAULT( "0.5" ),
10857  GIN_DESC( "Position of angle in *surface_los* inside ranges of zenith "
10858  "angle grid. See above."
10859  )
10860  ));
10861 
10862  md_data_raw.push_back
10863  ( MdRecord
10864  ( NAME( "surface_complex_refr_indexFromGriddedField5" ),
10865  DESCRIPTION
10866  (
10867  "Extracts complex refractive index from a field of such data.\n"
10868  "\n"
10869  "The method allows to obtain *surface_complex_refr_index* by\n"
10870  "interpolation of a geographical field of such data. The position\n"
10871  "for which refraction shall be extracted is given by *rtp_pos*.\n"
10872  "The refractive index field is expected to be stored as:\n"
10873  " GriddedField5:\n"
10874  " Vector f_grid[N_f]\n"
10875  " Vector T_grid[N_T]\n"
10876  " ArrayOfString Complex[2]\n"
10877  " Vector \"Latitude\" [N_lat]\n"
10878  " Vector \"Longitude\" [N_lon]\n"
10879  " Tensor5 data[N_f][N_T][2][N_lat][N_lon]\n"
10880  "\n"
10881  "Definition and treatment of the three first dimensions follows\n"
10882  "*complex_refr_index*, e.g. the temperature grid is allowed\n"
10883  "to have length 1. The grids for latitude and longitude must have\n"
10884  "a length of >= 2 (ie. no automatic expansion).\n"
10885  "\n"
10886  "Hence, this method performs an interpolation only in the lat and\n"
10887  "lon dimensions, to a single point. The remaining GriddedField3 is\n"
10888  "simply returned as *surface_complex_refr_index*.\n"
10889  ),
10890  AUTHORS( "Patrick Eriksson" ),
10891  OUT( "surface_complex_refr_index" ),
10892  GOUT(),
10893  GOUT_TYPE(),
10894  GOUT_DESC(),
10895  IN( "atmosphere_dim", "lat_grid", "lat_true", "lon_true", "rtp_pos" ),
10896  GIN( "complex_refr_index_field" ),
10897  GIN_TYPE( "GriddedField5" ),
10898  GIN_DEFAULT( NODEF ),
10899  GIN_DESC( "A field of complex refractive index." )
10900  ));
10901 
10902  md_data_raw.push_back
10903  ( MdRecord
10904  ( NAME( "surface_reflectivityFromGriddedField6" ),
10905  DESCRIPTION
10906  (
10907  "Extracts surface reflectivities from a field of such data.\n"
10908  "\n"
10909  "This method allows to specify a field of surface reflectivity for\n"
10910  "automatic interpolation to points of interest. The position and\n"
10911  "direction for which the reflectivity shall be extracted are given\n"
10912  "by *rtp_pos* and *rtp_los*. The reflectivity field is expected to\n"
10913  "be stored as:\n"
10914  " GriddedField6:\n"
10915  " Vector \"Frequency\" [N_f]\n"
10916  " Vector \"Stokes element\" [N_s1]\n"
10917  " Vector \"Stokes_element\" [N_s2]\n"
10918  " Vector \"Incidence angle\" [N_ia]\n"
10919  " Vector \"Latitude\" [N_lat]\n"
10920  " Vector \"Longitude\" [N_lon]\n"
10921  " Tensor6 data[N_f][N_s1][N_s2][N_ia][N_lat][N_lon]\n"
10922  "\n"
10923  "Grids for incidence angle, latitude and longitude must have a\n"
10924  "length of >= 2 (ie. no automatic expansion). If the frequency grid\n"
10925  "has length 1, this is taken as that the reflectivity is constant,\n"
10926  "following the definition of *surface_scalar_reflectivity*.\n"
10927  "The data can cover higher Stokes dimensionalities than set by\n"
10928  "*stokes_dim*. Data for non-used Stokes elements are just cropped.\n"
10929  "The order between the two Stokes dimensions is the same as in\n"
10930  "*surface_reflectivity* and surface_rmatrix*.\n"
10931  "\n"
10932  "The interpolation is done in steps:\n"
10933  " 1: Linear interpolation for lat and lon (std. extrapolation).\n"
10934  " 2: Interpolation in incidence angle (std. extrapolation).\n"
10935  " If the grid has a length of >= 4, cubic interpolation is\n"
10936  " applied. Otherwise linear interpolation.\n"
10937  " 3. Linear interpolation in frequency (if input data have more\n"
10938  " than one frequency).\n"
10939  ),
10940  AUTHORS( "Patrick Eriksson" ),
10941  OUT( "surface_reflectivity" ),
10942  GOUT(),
10943  GOUT_TYPE(),
10944  GOUT_DESC(),
10945  IN( "stokes_dim", "f_grid", "atmosphere_dim", "lat_grid", "lat_true",
10946  "lon_true", "rtp_pos", "rtp_los" ),
10947  GIN( "r_field" ),
10948  GIN_TYPE( "GriddedField6" ),
10949  GIN_DEFAULT( NODEF ),
10950  GIN_DESC( "A field of surface reflectivities" )
10951  ));
10952 
10953  md_data_raw.push_back
10954  ( MdRecord
10955  ( NAME( "surface_scalar_reflectivityFromGriddedField4" ),
10956  DESCRIPTION
10957  (
10958  "Extracts scalar surface reflectivities from a field of such data.\n"
10959  "\n"
10960  "This method allows to specify a field of surface reflectivity for\n"
10961  "automatic interpolation to points of interest. The position and\n"
10962  "direction for which the reflectivity shall be extracted are given\n"
10963  "by *rtp_pos* and *rtp_los*. The reflectivity field is expected to\n"
10964  "be stored as:\n"
10965  " GriddedField4:\n"
10966  " Vector \"Frequency\" [N_f]\n"
10967  " Vector \"Incidence angle\" [N_ia]\n"
10968  " Vector \"Latitude\" [N_lat]\n"
10969  " Vector \"Longitude\" [N_lon]\n"
10970  " Tensor4 data[N_f][N_ia][N_lat][N_lon]\n"
10971  "\n"
10972  "Grids for incidence angle, latitude and longitude must have a\n"
10973  "length of >= 2 (ie. no automatic expansion). If the frequency grid\n"
10974  "has length 1, this is taken as the reflectivity is constant,\n"
10975  "following the definition of *surface_scalar_reflectivity*.\n"
10976  "\n"
10977  "The interpolation is done in steps:\n"
10978  " 1: Linear interpolation for lat and lon (std. extrapolation).\n"
10979  " 2: Interpolation in incidence angle (std. extrapolation).\n"
10980  " If the grid has a length of >= 4, cubic interpolation is\n"
10981  " applied. Otherwise linear interpolation.\n"
10982  " 3. Linear interpolation if frequency (if input data have more\n"
10983  " than one frequency).\n"
10984  ),
10985  AUTHORS( "Patrick Eriksson" ),
10986  OUT( "surface_scalar_reflectivity" ),
10987  GOUT(),
10988  GOUT_TYPE(),
10989  GOUT_DESC(),
10990  IN( "stokes_dim", "f_grid", "atmosphere_dim", "lat_grid", "lat_true",
10991  "lon_true", "rtp_pos", "rtp_los" ),
10992  GIN( "r_field" ),
10993  GIN_TYPE( "GriddedField4" ),
10994  GIN_DEFAULT( NODEF ),
10995  GIN_DESC( "A field of scalar surface reflectivities" )
10996  ));
10997 
10998  md_data_raw.push_back
10999  ( MdRecord
11000  ( NAME( "TangentPointExtract" ),
11001  DESCRIPTION
11002  (
11003  "Finds the tangent point of a propagation path.\n"
11004  "\n"
11005  "The tangent point is here defined as the point with the lowest\n"
11006  "altitude (which differes from the definition used in the code\n"
11007  "where it is the point with the lowest radius, or equally the point\n"
11008  "with a zenith angle of 90 deg.)\n"
11009  "\n"
11010  "The tangent point is returned as a vector, with columns matching\n"
11011  "e.g. *rte_pos*. If the propagation path has no tangent point, the\n"
11012  "vector is set to NaN.\n"
11013  ),
11014  AUTHORS( "Patrick Eriksson" ),
11015  OUT(),
11016  GOUT( "tan_pos" ),
11017  GOUT_TYPE( "Vector" ),
11018  GOUT_DESC( "The position vector of the tangent point." ),
11019  IN( "ppath" ),
11020  GIN(),
11021  GIN_TYPE(),
11022  GIN_DEFAULT(),
11023  GIN_DESC()
11024  ));
11025 
11026  md_data_raw.push_back
11027  ( MdRecord
11028  ( NAME( "TangentPointPrint" ),
11029  DESCRIPTION
11030  (
11031  "Prints information about the tangent point of a propagation path.\n"
11032  "\n"
11033  "The tangent point is here defined as the point with the lowest\n"
11034  "altitude (which differes from the definition used in the code\n"
11035  "where it is the point with the lowest radius, or equally the point\n"
11036  "with a zenith angle of 90 deg.)\n"
11037  ),
11038  AUTHORS( "Patrick Eriksson" ),
11039  OUT(),
11040  GOUT(),
11041  GOUT_TYPE(),
11042  GOUT_DESC(),
11043  IN( "ppath" ),
11044  GIN( "level" ),
11045  GIN_TYPE( "Index" ),
11046  GIN_DEFAULT( "1" ),
11047  GIN_DESC( "Output level to use." )
11048  ));
11049 
11050  md_data_raw.push_back
11051  ( MdRecord
11052  ( NAME( "Tensor3AddScalar" ),
11053  DESCRIPTION
11054  (
11055  "Adds a scalar value to all elements of a tensor3.\n"
11056  "\n"
11057  "The result can either be stored in the same or another\n"
11058  "variable.\n"
11059  ),
11060  AUTHORS( "Patrick Eriksson" ),
11061  OUT(),
11062  GOUT( "out" ),
11063  GOUT_TYPE( "Tensor3" ),
11064  GOUT_DESC( "Output tensor." ),
11065  IN(),
11066  GIN( "in", "value" ),
11067  GIN_TYPE( "Tensor3", "Numeric" ),
11068  GIN_DEFAULT( NODEF , NODEF ),
11069  GIN_DESC( "Input tensor.",
11070  "The value to be added to the tensor." )
11071  ));
11072 
11073  md_data_raw.push_back
11074  ( MdRecord
11075  ( NAME( "Tensor3Scale" ),
11076  DESCRIPTION
11077  (
11078  "Scales all elements of a tensor with the specified value.\n"
11079  "\n"
11080  "The result can either be stored in the same or another\n"
11081  "variable.\n"
11082  ),
11083  AUTHORS( "Mattias Ekstrom" ),
11084  OUT(),
11085  GOUT( "out" ),
11086  GOUT_TYPE( "Tensor3" ),
11087  GOUT_DESC( "Output tensor." ),
11088  IN(),
11089  GIN( "in", "value" ),
11090  GIN_TYPE( "Tensor3", "Numeric" ),
11091  GIN_DEFAULT( NODEF , NODEF ),
11092  GIN_DESC( "Input tensor.",
11093  "The value to be multiplied with the tensor." )
11094  ));
11095 
11096  md_data_raw.push_back
11097  ( MdRecord
11098  ( NAME( "Tensor3SetConstant" ),
11099  DESCRIPTION
11100  (
11101  "Creates a tensor and sets all elements to the specified value.\n"
11102  "\n"
11103  "The size is determined by *ncols*, *nrows* etc.\n"
11104  ),
11105  AUTHORS( "Claudia Emde" ),
11106  OUT(),
11107  GOUT( "out" ),
11108  GOUT_TYPE( "Tensor3" ),
11109  GOUT_DESC( "Variable to initialize." ),
11110  IN( "npages", "nrows", "ncols" ),
11111  GIN( "value" ),
11112  GIN_TYPE( "Numeric" ),
11113  GIN_DEFAULT( NODEF ),
11114  GIN_DESC( "Tensor value." )
11115  ));
11116 
11117  md_data_raw.push_back
11118  ( MdRecord
11119  ( NAME( "Tensor4AddScalar" ),
11120  DESCRIPTION
11121  (
11122  "Adds a scalar value to all elements of a tensor4.\n"
11123  "\n"
11124  "The result can either be stored in the same or another\n"
11125  "variable.\n"
11126  ),
11127  AUTHORS( "Patrick Eriksson" ),
11128  OUT(),
11129  GOUT( "out" ),
11130  GOUT_TYPE( "Tensor4" ),
11131  GOUT_DESC( "Output tensor." ),
11132  IN(),
11133  GIN( "in", "value" ),
11134  GIN_TYPE( "Tensor4", "Numeric" ),
11135  GIN_DEFAULT( NODEF , NODEF ),
11136  GIN_DESC( "Input tensor.",
11137  "The value to be added to the tensor." )
11138  ));
11139 
11140  md_data_raw.push_back
11141  ( MdRecord
11142  ( NAME( "Tensor4Scale" ),
11143  DESCRIPTION
11144  (
11145  "Scales all elements of a tensor with the specified value.\n"
11146  "\n"
11147  "The result can either be stored in the same or another\n"
11148  "variable.\n"
11149  ),
11150  AUTHORS( "Mattias Ekstrom" ),
11151  OUT(),
11152  GOUT( "out" ),
11153  GOUT_TYPE( "Tensor4" ),
11154  GOUT_DESC( "Output tensor." ),
11155  IN(),
11156  GIN( "in", "value" ),
11157  GIN_TYPE( "Tensor4", "Numeric" ),
11158  GIN_DEFAULT( NODEF , NODEF ),
11159  GIN_DESC( "Input tensor.",
11160  "The value to be multiplied with the tensor." )
11161  ));
11162 
11163  md_data_raw.push_back
11164  ( MdRecord
11165  ( NAME( "Tensor4SetConstant" ),
11166  DESCRIPTION
11167  (
11168  "Creates a tensor and sets all elements to the specified value.\n"
11169  "\n"
11170  "The size is determined by *ncols*, *nrows* etc.\n"
11171  ),
11172  AUTHORS( "Claudia Emde" ),
11173  OUT(),
11174  GOUT( "out" ),
11175  GOUT_TYPE( "Tensor4" ),
11176  GOUT_DESC( "Variable to initialize." ),
11177  IN( "nbooks", "npages", "nrows", "ncols" ),
11178  GIN( "value" ),
11179  GIN_TYPE( "Numeric" ),
11180  GIN_DEFAULT( NODEF ),
11181  GIN_DESC( "Tensor value." )
11182  ));
11183 
11184  md_data_raw.push_back
11185  ( MdRecord
11186  ( NAME( "Tensor5Scale" ),
11187  DESCRIPTION
11188  (
11189  "Scales all elements of a tensor with the specified value.\n"
11190  "\n"
11191  "The result can either be stored in the same or another\n"
11192  "variable.\n"
11193  ),
11194  AUTHORS( "Mattias Ekstrom" ),
11195  OUT(),
11196  GOUT( "out" ),
11197  GOUT_TYPE( "Tensor5" ),
11198  GOUT_DESC( "Output tensor." ),
11199  IN(),
11200  GIN( "in", "value" ),
11201  GIN_TYPE( "Tensor5", "Numeric" ),
11202  GIN_DEFAULT( NODEF , NODEF ),
11203  GIN_DESC( "Input tensor.",
11204  "The value to be multiplied with the tensor." )
11205  ));
11206 
11207  md_data_raw.push_back
11208  ( MdRecord
11209  ( NAME( "Tensor5SetConstant" ),
11210  DESCRIPTION
11211  (
11212  "Creates a tensor and sets all elements to the specified value.\n"
11213  "\n"
11214  "The size is determined by *ncols*, *nrows* etc.\n"
11215  ),
11216  AUTHORS( "Claudia Emde" ),
11217  OUT(),
11218  GOUT( "out" ),
11219  GOUT_TYPE( "Tensor5" ),
11220  GOUT_DESC( "Variable to initialize." ),
11221  IN( "nshelves", "nbooks", "npages", "nrows", "ncols" ),
11222  GIN( "value" ),
11223  GIN_TYPE( "Numeric" ),
11224  GIN_DEFAULT( NODEF ),
11225  GIN_DESC( "Tensor value." )
11226  ));
11227 
11228  md_data_raw.push_back
11229  ( MdRecord
11230  ( NAME( "Tensor6Scale" ),
11231  DESCRIPTION
11232  (
11233  "Scales all elements of a tensor with the specified value.\n"
11234  "\n"
11235  "The result can either be stored in the same or another\n"
11236  "variable.\n"
11237  ),
11238  AUTHORS( "Mattias Ekstrom" ),
11239  OUT(),
11240  GOUT( "out" ),
11241  GOUT_TYPE( "Tensor6" ),
11242  GOUT_DESC( "Output tensor." ),
11243  IN(),
11244  GIN( "in", "value" ),
11245  GIN_TYPE( "Tensor6", "Numeric" ),
11246  GIN_DEFAULT( NODEF , NODEF ),
11247  GIN_DESC( "Input tensor.",
11248  "The value to be multiplied with the tensor." )
11249  ));
11250 
11251  md_data_raw.push_back
11252  ( MdRecord
11253  ( NAME( "Tensor6SetConstant" ),
11254  DESCRIPTION
11255  (
11256  "Creates a tensor and sets all elements to the specified value.\n"
11257  "\n"
11258  "The size is determined by *ncols*, *nrows* etc.\n"
11259  ),
11260  AUTHORS( "Claudia Emde" ),
11261  OUT(),
11262  GOUT( "out" ),
11263  GOUT_TYPE( "Tensor6" ),
11264  GOUT_DESC( "Variable to initialize." ),
11265  IN( "nvitrines", "nshelves", "nbooks", "npages", "nrows", "ncols" ),
11266  GIN( "value" ),
11267  GIN_TYPE( "Numeric" ),
11268  GIN_DEFAULT( NODEF ),
11269  GIN_DESC( "Tensor value." )
11270  ));
11271 
11272  md_data_raw.push_back
11273  ( MdRecord
11274  ( NAME( "Tensor7Scale" ),
11275  DESCRIPTION
11276  (
11277  "Scales all elements of a tensor with the specified value.\n"
11278  "\n"
11279  "The result can either be stored in the same or another\n"
11280  "variable.\n"
11281  ),
11282  AUTHORS( "Mattias Ekstrom" ),
11283  OUT(),
11284  GOUT( "out" ),
11285  GOUT_TYPE( "Tensor7" ),
11286  GOUT_DESC( "Output tensor." ),
11287  IN(),
11288  GIN( "in", "value" ),
11289  GIN_TYPE( "Tensor7", "Numeric" ),
11290  GIN_DEFAULT( NODEF , NODEF ),
11291  GIN_DESC( "Input tensor.",
11292  "The value to be multiplied with the tensor." )
11293  ));
11294 
11295  md_data_raw.push_back
11296  ( MdRecord
11297  ( NAME( "Tensor7SetConstant" ),
11298  DESCRIPTION
11299  (
11300  "Creates a tensor and sets all elements to the specified value.\n"
11301  "\n"
11302  "The size is determined by *ncols*, *nrows* etc.\n"
11303  ),
11304  AUTHORS( "Claudia Emde" ),
11305  OUT(),
11306  GOUT( "out" ),
11307  GOUT_TYPE( "Tensor7" ),
11308  GOUT_DESC( "Variable to initialize." ),
11309  IN( "nlibraries", "nvitrines", "nshelves", "nbooks", "npages", "nrows",
11310  "ncols" ),
11311  GIN( "value" ),
11312  GIN_TYPE( "Numeric" ),
11313  GIN_DEFAULT( NODEF ),
11314  GIN_DESC( "Tensor value." )
11315  ));
11316 
11317  md_data_raw.push_back
11318  ( MdRecord
11319  ( NAME( "Test" ),
11320  DESCRIPTION
11321  (
11322  "A dummy method that can be used for test purposes.\n"
11323  "\n"
11324  "This method can be used by ARTS developers to quickly test stuff.\n"
11325  "The implementation is in file m_general.cc. This just saves you the\n"
11326  "trouble of adding a dummy method everytime you want to try\n"
11327  "something out quickly.\n"
11328  ),
11329  AUTHORS( "Patrick Eriksson" ),
11330  OUT(),
11331  GOUT(),
11332  GOUT_TYPE(),
11333  GOUT_DESC(),
11334  IN(),
11335  GIN(),
11336  GIN_TYPE(),
11337  GIN_DEFAULT(),
11338  GIN_DESC()
11339  ));
11340 
11341  md_data_raw.push_back
11342  ( MdRecord
11343  ( NAME( "timerStart" ),
11344  DESCRIPTION
11345  (
11346  "Initializes the CPU timer."
11347  "\n"
11348  "Use *timerStop* to stop the timer.\n"
11349  "\n"
11350  "Usage example:\n"
11351  " timerStart\n"
11352  " ReadXML(f_grid,\"frequencies.xml\")\n"
11353  " timerStop\n"
11354  " Print(timer)\n"
11355  ),
11356  AUTHORS( "Oliver Lemke" ),
11357  OUT( "timer" ),
11358  GOUT(),
11359  GOUT_TYPE(),
11360  GOUT_DESC(),
11361  IN(),
11362  GIN(),
11363  GIN_TYPE(),
11364  GIN_DEFAULT(),
11365  GIN_DESC()
11366  ));
11367 
11368  md_data_raw.push_back
11369  ( MdRecord
11370  ( NAME( "timerStop" ),
11371  DESCRIPTION
11372  (
11373  "Stops the CPU timer."
11374  "\n"
11375  "See *timerStart* for example usage.\n"
11376  ),
11377  AUTHORS( "Oliver Lemke" ),
11378  OUT( "timer" ),
11379  GOUT(),
11380  GOUT_TYPE(),
11381  GOUT_DESC(),
11382  IN( "timer" ),
11383  GIN(),
11384  GIN_TYPE(),
11385  GIN_DEFAULT(),
11386  GIN_DESC()
11387  ));
11388 
11389  md_data_raw.push_back
11390  ( MdRecord
11391  ( NAME( "TMatrixTest" ),
11392  DESCRIPTION
11393  (
11394  "T-Matrix validation test.\n"
11395  "\n"
11396  "Executes the standard test included with the T-Matrix Fortran code.\n"
11397  "Should give the same as running the tmatrix_lp executable in\n"
11398  "3rdparty/tmatrix/.\n"
11399  ),
11400  AUTHORS( "Oliver Lemke" ),
11401  OUT(),
11402  GOUT(),
11403  GOUT_TYPE(),
11404  GOUT_DESC(),
11405  IN(),
11406  GIN(),
11407  GIN_TYPE(),
11408  GIN_DEFAULT(),
11409  GIN_DESC()
11410  ));
11411 
11412  md_data_raw.push_back
11413  ( MdRecord
11414  ( NAME( "Touch" ),
11415  DESCRIPTION
11416  (
11417  "As *Ignore* but for agenda output.\n"
11418  "\n"
11419  "This method is handy for use in agendas in order to suppress\n"
11420  "warnings about unused output workspace variables. What it does is:\n"
11421  "Nothing!\n"
11422  ),
11423  AUTHORS( "Oliver Lemke" ),
11424  OUT(),
11425  GOUT( "in" ),
11426  GOUT_TYPE( "Any" ),
11427  GOUT_DESC( "Variable to do nothing with." ),
11428  IN(),
11429  GIN(),
11430  GIN_TYPE(),
11431  GIN_DEFAULT(),
11432  GIN_DESC(),
11433  SETMETHOD( false ),
11434  AGENDAMETHOD( false ),
11435  USES_TEMPLATES( true )
11436  ));
11437 
11438  md_data_raw.push_back
11439  ( MdRecord
11440  ( NAME( "VectorAddScalar" ),
11441  DESCRIPTION
11442  (
11443  "Adds a scalar to all elements of a vector.\n"
11444  "\n"
11445  "The result can either be stored in the same or another vector.\n"
11446  ),
11447  AUTHORS( "Patrick Eriksson" ),
11448  OUT(),
11449  GOUT( "out" ),
11450  GOUT_TYPE( "Vector" ),
11451  GOUT_DESC( "Output vector" ),
11452  IN(),
11453  GIN( "in" , "value" ),
11454  GIN_TYPE( "Vector", "Numeric" ),
11455  GIN_DEFAULT( NODEF , NODEF ),
11456  GIN_DESC( "Input vector", "The value to be added to the vector." )
11457  ));
11458 
11459  md_data_raw.push_back
11460  ( MdRecord
11461  ( NAME( "VectorCrop" ),
11462  DESCRIPTION
11463  (
11464  "Keeps only values of a vector inside the specified range.\n"
11465  "\n"
11466  "All values outside the range [min_value,max-value] are removed.\n"
11467  "Note the default values, that basically should act as -+Inf.\n"
11468  "\n"
11469  "The result can either be stored in the same or another vector.\n"
11470  ),
11471  AUTHORS( "Patrick Eriksson" ),
11472  OUT(),
11473  GOUT( "out" ),
11474  GOUT_TYPE( "Vector" ),
11475  GOUT_DESC( "Cropped vector" ),
11476  IN(),
11477  GIN( "in" , "min_value", "max_value" ),
11478  GIN_TYPE( "Vector", "Numeric", "Numeric" ),
11479  GIN_DEFAULT( NODEF , "-99e99", "99e99" ),
11480  GIN_DESC( "Original vector", "Minimum value to keep",
11481  "Maximum value to keep" )
11482  ));
11483 
11484  md_data_raw.push_back
11485  ( MdRecord
11486  ( NAME( "VectorExtractFromMatrix" ),
11487  DESCRIPTION
11488  (
11489  "Extracts a Vector from a Matrix.\n"
11490  "\n"
11491  "Copies row or column with given Index from input Matrix variable\n"
11492  "to create output Vector.\n"
11493  ),
11494  AUTHORS( "Patrick Eriksson, Oliver Lemke, Stefan Buehler" ),
11495  OUT(),
11496  GOUT( "out" ),
11497  GOUT_TYPE( "Vector" ),
11498  GOUT_DESC( "Extracted vector." ),
11499  IN(),
11500  GIN( "in" , "i" , "direction" ),
11501  GIN_TYPE( "Matrix", "Index", "String" ),
11502  GIN_DEFAULT( NODEF , NODEF , NODEF ),
11503  GIN_DESC( "Input matrix.",
11504  "Index of row or column.",
11505  "Direction. \"row\" or \"column\"."
11506  )
11507  ));
11508 
11509  md_data_raw.push_back
11510  ( MdRecord
11511  ( NAME( "VectorFlip" ),
11512  DESCRIPTION
11513  (
11514  "Flips a vector.\n"
11515  "\n"
11516  "The output is the input vector in reversed order. The result can\n"
11517  "either be stored in the same or another vector.\n"
11518  ),
11519  AUTHORS( "Patrick Eriksson" ),
11520  OUT(),
11521  GOUT( "out" ),
11522  GOUT_TYPE( "Vector" ),
11523  GOUT_DESC( "Output vector." ),
11524  IN(),
11525  GIN( "in" ),
11526  GIN_TYPE( "Vector" ),
11527  GIN_DEFAULT( NODEF ),
11528  GIN_DESC( "Input vector." )
11529  ));
11530 
11531  md_data_raw.push_back
11532  ( MdRecord
11533  ( NAME( "VectorInsertGridPoints" ),
11534  DESCRIPTION
11535  (
11536  "Insert some additional points into a grid.\n"
11537  "\n"
11538  "This method can for example be used to add line center frequencies to\n"
11539  "a regular frequency grid. If the original grid is [1,2,3], and the\n"
11540  "additional points are [2.2,2.4], the result will be [1,2,2.2,2.4,3].\n"
11541  "\n"
11542  "It is assumed that the original grid is sorted, otherwise a runtime\n"
11543  "error is thrown. The vector with the points to insert does not have to\n"
11544  "be sorted. If some of the input points are already in the grid, these\n"
11545  "points are not inserted again. New points outside the original grid are\n"
11546  "appended at the appropriate end. Input vector and output vector can be\n"
11547  "the same.\n"
11548  "\n"
11549  "Generic output:\n"
11550  " Vector : The new grid vector.\n"
11551  "\n"
11552  "Generic input:\n"
11553  " Vector : The original grid vector.\n"
11554  " Vector : The points to insert.\n"
11555  ),
11556  AUTHORS( "Stefan Buehler" ),
11557  OUT(),
11558  GOUT( "out" ),
11559  GOUT_TYPE( "Vector" ),
11560  GOUT_DESC( "The new grid vector" ),
11561  IN(),
11562  GIN( "in" , "points" ),
11563  GIN_TYPE( "Vector", "Vector" ),
11564  GIN_DEFAULT( NODEF , NODEF ),
11565  GIN_DESC( "The original grid vector",
11566  "The points to insert" )
11567  ));
11568 
11569  md_data_raw.push_back
11570  ( MdRecord
11571  ( NAME( "VectorLinSpace" ),
11572  DESCRIPTION
11573  (
11574  "Initializes a vector with linear spacing.\n"
11575  "\n"
11576  "The first element equals always the start value, and the spacing\n"
11577  "equals always the step value, but the last value can deviate from\n"
11578  "the stop value. *step* can be both positive and negative.\n"
11579  "\n"
11580  "The created vector is [start, start+step, start+2*step, ...]\n "
11581  ),
11582  AUTHORS( "Patrick Eriksson" ),
11583  OUT(),
11584  GOUT( "out" ),
11585  GOUT_TYPE( "Vector" ),
11586  GOUT_DESC( "Output vector." ),
11587  IN(),
11588  GIN( "start", "stop", "step" ),
11589  GIN_TYPE( "Numeric", "Numeric", "Numeric" ),
11591  GIN_DESC( "Start value.",
11592  "Maximum/minimum value of the end value",
11593  "Spacing of the vector."
11594  )
11595  ));
11596 
11597  md_data_raw.push_back
11598  ( MdRecord
11599  ( NAME( "VectorLogSpace" ),
11600  DESCRIPTION
11601  (
11602  "Initializes a vector with logarithmic spacing.\n"
11603  "\n"
11604  "The first element equals always the start value, and the spacing\n"
11605  "equals always the step value, but note that the last value can \n"
11606  "deviate from the stop value. The keyword step can be both positive\n"
11607  "and negative.\n"
11608  "\n"
11609  "Note, that although start has to be given in direct coordinates,\n"
11610  "step has to be given in log coordinates.\n"
11611  "\n"
11612  "Explicitly, the vector is:\n"
11613  " exp([ln(start), ln(start)+step, ln(start)+2*step, ...])\n"
11614  ),
11615  AUTHORS( "Stefan Buehler" ),
11616  OUT(),
11617  GOUT( "out" ),
11618  GOUT_TYPE( "Vector" ),
11619  GOUT_DESC( "Variable to initialize." ),
11620  IN(),
11621  GIN( "start", "stop", "step" ),
11622  GIN_TYPE( "Numeric", "Numeric", "Numeric" ),
11624  GIN_DESC( "The start value. (Direct coordinates!)",
11625  "The maximum value of the end value. (Direct coordinates!)",
11626  "The spacing of the vector. (Log coordinates!)" )
11627  ));
11628 
11629  md_data_raw.push_back
11630  ( MdRecord
11631  ( NAME( "VectorMatrixMultiply" ),
11632  DESCRIPTION
11633  (
11634  "Multiply a Vector with a Matrix and store the result in another\n"
11635  "Vector.\n"
11636  "\n"
11637  "This just computes the normal Matrix-Vector product, y=M*x. It is ok\n"
11638  "if input and output Vector are the same. This function is handy for\n"
11639  "multiplying the H Matrix to spectra.\n"
11640  ),
11641  AUTHORS( "Stefan Buehler" ),
11642  OUT(),
11643  GOUT( "out" ),
11644  GOUT_TYPE( "Vector" ),
11645  GOUT_DESC( "The result of the multiplication (dimension m)." ),
11646  IN(),
11647  GIN( "m" , "v" ),
11648  GIN_TYPE( "Matrix", "Vector" ),
11649  GIN_DEFAULT( NODEF , NODEF ),
11650  GIN_DESC( "The Matrix to multiply (dimension mxn).",
11651  "The original Vector (dimension n)." )
11652  ));
11653 
11654  md_data_raw.push_back
11655  ( MdRecord
11656  ( NAME( "VectorNLinSpace" ),
11657  DESCRIPTION
11658  (
11659  "Creates a vector with length *nelem*, equally spaced between the\n"
11660  "given end values.\n"
11661  "\n"
11662  "The length (*nelem*) must be larger than 1.\n"
11663  ),
11664  AUTHORS( "Patrick Eriksson" ),
11665  OUT(),
11666  GOUT( "out" ),
11667  GOUT_TYPE( "Vector" ),
11668  GOUT_DESC( "Variable to initialize." ),
11669  IN( "nelem" ),
11670  GIN( "start", "stop" ),
11671  GIN_TYPE( "Numeric", "Numeric" ),
11672  GIN_DEFAULT( NODEF, NODEF ),
11673  GIN_DESC( "Start value.",
11674  "End value."
11675  )
11676  ));
11677 
11678  md_data_raw.push_back
11679  ( MdRecord
11680  ( NAME( "VectorNLogSpace" ),
11681  DESCRIPTION
11682  (
11683  "Creates a vector with length *nelem*, equally logarithmically\n"
11684  "spaced between the given end values.\n"
11685  "\n"
11686  "The length (*nelem*) must be larger than 1.\n"
11687  ),
11688  AUTHORS( "Patrick Eriksson" ),
11689  OUT(),
11690  GOUT( "out" ),
11691  GOUT_TYPE( "Vector" ),
11692  GOUT_DESC( "Variable to initialize." ),
11693  IN( "nelem" ),
11694  GIN( "start", "stop" ),
11695  GIN_TYPE( "Numeric", "Numeric" ),
11696  GIN_DEFAULT( NODEF, NODEF ),
11697  GIN_DESC( "Start value.",
11698  "End value."
11699  )
11700  ));
11701 
11702  md_data_raw.push_back
11703  ( MdRecord
11704  ( NAME( "VectorScale" ),
11705  DESCRIPTION
11706  (
11707  "Scales all elements of a vector with the same value.\n"
11708  "\n"
11709  "The result can either be stored in the same or another vector.\n"
11710  ),
11711  AUTHORS( "Patrick Eriksson" ),
11712  OUT(),
11713  GOUT( "out" ),
11714  GOUT_TYPE( "Vector" ),
11715  GOUT_DESC( "Output vector." ),
11716  IN(),
11717  GIN( "in" ,
11718  "value" ),
11719  GIN_TYPE( "Vector",
11720  "Numeric" ),
11721  GIN_DEFAULT( NODEF ,
11722  NODEF ),
11723  GIN_DESC( "Input vector.",
11724  "Scaling value." )
11725  ));
11726 
11727  md_data_raw.push_back
11728  ( MdRecord
11729  ( NAME( "VectorSetConstant" ),
11730  DESCRIPTION
11731  (
11732  "Creates a vector and sets all elements to the specified value.\n"
11733  "\n"
11734  "The vector length is determined by *nelem*.\n"
11735  ),
11736  AUTHORS( "Patrick Eriksson" ),
11737  OUT(),
11738  GOUT( "out" ),
11739  GOUT_TYPE( "Vector" ),
11740  GOUT_DESC( "Variable to initialize." ),
11741  IN( "nelem" ),
11742  GIN( "value" ),
11743  GIN_TYPE( "Numeric" ),
11744  GIN_DEFAULT( NODEF ),
11745  GIN_DESC( "Vector value." )
11746  ));
11747 
11748  md_data_raw.push_back
11749  ( MdRecord
11750  ( NAME( "VectorSet" ),
11751  DESCRIPTION
11752  (
11753  "Create a vector from the given list of numbers.\n"
11754  "\n"
11755  " VectorSet(p_grid, [1000, 100, 10] )\n"
11756  " Will create a p_grid vector with these three elements.\n"
11757  ),
11758  AUTHORS( "Stefan Buehler" ),
11759  OUT(),
11760  GOUT( "out" ),
11761  GOUT_TYPE( "Vector" ),
11762  GOUT_DESC( "Variable to initialize." ),
11763  IN(),
11764  GIN( "value" ),
11765  GIN_TYPE( "Vector" ),
11766  GIN_DEFAULT( NODEF ),
11767  GIN_DESC( "The vector elements." ),
11768  SETMETHOD( true )
11769  ));
11770 
11771  md_data_raw.push_back
11772  ( MdRecord
11773  ( NAME( "VectorZtanToZaRefr1D" ),
11774  DESCRIPTION
11775  (
11776  "Converts a set of true tangent altitudes to zenith angles.\n"
11777  "\n"
11778  "The tangent altitudes are given to the function as a vector, which\n"
11779  "are converted to a generic vector of zenith angles. The position of\n"
11780  "the sensor is given by the WSV *sensor_pos*. The function works\n"
11781  "only for 1D. The zenith angles are always set to be positive.\n"
11782  ),
11783  AUTHORS( "Patrick Eriksson", "Mattias Ekstrom" ),
11784  OUT(),
11785  GOUT( "v_za" ),
11786  GOUT_TYPE( "Vector" ),
11787  GOUT_DESC( "Vector with zenith angles." ),
11788  IN( "refr_index_air_agenda", "sensor_pos", "p_grid", "t_field",
11789  "z_field", "vmr_field", "refellipsoid", "atmosphere_dim",
11790  "f_grid" ),
11791  GIN( "v_ztan" ),
11792  GIN_TYPE( "Vector" ),
11793  GIN_DEFAULT( NODEF ),
11794  GIN_DESC( "Vector with tangent altitudes." )
11795  ));
11796 
11797  md_data_raw.push_back
11798  ( MdRecord
11799  ( NAME( "VectorZtanToZa1D" ),
11800  DESCRIPTION
11801  (
11802  "Converts a set of geometrical tangent altitudes to zenith angles.\n"
11803  "\n"
11804  "The tangent altitudes are given to the function as a vector, which\n"
11805  "are converted to a generic vector of zenith angles. The position of\n"
11806  "the sensor is given by the WSV *sensor_pos*. The function works\n"
11807  "only for 1D. The zenith angles are always set to be positive.\n"
11808  ),
11809  AUTHORS( "Patrick Eriksson", "Mattias Ekstrom" ),
11810  OUT(),
11811  GOUT( "v_za" ),
11812  GOUT_TYPE( "Vector" ),
11813  GOUT_DESC( "Vector with zenith angles." ),
11814  IN( "sensor_pos", "refellipsoid", "atmosphere_dim" ),
11815  GIN( "v_ztan" ),
11816  GIN_TYPE( "Vector" ),
11817  GIN_DEFAULT( NODEF ),
11818  GIN_DESC( "Vector with tangent altitudes." )
11819  ));
11820 
11821  md_data_raw.push_back
11822  ( MdRecord
11823  ( NAME( "verbosityInit" ),
11824  DESCRIPTION
11825  (
11826  "Initializes the verbosity levels.\n"
11827  "\n"
11828  "Sets verbosity to defaults or the levels specified by -r on the command line.\n"
11829  ),
11830  AUTHORS( "Oliver Lemke" ),
11831  OUT( "verbosity" ),
11832  GOUT(),
11833  GOUT_TYPE(),
11834  GOUT_DESC(),
11835  IN(),
11836  GIN(),
11837  GIN_TYPE(),
11838  GIN_DEFAULT(),
11839  GIN_DESC()
11840  ));
11841 
11842  md_data_raw.push_back
11843  ( MdRecord
11844  ( NAME( "verbositySet" ),
11845  DESCRIPTION
11846  (
11847  "Sets the verbosity levels.\n"
11848  "\n"
11849  "Sets the reporting level for agenda calls, screen and file.\n"
11850  "All reporting levels can reach from 0 (only error messages)\n"
11851  "to 3 (everything). The agenda setting applies in addition\n"
11852  "to both screen and file output.\n"
11853  ),
11854  AUTHORS( "Oliver Lemke" ),
11855  OUT( "verbosity" ),
11856  GOUT(),
11857  GOUT_TYPE(),
11858  GOUT_DESC(),
11859  IN(),
11860  GIN( "agenda", "screen", "file" ),
11861  GIN_TYPE( "Index", "Index", "Index" ),
11863  GIN_DESC( "Agenda verbosity level",
11864  "Screen verbosity level",
11865  "Report file verbosity level")
11866  ));
11867 
11868  md_data_raw.push_back
11869  ( MdRecord
11870  ( NAME( "verbositySetAgenda" ),
11871  DESCRIPTION
11872  (
11873  "Sets the verbosity level for agenda output.\n"
11874  "\n"
11875  "See *verbositySet*\n"
11876  ),
11877  AUTHORS( "Oliver Lemke" ),
11878  OUT( "verbosity" ),
11879  GOUT(),
11880  GOUT_TYPE(),
11881  GOUT_DESC(),
11882  IN( "verbosity" ),
11883  GIN( "level" ),
11884  GIN_TYPE( "Index" ),
11885  GIN_DEFAULT( NODEF),
11886  GIN_DESC( "Agenda verbosity level")
11887  ));
11888 
11889  md_data_raw.push_back
11890  ( MdRecord
11891  ( NAME( "verbositySetFile" ),
11892  DESCRIPTION
11893  (
11894  "Sets the verbosity level for report file output.\n"
11895  "\n"
11896  "See *verbositySet*\n"
11897  ),
11898  AUTHORS( "Oliver Lemke" ),
11899  OUT( "verbosity" ),
11900  GOUT(),
11901  GOUT_TYPE(),
11902  GOUT_DESC(),
11903  IN( "verbosity" ),
11904  GIN( "level" ),
11905  GIN_TYPE( "Index" ),
11906  GIN_DEFAULT( NODEF),
11907  GIN_DESC( "Report file verbosity level")
11908  ));
11909 
11910  md_data_raw.push_back
11911  ( MdRecord
11912  ( NAME( "verbositySetScreen" ),
11913  DESCRIPTION
11914  (
11915  "Sets the verbosity level for screen output.\n"
11916  "\n"
11917  "See *verbositySet*\n"
11918  ),
11919  AUTHORS( "Oliver Lemke" ),
11920  OUT( "verbosity" ),
11921  GOUT(),
11922  GOUT_TYPE(),
11923  GOUT_DESC(),
11924  IN( "verbosity" ),
11925  GIN( "level" ),
11926  GIN_TYPE( "Index" ),
11927  GIN_DEFAULT( NODEF),
11928  GIN_DESC( "Screen verbosity level")
11929  ));
11930 
11931  md_data_raw.push_back
11932  ( MdRecord
11933  ( NAME( "WMRFSelectChannels" ),
11934  DESCRIPTION
11935  (
11936  "Select some channels for WMRF calculation.\n"
11937  "\n"
11938  "The HIRS fast setup consists of a precalculated frequency grid\n"
11939  "covering all HIRS channels, and associated weights for each channel,\n"
11940  "stored in a weight matrix. (A *sensor_response* matrix.)\n"
11941  "\n"
11942  "If not all channels are requested for\n"
11943  "simulation, then this method can be used to remove the unwanted\n"
11944  "channels. It changes a number of variables in consistent fashion:\n"
11945  "\n"
11946  "- Unwanted channels are removed from f_backend. \n"
11947  "- Unwanted channels are removed from wmrf_weights.\n"
11948  "- Unnecessary frequencies are removed from f_grid.\n"
11949  "- Unnecessary frequencies are removed from wmrf_weights.\n"
11950  ),
11951  AUTHORS( "Stefan Buehler" ),
11952  OUT( "f_grid", "wmrf_weights",
11953  "f_backend" ),
11954  GOUT( ),
11955  GOUT_TYPE( ),
11956  GOUT_DESC(),
11957  IN( "f_grid", "f_backend",
11958  "wmrf_weights", "wmrf_channels" ),
11959  GIN(),
11960  GIN_TYPE(),
11961  GIN_DEFAULT(),
11962  GIN_DESC()
11963  ));
11964 
11965  md_data_raw.push_back
11966  ( MdRecord
11967  ( NAME( "WriteMolTau" ),
11968  DESCRIPTION
11969  (
11970  "Writes a 'molecular_tau_file' as required for libRadtran.\n"
11971  "\n"
11972  "The libRadtran (www.libradtran.org) radiative transfer package is a \n"
11973  "comprehensive package for various applications, it can be used to \n"
11974  "compute radiances, irradiances, actinic fluxes, ... for the solar \n"
11975  "and the thermal spectral ranges. Absorption is usually treated using \n"
11976  "k-distributions or other parameterizations. For calculations with high \n"
11977  "spectral resolution it requires absorption coefficients from an external \n"
11978  "line-by-line model. Using this method, arts generates a file that can be \n"
11979  "used by libRadtran (option molecular_tau_file)."
11980  "\n"
11981  ),
11982  AUTHORS( "Claudia Emde" ),
11983  OUT(),
11984  GOUT(),
11985  GOUT_TYPE(),
11986  GOUT_DESC(),
11987  IN("f_grid", "z_field", "propmat_clearsky_field", "atmosphere_dim" ),
11988  GIN("filename"),
11989  GIN_TYPE("String"),
11990  GIN_DEFAULT( NODEF),
11991  GIN_DESC("Name of the *molecular_tau_file*." )
11992  ));
11993 
11994  md_data_raw.push_back
11995  ( MdRecord
11996  ( NAME( "WriteNetCDF" ),
11997  DESCRIPTION
11998  (
11999  "Writes a workspace variable to a NetCDF file.\n"
12000  "\n"
12001  "This method can write variables of limited groups.\n"
12002  "\n"
12003  "If the filename is omitted, the variable is written\n"
12004  "to <basename>.<variable_name>.nc.\n"
12005  ),
12006  AUTHORS( "Oliver Lemke" ),
12007  OUT(),
12008  GOUT(),
12009  GOUT_TYPE(),
12010  GOUT_DESC(),
12011  IN(),
12012  GIN( "in",
12013  "filename" ),
12014  GIN_TYPE( "Vector, Matrix, Tensor3, Tensor4, Tensor5, ArrayOfVector,"
12015  "ArrayOfMatrix, GasAbsLookup",
12016  "String" ),
12017  GIN_DEFAULT( NODEF,
12018  "" ),
12019  GIN_DESC( "Variable to be saved.",
12020  "Name of the NetCDF file." ),
12021  SETMETHOD( false ),
12022  AGENDAMETHOD( false ),
12023  USES_TEMPLATES( true ),
12024  PASSWORKSPACE( false ),
12025  PASSWSVNAMES( true )
12026  ));
12027 
12028  md_data_raw.push_back
12029  ( MdRecord
12030  ( NAME( "WriteNetCDFIndexed" ),
12031  DESCRIPTION
12032  (
12033  "As *WriteNetCDF*, but creates indexed file names.\n"
12034  "\n"
12035  "This method can write variables of any group.\n"
12036  "\n"
12037  "If the filename is omitted, the variable is written\n"
12038  "to <basename>.<variable_name>.nc.\n"
12039  ),
12040  AUTHORS( "Oliver Lemke" ),
12041  OUT(),
12042  GOUT(),
12043  GOUT_TYPE(),
12044  GOUT_DESC(),
12045  IN( "file_index" ),
12046  GIN( "in",
12047  "filename" ),
12048  GIN_TYPE( "Vector, Matrix, Tensor3, Tensor4, Tensor5, ArrayOfVector,"
12049  "ArrayOfMatrix, GasAbsLookup",
12050  "String" ),
12051  GIN_DEFAULT( NODEF,
12052  "" ),
12053  GIN_DESC( "Variable to be saved.",
12054  "Name of the NetCDF file." ),
12055  SETMETHOD( false ),
12056  AGENDAMETHOD( false ),
12057  USES_TEMPLATES( true ),
12058  PASSWORKSPACE( false ),
12059  PASSWSVNAMES( true )
12060  ));
12061 
12062  md_data_raw.push_back
12063  ( MdRecord
12064  ( NAME( "WriteXML" ),
12065  DESCRIPTION
12066  (
12067  "Writes a workspace variable to an XML file.\n"
12068  "\n"
12069  "This method can write variables of any group.\n"
12070  "\n"
12071  "If the filename is omitted, the variable is written\n"
12072  "to <basename>.<variable_name>.xml.\n"
12073  "If no_clobber is set to 1, an increasing number will be\n"
12074  "appended to the filename if the file already exists.\n"
12075  ),
12076  AUTHORS( "Oliver Lemke" ),
12077  OUT(),
12078  GOUT(),
12079  GOUT_TYPE(),
12080  GOUT_DESC(),
12081  IN( "output_file_format" ),
12082  GIN( "in",
12083  "filename",
12084  "no_clobber"),
12085  GIN_TYPE( "Any",
12086  "String",
12087  "Index"),
12088  GIN_DEFAULT( NODEF,
12089  "",
12090  "0"),
12091  GIN_DESC( "Variable to be saved.",
12092  "Name of the XML file.",
12093  "0: Overwrite existing files, 1: Use unique filenames"),
12094  SETMETHOD( false ),
12095  AGENDAMETHOD( false ),
12096  USES_TEMPLATES( true ),
12097  PASSWORKSPACE( false ),
12098  PASSWSVNAMES( true )
12099  ));
12100 
12101  md_data_raw.push_back
12102  ( MdRecord
12103  ( NAME( "WriteXMLIndexed" ),
12104  DESCRIPTION
12105  (
12106  "As *WriteXML*, but creates indexed file names.\n"
12107  "\n"
12108  "The variable is written to a file with name:\n"
12109  " <filename>.<file_index>.xml.\n"
12110  "where <file_index> is the value of *file_index*.\n"
12111  "\n"
12112  "This means that *filename* shall here not include the .xml\n"
12113  "extension. Omitting filename works as for *WriteXML*.\n"
12114  ),
12115  AUTHORS( "Patrick Eriksson" ),
12116  OUT(),
12117  GOUT(),
12118  GOUT_TYPE(),
12119  GOUT_DESC(),
12120  IN( "output_file_format", "file_index" ),
12121  GIN( "in", "filename" ),
12122  GIN_TYPE( "Any", "String" ),
12123  GIN_DEFAULT( NODEF, "" ),
12124  GIN_DESC( "Workspace variable to be saved.",
12125  "File name. See above."
12126  ),
12127  SETMETHOD( false ),
12128  AGENDAMETHOD( false ),
12129  USES_TEMPLATES( true ),
12130  PASSWORKSPACE( false ),
12131  PASSWSVNAMES( true )
12132  ));
12133 
12134  md_data_raw.push_back
12135  ( MdRecord
12136  ( NAME( "yApplyUnit" ),
12137  DESCRIPTION
12138  (
12139  "Conversion of *y* to other spectral units.\n"
12140  "\n"
12141  "Any conversion to brightness temperature is normally made inside\n"
12142  "*yCalc*. This method makes it possible to also make this conversion\n"
12143  "after *yCalc*, but with restrictions for *jacobian* and with.\n"
12144  "respect to the n2-law of radiance.\n"
12145  "\n"
12146  "The conversion made inside *iyEmissionStandard* is mimiced\n"
12147  "and see that method for constraints and selection of output units.\n"
12148  "This with the restriction that the n2-law can be ignored. The later\n"
12149  "is the case if the sensor is placed in space, or if the refractive\n"
12150  "only devaites slightly from unity.\n"
12151  "\n"
12152  "The method handles *y* and *jacobian* in parallel, where\n"
12153  "the last variable is only considered if it is set. The\n"
12154  "input data must be in original radiance units. A completely\n"
12155  "stringent check of this can not be performed.\n"
12156  "\n"
12157  "The method can not be used with jacobian quantities that are not\n"
12158  "obtained through radiative transfer calculations. One example on\n"
12159  "quantity that can not be handled is *jacobianAddPolyfit*. There\n"
12160  "are no automatic checks warning for incorrect usage!\n"
12161  "\n"
12162  "If you are using this method, *iy_unit* should be set to \"1\" when\n"
12163  "calling *yCalc*, and be changed before calling this method.\n"
12164  "\n"
12165  "Conversion of *y_aux* is not supported.\n"
12166  ),
12167  AUTHORS( "Patrick Eriksson" ),
12168  OUT( "y", "jacobian" ),
12169  GOUT(),
12170  GOUT_TYPE(),
12171  GOUT_DESC(),
12172  IN( "y", "jacobian", "y_f", "y_pol", "iy_unit" ),
12173  GIN(),
12174  GIN_TYPE(),
12175  GIN_DEFAULT(),
12176  GIN_DESC()
12177  ));
12178 
12179  md_data_raw.push_back
12180  ( MdRecord
12181  ( NAME( "ybatchCalc" ),
12182  DESCRIPTION
12183  (
12184  "Performs batch calculations for the measurement vector y.\n"
12185  "\n"
12186  "We perform *ybatch_n* jobs, starting at index *ybatch_start*. (Zero\n"
12187  "based indexing, as usual.) The output array *ybatch* will have\n"
12188  "ybatch_n elements. Indices in the output array start\n"
12189  "with zero, independent of *ybatch_start*.\n"
12190  "\n"
12191  "The method performs the following:\n"
12192  " 1. Sets *ybatch_index* = *ybatch_start*.\n"
12193  " 2. Performs a-d until\n"
12194  " *ybatch_index* = *ybatch_start* + *ybatch_n*.\n"
12195  " a. Executes *ybatch_calc_agenda*.\n"
12196  " b. If *ybatch_index* = *ybatch_start*, resizes *ybatch*\n"
12197  " based on *ybatch_n* and length of *y*.\n"
12198  " c. Copies *y* to *ybatch_index* - *ybatch_start*\n"
12199  " of *ybatch*.\n"
12200  " d. Adds 1 to *ybatch_index*.\n"
12201  "\n"
12202  "Beside the *ybatch_calc_agenda*, the WSVs *ybatch_start*\n"
12203  "and *ybatch_n* must be set before calling this method.\n"
12204  "Further, *ybatch_calc_agenda* is expected to produce a\n"
12205  "spectrum and should accordingly include a call of *yCalc*\n"
12206  "(or asimilar method).\n"
12207  "\n"
12208  "The input variable *ybatch_start* is set to a default of zero in\n"
12209  "*general.arts*.\n"
12210  "\n"
12211  "An agenda that calculates spectra for different temperature profiles\n"
12212  "could look like this:\n"
12213  "\n"
12214  " AgendaSet(ybatch_calc_agenda){\n"
12215  " Extract(t_field,tensor4_1,ybatch_index)\n"
12216  " yCalc\n"
12217  " }\n"
12218  "\n"
12219  "Jacobians are also collected, and stored in output variable *ybatch_jacobians*. \n"
12220  "(This will be empty if yCalc produces empty Jacobians.)\n"
12221  "\n"
12222  "See the user guide for further practical examples.\n"
12223  ),
12224  AUTHORS( "Stefan Buehler" ),
12225  OUT( "ybatch", "ybatch_aux", "ybatch_jacobians" ),
12226  GOUT(),
12227  GOUT_TYPE(),
12228  GOUT_DESC(),
12229  IN( "ybatch_start", "ybatch_n", "ybatch_calc_agenda" ),
12230  GIN( "robust" ),
12231  GIN_TYPE( "Index" ),
12232  GIN_DEFAULT( "0" ),
12233  GIN_DESC( "A flag with value 1 or 0. If set to one, the batch\n"
12234  "calculation will continue, even if individual jobs fail. In\n"
12235  "that case, a warning message is written to screen and file\n"
12236  "(out1 output stream), and the *y* Vector entry for the\n"
12237  "failed job in *ybatch* is left empty. The robust behavior\n"
12238  "does only work properly if your control file is run single\n"
12239  "threaded. Set \"--numthreads 1\". See \"arts --help\"."
12240  )
12241  ));
12242 
12243  md_data_raw.push_back
12244  ( MdRecord
12245  ( NAME( "ybatchMetProfiles" ),
12246  DESCRIPTION
12247  (
12248  "This method is used for simulating ARTS for metoffice model fields"
12249  "\n"
12250  "This method reads in *met_amsu_data* which contains the\n"
12251  "lat-lon of the metoffice profile files as a Matrix. It then\n"
12252  "loops over the number of profiles and corresponding to each\n"
12253  "longitude create the appropriate profile basename. Then,\n"
12254  "corresponding to each basename we have temperature field, altitude\n"
12255  "field, humidity field and particle number density field. The\n"
12256  "temperature field and altitude field are stored in the same dimensions\n"
12257  "as *t_field_raw* and *z_field_raw*. The oxygen and nitrogen VMRs are\n"
12258  "set to constant values of 0.209 and 0.782, respectively and are used\n"
12259  "along with humidity field to generate *vmr_field_raw*. \n"
12260  "\n"
12261  "The three fields *t_field_raw*, *z_field_raw*, and *vmr_field_raw* are\n"
12262  "given as input to *met_profile_calc_agenda* which is called in this\n"
12263  "method. See documentation of WSM *met_profile_calc_agenda* for more\n"
12264  "information on this agenda. \n"
12265  "\n"
12266  "The method also converts satellite zenith angle to appropriate\n"
12267  "*sensor_los*. It also sets the *p_grid* and *cloudbox_limits*\n"
12268  "from the profiles inside the function\n"
12269  ),
12270  AUTHORS( "Sreerekha T.R." ),
12271  OUT( "ybatch" ),
12272  GOUT(),
12273  GOUT_TYPE(),
12274  GOUT_DESC(),
12275  IN( "abs_species", "met_profile_calc_agenda", "f_grid", "met_amsu_data",
12276  "sensor_pos", "refellipsoid", "lat_grid", "lon_grid",
12277  "atmosphere_dim", "scat_data_array" ),
12278  GIN( "nelem_p_grid", "met_profile_path", "met_profile_pnd_path" ),
12279  GIN_TYPE( "Index", "String", "String" ),
12281  GIN_DESC( "FIXME DOC",
12282  "FIXME DOC",
12283  "FIXME DOC" )
12284  ));
12285 
12286  md_data_raw.push_back
12287  ( MdRecord
12288  ( NAME( "ybatchMetProfilesClear" ),
12289  DESCRIPTION
12290  (
12291  "This method is used for simulating ARTS for metoffice model fields\n"
12292  "for clear sky conditions.\n"
12293  "\n"
12294  "This method reads in *met_amsu_data* which contains the\n"
12295  "lat-lon of the metoffice profile files as a Matrix. It then\n"
12296  "loops over the number of profiles and corresponding to each\n"
12297  "longitude create the appropriate profile basename. Then,\n"
12298  "Corresponding to each basename we have temperature field, altitude\n"
12299  "field, humidity field and particle number density field. The\n"
12300  "temperature field and altitude field are stored in the same dimensions\n"
12301  "as *t_field_raw* and *z_field_raw*. The oxygen and nitrogen VMRs are\n"
12302  "set to constant values of 0.209 and 0.782, respectively and are used\n"
12303  "along with humidity field to generate *vmr_field_raw*. \n"
12304  "\n"
12305  "The three fields *t_field_raw*, *z_field_raw*, and *vmr_field_raw* are\n"
12306  "given as input to *met_profile_calc_agenda* which is called in this\n"
12307  "method. See documentation of WSM *met_profile_calc_agenda* for more\n"
12308  "information on this agenda. \n"
12309  "\n"
12310  "The method also converts satellite zenith angle to appropriate\n"
12311  "*sensor_los*. It also sets the *p_grid* and *cloudbox_limits*\n"
12312  "from the profiles inside the function\n"
12313  ),
12314  AUTHORS( "Seerekha T.R." ),
12315  OUT( "ybatch" ),
12316  GOUT(),
12317  GOUT_TYPE(),
12318  GOUT_DESC(),
12319  IN( "abs_species", "met_profile_calc_agenda",
12320  "f_grid", "met_amsu_data", "sensor_pos", "refellipsoid" ),
12321  GIN( "nelem_p_grid", "met_profile_path" ),
12322  GIN_TYPE( "Index", "String" ),
12323  GIN_DEFAULT( NODEF, NODEF ),
12324  GIN_DESC( "FIXME DOC",
12325  "FIXME DOC" )
12326  ));
12327 
12328  md_data_raw.push_back
12329  ( MdRecord
12330  ( NAME( "yCalc" ),
12331  DESCRIPTION
12332  (
12333  "Calculation of complete measurement vectors (y).\n"
12334  "\n"
12335  "The method performs radiative transfer calculations from a sensor\n"
12336  "perspective. Radiative transfer calculations are performed for\n"
12337  "monochromatic pencil beams, following *iy_main_agenda* and\n"
12338  "associated agendas. Obtained radiances are weighted together by\n"
12339  "*sensor_response*, to include the characteristics of the sensor.\n"
12340  "The measurement vector obtained can contain anything from a single\n"
12341  "frequency value to a series of measurement scans (each consisting\n"
12342  "of a series of spectra), all depending on the settings. Spectra\n"
12343  "and jacobians are calculated in parallel.\n"
12344  "\n"
12345  "The frequency, polarisation etc. for each measurement value is\n"
12346  "given by *y_f*, *y_pol*, *y_pos* and *y_los*.\n"
12347  "\n"
12348  "See the method selected for *iy_main_agenda* for quantities\n"
12349  "that can be obtained by *y_aux*. However, in no case data of\n"
12350  "along-the-path type can be extracted.\n"
12351  ),
12352  AUTHORS( "Patrick Eriksson" ),
12353  OUT( "y", "y_f", "y_pol", "y_pos", "y_los", "y_aux", "jacobian" ),
12354  GOUT(),
12355  GOUT_TYPE(),
12356  GOUT_DESC(),
12357  IN( "atmgeom_checked", "atmfields_checked",
12358  "atmosphere_dim", "t_field", "z_field",
12359  "vmr_field", "cloudbox_on", "cloudbox_checked", "sensor_checked",
12360  "stokes_dim", "f_grid", "sensor_pos", "sensor_los",
12361  "transmitter_pos", "mblock_za_grid", "mblock_aa_grid",
12362  "antenna_dim", "sensor_response", "sensor_response_f",
12363  "sensor_response_pol", "sensor_response_za", "sensor_response_aa",
12364  "iy_main_agenda", "jacobian_agenda", "jacobian_do",
12365  "jacobian_quantities", "jacobian_indices", "iy_aux_vars" ),
12366  GIN(),
12367  GIN_TYPE(),
12368  GIN_DEFAULT(),
12369  GIN_DESC()
12370  ));
12371 
12372  md_data_raw.push_back
12373  ( MdRecord
12374  ( NAME( "yCalcAppend" ),
12375  DESCRIPTION
12376  (
12377  "Replaces *yCalc* if a measurement shall be appended to an\n"
12378  "existing one.\n"
12379  "\n"
12380  "The method works basically as *yCalc* but appends the results to\n"
12381  "existing data, instead of creating completely new *y* and its\n"
12382  "associated variables. This method is required if your measurement\n"
12383  "consists of data from two instruments using different observation\n"
12384  "techniques (corresponding to different iyCalc-methods). One such\n"
12385  "example is if emission and transmission data are combined into a\n"
12386  "joint retrieval. The method can also be used to get around the\n"
12387  "constrain that *sensor_response* is required to be the same for\n"
12388  "all data.\n"
12389  "\n"
12390  "The new measurement is simply appended to the input *y*, and the\n"
12391  "other output variables are treated correspondingly. Data are\n"
12392  "appended \"blindly\" in *y_aux*. That is, data of different type\n"
12393  "are appended if *iy_aux_vars* differs between the two measurements,\n"
12394  "the data are appended strictly following the order. First variable\n"
12395  "of second measurement is appended to first variable of first\n"
12396  "measurement, and so on. The number of auxiliary variables can differ\n"
12397  "between the measurements. Missing data are set to zero.\n"
12398  "\n"
12399  "The set of retrieval quantities can differ between the two\n"
12400  "calculations. If an atmospheric quantity is part of both Jacobians,\n"
12401  "the same retrieval grids must be used in both cases.\n"
12402  "The treatment of instrument related Jacobians (baseline fits,\n"
12403  "pointing ...) follows the *append_instrument_wfs* argument.\n"
12404  "\n"
12405  "A difference to *yCalc* is that *jacobian_quantities* and\n"
12406  "*jacobian_indices* are both in- and output variables. The input\n"
12407  "version shall match the measurement to be calculated, while the\n"
12408  "version matches the output *y*, the combined, measurements. Copies\n"
12409  "of *jacobian_quantities* and * jacobian_indices* of the first\n"
12410  "measurement must be made and shall be provided to the method as\n"
12411  "*jacobian_quantities_copy* and *jacobian_indices_copy*.\n"
12412  ),
12413  AUTHORS( "Patrick Eriksson" ),
12414  OUT( "y", "y_f", "y_pol", "y_pos", "y_los", "y_aux",
12415  "jacobian", "jacobian_quantities", "jacobian_indices" ),
12416  GOUT(),
12417  GOUT_TYPE(),
12418  GOUT_DESC(),
12419  IN( "y", "y_f", "y_pol", "y_pos", "y_los", "y_aux", "jacobian",
12420  "atmgeom_checked", "atmfields_checked",
12421  "atmosphere_dim", "t_field", "z_field",
12422  "vmr_field", "cloudbox_on", "cloudbox_checked", "sensor_checked",
12423  "stokes_dim", "f_grid", "sensor_pos", "sensor_los",
12424  "transmitter_pos", "mblock_za_grid", "mblock_aa_grid",
12425  "antenna_dim", "sensor_response", "sensor_response_f",
12426  "sensor_response_pol", "sensor_response_za", "sensor_response_aa",
12427  "iy_main_agenda", "jacobian_agenda", "jacobian_do",
12428  "jacobian_quantities", "jacobian_indices", "iy_aux_vars" ),
12429  GIN( "jacobian_quantities_copy", "jacobian_indices_copy",
12430  "append_instrument_wfs" ),
12431  GIN_TYPE( "ArrayOfRetrievalQuantity", "ArrayOfArrayOfIndex", "Index" ),
12432  GIN_DEFAULT( NODEF, NODEF, "0" ),
12433  GIN_DESC( "Copy of *jacobian_quantities* of first measurement.",
12434  "Copy of *jacobian_indices* of first measurement.",
12435  "Flag controlling if instrumental weighting functions are "
12436  "appended or treated as different retrieval quantities." )
12437  ));
12438 
12439  md_data_raw.push_back
12440  ( MdRecord
12441  ( NAME( "yCloudRadar" ),
12442  DESCRIPTION
12443  (
12444  "Replaces *yCalc* for cloud radar calculations.\n"
12445  "\n"
12446  "The output format for *iy* from *iyCloudRadar* differs from the\n"
12447  "standard one, and *yCalc* can not be used for cloud radar\n"
12448  "simulations. This method works largely as *yCalc*, but is tailored\n"
12449  "to handle the output from *iyCloudRadar*.\n"
12450  "\n"
12451  "The method requires additional information about the sensor,\n"
12452  "regarding its recieving properties. First of all, recieved\n"
12453  "polarisation states are taken from *sensor_pol_array*. Note\n"
12454  "that this WSV allows to define several measured polarisations\n"
12455  "for each transmitted siggnal. For example, it is possible to\n"
12456  "simulate transmission of V and measuring backsacttered V and H.\n"
12457  "\n"
12458  "Secondly, the range averaging is described by *range_bins*. These\n"
12459  "bins can either be specified in altitude or two-way travel time.\n"
12460  "In both case, the edges of the range bins shall be specified.\n"
12461  "All data (including auxiliary variables) are returned as the\n"
12462  "average inside the bins. If any bin extands outisde the covered\n"
12463  "range, zeros are added reflectivities, while for other quantities\n"
12464  "(e.g. temperature) the averaging is restricted to covered part.\n"
12465  "\n"
12466  "All auxiliary data from *iyCloudRadar* are handled.\n"
12467  "\n"
12468  "No Jacobian quantities are yet handled.\n"
12469  ),
12470  AUTHORS( "Patrick Eriksson" ),
12471  OUT( "y", "y_aux" ),
12472  GOUT(),
12473  GOUT_TYPE(),
12474  GOUT_DESC(),
12475  IN( "atmgeom_checked", "atmfields_checked",
12476  "iy_aux_vars", "stokes_dim",
12477  "f_grid", "t_field", "z_field", "vmr_field", "cloudbox_on",
12478  "cloudbox_checked", "sensor_pos", "sensor_los", "sensor_checked",
12479  "iy_main_agenda", "sensor_pol_array", "range_bins" ),
12480  GIN(),
12481  GIN_TYPE(),
12482  GIN_DEFAULT(),
12483  GIN_DESC()
12484  ));
12485 
12486  md_data_raw.push_back
12487  ( MdRecord
12488  ( NAME( "ySimpleSpectrometer" ),
12489  DESCRIPTION
12490  (
12491  "Converts *iy* to *y* assuming a fixed frequency resolution.\n"
12492  "\n"
12493  "This is a short-cut, avoiding *yCalc*, that can be used to convert\n"
12494  "monochromatic pencil beam data to spectra with a fixed resolution.\n"
12495  "\n"
12496  "The method mimics a spectrometer with rectangular response\n"
12497  "functions, all having the same width (*df*). The position of\n"
12498  "the first spectrometer channel is set to f_grid[0]+df/2.\n"
12499  "The centre frequency of channels are returned as *y_f*.\n"
12500  "\n"
12501  "Auxiliary variables and *jacobian*s are not handled.\n"
12502  ),
12503  AUTHORS( "Patrick Eriksson" ),
12504  OUT( "y", "y_f" ),
12505  GOUT(),
12506  GOUT_TYPE(),
12507  GOUT_DESC(),
12508  IN( "iy", "stokes_dim", "f_grid" ),
12509  GIN( "df" ),
12510  GIN_TYPE( "Numeric" ),
12511  GIN_DEFAULT( NODEF ),
12512  GIN_DESC( "Selected frequency resolution." )
12513  ));
12514 
12515  md_data_raw.push_back
12516  ( MdRecord
12517  ( NAME( "wind_u_fieldIncludePlanetRotation" ),
12518  DESCRIPTION
12519  (
12520  "Maps the planet's rotation to an imaginary wind.\n"
12521  "\n"
12522  "This method is of relevance if the observation platform is not\n"
12523  "following the planet's rotation, and Doppler effects must be\n"
12524  "considered. Examples include full disk observations from another\n"
12525  "planet or a satellite not in orbit of the observed planet.\n"
12526  "\n"
12527  "The rotation of the planet is not causing any Doppler shift for\n"
12528  "1D and 2D simulations, and the method can only be used for 3D.\n"
12529  ),
12530  AUTHORS( "Patrick Eriksson" ),
12531  OUT( "wind_u_field" ),
12532  GOUT(),
12533  GOUT_TYPE(),
12534  GOUT_DESC(),
12535  IN( "wind_u_field", "atmosphere_dim", "p_grid", "lat_grid", "lon_grid",
12536  "refellipsoid", "z_field", "planet_rotation_period" ),
12537  GIN(),
12538  GIN_TYPE(),
12539  GIN_DEFAULT(),
12540  GIN_DESC()
12541  ));
12542 
12543  md_data_raw.push_back
12544  ( MdRecord
12545  ( NAME( "z_fieldFromHSE" ),
12546  DESCRIPTION
12547  (
12548  "Force altitudes to fulfil hydrostatic equilibrium.\n"
12549  "\n"
12550  "The method applies hydrostatic equilibrium. A mixture of \"dry\n"
12551  "air\" and water vapour (if present as *abs_species* tag) is assumed.\n"
12552  "That is, the air is assumed to be well mixed and its weight, apart\n"
12553  "from the water vapour, is constant (*molarmass_dry_air*). In\n"
12554  "addition, the effect of any particles (including liquid and ice\n"
12555  "particles) is neglected.\n"
12556  "\n"
12557  "The output is an update of *z_field*. This variable is expected to\n"
12558  "contain approximative altitudes when calling the function. The\n"
12559  "altitude matching *p_hse* is kept constant. Other input altitudes can\n"
12560  "basically be arbitrary, but good estimates give quicker calculations.\n"
12561  "\n"
12562  "The calculations are repeated until the change in altitude is below\n"
12563  "*z_hse_accuracy*. An iterative process is needed as gravity varies\n"
12564  "with altitude.\n"
12565  "\n"
12566  "For 1D and 2D, the geographical position is taken from *lat_true*\n"
12567  "and *lon_true*.\n"
12568  ),
12569  AUTHORS( "Patrick Eriksson" ),
12570  OUT( "z_field" ),
12571  GOUT(),
12572  GOUT_TYPE(),
12573  GOUT_DESC(),
12574  IN( "atmosphere_dim", "p_grid", "lat_grid", "lon_grid", "lat_true",
12575  "lon_true", "abs_species", "t_field", "z_field", "vmr_field",
12576  "refellipsoid", "z_surface", "atmfields_checked", "g0_agenda",
12577  "molarmass_dry_air", "p_hse", "z_hse_accuracy" ),
12578  GIN(),
12579  GIN_TYPE(),
12580  GIN_DEFAULT(),
12581  GIN_DESC()
12582  ));
12583 }
#define GIN_TYPE
Definition: methods.cc:53
#define GIN
Definition: methods.cc:52
#define GIN_DEFAULT
Definition: methods.cc:54
All information for one workspace method.
Definition: methods.h:42
String get_array_groups_as_string(bool basetype_is_group, bool return_basetype_only)
Return string list of array types.
Definition: groups.cc:215
The implementation for String, the ARTS string class.
Definition: mystring.h:63
The global header file for ARTS.
#define NODEF
Definition: methods.h:36
#define AGENDAMETHOD(x)
Definition: methods.cc:57
#define PASSWORKSPACE(x)
Definition: methods.cc:59
#define SETMETHOD(x)
Definition: methods.cc:56
#define USES_TEMPLATES(x)
Definition: methods.cc:58
#define OUT
Definition: methods.cc:47
#define NAME(x)
Definition: methods.cc:44
Implements the class MakeArray, which is a derived class of Array, allowing explicit initialization...
#define GOUT_DESC
Definition: methods.cc:50
#define GIN_DESC
Definition: methods.cc:55
This can be used to make arrays out of anything.
Definition: array.h:40
const ArrayOfString wsv_group_names
The names associated with Wsv groups as Strings.
Definition: global_data.h:94
void define_md_data_raw()
Definition: methods.cc:126
#define PASSWSVNAMES(x)
Definition: methods.cc:60
#define AUTHORS
Definition: methods.cc:46
#define GOUT
Definition: methods.cc:48
#define GOUT_TYPE
Definition: methods.cc:49
#define IN
Definition: methods.cc:51
Declaration of the class MdRecord.
#define DESCRIPTION(x)
Definition: methods.cc:45
my_basic_string< char > String
The String type for ARTS.
Definition: mystring.h:318
const Array< MdRecord > md_data_raw
Lookup information for workspace methods.
Definition: methods.cc:39
Auxiliary header stuff related to workspace variable groups.