Go to the documentation of this file.
40 #define DESCRIPTION(x) x
41 #define AUTHORS MakeArray<String>
42 #define OUT MakeArray<String>
43 #define GOUT MakeArray<String>
44 #define GOUT_TYPE MakeArray<String>
45 #define GOUT_DESC MakeArray<String>
46 #define IN MakeArray<String>
47 #define GIN MakeArray<String>
48 #define GIN_TYPE MakeArray<String>
49 #define GIN_DEFAULT MakeArray<String>
50 #define GIN_DESC MakeArray<String>
51 #define SETMETHOD(x) x
52 #define AGENDAMETHOD(x) x
53 #define SUPPRESSHEADER(x) x
54 #define PASSWORKSPACE(x) x
55 #define PASSWSVNAMES(x) x
143 String(
"Creates a variable of group " + *it +
".\n"
145 "If the variable already exists, it'll be reinitialized.\n").c_str()
173 (
NAME(
"AbsInputFromAtmFields" ),
176 "Initialises the WSVs *abs_p*, *abs_t* and *abs_vmrs* from\n"
177 "*p_grid, *t_field* and *vmr_field*.\n"
179 "This only works for a 1D atmosphere!\n"
182 OUT(
"abs_p",
"abs_t",
"abs_vmrs" ),
186 IN(
"atmosphere_dim",
"p_grid",
"t_field",
"vmr_field" ),
195 (
NAME(
"AbsInputFromRteScalars" ),
198 "Initialize absorption input WSVs from local atmospheric conditions.\n"
200 "The purpose of this method is to allow an explicit line-by-line\n"
201 "calculation, e.g., by *abs_coefCalc*, to be put inside the\n"
202 "*abs_scalar_gas_agenda*. What the method does is to prepare absorption\n"
203 "input parameters (pressure, temperature, VMRs), from the input\n"
204 "parameters to *abs_scalar_gas_agenda*. There is a matching method to\n"
205 "turn the output of *abs_coefCalc* into what the agenda expects\n"
206 "(*abs_scalar_gasFromAbsCoef*).\n"
209 OUT(
"abs_p",
"abs_t",
"abs_vmrs" ),
213 IN(
"rte_pressure",
"rte_temperature",
"rte_vmr_list" ),
222 (
NAME(
"abs_coefCalc" ),
225 "Calculate absorption coefficients.\n"
227 "This function calculates both the total absorption (*abs_coef*), and\n"
228 "the absorption per species (*abs_coef_per_species*).\n"
230 "The method calls four other methods:\n"
232 "1. *abs_xsec_per_speciesInit*:\n"
233 " Initialize *abs_xsec_per_species*\n"
235 "2. *abs_xsec_per_speciesAddLines*:\n"
236 " Calculate cross sections per tag group for line spectra.\n"
238 "3. *abs_xsec_per_speciesAddConts*:\n"
239 " Calculate cross sections per tag group for continua.\n"
241 "4. *abs_coefCalcFromXsec*:\n"
242 " Calculate absorption coefficients from the cross sections by\n"
243 " multiplying each cross section by n*VMR.\n"
245 "This is done once for each tag group (output *abs_coef_per_species*),\n"
246 "and for the sum of all tag groups (output *abs_coef*).\n"
248 AUTHORS(
"Axel von Engeln",
"Stefan Buehler" ),
249 OUT(
"abs_coef" ,
"abs_coef_per_species" ),
253 IN(
"abs_species",
"f_grid",
"abs_p",
"abs_t",
"abs_n2",
"abs_h2o",
254 "abs_vmrs",
"abs_lines_per_species",
"abs_lineshape",
255 "abs_cont_names",
"abs_cont_models",
256 "abs_cont_parameters" ),
265 (
NAME(
"abs_coefCalcFromXsec" ),
268 "Calculate absorption coefficients from cross sections.\n"
270 "This calculates both the total absorption and the\n"
271 "absorption per species.\n"
273 "Cross sections are multiplied by n*VMR.\n"
275 AUTHORS(
"Stefan Buehler",
"Axel von Engeln" ),
276 OUT(
"abs_coef",
"abs_coef_per_species" ),
280 IN(
"abs_xsec_per_species",
"abs_vmrs",
"abs_p",
"abs_t" ),
289 (
NAME(
"abs_coefCalcSaveMemory" ),
292 "Calculate absorption coefficients, trying to conserve memory.\n"
294 "This function calculates only the total absorption (*abs_coef*),\n"
295 "NOT the absorption per tag group (*abs_coef_per_species*).\n"
297 "This means you cannot use it if you want to calculate Jacobians\n"
300 "The implementation follows abs_coefCalc.\n"
307 IN(
"abs_species",
"f_grid",
"abs_p",
"abs_t",
"abs_n2",
"abs_h2o",
308 "abs_vmrs",
"abs_lines_per_species",
"abs_lineshape",
309 "abs_cont_names",
"abs_cont_models",
310 "abs_cont_parameters" ),
319 (
NAME(
"abs_cont_descriptionAppend" ),
322 "Appends the description of a continuum model or a complete absorption\n"
323 "model to *abs_cont_names* and *abs_cont_parameters*.\n"
325 "See online documentation for *abs_cont_names* for a list of\n"
326 "allowed models and for information what parameters they require. See\n"
327 "file includes/continua.arts for default parameters for the various models.\n"
329 AUTHORS(
"Thomas Kuhn",
"Stefan Buehler" ),
330 OUT(
"abs_cont_names",
332 "abs_cont_parameters" ),
336 IN(
"abs_cont_names",
338 "abs_cont_parameters" ),
339 GIN(
"tagname",
"model",
"userparameters" ),
340 GIN_TYPE(
"String",
"String",
"Vector" ),
343 "The name (species tag) of a continuum model. Must match one\n"
344 "of the models implemented in ARTS.\n",
345 "A string selecting a particular continuum/full model under this\n"
347 "A Vector containing the required parameters for the selected model.\n"
348 "The meaning of the parameters and how many parameters are required\n"
349 "depends on the model.\n" )
354 (
NAME(
"abs_cont_descriptionInit" ),
357 "Initializes the two workspace variables for the continuum description,\n"
358 "*abs_cont_names* and *abs_cont_parameters*.\n"
360 "This method does not really do anything, except setting the two\n"
361 "variables to empty Arrays. It is just necessary because the method\n"
362 "*abs_cont_descriptionAppend* wants to append to the variables.\n"
364 "Formally, the continuum description workspace variables are required\n"
365 "by the absorption calculation methods (e.g., *abs_coefCalc*). Therefore you\n"
366 "always have to call at least *abs_cont_descriptionInit*, even if you do\n"
367 "not want to use any continua.\n"
369 AUTHORS(
"Thomas Kuhn",
"Stefan Buehler" ),
370 OUT(
"abs_cont_names",
372 "abs_cont_parameters" ),
385 (
NAME(
"abs_h2oSet" ),
388 "Sets abs_h2o to the profile of the first tag group containing\n"
391 "This is necessary, because for example *abs_coefCalc* requires abs_h2o\n"
392 "to contain the water vapour profile(the reason for this is the\n"
393 "calculation of oxygen line broadening requires water vapour profile).\n"
394 "Then this function can be used to copy the profile of the first tag\n"
402 IN(
"abs_species",
"abs_vmrs" ),
411 (
NAME(
"abs_lineshapeDefine" ),
414 "Set the lineshape for all calculated lines.\n"
416 "Sets the lineshape function. Beside the lineshape function itself, you\n"
417 "also have so select a forefactor and a frequency cutoff. The\n"
418 "forefactor is later multiplied with the lineshape function.\n"
420 "The cutoff frequency is used to make lineshapes finite in frequency,\n"
421 "the response outside the cutoff is set to zero, and the lineshape\n"
422 "value at the cutoff frequency is subtracted from the overall lineshape\n"
423 "as a constant offset. This ensures that the lineshape goes to zero at\n"
424 "the cutoff frequency without a discontinuity.\n"
426 "We generate only one copy of the lineshape settings. Absorption\n"
427 "routines check for this case and use it for all species.\n"
429 "The allowed values for the input parameters are:\n"
432 " no_shape: no specified shape\n"
433 " Doppler: Doppler lineshape\n"
434 " Lorentz: Lorentz lineshape\n"
435 " Voigt_Kuntz3: Kuntz approximation to the Voigt lineshape,\n"
436 " accuracy > 2x10^(-3)\n"
437 " Voigt_Kuntz4: Kuntz approximation to the Voigt lineshape,\n"
438 " accuracy > 2x10^(-4)\n"
439 " Voigt_Kuntz6: Kuntz approximation to the Voigt lineshape,\n"
440 " accuracy > 2x10^(-6)\n"
441 " Voigt_Drayson: Drayson approximation to the Voigt lineshape\n"
442 " Rosenkranz_Voigt_Drayson: Rosenkrantz oxygen absortion with overlap correction\n"
443 " on the basis of Drayson routine\n"
444 " Rosenkranz_Voigt_Kuntz6 : Rosenkrantz oxygen absortion with overlap correction\n"
445 " on the basis of Kuntz routine, accuracy > 2x10^(-6)\n"
446 " CO2_Lorentz: Lorentz multiplied with Cousin's chi factors\n"
447 " CO2_Drayson: Drayson multiplied with Cousin's chi factors\n"
451 " quadratic: (f/f0)^2\n"
452 " VVH: (f*tanh(h*f/(2k*T))) / (f0*tanh(h*f0/(2k*T)))\n"
456 " <Number>: positive cutoff frequency in Hz\n"
458 AUTHORS(
"Axel von Engeln",
"Stefan Buehler" ),
459 OUT(
"abs_lineshape" ),
464 GIN(
"shape",
"normalizationfactor",
"cutoff" ),
465 GIN_TYPE(
"String",
"String",
"Numeric" ),
468 "Normalization factor.",
469 "Cutoff frequency [Hz]." )
474 (
NAME(
"abs_lineshape_per_tgDefine" ),
477 "Set the lineshape, separately for each absorption species.\n"
479 "This method is similar to *abs_lineshapeDefine*, except that a\n"
480 "different lineshape can be set for each absorption species (see\n"
481 "*abs_species*). For example, you might want to use different values of\n"
482 "the cutoff frequency for different species.\n"
484 "For detailed documentation on the available options for the input\n"
485 "parameters see documentation of method *abs_lineshapeDefine*.\n"
487 AUTHORS(
"Axel von Engeln",
"Stefan Buehler" ),
488 OUT(
"abs_lineshape" ),
493 GIN(
"shape",
"normalizationfactor",
"cutoff" ),
494 GIN_TYPE(
"ArrayOfString",
"ArrayOfString",
"Vector" ),
496 GIN_DESC(
"Line shape function for each species.",
497 "Normalization factor for each species.",
498 "Cutoff frequency [Hz] for each species." )
503 (
NAME(
"abs_linesReadFromArts" ),
506 "Read all the lines from an Arts catalogue file in the\n"
507 "given frequency range. Otherwise a runtime error will be\n"
510 "Please note that all lines must correspond\n"
511 "to legal species / isotope combinations\n"
519 GIN(
"filename",
"fmin",
"fmax" ),
520 GIN_TYPE(
"String",
"Numeric",
"Numeric" ),
522 GIN_DESC(
"Name (and path) of the catalogue file.",
523 "Minimum frequency for lines to read [Hz].",
524 "Maximum frequency for lines to read [Hz]." )
529 (
NAME(
"abs_linesReadFromSplitArtscat" ),
532 "Read all the lines in the given frequency range from a split\n"
533 "Arts catalogue file.\n"
535 "Please note that all lines must correspond\n"
536 "to legal species / isotope combinations\n"
544 GIN(
"basename",
"fmin",
"fmax" ),
545 GIN_TYPE(
"String",
"Numeric",
"Numeric" ),
547 GIN_DESC(
"Basename of the catalogue.",
548 "Minimum frequency for lines to read [Hz].",
549 "Maximum frequency for lines to read [Hz]." )
554 (
NAME(
"abs_linesReadFromHitran" ),
557 "Read all the lines from a HITRAN 1986-2001 catalogue file in\n"
558 "the given frequency range. Otherwise a runtime error will be\n"
559 "thrown. For HITRAN 2004 line data use the workspace method\n"
560 "*abs_linesReadFromHitran2004*.\n"
562 "Please note that all lines must correspond to legal\n"
563 "species / isotope combinations and that the line data\n"
564 "file must be sorted by increasing frequency\n"
566 "WWW access of the HITRAN catalogue: http://www.hitran.com/\n"
574 GIN(
"filename",
"fmin",
"fmax" ),
575 GIN_TYPE(
"String",
"Numeric",
"Numeric" ),
577 GIN_DESC(
"Name (and path) of the catalogue file.",
578 "Minimum frequency for lines to read [Hz].",
579 "Maximum frequency for lines to read [Hz]." )
584 (
NAME(
"abs_linesReadFromHitran2004" ),
587 "Read all the lines from a HITRAN 2004 catalogue file in the\n"
588 "given frequency range. Otherwise a runtime error is thrown.\n"
590 "Records of molecules unknown to ARTS are ignored but a\n"
591 "warning is issued. In particular this happens for CH3OH\n"
592 "(HITRAN molecule number 39) because there is no total internal\n"
593 "partition sum available.\n"
595 "The database must be sorted by increasing frequency!\n"
597 "WWW access of the HITRAN catalogue: http://www.hitran.com/\n"
599 "For data in the Hitran 1986-2001 format use the workspace\n"
600 "method: abs_linesReadFromHitran\n"
602 AUTHORS(
"Hermann Berg",
"Thomas Kuhn" ),
608 GIN(
"filename",
"fmin",
"fmax" ),
609 GIN_TYPE(
"String",
"Numeric",
"Numeric" ),
611 GIN_DESC(
"Name (and path) of the catalogue file.",
612 "Minimum frequency for lines to read [Hz].",
613 "Maximum frequency for lines to read [Hz]." )
618 (
NAME(
"abs_linesReadFromJpl" ),
621 "Read all the lines from a JPL catalogue file in the\n"
622 "given frequency range. Otherwise a runtime error will be\n"
625 "Please note that all lines must correspond\n"
626 "to legal species / isotope combinations.\n"
628 "WWW access of the JPL catalogue: http://spec.jpl.nasa.gov/\n"
636 GIN(
"filename",
"fmin",
"fmax" ),
637 GIN_TYPE(
"String",
"Numeric",
"Numeric" ),
639 GIN_DESC(
"Name (and path) of the catalogue file.",
640 "Minimum frequency for lines to read [Hz].",
641 "Maximum frequency for lines to read [Hz]." )
646 (
NAME(
"abs_linesReadFromMytran2" ),
649 "Read all the lines from a MYTRAN2 catalogue file in the\n"
650 "given frequency range. Otherwise a runtime error will be\n"
653 "Please note that all lines must correspond\n"
654 "to legal species / isotope combinations\n"
656 AUTHORS(
"Axel von Engeln",
"Stefan Buehler" ),
662 GIN(
"filename",
"fmin",
"fmax" ),
663 GIN_TYPE(
"String",
"Numeric",
"Numeric" ),
665 GIN_DESC(
"Name (and path) of the catalogue file.",
666 "Minimum frequency for lines to read [Hz].",
667 "Maximum frequency for lines to read [Hz]." )
672 (
NAME(
"abs_lines_per_speciesAddMirrorLines" ),
675 "Adds mirror lines at negative frequencies to *abs_lines_per_species*.\n"
677 "For each line at frequency +f in *abs_lines_per_species* a corresponding\n"
678 "entry at frequency -f is added to *abs_lines_per_species*. The mirror\n"
679 "lines are appended to the line list after the original lines.\n"
681 AUTHORS(
"Axel von Engeln",
"Stefan Buehler" ),
682 OUT(
"abs_lines_per_species" ),
686 IN(
"abs_lines_per_species" ),
695 (
NAME(
"abs_lines_per_speciesCompact" ),
698 "Removes all lines outside the defined lineshape cutoff frequencies\n"
699 "from *abs_lines_per_species*. This can save computation time.\n"
700 "It should be particularly useful to call this method after\n"
701 "*abs_lines_per_speciesAddMirrorLines*.\n"
703 AUTHORS(
"Axel von Engeln",
"Stefan Buehler" ),
704 OUT(
"abs_lines_per_species" ),
708 IN(
"abs_lines_per_species",
"abs_lineshape",
"f_grid" ),
717 (
NAME(
"abs_lines_per_speciesCreateFromLines" ),
720 "Split lines up into the different species.\n"
722 "The species are tested in the order in which they are specified in the\n"
723 "controlfile. Lines are assigned to the first species that\n"
724 "matches. That means if the list of species is [\"O3-666\",\"O3\"], then\n"
725 "the last group O3 gets assigned all the O3 lines that do not fit in\n"
726 "the first group (all other isotopes than the main isotope).\n"
729 OUT(
"abs_lines_per_species" ),
733 IN(
"abs_lines",
"abs_species" ),
742 (
NAME(
"abs_lines_per_speciesReadFromCatalogues" ),
745 "Read spectral line data from different line catalogues.\n"
747 "For each absorption species, you can specify which catalogue to\n"
748 "use. Because the method creates *abs_lines_per_species* directly, it\n"
749 "replaces for example the following two method calls:\n"
751 " - abs_linesReadFromHitran\n"
752 " - abs_lines_per_speciesCreateFromLines\n"
754 "This method needs as input WSVs the list of species\n"
755 "*abs_species*. Generic input parameters must specify the names of the\n"
756 "catalogue files to use and the matching formats. Names can be\n"
757 "anything, formats can currently be HITRAN96 (for HITRAN 1986-2001\n"
758 "databases), HITRAN04 (for HITRAN 2004 database), MYTRAN2, JPL, or\n"
759 "ARTS. Furthermore, you have to specify minimum and maximum frequency\n"
760 "for each species. To safe typing, if there are less elements in the\n"
761 "keyword parameters than there are species, the last parameters are\n"
762 "applied to all following species.\n"
766 "abs_lines_per_speciesReadFromCatalogues(\n"
767 " [ \"../data/cat1.dat\", \"../data/cat2.dat\" ]\n"
768 " [ \"MYTRAN2\", \"HITRAN96\" ]\n"
770 " [ 2000e9, 100e9 ]\n"
773 "In this example, lines for the first species will be taken from cat1,\n"
774 "lines for all other species will be taken from cat2. This allows you\n"
775 "for example to use a special line file just for water vapor lines.\n"
777 "Catalogues are only read once, even if several tag groups have the\n"
778 "same catalogue. However, in that case the frequency ranges MUST be the\n"
779 "same. (If you want to do fine-tuning of the frequency ranges, you can\n"
780 "do this inside the tag definitions, e.g., \"H2O-*-0-2000e9\".)\n"
782 "This function uses the various reading routines\n"
783 "(*abs_linesReadFromHitran*, etc.), as well as\n"
784 "*abs_lines_per_speciesCreateFromLines*.\n"
787 OUT(
"abs_lines_per_species" ),
792 GIN(
"filenames",
"formats",
"fmin",
"fmax" ),
793 GIN_TYPE(
"ArrayOfString",
"ArrayOfString",
"Vector",
"Vector" ),
795 GIN_DESC(
"Name (and path) of the catalogue files.",
796 "Format of each file. (Allowed formats are\n"
797 "HITRAN96, HITRAN04, MYTRAN2, JPL, ARTS.",
798 "Minimum frequency for lines to read [Hz].",
799 "Maximum frequency for lines to read [Hz]." )
804 (
NAME(
"abs_lines_per_speciesSetEmpty" ),
807 "Sets abs_lines_per_species to empty line lists.\n"
809 "You can use this method to set *abs_lines_per_species* if you do not\n"
810 "really want to compute line spectra. Formally, abs_coefCalc will still\n"
811 "require *abs_lines_per_species* to be set.\n"
814 OUT(
"abs_lines_per_species" ),
827 (
NAME(
"abs_lookupAdapt" ),
830 "Adapts a gas absorption lookup table to the current calculation.\n"
832 "The lookup table can contain more species and more frequencies than\n"
833 "are needed for the current calculation. This method cuts down the\n"
834 "table in memory, so that it contains just what is needed. Also, the\n"
835 "species in the table are brought in the same order as the species in\n"
836 "the current calculation.\n"
838 "Of course, the method also performs quite a lot of checks on the\n"
839 "table. If something is not ok, a runtime error is thrown.\n"
841 "The method sets a flag *abs_lookup_is_adapted* to indicate that the\n"
842 "table has been checked and that it is ok. Never set this by hand,\n"
843 "always use this method to set it!\n"
846 OUT(
"abs_lookup",
"abs_lookup_is_adapted" ),
850 IN(
"abs_lookup",
"abs_species",
"f_grid" ),
859 (
NAME(
"abs_lookupCreate" ),
862 "Creates a gas absorption lookup table.\n"
864 "The lookup table stores absorption cross-sections as a function of\n"
865 "pressure. Additionally, absorption can be stored as a function of\n"
866 "temperature for temperature perturbations from a reference\n"
869 "Additionally, absorption can be stored as a function of water vapor\n"
870 "VMR perturbations from a reference profile. The variable *abs_nls*\n"
871 "specifies, for which species water vapor perturbations should be\n"
874 "Note, that the absorbing gas can be any gas, but the perturbing gas is\n"
877 "In contrast to other absorption functions, this method does not use\n"
878 "the input variable *abs_h2o*. This is because *abs_h2o* has to be set\n"
879 "interally to allow perturbations. If there are more than one H2O\n"
880 "species, the first is assumed to be the main one.\n"
883 OUT(
"abs_lookup",
"abs_lookup_is_adapted" ),
888 "abs_lines_per_species",
900 "abs_cont_parameters"
910 (
NAME(
"abs_lookupInit" ),
913 "Creates an empty gas absorption lookup table.\n"
915 "This is mainly there to help developers. For example, you can write\n"
916 "the empty table to an XML file, to see the file format.\n"
932 (
NAME(
"abs_lookupSetup" ),
935 "Set up input parameters for abs_lookupCreate.\n"
937 "More information can be found in the documentation for method\n"
938 "*abs_lookupSetupBatch*\n"
940 "Max and min values of H2O and temperature are adjusted to allow for\n"
941 "numerical perturbations in Jacobian calculation.\n"
943 "The input variables *abs_nls_interp_order* and *abs_t_interp_order*\n"
944 "are used to make sure that there are enough points in *abs_nls_pert*\n"
945 "and *abs_t_pert* for the chosen interpolation order.\n"
948 " *abs_lookupSetupBatch*\n"
960 IN(
"atmosphere_dim",
967 "abs_p_interp_order",
968 "abs_t_interp_order",
969 "abs_nls_interp_order" ),
970 GIN(
"p_step",
"t_step",
"h2o_step" ),
971 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric" ),
974 "Maximum step in log10(p[Pa]) (base 10 logarithm)."
975 "If the pressure grid is coarser than this, additional "
976 "points are added until each log step is smaller than this.",
978 "The temperature variation grid step in Kelvin, "
979 "for a 2D or 3D atmosphere. For a 1D atmosphere this "
980 "parameter is not used.",
982 "The H2O variation grid step [fractional], if "
983 "H2O variations are done (which is determined automatically, "
984 "based on abs_species and the atmospheric dimension). For a "
985 "1D atmosphere this parameter is not used."
991 (
NAME(
"abs_lookupSetupBatch" ),
994 "Set up input parameters for abs_lookupCreate for batch calculations.\n"
996 "This method performs a similar task as *abs_lookupSetup*, with the\n"
997 "difference, that the lookup table setup is not for a single\n"
998 "atmospheric state, but for a whole batch of them, stored in\n"
999 "*batch_atm_fields_compact*.\n"
1001 "The method checks *abs_species* to decide, which species depend on\n"
1002 "*abs_h2o*, and hence require nonlinear treatment in the lookup table.\n"
1004 "The method also checks which range of pressures, temperatures, and\n"
1005 "VMRs occurs, and sets *abs_p*, *abs_t*, *abs_t_pert*, and *abs_vmrs*\n"
1008 "If nonlinear species are present, *abs_nls* and *abs_nls_pert* are also\n"
1011 "Max and min values of H2O and temperature are adjusted to allow for\n"
1012 "numerical perturbations in Jacobian calculation.\n"
1014 "The input variables *abs_nls_interp_order* and *abs_t_interp_order*\n"
1015 "are used to make sure that there are enough points in *abs_nls_pert*\n"
1016 "and *abs_t_pert* for the chosen interpolation order.\n"
1019 " *abs_lookupSetup*\n"
1032 "batch_atm_fields_compact",
1033 "abs_p_interp_order",
1034 "abs_t_interp_order",
1035 "abs_nls_interp_order" ),
1036 GIN(
"p_step",
"t_step",
"h2o_step",
"extremes" ),
1037 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric",
"Vector" ),
1040 "Grid step in log10(p[Pa]) (base 10 logarithm).",
1042 "The temperature variation grid step in Kelvin. The true "
1043 "step can become finer than this, if required by the "
1044 "interpolation order.",
1046 "The H2O variation grid step [fractional], if H2O variations "
1047 "are done (which is determined automatically, based on "
1048 "abs_species and the atmospheric dimension). As for T, the true "
1049 "step can turn out finer if required by the interpolation order.",
1051 "You can give here explicit extreme values to add to "
1052 "abs_t_pert and abs_nls_pert. The order is [t_pert_min, "
1053 "t_pert_max, nls_pert_min, nls_pert_max]."
1059 (
NAME(
"abs_lookupSetupWide" ),
1062 "Set up input parameters for abs_lookupCalc for a wide range of\n"
1063 "atmospheric conditions.\n"
1065 "This method can be used to set up parameters for a lookup table that\n"
1066 "really covers all reasonable atmospheric conditions.\n"
1068 "Reference profiles of T and H2O will be constant, so that the\n"
1069 "different dimensions in the lookup table are actually \"orthogonal\",\n"
1070 "unlike the traditional case where we have pressure dependent reference\n"
1071 "profiles. This makes the table numerically somewhat more robust then\n"
1072 "the traditional ones, and it makes it straightforward to calculate the\n"
1073 "accuracy for the different interpolations with abs_lookupTestAccuracy.\n"
1075 "You can give min an max values for the atmospheric conditions. The\n"
1076 "default values are chosen such that they cover all Chevallier data set\n"
1077 "cases, and a bit more. The statistics of the Chevallier data are:\n"
1079 "min(p) / max(p) [Pa]: 1 / 104960\n"
1080 "min(T) / max(T) [K]: 158.21 / 320.39\n"
1081 "min(H2O) / max(H2O) [VMR]: -5.52e-07 / 0.049\n"
1094 "abs_p_interp_order",
1095 "abs_t_interp_order",
1096 "abs_nls_interp_order" ),
1097 GIN(
"p_min",
"p_max",
"p_step",
"t_min",
"t_max",
"h2o_min",
"h2o_max" ),
1098 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric",
"Numeric",
"Numeric",
"Numeric",
"Numeric" ),
1099 GIN_DEFAULT(
"0.5",
"110000",
"0.05",
"100",
"400",
"0",
"0.05" ),
1100 GIN_DESC(
"Pressure grid minimum [Pa].",
1101 "Pressure grid maximum [Pa].",
1102 "Pressure grid step in log10(p[Pa]) (base 10 logarithm).",
1103 "Temperature grid minimum [K].",
1104 "Temperature grid maximum [K].",
1105 "Humidity grid minimum [fractional].",
1106 "Humidity grid maximum [fractional]." )
1111 (
NAME(
"abs_lookupTestAccuracy" ),
1114 "Test accuracy of absorption lookup table.\n"
1116 "Explicitly compare absorption from the lookup table with line-by-line\n"
1117 "calculations for strategically selected conditions (in-between the\n"
1118 "lookup table grid points).\n"
1120 "For error units see *abs_lookupTestAccMC*\n"
1122 "Produces no workspace output, only output to the output streams.\n"
1130 "abs_lookup_is_adapted",
1131 "abs_p_interp_order",
1132 "abs_t_interp_order",
1133 "abs_nls_interp_order",
1135 "abs_lines_per_species",
1139 "abs_cont_parameters" ),
1148 (
NAME(
"abs_lookupTestAccMC" ),
1151 "Test accuracy of absorption lookup table with Monte Carlo Algorithm.\n"
1153 "Explicitly compare absorption from the lookup table with line-by-line\n"
1154 "calculations for random conditions.\n"
1156 "The quantities returned are the mean value and standard deviation of\n"
1157 "the absolute value of the relative error in percent.\n"
1158 "The relative error itself is computed for a large number of cases\n"
1159 "(pressure, temperature, and H2O VMR combinations). In the frequency\n"
1160 "dimension the maximum value is taken for each case.\n"
1162 "Produces no workspace output, only output to the output streams.\n"
1170 "abs_lookup_is_adapted",
1171 "abs_p_interp_order",
1172 "abs_t_interp_order",
1173 "abs_nls_interp_order",
1175 "abs_lines_per_species",
1179 "abs_cont_parameters",
1189 (
NAME(
"abs_n2Set" ),
1192 "Sets abs_n2 to the profile of the first tag group containing\n"
1193 "molecular nitrogen. See *abs_h2oSet* for more details.\n"
1200 IN(
"abs_species",
"abs_vmrs" ),
1209 (
NAME(
"abs_scalar_gasCalcLBL" ),
1212 "Calculates scalar gas absorption coefficients line-by-line.\n"
1214 "This method can be used inside *abs_scalar_gas_agenda* just like\n"
1215 "*abs_scalar_gasExtractFromLookup*. It is a shortcut for putting in some\n"
1216 "other methods explicitly, namely:\n"
1218 " 1. *f_gridSelectFIndex*\n"
1219 " 2. *NumericScale*( rte_doppler, rte_doppler, -1 )\n"
1220 " 3. *VectorAddScalar*( f_grid, f_grid, rte_doppler )\n"
1221 " 4. *AbsInputFromRteScalars*\n"
1222 " 5. *abs_h2oSet*\n"
1223 " 6. *abs_coefCalc*\n"
1224 " 7. *abs_scalar_gasFromAbsCoef*\n"
1226 "Sub-methods 2 and 3 are called only if rte_doppler is not zero.\n"
1227 "The treatment of the Doppler-shift here is exact, since the underlying\n"
1228 "frequency grid is shifted.\n"
1230 "The calculation is for one specific atmospheric condition, i.e., a set\n"
1231 "of pressure, temperature, VMR values, and Doppler shift. It can be\n"
1232 "either for a single frequency (f_index>=0), or for all frequencies\n"
1233 "(f_index<0). The dimension of the output abs_scalar_gas is adjusted\n"
1237 OUT(
"abs_scalar_gas" ),
1244 "abs_lines_per_species",
1248 "abs_cont_parameters",
1250 "rte_pressure",
"rte_temperature",
"rte_vmr_list",
"rte_doppler" ),
1259 (
NAME(
"abs_scalar_gasExtractFromLookup" ),
1262 "Extract scalar gas absorption coefficients from lookup table.\n"
1264 "This extracts the absorption coefficient for all species in the\n"
1265 "current calculation from the lookup table. Extraction is for one\n"
1266 "specific atmospheric condition, i.e., a set of pressure, temperature,\n"
1267 "VMR values, and Doppler shift.\n"
1269 "Extraction can be either for a single frequency (f_index>=0), or for\n"
1270 "all frequencies (f_index<0). The dimension of the output\n"
1271 "abs_scalar_gas is adjusted accordingly.\n"
1273 "The interpolation order in T and H2O is given by *abs_t_interp_order*\n"
1274 "and *abs_nls_interp_order*, respectively.\n"
1276 "Note that the treatment of the Doppler-shift here is approximate, since\n"
1277 "there is a linear interpolation of absorption to a shifted frequency grid.\n"
1278 "Due to this, with Doppler shift there will be an extrapolation on one edge\n"
1279 "of the grid, where the spectrum is pushed out of the calculated range.\n"
1280 "Use extpolfac to control how much extrapolation to tolerate before throwing\n"
1281 "a runtime error. Default is to allow ten times the outermost grid distance.\n"
1283 "See also: *abs_scalar_gasCalcLBL*.\n"
1286 OUT(
"abs_scalar_gas" ),
1290 IN(
"abs_lookup",
"abs_lookup_is_adapted",
1291 "abs_p_interp_order",
"abs_t_interp_order",
"abs_nls_interp_order",
1293 "rte_pressure",
"rte_temperature",
"rte_vmr_list",
"rte_doppler" ),
1297 GIN_DESC(
"Extrapolation factor (for grid edge).")
1302 (
NAME(
"abs_scalar_gasFromAbsCoef" ),
1305 "Copy *abs_scalar_gas* from *abs_coef*. This is handy for putting an\n"
1306 "explicit line-by-line calculation into the\n"
1307 "*abs_scalar_gas_agenda*. See also method *AbsInputFromRteScalars*.\n"
1310 OUT(
"abs_scalar_gas" ),
1314 IN(
"abs_coef_per_species" ),
1323 (
NAME(
"abs_fieldCalc" ),
1326 "Calculate scalar gas absorption for all points in the atmosphere.\n"
1328 "This is useful in two different contexts:\n"
1330 "1. For testing and plotting gas absorption. (For RT calculations, gas\n"
1331 "absorption is calculated or extracted locally, therefore there is no\n"
1332 "need to calculate a global field. But this method is handy for easy\n"
1333 "plotting of absorption vs. pressure, for example.)\n"
1335 "2. Inside the scattering region, monochromatic absorption is\n"
1336 "pre-calculated for the entire atmospheric field.\n"
1338 "Because of the different contexts, the method can calculate absorption\n"
1339 "either for all frequencies in the frequency grid (f_index<0), or just\n"
1340 "for the frequency indicated by f_index (f_index>=0).\n"
1342 "The calculation itself is performed by the\n"
1343 "*abs_scalar_gas_agenda*.\n"
1350 IN(
"abs_scalar_gas_agenda",
1354 "p_grid",
"lat_grid",
"lon_grid",
1355 "t_field",
"vmr_field" ),
1359 GIN_DESC(
"A vector of doppler shift values in Hz. Must either be\n"
1360 "empty or have same dimension as p_grid\n")
1365 (
NAME(
"abs_speciesAdd" ),
1368 "Adds species tag groups to the list of absorption species.\n"
1370 "This WSM is similar to *SpeciesSet*, the only difference is that\n"
1371 "this method appends species to an existing list of absorption species instead\n"
1372 "of creating the whole list.\n"
1374 "See *SpeciesSet* for details on how tags are defined and examples of\n"
1375 "how to input them in the control file.\n"
1378 OUT(
"abs_species" ),
1382 IN(
"abs_species" ),
1386 GIN_DESC(
"Specify one String for each tag group that you want to\n"
1387 "add. Inside the String, separate the tags by commas\n"
1388 "(plus optional blanks).\n")
1393 (
NAME(
"abs_speciesAdd2" ),
1396 "Adds a species tag group to the list of absorption species and\n"
1397 "jacobian quantities.\n"
1399 "The method is basically a combined call of *abs_speciesAdd* and\n"
1400 "*jacobianAddAbsSpecies*. In this way it is not needed to specify a\n"
1401 "tag group in two different places.\n"
1403 "Arguments exactly as for *jacobianAddAbsSpecies*. Note that this\n"
1404 "method only handles a single tag group, in contrast to\n"
1405 "*abs_speciesAdd*\n"
1407 AUTHORS(
"Patrick Eriksson" ),
1408 OUT(
"abs_species",
"jacobian_quantities",
"jacobian_agenda" ),
1412 IN(
"abs_species",
"atmosphere_dim",
"p_grid",
"lat_grid",
1414 GIN(
"gin1" ,
"gin2" ,
"gin3" ,
1415 "species",
"method",
"unit",
"dx" ),
1416 GIN_TYPE(
"Vector",
"Vector",
"Vector",
1417 "String",
"String",
"String",
"Numeric" ),
1420 GIN_DESC(
"Pressure retrieval grid.",
1421 "Latitude retrieval grid.",
1422 "Longitude retreival grid.",
1423 "The species tag of the retrieval quantity.",
1424 "Calculation method. See above.",
1425 "Retrieval unit. See above.",
1426 "Size of perturbation."
1436 (
NAME(
"abs_speciesDefineAllInScenario" ),
1439 "Define one tag group for each species known to ARTS and included in an\n"
1440 "atmospheric scenario.\n"
1442 "You can use this as an alternative to tgsDefine if you want to make an\n"
1443 "absorption calculation that is as complete as possible. The method\n"
1444 "goes through all defined species and tries to open the VMR file. If\n"
1445 "this works the tag is included, otherwise it is skipped.\n"
1448 OUT(
"abs_species" ),
1456 GIN_DESC(
"The name and path of a particular atmospheric scenario.\n"
1457 "For example: /pool/lookup2/arts-data/atmosphere/fascod/tropical" )
1462 (
NAME(
"abs_speciesInit" ),
1465 "Sets *abs_species* to be empty.\n"
1468 OUT(
"abs_species" ),
1481 (
NAME(
"abs_vecAddGas" ),
1484 "Add gas absorption to first element of absorption vector.\n"
1486 "The task of this method is to sum up the gas absorption of the\n"
1487 "different gas species and add the result to the first element of the\n"
1488 "absorption vector.\n"
1495 IN(
"abs_vec",
"abs_scalar_gas" ),
1504 (
NAME(
"abs_vecAddPart" ),
1507 "The particle absorption is added to *abs_vec*\n"
1509 "This function sums up the absorption vectors for all particle\n"
1510 "types weighted with particle number density.\n"
1511 "The resluling absorption vector is added to the workspace\n"
1512 "variable *abs_vec*\n"
1513 "Output and input of this method is *abs_vec* (stokes_dim).\n"
1514 "The inputs are the absorption vector for the single particle type\n"
1515 "*abs_vec_spt* (part_types, stokes_dim) and the local particle\n"
1516 " number densities for all particle types namely the\n"
1517 "*pnd_field* (part_types, p_grid, lat_grid, lon_grid, ) for given\n"
1518 "*p_grid*, *lat_grid*, and *lon_grid*. The particle types required\n"
1519 "are specified in the control file.\n"
1526 IN(
"abs_vec",
"abs_vec_spt",
"pnd_field",
"atmosphere_dim",
1527 "scat_p_index",
"scat_lat_index",
"scat_lon_index" ),
1536 (
NAME(
"abs_vecInit" ),
1539 "Initialize absorption vector.\n"
1541 "This method is necessary, because all other absorption methods just\n"
1542 "add to the existing absorption vector.\n"
1544 "So, here we have to make it the right size and fill it with 0.\n"
1546 "Note, that the vector is not really a vector, because it has a\n"
1547 "leading frequency dimension.\n"
1554 IN(
"f_grid",
"stokes_dim",
"f_index" ),
1563 (
NAME(
"abs_xsec_per_speciesAddConts" ),
1566 "Calculate absorption cross sections per tag group for continua.\n"
1569 OUT(
"abs_xsec_per_species" ),
1573 IN(
"abs_species",
"f_grid",
"abs_p",
"abs_t",
"abs_n2",
"abs_h2o",
1574 "abs_vmrs",
"abs_cont_names",
"abs_cont_parameters",
1575 "abs_cont_models" ),
1584 (
NAME(
"abs_xsec_per_speciesAddLines" ),
1587 "Calculates the line spectrum for each tag group and adds\n"
1588 "it to abs_xsec_per_species.\n"
1590 AUTHORS(
"Stefan Buehler",
"Axel von Engeln" ),
1591 OUT(
"abs_xsec_per_species" ),
1595 IN(
"abs_species",
"f_grid",
"abs_p",
"abs_t",
"abs_h2o",
1596 "abs_vmrs",
"abs_lines_per_species",
"abs_lineshape" ),
1605 (
NAME(
"abs_xsec_per_speciesInit" ),
1608 "Initialize *abs_xsec_per_species*.\n"
1610 "The initialization is\n"
1611 "necessary, because methods *abs_xsec_per_speciesAddLines*\n"
1612 "and *abs_xsec_per_speciesAddConts* just add to *abs_xsec_per_species*.\n"
1613 "The size is determined from *tgs*.\n"
1616 OUT(
"abs_xsec_per_species" ),
1620 IN(
"abs_species",
"f_grid",
"abs_p" ),
1629 (
NAME(
"AgendaExecute" ),
1632 "Execute an agenda.\n"
1643 GIN_DESC(
"Agenda to be executed." ),
1650 (
NAME(
"AgendaAppend" ),
1653 "Append methods to an agenda.\n"
1655 "An agenda is used to store a list of methods that are meant to be\n"
1656 "executed sequentially.\n"
1658 "This method takes the methods given in the body (in the curly braces)\n"
1659 "and appends them to the agenda given by the output argument (in the round\n"
1662 "It also uses the agenda lookup data (defined in file agendas.cc) to\n"
1663 "check, whether the given methods use the right input WSVs and produce\n"
1664 "the right output WSVs.\n"
1685 (
NAME(
"AgendaSet" ),
1688 "Set up an agenda.\n"
1690 "An agenda is used to store a list of methods that are meant to be\n"
1691 "executed sequentially.\n"
1693 "This method takes the methods given in the body (in the curly braces)\n"
1694 "and puts them in the agenda given by the output argument (in the round\n"
1697 "It also uses the agenda lookup data (defined in file agendas.cc) to\n"
1698 "check, whether the given methods use the right input WSVs and\n"
1699 "produce the right output WSVs.\n"
1720 (
NAME(
"AntennaConstantGaussian1D" ),
1723 "Sets up a 1D gaussian antenna response and a matching\n"
1724 "*mblock_za_grid*.\n"
1726 "As *antenna_responseGaussian*, but alsp creates *mblock_za_grid*.\n"
1727 "For returned antenna response, see *antenna_responseGaussian*.\n"
1729 "The length of *mblock_za_grid* is determined by *n_za_grid*.\n"
1730 "The end points of the grid are set to be the same as for the\n"
1731 "antenna response. The spacing of the grid follows the magnitude of\n"
1732 "the response; the spacing is smaller where the response is high.\n"
1733 "More precisely, the grid points are determined by dividing\n"
1734 "the cumulative sum of the response in equal steps. This makes sense\n"
1735 "if the representation error of the radiance (as a function of\n"
1736 " zenith angle) increases linearly with the grid spacing.\n"
1738 "The WSV *antenna_los* is set to 0.\n"
1740 AUTHORS(
"Patrick Eriksson" ),
1741 OUT(
"antenna_dim",
"mblock_za_grid",
"mblock_aa_grid",
1742 "antenna_response",
"antenna_los" ),
1747 GIN(
"n_za_grid",
"fwhm",
"xwidth_si",
"dx_si" ),
1748 GIN_TYPE(
"Index",
"Numeric",
"Numeric",
"Numeric" ),
1750 GIN_DESC(
"Number of poits to include in*mblock_za_grid*.",
1751 "Full width at half-maximum",
1752 "Half-width of response, in terms of std. dev.",
1753 "Grid spacing, in terms of std. dev." )
1758 (
NAME(
"AntennaMultiBeamsToPencilBeams" ),
1761 "Maps a multi-beam case to a matching pencil beam case.\n"
1763 "Cases with overlapping beams are most efficiently handled by\n"
1764 "letting *antenna_los* have several rows. That is, there are\n"
1765 "multiple beams for each measurement block. The drawback is that\n"
1766 "many variables must be adjusted if the corresponding pencil beam\n"
1767 "spectra shall be calculated. This method makes this adjustment.\n"
1768 "That is, if you have a control file for a multiple beam case and\n"
1769 "for some reason want to avoid the antenna weighting, you add this\n"
1770 "method before *sensor_responseInit*, and remove the call of\n"
1771 "*sensor_responseAntenna* and you will get the matching pencil beam\n"
1774 AUTHORS(
"Patrick Eriksson" ),
1775 OUT(
"sensor_pos",
"sensor_los",
"antenna_los",
"antenna_dim",
1776 "mblock_za_grid",
"mblock_aa_grid" ),
1780 IN(
"sensor_pos",
"sensor_los",
"antenna_los",
"antenna_dim",
1781 "mblock_za_grid",
"mblock_aa_grid",
"atmosphere_dim" ),
1790 (
NAME(
"AntennaOff" ),
1793 "Sets some antenna related variables\n"
1795 "Use this method to set *antenna_dim*, *mblock_za_grid* and\n"
1796 "*mblock_aa_grid* to suitable values (1, [0] and [], respectively)\n"
1797 "for cases when a sensor is included, but the antenna pattern is\n"
1800 AUTHORS(
"Patrick Eriksson" ),
1801 OUT(
"antenna_dim",
"mblock_za_grid",
"mblock_aa_grid" ),
1814 (
NAME(
"AntennaSet1D" ),
1817 "Sets the antenna dimension to 1D.\n"
1819 "Sets *antenna_dim* to 1 and sets *mblock_aa_grid* to be empty.\n"
1821 AUTHORS(
"Patrick Eriksson" ),
1822 OUT(
"antenna_dim",
"mblock_aa_grid" ),
1835 (
NAME(
"AntennaSet2D" ),
1838 "Sets the antenna dimension to 2D.\n"
1840 "Sets *antenna_dim* to 2.\n"
1842 "It is only allowed to set *antenna_dim* to 2 when *atmosphere_dim*\n"
1845 AUTHORS(
"Patrick Eriksson" ),
1846 OUT(
"antenna_dim" ),
1850 IN(
"atmosphere_dim" ),
1859 (
NAME(
"antenna_responseGaussian" ),
1862 "Sets up a gaussian antenna response.\n"
1864 "The method assumes that the response is the same for all\n"
1865 "frequencies and polarisations, and that it can be modelled as\n"
1868 "The grid generated can be written as\n"
1869 " si * [-xwidth_si:dx_si:xwidth_si]\n"
1870 "where si is the standard deviation corresponding to the FWHM.\n"
1871 "That is, width and spacing of the grid is specified in terms of\n"
1872 "number of standard deviations. If xwidth_si is set to 2, the\n"
1873 "response will cover about 95% the complete response. For\n"
1874 "xwidth_si=3, about 99% is covered.\n"
1876 AUTHORS(
"Patrick Eriksson" ),
1877 OUT(
"antenna_response" ),
1882 GIN(
"fwhm",
"xwidth_si",
"dx_si" ),
1883 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric" ),
1885 GIN_DESC(
"Full width at half-maximum",
1886 "Half-width of response, in terms of std. dev.",
1887 "Grid spacing, in terms of std. dev." )
1895 "Appends a workspace *in* variable to another workspace *out* variable.\n"
1897 "This method can append a workspace variable\n"
1898 "to another workspace variable of the same group. (E.g., a\n"
1899 "*ArrayOfMatrix* to another * ArrayOfMatrix*.)\n"
1901 "This method is not implemented for all types, just for those where an\n"
1902 "append makes sense (see variable list below.).\n"
1904 "As always, output comes first in the argument list!\n"
1909 GOUT_TYPE( ARRAY_GROUPS +
", Vector" +
", String" +
1910 ", ArrayOfSingleScatteringData" +
", ArrayOfScatteringMetaData" ),
1911 GOUT_DESC(
"The variable to append to." ),
1914 GIN_TYPE( ARRAY_GROUPS +
", Vector" +
", String" +
1915 ", SingleScatteringData" +
", ScatteringMetaData" ),
1917 GIN_DESC(
"The variable to append." ),
1925 (
NAME(
"ArrayOfIndexSet" ),
1928 "Creates an ArrayOfIndex from the given list of numbers.\n"
1939 GIN_DESC(
"Indexes for initializiation." ),
1945 (
NAME(
"ArrayOfIndexSetConstant" ),
1948 "Creates an ArrayOfIndex of length *nelem*, with all values\n"
1951 AUTHORS(
"Patrick Eriksson" ),
1966 (
NAME(
"ArrayOfStringSet" ),
1969 "Sets a String array according the given text.\n"
1970 "The format is text = [\"String1\",\"String2\",...]\n"
1981 GIN_DESC(
"Strings for initialization." ),
1990 "Runs the agenda that is specified inside the curly braces. ARTS\n"
1991 "controlfiles must define this method. It is executed automatically\n"
1992 "when ARTS is run on the controlfile and cannot be called by the user.\n"
1993 "This methods was used for Arts 1 controlfiles and is now obsolete.\n"
2015 "Runs the agenda that is specified inside the curly braces. ARTS\n"
2016 "controlfiles must define this method. It is executed automatically\n"
2017 "when ARTS is run on the controlfile and cannot be called by the user.\n"
2035 (
NAME(
"AtmFieldsCalc" ),
2038 "Interpolation of raw atmospheric fields.\n"
2040 "An atmospheric scenario includes the following data for each\n"
2041 "position (pressure, latitude, longitude) in the atmosphere:\n"
2042 " 1. temperature field\n"
2043 " 2. the corresponding altitude field\n"
2044 " 3. vmr fields for the gaseous species\n"
2045 "This method interpolates the fields of raw data (*t_field_raw*,\n"
2046 "*z_field_raw*) which can be stored on arbitrary\n"
2047 "grids to the calculation grids (*p_grid*, *lat_grid*, *lon_grid*).\n"
2049 "With parameter interp_order you can control the order of \n"
2050 "interpolation. The default is 1 (linear interpolation).\n"
2052 AUTHORS(
"Claudia Emde",
"Stefan Buehler" ),
2053 OUT(
"t_field",
"z_field",
"vmr_field" ),
2057 IN(
"p_grid",
"lat_grid",
"lon_grid",
"t_field_raw",
"z_field_raw",
2058 "vmr_field_raw",
"atmosphere_dim" ),
2059 GIN(
"interp_order" ),
2067 (
NAME(
"AtmFieldsCalcExpand1D" ),
2070 "Interpolation of 1D raw atmospheric fields to create 2D or 3D\n"
2071 "homogeneous atmospheric fields.\n"
2073 "The method works as *AtmFieldsCalc*, but accepts only raw 1D\n"
2074 "atmospheres. The raw atmosphere is interpolated to *p_grid* and\n"
2075 "the obtained values are applied for all latitudes, and also\n"
2076 "longitudes for 3D, to create a homogeneous atmosphere.\n"
2078 "The method deals only with the atmospheric fields, and to create\n"
2079 "a true 2D or 3D version of a 1D case, a demand is also that the\n"
2080 "geoid radius is set to be constant for all latitudes/longitudes.\n"
2082 "With parameter interp_order you can control the order of \n"
2083 "interpolation. The default is 1 (linear interpolation).\n"
2085 AUTHORS(
"Patrick Eriksson",
"Claudia Emde",
"Stefan Buehler" ),
2086 OUT(
"t_field",
"z_field",
"vmr_field" ),
2090 IN(
"p_grid",
"lat_grid",
"lon_grid",
"t_field_raw",
"z_field_raw",
2091 "vmr_field_raw",
"atmosphere_dim" ),
2092 GIN(
"interp_order" ),
2100 (
NAME(
"AtmFieldsExpand1D" ),
2103 "Maps a 1D case to 2D or 3D homogeneous atmospheric fields.\n"
2105 "This method takes a 1D atmospheric case and converts it to the\n"
2106 "corresponding case for 2D or 3D. The atmospheric fields (t_field,\n"
2107 "z_field and vmr_field) must be 1D and match *p_grid*. The size of\n"
2108 "the new data is determined by *atmosphere_dim*, *lat_grid* and\n"
2109 "*lon_grid*. That is, these later variables have been changed since\n"
2110 "the original fields were created.\n"
2112 "The method deals only with the atmospheric fields, and to create\n"
2113 "a true 2D or 3D version of a 1D case, a demand is also that the\n"
2114 "geoid radius is set to be constant for all latitudes/longitudes.\n"
2116 AUTHORS(
"Patrick Eriksson" ),
2117 OUT(
"t_field",
"z_field",
"vmr_field" ),
2121 IN(
"t_field",
"z_field",
"vmr_field",
"p_grid",
"lat_grid",
2122 "lon_grid",
"atmosphere_dim" ),
2131 (
NAME(
"AtmFieldsRefinePgrid" ),
2134 "Refine the pressure grid in the atmospheric fields.\n"
2136 "This method is used for absorption lookup table testing. It probably\n"
2137 "has no other application.\n"
2139 "It adds additional vertical grid points to the atmospheric fields, by\n"
2140 "interpolating them in the usual ARTS way (linear in log pressure).\n"
2142 "How fine the new grid will be is determined by the keyword parameter\n"
2143 "p_step. The definition of p_step, and the interpolation behavior, is\n"
2144 "consistent with *abs_lookupSetup* and *abs_lookupSetupBatch*. (New\n"
2145 "points are added between the original ones, so that the spacing is\n"
2146 "always below p_step.)\n"
2150 "t_field",
"z_field",
"vmr_field" ),
2154 IN(
"p_grid",
"lat_grid",
"lon_grid",
2155 "t_field",
"z_field",
"vmr_field",
"atmosphere_dim" ),
2159 GIN_DESC(
"Maximum step in log(p[Pa]) (natural logarithm, as always). If\n"
2160 "the pressure grid is coarser than this, additional points\n"
2161 "are added until each log step is smaller than this.\n")
2166 (
NAME(
"atm_fields_compactAddConstant" ),
2169 "Adds a constant field to atm_fields_compact.\n"
2171 "This is handy for nitrogen or oxygen. The constant value is\n"
2172 "appended at the end of the fields that are already there. All\n"
2173 "dimensions (pressure, latitude, longitude) are filled up, so this\n"
2174 "works for 1D, 2D, or 3D atmospheres.\n"
2177 OUT(
"atm_fields_compact" ),
2181 IN(
"atm_fields_compact" ),
2182 GIN(
"name",
"value" ),
2185 GIN_DESC(
"Name of additional atmospheric field, with constant value.",
2186 "Constant value of additional field." )
2191 (
NAME(
"atm_fields_compactAddSpecies" ),
2194 "Adds a field to atm_fields_compact, with interpolation.\n"
2196 "This method appends a *GriddedField3* to *atm_fields_compact*.\n"
2197 "The *GriddedField3* is interpolated upon the grid of *atm_fields_compact*.\n"
2198 "A typical use case for this method may be to add a climatology of some gas\n"
2199 "when this gas is needed for radiative transfer calculations, but\n"
2200 "not yet present in *atm_fields_compact*. One case where this happens\n"
2201 "is when using the Chevalier dataset for infrared simulations.\n"
2203 "The grids in *atm_fields_compact* must fully encompass the grids in\n"
2204 "the *GriddedField3* to be added, for interpolation to succeed. If\n"
2205 "this is not the case, a RuntimeError is thrown.\n"
2208 OUT(
"atm_fields_compact" ),
2212 IN(
"atm_fields_compact" ),
2213 GIN(
"name",
"value" ),
2214 GIN_TYPE(
"String",
"GriddedField3" ),
2216 GIN_DESC(
"Name of additional atmospheric field.",
2217 "Value of additional atmospheric field." )
2222 (
NAME(
"batch_atm_fields_compactAddConstant" ),
2225 "Adds a constant field to batch_atm_fields_compact.\n"
2227 "Applies *atm_fields_compactAddConstant* to each batch.\n"
2228 "The format is equal to that WSM.\n"
2231 OUT(
"batch_atm_fields_compact" ),
2235 IN(
"batch_atm_fields_compact" ),
2236 GIN(
"name",
"value" ),
2239 GIN_DESC(
"Name of additional atmospheric field, with constant value.",
2240 "Constant value of additional field." )
2246 (
NAME(
"batch_atm_fields_compactAddSpecies" ),
2249 "Adds a field to *batch_atm_fields_compact*, with interpolation.\n"
2251 "This method appends a *GriddedField3* to each *atm_fields_compact*.\n"
2252 "in *batch_atm_fields_compact*. For details, see *atm_fields_compactAddSpecies*.\n"
2255 OUT(
"batch_atm_fields_compact" ),
2259 IN(
"batch_atm_fields_compact" ),
2260 GIN(
"name",
"value" ),
2261 GIN_TYPE(
"String",
"GriddedField3" ),
2263 GIN_DESC(
"Name of additional atmospheric field. Use, e.g., vmr_ch4 for methane VMR",
2264 "Value of additional atmospheric field." )
2270 (
NAME(
"atm_fields_compactFromMatrix" ),
2273 "Set *atm_fields_compact* from 1D profiles in a matrix.\n"
2275 "For clear-sky batch calculations it is handy to store atmospheric\n"
2276 "profiles in an array of matrix. We take such a matrix, and create\n"
2277 "*atm_fields_compact* from it.\n"
2279 "The matrix must contain one row for each pressure level.\n"
2280 "The matrix can contain some additional fields which are not directly used\n"
2281 "by ARTS for calculations but can be required for further processing,\n"
2282 "for e.g. wind speed and direction. In this case, additional fields must\n"
2283 "be put at the end of the matrix and they must be flagged by 'ignore',\n"
2284 "large or small letters, in the field names.\n"
2285 "Recommended row format:\n"
2287 "p[Pa] T[K] z[m] VMR_1[fractional] ... VMR[fractional] IGNORE ... IGNORE\n"
2289 "Works only for *atmosphere_dim==1.*\n"
2292 " field_names : Field names to store in atm_fields_compact.\n"
2293 " This should be, e.g.:\n"
2294 " [\"T[K]\", \"z[m]\", \"vmr_h2o[fractional]\", \"ignore\"]\n"
2295 " There must be one name less than matrix columns,\n"
2296 " because the first column must contain pressure.\n"
2299 OUT(
"atm_fields_compact" ),
2303 IN(
"atmosphere_dim" ),
2310 GIN_DESC(
"One atmosphere matrix from batch input ArrayOfMatrix.",
2311 "Order/names of atmospheric fields." )
2316 (
NAME(
"atm_fields_compactFromMatrixChevalAll" ),
2319 "Set *atm_fields_compact* and *atm_fields_compact_all* from 1D profiles in a matrix.\n"
2321 "This WSM replaces *atm_fields_compactFromMatrix* in case of calculations,\n"
2322 "including scattering. *atm_fields_compact_all* additionally contains \n"
2323 "the mass concentration profiles of scattering particles.\n"
2325 "In case of batch calculations, this WSM is called internally by\n"
2326 "*batch_atm_fields_compactFromArrayOfMatrixChevalAll*.\n"
2327 "In this case *atm_fields_compact* is also still needed, for the WSM *abs_lookupSetupBatch*.\n"
2328 "For that reason both GriddedField4 are defined as output here.\n"
2330 "For further documentation see: *atm_fields_compactFromMatrix*\n"
2334 "p[Pa] T[K] z[m] LWC[kg/m3] IWC[kg/m3] Rain[kg/m2/s] Snow[kg/m2/s] VMR_1[fractional] ... VMR[fractional] IGNORE ... IGNORE\n"
2336 "Works only for *atmosphere_dim*==1.\n"
2338 "Possible future changes: name should fit naming conventions.\n"
2339 "\tWSM *abs_lookupSetupBatch* could be edited to handle *batch_atm_fields_compact*\n"
2340 "\tincluding scattering particles. Then two different *batch_atm_fields_compact*s\n"
2341 "\tand two different *atm_fields_compact*s would no longer be necessary.\n"
2344 OUT(
"atm_fields_compact_all",
"atm_fields_compact" ),
2348 IN(
"atmosphere_dim" ),
2355 GIN_DESC(
"One atmosphere matrix from batch input ArrayOfMatrix.",
2356 "Order/Names of atmospheric fields." )
2362 (
NAME(
"AtmFieldsFromCompact" ),
2365 "Extract pressure grid and atmospheric fields from\n"
2366 "*atm_fields_compact*.\n"
2368 "An atmospheric scenario includes the following data for each\n"
2369 "position (pressure, latitude, longitude) in the atmosphere:\n"
2370 " 1. temperature field\n"
2371 " 2. the corresponding altitude field\n"
2372 " 3. vmr fields for the gaseous species\n"
2374 "This method just splits up the data found in *atm_fields_compact* to\n"
2375 "p_grid, lat_grid, lon_grid, and the various fields. No interpolation.\n"
2376 "See documentation of *atm_fields_compact* for a definition of the data.\n"
2378 "There are some safety checks on the names of the fields: The first\n"
2379 "field must be called \"T\", the second \"z\"*. Remaining fields must be\n"
2380 "trace gas species volume mixing ratios, named for example \"H2O\", \"O3\",\n"
2381 "and so on. The species names must fit the species in *abs_species*.\n"
2382 "(Same species in same order.) Only the species name must fit, not the\n"
2385 "Possible future extensions: Add a keyword parameter to refine the\n"
2386 "pressure grid if it is too coarse. Or a version that interpolates onto\n"
2387 "given grids, instead of using and returning the original grids.\n"
2390 OUT(
"p_grid",
"lat_grid",
"lon_grid",
"t_field",
"z_field",
"vmr_field" ),
2394 IN(
"abs_species",
"atm_fields_compact",
"atmosphere_dim" ),
2403 (
NAME(
"AtmFieldsFromCompactChevalAll" ),
2406 "Extract pressure grid and atmospheric fields from\n"
2407 "*atm_fields_compact_all*.\n"
2409 "In contrast to *atm_fields_compact*, *atm_fields_compact_all*\n"
2410 "also contains mass concentrations for scattering particles\n"
2412 "An atmospheric scenario includes the following data for each\n"
2413 "position (pressure, latitude, longitude) in the atmosphere:\n"
2414 " 1. temperature field\n"
2415 " 2. the corresponding altitude field\n"
2416 " 3. mass concentration fields for the scattering particles\n"
2417 " 4. vmr fields for the gaseous species\n"
2418 "This method just splits up the data found in *atm_fields_compact_all* to\n"
2419 "p_grid, lat_grid, lon_grid, and the various fields. No interpolation.\n"
2420 "See documentation of *atm_fields_compact_all* for a definition of the data.\n"
2422 "NOTE: HARD WIRED code!\n"
2424 "There are some safety checks on the names of the fields: The first\n"
2425 "field must be called \"T\", the second \"z\".\n"
2426 "The following 4 fields must be \"LWC\", \"IWC\", \"Rain\" and \"Snow\".\n"
2427 "Remaining fields must be trace gas species volume mixing ratios,\n"
2428 "named for example \"H2O\", \"O3\", and so on. The species names must fit \n"
2429 "the species in *abs_species*.\n"
2430 "(Same species in same order.) Only the species name must fit, not the\n"
2433 "Possible future extensions: Add a keyword parameter to refine the\n"
2434 "pressure grid if it is too coarse. Or a version that interpolates onto\n"
2435 "given grids, instead of using and returning the original grids.\n"
2436 "Name should fit naming conventions.\n"
2439 OUT(
"p_grid",
"lat_grid",
"lon_grid",
"t_field",
"z_field",
"massdensity_field",
"vmr_field" ),
2443 IN(
"abs_species",
"atm_fields_compact_all",
"atmosphere_dim" ),
2452 (
NAME(
"AtmosphereSet1D" ),
2455 "Sets the atmospheric dimension to 1D.\n"
2457 "Sets *atmosphere_dim* to 1 and gives some variables dummy values.\n"
2459 "The latitude and longitude grids are set to be empty.\n"
2461 AUTHORS(
"Patrick Eriksson" ),
2462 OUT(
"atmosphere_dim",
"lat_grid",
"lon_grid" ),
2475 (
NAME(
"AtmosphereSet2D" ),
2478 "Sets the atmospheric dimension to be 2D.\n"
2480 "Sets *atmosphere_dim* to 2 and the longitude grid to be empty.\n"
2482 AUTHORS(
"Patrick Eriksson" ),
2483 OUT(
"atmosphere_dim",
"lon_grid" ),
2496 (
NAME(
"AtmosphereSet3D" ),
2499 "Sets the atmospheric dimension to 3D.\n"
2501 AUTHORS(
"Patrick Eriksson" ),
2502 OUT(
"atmosphere_dim" ),
2515 (
NAME(
"AtmRawRead" ),
2518 "Reads atmospheric data from a scenario.\n"
2520 "An atmospheric scenario includes the following data for each\n"
2521 "position (pressure, latitude, longitude) in the atmosphere:\n"
2522 " 1. temperature field\n"
2523 " 2. the corresponding altitude field\n"
2524 " 3. vmr fields for the gaseous species\n"
2525 "The data is stored in different files. This methods reads all\n"
2526 "files and creates the variables *t_field_raw*, *z_field_raw* and\n"
2527 "*vmr_field_raw*.\n"
2529 "Files in a scenarios should be named matching the pattern of:\n"
2530 "tropical.H2O.xml\n"
2532 "The files can be anywhere, but they must be all in the same\n"
2533 "directory, selected by 'basename'. The files are chosen by the\n"
2534 "species name. If you have more than one tag group for the same\n"
2535 "species, the same profile will be used.\n"
2538 OUT(
"t_field_raw",
"z_field_raw",
"vmr_field_raw" ),
2542 IN(
"abs_species" ),
2546 GIN_DESC(
"Name of scenario, probably including the full path. For "
2547 "example: \"/smiles_local/arts-data/atmosphere/fascod/"
2553 (
NAME(
"backend_channel_responseFlat" ),
2556 "Sets up a rectangular channel response.\n"
2558 "The response of the backend channels is hee assumed to be constant\n"
2559 "inside the resolution width, and zero outside.\n"
2561 "The method assumes that all channels have the same response.\n"
2563 AUTHORS(
"Patrick Eriksson" ),
2564 OUT(
"backend_channel_response" ),
2569 GIN(
"resolution" ),
2572 GIN_DESC(
"The spectrometer resolution." )
2577 (
NAME(
"backend_channel_responseGaussian" ),
2580 "Sets up a gaussian backend channel response.\n"
2582 "The method assumes that all channels have the same response, and\n"
2583 "that it can be modelled as gaussian.\n"
2585 "The grid generated can be written as\n"
2586 " si * [-xwidth_si:dx_si:xwidth_si]\n"
2587 "where si is the standard deviation corresponding to the FWHM.\n"
2588 "That is, width and spacing of the grid is specified in terms of\n"
2589 "number of standard deviations. If xwidth_si is set to 2, the\n"
2590 "response will cover about 95% the complete response. For\n"
2591 "xwidth_si=3, about 99% is covered.\n"
2593 AUTHORS(
"Patrick Eriksson" ),
2594 OUT(
"backend_channel_response" ),
2599 GIN(
"fwhm",
"xwidth_si",
"dx_si" ),
2600 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric" ),
2602 GIN_DESC(
"Full width at half-maximum",
2603 "Half-width of response, in terms of std. dev.",
2604 "Grid spacing, in terms of std. dev." )
2609 (
NAME(
"basics_checkedCalc" ),
2612 "Checks consistency of the (clear sky) atmosphere.\n"
2614 "The following WSVs are treated: f_grid, stokes_dim, p_grid,\n"
2615 "lat_grid, lon_grid, t_field, z_field, vmr_field, wind_u/v/w_field,\n"
2616 "r_geoid and z_surface.\n"
2617 "If any of these variables are changed, then this method shall be\n"
2618 "called again (no automatic check that this is fulfilled!).\n"
2620 "The tests include:\n"
2621 " 1. That basic control variables *stokes_dim* and *atmosphere_dim*\n"
2622 " are inside defined ranges.\n"
2623 " 2. That *f_grid* is sorted and increasing.\n"
2624 " 3. If atmospheric grids (p/lat/lon_grid) are OK with respect to\n"
2625 " *atmosphere_dim*.\n"
2626 " 4. If atmospheric fields, *r_geoid* and *z_surface* have sizes\n"
2627 " consistent with the atmospheric grids.\n"
2628 " 5. There is no gap between *z_surface* and *z_field*.\n"
2630 "If any test fails, there is an error. Otherwise, *basics_checked*\n"
2633 "The cloudbox is covered by *cloudbox_checked*.\n"
2635 AUTHORS(
"Patrick Eriksson" ),
2636 OUT(
"basics_checked" ),
2640 IN(
"atmosphere_dim",
"p_grid",
"lat_grid",
"lon_grid",
"abs_species",
2641 "z_field",
"t_field",
"vmr_field",
"wind_u_field",
"wind_v_field",
2642 "wind_w_field",
"r_geoid",
"z_surface",
"stokes_dim",
"f_grid" ),
2651 (
NAME(
"batch_atm_fields_compactFromArrayOfMatrix" ),
2654 "Expand batch of 1D atmospheric states to a batch_atm_fields_compact.\n"
2656 "This is used to handle 1D batch cases, for example from the Chevallier\n"
2657 "data set, stored in a matrix.\n"
2659 "The matrix must contain one row for each pressure level.\n"
2660 "The matrix can contain some additional fiels which are not directly used\n"
2661 "by ARTS for calculations but can be required for further processing,\n"
2662 "for e.g. wind speed and direction. In this case, additional fields must\n"
2663 "be put at the end of the matrix and they must be flagged by 'ignore',\n"
2664 "large or small letters, in the field names.\n"
2667 "p[Pa] T[K] z[m] VMR_1[fractional] ... VMR[fractional] IGNORE ... IGNORE\n"
2670 " field_names : Field names to store in atm_fields_compact.\n"
2671 " This should be, e.g.:\n"
2672 " [\"T\", \"z\", \"H2O\", \"O3\", \"ignore\"]\n"
2673 " There must be one name less than matrix columns,\n"
2674 " because the first column must contain pressure.\n"
2676 " extra_field_names : You can add additional constant VMR fields,\n"
2677 " which is handy for O2 and N2. Give here the\n"
2678 " field name, e.g., \"O2\". Default: Empty.\n"
2680 " extra_field_values : Give here the constant field value. Default:\n"
2681 " Empty. Dimension must match extra_field_names.\n"
2684 OUT(
"batch_atm_fields_compact" ),
2688 IN(
"atmosphere_dim" ),
2690 "field_names",
"extra_field_names",
"extra_field_values" ),
2692 "ArrayOfString",
"ArrayOfString",
"Vector" ),
2694 NODEF,
"[]",
"[]" ),
2696 GIN_DESC(
"Batch of atmospheres stored in one array of matrix",
2697 "Order/names of atmospheric fields.",
2698 "Names of additional atmospheric fields, with constant values.",
2699 "Constant values of additional fields.")
2705 (
NAME(
"batch_atm_fields_compactFromArrayOfMatrixChevalAll" ),
2708 "Expand batch of 1D atmospheric states to a *batch_atm_fields_compact_all*.\n"
2710 "In contrast to *batch_atm_fields_compactFromArrayOfMatrix*, this WSM\n"
2711 "includes reading scattering particle profiles from the Chevallier\n"
2712 "data set, stored in a matrix.\n"
2714 "This WSM fully replaces *batch_atm_fields_compactFromArrayOfMatrix*, since the\n"
2715 "*batch_atm_fields_compact* without scattering particle profiles is also still\n"
2716 "an output. It is needed for lookup table creation in WSM *abs_lookupSetupBatch*.\n"
2718 "Please also see:*batch_atm_fields_compactFromArrayOfMatrix*.\n"
2722 "p[Pa] T[K] z[m] LWC[kg/m3] IWC[kg/m3] Rain[kg/m2/s] Snow[kg/m2/s] VMR_1[fractional] ... VMR[fractional] IGNORE ... IGNORE\n"
2725 " field_names : Field names to store in atm_fields_compact_all.\n"
2726 " This should be, e.g.:\n"
2727 " [\"T\", \"z\", \"LWC\", \"IWC\", \"Rain\", \"Snow\", \"H2O\", \"O3\", \"ignore\"]\n"
2728 " There must be one name less than matrix columns,\n"
2729 " because the first column must contain pressure.\n"
2731 " extra_field_names : You can add additional constant VMR fields,\n"
2732 " which is handy for O2 and N2. Give here the\n"
2733 " field name, e.g., \"O2\". Default: Empty.\n"
2735 " extra_field_values : Give here the constant field value. Default:\n"
2736 " Empty. Dimension must match extra_field_names.\n"
2738 "Possible future changes:\n"
2740 " Name should fit naming convention.\n"
2742 " WSM *abs_lookupSetupBatch* could be edited to handle *batch_atm_fields_compact*\n"
2743 " including scattering particles. Then two different *batch_atm_fields_compact*s\n"
2744 " and two different *atm_fields_compact*s would no longer be necessary.\n"
2748 OUT(
"batch_atm_fields_compact",
"batch_atm_fields_compact_all" ),
2752 IN(
"atmosphere_dim" ),
2754 "field_names",
"extra_field_names",
"extra_field_values" ),
2756 "ArrayOfString",
"ArrayOfString",
"Vector" ),
2758 NODEF,
"[]",
"[]" ),
2760 GIN_DESC(
"Batch of atmospheres stored in one array of matrix,\n"
2761 "including scattering particles.",
2762 "Order/names of atmospheric fields.",
2763 "Names of additional atmospheric fields, with constant values.",
2764 "Constant values of additional fields." )
2769 (
NAME(
"CloudboxGetIncoming" ),
2772 "Calculates incoming radiation field of the cloudbox by repeated\n"
2773 "radiative transfer calculations.\n"
2775 "The method performs monochromatic pencil beam calculations for\n"
2776 "all grid positions on the cloudbox boundary, and all directions\n"
2777 "given by scattering angle grids (*scat_za/aa_grid*). Found radiances\n"
2778 "are stored in *scat_i_p/lat/lon* which can be used as boundary\n"
2779 "conditions when scattering inside the cloud box is solved by the\n"
2782 AUTHORS(
"Sreerekha T.R.",
"Claudia Emde" ),
2783 OUT(
"scat_i_p",
"scat_i_lat",
"scat_i_lon" ),
2787 IN(
"iy_clearsky_basic_agenda",
"atmosphere_dim",
"lat_grid",
2788 "lon_grid",
"z_field",
"r_geoid",
"cloudbox_on",
"cloudbox_limits",
2789 "f_grid",
"stokes_dim",
"scat_za_grid",
"scat_aa_grid" ),
2798 (
NAME(
"CloudboxGetIncoming1DAtm" ),
2801 "As *CloudboxGetIncoming* but assumes clear sky part to be 1D."
2803 "The incoming field is calculated only for one position and azimuth\n"
2804 "angle for each cloud box boundary, and obtained values are used\n"
2805 "for all other postions and azimuth angles. This works if a 3D\n"
2806 "cloud box is put into an 1D background atmosphere.\n"
2808 "This method can only be used for 3D cases.\n"
2810 AUTHORS(
"Sreerekha T.R.",
"Claudia Emde" ),
2811 OUT(
"scat_i_p",
"scat_i_lat",
"scat_i_lon",
"cloudbox_on" ),
2815 IN(
"iy_clearsky_basic_agenda",
"atmosphere_dim",
"lat_grid",
2816 "lon_grid",
"z_field",
"r_geoid",
"cloudbox_on",
"cloudbox_limits",
2817 "f_grid",
"stokes_dim",
"scat_za_grid",
"scat_aa_grid" ),
2826 (
NAME(
"cloudboxOff" ),
2829 "Deactivates the cloud box.\n"
2831 "Use this method if no scattering calculations shall be performed.\n"
2832 "The function sets *cloudbox_on* to 0, *cloudbox_limits* to be an\n"
2833 "empty vector and *iy_cloudbox_agenda* to an empty agenda.\n"
2835 AUTHORS(
"Patrick Eriksson" ),
2836 OUT(
"cloudbox_on",
"cloudbox_limits",
"iy_cloudbox_agenda" ),
2850 (
NAME(
"cloudboxSetAutomatically" ),
2853 "Sets the cloud box to encompass the cloud given by the entries\n"
2854 "in *massdensity_field*. \n"
2856 "The function must be called before any *cloudbox_limits* using\n"
2858 "NOTE: only 1-dim case is handeled in the moment!\n"
2860 "The function iterates over all *part_species* and performs a \n"
2861 "check, to see if the corresponding scattering particle profiles do not\n"
2862 "contain a cloud (all values equal zero). If, after all iterations,\n"
2863 "all the considrered profiles proove to contain no cloud,\n"
2864 "the cloudbox is switched off! (see WSM *cloudboxOff*)\n"
2866 "Each scattering particle profile is searched for the first and last\n"
2867 "pressure index, where the value is unequal to zero. This index\n"
2868 "is then copied to *cloudbox_limits*.\n"
2870 "Additionaly the lower cloudbox_limit is altered by\n"
2871 "*cloudbox_margin*.\n"
2872 "The margin is given as a height difference in meters and\n"
2873 "trasformed into a pressure.(via isothermal barometric heightformula)\n"
2874 "This alteration is needed to ensure, that scattered photons\n"
2875 "do not leave and re-enter the cloudbox, due to its convex\n"
2877 "If *cloudbox_margin* is set to -1 (default), the cloudbox will extend to\n"
2878 "the surface. Hence the lower cloudbox_limit is set to 0 (index\n"
2879 "of first pressure level).\n"
2882 OUT(
"cloudbox_on",
"cloudbox_limits"),
2886 IN(
"atmosphere_dim",
"part_species",
"p_grid",
"lat_grid",
"lon_grid",
"massdensity_field"),
2887 GIN(
"cloudbox_margin"),
2890 GIN_DESC(
"The margin alters the lower vertical\n"
2891 "cloudbox limit. Value must be given in [m].\n"
2892 "If cloudbox_margin is set to *-1* (default), the lower\n"
2893 "cloudbox limit equals 0, what corresponds to the surface !\n"
2899 (
NAME(
"cloudboxSetDisort" ),
2902 "For Disort calculation the cloudbox must be extended to\n"
2903 "cover the full atmosphere.\n"
2904 "This method sets *cloudbox_limits* accordingly.\n"
2907 OUT(
"cloudbox_on",
"cloudbox_limits" ),
2921 (
NAME(
"cloudboxSetManually" ),
2924 "Sets the cloud box to encompass the given positions.\n"
2926 "The function sets *cloudbox_on* to 1 and sets *cloudbox_limits*\n"
2927 "following the given pressure, latitude and longitude positions.\n"
2928 "The index limits in *cloudbox_limits* are selected to give the\n"
2929 "smallest possible cloud box that encompass the given points.\n"
2931 "The points must be given in the same order as used in\n"
2932 "*cloudbox_limits*. That means that the first keyword argument\n"
2933 "shall be a higher pressure than argument two, while the latitude\n"
2934 "and longitude points are given in increasing order. Positions\n"
2935 "given for dimensions not used by the selected atmospheric\n"
2936 "dimensionality are ignored.\n"
2938 "The given pressure points can be outside the range of *p_grid*.\n"
2939 "The pressure limit is then set to the end point of *p_grid*.\n"
2940 "The given latitude and longitude points must be inside the range\n"
2941 "of the corresponding grid. In addition, the latitude and longitude\n"
2942 "points cannot be inside the outermost grid ranges as the latitude\n"
2943 "and longitude limits in *cloudbox_limits* are not allowed to be\n"
2944 "grid end points.\n"
2946 AUTHORS(
"Patrick Eriksson" ),
2947 OUT(
"cloudbox_on",
"cloudbox_limits" ),
2951 IN(
"atmosphere_dim",
"p_grid",
"lat_grid",
"lon_grid" ),
2952 GIN(
"p1",
"p2",
"lat1",
"lat2",
"lon1",
2954 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric",
"Numeric",
"Numeric",
2959 "Lower pressure point.",
2960 "Lower latitude point.",
2961 "Upper latitude point.",
2962 "Lower longitude point.",
2963 "Upper longitude point." )
2968 (
NAME(
"cloudboxSetManuallyAltitude" ),
2971 "Sets the cloud box to encompass the given positions.\n"
2973 "As *cloudboxSetManually* but uses altitudes instead of pressure.\n"
2974 "The given altitude points can be outside the range of *z_field*.\n"
2975 "The altitude limit is then set to the end point of *p_grid*.\n"
2978 OUT(
"cloudbox_on",
"cloudbox_limits" ),
2982 IN(
"atmosphere_dim",
"z_field",
"lat_grid",
"lon_grid" ),
2983 GIN(
"z1",
"z2",
"lat1",
"lat2",
"lon1",
2985 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric",
"Numeric",
"Numeric",
2990 "Upper altitude point.",
2991 "Lower latitude point.",
2992 "Upper latitude point.",
2993 "Lower longitude point.",
2994 "Upper longitude point." )
2999 (
NAME(
"cloudbox_checkedCalc" ),
3002 "Checks consistency between the cloudbox and other variables.\n"
3004 "The following WSVs are treated: cloudbox_on, cloudbox_limits and\n"
3005 "wind_u/v/w_field.\n"
3006 "If any of these variables are changed, then this method shall be\n"
3007 "called again (no automatic check that this is fulfilled!).\n"
3009 "The main check is if the cloudbox limits are OK with respect to\n"
3010 "the atmospheric dimensionality and the limits of the atmosphere.\n"
3012 "If any test fails, there is an error. Otherwise, *cloudbox_checked*\n"
3015 AUTHORS(
"Patrick Eriksson" ),
3016 OUT(
"cloudbox_checked" ),
3020 IN(
"basics_checked",
"atmosphere_dim",
"p_grid",
"lat_grid",
3021 "lon_grid",
"wind_u_field",
"wind_v_field",
"wind_w_field",
3022 "cloudbox_on",
"cloudbox_limits" ),
3031 (
NAME(
"complex_nWaterLiebe93" ),
3034 "Complex refractive index of liquid water according to Liebe 1993.\n"
3036 "The method treats liquid water without salt. Thus, not valid below\n"
3037 "10 GHz. Upper frequency limit not known, here set to 1000 GHz.\n"
3038 "Model parameters taken from Atmlab function epswater93 (by\n"
3039 "C. Maetzler), which refer to Liebe 1993 without closer\n"
3042 "Temperature must be between 0 and 100 degrees Celsius.\n"
3044 AUTHORS(
"Patrick Eriksson" ),
3061 "Copy a workspace variable.\n"
3063 "This method can copy any workspace variable\n"
3064 "to another workspace variable of the same group. (E.g., a Matrix to\n"
3065 "another Matrix.)\n"
3067 "As always, output comes first in the argument list!\n"
3071 "Copy(f_grid, p_grid)\n"
3073 "Will copy the content of *p_grid* to *f_grid*. The size of *f_grid*\n"
3074 "is adjusted automatically (the normal behaviour for workspace\n"
3097 "Deletes a workspace variable.\n"
3099 "The variable is marked as uninitialized and its memory freed.\n"
3100 "It is not removed from the workspace though.\n"
3111 GIN_DESC(
"Variable to be deleted." ),
3121 (
NAME(
"DoitAngularGridsSet" ),
3124 "Sets the angular grids for DOIT calculation."
3126 "In this method the angular grids for a DOIT calculation are\n"
3127 "specified. For down-looking geometries it is sufficient to define\n"
3128 "*N_za_grid* and *N_aa_grid*. From these numbers equally spaced\n"
3129 "grids are created and stored in the WSVs *scat_za_grid* and\n"
3132 "For limb simulations it is important to use an optimized zenith \n"
3133 "angle grid with a very fine resolution about 90 degrees. Such a grid can be\n"
3134 "generated using *doit_za_grid_optCalc*. The filename of an optimized\n"
3135 "zenith angle grid can be given as a keyword (*za_grid_opt_file*).\n"
3137 "If a filename is given, the equidistant grid is used for the\n"
3138 "calculation of the scattering integrals and the optimized grid is\n"
3139 "applied for integration of the radiative transfer equation. \n"
3141 "For down-looking cases no filename should be specified (za_grid_opt_file = \"\" ) \n"
3142 "Using only the equidistant grid makes sense to speed up the calculation.\n"
3145 OUT(
"doit_za_grid_size",
"scat_aa_grid",
"scat_za_grid" ),
3150 GIN(
"N_za_grid",
"N_aa_grid",
"za_grid_opt_file" ),
3151 GIN_TYPE(
"Index",
"Index",
"String" ),
3153 GIN_DESC(
"Number of grid points in zenith angle grid. "
3154 "Recommended value is 19.",
3155 "Number of grid points in azimuth angle grid. "
3156 "Recommended value is 37.",
3157 "Name of special grid for RT part." )
3162 (
NAME(
"DoitCloudboxFieldPut" ),
3165 "Method for the DOIT communication between cloudbox and clearsky.\n"
3167 "This method puts the scattered radiation field into the interface\n"
3168 "variables between the cloudbox and the clearsky, which are\n"
3169 "*scat_i_p*, *scat_i_lat* and *scat_i_lon*.\n"
3171 "The best way to calculate spectra including the influence of\n"
3172 "scattering is to set up the *doit_mono_agenda* where this method\n"
3173 "can be included.\n"
3176 OUT(
"scat_i_p",
"scat_i_lat",
"scat_i_lon",
3177 "doit_i_field1D_spectrum" ),
3181 IN(
"scat_i_p",
"doit_i_field",
"f_grid",
"f_index",
"p_grid",
"lat_grid",
3182 "lon_grid",
"scat_za_grid",
"scat_aa_grid",
"stokes_dim",
3183 "atmosphere_dim",
"cloudbox_limits",
"sensor_pos",
"z_field" ),
3192 (
NAME(
"doit_conv_flagAbs" ),
3195 "DOIT convergence test (maximum absolute difference).\n"
3197 "The function calculates the absolute differences for two successive\n"
3198 "iteration fields. It picks out the maximum values for each Stokes\n"
3199 "component separately. The convergence test is fullfilled under the\n"
3200 "following conditions:\n"
3201 " |I(m+1) - I(m)| < epsilon_1 Intensity.\n"
3202 " |Q(m+1) - Q(m)| < epsilon_2 The other Stokes components.\n"
3203 " |U(m+1) - U(m)| < epsilon_3 \n"
3204 " |V(m+1) - V(m)| < epsilon_4 \n"
3205 "These conditions have to be valid for all positions in the\n"
3206 "cloudbox and for all directions.\n"
3209 OUT(
"doit_conv_flag",
"doit_iteration_counter" ),
3213 IN(
"doit_conv_flag",
"doit_iteration_counter",
3214 "doit_i_field",
"doit_i_field_old" ),
3218 GIN_DESC(
"Limits for convergence. A vector with length matching "
3219 "*stokes_dim* with unit [W / (m^2 Hz sr)]."
3225 (
NAME(
"doit_conv_flagLsq" ),
3228 "DOIT convergence test (least squares).\n"
3230 "As *doit_conv_flagAbsBT* but applies a least squares convergence\n"
3231 "test between two successive iteration fields.\n"
3233 "Warning: This method is not recommended because this kind of\n"
3234 "convergence test is not sufficiently strict, so that the\n"
3235 "DOIT result might be wrong.\n"
3238 OUT(
"doit_conv_flag",
"doit_iteration_counter" ),
3242 IN(
"doit_conv_flag",
"doit_iteration_counter",
3243 "doit_i_field",
"doit_i_field_old",
"f_grid",
"f_index" ),
3247 GIN_DESC(
"Limits for convergence. A vector with length matching "
3248 "*stokes_dim* with unit [K]."
3254 (
NAME(
"doit_conv_flagAbsBT" ),
3257 "DOIT convergence test (maximum absolute difference in Rayleigh Jeans "
3260 "As *doit_conv_flagAbs* but convergence limits are specified in\n"
3261 "Rayleigh-Jeans brighntess temperatures.\n"
3263 AUTHORS(
"Sreerekha T.R.",
"Claudia Emde" ),
3264 OUT(
"doit_conv_flag",
"doit_iteration_counter" ),
3268 IN(
"doit_conv_flag",
"doit_iteration_counter",
3269 "doit_i_field",
"doit_i_field_old",
"f_grid",
"f_index" ),
3273 GIN_DESC(
"Limits for convergence. A vector with length matching "
3274 "*stokes_dim* with unit [K]."
3280 (
NAME(
"DoitInit" ),
3283 "Initialises variables for DOIT scattering calculations.\n"
3286 OUT(
"scat_p_index",
"scat_lat_index",
"scat_lon_index",
3287 "scat_za_index",
"scat_aa_index",
"doit_scat_field",
3288 "doit_i_field",
"doit_is_initialized" ),
3292 IN(
"stokes_dim",
"atmosphere_dim",
"scat_za_grid",
"scat_aa_grid",
3293 "doit_za_grid_size",
"cloudbox_on",
"cloudbox_limits",
"scat_data_raw" ),
3302 (
NAME(
"doit_i_fieldIterate" ),
3305 "Iterative solution of the VRTE (DOIT method).\n"
3307 "A solution for the RTE with scattering is found using the\n"
3309 " 1. Calculate scattering integral using *doit_scat_field_agenda*.\n"
3310 " 2. Calculate RT with fixed scattered field using\n"
3311 " *doit_rte_agenda*.\n"
3312 " 3. Convergence test using *doit_conv_test_agenda*.\n"
3314 "Note: The atmospheric dimensionality *atmosphere_dim* can be\n"
3315 " either 1 or 3. To these dimensions the method adapts\n"
3316 " automatically. 2D scattering calculations are not\n"
3320 OUT(
"doit_i_field" ),
3324 IN(
"doit_i_field",
"doit_scat_field_agenda",
"doit_rte_agenda",
3325 "doit_conv_test_agenda" ),
3334 (
NAME(
"doit_i_fieldSetClearsky" ),
3337 "Interpolate clearsky field on all gridpoints in cloudbox.\n"
3339 "This method uses a linear 1D/3D interpolation scheme to obtain the\n"
3340 "radiation field on all grid points inside the cloud box from the\n"
3341 "clear sky field on the cloud box boundary. This radiation field\n"
3342 "is taken as the first guess radiation field in the DOIT module.\n"
3344 "Set the *all_frequencies* to 1 if the clearsky field shall be used\n"
3345 "as initial field for all frequencies. Set it to 0 if the clear sky\n"
3346 "field shall be used only for the first frequency in *f_grid*. For\n"
3347 "later frequencies, *doit_i_field* of the previous frequency is then\n"
3350 AUTHORS(
"Sreerekha T.R. and Claudia Emde" ),
3351 OUT(
"doit_i_field" ),
3355 IN(
"scat_i_p",
"scat_i_lat",
"scat_i_lon",
"f_grid",
3356 "f_index",
"p_grid",
"lat_grid",
"lon_grid",
3357 "cloudbox_limits",
"atmosphere_dim" ),
3358 GIN(
"all_frequencies" ),
3366 (
NAME(
"doit_i_fieldSetConst" ),
3369 "This method sets the initial field inside the cloudbox to a\n"
3370 "constant value. The method works only for monochromatic\n"
3371 "calculations (number of elements in f_grid=1).\n"
3373 "The user can specify a value for each Stokes dimension in the\n"
3374 "control file by *value*.\n"
3377 OUT(
"doit_i_field" ),
3381 IN(
"scat_i_p",
"scat_i_lat",
"scat_i_lon",
"p_grid",
"lat_grid",
3383 "cloudbox_limits",
"atmosphere_dim",
"stokes_dim" ),
3387 GIN_DESC(
"A vector containing 4 elements with the value of the "
3388 "initial field for each Stokes dimension."
3394 (
NAME(
"doit_i_fieldUpdate1D" ),
3397 "RT calculation in cloudbox with fixed scattering integral (1D).\n"
3399 "Updates the radiation field (DOIT method). The method loops\n"
3400 "through the cloudbox to update the radiation field for all\n"
3401 "positions and directions in the 1D cloudbox.\n"
3403 "Note: This method is very inefficient, because the number of\n"
3404 "iterations scales with the number of cloudbox pressure levels.\n"
3405 "It is recommended to use *doit_i_fieldUpdateSeq1D*.\n"
3408 OUT(
"doit_i_field" ),
3412 IN(
"doit_i_field_old",
"doit_scat_field",
"cloudbox_limits",
3413 "abs_scalar_gas_agenda",
3414 "vmr_field",
"spt_calc_agenda",
"scat_za_grid",
"pnd_field",
3415 "opt_prop_part_agenda",
"opt_prop_gas_agenda",
3416 "ppath_step_agenda",
"p_grid",
"z_field",
"r_geoid",
"z_surface",
3417 "t_field",
"f_grid",
"f_index",
"surface_prop_agenda",
3427 (
NAME(
"doit_i_fieldUpdateSeq1D" ),
3430 "RT calculation in cloudbox with fixed scattering integral.\n"
3432 "Updates radiation field (*doit_i_field*) in DOIT module.\n"
3433 "This method loops through the cloudbox to update the\n"
3434 "radiation field for all positions and directions in the 1D\n"
3435 "cloudbox. The method applies the sequential update. For more\n"
3436 "information refer to AUG.\n"
3439 OUT(
"doit_i_field" ),
3443 IN(
"doit_i_field",
"doit_scat_field",
"cloudbox_limits",
3444 "abs_scalar_gas_agenda",
3445 "vmr_field",
"spt_calc_agenda",
"scat_za_grid",
"pnd_field",
3446 "opt_prop_part_agenda",
"opt_prop_gas_agenda",
3447 "ppath_step_agenda",
"p_grid",
"z_field",
"r_geoid",
"z_surface",
3448 "t_field",
"f_grid",
"f_index",
"surface_prop_agenda",
3458 (
NAME(
"doit_i_fieldUpdateSeq1DPP" ),
3461 "RT calculation in cloudbox with fixed scattering integral.\n"
3463 "Update radiation field (*doit_i_field*) in DOIT module.\n"
3464 "This method loops through the cloudbox to update the\n"
3465 "radiation field for all\n"
3466 "positions and directions in the 1D cloudbox. The method applies\n"
3467 "the sequential update and the plane parallel approximation.\n"
3468 "This method is only slightly faster than\n"
3469 "*doit_i_fieldUpdateSeq1D* and it is less accurate. It can not\n"
3470 "be used for limb simulations.\n"
3473 OUT(
"doit_i_field",
"scat_za_index" ),
3477 IN(
"doit_scat_field",
"cloudbox_limits",
3478 "abs_scalar_gas_agenda",
3479 "vmr_field",
"spt_calc_agenda",
"scat_za_grid",
"pnd_field",
3480 "opt_prop_part_agenda",
"opt_prop_gas_agenda",
3481 "ppath_step_agenda",
"p_grid",
"z_field",
"r_geoid",
"t_field",
3482 "f_grid",
"f_index" ),
3491 (
NAME(
"doit_i_fieldUpdateSeq3D" ),
3494 "RT calculation in cloudbox with fixed scattering integral.\n"
3496 "Update radiation field (*doit_i_field*) in DOIT module.\n"
3497 "This method loops through the cloudbox to update the\n"
3498 "radiation field for all positions and directions in the 3D\n"
3499 "cloudbox. The method applies the sequential update. For more\n"
3500 "information please refer to AUG.\n"
3501 "Surface reflections are not yet implemented in 3D scattering\n"
3505 OUT(
"doit_i_field" ),
3509 IN(
"doit_i_field",
"doit_scat_field",
"cloudbox_limits",
3510 "abs_scalar_gas_agenda",
3511 "vmr_field",
"spt_calc_agenda",
"scat_za_grid",
"scat_aa_grid",
3513 "opt_prop_part_agenda",
"opt_prop_gas_agenda",
3514 "ppath_step_agenda",
"p_grid",
"lat_grid",
"lon_grid",
"z_field",
3515 "r_geoid",
"z_surface",
"t_field",
3516 "f_grid",
"f_index",
"doit_za_interp" ),
3525 (
NAME(
"doit_scat_fieldCalc" ),
3528 "Calculates the scattering integral field in the DOIT module.\n"
3530 "The scattering integral field is generated by integrating\n"
3531 "the product of phase matrix and Stokes vector over all incident\n"
3532 "angles. For more information please refer to AUG.\n"
3534 AUTHORS(
"Sreerekha T.R.",
"Claudia Emde" ),
3535 OUT(
"doit_scat_field" ),
3539 IN(
"doit_scat_field",
"pha_mat_spt_agenda",
3540 "doit_i_field",
"pnd_field",
"t_field",
"atmosphere_dim",
3541 "cloudbox_limits",
"scat_za_grid",
"scat_aa_grid",
3542 "doit_za_grid_size" ),
3551 (
NAME(
"doit_scat_fieldCalcLimb" ),
3554 "Calculates the scattering integral field in the DOIT module (limb).\n"
3556 "The scattering integral field is the field generated by integrating\n"
3557 "the product of phase matrix and the Stokes vector over all incident\n"
3560 "For limb simulations it makes sense to use different\n"
3561 "zenith angle grids for the scattering integral part and the RT part,\n"
3562 "because the latter part requires a much finer resolution near\n"
3563 "90 degrees. Taking an optimized grid for the RT part and an equidistant\n"
3564 "grid for the scattering integral part saves very much CPU time.\n"
3565 "This method uses the equidistant za_grid defined in\n"
3566 "*DoitAngularGridsSet* and it should always be used for limb\n"
3569 "For more information please refer to AUG.\n"
3572 OUT(
"doit_scat_field" ),
3576 IN(
"doit_scat_field",
"pha_mat_spt_agenda",
3577 "doit_i_field",
"pnd_field",
"t_field",
"atmosphere_dim",
3578 "cloudbox_limits",
"scat_za_grid",
"scat_aa_grid",
3579 "doit_za_grid_size",
"doit_za_interp" ),
3588 (
NAME(
"DoitScatteringDataPrepare" ),
3591 "Prepares single scattering data for a DOIT scattering calculation.\n"
3593 "First the scattering data is interpolated in frequency using\n"
3594 "*scat_data_monoCalc*. Then the phase matrix data is\n"
3595 "transformed or interpolated from the raw data to the laboratory frame\n"
3596 "for all possible combinations of the angles contained in the angular\n"
3597 "grids which are set in *DoitAngularGridsSet*. The resulting phase\n"
3598 "matrices are stored in *pha_mat_sptDOITOpt*.\n"
3601 OUT(
"pha_mat_sptDOITOpt",
"scat_data_mono" ),
3605 IN(
"doit_za_grid_size",
"scat_aa_grid",
"scat_data_raw",
"f_grid",
3606 "f_index",
"atmosphere_dim",
"stokes_dim" ),
3615 (
NAME(
"DoitWriteIterationFields" ),
3618 "Writes DOIT iteration fields.\n"
3620 "This method writes intermediate iteration fields to xml-files. The\n"
3621 "method can be used as a part of *doit_conv_test_agenda*.\n"
3623 "The iterations to be stored are specified by *iterations*, e.g.:\n"
3624 " iterations = [3, 6, 9]\n"
3625 "In this case the 3rd, 6th and 9th iterations are stored in the\n"
3626 "files 'doit_iteration_3.xml', 'doit_iteration_6.xml' ...\n"
3627 "If a number is larger than the total number of iterations, this\n"
3628 "number is ignored. If all iterations should be stored set\n"
3629 " iterations = [0]\n"
3636 IN(
"doit_iteration_counter",
"doit_i_field" ),
3637 GIN(
"iterations" ),
3645 (
NAME(
"doit_za_grid_optCalc" ),
3648 "Zenith angle grid optimization for scattering calculation.\n"
3650 "This method optimizes the zenith angle grid. As input it requires\n"
3651 "a radiation field (*doit_i_field*) which is calculated on a very\n"
3652 "fine zenith angle grid (*scat_za_grid*). Based on this field\n"
3653 "zenith angle grid points are selected, such that the maximum\n"
3654 "difference between the radiation field represented on the very\n"
3655 "fine zenith angle grid and the radiation field represented on the\n"
3656 "optimized grid (*doit_za_grid_opt*) is less than the accuracy\n"
3657 "(*acc*). Between the grid points the radiation field is interpolated\n"
3658 "linearly or polynomially depending on *doit_za_interp*.\n"
3660 "Note: The method works only for a 1D atmosphere and for one\n"
3664 OUT(
"doit_za_grid_opt" ),
3668 IN(
"doit_i_field",
"scat_za_grid",
"doit_za_interp" ),
3672 GIN_DESC(
"Accuracy to achieve [%]." )
3677 (
NAME(
"doit_za_interpSet" ),
3680 "Define interpolation method for zenith angle dimension.\n"
3682 "You can use this method to choose the interpolation method for\n"
3683 "interpolations in the zenith angle dimension.\n"
3686 OUT(
"doit_za_interp" ),
3690 IN(
"atmosphere_dim" ),
3691 GIN(
"interp_method" ),
3694 GIN_DESC(
"Interpolation method (\"linear\" or \"polynomial\")." )
3699 (
NAME(
"emissionPlanck" ),
3702 "Emission source term for LTE.\n"
3704 "Sets *emission* for cases when emission is considered and local\n"
3705 "thermodynamic equilibrium is valid. The standard definition, in\n"
3706 "ARTS, of the Planck function is followed and the unit of the\n"
3707 "returned data is W/(m^2 Hz sr).\n"
3709 AUTHORS(
"Patrick Eriksson" ),
3714 IN(
"f_grid",
"rte_temperature" ),
3726 "Issues an error and exits ARTS.\n"
3728 "This method can be placed in agendas that must be specified, but\n"
3729 "are expected not to be used for the particular case. An inclusion\n"
3730 "in *surface_prop_agenda* could look like:\n "
3731 "Error{\"Surface interceptions of propagation path not expected.\"}\n"
3733 "Ignore and other dummy method calls must still be included.\n"
3735 AUTHORS(
"Patrick Eriksson" ),
3744 GIN_DESC(
"String describing the error." )
3752 "Stops the execution and exits ARTS.\n"
3754 "This method is handy if you want to debug one of your control\n"
3755 "files. You can insert it anywhere in the control file. When\n"
3756 "it is reached, it will terminate the program.\n"
3758 AUTHORS(
"Patrick Eriksson" ),
3772 (
NAME(
"Extract" ),
3775 "Extract an element from an array.\n"
3777 "Copies the element with the given Index from the input\n"
3778 "variable to the output variable.\n"
3780 "For a Tensor3 as an input, it copies the page with the given\n"
3781 "Index from the input Tensor3 variable to the output Matrix.\n"
3783 "In other words, the selection is always done on the first dimension.\n"
3788 GOUT_TYPE(
"ArrayOfIndex, Numeric, Vector, Matrix, Matrix, Tensor3, Tensor4,"
3789 "Tensor4, ArrayOfGriddedField3, GriddedField4, String" ),
3792 GIN(
"haystack",
"index" ),
3793 GIN_TYPE(
"ArrayOfArrayOfIndex, Vector, ArrayOfVector, ArrayOfMatrix, Tensor3,"
3794 "Tensor4, ArrayOfTensor4, Tensor5, ArrayOfArrayOfGriddedField3,"
3795 "ArrayOfGriddedField4, ArrayOfString",
3798 GIN_DESC(
"Variable to extract from.",
3799 "Position of the element which should be extracted." ),
3807 (
NAME(
"ext_matAddGas" ),
3810 "Add gas absorption to all diagonal elements of extinction matrix.\n"
3812 "The task of this method is to sum up the gas absorption of the\n"
3813 "different gas species and add the result to the extinction matrix.\n"
3820 IN(
"ext_mat",
"abs_scalar_gas" ),
3829 (
NAME(
"ext_matAddPart" ),
3832 "The particle extinction is added to *ext_mat*\n"
3834 "This function sums up the extinction matrices for all particle\n"
3835 "types weighted with particle number density.\n"
3836 "The resulting extinction matrix is added to the workspace\n"
3837 "variable *ext_mat*\n"
3838 "The output of this method is *ext_mat* (stokes_dim, stokes_dim).\n"
3839 "The inputs are the extinction matrix for the single particle type\n"
3840 "*ext_mat_spt* (part_types, stokes_dim, stokes_dim) and the local\n"
3841 "particle number densities for all particle types namely the\n"
3842 "*pnd_field* (part_types, p_grid, lat_grid, lon_grid ) for given\n"
3843 "*p_grid*, *lat_grid*, and *lon_grid*. The particle types required\n"
3844 "are specified in the control file.\n"
3851 IN(
"ext_mat",
"ext_mat_spt",
"pnd_field",
"atmosphere_dim",
3852 "scat_p_index",
"scat_lat_index",
"scat_lon_index" ),
3861 (
NAME(
"ext_matInit" ),
3864 "Initialize extinction matrix.\n"
3866 "This method is necessary, because all other extinction methods just\n"
3867 "add to the existing extinction matrix.\n"
3869 "So, here we have to make it the right size and fill it with 0.\n"
3871 "Note, that the matrix is not really a matrix, because it has a\n"
3872 "leading frequency dimension.\n"
3879 IN(
"f_grid",
"stokes_dim",
"f_index" ),
3888 (
NAME(
"FrequencyFromWavelength" ),
3891 "Convert from wavelength [m] to frequency [Hz].\n"
3893 "This is a generic method. It can take a single wavelength value or a wavelength vector as input.\n"
3912 (
NAME(
"FlagOff" ),
3915 "Sets an index variable that acts as an on/off flag to 0.\n"
3917 AUTHORS(
"Patrick Eriksson" ),
3934 "Sets an index variable that acts as an on/off flag to 1.\n"
3936 AUTHORS(
"Patrick Eriksson" ),
3950 (
NAME(
"ForLoop" ),
3953 "A simple for loop.\n"
3955 "This method is handy when you quickly want to test out a calculation\n"
3956 "with a set of different settings.\n"
3958 "It does a for loop from start to stop in steps of step. (Who would\n"
3959 "have guessed that.) For each iteration, the agenda *forloop_agenda* is\n"
3960 "executed. Inside the agenda, the variable *forloop_index* is available\n"
3961 "as index counter.\n"
3963 "There are no other inputs to *forloop_agenda*, and also no outputs. That\n"
3964 "means, if you want to get any results out of this loop, you have to\n"
3965 "save it to files (for example with *WriteXMLIndexed*), since\n"
3966 "variables used inside the agenda will only be local.\n"
3968 "Note that this kind of for loop is not parallel.\n"
3970 "The method is intended for simple testing, not as a replacement of\n"
3971 "*ybatchCalc*. However, it is compatible with *ybatchCalc*, in the sense\n"
3972 "that *ybatchCalc* may occur inside *forloop_agenda*.\n"
3979 IN(
"forloop_agenda" ),
3980 GIN(
"start",
"stop",
"step" ),
3981 GIN_TYPE(
"Index",
"Index",
"Index" ),
3990 (
NAME(
"f_gridFromGasAbsLookup" ),
3993 "Sets *f_grid* to the frequency grid of *abs_lookup*.\n"
3995 "Must be called between importing/creating raw absorption table and\n"
3996 "call of *abs_lookupAdapt*.\n"
4012 (
NAME(
"f_gridFromSensorAMSU" ),
4015 "Automatically calculate f_grid to match the sensor.\n"
4017 "This method is handy if you are simulating an AMSU-type instrument,\n"
4018 "consisting of a few discrete channels. The case that channels touch,\n"
4019 "as for MHS, is handled correctly. But the case that channels overlap\n"
4020 "is not (yet) handled and results in an error message.\n"
4022 "The method calculates *f_grid* to match the instrument, as given by\n"
4023 "the local oscillator frequencies *lo_multi*, the backend\n"
4024 "frequencies *f_backend_multi*, and the backend channel\n"
4025 "responses *backend_channel_response_multi*.\n"
4027 "You have to specify the desired spacing in the keyword *spacing*,\n"
4028 "which has a default value of 100 MHz. (The actual value is 0.1e9,\n"
4029 "since our unit is Hz.)\n"
4031 "The produced grid will not have exactly the requested spacing, but\n"
4032 "will not be coarser than requested. The algorithm starts with the band\n"
4033 "edges, then adds additional points until the spacing is at least as\n"
4034 "fine as requested.\n"
4036 "There is a similar method for HIRS-type instruments,\n"
4037 "see *f_gridFromSensorHIRS*.\n"
4039 AUTHORS(
"Stefan Buehler, Mathias Milz" ),
4044 IN(
"lo_multi",
"f_backend_multi",
"backend_channel_response_multi" ),
4048 GIN_DESC(
"Desired grid spacing in Hz." )
4053 (
NAME(
"f_gridFromSensorHIRS" ),
4056 "Automatically calculate f_grid to match the sensor.\n"
4058 "This method is handy if you are simulating a HIRS-type instrument,\n"
4059 "consisting of a few discrete channels.\n"
4061 "It calculates f_grid to match the instrument, as given by the nominal\n"
4062 "band frequencies *f_backend* and the spectral channel response\n"
4063 "functions given by *backend_channel_response*.\n"
4065 "You have to specify the desired spacing in the keyword *spacing*, which\n"
4066 "has a default value of 5e8 Hz.\n"
4068 "The produced grid will not have exactly the requested spacing, but\n"
4069 "will not be coarser than requested. The algorithm starts with the band\n"
4070 "edges, then adds additional points until the spacing is at least as\n"
4071 "fine as requested.\n"
4073 "There is a similar method for AMSU-type instruments, see\n"
4074 "*f_gridFromSensorAMSU*.\n"
4081 IN(
"f_backend",
"backend_channel_response" ),
4085 GIN_DESC(
"Desired grid spacing in Hz." )
4090 (
NAME(
"f_gridSelectFIndex" ),
4093 "Reduce f_grid to the frequency given by f_index.\n"
4095 "This is one of the methods necessary to do line by line absorption\n"
4096 "calculations inside *abs_scalar_gas_agenda*.\n"
4098 "It reduces the f_grid to only one frequency, the one given by\n"
4099 "f_index. If f_index is -1, then all frequencies are kept. This\n"
4100 "behavior is consistent with *abs_scalar_gasExtractFromLookup*.\n"
4107 IN(
"f_grid",
"f_index" ),
4116 (
NAME(
"Massdensity_cleanup" ),
4119 "This WSM checks if *massdensity_field* contains values smaller than\n"
4120 "*massdensity_threshold*. In this case, these values will be set to zero.\n"
4122 "The Method should be applied if *massdensity_field* contains unrealistic small\n"
4123 "or erroneous data. (e.g. the chevallierl_91l data sets contain these small values)\n"
4125 "*Massdensity_cleanup* is called after generation of atmopheric fields.\n"
4127 "*Default value*:\t1e-15\n"
4130 OUT(
"massdensity_field" ),
4134 IN(
"massdensity_field" ),
4135 GIN(
"massdensity_threshold" ),
4138 GIN_DESC(
"Values in *massdensity_field* smaller than *massdensity_threshold* will be set to zero." )
4146 "Ignore a workspace variable.\n"
4148 "This method is handy for use in agendas in order to suppress warnings\n"
4149 "about unused input workspace variables. What it does is: Nothing!\n"
4150 "In other words, it just ignores the variable it is called on.\n"
4152 "This method can ignore any workspace variable\n"
4157 "AgendaSet(els_agenda){\n"
4158 " Ignore(ls_sigma)\n"
4162 "Without Ignore you would get an error message, because 'els_agenda' is\n"
4163 "supposed to use the Doppler width 'ls_sigma', but the Lorentz lineshape\n"
4164 "'elsLorentz' does not need it.\n"
4175 GIN_DESC(
"Variable to be ignored." ),
4183 (
NAME(
"INCLUDE" ),
4186 "Includes the contents of another controlfile.\n"
4188 "The INCLUDE statement inserts the contents of the controlfile\n"
4189 "with the given name into the current controlfile.\n"
4190 "If the filename is given without path information, ARTS will\n"
4191 "first search for the file in all directories specified with the\n"
4192 "-I (see arts -h) commandline option and then in directories given\n"
4193 "in the environment variable ARTS_INCLUDE_PATH. In the environment\n"
4194 "variable multiple paths have to be separated by colons.\n"
4196 "Note that INCLUDE is not a workspace method and thus the\n"
4197 "syntax is different:\n"
4200 " INCLUDE \"general.arts\"\n"
4203 "Includes can also be nested. In the example above general.arts\n"
4204 "can contain further includes which will then be treated\n"
4207 "The idea behind this mechanism is that you can write common settings\n"
4208 "for a bunch of calculations into one file. Then, you can create\n"
4209 "several controlfiles which include the basic settings and tweak them\n"
4210 "for different cases. When you decide to make changes to your setup\n"
4211 "that should apply to all calculations, you only have to make a\n"
4212 "single change in the include file instead of modifying all your\n"
4229 (
NAME(
"IndexSet" ),
4232 "Sets an index workspace variable to the given value.\n"
4234 AUTHORS(
"Patrick Eriksson" ),
4249 (
NAME(
"IndexStep" ),
4252 "Performs i2 = i1 + 1\n"
4254 "Input and output can be same variable.\n"
4256 AUTHORS(
"Patrick Eriksson" ),
4265 GIN_DESC(
"Input index variable." )
4270 (
NAME(
"InterpAtmFieldToRteGps" ),
4273 "Scalar interpolation of atmospheric fields.\n"
4275 "The position is specified by the combination of *rte_gp_p*,\n"
4276 "*rte_gp_lat* and *rte_gp_lon*.\n"
4278 AUTHORS(
"Patrick Eriksson" ),
4282 GOUT_DESC(
"Value obtained by the interpolation." ),
4283 IN(
"atmosphere_dim",
"rte_gp_p",
"rte_gp_lat",
"rte_gp_lon" ),
4287 GIN_DESC(
"Field to interpolate." )
4292 (
NAME(
"InterpSurfaceEmissivityFieldIncLatLon" ),
4295 "Interpolation of surface emissivity specified as a function of\n"
4296 "incidence angle, latitude and longitude.\n"
4298 "The surface emissivity field has here three dimension, with\n"
4299 "incidence angle as first/column dimension, latitude as second/row\n"
4300 "dimension and longitude as third/page dimension. Grid names must\n"
4301 "be set exactly to \"Incidence angle\", \"Latitude\" and\n"
4302 "\"Longitude\". No extrapolation is allowed.\n"
4304 "For 1D cases it is expected that the latitude and longitude grids\n"
4305 "have both a length of 1. For 2D the same applies to the longitude\n"
4308 "This method can be used together with e.g.\n"
4309 "*surfaceFlatSingleEmissivity*.\n"
4311 AUTHORS(
"Patrick Eriksson" ),
4315 GOUT_DESC(
"Value obtained by interpolation" ),
4316 IN(
"atmosphere_dim",
"rte_pos",
"rte_los" ),
4320 GIN_DESC(
"Gridded field to be interpolated." )
4325 (
NAME(
"InterpSurfaceFieldToRteGps" ),
4328 "Scalar interpolation of surface fields.\n"
4330 "The position is specified by the combination of *rte_gp_lat* and\n"
4333 AUTHORS(
"Patrick Eriksson" ),
4337 GOUT_DESC(
"Value obtained by interpolation." ),
4338 IN(
"atmosphere_dim",
"rte_gp_lat",
"rte_gp_lon" ),
4342 GIN_DESC(
"Field to interpolate." )
4347 (
NAME(
"iyBeerLambertStandardClearsky" ),
4350 "Standard method for handling transmission measurements.\n"
4352 "Designed to be part of *iy_clearsky_agenda*. That is, only valid\n"
4353 "outside the cloudbox (no scattering or polarised absorption).\n"
4355 "This method works exactly as *iyEmissionStandardClearsky*, but does\n"
4356 "add any emission. In fact, the latter method with *emission_agenda*\n"
4357 "set to return zero would give exactly the same result as this WSM.\n"
4358 "For propagation paths above the surface, the result is the output\n"
4359 "of *iy_space_agenda* times the (vector) transmission through the\n"
4360 "atmosphere (i.e. standard Beer-Lambert). \n"
4362 "If the propagation paths intercepts with the surface, the surface\n"
4363 "variables are used as for *iyEmissionStandardClearsky*, and \n"
4364 "*surface_emission* should probably be set to 0. Multiple-beams\n"
4365 "will be followed if *surface_los* has length > 1.\n"
4367 "*iy_aux* is not set.\n"
4369 AUTHORS(
"Patrick Eriksson" ),
4370 OUT(
"iy",
"iy_error",
"iy_error_type",
"iy_aux",
"diy_dx" ),
4374 IN(
"iy_error",
"iy_error_type",
"iy_aux",
"diy_dx",
4375 "iy_agenda_call1",
"iy_transmission",
4376 "rte_pos",
"rte_los",
"jacobian_do",
4377 "atmosphere_dim",
"p_grid",
"lat_grid",
"lon_grid",
"z_field",
4378 "t_field",
"vmr_field",
"wind_u_field",
"wind_v_field",
4379 "wind_w_field",
"r_geoid",
"z_surface",
"cloudbox_on",
4380 "cloudbox_limits",
"stokes_dim",
"f_grid",
"abs_species",
4381 "ppath_step_agenda",
"abs_scalar_gas_agenda",
"iy_clearsky_agenda",
4382 "iy_space_agenda",
"surface_prop_agenda",
"iy_cloudbox_agenda",
4383 "jacobian_quantities",
"jacobian_indices" ),
4392 (
NAME(
"iyBeerLambertStandardCloudbox" ),
4395 "Standard method for handling transmission measurements.\n"
4397 "Designed to be part of *iy_cloudbox_agenda*, and is thus a\n"
4398 "complement to *iyBeerLambertStandardClearsky*.\n"
4400 "Only scattering out of the propagation path is considered. Thus,\n"
4401 "this method could be used for direct solar occultation measurements\n"
4402 "but clearly not for observations of scattered solar radiation.\n"
4404 "For regions of no scattering there is a marginal difference between\n"
4405 "running this method and the corresponding pure clear-sky agenda,\n"
4406 "and there is not critical to set the cloudbox limits in a \"tight\"\n"
4409 AUTHORS(
"Patrick Eriksson" ),
4410 OUT(
"iy",
"iy_error",
"iy_error_type",
"iy_aux",
"diy_dx" ),
4414 IN(
"iy_error",
"iy_error_type",
"iy_aux",
"diy_dx",
"iy_transmission",
4415 "rte_pos",
"rte_los",
"jacobian_do",
"atmosphere_dim",
4416 "p_grid",
"lat_grid",
"lon_grid",
"z_field",
"t_field",
4417 "vmr_field",
"r_geoid",
"z_surface",
"cloudbox_on",
4418 "cloudbox_limits",
"stokes_dim",
"f_grid",
"ppath_step_agenda",
4419 "abs_scalar_gas_agenda",
"iy_clearsky_agenda",
"pnd_field",
4420 "use_mean_scat_data",
"scat_data_raw",
"opt_prop_gas_agenda" ),
4429 (
NAME(
"iyEmissionStandardClearsky" ),
4432 "Standard method for radiative transfer calculations with emission.\n"
4434 "Designed to be part of *iy_clearsky_agenda*. That is, only valid\n"
4435 "outside the cloudbox (no scattering or polarised absorption).\n"
4436 "Assumes local thermodynamic equilibrium for emission.\n"
4438 "The overall strategy is to take the average of the absorption and\n"
4439 "the emission source function at the end points of each step of\n"
4440 "the propagation path. See further the user guide. *iy_error*\n"
4441 "is considered to be 0. \n"
4443 "The WSV *iy_aux* is set to hold the transmission, if the radiative\n"
4444 "background is space or the surface. That is, as long as there is no\n"
4445 "intersection with a cloudbox, the method sets *iy_aux* to the\n"
4446 "transmission through the atmosphere either down to the surface, or\n"
4447 "to the top of the atmosphere. The treatment of *iy_aux* if there\n"
4448 "is an interesection with the cloudbox depends on the scattering\n"
4449 "method selected.\n"
4451 AUTHORS(
"Patrick Eriksson" ),
4452 OUT(
"iy",
"iy_error",
"iy_error_type",
"iy_aux",
"diy_dx" ),
4456 IN(
"iy_error",
"iy_error_type",
"iy_aux",
"diy_dx",
4457 "iy_agenda_call1",
"iy_transmission",
4458 "rte_pos",
"rte_los",
"jacobian_do",
4459 "atmosphere_dim",
"p_grid",
"lat_grid",
"lon_grid",
"z_field",
4460 "t_field",
"vmr_field",
"wind_u_field",
"wind_v_field",
4461 "wind_w_field",
"r_geoid",
"z_surface",
4462 "cloudbox_on",
"cloudbox_limits",
"stokes_dim",
"f_grid",
4463 "abs_species",
"ppath_step_agenda",
"emission_agenda",
4464 "abs_scalar_gas_agenda",
"iy_clearsky_agenda",
"iy_space_agenda",
4465 "surface_prop_agenda",
"iy_cloudbox_agenda",
4466 "jacobian_quantities",
"jacobian_indices" ),
4475 (
NAME(
"iyEmissionStandardClearskyBasic" ),
4478 "As *iyEmissionStandardClearsky*, but lacking support for auxilary\n"
4479 "variables and jacobian calculations.\n"
4481 "Designed to be part of *iy_clearsky_basic_agenda*. See further\n"
4482 "*iyEmissionStandardClearsky*.\n"
4484 AUTHORS(
"Patrick Eriksson" ),
4489 IN(
"rte_pos",
"rte_los",
"jacobian_do",
"atmosphere_dim",
"p_grid",
4490 "lat_grid",
"lon_grid",
"z_field",
"t_field",
"vmr_field",
4491 "wind_u_field",
"wind_v_field",
"wind_w_field",
"r_geoid",
4492 "z_surface",
"cloudbox_on",
"cloudbox_limits",
"stokes_dim",
4493 "f_grid",
"ppath_step_agenda",
"emission_agenda",
4494 "abs_scalar_gas_agenda",
"iy_clearsky_basic_agenda",
4495 "iy_space_agenda",
"surface_prop_agenda",
"iy_cloudbox_agenda" ),
4507 "Interface to Monte Carlo part for *iy_clearsky_agenda*.\n"
4509 "Basically an interface to *MCGeneral* for doing monochromatic\n"
4510 "pencil beam calculations. This functions allows Monte Carlo (MC)\n"
4511 "calculations for sets of frequencies and sensor pos/los in a single\n"
4512 "run. Sensor responses can be included in the standard manner\n"
4513 "(through *yCalc*).\n"
4515 "MC unit is set as for *MCGeneral*. No antenna pattern is included.\n"
4517 "This function does not apply the MC approach when it comes\n"
4518 "to sensor properties. These properties are not considered when\n"
4519 "tracking photons, which is done in *MCGeneral* (but then only for\n"
4520 "the antenna pattern).\n"
4522 "The MC calculation errors are all assumed be uncorrelated and each\n"
4523 "have a normal distribution. These properties are of relevance when\n"
4524 "weighting the errors with the sensor repsonse matrix. The seed is\n"
4525 "reset for each call of *MCGeneral* to obtain uncorrelated errors.\n"
4527 "MC control arguments (mc_std_err, mc_max_time, mc_max_iter and\n"
4528 "mc_z_field_is_1D) as for *MCGeneral*. The arguments are applied\n"
4529 "for each monochromatic pencil beam calculation individually.\n"
4531 "*iy_aux* is not set.\n"
4533 AUTHORS(
"Patrick Eriksson" ),
4534 OUT(
"iy",
"iy_error",
"iy_error_type",
"iy_aux",
"diy_dx" ),
4538 IN(
"iy_error",
"iy_error_type",
"iy_aux",
"diy_dx",
4539 "iy_agenda_call1",
"iy_transmission",
4540 "rte_pos",
"rte_los",
4541 "jacobian_do",
"atmosphere_dim",
"p_grid",
"lat_grid",
4542 "lon_grid",
"z_field",
"t_field",
"vmr_field",
"r_geoid",
4543 "z_surface",
"cloudbox_on",
"cloudbox_limits",
"cloudbox_checked",
4544 "stokes_dim",
"f_grid",
"scat_data_raw",
4545 "iy_space_agenda",
"surface_prop_agenda",
"abs_scalar_gas_agenda",
4546 "opt_prop_gas_agenda",
"pnd_field",
"y_unit",
4547 "mc_std_err",
"mc_max_time",
"mc_max_iter"),
4556 (
NAME(
"iyInterpCloudboxField" ),
4559 "Interpolates the intensity field of the cloud box.\n"
4561 "This is the standard method to put in *iy_cloudbox_agenda* if the\n"
4562 "the scattering inside the cloud box is handled by the DOIT method.\n"
4564 "The intensity field is interpolated to the position (specified by\n"
4565 "*rte_gp_p/lat/lon*) and direction (specified by *scat_za/aa_grid*)\n"
4566 "given. A linear interpolation is used for all dimensions.\n"
4568 "The intensity field on the cloux box boundaries is provided by\n"
4569 "*scat_i_p/lat/lon* and these variables are interpolated if the\n"
4570 "given position is at any boundary.\n"
4572 "Interpolation of the internal field is not yet possible.\n"
4574 "Further, *iy_aux* is set to the transmission to the boundary of the\n"
4575 "cloudbox. *iy_error* is so far set to a constant value of\n"
4576 "[0.5 0.1 0.1 0.1] K (the RJBT for each Stokes element). These\n"
4577 "values are valid at the cloudbox boundary, and weighted with the\n"
4578 "transmission to the sensor. *iy_error_type* is set to 2.\n"
4581 OUT(
"iy",
"iy_error",
"iy_error_type",
"iy_aux",
"diy_dx" ),
4585 IN(
"iy_error",
"iy_error_type",
"iy_aux",
"diy_dx",
4587 "scat_i_p",
"scat_i_lat",
"scat_i_lon",
"doit_i_field1D_spectrum",
4588 "rte_gp_p",
"rte_gp_lat",
"rte_gp_lon",
"rte_los",
"jacobian_do",
4589 "cloudbox_on",
"cloudbox_limits",
"atmosphere_dim",
"stokes_dim",
4590 "scat_za_grid",
"scat_aa_grid",
"f_grid" ),
4599 (
NAME(
"iyInterpPolyCloudboxField" ),
4602 "As *iyInterpCloudboxField* but performs cubic interpolation.\n"
4604 "Works so far only for 1D cases, and accordingly a cubic\n"
4605 "interpolation along *scat_za_grid* is performed.\n"
4607 "*iy_aux*, *iy_error* and *iy_error_type* treated as by|n"
4608 "*iyInterpPolyCloudboxField*.\n"
4611 OUT(
"iy",
"iy_error",
"iy_error_type",
"iy_aux",
"diy_dx" ),
4615 IN(
"iy_error",
"iy_error_type",
"iy_aux",
"diy_dx",
4617 "scat_i_p",
"scat_i_lat",
"scat_i_lon",
"doit_i_field1D_spectrum",
4618 "rte_gp_p",
"rte_gp_lat",
"rte_gp_lon",
"rte_los",
"jacobian_do",
4619 "cloudbox_on",
"cloudbox_limits",
4620 "atmosphere_dim",
"stokes_dim",
"scat_za_grid",
"scat_aa_grid",
4630 (
NAME(
"jacobianAddAbsSpecies" ),
4633 "Includes an absorption species in the Jacobian.\n"
4635 "Details are given in the user guide.\n"
4637 "For 1D or 2D calculations the latitude and/or longitude grid of\n"
4638 "the retrieval field should set to have zero length.\n"
4640 "There are two possible calculation methods:\n"
4641 " \"analytical\" : (semi-)analytical expressions are used\n"
4642 " \"perturbation\" : pure numerical perturbations are used\n"
4644 "The retrieval unit can be:\n"
4645 " \"vmr\" : Volume mixing ratio.\n"
4646 " \"nd\" : Number density.\n"
4647 " \"rel\" : Relative unit (e.g. 1.1 means 10% more of the gas).\n"
4648 " \"logrel\" : The retrieval is performed with the logarithm of\n"
4649 " the \"rel\" option.\n"
4651 "For perturbation calculations the size of the perturbation is set\n"
4652 "by the user. The unit for the perturbation is the same as for the\n"
4655 AUTHORS(
"Mattias Ekstrom",
"Patrick Eriksson" ),
4656 OUT(
"jacobian_quantities",
"jacobian_agenda" ),
4660 IN(
"jacobian_quantities",
"jacobian_agenda",
4661 "atmosphere_dim",
"p_grid",
"lat_grid",
"lon_grid" ),
4662 GIN(
"g1",
"g2",
"g3",
"species",
"method",
"unit",
"dx" ),
4663 GIN_TYPE(
"Vector",
"Vector",
"Vector",
"String",
"String",
"String",
4666 GIN_DESC(
"Pressure retrieval grid.",
4667 "Latitude retrieval grid.",
4668 "Longitude retreival grid.",
4669 "The species tag of the retrieval quantity.",
4670 "Calculation method. See above.",
4671 "Retrieval unit. See above.",
4672 "Size of perturbation."
4682 (
NAME(
"jacobianAddFreqShiftAndStretch" ),
4685 "Includes a frequency fit in the Jacobian.\n"
4687 "Retrieval of deviations between nominal and actual backend\n"
4688 "frequencies can be included by this method. The calculations can be\n"
4689 "performed in the following ways:\n"
4690 " calcmode = \"interp\": Interpolation of monochromatic spectra,\n"
4691 " shifted with *df* from nominal values.\n"
4693 "The frequencies can be fitted with 1 or 2 variables. The first one\n"
4694 "is a \"shift\". That is, an off-set common for all backend channels.\n"
4695 "The second variable is \"stretch\", that is included only if\n"
4696 "*do_stretch* is set to 1. The stretch is a frequency shift that goes\n"
4697 "from -x at the first channel and increases linearly to reach x at\n"
4698 "the last channel, where x is the retrieved value.\n"
4700 AUTHORS(
"Patrick Eriksson" ),
4701 OUT(
"jacobian_quantities",
"jacobian_agenda" ),
4705 IN(
"jacobian_quantities",
"jacobian_agenda",
"f_grid" ),
4706 GIN(
"calcmode",
"df",
"do_stretch" ),
4707 GIN_TYPE(
"String",
"Numeric",
"Index" ),
4709 GIN_DESC(
"Calculation method. See above",
4710 "Size of perturbation to apply.",
4711 "Flag to also include frequency stretch."
4717 (
NAME(
"jacobianAddPointingZa" ),
4720 "Adds sensor pointing zenith angle off-set jacobian.\n"
4722 "Retrieval of deviations between nominal and actual zenith angle of\n"
4723 "the sensor can be included by this method. The weighing functions\n"
4724 "can be calculated in several ways:\n"
4725 " calcmode = \"recalc\": Recalculation of pencil beam spectra,\n"
4726 " shifted with *dza* from nominal values. A single-sided\n"
4727 " perturbation is applied (towards higher zenith angles).\n"
4728 " calcmode = \"interp\": Inter/extrapolation of existing pencil\n"
4729 " beam spectra. For this option, allow some extra margins for\n"
4730 " zenith angle grids, to avoid artifacts when extrapolating\n"
4731 " the data (to shifted zenith angles). The average of a\n"
4732 " negative and a positive shift is taken."
4734 "The interp option is recommended. It should in general be both\n"
4735 "faster and more accurate (due to the double sided disturbance).\n"
4736 "In addition, it is less sensitive to the choice of dza (as long\n"
4737 "as a small value is applied).\n"
4739 "The pointing off-set can be modelled to be time varying. The time\n"
4740 "variation is then described by a polynomial (with standard base\n"
4741 "functions). For example, a polynomial order of 0 means that the\n"
4742 "off-set is constant in time. If the off-set is totally uncorrelated\n"
4743 "between the spectra, set the order to -1.\n"
4745 AUTHORS(
"Patrick Eriksson",
"Mattias Ekstrom" ),
4746 OUT(
"jacobian_quantities",
"jacobian_agenda" ),
4750 IN(
"jacobian_quantities",
"jacobian_agenda",
"sensor_pos",
4752 GIN(
"poly_order",
"calcmode",
"dza" ),
4753 GIN_TYPE(
"Index",
"String",
"Numeric" ),
4755 GIN_DESC(
"Order of polynomial to describe the time variation of "
4756 "pointing off-sets.",
4757 "Calculation method. See above",
4758 "Size of perturbation to apply (when applicable)."
4764 (
NAME(
"jacobianAddPolyfit" ),
4767 "Includes polynomial baseline fit in the Jacobian.\n"
4769 "This method deals with retrieval of disturbances of the spectra\n"
4770 "that can be described by an addidative term, a baseline off-set.\n"
4772 "The baseline off-set is here modelled as a polynomial. The\n"
4773 "polynomial spans the complete frequency range spanned by\n"
4774 "*sensor_response_f_grid* and the method should only of interest for\n"
4775 "cases with no frequency gap in the spectra. The default assumption\n"
4776 "is that the off-set differs between all spectra, but it can also be\n"
4777 "assumed that the off-set is common for all e.g. line-of-sights.\n"
4779 AUTHORS(
"Patrick Eriksson" ),
4780 OUT(
"jacobian_quantities",
"jacobian_agenda" ),
4784 IN(
"jacobian_quantities",
"jacobian_agenda",
4785 "sensor_response_pol_grid",
"sensor_response_f_grid",
4786 "sensor_response_za_grid",
"sensor_pos" ),
4787 GIN(
"poly_order",
"no_pol_variation",
"no_los_variation",
4788 "no_mblock_variation" ),
4789 GIN_TYPE(
"Index",
"Index",
"Index",
"Index" ),
4791 GIN_DESC(
"Polynomial order to use for the fit.",
4792 "Set to 1 if the baseline off-set is the same for all "
4793 "Stokes components.",
4794 "Set to 1 if the baseline off-set is the same for all "
4795 "line-of-sights (inside each measurement block).",
4796 "Set to 1 if the baseline off-set is the same for all "
4797 "measurement blocks."
4803 (
NAME(
"jacobianAddTemperature" ),
4806 "Includes atmospheric temperatures in the Jacobian.\n"
4808 "The calculations can be performed by (semi-)analytical expressions\n"
4809 "or by perturbations. Hydrostatic equilibrium (HSE) can be included.\n"
4810 "For perturbation calculations, all possible effects are included\n"
4811 "(but is a costly option). The analytical calculation approach\n"
4812 "neglects refraction totally, but considers the local effect of HSE.\n"
4813 "The later should be accaptable for observations around zenith and\n"
4814 "nadir. There is no warning if the method is applied incorrectly, \n"
4815 "with respect to these issues.\n"
4817 "The calculations (both options) assume that gas species are defined\n"
4818 "in VMR (a change in temperature then changes the number density). \n"
4819 "This has the consequence that retrieval of temperatures and number\n"
4820 "density can not be mixed. Neither any warning here!\n"
4822 "The choices for *method* are:\n"
4823 " \"analytical\" : (semi-)analytical expressions are used\n"
4824 " \"perturbation\" : pure numerical perturbations are used\n"
4826 AUTHORS(
"Mattias Ekstrom",
"Patrick Eriksson" ),
4827 OUT(
"jacobian_quantities",
"jacobian_agenda" ),
4831 IN(
"jacobian_quantities",
"jacobian_agenda",
4832 "atmosphere_dim",
"p_grid",
"lat_grid",
"lon_grid" ),
4833 GIN(
"g1",
"g2",
"g3",
"hse",
"method",
"dt" ),
4834 GIN_TYPE(
"Vector",
"Vector",
"Vector",
"String",
"String",
"Numeric" ),
4836 GIN_DESC(
"Pressure retrieval grid.",
4837 "Latitude retrieval grid.",
4838 "Longitude retreival grid.",
4839 "Flag to assume HSE or not (\"on\" or \"off\").",
4840 "Calculation method. See above.",
4841 "Size of perturbation [K]."
4886 (
NAME(
"jacobianCalcAbsSpeciesAnalytical" ),
4889 "This function doesn't do anything. It just exists to satisfy\n"
4890 "the input and output requirement of the *jacobian_agenda*.\n"
4892 "This function is added to *jacobian_agenda* by\n"
4893 "jacobianAddAbsSpecies and should normally not be called\n"
4902 "imblock",
"iyb",
"yb" ),
4911 (
NAME(
"jacobianCalcAbsSpeciesPerturbations" ),
4914 "Calculates absorption species jacobians by perturbations.\n"
4916 "This function is added to *jacobian_agenda* by\n"
4917 "jacobianAddAbsSpecies and should normally not be called\n"
4920 AUTHORS(
"Mattias Ekstrom",
"Patrick Eriksson" ),
4926 "imblock",
"iyb",
"yb",
"atmosphere_dim",
"p_grid",
"lat_grid",
4927 "lon_grid",
"t_field",
"z_field",
"vmr_field",
"abs_species",
4928 "cloudbox_on",
"stokes_dim",
4929 "f_grid",
"sensor_pos",
"sensor_los",
"mblock_za_grid",
4930 "mblock_aa_grid",
"antenna_dim",
"sensor_response",
4931 "iy_clearsky_agenda",
"y_unit",
"jacobian_quantities",
4932 "jacobian_indices" ),
4936 GIN_DESC(
"Species of interest." ),
4942 (
NAME(
"jacobianCalcFreqShiftAndStretchInterp" ),
4945 "Calculates frequency shift and stretch jacobians by interpolation\n"
4948 "This function is added to *jacobian_agenda* by\n"
4949 "jacobianAddFreqShiftAndStretch and should normally\n"
4950 "not be called by the user.\n"
4952 AUTHORS(
"Patrick Eriksson" ),
4958 "imblock",
"iyb",
"yb",
"stokes_dim",
"f_grid",
"mblock_za_grid",
4959 "mblock_aa_grid",
"antenna_dim",
4960 "sensor_response",
"sensor_response_pol_grid",
4961 "sensor_response_f_grid",
"sensor_response_za_grid",
4962 "jacobian_quantities",
"jacobian_indices" ),
4971 (
NAME(
"jacobianCalcPointingZaInterp" ),
4974 "Calculates zenith angle pointing deviation jacobians by\n"
4975 "inter-extrapolation of *iyb*.\n"
4977 "This function is added to *jacobian_agenda* by\n"
4978 "jacobianAddPointingZa and should normally not be\n"
4979 "called by the user.\n"
4981 AUTHORS(
"Patrick Eriksson" ),
4986 IN(
"jacobian",
"imblock",
"iyb",
"yb",
"stokes_dim",
"f_grid",
4987 "sensor_los",
"mblock_za_grid",
"mblock_aa_grid",
"antenna_dim",
4988 "sensor_response",
"sensor_time",
4989 "jacobian_quantities",
"jacobian_indices" ),
4998 (
NAME(
"jacobianCalcPointingZaRecalc" ),
5001 "Calculates zenith angle pointing deviation jacobians by\n"
5002 "recalulation of *iyb*.\n"
5004 "This function is added to *jacobian_agenda* by\n"
5005 "jacobianAddPointingZa and should normally not be\n"
5006 "called by the user.\n"
5008 AUTHORS(
"Mattias Ekstrom",
"Patrick Eriksson" ),
5014 "imblock",
"iyb",
"yb",
"atmosphere_dim",
"p_grid",
"lat_grid",
5015 "lon_grid",
"t_field",
"z_field",
"vmr_field",
"cloudbox_on",
5016 "stokes_dim",
"f_grid",
"sensor_pos",
"sensor_los",
5017 "mblock_za_grid",
"mblock_aa_grid",
"antenna_dim",
5018 "sensor_response",
"sensor_time",
5019 "iy_clearsky_agenda",
"y_unit",
"jacobian_quantities",
5020 "jacobian_indices" ),
5029 (
NAME(
"jacobianCalcPolyfit" ),
5032 "Calculates jacobians for polynomial baseline fit.\n"
5034 "This function is added to *jacobian_agenda* by jacobianAddPolyfit\n"
5035 "and should normally not be called by the user.\n"
5037 AUTHORS(
"Patrick Eriksson" ),
5042 IN(
"jacobian",
"imblock",
"iyb",
"yb",
"sensor_response",
5043 "sensor_response_pol_grid",
"sensor_response_f_grid",
5044 "sensor_response_za_grid",
5045 "jacobian_quantities",
"jacobian_indices" ),
5046 GIN(
"poly_coeff" ),
5049 GIN_DESC(
"Polynomial coefficient to handle." ),
5055 (
NAME(
"jacobianCalcTemperatureAnalytical" ),
5058 "This function doesn't do anything. It just exists to satisfy\n"
5059 "the input and output requirement of the *jacobian_agenda*.\n"
5061 "This function is added to *jacobian_agenda* by\n"
5062 "jacobianAddTemperature and should normally not be called\n"
5071 "imblock",
"iyb",
"yb" ),
5080 (
NAME(
"jacobianCalcTemperaturePerturbations" ),
5083 "Calculates atmospheric temperature jacobians by perturbations.\n"
5085 "This function is added to *jacobian_agenda* by\n"
5086 "jacobianAddTemperature and should normally not be called\n"
5089 AUTHORS(
"Mattias Ekstrom",
"Patrick Eriksson" ),
5095 "imblock",
"iyb",
"yb",
"atmosphere_dim",
"p_grid",
"lat_grid",
5096 "lon_grid",
"t_field",
"z_field",
"vmr_field",
"abs_species",
5097 "r_geoid",
"z_surface",
"cloudbox_on",
"stokes_dim",
"f_grid",
5098 "sensor_pos",
"sensor_los",
"mblock_za_grid",
"mblock_aa_grid",
5099 "antenna_dim",
"sensor_response",
"iy_clearsky_agenda",
"y_unit",
5100 "p_hse",
"z_hse_accuracy",
5101 "jacobian_quantities",
"jacobian_indices" ),
5144 (
NAME(
"jacobianClose" ),
5147 "Closes the array of retrieval quantities and prepares for\n"
5148 "calculation of the Jacobian matrix.\n"
5150 "This function closes the *jacobian_quantities* array, sets the\n"
5151 "correct size of *jacobian* and sets *jacobian_do* to 1.\n"
5153 "Retrieval quantities should not be added after a call to this WSM.\n"
5154 "No calculations are performed here.\n"
5157 OUT(
"jacobian_do",
"jacobian",
"jacobian_indices",
"jacobian_agenda" ),
5161 IN(
"jacobian_agenda",
"jacobian_quantities",
"sensor_pos",
"sensor_response" ),
5170 (
NAME(
"jacobianInit" ),
5173 "Initialises the variables connected to the Jacobian matrix.\n"
5175 "This function initialises the *jacobian_quantities* array so\n"
5176 "that retrieval quantities can be added to it. Accordingly, it has\n"
5177 "to be called before any calls to jacobianAddTemperature or\n"
5178 "similar methods.\n"
5180 "The Jacobian quantities are initialised to be empty.\n"
5183 OUT(
"jacobian_quantities",
"jacobian_agenda" ),
5196 (
NAME(
"jacobianOff" ),
5199 "Makes mandatory initialisation of some jacobian variables.\n"
5201 "Some jacobian WSVs must be initilised even if no such calculations\n"
5202 "will be performed and this is handled with this method. That is,\n"
5203 "this method must be called when no jacobians will be calculated.\n"
5204 "Sets *jacobian_on* to 0.\n"
5206 AUTHORS(
"Patrick Eriksson" ),
5207 OUT(
"jacobian_do",
"jacobian_agenda",
"jacobian_quantities",
5208 "jacobian_indices" ),
5221 (
NAME(
"MatrixCBR" ),
5224 "Sets a matrix to hold cosmic background radiation (CBR).\n"
5226 "The CBR is assumed to be un-polarized and Stokes components 2-4\n"
5227 "are zero. Number of Stokes components, that equals the number\n"
5228 "of columns in the created matrix, is determined by *stokes_dim*.\n"
5229 "The number of rows in the created matrix equals the length of the\n"
5230 "given frequency vector.\n"
5232 "The cosmic radiation is modelled as blackbody radiation for the\n"
5233 "temperature given by the global constant COSMIC_BG_TEMP, set in\n"
5234 "the file constants.cc. The frequencies are taken from the generic\n"
5237 "The standard definition, in ARTS, of the Planck function is\n"
5238 "followed and the unit of the returned data is W/(m3 * Hz * sr).\n"
5240 AUTHORS(
"Patrick Eriksson" ),
5254 (
NAME(
"MatrixMatrixMultiply" ),
5257 "Multiply a Matrix with another Matrix and store the result in the result\n"
5260 "This just computes the normal Matrix-Matrix product, Y=M*X. It is ok\n"
5261 "if Y and X are the same Matrix. This function is handy for\n"
5262 "multiplying the H Matrix to batch spectra.\n"
5268 GOUT_DESC(
"The result of the multiplication (dimension mxc)." ),
5270 GIN(
"gin1" ,
"gin2" ),
5273 GIN_DESC(
"The Matrix to multiply (dimension mxn).",
5274 "The original Matrix (dimension nxc)." )
5279 (
NAME(
"MatrixPlanck" ),
5282 "Sets a matrix to hold blackbody radiation.\n"
5284 "The radiation is assumed to be un-polarized and Stokes components\n"
5285 "2-4 are zero. Number of Stokes components, that equals the number\n"
5286 "of columns in the created matrix, is determined by *stokes_dim*.\n"
5287 "The number of rows in the created matrix equals the length of the\n"
5288 "given frequency vector.\n"
5290 "The standard definition, in ARTS, of the Planck function is\n"
5291 "followed and the unit of the returned data is W/(m3 * Hz * sr).\n"
5293 AUTHORS(
"Patrick Eriksson" ),
5299 GIN(
"gin1" ,
"gin2" ),
5303 "Temperature [K]." )
5308 (
NAME(
"MatrixScale" ),
5311 "Scales all elements of a matrix with the specified value.\n"
5313 "The result can either be stored in the same or another\n"
5316 AUTHORS(
"Patrick Eriksson" ),
5322 GIN(
"min" ,
"value" ),
5326 "The value to be multiplied with the matrix."
5332 (
NAME(
"MatrixSetConstant" ),
5335 "Creates a matrix and sets all elements to the specified value.\n"
5337 "The size is determined by *ncols* and *nrows*.\n"
5339 AUTHORS(
"Patrick Eriksson" ),
5344 IN(
"nrows",
"ncols" ),
5353 (
NAME(
"MatrixSet" ),
5356 "Create a Matrix from the given list of numbers.\n"
5359 " MatrixSet(m1, [1, 2, 3; 4, 5, 6])\n"
5365 GOUT_DESC(
"The newly created matrix" ),
5370 GIN_DESC(
"The values of the newly created matrix. Elements are separated "
5371 "by commas, rows by semicolons."),
5377 (
NAME(
"MatrixUnitIntensity" ),
5380 "Sets a matrix to hold unpolarised radiation with unit intensity.\n"
5382 "Works as MatrixPlanck where the radiation is set to 1.\n"
5384 AUTHORS(
"Patrick Eriksson" ),
5398 (
NAME(
"Matrix1ColFromVector" ),
5401 "Forms a matrix containing one column from a vector.\n"
5412 GIN_DESC(
"The vector to be copied." )
5417 (
NAME(
"Matrix2ColFromVectors" ),
5420 "Forms a matrix containing two columns from two vectors.\n"
5422 "The vectors are included as columns in the matrix in the same order\n"
5423 "as they are given.\n"
5434 GIN_DESC(
"The vector to be copied into the first column.",
5435 "The vector to be copied into the second column."
5441 (
NAME(
"Matrix3ColFromVectors" ),
5444 "Forms a matrix containing three columns from three vectors.\n"
5446 "The vectors are included as columns in the matrix in the same order\n"
5447 "as they are given.\n"
5455 GIN(
"v1" ,
"v2" ,
"v3" ),
5456 GIN_TYPE(
"Vector",
"Vector",
"Vector" ),
5458 GIN_DESC(
"The vector to be copied into the first column.",
5459 "The vector to be copied into the second column.",
5460 "The vector to be copied into the third column."
5466 (
NAME(
"MatrixCompare" ),
5469 "Checks the deviation between two matrices.\n"
5471 "The method was implemented having jacobian matrices in mind, but\n"
5472 "can be applied on any matrices.\n"
5474 "It is checked if the maximum absolute difference is below the given\n"
5477 AUTHORS(
"Patrick Eriksson" ),
5483 GIN(
"matrix1",
"matrix2",
"maxabsdiff" ),
5484 GIN_TYPE(
"Matrix",
"Matrix",
"Numeric" ),
5486 GIN_DESC(
"A first jacobian matrix",
"A second jacobian matrix",
5487 "Threshold for maximum absolute difference." )
5492 (
NAME(
"Matrix1RowFromVector" ),
5495 "Forms a matrix containing one row from a vector.\n"
5506 GIN_DESC(
"The vector to be copied." )
5511 (
NAME(
"Matrix2RowFromVectors" ),
5514 "Forms a matrix containing two rows from two vectors.\n"
5516 "The vectors are included as rows in the matrix in the same order\n"
5517 "as they are given.\n"
5528 GIN_DESC(
"The vector to be copied into the first row.",
5529 "The vector to be copied into the second row."
5535 (
NAME(
"Matrix3RowFromVectors" ),
5538 "Forms a matrix containing three rows from three vectors.\n"
5540 "The vectors are included as rows in the matrix in the same order\n"
5541 "as they are given.\n"
5549 GIN(
"v1" ,
"v2" ,
"v3" ),
5550 GIN_TYPE(
"Vector",
"Vector",
"Vector" ),
5552 GIN_DESC(
"The vector to be copied into the first row.",
5553 "The vector to be copied into the second row.",
5554 "The vector to be copied into the third row."
5560 (
NAME(
"mc_antennaSetGaussian" ),
5563 "Makes mc_antenna (used by MCGeneral) a 2D Gaussian pattern.\n"
5565 "The gaussian antenna pattern is determined by *za_sigma* and\n"
5566 "*aa_sigma*, which represent the standard deviations in the\n"
5567 "uncorrelated bivariate normal distribution.\n"
5570 OUT(
"mc_antenna" ),
5575 GIN(
"za_sigma",
"aa_sigma" ),
5578 GIN_DESC(
"Width in the zenith angle dimension as described above.",
5579 "Width in the azimuth angle dimension as described above."
5585 (
NAME(
"mc_antennaSetGaussianByFWHM" ),
5588 "Makes mc_antenna (used by MCGeneral) a 2D Gaussian pattern.\n"
5590 "The gaussian antenna pattern is determined by *za_fwhm* and\n"
5591 "*aa_fwhm*, which represent the full width half maximum (FWHM)\n"
5592 "of the antenna response, in the zenith and azimuthal planes.\n"
5595 OUT(
"mc_antenna" ),
5600 GIN(
"za_fwhm",
"aa_fwhm" ),
5603 GIN_DESC(
"Width in the zenith angle dimension as described above.",
5604 "Width in the azimuth angle dimension as described above."
5610 (
NAME(
"mc_antennaSetPencilBeam" ),
5613 "Makes mc_antenna (used by MCGeneral) a pencil beam.\n"
5615 "This WSM makes the subsequent MCGeneral WSM perform pencil beam\n"
5616 "RT calculations.\n"
5619 OUT(
"mc_antenna" ),
5632 (
NAME(
"mc_IWP_cloud_opt_pathCalc" ),
5635 "Calculates the FOV averaged ice water path and cloud optical path\n"
5636 "for a given viewing direction\n"
5639 OUT(
"mc_IWP",
"mc_cloud_opt_path",
"mc_IWP_error",
5640 "mc_cloud_opt_path_error",
"mc_iteration_count" ),
5644 IN(
"mc_antenna",
"sensor_pos",
"sensor_los",
"ppath_step_agenda",
5645 "p_grid",
"lat_grid",
"lon_grid",
"r_geoid",
"z_surface",
5646 "z_field",
"t_field",
"vmr_field",
"cloudbox_limits",
"pnd_field",
5647 "scat_data_mono",
"particle_masses",
"mc_seed" ),
5651 GIN_DESC(
"Maximum number of iterations." )
5656 (
NAME(
"MCGeneral" ),
5658 (
"A generalised 3D reversed Monte Carlo radiative algorithm, that\n"
5659 "allows for 2D antenna patterns, surface reflection and arbitrary\n"
5660 "sensor positions.\n"
5662 "The main output variables *y* and *mc_error* represent the\n"
5663 "Stokes vector integrated over the antenna function, and the\n"
5664 "estimated error in this vector respectively.\n"
5666 "The WSV *mc_max_iter* describes the number of `photons\'\n"
5667 "used in the simulation (more photons means smaller *mc_error*).\n"
5668 "*mc_std_err* is the desired value of mc_error. *mc_max_time* is\n"
5669 "the maximum allowed number of seconds for MCGeneral. The method\n"
5670 "will terminate once any of the max_iter, std_err, max_time\n"
5671 "criteria are met. If negative values are given for these\n"
5672 " parameters then it isignored.\n"
5674 "Negative values of *mc_seed* seed the random number generator\n"
5675 "according to system time, positive *mc_seed* values are taken\n"
5678 OUT(
"y",
"mc_iteration_count",
"mc_error",
"mc_points" ),
5682 IN(
"mc_antenna",
"f_grid",
"f_index",
"sensor_pos",
"sensor_los",
5683 "stokes_dim",
"atmosphere_dim",
"iy_space_agenda",
"surface_prop_agenda",
5684 "opt_prop_gas_agenda",
"abs_scalar_gas_agenda",
"p_grid",
5685 "lat_grid",
"lon_grid",
"z_field",
"r_geoid",
"z_surface",
5686 "t_field",
"vmr_field",
"cloudbox_on",
"cloudbox_limits",
5687 "pnd_field",
"scat_data_mono",
"basics_checked",
"cloudbox_checked",
5688 "mc_seed",
"y_unit",
5689 "mc_std_err",
"mc_max_time",
"mc_max_iter"),
5700 (
"A specialised 3D reversed Monte Carlo radiative algorithm, that\n"
5701 "mimics independent pixel appoximation simulations.\n"
5704 OUT(
"y",
"mc_iteration_count",
"mc_error",
"mc_points" ),
5708 IN(
"mc_antenna",
"f_grid",
"f_index",
"sensor_pos",
"sensor_los",
5709 "stokes_dim",
"atmosphere_dim",
"iy_space_agenda",
"surface_prop_agenda",
5710 "opt_prop_gas_agenda",
"abs_scalar_gas_agenda",
"ppath_step_agenda",
5711 "p_grid",
"lat_grid",
"lon_grid",
"z_field",
"r_geoid",
"z_surface",
5712 "t_field",
"vmr_field",
"cloudbox_limits",
"pnd_field",
5713 "scat_data_mono",
"mc_seed",
"y_unit",
5714 "mc_std_err",
"mc_max_time",
"mc_max_iter",
"mc_z_field_is_1D" ),
5723 (
NAME(
"MCSetSeedFromTime" ),
5725 (
"Sets the value of mc_seed from system time\n" ),
5740 (
NAME(
"NumericAdd" ),
5743 "Adds a numeric and a value (b = a+v).\n"
5745 "The result can either be stored in the same or another numeric.\n"
5746 "(a and b can be the same varible, but not b and v)\n"
5748 AUTHORS(
"Patrick Eriksson" ),
5766 (
NAME(
"NumericScale" ),
5769 "Scales/multiplies a numeric with a value (b = a*v).\n"
5771 "The result can either be stored in the same or another numeric.\n"
5772 "(a and b can be the same varible, but not b and v)\n"
5774 AUTHORS(
"Patrick Eriksson" ),
5792 (
NAME(
"NumericSet" ),
5795 "Sets a numeric workspace variable to the given value.\n"
5797 AUTHORS(
"Patrick Eriksson" ),
5812 (
NAME(
"nelemGet" ),
5815 "Retrieve nelem from given variable and store the value in the\n"
5816 "workspace variable *nelem*\n"
5825 GIN_TYPE( ARRAY_GROUPS +
", Vector" ),
5827 GIN_DESC(
"Variable to get the number of elements from." ),
5835 (
NAME(
"ncolsGet" ),
5838 "Retrieve ncols from given variable and store the value in the\n"
5839 "workspace variable *ncols*\n"
5848 GIN_TYPE(
"Matrix, Sparse, Tensor3, Tensor4, Tensor5, Tensor6, Tensor7" ),
5850 GIN_DESC(
"Variable to get the number of columns from." ),
5858 (
NAME(
"nrowsGet" ),
5861 "Retrieve nrows from given variable and store the value in the\n"
5862 "workspace variable *nrows*\n"
5871 GIN_TYPE(
"Matrix, Sparse, Tensor3, Tensor4, Tensor5, Tensor6, Tensor7" ),
5873 GIN_DESC(
"Variable to get the number of rows from." ),
5881 (
NAME(
"npagesGet" ),
5884 "Retrieve npages from given variable and store the value in the\n"
5885 "workspace variable *npages*\n"
5894 GIN_TYPE(
"Tensor3, Tensor4, Tensor5, Tensor6, Tensor7" ),
5896 GIN_DESC(
"Variable to get the number of pages from." ),
5904 (
NAME(
"nbooksGet" ),
5907 "Retrieve nbooks from given variable and store the value in the\n"
5908 "workspace variable *nbooks*\n"
5917 GIN_TYPE(
"Tensor4, Tensor5, Tensor6, Tensor7" ),
5919 GIN_DESC(
"Variable to get the number of books from." ),
5927 (
NAME(
"nshelvesGet" ),
5930 "Retrieve nshelves from given variable and store the value in the\n"
5931 "workspace variable *nshelves*\n"
5940 GIN_TYPE(
"Tensor5, Tensor6, Tensor7" ),
5942 GIN_DESC(
"Variable to get the number of shelves from." ),
5950 (
NAME(
"nvitrinesGet" ),
5953 "Retrieve nvitrines from given variable and store the value in the\n"
5954 "workspace variable *nvitrines*\n"
5965 GIN_DESC(
"Variable to get the number of vitrines from." ),
5973 (
NAME(
"nlibrariesGet" ),
5976 "Retrieve nlibraries from given variable and store the value in the\n"
5977 "workspace variable *nlibraries*\n"
5980 OUT(
"nlibraries" ),
5988 GIN_DESC(
"Variable to get the number of libraries from." ),
5996 (
NAME(
"opt_prop_sptFromData" ),
5999 "Calculates opticle properties for the single particle types.\n"
6001 "In this function the extinction matrix and the absorption vector\n"
6002 "are calculated in the laboratory frame. An interpolation of the\n"
6003 "data on the actual frequency is the first step in this function.\n"
6004 "The next step is a transformation from the database coordinate\n"
6005 "system to the laboratory coordinate system.\n"
6007 "Output of the function are *ext_mat_spt* and *abs_vec_spt* which\n"
6008 "hold the optical properties for a specified propagation direction\n"
6009 "for each particle type.\n"
6012 OUT(
"ext_mat_spt",
"abs_vec_spt" ),
6016 IN(
"ext_mat_spt",
"abs_vec_spt",
"scat_data_raw",
"scat_za_grid",
6017 "scat_aa_grid",
"scat_za_index",
"scat_aa_index",
6018 "f_index",
"f_grid",
"rte_temperature",
6019 "pnd_field",
"scat_p_index",
"scat_lat_index",
"scat_lon_index" ),
6028 (
NAME(
"opt_prop_sptFromMonoData" ),
6031 "Calculates optical properties for the single particle types.\n"
6033 "As *opt_prop_sptFromData* but no frequency interpolation is\n"
6034 "performed. The single scattering data is here obtained from\n"
6035 "*scat_data_mono*, instead of *scat_data_raw*.\n"
6038 OUT(
"ext_mat_spt",
"abs_vec_spt" ),
6042 IN(
"ext_mat_spt",
"abs_vec_spt",
"scat_data_mono",
"scat_za_grid",
6043 "scat_aa_grid",
"scat_za_index",
"scat_aa_index",
"rte_temperature",
6044 "pnd_field",
"scat_p_index",
"scat_lat_index",
"scat_lon_index" ),
6053 (
NAME(
"output_file_formatSetAscii" ),
6056 "Sets the output file format to ASCII.\n"
6059 OUT(
"output_file_format" ),
6072 (
NAME(
"output_file_formatSetBinary" ),
6075 "Sets the output file format to binary.\n"
6078 OUT(
"output_file_format" ),
6091 (
NAME(
"output_file_formatSetZippedAscii" ),
6094 "Sets the output file format to zipped ASCII.\n"
6097 OUT(
"output_file_format" ),
6110 (
NAME(
"ParticleSpeciesInit" ),
6113 "Initializes empty *part_species* array.\n"
6116 OUT(
"part_species" ),
6130 (
NAME(
"ParticleSpeciesSet" ),
6133 "With this function, the user specifies settings for the \n"
6134 "particle number density calculations using *pnd_fieldSetup*.\n"
6135 "The input is an ArrayOfString that needs to be in a specific format:\n"
6137 "*Example:* \t ['IWC-MH97-0.1-200', 'LWC-liquid-0.1-50'] \n"
6139 "The order of the Strings can be arbitrarily chosen.\n"
6141 "For more details, see WSV *part_species*.\n"
6144 OUT(
"part_species" ),
6152 GIN_DESC(
"Array of selection criteria." )
6158 (
NAME(
"ParticleTypeAddAll" ),
6161 "Reads single scattering data and particle number densities.\n"
6163 "The WSV *pnd_field_raw* containing particle number densities for all\n"
6164 "scattering particle species can be generated outside ARTS, for example by using\n"
6165 "PyARTS. This method needs as input an XML-file containing an array of filenames\n"
6166 "(ArrayOfString) of single scattering data and a file containing the corresponding\n"
6167 "*pnd_field_raw*. In contrast to the scattering data, all corresponding pnd-fields\n"
6168 "are stored in a single XML-file containing an ArrayofGriddedField3\n"
6170 "Very important note:\n"
6171 "The order of the filenames for the scattering data files has to\n"
6172 "correspond to the order of the pnd-fields, stored in the variable\n"
6173 "*pnd_field_raw*.\n"
6176 OUT(
"scat_data_raw",
"pnd_field_raw" ),
6180 IN(
"atmosphere_dim",
"f_grid",
"p_grid",
"lat_grid",
"lon_grid",
6181 "cloudbox_limits" ),
6182 GIN(
"filename_scat_data",
"filename_pnd_field" ),
6185 GIN_DESC(
"File containing single scattering data.",
6186 "File including *pnd_field_raw*."
6193 (
NAME(
"ParticleTypeAdd" ),
6196 "This method reads single scattering data and the corresonding\n"
6197 "particle number density fields.\n"
6199 "The methods reads the specified files and appends the obtained data\n"
6200 "to *scat_data_raw* and *pnd_field_raw*.\n"
6203 OUT(
"scat_data_raw",
"pnd_field_raw" ),
6207 IN(
"atmosphere_dim",
"f_grid",
"p_grid",
"lat_grid",
"lon_grid",
6208 "cloudbox_limits" ),
6209 GIN(
"filename_scat_data",
"filename_pnd_field" ),
6212 GIN_DESC(
"Filename of single scattering data.",
6213 "Filename of the corresponding pnd_field."
6219 (
NAME(
"ParticleTypeInit" ),
6222 "Initializes *scat_data_raw* and *pnd_field_raw*.\n"
6224 "This method initializes variables containing data about the\n"
6225 "optical properties of particles (*scat_data_raw*) and about the\n"
6226 "particle number distribution (*pnd_field_raw*)\n"
6228 "This method has to be executed before executing e.g.\n"
6229 "*ParticleTypeAdd*.\n"
6232 OUT(
"scat_data_raw",
"pnd_field_raw" ),
6245 (
NAME(
"pha_matCalc" ),
6248 "This function sums up the phase matrices for all particle\n"
6249 "types weighted with particle number density.\n"
6256 IN(
"pha_mat_spt",
"pnd_field",
"atmosphere_dim",
"scat_p_index",
6257 "scat_lat_index",
"scat_lon_index" ),
6266 (
NAME(
"pha_matExtractManually" ),
6269 "A simple function for manually extract a single phase matrix.\n"
6271 "The function returns the phase matrix for a single particle, for\n"
6272 "scattering from (za_in,aa_in) to (za_out,aa_out).\n"
6274 "Only a single particle type is handled and *scat_data_raw* must\n"
6275 "have length 1. The frequency is selected by *f_grid* and *f_index*.\n"
6276 "The temperature is set by *rte_temperature*.\n"
6278 AUTHORS(
"Patrick Eriksson" ),
6280 GOUT(
"pha_mat_single" ),
6283 "Phase matrix for a single frequency and combination of angles" ),
6284 IN(
"f_grid",
"f_index",
"stokes_dim",
"scat_data_raw",
6285 "rte_temperature" ),
6286 GIN(
"za_out",
"aa_out",
"za_in",
"aa_in" ),
6287 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric",
"Numeric" ),
6289 GIN_DESC(
"Outgoing zenith angle",
"Outgoing azimuth angle",
6290 "Incoming zenith angle",
"Incoming azimuth angle" )
6295 (
NAME(
"pha_mat_sptFromData" ),
6298 "Calculation of the phase matrix for the single particle types.\n"
6300 "This function can be used in *pha_mat_spt_agenda* as part of\n"
6301 "the calculation of the scattering integral.\n"
6303 "The interpolation of the data on the actual frequency is the first\n"
6304 "step in this function. This is followed by a transformation from the\n"
6305 "database coordinate system to the laboratory coordinate system.\n"
6308 OUT(
"pha_mat_spt" ),
6312 IN(
"pha_mat_spt",
"scat_data_raw",
"scat_za_grid",
"scat_aa_grid",
6313 "scat_za_index",
"scat_aa_index",
"f_index",
"f_grid",
6314 "rte_temperature",
"pnd_field",
"scat_p_index",
"scat_lat_index",
6324 (
NAME(
"pha_mat_sptFromMonoData" ),
6327 "Calculation of the phase matrix for the single particle types.\n"
6329 "This function is the monochromatic version of *pha_mat_sptFromData*.\n"
6332 OUT(
"pha_mat_spt" ),
6336 IN(
"pha_mat_spt",
"scat_data_mono",
"doit_za_grid_size",
6337 "scat_aa_grid",
"scat_za_index",
"scat_aa_index",
"rte_temperature",
6338 "pnd_field",
"scat_p_index",
"scat_lat_index",
"scat_lon_index" ),
6347 (
NAME(
"pha_mat_sptFromDataDOITOpt" ),
6350 "Calculation of the phase matrix for the single particle types.\n"
6352 "In this function the phase matrix is extracted from\n"
6353 "*pha_mat_sptDOITOpt*. It can be used in the agenda\n"
6354 "*pha_mat_spt_agenda*. This method must be used in \n "
6355 "combination with *DoitScatteringDataPrepare*.\n"
6358 OUT(
"pha_mat_spt" ),
6362 IN(
"pha_mat_spt",
"pha_mat_sptDOITOpt",
"scat_data_mono",
6363 "doit_za_grid_size",
6365 "scat_za_index",
"scat_aa_index",
"rte_temperature",
6366 "pnd_field",
"scat_p_index",
"scat_lat_index",
"scat_lon_index" ),
6375 (
NAME(
"pnd_fieldCalc" ),
6377 (
"Interpolates the particle number density fields.\n"
6379 "This methods interpolates the particle number density field\n"
6380 "from the raw data *pnd_field_raw* to obtain *pnd_field*.\n"
6382 AUTHORS(
"Sreerekha T.R.",
"Claudia Emde" ),
6387 IN(
"p_grid",
"lat_grid",
"lon_grid",
"pnd_field_raw",
"atmosphere_dim",
6388 "cloudbox_limits" ),
6397 (
NAME(
"pnd_fieldExpand1D" ),
6400 "Maps a 1D pnd_field to 2D or 3D pnd_field.\n"
6402 "This method takes a 1D *pnd_field* and converts it to 2D or 3D\n"
6403 "\"cloud\". It is assumed that a complete 1D case has been created\n"
6404 "and after this *atmosphere_dim*, *lat_grid*, *lon_grid* and\n"
6405 "*cloudbox_limits* have been changed to a 2D or 3D case. This\n"
6406 "without changing the vertical extension of the cloudbox.\n"
6408 "No modification of *pnd_field* is made for the pressure dimension.\n"
6409 "At the latitude and longitude cloudbox edges *pnd_field* is set to\n"
6410 "zero. This corresponds to nzero=1. If you want a larger margin between\n"
6411 "the lat and lon cloudbox edgess and the \"cloud\" you increase\n"
6412 "*nzero*, where *nzero* is the number of grid points for which\n"
6413 "*pnd_field* shall be set to 0, counted from each lat and lon edge.\n"
6415 "See further *AtmFieldsExpand1D*.\n"
6417 AUTHORS(
"Patrick Eriksson" ),
6422 IN(
"pnd_field",
"atmosphere_dim",
"cloudbox_checked",
"cloudbox_on",
6423 "cloudbox_limits" ),
6427 GIN_DESC(
"Number of zero values inside lat and lon limits." )
6432 (
NAME(
"pnd_fieldSetup" ),
6435 "Calculation of *pnd_field* using ScatteringMetaData and *massdensity_field*.\n"
6437 "The WSM first checks if cloudbox is empty. If so, the pnd calculations\n"
6438 "will be skipped.\n"
6439 "The *cloudbox_limits* are used to determine the p, lat and lon size for\n"
6440 "the *pnd_field* tensor.\n"
6441 "Currently there are three particle size distribution parameterisations implemented:\n"
6442 "\t1. MH97 for ice particles. Using a first-order gamma distribution for particles\n"
6443 "\t smaller than 100 microns (melted diameter) and a lognormal distribution for\n"
6444 "\t particles bigger 100 microns. Values from both modes are cumulative.\n"
6445 "\t See internal function 'IWCtopnd_MH97' for implementation/units/output.\n"
6446 "\t (src.: McFarquhar G.M., Heymsfield A.J., 1997)"
6448 "\t2. H11 for ice particles and precepitating ice (snow). H11 in NOT dependent\n"
6449 "\t on massdensity of ice/snow, but on atmospheric temperature.\n"
6450 "\t The PSD is scaled to the current IWC/Snow density in an additional step.\n"
6451 "\t See internal function 'pnd_H11' and 'scale_H11' for implementation/units/output.\n"
6452 "\t (src.: Heymsfield A.J., 2011, not published yet)\n"
6453 "\t3. Gamma distribution for liquid cloud particles.\n"
6454 "\t See internal function 'LWCtopnd' for implementation/units/output.\n"
6455 "\t (src.: Deirmendjian D., 1963 and Hess M., et al 1998)\n"
6457 "According to the selection criteria in *part_species*, the first specified\n"
6458 "psd parametrisation is selected together with all particles of specified phase\n"
6459 "and size. Then pnd calculations are performed on all levels inside the cloudbox.\n"
6460 "The *massdensity_field* input weights the pnds by the amount of scattering\n"
6461 "particles in each gridbox inside the cloudbox. Where *massdensity_field* is zero,\n"
6462 "the *pnd_field* will be zero as well.\n"
6463 "Subsequently the pnd values get written to *pnd_field*.\n"
6465 "Now the next selection criteria string in *part_species* is used to repeat\n"
6466 "the process.The new pnd values will be appended to the existing *pnd_field*.\n"
6469 "NOTE: the order of scattering particle profiles in *massdensity_field* is HARD WIRED!\n"
6476 IN(
"atmosphere_dim",
"cloudbox_on",
"cloudbox_limits",
"massdensity_field",
"t_field",
"scat_data_meta_array",
"part_species",
"scat_data_nelem" ),
6485 (
NAME(
"pnd_fieldZero" ),
6488 "Sets *pnd_field* to hold only zeros.\n"
6490 "Scattering calculations using the DOIT method include\n"
6491 "interpolation errors. If one is interested in this effect, one\n"
6492 "should compare the DOIT result with a clearsky calculation using\n"
6493 "an empty cloudbox. That means that the iterative method is\n"
6494 "performed for a cloudbox including no particles. This method sets\n"
6495 "the particle number density field to zero and creates a\n"
6496 "dummy *scat_data_raw* structure. \n"
6499 OUT(
"pnd_field",
"scat_data_raw" ),
6503 IN(
"p_grid",
"lat_grid",
"lon_grid" ),
6512 (
NAME(
"ppathCalc" ),
6515 "Main method for calculation of propagation paths.\n"
6517 "There exists only one function to calculate total propagation\n"
6518 "paths and this is that function. The function is normally not\n"
6519 "visible in the control file, it is called from inside *yCalc*.\n"
6520 "A reason to call this function directly would be to plot a\n"
6521 "propgation path.\n"
6523 "The definition of a propgation path cannot be accomodated here.\n"
6524 "For more information read the chapter on propagation paths in the\n"
6525 "ARTS user guide and read the on-line information for\n"
6526 "*ppath_step_agenda* (type \"arts -d ppath_step_agenda\" ).\n"
6528 AUTHORS(
"Patrick Eriksson" ),
6533 IN(
"ppath_step_agenda",
"atmosphere_dim",
"p_grid",
"lat_grid",
6534 "lon_grid",
"z_field",
"r_geoid",
"z_surface",
6535 "cloudbox_on",
"cloudbox_limits",
"rte_pos",
"rte_los" ),
6544 (
NAME(
"ppath_stepGeometric" ),
6547 "Calculates a geometrical propagation path step.\n"
6549 "This function determines a propagation path step by pure\n"
6550 "geometrical calculations. That is, refraction is neglected. Path\n"
6551 "points are always included for crossings with the grids, tangent\n"
6552 "points and intersection points with the surface. The WSV *ppath_lmax*\n"
6553 "gives the option to include additional points to ensure that the\n"
6554 "distance along the path between the points does not exceed the\n"
6555 "selected maximum length. No additional points are included if\n"
6556 "*ppath_lmax* is set to <= 0.\n"
6558 "For further information, type see the on-line information for\n"
6559 "*ppath_step_agenda* (type \"arts -d ppath_step_agenda\" ).\n"
6561 AUTHORS(
"Patrick Eriksson" ),
6562 OUT(
"ppath_step" ),
6566 IN(
"ppath_step",
"atmosphere_dim",
"p_grid",
"lat_grid",
"lon_grid",
6567 "z_field",
"r_geoid",
"z_surface",
"ppath_lmax" ),
6576 (
NAME(
"ppath_stepRefractionEuler" ),
6579 "Calculates a propagation path step, considering refraction by a\n"
6580 "straightforward Euler approach.\n"
6582 "Refraction is taken into account by probably the simplest approach\n"
6583 "possible. The path is treated to consist of piece-wise geometric\n"
6584 "steps. A geometric path step is calculated from each point by\n"
6585 "using the local line-of-sight. Except for 1D zenith angles, the\n"
6586 "path quantities are propagated by solving the differential\n"
6587 "equations by the Euler method. Snell's law for spherical symmetry\n"
6588 "is used for 1D to update the zenith angles.\n"
6590 "See further the on-line information for *ppath_stepGeometric*\n"
6591 "(type \"arts -d ppath_stepGeometric\" ) and the user guide for more\n"
6592 "details on the algorithms used.\n"
6594 "The maximum length of each ray tracing step is given by the WSV\n"
6595 "*ppath_lraytrace*. The length will never exceed the\n"
6596 "given maximum value, but can be smaller. The ray tracing steps are\n"
6597 "only used to determine the path. Points to describe the path for\n"
6598 "*yCalc* are included as for *ppath_stepGeometric*, this\n"
6599 "including the functionality of *ppath_lmax*.\n"
6601 AUTHORS(
"Patrick Eriksson" ),
6602 OUT(
"ppath_step",
"rte_pressure",
"rte_temperature",
"rte_vmr_list",
6607 IN(
"refr_index_agenda",
"ppath_step",
"atmosphere_dim",
"p_grid",
6608 "lat_grid",
"lon_grid",
"z_field",
"t_field",
"vmr_field",
"r_geoid",
6609 "z_surface",
"ppath_lmax",
"ppath_lraytrace" ),
6621 "Prints a variable on the screen.\n"
6635 GIN_DESC(
"Variable to be printed.",
6636 "Output level to use." ),
6644 (
NAME(
"PrintWorkspace" ),
6647 "Prints a list of the workspace variables.\n"
6655 GIN(
"only_allocated",
"level" ),
6658 GIN_DESC(
"Flag for printing either all variables (0) or only "
6659 "allocated ones (1).",
6660 "Output level to use." ),
6669 (
NAME(
"p_gridFromAtmRaw" ),
6672 "Sets *p_grid* according to input atmosphere defined using *AtmRawRead*.\n"
6673 "Only pressure values corresponding to altitudes >= 0 are extracted.\n"
6680 IN(
"z_field_raw" ),
6689 (
NAME(
"p_gridFromGasAbsLookup" ),
6692 "Sets *p_grid* to the frequency grid of *abs_lookup*.\n"
6694 AUTHORS(
"Patrick Eriksson" ),
6708 (
NAME(
"ReadNetCDF" ),
6711 "Reads a workspace variable from a NetCDF file.\n"
6713 "This method can read variables of any group.\n"
6715 "If the filename is omitted, the variable is read\n"
6716 "from <basename>.<variable_name>.nc.\n"
6721 GOUT_TYPE(
"Vector, Matrix, Tensor3, Tensor4, Tensor5, ArrayOfVector,"
6728 GIN_DESC(
"Name of the NetCDF file." ),
6738 (
NAME(
"ReadXML" ),
6741 "Reads a workspace variable from an XML file.\n"
6743 "This method can read variables of any group.\n"
6745 "If the filename is omitted, the variable is read\n"
6746 "from <basename>.<variable_name>.xml.\n"
6757 GIN_DESC(
"Name of the XML file." ),
6767 (
NAME(
"refr_indexIR" ),
6770 "Calculates the IR refractive index due to gases in the\n"
6771 "Earth's atmosphere.\n"
6773 "Only refractivity of dry air is considered. The formula used is\n"
6774 "contributed by Michael Hoefner, Forschungszentrum Karlsruhe.\n"
6777 OUT(
"refr_index" ),
6781 IN(
"rte_pressure",
"rte_temperature",
"rte_vmr_list" ),
6790 (
NAME(
"refr_indexThayer" ),
6793 "Calculates the microwave refractive index due to gases in the\n"
6794 "Earth's atmosphere.\n"
6796 "The refractivity of dry air and water vapour is summed. All\n"
6797 "other gases are assumed to have a negligible contribution. \n"
6799 "The parameterisation of Thayer (Radio Science, 9, 803-807, 1974)\n"
6800 "is used. See also Eq. 3 and 5 of Solheim et al. (JGR, 104,\n"
6803 AUTHORS(
"Patrick Eriksson" ),
6804 OUT(
"refr_index" ),
6808 IN(
"rte_pressure",
"rte_temperature",
"rte_vmr_list",
"abs_species" ),
6817 (
NAME(
"refr_indexUnit" ),
6820 "Sets the refractive index to 1.\n"
6822 "If this method is used, the obtained path should be identical to\n"
6823 "the geomtrical path.\n"
6825 AUTHORS(
"Patrick Eriksson" ),
6826 OUT(
"refr_index" ),
6839 (
NAME(
"rte_losSet" ),
6842 "Sets *rte_los* to the given angles.\n"
6844 "The azimuth angle is ignored for 1D and 2D.\n"
6846 AUTHORS(
"Patrick Eriksson" ),
6851 IN(
"atmosphere_dim" ),
6855 GIN_DESC(
"Zenith angle of sensor line-of-sight.",
6856 "Azimuth angle of sensor line-of-sight."
6862 (
NAME(
"rte_posAddRgeoid" ),
6865 "Adds a geoid radius by interpolating *r_geoid*.\n"
6867 "This function assumes that the first element of *rte_pos* is set\n"
6868 "to the geometric altitude for the position of the sensor.\n"
6869 "The variable *rte_pos* shall contain the radius instead of the\n"
6870 "altitude and that can be achieved by this function. The function\n"
6871 "adds a geoid radius to the given altitude. The geoid radius is\n"
6872 "obtained by interpolation of *r_geoid*. There is an error if the\n"
6873 "given position is outside the latitude and longitude grids.\n"
6875 AUTHORS(
"Patrick Eriksson" ),
6880 IN(
"rte_pos",
"atmosphere_dim",
"lat_grid",
"lon_grid",
"r_geoid" ),
6889 (
NAME(
"rte_posSet" ),
6892 "Sets *rte_pos* to the given co-ordinates.\n"
6894 "The longitude is ignored for 1D and 2D, and the latitude is also \n"
6897 "The argument *r_or_z* can either be a radius, or an altitude\n"
6898 "above the geoid. In the latter case, a function such as\n"
6899 "*rte_posAddGeoidWGS84* could be called to obtain a radius as\n"
6900 "first element of *rte_pos*.\n"
6902 AUTHORS(
"Patrick Eriksson" ),
6907 IN(
"atmosphere_dim" ),
6908 GIN(
"r_or_z",
"lat",
"lon" ),
6909 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric" ),
6911 GIN_DESC(
"Radius or geometrical altitude of sensor position.",
6912 "Latitude of sensor position.",
6913 "Longitude of sensor position."
6919 (
NAME(
"r_geoidSpherical" ),
6922 "Sets the geoid to be a perfect sphere.\n"
6924 "The radius of the sphere is selected by the generic argument r.\n"
6926 AUTHORS(
"Patrick Eriksson" ),
6931 IN(
"atmosphere_dim",
"lat_grid",
"lon_grid" ),
6935 GIN_DESC(
"Radius of the geoid sphere. If negative, the radius is set to the "
6936 "global internal variable EARTH_RADIUS, defined in constants.cc."
6942 (
NAME(
"r_geoidWGS84" ),
6945 "Sets the geoid radius to match the WGS-84 reference ellipsoid.\n"
6947 "For 1D, the geoid radius is set to the radius of curvature of the\n"
6948 "WGS-84 ellipsoid in the north-south direction. The latitude is\n"
6949 "taken from *lat_grid*, that then is demanded to have length 1.\n"
6951 "For 2D and 3D, *r_geoid* is set to the radius of the WGS-84\n"
6952 "ellipsoid for the crossing points of the latitude and longitude\n"
6955 "Please note that the latitude grid must contain true latitudes\n"
6956 "if the function shall give correct result, and not just arbitrary\n"
6957 "orbit angles which is allowed elsewhere for 2D cases.\n"
6959 AUTHORS(
"Patrick Eriksson" ),
6964 IN(
"atmosphere_dim",
"lat_grid",
"lon_grid" ),
6973 (
NAME(
"ScatteringDisort" ),
6976 "Calls DISORT RT solver from ARTS.\n"
6979 OUT(
"scat_i_p",
"scat_i_lat",
"scat_i_lon",
6980 "f_index",
"scat_data_mono",
"doit_i_field1D_spectrum" ),
6984 IN(
"cloudbox_limits",
"stokes_dim",
"opt_prop_part_agenda",
6985 "abs_scalar_gas_agenda",
"spt_calc_agenda",
"pnd_field",
"t_field",
6986 "z_field",
"p_grid",
"vmr_field",
"scat_data_raw",
"f_grid",
6987 "scat_za_grid",
"surface_emissivity_DISORT" ),
6996 (
NAME(
"ScatteringDoit" ),
6999 "Main DOIT method.\n"
7001 "This method executes *doit_mono_agenda* for each frequency\n"
7002 "in *f_grid*. The output is the radiation field inside the cloudbox\n"
7003 "(*doit_i_field*) and on the cloudbox boundary (*scat_i_p* (1D),\n"
7004 "*scat_i_lat* and *scat_i_lon* (3D)).\n"
7007 OUT(
"doit_i_field",
"scat_i_p",
"scat_i_lat",
"scat_i_lon",
7008 "doit_i_field1D_spectrum" ),
7012 IN(
"cloudbox_on",
"f_grid",
"scat_i_p",
"scat_i_lat",
"scat_i_lon",
7013 "doit_mono_agenda",
"doit_is_initialized" ),
7022 (
NAME(
"ScatteringParticleTypeAndMetaRead" ),
7025 "Reads single scattering data and scattering meta data.\n"
7027 "This method's input needs two XML-files, one containing an array \n"
7028 "of path/filenames (*ArrayOfString*) of single scattering data and the \n"
7029 "corresponding path/filenames to scattering meta data.\n"
7030 "For each single scattering file, there needs to be exactly one\n"
7031 "scattering meta data file.\n"
7033 "Currently particles of phase ice and/or water can be added for the same calculation.\n"
7034 "It is also possible to read *SingleScatteringData* for different shapes of\n"
7035 "ice particles. But all ice particels will share the same IWC, while performing\n"
7036 "the *pnd_field* calculations with *pnd_fieldSetup*.\n"
7037 "Also make sure, that two scattering particles of the same phase are never equal\n"
7038 "in size. This will break the calculations in *pnd_fieldSetup*\n"
7040 "Very important note:\n"
7041 "The order of the filenames for the single scattering data files has to\n"
7042 "exactly correspond to the order of the scattering meta data files.\n"
7045 OUT(
"scat_data_raw",
"scat_data_meta_array" ),
7050 GIN(
"filename_scat_data",
"filename_scat_meta_data" ),
7053 GIN_DESC(
"File containing single scattering data file names.",
7054 "File containing scattering meta data file names."
7061 (
NAME(
"ScatteringParticlesSelect" ),
7064 "This method is a selection function for scattering particles.\n"
7066 "In *part_species* the user defines selection criteria for:\n"
7067 "\t...which type of scattering particle profile\n"
7068 "\t...what particle size ditribution parametrisation\n"
7069 "\t...the minimum and maximum size of the particle (in terms of volume equivalent radius)\n"
7070 "to use in the scattering calculations.\n"
7071 "Minimum and maximum size may be omitted or symbol \"*\" be used as a wildcard.\n"
7073 "The scattering particle arrays, *scat_data_raw* and *scat_data_meta_array*\n"
7074 "are searched for particles, that fullfill the selection criteria. \n"
7075 "Only these particles will be used for scattering calculations.\n"
7077 "Additionaly an *ArrayOfIndex* *scat_data_nelem* is created. This Array\n"
7078 "stores the number of scattering particles, that have been selected by each\n"
7079 "selection string in *part_species*\n"
7082 OUT(
"scat_data_raw",
"scat_data_meta_array",
"scat_data_nelem" ),
7086 IN(
"part_species",
"scat_data_raw",
"scat_data_meta_array" ),
7095 (
NAME(
"scat_data_monoCalc" ),
7098 "Interpolates *scat_data_raw* by frequency to give *scat_data_mono*.\n"
7101 OUT(
"scat_data_mono" ),
7105 IN(
"scat_data_raw",
"f_grid",
"f_index" ),
7114 (
NAME(
"scat_data_rawCheck" ),
7117 "Method for checking the consistency of the optical properties\n"
7118 "in the database.\n"
7120 "This function can be used to check datafiles containing data for\n"
7121 "randomly oriented scattering media.\n"
7122 "It is checked whether the data is consistent. The integral over\n"
7123 "the phase matrix should result the scattering cross section\n"
7126 "The check is if:\n"
7127 "<C_ext> - <C_sca> = <C_abs>\n"
7129 "The result is printed on the screen.\n"
7136 IN(
"scat_data_raw" ),
7148 "Method to select some elements from one array and copy them to\n"
7149 "a new array. (Works also for vectors.)\n"
7151 "This works also for higher dimensional objects, where the selection is\n"
7152 "always performed in the first dimension.\n"
7156 "Select(y,x,[0,3])\n"
7158 "will select the first and fourth row of matrix x and copy them to the\n"
7159 "output matrix y.\n"
7161 "Note that it is even safe to use this method if needles and haystack\n"
7162 "are the same variable.\n"
7167 GOUT_TYPE( ARRAY_GROUPS +
", Vector, Matrix, Sparse" ),
7168 GOUT_DESC(
"Selected elements. Must have the same variable type as "
7171 GIN(
"haystack",
"needleindexes" ),
7172 GIN_TYPE( ARRAY_GROUPS +
", Vector, Matrix, Sparse",
7175 GIN_DESC(
"Variable to select from. May be the same variable as needles.",
7176 "The elements to select (zero based indexing, as always.)" ),
7184 (
NAME(
"sensorOff" ),
7187 "Sets sensor WSVs to obtain monochromatic pencil beam values.\n"
7189 "A 1D antenna pattern is assumed. The variables are set as follows:\n"
7190 " antenna_dim : 1.\n"
7191 " mblock_za_grid : Length 1, value 0.\n"
7192 " mblock_aa_grid : Empty.\n"
7193 " sensor_response* : As returned by *sensor_responseInit*.\n"
7195 AUTHORS(
"Patrick Eriksson" ),
7196 OUT(
"sensor_response",
"sensor_response_f",
7197 "sensor_response_pol",
"sensor_response_za",
7198 "sensor_response_aa",
7199 "sensor_response_f_grid",
"sensor_response_pol_grid",
7200 "sensor_response_za_grid",
"sensor_response_aa_grid",
7201 "antenna_dim",
"mblock_za_grid",
"mblock_aa_grid" ),
7205 IN(
"atmosphere_dim",
"stokes_dim",
"f_grid" ),
7214 (
NAME(
"sensor_posAddRgeoid" ),
7217 "Adds a geoid radius by interpolating *r_geoid*.\n"
7219 "This function assumes that the first element of *sensor_pos* is set\n"
7220 "to the geometric altitude for the position of the sensor.\n"
7221 "The variable *rte_pos* shall contain the radius instead of the\n"
7222 "altitude and that can be achieved by this function. The function\n"
7223 "adds a geoid radius to the given altitude. The geoid radius is\n"
7224 "obtained by interpolation of *r_geoid*. There is an error if the\n"
7225 "given position is outside the latitude and longitude grids.\n"
7227 AUTHORS(
"Patrick Eriksson" ),
7228 OUT(
"sensor_pos" ),
7232 IN(
"sensor_pos",
"atmosphere_dim",
"lat_grid",
"lon_grid",
"r_geoid" ),
7241 (
NAME(
"sensor_responseAntenna" ),
7244 "Includes response of the antenna.\n"
7246 "The function returns the sensor response matrix after the antenna\n"
7247 "characteristics have been included.\n"
7249 "The function handles \"multi-beam\" cases where the polarisation\n"
7250 "coordinate system is the same for all beams.\n"
7252 "See *antenna_dim*, *antenna_los* and *antenna_response* for\n"
7253 "details on how to specify the antenna response.\n"
7255 AUTHORS(
"Mattias Ekstrom",
"Patrick Eriksson" ),
7256 OUT(
"sensor_response",
"sensor_response_f",
"sensor_response_pol",
7257 "sensor_response_za",
"sensor_response_aa",
7258 "sensor_response_za_grid",
"sensor_response_aa_grid" ),
7262 IN(
"sensor_response",
"sensor_response_f",
"sensor_response_pol",
7263 "sensor_response_za",
"sensor_response_aa",
"sensor_response_f_grid",
7264 "sensor_response_pol_grid",
"sensor_response_za_grid",
7265 "sensor_response_aa_grid",
"atmosphere_dim",
"antenna_dim",
7266 "antenna_los",
"antenna_response",
"sensor_norm" ),
7275 (
NAME(
"sensor_responseBackend" ),
7278 "Includes response of the backend (spectrometer).\n"
7280 "The function returns the sensor response matrix after the backend\n"
7281 "characteristics have been included.\n"
7283 "See *f_backend*, *backend_channel_response* and *sensor_norm* for\n"
7284 "details on how to specify the backend response.\n"
7286 AUTHORS(
"Mattias Ekstrom",
"Patrick Eriksson" ),
7287 OUT(
"sensor_response",
"sensor_response_f",
"sensor_response_pol",
7288 "sensor_response_za",
"sensor_response_aa",
7289 "sensor_response_f_grid" ),
7293 IN(
"sensor_response",
"sensor_response_f",
"sensor_response_pol",
7294 "sensor_response_za",
"sensor_response_aa",
7295 "sensor_response_f_grid",
"sensor_response_pol_grid",
7296 "sensor_response_za_grid",
"sensor_response_aa_grid",
7297 "f_backend",
"backend_channel_response",
"sensor_norm" ),
7306 (
NAME(
"sensor_responseFillFgrid" ),
7309 "Polynomial frequency interpolation of spectra.\n"
7311 "The sensor response methods treat the spectra to be piece-wise linear\n"
7312 "functions. This method is a workaround for making methods handling\n"
7313 "the spectra in a more elaborate way: it generates spectra on a more\n"
7314 "dense grid by polynomial interpolation. The interpolation is not\n"
7315 "done explicitly, it is incorporated into *sensor_response*.\n"
7317 "This method should in general increase the calculation accuracy for\n"
7318 "a given *f_grid*. However, the selection of (original) grid points\n"
7319 "becomes more sensitive when using this method. A poor choice of grid\n"
7320 "points can result in a decreased accuracy, or generation of negative\n"
7321 "radiances. Test calculations indicated that the error easily can\n"
7322 "increase with this method close the edge of *f_grid*, and it could\n"
7323 "be wise to make *f_grid* a bit wider than actually necessary to avoid\n"
7326 "The method shall be inserted before the antenna stage. That is, this\n"
7327 "method shall normally be called directly after *sensor_responseInit*.\n"
7329 "Between each neighbouring points of *f_grid*, this method adds\n"
7330 "*nfill* grid points. The polynomial order of the interpolation is\n"
7333 AUTHORS(
"Patrick Eriksson" ),
7334 OUT(
"sensor_response",
"sensor_response_f",
"sensor_response_pol",
7335 "sensor_response_za",
"sensor_response_aa",
7336 "sensor_response_f_grid" ),
7340 IN(
"sensor_response",
"sensor_response_f",
"sensor_response_pol",
7341 "sensor_response_za",
"sensor_response_aa",
7342 "sensor_response_f_grid",
"sensor_response_pol_grid",
7343 "sensor_response_za_grid",
"sensor_response_aa_grid" ),
7344 GIN(
"polyorder",
"nfill" ),
7347 GIN_DESC(
"Polynomial order of interpolation",
7348 "Number of points to insert in each gap of f_grid" )
7353 (
NAME(
"sensor_responseBackendFrequencySwitching" ),
7356 "Frequency switching for a pure SSB reciever.\n"
7358 "This function can be used for simulation of frequency switching.\n"
7359 "That is, when the final spectrum is the difference of two spectra\n"
7360 "shifted in frequency. The switching is performed by the LO, but\n"
7361 "for a pure singel sideband reciever this is most easily simulated\n"
7362 "by instead shifting the backend, as done here.\n"
7364 "A strightforward frequency switching is modelled (no folding)\n"
7365 "The channel positions for the first measurement cycle are\n"
7366 "f_backend+df1, and for the second f_backend+df2. The first\n"
7367 "measurement cycle is given the negive weight. That is, the output\n"
7368 "is the spectrum for cycle2 minus the spectrum for cycle1.\n"
7369 "Output frequency grids are set to *f_backend*.\n"
7371 "Use *sensor_responseFrequencySwitching* for double sideband cases.\n"
7373 "The method has the same general functionality as, and can replace,\n"
7374 "*sensor_responseBackend*.\n"
7376 AUTHORS(
"Patrick Eriksson" ),
7377 OUT(
"sensor_response",
"sensor_response_f",
"sensor_response_pol",
7378 "sensor_response_za",
"sensor_response_aa",
7379 "sensor_response_f_grid" ),
7383 IN(
"sensor_response",
"sensor_response_f",
"sensor_response_pol",
7384 "sensor_response_za",
"sensor_response_aa",
7385 "sensor_response_f_grid",
"sensor_response_pol_grid",
7386 "sensor_response_za_grid",
"sensor_response_aa_grid",
7387 "f_backend",
"backend_channel_response",
"sensor_norm" ),
7388 GIN(
"df_1",
"df2" ),
7391 GIN_DESC(
"Frequency throw for cycle1.",
"Frequency throw for cycle2.")
7396 (
NAME(
"sensor_responseBeamSwitching" ),
7399 "Simulation of \"beam switching\".\n"
7401 "The measurement procedure is based on taking the difference between\n"
7402 "two spectra measured in different directions, and the calculation\n"
7403 "set-up must treat exactly two observation directions.\n"
7405 "The returned spectrum is y = w1*y + w2*y2, where y1 and w1 are the\n"
7406 "spectrum and weight for the first direction, respectively (y2 and\n"
7407 "(w2 defined correspondingly for the second direction).\n"
7409 "Zenith and azimuth angles after beam switching are set to the\n"
7410 "values of the second direction.\n"
7412 AUTHORS(
"Patrick Eriksson" ),
7413 OUT(
"sensor_response",
"sensor_response_f",
"sensor_response_pol",
7414 "sensor_response_za",
"sensor_response_aa",
7415 "sensor_response_za_grid",
"sensor_response_aa_grid" ),
7419 IN(
"sensor_response",
"sensor_response_f",
"sensor_response_pol",
7420 "sensor_response_za",
"sensor_response_aa",
7421 "sensor_response_f_grid",
"sensor_response_pol_grid",
7422 "sensor_response_za_grid",
"sensor_response_aa_grid" ),
7426 GIN_DESC(
"Weight for values from first viewing direction.",
7427 "Weight for values from second viewing direction."
7433 (
NAME(
"sensor_responseFrequencySwitching" ),
7436 "Simulation of \"frequency switching\".\n"
7438 "A general method for frequency switching. The WSM\n"
7439 "*sensor_responseBackendFrequencySwitching* gives a description of\n"
7440 "this observation technique, and is also a more straightforward\n"
7441 " method for pure singel sideband cases.\n"
7443 "It is here assume that *sensor_responseMultiMixerBackend* has been\n"
7444 "used to calculate the spectrum for two LO positions. This method\n"
7445 "calculates the difference between these two spectra, where the\n"
7446 "second spectrum gets weight 1 and the first weight -1 (as in\n"
7447 "*sensor_responseBackendFrequencySwitching*).\n"
7449 "Output frequency grids are taken from the second spectrum..\n"
7451 AUTHORS(
"Patrick Eriksson" ),
7452 OUT(
"sensor_response",
"sensor_response_f",
"sensor_response_pol",
7453 "sensor_response_za",
"sensor_response_aa",
7454 "sensor_response_f_grid" ),
7458 IN(
"sensor_response",
"sensor_response_f",
"sensor_response_pol",
7459 "sensor_response_za",
"sensor_response_aa",
7460 "sensor_response_f_grid",
"sensor_response_pol_grid",
7461 "sensor_response_za_grid",
"sensor_response_aa_grid" ),
7470 (
NAME(
"sensor_responseFromArrayData" ),
7473 "Sets up *sensor_response_array* from an existing *sensor_response*.\n"
7475 "Fills *sensor_response_array* and associated variables with\n"
7476 "corresponding non-array data. Hence, the array variables get all a\n"
7479 AUTHORS(
"Patrick Eriksson" ),
7480 OUT(
"sensor_response",
"sensor_response_f",
"sensor_response_pol",
7481 "sensor_response_za",
"sensor_response_aa" ),
7485 IN(
"imblock",
"sensor_response_array",
"sensor_response_f_array",
7486 "sensor_response_pol_array",
"sensor_response_za_array",
7487 "sensor_response_aa_array",
"sensor_response_index" ),
7496 (
NAME(
"sensor_responseIF2RF" ),
7499 "Converts sensor response variables from IF to RF.\n"
7501 "The function converts intermediate frequencies (IF) in\n"
7502 "*sensor_response_f* and *sensor_response_f_grid* to radio\n"
7503 "frequencies (RF). This conversion is needed if the frequency\n"
7504 "translation of a mixer is included and the position of backend\n"
7505 "channels are specified in RF.\n"
7507 "A direct frequency conversion is performed. Values are not\n"
7508 "sorted in any way.\n"
7510 AUTHORS(
"Patrick Eriksson" ),
7511 OUT(
"sensor_response_f",
"sensor_response_f_grid" ),
7515 IN(
"sensor_response_f",
"sensor_response_f_grid",
"lo",
7525 (
NAME(
"sensor_responseInit" ),
7528 "Initialises the variables summarising the sensor response.\n"
7530 "This method sets the variables to match monochromatic pencil beam\n"
7531 "calculations, to be further modified by inclusion of sensor\n"
7532 "characteristics. Use *sensorOff* if pure monochromatic pencil\n"
7533 "beam calculations shall be performed.\n"
7535 "The variables are set as follows:\n"
7536 " sensor_response : Identity matrix, with size matching *f_grid*,\n"
7537 " *stokes_dim* *mblock_za_grid* and\n"
7538 " *mblock_aa_grid*.\n"
7539 " sensor_response_f : Repeated values of *f_grid*.\n"
7540 " sensor_response_pol : Data matching *stokes_dim*.\n"
7541 " sensor_response_za : Repeated values of *mblock_za_grid*.\n"
7542 " sensor_response_aa : Repeated values of *mblock_aa_grid*.\n"
7543 " sensor_response_f_grid : Equal to *f_grid*.\n"
7544 " sensor_response_pol_grid: Set to 1:*stokes_dim*.\n"
7545 " sensor_response_za_grid : Equal to *mblock_za_grid*.\n"
7546 " sensor_response_aa_grid : Equal to *mblock_aa_grid*.\n"
7548 AUTHORS(
"Mattias Ekstrom",
"Patrick Eriksson" ),
7549 OUT(
"sensor_response",
"sensor_response_f",
"sensor_response_pol",
7550 "sensor_response_za",
"sensor_response_aa",
7551 "sensor_response_f_grid",
"sensor_response_pol_grid",
7552 "sensor_response_za_grid",
"sensor_response_aa_grid" ),
7556 IN(
"f_grid",
"mblock_za_grid",
"mblock_aa_grid",
"antenna_dim",
7557 "atmosphere_dim",
"stokes_dim",
"sensor_norm" ),
7566 (
NAME(
"sensor_responseMixer" ),
7569 "Includes response of the mixer of a heterodyne system.\n"
7571 "The function returns the sensor response matrix after the mixer\n"
7572 "characteristics have been included. Frequency variables are\n"
7573 "converted from radio frequency (RF) to intermediate frequency (IF).\n"
7574 "The returned frequency grid covers the range [0,max_if], where\n"
7575 "max_if is the highest IF covered by the sideband response grid.\n"
7577 "See *lo* and *sideband_response* for details on how to specify the\n"
7580 AUTHORS(
"Mattias Ekstrom",
"Patrick Eriksson" ),
7581 OUT(
"sensor_response",
"sensor_response_f",
"sensor_response_pol",
7582 "sensor_response_za",
"sensor_response_aa",
7583 "sensor_response_f_grid" ),
7587 IN(
"sensor_response",
"sensor_response_f",
"sensor_response_pol",
7588 "sensor_response_za",
"sensor_response_aa",
"sensor_response_f_grid",
7589 "sensor_response_pol_grid",
"sensor_response_za_grid",
7590 "sensor_response_aa_grid",
"lo",
"sideband_response",
"sensor_norm" ),
7599 (
NAME(
"sensor_responseMultiMixerBackend" ),
7602 "Handles mixer and backend parts for an instrument having multiple\n"
7605 "The WSMs *sensor_responseMixer*, *sensor_responseIF2RF* and\n"
7606 "*sensor_responseBackend* are called for each mixer chain, and a\n"
7607 "complete *sensor_response* is assembled. The instrument responses\n"
7608 "are described by *lo_multi*, *sideband_response_multi*,\n"
7609 "*sideband_mode_multi*, *f_backend_multi* and\n"
7610 "*backend_channel_response_multi*. All these WSVs must have same\n"
7611 "vector or array length. As *sensor_responseIF2RF* is called,\n"
7612 "*f_backend_multi* must hold RF (not IF) and output frequencies\n"
7613 "will be in absolute frequency (RF).\n"
7615 AUTHORS(
"Patrick Eriksson" ),
7616 OUT(
"sensor_response",
"sensor_response_f",
"sensor_response_pol",
7617 "sensor_response_za",
"sensor_response_aa",
7618 "sensor_response_f_grid" ),
7622 IN(
"sensor_response",
"sensor_response_f",
"sensor_response_pol",
7623 "sensor_response_za",
"sensor_response_aa",
7624 "sensor_response_f_grid",
"sensor_response_pol_grid",
7625 "sensor_response_za_grid",
"sensor_response_aa_grid",
7626 "lo_multi",
"sideband_response_multi",
7627 "sideband_mode_multi",
"f_backend_multi",
7628 "backend_channel_response_multi",
"sensor_norm" ),
7637 (
NAME(
"sensor_responsePolarisation" ),
7640 "Extraction of non-default polarisation components.\n"
7642 "The default is to output the Stokes elements I, Q, U and V (up to\n"
7643 "*stokes_dim*). This method allows to change the \"polarisation\" of\n"
7644 "the output. Polarisation components to be extracted are selected by\n"
7645 "*sensor_pol*. This method can be applied at any step of the sensor\n"
7648 "The method can only be applied on data for I, Q, U and V. The value\n"
7649 "of *stokes_dim* must be sufficiently large for the selected\n"
7650 "components. For example, I+45 requires that *stokes_dim* is at\n"
7653 "See *sensor_pol* for coding of polarisation states.\n"
7655 "Note that the state of *y_unit* is considered. This WSV must give\n"
7656 "the actual unit of the data. This as, the extraction of components\n"
7657 "is slightly different if data are radiances or brightness\n"
7658 "temperatures. In practise this means that *y_unit* (as to be\n"
7659 "applied inside *yCalc*) must be set before calling this method.\n"
7661 AUTHORS(
"Patrick Eriksson" ),
7662 OUT(
"sensor_response",
"sensor_response_f",
"sensor_response_pol",
7663 "sensor_response_za",
"sensor_response_aa",
7664 "sensor_response_pol_grid" ),
7668 IN(
"sensor_response",
"sensor_response_f",
"sensor_response_pol",
7669 "sensor_response_za",
"sensor_response_aa",
"sensor_response_f_grid",
7670 "sensor_response_pol_grid",
"sensor_response_za_grid",
7671 "sensor_response_aa_grid",
"stokes_dim",
"y_unit",
"sensor_pol" ),
7680 (
NAME(
"sensor_responseSimpleAMSU" ),
7683 "Simplified sensor setup for an AMSU-type instrument.\n"
7685 "This method allows quick and simple definition of AMSU-type\n"
7686 "sensors. Assumptions:\n"
7688 "1. Pencil beam antenna.\n"
7689 "2. Douple sideband receivers.\n"
7690 "3. Sideband mode \"upper\"\n"
7691 "4. The channel response is rectangular.\n"
7693 "Under these assumptions the only inputs needed are the LO positions,\n"
7694 "the offsets from the LO, and the IF bandwidths. They are provieded\n"
7695 "in sensor_description_amsu.\n"
7703 "sensor_response_f",
7704 "sensor_response_pol",
7705 "sensor_response_za",
7706 "sensor_response_aa",
7707 "sensor_response_f_grid",
7708 "sensor_response_pol_grid",
7709 "sensor_response_za_grid",
7710 "sensor_response_aa_grid",
7716 IN(
"atmosphere_dim",
7718 "sensor_description_amsu" ),
7722 GIN_DESC(
"Desired grid spacing in Hz." )
7780 (
NAME(
"sensor_responseWMRF" ),
7783 "Adds WMRF weights to sensor response.\n"
7785 "This method adds a spectrometer response that has been calculated\n"
7786 "with the weighted mean of representative frequencies (WMRF) method. It\n"
7787 "consists of a set of selected frequencies, and associated weights.\n"
7789 AUTHORS(
"Stefan Buehler, based on Patrick Erikssons sensor_responseBackend" ),
7790 OUT(
"sensor_response",
7791 "sensor_response_f",
7792 "sensor_response_pol",
7793 "sensor_response_za",
7794 "sensor_response_aa",
7795 "sensor_response_f_grid"),
7799 IN(
"sensor_response",
"sensor_response_f",
"sensor_response_pol",
7800 "sensor_response_za",
"sensor_response_aa",
7801 "sensor_response_f_grid",
"sensor_response_pol_grid",
7802 "sensor_response_za_grid",
"sensor_response_aa_grid",
7813 (
NAME(
"sensor_response_arraySingle" ),
7816 "Sets up *sensor_response_array* from an existing *sensor_response*.\n"
7818 "Fills *sensor_response_array* and associated variables with\n"
7819 "corresponding non-array data. Hence, the array variables get all a\n"
7822 AUTHORS(
"Patrick Eriksson" ),
7823 OUT(
"sensor_response_array",
"sensor_response_f_array",
7824 "sensor_response_pol_array",
"sensor_response_za_array",
7825 "sensor_response_aa_array" ),
7829 IN(
"sensor_response",
"sensor_response_f",
"sensor_response_pol",
7830 "sensor_response_za",
"sensor_response_aa" ),
7839 (
NAME(
"SparseSparseMultiply" ),
7842 "Multiplies a Sparse with another Sparse, result stored in Sparse.\n"
7844 "Makes the calculation gout: = gin1 * gin2\n"
7846 AUTHORS(
"Patrick Eriksson" ),
7850 GOUT_DESC(
"Product, can be same variable as any of the inputs." ),
7852 GIN(
"gin1" ,
"gin2" ),
7856 "Right sparse matrix." )
7862 (
NAME(
"SpeciesSet" ),
7865 "Set up a list of absorption species tag groups.\n"
7867 "Workspace variables like *abs_species* contain several tag\n"
7868 "groups. Each tag group contains one or more tags. This method converts\n"
7869 "descriptions of tag groups given in the keyword to the ARTS internal\n"
7870 "representation (an *ArrayOfArrayOfSpeciesTag*). A tag group selects\n"
7871 "spectral features which belong to the same species.\n"
7873 "A tag is defined in terms of the name of the species, isotope, and a\n"
7874 "range of frequencies. Species are named after the standard chemical\n"
7875 "names, e.g., \"O3\". Isotopes are given by the last digit of the atomic\n"
7876 "weight, i.g., \"O3-668\" for the asymmetric ozone molecule including an\n"
7877 "oxygen 18 atom. Groups of transitions are specified by giving a lower\n"
7878 "and upper limit of a frequency range, e.g., \"O3-666-500e9-501e9\".\n"
7880 "The symbol \"*\" acts as a wild card. Furthermore, frequency range or\n"
7881 "frequency range and isotope may be omitted.\n"
7883 "Finally, instead of the isotope the special letter \"nl\" may be given,\n"
7884 "e.g., \"H2O-nl\". This means that no absorption at all is associated\n"
7885 "with this tag. (It is not quite clear if this feature is useful for\n"
7886 "anything right now.)\n"
7888 "This method used to be a specific method for *abs_species*. Now it is\n"
7889 "generic, so that it can also be used to set *abs_nls* and *abs_pts*.\n"
7893 " species = [ \"O3-666-500e9-501e9, O3-686\",\n"
7895 " \"H2O-PWR98\" ]\n"
7897 " The first tag group selects all O3-666 lines between 500 and\n"
7898 " 501 GHz plus all O3-686 lines. \n"
7900 " The second tag group selects all remaining O3 transitions.\n"
7902 " The third tag group selects H2O, with one of the complete\n"
7903 " absorption models (Rosenkranz 98). No spectrocopic line catalogue\n"
7904 " data will be used for that third tag group.\n"
7909 GOUT_TYPE(
"ArrayOfArrayOfSpeciesTag" ),
7915 GIN_DESC(
"Specify one String for each tag group that you want to\n"
7916 "create. Inside the String, separate the tags by commas\n"
7917 "(plus optional blanks).\n")
7923 (
NAME(
"StringSet" ),
7926 "Sets a String to the given text string.\n"
7928 AUTHORS(
"Patrick Eriksson" ),
7943 (
NAME(
"surfaceBlackbody" ),
7946 "Creates variables to mimic a blackbody surface.\n"
7948 "This method sets up *surface_los*, *surface_rmatrix* and\n"
7949 "*surface_emission* for *surface_prop_agenda*. Here, *surface_los*\n"
7950 "and *surface_rmatrix* are set to be empty, and *surface_emission*\n"
7951 "to hold blackbody radiation for a temperature of *surface_skin_t*.\n"
7953 AUTHORS(
"Patrick Eriksson" ),
7954 OUT(
"surface_los",
"surface_rmatrix",
"surface_emission" ),
7958 IN(
"f_grid",
"stokes_dim",
"surface_skin_t" ),
7967 (
NAME(
"surfaceFlatReflectivity" ),
7970 "Creates variables to mimic specular reflection by a (flat) surface\n"
7971 "where the reflectivity is specified.\n"
7973 "The surface is treated to be flat, and the same (amplitude)\n"
7974 "reflectivity is assumed for vertical and horisontal polarisation.\n"
7975 "This assumption results in a pure diagonal *surface_rmatrix* (see\n"
7976 "surface chapter in AUG).\n"
7978 "Local thermodynamic equilibrium is assumed, which corresponds to\n"
7979 "that reflectivity and emissivity add up to 1. The\n"
7980 "emission is unpolarised here.\n"
7982 AUTHORS(
"Patrick Eriksson" ),
7983 OUT(
"surface_los",
"surface_rmatrix",
"surface_emission" ),
7987 IN(
"f_grid",
"stokes_dim",
"atmosphere_dim",
"rte_los",
7988 "surface_skin_t",
"surface_scalar_reflectivity" ),
7997 (
NAME(
"surfaceFlatRefractiveIndex" ),
8000 "Creates variables to mimic specular reflection by a (flat) surface\n"
8001 "where the refracive index is specified.\n"
8003 "The dielectric properties of the surface are described by\n"
8004 "*complex_n*. The Fresnel eqiuations are used to calculate\n"
8005 "amplitude reflection coefficients. The method can thus result\n"
8006 "in that the reflection properties differ between frequencies\n"
8007 "and polarizations."
8009 "Local thermodynamic equilibrium is assumed, which corresponds to\n"
8010 "that the reflection and emission coefficients add up to 1.\n"
8012 AUTHORS(
"Patrick Eriksson" ),
8013 OUT(
"surface_los",
"surface_rmatrix",
"surface_emission" ),
8017 IN(
"f_grid",
"stokes_dim",
"atmosphere_dim",
"rte_los",
8018 "surface_skin_t",
"complex_n" ),
8027 (
NAME(
"surfaceFlatSingleEmissivity" ),
8030 "Creates variables to mimic specular reflection by a (flat) surface\n"
8031 "where the emissivity is specified.\n"
8033 "As *surfaceFlatVaryingEmissivity*, but assumes that the emissivity\n"
8034 "does not vary with frequency. The emissivity can be defined with a\n"
8035 "a varying degree of complexity and there is no specific workspace\n"
8036 "variable defined to hold the emissivity. You have to define the\n"
8037 "'surface_emissivity' to match your needs.\n"
8039 AUTHORS(
"Patrick Eriksson" ),
8040 OUT(
"surface_los",
"surface_rmatrix",
"surface_emission" ),
8044 IN(
"f_grid",
"stokes_dim",
"atmosphere_dim",
"rte_los",
8046 GIN(
"surface_emissivity" ),
8049 GIN_DESC(
"The emissivity, a value between 0 and 1." )
8054 (
NAME(
"surfaceFlatVaryingEmissivity" ),
8057 "Creates variables to mimic specular reflection by a (flat) surface\n"
8058 "where the emissivity is specified.\n"
8060 "The usage of emissivity does not provide any polarisation\n"
8061 "information and it is only formally correct to use this method\n"
8062 "for *stokes_dim* = 1 (but there is no hard-coded restriction).\n"
8064 "Local thermodynamic equilibrium is assumed, which corresponds to\n"
8065 "that the reflection and emission coefficients add up to 1.\n"
8067 "As *surfaceFlatSingleEmissivity*, but assumes that the emissivity\n"
8068 "varies with frequency. The emissivity can be defined with a\n"
8069 "a varying degree of complexity and there is no specific workspace\n"
8070 "variable defined to hold the emissivity. You have to define the\n"
8071 "'surface_emissivity' to match your needs.\n"
8073 AUTHORS(
"Patrick Eriksson" ),
8074 OUT(
"surface_los",
"surface_rmatrix",
"surface_emission" ),
8078 IN(
"f_grid",
"stokes_dim",
"atmosphere_dim",
"rte_los",
8080 GIN(
"surface_emissivity" ),
8083 GIN_DESC(
"The emissivity, for each frequency in *f_grid*. Values "
8090 (
NAME(
"surfaceLambertianSimple" ),
8093 "Creates variables to mimic a Lambertian surface, ignoring the\n"
8094 "azimuthal dimension.\n"
8096 "A lambertian surface can be characterised solely by its\n"
8097 "reflectivity, here taken from *surface_scalar_reflectivity*.\n"
8099 "The down-welling radiation field is estimated by making calculations\n"
8100 "for *np* directions. The range of zenith angles ([0,90]) is divided\n"
8101 "in an equidistant manner. The values for *surface_rmatrix* are\n"
8102 "assuming a constant radiance over each zenith angle range. See AUG.\n"
8104 "Default is to select the zenith angles for *sensor_los* to be placed\n"
8105 "centrally in the grid ranges. For example, if *np* is set to 9,\n"
8106 "down-welling radiation will be calculated for zenith angles = \n"
8107 "5, 15, ..., 85. The position of these angles can be shifted by\n"
8108 "*za_pos*. This variable specifies the fractional distance inside the\n"
8109 "ranges. For example, a *za_pos* of 0.7 (np still 9) gives the angles\n"
8111 "Any aziumuth angle in *sensor_los* is set to 0.\n"
8113 "Local thermodynamic equilibrium is assumed, which corresponds to\n"
8114 "that the reflection and emission coefficients \"add up to 1\".\n"
8116 AUTHORS(
"Patrick Eriksson" ),
8117 OUT(
"surface_los",
"surface_rmatrix",
"surface_emission" ),
8121 IN(
"f_grid",
"stokes_dim",
"atmosphere_dim",
"rte_los",
8122 "surface_skin_t",
"surface_scalar_reflectivity" ),
8123 GIN(
"np",
"za_pos" ),
8126 GIN_DESC(
"Number of zenith angles for calculation of down-welling "
8128 "Position of angle in *surface_los* inside ranges of zenith "
8129 "angle grid. See above."
8135 (
NAME(
"Tensor3AddScalar" ),
8138 "Adds a scalar value to all elements of a tensor3.\n"
8140 "The result can either be stored in the same or another\n"
8143 AUTHORS(
"Patrick Eriksson" ),
8149 GIN(
"tin",
"value" ),
8153 "The value to be added to the tensor." )
8158 (
NAME(
"Tensor3Scale" ),
8161 "Scales all elements of a tensor with the specified value.\n"
8163 "The result can either be stored in the same or another\n"
8172 GIN(
"tin",
"value" ),
8176 "The value to be multiplied with the tensor." )
8181 (
NAME(
"Tensor3SetConstant" ),
8184 "Creates a tensor and sets all elements to the specified value.\n"
8186 "The size is determined by *ncols*, *nrows* etc.\n"
8193 IN(
"npages",
"nrows",
"ncols" ),
8202 (
NAME(
"Tensor4Scale" ),
8205 "Scales all elements of a tensor with the specified value.\n"
8207 "The result can either be stored in the same or another\n"
8216 GIN(
"tin",
"value" ),
8220 "The value to be multiplied with the tensor." )
8225 (
NAME(
"Tensor4SetConstant" ),
8228 "Creates a tensor and sets all elements to the specified value.\n"
8230 "The size is determined by *ncols*, *nrows* etc.\n"
8237 IN(
"nbooks",
"npages",
"nrows",
"ncols" ),
8246 (
NAME(
"Tensor5Scale" ),
8249 "Scales all elements of a tensor with the specified value.\n"
8251 "The result can either be stored in the same or another\n"
8260 GIN(
"tin",
"value" ),
8264 "The value to be multiplied with the tensor." )
8269 (
NAME(
"Tensor5SetConstant" ),
8272 "Creates a tensor and sets all elements to the specified value.\n"
8274 "The size is determined by *ncols*, *nrows* etc.\n"
8281 IN(
"nshelves",
"nbooks",
"npages",
"nrows",
"ncols" ),
8290 (
NAME(
"Tensor6Scale" ),
8293 "Scales all elements of a tensor with the specified value.\n"
8295 "The result can either be stored in the same or another\n"
8304 GIN(
"tin",
"value" ),
8308 "The value to be multiplied with the tensor." )
8313 (
NAME(
"Tensor6SetConstant" ),
8316 "Creates a tensor and sets all elements to the specified value.\n"
8318 "The size is determined by *ncols*, *nrows* etc.\n"
8325 IN(
"nvitrines",
"nshelves",
"nbooks",
"npages",
"nrows",
"ncols" ),
8334 (
NAME(
"Tensor7Scale" ),
8337 "Scales all elements of a tensor with the specified value.\n"
8339 "The result can either be stored in the same or another\n"
8348 GIN(
"tin",
"value" ),
8352 "The value to be multiplied with the tensor." )
8357 (
NAME(
"Tensor7SetConstant" ),
8360 "Creates a tensor and sets all elements to the specified value.\n"
8362 "The size is determined by *ncols*, *nrows* etc.\n"
8369 IN(
"nlibraries",
"nvitrines",
"nshelves",
"nbooks",
"npages",
"nrows",
8382 "A dummy method that can be used for test purposes.\n"
8384 "This method can be used by ARTS developers to quickly test stuff.\n"
8385 "The implementation is in file m_general.cc. This just saves you the\n"
8386 "trouble of adding a dummy method everytime you want to try\n"
8387 "something out quickly.\n"
8389 AUTHORS(
"Patrick Eriksson" ),
8403 (
NAME(
"timerStart" ),
8406 "Initializes the CPU timer."
8408 "Use *timerStop* to output the consumed cpu time since *timerStart*.\n"
8412 " ReadXML(f_grid,\"frequencies.xml\")\n"
8429 (
NAME(
"timerStop" ),
8432 "Stops the CPU timer."
8434 "Use *timerStop* to output the consumed cpu time since *timerStart*.\n"
8435 "See *timerStart* for example usage.\n"
8454 "As *Ignore* but for agenda output.\n"
8456 "This method is handy for use in agendas in order to suppress\n"
8457 "warnings about unused output workspace variables. What it does is:\n"
8464 GOUT_DESC(
"Variable to do nothing with." ),
8477 (
NAME(
"VectorAddScalar" ),
8480 "Adds a scalar to all elements of a vector.\n"
8482 "The result can either be stored in the same or another vector.\n"
8484 AUTHORS(
"Patrick Eriksson" ),
8490 GIN(
"v2" ,
"value" ),
8493 GIN_DESC(
"Output vector",
"The value to be added to the vector." )
8498 (
NAME(
"VectorExtractFromMatrix" ),
8501 "Extract a Vector from a Matrix.\n"
8503 "Copies row or column with given Index from input Matrix variable\n"
8504 "to create output Vector.\n"
8506 AUTHORS(
"Patrick Eriksson, Oliver Lemke, Stefan Buehler" ),
8512 GIN(
"m" ,
"i" ,
"direction" ),
8513 GIN_TYPE(
"Matrix",
"Index",
"String" ),
8516 "Index of row or column.",
8517 "Direction. \"row\" or \"column\"."
8523 (
NAME(
"VectorFlip" ),
8528 "The output is the input vector in reversed order. The result can\n"
8529 "either be stored in the same or another vector.\n"
8531 AUTHORS(
"Patrick Eriksson" ),
8545 (
NAME(
"VectorInsertGridPoints" ),
8548 "Insert some additional points into a grid.\n"
8550 "This method can for example be used to add line center frequencies to\n"
8551 "a regular frequency grid. If the original grid is [1,2,3], and the\n"
8552 "additional points are [2.2,2.4], the result will be [1,2,2.2,2.4,3].\n"
8554 "It is assumed that the original grid is sorted, otherwise a runtime\n"
8555 "error is thrown. The vector with the points to insert does not have to\n"
8556 "be sorted. If some of the input points are already in the grid, these\n"
8557 "points are not inserted again. New points outside the original grid are\n"
8558 "appended at the appropriate end. Input vector and output vector can be\n"
8562 " Vector : The new grid vector.\n"
8565 " Vector : The original grid vector.\n"
8566 " Vector : The points to insert.\n"
8574 GIN(
"gin1" ,
"gin2" ),
8577 GIN_DESC(
"The original grid vector",
8578 "The points to insert" )
8583 (
NAME(
"VectorLinSpace" ),
8586 "Creates a vector with linear spacing.\n"
8588 "The first element equals always the start value, and the spacing\n"
8589 "equals always the step value, but the last value can deviate from\n"
8590 "the stop value. *step* can be both positive and negative.\n"
8592 "The created vector is [start, start+step, start+2*step, ...]\n "
8594 AUTHORS(
"Patrick Eriksson" ),
8600 GIN(
"start",
"stop",
"step" ),
8601 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric" ),
8604 "Maximum/minimum value of the end value",
8605 "Spacing of the vector."
8611 (
NAME(
"VectorLogSpace" ),
8614 "Creates a vector with logarithmic spacing.\n"
8616 "The first element equals always the start value, and the spacing\n"
8617 "equals always the step value, but note that the last value can \n"
8618 "deviate from the stop value. The keyword step can be both positive\n"
8621 "Note, that although start has to be given in direct coordinates,\n"
8622 "step has to be given in log coordinates.\n"
8624 "Explicitly, the vector is:\n"
8625 " exp([ln(start), ln(start)+step, ln(start)+2*step, ...])\n"
8633 GIN(
"start",
"stop",
"step" ),
8634 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric" ),
8636 GIN_DESC(
"The start value. (Direct coordinates!)",
8637 "The maximum value of the end value. (Direct coordinates!)",
8638 "The spacing of the vector. (Log coordinates!)" )
8643 (
NAME(
"VectorMatrixMultiply" ),
8646 "Multiply a Vector with a Matrix and store the result in another\n"
8649 "This just computes the normal Matrix-Vector product, y=M*x. It is ok\n"
8650 "if input and output Vector are the same. This function is handy for\n"
8651 "multiplying the H Matrix to spectra.\n"
8657 GOUT_DESC(
"The result of the multiplication (dimension m)." ),
8659 GIN(
"gin1" ,
"gin2" ),
8662 GIN_DESC(
"The Matrix to multiply (dimension mxn).",
8663 "The original Vector (dimension n)." )
8668 (
NAME(
"VectorNLinSpace" ),
8671 "Creates a vector with length *nelem*, equally spaced between the\n"
8672 "given end values.\n"
8674 "The length (*nelem*) must be larger than 1.\n"
8676 AUTHORS(
"Patrick Eriksson" ),
8682 GIN(
"start",
"stop" ),
8692 (
NAME(
"VectorNLogSpace" ),
8695 "Creates a vector with length *nelem*, equally logarithmically\n"
8696 "spaced between the given end values.\n"
8698 "The length (*nelem*) must be larger than 1.\n"
8700 AUTHORS(
"Patrick Eriksson" ),
8706 GIN(
"start",
"stop" ),
8716 (
NAME(
"VectorScale" ),
8719 "Scales all elements of a vector with the same value.\n"
8721 "The result can either be stored in the same or another vector.\n"
8723 AUTHORS(
"Patrick Eriksson" ),
8741 (
NAME(
"VectorSetConstant" ),
8744 "Creates a vector and sets all elements to the specified value.\n"
8746 "The vector length is determined by *nelem*.\n"
8748 AUTHORS(
"Patrick Eriksson" ),
8762 (
NAME(
"VectorSet" ),
8765 "Create a vector from the given list of numbers.\n"
8767 " VectorSet(p_grid, [1000, 100, 10] )\n"
8768 " Will create a p_grid vector with these three elements.\n"
8779 GIN_DESC(
"The vector elements." ),
8785 (
NAME(
"VectorZtanToZaRefr1D" ),
8788 "Converts a set of true tangent altitudes to zenith angles.\n"
8790 "The tangent altitudes are given to the function as a vector, which\n"
8791 "are converted to a generic vector of zenith angles. The position of\n"
8792 "the sensor is given by the WSV *sensor_pos*. The function works\n"
8793 "only for 1D. The zenith angles are always set to be positive.\n"
8794 "The tangent altitudes are given as the altitude above the geoid.\n"
8796 AUTHORS(
"Patrick Eriksson",
"Mattias Ekstrom" ),
8800 GOUT_DESC(
"Vector with zenith angles." ),
8801 IN(
"refr_index_agenda",
"sensor_pos",
"p_grid",
"t_field",
"z_field",
8802 "vmr_field",
"r_geoid",
"atmosphere_dim" ),
8806 GIN_DESC(
"Vector with tangent altitudes." )
8811 (
NAME(
"VectorZtanToZa1D" ),
8814 "Converts a set of geometrical tangent altitudes to zenith angles.\n"
8816 "The tangent altitudes are given to the function as a vector, which\n"
8817 "are converted to a generic vector of zenith angles. The position of\n"
8818 "the sensor is given by the WSV *sensor_pos*. The function works\n"
8819 "only for 1D, where the geoid radius is taken from *r_geoid*. The\n"
8820 "zenith angles are always set to be positive. The tangent altitudes\n"
8821 "are given as the altitude above the geoid.\n"
8823 AUTHORS(
"Patrick Eriksson",
"Mattias Ekstrom" ),
8827 GOUT_DESC(
"Vector with zenith angles." ),
8828 IN(
"sensor_pos",
"r_geoid",
"atmosphere_dim" ),
8832 GIN_DESC(
"Vector with tangent altitudes." )
8837 (
NAME(
"verbosityInit" ),
8840 "Initializes the verbosity levels.\n"
8842 "Sets verbosity to defaults or the levels specified by -r on the command line.\n"
8858 (
NAME(
"verbositySet" ),
8861 "Sets the verbosity levels.\n"
8863 "Sets the reporting level for agenda calls, screen and file.\n"
8864 "All reporting levels can reach from 0 (only error messages)\n"
8865 "to 3 (everything). The agenda setting applies in addition\n"
8866 "to both screen and file output.\n"
8874 GIN(
"agenda",
"screen",
"file" ),
8875 GIN_TYPE(
"Index",
"Index",
"Index" ),
8877 GIN_DESC(
"Agenda verbosity level",
8878 "Screen verbosity level",
8879 "Report file verbosity level")
8884 (
NAME(
"verbositySetAgenda" ),
8887 "Sets the verbosity level for agenda output.\n"
8889 "See *verbositySet*\n"
8900 GIN_DESC(
"Agenda verbosity level")
8905 (
NAME(
"verbositySetFile" ),
8908 "Sets the verbosity level for report file output.\n"
8910 "See *verbositySet*\n"
8921 GIN_DESC(
"Report file verbosity level")
8926 (
NAME(
"verbositySetScreen" ),
8929 "Sets the verbosity level for screen output.\n"
8931 "See *verbositySet*\n"
8942 GIN_DESC(
"Screen verbosity level")
8947 (
NAME(
"WMRFSelectChannels" ),
8950 "Select some channels for WMRF calculation.\n"
8952 "The HIRS fast setup consists of a precalculated frequency grid\n"
8953 "covering all HIRS channels, and associated weights for each channel,\n"
8954 "stored in a weight matrix. (A *sensor_response* matrix.)\n"
8956 "If not all channels are requested for\n"
8957 "simulation, then this method can be used to remove the unwanted\n"
8958 "channels. It changes a number of variables in consistent fashion:\n"
8960 "- Unwanted channels are removed from f_backend. \n"
8961 "- Unwanted channels are removed from wmrf_weights.\n"
8962 "- Unnecessary frequencies are removed from f_grid.\n"
8963 "- Unnecessary frequencies are removed from wmrf_weights.\n"
8966 OUT(
"f_grid",
"wmrf_weights",
8971 IN(
"f_grid",
"f_backend",
8972 "wmrf_weights",
"wmrf_channels" ),
8981 (
NAME(
"WriteMolTau" ),
8984 "Writes a 'molecular_tau_file' as required for libRadtran.\n"
8986 "The libRadtran (www.libradtran.org) radiative transfer package is a \n"
8987 "comprehensive package for various applications, it can be used to \n"
8988 "compute radiances, irradiances, actinic fluxes, ... for the solar \n"
8989 "and the thermal spectral ranges. Absorption is usually treated using \n"
8990 "k-distributions or other parameterizations. For calculations with high \n"
8991 "spectral resolution it requires absorption coefficients from an external \n"
8992 "line-by-line model. Using this method, arts generates a file that can be \n"
8993 "used by libRadtran (option molecular_tau_file)."
9001 IN(
"f_grid",
"z_field",
"abs_field",
"atmosphere_dim" ),
9005 GIN_DESC(
"Name of the *molecular_tau_file*." )
9010 (
NAME(
"WriteNetCDF" ),
9013 "Writes a workspace variable to a NetCDF file.\n"
9015 "This method can write variables of any group.\n"
9017 "If the filename is omitted, the variable is written\n"
9018 "to <basename>.<variable_name>.nc.\n"
9028 GIN_TYPE(
"Vector, Matrix, Tensor3, Tensor4, Tensor5, ArrayOfVector,"
9034 "Name of the NetCDF file." ),
9044 (
NAME(
"WriteXML" ),
9047 "Writes a workspace variable to an XML file.\n"
9049 "This method can write variables of any group.\n"
9051 "If the filename is omitted, the variable is written\n"
9052 "to <basename>.<variable_name>.xml.\n"
9059 IN(
"output_file_format" ),
9067 "Name of the XML file." ),
9077 (
NAME(
"WriteXMLIndexed" ),
9080 "As *WriteXML*, but creates indexed file names.\n"
9082 "The variable is written to a file with name:\n"
9083 " <filename>.<file_index>.xml.\n"
9084 "where <file_index> is the value of *file_index*.\n"
9086 "This means that *filename* shall here not include the .xml\n"
9087 "extension. Omitting filename works as for *WriteXML*.\n"
9089 AUTHORS(
"Patrick Eriksson" ),
9094 IN(
"output_file_format",
"file_index" ),
9095 GIN(
"wsv",
"filename" ),
9098 GIN_DESC(
"Workspace variable to be saved.",
9099 "File name. See above."
9110 (
NAME(
"ybatchCalc" ),
9113 "Performs batch calculations for the measurement vector y.\n"
9115 "We perform *ybatch_n* jobs, starting at index *ybatch_start*. (Zero\n"
9116 "based indexing, as usual.) The output matrix *ybatch* will have\n"
9117 "dimension (y.nelem(),ybatch_n). So, indices in the output matrix start\n"
9118 "with zero, independent of *ybatch_start*.\n"
9120 "The method performs the following:\n"
9121 " 1. Sets *ybatch_index* = *ybatch_start*.\n"
9122 " 2. Performs a-d until\n"
9123 " *ybatch_index* = *ybatch_start* + *ybatch_n*.\n"
9124 " a. Executes *ybatch_calc_agenda*.\n"
9125 " b. If *ybatch_index* = *ybatch_start*, resizes *ybatch*\n"
9126 " based on *ybatch_n* and length of *y*.\n"
9127 " c. Copies *y* to column *ybatch_index* - *ybatch_start*\n"
9129 " d. Adds 1 to *ybatch_index*.\n"
9131 "Beside the *ybatch_calc_agenda*, the WSVs *ybatch_start*\n"
9132 "and *ybatch_n* must be set before calling this method.\n"
9133 "Further, *ybatch_calc_agenda* is expected to produce a\n"
9134 "spectrum and should accordingly include a call of *yCalc*\n"
9135 "(or asimilar method).\n"
9137 "The input variable *ybatch_start* is set to a default of zero in\n"
9140 "An agenda that calculates spectra for different temperature profiles\n"
9141 "could look like this:\n"
9143 " AgendaSet(ybatch_calc_agenda){\n"
9144 " Extract(t_field,tensor4_1,ybatch_index)\n"
9148 "Jacobians are also collected, and stored in output variable *ybatch_jacobians*. \n"
9149 "(This will be empty if yCalc produces empty Jacobians.)\n"
9151 "See the user guide for further practical examples.\n"
9154 OUT(
"ybatch",
"ybatch_jacobians" ),
9158 IN(
"ybatch_start",
"ybatch_n",
"ybatch_calc_agenda" ),
9163 "A flag with value 1 or 0. If set to one, the batch\n"
9164 "calculation will continue, even if individual jobs\n"
9165 "fail. In that case, a warning message is written to\n"
9166 "screen and file (out1 output stream), and ybatch for the\n"
9167 "failed job is set to -1. The robust behavior does only work\n"
9168 "properly if your control file is run single threaded.\n"
9169 "Set \"--numthreads 1\". See \"arts --help\"."
9175 (
NAME(
"ybatchMetProfiles" ),
9178 "This method is used for simulating ARTS for metoffice model fields"
9180 "This method reads in *met_amsu_data* which contains the\n"
9181 "lat-lon of the metoffice profile files as a Matrix. It then\n"
9182 "loops over the number of profiles and corresponding to each\n"
9183 "longitude create the appropriate profile basename. Then,\n"
9184 "corresponding to each basename we have temperature field, altitude\n"
9185 "field, humidity field and particle number density field. The\n"
9186 "temperature field and altitude field are stored in the same dimensions\n"
9187 "as *t_field_raw* and *z_field_raw*. The oxygen and nitrogen VMRs are\n"
9188 "set to constant values of 0.209 and 0.782, respectively and are used\n"
9189 "along with humidity field to generate *vmr_field_raw*. \n"
9191 "The three fields *t_field_raw*, *z_field_raw*, and *vmr_field_raw* are\n"
9192 "given as input to *met_profile_calc_agenda* which is called in this\n"
9193 "method. See documentation of WSM *met_profile_calc_agenda* for more\n"
9194 "information on this agenda. \n"
9196 "The method also converts satellite zenith angle to appropriate\n"
9197 "*sensor_los*. It also sets the *p_grid* and *cloudbox_limits*\n"
9198 "from the profiles inside the function\n"
9205 IN(
"abs_species",
"met_profile_calc_agenda",
"f_grid",
"met_amsu_data",
9206 "sensor_pos",
"r_geoid",
"lat_grid",
"lon_grid",
"atmosphere_dim",
9208 GIN(
"nelem_p_grid",
"met_profile_path",
"met_profile_pnd_path" ),
9209 GIN_TYPE(
"Index",
"String",
"String" ),
9218 (
NAME(
"ybatchMetProfilesClear" ),
9221 "This method is used for simulating ARTS for metoffice model fields\n"
9222 "for clear sky conditions.\n"
9224 "This method reads in *met_amsu_data* which contains the\n"
9225 "lat-lon of the metoffice profile files as a Matrix. It then\n"
9226 "loops over the number of profiles and corresponding to each\n"
9227 "longitude create the appropriate profile basename. Then,\n"
9228 "Corresponding to each basename we have temperature field, altitude\n"
9229 "field, humidity field and particle number density field. The\n"
9230 "temperature field and altitude field are stored in the same dimensions\n"
9231 "as *t_field_raw* and *z_field_raw*. The oxygen and nitrogen VMRs are\n"
9232 "set to constant values of 0.209 and 0.782, respectively and are used\n"
9233 "along with humidity field to generate *vmr_field_raw*. \n"
9235 "The three fields *t_field_raw*, *z_field_raw*, and *vmr_field_raw* are\n"
9236 "given as input to *met_profile_calc_agenda* which is called in this\n"
9237 "method. See documentation of WSM *met_profile_calc_agenda* for more\n"
9238 "information on this agenda. \n"
9240 "The method also converts satellite zenith angle to appropriate\n"
9241 "*sensor_los*. It also sets the *p_grid* and *cloudbox_limits*\n"
9242 "from the profiles inside the function\n"
9249 IN(
"abs_species",
"met_profile_calc_agenda",
9250 "f_grid",
"met_amsu_data",
"sensor_pos",
"r_geoid" ),
9251 GIN(
"nelem_p_grid",
"met_profile_path" ),
9263 "Calculation of complete measurement vectors (y).\n"
9265 "The method performs radiative transfer calculations from a sensor\n"
9266 "perspective. Radiative transfer calculations are performed for\n"
9267 "monochromatic pencil beams, following *iy_clearsky_agenda* and\n"
9268 "associated agendas. Obtained radiances are weighted together by\n"
9269 "*sensor_response*, to include the characteristics of the sensor.\n"
9270 "The measurement vector obtained can contain anything from a single\n"
9271 "frequency value to a series of measurement scans (each consisting\n"
9272 "of a series of spectra), all depending on the settings. Spectra\n"
9273 "and jacobians are calculated in parallel.\n"
9275 "The unit of output radiances and jacobians follow *y_unit*. The\n"
9276 "conversion is applied on monochromatic pencil beam values. That\n"
9277 "is, before any sensor responses have been included.\n"
9278 "The frequency, polarisation etc. for each measurement value is\n"
9279 "given by *y_f*, *y_pol* etc. No unit conversion is applied for\n"
9282 AUTHORS(
"Patrick Eriksson" ),
9283 OUT(
"y",
"y_f",
"y_pol",
"y_pos",
"y_los",
"y_error",
"y_aux",
9288 IN(
"basics_checked",
"atmosphere_dim",
"p_grid",
"lat_grid",
9289 "lon_grid",
"t_field",
"z_field",
"vmr_field",
"cloudbox_on",
9290 "cloudbox_checked",
"stokes_dim",
"f_grid",
"sensor_pos",
9291 "sensor_los",
"mblock_za_grid",
"mblock_aa_grid",
"antenna_dim",
9292 "sensor_response",
"sensor_response_f",
9293 "sensor_response_pol",
"sensor_response_za",
"sensor_response_aa",
9294 "iy_clearsky_agenda",
"y_unit",
9295 "jacobian_agenda",
"jacobian_do",
"jacobian_quantities",
9296 "jacobian_indices" ),
9308 "Calculation of complete measurement vectors (y).\n"
9310 "The method performs radiative transfer calculations from a sensor\n"
9311 "perspective. Radiative transfer calculations are performed for\n"
9312 "monochromatic pencil beams, following *iy_clearsky_agenda* and\n"
9313 "associated agendas. Obtained radiances are weighted together by\n"
9314 "*sensor_response*, to include the characteristics of the sensor.\n"
9315 "The measurement vector obtained can contain anything from a single\n"
9316 "frequency value to a series of measurement scans (each consisting\n"
9317 "of a series of spectra), all depending on the settings. Spectra\n"
9318 "and jacobians are calculated in parallel.\n"
9320 "The unit of output radiances and jacobians follow *y_unit*. The\n"
9321 "conversion is applied on monochromatic pencil beam values. That\n"
9322 "is, before any sensor responses have been included.\n"
9323 "The frequency, polarisation etc. for each measurement value is\n"
9324 "given by *y_f*, *y_pol* etc. No unit conversion is applied for\n"
9327 AUTHORS(
"Patrick Eriksson" ),
9328 OUT(
"y",
"y_f",
"y_pol",
"y_pos",
"y_los",
"y_error",
"y_aux",
9333 IN(
"basics_checked",
"atmosphere_dim",
"p_grid",
"lat_grid",
9334 "lon_grid",
"t_field",
"z_field",
"vmr_field",
"cloudbox_on",
9335 "cloudbox_checked",
"stokes_dim",
"f_grid",
"sensor_pos",
9336 "sensor_los",
"mblock_za_grid",
"mblock_aa_grid",
"antenna_dim",
9337 "sensor_response_agenda",
"iy_clearsky_agenda",
"y_unit",
9338 "jacobian_agenda",
"jacobian_do",
"jacobian_quantities",
9339 "jacobian_indices" ),
9348 (
NAME(
"y_unitApply" ),
9351 "Conversion to other spectral units.\n"
9353 "Any conversion to brightness temperature is normally made inside\n"
9354 "*yCalc*. This method makes it possible to also make this conversion\n"
9355 "after *yCalc*, but with restrictions for *jacobian*.\n"
9357 "The method handles *y*, *y_error* and *jacobian* in parallel, where\n"
9358 "the two last variables are only considered if they are set. The\n"
9359 "input data must be in original radiance units. A completely\n"
9360 "stringent check of this can not be performed.\n"
9362 "The method can not be used with jacobian quantities that are not\n"
9363 "obtained through radiative transfer calculations. One example on\n"
9364 "quantity that can not be handled is *jacobianAddPolyfit*.\n"
9366 "If you are using this method, *y_unit* should be set to \"1\" when\n"
9367 "calling *yCalc*, and be changed before calling this method.\n"
9369 "See further *y_unit*.\n"
9371 AUTHORS(
"Patrick Eriksson" ),
9372 OUT(
"y",
"y_error",
"jacobian" ),
9376 IN(
"y",
"y_error",
"jacobian",
"y_f",
"y_pol",
"y_unit" ),
9385 (
NAME(
"z_fieldFromHSE" ),
9388 "Altitudes to fulfil hydrostatic equilibrium.\n"
9390 "The method applies hydrostatic equilibrium, considering the effect\n"
9391 "of water vapour (but not liquid or ice water). Several variables\n"
9392 "are hard-coded and the method is only valid for the Earth\n"
9394 "The output is an update of *z_field*. This variable is expected to\n"
9395 "contain approximative altitudes when calling the function. The\n"
9396 "altitude matching *p_hse* is kept constant. Other altitudes are\n"
9397 "basically arbitrary, but good estimates give quicker calculations.\n"
9399 "The calculations are repeated until the change in altitude is below\n"
9400 "*z_hse_accuracy*. An iterative process is needed as gravity varies\n"
9403 "The values in *lat_grid* must be \"geophysical\" latitudes. For 1D,\n"
9404 "this method requires that the length of *lat_grid* is 1.\n"
9406 "As a last step, it is checked that no gap between *z_surface* and\n"
9407 "*z_field* has been genereted.\n"
9409 AUTHORS(
"Patrick Eriksson" ),
9414 IN(
"atmosphere_dim",
"p_grid",
"lat_grid",
"lon_grid",
"abs_species",
9415 "t_field",
"z_field",
"vmr_field",
"r_geoid",
"z_surface",
9416 "basics_checked",
"p_hse",
"z_hse_accuracy" ),
Array< MdRecord > md_data_raw
Lookup information for workspace methods.
String get_array_groups_as_string()
This can be used to make arrays out of anything.
#define SUPPRESSHEADER(x)
The implementation for String, the ARTS string class.
ArrayOfString wsv_group_names
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.
Declaration of the class MdRecord.
Auxiliary header stuff related to workspace variable groups.
void define_md_data_raw()
The global header file for ARTS.