Go to the documentation of this file.
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
153 String(
"Creates a variable of group " + *it +
".\n"
155 "After being created, the variable is uninitialized.\n"
184 (
NAME(
"AbsInputFromAtmFields" ),
187 "Initialises the WSVs *abs_p*, *abs_t* and *abs_vmrs* from\n"
188 "*p_grid, *t_field* and *vmr_field*.\n"
190 "This only works for a 1D atmosphere!\n"
193 OUT(
"abs_p",
"abs_t",
"abs_vmrs" ),
197 IN(
"atmosphere_dim",
"p_grid",
"t_field",
"vmr_field" ),
206 (
NAME(
"AbsInputFromRteScalars" ),
209 "Initialize absorption input WSVs from local atmospheric conditions.\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"
218 OUT(
"abs_p",
"abs_t",
"abs_vmrs" ),
222 IN(
"rtp_pressure",
"rtp_temperature",
"rtp_vmr" ),
231 (
NAME(
"abs_coefCalcFromXsec" ),
234 "Calculate absorption coefficients from cross sections.\n"
236 "This calculates both the total absorption and the\n"
237 "absorption per species.\n"
239 "Cross sections are multiplied by n*VMR.\n"
241 AUTHORS(
"Stefan Buehler",
"Axel von Engeln" ),
242 OUT(
"abs_coef",
"abs_coef_per_species" ),
246 IN(
"abs_xsec_per_species",
"abs_vmrs",
"abs_p",
"abs_t" ),
255 (
NAME(
"abs_cont_descriptionAppend" ),
258 "Appends the description of a continuum model or a complete absorption\n"
259 "model to *abs_cont_names* and *abs_cont_parameters*.\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"
265 AUTHORS(
"Thomas Kuhn",
"Stefan Buehler" ),
266 OUT(
"abs_cont_names",
268 "abs_cont_parameters" ),
272 IN(
"abs_cont_names",
274 "abs_cont_parameters" ),
275 GIN(
"tagname",
"model",
"userparam" ),
276 GIN_TYPE(
"String",
"String",
"Vector" ),
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"
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" )
290 (
NAME(
"abs_cont_descriptionInit" ),
293 "Initializes the two workspace variables for the continuum description,\n"
294 "*abs_cont_names* and *abs_cont_parameters*.\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"
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"
305 AUTHORS(
"Thomas Kuhn",
"Stefan Buehler" ),
306 OUT(
"abs_cont_names",
308 "abs_cont_parameters" ),
321 (
NAME(
"abs_lineshapeDefine" ),
324 "Set the lineshape for all calculated lines.\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"
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"
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"
339 "The allowed values for the input parameters are:\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"
365 " quadratic: (f/f0)^2\n"
366 " VVH: (f*tanh(h*f/(2k*T))) / (f0*tanh(h*f0/(2k*T)))\n"
370 " <Number>: positive cutoff frequency in Hz\n"
372 AUTHORS(
"Axel von Engeln",
"Stefan Buehler" ),
373 OUT(
"abs_lineshape" ),
378 GIN(
"shape",
"forefactor",
"cutoff" ),
379 GIN_TYPE(
"String",
"String",
"Numeric" ),
382 "Normalization factor.",
383 "Cutoff frequency [Hz]." )
388 (
NAME(
"abs_lineshape_per_tgDefine" ),
391 "Set the lineshape, separately for each absorption species.\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"
398 "For detailed documentation on the available options for the input\n"
399 "parameters see documentation of method *abs_lineshapeDefine*.\n"
401 AUTHORS(
"Axel von Engeln",
"Stefan Buehler" ),
402 OUT(
"abs_lineshape" ),
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." )
417 (
NAME(
"abs_linesArtscat4FromArtscat3" ),
420 "Convert a line list from ARTSCAT-3 to ARTSCAT-4 format.\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"
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"
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"
451 (
NAME(
"abs_linesReadFromArts" ),
454 "Read all the lines from an Arts catalogue file in the\n"
455 "given frequency range. Otherwise a runtime error will be\n"
458 "Please note that all lines must correspond\n"
459 "to legal species / isotopologue combinations\n"
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]." )
477 (
NAME(
"abs_linesReadFromHitran" ),
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"
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"
488 "The database must be sorted by increasing frequency!\n"
490 "WWW access of the HITRAN catalogue: http://www.hitran.com/\n"
492 "For data in the Hitran 1986-2001 format use the workspace\n"
493 "method *abs_linesReadFromHitranPre2004*\n"
495 AUTHORS(
"Hermann Berg",
"Thomas Kuhn" ),
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]." )
511 (
NAME(
"abs_linesReadFromHitranPre2004" ),
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"
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"
523 "WWW access of the HITRAN catalogue: http://www.hitran.com/\n"
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]." )
541 (
NAME(
"abs_linesReadFromJpl" ),
544 "Read all the lines from a JPL catalogue file in the\n"
545 "given frequency range. Otherwise a runtime error will be\n"
548 "Please note that all lines must correspond\n"
549 "to legal species / isotopologue combinations.\n"
551 "WWW access of the JPL catalogue: http://spec.jpl.nasa.gov/\n"
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]." )
569 (
NAME(
"abs_linesReadFromMytran2" ),
572 "Read all the lines from a MYTRAN2 catalogue file in the\n"
573 "given frequency range. Otherwise a runtime error will be\n"
576 "Please note that all lines must correspond\n"
577 "to legal species / isotopologue combinations\n"
579 AUTHORS(
"Axel von Engeln",
"Stefan Buehler" ),
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]." )
595 (
NAME(
"abs_linesReadFromSplitArtscat" ),
598 "Read all the lines in the given frequency range from a split\n"
599 "Arts catalogue file.\n"
601 "Please note that all lines must correspond\n"
602 "to legal species / isotopologue combinations\n"
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]." )
620 (
NAME(
"abs_lines_per_speciesAddMirrorLines" ),
623 "Adds mirror lines at negative frequencies to *abs_lines_per_species*.\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"
629 AUTHORS(
"Axel von Engeln",
"Stefan Buehler",
"Patrick Eriksson"),
630 OUT(
"abs_lines_per_species" ),
634 IN(
"abs_lines_per_species" ),
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.")
645 (
NAME(
"abs_lines_per_speciesCompact" ),
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"
653 AUTHORS(
"Axel von Engeln",
"Stefan Buehler" ),
654 OUT(
"abs_lines_per_species" ),
658 IN(
"abs_lines_per_species",
"abs_lineshape",
"f_grid" ),
667 (
NAME(
"abs_lines_per_speciesCreateFromLines" ),
670 "Split lines up into the different species.\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"
679 OUT(
"abs_lines_per_species" ),
683 IN(
"abs_lines",
"abs_species" ),
692 (
NAME(
"abs_lines_per_speciesReadFromCatalogues" ),
695 "Read spectral line data from different line catalogues.\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"
701 " - abs_linesReadFromHitran\n"
702 " - abs_lines_per_speciesCreateFromLines\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"
716 "abs_lines_per_speciesReadFromCatalogues(\n"
717 " [ \"../data/cat1.dat\", \"../data/cat2.dat\" ]\n"
718 " [ \"MYTRAN2\", \"HITRAN96\" ]\n"
720 " [ 2000e9, 100e9 ]\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"
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"
732 "This function uses the various reading routines\n"
733 "(*abs_linesReadFromHitran*, etc.), as well as\n"
734 "*abs_lines_per_speciesCreateFromLines*.\n"
737 OUT(
"abs_lines_per_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]." )
754 (
NAME(
"abs_lines_per_speciesSetEmpty" ),
757 "Sets abs_lines_per_species to empty line lists.\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"
764 OUT(
"abs_lines_per_species" ),
777 (
NAME(
"abs_lines_per_speciesWriteToSplitArtscat" ),
780 "Write each species to a separate catalogue file.\n"
787 IN(
"output_file_format",
"abs_lines_per_species" ),
791 GIN_DESC(
"Basename of the catalogue." )
796 (
NAME(
"abs_lookupAdapt" ),
799 "Adapts a gas absorption lookup table to the current calculation.\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"
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"
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"
815 OUT(
"abs_lookup",
"abs_lookup_is_adapted" ),
819 IN(
"abs_lookup",
"abs_species",
"f_grid" ),
828 (
NAME(
"abs_lookupCalc" ),
831 "Creates a gas absorption lookup table.\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"
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"
843 "Note, that the absorbing gas can be any gas, but the perturbing gas is\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"
852 OUT(
"abs_lookup",
"abs_lookup_is_adapted" ),
874 (
NAME(
"abs_lookupInit" ),
877 "Creates an empty gas absorption lookup table.\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"
896 (
NAME(
"abs_lookupSetup" ),
899 "Set up input parameters for abs_lookupCalc.\n"
901 "More information can be found in the documentation for method\n"
902 "*abs_lookupSetupBatch*\n"
904 "Max and min values of H2O and temperature are adjusted to allow for\n"
905 "numerical perturbations in Jacobian calculation.\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"
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."
917 " *abs_lookupSetupBatch*\n"
929 IN(
"atmosphere_dim",
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" ),
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.",
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.",
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."
961 (
NAME(
"abs_lookupSetupBatch" ),
964 "Set up input parameters for abs_lookupCalc for batch calculations.\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"
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"
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"
978 "If nonlinear species are present, *abs_nls* and *abs_nls_pert* are also\n"
981 "Max and min values of H2O and temperature are adjusted to allow for\n"
982 "numerical perturbations in Jacobian calculation.\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"
989 " *abs_lookupSetup*\n"
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" ),
1010 "Grid step in log10(p[Pa]) (base 10 logarithm).",
1012 "The temperature variation grid step in Kelvin. The true "
1013 "step can become finer than this, if required by the "
1014 "interpolation order.",
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.",
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]."
1029 (
NAME(
"abs_lookupSetupWide" ),
1032 "Set up input parameters for abs_lookupCalc for a wide range of\n"
1033 "atmospheric conditions.\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"
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"
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"
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"
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]." )
1081 (
NAME(
"abs_lookupTestAccuracy" ),
1084 "Test accuracy of absorption lookup table.\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"
1090 "For error units see *abs_lookupTestAccMC*\n"
1092 "Produces no workspace output, only output to the output streams.\n"
1100 "abs_lookup_is_adapted",
1101 "abs_p_interp_order",
1102 "abs_t_interp_order",
1103 "abs_nls_interp_order",
1104 "abs_xsec_agenda" ),
1113 (
NAME(
"abs_lookupTestAccMC" ),
1116 "Test accuracy of absorption lookup table with Monte Carlo Algorithm.\n"
1118 "Explicitly compare absorption from the lookup table with line-by-line\n"
1119 "calculations for random conditions.\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"
1127 "Produces no workspace output, only output to the output streams.\n"
1135 "abs_lookup_is_adapted",
1136 "abs_p_interp_order",
1137 "abs_t_interp_order",
1138 "abs_nls_interp_order",
1140 "abs_xsec_agenda" ),
1149 (
NAME(
"abs_xsec_agenda_checkedCalc" ),
1152 "Checks if the *abs_xsec_agenda* contains all necessary\n"
1153 "methods to calculate all the species in *abs_species*.\n"
1155 "This method should be called just before the *abs_xsec_agenda*\n"
1156 "is used, e.g. *abs_lookupCalc*, *ybatchCalc*, *yCalc*\n"
1159 OUT(
"abs_xsec_agenda_checked" ),
1163 IN(
"abs_species",
"abs_xsec_agenda" ),
1172 (
NAME(
"abs_speciesAdd" ),
1175 "Adds species tag groups to the list of absorption species.\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"
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"
1185 OUT(
"abs_species",
"propmat_clearsky_agenda_checked",
"abs_xsec_agenda_checked" ),
1189 IN(
"abs_species" ),
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")
1200 (
NAME(
"abs_speciesAdd2" ),
1203 "Adds a species tag group to the list of absorption species and\n"
1204 "jacobian quantities.\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"
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"
1214 AUTHORS(
"Patrick Eriksson" ),
1215 OUT(
"abs_species",
"jacobian_quantities",
"jacobian_agenda",
1216 "propmat_clearsky_agenda_checked",
"abs_xsec_agenda_checked" ),
1220 IN(
"abs_species",
"atmosphere_dim",
"p_grid",
"lat_grid",
1222 GIN(
"gin1" ,
"gin2" ,
"gin3" ,
1223 "species",
"method",
"unit",
"dx" ),
1224 GIN_TYPE(
"Vector",
"Vector",
"Vector",
1225 "String",
"String",
"String",
"Numeric" ),
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."
1244 (
NAME(
"abs_speciesDefineAllInScenario" ),
1247 "Define one tag group for each species known to ARTS and included in an\n"
1248 "atmospheric scenario.\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"
1256 OUT(
"abs_species",
"propmat_clearsky_agenda_checked",
"abs_xsec_agenda_checked" ),
1264 GIN_DESC(
"The name and path of a particular atmospheric scenario.\n"
1265 "For example: /pool/lookup2/arts-data/atmosphere/fascod/tropical" )
1270 (
NAME(
"abs_speciesInit" ),
1273 "Sets *abs_species* to be empty.\n"
1276 OUT(
"abs_species" ),
1289 (
NAME(
"abs_speciesSet" ),
1292 "Set up a list of absorption species tag groups.\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"
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"
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"
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"
1316 "The symbol \"*\" acts as a wild card. Furthermore, frequency range or\n"
1317 "frequency range and isotopologue may be omitted.\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"
1326 " species = [ \"O3-666-500e9-501e9, O3-686\",\n"
1328 " \"H2O-PWR98\" ]\n"
1330 " The first tag group selects all O3-666 lines between 500 and\n"
1331 " 501 GHz plus all O3-686 lines. \n"
1333 " The second tag group selects all remaining O3 transitions.\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"
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"
1346 OUT(
"abs_species",
"abs_xsec_agenda_checked",
"propmat_clearsky_agenda_checked" ),
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")
1362 (
NAME(
"abs_vecAddGas" ),
1365 "Add gas absorption to first element of absorption vector.\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"
1376 IN(
"abs_vec",
"propmat_clearsky" ),
1385 (
NAME(
"abs_vecAddPart" ),
1388 "The particle absorption is added to *abs_vec*\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"
1407 IN(
"abs_vec",
"abs_vec_spt",
"pnd_field",
"atmosphere_dim",
1408 "scat_p_index",
"scat_lat_index",
"scat_lon_index" ),
1417 (
NAME(
"abs_vecInit" ),
1420 "Initialize absorption vector.\n"
1422 "This method is necessary, because all other absorption methods just\n"
1423 "add to the existing absorption vector.\n"
1425 "So, here we have to make it the right size and fill it with 0.\n"
1427 "Note, that the vector is not really a vector, because it has a\n"
1428 "leading frequency dimension.\n"
1435 IN(
"f_grid",
"stokes_dim",
"f_index" ),
1444 (
NAME(
"abs_xsec_per_speciesAddCIA" ),
1447 "Calculate absorption cross sections per tag group for HITRAN CIA continua.\n"
1449 "This interpolates the cross sections from *abs_cia_data*.\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"
1455 OUT(
"abs_xsec_per_species" ),
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" ),
1465 GIN_DESC(
"Temperature extrapolation factor (relative to grid spacing).",
1466 "Set to 1 to suppress runtime errors (and return NAN values instead).")
1471 (
NAME(
"abs_xsec_per_speciesAddConts" ),
1474 "Calculate absorption cross sections per tag group for continua.\n"
1477 OUT(
"abs_xsec_per_species" ),
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" ),
1493 (
NAME(
"abs_xsec_per_speciesAddLines" ),
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"
1499 AUTHORS(
"Stefan Buehler",
"Axel von Engeln" ),
1500 OUT(
"abs_xsec_per_species"),
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" ),
1516 (
NAME(
"abs_xsec_per_speciesInit" ),
1519 "Initialize *abs_xsec_per_species*.\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"
1527 OUT(
"abs_xsec_per_species" ),
1531 IN(
"abs_species",
"abs_species_active",
"f_grid",
"abs_p",
1532 "abs_xsec_agenda_checked" ),
1541 (
NAME(
"AgendaAppend" ),
1544 "Append methods to an agenda.\n"
1546 "An agenda is used to store a list of methods that are meant to be\n"
1547 "executed sequentially.\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"
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"
1576 (
NAME(
"AgendaExecute" ),
1579 "Execute an agenda.\n"
1590 GIN_DESC(
"Agenda to be executed." ),
1597 (
NAME(
"AgendaExecuteExclusive" ),
1600 "Execute an agenda exclusively.\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"
1615 GIN_DESC(
"Agenda to be executed." ),
1622 (
NAME(
"AgendaSet" ),
1625 "Set up an agenda.\n"
1627 "An agenda is used to store a list of methods that are meant to be\n"
1628 "executed sequentially.\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"
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"
1657 (
NAME(
"AntennaConstantGaussian1D" ),
1660 "Sets up a 1D gaussian antenna response and a matching\n"
1661 "*mblock_za_grid*.\n"
1663 "As *antenna_responseGaussian*, but alsp creates *mblock_za_grid*.\n"
1664 "For returned antenna response, see *antenna_responseGaussian*.\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"
1675 "The WSV *antenna_los* is set to 0.\n"
1677 AUTHORS(
"Patrick Eriksson" ),
1678 OUT(
"antenna_dim",
"mblock_za_grid",
"mblock_aa_grid",
1679 "antenna_response",
"antenna_los" ),
1684 GIN(
"n_za_grid",
"fwhm",
"xwidth_si",
"dx_si" ),
1685 GIN_TYPE(
"Index",
"Numeric",
"Numeric",
"Numeric" ),
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." )
1695 (
NAME(
"AntennaMultiBeamsToPencilBeams" ),
1698 "Maps a multi-beam case to a matching pencil beam case.\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"
1711 AUTHORS(
"Patrick Eriksson" ),
1712 OUT(
"sensor_pos",
"sensor_los",
"antenna_los",
"antenna_dim",
1713 "mblock_za_grid",
"mblock_aa_grid" ),
1717 IN(
"sensor_pos",
"sensor_los",
"antenna_los",
"antenna_dim",
1718 "mblock_za_grid",
"mblock_aa_grid",
"atmosphere_dim" ),
1727 (
NAME(
"AntennaOff" ),
1730 "Sets some antenna related variables\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"
1737 AUTHORS(
"Patrick Eriksson" ),
1738 OUT(
"antenna_dim",
"mblock_za_grid",
"mblock_aa_grid" ),
1751 (
NAME(
"AntennaSet1D" ),
1754 "Sets the antenna dimension to 1D.\n"
1756 "Sets *antenna_dim* to 1 and sets *mblock_aa_grid* to be empty.\n"
1758 AUTHORS(
"Patrick Eriksson" ),
1759 OUT(
"antenna_dim",
"mblock_aa_grid" ),
1772 (
NAME(
"AntennaSet2D" ),
1775 "Sets the antenna dimension to 2D.\n"
1777 "Sets *antenna_dim* to 2.\n"
1779 "It is only allowed to set *antenna_dim* to 2 when *atmosphere_dim*\n"
1782 AUTHORS(
"Patrick Eriksson" ),
1783 OUT(
"antenna_dim" ),
1787 IN(
"atmosphere_dim" ),
1796 (
NAME(
"antenna_responseGaussian" ),
1799 "Sets up a gaussian antenna response.\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"
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"
1815 AUTHORS(
"Patrick Eriksson" ),
1816 OUT(
"antenna_response" ),
1821 GIN(
"fwhm",
"xwidth_si",
"dx_si" ),
1822 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric" ),
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." )
1831 (
NAME(
"antenna_responseVaryingGaussian" ),
1834 "Sets up gaussian antenna responses.\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"
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"
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"
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"
1857 AUTHORS(
"Patrick Eriksson" ),
1858 OUT(
"antenna_response" ),
1863 GIN(
"leff",
"xwidth_si",
"dx_si",
"nf",
"fstart",
"fstop" ),
1864 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric",
"Index",
"Numeric",
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" )
1880 "Append one workspace variable to another.\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"
1886 "Appending two vectors or a numeric to a vector works as for array\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"
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"
1899 AUTHORS(
"Stefan Buehler, Oliver Lemke" ),
1902 GOUT_TYPE(
"Vector, Vector, Matrix, Matrix, Tensor4, String, " +
1903 ARRAY_GROUPS +
", " + ARRAY_GROUPS_WITH_BASETYPE ),
1904 GOUT_DESC(
"The variable to append to." ),
1908 GIN_TYPE(
"Numeric, Vector, Matrix, Vector, Tensor4, String, " +
1909 ARRAY_GROUPS +
"," + GROUPS_WITH_ARRAY_TYPE,
1913 GIN_DESC(
"The variable to append.",
1914 "Where to append. Could be either the \"leading\" or \"trailing\" dimension." ),
1922 (
NAME(
"ArrayOfIndexLinSpace" ),
1925 "Initializes an ArrayOfIndex with linear spacing.\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"
1931 "The created array is [start, start+step, start+2*step, ...]\n "
1939 GIN(
"start",
"stop",
"step" ),
1940 GIN_TYPE(
"Index",
"Index",
"Index" ),
1943 "Maximum/minimum value of the end value",
1944 "Spacing of the array."
1950 (
NAME(
"ArrayOfIndexSet" ),
1953 "Creates an ArrayOfIndex from the given list of numbers.\n"
1964 GIN_DESC(
"Indexes for initializiation." ),
1970 (
NAME(
"ArrayOfIndexSetConstant" ),
1973 "Creates an ArrayOfIndex of length *nelem*, with all values\n"
1976 AUTHORS(
"Patrick Eriksson" ),
1991 (
NAME(
"ArrayOfLineMixingRecordReadAscii" ),
1994 "Read line mixing data from an ASCII file.\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"
2002 "After reading the data it must be matched to *abs_lines_per_species*.\n"
2003 "See *line_mixing_dataMatch*.\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"
2020 GOUT(
"line_mixing_records" ),
2022 GOUT_DESC(
"Unmatched line mixing data." ),
2027 GIN_DESC(
"Line mixing data file.")
2032 (
NAME(
"ArrayOfStringSet" ),
2035 "Sets a String array according the given text.\n"
2036 "The format is text = [\"String1\",\"String2\",...]\n"
2047 GIN_DESC(
"Strings for initialization." ),
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"
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"
2101 (
NAME(
"AtmFieldsCalc" ),
2104 "Interpolation of raw atmospheric T, z, and VMR fields to calculation grids.\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"
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"
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"
2127 AUTHORS(
"Claudia Emde",
"Stefan Buehler" ),
2128 OUT(
"t_field",
"z_field",
"vmr_field" ),
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" ),
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." )
2144 (
NAME(
"AtmFieldsCalcExpand1D" ),
2147 "Interpolation of 1D raw atmospheric fields to create 2D or 3D\n"
2148 "homogeneous atmospheric fields.\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"
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"
2159 AUTHORS(
"Patrick Eriksson",
"Claudia Emde",
"Stefan Buehler" ),
2160 OUT(
"t_field",
"z_field",
"vmr_field" ),
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" ),
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." )
2176 (
NAME(
"AtmFieldsExpand1D" ),
2179 "Maps a 1D case to 2D or 3D homogeneous atmospheric fields.\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"
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"
2192 AUTHORS(
"Patrick Eriksson" ),
2193 OUT(
"t_field",
"z_field",
"vmr_field" ),
2197 IN(
"t_field",
"z_field",
"vmr_field",
"p_grid",
"lat_grid",
2198 "lon_grid",
"atmosphere_dim" ),
2207 (
NAME(
"AtmFieldsRefinePgrid" ),
2210 "Refine the pressure grid in the atmospheric fields.\n"
2212 "This method is used for absorption lookup table testing. It probably\n"
2213 "has no other application.\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"
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"
2226 "t_field",
"z_field",
"vmr_field" ),
2230 IN(
"p_grid",
"lat_grid",
"lon_grid",
2231 "t_field",
"z_field",
"vmr_field",
"atmosphere_dim" ),
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")
2242 (
NAME(
"atmfields_checkedCalc" ),
2245 "Checks consistency of (clear sky) atmospheric fields.\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"
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"
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"
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"
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"
2265 "If any test fails, there is an error. Otherwise,\n"
2266 "*atmfields_checked* is set to 1.\n"
2268 "The cloudbox is covered by *cloudbox_checked*, *z_field* is\n"
2269 "part of the checks done around *atmgeom_checked*.\n"
2271 AUTHORS(
"Patrick Eriksson" ),
2272 OUT(
"atmfields_checked" ),
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" ),
2283 GIN_DESC(
"Boolean for demanding vmr_field > 0 or not.")
2288 (
NAME(
"atmgeom_checkedCalc" ),
2291 "Checks consistency of geometric considerations of the atmosphere.\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"
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"
2305 "If any test fails, there is an error. Otherwise, *atmgeom_checked*\n"
2308 "See further *atmgeom_checkedCalc*.\n"
2310 AUTHORS(
"Patrick Eriksson" ),
2311 OUT(
"atmgeom_checked" ),
2315 IN(
"atmosphere_dim",
"p_grid",
"lat_grid",
"lon_grid",
2316 "z_field",
"refellipsoid",
"z_surface" ),
2326 (
NAME(
"atm_fields_compactAddConstant" ),
2329 "Adds a constant field to atm_fields_compact.\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"
2337 OUT(
"atm_fields_compact" ),
2341 IN(
"atm_fields_compact" ),
2342 GIN(
"name",
"value" ),
2345 GIN_DESC(
"Name of additional atmospheric field, with constant value.",
2346 "Constant value of additional field." )
2351 (
NAME(
"atm_fields_compactAddSpecies" ),
2354 "Adds a field to atm_fields_compact, with interpolation.\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"
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"
2368 OUT(
"atm_fields_compact" ),
2372 IN(
"atm_fields_compact" ),
2373 GIN(
"name",
"value" ),
2374 GIN_TYPE(
"String",
"GriddedField3" ),
2376 GIN_DESC(
"Name of additional atmospheric field.",
2377 "Value of additional atmospheric field." )
2382 (
NAME(
"atm_fields_compactFromMatrix" ),
2385 "Set *atm_fields_compact* from 1D profiles in a matrix.\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"
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"
2399 "p[Pa] T[K] z[m] VMR_1[fractional] ... VMR[fractional] IGNORE ... IGNORE\n"
2401 "Works only for *atmosphere_dim==1.*\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"
2410 AUTHORS(
"Stefan Buehler",
"Daniel Kreyling",
"Jana Mendrok" ),
2411 OUT(
"atm_fields_compact" ),
2415 IN(
"atmosphere_dim" ),
2422 GIN_DESC(
"One atmosphere matrix from batch input ArrayOfMatrix.",
2423 "Order/names of atmospheric fields." )
2429 (
NAME(
"AtmFieldsFromCompact" ),
2432 "Extract pressure grid and atmospheric fields from\n"
2433 "*atm_fields_compact*.\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"
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"
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"
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"
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" ),
2462 IN(
"abs_species",
"part_species",
"atm_fields_compact",
"atmosphere_dim" ),
2466 GIN_DESC(
"Delimiter string of *part_species* elements." )
2471 (
NAME(
"AtmosphereSet1D" ),
2474 "Sets the atmospheric dimension to 1D.\n"
2476 "Sets *atmosphere_dim* to 1 and gives some variables dummy values.\n"
2478 "The latitude and longitude grids are set to be empty.\n"
2480 AUTHORS(
"Patrick Eriksson" ),
2481 OUT(
"atmosphere_dim",
"lat_grid",
"lon_grid" ),
2494 (
NAME(
"AtmosphereSet2D" ),
2497 "Sets the atmospheric dimension to be 2D.\n"
2499 "Sets *atmosphere_dim* to 2 and the longitude grid to be empty.\n"
2501 AUTHORS(
"Patrick Eriksson" ),
2502 OUT(
"atmosphere_dim",
"lon_grid" ),
2515 (
NAME(
"AtmosphereSet3D" ),
2518 "Sets the atmospheric dimension to 3D.\n"
2520 AUTHORS(
"Patrick Eriksson" ),
2521 OUT(
"atmosphere_dim" ),
2534 (
NAME(
"AtmRawRead" ),
2537 "Reads atmospheric data from a scenario.\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"
2548 "Files in a scenarios should be named matching the pattern of:\n"
2549 "tropical.H2O.xml\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"
2557 OUT(
"t_field_raw",
"z_field_raw",
"vmr_field_raw" ),
2561 IN(
"abs_species" ),
2565 GIN_DESC(
"Name of scenario, probably including the full path. For "
2566 "example: \"/smiles_local/arts-data/atmosphere/fascod/"
2572 (
NAME(
"backend_channel_responseFlat" ),
2575 "Sets up a rectangular channel response.\n"
2577 "The response of the backend channels is hee assumed to be constant\n"
2578 "inside the resolution width, and zero outside.\n"
2580 "The method assumes that all channels have the same response.\n"
2582 AUTHORS(
"Patrick Eriksson" ),
2583 OUT(
"backend_channel_response" ),
2588 GIN(
"resolution" ),
2591 GIN_DESC(
"The spectrometer resolution." )
2596 (
NAME(
"backend_channel_responseGaussian" ),
2599 "Sets up a gaussian backend channel response.\n"
2601 "The method assumes that all channels have the same response, and\n"
2602 "that it can be modelled as gaussian.\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"
2615 AUTHORS(
"Patrick Eriksson" ),
2616 OUT(
"backend_channel_response" ),
2621 GIN(
"fwhm",
"xwidth_si",
"dx_si" ),
2622 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric" ),
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." )
2631 (
NAME(
"batch_atm_fields_compactAddConstant" ),
2634 "Adds a constant field to batch_atm_fields_compact.\n"
2636 "Applies *atm_fields_compactAddConstant* to each batch.\n"
2637 "The format is equal to that WSM.\n"
2640 OUT(
"batch_atm_fields_compact" ),
2644 IN(
"batch_atm_fields_compact" ),
2645 GIN(
"name",
"value" ),
2648 GIN_DESC(
"Name of additional atmospheric field, with constant value.",
2649 "Constant value of additional field." )
2654 (
NAME(
"batch_atm_fields_compactAddSpecies" ),
2657 "Adds a field to *batch_atm_fields_compact*, with interpolation.\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"
2663 OUT(
"batch_atm_fields_compact" ),
2667 IN(
"batch_atm_fields_compact" ),
2668 GIN(
"name",
"value" ),
2669 GIN_TYPE(
"String",
"GriddedField3" ),
2671 GIN_DESC(
"Name of additional atmospheric field. Use, e.g., vmr_ch4 for methane VMR",
2672 "Value of additional atmospheric field." )
2677 (
NAME(
"batch_atm_fields_compactFromArrayOfMatrix" ),
2680 "Expand batch of 1D atmospheric states to a batch_atm_fields_compact.\n"
2682 "This is used to handle 1D batch cases, for example from the Chevallier\n"
2683 "data set, stored in a matrix.\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"
2693 "p[Pa] T[K] z[m] VMR_1[fractional] ... VMR[fractional] IGNORE ... IGNORE\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"
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"
2706 " extra_field_values : Give here the constant field value. Default:\n"
2707 " Empty. Dimension must match extra_field_names.\n"
2709 AUTHORS(
"Stefan Buehler",
"Daniel Kreyling",
"Jana Mendrok" ),
2710 OUT(
"batch_atm_fields_compact" ),
2714 IN(
"atmosphere_dim" ),
2716 "field_names",
"extra_field_names",
"extra_field_values" ),
2718 "ArrayOfString",
"ArrayOfString",
"Vector" ),
2720 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.")
2730 (
NAME(
"blackbody_radiationPlanck" ),
2733 "The Planck function (frequency version).\n"
2735 "The standard function for *blackbody_radiation_agenda*.\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"
2740 AUTHORS(
"Patrick Eriksson" ),
2741 OUT(
"blackbody_radiation" ),
2745 IN(
"f_grid",
"rtp_temperature" ),
2754 (
NAME(
"abs_cia_dataReadFromCIA" ),
2757 "Read data from a CIA data file for all CIA molecules defined\n"
2758 "in *abs_species*.\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"
2764 "Upon reading we convert this to the ARTS internal SI units \n"
2765 "of Hz and m^5 molec^(-2).\n"
2768 OUT(
"abs_cia_data" ),
2772 IN(
"abs_species" ),
2773 GIN(
"catalogpath" ),
2776 GIN_DESC(
"Path to the CIA catalog directory." )
2781 (
NAME(
"abs_cia_dataReadFromXML" ),
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"
2787 "The units of the data are described in *abs_cia_dataReadFromCIA*.\n"
2790 OUT(
"abs_cia_data" ),
2794 IN(
"abs_species" ),
2798 GIN_DESC(
"Name of the XML file." )
2803 (
NAME(
"CIAInfo" ),
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"
2815 GIN(
"catalogpath",
"cia_tags" ),
2816 GIN_TYPE(
"String",
"ArrayOfString" ),
2818 GIN_DESC(
"Path to the CIA catalog directory.",
2819 "Array of CIA tags to view, e.g. [ \"N2-N2\", \"H2-H2\" ]" )
2824 (
NAME(
"CloudboxGetIncoming" ),
2827 "Calculates incoming radiation field of the cloudbox by repeated\n"
2828 "radiative transfer calculations.\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"
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"
2841 AUTHORS(
"Sreerekha T.R.",
"Claudia Emde" ),
2842 OUT(
"scat_i_p",
"scat_i_lat",
"scat_i_lon" ),
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" ),
2855 GIN_DESC(
"Fail if incoming field is not safely interpolable.",
2856 "Maximum allowed ratio of two radiances regarded as interpolable." )
2861 (
NAME(
"CloudboxGetIncoming1DAtm" ),
2864 "As *CloudboxGetIncoming* but assumes clear sky part to be 1D."
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"
2871 "This method can only be used for 3D cases.\n"
2873 AUTHORS(
"Sreerekha T.R.",
"Claudia Emde" ),
2874 OUT(
"scat_i_p",
"scat_i_lat",
"scat_i_lon",
"cloudbox_on" ),
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" ),
2892 (
NAME(
"cloudboxOff" ),
2895 "Deactivates the cloud box.\n"
2897 "Use this method if no scattering calculations shall be performed.\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"
2903 AUTHORS(
"Patrick Eriksson" ),
2904 OUT(
"cloudbox_on",
"cloudbox_limits",
"iy_cloudbox_agenda",
2905 "pnd_field",
"scat_data_array",
"particle_masses"
2920 (
NAME(
"cloudboxSetAutomatically" ),
2923 "Sets the cloud box to encompass the cloud given by the entries\n"
2924 "in *massdensity_field*. \n"
2926 "The function must be called before any *cloudbox_limits* using\n"
2928 "NOTE: only 1-dim case is handeled in the moment!\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"
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"
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"
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"
2952 OUT(
"cloudbox_on",
"cloudbox_limits"),
2956 IN(
"atmosphere_dim",
"p_grid",
"lat_grid",
"lon_grid",
"massdensity_field"),
2957 GIN(
"cloudbox_margin"),
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"
2969 (
NAME(
"cloudboxSetFullAtm" ),
2972 "Sets the cloudbox to cover the full atmosphere.\n"
2974 "Can only handle *atmosphere_dim*=1 cases.\n"
2977 OUT(
"cloudbox_on",
"cloudbox_limits" ),
2981 IN(
"atmosphere_dim",
"p_grid" ),
2991 (
NAME(
"cloudboxSetManually" ),
2994 "Sets the cloud box to encompass the given positions.\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"
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"
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"
3016 AUTHORS(
"Patrick Eriksson" ),
3017 OUT(
"cloudbox_on",
"cloudbox_limits" ),
3021 IN(
"atmosphere_dim",
"p_grid",
"lat_grid",
"lon_grid" ),
3022 GIN(
"p1",
"p2",
"lat1",
"lat2",
"lon1",
3024 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric",
"Numeric",
"Numeric",
3029 "Lower pressure point.",
3030 "Lower latitude point.",
3031 "Upper latitude point.",
3032 "Lower longitude point.",
3033 "Upper longitude point." )
3038 (
NAME(
"cloudboxSetManuallyAltitude" ),
3041 "Sets the cloud box to encompass the given positions.\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"
3048 OUT(
"cloudbox_on",
"cloudbox_limits" ),
3052 IN(
"atmosphere_dim",
"z_field",
"lat_grid",
"lon_grid" ),
3053 GIN(
"z1",
"z2",
"lat1",
"lat2",
"lon1",
3055 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric",
"Numeric",
"Numeric",
3060 "Upper altitude point.",
3061 "Lower latitude point.",
3062 "Upper latitude point.",
3063 "Lower longitude point.",
3064 "Upper longitude point." )
3069 (
NAME(
"cloudbox_checkedCalc" ),
3072 "Checks consistency between cloudbox and particle variables.\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"
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"
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"
3085 "If any test fails, there is an error. Otherwise, *cloudbox_checked*\n"
3088 AUTHORS(
"Patrick Eriksson" ),
3089 OUT(
"cloudbox_checked" ),
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" ),
3106 (
NAME(
"Compare" ),
3109 "Checks the consistency between two variables.\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"
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"
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" ),
3129 GIN_DESC(
"A first variable",
"A second variable",
3130 "Threshold for maximum absolute difference.",
3131 "Additional error message."),
3141 (
NAME(
"complex_refr_indexConstant" ),
3144 "Set complex refractive index to a constant value.\n"
3146 "Frequency and temperature grids are set to have length 1 (and\n"
3147 "set to the value 0).\n"
3150 OUT(
"complex_refr_index" ),
3155 GIN(
"refr_index_real",
"refr_index_imag" ),
3158 GIN_DESC(
"Real part of refractive index",
3159 "Imag part of refractive index" )
3164 (
NAME(
"complex_refr_indexIceWarren84" ),
3167 "Refractive index of ice follwoing Warren84 parameterization.\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"
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"
3184 "Warren, S., 1984: Optical Constants of Ice from the Ultraviolet\n"
3185 "to the Microwave, Appl. Opt. 23, 1206-1225\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"
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"
3195 OUT(
"complex_refr_index" ),
3200 GIN(
"data_f_grid",
"data_T_grid" ),
3203 GIN_DESC(
"Frequency grid for refractive index calculation",
3204 "Temperature grid for refractive index calculation" )
3209 (
NAME(
"complex_refr_indexWaterLiebe93" ),
3212 "Complex refractive index of liquid water according to Liebe 1993.\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"
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"
3223 AUTHORS(
"Patrick Eriksson",
"Oliver Lemke" ),
3224 OUT(
"complex_refr_index" ),
3229 GIN(
"data_f_grid",
"data_T_grid" ),
3232 GIN_DESC(
"Frequency grid for refractive index calculation",
3233 "Temperature grid for refractive index calculation" )
3241 "Copy a workspace variable.\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"
3247 "As always, output comes first in the argument list!\n"
3251 "Copy(f_grid, p_grid)\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"
3279 "Deletes a workspace variable.\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"
3294 GIN_DESC(
"Variable to be deleted." ),
3307 "Calculation of particle size distribution (dN/dD) following\n"
3308 "a parametrization by Heymsfield (2011; unpublished).\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"
3317 "For testing purposes mainly.\n"
3323 GOUT_DESC(
"size distribution number density" ),
3328 GIN_DESC(
"Maximum dimension of the particles [m]",
3329 "Ambient atmospheric temperature [K]" )
3334 (
NAME(
"dN_Ar_H13" ),
3337 "Calculation of particle size and shape distribution (dN/dD, area\n"
3338 "ratio) following Heymsfield (2013).\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"
3347 "For testing purposes mainly.\n"
3353 GOUT_DESC(
"size distribution number density",
"area ratio distribution" ),
3358 GIN_DESC(
"Maximum dimension of the particles [m]",
3359 "Ambient atmospheric temperature [K]" )
3367 "Calculation of particle size shape distribution (dN/dR) following\n"
3368 "Hess et al. (1998).\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"
3376 "For testing purposes mainly.\n"
3382 GOUT_DESC(
"size distribution number density" ),
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]" )
3394 (
NAME(
"dN_MH97" ),
3397 "Calculation of particle size distribution (dN/dD) following\n"
3398 "McFarquahar and Heymsfield (1997) parametrization.\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"
3410 "For testing purposes mainly.\n"
3416 GOUT_DESC(
"size distribution number density" ),
3418 GIN(
"Dme",
"IWC",
"t",
"density",
"noisy" ),
3419 GIN_TYPE(
"Vector",
"Numeric",
"Numeric",
"Vector",
"Index" ),
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" )
3430 (
NAME(
"dN_F07TR" ),
3433 "Calculation of particle size distribution (dN/dD) following\n"
3434 "Field et al. (2007) for tropics parametrization.\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"
3447 GOUT_DESC(
"size distribution number density" ),
3449 GIN(
"diameter_max",
"SWC",
"t",
"alpha",
"beta" ),
3450 GIN_TYPE(
"Vector",
"Numeric",
"Numeric",
"Numeric",
"Numeric" ),
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]")
3461 (
NAME(
"dN_F07ML" ),
3464 "Calculation of particle size distribution (dN/dD) following\n"
3465 "Field et al. (2007) for mid latitude parametrization.\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"
3478 GOUT_DESC(
"size distribution number density" ),
3480 GIN(
"diameter_max",
"SWC",
"t",
"alpha",
"beta" ),
3481 GIN_TYPE(
"Vector",
"Numeric",
"Numeric",
"Numeric",
"Numeric" ),
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]")
3492 (
NAME(
"dN_MGD_LWC" ),
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"
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"
3510 GOUT_DESC(
"size distribution number density" ),
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]")
3522 (
NAME(
"dN_MGD_IWC" ),
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"
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"
3540 GOUT_DESC(
"size distribution number density" ),
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]")
3552 (
NAME(
"dN_MP48" ),
3555 "Calculation of particle size distribution (dN/dD) following\n"
3556 "Marshall and Palmer (1948) parametrization.\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"
3565 "For testing purposes mainly.\n"
3571 GOUT_DESC(
"size distribution number density" ),
3576 GIN_DESC(
"Mass equivalent sphere diameter of the particles [m]",
3577 "Precipitation rate [mm/h]" )
3582 (
NAME(
"DoitAngularGridsSet" ),
3585 "Sets the angular grids for DOIT calculation."
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"
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"
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"
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"
3606 OUT(
"doit_za_grid_size",
"scat_aa_grid",
"scat_za_grid" ),
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." )
3623 (
NAME(
"DoitCloudboxFieldPut" ),
3626 "Method for the DOIT communication between cloudbox and clearsky.\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"
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"
3637 OUT(
"scat_i_p",
"scat_i_lat",
"scat_i_lon",
3638 "doit_i_field1D_spectrum" ),
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" ),
3654 (
NAME(
"doit_conv_flagAbs" ),
3657 "DOIT convergence test (maximum absolute difference).\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"
3671 OUT(
"doit_conv_flag",
"doit_iteration_counter",
"doit_i_field" ),
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" ),
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"
3684 "Flag whether to accept result at max_iterations (0=default)"
3685 "or whether to return NaNs in case of non-convergence at"
3692 (
NAME(
"doit_conv_flagAbsBT" ),
3695 "DOIT convergence test (maximum absolute difference in Rayleigh Jeans "
3698 "As *doit_conv_flagAbs* but convergence limits are specified in\n"
3699 "Rayleigh-Jeans brighntess temperatures.\n"
3701 AUTHORS(
"Sreerekha T.R.",
"Claudia Emde" ),
3702 OUT(
"doit_conv_flag",
"doit_iteration_counter",
"doit_i_field" ),
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" ),
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"
3715 "Flag whether to accept result at max_iterations (0=default)"
3716 "or whether to return NaNs in case of non-convergence at"
3723 (
NAME(
"doit_conv_flagLsq" ),
3726 "DOIT convergence test (least squares).\n"
3728 "As *doit_conv_flagAbsBT* but applies a least squares convergence\n"
3729 "test between two successive iteration fields.\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"
3736 OUT(
"doit_conv_flag",
"doit_iteration_counter",
"doit_i_field" ),
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" ),
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"
3749 "Flag whether to accept result at max_iterations (0=default)"
3750 "or whether to return NaNs in case of non-convergence at"
3757 (
NAME(
"DoitInit" ),
3760 "Initialises variables for DOIT scattering calculations.\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"
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" ),
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" ),
3788 (
NAME(
"doit_i_fieldIterate" ),
3791 "Iterative solution of the VRTE (DOIT method).\n"
3793 "A solution for the RTE with scattering is found using the\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"
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"
3806 OUT(
"doit_i_field" ),
3810 IN(
"doit_i_field",
"doit_scat_field_agenda",
"doit_rte_agenda",
3811 "doit_conv_test_agenda" ),
3820 (
NAME(
"doit_i_fieldSetFromdoit_i_field1D_spectrum" ),
3823 "Sets the initial cloudbox intensity field from doit_i_field1D_spectrum.\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"
3835 OUT(
"doit_i_field" ),
3839 IN(
"doit_i_field1D_spectrum",
"scat_i_p",
"scat_za_grid",
3840 "f_grid",
"f_index",
3841 "atmosphere_dim",
"stokes_dim",
"cloudbox_limits" ),
3850 (
NAME(
"doit_i_fieldSetClearsky" ),
3853 "Interpolate clearsky field on all gridpoints in cloudbox.\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"
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"
3866 AUTHORS(
"Sreerekha T.R. and Claudia Emde" ),
3867 OUT(
"doit_i_field" ),
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" ),
3882 (
NAME(
"doit_i_fieldSetConst" ),
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"
3889 "The user can specify a value for each Stokes dimension in the\n"
3890 "control file by *value*.\n"
3893 OUT(
"doit_i_field" ),
3897 IN(
"scat_i_p",
"scat_i_lat",
"scat_i_lon",
"p_grid",
"lat_grid",
3899 "cloudbox_limits",
"atmosphere_dim",
"stokes_dim" ),
3903 GIN_DESC(
"A vector containing 4 elements with the value of the "
3904 "initial field for each Stokes dimension."
3910 (
NAME(
"doit_i_fieldUpdate1D" ),
3913 "RT calculation in cloudbox with fixed scattering integral (1D).\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"
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"
3924 OUT(
"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" ),
3944 (
NAME(
"doit_i_fieldUpdateSeq1D" ),
3947 "RT calculation in cloudbox with fixed scattering integral.\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"
3956 OUT(
"doit_i_field",
"doit_scat_field" ),
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" ),
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.")
3977 (
NAME(
"doit_i_fieldUpdateSeq1DPP" ),
3980 "RT calculation in cloudbox with fixed scattering integral.\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"
3992 OUT(
"doit_i_field",
"scat_za_index" ),
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" ),
4010 (
NAME(
"doit_i_fieldUpdateSeq3D" ),
4013 "RT calculation in cloudbox with fixed scattering integral.\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"
4024 OUT(
"doit_i_field" ),
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" ),
4043 (
NAME(
"doit_scat_fieldCalc" ),
4046 "Calculates the scattering integral field in the DOIT module.\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"
4052 AUTHORS(
"Sreerekha T.R.",
"Claudia Emde" ),
4053 OUT(
"doit_scat_field" ),
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" ),
4069 (
NAME(
"doit_scat_fieldCalcLimb" ),
4072 "Calculates the scattering integral field in the DOIT module (limb).\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"
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"
4087 "For more information please refer to AUG.\n"
4090 OUT(
"doit_scat_field" ),
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" ),
4106 (
NAME(
"DoitScatteringDataPrepare" ),
4109 "Prepares single scattering data for a DOIT scattering calculation.\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"
4119 OUT(
"pha_mat_sptDOITOpt",
"scat_data_array_mono" ),
4123 IN(
"doit_za_grid_size",
"scat_aa_grid",
"scat_data_array",
"f_grid",
4124 "f_index",
"atmosphere_dim",
"stokes_dim" ),
4133 (
NAME(
"DoitWriteIterationFields" ),
4136 "Writes DOIT iteration fields.\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"
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"
4154 IN(
"doit_iteration_counter",
"doit_i_field" ),
4155 GIN(
"iterations" ),
4163 (
NAME(
"doit_za_grid_optCalc" ),
4166 "Zenith angle grid optimization for scattering calculation.\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"
4178 "Note: The method works only for a 1D atmosphere and for one\n"
4182 OUT(
"doit_za_grid_opt" ),
4186 IN(
"doit_i_field",
"scat_za_grid",
"doit_za_interp" ),
4190 GIN_DESC(
"Accuracy to achieve [%]." )
4195 (
NAME(
"doit_za_interpSet" ),
4198 "Define interpolation method for zenith angle dimension.\n"
4200 "You can use this method to choose the interpolation method for\n"
4201 "interpolations in the zenith angle dimension.\n"
4204 OUT(
"doit_za_interp" ),
4208 IN(
"atmosphere_dim" ),
4209 GIN(
"interp_method" ),
4212 GIN_DESC(
"Interpolation method (\"linear\" or \"polynomial\")." )
4220 "Issues an error and exits ARTS.\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"
4227 "Ignore and other dummy method calls must still be included.\n"
4229 AUTHORS(
"Patrick Eriksson" ),
4238 GIN_DESC(
"String describing the error." )
4246 "Stops the execution and exits ARTS.\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"
4252 AUTHORS(
"Patrick Eriksson" ),
4266 (
NAME(
"Extract" ),
4269 "Extracts an element from an array.\n"
4271 "Copies the element with the given Index from the input\n"
4272 "variable to the output variable.\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"
4277 "In other words, the selection is always done on the first dimension.\n"
4282 GOUT_TYPE(
"Index, ArrayOfIndex, Numeric, Vector,"
4284 "Tensor3, Tensor4, Tensor4,"
4285 "GriddedField3, ArrayOfGriddedField3,"
4286 "GriddedField4, String, SingleScatteringData" ),
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",
4297 GIN_DESC(
"Variable to extract from.",
4298 "Position of the element which should be extracted." ),
4306 (
NAME(
"ExtractFromMetaSinglePartSpecies" ),
4309 "Extract (numeric) parameters from scat_meta_array of a single scattering\n"
4316 GOUT(
"meta_param" ),
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" ),
4323 GIN_DESC(
"Name of the meta parameter to extract.",
4324 "Array index of scattering species from which to extract." )
4329 (
NAME(
"ext_matAddGas" ),
4332 "Add gas absorption to all diagonal elements of extinction matrix.\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"
4342 IN(
"ext_mat",
"propmat_clearsky" ),
4351 (
NAME(
"ext_matAddPart" ),
4354 "The particle extinction is added to *ext_mat*\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"
4373 IN(
"ext_mat",
"ext_mat_spt",
"pnd_field",
"atmosphere_dim",
4374 "scat_p_index",
"scat_lat_index",
"scat_lon_index" ),
4383 (
NAME(
"ext_matInit" ),
4386 "Initialize extinction matrix.\n"
4388 "This method is necessary, because all other extinction methods just\n"
4389 "add to the existing extinction matrix.\n"
4391 "So, here we have to make it the right size and fill it with 0.\n"
4393 "Note, that the matrix is not really a matrix, because it has a\n"
4394 "leading frequency dimension.\n"
4401 IN(
"f_grid",
"stokes_dim",
"f_index" ),
4410 (
NAME(
"FieldFromGriddedField" ),
4413 "Extract the data from a GriddedField.\n"
4415 "A check is performed that the grids from the\n"
4416 "GriddedField match *p_grid*, *lat_grid* and *lon_grid*.\n"
4421 GOUT_TYPE(
"Matrix, Tensor3, Tensor4, Tensor4" ),
4423 IN(
"p_grid",
"lat_grid",
"lon_grid" ),
4425 GIN_TYPE(
"GriddedField2, GriddedField3, GriddedField4, ArrayOfGriddedField3" ),
4427 GIN_DESC(
"Raw input gridded field." )
4432 (
NAME(
"FlagOff" ),
4435 "Sets an index variable that acts as an on/off flag to 0.\n"
4437 AUTHORS(
"Patrick Eriksson" ),
4454 "Sets an index variable that acts as an on/off flag to 1.\n"
4456 AUTHORS(
"Patrick Eriksson" ),
4470 (
NAME(
"ForLoop" ),
4473 "A simple for-loop.\n"
4475 "This method is handy when you quickly want to test out a calculation\n"
4476 "with a set of different settings.\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"
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"
4488 "Note that this kind of for loop is not parallel.\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"
4499 IN(
"forloop_agenda" ),
4500 GIN(
"start",
"stop",
"step" ),
4501 GIN_TYPE(
"Index",
"Index",
"Index" ),
4510 (
NAME(
"FrequencyFromWavelength" ),
4513 "Convert from wavelength [m] to frequency [Hz].\n"
4515 "This is a generic method. It can take a single wavelength value or a wavelength vector as input.\n"
4531 (
NAME(
"f_gridFromGasAbsLookup" ),
4534 "Sets *f_grid* to the frequency grid of *abs_lookup*.\n"
4536 "Must be called between importing/creating raw absorption table and\n"
4537 "call of *abs_lookupAdapt*.\n"
4553 (
NAME(
"f_gridFromSensorAMSU" ),
4556 "Automatically calculate f_grid to match the sensor.\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"
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"
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"
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"
4577 "There is a similar method for HIRS-type instruments,\n"
4578 "see *f_gridFromSensorHIRS*.\n"
4580 AUTHORS(
"Stefan Buehler, Mathias Milz" ),
4585 IN(
"lo_multi",
"f_backend_multi",
"backend_channel_response_multi" ),
4589 GIN_DESC(
"Desired grid spacing in Hz." )
4595 (
NAME(
"f_gridFromSensorAMSUgeneric" ),
4598 "Automatcially calculate f_grid to match the sensor. \n"
4599 "This function is based on 'f_gridFromSensorAMSU' \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"
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.)"
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"
4619 IN(
"f_backend_multi",
"backend_channel_response_multi" ),
4620 GIN(
"spacing",
"verbosityVect"),
4623 GIN_DESC(
"Desired grid spacing in Hz.",
"Bandwidth adjusted spacing")
4628 (
NAME(
"f_gridFromSensorHIRS" ),
4631 "Automatically calculate f_grid to match the sensor.\n"
4633 "This method is handy if you are simulating a HIRS-type instrument,\n"
4634 "consisting of a few discrete channels.\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"
4640 "You have to specify the desired spacing in the keyword *spacing*, which\n"
4641 "has a default value of 5e8 Hz.\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"
4648 "There is a similar method for AMSU-type instruments, see\n"
4649 "*f_gridFromSensorAMSU*.\n"
4656 IN(
"f_backend",
"backend_channel_response" ),
4660 GIN_DESC(
"Desired grid spacing in Hz." )
4665 (
NAME(
"g0Earth" ),
4668 "Gravity at zero altitude on Earth.\n"
4670 "Sets *g0* for the given latitude using a standard parameterisation.\n"
4672 AUTHORS(
"Patrick Eriksson" ),
4686 (
NAME(
"g0Jupiter" ),
4689 "Gravity at zero altitude on Jupiter.\n"
4691 "Sets *g0* to mean equatorial gravity on Jupiter. Value provided by\n"
4692 "MPS under ESA-planetary study (TN1).\n"
4711 "Gravity at zero altitude on Mars.\n"
4713 "Sets *g0* to mean equatorial gravity on Mars. Value provided by\n"
4714 "MPS under ESA-planetary study (TN1).\n"
4730 (
NAME(
"g0Venus" ),
4733 "Gravity at zero altitude on Venus.\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"
4752 (
NAME(
"GriddedFieldLatLonExpand" ),
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"
4765 GOUT_TYPE(
"GriddedField2, GriddedField3, GriddedField4, ArrayOfGriddedField3" ),
4769 GIN_TYPE(
"GriddedField2, GriddedField3, GriddedField4, ArrayOfGriddedField3" ),
4771 GIN_DESC(
"Raw input gridded field." )
4776 (
NAME(
"GriddedFieldLatLonRegrid" ),
4779 "Interpolates the input field along the latitude and longitude dimensions\n"
4780 "to *lat_true* and *lon_true*.\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"
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",
4797 GIN_DESC(
"Raw input gridded field.",
4798 "Interpolation order." )
4803 (
NAME(
"GriddedFieldPRegrid" ),
4806 "Interpolates the input field along the pressure dimension to *p_grid*.\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"
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"
4822 GOUT_TYPE(
"GriddedField3, GriddedField4, ArrayOfGriddedField3" ),
4823 GOUT_DESC(
"Regridded gridded field." ),
4825 GIN(
"in",
"interp_order",
"zeropadding" ),
4826 GIN_TYPE(
"GriddedField3, GriddedField4, ArrayOfGriddedField3",
4830 GIN_DESC(
"Raw input gridded field.",
4831 "Interpolation order.",
4832 "Apply zero-padding." )
4837 (
NAME(
"GriddedFieldZToPRegrid" ),
4840 "Interpolates the input field along the vertical dimension to *p_grid*.\n"
4842 "This is done from z_field, and thus requires the atmosphere to be set \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"
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"),
4859 GIN_DESC(
"Raw input; Altitude-gridded field.",
4860 "Interpolation order.",
4861 "Apply zero-padding." )
4869 "Ignore a workspace variable.\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"
4875 "This method can ignore any workspace variable\n"
4880 "AgendaSet(els_agenda){\n"
4881 " Ignore(ls_sigma)\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"
4898 GIN_DESC(
"Variable to be ignored." ),
4906 (
NAME(
"INCLUDE" ),
4909 "Includes the contents of another controlfile.\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"
4919 "Note that INCLUDE is not a workspace method and thus the\n"
4920 "syntax is different:\n"
4923 " INCLUDE \"general.arts\"\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"
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"
4952 (
NAME(
"IndexSet" ),
4955 "Sets an index workspace variable to the given value.\n"
4957 AUTHORS(
"Patrick Eriksson" ),
4972 (
NAME(
"IndexStepDown" ),
4975 "Performas: out = in - 1\n"
4977 "Input and output can be same variable.\n"
4979 AUTHORS(
"Patrick Eriksson" ),
4988 GIN_DESC(
"Input index variable." )
4993 (
NAME(
"IndexStepUp" ),
4996 "Performas: out = in + 1\n"
4998 "Input and output can be same variable.\n"
5000 AUTHORS(
"Patrick Eriksson" ),
5009 GIN_DESC(
"Input index variable." )
5014 (
NAME(
"InterpAtmFieldToPosition" ),
5017 "Point interpolation of atmospheric fields.\n"
5019 "The default way to specify the position is by *rtp_pos*.\n"
5021 "Linear interpolation is applied.\n"
5023 AUTHORS(
"Patrick Eriksson" ),
5027 GOUT_DESC(
"Value obtained by the interpolation." ),
5028 IN(
"atmosphere_dim",
"p_grid",
"lat_grid",
"lon_grid",
"z_field",
5033 GIN_DESC(
"Field to interpolate." )
5038 (
NAME(
"InterpSurfaceFieldToPosition" ),
5041 "Point interpolation of surface fields.\n"
5043 "The default way to specify the position is by *rtp_pos*.\n"
5045 "Linear interpolation is applied.\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"
5054 AUTHORS(
"Patrick Eriksson" ),
5058 GOUT_DESC(
"Value obtained by interpolation." ),
5059 IN(
"atmosphere_dim",
"lat_grid",
"lon_grid",
"rtp_pos",
"z_surface" ),
5063 GIN_DESC(
"Field to interpolate." )
5068 (
NAME(
"isotopologue_ratiosInitFromBuiltin" ),
5071 "Initialize isotopologue ratios with default values from built-in\n"
5075 OUT(
"isotopologue_ratios" ),
5088 (
NAME(
"iyApplyUnit" ),
5091 "Conversion of *iy* to other spectral units.\n"
5093 "The method allows a change of unit, as a post-processing step,\n"
5094 "ignoring the n2-law of radiance.\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"
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"
5106 "Beside *iy*, these auxilary quantities are modified:\n"
5107 " \"iy\", \"Error\" and \"Error (uncorrelated)\"\n"
5109 "Please note that *diy_dx* is not handled.\n"
5111 AUTHORS(
"Patrick Eriksson" ),
5112 OUT(
"iy",
"iy_aux" ),
5116 IN(
"iy",
"iy_aux",
"stokes_dim",
"f_grid",
"iy_aux_vars",
"iy_unit" ),
5129 "A single monochromatic pencil beam calculation.\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"
5135 "Please note that Jacobian type calculations not are supported.\n"
5136 "For this use *yCalc*.\n"
5138 "No sensor characteristics are applied. These are most easily\n"
5139 "incorporated by using *yCalc*\n"
5141 AUTHORS(
"Patrick Eriksson" ),
5142 OUT(
"iy",
"iy_aux",
"ppath" ),
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" ),
5158 (
NAME(
"iyCloudRadar" ),
5161 "Simulation of cloud radars, restricted to single scattering.\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"
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"
5173 "The method can be used with *iyCalc*, but not with *yCalc*. In the\n"
5174 "later case, use instead *yCloudRadar*.\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"
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"
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"
5197 "No Jacobian quantities are yet handled.\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"
5218 AUTHORS(
"Patrick Eriksson" ),
5219 OUT(
"iy",
"iy_aux",
"ppath" ),
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" ),
5236 GIN_DESC(
"Reference temperature for conversion to Ze" )
5241 (
NAME(
"iyEmissionStandard" ),
5244 "Standard method for radiative transfer calculations with emission.\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"
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"
5260 " \"1\" : No conversion.\n"
5261 " \"RJBT\" : Conversion to Rayleigh-Jean brightness\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"
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"
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"
5304 " nf: Number of frequencies.\n"
5305 " ns: Number of Stokes elements.\n"
5306 " np: Number of propagation path points.\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"
5313 "In addition, these choices are accepted but no calculations are\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"
5321 AUTHORS(
"Patrick Eriksson" ),
5322 OUT(
"iy",
"iy_aux",
"ppath",
"diy_dx" ),
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" ),
5348 "Method in development. Don't use without contacting Patrick.\n"
5350 "Regarding radiance unit, works exactly as *iyEmissionStandard*.\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"
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"
5389 " nf: Number of frequencies.\n"
5390 " ns: Number of Stokes elements.\n"
5391 " np: Number of propagation path points.\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"
5398 AUTHORS(
"Patrick Eriksson" ),
5399 OUT(
"iy",
"iy_aux",
"ppath",
"diy_dx" ),
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"
5415 GIN(
"fos_za_interporder",
"fos_n" ),
5418 GIN_DESC(
"Polynomial order for zenith angle interpolation.",
5419 "Max scattering order to consider." )
5427 "Interface to Monte Carlo part for *iy_main_agenda*.\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"
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"
5440 "Output unit options (*iy_unit*) exactly as for *MCGeneral*.\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"
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"
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"
5458 " nf: Number of frequencies.\n"
5459 " ns: Number of Stokes elements.\n"
5461 AUTHORS(
"Patrick Eriksson" ),
5462 OUT(
"iy",
"iy_aux",
"diy_dx" ),
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",
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" ),
5483 (
NAME(
"iyInterpCloudboxField" ),
5486 "Interpolates the intensity field of the cloud box.\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"
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"
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"
5499 "Interpolation of the internal field is not yet possible.\n"
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" ),
5514 GIN_DESC(
"Fail if cloudbox field is not safely interpolable.",
5515 "Maximum allowed ratio of two radiances regarded as interpolable." )
5520 (
NAME(
"iyInterpPolyCloudboxField" ),
5523 "As *iyInterpCloudboxField* but performs cubic interpolation.\n"
5525 "Works so far only for 1D cases, and accordingly a cubic\n"
5526 "interpolation along *scat_za_grid* is performed.\n"
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" ),
5546 (
NAME(
"iyLoopFrequencies" ),
5549 "Radiative transfer calculations one frequency at the time.\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"
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"
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"
5564 AUTHORS(
"Patrick Eriksson" ),
5565 OUT(
"iy",
"iy_aux",
"ppath",
"diy_dx" ),
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" ),
5580 (
NAME(
"iyRadioLink" ),
5583 "Radiative transfer for (active) radio links.\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"
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"
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"
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"
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"
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"
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"
5660 " nf: Number of frequencies.\n"
5661 " ns: Number of Stokes elements.\n"
5662 " np: Number of propagation path points.\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"
5669 AUTHORS(
"Patrick Eriksson" ),
5670 OUT(
"iy",
"iy_aux",
"ppath",
"diy_dx" ),
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" ),
5689 GIN_DESC(
"Selection of defocusing calculation method. See above.",
5690 "Angular shift to apply in defocusing estimates." )
5695 (
NAME(
"iyReplaceFromAux" ),
5698 "Change of main output variable.\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"
5707 "Jacobian variables are not handled.\n"
5709 AUTHORS(
"Patrick Eriksson" ),
5714 IN(
"iy",
"iy_aux",
"iy_aux_vars",
"jacobian_do" ),
5718 GIN_DESC(
"Auxiliary variable to insert as *iy*." )
5723 (
NAME(
"iySurfaceRtpropAgenda" ),
5726 "Interface to *surface_rtprop_agenda* for *iy_surface_agenda*.\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"
5735 AUTHORS(
"Patrick Eriksson" ),
5736 OUT(
"iy",
"diy_dx" ),
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"
5753 (
NAME(
"iyTransmissionStandard" ),
5756 "Standard method for handling (direct) transmission measurements.\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"
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"
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"
5806 " nf: Number of frequencies.\n"
5807 " ns: Number of Stokes elements.\n"
5808 " np: Number of propagation path points.\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"
5815 AUTHORS(
"Patrick Eriksson" ),
5816 OUT(
"iy",
"iy_aux",
"ppath",
"diy_dx" ),
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" ),
5839 (
NAME(
"iy_auxFillParticleVariables" ),
5842 "Additional treatment some particle auxiliary variables.\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"
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"
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"
5861 AUTHORS(
"Patrick Eriksson" ),
5866 IN(
"iy_aux",
"atmfields_checked",
"cloudbox_checked",
5867 "atmosphere_dim",
"cloudbox_on",
"cloudbox_limits",
"pnd_field",
5868 "particle_masses",
"ppath",
"iy_aux_vars" ),
5877 (
NAME(
"iy_transmitterMultiplePol" ),
5880 "Transmitter definition handling multiple polarisations.\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"
5888 AUTHORS(
"Patrick Eriksson" ),
5893 IN(
"stokes_dim",
"f_grid",
"sensor_pol" ),
5902 (
NAME(
"iy_transmitterSinglePol" ),
5905 "Transmitter definition involving a single polarisation.\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"
5914 AUTHORS(
"Patrick Eriksson" ),
5919 IN(
"stokes_dim",
"f_grid",
"sensor_pol" ),
5928 (
NAME(
"jacobianAddAbsSpecies" ),
5931 "Includes an absorption species in the Jacobian.\n"
5933 "Details are given in the user guide.\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"
5938 "There are two possible calculation methods:\n"
5939 " \"analytical\" : (semi-)analytical expressions are used\n"
5940 " \"perturbation\" : pure numerical perturbations are used\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"
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"
5953 AUTHORS(
"Mattias Ekstrom",
"Patrick Eriksson" ),
5954 OUT(
"jacobian_quantities",
"jacobian_agenda" ),
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",
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."
5980 (
NAME(
"jacobianAddFreqShift" ),
5983 "Includes a frequency for of shift type in the Jacobian.\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"
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"
5996 AUTHORS(
"Patrick Eriksson" ),
5997 OUT(
"jacobian_quantities",
"jacobian_agenda" ),
6001 IN(
"jacobian_quantities",
"jacobian_agenda",
"f_grid",
"sensor_pos",
6003 GIN(
"poly_order",
"df" ),
6006 GIN_DESC(
"Order of polynomial to describe the time variation of "
6008 "Size of perturbation to apply."
6014 (
NAME(
"jacobianAddFreqStretch" ),
6017 "Includes a frequency for of stretch type in the Jacobian.\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"
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"
6030 AUTHORS(
"Patrick Eriksson" ),
6031 OUT(
"jacobian_quantities",
"jacobian_agenda" ),
6035 IN(
"jacobian_quantities",
"jacobian_agenda",
"f_grid",
"sensor_pos",
6037 GIN(
"poly_order",
"df" ),
6040 GIN_DESC(
"Order of polynomial to describe the time variation of "
6041 "frequency stretch.",
6042 "Size of perturbation to apply."
6089 (
NAME(
"jacobianAddPointingZa" ),
6092 "Adds sensor pointing zenith angle off-set jacobian.\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."
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"
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"
6117 AUTHORS(
"Patrick Eriksson",
"Mattias Ekstrom" ),
6118 OUT(
"jacobian_quantities",
"jacobian_agenda" ),
6122 IN(
"jacobian_quantities",
"jacobian_agenda",
"sensor_pos",
6124 GIN(
"poly_order",
"calcmode",
"dza" ),
6125 GIN_TYPE(
"Index",
"String",
"Numeric" ),
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)."
6136 (
NAME(
"jacobianAddPolyfit" ),
6139 "Includes polynomial baseline fit in the Jacobian.\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"
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"
6151 AUTHORS(
"Patrick Eriksson" ),
6152 OUT(
"jacobian_quantities",
"jacobian_agenda" ),
6156 IN(
"jacobian_quantities",
"jacobian_agenda",
6157 "sensor_response_pol_grid",
"sensor_response_za_grid",
6159 GIN(
"poly_order",
"no_pol_variation",
"no_los_variation",
6160 "no_mblock_variation" ),
6161 GIN_TYPE(
"Index",
"Index",
"Index",
"Index" ),
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."
6175 (
NAME(
"jacobianAddSinefit" ),
6178 "Includes sinusoidal baseline fit in the Jacobian.\n"
6180 "Works as *jacobianAddPolyFit*, beside that a series of sine and\n"
6181 "cosine terms are used for the baseline fit.\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"
6188 AUTHORS(
"Patrick Eriksson" ),
6189 OUT(
"jacobian_quantities",
"jacobian_agenda" ),
6193 IN(
"jacobian_quantities",
"jacobian_agenda",
6194 "sensor_response_pol_grid",
"sensor_response_za_grid",
6196 GIN(
"period_lengths",
"no_pol_variation",
"no_los_variation",
6197 "no_mblock_variation" ),
6198 GIN_TYPE(
"Vector",
"Index",
"Index",
"Index" ),
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."
6212 (
NAME(
"jacobianAddTemperature" ),
6215 "Includes atmospheric temperatures in the Jacobian.\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"
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"
6231 "The choices for *method* are:\n"
6232 " \"analytical\" : (semi-)analytical expressions are used\n"
6233 " \"perturbation\" : pure numerical perturbations are used\n"
6235 AUTHORS(
"Mattias Ekstrom",
"Patrick Eriksson" ),
6236 OUT(
"jacobian_quantities",
"jacobian_agenda" ),
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" ),
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]."
6256 (
NAME(
"jacobianAddWind" ),
6259 "Includes one atmospheric wind component in the Jacobian.\n"
6261 "The method follows the pattern of other Jacobian methods. The\n"
6262 "calculations can only be performed by analytic expressions.\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"
6268 AUTHORS(
"Patrick Eriksson" ),
6269 OUT(
"jacobian_quantities",
"jacobian_agenda" ),
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" ),
6278 GIN_DESC(
"Pressure retrieval grid.",
6279 "Latitude retrieval grid.",
6280 "Longitude retreival grid.",
6281 "Wind component to retrieve"
6287 (
NAME(
"jacobianCalcAbsSpeciesAnalytical" ),
6290 "This function doesn't do anything. It just exists to satisfy\n"
6291 "the input and output requirement of the *jacobian_agenda*.\n"
6293 "This function is added to *jacobian_agenda* by\n"
6294 "jacobianAddAbsSpecies and should normally not be called\n"
6303 "mblock_index",
"iyb",
"yb" ),
6312 (
NAME(
"jacobianCalcAbsSpeciesPerturbations" ),
6315 "Calculates absorption species jacobians by perturbations.\n"
6317 "This function is added to *jacobian_agenda* by\n"
6318 "jacobianAddAbsSpecies and should normally not be called\n"
6321 AUTHORS(
"Mattias Ekstrom",
"Patrick Eriksson" ),
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" ),
6336 GIN_DESC(
"Species of interest." ),
6342 (
NAME(
"jacobianCalcFreqShift" ),
6345 "Calculates frequency shift jacobians by interpolation\n"
6348 "This function is added to *jacobian_agenda* by jacobianAddFreqShift\n"
6349 "and should normally not be called by the user.\n"
6351 AUTHORS(
"Patrick Eriksson" ),
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" ),
6369 (
NAME(
"jacobianCalcFreqStretch" ),
6372 "Calculates frequency stretch jacobians by interpolation\n"
6375 "This function is added to *jacobian_agenda* by jacobianAddFreqStretch\n"
6376 "and should normally not be called by the user.\n"
6378 AUTHORS(
"Patrick Eriksson" ),
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" ),
6431 (
NAME(
"jacobianCalcPointingZaInterp" ),
6434 "Calculates zenith angle pointing deviation jacobians by\n"
6435 "inter-extrapolation of *iyb*.\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"
6441 AUTHORS(
"Patrick Eriksson" ),
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" ),
6458 (
NAME(
"jacobianCalcPointingZaRecalc" ),
6461 "Calculates zenith angle pointing deviation jacobians by\n"
6462 "recalulation of *iyb*.\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"
6468 AUTHORS(
"Mattias Ekstrom",
"Patrick Eriksson" ),
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" ),
6488 (
NAME(
"jacobianCalcPolyfit" ),
6491 "Calculates jacobians for polynomial baseline fit.\n"
6493 "This function is added to *jacobian_agenda* by jacobianAddPolyfit\n"
6494 "and should normally not be called by the user.\n"
6496 AUTHORS(
"Patrick Eriksson" ),
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" ),
6508 GIN_DESC(
"Polynomial coefficient to handle." ),
6514 (
NAME(
"jacobianCalcSinefit" ),
6517 "Calculates jacobians for sinusoidal baseline fit.\n"
6519 "This function is added to *jacobian_agenda* by jacobianAddPolyfit\n"
6520 "and should normally not be called by the user.\n"
6522 AUTHORS(
"Patrick Eriksson" ),
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" ),
6534 GIN_DESC(
"Index among the period length specified for add-method." ),
6540 (
NAME(
"jacobianCalcTemperatureAnalytical" ),
6543 "This function doesn't do anything. It just exists to satisfy\n"
6544 "the input and output requirement of the *jacobian_agenda*.\n"
6546 "This function is added to *jacobian_agenda* by\n"
6547 "jacobianAddTemperature and should normally not be called\n"
6556 "mblock_index",
"iyb",
"yb" ),
6565 (
NAME(
"jacobianCalcTemperaturePerturbations" ),
6568 "Calculates atmospheric temperature jacobians by perturbations.\n"
6570 "This function is added to *jacobian_agenda* by\n"
6571 "jacobianAddTemperature and should normally not be called\n"
6574 AUTHORS(
"Mattias Ekstrom",
"Patrick Eriksson" ),
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" ),
6596 (
NAME(
"jacobianCalcWindAnalytical" ),
6599 "This function doesn't do anything. It just exists to satisfy\n"
6600 "the input and output requirement of the *jacobian_agenda*.\n"
6602 "This function is added to *jacobian_agenda* by\n"
6603 "jacobianAddWind and should normally not be called\n"
6612 "mblock_index",
"iyb",
"yb" ),
6621 (
NAME(
"jacobianClose" ),
6624 "Closes the array of retrieval quantities and prepares for\n"
6625 "calculation of the Jacobian matrix.\n"
6627 "This function closes the *jacobian_quantities* array, sets the\n"
6628 "correct size of *jacobian* and sets *jacobian_do* to 1.\n"
6630 "Retrieval quantities should not be added after a call to this WSM.\n"
6631 "No calculations are performed here.\n"
6634 OUT(
"jacobian_do",
"jacobian_indices",
"jacobian_agenda" ),
6638 IN(
"jacobian_agenda",
"jacobian_quantities",
"sensor_pos",
"sensor_response" ),
6647 (
NAME(
"jacobianInit" ),
6650 "Initialises the variables connected to the Jacobian matrix.\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"
6657 "The Jacobian quantities are initialised to be empty.\n"
6660 OUT(
"jacobian_quantities",
"jacobian_indices",
"jacobian_agenda" ),
6673 (
NAME(
"jacobianOff" ),
6676 "Makes mandatory initialisation of some jacobian variables.\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"
6683 AUTHORS(
"Patrick Eriksson" ),
6684 OUT(
"jacobian_do",
"jacobian_agenda",
"jacobian_quantities",
6685 "jacobian_indices" ),
6698 (
NAME(
"lat_gridFromRawField" ),
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"
6714 GIN_DESC(
"A raw atmospheric field." )
6719 (
NAME(
"lon_gridFromRawField" ),
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"
6735 GIN_DESC(
"A raw atmospheric field." )
6740 (
NAME(
"line_mixing_dataInit" ),
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"
6747 OUT(
"line_mixing_data",
"line_mixing_data_lut" ),
6751 IN(
"abs_species" ),
6760 (
NAME(
"line_mixing_dataMatch" ),
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"
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"
6774 OUT(
"line_mixing_data",
"line_mixing_data_lut" ),
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" ),
6783 GIN_DESC(
"Species tag",
"Unmatched line mixing data.")
6788 (
NAME(
"Massdensity_cleanup" ),
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"
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"
6797 "*Massdensity_cleanup* is called after generation of atmopheric fields.\n"
6799 "*Default value*:\t1e-15\n"
6802 OUT(
"massdensity_field" ),
6806 IN(
"massdensity_field" ),
6807 GIN(
"massdensity_threshold" ),
6810 GIN_DESC(
"Values in *massdensity_field* smaller than *massdensity_threshold* will be set to zero." )
6815 (
NAME(
"MatrixAddScalar" ),
6818 "Adds a scalar to all elements of a matrix.\n"
6820 "The result can either be stored in the same or another matrix.\n"
6822 AUTHORS(
"Patrick Eriksson" ),
6828 GIN(
"in" ,
"value" ),
6831 GIN_DESC(
"Input matrix.",
"The value to be added to the matrix." )
6836 (
NAME(
"MatrixCBR" ),
6839 "Sets a matrix to hold cosmic background radiation (CBR).\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"
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"
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"
6855 AUTHORS(
"Patrick Eriksson" ),
6869 (
NAME(
"MatrixExtractFromTensor3" ),
6872 "Extracts a Matrix from a Tensor3.\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"
6884 GIN(
"in" ,
"i" ,
"direction" ),
6885 GIN_TYPE(
"Tensor3",
"Index",
"String" ),
6888 "Index of page or row or column to extract.",
6889 "Direction. \"page\" or \"row\" or \"column\"."
6895 (
NAME(
"MatrixMatrixMultiply" ),
6898 "Multiply a Matrix with another Matrix and store the result in the result\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"
6909 GOUT_DESC(
"The result of the multiplication (dimension mxc)." ),
6914 GIN_DESC(
"The Matrix to multiply (dimension mxn).",
6915 "The original Matrix (dimension nxc)." )
6920 (
NAME(
"MatrixPlanck" ),
6923 "Sets a matrix to hold blackbody radiation.\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"
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"
6934 AUTHORS(
"Patrick Eriksson" ),
6944 "Temperature [K]." )
6949 (
NAME(
"MatrixScale" ),
6952 "Scales all elements of a matrix with the specified value.\n"
6954 "The result can either be stored in the same or another\n"
6957 AUTHORS(
"Patrick Eriksson" ),
6963 GIN(
"in" ,
"value" ),
6967 "The value to be multiplied with the matrix."
6973 (
NAME(
"MatrixSet" ),
6976 "Initialize a Matrix from the given list of numbers.\n"
6979 " MatrixSet(m1, [1, 2, 3; 4, 5, 6])\n"
6985 GOUT_DESC(
"The newly created matrix" ),
6990 GIN_DESC(
"The values of the newly created matrix. Elements are separated "
6991 "by commas, rows by semicolons."),
6997 (
NAME(
"MatrixSetConstant" ),
7000 "Creates a matrix and sets all elements to the specified value.\n"
7002 "The size is determined by *ncols* and *nrows*.\n"
7004 AUTHORS(
"Patrick Eriksson" ),
7009 IN(
"nrows",
"ncols" ),
7018 (
NAME(
"MatrixUnitIntensity" ),
7021 "Sets a matrix to hold unpolarised radiation with unit intensity.\n"
7023 "Works as MatrixPlanck where the radiation is set to 1.\n"
7025 AUTHORS(
"Patrick Eriksson" ),
7039 (
NAME(
"Matrix1ColFromVector" ),
7042 "Forms a matrix containing one column from a vector.\n"
7053 GIN_DESC(
"The vector to be copied." )
7058 (
NAME(
"Matrix2ColFromVectors" ),
7061 "Forms a matrix containing two columns from two vectors.\n"
7063 "The vectors are included as columns in the matrix in the same order\n"
7064 "as they are given.\n"
7075 GIN_DESC(
"The vector to be copied into the first column.",
7076 "The vector to be copied into the second column."
7082 (
NAME(
"Matrix3ColFromVectors" ),
7085 "Forms a matrix containing three columns from three vectors.\n"
7087 "The vectors are included as columns in the matrix in the same order\n"
7088 "as they are given.\n"
7096 GIN(
"v1" ,
"v2" ,
"v3" ),
7097 GIN_TYPE(
"Vector",
"Vector",
"Vector" ),
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."
7107 (
NAME(
"Matrix1RowFromVector" ),
7110 "Forms a matrix containing one row from a vector.\n"
7121 GIN_DESC(
"The vector to be copied." )
7126 (
NAME(
"Matrix2RowFromVectors" ),
7129 "Forms a matrix containing two rows from two vectors.\n"
7131 "The vectors are included as rows in the matrix in the same order\n"
7132 "as they are given.\n"
7143 GIN_DESC(
"The vector to be copied into the first row.",
7144 "The vector to be copied into the second row."
7150 (
NAME(
"Matrix3RowFromVectors" ),
7153 "Forms a matrix containing three rows from three vectors.\n"
7155 "The vectors are included as rows in the matrix in the same order\n"
7156 "as they are given.\n"
7164 GIN(
"v1" ,
"v2" ,
"v3" ),
7165 GIN_TYPE(
"Vector",
"Vector",
"Vector" ),
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."
7175 (
NAME(
"mc_antennaSetGaussian" ),
7178 "Makes mc_antenna (used by MCGeneral) a 2D Gaussian pattern.\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"
7185 OUT(
"mc_antenna" ),
7190 GIN(
"za_sigma",
"aa_sigma" ),
7193 GIN_DESC(
"Width in the zenith angle dimension as described above.",
7194 "Width in the azimuth angle dimension as described above."
7200 (
NAME(
"mc_antennaSetGaussianByFWHM" ),
7203 "Makes mc_antenna (used by MCGeneral) a 2D Gaussian pattern.\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"
7210 OUT(
"mc_antenna" ),
7215 GIN(
"za_fwhm",
"aa_fwhm" ),
7218 GIN_DESC(
"Width in the zenith angle dimension as described above.",
7219 "Width in the azimuth angle dimension as described above."
7225 (
NAME(
"mc_antennaSetPencilBeam" ),
7228 "Makes mc_antenna (used by MCGeneral) a pencil beam.\n"
7230 "This WSM makes the subsequent MCGeneral WSM perform pencil beam\n"
7231 "RT calculations.\n"
7234 OUT(
"mc_antenna" ),
7247 (
NAME(
"MCGeneral" ),
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"
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"
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"
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"
7269 "Negative values of *mc_seed* seed the random number generator\n"
7270 "according to system time, positive *mc_seed* values are taken\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"
7278 OUT(
"y",
"mc_iteration_count",
"mc_error",
"mc_points" ),
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" ),
7300 (
NAME(
"MCSetSeedFromTime" ),
7302 (
"Sets the value of mc_seed from system time\n" ),
7317 (
NAME(
"NumericAdd" ),
7320 "Adds a numeric and a value (out = in+value).\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"
7325 AUTHORS(
"Patrick Eriksson" ),
7343 (
NAME(
"NumericInvScale" ),
7346 "Inversely scales/divides a numeric with a value (out = in/value).\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"
7369 (
NAME(
"NumericScale" ),
7372 "Scales/multiplies a numeric with a value (out = in*value).\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"
7377 AUTHORS(
"Patrick Eriksson" ),
7395 (
NAME(
"NumericSet" ),
7398 "Sets a numeric workspace variable to the given value.\n"
7400 AUTHORS(
"Patrick Eriksson" ),
7415 (
NAME(
"nelemGet" ),
7418 "Retrieve nelem from given variable and store the value in the\n"
7419 "variable *nelem*.\n"
7428 GIN_TYPE( ARRAY_GROUPS +
", Vector" ),
7430 GIN_DESC(
"Variable to get the number of elements from." ),
7438 (
NAME(
"ncolsGet" ),
7441 "Retrieve ncols from given variable and store the value in the\n"
7442 "workspace variable *ncols*\n"
7451 GIN_TYPE(
"Matrix, Sparse, Tensor3, Tensor4, Tensor5, Tensor6, Tensor7" ),
7453 GIN_DESC(
"Variable to get the number of columns from." ),
7461 (
NAME(
"nrowsGet" ),
7464 "Retrieve nrows from given variable and store the value in the\n"
7465 "workspace variable *nrows*\n"
7474 GIN_TYPE(
"Matrix, Sparse, Tensor3, Tensor4, Tensor5, Tensor6, Tensor7" ),
7476 GIN_DESC(
"Variable to get the number of rows from." ),
7484 (
NAME(
"npagesGet" ),
7487 "Retrieve npages from given variable and store the value in the\n"
7488 "workspace variable *npages*\n"
7497 GIN_TYPE(
"Tensor3, Tensor4, Tensor5, Tensor6, Tensor7" ),
7499 GIN_DESC(
"Variable to get the number of pages from." ),
7507 (
NAME(
"nbooksGet" ),
7510 "Retrieve nbooks from given variable and store the value in the\n"
7511 "workspace variable *nbooks*\n"
7520 GIN_TYPE(
"Tensor4, Tensor5, Tensor6, Tensor7" ),
7522 GIN_DESC(
"Variable to get the number of books from." ),
7530 (
NAME(
"nshelvesGet" ),
7533 "Retrieve nshelves from given variable and store the value in the\n"
7534 "workspace variable *nshelves*\n"
7543 GIN_TYPE(
"Tensor5, Tensor6, Tensor7" ),
7545 GIN_DESC(
"Variable to get the number of shelves from." ),
7553 (
NAME(
"nvitrinesGet" ),
7556 "Retrieve nvitrines from given variable and store the value in the\n"
7557 "workspace variable *nvitrines*\n"
7568 GIN_DESC(
"Variable to get the number of vitrines from." ),
7576 (
NAME(
"nlibrariesGet" ),
7579 "Retrieve nlibraries from given variable and store the value in the\n"
7580 "workspace variable *nlibraries*\n"
7583 OUT(
"nlibraries" ),
7591 GIN_DESC(
"Variable to get the number of libraries from." ),
7599 (
NAME(
"opt_prop_sptFromData" ),
7602 "Calculates opticle properties for the single particle types.\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"
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"
7615 OUT(
"ext_mat_spt",
"abs_vec_spt" ),
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" ),
7631 (
NAME(
"opt_prop_sptFromMonoData" ),
7634 "Calculates optical properties for the single particle types.\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"
7641 OUT(
"ext_mat_spt",
"abs_vec_spt" ),
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" ),
7656 (
NAME(
"output_file_formatSetAscii" ),
7659 "Sets the output file format to ASCII.\n"
7662 OUT(
"output_file_format" ),
7675 (
NAME(
"output_file_formatSetBinary" ),
7678 "Sets the output file format to binary.\n"
7681 OUT(
"output_file_format" ),
7694 (
NAME(
"output_file_formatSetZippedAscii" ),
7697 "Sets the output file format to zipped ASCII.\n"
7700 OUT(
"output_file_format" ),
7713 (
NAME(
"particle_massesFromMetaDataSingleCategory" ),
7716 "Sets *particle_masses* based on *scat_meta_array* assuming\n"
7717 "all particles are of the same mass category.\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"
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"
7732 AUTHORS(
"Jana Mendrok",
"Patrick Eriksson" ),
7733 OUT(
"particle_masses" ),
7737 IN(
"scat_meta_array" ),
7746 (
NAME(
"particle_massesFromMetaDataAndPart_species" ),
7749 "Derives *particle_masses* from *scat_meta_array*.\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"
7762 OUT(
"particle_masses" ),
7766 IN(
"scat_meta_array",
"scat_data_per_part_species",
"part_species" ),
7775 (
NAME(
"ParticleSpeciesInit" ),
7778 "Initializes empty *part_species* array.\n"
7781 OUT(
"part_species" ),
7794 (
NAME(
"ParticleSpeciesSet" ),
7797 "Sets the WSV *part_species*."
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"
7804 "*Example:* \t ['IWC-MH97-Ice-0.1-200', 'LWC-H98_STCO-Water-0.1-50'] \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"
7811 OUT(
"part_species" ),
7816 GIN(
"particle_tags",
"delim" ),
7817 GIN_TYPE(
"ArrayOfString",
"String" ),
7819 GIN_DESC(
"Array of pnd calculation parameters.",
7820 "Delimiter string of *part_species* elements." )
7826 (
NAME(
"ParticleTypeAdd" ),
7829 "Reads single scattering data and corresonding particle number\n"
7832 "The methods reads the specified files and appends the obtained data\n"
7833 "to *scat_data_array* and *pnd_field_raw*.\n"
7836 OUT(
"scat_data_array",
"pnd_field_raw" ),
7840 IN(
"atmosphere_dim",
"f_grid" ),
7841 GIN(
"filename_scat_data",
"filename_pnd_field" ),
7844 GIN_DESC(
"Name of single scattering data file.",
7845 "Name of the corresponding pnd_field file."
7852 (
NAME(
"ParticleTypeAddAll" ),
7855 "Reads single scattering data and particle number densities.\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"
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"
7870 OUT(
"scat_data_array",
"pnd_field_raw" ),
7874 IN(
"atmosphere_dim",
"f_grid" ),
7875 GIN(
"filelist_scat_data",
"filename_pnd_fieldarray" ),
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."
7886 (
NAME(
"ParticleTypeInit" ),
7889 "Initializes *scat_data_array* and *pnd_field_raw*.\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"
7895 "This method has to be executed before executing e.g.\n"
7896 "*ParticleTypeAdd*.\n"
7899 OUT(
"scat_data_array",
"pnd_field_raw" ),
7913 (
NAME(
"ParticleType2abs_speciesAdd" ),
7916 "Appends an instance of species 'particles' to *abs_species* including\n"
7917 "reading single scattering data and corresponding pnd field.\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"
7925 OUT(
"scat_data_array",
"vmr_field_raw",
"abs_species",
7926 "propmat_clearsky_agenda_checked",
"abs_xsec_agenda_checked" ),
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" ),
7936 GIN_DESC(
"Name of single scattering data file.",
7937 "Name of the corresponding pnd_field file."
7944 (
NAME(
"pha_matCalc" ),
7947 "This function sums up the phase matrices for all particle\n"
7948 "types weighted with particle number density.\n"
7955 IN(
"pha_mat_spt",
"pnd_field",
"atmosphere_dim",
"scat_p_index",
7956 "scat_lat_index",
"scat_lon_index" ),
7965 (
NAME(
"pha_mat_sptFromData" ),
7968 "Calculation of the phase matrix for the single particle types.\n"
7970 "This function can be used in *pha_mat_spt_agenda* as part of\n"
7971 "the calculation of the scattering integral.\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"
7978 OUT(
"pha_mat_spt" ),
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",
7994 (
NAME(
"pha_mat_sptFromMonoData" ),
7997 "Calculation of the phase matrix for the single particle types.\n"
7999 "This function is the monochromatic version of *pha_mat_sptFromData*.\n"
8002 OUT(
"pha_mat_spt" ),
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" ),
8017 (
NAME(
"pha_mat_sptFromDataDOITOpt" ),
8020 "Calculation of the phase matrix for the single particle types.\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"
8028 OUT(
"pha_mat_spt" ),
8032 IN(
"pha_mat_spt",
"pha_mat_sptDOITOpt",
"scat_data_array_mono",
8033 "doit_za_grid_size",
8035 "scat_za_index",
"scat_aa_index",
"rtp_temperature",
8036 "pnd_field",
"scat_p_index",
"scat_lat_index",
"scat_lon_index" ),
8045 (
NAME(
"pnd_fieldCalc" ),
8047 (
"Interpolation of particle number density fields to calculation grid\n"
8048 "inside cloudbox.\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"
8059 AUTHORS(
"Sreerekha T.R.",
"Claudia Emde",
"Oliver Lemke" ),
8064 IN(
"p_grid",
"lat_grid",
"lon_grid",
"pnd_field_raw",
"atmosphere_dim",
8065 "cloudbox_limits" ),
8066 GIN(
"zeropadding" ),
8069 GIN_DESC(
"Allow zeropadding of pnd_field." )
8074 (
NAME(
"pnd_fieldExpand1D" ),
8077 "Maps a 1D pnd_field to a (homogeneous) 2D or 3D pnd_field.\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"
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"
8092 "See further *AtmFieldsExpand1D*.\n"
8094 AUTHORS(
"Patrick Eriksson" ),
8099 IN(
"pnd_field",
"atmosphere_dim",
8100 "cloudbox_on",
"cloudbox_limits" ),
8104 GIN_DESC(
"Number of zero values inside lat and lon limits." )
8109 (
NAME(
"pnd_fieldSetup" ),
8112 "Calculation of *pnd_field* using ScatteringMetaData and *massdensity_field*.\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"
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)"
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"
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"
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"
8149 "NOTE: the order of scattering particle profiles in *massdensity_field* has to\n"
8150 "fit the order of part_species tags!\n"
8157 IN(
"atmosphere_dim",
"cloudbox_on",
"cloudbox_limits",
8158 "massdensity_field",
"t_field",
"scat_meta_array",
8159 "part_species",
"scat_data_per_part_species" ),
8163 GIN_DESC(
"Delimiter string of *part_species* elements" )
8168 (
NAME(
"pnd_fieldZero" ),
8171 "Sets *pnd_field* to hold only zeros.\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"
8182 OUT(
"pnd_field",
"scat_data_array" ),
8186 IN(
"p_grid",
"lat_grid",
"lon_grid" ),
8195 (
NAME(
"pndFromdN" ),
8198 "Calculates pnds from given dN.\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"
8208 GOUT_DESC(
"The pnd vector (pnd as function of particle size)" ),
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)." )
8227 (
NAME(
"ppathCalc" ),
8230 "Stand-alone calculation of propagation paths.\n"
8232 "Beside a few checks of input data, the only operation of this\n"
8233 "method is to execute *ppath_agenda*.\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"
8241 AUTHORS(
"Patrick Eriksson" ),
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" ),
8258 (
NAME(
"ppathFromRtePos2" ),
8261 "Determines the propagation path from *rte_pos2* to *rte_pos*.\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"
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"
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"
8276 "The details of the ray tracing is controlled by *ppath_step_agenda*\n"
8279 AUTHORS(
"Patrick Eriksson" ),
8280 OUT(
"ppath",
"rte_los",
"ppath_lraytrace" ),
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" ),
8292 "Required accuracy, in form of the maximum allowed angular "
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.")
8302 (
NAME(
"ppathStepByStep" ),
8305 "Standard method for calculation of propagation paths.\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"
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"
8315 "This method should never be called directly. Use *ppathCalc* instead\n"
8316 "if you want to extract propagation paths.\n"
8318 AUTHORS(
"Patrick Eriksson" ),
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" ),
8336 (
NAME(
"ppathWriteXMLPartial" ),
8339 "WSM to only write a reduced Ppath, omitting grid positions.\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"
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"
8349 "This means that *filename* shall here not include the .xml\n"
8350 "extension. Omitting filename works as for *WriteXML*.\n"
8357 IN(
"output_file_format",
"ppath" ),
8358 GIN(
"filename",
"file_index" ),
8362 "Optional file index to append to filename."
8368 (
NAME(
"ppath_stepGeometric" ),
8371 "Calculates a geometrical propagation path step.\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"
8382 "For further information, type see the on-line information for\n"
8383 "*ppath_step_agenda*.\n"
8385 AUTHORS(
"Patrick Eriksson" ),
8386 OUT(
"ppath_step" ),
8390 IN(
"ppath_step",
"atmosphere_dim",
"lat_grid",
"lon_grid",
8391 "z_field",
"refellipsoid",
"z_surface",
"ppath_lmax" ),
8400 (
NAME(
"ppath_stepRefractionBasic" ),
8403 "Calculates a propagation path step, considering refraction by a\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"
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"
8422 AUTHORS(
"Patrick Eriksson" ),
8423 OUT(
"ppath_step" ),
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" ),
8442 "Prints a variable on the screen.\n"
8456 GIN_DESC(
"Variable to be printed.",
8457 "Output level to use." ),
8465 (
NAME(
"PrintWorkspace" ),
8468 "Prints a list of the workspace variables.\n"
8476 GIN(
"only_allocated",
"level" ),
8479 GIN_DESC(
"Flag for printing either all variables (0) or only "
8480 "allocated ones (1).",
8481 "Output level to use." ),
8490 (
NAME(
"propmat_clearskyAddFaraday" ),
8493 "Calculates absorption matrix describing Faraday rotation.\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"
8502 "Faraday rotation affects Stokes parameters 2 and 3 (but not\n"
8503 "intensity!). Therefore, this method requires stokes_dim>2.\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"
8509 AUTHORS(
"Patrick Eriksson" ),
8510 OUT(
"propmat_clearsky" ),
8514 IN(
"propmat_clearsky",
"stokes_dim",
"atmosphere_dim",
"f_grid",
8515 "abs_species",
"rtp_vmr",
"rtp_los",
"rtp_mag" ),
8524 (
NAME(
"propmat_clearskyAddFromAbsCoefPerSpecies" ),
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"
8535 OUT(
"propmat_clearsky" ),
8539 IN(
"propmat_clearsky",
"abs_coef_per_species" ),
8548 (
NAME(
"propmat_clearskyAddFromLookup" ),
8551 "Extract gas absorption coefficients from lookup table.\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"
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"
8562 "The interpolation order in T and H2O is given by *abs_t_interp_order*\n"
8563 "and *abs_nls_interp_order*, respectively.\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"
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"
8581 "See also: *propmat_clearskyAddOnTheFly*.\n"
8583 AUTHORS(
"Stefan Buehler, Richard Larsson" ),
8584 OUT(
"propmat_clearsky" ),
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" ),
8595 GIN_DESC(
"Extrapolation factor (for grid edges).")
8600 (
NAME(
"propmat_clearskyAddOnTheFly" ),
8603 "Calculates gas absorption coefficients line-by-line.\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"
8609 " 1. *AbsInputFromRteScalars*\n"
8610 " 2. Execute *abs_xsec_agenda*\n"
8611 " 3. *abs_coefCalcFromXsec*\n"
8612 " 4. *propmat_clearskyAddFromAbsCoefPerSpecies*\n"
8614 "The calculation is for one specific atmospheric condition, i.e., a set\n"
8615 "of pressure, temperature, and VMR values.\n"
8617 AUTHORS(
"Stefan Buehler, Richard Larsson" ),
8618 OUT(
"propmat_clearsky" ),
8622 IN(
"propmat_clearsky",
8625 "rtp_pressure",
"rtp_temperature",
"rtp_vmr",
8636 (
NAME(
"propmat_clearskyAddParticles" ),
8639 "Calculates absorption coefficients of particles to be used in\n"
8640 "clearsky (non-cloudbox) calculations.\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"
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."
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"
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"
8669 OUT(
"propmat_clearsky" ),
8673 IN(
"propmat_clearsky",
"stokes_dim",
"atmosphere_dim",
8674 "f_grid",
"abs_species",
8675 "rtp_vmr",
"rtp_los",
"rtp_temperature",
"scat_data_array" ),
8684 (
NAME(
"propmat_clearskyAddZeeman" ),
8687 "Calculates Zeeman-effected absorption coefficients.\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"
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"
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"
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"
8711 OUT(
"propmat_clearsky"),
8715 IN(
"propmat_clearsky",
8718 "abs_lines_per_species",
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"),
8729 GIN_DESC(
"Manual angles tag",
"Manual Magnetic Field Strength",
8730 "Manual theta given positive tag",
"Manual eta given positive tag")
8735 (
NAME(
"propmat_clearskyInit" ),
8738 "Initialize *propmat_clearsky*.\n"
8740 "This method must be used inside *propmat_clearsky_agenda* and then\n"
8741 "be called first.\n"
8743 AUTHORS(
"Oliver Lemke, Richard Larsson" ),
8744 OUT(
"propmat_clearsky" ),
8751 "propmat_clearsky_agenda_checked"
8761 (
NAME(
"propmat_clearskyZero" ),
8764 "Sets *propmat_clearsky* to match zero attenuation.\n"
8766 "Use this method just if you know what you are doing!\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"
8772 AUTHORS(
"Patrick Eriksson" ),
8773 OUT(
"propmat_clearsky" ),
8777 IN(
"f_grid",
"stokes_dim" ),
8786 (
NAME(
"propmat_clearsky_agenda_checkedCalc" ),
8789 "Checks if the *propmat_clearsky_agenda* contains all necessary\n"
8790 "methods to calculate all the species in *abs_species*.\n"
8792 "This method should be called just before the *propmat_clearsky_agenda*\n"
8793 "is used, e.g. *CloudboxGetIncoming*, *ybatchCalc*, *yCalc*\n"
8796 OUT(
"propmat_clearsky_agenda_checked" ),
8800 IN(
"abs_species",
"propmat_clearsky_agenda" ),
8809 (
NAME(
"propmat_clearsky_fieldCalc" ),
8812 "Calculate (vector) gas absorption coefficients for all points in the\n"
8815 "This is useful in two different contexts:\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"
8822 "2. Inside the scattering region, monochromatic absorption is\n"
8823 "pre-calculated for the entire atmospheric field.\n"
8825 "The calculation itself is performed by the\n"
8826 "*propmat_clearsky_agenda*.\n"
8828 AUTHORS(
"Stefan Buehler, Richard Larsson" ),
8829 OUT(
"propmat_clearsky_field" ),
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"),
8841 GIN_DESC(
"A vector of doppler shift values in Hz. Must either be "
8842 "empty or have same dimension as p_grid.",
8849 (
NAME(
"p_gridDensify" ),
8852 "A simple way to make *p_grid* more dense.\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"
8860 "The new points are distributed equidistant in log(p).\n"
8862 AUTHORS(
"Patrick Eriksson" ),
8871 GIN_DESC(
"Number of points to add between adjacent pressure points."
8872 "The default value (-1) results in an error." )
8877 (
NAME(
"p_gridFromZRaw" ),
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"
8885 AUTHORS(
"Claudia Emde, Jana Mendrok" ),
8890 IN(
"z_field_raw" ),
8894 GIN_DESC(
"Exclude negative altitudes." )
8899 (
NAME(
"p_gridFromGasAbsLookup" ),
8902 "Sets *p_grid* to the pressure grid of *abs_lookup*.\n"
8904 AUTHORS(
"Patrick Eriksson" ),
8918 (
NAME(
"ReadNetCDF" ),
8921 "Reads a workspace variable from a NetCDF file.\n"
8923 "This method can read variables of any group.\n"
8925 "If the filename is omitted, the variable is read\n"
8926 "from <basename>.<variable_name>.nc.\n"
8931 GOUT_TYPE(
"Vector, Matrix, Tensor3, Tensor4, Tensor5, ArrayOfVector,"
8932 "ArrayOfMatrix, GasAbsLookup" ),
8938 GIN_DESC(
"Name of the NetCDF file." ),
8948 (
NAME(
"ReadXML" ),
8951 "Reads a workspace variable from an XML file.\n"
8953 "This method can read variables of any group.\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"
8969 GIN_DESC(
"Name of the XML file." ),
8979 (
NAME(
"ReadXMLIndexed" ),
8982 "As *ReadXML*, but reads indexed file names.\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"
8988 "This means that *filename* shall here not include the .xml\n"
8989 "extension. Omitting filename works as for *ReadXML*.\n"
8995 GOUT_DESC(
"Workspace variable to be read." ),
9000 GIN_DESC(
"File name. See above." ),
9013 "Reduces a larger class to a smaller class of same size.\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"
9025 AUTHORS(
"Oliver Lemke",
"Richard Larsson" ),
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,"
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,"
9046 GIN_DESC(
"Over-dimensioned input" ),
9054 (
NAME(
"refellipsoidEarth" ),
9057 "Earth reference ellipsoids.\n"
9059 "The reference ellipsoid (*refellipsoid*) is set to model the Earth,\n"
9060 "following different models. The options are:\n"
9062 " \"Sphere\" : A spherical Earth. The radius is set following\n"
9063 " the value set for the Earth radius in constants.cc.\n"
9065 " \"WGS84\" : The reference ellipsoid used by the GPS system.\n"
9066 " Should be the standard choice for a non-spherical Earth.\n"
9068 AUTHORS(
"Patrick Eriksson" ),
9069 OUT(
"refellipsoid" ),
9077 GIN_DESC(
"Model ellipsoid to use. Options listed above." )
9082 (
NAME(
"refellipsoidForAzimuth" ),
9085 "Conversion of 3D ellipsoid to 1D curvature radius.\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"
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"
9096 AUTHORS(
"Patrick Eriksson" ),
9097 OUT(
"refellipsoid" ),
9101 IN(
"refellipsoid" ),
9102 GIN(
"latitude",
"azimuth" ),
9105 GIN_DESC(
"Latitude.",
"Azimuth angle." )
9110 (
NAME(
"refellipsoidJupiter" ),
9113 "Jupiter reference ellipsoids.\n"
9115 "The reference ellipsoid (*refellipsoid*) is set to model Jupiter,\n"
9116 "folowing different models. The options are:\n"
9118 " \"Sphere\" : A spherical planet. The radius is taken from a\n"
9119 " report of the IAU/IAG Working Group.\n"
9121 " \"Ellipsoid\" : A reference ellipsoid with parameters taken from\n"
9122 " a report of the IAU/IAG Working Group.\n"
9124 AUTHORS(
"Patrick Eriksson" ),
9125 OUT(
"refellipsoid" ),
9133 GIN_DESC(
"Model ellipsoid to use. Options listed above." )
9138 (
NAME(
"refellipsoidMars" ),
9141 "Mars reference ellipsoids.\n"
9143 "The reference ellipsoid (*refellipsoid*) is set to model Mars,\n"
9144 "folowing different models. The options are:\n"
9146 " \"Sphere\" : A spherical planet. The radius is taken from a\n"
9147 " report of the IAU/IAG Working Group.\n"
9149 " \"Ellipsoid\" : A reference ellipsoid with parameters taken from\n"
9150 " a report of the IAU/IAG Working Group.\n"
9152 AUTHORS(
"Patrick Eriksson" ),
9153 OUT(
"refellipsoid" ),
9161 GIN_DESC(
"Model ellipsoid to use. Options listed above." )
9166 (
NAME(
"refellipsoidMoon" ),
9169 "Moon reference ellipsoids.\n"
9171 "The reference ellipsoid (*refellipsoid*) is set to model Moon,\n"
9172 "folowing different models. The options are:\n"
9174 " \"Sphere\" : A spherical planet. The radius is taken from a\n"
9175 " report of the IAU/IAG Working Group.\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"
9181 AUTHORS(
"Patrick Eriksson" ),
9182 OUT(
"refellipsoid" ),
9190 GIN_DESC(
"Model ellipsoid to use. Options listed above." )
9195 (
NAME(
"refellipsoidOrbitPlane" ),
9198 "Conversion of 3D ellipsoid to 2D orbit track geometry.\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"
9207 AUTHORS(
"Patrick Eriksson" ),
9208 OUT(
"refellipsoid" ),
9212 IN(
"refellipsoid" ),
9221 (
NAME(
"refellipsoidSet" ),
9224 "Manual setting of the reference ellipsoid.\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"
9230 AUTHORS(
"Patrick Eriksson" ),
9231 OUT(
"refellipsoid" ),
9239 GIN_DESC(
"Average or equatorial radius.",
"Eccentricity" )
9244 (
NAME(
"refellipsoidVenus" ),
9247 "Venus reference ellipsoids.\n"
9249 "The reference ellipsoid (*refellipsoid*) is set to model Venus,\n"
9250 "folowing different models. The options are:\n"
9252 " \"Sphere\" : A spherical planet. The radius is taken from a\n"
9253 " report of the IAU/IAG Working Group.\n"
9255 "According to the report used above, the Venus ellipsoid lacks\n"
9256 "eccentricity and no further models should be required.\n"
9258 AUTHORS(
"Patrick Eriksson" ),
9259 OUT(
"refellipsoid" ),
9267 GIN_DESC(
"Model ellipsoid to use. Options listed above." )
9272 (
NAME(
"refr_index_airFreeElectrons" ),
9275 "Microwave refractive index due to free electrons.\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"
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"
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"
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"
9296 AUTHORS(
"Patrick Eriksson" ),
9297 OUT(
"refr_index_air",
"refr_index_air_group" ),
9301 IN(
"refr_index_air",
"refr_index_air_group",
"f_grid",
"abs_species",
9303 GIN(
"demand_vmr_value" ),
9306 GIN_DESC(
"Flag to control if it is demanded that free electrons are "
9307 "in *abs_species*. Default is that this is demanded." )
9312 (
NAME(
"refr_index_airIR" ),
9315 "Calculates the IR refractive index due to gases in the\n"
9316 "Earth's atmosphere.\n"
9318 "Only refractivity of dry air is considered. The formula used is\n"
9319 "contributed by Michael Hoefner, Forschungszentrum Karlsruhe.\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"
9325 "The expression used is non-dispersive. Hence, *refr_index_air* and\n"
9326 "*refr_index_air_group* are identical.\n"
9329 OUT(
"refr_index_air",
"refr_index_air_group" ),
9333 IN(
"refr_index_air",
"refr_index_air_group",
"rtp_pressure",
9334 "rtp_temperature" ),
9343 (
NAME(
"refr_index_airMWgeneral" ),
9346 "Microwave refractive index due to gases in planetary atmospheres.\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"
9353 "The expression used is non-dispersive. Hence, *refr_index_air* and\n"
9354 "*refr_index_air_group* are identical.\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"
9367 OUT(
"refr_index_air",
"refr_index_air_group" ),
9371 IN(
"refr_index_air",
"refr_index_air_group",
"rtp_pressure",
9372 "rtp_temperature",
"rtp_vmr",
"abs_species" ),
9381 (
NAME(
"refr_index_airThayer" ),
9384 "Microwave refractive index due to gases in the Earth's atmosphere.\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"
9391 "The expression used is non-dispersive. Hence, *refr_index_air* and\n"
9392 "*refr_index_air_group* are identical.\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"
9404 AUTHORS(
"Patrick Eriksson" ),
9405 OUT(
"refr_index_air",
"refr_index_air_group" ),
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" ),
9414 GIN_DESC(
"Coefficient a, see above",
"Coefficient b, see above",
9415 "Coefficient c, see above" )
9420 (
NAME(
"rte_losGeometricFromRtePosToRtePos2" ),
9423 "The geometric line-of-sight between two points.\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"
9429 "The standard case should be that *rte_pos2* corresponds to a\n"
9430 "transmitter, and *rte_pos* to the receiver/sensor.\n"
9432 AUTHORS(
"Patrick Eriksson" ),
9437 IN(
"atmosphere_dim",
"lat_grid",
"lon_grid",
"refellipsoid",
9438 "rte_pos",
"rte_pos2" ),
9447 (
NAME(
"rte_losSet" ),
9450 "Sets *rte_los* to the given angles.\n"
9452 "The azimuth angle is ignored for 1D and 2D.\n"
9454 AUTHORS(
"Patrick Eriksson" ),
9459 IN(
"atmosphere_dim" ),
9463 GIN_DESC(
"Zenith angle of sensor line-of-sight.",
9464 "Azimuth angle of sensor line-of-sight."
9470 (
NAME(
"rte_posSet" ),
9473 "Sets *rte_pos* to the given co-ordinates.\n"
9475 "The longitude is ignored for 1D and 2D, and the latitude is also \n"
9478 AUTHORS(
"Patrick Eriksson" ),
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."
9494 (
NAME(
"rte_pos_losMoveToStartOfPpath" ),
9497 "Sets *rte_pos* and *rte_los* to values for last point in *ppath*.\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"
9503 AUTHORS(
"Patrick Eriksson" ),
9504 OUT(
"rte_pos",
"rte_los" ),
9508 IN(
"atmosphere_dim",
"ppath" ),
9517 (
NAME(
"ScatteringDisort" ),
9522 "No DISORT support in ARTS2.2 anymore.\n"
9523 "For using the DISORT RT solver interface, switch to ARTS2.3 or\n"
9527 OUT(
"scat_i_p",
"scat_i_lat",
"scat_i_lon",
9528 "f_index",
"scat_data_array_mono",
"doit_i_field1D_spectrum" ),
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" ),
9546 (
NAME(
"ScatteringDoit" ),
9549 "Main DOIT method.\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"
9557 OUT(
"doit_i_field",
9558 "scat_i_p",
"scat_i_lat",
"scat_i_lon",
9559 "doit_i_field1D_spectrum" ),
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" ),
9576 (
NAME(
"ScatteringMergeParticles1D" ),
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"
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"
9592 "This method can only be used with a 1D atmosphere.\n"
9595 OUT(
"pnd_field",
"scat_data_array"),
9599 IN(
"pnd_field",
"scat_data_array",
"atmosphere_dim",
"cloudbox_on",
"cloudbox_limits",
9600 "t_field",
"z_field",
"z_surface",
"cloudbox_checked" ),
9609 (
NAME(
"ScatteringParticleTypeAndMetaRead" ),
9612 "Reads single scattering data and scattering meta data.\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"
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"
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"
9632 OUT(
"scat_data_array",
"scat_meta_array" ),
9637 GIN(
"filename_scat_data",
"filename_scat_meta_data" ),
9640 GIN_DESC(
"File containing single scattering data file names.",
9641 "File containing scattering meta data file names."
9648 (
NAME(
"ScatteringParticlesSelect" ),
9651 "Selects data of *scat_data_array* corresponding to particles that\n"
9652 "according to *part_species* shall be considered in the scattering\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"
9666 OUT(
"scat_data_array",
"scat_meta_array",
"scat_data_per_part_species" ),
9670 IN(
"scat_data_array",
"scat_meta_array",
"part_species" ),
9674 GIN_DESC(
"Delimiter string of *part_species* elements." )
9679 (
NAME(
"scat_meta_arrayAddTmatrix" ),
9682 "This method adds particle meta data to the workspace variable\n"
9683 "*scat_meta_array*.\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"
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"
9702 AUTHORS(
"Johan Strandgren" ),
9703 OUT(
"scat_meta_array"),
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" ),
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" )
9724 (
NAME(
"scat_meta_arrayAddTmatrixOldVersion" ),
9727 "This method adds particle meta data to the workspace variable\n"
9728 "*scat_meta_array*.\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"
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"
9747 AUTHORS(
"Johan Strandgren" ),
9748 OUT(
"scat_meta_array"),
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" ),
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" )
9769 (
NAME(
"scat_meta_arrayInit" ),
9772 "Initializes the workspace variable *scat_meta_array*.\n"
9774 AUTHORS(
"Johan Strandgren" ),
9775 OUT(
"scat_meta_array"),
9788 (
NAME(
"scat_data_array_monoCalc" ),
9791 "Interpolates *scat_data_array* by frequency to give *scat_data_array_mono*.\n"
9794 OUT(
"scat_data_array_mono" ),
9798 IN(
"scat_data_array",
"f_grid",
"f_index" ),
9807 (
NAME(
"scat_data_arrayCheck" ),
9810 "Method for checking the consistency of the optical properties\n"
9811 "in the database.\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"
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"
9826 "( <int_Z11>/<C_sca>-1. ) * ( <C_sca>/<K11> ) > threshold\n"
9828 "The results for all calculated quantities are printed on the screen,\n"
9831 AUTHORS(
"Claudia Emde",
"Jana Mendrok" ),
9836 IN(
"scat_data_array" ),
9840 GIN_DESC(
"Threshold for allowed deviation in albedo when using integrated "
9841 "phase matrix vs. using extinction-absorption difference." )
9846 (
NAME(
"scat_data_arrayFromMeta" ),
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"
9853 "One set of scattering data is calculated for each particle in\n"
9854 "*scat_meta_array*\n"
9856 AUTHORS(
"Johan Strandgren, Oliver Lemke" ),
9857 OUT(
"scat_data_array"),
9861 IN(
"scat_meta_array"),
9862 GIN(
"za_grid",
"aa_grid",
"precision" ),
9863 GIN_TYPE(
"Vector",
"Vector",
"Numeric" ),
9866 "Azimuth angle grid",
9876 "Method to select some elements from one array and copy them to\n"
9877 "a new array. (Works also for vectors.)\n"
9879 "This works also for higher dimensional objects, where the selection is\n"
9880 "always performed in the first dimension.\n"
9884 "Select(y,x,[0,3])\n"
9886 "will select the first and fourth row of matrix x and copy them to the\n"
9887 "output matrix y.\n"
9889 "Note that it is even safe to use this method if needles and haystack\n"
9890 "are the same variable.\n"
9895 GOUT_TYPE( ARRAY_GROUPS +
", Vector, Matrix, Sparse" ),
9896 GOUT_DESC(
"Selected elements. Must have the same variable type as "
9899 GIN(
"haystack",
"needleindexes" ),
9900 GIN_TYPE( ARRAY_GROUPS +
", Vector, Matrix, Sparse",
9903 GIN_DESC(
"Variable to select from. May be the same variable as needles.",
9904 "The elements to select (zero based indexing, as always.)" ),
9912 (
NAME(
"sensor_checkedCalc" ),
9915 "Checks consistency of the sensor variables.\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"
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"
9928 "If any test fails, there is an error. Otherwise, *sensor_checked*\n"
9932 OUT(
"sensor_checked" ),
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"),
9948 (
NAME(
"sensorOff" ),
9951 "Sets sensor WSVs to obtain monochromatic pencil beam values.\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"
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" ),
9969 IN(
"stokes_dim",
"f_grid" ),
9978 (
NAME(
"sensor_responseAntenna" ),
9981 "Includes response of the antenna.\n"
9983 "The function returns the sensor response matrix after the antenna\n"
9984 "characteristics have been included.\n"
9986 "The function handles \"multi-beam\" cases where the polarisation\n"
9987 "coordinate system is the same for all beams.\n"
9989 "See *antenna_dim*, *antenna_los* and *antenna_response* for\n"
9990 "details on how to specify the antenna response.\n"
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" ),
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" ),
10012 (
NAME(
"sensor_responseBackend" ),
10015 "Includes response of the backend (spectrometer).\n"
10017 "The function returns the sensor response matrix after the backend\n"
10018 "characteristics have been included.\n"
10020 "See *f_backend*, *backend_channel_response* and *sensor_norm* for\n"
10021 "details on how to specify the backend response.\n"
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" ),
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" ),
10043 (
NAME(
"sensor_responseBackendFrequencySwitching" ),
10046 "Frequency switching for a pure SSB reciever.\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"
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"
10061 "Use *sensor_responseFrequencySwitching* for double sideband cases.\n"
10063 "The method has the same general functionality as, and can replace,\n"
10064 "*sensor_responseBackend*.\n"
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" ),
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" ),
10081 GIN_DESC(
"Frequency throw for cycle1.",
"Frequency throw for cycle2.")
10086 (
NAME(
"sensor_responseBeamSwitching" ),
10089 "Simulation of \"beam switching\".\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"
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"
10099 "Zenith and azimuth angles after beam switching are set to the\n"
10100 "values of the second direction.\n"
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" ),
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" ),
10116 GIN_DESC(
"Weight for values from first viewing direction.",
10117 "Weight for values from second viewing direction."
10123 (
NAME(
"sensor_responseFillFgrid" ),
10126 "Polynomial frequency interpolation of spectra.\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"
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"
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"
10146 "Between each neighbouring points of *f_grid*, this method adds\n"
10147 "*nfill* grid points. The polynomial order of the interpolation is\n"
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" ),
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" ),
10164 GIN_DESC(
"Polynomial order of interpolation",
10165 "Number of points to insert in each gap of f_grid" )
10170 (
NAME(
"sensor_responseFrequencySwitching" ),
10173 "Simulation of \"frequency switching\".\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"
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"
10186 "Output frequency grids are taken from the second spectrum..\n"
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" ),
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" ),
10207 (
NAME(
"sensor_responseIF2RF" ),
10210 "Converts sensor response variables from IF to RF.\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"
10218 "A direct frequency conversion is performed. Values are not\n"
10219 "sorted in any way.\n"
10221 AUTHORS(
"Patrick Eriksson" ),
10222 OUT(
"sensor_response_f",
"sensor_response_f_grid" ),
10226 IN(
"sensor_response_f",
"sensor_response_f_grid",
"lo",
10236 (
NAME(
"sensor_responseInit" ),
10239 "Initialises the variables summarising the sensor response.\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"
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"
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" ),
10267 IN(
"f_grid",
"mblock_za_grid",
"mblock_aa_grid",
"antenna_dim",
10268 "atmosphere_dim",
"stokes_dim",
"sensor_norm" ),
10277 (
NAME(
"sensor_responseMixer" ),
10280 "Includes response of the mixer of a heterodyne system.\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"
10288 "See *lo* and *sideband_response* for details on how to specify the\n"
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" ),
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" ),
10310 (
NAME(
"sensor_responseMultiMixerBackend" ),
10313 "Handles mixer and backend parts for an instrument having multiple\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"
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" ),
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" ),
10348 (
NAME(
"sensor_responsePolarisation" ),
10351 "Extraction of non-default polarisation components.\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"
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"
10364 "See *sensor_pol* for coding of polarisation states.\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"
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" ),
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" ),
10392 (
NAME(
"sensor_responseStokesRotation" ),
10395 "Includes a rotation of the Stokes H and V directions.\n"
10397 "The method applies the rotations implied by *stokes_rotation*.\n"
10398 "See the description of that WSV for details.\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"
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"
10406 AUTHORS(
"Patrick Eriksson" ),
10407 OUT(
"sensor_response" ),
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" ),
10422 (
NAME(
"sensor_responseSimpleAMSU" ),
10425 "Simplified sensor setup for an AMSU-type instrument.\n"
10427 "This method allows quick and simple definition of AMSU-type\n"
10428 "sensors. Assumptions:\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"
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"
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",
10458 IN(
"atmosphere_dim",
10460 "sensor_description_amsu" ),
10464 GIN_DESC(
"Desired grid spacing in Hz." )
10470 (
NAME(
"sensor_responseGenericAMSU" ),
10473 "Simplified sensor setup for an AMSU-type instrument.\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"
10480 "This method allows quick and simple definition of AMSU-type\n"
10481 "sensors. Assumptions:\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"
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"
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",
10511 IN(
"atmosphere_dim",
10513 "sensor_description_amsu" ),
10517 GIN_DESC(
"Desired grid spacing in Hz." )
10576 (
NAME(
"sensor_responseWMRF" ),
10579 "Adds WMRF weights to sensor response.\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"
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"),
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",
10609 (
NAME(
"SparseSparseMultiply" ),
10612 "Multiplies a Sparse with another Sparse, result stored in Sparse.\n"
10614 "Makes the calculation: out = m1 * m2\n"
10616 AUTHORS(
"Patrick Eriksson" ),
10620 GOUT_DESC(
"Product, can be same variable as any of the inputs." ),
10622 GIN(
"m1" ,
"m2" ),
10626 "Right sparse matrix." )
10631 (
NAME(
"specular_losCalc" ),
10634 "Calculates the specular direction for intersections with the\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"
10641 "The method also returns the line-of-sight for the surface normal.\n"
10643 AUTHORS(
"Patrick Eriksson" ),
10644 OUT(
"specular_los",
"surface_normal" ),
10648 IN(
"rtp_pos",
"rtp_los",
"atmosphere_dim",
"lat_grid",
"lon_grid",
10649 "refellipsoid",
"z_surface" ),
10658 (
NAME(
"StringCompose" ),
10661 "Concatenate two or more strings.\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"
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" ),
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.")
10686 (
NAME(
"StringSet" ),
10689 "Sets a String to the given text string.\n"
10691 AUTHORS(
"Patrick Eriksson" ),
10695 GOUT_DESC(
"Variable to initialize." ),
10706 (
NAME(
"surfaceBlackbody" ),
10709 "Creates variables to mimic a blackbody surface.\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"
10716 AUTHORS(
"Patrick Eriksson" ),
10717 OUT(
"surface_los",
"surface_rmatrix",
"surface_emission" ),
10721 IN(
"f_grid",
"stokes_dim",
"surface_skin_t",
10722 "blackbody_radiation_agenda" ),
10731 (
NAME(
"surfaceFlatRefractiveIndex" ),
10734 "Creates variables to mimic specular reflection by a (flat) surface\n"
10735 "where the complex refractive index is specified.\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"
10743 "Local thermodynamic equilibrium is assumed, which corresponds to\n"
10744 "that the reflection and emission coefficients add up to 1.\n"
10746 AUTHORS(
"Patrick Eriksson" ),
10747 OUT(
"surface_los",
"surface_rmatrix",
"surface_emission" ),
10751 IN(
"f_grid",
"stokes_dim",
"atmosphere_dim",
"rtp_los",
"specular_los",
10752 "surface_skin_t",
"surface_complex_refr_index",
10753 "blackbody_radiation_agenda" ),
10762 (
NAME(
"surfaceFlatReflectivity" ),
10765 "Creates variables to mimic specular reflection by a (flat) surface\n"
10766 "where *surface_reflectivity* is specified.\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"
10774 AUTHORS(
"Patrick Eriksson" ),
10775 OUT(
"surface_los",
"surface_rmatrix",
"surface_emission" ),
10779 IN(
"f_grid",
"stokes_dim",
"atmosphere_dim",
10780 "specular_los",
"surface_skin_t",
"surface_reflectivity",
10781 "blackbody_radiation_agenda" ),
10790 (
NAME(
"surfaceFlatScalarReflectivity" ),
10793 "Creates variables to mimic specular reflection by a (flat) surface\n"
10794 "where *surface_scalar_reflectivity* is specified.\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"
10800 AUTHORS(
"Patrick Eriksson" ),
10801 OUT(
"surface_los",
"surface_rmatrix",
"surface_emission" ),
10805 IN(
"f_grid",
"stokes_dim",
"atmosphere_dim",
10806 "specular_los",
"surface_skin_t",
"surface_scalar_reflectivity",
10807 "blackbody_radiation_agenda" ),
10816 (
NAME(
"surfaceLambertianSimple" ),
10819 "Creates variables to mimic a Lambertian surface.\n"
10821 "The method can only be used for 1D calculations.\n"
10823 "A Lambertian surface can be characterised solely by its\n"
10824 "reflectivity, here taken from *surface_scalar_reflectivity*.\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"
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"
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"
10843 "Local thermodynamic equilibrium is assumed, which corresponds to\n"
10844 "that the reflection and emission coefficients \"add up to 1\".\n"
10846 AUTHORS(
"Patrick Eriksson" ),
10847 OUT(
"surface_los",
"surface_rmatrix",
"surface_emission" ),
10851 IN(
"f_grid",
"stokes_dim",
"atmosphere_dim",
"rtp_los",
10852 "surface_skin_t",
"surface_scalar_reflectivity",
"lambertian_nza",
10853 "blackbody_radiation_agenda" ),
10857 GIN_DESC(
"Position of angle in *surface_los* inside ranges of zenith "
10858 "angle grid. See above."
10864 (
NAME(
"surface_complex_refr_indexFromGriddedField5" ),
10867 "Extracts complex refractive index from a field of such data.\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"
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"
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"
10890 AUTHORS(
"Patrick Eriksson" ),
10891 OUT(
"surface_complex_refr_index" ),
10895 IN(
"atmosphere_dim",
"lat_grid",
"lat_true",
"lon_true",
"rtp_pos" ),
10896 GIN(
"complex_refr_index_field" ),
10899 GIN_DESC(
"A field of complex refractive index." )
10904 (
NAME(
"surface_reflectivityFromGriddedField6" ),
10907 "Extracts surface reflectivities from a field of such data.\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"
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"
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"
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"
10940 AUTHORS(
"Patrick Eriksson" ),
10941 OUT(
"surface_reflectivity" ),
10945 IN(
"stokes_dim",
"f_grid",
"atmosphere_dim",
"lat_grid",
"lat_true",
10946 "lon_true",
"rtp_pos",
"rtp_los" ),
10950 GIN_DESC(
"A field of surface reflectivities" )
10955 (
NAME(
"surface_scalar_reflectivityFromGriddedField4" ),
10958 "Extracts scalar surface reflectivities from a field of such data.\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"
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"
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"
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"
10985 AUTHORS(
"Patrick Eriksson" ),
10986 OUT(
"surface_scalar_reflectivity" ),
10990 IN(
"stokes_dim",
"f_grid",
"atmosphere_dim",
"lat_grid",
"lat_true",
10991 "lon_true",
"rtp_pos",
"rtp_los" ),
10995 GIN_DESC(
"A field of scalar surface reflectivities" )
11000 (
NAME(
"TangentPointExtract" ),
11003 "Finds the tangent point of a propagation path.\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"
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"
11014 AUTHORS(
"Patrick Eriksson" ),
11018 GOUT_DESC(
"The position vector of the tangent point." ),
11028 (
NAME(
"TangentPointPrint" ),
11031 "Prints information about the tangent point of a propagation path.\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"
11038 AUTHORS(
"Patrick Eriksson" ),
11047 GIN_DESC(
"Output level to use." )
11052 (
NAME(
"Tensor3AddScalar" ),
11055 "Adds a scalar value to all elements of a tensor3.\n"
11057 "The result can either be stored in the same or another\n"
11060 AUTHORS(
"Patrick Eriksson" ),
11066 GIN(
"in",
"value" ),
11070 "The value to be added to the tensor." )
11075 (
NAME(
"Tensor3Scale" ),
11078 "Scales all elements of a tensor with the specified value.\n"
11080 "The result can either be stored in the same or another\n"
11083 AUTHORS(
"Mattias Ekstrom" ),
11089 GIN(
"in",
"value" ),
11093 "The value to be multiplied with the tensor." )
11098 (
NAME(
"Tensor3SetConstant" ),
11101 "Creates a tensor and sets all elements to the specified value.\n"
11103 "The size is determined by *ncols*, *nrows* etc.\n"
11109 GOUT_DESC(
"Variable to initialize." ),
11110 IN(
"npages",
"nrows",
"ncols" ),
11119 (
NAME(
"Tensor4AddScalar" ),
11122 "Adds a scalar value to all elements of a tensor4.\n"
11124 "The result can either be stored in the same or another\n"
11127 AUTHORS(
"Patrick Eriksson" ),
11133 GIN(
"in",
"value" ),
11137 "The value to be added to the tensor." )
11142 (
NAME(
"Tensor4Scale" ),
11145 "Scales all elements of a tensor with the specified value.\n"
11147 "The result can either be stored in the same or another\n"
11150 AUTHORS(
"Mattias Ekstrom" ),
11156 GIN(
"in",
"value" ),
11160 "The value to be multiplied with the tensor." )
11165 (
NAME(
"Tensor4SetConstant" ),
11168 "Creates a tensor and sets all elements to the specified value.\n"
11170 "The size is determined by *ncols*, *nrows* etc.\n"
11176 GOUT_DESC(
"Variable to initialize." ),
11177 IN(
"nbooks",
"npages",
"nrows",
"ncols" ),
11186 (
NAME(
"Tensor5Scale" ),
11189 "Scales all elements of a tensor with the specified value.\n"
11191 "The result can either be stored in the same or another\n"
11194 AUTHORS(
"Mattias Ekstrom" ),
11200 GIN(
"in",
"value" ),
11204 "The value to be multiplied with the tensor." )
11209 (
NAME(
"Tensor5SetConstant" ),
11212 "Creates a tensor and sets all elements to the specified value.\n"
11214 "The size is determined by *ncols*, *nrows* etc.\n"
11220 GOUT_DESC(
"Variable to initialize." ),
11221 IN(
"nshelves",
"nbooks",
"npages",
"nrows",
"ncols" ),
11230 (
NAME(
"Tensor6Scale" ),
11233 "Scales all elements of a tensor with the specified value.\n"
11235 "The result can either be stored in the same or another\n"
11238 AUTHORS(
"Mattias Ekstrom" ),
11244 GIN(
"in",
"value" ),
11248 "The value to be multiplied with the tensor." )
11253 (
NAME(
"Tensor6SetConstant" ),
11256 "Creates a tensor and sets all elements to the specified value.\n"
11258 "The size is determined by *ncols*, *nrows* etc.\n"
11264 GOUT_DESC(
"Variable to initialize." ),
11265 IN(
"nvitrines",
"nshelves",
"nbooks",
"npages",
"nrows",
"ncols" ),
11274 (
NAME(
"Tensor7Scale" ),
11277 "Scales all elements of a tensor with the specified value.\n"
11279 "The result can either be stored in the same or another\n"
11282 AUTHORS(
"Mattias Ekstrom" ),
11288 GIN(
"in",
"value" ),
11292 "The value to be multiplied with the tensor." )
11297 (
NAME(
"Tensor7SetConstant" ),
11300 "Creates a tensor and sets all elements to the specified value.\n"
11302 "The size is determined by *ncols*, *nrows* etc.\n"
11308 GOUT_DESC(
"Variable to initialize." ),
11309 IN(
"nlibraries",
"nvitrines",
"nshelves",
"nbooks",
"npages",
"nrows",
11322 "A dummy method that can be used for test purposes.\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"
11329 AUTHORS(
"Patrick Eriksson" ),
11343 (
NAME(
"timerStart" ),
11346 "Initializes the CPU timer."
11348 "Use *timerStop* to stop the timer.\n"
11352 " ReadXML(f_grid,\"frequencies.xml\")\n"
11370 (
NAME(
"timerStop" ),
11373 "Stops the CPU timer."
11375 "See *timerStart* for example usage.\n"
11391 (
NAME(
"TMatrixTest" ),
11394 "T-Matrix validation test.\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"
11417 "As *Ignore* but for agenda output.\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"
11427 GOUT_DESC(
"Variable to do nothing with." ),
11440 (
NAME(
"VectorAddScalar" ),
11443 "Adds a scalar to all elements of a vector.\n"
11445 "The result can either be stored in the same or another vector.\n"
11447 AUTHORS(
"Patrick Eriksson" ),
11453 GIN(
"in" ,
"value" ),
11456 GIN_DESC(
"Input vector",
"The value to be added to the vector." )
11461 (
NAME(
"VectorCrop" ),
11464 "Keeps only values of a vector inside the specified range.\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"
11469 "The result can either be stored in the same or another vector.\n"
11471 AUTHORS(
"Patrick Eriksson" ),
11477 GIN(
"in" ,
"min_value",
"max_value" ),
11478 GIN_TYPE(
"Vector",
"Numeric",
"Numeric" ),
11480 GIN_DESC(
"Original vector",
"Minimum value to keep",
11481 "Maximum value to keep" )
11486 (
NAME(
"VectorExtractFromMatrix" ),
11489 "Extracts a Vector from a Matrix.\n"
11491 "Copies row or column with given Index from input Matrix variable\n"
11492 "to create output Vector.\n"
11494 AUTHORS(
"Patrick Eriksson, Oliver Lemke, Stefan Buehler" ),
11500 GIN(
"in" ,
"i" ,
"direction" ),
11501 GIN_TYPE(
"Matrix",
"Index",
"String" ),
11504 "Index of row or column.",
11505 "Direction. \"row\" or \"column\"."
11511 (
NAME(
"VectorFlip" ),
11514 "Flips a vector.\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"
11519 AUTHORS(
"Patrick Eriksson" ),
11533 (
NAME(
"VectorInsertGridPoints" ),
11536 "Insert some additional points into a grid.\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"
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"
11549 "Generic output:\n"
11550 " Vector : The new grid vector.\n"
11553 " Vector : The original grid vector.\n"
11554 " Vector : The points to insert.\n"
11562 GIN(
"in" ,
"points" ),
11565 GIN_DESC(
"The original grid vector",
11566 "The points to insert" )
11571 (
NAME(
"VectorLinSpace" ),
11574 "Initializes a vector with linear spacing.\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"
11580 "The created vector is [start, start+step, start+2*step, ...]\n "
11582 AUTHORS(
"Patrick Eriksson" ),
11588 GIN(
"start",
"stop",
"step" ),
11589 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric" ),
11592 "Maximum/minimum value of the end value",
11593 "Spacing of the vector."
11599 (
NAME(
"VectorLogSpace" ),
11602 "Initializes a vector with logarithmic spacing.\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"
11609 "Note, that although start has to be given in direct coordinates,\n"
11610 "step has to be given in log coordinates.\n"
11612 "Explicitly, the vector is:\n"
11613 " exp([ln(start), ln(start)+step, ln(start)+2*step, ...])\n"
11619 GOUT_DESC(
"Variable to initialize." ),
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!)" )
11631 (
NAME(
"VectorMatrixMultiply" ),
11634 "Multiply a Vector with a Matrix and store the result in another\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"
11645 GOUT_DESC(
"The result of the multiplication (dimension m)." ),
11650 GIN_DESC(
"The Matrix to multiply (dimension mxn).",
11651 "The original Vector (dimension n)." )
11656 (
NAME(
"VectorNLinSpace" ),
11659 "Creates a vector with length *nelem*, equally spaced between the\n"
11660 "given end values.\n"
11662 "The length (*nelem*) must be larger than 1.\n"
11664 AUTHORS(
"Patrick Eriksson" ),
11668 GOUT_DESC(
"Variable to initialize." ),
11670 GIN(
"start",
"stop" ),
11680 (
NAME(
"VectorNLogSpace" ),
11683 "Creates a vector with length *nelem*, equally logarithmically\n"
11684 "spaced between the given end values.\n"
11686 "The length (*nelem*) must be larger than 1.\n"
11688 AUTHORS(
"Patrick Eriksson" ),
11692 GOUT_DESC(
"Variable to initialize." ),
11694 GIN(
"start",
"stop" ),
11704 (
NAME(
"VectorScale" ),
11707 "Scales all elements of a vector with the same value.\n"
11709 "The result can either be stored in the same or another vector.\n"
11711 AUTHORS(
"Patrick Eriksson" ),
11729 (
NAME(
"VectorSetConstant" ),
11732 "Creates a vector and sets all elements to the specified value.\n"
11734 "The vector length is determined by *nelem*.\n"
11736 AUTHORS(
"Patrick Eriksson" ),
11740 GOUT_DESC(
"Variable to initialize." ),
11750 (
NAME(
"VectorSet" ),
11753 "Create a vector from the given list of numbers.\n"
11755 " VectorSet(p_grid, [1000, 100, 10] )\n"
11756 " Will create a p_grid vector with these three elements.\n"
11762 GOUT_DESC(
"Variable to initialize." ),
11767 GIN_DESC(
"The vector elements." ),
11773 (
NAME(
"VectorZtanToZaRefr1D" ),
11776 "Converts a set of true tangent altitudes to zenith angles.\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"
11783 AUTHORS(
"Patrick Eriksson",
"Mattias Ekstrom" ),
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",
11794 GIN_DESC(
"Vector with tangent altitudes." )
11799 (
NAME(
"VectorZtanToZa1D" ),
11802 "Converts a set of geometrical tangent altitudes to zenith angles.\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"
11809 AUTHORS(
"Patrick Eriksson",
"Mattias Ekstrom" ),
11813 GOUT_DESC(
"Vector with zenith angles." ),
11814 IN(
"sensor_pos",
"refellipsoid",
"atmosphere_dim" ),
11818 GIN_DESC(
"Vector with tangent altitudes." )
11823 (
NAME(
"verbosityInit" ),
11826 "Initializes the verbosity levels.\n"
11828 "Sets verbosity to defaults or the levels specified by -r on the command line.\n"
11831 OUT(
"verbosity" ),
11844 (
NAME(
"verbositySet" ),
11847 "Sets the verbosity levels.\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"
11855 OUT(
"verbosity" ),
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")
11870 (
NAME(
"verbositySetAgenda" ),
11873 "Sets the verbosity level for agenda output.\n"
11875 "See *verbositySet*\n"
11878 OUT(
"verbosity" ),
11886 GIN_DESC(
"Agenda verbosity level")
11891 (
NAME(
"verbositySetFile" ),
11894 "Sets the verbosity level for report file output.\n"
11896 "See *verbositySet*\n"
11899 OUT(
"verbosity" ),
11907 GIN_DESC(
"Report file verbosity level")
11912 (
NAME(
"verbositySetScreen" ),
11915 "Sets the verbosity level for screen output.\n"
11917 "See *verbositySet*\n"
11920 OUT(
"verbosity" ),
11928 GIN_DESC(
"Screen verbosity level")
11933 (
NAME(
"WMRFSelectChannels" ),
11936 "Select some channels for WMRF calculation.\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"
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"
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"
11952 OUT(
"f_grid",
"wmrf_weights",
11957 IN(
"f_grid",
"f_backend",
11958 "wmrf_weights",
"wmrf_channels" ),
11967 (
NAME(
"WriteMolTau" ),
11970 "Writes a 'molecular_tau_file' as required for libRadtran.\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)."
11987 IN(
"f_grid",
"z_field",
"propmat_clearsky_field",
"atmosphere_dim" ),
11991 GIN_DESC(
"Name of the *molecular_tau_file*." )
11996 (
NAME(
"WriteNetCDF" ),
11999 "Writes a workspace variable to a NetCDF file.\n"
12001 "This method can write variables of limited groups.\n"
12003 "If the filename is omitted, the variable is written\n"
12004 "to <basename>.<variable_name>.nc.\n"
12014 GIN_TYPE(
"Vector, Matrix, Tensor3, Tensor4, Tensor5, ArrayOfVector,"
12015 "ArrayOfMatrix, GasAbsLookup",
12019 GIN_DESC(
"Variable to be saved.",
12020 "Name of the NetCDF file." ),
12030 (
NAME(
"WriteNetCDFIndexed" ),
12033 "As *WriteNetCDF*, but creates indexed file names.\n"
12035 "This method can write variables of any group.\n"
12037 "If the filename is omitted, the variable is written\n"
12038 "to <basename>.<variable_name>.nc.\n"
12045 IN(
"file_index" ),
12048 GIN_TYPE(
"Vector, Matrix, Tensor3, Tensor4, Tensor5, ArrayOfVector,"
12049 "ArrayOfMatrix, GasAbsLookup",
12053 GIN_DESC(
"Variable to be saved.",
12054 "Name of the NetCDF file." ),
12064 (
NAME(
"WriteXML" ),
12067 "Writes a workspace variable to an XML file.\n"
12069 "This method can write variables of any group.\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"
12081 IN(
"output_file_format" ),
12091 GIN_DESC(
"Variable to be saved.",
12092 "Name of the XML file.",
12093 "0: Overwrite existing files, 1: Use unique filenames"),
12103 (
NAME(
"WriteXMLIndexed" ),
12106 "As *WriteXML*, but creates indexed file names.\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"
12112 "This means that *filename* shall here not include the .xml\n"
12113 "extension. Omitting filename works as for *WriteXML*.\n"
12115 AUTHORS(
"Patrick Eriksson" ),
12120 IN(
"output_file_format",
"file_index" ),
12121 GIN(
"in",
"filename" ),
12124 GIN_DESC(
"Workspace variable to be saved.",
12125 "File name. See above."
12136 (
NAME(
"yApplyUnit" ),
12139 "Conversion of *y* to other spectral units.\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"
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"
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"
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"
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"
12165 "Conversion of *y_aux* is not supported.\n"
12167 AUTHORS(
"Patrick Eriksson" ),
12168 OUT(
"y",
"jacobian" ),
12172 IN(
"y",
"jacobian",
"y_f",
"y_pol",
"iy_unit" ),
12181 (
NAME(
"ybatchCalc" ),
12184 "Performs batch calculations for the measurement vector y.\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"
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"
12200 " d. Adds 1 to *ybatch_index*.\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"
12208 "The input variable *ybatch_start* is set to a default of zero in\n"
12209 "*general.arts*.\n"
12211 "An agenda that calculates spectra for different temperature profiles\n"
12212 "could look like this:\n"
12214 " AgendaSet(ybatch_calc_agenda){\n"
12215 " Extract(t_field,tensor4_1,ybatch_index)\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"
12222 "See the user guide for further practical examples.\n"
12225 OUT(
"ybatch",
"ybatch_aux",
"ybatch_jacobians" ),
12229 IN(
"ybatch_start",
"ybatch_n",
"ybatch_calc_agenda" ),
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\"."
12245 (
NAME(
"ybatchMetProfiles" ),
12248 "This method is used for simulating ARTS for metoffice model fields"
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"
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"
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"
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" ),
12288 (
NAME(
"ybatchMetProfilesClear" ),
12291 "This method is used for simulating ARTS for metoffice model fields\n"
12292 "for clear sky conditions.\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"
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"
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"
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" ),
12333 "Calculation of complete measurement vectors (y).\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"
12345 "The frequency, polarisation etc. for each measurement value is\n"
12346 "given by *y_f*, *y_pol*, *y_pos* and *y_los*.\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"
12352 AUTHORS(
"Patrick Eriksson" ),
12353 OUT(
"y",
"y_f",
"y_pol",
"y_pos",
"y_los",
"y_aux",
"jacobian" ),
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" ),
12374 (
NAME(
"yCalcAppend" ),
12377 "Replaces *yCalc* if a measurement shall be appended to an\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"
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"
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"
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"
12413 AUTHORS(
"Patrick Eriksson" ),
12414 OUT(
"y",
"y_f",
"y_pol",
"y_pos",
"y_los",
"y_aux",
12415 "jacobian",
"jacobian_quantities",
"jacobian_indices" ),
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" ),
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." )
12441 (
NAME(
"yCloudRadar" ),
12444 "Replaces *yCalc* for cloud radar calculations.\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"
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"
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"
12466 "All auxiliary data from *iyCloudRadar* are handled.\n"
12468 "No Jacobian quantities are yet handled.\n"
12470 AUTHORS(
"Patrick Eriksson" ),
12471 OUT(
"y",
"y_aux" ),
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" ),
12488 (
NAME(
"ySimpleSpectrometer" ),
12491 "Converts *iy* to *y* assuming a fixed frequency resolution.\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"
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"
12501 "Auxiliary variables and *jacobian*s are not handled.\n"
12503 AUTHORS(
"Patrick Eriksson" ),
12508 IN(
"iy",
"stokes_dim",
"f_grid" ),
12512 GIN_DESC(
"Selected frequency resolution." )
12517 (
NAME(
"wind_u_fieldIncludePlanetRotation" ),
12520 "Maps the planet's rotation to an imaginary wind.\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"
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"
12530 AUTHORS(
"Patrick Eriksson" ),
12531 OUT(
"wind_u_field" ),
12535 IN(
"wind_u_field",
"atmosphere_dim",
"p_grid",
"lat_grid",
"lon_grid",
12536 "refellipsoid",
"z_field",
"planet_rotation_period" ),
12545 (
NAME(
"z_fieldFromHSE" ),
12548 "Force altitudes to fulfil hydrostatic equilibrium.\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"
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"
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"
12566 "For 1D and 2D, the geographical position is taken from *lat_true*\n"
12567 "and *lon_true*.\n"
12569 AUTHORS(
"Patrick Eriksson" ),
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" ),
const Array< MdRecord > md_data_raw
Lookup information for workspace methods.
#define USES_TEMPLATES(x)
This can be used to make arrays out of anything.
String get_array_groups_as_string(bool basetype_is_group, bool return_basetype_only)
Return string list of array types.
The implementation for String, the ARTS string class.
Implements the class MakeArray, which is a derived class of Array, allowing explicit initialization.
All information for one workspace method.
my_basic_string< char > String
The String type for ARTS.
const ArrayOfString wsv_group_names
The names associated with Wsv groups as Strings.
Declaration of the class MdRecord.
Auxiliary header stuff related to workspace variable groups.
void define_md_data_raw()
The global header file for ARTS.