43 template <
typename ... T>
    49 template <
size_t LEN_OF_NAME,
    50           size_t LEN_OF_DESCRIPTION,
    51           size_t NUM_OF_AUTHORS,
    52           size_t NUM_OF_OUTPUTS,
    53           size_t NUM_OF_GOUT_ARGS,
    54           size_t NUM_OF_GOUT_TYPES,
    55           size_t NUM_OF_GOUT_DESCRIPTIONS,
    57           size_t NUM_OF_GIN_ARGS,
    58           size_t NUM_OF_GIN_TYPES,
    59           size_t NUM_OF_GIN_DEFAULTS,
    60           size_t NUM_OF_GIN_DESCRIPTIONS,
    63   const char (&name) [LEN_OF_NAME],
    64   const char (&description) [LEN_OF_DESCRIPTION],
    65   const std::array<String, NUM_OF_AUTHORS>& authors,
    66   const std::array<String, NUM_OF_OUTPUTS>& output,
    67   const std::array<String, NUM_OF_GOUT_ARGS>& gout,
    68   const std::array<String, NUM_OF_GOUT_TYPES>& gouttype,
    69   const std::array<String, NUM_OF_GOUT_DESCRIPTIONS>& goutdesc,
    70   const std::array<String, NUM_OF_INPUTS>& input,
    71   const std::array<String, NUM_OF_GIN_ARGS>& gin,
    72   const std::array<String, NUM_OF_GIN_TYPES>& gintype,
    73   const std::array<String, NUM_OF_GIN_DEFAULTS>& gindefault,
    74   const std::array<String, NUM_OF_GIN_DESCRIPTIONS>& gindesc,
    77   static_assert(LEN_OF_NAME > 1, 
"Must have a name");
    78   static_assert(LEN_OF_DESCRIPTION > 1, 
"Must have a description");
    79   static_assert(NUM_OF_AUTHORS not_eq 0, 
"Must have at least one author");
    80   static_assert(NUM_OF_GOUT_ARGS == NUM_OF_GOUT_TYPES, 
"GOUT type(s) count does not match number of GOUT");
    81   static_assert(NUM_OF_GOUT_ARGS == NUM_OF_GOUT_DESCRIPTIONS, 
"GOUT description(s) count does not match number of GOUT");
    82   static_assert(NUM_OF_GIN_ARGS == NUM_OF_GIN_TYPES, 
"GIN type(s) count does not match number of GIN");
    83   static_assert(NUM_OF_GIN_ARGS == NUM_OF_GIN_DEFAULTS, 
"GIN default(s) count does not match number of GIN");
    84   static_assert(NUM_OF_GIN_ARGS == NUM_OF_GIN_DESCRIPTIONS, 
"GIN description(s) count does not match number of GIN");
   103 #define DESCRIPTION(x) x   104 #define AUTHORS(...) \   105   string_array( __VA_ARGS__ )   107   string_array( __VA_ARGS__ )   109   string_array( __VA_ARGS__ )   110 #define GOUT_TYPE(...) \   111   string_array( __VA_ARGS__ )   112 #define GOUT_DESC(...) \   113   string_array( __VA_ARGS__ )   115   string_array( __VA_ARGS__ )   117   string_array( __VA_ARGS__ )   118 #define GIN_TYPE(...) \   119   string_array( __VA_ARGS__ )   120 #define GIN_DEFAULT(...) \   121   string_array( __VA_ARGS__ )   122 #define GIN_DESC(...) \   123   string_array( __VA_ARGS__ )   124 #define SETMETHOD(x) x   125 #define AGENDAMETHOD(x) x   126 #define USES_TEMPLATES(x) x   127 #define PASSWORKSPACE(x) x   128 #define PASSWSVNAMES(x) x   203   const String ARRAY_GROUPS_WITH_BASETYPE =
   215               String(
"Creates a variable of group " + *it +
   218                      "After being created, the variable is uninitialized.\n")
   242       NAME(
"AbsInputFromAtmFields"),
   243       DESCRIPTION(
"Initialises the WSVs *abs_p*, *abs_t* and *abs_vmrs* from\n"   244                   "*p_grid, *t_field* and *vmr_field*.\n"   246                   "This only works for a 1D atmosphere!\n"),
   248       OUT(
"abs_p", 
"abs_t", 
"abs_vmrs"),
   252       IN(
"atmosphere_dim", 
"p_grid", 
"t_field", 
"vmr_field"),
   259       NAME(
"AbsInputFromRteScalars"),
   261           "Initialize absorption input WSVs from local atmospheric conditions.\n"   263           "The purpose of this method is to allow an explicit line-by-line\n"   264           "calculation, e.g., by *abs_coefCalcFromXsec*, to be put inside the\n"   265           "*propmat_clearsky_agenda*. What the method does is to prepare absorption\n"   266           "input parameters (pressure, temperature, VMRs), from the input\n"   267           "parameters to *propmat_clearsky_agenda*.\n"),
   269       OUT(
"abs_p", 
"abs_t", 
"abs_vmrs"),
   273       IN(
"rtp_pressure", 
"rtp_temperature", 
"rtp_vmr"),
   280       NAME(
"abs_cia_dataAddCIARecord"),
   282           "Takes CIARecord as input and appends the results in the appropriate place.\n"   284           "If CIARecord has same species as species in *abs_cia_data*, then the array\n"   285           "position is used to append all of the CIARecord into the array.  If clobber\n"   286           "evaluates as true, cia_record overwrites the appropriate *abs_cia_data*.  If\n"   287           "species in cia_record are not in *abs_cia_data*, the CIARecord is pushed back.\n"),
   294       GIN(
"cia_record", 
"clobber"),
   297       GIN_DESC(
"CIA record to append to *abs_cia_data*.",
   298                "If true, the new input clobbers the old cia data.")));
   301       NAME(
"abs_cia_dataReadFromCIA"),
   303           "Read data from a CIA data file for all CIA molecules defined\n"   304           "in *abs_species*.\n"   306           "The units in the HITRAN file are:\n"   307           "Frequency: cm^(-1)\n"   308           "Binary absorption cross-section: cm^5 molec^(-2)\n"   310           "Upon reading we convert this to the ARTS internal SI units \n"   311           "of Hz and m^5 molec^(-2).\n"),
   321       GIN_DESC(
"Path to the CIA catalog directory.")));
   324       NAME(
"abs_cia_dataReadFromXML"),
   326           "Read data from a CIA XML file and check that all CIA tags defined\n"   327           "in *abs_species* are present in the file.\n"   329           "The units of the data are described in *abs_cia_dataReadFromCIA*.\n"),
   339       GIN_DESC(
"Name of the XML file.")));
   342       NAME(
"abs_coefCalcFromXsec"),
   343       DESCRIPTION(
"Calculate absorption coefficients from cross sections.\n"   345                   "This calculates both the total absorption and the\n"   346                   "absorption per species.\n"   348                   "Cross sections are multiplied by n*VMR.\n"),
   349       AUTHORS(
"Stefan Buehler", 
"Axel von Engeln"),
   354           "abs_coef_per_species",
   355           "src_coef_per_species"),
   359       IN(
"abs_xsec_per_species",
   360          "src_xsec_per_species",
   361          "dabs_xsec_per_species_dx",
   362          "dsrc_xsec_per_species_dx",
   364          "jacobian_quantities",
   374       NAME(
"abs_cont_descriptionAppend"),
   376           "Appends the description of a continuum model or a complete absorption\n"   377           "model to *abs_cont_names* and *abs_cont_parameters*.\n"   379           "See online documentation for *abs_cont_names* for a list of\n"   380           "allowed models and for information what parameters they require. See\n"   381           "file includes/continua.arts for default parameters for the various models.\n"),
   382       AUTHORS(
"Thomas Kuhn", 
"Stefan Buehler"),
   383       OUT(
"abs_cont_names", 
"abs_cont_models", 
"abs_cont_parameters"),
   387       IN(
"abs_cont_names", 
"abs_cont_models", 
"abs_cont_parameters"),
   388       GIN(
"tagname", 
"model", 
"userparam"),
   389       GIN_TYPE(
"String", 
"String", 
"Vector"),
   392           "The name (species tag) of a continuum model. Must match one\n"   393           "of the models implemented in ARTS.\n",
   394           "A string selecting a particular continuum/full model under this\n"   396           "A Vector containing the required parameters for the selected model.\n"   397           "The meaning of the parameters and how many parameters are required\n"   398           "depends on the model.\n")));
   401       NAME(
"abs_cont_descriptionInit"),
   403           "Initializes the two workspace variables for the continuum description,\n"   404           "*abs_cont_names* and *abs_cont_parameters*.\n"   406           "This method does not really do anything, except setting the two\n"   407           "variables to empty Arrays. It is just necessary because the method\n"   408           "*abs_cont_descriptionAppend* wants to append to the variables.\n"   410           "Formally, the continuum description workspace variables are required\n"   411           "by the absorption calculation methods (e.g., *abs_coefCalcFromXsec*). Therefore you\n"   412           "always have to call at least *abs_cont_descriptionInit*, even if you do\n"   413           "not want to use any continua.\n"),
   414       AUTHORS(
"Thomas Kuhn", 
"Stefan Buehler"),
   415       OUT(
"abs_cont_names", 
"abs_cont_models", 
"abs_cont_parameters"),
   426     NAME(
"abs_hitran_relmat_dataReadHitranRelmatDataAndLines"),
   427       DESCRIPTION(
"Reads HITRAN line mixing data from a basedir\n"   428         "The basedir must point at line mixing data as provided by HITRAN.\n"   429         "The lines will be changed such that ALL CO2 lines are truncated\n"   430         "before adding the HITRAN line mixing lines.\n"   432         "The available modes are such that \"VP*\" uses Voigt profiles and\n"   433         "\"SDVP*\" uses speed-dependent Voigt profiles, where the \"_Y\"\n"   434         "signifies if Rosenkranz-style line mixing is considered or not, and\n"   435         "the \"W\" at the end signifies that full calculations are used.  At\n"   436         "the line mixing limit, line mixing is simply turned off.\n"   438         "The \"FullW\" mode uses Lorentzian calculations with the full relaxation\n"   439         "matrix until the line mixing limit is reached and it switches to Voigt.\n"   441         "The HITRAN LM data is available for download at:\n"   442         "https://hitran.org/supplementary/\n"   445       OUT(
"abs_hitran_relmat_data", 
"abs_lines_per_species"),
   449       IN(
"abs_lines_per_species", 
"abs_species"),
   450       GIN(
"basedir", 
"linemixinglimit", 
"fmin", 
"fmax", 
"stot", 
"mode"),
   451       GIN_TYPE(
"String", 
"Numeric", 
"Numeric", 
"Numeric", 
"Numeric", 
"String"),
   453       GIN_DESC(
"Direcory where the linemixing data is to be found",
   454                "Line mixing limit as defined by *AbsorptionLines*",
   455                "Minimum frequency to read from",
   456                "Maximum frequency to read until",
   457                "Minimum integrated band strength to consider",
   458                "Mode of calculations.  The options are: \"VP\", \"VP_Y\", \"SDVP\", \"SDVP_Y\", \"FullW\", and \"VP_W\""   462     NAME(
"abs_linesCleanupEmpty"),
   463       DESCRIPTION(
"Removes empty bands from *abs_lines*.\n"),
   476     NAME(
"abs_linesKeepBands"),
   477       DESCRIPTION(
"Keep only *qid*-matches in *abs_lines*\n"   479         "The ignore values will ignore isotopologue and/or species.\n"   480         "The latter means the isotopologue has to be ignores.\n"),
   487       GIN(
"qid", 
"ignore_spec", 
"ignore_isot"),
   488       GIN_TYPE(
"QuantumIdentifier", 
"Index", 
"Index"),
   490       GIN_DESC(
"Band ID", 
"If species is to be ignores", 
"If isotopologue is to be ignored")));
   493     NAME(
"abs_linesRemoveBand"),
   494       DESCRIPTION(
"Removes *qid* band from *abs_lines*\n"),
   507     NAME(
"abs_linesRemoveUnusedLocalQuantumNumbers"),
   509           "Removes unused quantums from local values in the line lists\n"),
   522       NAME(
"abs_linesReplaceWithLines"),
   524           "Replace all lines in *abs_lines* that match with lines in replacement_lines.\n"   526           "Each replacement_lines must match excatly a single line in *abs_lines*.\n"   528           "The matching required identical quantum number signatures to work\n"   530           "Note that lines are identified by their AbsorptionLines tags and by their quantum numbers.\n"),
   537       GIN(
"replacing_lines"),
   540       GIN_DESC(
"Line-array that replace lines in *abs_lines*.")));
   543       NAME(
"abs_linesAppendWithLines"),
   545           "Appends all lines in *abs_lines* that match with lines in replacement_lines if *safe*.\n"   546           "If not *safe*, appends all lines.\n"   548           "No appended line is allowed to match any line in *abs_lines* if *safe*\n"   550           "Conditional behavior if *safe*:\n"   551           "\tIf the AbosorptionLines to be appended match no AbsorptionLines\n"   552           "\tin *abs_lines*, then the entire AbsorptionLines is appended.\n"   553           "\tOtherwise, only a single AbsorptionLines can be matched and is not\n"   554           "\tallowed to have any internal matches\n"   556           "Note that lines are identified by their AbsorptionLines tags and by their quantum numbers\n"   557           "in *safe* mode.\n"),
   564       GIN(
"appending_lines", 
"safe"),
   565       GIN_TYPE(
"ArrayOfAbsorptionLines", 
"Index"),
   567       GIN_DESC(
"Line-array that appends lines in *abs_lines*.",
   568                "Flag whether to check quantum numbers or not")));
   571       NAME(
"abs_linesDeleteWithLines"),
   573           "Deletes all lines in *abs_lines* that match with lines in replacement_lines.\n"   575           "If a deleted line has no match, then nothing happens.\n"   577           "Note that lines are identified by their AbsorptionLines tags and by their quantum numbers.\n"   578           "There is no need to have all values correct.\n"),
   585       GIN(
"deleting_lines"),
   588       GIN_DESC(
"Line-array that removes lines from *abs_lines*.")));
   591     NAME(
"abs_linesDeleteBadF0"),
   593           "Deletes all lines in *abs_lines* that have bad central frequencies\n"   595           "If lower evaluates as true, deletes all lines with a frequency below f0.\n"   596           "Otherwise deletes all lines with a frequency above f0.\n"),
   607                "Lower or upper flag (eval as boolean)")));
   610       NAME(
"abs_linesDeleteLinesWithUndefinedLocalQuanta"),
   612           "Deletes all lines in *abs_lines* that have undefined local quanta\n"),
   625       NAME(
"abs_linesDeleteLinesWithBadOrHighChangingJs"),
   626       DESCRIPTION(
"Deletes all lines in *abs_lines* that have undefined Js or Js\n"   627                   "that change more than 1 between energy levels\n"),
   640       NAME(
"abs_linesDeleteLinesWithQuantumNumberAbove"),
   641       DESCRIPTION(
"Deletes all lines in *abs_lines* that have too large quantum number\n"),
   648       GIN(
"quantumnumber", 
"quantumnumber_value"),
   651       GIN_DESC(
"Quantum number identified", 
"Value")));
   654       NAME(
"abs_linesPrintDefinedQuantumNumbers"),
   655       DESCRIPTION(
"Print the count of defined quantum numbers in the catalog\n"),
   668       NAME(
"abs_lines_per_speciesReadSplitCatalog"),
   669       DESCRIPTION(
"Reads *abs_lines_per_species* split by\n"   670                   "*abs_linesWriteSplitXML* or *abs_lines_per_speciesWriteSplitXML*\n"   672                   "Note that this will sort the isotopologue\n"),
   674       OUT(
"abs_lines_per_species"),
   682       GIN_DESC(
"The path to the split catalog files")));
   685       NAME(
"abs_linesReadSpeciesSplitCatalog"),
   686       DESCRIPTION(
"Reads a catalog of absorption lines files in a directory\n"),
   693       GIN(
"basename", 
"robust"),
   696       GIN_DESC(
"The path to the split catalog files",
   697                "Flag to continue in case nothing is found [0 throws, 1 continues]")));
   700       NAME(
"abs_lines_per_speciesReadSpeciesSplitCatalog"),
   701       DESCRIPTION(
"See *abs_lines_per_speciesReadSplitCatalog* but expects\n"   702                   "a single file per species of *ArrayOfAbsorptionLines*\n"),
   704       OUT(
"abs_lines_per_species"),
   709       GIN(
"basename", 
"robust"),
   712       GIN_DESC(
"The path to the split catalog files",
   713                "Flag to continue in case nothing is found [0 throws, 1 continues]")));
   716       NAME(
"abs_lines_per_speciesSetEmpty"),
   717       DESCRIPTION(
"Empties *abs_lines_per_species* at the correct size.\n"),
   719       OUT(
"abs_lines_per_species"),
   731                DESCRIPTION(
"Sets a broadening parameter to empty if it is efficiently empty\n"   733                            "This will not save RAM but it will save disk space (reading time),\n"   734                            "and computational time by not doing unecessary calculations\n"),
   748                DESCRIPTION(
"Sets normalization type for all lines.\n"   750                            "Available options:\n"   751                            "\t\"VVH\"  \t - \t Van Vleck and Huber\n"   752                            "\t\"VVW\"  \t - \t Van Vleck and Weisskopf\n"   753                            "\t\"RQ\"   \t - \t Rosenkranz quadratic\n"   754                            "\t\"None\" \t - \t No extra normalization\n"   756                            "See the theory guide for more details.\n"),
   766                GIN_DESC(
"Method of line normalizations")));
   772                OUT(
"abs_lines_per_species"),
   776                IN(
"abs_lines_per_species"),
   780                GIN_DESC(
"Method of line normalizations")));
   784                DESCRIPTION(
"See *abs_linesSetNormalization* for options\n"   786                            "This function only acts on matches between the bands and input ID\n"),
   794                GIN_TYPE(
"String", 
"QuantumIdentifier"),
   796                GIN_DESC(
"Method of line normalizations",
   797                         "ID of one or more bands")));
   801                DESCRIPTION(
"See *abs_linesSetNormalization* for options\n"   803                            "This function only acts on matches between the bands and input ID\n"),
   805                OUT(
"abs_lines_per_species"),
   809                IN(
"abs_lines_per_species"),
   811                GIN_TYPE(
"String", 
"QuantumIdentifier"),
   813                GIN_DESC(
"Method of line normalizations",
   814                         "ID of one or more bands")));
   818              DESCRIPTION(
"See *abs_linesSetNormalization* but for single species\n"),
   820              OUT(
"abs_lines_per_species"),
   824              IN(
"abs_lines_per_species", 
"abs_species"),
   825              GIN(
"option", 
"species_tag"),
   828              GIN_DESC(
"Method of line normalizations",
   829                       "The species tag from *abs_species* to change")));
   835                            "Available options:\n"   836                            "\t\"None\"    \t - \t No mirrored line\n"   837                            "\t\"Same\"    \t - \t Mirrored line broadened by line shape\n"   838                            "\t\"Manual\"  \t - \t Manually mirrored line (be careful; allows all frequencies)\n"   839                            "\t\"Lorentz\" \t - \t Mirrored line broadened by Lorentz\n"   841                            "Note that mirroring is never applied for DP line shape\n"   842                            "Also note that Lorentz profile is approached by most line shapes at high frequency offset.\n"   843                            "Also note that Manual settings are potentially dangerous as other frequency\n"   844                            "offsets might not work as hoped.\n"),
   854                GIN_DESC(
"Method of line mirroring")));
   860                OUT(
"abs_lines_per_species"),
   864                IN(
"abs_lines_per_species"),
   868                GIN_DESC(
"Method of line mirroring")));
   872                DESCRIPTION(
"See *abs_linesSetMirroring* for options\n"   874                            "This function only acts on matches between the bands and input ID\n"),
   882                GIN_TYPE(
"String", 
"QuantumIdentifier"),
   884                GIN_DESC(
"Method of line mirroring",
   885                         "ID of one or more bands")));
   889                DESCRIPTION(
"See *abs_linesSetMirroring* for options\n"   891                            "This function only acts on matches between the bands and input ID\n"),
   893                OUT(
"abs_lines_per_species"),
   897                IN(
"abs_lines_per_species"),
   899                GIN_TYPE(
"String", 
"QuantumIdentifier"),
   901                GIN_DESC(
"Method of line mirroring",
   902                         "ID of one or more bands")));
   906              DESCRIPTION(
"See *abs_linesSetMirroring* but for single species\n"),
   908              OUT(
"abs_lines_per_species"),
   912              IN(
"abs_lines_per_species", 
"abs_species"),
   913              GIN(
"option", 
"species_tag"),
   916              GIN_DESC(
"Method of line mirroring",
   917                       "The species tag from *abs_species* to change")));
   921                DESCRIPTION(
"Sets population type for all lines.\n"   923                            "Available options:\n"   924                            "\t\"LTE\"                          \t - \t Standard distribution by temperature\n"   925                            "\t\"NLTE-VibrationalTemperatures\" \t - \t LTE but with vibrational temperatures\n"   926                            "\t\"NLTE\"                         \t - \t Distribution is given as input\n"   928                            "You must have set *nlte_field* and/or its ilk to use the NLTE methods.\n"),
   938                GIN_DESC(
"Method of line population")));
   944                OUT(
"abs_lines_per_species"),
   948                IN(
"abs_lines_per_species"),
   952                GIN_DESC(
"Method of line population")));
   956                DESCRIPTION(
"See *abs_linesSetPopulation* for options\n"   958                            "This function only acts on matches between the bands and input ID\n"),
   966                GIN_TYPE(
"String", 
"QuantumIdentifier"),
   968                GIN_DESC(
"Method of line population",
   969                         "ID of one or more bands")));
   973                DESCRIPTION(
"See *abs_linesSetPopulation* for options\n"   975                            "This function only acts on matches between the bands and input ID\n"),
   977                OUT(
"abs_lines_per_species"),
   981                IN(
"abs_lines_per_species"),
   983                GIN_TYPE(
"String", 
"QuantumIdentifier"),
   985                GIN_DESC(
"Method of line population",
   986                         "ID of one or more bands")));
   990                DESCRIPTION(
"See *abs_linesSetPopulation* but for single species\n"),
   992                OUT(
"abs_lines_per_species"),
   996                IN(
"abs_lines_per_species", 
"abs_species"),
   997                GIN(
"option", 
"species_tag"),
  1000                GIN_DESC(
"Method of line population",
  1001                         "The species tag from *abs_species* to change")));
  1005                DESCRIPTION(
"Sets shape calculations type for all lines.\n"  1007                            "Available options:\n"  1008                            "\t\"DP\"   \t - \t Doppler profile\n"  1009                            "\t\"LP\"   \t - \t Lorentz profile\n"  1010                            "\t\"VP\"   \t - \t Voigt profile\n"  1011                            "\t\"SDVP\" \t - \t Speed-dependent Voigt profile\n"  1012                            "\t\"HTP\"  \t - \t Hartman-Tran profile\n"  1014                            "See the theory guide for more details.\n"),
  1024                GIN_DESC(
"Method of line shape calculations")));
  1030                OUT(
"abs_lines_per_species"),
  1034                IN(
"abs_lines_per_species"),
  1038                GIN_DESC(
"Method of line shape calculations")));
  1042                DESCRIPTION(
"See *abs_linesSetLineShapeType* for options\n"  1044                            "This function only acts on matches between the bands and input ID\n"),
  1051                GIN(
"option", 
"ID"),
  1052                GIN_TYPE(
"String", 
"QuantumIdentifier"),
  1054                GIN_DESC(
"Method of line shape calculations",
  1055                         "ID of one or more bands")));
  1059                DESCRIPTION(
"See *abs_linesSetLineShapeType* for options\n"  1061                            "This function only acts on matches between the bands and input ID\n"),
  1063                OUT(
"abs_lines_per_species"),
  1067                IN(
"abs_lines_per_species"),
  1068                GIN(
"option", 
"ID"),
  1069                GIN_TYPE(
"String", 
"QuantumIdentifier"),
  1071                GIN_DESC(
"Method of line shape calculations",
  1072                         "ID of one or more bands")));
  1076              DESCRIPTION(
"See *abs_linesSetLineShapeType* but for single species\n"),
  1078              OUT(
"abs_lines_per_species"),
  1082              IN(
"abs_lines_per_species", 
"abs_species"),
  1083              GIN(
"option", 
"species_tag"),
  1086              GIN_DESC(
"Method of line shape calculations",
  1087                       "The species tag from *abs_species* to change")));
  1091                DESCRIPTION(
"Sets cutoff type and magnitude for all lines.\n"  1093                            "The line is cut off when this is active at the given frequency.\n"  1094                            "The only non-zero range is from this range to its negative equivalent\n"  1096                            "Available options:\n"  1097                            "\t\"None\"   \t - \t No cutoff\n"  1098                            "\t\"ByLine\" \t - \t Cutoff relative line center, highest frequency: F0+cutoff\n"  1099                            "\t\"ByBand\" \t - \t Absolute frequency, highest frequency: cutoff\n"  1101                            "For \"ByLine\", the negative frequency is at F0-cutoff\n"  1102                            "For \"ByBand\", the negative frequency is at cutoff minus twice the average band frequency\n"),
  1109                GIN(
"option", 
"value"),
  1112                GIN_DESC(
"Method of line shape calculations",
  1113                         "Value of cutoff")));
  1119                OUT(
"abs_lines_per_species"),
  1123                IN(
"abs_lines_per_species"),
  1124                GIN(
"option", 
"value"),
  1127                GIN_DESC(
"Method of line shape calculations",
  1128                         "Value of cutoff")));
  1132                DESCRIPTION(
"See *abs_linesSetCutoff* for more options.\n"  1134                            "This function only acts on matches between the bands and input ID\n"),
  1141                GIN(
"option", 
"value", 
"ID"),
  1142                GIN_TYPE(
"String", 
"Numeric", 
"QuantumIdentifier"),
  1144                GIN_DESC(
"Method of line shape calculations",
  1146                         "ID of one or more bands")));
  1150                DESCRIPTION(
"See *abs_linesSetCutoff* for more options.\n"  1152                            "This function only acts on matches between the bands and input ID\n"),
  1154                OUT(
"abs_lines_per_species"),
  1158                IN(
"abs_lines_per_species"),
  1159                GIN(
"option", 
"value", 
"ID"),
  1160                GIN_TYPE(
"String", 
"Numeric", 
"QuantumIdentifier"),
  1162                GIN_DESC(
"Method of line shape calculations",
  1164                         "ID of one or more bands")));
  1168                DESCRIPTION(
"See *abs_linesSetCutoff* but for single species\n"),
  1170                OUT(
"abs_lines_per_species"),
  1174                IN(
"abs_lines_per_species", 
"abs_species"),
  1175                GIN(
"option", 
"value", 
"species_tag"),
  1176                GIN_TYPE(
"String", 
"Numeric", 
"String"),
  1178                GIN_DESC(
"Method of line shape calculations",
  1180                         "The species tag from *abs_species* to change")));
  1184                DESCRIPTION(
"Sets line mixing limit for all lines.\n"  1186                            "If value is less than 0, no limit is applied and line mixing is active.\n"  1187                            "Otherwise, line mixing is inactive if the pressure is below the limit.\n"),
  1201                DESCRIPTION(
"See *abs_linesSetLinemixingLimit*\n"),
  1203                OUT(
"abs_lines_per_species"),
  1207                IN(
"abs_lines_per_species"),
  1215                DESCRIPTION(
"See *abs_linesSetLinemixingLimit* for values\n"  1217                            "This function only acts on matches between the bands and input ID\n"),
  1225                GIN_TYPE(
"Numeric", 
"QuantumIdentifier"),
  1228                         "ID of one or more bands")));
  1232                DESCRIPTION(
"See *abs_linesSetLinemixingLimit* for values\n"  1234                            "This function only acts on matches between the bands and input ID\n"),
  1236                OUT(
"abs_lines_per_species"),
  1240                IN(
"abs_lines_per_species"),
  1242                GIN_TYPE(
"Numeric", 
"QuantumIdentifier"),
  1245                         "ID of one or more bands")));
  1249                DESCRIPTION(
"See *abs_linesSetLinemixingLimit* but for single species\n"),
  1251                OUT(
"abs_lines_per_species"),
  1255                IN(
"abs_lines_per_species", 
"abs_species"),
  1256                GIN(
"value", 
"species_tag"),
  1260                         "The species tag from *abs_species* to change")));
  1264                DESCRIPTION(
"Sets reference temperature for all lines.\n"),
  1280                OUT(
"abs_lines_per_species"),
  1284                IN(
"abs_lines_per_species"),
  1294                            "This function only acts on matches between the bands and input ID\n"),
  1302                GIN_TYPE(
"Numeric", 
"QuantumIdentifier"),
  1305                         "ID of one or more bands")));
  1311                            "This function only acts on matches between the bands and input ID\n"),
  1313                OUT(
"abs_lines_per_species"),
  1317                IN(
"abs_lines_per_species"),
  1319                GIN_TYPE(
"Numeric", 
"QuantumIdentifier"),
  1322                         "ID of one or more bands")));
  1326              DESCRIPTION(
"See *abs_linesSetT0* but for single species\n"),
  1328              OUT(
"abs_lines_per_species"),
  1332              IN(
"abs_lines_per_species", 
"abs_species"),
  1333              GIN(
"value", 
"species_tag"),
  1337                       "The species tag from *abs_species* to change")));
  1341                DESCRIPTION(
"Sets a quantum number to a new value\n"  1343                            "This function only acts on matches between the bands and input ID\n"),
  1350                GIN(
"quantum_number", 
"value", 
"ID"),
  1351                GIN_TYPE(
"String", 
"Rational", 
"QuantumIdentifier"),
  1354                         "Value of quantum number",
  1355                         "ID of one or more bands")));
  1359                DESCRIPTION(
"See *abs_linesSetQuantumNumberForMatch*\n"),
  1361                OUT(
"abs_lines_per_species"),
  1365                IN(
"abs_lines_per_species"),
  1366                GIN(
"quantum_number", 
"value", 
"ID"),
  1367                GIN_TYPE(
"String", 
"Rational", 
"QuantumIdentifier"),
  1370                         "Value of quantum number",
  1371                         "ID of one or more bands")));
  1374       NAME(
"abs_linesChangeBaseParameterForMatchingLevel"),
  1376           "Change parameter of all levels in *abs_lines* that match with *QuantumIdentifier*.\n"  1377           "Only works for these parameters:\n"  1378           "parameter_name = \"Statistical Weight\"\n"  1379           "parameter_name = \"Zeeman Coefficient\"\n"),
  1386       GIN(
"QI", 
"parameter_name", 
"change", 
"relative"),
  1387       GIN_TYPE(
"QuantumIdentifier", 
"String", 
"Numeric", 
"Index"),
  1389       GIN_DESC(
"Information to match the level.",
  1390                "Name of parameter to be replaced",
  1391                "Value with which to change matching level's value",
  1392                "Flag for relative change (0 is absolute change)")));
  1395       NAME(
"abs_linesChangeBaseParameterForMatchingLevels"),
  1396       DESCRIPTION(
"See *abs_linesChangeBaseParameterForMatchingLevel*\n"),
  1403       GIN(
"QI", 
"parameter_name", 
"change", 
"relative"),
  1404       GIN_TYPE(
"ArrayOfQuantumIdentifier", 
"String", 
"Vector", 
"Index"),
  1406       GIN_DESC(
"Information to match the level.",
  1407                "Name of parameter to be replaced",
  1408                "Value with which to change matching level's value",
  1409                "Flag for relative change (0 is absolute change)")));
  1412       NAME(
"abs_lines_per_speciesChangeBaseParameterForMatchingLevel"),
  1413       DESCRIPTION(
"See *abs_linesChangeBaseParameterForMatchingLevel*\n"),
  1415       OUT(
"abs_lines_per_species"),
  1419       IN(
"abs_lines_per_species"),
  1420       GIN(
"QI", 
"parameter_name", 
"change", 
"relative"),
  1421       GIN_TYPE(
"QuantumIdentifier", 
"String", 
"Numeric", 
"Index"),
  1423       GIN_DESC(
"Information to match the level.",
  1424                "Name of parameter to be replaced",
  1425                "Value with which to change matching level's value",
  1426                "Flag for relative change (0 is absolute change)")));
  1429       NAME(
"abs_lines_per_speciesChangeBaseParameterForMatchingLevels"),
  1430       DESCRIPTION(
"See *abs_linesChangeBaseParameterForMatchingLevel*\n"),
  1432       OUT(
"abs_lines_per_species"),
  1436       IN(
"abs_lines_per_species"),
  1437       GIN(
"QI", 
"parameter_name", 
"change", 
"relative"),
  1438       GIN_TYPE(
"ArrayOfQuantumIdentifier", 
"String", 
"Vector", 
"Index"),
  1440       GIN_DESC(
"Information to match the level.",
  1441                "Name of parameter to be replaced",
  1442                "Value with which to change matching level's value",
  1443                "Flag for relative change (0 is absolute change)")));
  1446       NAME(
"abs_linesSetBaseParameterForMatchingLevel"),
  1448           "Set parameter of all levels in *abs_lines* that match with *QuantumIdentifier*.\n"  1449           "Only works for these parameters:\n"  1450           "parameter_name = \"Statistical Weight\"\n"  1451           "parameter_name = \"Zeeman Coefficient\"\n"),
  1458       GIN(
"QI", 
"parameter_name", 
"change"),
  1459       GIN_TYPE(
"QuantumIdentifier", 
"String", 
"Numeric"),
  1461       GIN_DESC(
"Information to match the level.",
  1462                "Name of parameter to be replaced",
  1463                "Value with which to set matching level's value")));
  1466       NAME(
"abs_linesSetBaseParameterForMatchingLevels"),
  1467       DESCRIPTION(
"See *abs_linesSetBaseParameterForMatchingLevel*\n"),
  1474       GIN(
"QI", 
"parameter_name", 
"change"),
  1475       GIN_TYPE(
"ArrayOfQuantumIdentifier", 
"String", 
"Vector"),
  1477       GIN_DESC(
"Information to match the level.",
  1478                "Name of parameter to be replaced",
  1479                "Value with which to set matching level's value")));
  1482       NAME(
"abs_lines_per_speciesSetBaseParameterForMatchingLevel"),
  1483       DESCRIPTION(
"See *abs_linesSetBaseParameterForMatchingLevel*\n"),
  1485       OUT(
"abs_lines_per_species"),
  1489       IN(
"abs_lines_per_species"),
  1490       GIN(
"QI", 
"parameter_name", 
"change"),
  1491       GIN_TYPE(
"QuantumIdentifier", 
"String", 
"Numeric"),
  1493       GIN_DESC(
"Information to match the level.",
  1494                "Name of parameter to be replaced",
  1495                "Value with which to set matching level's value")));
  1498       NAME(
"abs_lines_per_speciesSetBaseParameterForMatchingLevels"),
  1499       DESCRIPTION(
"See *abs_linesSetBaseParameterForMatchingLevel*\n"),
  1501       OUT(
"abs_lines_per_species"),
  1505       IN(
"abs_lines_per_species"),
  1506       GIN(
"QI", 
"parameter_name", 
"change"),
  1507       GIN_TYPE(
"ArrayOfQuantumIdentifier", 
"String", 
"Vector"),
  1509       GIN_DESC(
"Information to match the level.",
  1510                "Name of parameter to be replaced",
  1511                "Value with which to set matching level's value")));
  1514       NAME(
"abs_linesChangeBaseParameterForMatchingLines"),
  1516           "Change parameter of all lines in *abs_lines* that match with *QuantumIdentifier*.\n"  1517           "Only works for these parameters:\n"  1518           "parameter_name = \"Central Frequency\"\n"  1519           "parameter_name = \"Line Strength\"\n"  1520           "parameter_name = \"Lower State Energy\"\n"  1521           "parameter_name = \"Einstein Coefficient\"\n"  1522           "parameter_name = \"Lower Statistical Weight\"\n"  1523           "parameter_name = \"Upper Statistical Weight\"\n"  1524           "parameter_name = \"Lower Zeeman Coefficient\"\n"  1525           "parameter_name = \"Upper Zeeman Coefficient\"\n"  1527           "Note that loose_matching:=0 means only identical quantum identifiers are accepted,\n"  1528           "otherwise the numbers in QI must just be contained in the line identifier\n"),
  1535       GIN(
"QI", 
"parameter_name", 
"change", 
"relative", 
"loose_matching"),
  1536       GIN_TYPE(
"QuantumIdentifier", 
"String", 
"Numeric", 
"Index", 
"Index"),
  1538       GIN_DESC(
"Information to match the line.",
  1539                "Name of parameter to be replaced",
  1540                "Value with which to change matching line's value",
  1541                "Flag for relative change (0 is absolute change)",
  1542                "Flag for loose match (0 means only complete matches)")));
  1545       NAME(
"abs_lines_per_speciesChangeBaseParameterForMatchingLines"),
  1546       DESCRIPTION(
"See *abs_linesChangeBaseParameterForMatchingLines*\n"),
  1548       OUT(
"abs_lines_per_species"),
  1552       IN(
"abs_lines_per_species"),
  1553       GIN(
"QI", 
"parameter_name", 
"change", 
"relative", 
"loose_matching"),
  1554       GIN_TYPE(
"QuantumIdentifier", 
"String", 
"Numeric", 
"Index", 
"Index"),
  1556       GIN_DESC(
"Information to match the line.",
  1557                "Name of parameter to be replaced",
  1558                "Value with which to change matching line's value",
  1559                "Flag for relative change (0 is absolute change)",
  1560                "Flag for loose match (0 means only complete matches)")));
  1563       NAME(
"abs_lines_per_speciesChangeBaseParameterForSpecies"),
  1564       DESCRIPTION(
"See *abs_linesChangeBaseParameterForMatchingLines* but for single species\n"),
  1566       OUT(
"abs_lines_per_species"),
  1570       IN(
"abs_lines_per_species", 
"abs_species"),
  1571       GIN(
"QI", 
"parameter_name", 
"change", 
"relative", 
"loose_matching", 
"species_tag"),
  1572       GIN_TYPE(
"QuantumIdentifier", 
"String", 
"Numeric", 
"Index", 
"Index", 
"String"),
  1574       GIN_DESC(
"Information to match the line.",
  1575                "Name of parameter to be replaced",
  1576                "Value with which to change matching line's value",
  1577                "Flag for relative change (0 is absolute change)",
  1578                "Flag for loose match (0 means only complete matches)",
  1579                "The species tag from *abs_species* to change")));
  1582       NAME(
"abs_linesSetBaseParameterForMatchingLines"),
  1584           "Set parameter of all lines in *abs_lines* that match with *QuantumIdentifier*.\n"  1585           "Only works for these parameters:\n"  1586           "parameter_name = \"Central Frequency\"\n"  1587           "parameter_name = \"Line Strength\"\n"  1588           "parameter_name = \"Lower State Energy\"\n"  1589           "parameter_name = \"Einstein Coefficient\"\n"  1590           "parameter_name = \"Lower Statistical Weight\"\n"  1591           "parameter_name = \"Upper Statistical Weight\"\n"  1592           "parameter_name = \"Lower Zeeman Coefficient\"\n"  1593           "parameter_name = \"Upper Zeeman Coefficient\"\n"  1595           "Note that loose_matching:=0 means only identical quantum identifiers are accepted,\n"  1596           "otherwise the numbers in QI must just be contained in the line identifier\n"),
  1603       GIN(
"QI", 
"parameter_name", 
"change", 
"loose_matching"),
  1604       GIN_TYPE(
"QuantumIdentifier", 
"String", 
"Numeric", 
"Index"),
  1606       GIN_DESC(
"Information to match the line.",
  1607                "Name of parameter to be replaced",
  1608                "Value with which to change matching line's value",
  1609                "Flag for loose match (0 means only complete matches)")));
  1612       NAME(
"abs_lines_per_speciesSetBaseParameterForMatchingLines"),
  1613       DESCRIPTION(
"See *abs_linesSetBaseParameterForMatchingLines*\n"),
  1615       OUT(
"abs_lines_per_species"),
  1619       IN(
"abs_lines_per_species"),
  1620       GIN(
"QI", 
"parameter_name", 
"change", 
"loose_matching"),
  1621       GIN_TYPE(
"QuantumIdentifier", 
"String", 
"Numeric", 
"Index"),
  1623       GIN_DESC(
"Information to match the line.",
  1624                "Name of parameter to be replaced",
  1625                "Value with which to change matching line's value",
  1626                "Flag for loose match (0 means only complete matches)")));
  1629       NAME(
"abs_lines_per_speciesSetBaseParameterForSpecies"),
  1630       DESCRIPTION(
"See *abs_linesSetBaseParameterForMatchingLines* but for single species\n"),
  1632       OUT(
"abs_lines_per_species"),
  1636       IN(
"abs_lines_per_species", 
"abs_species"),
  1637       GIN(
"QI", 
"parameter_name", 
"change", 
"loose_matching", 
"species_tag"),
  1638       GIN_TYPE(
"QuantumIdentifier", 
"String", 
"Numeric", 
"Index", 
"String"),
  1640       GIN_DESC(
"Information to match the line.",
  1641                "Name of parameter to be replaced",
  1642                "Value with which to change matching line's value",
  1643                "Flag for loose match (0 means only complete matches)",
  1644                "The species tag from *abs_species* to change")));
  1647       NAME(
"abs_linesSetLineShapeModelParameterForMatchingLines"),
  1648       DESCRIPTION(
"Sets line shape model data parameter in matching lines.\n"  1650         "The matching is done so that QI must be in the line identifier\n"  1652         "Acceptable parameter(s) are:\n"  1663         "Acceptable coefficient(s) are:\n"  1669         "Acceptable species are:\n"  1670         "\t\"AIR\" (so long as it is the broadening species list)\n"  1671         "\t\"SELF\" (so long as it is the broadening species list)\n"  1672         "\tAny species in the line broadening species\n"  1674         "Throws an error if it cannot find any targets to change\n"  1682       GIN(
"QI", 
"parameter", 
"coefficient", 
"species", 
"change"),
  1689       GIN_DESC(
"Information to match the line.",
  1690                "Name of parameter to be replaced",
  1691                "Coefficient of the parameter to be changed",
  1692                "Species of parameter to be changed",
  1693                "Sets the value found")));
  1696       NAME(
"abs_lines_per_speciesSetLineShapeModelParameterForMatchingLines"),
  1697       DESCRIPTION(
"See *abs_linesSetLineShapeModelParameterForMatchingLines*\n"  1700       OUT(
"abs_lines_per_species"),
  1704       IN(
"abs_lines_per_species"),
  1705       GIN(
"QI", 
"parameter", 
"coefficient", 
"species", 
"change"),
  1712       GIN_DESC(
"Information to match the line.",
  1713                "Name of parameter to be replaced",
  1714                "Coefficient of the parameter to be changed",
  1715                "Species of parameter to be changed",
  1716                "Sets the value found")));
  1719       NAME(
"abs_lines_per_speciesSetLineShapeModelParameterForSpecies"),
  1720       DESCRIPTION(
"See *abs_linesSetLineShapeModelParameterForMatchingLines*\n"  1723       OUT(
"abs_lines_per_species"),
  1727       IN(
"abs_lines_per_species", 
"abs_species"),
  1728       GIN(
"QI", 
"parameter", 
"coefficient", 
"species", 
"change", 
"species_tag"),
  1736       GIN_DESC(
"Information to match the line.",
  1737                "Name of parameter to be replaced",
  1738                "Coefficient of the parameter to be changed",
  1739                "Species of parameter to be changed",
  1740                "Sets the value found",
  1741                "The species tag from *abs_species* to change")));
  1744       NAME(
"abs_linesChangeLineShapeModelParameterForMatchingLines"),
  1745       DESCRIPTION(
"Change line shape model data parameter in matching lines.\n"  1747         "The matching is done so that QI must be in the line identifier\n"  1749         "Acceptable parameter(s) are:\n"  1760         "Acceptable coefficient(s) are:\n"  1766         "Acceptable species are:\n"  1767         "\t\"AIR\" (so long as it is the broadening species list)\n"  1768         "\t\"SELF\" (so long as it is the broadening species list)\n"  1769         "\tAny species in the line broadening species\n"  1771         "The line parameter will have its old value plus the change if\n"  1772         "relative is false, else it will have its old value times\n"  1775         "Throws an error if it cannot find any targets to change\n"  1783       GIN(
"QI", 
"parameter", 
"coefficient", 
"species", 
"change", 
"relative"),
  1791       GIN_DESC(
"Information to match the line.",
  1792                "Name of parameter to be replaced",
  1793                "Coefficient of the parameter to be changed",
  1794                "Species of parameter to be changed",
  1795                "Change in the value found",
  1796                "Flag for relative change (0 is absolute change)")));
  1799       NAME(
"abs_lines_per_speciesChangeLineShapeModelParameterForMatchingLines"),
  1800       DESCRIPTION(
"See *abs_linesChangeLineShapeModelParameterForMatchingLines*\n"  1803       OUT(
"abs_lines_per_species"),
  1807       IN(
"abs_lines_per_species"),
  1808       GIN(
"QI", 
"parameter", 
"coefficient", 
"species", 
"change", 
"relative"),
  1816       GIN_DESC(
"Information to match the line.",
  1817                "Name of parameter to be replaced",
  1818                "Coefficient of the parameter to be changed",
  1819                "Species of parameter to be changed",
  1820                "Change in the value found",
  1821                "Flag for relative change (0 is absolute change)")));
  1824       NAME(
"abs_lines_per_speciesChangeLineShapeModelParameterForSpecies"),
  1825       DESCRIPTION(
"See *abs_linesChangeLineShapeModelParameterForMatchingLines*\n"  1828       OUT(
"abs_lines_per_species"),
  1832       IN(
"abs_lines_per_species", 
"abs_species"),
  1833       GIN(
"QI", 
"parameter", 
"coefficient", 
"species", 
"change", 
"relative", 
"species_tag"),
  1842       GIN_DESC(
"Information to match the line.",
  1843                "Name of parameter to be replaced",
  1844                "Coefficient of the parameter to be changed",
  1845                "Species of parameter to be changed",
  1846                "Change in the value found",
  1847                "Flag for relative change (0 is absolute change)",
  1848                "The species tag from *abs_species* to change")));
  1851       NAME(
"abs_linesCompact"),
  1852       DESCRIPTION(
"Removes lines that are unimportant because of their\n"  1853                   "cutoff frequency range\n"),
  1854       AUTHORS(
"Stefan Buehler", 
"Richard Larsson"),
  1859       IN(
"abs_lines", 
"f_grid"),
  1866       NAME(
"abs_lines_per_speciesCompact"),
  1868       AUTHORS(
"Stefan Buehler", 
"Richard Larsson"),
  1869       OUT(
"abs_lines_per_species"),
  1873       IN(
"abs_lines_per_species", 
"f_grid"),
  1880       NAME(
"abs_lines_per_speciesCreateFromLines"),
  1882           "Split lines up into the different species.\n"  1884           "The order of the splitting will match the outer layer of *abs_species*\n"  1885           "There will be no respect for the internal layer of *abs_species*\n"),
  1887       OUT(
"abs_lines_per_species"),
  1891       IN(
"abs_lines", 
"abs_species"),
  1898       NAME(
"abs_lookupAdapt"),
  1900           "Adapts a gas absorption lookup table to the current calculation.\n"  1902           "The lookup table can contain more species and more frequencies than\n"  1903           "are needed for the current calculation. This method cuts down the\n"  1904           "table in memory, so that it contains just what is needed. Also, the\n"  1905           "species in the table are brought in the same order as the species in\n"  1906           "the current calculation.\n"  1908           "Of course, the method also performs quite a lot of checks on the\n"  1909           "table. If something is not ok, a runtime error is thrown.\n"  1911           "The method sets a flag *abs_lookup_is_adapted* to indicate that the\n"  1912           "table has been checked and that it is ok. Never set this by hand,\n"  1913           "always use this method to set it!\n"),
  1915       OUT(
"abs_lookup", 
"abs_lookup_is_adapted"),
  1919       IN(
"abs_lookup", 
"abs_species", 
"f_grid"),
  1926       NAME(
"abs_lookupCalc"),
  1928           "Creates a gas absorption lookup table.\n"  1930           "The lookup table stores absorption cross-sections as a function of\n"  1931           "pressure. Additionally, absorption can be stored as a function of\n"  1932           "temperature for temperature perturbations from a reference\n"  1935           "Additionally, absorption can be stored as a function of water vapor\n"  1936           "VMR perturbations from a reference profile. The variable *abs_nls*\n"  1937           "specifies, for which species water vapor perturbations should be\n"  1940           "Note, that the absorbing gas can be any gas, but the perturbing gas is\n"  1943       OUT(
"abs_lookup", 
"abs_lookup_is_adapted"),
  1962       NAME(
"abs_lookupInit"),
  1964           "Creates an empty gas absorption lookup table.\n"  1966           "This is mainly there to help developers. For example, you can write\n"  1967           "the empty table to an XML file, to see the file format.\n"),
  1980       NAME(
"abs_lookupSetup"),
  1982           "Set up input parameters for abs_lookupCalc.\n"  1984           "More information can be found in the documentation for method\n"  1985           "*abs_lookupSetupBatch*\n"  1987           "Max and min values of H2O and temperature are adjusted to allow for\n"  1988           "numerical perturbations in Jacobian calculation.\n"  1990           "The input variables *abs_nls_interp_order* and *abs_t_interp_order*\n"  1991           "are used to make sure that there are enough points in *abs_nls_pert*\n"  1992           "and *abs_t_pert* for the chosen interpolation order.\n"  1994           "Note: For homogeneous 1D cases, it can be advantageous to calculate\n"  1995           "*abs_lookup* from the 1D atmosphere, and to expand the atmosphere\n"  1996           "to 3D only after that. This particularly if nonlinear species\n"  1997           "(i.e., H2O) are involved."  2000           "   *abs_lookupSetupBatch*\n"),
  2011       IN(
"atmosphere_dim",
  2017          "atmfields_checked",
  2019          "abs_p_interp_order",
  2020          "abs_t_interp_order",
  2021          "abs_nls_interp_order"),
  2022       GIN(
"p_step", 
"t_step", 
"h2o_step"),
  2023       GIN_TYPE(
"Numeric", 
"Numeric", 
"Numeric"),
  2026                "Maximum step in log10(p[Pa]). If the pressure grid is "  2027                "coarser than this, additional points are added until each "  2028                "log step is smaller than this.",
  2030                "The temperature variation grid step in Kelvin, "  2031                "for a 2D or 3D atmosphere. For a 1D atmosphere this "  2032                "parameter is not used.",
  2034                "The H2O variation grid step [fractional], if "  2035                "H2O variations are done (which is determined automatically, "  2036                "based on abs_species and the atmospheric dimension). For a "  2037                "1D atmosphere this parameter is not used.")));
  2040       NAME(
"abs_lookupSetupBatch"),
  2042           "Set up input parameters for abs_lookupCalc for batch calculations.\n"  2044           "This method performs a similar task as *abs_lookupSetup*, with the\n"  2045           "difference that the lookup table setup is not for a single\n"  2046           "atmospheric state, but for a whole batch of them, stored in\n"  2047           "*batch_atm_fields_compact*.\n"  2049           "The method checks *abs_species* to decide which species require\n"  2050           "nonlinear treatment in the lookup table.\n"  2052           "The method also checks which range of pressures, temperatures, and\n"  2053           "VMRs occurs, and sets *abs_p*, *abs_t*, *abs_t_pert*, and *abs_vmrs*\n"  2056           "If nonlinear species are present, *abs_nls* and *abs_nls_pert* are also\n"  2059           "Max and min values of H2O and temperature are adjusted to allow for\n"  2060           "numerical perturbations in Jacobian calculation.\n"  2062           "The input variables *abs_nls_interp_order* and *abs_t_interp_order*\n"  2063           "are used to make sure that there are enough points in *abs_nls_pert*\n"  2064           "and *abs_t_pert* for the chosen interpolation order.\n"  2066           "The method checks each given field using *atmfields_checkedCalc*.\n"  2067           "If a field does not pass the check, a run-time error is thrown.\n"  2068           "To prevent this, the parameter *robust* can be set to one: Invalid \n"  2069           "atmospheres are skipped, but the run continues. This matches the \n"  2070           "robust behaviour of *ybatchCalc*.\n"  2073           "   *abs_lookupSetup*\n"),
  2085          "batch_atm_fields_compact",
  2086          "abs_p_interp_order",
  2087          "abs_t_interp_order",
  2088          "abs_nls_interp_order",
  2096       GIN_TYPE(
"Numeric", 
"Numeric", 
"Numeric", 
"Vector", 
"Index", 
"Index"),
  2099                "Grid step in log10(p[Pa]) (base 10 logarithm).",
  2101                "The temperature variation grid step in Kelvin. The true "  2102                "step can become finer than this, if required by the "  2103                "interpolation order.",
  2105                "The H2O variation grid step [fractional], if H2O variations "  2106                "are done (which is determined automatically, based on "  2107                "abs_species and the atmospheric dimension). As for T, the true "  2108                "step can turn out finer if required by the interpolation order.",
  2110                "You can give here explicit extreme values to add to "  2111                "abs_t_pert and abs_nls_pert. The order is [t_pert_min, "  2112                "t_pert_max, nls_pert_min, nls_pert_max].",
  2114                "A flag with value 1 or 0. If set to one, the batch\n"  2115                "setup will continue, even if individual fields are invalid.\n"  2116                "This is consistent with the behaviour of *ybatchCalc*.",
  2118                "A flag with value 1 or 0. If set to one, the gridnames of \n"  2119                " every *atm_fields_compact* are checked.")));
  2122       NAME(
"abs_lookupSetupWide"),
  2124           "Set up input parameters for abs_lookupCalc for a wide range of\n"  2125           "atmospheric conditions.\n"  2127           "This method can be used to set up parameters for a lookup table that\n"  2128           "really covers all reasonable atmospheric conditions.\n"  2130           "Reference profiles of T and H2O will be constant, so that the\n"  2131           "different dimensions in the lookup table are actually \"orthogonal\",\n"  2132           "unlike the traditional case where we have pressure dependent reference\n"  2133           "profiles. This makes the table numerically somewhat more robust then\n"  2134           "the traditional ones, and it makes it straightforward to calculate the\n"  2135           "accuracy for the different interpolations with abs_lookupTestAccuracy.\n"  2137           "You can give min an max values for the atmospheric conditions. The\n"  2138           "default values are chosen such that they cover the value range over\n"  2139           "the complete Chevallier91L data set, and a bit more. The statistics\n"  2140           "of the Chevallier91L data are:\n"  2142           "min(p)   / max(p)   [Pa]:  1 / 104960\n"  2143           "min(T)   / max(T)   [K]:   158.21 / 320.39\n"  2144           "min(H2O) / max(H2O) [VMR]: -5.52e-07 / 0.049\n"),
  2156          "abs_p_interp_order",
  2157          "abs_t_interp_order",
  2158          "abs_nls_interp_order"),
  2159       GIN(
"p_min", 
"p_max", 
"p_step", 
"t_min", 
"t_max", 
"h2o_min", 
"h2o_max"),
  2167       GIN_DEFAULT(
"0.5", 
"110000", 
"0.05", 
"100", 
"400", 
"0", 
"0.05"),
  2168       GIN_DESC(
"Pressure grid minimum [Pa].",
  2169                "Pressure grid maximum [Pa].",
  2170                "Pressure grid step in log10(p[Pa]) (base 10 logarithm).",
  2171                "Temperature grid minimum [K].",
  2172                "Temperature grid maximum [K].",
  2173                "Humidity grid minimum [fractional].",
  2174                "Humidity grid maximum [fractional].")));
  2177       NAME(
"abs_lookupTestAccuracy"),
  2179           "Test accuracy of absorption lookup table.\n"  2181           "Explicitly compare absorption from the lookup table with line-by-line\n"  2182           "calculations for strategically selected conditions (in-between the\n"  2183           "lookup table grid points).\n"  2185           "For error units see *abs_lookupTestAccMC*\n"  2187           "Produces no workspace output, only output to the output streams.\n"),
  2194          "abs_lookup_is_adapted",
  2195          "abs_p_interp_order",
  2196          "abs_t_interp_order",
  2197          "abs_nls_interp_order",
  2205       NAME(
"abs_lookupTestAccMC"),
  2207           "Test accuracy of absorption lookup table with Monte Carlo Algorithm.\n"  2209           "Explicitly compare absorption from the lookup table with line-by-line\n"  2210           "calculations for random conditions.\n"  2212           "The quantities returned are the mean value and standard deviation of\n"  2213           "the absolute value of the relative error in percent.\n"  2214           "The relative error itself is computed for a large number of cases\n"  2215           "(pressure, temperature, and H2O VMR combinations). In the frequency\n"  2216           "dimension the maximum value is taken for each case.\n"  2218           "Produces no workspace output, only output to the output streams.\n"),
  2225          "abs_lookup_is_adapted",
  2226          "abs_p_interp_order",
  2227          "abs_t_interp_order",
  2228          "abs_nls_interp_order",
  2237       NAME(
"abs_nlteFromRaw"),
  2246       IN(
"nlte_level_identifiers",
  2247          "nlte_vibrational_energies"),
  2251       GIN_DESC(
"Vibrational data [nlevels, np]")));
  2254       NAME(
"abs_speciesAdd"),
  2256           "Adds species tag groups to the list of absorption species.\n"  2258           "This WSM is similar to *abs_speciesSet*, the only difference is that\n"  2259           "this method appends species to an existing list of absorption species instead\n"  2260           "of creating the whole list.\n"  2262           "See *abs_speciesSet* for details on how tags are defined and examples of\n"  2263           "how to input them in the control file.\n"),
  2266           "propmat_clearsky_agenda_checked",
  2267           "abs_xsec_agenda_checked"),
  2275       GIN_DESC(
"Specify one String for each tag group that you want to\n"  2276                "add. Inside the String, separate the tags by commas\n"  2277                "(plus optional blanks).\n")));
  2280       NAME(
"abs_speciesAdd2"),
  2282           "Adds a species tag group to the list of absorption species and\n"  2283           "jacobian quantities.\n"  2285           "The method is basically a combined call of *abs_speciesAdd* and\n"  2286           "*jacobianAddAbsSpecies*. In this way it is not needed to specify a\n"  2287           "tag group in two different places.\n"  2289           "Arguments exactly as for *jacobianAddAbsSpecies*. Note that this\n"  2290           "method only handles a single tag group, in contrast to\n"  2291           "*abs_speciesAdd*.\n"),
  2294           "jacobian_quantities",
  2296           "propmat_clearsky_agenda_checked",
  2297           "abs_xsec_agenda_checked"),
  2301       IN(
"abs_species", 
"atmosphere_dim", 
"p_grid", 
"lat_grid", 
"lon_grid"),
  2302       GIN(
"gin1", 
"gin2", 
"gin3", 
"species", 
"unit"),
  2303       GIN_TYPE(
"Vector", 
"Vector", 
"Vector", 
"String", 
"String"),
  2305       GIN_DESC(
"Pressure retrieval grid.",
  2306                "Latitude retrieval grid.",
  2307                "Longitude retreival grid.",
  2308                "The species tag of the retrieval quantity.",
  2309                "Retrieval unit. See above."),
  2316       NAME(
"abs_speciesDefineAllInScenario"),
  2318           "Define one tag group for each species known to ARTS and included in an\n"  2319           "atmospheric scenario.\n"  2321           "You can use this as an alternative to *abs_speciesSet* if you want to make an\n"  2322           "absorption calculation that is as complete as possible. The method\n"  2323           "goes through all defined species and tries to open the VMR file. If\n"  2324           "this works the tag is included, otherwise it is skipped.\n"),
  2327           "propmat_clearsky_agenda_checked",
  2328           "abs_xsec_agenda_checked"),
  2337           "The name and path of a particular atmospheric scenario.\n"  2338           "For example: /pool/lookup2/arts-data/atmosphere/fascod/tropical")));
  2341       NAME(
"abs_speciesDefineAll"),
  2342       DESCRIPTION(
"Sets *abs_species*[i][0] to all species in ARTS\n"),
  2345           "propmat_clearsky_agenda_checked",
  2346           "abs_xsec_agenda_checked"),
  2371       NAME(
"abs_speciesSet"),
  2373           "Set up a list of absorption species tag groups.\n"  2375           "Workspace variables like *abs_species* contain several tag\n"  2376           "groups. Each tag group contains one or more tags. This method converts\n"  2377           "descriptions of tag groups given in the keyword to the ARTS internal\n"  2378           "representation (an *ArrayOfArrayOfSpeciesTag*). A tag group selects\n"  2379           "spectral features which belong to the same species.\n"  2381           "A tag is defined in terms of the name of the species, isotopologue, and a\n"  2382           "range of frequencies. Species are named after the standard chemical\n"  2383           "names, e.g., \"O3\". Isotopologues are given by the last digit of the atomic\n"  2384           "weight, i.g., \"O3-668\" for the asymmetric ozone molecule including an\n"  2385           "oxygen 18 atom. Groups of transitions are specified by giving a lower\n"  2386           "and upper limit of a frequency range, e.g., \"O3-666-500e9-501e9\".\n"  2388           "To turn on Zeeman calculation for a species, \"-Z\" may be appended\n"  2389           "to its name: \"O2-Z\" or \"O2-Z-66\"\n"  2391           "To turn on line mixing calculation for a species, \"-LM\" may be appended\n"  2392           "to its name (or after the Zeeman tag): \"O2-LM\" or \"O2-Z-LM-66\"\n"  2394           "The symbol \"*\" acts as a wild card. Furthermore, frequency range or\n"  2395           "frequency range and isotopologue may be omitted.\n"  2397           "Finally, instead of the isotopologue the special letter \"nl\" may be given,\n"  2398           "e.g., \"H2O-nl\". This means that no absorption at all is associated\n"  2399           "with this tag. (It is not quite clear if this feature is useful for\n"  2400           "anything right now.)\n"  2404           "   species = [ \"O3-666-500e9-501e9, O3-686\",\n"  2406           "               \"H2O-PWR98\" ]\n"  2408           "   The first tag group selects all O3-666 lines between 500 and\n"  2409           "   501 GHz plus all O3-686 lines. \n"  2411           "   The second tag group selects all remaining O3 transitions.\n"  2413           "   The third tag group selects H2O, with one of the complete\n"  2414           "   absorption models (Rosenkranz 98). No spectrocopic line catalogue\n"  2415           "   data will be used for that third tag group.\n"  2417           "   Note that order of tag groups in the species list matters. In our\n"  2418           "   example, changing the order of the first two tag group will give\n"  2419           "   different results: as \"O3\" already selects all O3 transitions,\n"  2420           "   no lines will remain to be selected by the\n"  2421           "   \"O3-666-500e9-501e9, O3-686\" tag.\n"  2423           "For CIA species the tag consists of the two involved species and\n"  2424           "a dataset index. CIA species can be defined for multiple regions\n"  2425           "The dataset index determines which region to use from the corresponding\n"  2426           "CIARecord in *abs_cia_data*.\n"  2430           "species = [ \"N2-CIA-N2-0, N2-CIA-N2-1\" ]\n"  2432           "For Hitran cross section species the tag consists of the species and\n"  2433           "the tagtype HXSEC, e.g. CFC11-HXSEC. The data for the species must be\n"  2434           "available in the *hitran_xsec_data* variable."  2436           "*abs_xsec_agenda_checked* and *propmat_clearsky_agenda_checked*\n"  2437           "are set to be false.\n"),
  2440           "abs_xsec_agenda_checked",
  2441           "propmat_clearsky_agenda_checked"),
  2449       GIN_DESC(
"Specify one String for each tag group that you want to\n"  2450                "create. Inside the String, separate the tags by commas\n"  2451                "(plus optional blanks).\n")));
  2454       NAME(
"abs_vecAddGas"),
  2456           "Add gas absorption to first element of absorption vector.\n"  2458           "The task of this method is to sum up the gas absorption of the\n"  2459           "different gas species and add the result to the first element of the\n"  2460           "absorption vector.\n"),
  2466       IN(
"abs_vec", 
"propmat_clearsky"),
  2473       NAME(
"abs_xsec_agenda_checkedCalc"),
  2475           "Checks if the *abs_xsec_agenda* contains all necessary\n"  2476           "methods to calculate all the species in *abs_species*.\n"  2478           "This method should be called just before the *abs_xsec_agenda*\n"  2479           "is used, e.g. *abs_lookupCalc*, *ybatchCalc*, *yCalc*\n"),
  2481       OUT(
"abs_xsec_agenda_checked"),
  2485       IN(
"abs_species", 
"abs_xsec_agenda"),
  2492       NAME(
"abs_xsec_per_speciesAddCIA"),
  2494           "Calculate absorption cross sections per tag group for HITRAN CIA continua.\n"  2496           "This interpolates the cross sections from *abs_cia_data*.\n"  2498           "The robust option is intended only for testing. Do not use for normal\n"  2499           "runs, since subsequent functions will not be able to deal with NAN values.\n"),
  2501       OUT(
"abs_xsec_per_species", 
"dabs_xsec_per_species_dx"),
  2505       IN(
"abs_xsec_per_species",
  2506          "dabs_xsec_per_species_dx",
  2508          "jacobian_quantities",
  2509          "abs_species_active",
  2515       GIN(
"T_extrapolfac", 
"robust"),
  2519           "Temperature extrapolation factor (relative to grid spacing).",
  2520           "Set to 1 to suppress runtime errors (and return NAN values instead).")));
  2523       NAME(
"abs_xsec_per_speciesAddHitranXsec"),
  2525           "Calculate absorption cross sections per tag group for HITRAN xsec species.\n"  2527           "This broadens the cross section data from *hitran_xsec_data* and\n"  2528           "interpolates it onto the current f_grid.\n"  2530           "apply_tfit turns of the temperature fit. It is only meant for testing\n"  2531           "and should alwasy be kept on for real calculations.\n"  2533           "This method depends on the FFTW-3 library.\n"),
  2535       OUT(
"abs_xsec_per_species", 
"dabs_xsec_per_species_dx"),
  2539       IN(
"abs_xsec_per_species",
  2540          "dabs_xsec_per_species_dx",
  2542          "jacobian_quantities",
  2543          "abs_species_active",
  2547          "hitran_xsec_data"),
  2548       GIN(
"apply_tfit", 
"force_p", 
"force_t"),
  2549       GIN_TYPE(
"Index", 
"Numeric", 
"Numeric"),
  2552                "Positive value forces constant pressure [Pa].",
  2553                "Positive value forces constant temperature [K].")));
  2556       NAME(
"abs_xsec_per_speciesAddConts"),
  2558           "Calculate absorption cross sections per tag group for continua.\n"),
  2560       OUT(
"abs_xsec_per_species", 
"dabs_xsec_per_species_dx"),
  2564       IN(
"abs_xsec_per_species",
  2565          "dabs_xsec_per_species_dx",
  2567          "jacobian_quantities",
  2568          "abs_species_active",
  2574          "abs_cont_parameters",
  2582       NAME(
"abs_xsec_per_speciesAddLines"),
  2584           "Calculates the line spectrum for both attenuation and phase\n"  2585           "for each tag group and adds it to abs_xsec_per_species.\n"),
  2587       OUT(
"abs_xsec_per_species",
  2588           "src_xsec_per_species",
  2589           "dabs_xsec_per_species_dx",
  2590           "dsrc_xsec_per_species_dx"),
  2594       IN(
"abs_xsec_per_species",
  2595          "src_xsec_per_species",
  2596          "dabs_xsec_per_species_dx",
  2597          "dsrc_xsec_per_species_dx",
  2599          "jacobian_quantities",
  2600          "abs_species_active",
  2606          "abs_lines_per_species",
  2607          "isotopologue_ratios",
  2608          "partition_functions",
  2616       NAME(
"abs_xsec_per_speciesAddPredefinedO2MPM2020"),
  2617       DESCRIPTION(
"Reimplementation of published O2 absorption line cross-section algorithm\n"  2620         "\tDmitriy S. Makarov, Mikhail Yu. Tretyakov, Philip W. Rosenkranz, JQSRT 243, 2020,\n"  2621         "\tRevision of the 60-GHz atmospheric oxygen absorption band models for practical use,\n"  2622         "\thttps://doi.org/10.1016/j.jqsrt.2019.106798\n"  2624         "Note that this is only really applicable to Earth and at lower altitudes.\n"  2625         "The only two tested derivatives are for frequency and for temperature but\n"  2626         "other untested derivatives are available for all model parameters except a2\n"  2629       OUT(
"abs_xsec_per_species",
  2630           "dabs_xsec_per_species_dx"),
  2634       IN(
"abs_xsec_per_species",
  2635          "dabs_xsec_per_species_dx",
  2637          "jacobian_quantities",
  2648       NAME(
"abs_xsec_per_speciesInit"),
  2650           "Initialize *abs_xsec_per_species*.\n"  2652           "The initialization is\n"  2653           "necessary, because methods *abs_xsec_per_speciesAddLines*\n"  2654           "and *abs_xsec_per_speciesAddConts* just add to *abs_xsec_per_species*.\n"  2655           "The size is determined from *abs_species*.\n"),
  2657       OUT(
"abs_xsec_per_species",
  2658           "src_xsec_per_species",
  2659           "dabs_xsec_per_species_dx",
  2660           "dsrc_xsec_per_species_dx"),
  2665          "jacobian_quantities",
  2666          "abs_species_active",
  2669          "abs_xsec_agenda_checked",
  2679           "Adds zenith and azimuth angles.\n"  2681           "Adds up line-of-sights (LOS). In short, *dlos* is added to *ref_los*,\n"  2682           "assuming that a unit changes in zenith and azimuth are equal where\n"  2690       GIN(
"ref_los", 
"dlos"),
  2693       GIN_DESC(
"Reference line-of-sight (a single LOS).",
  2694                "Change in line-of-sight (can be multiple LOS).")));
  2697       NAME(
"AgendaAppend"),
  2699           "Append methods to an agenda.\n"  2701           "An agenda is used to store a list of methods that are meant to be\n"  2702           "executed sequentially.\n"  2704           "This method takes the methods given in the body (in the curly braces)\n"  2705           "and appends them to the agenda given by the output argument (in the round\n"  2708           "It also uses the agenda lookup data (defined in file agendas.cc) to\n"  2709           "check, whether the given methods use the right input WSVs and produce\n"  2710           "the right output WSVs.\n"),
  2738                                  GIN_DESC(
"Agenda to be executed."),
  2743       NAME(
"AgendaExecuteExclusive"),
  2745           "Execute an agenda exclusively.\n"  2747           "Only one call to *AgendaExecuteExclusive* is executed at a time.\n"  2748           "Other calls to this function are blocked until the current one\n"  2749           "finishes. WARNING: Can cause deadlocks! Use with care.\n"),
  2759       GIN_DESC(
"Agenda to be executed."),
  2766           "Set up an agenda.\n"  2768           "An agenda is used to store a list of methods that are meant to be\n"  2769           "executed sequentially.\n"  2771           "This method takes the methods given in the body (in the curly braces)\n"  2772           "and puts them in the agenda given by the output argument (in the round\n"  2775           "It also uses the agenda lookup data (defined in file agendas.cc) to\n"  2776           "check, whether the given methods use the right input WSVs and\n"  2777           "produce the right output WSVs.\n"),
  2795       NAME(
"AngularGridsSetFluxCalc"),
  2797           "Sets the angular grids for the calculation of radiation fluxes\n"  2798           "(irradiance) per hemispheres and heating rates\n"  2800           "This method sets the angular grids for the radiation fluxes type\n"  2801           "calculations and calculates the integration weights *za_grid_weights*\n"  2802           "for the zenith angle integration. For down- und up-looking\n"  2803           "geometries it suffices to define *N_za_grid* and\n"  2804           "*N_aa_grid*. From *N_aa_grid* an equally spaced grid is\n"  2805           "created and stored in the WSV*aa_grid*.\n"  2806           "Depending on the desired *za_grid_type* *za_grid* will be\n"  2807           "equally spaced ('linear') or unequally ('linear_mu','double_gauss')\n"  2808           "Important, *N_za_grid* must be an even number because for the \n"  2809           "integration over each hemisphere *N_za_grid* / 2 zenith angles are needed.\n"  2811           "Possible zenith angle grid types are:\n"  2812           "double_gauss:     The zenith grid and the integration weights are set according\n"  2813           "                  to a gauss-legendre integration for each hemispheres.\n"  2814           "linear:           Equally space grid between 0 deg and 180 deg including the poles\n"  2815           "linear_mu:        Similar to 'linear' but equally spaced for cos(180 deg) to cos(0 deg),\n"  2816           "                  which results a unequally spaced angular grid\n"  2820       OUT(
"za_grid", 
"aa_grid", 
"za_grid_weights"),
  2825       GIN(
"N_za_grid", 
"N_aa_grid", 
"za_grid_type"),
  2826       GIN_TYPE(
"Index", 
"Index", 
"String"),
  2828       GIN_DESC(
"Number of zenith angles",
  2829                "Number of azimuth angles",
  2830                "Zenith angle grid type")));
  2833       NAME(
"ArrayOfAgendaAppend"),
  2834       DESCRIPTION(
"Set up an agenda and append it to the array of agendas.\n"  2836                   "See *AgendaSet* for details.\n"),
  2855                DESCRIPTION(
"Execute an agenda from an ArrayOfAgenda.\n"),
  2861                IN(
"agenda_array_index"),
  2870       NAME(
"AntennaConstantGaussian1D"),
  2872           "Sets up a 1D gaussian antenna response and a matching\n"  2873           "*mblock_dlos_grid*.\n"  2875           "As *antenna_responseGaussian*, but also creates *mblock_dlos_grid*.\n"  2876           "For returned antenna response, see *antenna_responseGaussian*.\n"  2878           "The size of *mblock_dlos_grid* is determined by *n_za_grid*.\n"  2879           "The end points of the grid are set to be the same as for the\n"  2880           "antenna response. The spacing of the grid follows the magnitude of\n"  2881           "the response; the spacing is smaller where the response is high.\n"  2882           "More precisely, the grid points are determined by dividing\n"  2883           "the cumulative sum of the response in equal steps. This makes sense\n"  2884           "if the representation error of the radiance (as a function of\n"  2885           "zenith angle) increases linearly with the grid spacing.\n"  2887           "The WSV *antenna_dlos* is set to [0].\n"  2889           "The antenna repsonse is not normalised.\n"),
  2899       GIN(
"n_za_grid", 
"fwhm", 
"xwidth_si", 
"dx_si"),
  2900       GIN_TYPE(
"Index", 
"Numeric", 
"Numeric", 
"Numeric"),
  2902       GIN_DESC(
"Number of points to include in *mblock_dlos_grid*.",
  2903                "Full width at half-maximum of antenna beam [deg].",
  2904                "Half-width of response, in terms of std. dev.",
  2905                "Grid spacing, in terms of std. dev.")));
  2908       NAME(
"AntennaMultiBeamsToPencilBeams"),
  2910           "Maps a multi-beam case to a matching pencil beam case.\n"  2912           "Cases with overlapping beams are most efficiently handled by\n"  2913           "letting *antenna_dlos* have several rows. That is, there are\n"  2914           "multiple beams for each measurement block. The drawback is that\n"  2915           "many variables must be adjusted if the corresponding pencil beam\n"  2916           "spectra shall be calculated. This method makes this adjustment.\n"  2917           "That is, if you have a control file for a multiple beam case and\n"  2918           "for some reason want to avoid the antenna weighting, you add this\n"  2919           "method before *sensor_responseInit*, and remove the call of\n"  2920           "*sensor_responseAntenna* and you will get the matching pencil beam\n"  2927           "mblock_dlos_grid"),
  2945           "Sets some antenna related variables\n"  2947           "Use this method to set *antenna_dim* and *mblock_dlos_grid* to\n"  2948           "suitable values (1 and [0], respectively) for cases when a\n"  2949           "sensor is included, but the antenna pattern is neglected.\n"),
  2951       OUT(
"antenna_dim", 
"mblock_dlos_grid"),
  2962       NAME(
"antenna_responseGaussian"),
  2964           "Sets up a gaussian antenna response.\n"  2966           "The method assumes that the response is the same for all\n"  2967           "frequencies and polarisations, and that it can be modelled as\n"  2970           "The grid generated is approximately\n"  2971           "   si * [-xwidth_si:dx_si:xwidth_si]\n"  2972           "where si is the standard deviation corresponding to the FWHM.\n"  2973           "That is, width and spacing of the grid is specified in terms of\n"  2974           "number of standard deviations. If xwidth_si is set to 2, the\n"  2975           "response will cover about 95% the complete response. For\n"  2976           "xwidth_si=3, about 99% is covered. If xwidth_si/dx_si is not\n"  2977           "an integer, the end points of the grid are kept and the spacing\n"  2978           "of the grid is reduced (ie. spacing is equal or smaller *dx_si*).\n"  2980           "If the 2D option is selected (*do_2d*), a circular antenna is\n"  2981           "assumed and the response is any direction follows the 1D case.\n"  2983           "The antenna repsonse is not normalised.\n"),
  2985       OUT(
"antenna_response"),
  2990       GIN(
"fwhm", 
"xwidth_si", 
"dx_si", 
"do_2d"),
  2991       GIN_TYPE(
"Numeric", 
"Numeric", 
"Numeric", 
"Index"),
  2993       GIN_DESC(
"Full width at half-maximum",
  2994                "Half-width of response, in terms of std. dev.",
  2995                "Grid spacing, in terms of std. dev.",
  2996                "Set to 1 to create a 2D antenna pattern.")));
  2999       NAME(
"antenna_responseVaryingGaussian"),
  3001           "Sets up gaussian antenna responses.\n"  3003           "Similar to *antenna_responseGaussian* but allows to set up\n"  3004           "responses that varies with frequency. That is, the method assumes\n"  3005           "that the response is the same for all polarisations, and that it\n"  3006           "can be modelled as a gaussian function varying with frequency.\n"  3008           "The full width at half maximum (FWHM in radians) is calculated as:\n"  3009           "    fwhm = lambda / leff\n"  3010           "where lambda is the wavelength and *leff* is the effective size of\n"  3011           "the antenna. Normally, *leff* is smaller than the physical antenna\n"  3014           "Antenna responses are created for *nf* frequencies spanning the\n"  3015           "range [*fstart*,*fstop*], with a logarithmic spacing. That is, the\n"  3016           "frequency grid of the responses is taken from *VectorNLogSpace*.\n"  3018           "The responses have a common angular grid. The width, determined by\n"  3019           "*xwidth_si*, is set for the lowest frequency, while the spacing\n"  3020           "(*dx_si*) is set for the highest frequency. This ensures that both\n"  3021           "the width and spacing are equal or better than *xwidth_si* and\n"  3022           "*dx_si*, respectively, for all frequencies.\n"  3024           "If the 2D option is selected (*do_2d*), a circular antenna is\n"  3025           "assumed and the response is any direction follows the 1D case.\n"  3027           "The antenna repsonse is not normalised.\n"),
  3029       OUT(
"antenna_response"),
  3034       GIN(
"leff", 
"xwidth_si", 
"dx_si", 
"nf", 
"fstart", 
"fstop", 
"do_2d"),
  3043       GIN_DESC(
"Effective size of the antenna",
  3044                "Half-width of response, in terms of std. dev.",
  3045                "Grid spacing, in terms of std. dev.",
  3046                "Number of points in frequency grid (must be >= 2)",
  3047                "Start point of frequency grid",
  3048                "End point of frequency grid",
  3049                "Set to 1 to create a 2D antenna pattern.")));
  3054           "Append one workspace variable to another.\n"  3056           "This method can append an array to another array of the same type,\n"  3057           "e.g. ArrayOfIndex to ArrayOfIndex. Or a single element to an array\n"  3058           "such as a Tensor3 to an ArrayOfTensor3.\n"  3060           "Appending two vectors or a numeric to a vector works as for array\n"  3063           "Both another matrix or a vector can be appended to a matrix. In\n"  3064           "addition, for matrices, the 'append dimension' can be selected.\n"  3065           "The third argument, *dimension*, indicates how to append, where\n"  3066           "\"leading\" means to append row-wise, and \"trailing\" means\n"  3069           "Other types (TensorX) are currently only implemented for\n"  3070           "appending to the leading dimension.\n"  3072           "This method is not implemented for all types, just for those that\n"  3073           "were thought or found to be useful. (See variable list below.).\n"),
  3074       AUTHORS(
"Stefan Buehler, Oliver Lemke"),
  3082                 ARRAY_GROUPS + 
", " + ARRAY_GROUPS_WITH_BASETYPE),
  3083       GOUT_DESC(
"The variable to append to."),
  3085       GIN(
"in", 
"dimension"),
  3091                    ARRAY_GROUPS + 
"," + GROUPS_WITH_ARRAY_TYPE,
  3095           "The variable to append.",
  3096           "Where to append. Could be either the \"leading\" or \"trailing\" dimension."),
  3104       NAME(
"ArrayOfGriddedFieldGetNames"),
  3105       DESCRIPTION(
"Get the names of all GriddedFields stored in an Array.\n"  3107                   "See *GriddedFieldGetName*.\n"),
  3112       GOUT_DESC(
"Names of the GriddedFields in the ArrayOfGriddedField."),
  3114       GIN(
"griddedfields"),
  3115       GIN_TYPE(
"ArrayOfGriddedField1, ArrayOfGriddedField2,"  3116                "ArrayOfGriddedField3, ArrayOfGriddedField4"),
  3118       GIN_DESC(
"Array of GriddedFields."),
  3124       NAME(
"ArrayOfIndexLinSpace"),
  3126           "Initializes an ArrayOfIndex with linear spacing.\n"  3128           "The first element equals always the start value, and the spacing\n"  3129           "equals always the step value, but the last value can deviate from\n"  3130           "the stop value. *step* can be both positive and negative.\n"  3132           "The created array is [start, start+step, start+2*step, ...]\n "),
  3139       GIN(
"start", 
"stop", 
"step"),
  3140       GIN_TYPE(
"Index", 
"Index", 
"Index"),
  3143                "Maximum/minimum value of the end value",
  3144                "Spacing of the array.")));
  3147       NAME(
"ArrayOfIndexSet"),
  3148       DESCRIPTION(
"Creates an ArrayOfIndex from the given list of numbers.\n"),
  3158       GIN_DESC(
"Indexes for initializiation."),
  3162       NAME(
"ArrayOfIndexSetConstant"),
  3163       DESCRIPTION(
"Creates an ArrayOfIndex of length *nelem*, with all values\n"  3178       NAME(
"ArrayOfStringSet"),
  3179       DESCRIPTION(
"Sets a String array according the given text.\n"  3180                   "The format is text = [\"String1\",\"String2\",...]\n"),
  3190       GIN_DESC(
"Strings for initialization."),
  3196           "Runs the agenda that is specified inside the curly braces. ARTS\n"  3197           "controlfiles must define this method. It is executed automatically\n"  3198           "when ARTS is run on the controlfile and cannot be called by the user.\n"  3199           "This methods was used for Arts 1 controlfiles and is now obsolete.\n"  3217           "Runs the agenda that is specified inside the curly braces. ARTS\n"  3218           "controlfiles must define this method. It is executed automatically\n"  3219           "when ARTS is run on the controlfile and cannot be called by the user.\n"),
  3234       NAME(
"AtmFieldPerturb"),
  3236           "Adds a perturbation to an atmospheric field.\n"  3238           "The shape and position of the perturbation follow the retrieval grids.\n"  3239           "That is, the shape of the perturbation has a traingular shape, \n"  3240           "with breake points at the retrieval grid points. The position is\n"  3241           "given as an index. This index matches the column in the Jacobian\n"  3242           "for the selected grid position.\n"  3244           "If the retrieval grids fully match the atmospheric grids, you can\n"  3245           "use *AtmFieldPerturbAtmGrids*, that is faster. The description of\n"  3246           "that method can help to understand this method.\n"),
  3249       GOUT(
"perturbed_field"),
  3252       IN(
"atmosphere_dim", 
"p_grid", 
"lat_grid", 
"lon_grid"),
  3253       GIN(
"original_field",
  3268       GIN_DESC(
"Original field, e.g. *t_field*.",
  3269                "Pressure retrieval grid.",
  3270                "Latitude retrieval grid.",
  3271                "Longitude retrieval grid.",
  3272                "Index of position where the perturbation shall be performed.",
  3273                "Size of perturbation.",
  3274                "Type of perturbation, "  3281       NAME(
"AtmFieldPerturbAtmGrids"),
  3283           "As *AtmFieldPerturb*, but perturbation follows the atmospheric grids.\n"  3285           "The method effectively performs this\n"  3286           "  perturbed_field = original_field\n"  3287           "  perturbed_field(p_index,lat_index,lon_index) += pert_size\n"  3288           "if not *pert_mode* is set to "  3290           " when this is done\n"  3291           "  perturbed_field = original_field\n"  3292           "  perturbed_field(p_index,lat_index,lon_index) *= 1*pert_size\n"  3293           "where p_index etc. are derived from *pert_index*.\n"),
  3296       GOUT(
"perturbed_field"),
  3299       IN(
"atmosphere_dim", 
"p_grid", 
"lat_grid", 
"lon_grid"),
  3300       GIN(
"original_field", 
"pert_index", 
"pert_size", 
"pert_mode"),
  3301       GIN_TYPE(
"Tensor3", 
"Index", 
"Numeric", 
"String"),
  3303       GIN_DESC(
"Original field, e.g. *t_field*.",
  3304                "Index of position where the perturbation shall be performed.",
  3305                "Size of perturbation.",
  3306                "Type of perturbation, "  3313       NAME(
"AtmFieldPRegrid"),
  3315           "Interpolates the input field along the pressure dimension from\n"  3316           "*p_grid_old* to to *p_grid_new*.\n"  3318           "Extrapolation is allowed within the common 0.5grid-step margin.\n"  3319           "in and out fields can be the same variable.\n"),
  3324       GOUT_DESC(
"Regridded atmospheric field."),
  3326       GIN(
"in", 
"p_grid_new", 
"p_grid_old", 
"interp_order"),
  3327       GIN_TYPE(
"Tensor3, Tensor4", 
"Vector", 
"Vector", 
"Index"),
  3329       GIN_DESC(
"Input atmospheric field.",
  3330                "Pressure grid to regrid to",
  3331                "Pressure grid of input field",
  3332                "Interpolation order.")));
  3335       NAME(
"AtmFieldsCalc"),
  3337           "Interpolation of raw atmospheric T, z, VMR, and NLTE T/r fields to\n"  3338           "calculation grids.\n"  3340           "An atmospheric scenario includes the following data for each\n"  3341           "position (pressure, latitude, longitude) in the atmosphere:\n"  3342           "   1. temperature field\n"  3343           "   2. the corresponding altitude field\n"  3344           "   3. vmr fields for the gaseous species\n"  3345           "This method interpolates the fields of raw data (*t_field_raw*,\n"  3346           "*z_field_raw*, *vmr_field_raw*) which can be stored on arbitrary\n"  3347           "grids to the calculation grids (*p_grid*, *lat_grid*, *lon_grid*).\n"  3348           "If *nlte_field_raw* is empty, it is assumed to be so because LTE is\n"  3349           "assumed by the user and *nlte_field* will be empty.\n"  3351           "Internally, *AtmFieldsCalc* applies *GriddedFieldPRegrid* and\n"  3352           "*GriddedFieldLatLonRegrid*. Generally, 'half-grid-step' extrapolation\n"  3353           "is allowed and applied. However, if *vmr_zeropadding*=1 then VMRs at\n"  3354           "*p_grid* levels exceeding the raw VMRs' pressure grid are set to 0\n"  3355           "(applying the *vmr_zeropadding* option of *GriddedFieldPRegrid*).\n"  3357           "Default is to just accept obtained VMRs. If you want to enforce\n"  3358           "that all VMR created are >= 0, set *vmr_nonegative* to 1. Negative\n"  3359           "values are then set 0. Beside being present in input data, negative\n"  3360           "VMR can be generated from the interpolation if *interp_order* is\n"  3362       AUTHORS(
"Claudia Emde", 
"Stefan Buehler"),
  3363       OUT(
"t_field", 
"z_field", 
"vmr_field", 
"nlte_field"),
  3374          "nlte_level_identifiers",
  3375          "nlte_vibrational_energies",
  3380           "nlte_when_negative"),
  3381       GIN_TYPE(
"Index", 
"Index", 
"Index", 
"Index"),
  3383       GIN_DESC(
"Interpolation order (1=linear interpolation).",
  3384                "Pad VMRs with zeroes to fit the pressure grid if necessary.",
  3385                "If set to 1, negative VMRs are set to 0.",
  3386                "-1: Skip step. 0: Negative is 0. Else: Negative is t.")));
  3389       NAME(
"AtmFieldsCalcExpand1D"),
  3391           "Interpolation of 1D raw atmospheric fields to create 2D or 3D\n"  3392           "homogeneous atmospheric fields.\n"  3394           "The method works as *AtmFieldsCalc*, but accepts only raw 1D\n"  3395           "atmospheres. The raw atmosphere is interpolated to *p_grid* and\n"  3396           "the obtained values are applied for all latitudes, and also\n"  3397           "longitudes for 3D, to create a homogeneous atmosphere.\n"  3399           "The method deals only with the atmospheric fields, and to create\n"  3400           "a true 2D or 3D version of a 1D case, a demand is also that the\n"  3401           "ellipsoid is set to be a sphere.\n"),
  3402       AUTHORS(
"Patrick Eriksson", 
"Claudia Emde", 
"Stefan Buehler"),
  3403       OUT(
"t_field", 
"z_field", 
"vmr_field", 
"nlte_field"),
  3414          "nlte_level_identifiers",
  3415          "nlte_vibrational_energies",
  3420           "nlte_when_negative"),
  3421       GIN_TYPE(
"Index", 
"Index", 
"Index", 
"Index"),
  3423       GIN_DESC(
"Interpolation order (1=linear interpolation).",
  3424                "Pad VMRs with zeroes to fit the pressure grid if necessary.",
  3425                "If set to 1, negative VMRs are set to 0.",
  3426                "-1: Skip step. 0: Negative is 0. Else: Negative is t.")));
  3429       NAME(
"AtmFieldsExpand1D"),
  3431           "Maps a 1D case to 2D or 3D homogeneous atmospheric fields.\n"  3433           "This method takes a 1D atmospheric case and converts it to the\n"  3434           "corresponding case for 2D or 3D. The atmospheric fields (t_field,\n"  3435           "z_field and vmr_field) must be 1D and match *p_grid*. The size of\n"  3436           "the new data is determined by *atmosphere_dim*, *lat_grid* and\n"  3437           "*lon_grid*. That is, these later variables have been changed since\n"  3438           "the original fields were created.\n"  3440           "The method deals only with the atmospheric fields, and to create\n"  3441           "a true 2D or 3D version of a 1D case, a demand is also that the\n"  3442           "ellipsoid is set to be a sphere.\n"),
  3444       OUT(
"t_field", 
"z_field", 
"vmr_field"),
  3459           "Flag to determine if a search for NaN shall be performed or not.")));
  3462       NAME(
"AtmFieldsExtract1D"),
  3464           "Converts 2D or 3D homogeneous atmospheric fields to a 1D case.\n"  3466           "The method extracts data for given latitude and longitude index\n"  3467           "to create a 1D atmosphere. *AtmosphereSet1D* is called to set\n"  3468           "output values of *atmosphere_dim*, *lat_grid* and *lon_grid*.\n"  3469           "Nothing is done if *atmosphere_dim* alöready is 1.\n"),
  3471       OUT(
"atmosphere_dim",
  3480       IN(
"atmosphere_dim",
  3486       GIN(
"ilat", 
"ilon"),
  3489       GIN_DESC(
"Pick data having this latitude index (0-based).",
  3490                "Pick data having this longitude index (0-based).")));
  3493       NAME(
"AtmFieldsRefinePgrid"),
  3495           "Refines the pressure grid and regrids the clearsky atmospheric\n"  3496           "fields accordingly.\n"  3498           "This method is, e.g., used for absorption lookup table testing. It\n"  3499           "can also be used to refine the *p_grid* and atmospheric fields from\n"  3500           "compact state atmospheres.\n"  3502           "It adds additional vertical grid points to the atmospheric fields, by\n"  3503           "interpolating them in the usual ARTS way (linear in log pressure).\n"  3505           "How fine the new grid will be is determined by the keyword parameter\n"  3506           "p_step. The definition of p_step, and the default interpolation\n"  3507           "behavior, is consistent with *abs_lookupSetup* and\n"  3508           "*abs_lookupSetupBatch* (new points are added between the original\n"  3509           "ones, so that the spacing is always below p_step.)\n"  3511           "Internally, *AtmFieldsRefinePgrid* applies *p_gridRefine* and\n"  3512           "*AtmFieldPRegrid* to the clearsky atmospheric fields (T, z, vmr).\n"  3514           "Atmospheric field related check WSV are reset to 0 (unchecked),\n"  3515           "i.e., the corresponding checkedCalc methods have to be performed\n"  3516           "(again) before *yCalc* or similar methods can be executed.\n"),
  3522           "atmfields_checked",
  3524           "cloudbox_checked"),
  3535       GIN(
"p_step", 
"interp_order"),
  3538       GIN_DESC(
"Maximum step in log(p[Pa]) (natural logarithm, as always). If\n"  3539                "the pressure grid is coarser than this, additional points\n"  3540                "are added until each log step is smaller than this.\n",
  3541                "Interpolation order.")));
  3544       NAME(
"AtmFieldsAndParticleBulkPropFieldFromCompact"),
  3546           "Extract pressure grid and atmospheric fields from\n"  3547           "*atm_fields_compact*.\n"  3549           "An atmospheric scenario includes the following data for each\n"  3550           "position (pressure, latitude, longitude) in the atmosphere:\n"  3551           "           1. temperature field\n"  3552           "           2. the corresponding altitude field\n"  3553           "           3. vmr fields for the gaseous species\n"  3554           "           4. scattering species fields\n"  3556           "This method splits up the data found in *atm_fields_compact* to\n"  3557           "p_grid, lat_grid, lon_grid, vmr_field, particle_bulkprop_field,\n"  3558           "and particle_bulkprop_names.\n"  3559           "See documentation of *atm_fields_compact* for a definition of the\n"  3562           "Compact states are characterized by having all atmospheric fields\n"  3563           "already given on identical grids. That is, no interpolation needs\n"  3564           "to be and is performed. Keyword *p_min* allows to remove atmospheric\n"  3565           "levels with pressures lower than the given value (default: no\n"  3566           "removal). This reduces computational burden and is useful when\n"  3567           "upper atmospheric contributions are negligible.\n"  3569           "Possible future extensions: Add a keyword parameter to refine the\n"  3570           "pressure grid if it is too coarse. Or a version that interpolates\n"  3571           "onto given grids, instead of using and returning the original grids.\n"),
  3572       AUTHORS(
"Jana Mendrok, Manfred Brath"),
  3579           "particle_bulkprop_field",
  3580           "particle_bulkprop_names"),
  3584       IN(
"abs_species", 
"atm_fields_compact", 
"atmosphere_dim"),
  3585       GIN(
"delim", 
"p_min", 
"check_gridnames"),
  3586       GIN_TYPE(
"String", 
"Numeric", 
"Index"),
  3589                "Delimiter string of *scat_species* elements.",
  3591                "Minimum-pressure level to consider (for TOA).",
  3593                "A flag with value 1 or 0. If set to one, the gridnames of \n"  3594                " the *atm_fields_compact* are checked.")));
  3597       NAME(
"atmfields_checkedCalc"),
  3599           "Checks consistency of (clear sky) atmospheric fields.\n"  3601           "The following WSVs are treated: *p_grid*, *lat_grid*, *lon_grid*,\n"  3602           "*t_field*, *vmr_field*, wind_u/v/w_field and mag_u/v/w_field.\n"  3604           "If any of the variables above is changed, then this method shall be\n"  3605           "called again (no automatic check that this is fulfilled!).\n"  3607           "The tests include that:\n"  3608           " 1. Atmospheric grids (p/lat/lon_grid) are OK with respect to\n"  3609           "    *atmosphere_dim* (and vmr_field also regarding *abs_species*).\n"  3610           " 2. Atmospheric fields have sizes consistent with the atmospheric\n"  3612           " 3. *abs_f_interp_order* is not zero if any wind is nonzero.\n"  3613           " 4. All values in *t_field* are > 0.\n"  3615           "Default is that values in *vmr_field* are demanded to be >= 0\n"  3616           "(ie. zero allowed, in contrast to *t_field*), but this\n"  3617           "requirement can be removed by the *negative_vmr_ok* argument.\n"  3619           "If any test fails, there is an error. Otherwise,\n"  3620           "*atmfields_checked* is set to 1.\n"  3622           "The cloudbox is covered by *cloudbox_checked*, *z_field* is\n"  3623           "part of the checks done around *atmgeom_checked*.\n"  3625           "If you choose to use *bad_partition_functions_ok* please note that\n"  3626           "this is done on your own risk and that it could introduce hard-to-\n"  3627           "track errors into your calculations.  Do not use this for anything\n"  3630       OUT(
"atmfields_checked"),
  3634       IN(
"atmosphere_dim",
  3647          "partition_functions",
  3648          "abs_f_interp_order"),
  3649       GIN(
"negative_vmr_ok", 
"bad_partition_functions_ok"),
  3652       GIN_DESC(
"Flag whether to accept vmr_field < 0.",
  3653                "Flag whether to accept partition functions not covering"  3654                " *t_field* range.")));
  3657       NAME(
"atmgeom_checkedCalc"),
  3659           "Checks consistency of geometric considerations of the atmosphere.\n"  3661           "The following WSVs are checked: *z_field*, *refellipsoid*, *z_surface*,\n"  3662           "*lat_true* and *lon_true*. If any of the variables above is changed,\n"  3663           "then this method shall be called again (no automatic check that this is\n"  3666           "The tests include that:\n"  3667           " 1. *refellipsoid* has correct size, and that eccentricity is\n"  3668           "    set to zero if 1D atmosphere.\n"  3669           " 2. *z_field* and *z_surface* have sizes consistent with the\n"  3670           "    atmospheric grids.\n"  3671           " 3. There is no gap between *z_surface* and *z_field*.\n"  3673           "*lat_true* and *lon_true* are allowed to be empty.\n"  3675           "If any test fails, there is an error. Otherwise, *atmgeom_checked*\n"  3678           "See further *atmgeom_checkedCalc*.\n"),
  3680       OUT(
"atmgeom_checked"),
  3684       IN(
"atmosphere_dim",
  3699       NAME(
"AtmosphereSet1D"),
  3701           "Sets the atmospheric dimension to 1D.\n"  3703           "Sets *atmosphere_dim* to 1, and the latitude and longitude grids\n"  3704           "are set to be empty.\n"),
  3706       OUT(
"atmosphere_dim", 
"lat_grid", 
"lon_grid"),
  3717       NAME(
"AtmosphereSet2D"),
  3719           "Sets the atmospheric dimension to be 2D.\n"  3721           "Sets *atmosphere_dim* to 2 and the longitude grid to be empty.\n"),
  3723       OUT(
"atmosphere_dim", 
"lon_grid"),
  3734       NAME(
"AtmosphereSet3D"),
  3736           "Sets the atmospheric dimension to 3D.\n"  3738           "Sets *atmosphere_dim* to 3, and *lat_true* and *lon_true* are\n"  3739           "set to be empty.\n"),
  3741       OUT(
"atmosphere_dim", 
"lat_true", 
"lon_true"),
  3754           "Reads atmospheric data from a scenario.\n"  3756           "An atmospheric scenario includes the following data for each\n"  3757           "position (pressure, latitude, longitude) in the atmosphere:\n"  3758           "   1. temperature field\n"  3759           "   2. the corresponding altitude field\n"  3760           "   3. vmr fields for the absorption species\n"  3761           "The vmr fields read are governed by the species given in\n"  3762           "*abs_species*. Beside gaseous species, these can also contain\n"  3763           "purely absorbing particulate matter. In the latter case the\n"  3764           "profiles are supposed to provide the mass content (unit kg/m3) for\n"  3765           "clouds and precipitation rate (unit kg/m2/s) for precipitation\n"  3766           "instead of the vmr.\n"  3768           "The data is stored in different files. This methods reads all\n"  3769           "files and creates the variables *t_field_raw*, *z_field_raw* and\n"  3770           "*vmr_field_raw*.  *nlte_field_raw* is set to empty.\n"  3772           "Files in a scenarios should be named matching the pattern of:\n"  3773           "basename.speciesname.xml\n (for temperature and altitude the\n"  3774           "expected 'speciesname' are 't' and'z', respectivly)."  3776           "The files can be anywhere, but they must all be in the same\n"  3777           "directory, selected by 'basename'. The files are chosen by the\n"  3778           "species name. If you have more than one tag group for the same\n"  3779           "species, the same profile will be used.\n"),
  3785           "nlte_level_identifiers",
  3786           "nlte_vibrational_energies"),
  3794       GIN_DESC(
"Name of scenario, probably including the full path. For "  3795                "example: \"/smiles_local/arts-data/atmosphere/fascod/"  3799       NAME(
"AtmWithNLTERawRead"),
  3801           "Reads atmospheric data from a scenario.\n"  3803           "An atmospheric scenario includes the following data for each\n"  3804           "position (pressure, latitude, longitude) in the atmosphere:\n"  3805           "   1. temperature field\n"  3806           "   2. the corresponding altitude field\n"  3807           "   3. vmr fields for the gaseous species\n"  3808           "   4. Non-LTE temperature fields and matching identifiers\n"  3809           "The data is stored in different files. This method reads all\n"  3810           "files and creates the variables *t_field_raw*, *z_field_raw*,\n"  3811           "*vmr_field_raw*, *nlte_field_raw*, and *nlte_level_identifiers*.\n"  3813           "Files in a scenarios should be named matching the pattern of:\n"  3814           "tropical.H2O.xml\n"  3816           "The files can be anywhere, but they must be all in the same\n"  3817           "directory, selected by 'basename'. The files are chosen by the\n"  3818           "species name. If you have more than one tag group for the same\n"  3819           "species, the same profile will be used.\n"),
  3820       AUTHORS(
"Claudia Emde", 
"Richard Larsson"),
  3825           "nlte_level_identifiers",
  3826           "nlte_vibrational_energies"),
  3831       GIN(
"basename", 
"expect_vibrational_energies"),
  3834       GIN_DESC(
"Name of scenario, probably including the full path. For "  3835                "example: \"/smiles_local/arts-data/atmosphere/fascod/"  3837                "Should ev.xml be read?")));
  3840       NAME(
"atm_fields_compactAddConstant"),
  3842           "Adds a constant field to atm_fields_compact.\n"  3844           "This is handy, e.g., for nitrogen or oxygen. The constant value can\n"  3845           "be appended or prepended as an additional field to the already\n"  3846           "existing collection of fields. All dimensions (pressure, latitude,\n"  3847           "longitude) are filled up, so this works for 1D, 2D, or 3D\n"  3850           "The passed *name* of the field has to be in accordance with the\n"  3851           "tagging structure described for *atm_fields_compact*.\n"  3853           "A list of condensibles can be optionally specified if the VMR of\n"  3854           "the added species is assuming dry air. The VMR of the added species\n"  3855           "is then scaled down by the sum of the condensibles' VMR:\n"  3856           "VMR * (1 - VMR_sum_of_condensibles).\n"  3857           "For Earth this should be set to [\"abs_species-H2O\"]\n"),
  3858       AUTHORS(
"Stefan Buehler, Oliver Lemke"),
  3859       OUT(
"atm_fields_compact"),
  3863       IN(
"atm_fields_compact"),
  3864       GIN(
"name", 
"value", 
"prepend", 
"condensibles"),
  3865       GIN_TYPE(
"String", 
"Numeric", 
"Index", 
"ArrayOfString"),
  3868           "Name of additional atmospheric field, with constant value.",
  3869           "Constant value of additional field.",
  3870           "0 = Append to the end, 1 = insert at the beginning.",
  3871           "List of condensibles used to scale down the VMR of the added species.")));
  3874       NAME(
"atm_fields_compactAddSpecies"),
  3876           "Adds a field to atm_fields_compact, with interpolation.\n"  3878           "This method appends or prepends a *GriddedField3* to *atm_fields_compact*.\n"  3879           "The *GriddedField3* is interpolated upon the grid of\n"  3880           "*atm_fields_compact*. A typical use case for this method may be to\n"  3881           "add a climatology of some gas when this gas is needed for radiative\n"  3882           "transfer calculations, but not yet present in *atm_fields_compact*.\n"  3883           "One case where this happens is when using the Chevalier91L dataset\n"  3884           "for infrared simulations.\n"  3886           "The grids in *atm_fields_compact* must fully encompass the grids in\n"  3887           "the *GriddedField3* to be added, for interpolation to succeed. If\n"  3888           "this is not the case, a RuntimeError is thrown.\n"  3890           "The passed *name* of the field has to be in accordance with the\n"  3891           "tagging structure described for *atm_fields_compact*.\n"),
  3893       OUT(
"atm_fields_compact"),
  3897       IN(
"atm_fields_compact"),
  3898       GIN(
"name", 
"value", 
"prepend"),
  3899       GIN_TYPE(
"String", 
"GriddedField3", 
"Index"),
  3901       GIN_DESC(
"Name of additional atmospheric field.",
  3902                "Value of additional atmospheric field.",
  3903                "0 = Append to the end, 1 = insert at the beginning.")));
  3906       NAME(
"atm_fields_compactCleanup"),
  3908           "Removes unrealistically small or erroneous data from\n"  3909           "*atm_fields_compact* (or other GriddedField4 data)\n"  3911           "This WSM checks if the data in *atm_fields_compact* contains\n"  3912           "values smaller than the given *threshold*. In this case, these\n"  3913           "values will be set to zero.\n"  3915           "The method should be applied if *atm_fields_compact* contains\n"  3916           "unrealistically small or erroneous data (NWP/GCM model data\n"  3917           "occassionally contains negative values, which are numerical\n"  3918           "artefacts rather than physical values.)\n"),
  3920       OUT(
"atm_fields_compact"),
  3924       IN(
"atm_fields_compact"),
  3929           "Threshold below which *atm_fields_compact* values are set to zero.")));
  3932       NAME(
"atm_fields_compactCreateFromField"),
  3934           "Initiates *atm_fields_compact* from a field.\n"  3936           "*atm_fields_compact* will have the same size and grids as the GriddedField3,\n"  3937           "but with one dimension as length 1.\n"),
  3939       OUT(
"atm_fields_compact"),
  3944       GIN(
"name", 
"field"),
  3945       GIN_TYPE(
"String", 
"GriddedField3"),
  3947       GIN_DESC(
"Name atmospheric field.", 
"The atmospheric field.")));
  3950       NAME(
"atm_fields_compactFromMatrix"),
  3952           "Sets *atm_fields_compact* from 1D fields given in form of a matrix.\n"  3954           "For batch calculations it is handy to store atmospheric\n"  3955           "profiles in an array of matrix. We take such a matrix, and create\n"  3956           "*atm_fields_compact* from it.\n"  3958           "The matrix must contain one row for each pressure level.\n"  3960           "Not all fields contained in the matrix must be selected into\n"  3961           "*atm_fields_compact*, but the selection must at least contain\n"  3962           "fields of pressure, temperature, altitude and one absorption\n"  3964           "The matrix can contain some additional fields which are not\n"  3965           "directly used by ARTS for calculations but can be required for\n"  3966           "further processing, e.g. wind speed and direction. These fields do\n"  3967           "not need to be transfered into the *atm_fields_compact* variable.\n"  3969           "Selection of fields into *atm_fields_compact* works by providing a\n"  3970           "field name tag in *field_names* for the selected fields, while\n"  3971           "unselected fields are tagged by 'ignore'. Order of tags in\n"  3972           "*field_names* is strictly taken as corresponding to column order in\n"  3974           "The pressure fields are by convention the first column of the\n"  3975           "matrix, hence must not be tagged. That is, there must be given one\n"  3976           "field name tag less than matrix columns.\n"  3978           "For detailed tagging conventions see *atm_fields_compact*.\n"  3980           "Works only for *atmosphere_dim==1.*\n"),
  3981       AUTHORS(
"Stefan Buehler", 
"Daniel Kreyling", 
"Jana Mendrok"),
  3982       OUT(
"atm_fields_compact"),
  3986       IN(
"atmosphere_dim"),
  3987       GIN(
"gin1", 
"field_names"),
  3988       GIN_TYPE(
"Matrix", 
"ArrayOfString"),
  3990       GIN_DESC(
"One atmosphere matrix from batch input ArrayOfMatrix.",
  3991                "Order/names of atmospheric fields.")));
  3994       NAME(
"backend_channel_responseFlat"),
  3996           "Sets up a rectangular channel response.\n"  3998           "The response of the backend channels is hee assumed to be constant\n"  3999           "inside the resolution width, and zero outside.\n"  4001           "The method assumes that all channels have the same response.\n"),
  4003       OUT(
"backend_channel_response"),
  4011       GIN_DESC(
"The spectrometer resolution.")));
  4014       NAME(
"backend_channel_responseGaussian"),
  4016           "Sets up a gaussian backend channel response.\n"  4018           "The method assumes that all channels can be modelled as gaussian.\n"  4020           "If *fwhm* has only one element, all channels are assumed to be equal.\n"  4021           "If *fwhm* has multiple elements, *xwidth_si* and *dx_si* must have one\n"  4022           "element or the same number of elements as *fwhm*. If one element is given,\n"  4023           "this value will be used for all channels.\n"  4025           "The grid generated can be written as\n"  4026           "   si * [-xwidth_si:dx_si:xwidth_si]\n"  4027           "where si is the standard deviation corresponding to the FWHM.\n"  4028           "That is, width and spacing of the grid is specified in terms of\n"  4029           "number of standard deviations. If xwidth_si is set to 2, the\n"  4030           "response will cover about 95% the complete response. For\n"  4031           "xwidth_si=3, about 99% is covered. If xwidth_si/dx_si is not\n"  4032           "an integer, the end points of the grid are kept and the spacing\n"  4033           "if the grid is adjusted in the downward direction (ie. spacing is.\n"  4034           "is max *dx_si*).\n"),
  4035       AUTHORS(
"Patrick Eriksson, Oliver Lemke"),
  4036       OUT(
"backend_channel_response"),
  4041       GIN(
"fwhm", 
"xwidth_si", 
"dx_si"),
  4042       GIN_TYPE(
"Vector", 
"Vector", 
"Vector"),
  4044       GIN_DESC(
"Full width at half-maximum",
  4045                "Half-width of response, in terms of std. dev.",
  4046                "Grid spacing, in terms of std. dev.")));
  4049       NAME(
"batch_atm_fields_compactAddConstant"),
  4050       DESCRIPTION(
"Adds a constant field to batch_atm_fields_compact.\n"  4052                   "Applies *atm_fields_compactAddConstant* to each batch.\n"  4053                   "The format is equal to that WSM.\n"),
  4055       OUT(
"batch_atm_fields_compact"),
  4059       IN(
"batch_atm_fields_compact"),
  4060       GIN(
"name", 
"value", 
"prepend", 
"condensibles"),
  4061       GIN_TYPE(
"String", 
"Numeric", 
"Index", 
"ArrayOfString"),
  4064           "Name of additional atmospheric field, with constant value.",
  4065           "Constant value of additional field.",
  4066           "0 = Append to the end, 1 = insert at the beginning.",
  4067           "List of condensibles used to scale down the VMR of the added species.")));
  4070       NAME(
"batch_atm_fields_compactAddSpecies"),
  4072           "Adds a field to *batch_atm_fields_compact*, with interpolation.\n"  4074           "This method appends or prepends a *GriddedField3* to each *atm_fields_compact*.\n"  4075           "in *batch_atm_fields_compact*. For details, see *atm_fields_compactAddSpecies*.\n"),
  4077       OUT(
"batch_atm_fields_compact"),
  4081       IN(
"batch_atm_fields_compact"),
  4082       GIN(
"name", 
"value", 
"prepend"),
  4083       GIN_TYPE(
"String", 
"GriddedField3", 
"Index"),
  4086           "Name of additional atmospheric field. Use, e.g., vmr_ch4 for methane VMR",
  4087           "Value of additional atmospheric field.",
  4088           "0 = Append to the end, 1 = insert at the beginning.")));
  4091       NAME(
"batch_atm_fields_compactCleanup"),
  4093           "Removes unrealistically small or erroneous data from each data field\n"  4094           "of *batch_atm_fields_compact* (or other AerrayOfGriddedField4 data)\n"  4096           "This WSM checks if the data in *batch_atm_fields_compact* contains\n"  4097           "values smaller than the given *threshold*. In this case, these\n"  4098           "values will be set to zero.\n"  4100           "The method should be applied if *batch_atm_fields_compact* contains\n"  4101           "unrealistically small or erroneous data (NWP/GCM model data\n"  4102           "occassionally contains negative values, which are numerical\n"  4103           "artefacts rather than physical values.)\n"),
  4105       OUT(
"batch_atm_fields_compact"),
  4109       IN(
"batch_atm_fields_compact"),
  4114           "Threshold below which *atm_fields_compact* values are set to zero.")));
  4117       NAME(
"batch_atm_fields_compactFromArrayOfMatrix"),
  4119           "Expand batch of 1D atmospheric state matrices to batch_atm_fields_compact.\n"  4121           "This is used to handle 1D batch cases, e.g. from NWP/GCM model like\n"  4122           "the Chevallier91L data set, stored in a matrix (it is preferred,\n"  4123           "though, to immediatedly store the model fields as\n"  4124           "*ArrayOfGriddedField4* and use *ReadXML* to load them directly into\n"  4125           "*batch_atm_fields_compact*).\n"  4127           "Works only for *atmosphere_dim==1.*\n"  4129           "See *atm_fields_compactFromMatrix* for basic documentation.\n"  4131           "See *batch_atm_fields_compactAddConstant* and\n"  4132           "batch_atm_fields_compactAddSpecies* for adding additional fields.\n"),
  4133       AUTHORS(
"Stefan Buehler", 
"Daniel Kreyling", 
"Jana Mendrok"),
  4134       OUT(
"batch_atm_fields_compact"),
  4138       IN(
"atmosphere_dim"),
  4139       GIN(
"atmospheres_fields", 
"field_names"),
  4140       GIN_TYPE(
"ArrayOfMatrix", 
"ArrayOfString"),
  4142       GIN_DESC(
"Batch of atmospheres stored in one array of matrix",
  4143                "Order/names of atmospheric fields.")));
  4148           "Display information about the given CIA tags.\n"  4149           "The CIA tags shown are in the same format as needed by *abs_speciesSet*.\n"),
  4156       GIN(
"catalogpath", 
"cia_tags"),
  4157       GIN_TYPE(
"String", 
"ArrayOfString"),
  4159       GIN_DESC(
"Path to the CIA catalog directory.",
  4160                "Array of CIA tags to view, e.g. [ \"N2-N2\", \"H2-H2\" ]")));
  4163       NAME(
"CIARecordReadFromFile"),
  4164       DESCRIPTION(
"Reads CIARecord from Hitran-style file.\n"),
  4169       GOUT_DESC(
"CIARecord type variable for input and output."),
  4171       GIN(
"species_tag", 
"filename"),
  4174       GIN_DESC(
"SpeciesTag string to associate with this CIARecord. See "  4175                "*abs_speciesSet* for correct format.",
  4176                "Filename of HITRAN CIA data file.")));
  4179       NAME(
"cloudboxOff"),
  4181           "Deactivates the cloud box.\n"  4183           "Use this method if no scattering calculations shall be performed.\n"  4185           "The function sets *cloudbox_on* to 0, *cloudbox_limits*,\n"  4186           "*pnd_field*, *scat_data*, *scat_data_raw*, *iy_cloudbox_agenda*\n"  4187           "and *particle_masses* to be empty and sizes *dpnd_field_dx* to be\n"  4188           "consitent with *jacobian_quantities*.\n"),
  4191           "ppath_inside_cloudbox_do",
  4193           "iy_cloudbox_agenda",
  4199           "scat_data_checked",
  4204       IN(
"jacobian_quantities"),
  4211       NAME(
"cloudboxSetAutomatically"),
  4213           "Sets the cloud box to encompass the cloud given by the entries\n"  4214           "in *particle_field*.\n"  4216           "This WSM handles one *Tensor4* type *particle_field* at a time. It can\n"  4217           "be used to determine the cloudbox from *particle_bulkprop_field*,\n"  4218           "but also from the various scat_species_XXX_field (or even from a\n"  4219           "read-in *pnd_field*). For the latter, the WSM needs to be called\n"  4220           "once per each scat_species_XXX_field, with previously determined\n"  4221           "*cloudbox_limits* provided through *cloudbox_limits_old*.\n"  4223           "The function must be called before executing any WSM that applies\n"  4224           "*cloudbox_limits*.\n"  4226           "The function iterates over all 3D fields in *particle_field* (which\n"  4227           "might correspond to the different scattering species as in\n"  4228           "scat_species_XXX_field or to different particle bulk properties as\n"  4229           "in *particle_bulkprop_field*). Each field is searched for the first\n"  4230           "and last pressure index, where the value is unequal to zero. This\n"  4231           "index is then copied to *cloudbox_limits*.\n"  4232           "If *particle_field* is empty, the cloudbox is switched off\n"  4233           "(*cloudbox_on*=0).\n"  4235           "Additionaly the lower cloudbox_limit is altered by *cloudbox_margin*.\n"  4236           "The margin is given as a height difference in meters and transformed\n"  4237           "into a pressure (via isothermal barometric height formula). This\n"  4238           "alteration is to ensure covering photons that leave the cloud, but\n"  4239           "reenter through a limb path.\n"  4240           "If *cloudbox_margin* is set to -1 (default), the cloudbox will extend\n"  4241           "to the surface. Hence, the lower cloudbox_limit is set to 0 (index\n"  4242           "of first pressure level).\n"  4243           "*cloudbox_margin* will be applied on each call of the WSM. Hence,\n"  4244           "if called successively, e.g. for several scat_species_XXX_field,\n"  4245           "and *cloudbox_margin* is not -1, it is suggested to apply the\n"  4246           "desired *cloudbox_margin* only for the last WSM call, while for the\n"  4247           "others set *cloudbox_margin* to 0.\n"  4249           "Works only for *atmosphere_dim==1.*\n"),
  4250       AUTHORS(
"Jana Mendrok, Daniel Kreyling"),
  4251       OUT(
"cloudbox_on", 
"cloudbox_limits"),
  4255       IN(
"atmosphere_dim", 
"p_grid", 
"lat_grid", 
"lon_grid"),
  4256       GIN(
"particle_field", 
"cloudbox_limits_old", 
"cloudbox_margin"),
  4257       GIN_TYPE(
"Tensor4", 
"ArrayOfIndex", 
"Numeric"),
  4259       GIN_DESC(
"A collection of particle property fields (e.g."  4260                " *particle_bulkprop_field*,"  4261                " *scat_species_mass_density_field*).",
  4262                "Preset cloudbox limits, e.g. resulting from a previous run"  4263                " of *cloudboxSetAutomatically*.",
  4264                "Minimum distance [m] between lowest 'cloudy' level and"  4265                " cloudbox lower limit. If set to *-1* (default), the"  4266                " cloudbox lower limit is fixed to 0, i.e., corresponds to"  4267                " the lowest atmospheric level (or the surface).")));
  4271                DESCRIPTION(
"Sets the cloudbox to cover the full atmosphere.\n"),
  4272                AUTHORS(
"Claudia Emde, Jana Mendrok"),
  4273                OUT(
"cloudbox_on", 
"cloudbox_limits"),
  4277                IN(
"atmosphere_dim", 
"p_grid", 
"lat_grid", 
"lon_grid"),
  4284       NAME(
"cloudboxSetManually"),
  4286           "Sets the cloud box to encompass the given positions.\n"  4288           "The function sets *cloudbox_on* to 1 and sets *cloudbox_limits*\n"  4289           "following the given pressure, latitude and longitude positions.\n"  4290           "The index limits in *cloudbox_limits* are selected to give the\n"  4291           "smallest possible cloud box that encompass the given points.\n"  4293           "The points must be given in the same order as used in\n"  4294           "*cloudbox_limits*. That means that the first keyword argument\n"  4295           "shall be a higher pressure than argument two, while the latitude\n"  4296           "and longitude points are given in increasing order. Positions\n"  4297           "given for dimensions not used by the selected atmospheric\n"  4298           "dimensionality are ignored.\n"  4300           "The given pressure points can be outside the range of *p_grid*.\n"  4301           "The pressure limit is then set to the end point of *p_grid*.\n"  4302           "The given latitude and longitude points must be inside the range\n"  4303           "of the corresponding grid. In addition, the latitude and longitude\n"  4304           "points cannot be inside the outermost grid ranges as the latitude\n"  4305           "and longitude limits in *cloudbox_limits* are not allowed to be\n"  4306           "grid end points.\n"),
  4308       OUT(
"cloudbox_on", 
"cloudbox_limits"),
  4312       IN(
"atmosphere_dim", 
"p_grid", 
"lat_grid", 
"lon_grid"),
  4313       GIN(
"p1", 
"p2", 
"lat1", 
"lat2", 
"lon1", 
"lon2"),
  4315           "Numeric", 
"Numeric", 
"Numeric", 
"Numeric", 
"Numeric", 
"Numeric"),
  4318                "Lower pressure point.",
  4319                "Lower latitude point.",
  4320                "Upper latitude point.",
  4321                "Lower longitude point.",
  4322                "Upper longitude point.")));
  4325       NAME(
"cloudboxSetManuallyAltitude"),
  4327           "Sets the cloud box to encompass the given positions.\n"  4329           "As *cloudboxSetManually* but uses altitudes instead of pressure.\n"  4330           "The given altitude points can be outside the range of *z_field*.\n"  4331           "The altitude limit is then set to the end point of *p_grid*.\n"),
  4333       OUT(
"cloudbox_on", 
"cloudbox_limits"),
  4337       IN(
"atmosphere_dim", 
"z_field", 
"lat_grid", 
"lon_grid"),
  4338       GIN(
"z1", 
"z2", 
"lat1", 
"lat2", 
"lon1", 
"lon2"),
  4340           "Numeric", 
"Numeric", 
"Numeric", 
"Numeric", 
"Numeric", 
"Numeric"),
  4343                "Upper altitude point.",
  4344                "Lower latitude point.",
  4345                "Upper latitude point.",
  4346                "Lower longitude point.",
  4347                "Upper longitude point.")));
  4350       NAME(
"cloudbox_checkedCalc"),
  4352           "Checks consistency and validity of the cloudbox governing variables.\n"  4354           "The following WSVs are treated: *cloudbox_on*, *cloudbox_limits*,\n"  4355           "*pnd_field*, *scat_data*, *scat_species*, *abs_species*, *particle_masses*\n"  4356           "*particle_bulkprop_field*, *particle_bulkprop_names* and wind_u/v/w_field.\n"  4358           "If any of these variables is changed, then this method shall be\n"  4359           "called again (no automatic check that this is fulfilled!).\n"  4361           "The main checks are if the cloudbox limits are OK with respect to\n"  4362           "the atmospheric dimensionality and the limits of the atmosphere,\n"  4363           "and that the scattering element variables *pnd_field* and\n"  4364           "*scat_data* match in size.\n"  4366           "Further checks on *scat_data* are performed in *scat_data_checkedCalc*\n"  4368           "*scat_species* and *particle_masses* must either be empty or have a\n"  4369           "size that matches the other data. If non-empty, some check of these\n"  4370           "variables are performed.\n"  4372           "If any test fails, there is an error. Otherwise, *cloudbox_checked*\n"  4374       AUTHORS(
"Patrick Eriksson, Jana Mendrok"),
  4375       OUT(
"cloudbox_checked"),
  4379       IN(
"atmfields_checked",
  4393          "jacobian_quantities",
  4398       GIN(
"negative_pnd_ok"),
  4401       GIN_DESC(
"Flag whether to accept pnd_field < 0.")));
  4404       NAME(
"cloudbox_field_monoIterate"),
  4406           "Iterative solution of the VRTE (DOIT method).\n"  4408           "A solution for the RTE with scattering is found using the\n"  4410           " 1. Calculate scattering integral using *doit_scat_field_agenda*.\n"  4411           " 2. Calculate RT with fixed scattered field using\n"  4412           "    *doit_rte_agenda*.\n"  4413           " 3. Convergence test using *doit_conv_test_agenda*.\n"  4415           "Note: The atmospheric dimensionality *atmosphere_dim* can be\n"  4416           "      either 1 or 3. To these dimensions the method adapts\n"  4417           "      automatically. 2D scattering calculations are not\n"  4419       AUTHORS(
"Claudia Emde, Jakob Doerr"),
  4420       OUT(
"cloudbox_field_mono"),
  4424       IN(
"cloudbox_field_mono",
  4425          "doit_scat_field_agenda",
  4427          "doit_conv_test_agenda"),
  4432           "Index wether to accelerate only the intensity (1) or the whole Stokes Vector (4)")));
  4435       NAME(
"cloudbox_fieldCrop"),
  4437           "Extracts a part of an existing *cloudbox_field*.\n"  4439           "The cropping is defined by defining new cloudbox limits. Note that\n"  4440           "*new_limit0* is an index with respect to *p_grid*, etc.\n"  4442           "The following must be valid:\n"  4443           "  new_limit0 >= cloudbox_limits[0]\n"  4444           "  new_limit1 <= cloudbox_limits[1]\n"  4445           "  new_limit2 >= cloudbox_limits[2]\n"  4446           "  new_limit3 <= cloudbox_limits[3]\n"  4447           "  new_limit4 >= cloudbox_limits[4]\n"  4448           "  new_limit5 <= cloudbox_limits[5]\n"  4450           "Indexes for dimensions not used are ignored.\n"),
  4452       OUT(
"cloudbox_field", 
"cloudbox_limits"),
  4456       IN(
"atmosphere_dim", 
"cloudbox_on", 
"cloudbox_limits", 
"cloudbox_field"),
  4463       GIN_TYPE(
"Index", 
"Index", 
"Index", 
"Index", 
"Index", 
"Index"),
  4465       GIN_DESC(
"New value for cloudbox_limits[0].",
  4466                "New value for cloudbox_limits[1].",
  4467                "New value for cloudbox_limits[2].",
  4468                "New value for cloudbox_limits[3].",
  4469                "New value for cloudbox_limits[4].",
  4470                "New value for cloudbox_limits[5].")));
  4473       NAME(
"cloudbox_fieldSetFromPrecalc"),
  4475           "Sets the initial cloudbox intensity field *cloudbox_field* from a\n"  4476           "precalculated field.\n"  4478           "This method sets the (monochromatic) first guess radiation field\n"  4479           "inside the cloudbox from a precalculated *cloudbox_field_precalc*,\n"  4480           "e.g., from the solution of a similar atmospheric scenario. The\n"  4481           "dimensions of *cloudbox_field_precalc* have to be consistent with\n"  4482           "the DOIT setup in terms of frequencies, pressure levels inside the\n"  4483           "cloudbox, polar angles used as well as the stokes dimension.\n"  4484           "Incoming field on the cloudbox boundaries is adapted to the actual\n"  4485           "clearsky incoming field as, e.g., calculated by *DoitGetIncoming*.\n"),
  4487       OUT(
"cloudbox_field"),
  4491       IN(
"cloudbox_field",
  4497          "doit_is_initialized"),
  4498       GIN(
"cloudbox_field_precalc"),
  4501       GIN_DESC(
"Precalculated radiation field (of type *cloudbox_field*)")));
  4504       NAME(
"cloudbox_fieldSetClearsky"),
  4506           "Interpolate clearsky field on all gridpoints in cloudbox.\n"  4508           "This method uses a linear 1D/3D interpolation scheme to obtain the\n"  4509           "radiation field on all grid points inside the cloud box from the\n"  4510           "clear sky field on the cloudbox boundary. This radiation field\n"  4511           "is taken as the first guess radiation field in the DOIT module.\n"  4513           "Set the *all_frequencies* to 1 if the clearsky field shall be used\n"  4514           "as initial field for all frequencies. Set it to 0 if the clear sky\n"  4515           "field shall be used only for the first frequency in *f_grid*. For\n"  4516           "later frequencies, *cloudbox_field* of the previous frequency is then\n"  4518       AUTHORS(
"Sreerekha T.R. and Claudia Emde"),
  4519       OUT(
"cloudbox_field"),
  4523       IN(
"cloudbox_field",
  4530          "doit_is_initialized"),
  4531       GIN(
"all_frequencies"),
  4537       NAME(
"cloudbox_field_monoSetConst"),
  4539           "This method sets the initial field inside the cloudbox to a\n"  4540           "constant value. The method works only for monochromatic\n"  4541           "calculations (number of elements in f_grid=1).\n"  4543           "The user can specify a value for each Stokes dimension in the\n"  4544           "control file by *value*.\n"),
  4546       OUT(
"cloudbox_field_mono"),
  4550       IN(
"cloudbox_field_mono",
  4560       GIN_DESC(
"A vector containing 4 elements with the value of the "  4561                "initial field for each Stokes dimension.")));
  4564       NAME(
"cloudbox_fieldSetConst"),
  4566           "This method sets the initial field inside the cloudbox to a\n"  4569           "The user has to specify a value for each Stokes dimension in the\n"  4570           "control file by *value*.\n"),
  4572       OUT(
"cloudbox_field"),
  4576       IN(
"cloudbox_field",
  4586       GIN_DESC(
"A vector containing *stokes_dim* elements with the value of"  4587                " the initial field for each Stokes dimension.")));
  4590       NAME(
"cloudbox_fieldSetConstPerFreq"),
  4592           "This method sets the initial field inside the cloudbox to a\n"  4593           "constant value per frequency slice.\n"  4595           "The user has specify a value for each frequency and Stokes\n"  4596           "dimension in the control file by *value*.\n"),
  4598       OUT(
"cloudbox_field"),
  4602       IN(
"cloudbox_field",
  4612       GIN_DESC(
"A matrix containing *stokes_dim* elements per frequency"  4613                " (row) with the value of the initial field for each"  4614                " frequency and Stokes dimension.")));
  4617       NAME(
"cloudbox_fieldUpdate1D"),
  4619           "RT calculation in cloudbox with fixed scattering integral (1D).\n"  4621           "Updates the radiation field (DOIT method). The method loops\n"  4622           "through the cloudbox to update the radiation field for all\n"  4623           "positions and directions in the 1D cloudbox.\n"  4625           "Note: This method is very inefficient, because the number of\n"  4626           "iterations scales with the number of cloudbox pressure levels.\n"  4627           "It is recommended to use *cloudbox_fieldUpdateSeq1D*.\n"),
  4629       OUT(
"cloudbox_field_mono"),
  4633       IN(
"cloudbox_field_mono",
  4636          "propmat_clearsky_agenda",
  4641          "ppath_step_agenda",
  4650          "surface_rtprop_agenda",
  4658       NAME(
"cloudbox_fieldUpdateSeq1D"),
  4660           "RT calculation in cloudbox with fixed scattering integral.\n"  4662           "Updates radiation field (*cloudbox_field*) in DOIT module.\n"  4663           "This method loops through the cloudbox to update the\n"  4664           "radiation field for all positions and directions in the 1D\n"  4665           "cloudbox. The method applies the sequential update. For more\n"  4666           "information refer to AUG.\n"),
  4668       OUT(
"cloudbox_field_mono", 
"doit_scat_field"),
  4672       IN(
"cloudbox_field_mono",
  4675          "propmat_clearsky_agenda",
  4681          "ppath_step_agenda",
  4690          "surface_rtprop_agenda",
  4692       GIN(
"normalize", 
"norm_error_threshold", 
"norm_debug"),
  4693       GIN_TYPE(
"Index", 
"Numeric", 
"Index"),
  4696           "Apply normalization to scattered field.",
  4697           "Error threshold for scattered field correction factor.",
  4698           "Debugging flag. Set to 1 to output normalization factor to out0.")));
  4701       NAME(
"cloudbox_fieldUpdateSeq1DPP"),
  4703           "RT calculation in cloudbox with fixed scattering integral.\n"  4705           "Update radiation field (*cloudbox_field*) in DOIT module.\n"  4706           "This method loops through the cloudbox to update the\n"  4707           "radiation field for all\n"  4708           "positions and directions in the 1D cloudbox. The method applies\n"  4709           "the sequential update and the plane parallel approximation.\n"  4710           "This method is only slightly faster than\n"  4711           "*cloudbox_fieldUpdateSeq1D* and it is less accurate. It can not\n"  4712           "be used for limb simulations.\n"),
  4714       OUT(
"cloudbox_field_mono", 
"za_index"),
  4718       IN(
"cloudbox_field_mono",
  4721          "propmat_clearsky_agenda",
  4737       NAME(
"cloudbox_fieldUpdateSeq3D"),
  4739           "RT calculation in cloudbox with fixed scattering integral.\n"  4741           "Update radiation field (*cloudbox_field*) in DOIT module.\n"  4742           "This method loops through the cloudbox to update the\n"  4743           "radiation field for all positions and directions in the 3D\n"  4744           "cloudbox. The method applies the sequential update. For more\n"  4745           "information please refer to AUG.\n"  4746           "Surface reflections are not yet implemented in 3D scattering\n"  4749       OUT(
"cloudbox_field_mono"),
  4753       IN(
"cloudbox_field_mono",
  4756          "propmat_clearsky_agenda",
  4762          "ppath_step_agenda",
  4780       NAME(
"cloudbox_field_monoOptimizeReverse"),
  4782           "Interpolate *cloudbox_field_mono* back to the original p_grid.\n"  4783           "For detailed description, see *OptimizeDoitPressureGrid*. \n"),
  4785       OUT(
"cloudbox_field_mono"),
  4789       IN(
"cloudbox_field_mono", 
"p_grid_orig", 
"p_grid", 
"cloudbox_limits"),
  4798           "Checks the consistency between two variables.\n"  4800           "The two variables are checked to not deviate outside the specified\n"  4801           "value (*maxabsdiff*). An error is issued if this is not fulfilled.\n"  4803           "The main application of this method is to be part of the test\n"  4804           "control files, and then used to check that a calculated value\n"  4805           "is consistent with an old, reference, value.\n"),
  4812       GIN(
"var1", 
"var2", 
"maxabsdiff", 
"error_message"),
  4814           "Numeric, Vector, Matrix, Tensor3, Tensor4, Tensor5, Tensor7,"  4815           "ArrayOfVector, ArrayOfMatrix, ArrayOfTensor7, GriddedField3,"  4816           "Sparse, SingleScatteringData",
  4818           "Numeric, Vector, Matrix, Tensor3, Tensor4, Tensor5, Tensor7,"  4819           "ArrayOfVector, ArrayOfMatrix, ArrayOfTensor7, GriddedField3,"  4820           "Sparse, SingleScatteringData",
  4826                "A second variable",
  4827                "Threshold for maximum absolute difference.",
  4828                "Additional error message."),
  4836       NAME(
"CompareRelative"),
  4838           "Checks the consistency between two variables by their relative values.\n"  4840           "The two variables are checked to not deviate outside the specified\n"  4841           "relative value (*maxabsreldiff*). An error is issued if this is not\n"  4844           "The main application of this method is to be part of the test\n"  4845           "control files, and then used to check that a calculated value\n"  4846           "is consistent with an old, reference, value.\n"  4848           "If either value is 0.0, the relative error is considered as 0\n"  4849           "for easier use.  This really means infinite differences, though\n"  4850           "allowing zero-crossings is useful for plenty of tests. So Be Aware!\n"  4852           "If both *var1* and *var2* are non-zero, the difference is evaluated\n"  4853           "as: abs(var1/var2-1)\n"  4854           "That is, *var2* is taken as the reference value.\n"),
  4855       AUTHORS(
"Oliver Lemke", 
"Richard Larsson"),
  4861       GIN(
"var1", 
"var2", 
"maxabsreldiff", 
"error_message"),
  4863           "Numeric, Vector, Matrix, Tensor3, Tensor4, Tensor5, Tensor6, Tensor7,"  4864           "ArrayOfVector, ArrayOfMatrix, ArrayOfTensor3, ArrayOfTensor4,"  4865           "ArrayOfTensor6, ArrayOfTensor7, ArrayOfArrayOfVector,"  4866           "ArrayOfArrayOfMatrix, ArrayOfArrayOfTensor3, ArrayOfArrayOfTensor6,"  4867           "ArrayOfPropagationMatrix, ArrayOfArrayOfPropagationMatrix,"  4868           "ArrayOfStokesVector, ArrayOfArrayOfStokesVector,EnergyLevelMap,",
  4869           "Numeric, Vector, Matrix, Tensor3, Tensor4, Tensor5, Tensor6, Tensor7,"  4870           "ArrayOfVector, ArrayOfMatrix, ArrayOfTensor3, ArrayOfTensor4,"  4871           "ArrayOfTensor6, ArrayOfTensor7, ArrayOfArrayOfVector,"  4872           "ArrayOfArrayOfMatrix, ArrayOfArrayOfTensor3, ArrayOfArrayOfTensor6,"  4873           "ArrayOfPropagationMatrix, ArrayOfArrayOfPropagationMatrix,"  4874           "ArrayOfStokesVector, ArrayOfArrayOfStokesVector,EnergyLevelMap,",
  4879                "A second variable",
  4880                "Threshold for maximum relative difference.",
  4881                "Additional error message."),
  4889       NAME(
"complex_refr_indexConstant"),
  4891           "Set complex refractive index to a constant value.\n"  4893           "Frequency and temperature grids are set to have length 1 (and\n"  4894           "set to the value 0).\n"),
  4896       OUT(
"complex_refr_index"),
  4901       GIN(
"refr_index_real", 
"refr_index_imag"),
  4904       GIN_DESC(
"Real part of refractive index",
  4905                "Imag part of refractive index")));
  4908       NAME(
"complex_refr_indexIceMatzler06"),
  4910           "Refractive index of ice following Matzler06 parameterization.\n"  4912           "Calculates temperature dependent complex refractive index of\n"  4913           "hexagonal ice at microwave and sub-mm frequencies (10MHz-3Tz).\n"  4915           "This parametrization is also applied by the microwave and\n"  4916           "submm-wave part of the Warren08 model.\n"  4919           "Matzler, C., 2006: Thermal Microwave Radiation: Application for\n"  4920           "Remote Sensing, Microwave dielectric properties of ice, pp. 455-462,\n"  4921           "Inst. Eng. Technol., Stevenage, U. K.\n"  4922           "Warren, S. G., and R. E. Brandt, 2008: Optical constants of ice\n"  4923           "from the ultraviolet to the microwave: A revised compilation,\n"  4924           "J. Geophys. Res., 113, D14220, doi:10.1029/2007JD009744.\n"),
  4926       OUT(
"complex_refr_index"),
  4931       GIN(
"data_f_grid", 
"data_T_grid"),
  4934       GIN_DESC(
"Frequency grid for refractive index calculation",
  4935                "Temperature grid for refractive index calculation")));
  4938       NAME(
"complex_refr_indexIceWarren84"),
  4940           "Refractive index of ice following Warren84 parameterization.\n"  4942           "Calculates complex refractive index of Ice 1H for wavelengths\n"  4943           "between 45 nm and 8.6 m.\n"  4944           "For wavelengths above 167 microns, temperature dependence is\n"  4945           "included for temperatures between 213 and 272K.\n"  4946           "Mainly intended for applications in Earth ice\n"  4947           "clouds and snow, not other planets or interstellar space;\n"  4948           "the temperature dependence or crystalline form of ice may be\n"  4949           "incorrect for these latter applications.\n"  4951           "Authors of Fortran function:\n"  4952           "Stephen Warren, Univ. of Washington (1983)\n"  4953           "Bo-Cai Gao, JCESS, Univ. of Maryland (1995)\n"  4954           "Warren Wiscombe, NASA Goddard (1995)\n"  4957           "Warren, S., 1984: Optical Constants of Ice from the Ultraviolet\n"  4958           "to the Microwave, Appl. Opt. 23, 1206-1225\n"  4960           "Kou, L., D. Labrie, and P. Chylek, 1994: Refractive indices\n"  4961           "of water and ice in the 0.65- to 2.5-micron spectral range,\n"  4962           "Appl. Opt. 32, 3531-3540\n"  4964           "Perovich, D., and J. Govoni, 1991: Absorption Coefficients\n"  4965           "of Ice from 250 to 400 nm, Geophys. Res. Lett. 18, 1233-1235\n"),
  4967       OUT(
"complex_refr_index"),
  4972       GIN(
"data_f_grid", 
"data_T_grid"),
  4975       GIN_DESC(
"Frequency grid for refractive index calculation",
  4976                "Temperature grid for refractive index calculation")));
  4979       NAME(
"complex_refr_indexWaterLiebe93"),
  4981           "Complex refractive index of liquid water according to Liebe 1993.\n"  4983           "The method treats liquid water without salt. Thus, not valid below\n"  4984           "10 GHz. Upper frequency limit not known, here set to 1000 GHz.\n"  4985           "Model parameters taken from Atmlab function epswater93 (by\n"  4986           "C. Maetzler), which refer to Liebe 1993 without closer\n"  4989           "Temperatures must be between -40 and 100 degrees Celsius. The\n"  4990           "accuracy of the parametrization below 0 C is not known by us.\n"),
  4991       AUTHORS(
"Patrick Eriksson", 
"Oliver Lemke"),
  4992       OUT(
"complex_refr_index"),
  4997       GIN(
"data_f_grid", 
"data_T_grid"),
  5000       GIN_DESC(
"Frequency grid for refractive index calculation",
  5001                "Temperature grid for refractive index calculation")));
  5006           "Copy a workspace variable.\n"  5008           "This method can copy any workspace variable\n"  5009           "to another workspace variable of the same group. (E.g., a Matrix to\n"  5010           "another Matrix.)\n"  5012           "As always, output comes first in the argument list!\n"  5016           "Copy(f_grid, p_grid)\n"  5018           "Will copy the content of *p_grid* to *f_grid*. The size of *f_grid*\n"  5019           "is adjusted automatically (the normal behaviour for workspace\n"  5040           "Create 1D covariance matrix.\n"  5042           "Creates a 1D covariance matrix for two retrieval quantities on given \n"  5043           " grids from a given functional form. Elements  of the covariance matrix\n"  5045           " S_{i,j} = sigma_i * sigma_j * f(d_{i,j} / l_{i,j}) \n"  5046           " where d_{i,j} is the distance between the two grid points and l_{i,j}\n"  5047           " the mean of the correlation lengths of the grid points.\n"  5049           " If a cutoff value co is given elements with absolute value less than this \n"  5050           " are set to zero.\n"  5052           "The following functional forms are available:\n"  5053           "  \"exp\": f(x) = exp(-x) \n"  5054           "  \"lin\": f(x) = 1.0 - x, for x > 1.0, 0.0 otherwise \n"  5055           "  \"gauss\": f(x) = exp(-x^2) \n"),
  5056       AUTHORS(
"Simon Pfreundschuh"),
  5060       GOUT_DESC(
"The matrix in which to store the covariance matrix."),
  5079       GIN_DESC(
"The retrieval grid for the first retrieval quantity.",
  5080                "The retrieval grid for the second retrieval quantity."  5081                " (If empty taken as grid_1)",
  5082                "The variances of the first retrieval quantity.",
  5083                "The variances of the second retrieval quantity."  5084                "(If empty taken as sigma_1)",
  5085                "The correlations lengths of the first retrieval quantity.",
  5086                "The correlations lengths of the second retrieval quantity."  5087                "(If empty taken as cls_1)",
  5088                "The cutoff value for covariance matrix elements.",
  5089                "The name of the functional form to use."),
  5095       NAME(
"covmat1DMarkov"),
  5097           "Create Markov Process Covariance Matrix.\n"  5099           "Create a markov process covariance matrix for a retrieval quantity on \n"  5100           " evenly spaced 1D grid. The correlation between two grid points i,j is \n"  5101           " is computed as \n"  5102           " cov(i,j) = sigma[i] * sigma[j] * exp(- d(i,j) / lc)\n"  5103           " where d(i,j) = abs(grid[i] - grid[j]).\n"  5105           "This function also sets covmat_inv_block to the analytically computed inverse\n"  5106           "of the covariance matrix of the markov provess, which is tri-diagonal. Note\n"  5107           "that this requires the retrieval grid to be evenly spaced.\n"),
  5108       AUTHORS(
"Simon Pfreundschuh"),
  5110       GOUT(
"out", 
"out_inverse"),
  5111       GOUT_TYPE(
"Matrix, Sparse", 
"Matrix, Sparse"),
  5113           "The matrix in which to store the covariance matrix.",
  5114           "The matrix in which to store the inverse of the covariance matrix."),
  5116       GIN(
"grid", 
"sigma", 
"lc", 
"co"),
  5117       GIN_TYPE(
"Vector", 
"Vector", 
"Numeric", 
"Numeric"),
  5120                "The vairance for each grid point.",
  5121                "The correlation length of the Markov process.",
  5122                "The cutoff value below which elements will be set to 0.0"),
  5128       NAME(
"covmatDiagonal"),
  5130           "Sets the matrix in covmat_block to a diagonal matrix with the variances\n"  5131           "provided in *vars* as diagonal elements."  5133           "Also sets covmat_block_inv to the inverse of the block so that the\n"  5134           "computation of the inverse is avoided.\n"),
  5135       AUTHORS(
"Simon Pfreundschuh"),
  5137       GOUT(
"out", 
"out_inverse"),
  5138       GOUT_TYPE(
"Matrix, Sparse", 
"Matrix, Sparse"),
  5140           "The matrix in which to store the covariance matrix.",
  5141           "The matrix in which to store the inverse of the covariance matrix."),
  5146       GIN_DESC(
"Variances to be used as diagonal elements of covmat_block."),
  5152       NAME(
"covmat_seAddBlock"),
  5154           "Add a block to the measurement covariance matrix *covmat_se*\n"  5156           "This functions adds a given dense or sparse matrix as block to the covariance\n"  5157           "matrix *covmat_sx*. The position of the block can be given by the generic\n"  5158           "arguments *i* and *j*. Note that diagonal blocks must be added in order starting from\n"  5159           " in  the top left corner. If an off-diagonal block is added it must have corresponding\n"  5160           " existing blocks on the diagonal and these must be consistent with the dimensions\n"  5161           " of the block.  If *i* and *j*  are not provided, the blok will be added\n"  5162           "at the first free spot on the diagonal.\n"),
  5163       AUTHORS(
"Simon Pfreundschuh"),
  5169       GIN(
"block", 
"i", 
"j"),
  5170       GIN_TYPE(
"Matrix, Sparse", 
"Index", 
"Index"),
  5172       GIN_DESC(
"The block to add to the covariance matrix",
  5173                "Index of a retrieval quantity. Must satisfy *i* <= *j*.",
  5174                "Index of a retrieval quantity. Must satisfy *i* <= *j*."),
  5180       NAME(
"covmat_seAddInverseBlock"),
  5182           "Add the inverse of a block to covariance matrix *covmat_se*\n"  5184           "This functions adds a given matrix as the inverse of a block in the covariance\n"  5185           "matrix *covmat_se*. The purpose of this function is to allow the user to\n"  5186           "to use a precomputed inverse for this block in the covariance matrix, that may\n"  5187           "for example have been obtained analytically.\n"  5189           "This function requires the corresponding non-inverse block to already be present in *covmat_se*"  5191           "\n Note that for this to work this retrieval quantity must be independent from\n"  5192           "other retrieval quantities that do not have an inverse. Otherwise the inverse\n"  5193           "will be ignored and recomputed numerically.\n"  5195           "For the rest, the same requirements as for *covmat_seAddBlock* apply.\n"),
  5196       AUTHORS(
"Simon Pfreundschuh"),
  5202       GIN(
"block", 
"i", 
"j"),
  5203       GIN_TYPE(
"Matrix, Sparse", 
"Index", 
"Index"),
  5205       GIN_DESC(
"The inverse block to add to the covariance matrix",
  5206                "Index of a retrieval quantity. Must satisfy *i* <= *j*.",
  5207                "Index of a retrieval quantity. Must satisfy *i* <= *j*."),
  5213       NAME(
"covmat_seSet"),
  5215           "Set covmat_se to a given matrix.\n"  5217           "This sets the measurement covariance matrix *covmat_se* to\n"  5218           "the matrix given by the generic input *covmat*. The covariance\n"  5219           "matrix can be of type CovarianceMatrix, Matrix or Sparse.\n"),
  5220       AUTHORS(
"Simon Pfreundschuh"),
  5227       GIN_TYPE(
"CovarianceMatrix, Matrix, Sparse"),
  5229       GIN_DESC(
"The matrix to set as the covariance matrix."),
  5235       NAME(
"covmat_sxSet"),
  5237           "Set covmat_sx to a given matrix.\n"  5239           "This sets the measurement covariance matrix *covmat_sx* to\n"  5240           "the matrix given by the generic input *covmat*. The covariance\n"  5241           "matrix can be of type CovarianceMatrix, Matrix or Sparse.\n"),
  5242       AUTHORS(
"Simon Pfreundschuh"),
  5249       GIN_TYPE(
"CovarianceMatrix, Matrix, Sparse"),
  5251       GIN_DESC(
"The matrix to set as the covariance matrix."),
  5257       NAME(
"covmat_sxAddBlock"),
  5259           "Add a block to the a priori covariance matrix *covmat_sx*\n"  5261           "This functions adds a given matrix as a block in the covariance\n"  5262           "matrix *covmat_sx*. The position of the block can be given by the generic\n"  5263           "arguments *i* and *j*, which should give the index of the retrieval quantity in\n"  5264           "*jacobian_quantities*, which is given just by the order the quantities have been\n"  5265           "added to the retrieval.\n"  5267           "If arguments *i* and *j* are omitted, the block will be added as diagonal block\n"  5268           "for the last added retrieval quantity.\n"  5270           "If provided, the index *i* must be less than or equal to *j*. Also the provided\n"  5271           "block must be consistent with the corresponding retrieval quantities.\n"),
  5272       AUTHORS(
"Simon Pfreundschuh"),
  5277       IN(
"covmat_sx", 
"jacobian_quantities"),
  5278       GIN(
"block", 
"i", 
"j"),
  5279       GIN_TYPE(
"Matrix, Sparse", 
"Index", 
"Index"),
  5281       GIN_DESC(
"The block to add to the covariance matrix",
  5282                "Index of a retrieval quantity. Must satisfy *i* <= *j*.",
  5283                "Index of a retrieval quantity. Must satisfy *i* <= *j*."),
  5289       NAME(
"covmat_sxAddInverseBlock"),
  5291           "Add the inverse of a block in covariance matrix *covmat_sx*\n"  5293           "This functions adds a given matrix as the inverse of a block in the covariance\n"  5294           "matrix *covmat_sx*. The purpose of this function is to allow the user to\n"  5295           "to use a precomputed inverse for this block in the covariance matrix, the may\n"  5296           "for example by obtained analytically.\n"  5298           "This function requires the non-inverse block to already be present in *covmat_sx*"  5300           "\n Note that for this to work this retrieval quantity must be independent from\n"  5301           "other retrieval quantities that do not have an inverse. Otherwise the inverse\n"  5302           "will be ignored and recomputed numerically.\n"  5304           "For the rest, the same requirements as for *covmat_sxAddBlock* apply.\n"),
  5305       AUTHORS(
"Simon Pfreundschuh"),
  5310       IN(
"covmat_sx", 
"jacobian_quantities"),
  5311       GIN(
"block", 
"i", 
"j"),
  5312       GIN_TYPE(
"Matrix, Sparse", 
"Index", 
"Index"),
  5314       GIN_DESC(
"The inverse block to add to the covariance matrix",
  5315                "Index of a retrieval quantity. Must satisfy *i* <= *j*.",
  5316                "Index of a retrieval quantity. Must satisfy *i* <= *j*."),
  5322       NAME(
"covmat_sxExtractSqrtDiagonal"),
  5324           "Extract the square root of the diagonal of the state space covariance matrix."  5326           "This function extracts the diagonal of the state space covariance matrix\n"  5327           "*covmat_sx* and computes its square root. The resulting vector can then\n"  5328           "be used as *x_norm* argument for the OEM method to avoid scaling problems.\n"),
  5329       AUTHORS(
"Simon Pfreundschuh"),
  5333       GOUT_DESC(
"The vector containing the square root of the diagonal elements"  5346           "Deletes a workspace variable.\n"  5348           "The variable is marked as uninitialized and its memory freed.\n"  5349           "It is not removed from the workspace though, therefore you\n"  5350           "don't need to/can't call Create for this variable again.\n"),
  5360       GIN_DESC(
"Variable to be deleted."),
  5368       NAME(
"diameter_maxFromDiameter_volume_equ"),
  5370           "Calculates maximum and area equivalent diameters from volume\n"  5371           "equivalent diameter.\n"  5373           "This is primarily a help function for using the T-matrix method\n"  5374           "and only a few particle shapes are handled. "  5376           "For shapes handled and further comments on the input arguments, see\n"  5377           "*scat_data_singleTmatrix*.\n"  5379           "Area equivalent diameter is the equivalent sphere diameter\n"  5380           "corresponding to the \"maximum axial area\". This is the largest\n"  5381           "cross-sectional area of the particle, observed either along the\n"  5382           "particle's main axis or in the perpendicular direction. That is,\n"  5383           "for a cylinder having diameter d and thickness h, this area is\n"  5384           "either (pi*d^2)/4 or (h*d).\n"),
  5385       AUTHORS(
"Johan Strandgren", 
"Patrick Eriksson"),
  5387       GOUT(
"diameter_max", 
"diameter_area_equ"),
  5390           "Maximum dimension of the particle.",
  5391           "Maximum axial area equivalent diameter of the particle, see above."),
  5393       GIN(
"shape", 
"diameter_volume_equ", 
"aspect_ratio"),
  5394       GIN_TYPE(
"String", 
"Numeric", 
"Numeric"),
  5397                "Particle equivalent volume diameter.",
  5398                "Particle aspect ratio.")));
  5401       NAME(
"diameter_volume_equFromDiameter_max"),
  5403           "Converts from maximum to volume equivalent diameter.\n"  5405           "This is primarily a help function for using the T-matrix part\n"  5406           "and only a few particle shapes are handled. "  5408           "For shapes handled and further comments on the input arguments,\n"  5409           "see *scat_data_singleTmatrix*.\n"  5411           "Also the volume is provided. It is simply sqrt(pi*dveq^3/6).\n"),
  5412       AUTHORS(
"Johan Strandgren", 
"Patrick Eriksson"),
  5414       GOUT(
"diameter_volume_equ", 
"volume"),
  5416       GOUT_DESC(
"Particle volume equivalent diameter.",
  5417                 "Volume of the particle."),
  5419       GIN(
"shape", 
"diameter_max", 
"aspect_ratio"),
  5420       GIN_TYPE(
"String", 
"Numeric", 
"Numeric"),
  5423                "Maximum dimension of the particle.",
  5424                "Particle aspect ratio.")));
  5427       NAME(
"DiagonalMatrix"),
  5429           "Create a diagonal matrix from a vector."  5431           "This creates a dense or sparse diagonal matrix with the elements of the given vector\n"  5432           " on the diagonal.\n"),
  5433       AUTHORS(
"Simon Pfreundschuh"),
  5442       GIN_DESC(
"The vector containing the diagonal elements.")));
  5447           "Derives the difference betwenn zenith and azimuth angles.\n"  5449           "Determines the difference between a set of angles (*other_los*)\n"  5450           "and a reference direction (*ref_los*). This method reverses the\n"  5451           "addition made by *AddZaAa*.\n"),
  5456       GOUT_DESC(
"Derived differences in line-of-sight."),
  5458       GIN(
"ref_los", 
"other_los"),
  5461       GIN_DESC(
"Reference line-of-sight (a single LOS).",
  5462                "Other line-of-sights (can be multiple LOS).")));
  5467           "Interface to the DISORT scattering solver (by Stamnes et al.).\n"  5469           "DISCLAIMER: There is a couple of known issues with the current\n"  5470           "implementation (see below). Use this WSM with care and only if\n"  5471           "these limitations/requirements are fulfilled. Results might be\n"  5472           "erroneous otherwise.\n"  5474           "DISORT provides the radiation field (*cloudbox_field*) from a scalar\n"  5475           "1D scattering solution assuming a plane-parallel atmosphere (flat\n"  5476           "Earth). Only totally randomly oriented particles are allowed.\n"  5477           "Refraction is not taken into account. Only Lambertian surface\n"  5478           "reflection is handled.\n"  5480           "*nstreams* is the number of polar angles taken into account\n"  5481           "internally in the scattering solution, *za_grid* is the\n"  5482           "polar angle grid on which *cloudbox_field* is provided.\n"  5483           "*nstreams* determines the angular resolution, hence the accuracy,\n"  5484           "of the scattering solution. The more anisotropic the bulk scattering\n"  5485           "matrix, the more streams are required. The computational burden\n"  5486           "increases approximately linearly with *nstreams*. The default value\n"  5487           "(8) is sufficient for most microwave scattering calculations. It is\n"  5488           "likely insufficient for IR calculations involving ice clouds,\n"  5491           "Further, *za_grid* determines the resolution of the output\n"  5492           "radiation field. The size of *za_grid* has no practical\n"  5493           "impact on computation time in the case of Disort and higher\n"  5494           "resolution generally improves the interpolation results, hence\n"  5495           "larger *za_grid* are recommended. To ensure sufficient\n"  5496           "interpolation accuracy, we require a (hardcoded) minimum size of 38.\n"  5498           "Different sphericity levels are emulated here by embedding DISORT\n"  5499           "in different ways and using different output. The available options\n"  5500           "(from low to high sphericity level) are:\n"  5501           "- Cloudbox extends over whole atmosphere (e.g. by setting cloudbox\n"  5502           "  from *cloudboxSetFullAtm*).\n"  5503           "- Cloudbox extends over a limited part of the atmosphere only (e.g.\n"  5504           "  by setting cloudbox from *cloudboxSetAutomatically* or\n"  5505           "  *cloudboxSetManually*). Internally, DISORT is run over the whole\n"  5506           "  atmosphere, but only the radiation field within the cloudbox is\n"  5507           "  passed on and used further in ARTS (e.g. by *yCalc*).\n"  5509           "Known issues of ARTS implementation:\n"  5510           "- Surface altitude is not an interface parameter. Surface is\n"  5511           "  implicitly assumed to be at the lowest atmospheric level.\n"  5512           "- Scattering angle grids of all scattering elements have to be\n"  5513           "  identical (except if *pfct_method* is 'interpolate').\n"  5515           "Keyword *pfct_method* allows to chose the method to extract phase\n"  5516           "function. 'interpolate' considers temperature dependence. Others\n"  5517           "neglect it by chosing one specific temperature grid point from the\n"  5518           "single scattering data: 'low' choses the lowest T-point, 'high' the\n"  5519           "highest T-point, and 'median' the median T-point. As different\n"  5520           "scattering elements can have different temperature grids, the actual\n"  5521           "temperature value used can differ between the scattering elements.\n"  5522           "Currently, other methods than 'interpolate' require all scattering\n"  5523           "elements to be given on identical scattering angle grids.\n"  5524           "Note that this keyword solely affects the phase function;\n"  5525           "extinction/absorption/scattering cross sections are always\n"  5526           "interpolated to the actual temperature.\n"),
  5527       AUTHORS(
"Claudia Emde, Jana Mendrok"),
  5528       OUT(
"cloudbox_field"),
  5532       IN(
"atmfields_checked",
  5534          "scat_data_checked",
  5538          "propmat_clearsky_agenda",
  5551          "surface_scalar_reflectivity"),
  5552       GIN(
"nstreams", 
"pfct_method", 
"Npfct", 
"quiet"),
  5553       GIN_TYPE(
"Index", 
"String", 
"Index", 
"Index"),
  5555       GIN_DESC(
"Number of polar angle directions (streams) in DISORT "  5556                "solution (must be an even number).",
  5557                "Flag which method to apply to derive phase function.",
  5558                "Number of angular grid points to calculate bulk phase"  5559                " function on (and derive Legendre polnomials from). If <0,"  5560                " the finest za_grid from scat_data will be used.",
  5561                "Silence C Disort warnings.")));
  5564       NAME(
"DisortCalcWithARTSSurface"),
  5566           "DISORT with surface.\n"  5568       AUTHORS(
"Claudia Emde, Jana Mendrok"),
  5569       OUT(
"cloudbox_field"),
  5573       IN(
"atmfields_checked",
  5575          "scat_data_checked",
  5579          "propmat_clearsky_agenda",
  5580          "surface_rtprop_agenda",
  5591       GIN(
"nstreams", 
"pfct_method", 
"Npfct", 
"quiet"),
  5592       GIN_TYPE(
"Index", 
"String", 
"Index", 
"Index"),
  5594       GIN_DESC(
"Number of polar angle directions (streams) in DISORT "  5595                "solution (must be an even number).",
  5596                "Flag which method to apply to derive phase function.",
  5597                "Number of angular grid points to calculate bulk phase"  5598                " function on (and derive Legendre polnomials from). If <0,"  5599                " the finest za_grid from scat_data will be used.",
  5600                "Silence C Disort warnings.")));
  5603       NAME(
"DisortCalcClearsky"),
  5605           "Interface to DISORT for running clear-sky cases.\n"  5607           "The method runs DISORT with *pnd_field* set to zero.\n"  5609           "Note that this version returns *spectral_radiance_field*, i.e.\n"  5610           "the solution for the full atmosphere. The standard *DisortCalc*\n"  5611           "only returns the field inside the cloudbox.\n"),
  5613       OUT(
"spectral_radiance_field"),
  5617       IN(
"atmfields_checked",
  5619          "propmat_clearsky_agenda",
  5630          "surface_scalar_reflectivity"),
  5631       GIN(
"nstreams", 
"quiet"),
  5634       GIN_DESC(
"Number of polar angle directions (streams) in DISORT "  5635                "solution (must be an even number).",
  5636                "Silence C Disort warnings.")));
  5639       NAME(
"DOBatchCalc"),
  5641           "Performs batch calculations for radiation fields.\n"  5643           "We perform *ybatch_n* jobs, starting at index *ybatch_start*. (Zero\n"  5644           "based indexing, as usual.) The output arrays will have\n"  5645           "ybatch_n elements. Indices in the output array start\n"  5646           "with zero, independent of *ybatch_start*.\n"  5648           "WARNING, MEMORY INTENSIVE!!!: Since the outputs of this methods can\n"  5649           "be very large, make sure you only pass back output you need.\n"  5650           "Estimate the size of your output by looking at the dimensions\n"  5651           "beforehand. If you only want to pass back some fields, make sure to\n"  5652           "empty the others at the end of your *dobatch_calc_agenda*. E.g.:\n"  5653           "Tensor7SetConstant(cloudbox_field, 0, 0, 0, 0, 0, 0, 0, 0.)\n"  5655           "The method performs the following:\n"  5656           "   1. Sets *ybatch_index* = *ybatch_start*.\n"  5657           "   2. Performs a-d until\n"  5658           "      *ybatch_index* = *ybatch_start* + *ybatch_n*.\n"  5659           "        a. Executes *dobatch_calc_agenda*.\n"  5660           "        b. If *ybatch_index* = *ybatch_start*, resizes the output\n"  5661           "           arrays based on *ybatch_n*.\n"  5662           "        c. Copies calculated fields to *ybatch_index* - *ybatch_start*\n"  5663           "           of output arrays.\n"  5664           "        d. Adds 1 to *ybatch_index*.\n"  5666           "Beside the *dobatch_calc_agenda*, the WSVs *ybatch_start*\n"  5667           "and *ybatch_n* must be set before calling this method.\n"  5669           "The input variable *ybatch_start* is set to a default of zero in\n"  5670           "*general.arts*.\n"),
  5672       OUT(
"dobatch_cloudbox_field",
  5673           "dobatch_radiance_field",
  5674           "dobatch_irradiance_field",
  5675           "dobatch_spectral_irradiance_field"),
  5679       IN(
"ybatch_start", 
"ybatch_n", 
"dobatch_calc_agenda"),
  5683       GIN_DESC(
"A flag with value 1 or 0. If set to one, the batch\n"  5684                "calculation will continue, even if individual jobs fail. In\n"  5685                "that case, a warning message is written to screen and file\n"  5686                "(out1 output stream), and the output array entry for the\n"  5687                "failed job in the output fields is left empty.")));
  5690       NAME(
"DOAngularGridsSet"),
  5692           "Sets the angular grids for Discrete Ordinate type scattering\n"  5695           "This method sets the angular grids for the Discrete Ordinate type\n"  5696           "scattering calculations (DOIT, DISORT). For down- und up-looking\n"  5697           "geometries it suffices to define *N_za_grid* (both solvers) and\n"  5698           "*N_aa_grid* (DOIT). From these numbers equally spaced grids are\n"  5699           "created and stored in the WSVs *za_grid* and *aa_grid*.\n"  5701           "For limb simulations it is important to use an optimized zenith\n"  5702           "angle grid with a very fine resolution around the horizon\n"  5703           "(za=90 degrees). Such a grid can be generated using\n"  5704           "*doit_za_grid_optCalc*. To be applied, the name of the file holding\n"  5705           "the optimized angle grid has to be given (*za_grid_opt_file*).\n"  5707           "When an optimized grid is present, the equidistant grid is used for\n"  5708           "the calculation of the scattering integrals, while the optimized\n"  5709           "grid is applied for the integration of the radiative transfer\n"  5710           "equation. Otherwise the equidistant grid is used throughout. For\n"  5711           "down-looking cases using the equidistant grid typically suffices\n"  5712           "and speeds up the calculations.\n"),
  5714       OUT(
"doit_za_grid_size", 
"aa_grid", 
"za_grid"),
  5719       GIN(
"N_za_grid", 
"N_aa_grid", 
"za_grid_opt_file"),
  5720       GIN_TYPE(
"Index", 
"Index", 
"String"),
  5722       GIN_DESC(
"Number of grid points in zenith angle grid. "  5723                "Recommended value is 19.",
  5724                "Number of grid points in azimuth angle grid. "  5725                "Recommended value is 37.",
  5726                "Name of special grid for RT part.")));
  5731           "Main DOIT method.\n"  5733           "This method executes *doit_mono_agenda* for each frequency\n"  5734           "in *f_grid*. The output is the radiation field inside the cloudbox\n"  5735           "(*cloudbox_field*).\n"),
  5737       OUT(
"cloudbox_field"),
  5741       IN(
"cloudbox_field",
  5742          "atmfields_checked",
  5745          "scat_data_checked",
  5749          "doit_is_initialized"),
  5756       NAME(
"DoitGetIncoming"),
  5758           "Calculates incoming radiation field of the cloudbox by repeated\n"  5759           "radiative transfer calculations.\n"  5761           "The method performs monochromatic pencil beam calculations for\n"  5762           "all grid positions on the cloudbox boundary, and all directions\n"  5763           "given by scattering angle grids (*scat_za/aa_grid*). Found radiances\n"  5764           "are stored in *cloudbox_field* which can be used as boundary\n"  5765           "conditions when scattering inside the cloud box is solved by the\n"  5766           "*DoitCalc* method.\n"  5768           "Note that *cloudbox_field* will always hold intensity in terms of\n"  5769           "radiances, regardless of the setting of *iy_unit* (unit conversion\n"  5770           "is done within *yCalc* or *iyCalc*, which will provide their output\n"  5771           "in terms of the specified *iy_unit*; no explicit unit conversion by\n"  5772           "the user necessary.).\n"),
  5773       AUTHORS(
"Sreerekha T.R.", 
"Claudia Emde"),
  5774       OUT(
"cloudbox_field"),
  5778       IN(
"cloudbox_field",
  5779          "atmfields_checked",
  5782          "doit_is_initialized",
  5795       GIN(
"rigorous", 
"maxratio"),
  5799           "Fail if incoming field is not safely interpolable.",
  5800           "Maximum allowed ratio of two radiances regarded as interpolable.")));
  5803       NAME(
"DoitGetIncoming1DAtm"),
  5805           "As *DoitGetIncoming* but assumes clear sky part to be 1D."  5807           "The incoming field is calculated only for one position and azimuth\n"  5808           "angle for each cloud box boundary, and obtained values are used\n"  5809           "for all other postions and azimuth angles. This works if a 3D\n"  5810           "cloud box is put into an 1D background atmosphere.\n"  5812           "This method can only be used for 3D cases.\n"),
  5813       AUTHORS(
"Sreerekha T.R.", 
"Claudia Emde"),
  5814       OUT(
"cloudbox_field", 
"cloudbox_on"),
  5818       IN(
"cloudbox_field",
  5819          "atmfields_checked",
  5822          "doit_is_initialized",
  5843           "Initialises variables for DOIT scattering calculations.\n"  5845           "Note that multi-dimensional output variables (Tensors, specifically)\n"  5846           "are NaN-initialized. That is, this methods needs to be called\n"  5847           "BEFORE other WSMs that provide input to *DoitCalc*, e.g. before\n"  5848           "*DoitGetIncoming*.\n"),
  5850       OUT(
"doit_scat_field", 
"cloudbox_field", 
"doit_is_initialized"),
  5859          "doit_za_grid_size",
  5868       NAME(
"DoitScatteringDataPrepare"),
  5870           "Prepares single scattering data for a DOIT scattering calculation.\n"  5872           "First the scattering data is interpolated in frequency using\n"  5873           "*scat_data_monoCalc*. Then the phase matrix data is\n"  5874           "transformed or interpolated from the raw data to the laboratory frame\n"  5875           "for all possible combinations of the angles contained in the angular\n"  5876           "grids which are set in *DOAngularGridsSet*. The resulting phase\n"  5877           "matrices are stored in *pha_mat_sptDOITOpt*.\n"),
  5879       OUT(
"pha_mat_sptDOITOpt", 
"scat_data_mono", 
"pha_mat_doit", 
"aa_grid"),
  5883       IN(
"doit_za_grid_size",
  5886          "scat_data_checked",
  5893          "pha_mat_spt_agenda"),
  5900       NAME(
"DoitWriteIterationFields"),
  5902           "Writes DOIT iteration fields.\n"  5904           "This method writes intermediate iteration fields to xml-files. The\n"  5905           "method can be used as a part of *doit_conv_test_agenda*.\n"  5907           "The iterations to be stored are specified by *iterations*, e.g.:\n"  5908           "    iterations = [3, 6, 9]\n"  5909           "In this case the 3rd, 6th and 9th iterations are stored.\n"  5910           "If a number is larger than the total number of iterations, this\n"  5911           "number is ignored. If all iterations should be stored set\n"  5912           "   iterations = [-1]\n"  5914           "The frequencies to be stored are specified by *frequencies* in the\n"  5915           "same way as the iterations. The frequency index corresponds to the\n"  5916           "order of frequencies in *f_grid*.\n"  5918           "The output files are named doit_iteration_fX_iY.xml with X being the\n"  5919           "frequency index and iY the iteration counter.\n"),
  5925       IN(
"doit_iteration_counter", 
"cloudbox_field_mono", 
"f_index"),
  5926       GIN(
"iterations", 
"frequencies"),
  5927       GIN_TYPE(
"ArrayOfIndex", 
"ArrayOfIndex"),
  5929       GIN_DESC(
"Selection of iterations to store.",
  5930                "Selection of frequencies to store.")));
  5933       NAME(
"doit_conv_flagAbs"),
  5935           "DOIT convergence test (maximum absolute difference).\n"  5937           "The function calculates the absolute differences for two successive\n"  5938           "iteration fields. It picks out the maximum values for each Stokes\n"  5939           "component separately. The convergence test is fullfilled under the\n"  5940           "following conditions:\n"  5941           "   |I(m+1) - I(m)| < epsilon_1     Intensity.\n"  5942           "   |Q(m+1) - Q(m)| < epsilon_2     The other Stokes components.\n"  5943           "   |U(m+1) - U(m)| < epsilon_3   \n"  5944           "   |V(m+1) - V(m)| < epsilon_4   \n"  5945           "These conditions have to be valid for all positions in the\n"  5946           "cloudbox and for all directions.\n"),
  5948       OUT(
"doit_conv_flag", 
"doit_iteration_counter", 
"cloudbox_field_mono"),
  5952       IN(
"doit_conv_flag",
  5953          "doit_iteration_counter",
  5954          "cloudbox_field_mono",
  5955          "cloudbox_field_mono_old"),
  5956       GIN(
"epsilon", 
"max_iterations", 
"nonconv_return_nan"),
  5957       GIN_TYPE(
"Vector", 
"Index", 
"Index"),
  5959       GIN_DESC(
"Limits for convergence. A vector with length matching "  5960                "*stokes_dim* with unit [W / (m^2 Hz sr)].",
  5961                "Maximum number of iterations allowed to reach convergence"  5963                "Flag whether to accept result at max_iterations (0=default)"  5964                "or whether to return NaNs in case of non-convergence at"  5965                "max_iterations")));
  5968       NAME(
"doit_conv_flagAbsBT"),
  5970           "DOIT convergence test (maximum absolute difference in Rayleigh Jeans "  5973           "As *doit_conv_flagAbs* but convergence limits are specified in\n"  5974           "Rayleigh-Jeans brighntess temperatures.\n"),
  5975       AUTHORS(
"Sreerekha T.R.", 
"Claudia Emde"),
  5976       OUT(
"doit_conv_flag", 
"doit_iteration_counter", 
"cloudbox_field_mono"),
  5980       IN(
"doit_conv_flag",
  5981          "doit_iteration_counter",
  5982          "cloudbox_field_mono",
  5983          "cloudbox_field_mono_old",
  5986       GIN(
"epsilon", 
"max_iterations", 
"nonconv_return_nan"),
  5987       GIN_TYPE(
"Vector", 
"Index", 
"Index"),
  5989       GIN_DESC(
"Limits for convergence. A vector with length matching "  5990                "*stokes_dim* with unit [K].",
  5991                "Maximum number of iterations allowed to reach convergence"  5993                "Flag whether to accept result at max_iterations (0=default)"  5994                "or whether to return NaNs in case of non-convergence at"  5995                "max_iterations")));
  5998       NAME(
"doit_conv_flagLsq"),
  6000           "DOIT convergence test (least squares).\n"  6002           "As *doit_conv_flagAbsBT* but applies a least squares convergence\n"  6003           "test between two successive iteration fields.\n"  6005           "Warning: This method is not recommended because this kind of\n"  6006           "convergence test is not sufficiently strict, so that the\n"  6007           "DOIT result might be wrong.\n"),
  6009       OUT(
"doit_conv_flag", 
"doit_iteration_counter", 
"cloudbox_field_mono"),
  6013       IN(
"doit_conv_flag",
  6014          "doit_iteration_counter",
  6015          "cloudbox_field_mono",
  6016          "cloudbox_field_mono_old",
  6019       GIN(
"epsilon", 
"max_iterations", 
"nonconv_return_nan"),
  6020       GIN_TYPE(
"Vector", 
"Index", 
"Index"),
  6022       GIN_DESC(
"Limits for convergence. A vector with length matching "  6023                "*stokes_dim* with unit [K].",
  6024                "Maximum number of iterations allowed to reach convergence"  6026                "Flag whether to accept result at max_iterations (0=default)"  6027                "or whether to return NaNs in case of non-convergence at"  6028                "max_iterations")));
  6031       NAME(
"OptimizeDoitPressureGrid"),
  6033           "Optimization of the pressure grid for RT calculation.\n"  6034           "The methods consists of three parts:\n"  6035           "1) Calculate the single scattering albedo and the scattering optical"  6036           "thickness from the scattering and absorption species. \n"  6037           "2) Enhance z_field according to the two thresholds sgl_alb_max and tau_scat_max."  6038           "If the resulting cloudbox size is bigger than cloudbox_size_max, this step is \n"  6039           "repeated with a higher threshold of tau_scat_max. \n"  6040           "3) Interpolate all variables used in doit_mono_agenda to the new z_field \n"  6041           "This method should be called inside\n"  6042           "*doit_mono_agenda*, right before *cloudbox_field_monoIterate*. It can \n"  6043           "only be used if *ScatSpeciesMerge* has been called and if it is\n"  6044           "called, *cloudbox_field_monoOptimizeReverse* has to be\n"  6045           "called right after *cloudbox_field_monoIterate* to interpolate\n"  6046           "*cloudbox_field_mono* back to the original size.\n"  6047           "Optimization currently only works with *stokes_dim* = 1 .\n"),
  6055           "cloudbox_field_mono",
  6068          "cloudbox_field_mono",
  6073          "propmat_clearsky_agenda"),
  6074       GIN(
"tau_scat_max", 
"sgl_alb_max", 
"cloudbox_size_max"),
  6075       GIN_TYPE(
"Numeric", 
"Numeric", 
"Index"),
  6077       GIN_DESC(
"Maximum scattering optical thickness",
  6078                "Maximum single scattering albedo",
  6079                "Maximum cloudbox size")));
  6082       NAME(
"doit_scat_fieldCalc"),
  6084           "Calculates the scattering integral field in the DOIT module.\n"  6086           "The scattering integral field is generated by integrating\n"  6087           "the product of phase matrix and Stokes vector over all incident\n"  6088           "angles. For more information please refer to AUG.\n"),
  6089       AUTHORS(
"Sreerekha T.R.", 
"Claudia Emde"),
  6090       OUT(
"doit_scat_field"),
  6094       IN(
"doit_scat_field",
  6095          "pha_mat_spt_agenda",
  6096          "cloudbox_field_mono",
  6103          "doit_za_grid_size",
  6111       NAME(
"doit_scat_fieldCalcLimb"),
  6113           "Calculates the scattering integral field in the DOIT module (limb).\n"  6115           "The scattering integral field is the field generated by integrating\n"  6116           "the product of phase matrix and the Stokes vector over all incident\n"  6119           "For limb simulations it makes sense to use different\n"  6120           "zenith angle grids for the scattering integral part and the RT part,\n"  6121           "because the latter part requires a much finer resolution near\n"  6122           "90 degrees. Taking an optimized grid for the RT part and an equidistant\n"  6123           "grid for the scattering integral part saves very much CPU time.\n"  6124           "This method uses the equidistant za_grid defined in\n"  6125           "*DOAngularGridsSet* and it should always be used for limb\n"  6128           "For more information please refer to AUG.\n"),
  6130       OUT(
"doit_scat_field"),
  6134       IN(
"doit_scat_field",
  6135          "pha_mat_spt_agenda",
  6136          "cloudbox_field_mono",
  6143          "doit_za_grid_size",
  6152       NAME(
"doit_za_grid_optCalc"),
  6154           "Zenith angle grid optimization for scattering calculation.\n"  6156           "This method optimizes the zenith angle grid. As input it requires\n"  6157           "a radiation field (*cloudbox_field*) which is calculated on a very\n"  6158           "fine zenith angle grid (*za_grid*). Based on this field\n"  6159           "zenith angle grid points are selected, such that the maximum\n"  6160           "difference between the radiation field represented on the very\n"  6161           "fine zenith angle grid and the radiation field represented on the\n"  6162           "optimized grid (*doit_za_grid_opt*) is less than the accuracy\n"  6163           "(*acc*). Between the grid points the radiation field is interpolated\n"  6164           "linearly or polynomially depending on *doit_za_interp*.\n"  6166           "Note: The method works only for a 1D atmosphere and for one\n"  6169       OUT(
"doit_za_grid_opt"),
  6173       IN(
"cloudbox_field_mono", 
"za_grid", 
"doit_za_interp"),
  6177       GIN_DESC(
"Accuracy to achieve [%].")));
  6180       NAME(
"doit_za_interpSet"),
  6182           "Define interpolation method for zenith angle dimension.\n"  6184           "You can use this method to choose the interpolation method for\n"  6185           "interpolations in the zenith angle dimension.\n"),
  6187       OUT(
"doit_za_interp"),
  6191       IN(
"atmosphere_dim"),
  6192       GIN(
"interp_method"),
  6195       GIN_DESC(
"Interpolation method (\"linear\" or \"polynomial\").")));
  6199       DESCRIPTION(
"Sets the seconds between two times.\n"),
  6204       GOUT_DESC(
"Time in seconds between *start* and *end*"),
  6206       GIN(
"start", 
"end"),
  6209       GIN_DESC(
"Start time", 
"End time")));
  6212     NAME(
"EnergyLevelMapSet"),
  6228           "Issues an error and exits ARTS.\n"  6230           "This method can be placed in agendas that must be specified, but\n"  6231           "are expected not to be used for the particular case. An inclusion\n"  6232           "in *surface_rtprop_agenda* could look like:\n   "  6233           "Error{\"Surface interceptions of propagation path not expected.\"}\n"  6235           "Ignore and other dummy method calls must still be included.\n"),
  6245       GIN_DESC(
"String describing the error.")));
  6250           "Stops the execution and exits ARTS.\n"  6252           "This method is handy if you want to debug one of your control\n"  6253           "files. You can insert it anywhere in the control file. When\n"  6254           "it is reached, it will terminate the program.\n"),
  6269           "Extracts an element from an array.\n"  6271           "Copies the element with the given Index from the input\n"  6272           "variable to the output variable.\n"  6274           "For a Tensor3 as an input, it copies the page with the given\n"  6275           "Index from the input Tensor3 variable to the output Matrix.\n"  6277           "In other words, the selection is always done on the first dimension.\n"),
  6281       GOUT_TYPE(
"Index, ArrayOfIndex, Numeric, Vector,"  6283                 "Tensor3, Tensor4, Tensor4,"  6284                 "GriddedField3, ArrayOfGriddedField3,"  6285                 "GriddedField4, String,"  6286                 "SingleScatteringData, ArrayOfSingleScatteringData,"  6288                 "QuantumIdentifier"),
  6291       GIN(
"haystack", 
"index"),
  6292       GIN_TYPE(
"ArrayOfIndex, ArrayOfArrayOfIndex, Vector, ArrayOfVector,"  6293                "ArrayOfMatrix, Tensor3,"  6294                "Tensor4, ArrayOfTensor4, Tensor5,"  6295                "ArrayOfGriddedField3, ArrayOfArrayOfGriddedField3,"  6296                "ArrayOfGriddedField4, ArrayOfString,"  6297                "ArrayOfSingleScatteringData,"  6298                "ArrayOfArrayOfSingleScatteringData,"  6299                "ArrayOfTelsemAtlas,"  6300                "ArrayOfQuantumIdentifier",
  6303       GIN_DESC(
"Variable to extract from.",
  6304                "Position of the element which should be extracted."),
  6310       NAME(
"ExtractFromMetaSingleScatSpecies"),
  6312           "Extract (numeric) parameters from scat_meta of a single scattering\n"  6320       GOUT_DESC(
"The extracted meta parameter values."),
  6322       GIN(
"meta_name", 
"scat_species_index"),
  6325       GIN_DESC(
"Name of the meta parameter to extract.",
  6326                "Array index of scattering species from which to extract.")));
  6329       NAME(
"ext_matAddGas"),
  6331           "Add gas absorption to all diagonal elements of extinction matrix.\n"  6333           "The task of this method is to sum up the gas absorption of the\n"  6334           "different gas species and add the result to the extinction matrix.\n"),
  6340       IN(
"ext_mat", 
"propmat_clearsky"),
  6347       NAME(
"FastemStandAlone"),
  6349           "Stand-alone usage of FASTEM.\n"  6351           "FASTEM is a parameterisation of the emissivity of water surfaces\n"  6352           "including the impact of waves, salinity and non-specular effects.\n"  6353           "This is more or less direct interface to FASTEM, but slightly\n"  6354           "adopted to fit with ARTS. The unit of frequency and salinity\n"  6355           "differ, and this version is \"vectorised\" in frequency.\n"  6357           "The output is four emissivity and reflectivity values for each\n"  6358           "frequency. These values are defined in Eq. 13 of  \"An Improved\n"  6359           "Fast Microwave Water Emissivity Model\" by Liu, Weng and English,\n"  6360           "I3TRGS, 2011. Note that emissivity and reflectivity do not add up\n"  6361           "to 1, which is the way FASTEM compensates for non-specular effects.\n"  6363           "There is an error if any frequency is above 250 GHz, or if the skin\n"  6364           "temperature is below 260 K. If the skin temperature is below 270 K,\n"  6365           "it is adjusted to 270 K.\n"  6367           "FASTEM returns unphysical values for propagation close to the\n"  6368           "horizon, here emissivity and reflectivity can be outside [0,1].\n"  6369           "If either emissivity or reflectivity is below/above 0/1, it is\n"  6370           "set to 0/1, and the other value is set to 1/0. That is, e+r=1\n"  6371           "is enforced. These problems start about 15 degrees from the horizon.\n"),
  6372       AUTHORS(
"Oliver Lemke, Patrick Eriksson"),
  6374       GOUT(
"emissivity", 
"reflectivity"),
  6376       GOUT_DESC(
"Emission values. One row for each frequency. See above.",
  6377                 "Reflectivity values. One row for each frequency. See above."),
  6378       IN(
"f_grid", 
"surface_skin_t"),
  6385       GIN_TYPE(
"Numeric", 
"Numeric", 
"Numeric", 
"Numeric", 
"Vector", 
"Index"),
  6387       GIN_DESC(
"Zenith angle of line-of-sigh, 90 to 180 deg.",
  6388                "Salinity, 0-1. That is, 3% is given as 0.03.",
  6390                "Azimuth angle between wind direction and line-of-sight. "  6391                "This angle is measured clockwise from north, i.e. E=90deg.",
  6392                "The transmission of the atmosphere, along the propagation "  6393                "path of the downwelling radiation. One value per frequency.",
  6394                "The version of FASTEM to use.")));
  6397       NAME(
"FieldFromGriddedField"),
  6398       DESCRIPTION(
"Extract the data from a GriddedField.\n"  6400                   "A check is performed that the grids from the\n"  6401                   "GriddedField match *p_grid*, *lat_grid* and *lon_grid*.\n"),
  6405       GOUT_TYPE(
"Matrix, Tensor3, Tensor4, Tensor4"),
  6407       IN(
"p_grid", 
"lat_grid", 
"lon_grid"),
  6410           "GriddedField2, GriddedField3, GriddedField4, ArrayOfGriddedField3"),
  6412       GIN_DESC(
"Raw input gridded field.")));
  6416       DESCRIPTION(
"Sets an index variable that acts as an on/off flag to 0.\n"),
  6430       DESCRIPTION(
"Sets an index variable that acts as an on/off flag to 1.\n"),
  6444       DESCRIPTION(
"Flattens an ArrayOfArray<T> to Array<T> or an Array\n"  6445         "of matpack-types to a larger dimension matpack (if dimensions agree)\n"  6447         "The intended transformation for arrays is (sub-arrays can have different sizes):\n"  6448         "    {{a, b, c}, {d, e}} -> {a, b, c, d, e}\n"  6450         "The intended transformation for arrays to matpack types is (sub-types must have same size):\n"  6451         "    {{a, b, c}, {d, e, f}} -> {a, b, c, d, e, f}\n"),
  6455       GOUT_TYPE(
"ArrayOfTime,ArrayOfVector,Matrix,Tensor3,Tensor4,Tensor5,Tensor6,Tensor7"),
  6456       GOUT_DESC(
"Flatter array/matpack-type"),
  6459       GIN_TYPE(
"ArrayOfArrayOfTime,ArrayOfArrayOfVector,ArrayOfVector,ArrayOfMatrix,ArrayOfTensor3,ArrayOfTensor4,ArrayOfTensor5,ArrayOfTensor6"),
  6466           "A simple for-loop.\n"  6468           "This method is handy when you quickly want to test out a calculation\n"  6469           "with a set of different settings.\n"  6471           "It does a for-loop from start to stop in steps of step (who would\n"  6472           "have guessed that). For each iteration, the agenda *forloop_agenda* is\n"  6473           "executed. Inside the agenda, the variable *forloop_index* is available\n"  6474           "as index counter.\n"  6476           "There are no other inputs to *forloop_agenda*, and also no outputs. That\n"  6477           "means, if you want to get any results out of this loop, you have to\n"  6478           "save it to files (for example with *WriteXMLIndexed*), since\n"  6479           "variables used inside the agenda will only be local.\n"  6481           "Note that this kind of for loop is not parallel.\n"  6483           "The method is intended for simple testing, not as a replacement of\n"  6484           "*ybatchCalc*. However, it is compatible with *ybatchCalc*, in the sense\n"  6485           "that *ybatchCalc* may occur inside *forloop_agenda*.\n"),
  6491       IN(
"forloop_agenda"),
  6492       GIN(
"start", 
"stop", 
"step"),
  6493       GIN_TYPE(
"Index", 
"Index", 
"Index"),
  6495       GIN_DESC(
"Start value.", 
"End value.", 
"Step size.")));
  6498       NAME(
"FrequencyFromWavelength"),
  6500           "Convert from wavelength [m] to frequency [Hz].\n"  6502           "This is a generic method. It can take a single wavelength value or a wavelength vector as input.\n"),
  6515       NAME(
"FrequencyFromCGSAngularWavenumber"),
  6517           "Convert from angular wavenumber [cm^-1] to frequency [Hz].\n"  6519           "This converts angular wavenumber (2*PI/wavelength) into frequency.\n"),
  6526       GIN(
"angular_wavenumber"),
  6529       GIN_DESC(
"angular wavenumber [cm^-1]")));
  6532       NAME(
"FrequencyFromCGSKayserWavenumber"),
  6534           "Convert from Kayser wavenumber [cm^-1] to frequency [Hz].\n"  6536           "This converts Kayser wavenumber (1/wavelength) into frequency.\n"),
  6543       GIN(
"kayser_wavenumber"),
  6546       GIN_DESC(
"Kayser wavenumber [cm^-1]")));
  6549       NAME(
"f_gridFromAbsorptionLines"),
  6550       DESCRIPTION(
"Sets *f_grid* to a grid relative to *abs_lines_per_species*\n"  6552                   "Each line will have *abs_lines_per_species* will have a grid\n"  6553                   "of *num_freqs* grid points in [f0+*delta_f_low*, f0+*delta_f_upp*],\n"  6554                   "where f0 is the line center.\n"  6556                   "Before leaving the function, *f_grid* is sorted.\n"  6558                   "Note that this method could generate significantly large *f_grid*\n"  6559                   "if used carelessly\n"),
  6565       IN(
"abs_lines_per_species"),
  6566       GIN(
"delta_f_low", 
"delta_f_upp", 
"num_freqs"),
  6567       GIN_TYPE(
"Numeric", 
"Numeric", 
"Index"),
  6570                "Upper range of delta f",
  6571                "Number of frequencies")));
  6574       NAME(
"f_gridFromGasAbsLookup"),
  6576           "Sets *f_grid* to the frequency grid of *abs_lookup*.\n"  6578           "Must be called between importing/creating raw absorption table and\n"  6579           "call of *abs_lookupAdapt*.\n"),
  6592       NAME(
"f_gridFromSensorAMSU"),
  6594           "Automatically calculate f_grid to match the sensor.\n"  6596           "This method is handy if you are simulating an AMSU-type instrument,\n"  6597           "consisting of a few discrete channels. The case that channels touch,\n"  6598           "as for MHS, is handled correctly. But the case that channels overlap\n"  6599           "is not (yet) handled and results in an error message.\n"  6601           "The method calculates *f_grid* to match the instrument, as given by\n"  6602           "the local oscillator frequencies *lo_multi*, the backend\n"  6603           "frequencies *f_backend_multi*, and the backend channel\n"  6604           "responses *backend_channel_response_multi*.\n"  6606           "You have to specify the desired spacing in the keyword *spacing*,\n"  6607           "which has a default value of 100 MHz. (The actual value is 0.1e9,\n"  6608           "since our unit is Hz.)\n"  6610           "The produced grid will not have exactly the requested spacing, but\n"  6611           "will not be coarser than requested. The algorithm starts with the band\n"  6612           "edges, then adds additional points until the spacing is at least as\n"  6613           "fine as requested.\n"  6615           "There is a similar method for HIRS-type instruments,\n"  6616           "see *f_gridFromSensorHIRS*.\n"),
  6617       AUTHORS(
"Stefan Buehler, Mathias Milz"),
  6622       IN(
"lo_multi", 
"f_backend_multi", 
"backend_channel_response_multi"),
  6626       GIN_DESC(
"Desired grid spacing in Hz.")));
  6629       NAME(
"f_gridFromSensorAMSUgeneric"),
  6631           "Automatcially calculate f_grid to match the sensor. \n"  6632           "This function is based on 'f_gridFromSensorAMSU' \n"  6634           "The method calculates *f_grid* to match the instrument, as given by\n"  6635           "the backend frequencies *f_backend*, and the backend channel\n"  6636           "responses *backend_channel_response*.\n"  6638           "You have to specify the desired spacing in the keyword *spacing*,\n"  6639           "which has a default value of 100 MHz. (The actual value is 0.1e9,\n"  6640           "since our unit is Hz.)"  6642           "The produced grid will not have exactly the requested spacing, but\n"  6643           "it will not be coarser than requested. The algorithm starts with the band\n"  6644           "edges, then adds additional points until the spacing is at least as\n"  6645           "fine as requested.\n"),
  6651       IN(
"f_backend_multi", 
"backend_channel_response_multi"),
  6652       GIN(
"spacing", 
"verbosityVect"),
  6655       GIN_DESC(
"Desired grid spacing in Hz.", 
"Bandwidth adjusted spacing")));
  6658       NAME(
"f_gridFromSensorHIRS"),
  6660           "Automatically calculate f_grid to match the sensor.\n"  6662           "This method is handy if you are simulating a HIRS-type instrument,\n"  6663           "consisting of a few discrete channels.\n"  6665           "It calculates f_grid to match the instrument, as given by the nominal\n"  6666           "band frequencies *f_backend* and the spectral channel response\n"  6667           "functions given by *backend_channel_response*.\n"  6669           "You have to specify the desired spacing in the keyword *spacing*, which\n"  6670           "has a default value of 5e8 Hz.\n"  6672           "The produced grid will not have exactly the requested spacing, but\n"  6673           "will not be coarser than requested. The algorithm starts with the band\n"  6674           "edges, then adds additional points until the spacing is at least as\n"  6675           "fine as requested.\n"  6677           "There is a similar method for AMSU-type instruments, see\n"  6678           "*f_gridFromSensorAMSU*.\n"),
  6684       IN(
"f_backend", 
"backend_channel_response"),
  6688       GIN_DESC(
"Desired grid spacing in Hz.")));
  6691       NAME(
"f_gridMetMM"),
  6693           "Sets *f_grid* and associated variables match MetMM settings.\n"  6695           "The method calculates *f_grid* to match the specifications of a\n"  6696           "*met_mm_backend* table and method arguments.\n"  6698           "You have to specify the desired spacing using the keyword *freq_spacing*.\n"  6699           "You can pass a *Vector* with one element to apply the same spacing to all\n"  6700           "channels or pass a spacing value for each channel separately.\n"  6702           "Optionally, *freq_number* can be set to specify the mininum number of\n"  6703           "frequencies per passband for each channel. The frequencies are placed\n"  6704           "equally spaced in each passband. The minimum spacing resulting from\n"  6705           "*freq_number* and *freq_spacing* will be used for the calculation. To\n"  6706           "explicitly use *freq_spacing* for a channel, *freq_number* can be set\n"  6707           "to -1 for this channel.\n"  6709           "The number of elements in *freq_number* can either be the number of\n"  6710           "channels or 1. If only one element is given, this number is used for\n"  6711           "all channels. If *freq_number* is 1 and *freq_spacing* is wider than\n"  6712           "the bandwidth of the channel, one frequency is placed in the middle of\n"  6715           "Frequencies that would be closer than *freq_merge_threshold* in the\n"  6716           "generated *f_grid* are merged together. This value should be left at\n"  6717           "the default value. This is only meant to compensate for numerical\n"  6718           "inaccuracies in the frequency calculation to merge frequency that are\n"  6719           "supposed to be identical.\n"),
  6720       AUTHORS(
"Oliver Lemke", 
"Patrick Eriksson"),
  6723           "channel2fgrid_indexes",
  6724           "channel2fgrid_weights"),
  6728       IN(
"met_mm_backend"),
  6729       GIN(
"freq_spacing", 
"freq_number", 
"freq_merge_threshold"),
  6730       GIN_TYPE(
"Vector", 
"ArrayOfIndex", 
"Numeric"),
  6732       GIN_DESC(
"Desired grid spacing in Hz.",
  6733                "Number of frequencies per passband for each channel.",
  6734                "Merge frequencies that are closer than this value in Hz.")));
  6739           "Gravity at zero altitude on Earth.\n"  6741           "Sets *g0* for the given latitude using a standard parameterisation.\n"),
  6756                                              "Numeric from Wikipedia.\n"),
  6771           "Gravity at zero altitude on Jupiter.\n"  6773           "Sets *g0*  to mean equatorial gravity on Jupiter. Value provided by\n"  6774           "MPS under ESA-planetary study (TN1).\n"),
  6789           "Gravity at zero altitude on Mars.\n"  6791           "Sets *g0*  to mean equatorial gravity on Mars. Value provided by\n"  6792           "MPS under ESA-planetary study (TN1).\n"),
  6807           "Gravity at zero altitude on Venus.\n"  6809           "Sets *g0*  to mean equatorial gravity on Venus. Value from Ahrens\n"  6810           "(1995), provided by MPS under ESA-planetary study (TN1).\n"),
  6823       NAME(
"geo_posEndOfPpath"),
  6824       DESCRIPTION(
"Sets geo-position based on *ppath*.\n"  6826                   "The geo-position is set to the position of the last point\n"  6827                   "of the present propagation path. This will be the surface,\n"  6828                   "top-of-the atmosphere or cloudbox position, depending of\n"  6829                   "observation geometry and if the cloudbox is active.\n"),
  6842       NAME(
"geo_posLowestAltitudeOfPpath"),
  6844           "Sets geo-position based on *ppath*.\n"  6846           "The geo-position is set to the position of the last point\n"  6847           "of the present propagation path having the lowest altitude.\n"),
  6860       NAME(
"geo_posWherePpathPassesZref"),
  6862           "Sets geo-position based on *ppath*.\n"  6864           "The geo-position is set to the position where the propagation\n"  6865           "path passes the reference altitude. If this altitude is passes\n"  6866           "more than once, the passing closest to the sensor is selected.\n"  6867           "If the reference altitude is not passed at all, *geo_pos* is\n"  6881       NAME(
"GetEnvironmentVariable"),
  6883           "Copy the contents of an environment variable to an ARTS String or Index.\n"),
  6888       GOUT_DESC(
"Contents of environment variable."),
  6893       GIN_DESC(
"Name of environment variable.")));
  6897                DESCRIPTION(
"Returns the number of threads used by ARTS.\n"),
  6913                            "See *ArrayOfGriddedFieldGetNames*.\n"),
  6920                GIN(
"griddedfield"),
  6921                GIN_TYPE(
"GriddedField1, GriddedField2, GriddedField3, "  6922                         "GriddedField4, GriddedField5, GriddedField6 "),
  6930       NAME(
"GriddedFieldLatLonExpand"),
  6932           "Expands the latitude and longitude grid of the GriddedField to\n"  6933           "[-90, 90] and [0,360], respectively. Expansion is only done in\n"  6934           "the dimension(s), where the grid size is 1.\n"  6935           "The values from the input data will be duplicated to accomodate\n"  6936           "for the larger size of the output field.\n"  6937           "gfield_raw_out and gfield_raw_in can be the same variable.\n"),
  6942           "GriddedField2, GriddedField3, GriddedField4, ArrayOfGriddedField3"),
  6947           "GriddedField2, GriddedField3, GriddedField4, ArrayOfGriddedField3"),
  6949       GIN_DESC(
"Raw input gridded field.")));
  6952       NAME(
"GriddedFieldLatLonRegrid"),
  6954           "Interpolates the input field along the latitude and longitude dimensions\n"  6955           "to *lat_true* and *lon_true*.\n"  6957           "If the input longitude grid is outside of *lon_true* it will be shifted\n"  6958           "left or right by 360. If it covers 360 degrees, a cyclic interpolation\n"  6959           "will be performed.\n"  6960           "in and out fields can be the same variable.\n"),
  6965           "GriddedField2, GriddedField3, GriddedField4, ArrayOfGriddedField3"),
  6967       IN(
"lat_true", 
"lon_true"),
  6968       GIN(
"in", 
"interp_order"),
  6970           "GriddedField2, GriddedField3, GriddedField4, ArrayOfGriddedField3",
  6973       GIN_DESC(
"Raw input gridded field.", 
"Interpolation order.")));
  6976       NAME(
"GriddedFieldPRegrid"),
  6978           "Interpolates the input field along the pressure dimension to *p_grid*.\n"  6980           "If zero-padding is applied (zeropadding=1), pressures that are\n"  6981           "outside the *p_grid* are set to 0. This is thought, e.g., for VMR\n"  6982           "fields that outside the given pressure can safely be assumed to be\n"  6984           "Note: Using zeropadding for altitude and temperature fields is\n"  6985           "strongly discouraged (it will work here, though, but likely trigger\n"  6986           "errors later on).\n"  6987           "Extrapolation is allowed within the common 0.5grid-step margin,\n"  6988           "but is overruled by zeropadding.\n"  6989           "in and out fields can be the same variable.\n"),
  6993       GOUT_TYPE(
"GriddedField3, GriddedField4, ArrayOfGriddedField3"),
  6996       GIN(
"in", 
"interp_order", 
"zeropadding"),
  6997       GIN_TYPE(
"GriddedField3, GriddedField4, ArrayOfGriddedField3",
  7001       GIN_DESC(
"Raw input gridded field.",
  7002                "Interpolation order.",
  7003                "Apply zero-padding.")));
  7006       NAME(
"GriddedFieldZToPRegrid"),
  7008           "Interpolates the input field along the vertical dimension to *p_grid*.\n"  7010           "This is done from z_field, and thus requires the atmosphere to be set \n"  7013           "The latitude and longitude grid of the input field must match *lat_grid*\n"  7014           "and *lon_grid* for the method to work.\n"  7021       GOUT_DESC(
"Regridded output; Pressure-gridded field."),
  7022       IN(
"p_grid", 
"lat_grid", 
"lon_grid", 
"z_field"),
  7023       GIN(
"in", 
"interp_order", 
"zeropadding"),
  7024       GIN_TYPE(
"GriddedField3", 
"Index", 
"Index"),
  7026       GIN_DESC(
"Raw input; Altitude-gridded field.",
  7027                "Interpolation order.",
  7028                "Apply zero-padding.")));
  7030       NAME(
"heating_ratesFromIrradiance"),
  7032           "Calculates heating rates. It assumes that the heating rates\n"  7033           "depend only on the vertical derivation of the net flux.\n"  7034           "The net flux is the sum of the irradiance field in upward \n"  7035           " direction and the irradiance field in downward direction\n"),
  7037       OUT(
"heating_rates"),
  7041       IN(
"p_grid", 
"irradiance_field", 
"specific_heat_capacity", 
"g0"),
  7050           "Ignore a workspace variable.\n"  7052           "This method is handy for use in agendas in order to suppress warnings\n"  7053           "about unused input workspace variables. What it does is: Nothing!\n"  7054           "In other words, it just ignores the variable it is called on.\n"  7056           "This method can ignore any workspace variable you want.\n"  7060           "AgendaSet(els_agenda){\n"  7061           "  Ignore(ls_sigma)\n"  7065           "Without Ignore you would get an error message, because 'els_agenda' is\n"  7066           "supposed to use the Doppler width 'ls_sigma', but the Lorentz lineshape\n"  7067           "'elsLorentz' does not need it.\n"),
  7077       GIN_DESC(
"Variable to be ignored."),
  7085           "Includes the contents of another controlfile.\n"  7087           "The INCLUDE statement inserts the contents of the controlfile\n"  7088           "with the given name into the current controlfile.\n"  7089           "If the filename is given without path information, ARTS will\n"  7090           "first search for the file in all directories specified with the\n"  7091           "-I (see arts -h) commandline option and then in directories given\n"  7092           "in the environment variable ARTS_INCLUDE_PATH. In the environment\n"  7093           "variable multiple paths have to be separated by colons.\n"  7095           "Note that INCLUDE is not a workspace method and thus the\n"  7096           "syntax is different:\n"  7099           "  INCLUDE \"general.arts\"\n"  7102           "Includes can also be nested. In the example above general.arts\n"  7103           "can contain further includes which will then be treated\n"  7106           "The idea behind this mechanism is that you can write common settings\n"  7107           "for a bunch of calculations into one file. Then, you can create\n"  7108           "several controlfiles which include the basic settings and tweak them\n"  7109           "for different cases. When you decide to make changes to your setup\n"  7110           "that should apply to all calculations, you only have to make a\n"  7111           "single change in the include file instead of modifying all your\n"  7127           "Adds a index and a value (out = in+value).\n"  7129           "The result can either be stored in the same or another index.\n"  7130           "(in and out can be the same variable, but not out and value)\n"),
  7131       AUTHORS(
"Patrick Eriksson, Oliver Lemke"),
  7140       GIN_DESC(
"Input Index.", 
"Value to add.")));
  7143       NAME(
"IndexNumberOfAtmosphericPoints"),
  7145           "Counts number of points in the atmosphere.\n"  7147           "For a 3D atmosphere the method sets *n* to:\n"  7148           "  p_grid.nelem()*lat_grid.nelem()*lon_grid.nelem()\n"  7149           "For 1D and 2D the same calculation is done, but ignoring dimensions\n"  7155       GOUT_DESC(
"Variable to set with number of points."),
  7156       IN(
"atmosphere_dim", 
"p_grid", 
"lat_grid", 
"lon_grid"),
  7164       DESCRIPTION(
"Sets an index workspace variable to the given value.\n"),
  7178       NAME(
"IndexSetToLast"),
  7180           "Set an Index to point towards last position of array-type variables.\n"  7182           "This method works as nelemGet, but gives the index number of the last\n"  7183           "element (which equals nelem-1).\n"),
  7184       AUTHORS(
"Patrick Eriksson", 
"Oliver Lemke"),
  7191       GIN_TYPE(ARRAY_GROUPS + 
", Vector"),
  7193       GIN_DESC(
"The method is defined for these groups."),
  7202                            "Input and output can be same variable.\n"),
  7212                GIN_DESC(
"Input index variable.")));
  7218                            "Input and output can be same variable.\n"),
  7228                GIN_DESC(
"Input index variable.")));
  7231       NAME(
"InterpAtmFieldToPosition"),
  7232       DESCRIPTION(
"Point interpolation of atmospheric fields.\n"  7234                   "The default way to specify the position is by *rtp_pos*.\n"  7236                   "Linear interpolation is applied.\n"),
  7241       GOUT_DESC(
"Value obtained by the interpolation."),
  7242       IN(
"atmosphere_dim",
  7251       GIN_DESC(
"Field to interpolate.")));
  7254       NAME(
"InterpGriddedField2ToPosition"),
  7256           "Latitude and longitude interpolation of a GriddedField2.\n"  7258           "The default way to specify the position is by *rtp_pos*.\n"  7260           "The interpolation is done for the latitude and longitude in\n"  7261           "*rtp_pos*. The altitude in *rtp_pos* is completely ignored.\n"  7262           "Linear interpolation is applied.\n"  7264           "The input field (*gfield2*) is expected to have latitude and\n"  7265           "longitude as first and second dimension.\n"),
  7270       GOUT_DESC(
"Value obtained by interpolation."),
  7271       IN(
"atmosphere_dim", 
"lat_grid", 
"lat_true", 
"lon_true", 
"rtp_pos"),
  7275       GIN_DESC(
"Gridded field to interpolate.")));
  7278       NAME(
"InterpSurfaceFieldToPosition"),
  7280           "Point interpolation of surface fields.\n"  7282           "The default way to specify the position is by *rtp_pos*.\n"  7284           "Linear interpolation is applied.\n"  7286           "The interpolation is done for the latitude and longitude in\n"  7287           "*rtp_pos*, while the altitude in *rtp_pos* is not part of the\n"  7288           "calculations. However, it is checked that the altitude of *rtp_pos*\n"  7289           "is inside the range covered by *z_surface* with a 1 m margin, to\n"  7290           "give a warning when the specified position is not consistent with\n"  7291           "the surface altitudes.\n"),
  7296       GOUT_DESC(
"Value obtained by interpolation."),
  7297       IN(
"atmosphere_dim", 
"lat_grid", 
"lon_grid", 
"rtp_pos", 
"z_surface"),
  7301       GIN_DESC(
"Field to interpolate.")));
  7304       NAME(
"irradiance_fieldFromRadiance"),
  7306           "Calculate the irradiance also known as flux density from the *radiance_field* .\n"  7307           "by integrating over the angular grids according to the grids set\n"  7308           "by *AngularGridsSetFluxCalc* \n"  7309           "See *AngularGridsSetFluxCalc to set \n"  7310           "*za_grid, aa_grid, and za_grid_weights*\n"),
  7312       OUT(
"irradiance_field"),
  7316       IN(
"radiance_field", 
"za_grid", 
"aa_grid", 
"za_grid_weights"),
  7323       NAME(
"isotopologue_ratiosInitFromBuiltin"),
  7325           "Initialize isotopologue ratios with default values from built-in\n"  7328       OUT(
"isotopologue_ratios"),
  7339       NAME(
"iyActiveSingleScat"),
  7341           "Simulation of radar/lidar, restricted to single scattering.\n"  7343           "The WSM treats e.g. radar measurements of cloud and precipitation,\n"  7344           "on the condition that multiple scattering can be ignored. Beside\n"  7345           "the direct backsacttering, the two-way attenuation by gases and\n"  7346           "particles is considered. Surface scattering is ignored.\n"  7348           "The method could potentially be used for lidars, but multiple\n"  7349           "scattering poses here a must stronger constrain for the range of\n"  7352           "The method can be used with *iyCalc*, but not with *yCalc*. In the\n"  7353           "later case, use instead *yActive*.\n"  7355           "The method returns the backscattering for each point of *ppath*.\n"  7356           "Several frequencies can be treated in parallel. The size of *iy*\n"  7357           "is [ nf*np, stokes_dim ], where nf is the length of *f_grid* and\n"  7358           "np is the number of path points. The data are stored in blocks\n"  7359           "of [ np, stokes_dim ]. That is, all the results for the first\n"  7360           "frequency occupy the np first rows of *iy* etc.\n"  7362           "The polarisation state of the transmitted pulse is taken from\n"  7363           "*iy_transmitter_agenda*. If the radar transmits several polarisations\n"  7364           "at the same frequency, you need to handle this by using two frequencies\n"  7365           "in *f_grid*, but these can be almost identical.\n"  7367           "This method does not consider *iy_unit*. Unit changes are insted applied\n"  7368           "in *yActive. The output of this method matches the option \"1\".\n"  7370           "Transmission is handled in a slightly simplified manner for efficiency\n"  7371           "reasons. First of all, the transmission matrix is assumed to be the same\n"  7372           "in both directions between the sensor and the point of back-scattering.\n"  7373           "This should in general be true, but exceptions could exist. The extinction\n"  7374           "due to particles can also be scaled, which could be of interest when e.g.\n"  7375           "characterising inversions.\n"  7377           "Further, for Jacobian calculations the default is to assume that the\n"  7378           "transmission is unaffected by the retrieval quantities. This is done\n"  7379           "to save computational time, and should be a valid approximation for the\n"  7380           "single-scattering conditions. Set *trans_in_jacobian* to 1 to obtain\n"  7381           "the more accurate Jacobian.\n"  7383           "Some auxiliary radiative transfer quantities can be obtained. Auxiliary\n"  7384           "quantities are selected by *iy_aux_vars* and returned by *iy_aux*.\n"  7385           "Valid choices for auxiliary data are:\n"  7386           " \"Radiative background\": Index value flagging the radiative\n"  7387           "    background. The following coding is used: 0=space, 1=surface\n"  7388           "    and 2=cloudbox.\n"  7389           " \"Backscattering\": The unattenuated backscattering. That is, as\n"  7390           "    *iy* but with no attenuated applied. Here all columns are filled.\n"  7391           " \"Optical depth\": Scalar, total and two-way, optical depth between\n"  7392           "    sensor and each point of the propagation path. Calculated based on\n"  7393           "    the (1,1)-element of the transmission matrix (1-based indexing),\n"  7394           "    i.e. only fully valid for scalar RT.\n"  7395           " \"Particle extinction\": As \"Optical depth\", but only with particle\n"  7396           "    attenuation included. That is, gas absorption is ignored.\n"  7397           "If nothing else is stated, only the first column of *iy_aux* is filled,\n"  7398           "i.e. the column matching Stokes element I, while remaing columns are\n"  7399           "are filled with zeros.\n"),
  7412           "ppvar_trans_cumulat"),
  7437          "scat_data_checked",
  7440          "jacobian_quantities",
  7442          "propmat_clearsky_agenda",
  7443          "water_p_eq_agenda",
  7444          "iy_transmitter_agenda",
  7448       GIN(
"trans_in_jacobian", 
"pext_scaling", 
"t_interp_order"),
  7449       GIN_TYPE(
"Index", 
"Numeric", 
"Index"),
  7451       GIN_DESC(
"Flag determining if change in transmission is considered"  7452                " in calculation of the Jacobian or not.",
  7453                "Particle extinction is scaled with this value. A value"  7454                " inside [0,2]. Set it to 0 if you want to remove particle"  7455                " extinction totally.",
  7456                "Interpolation order of temperature for scattering data (so"  7457                " far only applied in phase matrix, not in extinction and"  7461       NAME(
"iyActiveSingleScat2"),
  7463       AUTHORS(
"Patrick Eriksson", 
"Richard Larsson"),
  7475           "ppvar_trans_cumulat"),
  7500          "scat_data_checked",
  7503          "jacobian_quantities",
  7505          "propmat_clearsky_agenda",
  7506          "water_p_eq_agenda",
  7507          "iy_transmitter_agenda",
  7511       GIN(
"trans_in_jacobian", 
"pext_scaling", 
"t_interp_order"),
  7512       GIN_TYPE(
"Index", 
"Numeric", 
"Index"),
  7514       GIN_DESC(
"Flag determining if change in transmission is considered"  7515                " in calculation of the Jacobian or not.",
  7516                "Particle extinction is scaled with this value. A value"  7517                " inside [0,2]. Set it to 0 if you want to remove particle"  7518                " extinction totally.",
  7519                "Interpolation order of temperature for scattering data (so"  7520                " far only applied in phase matrix, not in extinction and"  7524       NAME(
"iyApplyUnit"),
  7526           "Conversion of *iy* to other spectral units.\n"  7528           "The method allows a change of unit, as a post-processing step,\n"  7529           "ignoring the n2-law of radiance.\n"  7531           "The conversion made inside *iyEmissionStandard* is mimiced,\n"  7532           "see that method for constraints and selection of output units.\n"  7533           "Restricted to that the n2-law can be ignored. This assumption\n"  7534           "is valid if the sensor is placed in space, or if the refractive\n"  7535           "index only deviates slightly from unity.\n"  7537           "It is stressed that there is no automatic check that the method is\n"  7538           "applied correctly, it is up to the user to ensure that the input\n"  7539           "data are suitable for the conversion.\n"  7541           "Beside *iy*, these auxilary quantities are modified:\n"  7542           "    \"iy\", \"Error\" and \"Error (uncorrelated)\"\n"  7544           "Please note that *diy_dx* is not handled.\n"),
  7546       OUT(
"iy", 
"iy_aux"),
  7550       IN(
"iy", 
"iy_aux", 
"stokes_dim", 
"f_grid", 
"iy_aux_vars", 
"iy_unit"),
  7561            "A single monochromatic pencil beam calculation.\n"  7563            "Performs monochromatic radiative transfer calculations for the\n"  7564            "specified position (*rte_pos*) and line-of-sight (*rte_pos*).\n"  7565            "See *iy* and associated variables for format of output.\n"  7567            "Please note that Jacobian type calculations not are supported.\n"  7568            "For this use *yCalc*.\n"  7570            "No sensor characteristics are applied. These are most easily\n"  7571            "incorporated by using *yCalc*\n"),
  7573        OUT(
"iy", 
"iy_aux", 
"ppath"),
  7577        IN(
"atmgeom_checked",
  7578           "atmfields_checked",
  7583           "scat_data_checked",
  7597       NAME(
"iyEmissionStandard"),
  7599           "Standard method for radiative transfer calculations with emission.\n"  7601           "Designed to be part of *iy_main_agenda*. That is, only valid\n"  7602           "outside the cloudbox (no scattering). For details se the user guide.\n"  7604           "The possible choices for *iy_unit* are\n"  7605           " \"1\"             : No conversion, i.e. [W/(m^2 Hz sr)] (radiance per\n"  7606           "                     frequency unit).\n"  7607           " \"RJBT\"          : Conversion to Rayleigh-Jean brightness\n"  7609           " \"PlanckBT\"      : Conversion to Planck brightness temperature.\n"  7610           " \"W/(m^2 m sr)\"  : Conversion to [W/(m^2 m sr)] (radiance per\n"  7611           "                     wavelength unit).\n"  7612           " \"W/(m^2 m-1 sr)\": Conversion to [W/(m^2 m-1 sr)] (radiance per\n"  7613           "                     wavenumber unit).\n"  7614           "Expressions applied and considerations for the unit conversion of\n"  7615           "radiances are discussed in Sec. 5.7 of the ARTS-2.0 article.\n"  7617           "*iy_unit* is only applied if *iy_agenda_call1* is 1. This means that\n"  7618           "no unit ocnversion is applied for internal iterative calls.\n"  7620           "Some auxiliary radiative transfer quantities can be obtained. Auxiliary\n"  7621           "quantities are selected by *iy_aux_vars* and returned by *iy_aux*.\n"  7622           "Valid choices for auxiliary data are:\n"  7623           " \"Radiative background\": Index value flagging the radiative\n"  7624           "    background. The following coding is used: 0=space, 1=surface\n"  7625           "    and 2=cloudbox.\n"  7626           " \"Optical depth\": Scalar optical depth between the observation point\n"  7627           "    and the end of the present propagation path. Calculated based on\n"  7628           "    the (1,1)-element of the transmission matrix (1-based indexing),\n"  7629           "    i.e. only fully valid for scalar RT.\n"  7630           "If nothing else is stated, only the first column of *iy_aux* is filled,\n"  7631           "i.e. the column matching Stokes element I, while remaing columns are\n"  7632           "are filled with zeros.\n"),
  7633       AUTHORS(
"Patrick Eriksson", 
"Richard Larsson", 
"Oliver Lemke"),
  7645           "ppvar_trans_cumulat",
  7646           "ppvar_trans_partial"),
  7670          "jacobian_quantities",
  7673          "propmat_clearsky_agenda",
  7674          "water_p_eq_agenda",
  7677          "iy_surface_agenda",
  7678          "iy_cloudbox_agenda",
  7682          "surface_props_data"),
  7689       NAME(
"iyEmissionStandardSequential"),
  7691           "DEPRECATED! Should go away soon\n"  7692           "Sequential version of *iyEmissionStandard*\n"  7694           "For documentation see *iyEmissionStandard*.\n"),
  7695       AUTHORS(
"Patrick Eriksson", 
"Richard Larsson"),
  7707           "ppvar_trans_cumulat",
  7708           "ppvar_trans_partial"),
  7732          "jacobian_quantities",
  7735          "propmat_clearsky_agenda",
  7736          "water_p_eq_agenda",
  7739          "iy_surface_agenda",
  7740          "iy_cloudbox_agenda",
  7744          "surface_props_data"),
  7835       AUTHORS(
"Patrick Eriksson", 
"Jana Mendrok", 
"Richard Larsson"),
  7848           "ppvar_trans_cumulat"),
  7877          "jacobian_quantities",
  7878          "propmat_clearsky_agenda",
  7879          "water_p_eq_agenda",
  7882          "iy_surface_agenda",
  7883          "iy_cloudbox_agenda",
  7889          "surface_props_data",
  7892       GIN(
"Naa_grid", 
"t_interp_order"),
  7895       GIN_DESC(
"Number of azimuth angles to consider in scattering source term"  7897                "Interpolation order of temperature for scattering data (so"  7898                " far only applied in phase matrix, not in extinction and"  7903       DESCRIPTION(
"So far just for even more testing.\n"),
  7904       AUTHORS(
"Patrick Eriksson", 
"Jana Mendrok", 
"Richard Larsson"),
  7917           "ppvar_trans_cumulat"),
  7946          "jacobian_quantities",
  7947          "propmat_clearsky_agenda",
  7948          "water_p_eq_agenda",
  7951          "iy_surface_agenda",
  7952          "iy_cloudbox_agenda",
  7958          "surface_props_data",
  7961       GIN(
"Naa_grid", 
"t_interp_order"),
  7964       GIN_DESC(
"Number of azimuth angles to consider in scattering source term"  7966                "Interpolation order of temperature for scattering data (so"  7967                " far only applied in phase matrix, not in extinction and"  7971       NAME(
"iyIndependentBeamApproximation"),
  7974                   "Describe how *atm_fields_compact* is filled.\n"),
  7976       OUT(
"iy", 
"iy_aux", 
"ppath", 
"diy_dx", 
"atm_fields_compact"),
  8014          "iy_independent_beam_approx_agenda"),
  8015       GIN(
"return_atm1d", 
"skip_vmr", 
"skip_pnd", 
"return_masses"),
  8016       GIN_TYPE(
"Index", 
"Index", 
"Index", 
"Index"),
  8019           "Flag to trigger that *atm_fields_compact* is filled. ",
  8020           "Flag to not include vmr data in *atm_fields_compact*.",
  8021           "Flag to not include pnd data in *atm_fields_compact*.",
  8022           "Flag to include particle category masses in *atm_fields_compact*."  8023           "Conversion is done by *particle_masses*.")));
  8026       NAME(
"iyInterpCloudboxField"),
  8028           "Interpolates the intensity field of the cloud box.\n"  8030           "Determines the intensity field at the position and direction\n"  8031           "specified by *rte_pos* and *rte_los*. The position can be both\n"  8032           "inside the cloud box or at its edge.\n"  8034           "The interpolation in the spatial dimensions is linear.\n"  8036           "For the zenith angle dimensions several options for controlling\n"  8037           "the interpolation are at hand. Default is linear interpolation.\n"  8038           "Higher order polynomial interpolation is activated by setting\n"  8039           "*za_interp_order* to a value > 1. Default is to perform the\n"  8040           "interpolation separately for [0,90[ and ]90,180]. To handle\n"  8041           "90 degree or use the full range ([0,180]) as basis for the\n"  8042           "interpolation, set *za_restrict* to 0. You can select to use\n"  8043           "cos(za) as the independent variable (instead of za) by setting\n"  8044           "*cos_za_interp* to 1.\n"  8046           "For the azimuth dimension the interpolation order can be\n"  8047           "selected, in the same manner as for zenith.\n"),
  8048       AUTHORS(
"Claudia Emde", 
"Patrick Eriksson", 
"Jana Mendrok"),
  8053       IN(
"cloudbox_field",
  8069       GIN(
"za_interp_order",
  8074       GIN_TYPE(
"Index", 
"Index", 
"Index", 
"Numeric", 
"Index"),
  8076       GIN_DESC(
"Zenith angle interpolation order.",
  8077                "Flag whether to restric zenith angle interpolation to one "  8079                "Flag whether to do zenith angle interpolation in cosine space.",
  8080                "Maximum allowed extrapolation range in zenith angle.",
  8081                "Azimuth angle interpolation order.")));
  8084       NAME(
"iyLoopFrequencies"),
  8086           "Radiative transfer calculations one frequency at the time.\n"  8088           "The method loops the frequencies in *f_grid* and calls\n"  8089           "*iy_loop_freqs_agenda* for each individual value. This method is\n"  8090           "placed in *iy_main_agenda*, and the actual radiative transfer\n"  8091           " method is put in *iy_loop_freqs_agenda*.\n"  8093           "A common justification for using the method should be to consider\n"  8094           "dispersion. By using this method it is ensured that the propagation\n"  8095           "path for each individual frequency is calculated.\n"),
  8097       OUT(
"iy", 
"iy_aux", 
"ppath", 
"diy_dx"),
  8109          "iy_loop_freqs_agenda"),
  8118           "Interface to Monte Carlo part for *iy_main_agenda*.\n"  8120           "Basically an interface to *MCGeneral* for doing monochromatic\n"  8121           "pencil beam calculations. This functions allows Monte Carlo (MC)\n"  8122           "calculations for sets of frequencies and sensor pos/los in a single\n"  8123           "run. Sensor responses can be included in the standard manner\n"  8124           "(through *yCalc*).\n"  8126           "This function does not apply the MC approach when it comes\n"  8127           "to sensor properties. These properties are not considered when\n"  8128           "tracking photons, which is done in *MCGeneral* (but then only for\n"  8129           "the antenna pattern).\n"  8131           "Output unit options  (*iy_unit*) exactly as for *MCGeneral*.\n"  8133           "The MC calculation errors are all assumed be uncorrelated and each\n"  8134           "have a normal distribution. These properties are of relevance when\n"  8135           "weighting the errors with the sensor repsonse matrix. The seed is\n"  8136           "reset for each call of *MCGeneral* to obtain uncorrelated errors.\n"  8138           "MC control arguments (mc_std_err, mc_max_time, mc_min_iter, mc_max_iter\n"  8139           "mc_taustep_limit) as for *MCGeneral*. The arguments are applied\n"  8140           "for each monochromatic pencil beam calculation individually.\n"  8141           "As for *MCGeneral*, the value of *mc_error* shall be adopted to\n"  8144           "The following auxiliary data can be obtained:\n"  8145           "  \"Error (uncorrelated)\": Calculation error. Size: [nf,ns,1,1].\n"  8146           "    (The later part of the text string is required. It is used as\n"  8147           "    a flag to yCalc for how to apply the sensor data.)\n"  8149           "  nf: Number of frequencies.\n"  8150           "  ns: Number of Stokes elements.\n"),
  8152       OUT(
"iy", 
"iy_aux", 
"diy_dx"),
  8156       IN(
"iy_agenda_call1",
  8177          "surface_rtprop_agenda",
  8178          "propmat_clearsky_agenda",
  8179          "ppath_step_agenda",
  8188          "mc_taustep_limit"),
  8189       GIN(
"t_interp_order"),
  8192       GIN_DESC(
"Interpolation order of temperature for scattering data (so"  8193                " far only applied in phase matrix, not in extinction and"  8315       NAME(
"iyReplaceFromAux"),
  8317           "Change of main output variable.\n"  8319           "With this method you can replace the content of *iy* with one of\n"  8320           "the auxiliary variables. The selected variable (by *aux_var*) must\n"  8321           "be part of *iy_aux_vars*. The corresponding data from *iy_aux* are\n"  8322           "copied to form a new *iy* (*iy_aux* is left unchanged). Elements of\n"  8323           "*iy* correponding to Stokes elements not covered by the auxiliary\n"  8324           "variable are just set to zero.\n"  8326           "Jacobian variables are not handled.\n"),
  8332       IN(
"iy", 
"iy_aux", 
"iy_aux_vars", 
"jacobian_do"),
  8336       GIN_DESC(
"Auxiliary variable to insert as *iy*.")));
  8339       NAME(
"iySurfaceCallAgendaX"),
  8341           "Switch between the elements of *iy_surface_agenda_array*.\n"  8343           "This method simply calls the agenda matching *surface_type* and\n"  8344           "returns the results. That is, the agenda in *iy_surface_agenda_array*\n"  8345           "with index *surface_type* (0-based) is called.\n"),
  8347       OUT(
"iy", 
"diy_dx"),
  8362          "iy_surface_agenda_array",
  8364          "surface_type_aux"),
  8371       NAME(
"iySurfaceFastem"),
  8373           "Usage of FASTEM for emissivity and reflectivity of water surfaces.\n"  8375           "This method allows usage of the FASTEM model inside\n"  8376           "*iy_surface_agenda*. The aim is to use FASTEM in the exact same\n"  8377           "way as done in RTTOV. For example, the transmittance for down-\n"  8378           "welling radiation is considered. RTTOV os just 1D. Here 2D and 3D\n"  8379           "are handled as the 1D case, the down-welling radiation is just\n"  8380           "calculated for the directuon matching specular reflection.\n"  8382           "The wind direction is given as the azimuth angle, counted\n"  8383           "clockwise from north (i.e. an easterly wind is at 90 deg).\n"  8384           "This matches the general definition of azimuth inside ARTS.\n"  8385           "For 1D and 2D, the wind direction must be adjusted to match the\n"  8386           "fact that the line-of-sight is locked to be at 0 deg (180 for 2D\n"  8387           "in the case of a negative zenith angle). For 3D, the true wind\n"  8388           "direction shall be used.\n"  8390           "FASTEM is called by *FastemStandAlone*. See that WSM for further\n"  8391           "comments on variables and limitations.\n"),
  8393       OUT(
"iy", 
"diy_dx"),
  8412       GIN(
"salinity", 
"wind_speed", 
"wind_direction", 
"fastem_version"),
  8413       GIN_TYPE(
"Numeric", 
"Numeric", 
"Numeric", 
"Index"),
  8415       GIN_DESC(
"Salinity, 0-1. That is, 3% is given as 0.03.",
  8417                "Wind direction. See further above.",
  8418                "The version of FASTEM to use.")));
  8421       NAME(
"iySurfaceRtpropAgenda"),
  8423           "Interface to *surface_rtprop_agenda* for *iy_surface_agenda*.\n"  8425           "This method is designed to be part of *iy_surface_agenda*. It\n"  8426           "determines the radiative properties of the surface by\n"  8427           "*surface_rtprop_agenda* and calculates the downwelling radiation\n"  8428           "by *iy_main_agenda*, and sums up the terms as described in AUG.\n"  8429           "That is, this WSM uses the output from *surface_rtprop_agenda*\n"  8430           "in a straightforward fashion.\n"),
  8432       OUT(
"iy", 
"diy_dx"),
  8450          "surface_rtprop_agenda"),
  8457       NAME(
"iySurfaceRtpropCalc"),
  8459           "Applies *surface_los*, *surface_rmatrix* and *surface_emission*.\n"  8461           "This method is designed to be part of *iy_surface_agenda* and\n"  8462           "should be mandatory when using methods describing the surface\n"  8463           "radiative transfer properties by *surface_los*, *surface_rmatrix*\n"  8464           "and *surface_emission*. The task of this method is to apply these\n"  8465           "three WSVs to obtain the upwelling radiation from the surface.\n"  8466           "This upwelling radiation is the sum of surface emission and\n"  8467           "reflected downwelling radiation. The later part is calculated\n"  8468           "by calling *iy_main_agenda*. See further AUG.\n"),
  8470       OUT(
"iy", 
"diy_dx"),
  8479          "dsurface_rmatrix_dx",
  8480          "dsurface_emission_dx",
  8484          "jacobian_quantities",
  8501       NAME(
"iyTransmissionStandard"),
  8503           "Standard method for handling transmission measurements.\n"  8505           "Designed to be part of *iy_main_agenda*. Treatment of the cloudbox\n"  8506           "is incorporated (that is, no need to define *iy_cloudbox_agenda*).\n"  8508           "The transmitter is assumed to be placed at the end of provided *ppath*.\n"  8509           "The transmitted signal is taken from *iy_transmitter_agenda*. This\n"  8510           "signal is propagated along the path, considering attenuation alone.\n"  8511           "That is, the result of the method (*iy*) is the output of\n"  8512           "*iy_transmitter_agenda* multiplied with the transmission along the\n"  8513           "propagation path.\n"  8515           "As mentioned, the given *ppath* determines the position of the\n"  8516           "transmitter. For clear-sky and no modification of *ppath*, this\n"  8517           "means that the transitter will either be found at the surface or\n"  8518           "at the top-of-the-atmosphere. If you want to maintain this even with\n"  8519           "an active cloudbox, calculate *ppath* as\n"  8520           "     ppathCalc( cloudbox_on=0 )\n"  8521           "Without setting cloudbox_on=0, the transmitter will end up inside or\n"  8522           "at the boundary of the cloudbox.\n"  8524           "Some auxiliary radiative transfer quantities can be obtained. Auxiliary\n"  8525           "quantities are selected by *iy_aux_vars* and returned by *iy_aux*.\n"  8526           "Valid choices for auxiliary data are:\n"  8527           " \"Radiative background\": Index value flagging the radiative\n"  8528           "    background. The following coding is used: 0=space, 1=surface\n"  8529           "    and 2=cloudbox. The value is added to each column.\n"  8530           " \"Optical depth\": Scalar optical depth between the observation point\n"  8531           "    and the end of the present propagation path. Calculated based on\n"  8532           "    the (1,1)-element of the transmission matrix (1-based indexing),\n"  8533           "    i.e. only fully valid for scalar RT. The value is added to each\n"  8535       AUTHORS(
"Patrick Eriksson", 
"Richard Larsson"),
  8548           "ppvar_trans_cumulat"),
  8575          "jacobian_quantities",
  8577          "propmat_clearsky_agenda",
  8578          "water_p_eq_agenda",
  8579          "iy_transmitter_agenda",
  8589       NAME(
"iy_transmitterMultiplePol"),
  8591           "Transmitted signal having multiple polarisations.\n"  8593           "The method is intended to be part of *iy_transmitter_agenda*. It\n"  8594           "sets *iy* to describe the transmitted signal/pulses. The polarisation\n"  8595           "state is taken from *instrument_pol*, where *instrument_pol* must\n"  8596           "contain an element for each frequency in *f_grid*. The transmitted\n"  8597           "signal/pulses are set to be of unit magnitude, such as [1,1,0,0].\n"),
  8603       IN(
"stokes_dim", 
"f_grid", 
"instrument_pol"),
  8610       NAME(
"iy_transmitterSinglePol"),
  8612           "Transmitted signal having a single polarisations.\n"  8614           "The method is intended to be part of *iy_transmitter_agenda*. It\n"  8615           "sets *iy* to describe the transmitted pulses/signal. The polarisation\n"  8616           "state is taken from *instrument_pol*, where *instrument_pol* must contain\n"  8617           "a single value. This polarisation state is applied for all\n"  8618           "frequencies. The transmitted pulses/signals are set to be of unit\n"  8619           "magnitude, such as [1,1,0,0].\n"),
  8625       IN(
"stokes_dim", 
"f_grid", 
"instrument_pol"),
  8632       NAME(
"jacobianAddAbsSpecies"),
  8634           "Includes an absorption species in the Jacobian.\n"  8636           "For 1D or 2D calculations the latitude and/or longitude grid of\n"  8637           "the retrieval field should set to have zero length.\n"  8639           "These retrieval units are at hand for all gas species:\n"  8640           "   \"vmr\"    : Volume mixing ratio.\n"  8641           "   \"nd\"     : Number density.\n"  8642           "   \"rel\"    : Relative unit (e.g. 1.1 means 10% more of the gas).\n"  8644           "For water vapour, also these units are at hand:\n"  8645           "   \"rh\"     : Relative humidity.\n"  8646           "   \"q\"      : Specific humidity.\n"  8648           "Note that *for_species_tag* is used to indicate if species tag VMR,\n"  8649           "rather than atmospheric gas VMR is calculated. Set it to 0 and we\n"  8650           "calculate the atmospheric gas VMR, but this only works for \"analytical\".\n"  8652           "Note that the Jacobian is set to zero where volume mixing ratio equals zero.\n"  8654           "The number of elements added to the state vector (*x*) is:\n"  8655           "   n_g1 * n_g2 * n_g3\n"  8656           "where n_g1, n_g2 and n_g3 are the length of GIN *g1*, *g2* and *g3*,\n"  8657           "respectively. Here empty vectors should be considered to have a length 1.\n"  8658           "The elements are sorted with pressure as innermost loop, followed by\n"  8659           "latitude and longitude as outermost loop.\n"),
  8660       AUTHORS(
"Mattias Ekstrom", 
"Patrick Eriksson"),
  8661       OUT(
"jacobian_quantities", 
"jacobian_agenda"),
  8665       IN(
"jacobian_quantities",
  8671       GIN(
"g1", 
"g2", 
"g3", 
"species", 
"unit", 
"for_species_tag"),
  8672       GIN_TYPE(
"Vector", 
"Vector", 
"Vector", 
"String", 
"String", 
"Index"),
  8674       GIN_DESC(
"Pressure retrieval grid.",
  8675                "Latitude retrieval grid.",
  8676                "Longitude retreival grid.",
  8677                "The species tag of the retrieval quantity.",
  8678                "Retrieval unit. See above.",
  8679                "Index-bool for acting on species tags or species."),
  8686       NAME(
"jacobianAddBasicCatalogParameter"),
  8688           "Includes a basic catalog parameter in the Jacobian. These are constant\n"  8689           "over all layers and so only a single vector output is returned.\n"  8691           "The only basic catalog parameters currently supported are:\n"  8692           "   \"Line Strength\"\n"  8693           "   \"Line Center\"\n"  8695           "The *catalog_identity* should be able to identify one or many\n"  8696           "lines in the catalog used for calculating the spectral absorption.\n"  8697           "Note that partial matching for energy levels are allowed but not\n"  8698           "recommended, as it is somewhat nonsensical to add multiple parameters\n"  8700           "Also note *jacobianAddShapeCatalogParameter* as this allows addition\n"  8701           "of shape parameters, e.g., pressure broadening coefficients\n"  8703           "Each call to this function adds just a single value to *x*.\n"  8705           "Example given the catalog_identity=\"O2-66 TR UP v1 0 J 1 LO v1 0 J 0\",\n"  8706           "only the O2 ground-level 119 GHz line can be accessed and only its\n"  8707           "catalog_parameter will be accessed.  However, the more lenient\n"  8708           "catalog_identity=\"O2-66 TR UP J 1 LO J 0\" may be used, but then the\n"  8709           "118 GHz line belonging to v1=1 branch will be added to the same *x*.\n"),
  8711       OUT(
"jacobian_quantities", 
"jacobian_agenda"),
  8715       IN(
"jacobian_quantities", 
"jacobian_agenda"),
  8716       GIN(
"catalog_identity", 
"catalog_parameter"),
  8717       GIN_TYPE(
"QuantumIdentifier", 
"String"),
  8719       GIN_DESC(
"The catalog line matching information.",
  8720                "The catalog parameter of the retrieval quantity.")));
  8723       NAME(
"jacobianAddBasicCatalogParameters"),
  8725           "See *jacobianAddBasicCatalogParameter*.\n"  8727           "This adds a multiple of parameters for first each catalog_identity in\n"  8728           "catalog_identities and then for each catalog_parameter in catalog_parameters\n"  8729           "by looping calls to *jacobianAddBasicCatalogParameter* over these input\n"),
  8731       OUT(
"jacobian_quantities", 
"jacobian_agenda"),
  8735       IN(
"jacobian_quantities", 
"jacobian_agenda"),
  8736       GIN(
"catalog_identities", 
"catalog_parameters"),
  8737       GIN_TYPE(
"ArrayOfQuantumIdentifier", 
"ArrayOfString"),
  8739       GIN_DESC(
"The catalog line matching information.",
  8740                "The catalog parameter of the retrieval quantity.")));
  8743       NAME(
"jacobianAddFreqShift"),
  8745           "Includes a frequency fit of shift type in the Jacobian.\n"  8747           "Retrieval of deviations between nominal and actual backend\n"  8748           "frequencies can be included by this method. The assumption here is\n"  8749           "that the deviation is a constant off-set, a shift, common for all\n"  8750           "frequencies (and not varying between measurement blocks).\n"  8752           "This method adds one element to the state vector (*x*).\n"),
  8754       OUT(
"jacobian_quantities", 
"jacobian_agenda"),
  8758       IN(
"jacobian_quantities", 
"jacobian_agenda", 
"f_grid"),
  8762       GIN_DESC(
"Size of perturbation to apply.")));
  8765       NAME(
"jacobianAddFreqStretch"),
  8767           "Includes a frequency fit of stretch type in the Jacobian.\n"  8769           "Retrieval of deviations between nominal and actual backend\n"  8770           "frequencies can be included by this method. The assumption here is\n"  8771           "that the deviation varies linearly over the frequency range\n"  8772           "(following ARTS basis function for polynomial order 1).\n"  8774           "This method adds one element to the state vector (*x*).\n"),
  8776       OUT(
"jacobian_quantities", 
"jacobian_agenda"),
  8780       IN(
"jacobian_quantities", 
"jacobian_agenda", 
"f_grid"),
  8784       GIN_DESC(
"Size of perturbation to apply.")));
  8787       NAME(
"jacobianAddShapeCatalogParameter"),
  8789           "Adds a line shape parameter to the Jacobian calculations. These\n"  8790           "are constant over all levels so only a single *x*-value is added\n"  8792           "Line function parameter assume the derivatives\n"  8793           "of internal pressure broadening and line mixing\n"  8794           "functionality follows a simply f(T, T0, X0, X1, X2)\n"  8795           "format.  The shape of the function f() is determined by\n"  8796           "input catalog; please see the ARTS documentation for more\n"  8799           "The input are as follows:\n"  8800           "    line_identity: Identifier of preferably a single line\n"  8801           "    species:       A SpeciesTag, e.g., \"O2\" or \"H2O\" for common species.\n"  8802           "                   Note that \"SELF\" and \"AIR\" tags are used for shape parameters\n"  8803           "                   affected by self and air-broadening, respectively.\n"  8804           "    variable:      A variable supported by the line, these can be\n"  8805           "                      \"G0\":  Speed-independent pressure broadening\n"  8806           "                      \"G2\":  Speed-dependent pressure broadening\n"  8807           "                      \"D0\":  Speed-independent pressure shift\n"  8808           "                      \"D2\":  Speed-dependent pressure shift\n"  8809           "                      \"FVC\": Frequency of velocity changing collisions\n"  8810           "                      \"ETA\": partial correlation between velocity and\n"  8811           "                               rotational state changes due to collisions\n"  8812           "                      \"Y\":   First order line-mixing parameter\n"  8813           "                      \"G\":   Second order line-mixing parameter for strength\n"  8814           "                      \"DV\":  Second order line-mixing parameter for shifting\n"  8815           "    coefficient:   A coefficient in the model to compute the above parameters.\n"  8817           "Note that we cannot test if the line in question supports the variable and\n"  8818           "coefficient at the level of this function, so many errors will only be reported\n"  8819           "at a later stage\n"  8821           "For other spectroscopic parameters, see *jacobianAddBasicCatalogParameter*.\n"  8822           "Also see said function for an example of how to set the QuantumIdentifier\n"),
  8824       OUT(
"jacobian_quantities", 
"jacobian_agenda"),
  8828       IN(
"jacobian_quantities", 
"jacobian_agenda"),
  8829       GIN(
"line_identity", 
"species", 
"variable", 
"coefficient"),
  8830       GIN_TYPE(
"QuantumIdentifier", 
"String", 
"String", 
"String"),
  8833                "Species of interest",
  8834                "Variable of interest",
  8835                "Coefficient of interest")));
  8838       NAME(
"jacobianAddShapeCatalogParameters"),
  8840           "See *jacobianAddShapeCatalogParameter* for information on\n"  8841           "the GIN parameters\n"  8843           "This function accepts the same input but for lists of data.\n"  8844           "The function loops over each input list\n"  8845           "individually and appends the information to *jacobian_quantities*.\n"  8847           "Special \"ALL\" for 1 length *variables* and *coefficients* are\n"  8848           "allowed to compute all variables/coefficients in the order described\n"  8849           "in the description of *jacobianAddShapeCatalogParameter*\n"  8851           "For example, if *line_identities* have length 5, *species* length 4,\n"  8852           "*variables* length 3, and *coefficients* length 2, there will be\n"  8853           "5*4x3x2 = 120 new additions to *jacobian_quantities* in the order:\n"  8854           "\t[{line_identities[0], species[0], variables[0] coefficients[0]}]\n"  8855           "\t[{line_identities[0], species[0], variables[0] coefficients[1]}]\n"  8856           "\t[{line_identities[0], species[0], variables[1] coefficients[0]}]\n"  8857           "\t[{line_identities[0], species[0], variables[1] coefficients[1]}]\n"  8858           "\t[{line_identities[0], species[0], variables[2] coefficients[0]}]\n"  8859           "\t[{line_identities[0], species[0], variables[2] coefficients[1]}]\n"  8860           "\t[{line_identities[0], species[1], variables[0] coefficients[0]}]\n"  8862           "\t[{line_identities[4], species[3], variables[1] coefficients[1]}]\n"  8863           "\t[{line_identities[4], species[3], variables[2] coefficients[0]}]\n"  8864           "\t[{line_identities[4], species[3], variables[2] coefficients[1]}]\n"  8865           "or in words: lines first, then species, then variables, then coefficients\n"),
  8867       OUT(
"jacobian_quantities", 
"jacobian_agenda"),
  8871       IN(
"jacobian_quantities", 
"jacobian_agenda"),
  8872       GIN(
"line_identities", 
"species", 
"variables", 
"coefficients"),
  8873       GIN_TYPE(
"ArrayOfQuantumIdentifier",
  8878       GIN_DESC(
"List of line identifiers",
  8879                "List of species of interest",
  8880                "List of variables of interest",
  8881                "List of coefficients of interest")));
  8884       NAME(
"jacobianAddMagField"),
  8886           "Includes one magnetic field component in the Jacobian.\n"  8888           "The method follows the pattern of other Jacobian methods. The\n"  8889           "calculations can only be performed by analytic expressions.\n"  8891           "The magnetic field components are retrieved separately, and,\n"  8892           "hence, the argument *component* can be  \"u\", \"v\", \"w\",\n"  8893           "and \"strength\".\n"  8895           "The number of elements added to the state vector (*x*) is:\n"  8896           "   n_g1 * n_g2 * n_g3\n"  8897           "where n_g1, n_g2 and n_g3 are the length of GIN *g1*, *g2* and *g3*,\n"  8898           "respectively. Here empty vectors should be considered to have a length 1.\n"  8899           "The elements are sorted with pressure as innermost loop, followed by\n"  8900           "latitude and longitude as outermost loop.\n"  8902           "The dB-parameter is only used for Faraday rotation\n"),
  8903       AUTHORS(
"Patrick Eriksson", 
"Richard Larsson"),
  8904       OUT(
"jacobian_quantities", 
"jacobian_agenda"),
  8908       IN(
"jacobian_quantities",
  8914       GIN(
"g1", 
"g2", 
"g3", 
"component", 
"dB"),
  8915       GIN_TYPE(
"Vector", 
"Vector", 
"Vector", 
"String", 
"Numeric"),
  8917       GIN_DESC(
"Pressure retrieval grid.",
  8918                "Latitude retrieval grid.",
  8919                "Longitude retreival grid.",
  8920                "Magnetic field component to retrieve",
  8921                "Magnetic field perturbation")));
  8924       NAME(
"jacobianAddNLTE"),
  8926           "Experimental NLTE Jacobian.\n"  8928           "Intention: Adds the nlte_field level distribution per atmospheric grid\n"  8929           "to the Jacobian.\n"  8931           "The number of elements added to the state vector (*x*) is:\n"  8932           "   n_g1 * n_g2 * n_g3\n"  8933           "where n_g1, n_g2 and n_g3 are the length of GIN *g1*, *g2* and *g3*,\n"  8934           "respectively. Here empty vectors should be considered to have a length 1.\n"  8935           "The elements are sorted with pressure as innermost loop, followed by\n"  8936           "latitude and longitude as outermost loop.\n"  8938           "The QuantumIdentifier should identify a single energy level, such as:\n"  8939           "\"H2O-161 EN J 1 Ka 0 Kc 1\", for one of the lower levels in the chains\n"  8940           "of transitions of water.  Note that using this method directly is not\n"  8941           "best practice, as the quantum identifiers of the levels have to be known\n"  8942           "at an early stage in NLTE calculations, and will usually populate the\n"  8943           "*nlte_level_identifiers* variable, meaning it is better to use *jacobianAddNLTE*\n"  8944           "directly than to individually call this function\n"),
  8946       OUT(
"jacobian_quantities", 
"jacobian_agenda"),
  8950       IN(
"jacobian_quantities",
  8956       GIN(
"g1", 
"g2", 
"g3", 
"energy_level_identity", 
"dx"),
  8957       GIN_TYPE(
"Vector", 
"Vector", 
"Vector", 
"QuantumIdentifier", 
"Numeric"),
  8959       GIN_DESC(
"Pressure retrieval grid.",
  8960                "Latitude retrieval grid.",
  8961                "Longitude retreival grid.",
  8962                "Identifier to the eneregy level",
  8963                "Perturbation of value if required by method")));
  8966       NAME(
"jacobianAddNLTEs"),
  8968           "Experimental NLTE Jacobian.  Same as *jacobianAddNLTE* but for\n"  8971           "Adds energy_level_identities.nelem() times as many arguments to *x*\n"  8972           "as *jacobianAddNLTE*, ordered as energy_level_identities describes\n"  8974           "This method is preferred to *jacobianAddNLTE*, since *energy_level_identities*\n"  8975           "is conveniently almost always the same as *nlte_level_identifiers*\n"),
  8977       OUT(
"jacobian_quantities", 
"jacobian_agenda"),
  8981       IN(
"jacobian_quantities",
  8987       GIN(
"g1", 
"g2", 
"g3", 
"energy_level_identities", 
"dx"),
  8989           "Vector", 
"Vector", 
"Vector", 
"ArrayOfQuantumIdentifier", 
"Numeric"),
  8991       GIN_DESC(
"Pressure retrieval grid.",
  8992                "Latitude retrieval grid.",
  8993                "Longitude retreival grid.",
  8994                "Identifiers to the eneregy level",
  8995                "Perturbation of value if required by method")));
  8998       NAME(
"jacobianAddPointingZa"),
  9000           "Adds sensor pointing zenith angle off-set jacobian.\n"  9002           "Retrieval of deviations between nominal and actual zenith angle of\n"  9003           "the sensor can be included by this method. The weighing functions\n"  9004           "can be calculated in several ways:\n"  9005           "   calcmode = \"recalc\": Recalculation of pencil beam spectra,\n"  9006           "      shifted with *dza* from nominal values. A single-sided\n"  9007           "      perturbation is applied (towards higher zenith angles).\n"  9008           "   calcmode = \"interp\": Inter/extrapolation of existing pencil\n"  9009           "       beam spectra. For this option, allow some extra margins for\n"  9010           "       zenith angle grids, to avoid artifacts when extrapolating\n"  9011           "       the data (to shifted zenith angles). The average of a\n"  9012           "       negative and a positive shift is taken."  9014           "The interp option is recommended. It should in general be both\n"  9015           "faster and more accurate (due to the double sided disturbance).\n"  9016           "In addition, it is less sensitive to the choice of dza (as long\n"  9017           "as a small value is applied).\n"  9019           "The pointing off-set can be modelled to be time varying. The time\n"  9020           "variation is then described by a polynomial (with standard base\n"  9021           "functions). For example, a polynomial order of 0 means that the\n"  9022           "off-set is constant in time. If the off-set is totally uncorrelated\n"  9023           "between the spectra, set the order to -1.\n"  9025           "The number of elements added to the state vector (*x*) is\n"  9026           "  if poly_order < 0 : length of *sensor_time*\n"  9027           "         otherwise : poly_order+1\n"  9028           "In the first case, the order in *x* matches *sensor_time*. In the second\n"  9029           "case, the coefficient for polynomial order 0 comes first etc.\n"),
  9030       AUTHORS(
"Patrick Eriksson", 
"Mattias Ekstrom"),
  9031       OUT(
"jacobian_quantities", 
"jacobian_agenda"),
  9035       IN(
"jacobian_quantities", 
"jacobian_agenda", 
"sensor_pos", 
"sensor_time"),
  9036       GIN(
"poly_order", 
"calcmode", 
"dza"),
  9037       GIN_TYPE(
"Index", 
"String", 
"Numeric"),
  9039       GIN_DESC(
"Order of polynomial to describe the time variation of "  9040                "pointing off-sets.",
  9041                "Calculation method. See above",
  9042                "Size of perturbation to apply (when applicable).")));
  9045       NAME(
"jacobianAddPolyfit"),
  9047           "Includes polynomial baseline fit in the Jacobian.\n"  9049           "This method deals with retrieval of disturbances of the spectra\n"  9050           "that can be described by an additive term, a baseline off-set.\n"  9052           "The baseline off-set is here modelled as a polynomial. The\n"  9053           "polynomial spans the complete frequency range spanned by\n"  9054           "*sensor_response_f_grid* and the method should only of interest for\n"  9055           "cases with no frequency gap in the spectra. The default assumption\n"  9056           "is that the off-set differs between all spectra, but it can also be\n"  9057           "assumed that the off-set is common for all e.g. line-of-sights.\n"  9059           "If the simulation/retrieval deals with a single spectrum, the number\n"  9060           "of elements added to the state vector (*x*) is poly_order+1. The\n"  9061           "coefficient for polynomial order 0 comes first etc. The same is true\n"  9062           "if *no_pol_variation*, *no_los_variation* and *no_mblock_variation*\n"  9063           "all are set to 1, even if several spectra are involved. Otherwise the"  9064           "number of elements added to *x* depends on the number of spectra and\n"  9065           "the settings of *no_pol_variation*, *no_los_variation* and \n"  9066           "*no_mblock_variation*. The coefficients of the different polynomial\n"  9067           "orders are treated as separate retrieval quantities. That is, the\n"  9068           "the elements associated with polynomial order 0 are grouped and form\n"  9069           "together a retrieval quantity. The coefficients for higher polynomial\n"  9070           "orders are treated in the same way.\n"),
  9072       OUT(
"jacobian_quantities", 
"jacobian_agenda"),
  9076       IN(
"jacobian_quantities",
  9078          "sensor_response_pol_grid",
  9079          "sensor_response_dlos_grid",
  9084           "no_mblock_variation"),
  9085       GIN_TYPE(
"Index", 
"Index", 
"Index", 
"Index"),
  9087       GIN_DESC(
"Polynomial order to use for the fit.",
  9088                "Set to 1 if the baseline off-set is the same for all "  9089                "Stokes components.",
  9090                "Set to 1 if the baseline off-set is the same for all "  9091                "line-of-sights (inside each measurement block).",
  9092                "Set to 1 if the baseline off-set is the same for all "  9093                "measurement blocks.")));
  9096       NAME(
"jacobianAddScatSpecies"),
  9098           "Includes a scattering species in the Jacobian.\n"  9100           "For 1D or 2D calculations the latitude and/or longitude grid of\n"  9101           "the retrieval field should set to have zero length.\n"  9103           "The number of elements added to the state vector (*x*) is:\n"  9104           "   n_g1 * n_g2 * n_g3\n"  9105           "where n_g1, n_g2 and n_g3 are the length of GIN *g1*, *g2* and *g3*,\n"  9106           "respectively. Here empty vectors should be considered to have a length 1.\n"  9107           "The elements are sorted with pressure as innermost loop, followed by\n"  9108           "latitude and longitude as outermost loop.\n"),
  9110       OUT(
"jacobian_quantities", 
"jacobian_agenda"),
  9114       IN(
"jacobian_quantities",
  9120       GIN(
"g1", 
"g2", 
"g3", 
"species", 
"quantity"),
  9121       GIN_TYPE(
"Vector", 
"Vector", 
"Vector", 
"String", 
"String"),
  9124           "Pressure retrieval grid.",
  9125           "Latitude retrieval grid.",
  9126           "Longitude retreival grid.",
  9127           "Name of scattering species, must match one element in *scat_species*.",
  9128           "Retrieval quantity, e.g. \"IWC\"."),
  9135       NAME(
"jacobianAddSinefit"),
  9137           "Includes sinusoidal baseline fit in the Jacobian.\n"  9139           "Works as *jacobianAddPolyfit*, beside that a series of sine and\n"  9140           "cosine terms are used for the baseline fit.\n"  9142           "For each value in *period_lengths one sine and one cosine term are\n"  9143           "included (in mentioned order). By these two terms the amplitude and\n"  9144           "\"phase\" for each period length can be determined. The sine and\n"  9145           "cosine terms have value 0 and 1, respectively, for first frequency.\n"  9147           "If the simulation/retrieval deals with a single spectrum, the number\n"  9148           "of elements added to the state vector (*x*) is 2*nperiods, where\n"  9149           "nperiods is the length of *period_lengths*. The same is true\n"  9150           "if *no_pol_variation*, *no_los_variation* and *no_mblock_variation*\n"  9151           "all are set to 1, even if several spectra are involved. Otherwise the"  9152           "number of elements added to *x* depends on the number of spectra and\n"  9153           "the settings of *no_pol_variation*, *no_los_variation* and \n"  9154           "*no_mblock_variation*. The sine and cosine terms for each period\n"  9155           "length are treated as a  separate retrieval quantities. That is, the\n"  9156           "the elements associated with the first period length are grouped and\n"  9157           "form together a retrieval quantity, etc. Inside each retrieval quantity\n"  9158           "the pairs of sine and cosine terms are kept together, in given order.\n"),
  9160       OUT(
"jacobian_quantities", 
"jacobian_agenda"),
  9164       IN(
"jacobian_quantities",
  9166          "sensor_response_pol_grid",
  9167          "sensor_response_dlos_grid",
  9169       GIN(
"period_lengths",
  9172           "no_mblock_variation"),
  9173       GIN_TYPE(
"Vector", 
"Index", 
"Index", 
"Index"),
  9175       GIN_DESC(
"Period lengths of the fit.",
  9176                "Set to 1 if the baseline off-set is the same for all "  9177                "Stokes components.",
  9178                "Set to 1 if the baseline off-set is the same for all "  9179                "line-of-sights (inside each measurement block).",
  9180                "Set to 1 if the baseline off-set is the same for all "  9181                "measurement blocks.")));
  9184       NAME(
"jacobianAddSpecialSpecies"),
  9186           "Includes a special absorption species in the Jacobian.\n"  9188           "Similar to *jacobianAddAbsSpecies* but only for number densities.\n"  9190           "Species allowed are:\n"  9192           "    \"particulates\"\n"  9194           "Note that the average of all particulates are used to scale its\n"  9195           "*jacobian*, so this method works best when only one type of\n"  9196           "particulate is being used, i.e., when *scat_data* has only one\n"  9197           "scattering species.\n"  9199           "The number of elements added to the state vector (*x*) is:\n"  9200           "   n_g1 * n_g2 * n_g3\n"  9201           "where n_g1, n_g2 and n_g3 are the length of GIN *g1*, *g2* and *g3*,\n"  9202           "respectively. Here empty vectors should be considered to have a length 1.\n"  9203           "The elements are sorted with pressure as innermost loop, followed by\n"  9204           "latitude and longitude as outermost loop.\n"),
  9206       OUT(
"jacobian_quantities", 
"jacobian_agenda"),
  9210       IN(
"jacobian_quantities",
  9216       GIN(
"g1", 
"g2", 
"g3", 
"species"),
  9217       GIN_TYPE(
"Vector", 
"Vector", 
"Vector", 
"String"),
  9219       GIN_DESC(
"Pressure retrieval grid.",
  9220                "Latitude retrieval grid.",
  9221                "Longitude retreival grid.",
  9222                "The species of the retrieval quantity."),
  9229       NAME(
"jacobianAddSurfaceQuantity"),
  9231           "Includes a surface quantity in the Jacobian.\n"  9233           "The quantity is specified by the GIN-variable *quantity*. The name\n"  9234           "of the quantity must match the name used in *surface_props_names*.\n"  9236           "For 1D or 2D calculations the latitude and/or longitude grid of\n"  9237           "the retrieval field should set to have zero length.\n"  9239           "The number of elements added to the state vector (*x*) is:\n"  9241           "where n_g1 and n_g2 are the length of GIN *g1* and *g2*, respectively.\n"  9242           "Here empty vectors should be considered to have a length 1.\n"  9243           "The elements are sorted with latitude as innermost loop and longitude\n"  9244           "as outermost loop.\n"),
  9246       OUT(
"jacobian_quantities", 
"jacobian_agenda"),
  9250       IN(
"jacobian_quantities",
  9255       GIN(
"g1", 
"g2", 
"quantity"),
  9256       GIN_TYPE(
"Vector", 
"Vector", 
"String"),
  9258       GIN_DESC(
"Latitude retrieval grid.",
  9259                "Longitude retreival grid.",
  9260                "Retrieval quantity, e.g. \"Wind speed\"."),
  9267       NAME(
"jacobianAddTemperature"),
  9269           "Includes atmospheric temperatures in the Jacobian.\n"  9271           "The calculations are performed by (semi-)analytical expressions.\n"  9272           "Hydrostatic equilibrium (HSE) can be included.\n"  9274           "The analytical calculation approach neglects so far refraction\n"  9275           "totally, but considers the local effect of HSE.\n"  9276           "The later should be accaptable for observations around zenith and\n"  9277           "nadir. There is no warning if the method is applied incorrectly, \n"  9278           "with respect to these issues. Note that the argument *hse* of this\n"  9279           "WSM only refers to the Jacobian calculation, if the model and/or\n"  9280           "retrieved atmosphere actually fulfils HSE or not is governed in\n"  9283           "The calculations (both options) assume that gas species are defined\n"  9284           "in VMR (a change in temperature then changes the number density). \n"  9285           "This has the consequence that retrieval of temperatures and number\n"  9286           "density can not be mixed. Neither any warning here!\n"  9288           "The number of elements added to the state vector (*x*) is:\n"  9289           "   n_g1 * n_g2 * n_g3\n"  9290           "where n_g1, n_g2 and n_g3 are the length of GIN *g1*, *g2* and *g3*,\n"  9291           "respectively. Here empty vectors should be considered to have a length 1.\n"  9292           "The elements are sorted with pressure as innermost loop, followed by\n"  9293           "latitude and longitude as outermost loop.\n"),
  9294       AUTHORS(
"Mattias Ekstrom", 
"Patrick Eriksson"),
  9295       OUT(
"jacobian_quantities", 
"jacobian_agenda"),
  9299       IN(
"jacobian_quantities",
  9305       GIN(
"g1", 
"g2", 
"g3", 
"hse"),
  9306       GIN_TYPE(
"Vector", 
"Vector", 
"Vector", 
"String"),
  9308       GIN_DESC(
"Pressure retrieval grid.",
  9309                "Latitude retrieval grid.",
  9310                "Longitude retreival grid.",
  9311                "Flag to assume HSE or not (\"on\" or \"off\").")));
  9314       NAME(
"jacobianAddWind"),
  9316           "Includes one atmospheric wind component in the Jacobian.\n"  9318           "The method follows the pattern of other Jacobian methods. The\n"  9319           "calculations can only be performed by analytic expressions.\n"  9320           "Some lower level function depends on frequency perturbations,\n"  9321           "however, so therefore a frequency perturbation df is required\n"  9322           "and as a consequence *abs_f_interp_order* must be > 0.\n"  9324           "The wind field components are retrieved separately, and,\n"  9325           "hence, the argument *component* can be \"u\", \"v\" or \"w\" \n"  9326           "for vector components, or just \"strength\" for total wind speed.\n"  9328           "The number of elements added to the state vector (*x*) is:\n"  9329           "   n_g1 * n_g2 * n_g3\n"  9330           "where n_g1, n_g2 and n_g3 are the length of GIN *g1*, *g2* and *g3*,\n"  9331           "respectively. Here empty vectors should be considered to have a length 1.\n"  9332           "The elements are sorted with pressure as innermost loop, followed by\n"  9333           "latitude and longitude as outermost loop.\n"),
  9335       OUT(
"jacobian_quantities", 
"jacobian_agenda"),
  9339       IN(
"jacobian_quantities",
  9345       GIN(
"g1", 
"g2", 
"g3", 
"component", 
"dfrequency"),
  9346       GIN_TYPE(
"Vector", 
"Vector", 
"Vector", 
"String", 
"Numeric"),
  9348       GIN_DESC(
"Pressure retrieval grid.",
  9349                "Latitude retrieval grid.",
  9350                "Longitude retrieval grid.",
  9351                "Wind component to retrieve",
  9352                "This is the frequency perturbation")));
  9355       NAME(
"jacobianAdjustAndTransform"),
  9357           "Applies adjustments and transformations on *jacobian*.\n"  9359           "The method handles two tasks:\n"  9360           "1. The retrieval transformations set by the user can not be applied\n"  9361           "onthe  Jacobian inside *yCalc*. Transformations are instead applied\n"  9362           "by calling this method.\n"  9363           "2. It applies required adjustments of the Jacoboan. So far there is\n"  9364           "only one possible adjustment. If any absorption species uses the \"rel\"\n"  9365           "unit, an adjustment is needed for later iterations of the inversion.\n"  9367           "If no tranformations are selected and the \"rel\" option is not used at\n"  9368           "all, there is no need to call this method(, but you can still include it\n"  9369           "without causing any error, the calculations will just be a bit slower).\n"  9370           "Otherwise, this method should be called, typically as part of\n"  9371           "*inversion_iterate_agenda*.\n"  9373           "The method accepts if *jacobian* is empty, and then does, nothing.\n"),
  9379       IN(
"jacobian", 
"jacobian_quantities", 
"x"),
  9386       NAME(
"jacobianCalcDoNothing"),
  9388           "This function doesn't do anything. It just exists to satisfy\n"  9389           "the input and output requirement of the *jacobian_agenda*.\n"  9391           "This method is added to *jacobian_agenda* by *jacobianAddAbsSpecies*\n"  9392           "and some similar methods, and it should normally not be called by\n"  9399       IN(
"jacobian", 
"mblock_index", 
"iyb", 
"yb"),
  9406       NAME(
"jacobianCalcFreqShift"),
  9408           "Calculates frequency shift jacobians by interpolation\n"  9411           "This function is added to *jacobian_agenda* by jacobianAddFreqShift\n"  9412           "and should normally not be called by the user.\n"),
  9426          "jacobian_quantities"),
  9433       NAME(
"jacobianCalcFreqStretch"),
  9435           "Calculates frequency stretch jacobians by interpolation\n"  9438           "This function is added to *jacobian_agenda* by jacobianAddFreqStretch\n"  9439           "and should normally not be called by the user.\n"),
  9453          "sensor_response_pol_grid",
  9454          "sensor_response_f_grid",
  9455          "sensor_response_dlos_grid",
  9456          "jacobian_quantities"),
  9463       NAME(
"jacobianCalcPointingZaInterp"),
  9464       DESCRIPTION(
"Calculates zenith angle pointing deviation jacobians by\n"  9465                   "inter-extrapolation of *iyb*.\n"  9467                   "This function is added to *jacobian_agenda* by\n"  9468                   "jacobianAddPointingZa and should normally not be\n"  9469                   "called by the user.\n"),
  9485          "jacobian_quantities"),
  9492       NAME(
"jacobianCalcPointingZaRecalc"),
  9493       DESCRIPTION(
"Calculates zenith angle pointing deviation jacobians by\n"  9494                   "recalulation of *iyb*.\n"  9496                   "This function is added to *jacobian_agenda* by\n"  9497                   "jacobianAddPointingZa and should normally not be\n"  9498                   "called by the user.\n"),
  9499       AUTHORS(
"Mattias Ekstrom", 
"Patrick Eriksson"),
  9522          "jacobian_quantities"),
  9529       NAME(
"jacobianCalcPolyfit"),
  9531           "Calculates jacobians for polynomial baseline fit.\n"  9533           "This function is added to *jacobian_agenda* by jacobianAddPolyfit\n"  9534           "and should normally not be called by the user.\n"),
  9545          "sensor_response_pol_grid",
  9546          "sensor_response_f_grid",
  9547          "sensor_response_dlos_grid",
  9548          "jacobian_quantities"),
  9552       GIN_DESC(
"Polynomial coefficient to handle."),
  9556       NAME(
"jacobianCalcSinefit"),
  9558           "Calculates jacobians for sinusoidal baseline fit.\n"  9560           "This function is added to *jacobian_agenda* by jacobianAddPolyfit\n"  9561           "and should normally not be called by the user.\n"),
  9572          "sensor_response_pol_grid",
  9573          "sensor_response_f_grid",
  9574          "sensor_response_dlos_grid",
  9575          "jacobian_quantities"),
  9576       GIN(
"period_index"),
  9579       GIN_DESC(
"Index among the period length specified for add-method."),
  9583       NAME(
"jacobianClose"),
  9585           "Closes the array of retrieval quantities and prepares for\n"  9586           "calculation of the Jacobian matrix.\n"  9588           "This function closes the *jacobian_quantities* array and sets\n"  9589           "*jacobian_do* to 1.\n"  9591           "Retrieval quantities should not be added after a call to this WSM.\n"  9592           "No calculations are performed here.\n"),
  9594       OUT(
"jacobian_do", 
"jacobian_agenda"),
  9598       IN(
"jacobian_agenda", 
"jacobian_quantities"),
  9605       NAME(
"jacobianFromTwoY"),
  9607           "Sets *jacobian* based on the difference vetween two measurement vectors.\n"  9609           "This function assumes that *y_pert* contains a measurement calculated\n"  9610           "with some variable perturbed, in comparison to the calculation\n"  9611           "behind *y*. The function takes the differences between *y_pert*\n"  9612           "and *y* to form a numerical derived estimate of *jacobian*.\n"  9613           "This gives a Jacobian wit a single column.\n"  9615           "*jacobian* equals here: (y_pert-y)/pert_size.\n"),
  9622       GIN(
"y_pert", 
"pert_size"),
  9625       GIN_DESC(
"Perturbed measurement vector",
  9626                "Size of perturbation behind spectra in *ybatch*.")));
  9629       NAME(
"jacobianFromYbatch"),
  9631           "Sets *jacobian* based on perturbation calcuations.\n"  9633           "This function assumes that *ybatch* contains spectra calculated\n"  9634           "with some variable perturbed, in comparison to the calculation\n"  9635           "behind *y*. The function takes the differences between *ybatch*\n"  9636           "and *y* to form a numerical derived estimate of *jacobian*.\n"  9638           "Column i of *jacobian* equals: (ybatch[i]-y)/pert_size.\n"),
  9648       GIN_DESC(
"Size of perturbation behind spectra in *ybatch*.")));
  9651       NAME(
"jacobianInit"),
  9653           "Initialises the variables connected to the Jacobian matrix.\n"  9655           "This function initialises the *jacobian_quantities* array so\n"  9656           "that retrieval quantities can be added to it. Accordingly, it has\n"  9657           "to be called before any calls to jacobianAddTemperature or\n"  9658           "similar methods.\n"  9660           "The Jacobian quantities are initialised to be empty.\n"),
  9662       OUT(
"jacobian_quantities", 
"jacobian_agenda"),
  9673       NAME(
"jacobianOff"),
  9675           "Makes mandatory initialisation of some jacobian variables.\n"  9677           "Some clear-sky jacobian WSVs must be initialised even if no such\n"  9678           "calculations will be performed.  This is handled with this method.\n"  9679           "That is, this method must be called when no clear-sky jacobians\n"  9680           "will be calculated (even if cloudy-sky jacobians are calculated!).\n"  9682           "Sets *jacobian_do* to 0.\n"),
  9684       OUT(
"jacobian_do", 
"jacobian_agenda", 
"jacobian_quantities"),
  9695       NAME(
"jacobianSetAffineTransformation"),
  9697           "Adds an affine transformation of the last element of\n"  9698           "*jacobian_quantities*.\n"  9700           "See *jacobianSetFuncTransformation* for  a general description of how\n"  9701           "retrieval transformations are defined. Transformations are not applied by\n"  9702           "methods such as*yCalc*. Instead, the method *jacobianAdjustAndTransform*\n"  9703           "must be called to activate the transformations.\n"  9705           "The affine transformation is specified by a transformation matrix, A,\n"  9706           "and an offset vector, b. These two are applied as described in\n"  9707           "*jacobianSetFuncTransformation*.\n"  9709           "The transformations is applied as\n"  9710           "   x = A * ( z - b )\n"  9711           "where z is the retrieval quantity on the standard retrieval grids\n"  9712           "and x is the final state vector.\n"  9714           "So far, the following must be true for valid A-matrices\n"  9716           "That is, the reversed transformation is given by A transposed.\n"  9718           "This method must only be called if an affine transformation is wanted.\n"  9719           "Default is to make no such tranformation at all.\n"),
  9720       AUTHORS(
"Simon Pfreundschuh"),
  9721       OUT(
"jacobian_quantities"),
  9725       IN(
"jacobian_quantities"),
  9726       GIN(
"transformation_matrix", 
"offset_vector"),
  9729       GIN_DESC(
"The transformation matrix A", 
"The offset vector b")));
  9732       NAME(
"jacobianSetFuncTransformation"),
  9734           "Sets the functional transformation of the last element of\n"  9735           "*jacobian_quantities*.\n"  9737           "See below for a general description of how retrieval transformations\n"  9738           "are defined. Transformations are not applied by methods such as*yCalc*.\n"  9739           "Instead, the method *jacobianAdjustAndTransform* must be called to\n"  9740           "activate the transformations.\n"  9742           "The following transformations can be selected (by *transformation_func*):\n"  9743           "   log   : The natural logarithm\n"  9744           "   log10 : The base-10 logarithm\n"  9745           "   atanh : Area hyperbolic tangent \n"  9746           "   none  : No transformation at all\n"  9748           "This method needs only to be called if a functional transformation\n"  9749           "is wanted. Default is to make no such tranformation at all (i.e.\n"  9750           "the option \"none\" exists only for reasons of flexibility).\n"  9752           "The log-options are applied as log(z-z_min) and log10(z-z_min).\n"  9753           "The default for *z_min* is zero, but by changing it the lower limit\n"  9754           "for z can be changed. Note that *z_min* becomes the lower limit for\n"  9755           "allowed values of z. The GIN *z_max* is here ignored.\n"  9757           "For the atanh-option, also *z_max* is considered. This transformation\n"  9758           "is applied as atanh((2(z-z_min)/(z_max-z_min))-1). As above,*z_min*\n"  9759           "is lower limit for allowed values of z. On the other hand, *z_max*\n"  9760           "eines the upper limit for z.\n"  9762           "The GIN *transformation_func* is so far only used for atanh. The parameter\n"  9763           "specifies the maximum allowed value allowed for u. That is, the valid\n"  9764           "range for u becomes ]0,tfunc_parameter[. Note that log and log10\n"  9765           "demands/ensures that u > 0, but implies no upper limit.\n"  9767           "General handling of retrieval units and transformations:\n"  9769           "Default is that quantities are retrieved as defined in ARTS, but\n"  9770           "both some unit conversion and transformations are provided. These\n"  9771           "operations are applied as:\n"  9772           "   x = A * ( f(u(z)) - b ) \n"  9774           "   z is the quantity as defined ARTS\n"  9775           "   u represents the change of unit\n"  9776           "   f is the transformation function\n"  9777           "   A and b define together an affine transformation\n"  9778           "   x is the retrieved quantity\n"  9779           "For example, this systen allows to retrive a principal component\n"  9780           "representation (A and b) of the log (f) of relative humidity (u).\n"  9782           "Change of unit is selected by the quantity specific jacobian-add\n"  9783           "methods (so far only at hand for gas species). \n"  9785           "Activating a transformation function is done by this method. Note\n"  9786           "that the functions are defined as the transformation from z to x.\n"  9787           "For more details on affine transformations, see\n"  9788           "*jacobianSetAffineTransformation*.\n"),
  9789       AUTHORS(
"Patrick Eriksson", 
"Simon Pfreundschuh"),
  9790       OUT(
"jacobian_quantities"),
  9794       IN(
"jacobian_quantities"),
  9795       GIN(
"transformation_func", 
"z_min", 
"z_max"),
  9796       GIN_TYPE(
"String", 
"Numeric", 
"Numeric"),
  9798       GIN_DESC(
"The transformation function.",
  9799                "Lower limit of z.",
  9800                "Upper limit of z.")));
  9803       NAME(
"lat_gridFromRawField"),
  9805           "Sets *lat_grid* according to given raw atmospheric field's lat_grid.\n"  9806           "Similar to *p_gridFromZRaw*, but acting on a generic *GriddedField3*\n"  9807           "(e.g., a wind or magnetic field component).\n"),
  9817       GIN_DESC(
"A raw atmospheric field.")));
  9820       NAME(
"lbl_checkedCalc"),
  9821       DESCRIPTION(
"Checks that the line-by-line parameters are OK.\n"  9823                   "On failure, will throw.  On success, lbl_checked evals as true\n"  9825                   "Note that checks may become more stringent as ARTS evolves, especially for\n"  9826                   "\"new\" options.  This test might succeed in one version of ARTS but fail\n"  9827                   "in later versions\n"),
  9833       IN(
"abs_lines_per_species", 
"abs_species", 
"isotopologue_ratios", 
"partition_functions"),
  9840       NAME(
"LocalTimeOffset"),
  9841       DESCRIPTION(
"Sets the seconds between localtime and gmtime representation of now().\n"),
  9846       GOUT_DESC(
"Time in seconds between local and gmt"),
  9854       NAME(
"lon_gridFromRawField"),
  9856           "Sets *lon_grid* according to given raw atmospheric field's lat_grid.\n"  9857           "Similar to *p_gridFromZRaw*, but acting on a generic *GriddedField3*\n"  9858           "(e.g., a wind or magnetic field component).\n"),
  9868       GIN_DESC(
"A raw atmospheric field.")));
  9871       NAME(
"MagFieldsCalc"),
  9873           "Interpolation of raw magnetic fields to calculation grids.\n"  9874           "Heritage from *AtmFieldsCalc*\n"  9876           "Internally, *MagFieldsCalc* applies *GriddedFieldPRegrid* and\n"  9877           "*GriddedFieldLatLonRegrid*. Generally, 'half-grid-step' extrapolation\n"  9878           "is allowed and applied.\n"),
  9880       OUT(
"mag_u_field", 
"mag_v_field", 
"mag_w_field"),
  9891       GIN(
"interp_order"),
  9894       GIN_DESC(
"Interpolation order (1=linear interpolation).")));
  9897       NAME(
"MagFieldsCalcExpand1D"),
  9899           "Interpolation of 1D raw atmospheric fields to create 2D or 3D\n"  9900           "homogeneous magnetic fields.  Derived from *AtmFieldsCalcExpand1D*\n"  9902           "The method works as *MagFieldsCalc*, but accepts only raw 1D\n"  9903           "magnetic fields. The raw data is interpolated to *p_grid* and\n"  9904           "the obtained values are applied for all latitudes, and also\n"  9905           "longitudes for 3D, to create a homogeneous atmosphere.\n"),
  9907       OUT(
"mag_u_field", 
"mag_v_field", 
"mag_w_field"),
  9918       GIN(
"interp_order"),
  9921       GIN_DESC(
"Interpolation order (1=linear interpolation).")));
  9924       NAME(
"MagFieldsFromAltitudeRawCalc"),
  9926           "Regrids the rawfield by lat-lon and interpolates to z_field.\n"),
  9928       OUT(
"mag_u_field", 
"mag_v_field", 
"mag_w_field"),
  9938       GIN(
"interp_order", 
"extrapolating"),
  9941       GIN_DESC(
"Interpolation order (1=linear interpolation).",
  9942                "Extrapolation allowed in interpolation of altitude.")));
  9947           "Reads magnetic field data from a scenario.\n"  9949           "A full set of field components is read (NOTE: fails if scenario\n"  9950           "only contains selected field components). The files can be\n"  9951           "anywhere, but must all be in the same directory specified by\n"  9952           "'basename'. Naming convention for the field component files is\n"  9953           "basename.mag_u.xml for the u-component, v- and w-components\n"  9956       OUT(
"mag_u_field_raw", 
"mag_v_field_raw", 
"mag_w_field_raw"),
  9964       GIN_DESC(
"Name of scenario, probably including the full path. For "  9965                "example: \"/data/magnetic_field\"")));
  9968       NAME(
"MatrixAddScalar"),
  9970           "Adds a scalar to all elements of a matrix.\n"  9972           "The result can either be stored in the same or another matrix.\n"),
  9982       GIN_DESC(
"Input matrix.", 
"The value to be added to the matrix.")));
  9987           "Sets a matrix to hold cosmic background radiation (CBR).\n"  9989           "The CBR is assumed to be un-polarized and Stokes components 2-4\n"  9990           "are zero. Number of Stokes components, that equals the number\n"  9991           "of columns in the created matrix, is determined by *stokes_dim*.\n"  9992           "The number of rows in the created matrix equals the length of the\n"  9993           "given frequency vector.\n"  9995           "The cosmic radiation is modelled as blackbody radiation for the\n"  9996           "temperature given by the global constant COSMIC_BG_TEMP, set in\n"  9997           "the file constants.cc. The frequencies are taken from the generic\n" 10000           "The standard definition, in ARTS, of the Planck function is\n" 10001           "followed and the unit of the returned data is W/(m3 * Hz * sr).\n"),
 10014       NAME(
"MatrixCopySparse"),
 10015       DESCRIPTION(
"Creates a matrix by copying a variable of type Sparse.\n"),
 10025       GIN_DESC(
"The sparse matrix to be copied.")));
 10028       NAME(
"MatrixExtractFromTensor3"),
 10030           "Extracts a Matrix from a Tensor3.\n" 10032           "Copies page or row or column with given Index from input Tensor3\n" 10033           "variable to output Matrix.\n" 10034           "Higher order equivalent of *VectorExtractFromMatrix*.\n"),
 10041       GIN(
"in", 
"i", 
"direction"),
 10042       GIN_TYPE(
"Tensor3", 
"Index", 
"String"),
 10045                "Index of page or row or column to extract.",
 10046                "Direction. \"page\" or \"row\" or \"column\".")));
 10050                DESCRIPTION(
"Turns a covariance matrix into a Matrix.\n"),
 10060                GIN_DESC(
"Input covariance matrix.")));
 10063       NAME(
"MatrixIdentity"),
 10065           "Returns an identity matrix.\n" 10067           "The size if the matrix created is n x n. Default is to return a\n" 10068           "true identity matrix (I), but you can also select another value\n" 10069           "along the diagonal by setting *value*. That is, the output is\n" 10080       GIN_DESC(
"Size of the matrix", 
"The value along the diagonal.")));
 10083       NAME(
"MatrixMatrixMultiply"),
 10085           "Multiply a Matrix with another Matrix and store the result in the result\n" 10088           "This just computes the normal Matrix-Matrix product, Y=M*X. It is ok\n" 10089           "if Y and X are the same Matrix.\n"),
 10094       GOUT_DESC(
"The result of the multiplication (dimension mxc)."),
 10099       GIN_DESC(
"The Matrix to multiply (dimension mxn).",
 10100                "The original Matrix (dimension nxc).")));
 10103       NAME(
"MatrixPlanck"),
 10105           "Sets a matrix to hold blackbody radiation.\n" 10107           "The radiation is assumed to be un-polarized and Stokes components\n" 10108           "2-4 are zero. Number of Stokes components, that equals the number\n" 10109           "of columns in the created matrix, is determined by *stokes_dim*.\n" 10110           "The number of rows in the created matrix equals the length of the\n" 10111           "given frequency vector.\n" 10113           "The standard definition, in ARTS, of the Planck function is\n" 10114           "followed and the unit of the returned data is W/(m3 * Hz * sr).\n"),
 10124       GIN_DESC(
"Frequency vector.", 
"Temperature [K].")));
 10127       NAME(
"MatrixScale"),
 10128       DESCRIPTION(
"Scales all elements of a matrix with the specified value.\n" 10130                   "The result can either be stored in the same or another\n" 10138       GIN(
"in", 
"value"),
 10142                "The value to be multiplied with the matrix.")));
 10146       DESCRIPTION(
"Initialize a Matrix from the given list of numbers.\n" 10149                   "   MatrixSet(m1, [1, 2, 3; 4, 5, 6])\n"),
 10159       GIN_DESC(
"The values of the newly created matrix. Elements are separated " 10160                "by commas, rows by semicolons."),
 10164       NAME(
"MatrixSetConstant"),
 10166           "Creates a matrix and sets all elements to the specified value.\n" 10168           "The size is determined by *ncols* and *nrows*.\n"),
 10174       IN(
"nrows", 
"ncols"),
 10181       NAME(
"MatrixUnitIntensity"),
 10183           "Sets a matrix to hold unpolarised radiation with unit intensity.\n" 10185           "Works as MatrixPlanck where the radiation is set to 1.\n"),
 10198       NAME(
"MatrixVectorMultiply"),
 10200           "Multiply a Matrix with a Vector\n" 10202           "Computes the normal Matrix-Vector product, out=m*v. It is ok if out and v\n" 10203           "are the same Vector.\n"),
 10204       AUTHORS(
"Stefan Buehler and Patrick Eriksson"),
 10208       GOUT_DESC(
"The result of the multiplication (length m)."),
 10213       GIN_DESC(
"The Matrix to multiply (dimension mxn).",
 10214                "The original Vector (length n).")));
 10217       NAME(
"Matrix1ColFromVector"),
 10218       DESCRIPTION(
"Forms a matrix containing one column from a vector.\n"),
 10228       GIN_DESC(
"The vector to be copied.")));
 10231       NAME(
"Matrix2ColFromVectors"),
 10233           "Forms a matrix containing two columns from two vectors.\n" 10235           "The vectors are included as columns in the matrix in the same order\n" 10236           "as they are given.\n"),
 10246       GIN_DESC(
"The vector to be copied into the first column.",
 10247                "The vector to be copied into the second column.")));
 10250       NAME(
"Matrix3ColFromVectors"),
 10252           "Forms a matrix containing three columns from three vectors.\n" 10254           "The vectors are included as columns in the matrix in the same order\n" 10255           "as they are given.\n"),
 10262       GIN(
"v1", 
"v2", 
"v3"),
 10263       GIN_TYPE(
"Vector", 
"Vector", 
"Vector"),
 10265       GIN_DESC(
"The vector to be copied into the first column.",
 10266                "The vector to be copied into the second column.",
 10267                "The vector to be copied into the third column.")));
 10270       NAME(
"Matrix1RowFromVector"),
 10271       DESCRIPTION(
"Forms a matrix containing one row from a vector.\n"),
 10281       GIN_DESC(
"The vector to be copied.")));
 10284       NAME(
"Matrix2RowFromVectors"),
 10286           "Forms a matrix containing two rows from two vectors.\n" 10288           "The vectors are included as rows in the matrix in the same order\n" 10289           "as they are given.\n"),
 10299       GIN_DESC(
"The vector to be copied into the first row.",
 10300                "The vector to be copied into the second row.")));
 10303       NAME(
"Matrix3RowFromVectors"),
 10305           "Forms a matrix containing three rows from three vectors.\n" 10307           "The vectors are included as rows in the matrix in the same order\n" 10308           "as they are given.\n"),
 10315       GIN(
"v1", 
"v2", 
"v3"),
 10316       GIN_TYPE(
"Vector", 
"Vector", 
"Vector"),
 10318       GIN_DESC(
"The vector to be copied into the first row.",
 10319                "The vector to be copied into the second row.",
 10320                "The vector to be copied into the third row.")));
 10323       NAME(
"mblock_dlos_gridUniformCircular"),
 10325           "Gives *mblock_dlos_grid* roughly circular coverage, with uniform spacing.\n" 10327           "The method considers points on a regular grid with a spacing set by\n" 10328           "GIN *spacing*. All points inside a radius from (0,0) are included in\n" 10329           "*mblock_dlos_grid*. The positions in *mblock_dlos_grid* thus covers\n" 10330           "a roughly circular domain, and cover the same solid beam angle.\n" 10331           "The radius is adjusted according to *spacing' and *centre*, but is\n"  10332           "ensured to be >= *width*.\n" 10334           "Note that the method assumes that width is small and the solid beam\n" 10335           "angle does not change with distance from (0.0).\n" 10337           "Defualt is to consider grid positions of ..., -spacing/2, spacing/2, ...\n" 10338           "If you want to have (0,0) as a point in *mblock_dlos_grid*, change\n" 10339           "*centre* from its default value.\n"),
 10341       OUT(
"mblock_dlos_grid"),
 10346       GIN(
"spacing", 
"width", 
"centre"),
 10347       GIN_TYPE(
"Numeric", 
"Numeric", 
"Index"),
 10349       GIN_DESC(
"The angular spacing between points.",
 10350                "The minimum distance from (0,0) to cover.",
 10351                "Set to 1 to place a point at (0,0).")));
 10354       NAME(
"mblock_dlos_gridUniformRectangular"),
 10356           "Gives *mblock_dlos_grid* rectangular coverage, with uniform spacing.\n" 10358           "The method creates an equidistant rectangular grid. The width in zenith\n" 10359           "and azimuth can differ. Note that selected widths are half-widths (i.e.\n" 10360           "distance from (0,0), and refers to the mimumum value allowed. The actual\n" 10361           "width depends on values selected for *spacing* and *centre*.\n" 10363           "Defualt is to consider grid positions of ..., -spacing/2, spacing/2, ...\n" 10364           "If you want to have (0,0) as a point in *mblock_dlos_grid*, change\n" 10365           "*centre* from its default value.\n"),
 10367       OUT(
"mblock_dlos_grid"),
 10372       GIN(
"spacing", 
"za_width", 
"aa_width", 
"centre"),
 10373       GIN_TYPE(
"Numeric", 
"Numeric", 
"Numeric", 
"Index"),
 10375       GIN_DESC(
"The angular spacing between points.",
 10376                "Min value of half-width in zenith angle direction.",
 10377                "Min value of half-width in azimuth angle direction.",
 10378                "Set to 1 to place a point at (0,0).")));
 10381       NAME(
"mc_antennaSetGaussian"),
 10383           "Makes mc_antenna (used by MCGeneral) a 2D Gaussian pattern.\n" 10385           "The gaussian antenna pattern is determined by *za_sigma* and\n" 10386           "*aa_sigma*, which represent the standard deviations in the\n" 10387           "uncorrelated bivariate normal distribution.\n"),
 10394       GIN(
"za_sigma", 
"aa_sigma"),
 10397       GIN_DESC(
"Width in the zenith angle dimension as described above.",
 10398                "Width in the azimuth angle dimension as described above.")));
 10401       NAME(
"mc_antennaSetGaussianByFWHM"),
 10403           "Makes mc_antenna (used by MCGeneral) a 2D Gaussian pattern.\n" 10405           "The gaussian antenna pattern is determined by *za_fwhm* and\n" 10406           "*aa_fwhm*, which represent the full width half maximum (FWHM)\n" 10407           "of the antenna response, in the zenith and azimuthal planes.\n"),
 10414       GIN(
"za_fwhm", 
"aa_fwhm"),
 10417       GIN_DESC(
"Width in the zenith angle dimension as described above.",
 10418                "Width in the azimuth angle dimension as described above.")));
 10421       NAME(
"mc_antennaSetPencilBeam"),
 10423           "Makes mc_antenna (used by MCGeneral) a pencil beam.\n" 10425           "This WSM makes the subsequent MCGeneral WSM perform pencil beam\n" 10426           "RT calculations.\n"),
 10441           "A generalised 3D reversed Monte Carlo radiative algorithm, that\n" 10442           "allows for 2D antenna patterns, surface reflection and arbitrary\n" 10443           "sensor positions.\n" 10445           "The main output variables *y* and *mc_error* represent the\n" 10446           "Stokes vector integrated over the antenna function, and the\n" 10447           "estimated error in this vector, respectively.\n" 10449           "The WSV *mc_max_iter* describes the maximum number of `photons\'\n" 10450           "used in the simulation (more photons means smaller *mc_error*).\n" 10451           "*mc_std_err* is the desired value of mc_error. *mc_max_time* is\n" 10452           "the maximum allowed number of seconds for MCGeneral. The method\n" 10453           "will terminate once any of the max_iter, std_err, max_time\n" 10454           "criteria are met. If negative values are given for these\n" 10455           "parameters then it is ignored.\n" 10457           "The WSV *mc_min_iter* sets the minimum number of photons to apply\n" 10458           "before the condition set by *mc_std_err* is considered. Values\n" 10459           "of *mc_min_iter* below 100 are not accepted.\n" 10461           "Only \"1\" and \"RJBT\" are allowed for *iy_unit*. The value of\n" 10462           "*mc_error* follows the selection for *iy_unit* (both for in- and\n" 10466           "mc_iteration_count",
 10469           "mc_source_domain",
 10481          "ppath_step_agenda",
 10485          "surface_rtprop_agenda",
 10486          "propmat_clearsky_agenda",
 10499          "atmfields_checked",
 10501          "scat_data_checked",
 10502          "cloudbox_checked",
 10509          "mc_taustep_limit"),
 10510       GIN(
"l_mc_scat_order", 
"t_interp_order"),
 10513       GIN_DESC(
"The length to be given to *mc_scat_order*. Note that" 10514                " scattering orders equal and above this value will not" 10516                "Interpolation order of temperature for scattering data (so" 10517                " far only applied in phase matrix, not in extinction and" 10523           "A radar 3D foward Monte Carlo radiative algorithm, that allows \n" 10524           "for 2D antenna patterns and arbitrary sensor positions.\n" 10525           "Surface reflections are currently ignored.\n" 10527           "The main output variable *y* and *mc_error* represent the\n" 10528           "radar reflectivity integrated over the antenna function, and the\n" 10529           "estimated error in this vector, respectively.\n" 10531           "Unlike with yActive, the range bins gives the boundaries of \n" 10532           "the range bins as either round-trip time or distance from radar.\n" 10534           "The WSV *mc_y_tx* gives the polarization state of the \n" 10537           "The WSV *mc_max_scatorder* prescribes the maximum scattering \n" 10538           "order to consider, after which `photon\'-tracing will be\n" 10539           "terminated. A value of one calculates only single scattering.\n" 10541           "The WSV *mc_max_iter* describes the maximum number of `photons\'\n" 10542           "used in the simulation (more photons means smaller *mc_error*).\n" 10543           "The method will terminate once the max_iter criterium is met.\n" 10544           "If negative values are given for these parameters then it is\n" 10547           "Only \"1\" and \"Ze\" are allowed for *iy_unit*. The value of\n" 10548           "*mc_error* follows the selection for *iy_unit* (both for in- and\n" 10551       OUT(
"y", 
"mc_error"),
 10563          "ppath_step_agenda",
 10565          "propmat_clearsky_agenda",
 10580          "atmfields_checked",
 10582          "scat_data_checked",
 10583          "cloudbox_checked",
 10585          "mc_max_scatorder",
 10588       GIN(
"ze_tref", 
"k2", 
"t_interp_order"),
 10589       GIN_TYPE(
"Numeric", 
"Numeric", 
"Index"),
 10591       GIN_DESC(
"Reference temperature for conversion to Ze.",
 10592                "Reference dielectric factor.",
 10593                "Interpolation order of temperature for scattering data (so" 10594                " far only applied in phase matrix, not in extinction and" 10599                DESCRIPTION(
"Sets the value of mc_seed from system time\n"),
 10612       NAME(
"nlte_fieldRescalePopulationLevels"),
 10614           "Rescale NLTE field to expected total distribution amongst levels\n"),
 10624       GIN_DESC(
"Scaling (e.g., 0.75 for only orth-water on Earth)")));
 10627       NAME(
"nlte_fieldForSingleSpeciesNonOverlappingLines"),
 10629           "NLTE field for a simple setup.\n" 10631           "This will solve for *nlte_field* in the input atmosphere.\n" 10632           "The solver depends on the lines not overlapping and that there\n" 10633           "is only a single species in the atmosphere.\n"),
 10641          "abs_lines_per_species",
 10642          "collision_coefficients",
 10643          "collision_line_identifiers",
 10644          "isotopologue_ratios",
 10648          "iy_surface_agenda",
 10649          "iy_cloudbox_agenda",
 10650          "propmat_clearsky_agenda",
 10651          "water_p_eq_agenda",
 10658          "surface_props_data",
 10660       GIN(
"df", 
"convergence_limit", 
"nz", 
"nf", 
"dampened", 
"iteration_limit"),
 10661       GIN_TYPE(
"Numeric", 
"Numeric", 
"Index", 
"Index", 
"Index", 
"Index"),
 10663       GIN_DESC(
"relative frequency to line center",
 10664                "max relative change in ratio of level to stop iterations",
 10665                "number of zenith angles",
 10666                "number of frequency grid-points per line",
 10667                "use transmission dampening or not",
 10668                "max number of iterations before defaul break of iterations")));
 10671       NAME(
"collision_coefficientsFromSplitFiles"),
 10673           "Reads *collision_coefficients* and *collision_line_identifiers* from location on filesystem\n" 10674           "with many species.  The species in this location must match *abs_species*.  The location\n" 10675           "must also contain an ArrayOfQuantumIdentifier file ending with qid.xml\n"),
 10677       OUT(
"collision_coefficients", 
"collision_line_identifiers"),
 10685       GIN_DESC(
"path to files to read")));
 10688       NAME(
"NumericAdd"),
 10690           "Adds a numeric and a value (out = in+value).\n" 10692           "The result can either be stored in the same or another numeric.\n" 10693           "(in and out can be the same varible, but not out and value)\n"),
 10700       GIN(
"in", 
"value"),
 10703       GIN_DESC(
"Input numeric.", 
"Value to add.")));
 10706       NAME(
"NumericFromVector"),
 10708           "Derivs a numeric from a vector, following selected operation.\n" 10710           "The following operations can be selected:\n" 10711           "  first : Selects the first element of the vector.\n" 10712           "   last : Selects the last element of the vector.\n" 10713           "    max : Selects the maximum element of the vector.\n" 10714           "    min : Selects the minimum element of the vector.\n" 10715           "   mean : Calculates the mean of the vector.\n"),
 10725       GIN_DESC(
"Input vector.", 
"Selected operation.")));
 10728       NAME(
"NumericInvScale"),
 10730           "Inversely scales/divides a numeric with a value (out = in/value).\n" 10732           "The result can either be stored in the same or another numeric.\n" 10733           "(in and out can be the same varible, but not out and value)\n"),
 10740       GIN(
"in", 
"value"),
 10743       GIN_DESC(
"Input numeric.", 
"Scaling value.")));
 10746       NAME(
"NumericScale"),
 10748           "Scales/multiplies a numeric with a value (out = in*value).\n" 10750           "The result can either be stored in the same or another numeric.\n" 10751           "(in and out can be the same varible, but not out and value)\n"),
 10758       GIN(
"in", 
"value"),
 10761       GIN_DESC(
"Input numeric.", 
"Scaling value.")));
 10764       NAME(
"NumericSet"),
 10765       DESCRIPTION(
"Sets a numeric workspace variable to the given value.\n"),
 10779       NAME(
"QuantumIdentifierSet"),
 10781           "Sets a QuantumIdentifier workspace variable to the given value\n" 10782           "by converting the input String\n"),
 10789       GIN(
"string_initializer"),
 10792       GIN_DESC(
"The string representing the value."),
 10796       NAME(
"ArrayOfQuantumIdentifierSet"),
 10798           "Sets an ArrayOfQuantumIdentifier workspace variable to the given value\n" 10799           "by converting the input ArrayOfString\n"),
 10806       GIN(
"string_initializers"),
 10809       GIN_DESC(
"The array of string representing the values of the array."),
 10815           "Retrieve nelem from given variable and store the value in the\n" 10816           "variable *nelem*.\n"),
 10824       GIN_TYPE(ARRAY_GROUPS + 
", Vector"),
 10826       GIN_DESC(
"Variable to get the number of elements from."),
 10834           "Retrieve ncols from given variable and store the value in the\n" 10835           "workspace variable *ncols*\n"),
 10843       GIN_TYPE(
"Matrix, Sparse, Tensor3, Tensor4, Tensor5, Tensor6, Tensor7"),
 10845       GIN_DESC(
"Variable to get the number of columns from."),
 10853           "Retrieve nrows from given variable and store the value in the\n" 10854           "workspace variable *nrows*\n"),
 10862       GIN_TYPE(
"Matrix, Sparse, Tensor3, Tensor4, Tensor5, Tensor6, Tensor7"),
 10864       GIN_DESC(
"Variable to get the number of rows from."),
 10872           "Retrieve npages from given variable and store the value in the\n" 10873           "workspace variable *npages*\n"),
 10881       GIN_TYPE(
"Tensor3, Tensor4, Tensor5, Tensor6, Tensor7"),
 10883       GIN_DESC(
"Variable to get the number of pages from."),
 10891           "Retrieve nbooks from given variable and store the value in the\n" 10892           "workspace variable *nbooks*\n"),
 10900       GIN_TYPE(
"Tensor4, Tensor5, Tensor6, Tensor7"),
 10902       GIN_DESC(
"Variable to get the number of books from."),
 10908       NAME(
"nshelvesGet"),
 10910           "Retrieve nshelves from given variable and store the value in the\n" 10911           "workspace variable *nshelves*\n"),
 10919       GIN_TYPE(
"Tensor5, Tensor6, Tensor7"),
 10921       GIN_DESC(
"Variable to get the number of shelves from."),
 10927       NAME(
"nvitrinesGet"),
 10929           "Retrieve nvitrines from given variable and store the value in the\n" 10930           "workspace variable *nvitrines*\n"),
 10940       GIN_DESC(
"Variable to get the number of vitrines from."),
 10946       NAME(
"nlibrariesGet"),
 10948           "Retrieve nlibraries from given variable and store the value in the\n" 10949           "workspace variable *nlibraries*\n"),
 10959       GIN_DESC(
"Variable to get the number of libraries from."),
 10965       NAME(
"nlte_sourceFromTemperatureAndSrcCoefPerSpecies"),
 10967           "Turn NLTE absorption per species into the source function by multiplying\n" 10968           "NLTE absorption per species with the LTE Planck source function.\n"),
 10970       OUT(
"nlte_source", 
"dnlte_dx_source", 
"nlte_dsource_dx"),
 10974       IN(
"src_coef_per_species",
 10976          "jacobian_quantities",
 10978          "rtp_temperature"),
 10988                            "The variables are set as follows:\n" 10989                            "   nlte_field             : Empty.\n" 10990                            "   nlte_level_identifiers : Empty.\n"),
 10992                OUT(
"nlte_do", 
"nlte_field", 
"nlte_level_identifiers"),
 11003       NAME(
"nlteSetByQuantumIdentifiers"),
 11005           "Turns on NTLE calculations.\n" 11007           "Takes the quantum identifers for NLTE temperatures and matches it to\n" 11008           "lines in *abs_lines_per_species*.  *abs_species* must be set and is used\n" 11009           "to speed up calculations.  After the function is done,  all affected\n" 11010           "lines in *abs_lines_per_species* will have an internal tag to the relevant\n" 11011           "quantum identifier, which is a requirement for deeper code.\n" 11013           "If vibrational_energies is input it must match *nlte_level_identifiers*\n" 11014           "in length.  The vibrational energies of the affected lines will then be\n" 11015           "set by the function.  Otherwise, it is assumed the vibrational energies\n" 11016           "are set by another method.  If they are not set, calculations will complain\n" 11017           "later on while running deeper code.\n" 11019           "For now only vibrational energy states are assumed to be able to be in\n" 11020           "non-LTE conditions.  The *QuantumIdentifier* for an energy state in ARTS\n" 11022           "\t\"CO2-626 EN v1 0/1 v2 1/1 l2 1/1 v3 0/1 r 1/1\"\n" 11023           "and the matching will match ALL lines with the above.  Note then that if, e.g.,\n" 11024           "the \"v1 0/1\" term was removed from the above, then ARTS will assume that\n" 11025           "\"v1\" is not part of the level of energy state of interest, so lines\n" 11026           "of different \"v1\" will be matched as the same state.  If a line is matched\n" 11027           "to more than one energy state, errors should be thrown, but be careful.\n" 11029           "Set type of population to change computations and expected input as:\n" 11030           "\tLTE: Compute population by ratios found from LTE temperatures\n" 11031           "\tTV:  Compute population by ratios found from NLTE vibrational temperatures\n" 11032           "\tND:  Compute population by ratios found from NLTE number densities\n"),
 11034       OUT(
"nlte_do", 
"abs_lines_per_species"),
 11038       IN(
"abs_lines_per_species", 
"nlte_field"),
 11045       NAME(
"nlte_fieldFromRaw"),
 11054       IN(
"nlte_level_identifiers",
 11055          "nlte_vibrational_energies"),
 11059       GIN_DESC(
"Vibrational data [nlevels, np, nlat, nlon]")));
 11062       NAME(
"nlte_fieldSetLteExternalPartitionFunction"),
 11065                   "Sets NLTE ratios to those expected for LTE calculations\n" 11066                   "with a known partition function\n"),
 11068       OUT(
"nlte_do", 
"nlte_field", 
"abs_lines_per_species"),
 11072       IN(
"abs_lines_per_species",
 11073          "nlte_level_identifiers",
 11074          "partition_functions",
 11082       NAME(
"ArrayOfQuantumIdentifierFromLines"),
 11084           "Sets an ArrayOfQuantumIdentifier to all levels in *abs_lines_per_species*\n" 11085           "with defined quantum numbers\n" 11087           "Lines without defined quantum numbers are ignored\n"),
 11092       GOUT_DESC(
"Identifiers to all levels in *abs_lines_per_species*"),
 11093       IN(
"abs_lines_per_species"),
 11097       GIN_DESC(
"Only look at global quantum numbers")));
 11100       NAME(
"nlte_fieldSetLteInternalPartitionFunction"),
 11102           "Turns on NTLE calculations.\n" 11104           "Sets NLTE ratios to those expected for LTE calculations\n" 11105           "with estimation of the partition function as the sum of all\n" 11106           "states of a species\n"),
 11108       OUT(
"nlte_do", 
"nlte_field", 
"abs_lines_per_species"),
 11112       IN(
"abs_lines_per_species", 
"nlte_level_identifiers", 
"t_field"),
 11120       DESCRIPTION(
"Sets time to system_clock::now().\n"),
 11133       NAME(
"timeOffset"),
 11149           "Inversion by the so called optimal estimation method (OEM).\n" 11151           "Work in progress ...\n" 11153           "The cost function to minimise, including a normalisation with length" 11155           "   cost = cost_y + cost_x\n" 11157           "   cost_y = 1/m * [y-yf]' * covmat_se_inv * [y-yf]\n" 11158           "   cost_x = 1/m * [x-xa]' * covmat_sx_inv * [x-xa]\n" 11160           " The current implementation provides 3 methods for the minimization of\n" 11161           "the cost functional: Linear, Gauss-Newton and Levenberg-Marquardt.\n" 11162           "The Gauss-Newton minimizer attempts to find a minimum solution by \n" 11163           "fitting a quadratic function to the cost functional. The linear minimizer\n" 11164           "is a special case of the Gauss-Newton method, since for a linear forward\n" 11165           "model the exact solution of the minimization problem is obtained after\n" 11166           "the first step. The Levenberg-Marquardt method adaptively constrains the\n" 11167           "search region for the next iteration step by means of the so-called gamma-factor.\n" 11168           "This makes the method more suitable for strongly non-linear problems.\n" 11169           "If the gamma-factor is 0, Levenberg-Marquardt and Gauss-Newton method\n" 11170           "are identical. Each minimization method (li,gn,lm) has an indirect\n" 11171           "variant (li_cg,gn_cg,lm_cg), which uses the conjugate gradient solver\n" 11172           "for the linear system that has to be solved in each minimzation step.\n" 11173           "This of advantage for very large problems, that would otherwise require\n" 11174           "the computation of expensive matrix products.\n" 11176           "Description of the special input arguments:\n" 11179           "  \"li\": A linear problem is assumed and a single iteration is performed.\n" 11180           "  \"li_cg\": A linear problem is assumed and solved using the CG solver.\n" 11181           "  \"gn\": Non-linear, with Gauss-Newton iteration scheme.\n" 11182           "  \"gn_cg\": Non-linear, with Gauss-Newton and conjugate gradient solver.\n" 11183           "  \"lm\": Non-linear, with Levenberg-Marquardt (LM) iteration scheme.\n" 11184           "  \"lm_cg\": Non-linear, with Levenberg-Marquardt (LM) iteration scheme and conjugate gradient solver.\n" 11185           "*max_start_cost*\n" 11186           "  No inversion is done if the cost matching the a priori state is above\n" 11187           "  this value. If set to a negative value, all values are accepted.\n" 11188           "  This argument also controls if the start cost is calculated. If\n" 11189           "  set to <= 0, the start cost in *oem_diagnostics* is set to NaN\n" 11190           "  when using \"li\" and \"gn\".\n" 11192           "  A normalisation vector for *x*. A normalisation of *x* can be needed\n" 11193           "  due to limited numerical precision. If this vector is set to be empty\n" 11194           "  no normalisation is done (defualt case). Otherwise, this must be a\n" 11195           "  vector with same length as *x*, just having values above zero.\n" 11196           "  Elementwise division between *x* and *x_norm* (x./x_norm) shall give\n" 11197           "  a vector where all values are in the order of unity. Maybe the best\n" 11198           "  way to set *x_norm* is x_norm = sqrt( diag( Sx ) ).\n" 11200           "  Maximum number of iterations to perform. No effect for \"li\".\n" 11202           "  Iteration stop criterion. The criterion used is the same as given\n" 11203           "  in Rodgers\' \"Inverse Methods for Atmospheric Sounding\"\n" 11204           "*lm_ga_settings*\n" 11205           "  Settings controlling the gamma factor, part of the \"LM\" method.\n" 11206           "  This is a vector of length 6, having the elements (0-based index):\n" 11207           "    0: Start value.\n" 11208           "    1: Fractional decrease after succesfull iteration.\n" 11209           "    2: Fractional increase after unsuccessful iteration.\n" 11210           "    3: Maximum allowed value. If the value is passed, the inversion\n" 11212           "    4: Lower treshold. If the threshold is passed, gamma is set to zero.\n" 11213           "       If gamma must be increased from zero, gamma is set to this value.\n" 11214           "    5: Gamma limit. This is an additional stop criterion. Convergence\n" 11215           "       is not considered until there has been one succesful iteration\n" 11216           "       having a gamma <= this value.\n" 11217           "  The default setting triggers an error if \"lm\" is selected.\n" 11218           "*clear matrices*\n" 11219           "   With this flag set to 1, *jacobian* and *dxdy* are returned as empty\n" 11221           "*display_progress*\n" 11222           "   Controls if there is any screen output. The overall report level\n" 11223           "   is ignored by this WSM.\n"),
 11242          "jacobian_quantities",
 11243          "inversion_iterate_agenda"),
 11251           "display_progress"),
 11261       GIN_DESC(
"Iteration method. For this and all options below, see " 11263                "Maximum allowed value of cost function at start.",
 11264                "Normalisation of Sx.",
 11265                "Maximum number of iterations.",
 11266                "Stop criterion for iterative inversions.",
 11267                "Settings associated with the ga factor of the LM method.",
 11268                "An option to save memory.",
 11269                "Flag to control if inversion diagnostics shall be printed " 11270                "on the screen.")));
 11275           "Calculates the averaging kernel matrix describing the sensitivity of the\n" 11276           "OEM retrieval with respect to the true state of the system. A prerequisite\n" 11277           "for the calculation of the averaging kernel matrix is a successful OEM\n" 11278           "calculation in which the jacobian and the gain matrix dxdy have been calculated.\n"),
 11279       AUTHORS(
"Simon Pfreundschuh"),
 11284       IN(
"dxdy", 
"jacobian"),
 11291       NAME(
"covmat_soCalc"),
 11293           "Calculates the covariance matrix describing the error due to uncertainties\n" 11294           "in the observation system. The uncertainties of the observation system are\n" 11295           "described by *covmat_se*, which must be set by the user to include the\n" 11296           "relevant contributions from the measurement and the forward model.\n" 11298           "Prerequisite for the calculation of *covmat_so* is a successful OEM\n" 11299           "computation where also the gain matrix has been computed.\n"),
 11300       AUTHORS(
"Simon Pfreundschuh"),
 11305       IN(
"dxdy", 
"covmat_se"),
 11312       NAME(
"covmat_ssCalc"),
 11314           "Calculates the covariance matrix describing the error due to smoothing.\n" 11316           "The calculation of *covmat_ss* also requires the averaging kernel matrix *avk*\n" 11317           "to be computed after a successful OEM calculation.\n"),
 11318       AUTHORS(
"Simon Pfreundschuh"),
 11323       IN(
"avk", 
"covmat_sx"),
 11330       NAME(
"opt_prop_bulkCalc"),
 11332           "Calculates bulk absorption extinction at one atmospheric grid point.\n" 11334           "This WSM sums up the monochromatic absorption vectors and\n" 11335           "extinction matrices of all scattering elements (*abs_vec_spt* and\n" 11336           "*ext_mat_spt*, respectively) weighted by their respective\n" 11337           "particle number density given by *pnd_field*, for a single location\n" 11338           "within the cloudbox, given by *scat_p_index*, *scat_lat_index*, and\n" 11339           "*scat_lon_index*.\n" 11340           "The resulting  extinction matrix is added to the workspace variable\n" 11342       AUTHORS(
"Jana Mendrok, Sreerekha T.R."),
 11343       OUT(
"ext_mat", 
"abs_vec"),
 11361       NAME(
"opt_prop_sptFromData"),
 11363           "Calculates monochromatic optical properties for all scattering\n" 11366           "In this function the extinction matrix and the absorption vector\n" 11367           "are calculated in the laboratory frame. An interpolation of the\n" 11368           "data on the actual frequency is the first step in this function.\n" 11369           "The next step is a transformation from the database coordinate\n" 11370           "system to the laboratory coordinate system.\n" 11372           "Output of the function are *ext_mat_spt* and *abs_vec_spt*, which\n" 11373           "hold the optical properties for a specified propagation direction\n" 11374           "for each scattering element.\n"),
 11376       OUT(
"ext_mat_spt", 
"abs_vec_spt"),
 11400       NAME(
"opt_prop_sptFromScat_data"),
 11402           "Derives monochromatic optical properties for all scattering\n" 11405           "As *opt_prop_sptFromData*, but using frequency pre-interpolated\n" 11406           "data (as produced by *scat_dataCalc*), i.e. in here no frequency\n" 11407           "interpolation is done anymore.\n"),
 11408       AUTHORS(
"Jana Mendrok, Claudia Emde"),
 11409       OUT(
"ext_mat_spt", 
"abs_vec_spt"),
 11416          "scat_data_checked",
 11433       NAME(
"opt_prop_sptFromMonoData"),
 11435           "Calculates optical properties for the scattering elements.\n" 11437           "As *opt_prop_sptFromData* but no frequency interpolation is\n" 11438           "performed. The single scattering data is here obtained from\n" 11439           "*scat_data_mono*, instead of *scat_data*.\n"),
 11441       OUT(
"ext_mat_spt", 
"abs_vec_spt"),
 11464                DESCRIPTION(
"Sets the output file format to ASCII.\n"),
 11466                OUT(
"output_file_format"),
 11478                DESCRIPTION(
"Sets the output file format to binary.\n"),
 11480                OUT(
"output_file_format"),
 11492                DESCRIPTION(
"Sets the output file format to zipped ASCII.\n"),
 11494                OUT(
"output_file_format"),
 11505       NAME(
"particle_bulkprop_fieldClip"),
 11507           "Clipping of *particle_bulkprop_field*.\n" 11509           "The method allows you to apply hard limits the values of\n" 11510           "*particle_bulkprop_field*. All values, of the property selected,\n" 11511           "below *limit_low*, are simply set to *limit_low*. And the same\n" 11512           "is performed with respect to *limit_high*. That is, the data in x\n" 11513           "for the retrieval quantity are forced to be inside the range\n" 11514           "[limit_low,limit_high].\n" 11516           "Setting species=\"ALL\", is a shortcut for applying the limits on all\n" 11519       OUT(
"particle_bulkprop_field"),
 11523       IN(
"particle_bulkprop_field", 
"particle_bulkprop_names"),
 11524       GIN(
"bulkprop_name", 
"limit_low", 
"limit_high"),
 11525       GIN_TYPE(
"String", 
"Numeric", 
"Numeric"),
 11527       GIN_DESC(
"Name of bulk property to consider, or \"ALL\".",
 11528                "Lower limit for clipping.",
 11529                "Upper limit for clipping.")));
 11532       NAME(
"particle_bulkprop_fieldPerturb"),
 11534           "Adds a perturbation to *particle_bulkprop_field*.\n" 11536           "Works as *AtmFieldPerturb* but acts on *particle_bulkprop_field*.\n"),
 11538       OUT(
"particle_bulkprop_field"),
 11542       IN(
"particle_bulkprop_field",
 11547          "particle_bulkprop_names"),
 11548       GIN(
"particle_type",
 11556           "String", 
"Vector", 
"Vector", 
"Vector", 
"Index", 
"Numeric", 
"String"),
 11558       GIN_DESC(
"Name of field to perturb, such as " 11561                "Pressure retrieval grid.",
 11562                "Latitude retrieval grid.",
 11563                "Longitude retrieval grid.",
 11564                "Index of position where the perturbation shall be performed.",
 11565                "Size of perturbation.",
 11566                "Type of perturbation, " 11573       NAME(
"particle_bulkprop_fieldPerturbAtmGrids"),
 11575           "Adds a perturbation to *particle_bulkprop_field*.\n" 11577           "Works as *AtmFieldPerturbAtmGrids* but acts on *particle_bulkprop_field*.\n"),
 11579       OUT(
"particle_bulkprop_field"),
 11583       IN(
"particle_bulkprop_field",
 11588          "particle_bulkprop_names"),
 11589       GIN(
"particle_type", 
"pert_index", 
"pert_size", 
"pert_mode"),
 11590       GIN_TYPE(
"String", 
"Index", 
"Numeric", 
"String"),
 11592       GIN_DESC(
"Name of field to perturb, such as " 11595                "Index of position where the perturbation shall be performed.",
 11596                "Size of perturbation.",
 11597                "Type of perturbation, " 11604       NAME(
"particle_massesFromMetaDataSingleCategory"),
 11606           "Sets *particle_masses* based on *scat_meta* assuming\n" 11607           "all particles are of the same mass category.\n" 11609           "This method derives the particle masses from the mass entry\n" 11610           "of each scattering element. It is assumed that all scattering\n" 11611           "elements represent particles of the same (bulk) matter\n" 11612           "(e.g. water or ice). With other words, a single mass category\n" 11613           "is assumed (see *particle_masses* for a definition of \"mass\n" 11616           "To be clear, the above are assumptions of the method, the user\n" 11617           "is free to work with any scattering element. For Earth and just having\n" 11618           "cloud and particles, the resulting mass category can be seen as\n" 11619           "the total cloud water content, with possible contribution from\n" 11620           "both ice and liquid phase.\n"),
 11621       AUTHORS(
"Jana Mendrok", 
"Patrick Eriksson"),
 11622       OUT(
"particle_masses"),
 11633       NAME(
"particle_massesFromMetaData"),
 11635           "Derives *particle_masses* from *scat_meta*.\n" 11637           "This method is supposed to be used to derive *particle_masses*\n" 11638           "when *pnd_field* is internally calculated using\n" 11639           "*pnd_fieldCalcFromParticleBulkProps* (in contrast to reading it\n" 11640           "from external sources using *ScatElementsPndAndScatAdd* and\n" 11641           "*pnd_fieldCalcFrompnd_field_raw*).\n" 11642           "It extracts the mass information of the scattering elements from\n" 11643           "*scat_meta*. Each scattering species is taken as a separate\n" 11644           "category of particle_masses, i.e., the resulting\n" 11645           "*particle_masses* matrix will contain as many columns as\n" 11646           "scattering species are present in *scat_meta*.\n"),
 11648       OUT(
"particle_masses"),
 11659       NAME(
"partition_functionsInitFromBuiltin"),
 11661           "Initialize partition functions with default values from built-in\n" 11662           "species data.\n"),
 11664       OUT(
"partition_functions"),
 11675       NAME(
"pha_matCalc"),
 11677           "Calculates the total phase matrix of all scattering elements.\n" 11679           "This function sums up the monochromatic phase matrices of all\n" 11680           "scattering elements *pha_mat_spt* weighted with  their respective\n" 11681           "particle number density, given by *pnd_field*, for a single location\n" 11682           "within the cloudbox, given by *scat_p_index*, *scat_lat_index*, and\n" 11683           "*scat_lon_index*.\n"),
 11701       NAME(
"pha_mat_sptFromData"),
 11703           "Calculation of the phase matrix of the individual scattering elements.\n" 11705           "This function can be used in *pha_mat_spt_agenda* as part of\n" 11706           "the calculation of the scattering integral.\n" 11708           "First, data at the requested frequency (given by *f_grid* and\n" 11709           "*f_index*) and temperature (given by *rtp_temperature*) is\n" 11710           "extracted. This is followed by a transformation from the database\n" 11711           "coordinate system to the laboratory coordinate system.\n" 11713           "Frequency extraction is always done by (linear) interpolation.\n" 11714           "Temperature is (linearly) interpolated when at least two\n" 11715           "temperature grid points are present in the *scat_data* and\n" 11716           "*rtp_temperature* is positive. If only a single temperature point\n" 11717           "is available, data for this point is used without modification. In\n" 11718           "order to speed up calculations, temperature interpolation can be\n" 11719           "avoided by passing a *rtp_temperature*<0. In this case, a specific\n" 11720           "temperature grid from the *scat_data* grid is used without\n" 11721           "modification. The selection is as follows:\n" 11722           "  -10 < *rtp_temperature * <   0   T_grid[0]     lowest temperature\n" 11723           "  -20 < *rtp_temperature * < -10   T_grid[nT-1]  highest temperature\n" 11724           "        *rtp_temperature*  < -20   T_grid[nT/2]  median grid point\n"),
 11726       OUT(
"pha_mat_spt"),
 11749       NAME(
"pha_mat_sptFromDataDOITOpt"),
 11751           "Calculation of the phase matrix of the individual scattering elements.\n" 11753           "In this function the phase matrix is extracted from\n" 11754           "*pha_mat_sptDOITOpt*. It can be used in the agenda\n" 11755           "*pha_mat_spt_agenda*. This method must be used in combination with\n" 11756           "*DoitScatteringDataPrepare*.\n" 11758           "Temperature is considered as described for *pha_mat_sptFromData*\n"),
 11760       OUT(
"pha_mat_spt"),
 11765          "pha_mat_sptDOITOpt",
 11767          "doit_za_grid_size",
 11782       NAME(
"pha_mat_sptFromMonoData"),
 11784           "Calculation of the phase matrix of the individual scattering elements.\n" 11786           "This function is the monochromatic version of *pha_mat_sptFromData*.\n"),
 11788       OUT(
"pha_mat_spt"),
 11794          "doit_za_grid_size",
 11809       NAME(
"pha_mat_sptFromScat_data"),
 11811           "Calculation of the phase matrix of the individual scattering elements.\n" 11813           "As *pha_mat_sptFromData*, but using frequency pre-interpolated\n" 11814           "data (as produced by *scat_dataCalc*), i.e. in here no frequency\n" 11815           "interpolation is done anymore.\n"),
 11816       AUTHORS(
"Jana Mendrok, Claudia Emde"),
 11817       OUT(
"pha_mat_spt"),
 11823          "scat_data_checked",
 11840       NAME(
"pndFromPsd"),
 11842           "Calculates *pnd_data* from given *psd_data* for one scattering species.\n" 11844           "Performs integration of the size distribution over the size grid\n" 11845           "bin deriving pnd (units #/m3) from psd (units #/m3/m). Some checks\n" 11846           "on the sufficiency of the size grid range and coverage are applied.\n" 11848           "*quad_order* can be 0 for rectangular or 1 for trapezoidal\n" 11849           "integration. The only difference is the treatment of the start and\n" 11850           "end nodes. For trapezoidal their corresponding bins end exactly at\n" 11851           "the nodes, while for rectangular they extend further out by the half\n" 11852           "distance to the neighbor node (but not beyond 0).\n" 11854           "Attempts to check that the size grids and *scat_data* represent the\n" 11855           "bulk extinction sufficiently. Specifically, it is tested that\n" 11856           " (a) psd*ext is decreasing at the small and large particle size\n" 11857           "     ends of the size grid - but only if scattering species bulk\n" 11858           "     extinction exceeds 1% of *threshold_ss_ext*.\n" 11859           " (b) removing the smallest and largest particles changes the\n" 11860           "     resulting bulk extinction by less then a fraction of\n" 11861           "     *threshold_se_ext* - but only if scattering species bulk\n" 11862           "     extinction exceeds *threshold_ss_ext* and number density (pnd)\n" 11863           "     of the edge size point at this atmospheric level is larger\n" 11864           "     than *threshold_se_pnd* times the maximum pnd of this\n" 11865           "     scattering element over all atmospheric levels.\n" 11866           "Skipping tests in case of low extinction is done in order to\n" 11867           "minimize issues arising from very low mass densities,\n" 11868           "particularly at single atmospheric levels, and very low bulk\n" 11869           "extinctions, i.e. in cases where the effects on the radiance fields\n" 11870           "are estimated to be low." 11872           "NOTE: The tests are only approximate and do not guarantee the\n" 11873           "validity of the resulting bulk properties (and increasing the\n" 11874           "thresholds will decrease the reliability of the bulk properties).\n"),
 11875       AUTHORS(
"Jana Mendrok, Patrick Eriksson"),
 11876       OUT(
"pnd_data", 
"dpnd_data_dx"),
 11880       IN(
"pnd_size_grid",
 11886          "scat_data_checked"),
 11889           "threshold_se_ext",
 11890           "threshold_ss_ext",
 11891           "threshold_se_pnd"),
 11892       GIN_TYPE(
"Index", 
"Index", 
"Numeric", 
"Numeric", 
"Numeric"),
 11894       GIN_DESC(
"Order of bin quadrature.",
 11895                "Take data from scattering species of this index (0-based) in" 11897                "Maximum allowed extinction fraction in each of the edge size" 11899                "Minimum bulk extinction in the processed scattering species" 11900                " for which to apply size grid representation checks.",
 11901                "Minimum ratio of edge point pnd to maximum pnd of this" 11902                " scattering element over all pressure levels.")));
 11905       NAME(
"pndFromPsdBasic"),
 11907           "Calculates *pnd_data* from given *psd_data*.\n" 11909           "As *pndFromPsdBasic*, but without bulk extinction representation\n" 11911       AUTHORS(
"Jana Mendrok, Patrick Eriksson"),
 11912       OUT(
"pnd_data", 
"dpnd_data_dx"),
 11916       IN(
"pnd_size_grid", 
"psd_data", 
"psd_size_grid", 
"dpsd_data_dx"),
 11920       GIN_DESC(
"Order of bin quadrature.")));
 11923       NAME(
"pnd_fieldCalcFromParticleBulkProps"),
 11925           "Converts particle bulk property data to *pnd_field*.\n" 11927           "In short, the method combines *scat_species*, *pnd_agenda_array*,\n" 11928           "*particle_bulkprop_field* and their associated variables to derive\n" 11931           "The method does nothing if cloudbox is inactive.\n" 11933           "Otherwise, cloudbox limits must be set before calling the method,\n" 11934           "and *particle_bulkprop_field* is checked to have non-zero elements\n" 11935           "just inside the cloudbox.\n"),
 11936       AUTHORS(
"Patrick Eriksson, Jana Mendrok"),
 11937       OUT(
"pnd_field", 
"dpnd_field_dx"),
 11941       IN(
"atmosphere_dim",
 11951          "particle_bulkprop_field",
 11952          "particle_bulkprop_names",
 11953          "pnd_agenda_array",
 11954          "pnd_agenda_array_input_names",
 11956          "jacobian_quantities"),
 11963       NAME(
"pnd_fieldCalcFrompnd_field_raw"),
 11965           "Interpolation of particle number density fields to calculation grid\n" 11966           "inside cloudbox.\n" 11968           "This method interpolates the particle number density field\n" 11969           "from the raw data *pnd_field_raw* to obtain *pnd_field*.\n" 11970           "For 1D cases, where internally *GriddedFieldPRegrid* and\n" 11971           "*GriddedFieldLatLonRegrid* are applied, *zeropadding*=1 sets the\n" 11972           "*pnd_field* at pressure levels levels exceeding pnd_field_raw's\n" 11973           "pressure grid to 0 (not implemented for 2D and 3D yet). Default:\n" 11974           "zeropadding=0, which throws an error if the calculation pressure grid\n" 11975           "*p_grid* is not completely covered by pnd_field_raw's pressure grid.\n"),
 11976       AUTHORS(
"Sreerekha T.R.", 
"Claudia Emde", 
"Oliver Lemke"),
 11977       OUT(
"pnd_field", 
"dpnd_field_dx"),
 11987          "jacobian_quantities"),
 11988       GIN(
"zeropadding"),
 11991       GIN_DESC(
"Allow zeropadding of pnd_field.")));
 11994       NAME(
"pnd_fieldExpand1D"),
 11996           "Maps a 1D pnd_field to a (homogeneous) 2D or 3D pnd_field.\n" 11998           "This method takes a 1D *pnd_field* and converts it to a 2D or 3D\n" 11999           "\"cloud\". It is assumed that a complete 1D case has been created,\n" 12000           "and after this *atmosphere_dim*, *lat_grid*, *lon_grid* and\n" 12001           "*cloudbox_limits* have been changed to a 2D or 3D case (without\n" 12002           "changing the vertical extent of the cloudbox.\n" 12004           "No modification of *pnd_field* is made for the pressure dimension.\n" 12005           "At the latitude and longitude cloudbox edge points *pnd_field* is set to\n" 12006           "zero. This corresponds to nzero=1. If you want a larger margin between\n" 12007           "the lat and lon cloudbox edges and the \"cloud\" you increase\n" 12008           "*nzero*, where *nzero* is the number of grid points for which\n" 12009           "*pnd_field* shall be set to 0, counted from each lat and lon edge.\n" 12011           "See further *AtmFieldsExpand1D*.\n"),
 12017       IN(
"pnd_field", 
"atmosphere_dim", 
"cloudbox_on", 
"cloudbox_limits"),
 12021       GIN_DESC(
"Number of zero values inside lat and lon limits.")));
 12024       NAME(
"pnd_fieldZero"),
 12026           "Sets *pnd_field* to zero.\n" 12028           "Creates an empty *pnd_field* of cloudbox size according to\n" 12029           "*cloudbox_limits* and with number of scattering elemements\n" 12030           "according to *scat_data*. If *scat_data* is not set yet, it will be\n" 12031           "filled with one dummy scattering element.\n" 12033           "The method works with both *scat_data* and *scat_data_raw*." 12035           "This method primarily exists for testing purposes.\n" 12036           "On the one hand, empty *pnd_field* runs can be used to test the\n" 12037           "agreement between true clear-sky (*cloudboxOff*) solutions and the\n" 12038           "scattering solver solution in factual clear-sky conditions. It is\n" 12039           "important to avoid discontinuities when switching from thin-cloud\n" 12040           "to clear-sky conditions.\n" 12041           "Moreover, scattering calculations using the DOIT method include\n" 12042           "interpolation errors. If one is interested in this effect, one\n" 12043           "should compare the DOIT result with an empty cloudbox to a clearsky\n" 12044           "calculation. That means that the iterative method is performed for\n" 12045           "a cloudbox with no particles.\n"),
 12046       AUTHORS(
"Claudia Emde, Jana Mendrok"),
 12047       OUT(
"pnd_field", 
"dpnd_field_dx", 
"scat_data"),
 12055          "jacobian_quantities"),
 12062       NAME(
"ppath_fieldFromDownUpLimbGeoms"),
 12064           "Computes ppath_field from \"standalone\" sensors looking upwards from\n" 12065           "0 m altitude with zenith angles range [0, 90], downwards from the top\n" 12066           "of the atmosphere covering the zenith angle range from 180 degrees to\n" 12067           "the surface tangent minus 1e-4 degrees, and through the limb covering\n" 12068           "at the same position as the downwards looking sensor covering the zenith\n" 12069           "angle range from the surface tangent plus 1e-4 degrees to 90 degrees minus\n" 12072           "The top of the atmosphere is from *z_field*(-1, 0, 0) [python range notation].\n" 12074           "The field will consist of 3*nz arrays structured as [up, limb, down]\n" 12076           "The intent of this function is to generate a field so that calculations\n" 12077           "of *ppvar_iy* of all the fields will cover the zenith angle space\n" 12078           "of all positions in *z_field*.\n" 12080           "Only works for *atmosphere_dim* 1, spherical planets, and *ppath_lmax*<0\n"),
 12082       OUT(
"ppath_field"),
 12093          "cloudbox_checked",
 12094          "ppath_inside_cloudbox_do",
 12103       GIN_DESC(
"Number of zenith angles per position")));
 12108           "Stand-alone calculation of propagation paths.\n" 12110           "Beside a few checks of input data, the only operation of this\n" 12111           "method is to execute *ppath_agenda*.\n" 12113           "Propagation paths are normally calculated as part of the radiative\n" 12114           "transfer calculations, and this method is not part of the control\n" 12115           "file. A reason to call this function directly would be to obtain a\n" 12116           "propagation path for plotting. Anyhow, use this method instead\n" 12117           "of calling e.g.*ppathStepByStep directly.\n"),
 12129          "cloudbox_checked",
 12130          "ppath_inside_cloudbox_do",
 12140       NAME(
"ppath_fieldCalc"),
 12142           "Stand-alone calculation of propagation path field from sensors.\n" 12144           "Uses *ppathCalc* internally.\n"),
 12146       OUT(
"ppath_field"),
 12156          "cloudbox_checked",
 12157          "ppath_inside_cloudbox_do",
 12167       NAME(
"ppathCalcFromAltitude"),
 12169           "Moves *rte_pos* forwards to near altitude before calling *ppathCalc*\n" 12170           "to compute a different *ppath*.  The accuracy-variable gives minimum\n" 12171           "distance before the input altitude.\n" 12173           "The forward-moving algorithm calls *ppathCalc* several\n" 12174           "times at reduced maximum distances.  The intention is to maintain\n" 12175           "the correct *rte_los* for a given *rte_pos* at all altitudes.  The\n" 12176           "method is thus relatively slow, and VERY memory intense at low\n" 12179           "Intended to be used with \"tropospheric corrections\" from ground\n" 12180           "geometry.  Not well-tested\n" 12182           "Throws error if no altitude is in line of sight.\n"),
 12194          "cloudbox_checked",
 12195          "ppath_inside_cloudbox_do",
 12199       GIN(
"altitude", 
"accuracy"),
 12202       GIN_DESC(
"Altitude to move forward towards", 
"Accuracy of altitude")));
 12205       NAME(
"ppathFromRtePos2"),
 12207           "Determines the propagation path from *rte_pos2* to *rte_pos*.\n" 12209           "The propagation path linking *rte_pos* and *rte_pos2* is calculated\n" 12210           "and returned. The method determines the path in a pure numerical\n" 12211           "manner, where a simple algorithm is applied. The task is to find\n" 12212           "the value of *rte_los* (at *rte_pos*) linking the two positions.\n" 12214           "See the user guide for a description of the search algorithm,\n" 12215           "including a more detailed definition of *za_accuracy*, \n" 12216           "*pplrt_factor* and *pplrt_lowest*.\n" 12218           "The standard application of this method should be to radio link\n" 12219           "calculations, where *rte_pos2* corresponds to a transmitter, and\n" 12220           "*rte_pos* to the receiver/sensor.\n" 12222           "The details of the ray tracing is controlled by *ppath_step_agenda*\n" 12225       OUT(
"ppath", 
"rte_los", 
"ppath_lraytrace"),
 12229       IN(
"ppath_step_agenda",
 12242          "ppath_lraytrace"),
 12243       GIN(
"za_accuracy", 
"pplrt_factor", 
"pplrt_lowest"),
 12244       GIN_TYPE(
"Numeric", 
"Numeric", 
"Numeric"),
 12246       GIN_DESC(
"Required accuracy, in form of the maximum allowed angular " 12248                "The factor with which ppath_lraytrace is decreased if " 12249                "no solution is found.",
 12250                "Lowest value ppath_lraytrace to consider. The calculations " 12251                "are halted if this length is passed.")));
 12254       NAME(
"ppathPlaneParallel"),
 12256           "Propagation path calculations for a plane parallel atmosphere.\n" 12258           "This method basically assumes that the planet's radius is infinite,\n" 12259           "i.e. the planet surface has no curvature. Some consequences of this\n" 12261           "   - the mathod can only be used for 1D\n" 12262           "   - zenith angles between 89.9 and 90.1 deg are not allowed\n" 12263           "   - refraction is always neglected\n" 12264           "   - radii in ppath are set to Inf\n" 12266           "Notice that the method provides full propagation paths. This means\n" 12267           "that *ppath_step_agenda* is ignored (and thus also refraction).\n" 12268           "On the other hand, the method considers the cloudbox exactly as\n" 12269           "the standard path calculations.\n"),
 12275       IN(
"atmosphere_dim",
 12280          "ppath_inside_cloudbox_do",
 12290       NAME(
"ppathStepByStep"),
 12292           "Standard method for calculation of propagation paths.\n" 12294           "This method calculates complete propagation paths in a stepwise\n" 12295           "manner. Each step is denoted as a \"ppath_step\" and is the path\n" 12296           "through/inside a single grid box.\n" 12298           "The definition of a propgation path cannot be accommodated here.\n" 12299           "For more information read the chapter on propagation paths in the\n" 12300           "ARTS user guide.\n" 12302           "This method should never be called directly. Use *ppathCalc* instead\n" 12303           "if you want to extract propagation paths.\n"),
 12309       IN(
"ppath_step_agenda",
 12310          "ppath_inside_cloudbox_do",
 12324          "ppath_lraytrace"),
 12331       NAME(
"ppathWriteXMLPartial"),
 12333           "WSM to only write a reduced Ppath, omitting grid positions.\n" 12335           "The following fields are set to be empty: gp_p, gp_lat and gp_lon.\n" 12336           "This cam drastically decrease the time for reading the structure\n" 12337           "by some external software.\n" 12339           "If *file_index is >= 0, the variable is written to a file with name:\n" 12340           "   <filename>.<file_index>.xml.\n" 12341           "where <file_index> is the value of *file_index*.\n" 12343           "This means that *filename* shall here not include the .xml\n" 12344           "extension. Omitting filename works as for *WriteXML*.\n"),
 12350       IN(
"output_file_format", 
"ppath"),
 12351       GIN(
"filename", 
"file_index"),
 12355                "Optional file index to append to filename.")));
 12358       NAME(
"ppath_stepGeometric"),
 12360           "Calculates a geometrical propagation path step.\n" 12362           "This function determines a propagation path step by pure\n" 12363           "geometrical calculations. That is, refraction is neglected. Path\n" 12364           "points are always included for crossings with the grids, tangent\n" 12365           "points and intersection points with the surface. The WSV *ppath_lmax*\n" 12366           "gives the option to include additional points to ensure that the\n" 12367           "distance along the path between the points does not exceed the\n" 12368           "selected maximum length. No additional points are included if\n" 12369           "*ppath_lmax* is set to <= 0.\n" 12371           "For further information, type see the on-line information for\n" 12372           "*ppath_step_agenda*.\n"),
 12392       NAME(
"ppath_stepRefractionBasic"),
 12394           "Calculates a propagation path step, considering refraction by a\n" 12395           "basic approach.\n" 12397           "Refraction is taken into account by probably the simplest approach\n" 12398           "possible. The path is treated to consist of piece-wise geometric\n" 12399           "steps. A geometric path step is calculated from each point by\n" 12400           "using the local line-of-sight. Snell's law for spherical symmetry\n" 12401           "is used for 1D to determine the zenith angle at the new point.\n" 12402           "For 2D and 3D, the zenith angle is calculated using the average\n" 12403           "gradient of the refractive index between the two points. For 3D,\n" 12404           "the azimuth angle is treated in the same way as the zenith one.\n" 12406           "The maximum length of each ray tracing step is given by the WSV\n" 12407           "*ppath_lraytrace*. The length will never exceed the given maximum,\n" 12408           "but it can be smaller. The ray tracing steps are only used to\n" 12409           "determine the path. Points to describe the path are included as\n" 12410           "for *ppath_stepGeometric*, this including the functionality of\n" 12411           "*ppath_lmax*.\n"),
 12417       IN(
"refr_index_air_agenda",
 12430          "ppath_lraytrace"),
 12437       NAME(
"ppvar_optical_depthFromPpvar_trans_cumulat"),
 12439           "Sets *ppvar_optical_depth* according to provided transmission data.\n" 12441           "The values in ppvar_optical_depth are set to\n" 12442           "-log( ppvar_trans_cumulat(joker,joker,0,0) ).\n"),
 12444       OUT(
"ppvar_optical_depth"),
 12448       IN(
"ppvar_trans_cumulat"),
 12456                DESCRIPTION(
"Prints a variable on the screen.\n"),
 12463                GIN(
"in", 
"level"),
 12466                GIN_DESC(
"Variable to be printed.", 
"Output level to use."),
 12473                DESCRIPTION(
"Prints (most) physical constants used in ARTS.\n"),
 12487                DESCRIPTION(
"Prints a list of the workspace variables.\n"),
 12494                GIN(
"only_allocated", 
"level"),
 12497                GIN_DESC(
"Flag for printing either all variables (0) or only " 12498                         "allocated ones (1).",
 12499                         "Output level to use."),
 12506       NAME(
"ZFromPSimple"),
 12508           "Simple conversion from pressure to altitude.\n" 12510           "This function converts a vector of pressure values to an approximate vector\n" 12511           "of corresponding heights. The formula used to convert pressure to height is:\n" 12512           "z = 16000 * (5.0 - log10(p))" 12513           "That is, a pressure is  assumed to decrease by a factor of 10 every 16km.\n" 12515           "Note that all pressure values in the vector must be greater than 0.01.\n"),
 12516       AUTHORS(
"Simon Pfreundschuh"),
 12520       GOUT_DESC(
"Approximate heights of pressure grid points."),
 12530       NAME(
"PFromZSimple"),
 12532           "Simple conversion from altitude to pressure.\n" 12534           "This function converts a vector of altitudes to an approximate vector\n" 12535           "of corresponding pressures. The formula used to convert altitide z to height\n" 12537           "p = 10.0^(5.0 - z / 1600)\n" 12539           "Note that all altitude values in the vector must be less than 120 km, \n" 12540           " otherwise an error will be thrown.\n"),
 12541       AUTHORS(
"Simon Pfreundschuh"),
 12545       GOUT_DESC(
"Approximate pressures of corresponding to given altitudes."),
 12555       NAME(
"propmat_clearskyAddFaraday"),
 12557           "Calculates absorption matrix describing Faraday rotation.\n" 12559           "Faraday rotation is a change of polarization state of an\n" 12560           "electromagnetic wave propagating through charged matter by\n" 12561           "interaction with a magnetic field. Hence, this method requires\n" 12562           "*abs_species* to contain 'free_electrons' and electron content field\n" 12563           "(as part of *vmr_field*) as well as magnetic field (*mag_u_field*,\n" 12564           "*mag_v_field*, *mag_w_field*) to be specified.\n" 12566           "Faraday rotation affects Stokes parameters 2 and 3 (but not\n" 12567           "intensity!). Therefore, this method requires stokes_dim>2.\n" 12569           "Like all 'propmat_clearskyAdd*' methods, the method is additive,\n" 12570           "i.e., does not overwrite the propagation matrix *propmat_clearsky*,\n" 12571           "but adds further contributions.\n"),
 12573       OUT(
"propmat_clearsky", 
"dpropmat_clearsky_dx"),
 12577       IN(
"propmat_clearsky",
 12578          "dpropmat_clearsky_dx",
 12583          "jacobian_quantities",
 12593       NAME(
"propmat_clearskyAddFromAbsCoefPerSpecies"),
 12595           "Copy *propmat_clearsky* from *abs_coef_per_species*. This is handy for putting an\n" 12596           "explicit line-by-line calculation into the\n" 12597           "*propmat_clearsky_agenda*. This method is also used internally by.\n" 12598           "*propmat_clearskyAddOnTheFly*.\n" 12599           "Like all other propmat_clearsky methods, this method does not overwrite\n" 12600           "prior content of *propmat_clearsky*, but adds to it.\n"),
 12602       OUT(
"propmat_clearsky", 
"dpropmat_clearsky_dx"),
 12606       IN(
"propmat_clearsky", 
"abs_coef_per_species", 
"dabs_coef_dx"),
 12613       NAME(
"propmat_clearskyAddFromLookup"),
 12615           "Extract gas absorption coefficients from lookup table.\n" 12617           "This extracts the absorption coefficient for all species from the\n" 12618           "lookup table, and adds them to the propagation matrix. Extraction is\n" 12619           "for one specific atmospheric condition, i.e., a set of pressure,\n" 12620           "temperature, and VMR values.\n" 12622           "Some special species are ignored, for example Zeeman species and free\n" 12623           "electrons, since their absorption properties are not simple scalars\n" 12624           "and cannot be handled by the lookup table.\n" 12626           "The interpolation order in T and H2O is given by *abs_t_interp_order*\n" 12627           "and *abs_nls_interp_order*, respectively.\n" 12629           "Extraction is done for the frequencies in f_grid. Frequency\n" 12630           "interpolation is controlled by *abs_f_interp_order*. If this is zero,\n" 12631           "then f_grid must either be the same as the internal frequency grid of\n" 12632           "the lookup table (for efficiency reasons, only the first and last\n" 12633           "element of f_grid are checked), or must have only a single element.\n" 12634           "If *abs_f_interp_order* is above zero, then frequency is interpolated\n" 12635           "along with the other interpolation dimensions. This is useful for\n" 12636           "calculations with Doppler shift.\n" 12638           "For Doppler calculations, you should generate the table with a\n" 12639           "somewhat larger frequency grid than the calculation itself has, since\n" 12640           "the Doppler shift will push the frequency grid out of the table range\n" 12643           "Some extrapolation is allowed. For pressure and frequency interpolation\n" 12644           "the standard extrapolation factor of 0.5 is applied. The factor is the\n" 12645           "default for temperature and VMR interpolation, but the extrapolation\n" 12646           "limit can here be adjusted by the *extpolfac* argument.\n" 12648           "See also: *propmat_clearskyAddOnTheFly*.\n"),
 12649       AUTHORS(
"Stefan Buehler, Richard Larsson"),
 12650       OUT(
"propmat_clearsky", 
"dpropmat_clearsky_dx"),
 12654       IN(
"propmat_clearsky",
 12655          "dpropmat_clearsky_dx",
 12657          "abs_lookup_is_adapted",
 12658          "abs_p_interp_order",
 12659          "abs_t_interp_order",
 12660          "abs_nls_interp_order",
 12661          "abs_f_interp_order",
 12666          "jacobian_quantities"),
 12670       GIN_DESC(
"Extrapolation factor (for temperature and VMR grid edges).")));
 12673       NAME(
"propmat_clearskyAddHitranLineMixingLines"),
 12675           "Calculates gas absorption coefficients line-by-line for HITRAN line mixed data.\n" 12677           "*Wigner6Init* or *Wigner3Init* must be called before this function.\n" 12680           "Please ensure you cite the original authors when you use this function:\n" 12681           "\tJ. Lamouroux, L. Realia, X. Thomas, et al., J.Q.S.R.T. 151 (2015), 88-96\n"),
 12683       OUT(
"propmat_clearsky"),
 12687       IN(
"propmat_clearsky",
 12688          "abs_hitran_relmat_data",
 12689          "abs_lines_per_species",
 12692          "jacobian_quantities",
 12693          "partition_functions",
 12703       NAME(
"propmat_clearskyAddOnTheFly"),
 12705           "Calculates gas absorption coefficients line-by-line.\n" 12707           "This method can be used inside *propmat_clearsky_agenda* just like\n" 12708           "*propmat_clearskyAddFromLookup*. It is a shortcut for putting in some\n" 12709           "other methods explicitly, namely:\n" 12711           "  1. *AbsInputFromRteScalars*\n" 12712           "  2. Execute *abs_xsec_agenda*\n" 12713           "  3. *abs_coefCalcFromXsec*\n" 12714           "  4. *propmat_clearskyAddFromAbsCoefPerSpecies*\n" 12716           "The calculation is for one specific atmospheric condition, i.e., a set\n" 12717           "of pressure, temperature, and VMR values.\n"),
 12718       AUTHORS(
"Stefan Buehler, Richard Larsson"),
 12719       OUT(
"propmat_clearsky",
 12721           "dpropmat_clearsky_dx",
 12723           "nlte_dsource_dx"),
 12727       IN(
"propmat_clearsky",
 12729          "dpropmat_clearsky_dx",
 12734          "jacobian_quantities",
 12739          "abs_xsec_agenda"),
 12746       NAME(
"propmat_clearskyAddParticles"),
 12748           "Calculates absorption coefficients of particles to be used in\n" 12749           "clearsky (non-cloudbox) calculations.\n" 12751           "This is a method to include particles (neglecting possible\n" 12752           "scattering components) in a clearsky calculation, i.e. without\n" 12753           "applying the cloudbox and scattering solvers. Particles are handled\n" 12754           "as absorbing species with one instance of 'particles' per scattering\n" 12755           "element considered added to *abs_species*. Particle absorption cross-\n" 12756           "sections at current atmospheric conditions are extracted from the\n" 12757           "single scattering data stored in *scat_data*, i.e., one array\n" 12758           "element per 'particles' instance in *abs_species* is required. Number\n" 12759           "densities are stored in *vmr_field_raw* or *vmr_field* as for all\n" 12760           "*abs_species*, but can be taken from (raw) pnd_field type data.\n" 12762           "Note that the absorption coefficient is applied both in the\n" 12763           "extinction term (neglecting scattering out of the line of sight)\n" 12764           "and the emission term (neglecting the scattering source term, i.e.\n" 12765           "scattering into the line of sight).\n" 12767           "Optionally, particle extinction (sum of absorption and scattering\n" 12768           "coefficient) can be used instead of absorption only. To choose this\n" 12769           "case, set the *use_abs_as_ext* flag to 0. However, be aware that\n" 12770           "this creates some unphysical emission term, hence is only suitable,\n" 12771           "where the source term is negligible anyways, e.g. for occultation\n" 12774           "A line-of-sight direction *rtp_los* is required as particles can\n" 12775           "exhibit directional dependent absorption properties, which is taken\n" 12776           "into account by this method." 12778           "*ScatElementsToabs_speciesAdd* can be used to add all required\n" 12779           "settings/data for individual scattering elements at once, i.e. a\n" 12780           " 'particles' tag to *abs_species*, a set of single scattering data to\n" 12781           "*scat_data* and a number density field to *vmr_field_raw*\n" 12782           "(*vmr_field* is derived applying AtmFieldsCalc once VMRs for all\n" 12783           "*abs_species* have been added) is appended for each scattering\n" 12786           "Like all 'propmat_clearskyAdd*' methods, the method is additive,\n" 12787           "i.e., does not overwrite the propagation matrix *propmat_clearsky*,\n" 12788           "but adds further contributions.\n"),
 12790       OUT(
"propmat_clearsky", 
"dpropmat_clearsky_dx"),
 12794       IN(
"propmat_clearsky",
 12795          "dpropmat_clearsky_dx",
 12800          "jacobian_quantities",
 12805          "scat_data_checked"),
 12806       GIN(
"use_abs_as_ext"),
 12809       GIN_DESC(
"A flag with value 1 or 0. If set to one, particle absorption\n" 12810                "is used in extinction and emission parts of the RT equation,\n" 12811                "and scattering out of LOS as well as into LOS is neglected.\n" 12812                "Otherwise, particle extinction (absorption+scattering) is\n" 12813                "applied in both the extinction as well as the emission part\n" 12814                "of the RT equation. That is, true extinction is applied, but\n" 12815                "emission also includes a pseudo-emission contribution from\n" 12816                "the scattering coefficient.\n")));
 12819       NAME(
"propmat_clearskyAddZeeman"),
 12821           "Calculates Zeeman-affected polarized propagation matrix and its\n" 12824           "Otherwise as *propmat_clearskyAddFromLookup*\n"),
 12826       OUT(
"propmat_clearsky",
 12828           "dpropmat_clearsky_dx",
 12830           "nlte_dsource_dx"),
 12834       IN(
"propmat_clearsky",
 12836          "dpropmat_clearsky_dx",
 12839          "abs_lines_per_species",
 12842          "jacobian_quantities",
 12843          "isotopologue_ratios",
 12844          "partition_functions",
 12853       GIN(
"manual_zeeman_tag",
 12854           "manual_zeeman_magnetic_field_strength",
 12855           "manual_zeeman_theta",
 12856           "manual_zeeman_eta"),
 12857       GIN_TYPE(
"Index", 
"Numeric", 
"Numeric", 
"Numeric"),
 12860                "Manual Magnetic Field Strength",
 12861                "Manual theta given positive tag",
 12862                "Manual eta given positive tag")));
 12865       NAME(
"propmat_clearskyInit"),
 12867           "Initialize *propmat_clearsky* and *nlte_source*.\n" 12869           "This method must be used inside *propmat_clearsky_agenda* and then\n" 12870           "be called first.\n"),
 12871       AUTHORS(
"Oliver Lemke, Richard Larsson"),
 12872       OUT(
"propmat_clearsky",
 12874           "dpropmat_clearsky_dx",
 12876           "nlte_dsource_dx"),
 12881          "jacobian_quantities",
 12884          "propmat_clearsky_agenda_checked",
 12892       NAME(
"propmat_clearskyZero"),
 12894           "Sets *propmat_clearsky* to match zero attenuation.\n" 12896           "Use this method just if you know what you are doing!\n" 12898           "If you want to make a calculation with no clear-sky attenuation at\n" 12899           "all, fill *propmat_clearsky_agenda* with this method and required\n" 12900           "Ignore statements (don't include *propmat_clearskyInit*).\n"),
 12902       OUT(
"propmat_clearsky"),
 12906       IN(
"f_grid", 
"stokes_dim"),
 12913       NAME(
"propmat_clearskyForceNegativeToZero"),
 12914       DESCRIPTION(
"Sets *propmat_clearsky* to match zero attenuation\n" 12915                   "if negative value.  Useful for line mixing in some cases.\n" 12917                   "Use this method just if you know what you are doing!\n"),
 12919       OUT(
"propmat_clearsky"),
 12923       IN(
"propmat_clearsky"),
 12930       NAME(
"propmat_clearsky_agenda_checkedCalc"),
 12932           "Checks if the *propmat_clearsky_agenda* contains all necessary\n" 12933           "methods to calculate all the species in *abs_species*.\n" 12935           "This method should be called just before the *propmat_clearsky_agenda*\n" 12936           "is used, e.g. *DoitGetIncoming*, *ybatchCalc*, *yCalc*\n"),
 12938       OUT(
"propmat_clearsky_agenda_checked"),
 12942       IN(
"abs_species", 
"propmat_clearsky_agenda"),
 12949       NAME(
"propmat_clearsky_fieldCalc"),
 12951           "Calculate (vector) gas absorption coefficients for all points in the\n" 12954           "This is useful in two different contexts:\n" 12956           "1. For testing and plotting gas absorption. (For RT calculations, gas\n" 12957           "absorption is calculated or extracted locally, therefore there is no\n" 12958           "need to calculate a global field. But this method is handy for easy\n" 12959           "plotting of absorption vs. pressure, for example.)\n" 12961           "2. Inside the scattering region, monochromatic absorption is\n" 12962           "pre-calculated for the entire atmospheric field.\n" 12964           "The calculation itself is performed by the\n" 12965           "*propmat_clearsky_agenda*.\n"),
 12966       AUTHORS(
"Stefan Buehler, Richard Larsson"),
 12967       OUT(
"propmat_clearsky_field", 
"nlte_source_field"),
 12971       IN(
"atmfields_checked",
 12983          "propmat_clearsky_agenda"),
 12984       GIN(
"doppler", 
"los"),
 12987       GIN_DESC(
"A vector of doppler shift values in Hz. Must either be " 12988                "empty or have same dimension as p_grid.",
 12989                "Line of sight")));
 12992       NAME(
"psdAbelBoutle12"),
 12994           "Abel and Boutle [2012] particle size distribution for rain.\n" 12996           "Reference: Abel and Boutle, An improved representation of the \n" 12997           "raindrop size distribution for single-moment microphysics schemes,\n" 13000           "This is a 1-parameter PSD, i.e. *pnd_agenda_input* shall have one\n" 13001           "column and *pnd_agenda_input_names* shall contain a single string.\n" 13002           "The input data in *pnd_agenda_input* shall be rain mass content in\n" 13003           "unit of [kg/m3]. The naming used is *pnd_agenda_input_names* is free\n" 13004           "but the same name must be used in *particle_bulkprop_names* and\n" 13005           "*dpnd_data_dx_names*.\n" 13007           "Particles are assumed to be near-spherical, ie. *psd_size_grid* can\n" 13008           "either be in terms of volume (or mass) equivalent diameter or\n" 13009           "maximum diameter.\n" 13011           "Derivatives are obtained analytically.\n" 13013           "The validity range of mass content is not limited. Negative mass\n" 13014           "contents will produce negative psd values following a distribution\n" 13015           "given by abs(RWC), ie. abs(psd)=f(abs(RWC)).\n" 13017           "If temperature is outside [*t_min*,*t_max*] psd=0 and dpsd=0 if\n" 13018           "picky=0, or an error is thrown if picky=1.\n"),
 13020       OUT(
"psd_data", 
"dpsd_data_dx"),
 13024       IN(
"psd_size_grid",
 13025          "pnd_agenda_input_t",
 13026          "pnd_agenda_input",
 13027          "pnd_agenda_input_names",
 13028          "dpnd_data_dx_names",
 13031       GIN(
"t_min", 
"t_max", 
"picky"),
 13032       GIN_TYPE(
"Numeric", 
"Numeric", 
"Index"),
 13035           "Low temperature limit to calculate a psd.",
 13036           "High temperature limit to calculate a psd.",
 13037           "Flag whether to be strict with parametrization value checks.")));
 13040       NAME(
"psdDelanoeEtAl14"),
 13042           "Normalized PSD as proposed in Delanoë et al. ((2014)),\n" 13044           "Title and journal:\n" 13045           "'Normalized particle size distribution for remote sensing\n" 13046           "application', J. Geophys. Res. Atmos., 119, 4204–422.\n" 13048           "The PSD has two independent parameters *n0Star*, the intercept\n" 13049           "parameter, and *Dm*, the volume-weighted diameter.\n" 13050           "This implementation expects as input two out of the following\n" 13051           "three quantities: *iwc*, *n0Star*, *Dm*. In this case one of\n" 13052           "the input parameters *iwc*, *n0Star*, *Dm* must be set to -999.\n*" 13053           "It is also possible to provide only *iwc*, in which case an a\n" 13054           "priori assumption will be used to deduce *n0Star* from temperature.\n" 13055           "In this case both *n0Star* and *Dm* must be set to -999.0.\n" 13057           "This PSD is not defined for vanishing concentrations of\n" 13058           "scatterers as it requires normalization by *Dm*. It is up\n" 13059           "to the user to ensure that the value of *Dm* is sufficiently\n" 13060           "large. An error is thrown if *Dm* is zero or below the value\n" 13061           "provided by *dm_min*.\n"),
 13062       AUTHORS(
"Simon Pfreundschuh"),
 13063       OUT(
"psd_data", 
"dpsd_data_dx"),
 13067       IN(
"psd_size_grid",
 13068          "pnd_agenda_input_t",
 13069          "pnd_agenda_input",
 13070          "pnd_agenda_input_names",
 13071          "dpnd_data_dx_names"),
 13103           "Ice water content",
 13104           "Intercept parameter",
 13105           "Volume weighted diameter",
 13107           "*alpha* parameter of the shape function",
 13108           "*beta* paramter of the shape function",
 13109           "Low temperature limit to calculate a psd.",
 13110           "High temperature limit to calculate a psd.",
 13111           "Lower threshold for *Dm* below which an error is thrown.",
 13112           "Flag whether to be strict with parametrization value checks.")));
 13115       NAME(
"psdFieldEtAl07"),
 13117           "The Field et al. [2007] particle size distribution for snow and\n" 13120           "This is a 1-parameter PSD, i.e. *pnd_agenda_input* shall have one\n" 13121           "column and *pnd_agenda_input_names* shall contain a single string.\n" 13122           "The input data in *pnd_agenda_input* shall be ice hydrometeor mass\n" 13123           "content in unit of [kg/m3]. The naming used is *pnd_agenda_input_names*\n" 13124           "is free but the same name must be used in *particle_bulkprop_names* and\n" 13125           "*dpnd_data_dx_names*.\n" 13127           "*psd_size_grid* shall contain size in terms of maximum diameter.\n" 13129           "Derivatives are obtained by perturbation of 0.1%, but not less than\n" 13132           "Both parametrization for tropics and midlatitudes are handled,\n" 13133           "governed by setting of *regime*, where \"TR\" selectes the tropical\n" 13134           "case, and \"ML\" the midlatitude one.\n" 13136           "The validity range of mass content is not limited. Negative mass\n" 13137           "contents will produce negative psd values following a distribution\n" 13138           "given by abs(IWC), ie. abs(psd)=f(abs(IWC)).\n" 13140           "If temperature is outside [*t_min*,*t_max*] psd=0 and dpsd=0 if\n" 13141           "picky=0, or an error is thrown if picky=1.\n" 13143           "For temperatures below *t_min_psd*, the size distribution is\n" 13144           "calculated for T = *t_min_psd*. Likewise, for temperatures above\n" 13145           "*t_max_psd*, the distribution is derived for T = *t_max_psd*.\n" 13147           "Defaults of *t_min_psd* and *t_max_psd* were set considering that\n" 13148           "the parametrization has been derived from measurements over\n" 13149           "temperatures of -60C to 0C." 13151           "Checks of the sanity of the mass-dimension relationship are performed\n" 13152           "Errors are thrown if:\n" 13153           "- Mass-dimension relation exponent *scat_species_b* is outside\n" 13154           "  [*beta_min*, *beta_max*].\n"),
 13156       OUT(
"psd_data", 
"dpsd_data_dx"),
 13160       IN(
"psd_size_grid",
 13161          "pnd_agenda_input_t",
 13162          "pnd_agenda_input",
 13163          "pnd_agenda_input_names",
 13164          "dpnd_data_dx_names",
 13185           "Parametrization regime (\"TR\"=tropical or \"ML\"=midlatitude).",
 13186           "Low temperature limit to calculate a psd.",
 13187           "High temperature limit to calculate a psd.",
 13188           "Low temperature limit to use as paramtrization temperature.",
 13189           "High temperature limit to use as paramtrization temperature.",
 13190           "Low *b* limit (only if picky).",
 13191           "High *b* limit (only if picky).",
 13192           "Flag whether to be strict with parametrization value checks.")));
 13195       NAME(
"psdFieldEtAl19"),
 13197           "The Field [2019] particle size distribution for hail.\n" 13199           "Reference: Field, Normalized hail particle size distributions from the T-28\n" 13200           "storm-penetrating aircraft, JAMC, 2019\n" 13202           "This is a 1-parmater PSD i.e. *pnd_agenda_input* shall have one column and\n" 13203           "*pnd_agenda_input_names* shall contain a single string.\n" 13204           "The input data in *pnd_agenda_input* shall be hail mass content in\n" 13205           "unit of [kg/m3]. The naming used is *pnd_agenda_input_names* is free\n" 13206           "but the same name must be used in *particle_bulkprop_names* and\n" 13207           "*dpnd_data_dx_names*.\n" 13208           "The parameters assume a constant effective density, i.e. scat_species_b \approx 3\n" 13210           "Derivatives are obtained analytically.\n" 13212           "The validity range of mass content is not limited. Negative mass\n" 13213           "contents will produce negative psd values following a distribution\n" 13214           "given by abs(HWC), ie. abs(psd)=f(abs(HWC)).\n" 13216           "If temperature is outside [*t_min*,*t_max*] psd=0 and dpsd=0 if\n" 13217           "picky=0, or an error is thrown if picky=1.\n"),
 13219       OUT(
"psd_data", 
"dpsd_data_dx"),
 13223       IN(
"psd_size_grid",
 13224          "pnd_agenda_input_t",
 13225          "pnd_agenda_input",
 13226          "pnd_agenda_input_names",
 13227          "dpnd_data_dx_names",
 13230       GIN(
"t_min", 
"t_max", 
"picky"),
 13231       GIN_TYPE(
"Numeric", 
"Numeric", 
"Index"),
 13234           "Low temperature limit to calculate a psd.",
 13235           "High temperature limit to calculate a psd.",
 13236           "Flag whether to be strict with parametrization value checks.")));
 13239       NAME(
"psdMcFarquaharHeymsfield97"),
 13241           "McFarquahar and Heymsfield [1997] particle size distribution\n" 13244           "This is a 1-parameter PSD, i.e. *pnd_agenda_input* shall have one\n" 13245           "column and *pnd_agenda_input_names* shall contain a single string.\n" 13246           "The input data in *pnd_agenda_input* shall be ice hydrometeor mass\n" 13247           "content in unit of [kg/m3]. The naming used is *pnd_agenda_input_names*\n" 13248           "is free but the same name must be used in *particle_bulkprop_names* and\n" 13249           "*dpnd_data_dx_names*.\n" 13251           "*psd_size_grid* shall contain size in terms of volume equivalent diameter.\n" 13253           "Derivatives are obtained by perturbation of 0.1%, but not less than\n" 13256           "The validity range of mass content is not limited. Negative mass\n" 13257           "contents will produce negative psd values following a distribution\n" 13258           "given by abs(IWC), ie. abs(psd)=f(abs(IWC)).\n" 13260           "If temperature is outside [*t_min*,*t_max*] psd=0 and dpsd=0 if\n" 13261           "picky=0, or an error is thrown if picky=1.\n" 13263           "For temperatures below *t_min_psd*, the size distribution is\n" 13264           "calculated for T = *t_min_psd*. Likewise, for temperatures above\n" 13265           "*t_max_psd*, the distribution is derived for T = *t_max_psd*.\n" 13267           "Defaults of *t_min_psd* and *t_max_psd* were set considering that\n" 13268           "the parametrization has been derived from measurements over\n" 13269           "temperatures of -70C to -20C." 13271           "The noisy option can not be used together with calculation of\n" 13272           "derivatives (ie. when *dpnd_data_dx_names* is not empty).\n"),
 13273       AUTHORS(
"Patrick Eriksson, Jana Mendrok"),
 13274       OUT(
"psd_data", 
"dpsd_data_dx"),
 13278       IN(
"psd_size_grid",
 13279          "pnd_agenda_input_t",
 13280          "pnd_agenda_input",
 13281          "pnd_agenda_input_names",
 13282          "dpnd_data_dx_names",
 13285       GIN(
"t_min", 
"t_max", 
"t_min_psd", 
"t_max_psd", 
"picky", 
"noisy"),
 13286       GIN_TYPE(
"Numeric", 
"Numeric", 
"Numeric", 
"Numeric", 
"Index", 
"Index"),
 13287       GIN_DEFAULT(
"0", 
"280.", 
"180", 
"273.15", 
"0", 
"0"),
 13288       GIN_DESC(
"Low temperature limit to calculate a psd.",
 13289                "High temperature limit to calculate a psd.",
 13290                "Low temperature limit to use as paramtrization temperature.",
 13291                "High temperature limit to use as paramtrization temperature.",
 13292                "Flag whether to be strict with parametrization value checks.",
 13293                "Distribution parameter perturbance flag")));
 13296       NAME(
"psdMilbrandtYau05"),
 13298           "Calculates *psd_data* and  *dpsd_data_dx* following Milbrandt and Yau (2005)\n" 13299           "two moment particle size distribution for cloud water, cloud ice,\n" 13300           "rain, snow, graupel and hail, which is used in the GEM model.\n" 13302           "WSM for use in *pnd_agenda_array* for mapping *particle_bulkprop_field*\n" 13303           "to *pnd_field* using *pnd_fieldCalcFromParticleBulkProps*.\n" 13304           "Produces the particle size distribution values (dN/dD) and their\n" 13305           "derivates with respect to independent variables x by *dpnd_data_dx_names*\n" 13306           "over multiple particle sizes and atmospheric levels (or SWC/T\n" 13309           "*psd_size_grid* is considered to be in terms of maximum diameter.\n" 13310           "WC is considered to be in terms of mass content (or mass density),\n" 13311           "ie. units of [kg/m3]. N_tot in terms of number density, ie. units of [1/m3] ." 13313           "Derivatives with respect to WC and N_tot are obtained analytically.\n" 13315           "Six particle size distributions for the different hydrometeors are handled,\n" 13316           "governed by setting of *hydrometeor_type*, where \n" 13317           "    \"cloud_water\" selects cloud liquid water , \n" 13318           "    \"cloud_ice\" selects cloud ice, \n" 13319           "    \"snow\" selects snow, \n" 13320           "    \"rain\" selects rain, \n" 13321           "    \"graupel\" selects graupel, and \n" 13322           "    \"hail\" selects hail, \n" 13326           "*pnd_agenda_input_names* must include :\n" 13327           "    [\"X-mass_density\", \"X-number_density\" ]. \"X\" is an arbitrary name\n" 13328           "The entries in  *dpnd_data_dx_names* (ie. the allowed\n" 13329           "independent variablea ) can be \"X-mass_density\" and\\or \n" 13330           "\"X-number_density\".\n" 13332           "The validity range of WC is not limited. Negative WC will produce\n" 13333           "negative psd values following a distribution given by abs(WC), ie.\n" 13334           "abs(psd)=f(abs(WC)).\n" 13336           "If temperature is outside [*t_min*,*t_max*] psd=0 and dpsd=0 if\n" 13337           "picky=0, or an error is thrown if picky=1.\n" 13341       OUT(
"psd_data", 
"dpsd_data_dx"),
 13345       IN(
"psd_size_grid",
 13346          "pnd_agenda_input_t",
 13347          "pnd_agenda_input",
 13348          "pnd_agenda_input_names",
 13349          "dpnd_data_dx_names"),
 13350       GIN(
"hydrometeor_type", 
"t_min", 
"t_max", 
"picky"),
 13351       GIN_TYPE(
"String", 
"Numeric", 
"Numeric", 
"Index"),
 13354           "Hydrometeor type (see above description).",
 13355           "Low temperature limit to calculate a psd.",
 13356           "High temperature limit to calculate a psd.",
 13357           "Flag whether to be strict with parametrization value checks.")));
 13360       NAME(
"psdModifiedGamma"),
 13362           "Modified gamma distribution PSD using n0, mu, la and ga as parameters.\n" 13364           "The modified gamma distribution is a 4-parameter (n0, mu, la and ga)\n" 13365           "distribution [Petty & Huang, JAS, 2011)]:\n" 13366           "   n(x) = n0 * x^mu * exp( -la*x^ga )\n" 13367           "where x is particle size or mass.\n" 13369           "The parameters can be given in two ways, either by *pnd_agenda_input* or\n" 13370           "as GIN arguments. The first option allows the parameter to vary, while\n" 13371           "in the second case the parameter gets a constant value. If a parameter is\n" 13372           "part of *pnd_agenda_input*, the corresponding GIN argument must be set\n" 13373           "to NaN (which is default). This means that the number of columns in\n" 13374           "*pnd_agenda_input* and the number of non-NaN choices for n0, mu, la and\n" 13375           "ga must add up to four.\n" 13377           "Data in *pnd_agenda_input* are linked to the MGD parameters in term of\n" 13378           "order, the naming in *pnd_agenda_input_names* is free. If all four\n" 13379           "parameteras are specified by *pnd_agenda_input*, the data in the first\n" 13380           "column are taken as n0, the second column as mu etc. If a parameter is\n" 13381           "given as a GIN argument, the columns are just shifted with one position.\n" 13382           "For example, if mu and ga are specified as GIN arguments, *pnd_agenda_input*\n" 13383           "shall have two columns, with n0-values in the first one and la-values in\n" 13384           "the second one.\n" 13386           "The GIN route is especially suitable for selecting special cases of MGD.\n" 13387           "For example, by setting mu=0 and ga=1, an exponential PSD is obtained:\n" 13388           "   n(x) = n0 * exp( -la*x )\n" 13389           "With mu=1 and ga=1, the gamma PSD is obtained:\n" 13390           "   n(x) = n0 * x^mu *exp( -la*x )\n" 13391           "There should be little overhead in using the method for exponential\n" 13392           "and gamma PSDs, there is an internal switch to dedicated expressions\n" 13393           "for those PSDs.\n" 13395           "Derivatives can only be obtained for parameters that are specified by\n" 13396           "*pnd_agenda_input*.\n" 13398           "If temperature is outside [*t_min*,*t_max*] psd=0 and dpsd=0 if\n" 13399           "picky=0, or an error is thrown if picky=1.\n" 13401           "These requirements apply to the MGD parameters:\n" 13405       OUT(
"psd_data", 
"dpsd_data_dx"),
 13409       IN(
"psd_size_grid",
 13410          "pnd_agenda_input_t",
 13411          "pnd_agenda_input",
 13412          "pnd_agenda_input_names",
 13413          "dpnd_data_dx_names"),
 13414       GIN(
"n0", 
"mu", 
"la", 
"ga", 
"t_min", 
"t_max", 
"picky"),
 13428           "Low temperature limit to calculate a psd.",
 13429           "High temperature limit to calculate a psd.",
 13430           "Flag whether to be strict with parametrization value checks.")));
 13433       NAME(
"psdModifiedGammaMass"),
 13435           "Modified gamma distribution (MGD) PSD, with mass content as input.\n" 13437           "See *psdModifiedGamma* for a defintion of MGD parameters and how\n" 13438           "this PSD is handled in ARTS. Only deviations with respect to\n" 13439           "*psdModifiedGamma* are described here.\n" 13441           "This version of MGD PSD takes mass content as first input argument.\n" 13442           "This means that the first column of *pnd_agenda_input* shall hold\n" 13443           "mass content data.\n" 13445           "The mass content basically replaces one of the standard parameters\n" 13446           "(n0, mu, la and ga). This parameter is denoted as the dependent one.\n" 13447           "The dependent parameter is selected by setting the corresponding GIN\n" 13448           "to -999. So far only n0 and la are allowed to be dependent.\n" 13450           "Regarding remaining columns in *pnd_agenda_input* and constant\n" 13451           "parameter values (by GIN) follows the same principle as for\n" 13452           "*psdModifiedGamma* except that mass is always in column one (as\n" 13453           "mentioned) and that there is no position in *pnd_agenda_input*\n" 13454           "for the dependent parameter.\n" 13456           "These requirements apply to the MGD parameters:\n" 13457           "  mu + scat_species_b + 1 > 0\n" 13460           "  If la is the dependent parameter, mass content must be > 0.\n"),
 13462       OUT(
"psd_data", 
"dpsd_data_dx"),
 13466       IN(
"psd_size_grid",
 13467          "pnd_agenda_input_t",
 13468          "pnd_agenda_input",
 13469          "pnd_agenda_input_names",
 13470          "dpnd_data_dx_names",
 13473       GIN(
"n0", 
"mu", 
"la", 
"ga", 
"t_min", 
"t_max", 
"picky"),
 13487           "Low temperature limit to calculate a psd.",
 13488           "High temperature limit to calculate a psd.",
 13489           "Flag whether to be strict with parametrization value checks.")));
 13492       NAME(
"psdModifiedGammaMassNtot"),
 13494           "Modified gamma distribution PSD, with mass content and total number\n" 13495           "density (Ntot) as inputs.\n" 13497           "This version of MGD PSD works as *psdModifiedGammaMass*, but takes\n" 13498           "mass content and total number density as first two arguments. This\n" 13499           "means that the first and second column of *pnd_agenda_input* shall\n" 13500           "hold mass content and Ntot, respectively. Accordingly, the number\n" 13501           "of dependent parameters is two.\n" 13503           "These requirements apply:\n" 13507           "  Ntot must be > 0.\n"),
 13509       OUT(
"psd_data", 
"dpsd_data_dx"),
 13513       IN(
"psd_size_grid",
 13514          "pnd_agenda_input_t",
 13515          "pnd_agenda_input",
 13516          "pnd_agenda_input_names",
 13517          "dpnd_data_dx_names",
 13520       GIN(
"n0", 
"mu", 
"la", 
"ga", 
"t_min", 
"t_max", 
"picky"),
 13534           "Low temperature limit to calculate a psd.",
 13535           "High temperature limit to calculate a psd.",
 13536           "Flag whether to be strict with parametrization value checks.")));
 13539       NAME(
"psdModifiedGammaMassMeanParticleMass"),
 13541           "Modified gamma distribution PSD, with mass content and mean particle\n" 13542           "mass (Mmean) as inputs.\n" 13544           "\"Mean particle mass\" is here defined as the mass content divided with\n" 13545           "the total number density.\n" 13547           "This version of MGD PSD works as *psdModifiedGammaMass*, but takes\n" 13548           "mass content and mean particle mass as first two arguments. This\n" 13549           "means that the first and second column of *pnd_agenda_input* shall\n" 13550           "hold mass content and Mmean, respectively. Accordingly, the number\n" 13551           "of dependent parameters is two.\n" 13553           "These requirements apply to the MGD parameters:\n" 13557           "  Mmean must be > 0.\n"),
 13559       OUT(
"psd_data", 
"dpsd_data_dx"),
 13563       IN(
"psd_size_grid",
 13564          "pnd_agenda_input_t",
 13565          "pnd_agenda_input",
 13566          "pnd_agenda_input_names",
 13567          "dpnd_data_dx_names",
 13570       GIN(
"n0", 
"mu", 
"la", 
"ga", 
"t_min", 
"t_max", 
"picky"),
 13584           "Low temperature limit to calculate a psd.",
 13585           "High temperature limit to calculate a psd.",
 13586           "Flag whether to be strict with parametrization value checks.")));
 13589       NAME(
"psdModifiedGammaMassSingleMoment"),
 13591           "Modified gamma distribution PSD, with mass content as input.\n" 13593           "The intercept parameter N0 is assumed dependent on the slope parameter\n" 13594           "lambda, such that N0=N_alpha*lambda^n_b with fixed N_alpha and n_b.\n" 13595           "This is a common form for many PSD parametrizations for use with\n" 13596           "single-moment mass-based schemes.\n" 13598           "This version of MGD PSD takes mass content as first input argument.\n" 13599           "This means that the first column of *pnd_agenda_input* shall hold\n" 13600           "mass content data. The dependent parameter is assumed to be lambda.\n"),
 13602       OUT(
"psd_data", 
"dpsd_data_dx"),
 13606       IN(
"psd_size_grid",
 13607          "pnd_agenda_input_t",
 13608          "pnd_agenda_input",
 13609          "pnd_agenda_input_names",
 13610          "dpnd_data_dx_names",
 13613       GIN(
"n_alpha", 
"n_b", 
"mu", 
"gamma", 
"t_min", 
"t_max", 
"picky"),
 13627           "Low temperature limit to calculate a psd.",
 13628           "High temperature limit to calculate a psd.",
 13629           "Flag whether to be strict with parametrization value checks.")));
 13632       NAME(
"psdModifiedGammaMassXmean"),
 13634           "Modified gamma distribution PSD, with mass content and mean size\n" 13635           "(Xmean) as inputs.\n" 13637           "\"Mean size\" is here defined as mass weighted size. Remembering that\n" 13638           "mass is a*x^b, this mean size can be expressed as M_b+1/M_b where M_b\n" 13639           "is b:th moment of the PSD (see e.g. Eq. 17 in Petty&Huang, JAS, 2011).\n" 13641           "This version of MGD PSD works as *psdModifiedGammaMass*, but takes\n" 13642           "mass content and mass size as first two arguments. This means that\n" 13643           "the first and second column of *pnd_agenda_input* shall hold mass\n" 13644           "content and Xmean, respectively. Accordingly, the number of dependent\n" 13645           "parameters is two.\n" 13647           "These requirements apply to the MGD parameters:\n" 13648           "  mu + scat_species_b + 1 > 0\n" 13651           "  Xmean must be > 0.\n"),
 13653       OUT(
"psd_data", 
"dpsd_data_dx"),
 13657       IN(
"psd_size_grid",
 13658          "pnd_agenda_input_t",
 13659          "pnd_agenda_input",
 13660          "pnd_agenda_input_names",
 13661          "dpnd_data_dx_names",
 13664       GIN(
"n0", 
"mu", 
"la", 
"ga", 
"t_min", 
"t_max", 
"picky"),
 13678           "Low temperature limit to calculate a psd.",
 13679           "High temperature limit to calculate a psd.",
 13680           "Flag whether to be strict with parametrization value checks.")));
 13683       NAME(
"psdModifiedGammaMassXmedian"),
 13685           "Modified gamma distribution PSD, with mass content and median size\n" 13686           "(Xmedian) as inputs.\n" 13689           "This version of MGD PSD works as *psdModifiedGammaMass*, but takes\n" 13690           "mass content and median size as first two arguments. This means that\n" 13691           "the first and second column of *pnd_agenda_input* shall hold mass\n" 13692           "content and Xmedian, respectively. Accordingly, the number of\n" 13693           "dependent parameters is two.\n" 13695           "These requirements apply to the MGD parameters:\n" 13696           "  mu + scat_species_b + 1 > 0\n" 13699           "  Xmedian must be > 0.\n"),
 13701       OUT(
"psd_data", 
"dpsd_data_dx"),
 13705       IN(
"psd_size_grid",
 13706          "pnd_agenda_input_t",
 13707          "pnd_agenda_input",
 13708          "pnd_agenda_input_names",
 13709          "dpnd_data_dx_names",
 13712       GIN(
"n0", 
"mu", 
"la", 
"ga", 
"t_min", 
"t_max", 
"picky"),
 13726           "Low temperature limit to calculate a psd.",
 13727           "High temperature limit to calculate a psd.",
 13728           "Flag whether to be strict with parametrization value checks.")));
 13731       NAME(
"psdMonoDispersive"),
 13733           "Mono-dispersive PSD, with number density given.\n" 13735           "This is a 1-parameter PSD, i.e. *pnd_agenda_input* shall have one\n" 13736           "column and *pnd_agenda_input_names* shall contain a single string.\n" 13737           "The input data in *pnd_agenda_input* shall be number densities, in\n" 13738           "unit of [#/m3]. The naming used is *pnd_agenda_input_names* is free\n" 13739           "but the same name must be used in *particle_bulkprop_names* and\n" 13740           "*dpnd_data_dx_names*.\n" 13742           "The method checks that the scattering species indicated (by\n" 13743           "*species_index*) has a single element, and just inserts the provided\n" 13744           "number density in *psd_data*.\n" 13746           "If temperature is outside [*t_min*,*t_max*] psd=0 and dpsd=0 if\n" 13747           "picky=0, or an error is thrown if picky=1.\n"),
 13749       OUT(
"psd_data", 
"dpsd_data_dx"),
 13753       IN(
"pnd_agenda_input_t",
 13754          "pnd_agenda_input",
 13755          "pnd_agenda_input_names",
 13756          "dpnd_data_dx_names",
 13758       GIN(
"species_index", 
"t_min", 
"t_max", 
"picky"),
 13759       GIN_TYPE(
"Index", 
"Numeric", 
"Numeric", 
"Index"),
 13762           "The index of the scattering species of concern (0-based).",
 13763           "Low temperature limit to calculate a psd.",
 13764           "High temperature limit to calculate a psd.",
 13765           "Flag whether to be strict with parametrization value checks.")));
 13768       NAME(
"psdMonoMass"),
 13770           "Mono-dispersive PSD, with mass content given.\n" 13772           "This is a 1-parameter PSD, i.e. *pnd_agenda_input* shall have one\n" 13773           "column and *pnd_agenda_input_names* shall contain a single string.\n" 13774           "The input data in *pnd_agenda_input* shall be mass contents, in\n" 13775           "unit of [#/m3]. The naming used is *pnd_agenda_input_names* is free\n" 13776           "but the same name must be used in *particle_bulkprop_names* and\n" 13777           "*dpnd_data_dx_names*.\n" 13779           "The method checks that the scattering species indicated (by\n" 13780           "*species_index*) has a single element, and sets *psd_data* based\n" 13781           "on the mass contents given and the particle mass (derived from\n" 13784           "If temperature is outside [*t_min*,*t_max*] psd=0 and dpsd=0 if\n" 13785           "picky=0, or an error is thrown if picky=1.\n"),
 13787       OUT(
"psd_data", 
"dpsd_data_dx"),
 13791       IN(
"pnd_agenda_input_t",
 13792          "pnd_agenda_input",
 13793          "pnd_agenda_input_names",
 13794          "dpnd_data_dx_names",
 13796       GIN(
"species_index", 
"t_min", 
"t_max", 
"picky"),
 13797       GIN_TYPE(
"Index", 
"Numeric", 
"Numeric", 
"Index"),
 13800           "The index of the scattering species of concern (0-based).",
 13801           "Low temperature limit to calculate a psd.",
 13802           "High temperature limit to calculate a psd.",
 13803           "Flag whether to be strict with parametrization value checks.")));
 13806       NAME(
"psdSeifertBeheng06"),
 13808           "Calculates *psd_data* and *dpsd_data_dx* following Seifert and Beheng (2006)\n" 13809           "two moment particle size distribution for cloud water, cloud ice,\n" 13810           "rain, snow, graupel and hail, which is used in the ICON model.\n" 13812           "WSM for use in *pnd_agenda_array* for mapping *particle_bulkprop_field*\n" 13813           "to *pnd_field* using *pnd_fieldCalcFromParticleBulkProps*.\n" 13814           "Produces the particle size distribution values (dN/dD) and their\n" 13815           "derivates with respect to independent variables x by *dpnd_data_dx_names*\n" 13816           "over multiple particle sizes and atmospheric levels (or SWC/T\n" 13819           "*psd_size_grid* is considered to be in terms of mass.\n" 13820           "WC is considered to be in terms of mass content (or mass density),\n" 13821           "ie. units of [kg/m3]. N_tot in terms of number density, ie. units of [1/m3] ." 13823           "Derivatives with respect to WC and N_tot are obtained analytically.\n" 13825           "Six particle size distributions for the different hydrometeors are handled,\n" 13826           "governed by setting of *hydrometeor_type*, where \n" 13827           "    \"cloud_water\" selects cloud liquid water , \n" 13828           "    \"cloud_ice\" selects cloud ice, \n" 13829           "    \"snow\" selects snow, \n" 13830           "    \"rain\" selects rain, \n" 13831           "    \"graupel\" selects graupel, and \n" 13832           "    \"hail\" selects hail, \n" 13836           "*pnd_agenda_input_names* must include :\n" 13837           "    [\"X-mass_density\", \"X-number_density\" ]. \"X\" is an arbitrary name\n" 13838           "The entries in  *dpnd_data_dx_names* (ie. the allowed\n" 13839           "independent variablea ) can be \"X-mass_density\" and\\or \n" 13840           "\"X-number_density\".\n" 13842           "The validity range of WC is not limited. Negative WC will produce\n" 13843           "negative psd values following a distribution given by abs(WC), ie.\n" 13844           "abs(psd)=f(abs(WC)).\n" 13846           "If temperature is outside [*t_min*,*t_max*] psd=0 and dpsd=0 if\n" 13847           "picky=0, or an error is thrown if picky=1.\n" 13851       OUT(
"psd_data", 
"dpsd_data_dx"),
 13855       IN(
"psd_size_grid",
 13856          "pnd_agenda_input_t",
 13857          "pnd_agenda_input",
 13858          "pnd_agenda_input_names",
 13859          "dpnd_data_dx_names"),
 13860       GIN(
"hydrometeor_type", 
"t_min", 
"t_max", 
"picky"),
 13861       GIN_TYPE(
"String", 
"Numeric", 
"Numeric", 
"Index"),
 13864           "Hydrometeor type (see above description).",
 13865           "Low temperature limit to calculate a psd.",
 13866           "High temperature limit to calculate a psd.",
 13867           "Flag whether to be strict with parametrization value checks.")));
 13870       NAME(
"psdWangEtAl16"),
 13872           "Wang et al. [2016] particle size distribution for rain.\n" 13874           "Reference: Wang et al., Investigation of liquid cloud microphysical\n" 13875           "properties of deep convective systems: 1. Parameterization raindrop\n" 13876           "size distribution and its application ..., 2016.\n" 13878           "This is a 1-parameter PSD, i.e. *pnd_agenda_input* shall have one\n" 13879           "column and *pnd_agenda_input_names* shall contain a single string.\n" 13880           "The input data in *pnd_agenda_input* shall be rain mass content in\n" 13881           "unit of [kg/m3]. The naming used is *pnd_agenda_input_names* is free\n" 13882           "but the same name must be used in *particle_bulkprop_names* and\n" 13883           "*dpnd_data_dx_names*.\n" 13885           "Particles are assumed to be near-spherical, ie. *psd_size_grid* can\n" 13886           "either be in terms of volume (or mass) equivalent diameter or\n" 13887           "maximum diameter.\n" 13889           "Derivatives are obtained analytically.\n" 13891           "The validity range of mass content is not limited. Negative mass\n" 13892           "contents will produce negative psd values following a distribution\n" 13893           "given by abs(RWC), ie. abs(psd)=f(abs(RWC)).\n" 13895           "If temperature is outside [*t_min*,*t_max*] psd=0 and dpsd=0 if\n" 13896           "picky=0, or an error is thrown if picky=1.\n"),
 13897       AUTHORS(
"Jana Mendrok, Patrick Eriksson"),
 13898       OUT(
"psd_data", 
"dpsd_data_dx"),
 13902       IN(
"psd_size_grid",
 13903          "pnd_agenda_input_t",
 13904          "pnd_agenda_input",
 13905          "pnd_agenda_input_names",
 13906          "dpnd_data_dx_names",
 13909       GIN(
"t_min", 
"t_max", 
"picky"),
 13910       GIN_TYPE(
"Numeric", 
"Numeric", 
"Index"),
 13913           "Low temperature limit to calculate a psd.",
 13914           "High temperature limit to calculate a psd.",
 13915           "Flag whether to be strict with parametrization value checks.")));
 13918       NAME(
"p_gridDensify"),
 13920           "A simple way to make *p_grid* more dense.\n" 13922           "The method includes new values in *p_grid*. For each intermediate\n" 13923           "pressure range, *nfill* points are added. That is, setting *nfill*\n" 13924           "to zero returns an unmodified copy of *p_grid_old*. The number of\n" 13925           "elements of the new *p_grid* is (n0-1)*(1+nfill)+1, where n0 is the\n" 13926           "length of *p_grid_old*.\n" 13928           "The new points are distributed equidistant in log(p).\n" 13930           "For safety, new grid and old grid Vectors are not allowed to be the\n" 13931           "same variable (both will be needed later on for regridding of the\n" 13932           "atmospheric fields), and atmospheric field related *checked WSV are\n" 13933           "reset to 0 (unchecked).\n"),
 13934       AUTHORS(
"Patrick Eriksson, Jana Mendrok"),
 13935       OUT(
"p_grid", 
"atmfields_checked", 
"atmgeom_checked", 
"cloudbox_checked"),
 13940       GIN(
"p_grid_old", 
"nfill"),
 13944                "A copy of the current (the old) p_grid. Not allowed to be " 13945                "the same variable as the output *p_grid*.",
 13947                "Number of points to add between adjacent pressure points." 13948                "The default value (-1) results in an error.")));
 13951       NAME(
"p_gridFromZRaw"),
 13953           "Sets *p_grid* according to input atmosphere's raw z_field, derived\n" 13954           "e.g. from *AtmRawRead*.\n" 13955           "Attention: as default only pressure values for altitudes >= 0 are\n" 13956           "extracted. If negative altitudes shall also be selected, set no_neg=0.\n"),
 13957       AUTHORS(
"Claudia Emde, Jana Mendrok"),
 13966       GIN_DESC(
"Exclude negative altitudes.")));
 13969       NAME(
"lat_gridFromZRaw"),
 13971           "Sets *lat_grid* according to input atmosphere's *z_field_raw*\n"),
 13984       NAME(
"lon_gridFromZRaw"),
 13986           "Sets *lon_grid* according to input atmosphere's *z_field_raw*\n"),
 13999       NAME(
"atm_gridsFromZRaw"),
 14001           "Calls *p_gridFromZRaw*, *lat_gridFromZRaw* and *lon_gridFromZRaw*\n"),
 14003       OUT(
"p_grid", 
"lat_grid", 
"lon_grid"),
 14011       GIN_DESC(
"Exclude negative altitudes.")));
 14014       NAME(
"p_gridFromGasAbsLookup"),
 14015       DESCRIPTION(
"Sets *p_grid* to the pressure grid of *abs_lookup*.\n"),
 14028       NAME(
"p_gridRefine"),
 14030           "Provides refined pressure grid.\n" 14032           "Created new pressure grid has (log10) spacings below a given\n" 14035           "For safety, new grid and old grid Vectors are not allowed to be the\n" 14036           "same variable (both will be needed later on for regridding of the\n" 14037           "atmospheric fields), and atmospheric field related *checked WSV are\n" 14038           "reset to 0 (unchecked).\n"),
 14039       AUTHORS(
"Stefan Buehler, Jana Mendrok"),
 14040       OUT(
"p_grid", 
"atmfields_checked", 
"atmgeom_checked", 
"cloudbox_checked"),
 14045       GIN(
"p_grid_old", 
"p_step"),
 14049                "A copy of the current (the old) p_grid. Not allowed to be " 14050                "the same variable as the output *p_grid*.",
 14052                "Maximum step in log10(p[Pa]). If the pressure grid is " 14053                "coarser than this, additional points are added until each " 14054                "log step is smaller than this.")));
 14057       NAME(
"RadiationFieldSpectralIntegrate"),
 14059           "Integrates fields like *spectral_irradiance_field* or *cloudbox_field*\n" 14060           "over frequency.\n" 14061           "Important, the first dimension must be the frequency dimension!\n" 14062           "If a field  like *cloudbox_field* is input, the stokes dimension\n" 14063           "is also removed.\n"),
 14066       GOUT(
"radiation_field"),
 14070       GIN(
"spectral_radiation_field"),
 14076       NAME(
"line_irradianceCalcForSingleSpeciesNonOverlappingLinesPseudo2D"),
 14077       DESCRIPTION(
"Computes the line irradiance and line transmission\n" 14079                   "Presently only works for 1D atmospheres\n"),
 14081       OUT(
"line_irradiance", 
"line_transmission"),
 14086          "abs_lines_per_species",
 14093          "surface_props_data",
 14097          "iy_surface_agenda",
 14098          "iy_cloudbox_agenda",
 14099          "propmat_clearsky_agenda"),
 14100       GIN(
"df", 
"nz", 
"nf", 
"r"),
 14101       GIN_TYPE(
"Numeric", 
"Index", 
"Index", 
"Numeric"),
 14103       GIN_DESC(
"relative frequency to line center",
 14104                "number of zeniths",
 14105                "number of frequencies per line",
 14106                "Distance assumed when computing local (1-T)")));
 14109       NAME(
"RationalAdd"),
 14111           "Adds a Rational and a value (out = in+value).\n" 14113           "The result can either be stored in the same or another Rational.\n" 14114           "(in and out can be the same varible, but not out and value)\n"),
 14121       GIN(
"in", 
"value"),
 14124       GIN_DESC(
"Input Rational.", 
"Value to add.")));
 14127       NAME(
"RationalInvScale"),
 14129           "Inversely scales/divides a Rational with a value (out = in/value).\n" 14131           "The result can either be stored in the same or another Rational.\n" 14132           "(in and out can be the same varible, but not out and value)\n"),
 14139       GIN(
"in", 
"value"),
 14142       GIN_DESC(
"Input Rational.", 
"Scaling Rational.")));
 14145       NAME(
"RationalScale"),
 14147           "Scales/multiplies a Rational with a value (out = in*value).\n" 14149           "The result can either be stored in the same or another Rational.\n" 14150           "(in and out can be the same varible, but not out and value)\n"),
 14157       GIN(
"in", 
"value"),
 14160       GIN_DESC(
"Input Rational.", 
"Scaling value.")));
 14163       NAME(
"RationalSet"),
 14164       DESCRIPTION(
"Sets a Rational workspace variable to the given value.\n"),
 14171       GIN(
"numerator", 
"denominator"),
 14174       GIN_DESC(
"The numerator.", 
"The denominator.")));
 14177       NAME(
"ReadArrayOfARTSCAT"),
 14178       DESCRIPTION(
"Reads an old Array<ArrayOfLineRecord> ARTSCAT file.\n" 14180                   "Note that the ARTSCAT-5 had quantum numbers and options\n" 14181                   "stored inside it but that the options will overwrite that\n" 14182                   "information.  Be careful setting the options!\n"),
 14183       AUTHORS(
"Stefan Buehler", 
"Richard Larsson"),
 14189       GIN(
"filename", 
"fmin", 
"fmax", 
"globalquantumnumbers",
 14190           "localquantumnumbers", 
"normalization_option", 
"mirroring_option",
 14191           "population_option", 
"lineshapetype_option", 
"cutoff_option",
 14192           "cutoff_value", 
"linemixinglimit_value"),
 14193       GIN_TYPE(
"String", 
"Numeric", 
"Numeric", 
"String", 
"String", 
"String",
 14194                "String", 
"String", 
"String", 
"String", 
"Numeric", 
"Numeric"),
 14196                  "None", 
"750e9", 
"-1"),
 14197       GIN_DESC(
"Name of the ARTSCAT file",
 14198                "Minimum frequency of read lines",
 14199                "Maximum frequency of read lines",
 14200                "Global quantum number list (space-separated)",
 14201                "Local quantum number list (space-separated)",
 14202                "Normalization option, see *abs_linesSetNormalization*",
 14203                "Mirroring option, see *abs_linesSetMirroring*",
 14204                "Population option, see *abs_linesSetPopulation*",
 14205                "Lineshape option, see *abs_linesSetLineShapeType*",
 14206                "Cutoff option, see *abs_linesSetCutoff*",
 14207                "Cutoff value, see *abs_linesSetCutoff*",
 14208                "Line mixing limit, see *abs_linesSetLinemixingLimit*")));
 14211       NAME(
"ReadSplitARTSCAT"),
 14212       DESCRIPTION(
"Reads several old ArrayOfLineRecord ARTSCAT file\n" 14214                   "Note that the ARTSCAT-5 had quantum numbers and options\n" 14215                   "stored inside it but that the options will overwrite that\n" 14216                   "information.  Be careful setting the options!\n"),
 14217       AUTHORS(
"Oliver Lemke", 
"Richard Larsson"),
 14223       GIN(
"basename", 
"fmin", 
"fmax", 
"globalquantumnumbers", 
"localquantumnumbers",
 14224           "ignore_missing", 
"normalization_option", 
"mirroring_option",
 14225           "population_option", 
"lineshapetype_option", 
"cutoff_option",
 14226           "cutoff_value", 
"linemixinglimit_value"),
 14227       GIN_TYPE(
"String", 
"Numeric", 
"Numeric", 
"String", 
"String", 
"Index", 
"String",
 14228                "String", 
"String", 
"String", 
"String", 
"Numeric", 
"Numeric"),
 14229       GIN_DEFAULT(
NODEF, 
"0", 
"1e99", 
"", 
"", 
"0", 
"None", 
"None", 
"LTE", 
"VP",
 14230                  "None", 
"750e9", 
"-1"),
 14232                "Minimum frequency of read lines",
 14233                "Maximum frequency of read lines",
 14234                "Global quantum number list (space-separated)",
 14235                "Local quantum number list (space-separated)",
 14236                "Ignores instead of throws if an *abs_species* is missing",
 14237                "Normalization option, see *abs_linesSetNormalization*",
 14238                "Mirroring option, see *abs_linesSetMirroring*",
 14239                "Population option, see *abs_linesSetPopulation*",
 14240                "Lineshape option, see *abs_linesSetLineShapeType*",
 14241                "Cutoff option, see *abs_linesSetCutoff*",
 14242                "Cutoff value, see *abs_linesSetCutoff*",
 14243                "Line mixing limit, see *abs_linesSetLinemixingLimit*")));
 14246       NAME(
"ReadARTSCAT"),
 14247       DESCRIPTION(
"Reads an old ArrayOfLineRecord ARTSCAT file\n" 14249                   "Note that the ARTSCAT-5 had quantum numbers and options\n" 14250                   "stored inside it but that the options will overwrite that\n" 14251                   "information.  Be careful setting the options!\n"),
 14252       AUTHORS(
"Stefan Buehler", 
"Richard Larsson"),
 14258       GIN(
"filename", 
"fmin", 
"fmax", 
"globalquantumnumbers",
 14259           "localquantumnumbers", 
"normalization_option", 
"mirroring_option",
 14260           "population_option", 
"lineshapetype_option", 
"cutoff_option",
 14261           "cutoff_value", 
"linemixinglimit_value"),
 14262       GIN_TYPE(
"String", 
"Numeric", 
"Numeric", 
"String", 
"String", 
"String",
 14263                "String", 
"String", 
"String", 
"String", 
"Numeric", 
"Numeric"),
 14265                  "None", 
"750e9", 
"-1"),
 14266       GIN_DESC(
"Name of the ARTSCAT file",
 14267                "Minimum frequency of read lines",
 14268                "Maximum frequency of read lines",
 14269                "Global quantum number list (space-separated)",
 14270                "Local quantum number list (space-separated)",
 14271                "Normalization option, see *abs_linesSetNormalization*",
 14272                "Mirroring option, see *abs_linesSetMirroring*",
 14273                "Population option, see *abs_linesSetPopulation*",
 14274                "Lineshape option, see *abs_linesSetLineShapeType*",
 14275                "Cutoff option, see *abs_linesSetCutoff*",
 14276                "Cutoff value, see *abs_linesSetCutoff*",
 14277                "Line mixing limit, see *abs_linesSetLinemixingLimit*")));
 14280       NAME(
"ReadHITRAN"),
 14283                   "The HITRAN type switch can be:\n" 14284                   "\t\"Pre2004\"\t-\tfor old format\n" 14285                   "\t\"Post2004\"\t-\tfor new format\n" 14286                   "\t\"Online\"\t-\tfor the online format with quantum numbers (highly experimental)\n" 14288                   "Be careful setting the options!\n" 14290       AUTHORS(
"Hermann Berg", 
"Thomas Kuhn", 
"Richard Larsson"),
 14296       GIN(
"filename", 
"fmin", 
"fmax", 
"globalquantumnumbers", 
"localquantumnumbers",
 14297           "hitran_type", 
"normalization_option", 
"mirroring_option",
 14298           "population_option", 
"lineshapetype_option", 
"cutoff_option",
 14299           "cutoff_value", 
"linemixinglimit_value"),
 14300       GIN_TYPE(
"String", 
"Numeric", 
"Numeric", 
"String", 
"String", 
"String", 
"String",
 14301                "String", 
"String", 
"String", 
"String", 
"Numeric", 
"Numeric"),
 14302       GIN_DEFAULT(
NODEF, 
"0", 
"1e99", 
"", 
"", 
"Post2004", 
"None", 
"None", 
"LTE", 
"VP",
 14303                  "None", 
"750e9", 
"-1"),
 14304       GIN_DESC(
"Name of the HITRAN file",
 14305                "Minimum frequency of read lines",
 14306                "Maximum frequency of read lines",
 14307                "Global quantum number list (space-separated)",
 14308                "Local quantum number list (space-separated)",
 14309                "Method to use to read the line data",
 14310                "Normalization option, see *abs_linesSetNormalization*",
 14311                "Mirroring option, see *abs_linesSetMirroring*",
 14312                "Population option, see *abs_linesSetPopulation*",
 14313                "Lineshape option, see *abs_linesSetLineShapeType*",
 14314                "Cutoff option, see *abs_linesSetCutoff*",
 14315                "Cutoff value, see *abs_linesSetCutoff*",
 14316                "Line mixing limit, see *abs_linesSetLinemixingLimit*")));
 14319       NAME(
"ReadLBLRTM"),
 14322                   "Be careful setting the options!\n"),
 14329       GIN(
"filename", 
"fmin", 
"fmax", 
"globalquantumnumbers",
 14330           "localquantumnumbers", 
"normalization_option", 
"mirroring_option",
 14331           "population_option", 
"lineshapetype_option", 
"cutoff_option",
 14332           "cutoff_value", 
"linemixinglimit_value"),
 14333       GIN_TYPE(
"String", 
"Numeric", 
"Numeric", 
"String", 
"String", 
"String",
 14334                "String", 
"String", 
"String", 
"String", 
"Numeric", 
"Numeric"),
 14336                  "None", 
"750e9", 
"-1"),
 14337       GIN_DESC(
"Name of the LBLRTM file",
 14338                "Minimum frequency of read lines",
 14339                "Maximum frequency of read lines",
 14340                "Global quantum number list (space-separated)",
 14341                "Local quantum number list (space-separated)",
 14342                "Normalization option, see *abs_linesSetNormalization*",
 14343                "Mirroring option, see *abs_linesSetMirroring*",
 14344                "Population option, see *abs_linesSetPopulation*",
 14345                "Lineshape option, see *abs_linesSetLineShapeType*",
 14346                "Cutoff option, see *abs_linesSetCutoff*",
 14347                "Cutoff value, see *abs_linesSetCutoff*",
 14348                "Line mixing limit, see *abs_linesSetLinemixingLimit*")));
 14351       NAME(
"ReadMytran2"),
 14354                   "Be careful setting the options!\n"),
 14355       AUTHORS(
"Axel von Engeln", 
"Stefan Buehler", 
"Richard Larsson"),
 14361       GIN(
"filename", 
"fmin", 
"fmax", 
"globalquantumnumbers",
 14362           "localquantumnumbers", 
"normalization_option", 
"mirroring_option",
 14363           "population_option", 
"lineshapetype_option", 
"cutoff_option",
 14364           "cutoff_value", 
"linemixinglimit_value"),
 14365       GIN_TYPE(
"String", 
"Numeric", 
"Numeric", 
"String", 
"String", 
"String",
 14366                "String", 
"String", 
"String", 
"String", 
"Numeric", 
"Numeric"),
 14368                  "None", 
"750e9", 
"-1"),
 14369       GIN_DESC(
"Name of the Mytran2 file",
 14370                "Minimum frequency of read lines",
 14371                "Maximum frequency of read lines",
 14372                "Global quantum number list (space-separated)",
 14373                "Local quantum number list (space-separated)",
 14374                "Normalization option, see *abs_linesSetNormalization*",
 14375                "Mirroring option, see *abs_linesSetMirroring*",
 14376                "Population option, see *abs_linesSetPopulation*",
 14377                "Lineshape option, see *abs_linesSetLineShapeType*",
 14378                "Cutoff option, see *abs_linesSetCutoff*",
 14379                "Cutoff value, see *abs_linesSetCutoff*",
 14380                "Line mixing limit, see *abs_linesSetLinemixingLimit*")));
 14386                   "Be careful setting the options!\n"),
 14387       AUTHORS(
"Thomas Kuhn", 
"Richard Larsson"),
 14393       GIN(
"filename", 
"fmin", 
"fmax", 
"globalquantumnumbers",
 14394           "localquantumnumbers", 
"normalization_option", 
"mirroring_option",
 14395           "population_option", 
"lineshapetype_option", 
"cutoff_option",
 14396           "cutoff_value", 
"linemixinglimit_value"),
 14397       GIN_TYPE(
"String", 
"Numeric", 
"Numeric", 
"String", 
"String", 
"String",
 14398                "String", 
"String", 
"String", 
"String", 
"Numeric", 
"Numeric"),
 14400                  "None", 
"750e9", 
"-1"),
 14402                "Minimum frequency of read lines",
 14403                "Maximum frequency of read lines",
 14404                "Global quantum number list (space-separated)",
 14405                "Local quantum number list (space-separated)",
 14406                "Normalization option, see *abs_linesSetNormalization*",
 14407                "Mirroring option, see *abs_linesSetMirroring*",
 14408                "Population option, see *abs_linesSetPopulation*",
 14409                "Lineshape option, see *abs_linesSetLineShapeType*",
 14410                "Cutoff option, see *abs_linesSetCutoff*",
 14411                "Cutoff value, see *abs_linesSetCutoff*",
 14412                "Line mixing limit, see *abs_linesSetLinemixingLimit*")));
 14415       NAME(
"abs_linesTruncateGlobalQuantumNumbers"),
 14416       DESCRIPTION(
"Truncates all global quantum numbers\n" 14417                   "and then recombine the line list.\n"),
 14430       NAME(
"abs_linesWriteSplitXML"),
 14431       DESCRIPTION(
"Writes a split catalog, AbsorptionLines by AbsorptionLines.\n" 14433                   "There will be one unique file generated per AbsorptionLines in *abs_lines*.\n" 14435                   "The names of these files will be:\n" 14436                   "\tbasename+\".\"+AbsorptionLines.SpeciesName()+\".\"+to_string(N)+\".xml\"\n" 14437                   "where N>=0 and the species name is something line \"H2O\".\n"),
 14443       IN(
"output_file_format", 
"abs_lines"),
 14447       GIN_DESC(
"Path to store the files at")));
 14450       NAME(
"abs_linesWriteSpeciesSplitXML"),
 14451       DESCRIPTION(
"As *abs_linesWriteSplitXML* but writes an array\n" 14458       IN(
"output_file_format", 
"abs_lines"),
 14462       GIN_DESC(
"Path to store the files at")));
 14465       NAME(
"abs_lines_per_speciesWriteSplitXML"),
 14468                   "In addition, the structure of the files generated will not care about\n" 14469                   "generating identifiers for the order in *abs_species*\n"),
 14475       IN(
"output_file_format", 
"abs_lines_per_species"),
 14479       GIN_DESC(
"Path to store the files at")));
 14482       NAME(
"abs_lines_per_speciesWriteSpeciesSplitXML"),
 14483       DESCRIPTION(
"See *abs_linesWriteSpeciesSplitXML*\n" 14485                   "In addition, the structure of the files generated will not care about\n" 14486                   "generating identifiers for the order in *abs_species*\n"),
 14492       IN(
"output_file_format", 
"abs_lines_per_species"),
 14496       GIN_DESC(
"Path to store the files at")));
 14499       NAME(
"ReadNetCDF"),
 14500       DESCRIPTION(
"Reads a workspace variable from a NetCDF file.\n" 14502                   "This method can read variables of any group.\n" 14504                   "If the filename is omitted, the variable is read\n" 14505                   "from <basename>.<variable_name>.nc.\n"),
 14509       GOUT_TYPE(
"Vector, Matrix, Tensor3, Tensor4, Tensor5, ArrayOfVector," 14510                 "ArrayOfMatrix, GasAbsLookup"),
 14516       GIN_DESC(
"Name of the NetCDF file."),
 14526           "Reads a workspace variable from an XML file.\n" 14528           "This method can read variables of any group.\n" 14530           "If the filename is omitted, the variable is read\n" 14531           "from <basename>.<variable_name>.xml.\n" 14532           "If the given filename does not exist, this method will\n" 14533           "also look for files with an added .xml, .xml.gz and .gz extension\n"),
 14543       GIN_DESC(
"Name of the XML file."),
 14551       NAME(
"ReadXMLIndexed"),
 14552       DESCRIPTION(
"As *ReadXML*, but reads indexed file names.\n" 14554                   "The variable is read from a file with name:\n" 14555                   "   <filename>.<file_index>.xml.\n" 14556                   "where <file_index> is the value of *file_index*.\n" 14558                   "This means that *filename* shall here not include the .xml\n" 14559                   "extension. Omitting filename works as for *ReadXML*.\n"),
 14564       GOUT_DESC(
"Workspace variable to be read."),
 14566       GIN(
"filename", 
"digits"),
 14570           "File name. See above.",
 14571           "Equalize the widths of all numbers by padding with zeros as necessary.\n" 14572           "0 means no padding (default)."),
 14582           "Reduces a larger class to a smaller class of same size.\n" 14584           "The Reduce command reduces all \"1\"-dimensions to nil.  Examples:\n" 14585           "\t1) 1 Vector can be reduced to a Numeric\n" 14586           "\t2) 2x1 Matrix can be reduced to 2 Vector\n" 14587           "\t3) 1x3x1 Tensor3 can be reduced to 3 Vector\n" 14588           "\t4) 1x1x1x1 Tensor4 can be reduced to a Numeric\n" 14589           "\t5) 3x1x4x1x5 Tensor5 can only be reduced to 3x4x5 Tensor3\n" 14590           "\t6) 1x1x1x1x2x3 Tensor6 can be reduced to 2x3 Matrix\n" 14591           "\t7) 2x3x4x5x6x7x1 Tensor7 can be reduced to 2x3x4x5x6x7 Tensor6\n" 14593       AUTHORS(
"Oliver Lemke", 
"Richard Larsson"),
 14596       GOUT_TYPE(
"Numeric, Numeric, Numeric, Numeric, Numeric, Numeric, Numeric," 14597                 "Vector, Vector, Vector, Vector, Vector, Vector," 14598                 "Matrix, Matrix, Matrix, Matrix, Matrix," 14599                 "Tensor3, Tensor3, Tensor3, Tensor3," 14600                 "Tensor4, Tensor4, Tensor4," 14601                 "Tensor5, Tensor5," 14606       GIN_TYPE(
"Vector, Matrix, Tensor3, Tensor4, Tensor5, Tensor6, Tensor7," 14607                "Matrix, Tensor3, Tensor4, Tensor5, Tensor6, Tensor7," 14608                "Tensor3, Tensor4, Tensor5, Tensor6, Tensor7," 14609                "Tensor4, Tensor5, Tensor6, Tensor7," 14610                "Tensor5, Tensor6, Tensor7," 14611                "Tensor6, Tensor7," 14614       GIN_DESC(
"Over-dimensioned input"),
 14620       NAME(
"refellipsoidEarth"),
 14622           "Earth reference ellipsoids.\n" 14624           "The reference ellipsoid (*refellipsoid*) is set to model the Earth,\n" 14625           "following different models. The options are:\n" 14627           "   \"Sphere\" : A spherical Earth. The radius is set following\n" 14628           "      the value set for the Earth radius in constants.cc.\n" 14630           "   \"WGS84\" : The reference ellipsoid used by the GPS system.\n" 14631           "      Should be the standard choice for a non-spherical Earth.\n"),
 14633       OUT(
"refellipsoid"),
 14641       GIN_DESC(
"Model ellipsoid to use. Options listed above.")));
 14647                            "From Wikipedia\n"),
 14649                OUT(
"refellipsoid"),
 14657                GIN_DESC(
"Model ellipsoid to use. Options listed above.")));
 14660       NAME(
"refellipsoidForAzimuth"),
 14662           "Conversion of 3D ellipsoid to 1D curvature radius.\n" 14664           "Calculates the curvature radius for the given latitude and azimuth\n" 14665           "angle, and uses this to set a spherical reference ellipsoid\n" 14666           "suitable for 1D calculations. The curvature radius is a better\n" 14667           "local approximation than using the local ellipsoid radius.\n" 14669           "The used expression assumes a geodetic latitude, but also\n" 14670           "latitudes should be OK as using this method anyhow signifies\n" 14671           "an approximation.\n"),
 14673       OUT(
"refellipsoid"),
 14677       IN(
"refellipsoid"),
 14678       GIN(
"latitude", 
"azimuth"),
 14681       GIN_DESC(
"Latitude.", 
"Azimuth angle.")));
 14684       NAME(
"refellipsoidEuropa"),
 14686           "Io reference ellipsoids.\n" 14688           "The reference ellipsoid (*refellipsoid*) is set to model Io,\n" 14689           "folowing different models. The options are:\n" 14691           "   \"Sphere\" : A spherical planetesimal. The radius is taken from\n" 14692           "      report of the IAU/IAG Working Group.\n"),
 14694       OUT(
"refellipsoid"),
 14702       GIN_DESC(
"Model ellipsoid to use. Options listed above.")));
 14705       NAME(
"refellipsoidIo"),
 14707           "Io reference ellipsoids.\n" 14709           "The reference ellipsoid (*refellipsoid*) is set to model Io,\n" 14710           "folowing different models. The options are:\n" 14712           "   \"Sphere\" : A spherical planetesimal. The radius is taken from\n" 14713           "      report of the IAU/IAG Working Group.\n"),
 14715       OUT(
"refellipsoid"),
 14723       GIN_DESC(
"Model ellipsoid to use. Options listed above.")));
 14726       NAME(
"refellipsoidJupiter"),
 14728           "Jupiter reference ellipsoids.\n" 14730           "The reference ellipsoid (*refellipsoid*) is set to model Jupiter,\n" 14731           "folowing different models. The options are:\n" 14733           "   \"Sphere\" : A spherical planet. The radius is taken from a\n" 14734           "      report of the IAU/IAG Working Group.\n" 14736           "   \"Ellipsoid\" : A reference ellipsoid with parameters taken from\n" 14737           "      a report of the IAU/IAG Working Group.\n"),
 14739       OUT(
"refellipsoid"),
 14747       GIN_DESC(
"Model ellipsoid to use. Options listed above.")));
 14750       NAME(
"refellipsoidMars"),
 14752           "Mars reference ellipsoids.\n" 14754           "The reference ellipsoid (*refellipsoid*) is set to model Mars,\n" 14755           "folowing different models. The options are:\n" 14757           "   \"Sphere\" : A spherical planet. The radius is taken from a\n" 14758           "      report of the IAU/IAG Working Group.\n" 14760           "   \"Ellipsoid\" : A reference ellipsoid with parameters taken from\n" 14761           "      a report of the IAU/IAG Working Group.\n"),
 14763       OUT(
"refellipsoid"),
 14771       GIN_DESC(
"Model ellipsoid to use. Options listed above.")));
 14774       NAME(
"refellipsoidMoon"),
 14776           "Moon reference ellipsoids.\n" 14778           "The reference ellipsoid (*refellipsoid*) is set to model Moon,\n" 14779           "folowing different models. The options are:\n" 14781           "   \"Sphere\" : A spherical planet. The radius is taken from a\n" 14782           "      report of the IAU/IAG Working Group.\n" 14784           "   \"Ellipsoid\" : A reference ellipsoid with parameters taken from\n" 14785           "      Wikepedia (see code for details). The IAU/IAG working group\n" 14786           "      defines the Moon ellipsoid to be a sphere.\n"),
 14788       OUT(
"refellipsoid"),
 14796       GIN_DESC(
"Model ellipsoid to use. Options listed above.")));
 14799       NAME(
"refellipsoidOrbitPlane"),
 14801           "Conversion of 3D ellipsoid to 2D orbit track geometry.\n" 14803           "Determines an approximate reference ellipsoid following an orbit\n" 14804           "track. The new ellipsoid is determined simply, by determining the\n" 14805           "radius at the maximum latitude and from this value calculate a new\n" 14806           "new eccentricity. The orbit is specified by giving the orbit\n" 14807           "inclination (*orbitinc*), that is normally a value around 100 deg\n" 14808           "for polar sun-synchronous orbits.\n"),
 14810       OUT(
"refellipsoid"),
 14814       IN(
"refellipsoid"),
 14821       NAME(
"refellipsoidSet"),
 14823           "Manual setting of the reference ellipsoid.\n" 14825           "The two values of *refellipsoid* can here be set manually. The two\n" 14826           "arguments correspond directly to first and second element of\n" 14827           "*refellipsoid*.\n"),
 14829       OUT(
"refellipsoid"),
 14837       GIN_DESC(
"Average or equatorial radius.", 
"Eccentricity")));
 14840       NAME(
"refellipsoidVenus"),
 14842           "Venus reference ellipsoids.\n" 14844           "The reference ellipsoid (*refellipsoid*) is set to model Venus,\n" 14845           "folowing different models. The options are:\n" 14847           "   \"Sphere\" : A spherical planet. The radius is taken from a\n" 14848           "      report of the IAU/IAG Working Group.\n" 14850           "According to the report used above, the Venus ellipsoid lacks\n" 14851           "eccentricity and no further models should be required.\n"),
 14853       OUT(
"refellipsoid"),
 14861       GIN_DESC(
"Model ellipsoid to use. Options listed above.")));
 14864       NAME(
"refr_index_airFreeElectrons"),
 14866           "Microwave refractive index due to free electrons.\n" 14868           "The refractive index of free electrons is added to *refr_index_air*.\n" 14869           "To obtain the complete value, *refr_index_air* should be set to 1\n" 14870           "before calling this WSM. This applies also to *refr_index_air_group*.\n" 14872           "The expression applied is n=sqrt(1-wp^2/w^2) where wp is the plasma\n" 14873           "frequency, and w is the angular frequency (the function returns\n" 14874           "n-1, that here is slightly negative). This expressions is found in\n" 14875           "many textbooks, e.g. Rybicki and Lightman (1979). The above refers\n" 14876           "to *refr_index_air*. *refr_index_air_group* is sqrt(1+wp^2/w^2).\n" 14878           "The expression is dispersive. The frequency applied is the mean of\n" 14879           "first and last element of *f_grid* is selected. This frequency must\n" 14880           "be at least twice the plasma frequency.\n" 14882           "An error is issued if free electrons not are part of *abs_species*\n" 14883           "(and there exist a corresponding \"vmr\"-value). This demand is\n" 14884           "removed if *demand_vmr_value* is set to 0, but use this option\n" 14887       OUT(
"refr_index_air", 
"refr_index_air_group"),
 14891       IN(
"refr_index_air",
 14892          "refr_index_air_group",
 14896       GIN(
"demand_vmr_value"),
 14899       GIN_DESC(
"Flag to control if it is demanded that free electrons are " 14900                "in *abs_species*. Default is that this is demanded.")));
 14903       NAME(
"refr_index_airInfraredEarth"),
 14905           "Calculates the IR refractive index due to gases in the\n" 14906           "Earth's atmosphere.\n" 14908           "Only refractivity of dry air is considered. The formula used is\n" 14909           "contributed by Michael Hoepfner, Forschungszentrum Karlsruhe.\n" 14911           "The refractivity of dry air is added to *refr_index_air*. To obtain\n" 14912           "the complete value, *refr_index_air* should be set to 1 before\n" 14913           "calling this WSM. This applies also to *refr_index_air_group*.\n" 14915           "The expression used is non-dispersive. Hence, *refr_index_air* and\n" 14916           "*refr_index_air_group* are identical.\n"),
 14918       OUT(
"refr_index_air", 
"refr_index_air_group"),
 14922       IN(
"refr_index_air",
 14923          "refr_index_air_group",
 14925          "rtp_temperature"),
 14932       NAME(
"refr_index_airMicrowavesEarth"),
 14934           "Microwave refractive index in Earth's atmosphere.\n" 14936           "This method just considers pressure, temperature and water\n" 14937           "vapour, which should suffice for Earth. For a more general\n" 14938           "method, see *refr_index_airMicrowavesGeneral*.\n" 14940           "The refractivity of dry air and water vapour is added to\n" 14941           "*refr_index_air*. To obtain the complete value, *refr_index_air*\n" 14942           "should be set to 1 before calling this WSM. This applies also to\n" 14943           "*refr_index_air_group.\n" 14945           "The expression used is non-dispersive. Hence, *refr_index_air*\n" 14946           "and *refr_index_air_group* are identical.\n" 14948           "The standard expression for Earth and microwaves is used:\n" 14949           "   N = k1*(P-e)/T + k2*e/T + k3*e/T^2\n" 14950           "where N is refractivity, P is pressure, T is temperature and\n" 14951           "e is water vapour partial pressure. The values of k1, k2 and k3\n" 14952           "can be modified.\n" 14954           "Many different values of k1, k2 and k3 can be found in the\n" 14955           "literature. The default values applied here are taken from\n" 14956           "Bevis et al., GPS meteorology: Mapping ..., JAM, 1994.\n" 14957           "More specifically, these value are found in Table 1, listed\n" 14958           "as \"Present study\". Note that in ARTS Pa is used for pressure\n" 14959           "and k1, k2 and k3 must be adjusted accordingly.\n"),
 14961       OUT(
"refr_index_air", 
"refr_index_air_group"),
 14965       IN(
"refr_index_air",
 14966          "refr_index_air_group",
 14971       GIN(
"k1", 
"k2", 
"k3"),
 14972       GIN_TYPE(
"Numeric", 
"Numeric", 
"Numeric"),
 14974       GIN_DESC(
"Coefficient a, see above",
 14975                "Coefficient b, see above",
 14976                "Coefficient c, see above")));
 14979       NAME(
"refr_index_airMicrowavesGeneral"),
 14981           "Microwave refractive index due to gases in planetary atmospheres.\n" 14983           "The refractivity of a specified gas mixture is calculated and added\n" 14984           "to *refr_index_air*. To obtain the complete value, *refr_index_air*\n" 14985           "should be set to 1 before calling this WSM. This applies also to\n" 14986           "*refr_index_air_group.\n" 14988           "The expression used is non-dispersive. Hence, *refr_index_air* and\n" 14989           "*refr_index_air_group* are identical.\n" 14991           "Uses the methodology introduced by Newell&Baird (1965) for calculating\n" 14992           "refractivity of variable gas mixtures based on refractivity of the\n" 14993           "individual gases at reference conditions. Assuming ideal gas law for\n" 14994           "converting reference refractivity to actual pressure and temperature\n" 14995           "conditions. Reference refractivities are also taken from Newell&Baird (1965)\n" 14996           "and are vailable for N2, O2, CO2, H2, and He. Additionally, H2O reference\n" 14997           "refractivity has been derived from H2O contribution in Thayer (see\n" 14998           "*refr_index_airMicrowavesEarth*) for T0=273.15K. Any mixture of these gases\n" 14999           "can be taken into account.\n"),
 15001       OUT(
"refr_index_air", 
"refr_index_air_group"),
 15005       IN(
"refr_index_air",
 15006          "refr_index_air_group",
 15017       NAME(
"retrievalDefClose"),
 15019           "Closes the definition of retrieval quantities and correlations and\n" 15020           "prepares related WSVs for the retrieval.\n" 15022           "This function calls jacobianClose and checks that the corvariance matrices\n" 15023           "are consistent with the Jacobian.\n"),
 15024       AUTHORS(
"Simon Pfreundschuh"),
 15025       OUT(
"jacobian_do", 
"jacobian_agenda", 
"retrieval_checked"),
 15029       IN(
"jacobian_agenda", 
"covmat_sx", 
"jacobian_quantities"),
 15036       NAME(
"retrievalAddAbsSpecies"),
 15038           "Adds an absorption species to the retrieval quantities.\n" 15040           "Similar to *jacobianAddAbsSpecies* but also sets the corresponding block in\n" 15041           "*covmat_sx* to the matrices provided in *covmat_block* and *covmat_inv_block*.\n" 15042           "The dimensions of *covmat_block* are required to agree with the dimensions of the\n" 15043           "retrieval grid.\n" 15045           "*covmat_inv_block* must be either empty or the same dimension as *covmat_block*.\n" 15046           "If provided, this matrix will be used as the inverse for the covariance matrix block\n" 15047           "and numerical inversion of this block is thus avoided. Note, however, that this is\n" 15048           "only effective if this block is uncorrelated with any other retrieval quantity.\n" 15050           "For number and order of elements added to *x*, see *jacobianAddAbsSpecies*.\n"),
 15051       AUTHORS(
"Simon Pfreundschuh"),
 15052       OUT(
"covmat_sx", 
"jacobian_quantities", 
"jacobian_agenda"),
 15057          "jacobian_quantities",
 15061          "covmat_inv_block",
 15065       GIN(
"g1", 
"g2", 
"g3", 
"species", 
"unit", 
"for_species_tag"),
 15066       GIN_TYPE(
"Vector", 
"Vector", 
"Vector", 
"String", 
"String", 
"Index"),
 15068       GIN_DESC(
"Pressure retrieval grid.",
 15069                "Latitude retrieval grid.",
 15070                "Longitude retreival grid.",
 15071                "The species tag of the retrieval quantity.",
 15072                "Retrieval unit. See above.",
 15073                "Index-bool for acting on species tags or species."),
 15080       NAME(
"retrievalAddFreqShift"),
 15082           "Same as *jacobianAddFreqShift* but also adds the correlation block\n" 15083           "contained in *covmat_block* and *covmat_inv_block* to *covmat_sx*.\n" 15085           "For number and order of elements added to *x*, see *jacobianAddFreqShift*.\n"),
 15086       AUTHORS(
"Simon Pfreundschuh"),
 15087       OUT(
"covmat_sx", 
"jacobian_quantities", 
"jacobian_agenda"),
 15093          "covmat_inv_block",
 15094          "jacobian_quantities",
 15100       GIN_DESC(
"Size of perturbation to apply.")));
 15103       NAME(
"retrievalAddFreqStretch"),
 15105           "Same as *jacobianAddFreqShift* but also adds the correlation block\n" 15106           "contained in *covmat_block* and *covmat_inv_block* to *covmat_sx*.\n" 15108           "For number and order of elements added to *x*, see *jacobianAddFreqStretch*.\n"),
 15109       AUTHORS(
"Simon Pfreundschuh"),
 15110       OUT(
"covmat_sx", 
"jacobian_quantities", 
"jacobian_agenda"),
 15114       IN(
"jacobian_quantities",
 15118          "covmat_inv_block"),
 15122       GIN_DESC(
"Size of perturbation to apply.")));
 15125       NAME(
"retrievalDefInit"),
 15127           "Begin retrieval definition section.\n" 15129           "This function initialises all variables required for defining\n" 15130           "retrieval quantities and corresponding covariance matrices.\n" 15131           "By default, Jacobian quantities should be added withing the.\n" 15132           "retrieval definition section. If Jacobian quantities are\n" 15133           "defined separately *initialize_jacobian* must be set to 0,\n" 15134           "otherwise the quantities will be discarded.\n"),
 15135       AUTHORS(
"Simon Pfreundschuh"),
 15139           "covmat_inv_block",
 15140           "jacobian_quantities",
 15141           "jacobian_agenda"),
 15146       GIN(
"initialize_jacobian"),
 15149       GIN_DESC(
"Flag whether or not to (re)initialize Jacobian-related\n" 15150                "quantities. Set to 0 if Jacobian is already defined.")));
 15153       NAME(
"retrievalAddCatalogParameter"),
 15155           "Similar to *jacobianAddBasicCatalogParameter* but also adds a corresponding\n" 15156           "block to *covmat_sx* with the given *var* as variance value.\n" 15158           "For number and order of elements added to *x*,\n" 15159           "see *jacobianAddBasicCatalogParameter*.\n"),
 15160       AUTHORS(
"Simon Pfreundschuh"),
 15161       OUT(
"covmat_sx", 
"jacobian_quantities", 
"jacobian_agenda"),
 15165       IN(
"covmat_sx", 
"jacobian_quantities", 
"jacobian_agenda"),
 15166       GIN(
"catalog_identity", 
"catalog_parameter", 
"var"),
 15167       GIN_TYPE(
"QuantumIdentifier", 
"String", 
"Numeric"),
 15169       GIN_DESC(
"The catalog line matching information.",
 15170                "The catalog parameter of the retrieval quantity.",
 15171                "The variance of the catalog parameter.")));
 15174       NAME(
"retrievalAddCatalogParameters"),
 15176           "Same as *jacobianAddBasicCatalogParameters* but also adds a new\n" 15177           "block to *covmat_sx* using the matrices in *covmat_block* and\n" 15178           "*covmat_inv_block*.\n" 15180           "If *covmat_inv_block* is non-empty, it is used as inverse for the added block\n" 15181           "which avoids its numerical computation.\n" 15183           "For number and order of elements added to *x*,\n" 15184           "see *jacobianAddBasicCatalogParameters*.\n"),
 15185       AUTHORS(
"Simon Pfreundschuh"),
 15186       OUT(
"covmat_sx", 
"jacobian_quantities", 
"jacobian_agenda"),
 15191          "jacobian_quantities",
 15194          "covmat_inv_block"),
 15195       GIN(
"catalog_identities", 
"catalog_parameters"),
 15196       GIN_TYPE(
"ArrayOfQuantumIdentifier", 
"ArrayOfString"),
 15198       GIN_DESC(
"The catalog line matching informations.",
 15199                "The catalog parameters of the retrieval quantity.")));
 15202       NAME(
"retrievalAddMagField"),
 15204           "Same as *jacobianAddMagField* but also adds a new block to *covmat_sx*\n" 15205           "using the matrices in *covmat_block* and *covmat_inv_block*.\n" 15207           "If *covmat_inv_block* is non-empty, it is used as inverse for the added block\n" 15208           "which avoids its numerical computation.\n" 15210           "For number and order of elements added to *x*, see *jacobianAddMagField*.\n"),
 15211       AUTHORS(
"Simon Pfreundschuh"),
 15212       OUT(
"covmat_sx", 
"jacobian_quantities", 
"jacobian_agenda"),
 15217          "jacobian_quantities",
 15221          "covmat_inv_block",
 15225       GIN(
"g1", 
"g2", 
"g3", 
"component", 
"dB"),
 15226       GIN_TYPE(
"Vector", 
"Vector", 
"Vector", 
"String", 
"Numeric"),
 15228       GIN_DESC(
"Pressure retrieval grid.",
 15229                "Latitude retrieval grid.",
 15230                "Longitude retreival grid.",
 15231                "Magnetic field component to retrieve",
 15232                "Magnetic field perturbation")));
 15235       NAME(
"retrievalAddPointingZa"),
 15237           "Same as *jacobianAddPointingZa* but also adds a new block to *covmat_sx*\n" 15238           "using the matrices in *covmat_block* and *covmat_inv_block*.\n" 15240           "If *covmat_inv_block* is non-empty, it is used as inverse for the added block\n" 15241           "which avoids its numerical computation.\n" 15243           "For number and order of elements added to *x*, see *jacobianAddPointingZa*.\n"),
 15244       AUTHORS(
"Simon Pfreundschuh"),
 15245       OUT(
"covmat_sx", 
"jacobian_quantities", 
"jacobian_agenda"),
 15250          "jacobian_quantities",
 15253          "covmat_inv_block",
 15256       GIN(
"poly_order", 
"calcmode", 
"dza"),
 15257       GIN_TYPE(
"Index", 
"String", 
"Numeric"),
 15259       GIN_DESC(
"Order of polynomial to describe the time variation of " 15260                "pointing off-sets.",
 15261                "Calculation method. See above",
 15262                "Size of perturbation to apply (when applicable).")));
 15265       NAME(
"retrievalAddPolyfit"),
 15267           "Same as *jacobianAddPolyfit* but also adds a new block to *covmat_sx*\n" 15268           "using the matrices in *covmat_block* and *covmat_inv_block*.\n" 15270           "If *covmat_inv_block* is non-empty, it is used as inverse for the added block\n" 15271           "which avoids its numerical computation.\n" 15273           "For number and order of elements added to *x*, see *jacobianAddPolyfit*.\n"),
 15274       AUTHORS(
"Simon Pfreundschuh"),
 15275       OUT(
"covmat_sx", 
"jacobian_quantities", 
"jacobian_agenda"),
 15280          "jacobian_quantities",
 15283          "covmat_inv_block",
 15284          "sensor_response_pol_grid",
 15285          "sensor_response_dlos_grid",
 15288           "no_pol_variation",
 15289           "no_los_variation",
 15290           "no_mblock_variation"),
 15291       GIN_TYPE(
"Index", 
"Index", 
"Index", 
"Index"),
 15293       GIN_DESC(
"Polynomial order to use for the fit.",
 15294                "Set to 1 if the baseline off-set is the same for all " 15295                "Stokes components.",
 15296                "Set to 1 if the baseline off-set is the same for all " 15297                "line-of-sights (inside each measurement block).",
 15298                "Set to 1 if the baseline off-set is the same for all " 15299                "measurement blocks.")));
 15302       NAME(
"retrievalAddScatSpecies"),
 15304           "Same as *jacobianAddPolyfit* but also adds a new block to *covmat_sx*\n" 15305           "using the matrices in *covmat_block* and *covmat_inv_block*.\n" 15307           "If *covmat_inv_block* is non-empty, it is used as inverse for the added block\n" 15308           "which avoids its numerical computation.\n" 15310           "For number and order of elements added to *x*, see *jacobianAddScatSpecies*.\n"),
 15311       AUTHORS(
"Simon Pfreundschuh"),
 15312       OUT(
"covmat_sx", 
"jacobian_quantities", 
"jacobian_agenda"),
 15317          "jacobian_quantities",
 15321          "covmat_inv_block",
 15325       GIN(
"g1", 
"g2", 
"g3", 
"species", 
"quantity"),
 15326       GIN_TYPE(
"Vector", 
"Vector", 
"Vector", 
"String", 
"String"),
 15329           "Pressure retrieval grid.",
 15330           "Latitude retrieval grid.",
 15331           "Longitude retreival grid.",
 15332           "Name of scattering species, must match one element in *scat_species*.",
 15333           "Retrieval quantity, e.g. \"IWC\"."),
 15340       NAME(
"retrievalAddSinefit"),
 15342           "Same as *jacobianAddSinefit* but also adds a new block to *covmat_sx*\n" 15343           "using the matrices in *covmat_block* and *covmat_inv_block*.\n" 15345           "If *covmat_inv_block* is non-empty, it is used as inverse for the added block\n" 15346           "which avoids its numerical computation.\n" 15348           "For number and order of elements added to *x*, see *jacobianAddSinefit*.\n"),
 15349       AUTHORS(
"Simon Pfreundschuh"),
 15350       OUT(
"covmat_sx", 
"jacobian_quantities", 
"jacobian_agenda"),
 15355          "jacobian_quantities",
 15358          "covmat_inv_block",
 15359          "sensor_response_pol_grid",
 15360          "sensor_response_dlos_grid",
 15362       GIN(
"period_lengths",
 15363           "no_pol_variation",
 15364           "no_los_variation",
 15365           "no_mblock_variation"),
 15366       GIN_TYPE(
"Vector", 
"Index", 
"Index", 
"Index"),
 15368       GIN_DESC(
"Period lengths of the fit.",
 15369                "Set to 1 if the baseline off-set is the same for all " 15370                "Stokes components.",
 15371                "Set to 1 if the baseline off-set is the same for all " 15372                "line-of-sights (inside each measurement block).",
 15373                "Set to 1 if the baseline off-set is the same for all " 15374                "measurement blocks.")));
 15377       NAME(
"retrievalAddSpecialSpecies"),
 15379           "Same as *jacobianAddSpecialSpecies* but also adds a new block to *covmat_sx*\n" 15380           "using the matrices in *covmat_block* and *covmat_inv_block*.\n" 15382           "If *covmat_inv_block* is non-empty, it is used as inverse for the added block\n" 15383           "which avoids its numerical computation.\n" 15385           "For number and order of elements added to *x*, see *jacobianAddSpecialSpecies*.\n"),
 15386       AUTHORS(
"Simon Pfreundschuh"),
 15387       OUT(
"covmat_sx", 
"jacobian_quantities", 
"jacobian_agenda"),
 15392          "jacobian_quantities",
 15396          "covmat_inv_block",
 15400       GIN(
"g1", 
"g2", 
"g3", 
"species"),
 15401       GIN_TYPE(
"Vector", 
"Vector", 
"Vector", 
"String"),
 15403       GIN_DESC(
"Pressure retrieval grid.",
 15404                "Latitude retrieval grid.",
 15405                "Longitude retreival grid.",
 15406                "The species of the retrieval quantity."),
 15413       NAME(
"retrievalAddSurfaceQuantity"),
 15415           "Same as *jacobianAddSurfaceQuantity* but also adds a new block to *covmat_sx*\n" 15416           "using the matrices in *covmat_block* and *covmat_inv_block*.\n" 15418           "If *covmat_inv_block* is non-empty, it is used as inverse for the added block\n" 15419           "which avoids its numerical computation.\n" 15421           "For number and order of elements added to *x*, see *jacobianAddSurfaceQuantity*.\n"),
 15423       OUT(
"covmat_sx", 
"jacobian_quantities", 
"jacobian_agenda"),
 15428          "jacobian_quantities",
 15431          "covmat_inv_block",
 15435       GIN(
"g1", 
"g2", 
"quantity"),
 15436       GIN_TYPE(
"Vector", 
"Vector", 
"String"),
 15438       GIN_DESC(
"Latitude retrieval grid.",
 15439                "Longitude retreival grid.",
 15440                "Retrieval quantity, e.g. \"Wind speed\".")));
 15443       NAME(
"retrievalAddTemperature"),
 15445           "Same as *jacobianAddTemperature* but also adds a new block to *covmat_sx*\n" 15446           "using the matrices in *covmat_block* and *covmat_inv_block*.\n" 15448           "If *covmat_inv_block* is non-empty, it is used as inverse for the added block\n" 15449           "which avoids its numerical computation.\n" 15451           "For number and order of elements added to *x*, see *jacobianAddTemperature*.\n"),
 15452       AUTHORS(
"Simon Pfreundschuh"),
 15453       OUT(
"covmat_sx", 
"jacobian_quantities", 
"jacobian_agenda"),
 15458          "jacobian_quantities",
 15462          "covmat_inv_block",
 15466       GIN(
"g1", 
"g2", 
"g3", 
"hse"),
 15467       GIN_TYPE(
"Vector", 
"Vector", 
"Vector", 
"String"),
 15469       GIN_DESC(
"Pressure retrieval grid.",
 15470                "Latitude retrieval grid.",
 15471                "Longitude retreival grid.",
 15472                "Flag to assume HSE or not (\"on\" or \"off\").")));
 15475       NAME(
"retrievalAddWind"),
 15477           "Same as *jacobianAddWind* but also adds a new block to *covmat_sx*\n" 15478           "using the matrices in *covmat_block* and *covmat_inv_block*.\n" 15480           "If *covmat_inv_block* is non-empty, it is used as inverse for the added block\n" 15481           "which avoids its numerical computation.\n" 15483           "For number and order of elements added to *x*, see *jacobianAddWind*.\n"),
 15484       AUTHORS(
"Simon Pfreundschuh"),
 15485       OUT(
"covmat_sx", 
"jacobian_quantities", 
"jacobian_agenda"),
 15490          "jacobian_quantities",
 15494          "covmat_inv_block",
 15498       GIN(
"g1", 
"g2", 
"g3", 
"component", 
"dfrequency"),
 15499       GIN_TYPE(
"Vector", 
"Vector", 
"Vector", 
"String", 
"Numeric"),
 15501       GIN_DESC(
"Pressure retrieval grid.",
 15502                "Latitude retrieval grid.",
 15503                "Longitude retrieval grid.",
 15504                "Wind component to retrieve",
 15505                "This is the frequency perturbation")));
 15508       NAME(
"retrievalErrorsExtract"),
 15510           "Extract retrieval error from covariance matrices.\n" 15512           "Extracts the error estimates for the retrieved quantities from the covariance\n" 15513           "matrices for the error due to measurement noise *covmat_so* and the error due\n" 15514           "to limited resolution of the observation system *covmat_ss* and stores them in\n" 15515           "the vectors *retrieval_eo* and *retrieval_ss*, respectively." 15517           "To etract these errors, first the convariance matrices of which the errors \n" 15518           "should be extracted have to be computed using the WSMs *covmat_soCalc*\n" 15519           "and *covmat_ssCalc* or set to be empty in order to be ignored. Note, however,\n" 15520           "that this will also set the corresponding error vector to be empty.\n"),
 15521       AUTHORS(
"Simon Pfreundschuh"),
 15522       OUT(
"retrieval_eo", 
"retrieval_ss"),
 15526       IN(
"covmat_so", 
"covmat_ss"),
 15535           "Interface to the PolRadTran RT4 scattering solver (by F. Evans).\n" 15537           "RT4 provides the radiation field (*cloudbox_field*) from a vector\n" 15538           "1D scattering solution assuming a plane-parallel atmosphere (flat\n" 15539           "Earth). It calculates up to two Stokes parameters (*stokes_dim*<=2),\n" 15540           "i.e., all azimuthally randomly oriented particles are allowed (this\n" 15541           "also includes macroscopically isotropic particles). Refraction is\n" 15542           "not taken into account.\n" 15544           "The scattering solution is internally obtained over the full\n" 15545           "(plane-parallel) atmosphere, i.e. not confined to the cloudbox.\n" 15546           "However, the radiation field output is limited to the cloudbox.\n" 15547           "This allows to consider clearsky RT through a non-spherical\n" 15548           "atmosphere outside the cloudbox improving the RT solution for\n" 15549           "non-plane-parallel media compared to the plain RT4 output.\n" 15551           "*nstreams* is the number of polar angles taken into account\n" 15552           "internally in the scattering solution. That is, *nstreams*\n" 15553           "determines the angular resolution, hence the accuracy, of the\n" 15554           "scattering solution. The more anisotropic the bulk scattering\n" 15555           "matrix, the more streams are required. The computational burden\n" 15556           "increases approximately with the third power of *nstreams*.\n" 15557           "The default value (*nstreams*=16) was found to be sufficient for\n" 15558           "most microwave scattering calculations. It is likely insufficient\n" 15559           "for IR calculations involving ice clouds, though.\n" 15561           "Here, *za_grid* is NOT an input parameter, but output, and its\n" 15562           "size equals *nstreams* or *nstreams*+2 (Gauss-Legendre and Double\n" 15563           "Gauss quadratures in case *add_straight_angles*=1) (the reason is\n" 15564           "that the computational burden is high for additional angles,\n" 15565           "regardless whether they are quadrature angles or not; hence the\n" 15566           "quadrature angles supplemented with 0 and 180deg are considered to\n" 15567           "provide the best radiation field for a given effort).\n" 15569           "The *auto_inc_nstreams* feature can be used to increase the number\n" 15570           "of streams used internally in the scattering solution when found\n" 15572           "NOTE: this number-of-streams increase is only internally - the\n" 15573           "angular dimension of the output *cloudbox_field* is fixed to the\n" 15574           "*nstreams* given as input to this WSM.\n" 15576           "Quadrature methods available are: 'L'obatto, 'G'auss-Legendre and\n" 15577           "'D'ouble Gauss quadrature.\n" 15579           "This WSM applies *surface_rtprop_agenda* to derive reflection\n" 15580           "matrix and surface emission vector that are directly feed into\n" 15581           "RT4's core solver (instead of their RT4-internal calculation as\n" 15582           "used by *RT4CalcWithRT4Surface*).\n" 15584           "Known issues of ARTS implementation:\n" 15585           "- TOA incoming radiation is so far assumed as blackbody cosmic\n" 15586           "  background (temperature taken from the ARTS-internal constant).\n" 15588           "The keyword *pfct_method* allows to choose the method to extract the\n" 15589           "scattering matrix. 'interpolate' considers temperature dependence,\n" 15590           "others neglect it by chosing one specific temperature grid point\n" 15591           "from the single scattering data: 'low' choses the lowest T-point,\n" 15592           "'high' the highest T-point, and 'median' the median T-point. As\n" 15593           "different scattering elements can have different temperature grids,\n" 15594           "the actual temperature value used can differ between the scattering\n" 15596           "Note that this keyword solely affects the scattering matrix;\n" 15597           "extinction matrix and absorption vector are always interpolated to\n" 15598           "the actual temperature.\n"),
 15600       OUT(
"cloudbox_field", 
"za_grid", 
"aa_grid"),
 15604       IN(
"atmfields_checked",
 15606          "scat_data_checked",
 15607          "cloudbox_checked",
 15610          "propmat_clearsky_agenda",
 15611          "surface_rtprop_agenda",
 15625           "add_straight_angles",
 15626           "pfct_aa_grid_size",
 15627           "auto_inc_nstreams",
 15642       GIN_DEFAULT(
"16", 
"median", 
"D", 
"1", 
"19", 
"0", 
"0", 
"1", 
"0", 
"1e-6"),
 15643       GIN_DESC(
"Number of polar angle directions (streams) in RT4" 15644                " solution (must be an even number).",
 15645                "Flag which method to apply to derive phase function (for" 15646                " available options see above).",
 15647                "Flag which quadrature to apply in RT4 solution (for" 15648                " available options see above).",
 15649                "Flag whether to include nadir and zenith as explicit" 15650                " directions (only effective for quad_type G and D).",
 15651                "Number of azimuthal angle grid points to consider in" 15652                " Fourier series decomposition of scattering matrix (only" 15653                " applied for randomly oriented scattering elements)",
 15654                "Flag whether to internally increase nstreams (individually" 15655                " per frequency) if norm of (bulk) scattering matrix is not" 15656                " preserved properly. If 0, no adaptation is done. Else" 15657                " *auto_inc_nstreams* gives the maximum number of streams to" 15658                " increase to. Note that the output *cloudbox_field* remains" 15659                " with angular dimension of *nstreams*, only the internal" 15660                " solution is adapted (and then interpolated to the" 15661                " lower-resolution output angular grid).",
 15662                "For *auto_inc_nstreams*>0, flag whether to not fail even if" 15663                " scattering matrix norm is not preserved when maximum stream" 15664                " number is reached. Internal RT4 calculations is then" 15665                " performed with nstreams=*auto_inc_nstreams*.",
 15666                "For *auto_inc_nstreams*>0, polar angle interpolation order" 15667                " for interpolation from internal increased stream to" 15668                " originally requested nstreams-ifield.",
 15669                "For *auto_inc_nstreams*>0, flag whether to do polar angle" 15670                " interpolation in cosine (='mu') space.",
 15671                "Maximum optical depth of infinitesimal layer (where single" 15672                " scattering approximation is assumed to apply).")));
 15675       NAME(
"RT4CalcWithRT4Surface"),
 15677           "As RT4Calc except for using RT4's proprietary surface type handling.\n" 15679           "This WSM is only indented for testing purposes.\n" 15681           "The following surface type/property methods are available and\n" 15682           "require the the following input:\n" 15683           "- 'L'ambertian: *surface_scalar_reflectivity*, *surface_skin_t*\n" 15684           "- 'F'resnel: *surface_complex_refr_index*, *surface_skin_t*\n" 15685           "- 'S'pecular: *surface_reflectivity*, *surface_skin_t*\n" 15686           "'L' and 'F' use proprietary RT4 methods, 'S' uses RT4's Fresnel\n" 15687           "methods modified to behave similar to ARTS'\n" 15688           "*surfaceFlatReflectivity*.\n"),
 15690       OUT(
"cloudbox_field", 
"za_grid", 
"aa_grid"),
 15694       IN(
"atmfields_checked",
 15696          "scat_data_checked",
 15697          "cloudbox_checked",
 15700          "propmat_clearsky_agenda",
 15712          "surface_scalar_reflectivity",
 15713          "surface_reflectivity",
 15714          "surface_complex_refr_index"),
 15719           "add_straight_angles",
 15720           "pfct_aa_grid_size",
 15721           "auto_inc_nstreams",
 15738           "16", 
"median", 
"A", 
"D", 
"1", 
"19", 
"0", 
"0", 
"1", 
"0", 
"1e-6"),
 15739       GIN_DESC(
"Number of polar angle directions (streams) in RT4" 15740                " solution (must be an even number).",
 15741                "Flag which method to apply to derive phase function (for" 15742                " available options see above).",
 15743                "Flag which surface type/surface property method to use" 15744                " (for available options see above).",
 15745                "Flag which quadrature to apply in RT4 solution (for" 15746                " available options see above).",
 15747                "Flag whether to include nadir and zenith as explicit" 15748                " directions (only effective for quad_type G and D).",
 15749                "Number of azimuthal angle grid points to consider in" 15750                " Fourier series decomposition of scattering matrix (only" 15751                " applied for randomly oriented scattering elements)",
 15752                "Flag whether to internally increase nstreams (individually" 15753                " per frequency) if norm of (bulk) scattering matrix is not" 15754                " preserved properly. If 0, no adaptation is done. Else" 15755                " *auto_inc_nstreams* gives the maximum number of streams to" 15757                "For *auto_inc_nstreams*>0, flag whether to not fail even if" 15758                " scattering matrix norm is not preserved when maximum stream" 15759                " number is reached. Internal RT4 calculations is then" 15760                " performed with nstreams=*auto_inc_nstreams*.",
 15761                "For *auto_inc_nstreams*>0, polar angle interpolation order" 15762                " for interpolation from internal increased stream to" 15763                " originally requested nstreams-ifield.",
 15764                "For *auto_inc_nstreams*>0, flag whether to do polar angle" 15765                " interpolation in cosine (='mu') space.",
 15766                "Maximum optical depth of infinitesimal layer (where single" 15767                " scattering approximation is assumed to apply).")));
 15772           "RT4 validation test.\n" 15774           "Executes test case testc shipped with PolRadTran/RT4 code (but uses\n" 15775           "data files converted to arts-xml). Output written to (xml-)file.\n"),
 15780       GOUT_DESC(
"RT4 testc calculation results."),
 15784       GIN_DEFAULT(
"artscomponents/polradtran/testdata/"),
 15785       GIN_DESC(
"Folder containing arts-xml converted test case input data.")));
 15788       NAME(
"rte_losGeometricFromRtePosToRtePos2"),
 15790           "The geometric line-of-sight between two points.\n" 15792           "The method sets *rte_los* to the line-of-sight, at *rte_pos*,\n" 15793           "that matches the geometrical propagation path between *rte_pos*\n" 15794           "and *rte_pos2*.\n" 15796           "The standard case should be that *rte_pos2* corresponds to a\n" 15797           "transmitter, and *rte_pos* to the receiver/sensor.\n"),
 15803       IN(
"atmosphere_dim",
 15816                DESCRIPTION(
"Sets *rte_los* to the given angles.\n" 15818                            "The azimuth angle is ignored for 1D and 2D.\n"),
 15824                IN(
"atmosphere_dim"),
 15828                GIN_DESC(
"Zenith angle of sensor line-of-sight.",
 15829                         "Azimuth angle of sensor line-of-sight.")));
 15832       NAME(
"rte_posSet"),
 15834           "Sets *rte_pos* to the given co-ordinates.\n" 15836           "The longitude is ignored for 1D and 2D, and the latitude is also \n" 15837           "ignored for 1D.\n"),
 15843       IN(
"atmosphere_dim"),
 15844       GIN(
"z", 
"lat", 
"lon"),
 15845       GIN_TYPE(
"Numeric", 
"Numeric", 
"Numeric"),
 15847       GIN_DESC(
"Geometrical altitude of sensor position.",
 15848                "Latitude of sensor position.",
 15849                "Longitude of sensor position.")));
 15852       NAME(
"rte_pos_losMoveToStartOfPpath"),
 15854           "Sets *rte_pos* and *rte_los* to values for last point in *ppath*.\n" 15856           "For example, if the propagation path intersects with the surface,\n" 15857           "this method gives you the position and angle of *ppath* at the\n" 15860       OUT(
"rte_pos", 
"rte_los"),
 15864       IN(
"atmosphere_dim", 
"ppath"),
 15872       NAME(
"rtp_nlteFromRaw"),
 15881       IN(
"nlte_level_identifiers",
 15882          "nlte_vibrational_energies"),
 15886       GIN_DESC(
"Vibrational data [nlevels]")));
 15889       NAME(
"ScatElementsPndAndScatAdd"),
 15891           "Adds single scattering data and particle number density for\n" 15892           "individual scattering elements.\n" 15894           "The methods reads the specified files and appends the obtained data\n" 15895           "to *scat_data* and *pnd_field_raw*. Scattering data is appended to\n" 15896           "the current last existing scattering species in *scat_data*.\n"),
 15897       AUTHORS(
"Claudia Emde, Jana Mendrok"),
 15898       OUT(
"scat_data_raw", 
"pnd_field_raw"),
 15902       IN(
"scat_data_raw", 
"pnd_field_raw", 
"atmosphere_dim"),
 15903       GIN(
"scat_data_files", 
"pnd_field_files"),
 15904       GIN_TYPE(
"ArrayOfString", 
"ArrayOfString"),
 15906       GIN_DESC(
"List of names of single scattering data files.",
 15907                "List of names of the corresponding pnd_field files.")));
 15910       NAME(
"ScatElementsSelect"),
 15912           "Allows to limit considered scattering elements according to size.\n" 15914           "Scattering elements of a specified scattering species are removed\n" 15915           "from *scat_data_raw* and *scat_meta*, i.e. removed from further\n" 15916           "calculations, if their particle size exceeds the specified limits.\n" 15917           "Specification of the scattering species is done by name matching the\n" 15918           "scattering species name part of *scat_species* tag.\n" 15919           "As size parameter, all size parameters reported by the meta data\n" 15920           "can be used (see *scat_meta_single* for offered parameters and\n" 15921           "their naming).\n"),
 15922       AUTHORS(
"Daniel Kreyling, Oliver Lemke, Jana Mendrok"),
 15923       OUT(
"scat_data_raw", 
"scat_meta"),
 15927       IN(
"scat_data_raw", 
"scat_meta", 
"scat_species"),
 15928       GIN(
"species", 
"sizeparam", 
"sizemin", 
"sizemax", 
"tolerance", 
"delim"),
 15929       GIN_TYPE(
"String", 
"String", 
"Numeric", 
"Numeric", 
"Numeric", 
"String"),
 15931       GIN_DESC(
"Species on which to apply size selection.",
 15932                "Size parameter to apply for size selection.",
 15933                "Minimum size [m] of the scattering elements to consider",
 15934                "Maximum size [m] of the scattering elements to consider (if " 15935                "negative, no max. limitation is applied).",
 15936                "Relative numerical tolerance of size limit values.",
 15937                "Delimiter string of *scat_species* elements.")));
 15940       NAME(
"ScatElementsToabs_speciesAdd"),
 15942           "Appends scattering elements to *abs_species* including reading\n" 15943           "single scattering data and corresponding pnd field.\n" 15945           "The methods reads the specified single scattering and pnd_field\n" 15946           "data of individual scattering elements and appends the obtained data\n" 15947           "to *scat_data* (appending to its last scattering species) and\n" 15948           "*vmr_field_raw*. Per scattering element, it also appends one\n" 15949           "instance of species 'particles' to *abs_species*.\n"),
 15951       OUT(
"scat_data_raw",
 15954           "propmat_clearsky_agenda_checked",
 15955           "abs_xsec_agenda_checked"),
 15959       IN(
"scat_data_raw",
 15962          "propmat_clearsky_agenda_checked",
 15963          "abs_xsec_agenda_checked",
 15966       GIN(
"scat_data_files", 
"pnd_field_files"),
 15967       GIN_TYPE(
"ArrayOfString", 
"ArrayOfString"),
 15969       GIN_DESC(
"List of names of single scattering data files.",
 15970                "List of names of the corresponding pnd_field files.")));
 15973       NAME(
"ScatSpeciesExtendTemperature"),
 15975           "Extends valid temperature range of single scattering data.\n" 15977           "The method allows to extend the temperature range of given single\n" 15978           "scattering data by duplicating optical property data at the low\n" 15979           "and/or high limits of the associated temperature grid. *T_low* and\n" 15980           "*T_high* specify the temperature grid points that are added.\n" 15981           "Extension is only performed if *T_low* is lower and *T_high* is\n" 15982           "higher than the original lowest and highest temperatures,\n" 15983           "respectively, and if the original data contains more than one\n" 15984           "temperature grid point (i.e., when not assumed constant anyways).\n" 15986           "The method is thought, e.g., for atmospheric ice falling into\n" 15987           "atmospheric layers with temperatures above the melting point of\n" 15988           "ice, where ambient and particle temperature deviate (as long as\n" 15989           "frozen the ice temperature remains at the melting point\n" 15990           "temperature). It is not internally checked, whether the original\n" 15991           "data includes the melting point.\n" 15992           "The method can be used in a wider sense. However, it remains in the\n" 15993           "responsibility of the user to apply the method in a meaningful\n" 15994           "sense and on meaningful single scattering data.\n" 15996           "The temperature extension is applied on all scattering elements of\n" 15997           "a scattering species. If *scat_species* is defined, *species* can\n" 15998           "be used to select the species on which the extension shall be\n" 15999           "applied comparing *species* with the scattering species name part\n" 16000           "of *scat_species*. If no *species* is specified, the method is\n" 16001           "applied on the current last existing scattering species in\n" 16002           "*scat_data*. Through the latter the method can be applied for cases\n" 16003           "when *scat_species* is not defined (e.g. when *pnd_field* data is\n" 16004           "created externally instead of from hydrometeor fields \n"),
 16006       OUT(
"scat_data_raw"),
 16010       IN(
"scat_data_raw", 
"scat_species"),
 16011       GIN(
"species", 
"scat_species_delim", 
"T_low", 
"T_high"),
 16012       GIN_TYPE(
"String", 
"String", 
"Numeric", 
"Numeric"),
 16015           "Scattering species to act on (see WSM description for details).",
 16016           "Delimiter string of *scat_species* elements.",
 16017           "Temperature grid extension point at low temperature limit.",
 16018           "Temperature grid extension point at high temperature limit.")));
 16021       NAME(
"ScatSpeciesInit"),
 16023           "Initializes the scattering species related data variables.\n" 16025           "This method initializes the *scat_species* WSV, the variables that\n" 16026           "will hold the raw optical properties and the raw particle number\n" 16027           "distributions of the scattering elements (*scat_data_raw* and\n" 16028           "*pnd_field_raw*, respectively) as well as the one holding the meta\n" 16029           "information about the scattering elements (*scat_meta*).\n" 16031           "This method has to be executed before WSM reading/adding to the\n" 16032           "said variable, e.g. before *ScatSpeciesPndAndScatAdd*.\n"),
 16034       OUT(
"scat_species",
 16037           "scat_data_checked",
 16050       NAME(
"ScatSpeciesMerge"),
 16052           "Merges single scattering data of all scattering elements into one\n" 16053           "element of bulk properties.\n" 16055           "Before entering the scattering solver, this method prepares the\n" 16056           "effective bulk single scattering properties of all scattering\n" 16057           "elements. Done by calculating the particle number density weighted\n" 16058           "sum of the single scattering properties of all scattering elements\n" 16059           "per pressure level. Accordingly, *pnd_field* is resized to\n" 16060           "[np, np, 1, 1], where np is the number of pressure levels inside\n" 16061           "the cloudbox. The diagonal elements of the new *pnd_field* are set\n" 16062           "to 1, all others to 0. *scat_data* is resized to np. Each new\n" 16063           "scattering element represents the weighted sum of all particles at\n" 16064           "one presssure level.\n" 16066           "The method also adapts *scat_species* and *scat_meta* such that\n" 16067           "they remain consistent with *pnd_field* and can pass\n" 16068           "*cloudbox_checkedCalc*.\n" 16070           "The method is suggested to be called directly after\n" 16071           "*pnd_fieldCalcFromParticleBulkProps* (but also after\n" 16072           "*cloudbox_checkedCalc*).\n" 16073           "Its purpose is to speed up the scattering calculations.\n" 16075           "This is an experimental method currently only working for limited\n" 16076           "cases. All scattering elements must be of the same ptype and must\n" 16077           "share the same *f_grid*, *za_grid*, and *aa_grid*. That is, the\n" 16078           "scattering matrix, extinction matrix, and absorption vector of all\n" 16079           "scattering elements must have the same dimensions. No interpolation\n" 16080           "(apart from temperature) is performed.\n" 16082           "This method can only be used with a 1D atmosphere.\n"),
 16088           "cloudbox_checked"),
 16096          "cloudbox_checked",
 16109       NAME(
"ScatSpeciesPndAndScatAdd"),
 16111           "Adds single scattering data and particle number densities for one\n" 16112           "scattering species.\n" 16114           "The WSV *pnd_field_raw* containing particle number densities for\n" 16115           "all scattering species can be generated outside ARTS, for example\n" 16116           "by using PyARTS or atmlab. This method reads this data as well as\n" 16117           "its corresponding single scattering data, which is added as a new\n" 16118           "scattering species to *scat_data*.\n" 16119           "This method needs as input an ArrayOfString holding the filenames\n" 16120           "of the single scattering data for each scattering element and a\n" 16121           "file containing the corresponding *pnd_field_raw*. In contrast to\n" 16122           "the scattering data, the pnd-fields are stored in a single XML-file\n" 16123           "containing an ArrayofGriddedField3, i.e. holding the pnd-field data\n" 16124           "of all scattering elements.\n" 16126           "Important note:\n" 16127           "The order of the filenames for the scattering data files has to\n" 16128           "correspond to the order of the pnd-fields, stored in the variable\n" 16129           "*pnd_field_raw*.\n"),
 16130       AUTHORS(
"Claudia Emde, Jana Mendrok"),
 16131       OUT(
"scat_data_raw", 
"pnd_field_raw"),
 16135       IN(
"scat_data_raw", 
"pnd_field_raw", 
"atmosphere_dim"),
 16136       GIN(
"scat_data_files", 
"pnd_fieldarray_file"),
 16137       GIN_TYPE(
"ArrayOfString", 
"String"),
 16140           "Array of names of files containing the single scattering data.",
 16141           "Name of file holding the corresponding array of pnd_field data.")));
 16144       NAME(
"ScatSpeciesScatAndMetaRead"),
 16146           "Reads single scattering data and scattering meta data for one\n" 16147           "scattering species.\n" 16149           "This method takes a string array as input containing the location\n" 16150           "(path and filename) of the single scattering data. Location of\n" 16151           "corresponding scattering meta data is derived applying a naming\n" 16152           "convention: ending '.xml*' is replaced by '.meta.xml' (search for\n" 16153           "zipped files is done automatically).\n" 16155           "All scattering elements read in one call of the method are assigned\n" 16156           "to one and the same scattering species. That is, reading in data for\n" 16157           "a bunch of scattering species can be realized by multiple call of\n" 16158           "this method. Assignment to scattering species is in the order of the\n" 16159           "calls (i.e., first method call reads data for first *scat_species*\n" 16160           "entry, second call for second scat_species entry and so on).\n" 16161           "Note that no two scattering elements of the same scattering species\n" 16162           "are allowed to be equal in size*\n" 16164           "Important note:\n" 16165           "The order of the filenames for the single scattering data files has to\n" 16166           "exactly correspond to the order of the scattering meta data files.\n"),
 16167       AUTHORS(
"Daniel Kreyling, Oliver Lemke, Jana Mendrok"),
 16168       OUT(
"scat_data_raw", 
"scat_meta"),
 16172       IN(
"scat_data_raw", 
"scat_meta"),
 16173       GIN(
"scat_data_files"),
 16176       GIN_DESC(
"Array of single scattering data file names.")));
 16179       NAME(
"scat_data_singleTmatrix"),
 16181           "A basic interface to Mishchenko's T-matrix code linked to ARTS.\n" 16183           "The method performs a T-matrix calculation for a single scattering\n" 16184           "element, i.e. a combination of particle shape, size, aspect ratio\n" 16185           "and orientation.\n" 16187           "Particle shape (*shape*) has two options:\n" 16188           "   \"spheroidal\" and \"cylindrical\"\n" 16190           "Particle size (*diameter_volume_equ*) is given as the equivalent\n" 16191           "volume sphere diameter. That is, the diameter obtained if all the\n" 16192           "particle's material is rearranged into a (solid) sphere.\n" 16194           "Particle aspect ratio ar (*aspect_ratio*) is a numeric value, defined\n" 16195           "according to Mishchenko's definition as ratio of horizontal axis a to\n" 16196           "vertical (rotational) axis b: ar=a/b. That is, oblates have ar>1,\n" 16198           "Perfect spheres (spheroidals with ar=1) can trigger numerical issues.\n" 16199           "To avoid these, we internally increase their aspect ratio by 1e-6,\n" 16200           "i.e. turning perfect spheres into very light oblates.\n" 16202           "Particle type (*ptype*) has two options:\n" 16203           "   \"totally_random\" and \"azimuthally_random\"\n" 16204           "For totally randomly oriented particles, *data_aa_grid* is not taken\n" 16205           "into account (but a Vector type container needs to be passed).\n" 16207           "For further information on how aspect ratio and the different shapes\n" 16208           "and orientations are defined, see the documentation of the T-matrix\n" 16209           "code found http://www.giss.nasa.gov/staff/mmishchenko/t_matrix.html\n" 16211           "Regarding *ndgs*, we refer to the this comment from the documentation:\n" 16212           "   \"Parameter controlling the number of division points\n" 16213           "   in computing integrals over the particle surface.\n" 16214           "   For compact particles, the recommended value is 2.\n" 16215           "   For highly aspherical particles larger values (3, 4,...)\n" 16216           "   may be necessary to obtain convergence.\n" 16217           "   The code does not check convergence over this parameter.\n" 16218           "   Therefore, control comparisons of results obtained with\n" 16219           "   different NDGS-values are recommended.\"\n"),
 16220       AUTHORS(
"Johan Strandgren", 
"Patrick Eriksson"),
 16221       OUT(
"scat_data_single", 
"scat_meta_single"),
 16225       IN(
"complex_refr_index"),
 16227           "diameter_volume_equ",
 16264                   "Set by user, unknown source.",
 16268       GIN_DESC(
"Particle shape. Options listed above.",
 16269                "Particle volume equivalent diameter [m]. See defintion above.",
 16270                "Particle aspect ratio.",
 16271                "Particle mass. This information is just included in the meta" 16272                " data, and does not affect the T-matrix calculations.",
 16273                "Particle type/orientation. Options listed above.",
 16274                "Frequency grid of the scattering data to be calculated.",
 16275                "Temperature grid of the scattering data to be calculated.",
 16276                "Zenith angle grid of the scattering data to be calculated.",
 16277                "Azimuth angle grid of the scattering data to be calculated.",
 16278                "Accuracy of the computations.",
 16279                "String describing the source of *complex_refr_index*, for" 16280                " inclusion in meta data.",
 16281                "See above. So far only applied for random orientation.",
 16282                "Continue even if individual T-matrix calculations fail. " 16283                "Respective scattering element data will be NAN.",
 16284                "Suppress print output from tmatrix fortran code.")));
 16337       NAME(
"scat_data_checkedCalc"),
 16339           "Checks dimensions, grids and single scattering properties of all\n" 16340           "scattering elements in *scat_data*.\n" 16342           "Dimension and grid equirements:\n" 16343           "- The scattering element's f_grid is either identical to *f_grid* or\n" 16344           "  of dimension 1.\n" 16345           "- In the latter case, the scattering element's f_grid value must\n" 16346           "  not deviate from any of the *f_grid* values by more than a\n" 16347           "  fraction of *dfrel_threshold*.\n" 16348           "- The frequency dimension of pha_mat_data, ext_mat_data, and\n" 16349           "  abs_vec_data is either equal to the scattering element's f_grid\n" 16351           "- The temperature dimension of pha_mat_data, ext_mat_data, and\n" 16352           "  abs_vec_data is either equal to the scattering element's T_grid\n" 16354           "- The temperature dimension of ext_mat_data, and abs_vec_data is\n" 16357           "The single scattering property contents are checked using\n" 16358           "*scat_dataCheck*. For details, see there. The depth of these checks\n" 16359           "and their rigour can adapted (see description of parameters\n" 16360           "*check_level* and *sca_mat_threshold* in *scat_dataCheck*) or can\n" 16361           "be skipped entirely (setting *check_level* to 'none').\n" 16362           "NOTE: These test shall only be skipped when one is confident that\n" 16363           "the data is correct, e.g. by having run *scat_dataCheck* on the set\n" 16364           "of data before, e.g. in a separate ARTS run.\n"),
 16366       OUT(
"scat_data_checked"),
 16370       IN(
"scat_data", 
"f_grid"),
 16371       GIN(
"dfrel_threshold", 
"check_level", 
"sca_mat_threshold"),
 16372       GIN_TYPE(
"Numeric", 
"String", 
"Numeric"),
 16374       GIN_DESC(
"Maximum relative frequency deviation between (single entry)" 16375                " scattering element f_grid values and the RT calculation's" 16377                "See *check_level* in *scat_dataCheck*.",
 16378                "See *sca_mat_threshold* in *scat_dataCheck*.")));
 16381       NAME(
"scat_data_monoCalc"),
 16383           "Interpolates *scat_data* by frequency to give *scat_data_mono*.\n"),
 16385       OUT(
"scat_data_mono"),
 16389       IN(
"scat_data", 
"f_grid", 
"f_index"),
 16396       NAME(
"scat_data_monoExtract"),
 16398           "Extracts data at *f_index* from *scat_data* to give *scat_data_mono*.\n"),
 16400       OUT(
"scat_data_mono"),
 16404       IN(
"scat_data", 
"f_index"),
 16411       NAME(
"scat_dataCalc"),
 16413           "Prepares *scat_data* for the scattering solver.\n" 16415           "Derives single scattering data for the frequencies given by\n" 16416           "*f_grid* by interpolation from *scat_data_raw*. *f_grid* should be\n" 16417           "the actual WSV *f_grid* or a single-element Vector.\n"),
 16423       IN(
"scat_data_raw", 
"f_grid"),
 16424       GIN(
"interp_order"),
 16427       GIN_DESC(
"Interpolation order.")));
 16430       NAME(
"scat_dataCheck"),
 16432           "Method for checking the validity and consistency of the single\n" 16433           "scattering properties in *scat_data*.\n" 16435           "It checks that *scat_data* does not contain any invalid values,\n" 16436           "that is any NaN elements in K, Z, or a or any negative values in\n" 16437           "the 'scalar' properties K11, Z11, and a1.\n" 16439           "When *check_type* is 'all', it is furthermore checked that the\n" 16440           "scattering matrix is properly normalized, that is that the solid\n" 16441           "sphere integrated scattering matrix (int_Z11), which is supposed to\n" 16442           "be normalized to the scattering cross section, is sufficiently\n" 16443           "consistent with the scattering cross section (C_sca) derived from\n" 16444           "the difference of extinction (K11) and absorption (a1):\n" 16445           "int_z11 ~ C_sca = K11-a1.\n" 16446           "Sufficient consistency is defined by the maximum allowed deviation\n" 16447           "in single scattering albedo, *sca_mat_threshold*, testing for\n" 16448           "  ( <int_Z11>/<C_sca>-1. ) * ( <C_sca>/<K11> ) <= sca_mat_threshold.\n" 16449           "The check is skipped if *check_type* is 'sane'.\n"),
 16450       AUTHORS(
"Claudia Emde", 
"Jana Mendrok"),
 16456       GIN(
"check_type", 
"sca_mat_threshold"),
 16459       GIN_DESC(
"The level of checks to apply on scat_data ('sane' or 'all';" 16461                "Threshold for allowed albedo deviation (see above).")));
 16464       NAME(
"scat_dataReduceT"),
 16466           "Reduces temperature dimension of single scattering to a single entry.\n" 16469           "Derives single scattering data for the frequencies given by\n" 16470           "*f_grid* by interpolation from *scat_data*. *f_grid* should be\n" 16471           "the actual WSV *f_grid* or a single-element Vector.\n"),
 16482           "sca_mat_threshold"),
 16483       GIN_TYPE(
"Index", 
"Numeric", 
"Index", 
"Index", 
"Numeric"),
 16485       GIN_DESC(
"Apply on *scat_data* from scattering species of this index" 16487                "Temperature to interpolate *scat_data* to.",
 16488                "Interpolation order.",
 16489                "Flag whether to apply temperture reduction on phase matrix" 16490                " data only (1) or on all single scattering properties (0).",
 16491                "Threshold for allowed albedo deviation.")));
 16494       NAME(
"ScatSpeciesSizeMassInfo"),
 16496           "Derives size and mass information for a scattering species." 16498           "This method assumes that the mass-size relationship can described\n" 16499           "by *scat_species_a* and *scat_species_b*. See documentation of \n" 16500           "*scat_species_a* for details.\n" 16502           "The quantity to be used as size descriptor is here denoted as x, and\n" 16503           "is selected by setting *x_unit*. The options are:\n" 16504           " \"dveq\" : The size grid is set to scat_meta.diameter_volume_equ\n" 16505           " \"dmax\" : The size grid is set to scat_meta.diameter_max\n" 16506           " \"area\" : The size grid is set to scat_meta.diameter_area_equ_aerodynamical\n" 16507           " \"mass\" : The size grid is set to scat_meta.mass\n" 16508           "This selection determines *scat_species_x*.\n" 16510           "The parameters *scat_species_a* and *scat_species_b* are determined by\n" 16511           "a numeric fit between *scat_species_x* and corresponding masses in\n" 16512           "*scat_meta*. This fit is performed over sizes inside the range\n" 16513           "[x_fit_start,x_fit_end]. This range is allowed to be broader than\n" 16514           "the coverage of *scat_species_x*. There must be at least two sizes\n" 16515           "inside [x_fit_start,x_fit_end].\n"),
 16516       AUTHORS(
"Manfred Brath", 
"Jana Mendrok", 
"Patrick Eriksson"),
 16517       OUT(
"scat_species_x", 
"scat_species_a", 
"scat_species_b"),
 16522       GIN(
"species_index", 
"x_unit", 
"x_fit_start", 
"x_fit_end", 
"do_only_x"),
 16523       GIN_TYPE(
"Index", 
"String", 
"Numeric", 
"Numeric", 
"Index"),
 16525       GIN_DESC(
"Take data from scattering species of this index (0-based) in" 16527                "Unit for size grid, allowed options listed above.",
 16528                "Smallest size to consider in fit to determine a and b.",
 16529                "Largest size to consider in fit to determine a and b.",
 16530                "A flag to deactivate calculation of a and b, to possibly " 16531                "save some time. The a and b parameters are then set to -1." 16532                "Default is to calculate a and b.")));
 16535       NAME(
"particle_fieldCleanup"),
 16537           "Removes unrealistically small or erroneous data from particle fields.\n" 16539           "This WSM checks if the input particle field (e.g.\n" 16540           "*particle_bulkprop_field*, scat_species_XXX_field) contains values\n" 16541           "smaller than the given *threshold*. In this case, these values will\n" 16542           "be set to zero.\n" 16544           "The method should be applied if the particle fields contain\n" 16545           "unrealistically small or erroneous data (NWP/GCM model data, e.g.\n" 16546           "from the Chevallierl_91l sets, often contain very small or even\n" 16547           "negative values, which are numerical artefacts rather than physical\n" 16549           "For the scat_species_XXX_fields, it needs to be applied separately\n" 16550           "per Tensor4 type field collection. This allows to use different\n" 16551           "thresholds for the different types of fields (not for the different\n" 16552           "scattering species, though).\n" 16554           "*particle_fieldCleanup* shall be called after generation of the\n" 16555           "atmopheric fields.\n"),
 16558       GOUT(
"particle_field_out"),
 16560       GOUT_DESC(
"A particle property field, e.g. *particle_bulkprop_field*" 16561                 " or *scat_species_mass_density_field*"),
 16563       GIN(
"particle_field_in", 
"threshold"),
 16566       GIN_DESC(
"A particle property field, e.g. *particle_bulkprop_field* or" 16567                " *scat_species_mass_density_field*",
 16568                "Threshold below which the *particle_field* values are set to" 16574           "Method to select some elements from one array and copy them to\n" 16575           "a new array. (Works also for vectors.)\n" 16577           "This works also for higher dimensional objects, where the selection is\n" 16578           "always performed in the first dimension.\n" 16580           "If needleindexes is set to [-1], all elements are copied." 16584           "Select(y,x,[0,3])\n" 16586           "will select the first and fourth row of matrix x and copy them to the\n" 16587           "output matrix y.\n" 16589           "Note that it is even safe to use this method if needles and haystack\n" 16590           "are the same variable.\n"),
 16594       GOUT_TYPE(ARRAY_GROUPS + 
", Vector, Matrix, Sparse"),
 16595       GOUT_DESC(
"Selected elements. Must have the same variable type as " 16598       GIN(
"haystack", 
"needleindexes"),
 16599       GIN_TYPE(ARRAY_GROUPS + 
", Vector, Matrix, Sparse", 
"ArrayOfIndex"),
 16601       GIN_DESC(
"Variable to select from. May be the same variable as needles.",
 16602                "The elements to select (zero based indexing, as always.)"),
 16608       NAME(
"sensor_checkedCalc"),
 16610           "Checks consistency of the sensor variables.\n" 16612           "The following WSVs are examined: *f_grid*, *sensor_pos*, *sensor_los*,\n" 16613           "*transmitter_pos*, *mblock_dlos_grid*, *antenna_dim*,\n" 16614           "*sensor_response*, *sensor_response_f*, *sensor_response_pol*,\n" 16615           "and *sensor_response_dlos*.\n" 16617           "If any of these variables are changed, then this method shall be\n" 16618           "called again (no automatic check that this is fulfilled!).\n" 16620           "The main tests are that dimensions of sensor variables agree\n" 16621           "with other settings, e.g., the size of f_grid, atmosphere_dim,\n" 16622           "stokes_dim, etc.\n" 16624           "If any test fails, there is an error. Otherwise, *sensor_checked*\n" 16627       OUT(
"sensor_checked"),
 16631       IN(
"atmosphere_dim",
 16637          "mblock_dlos_grid",
 16639          "sensor_response_f",
 16640          "sensor_response_pol",
 16641          "sensor_response_dlos"),
 16650           "Sets sensor WSVs to obtain monochromatic pencil beam values.\n" 16652           "The variables are set as follows:\n" 16653           "   mblock_dlos_grid        : One row with zero(s).\n" 16654           "   sensor_response*        : As returned by *sensor_responseInit*.\n"),
 16656       OUT(
"sensor_response",
 16657           "sensor_response_f",
 16658           "sensor_response_pol",
 16659           "sensor_response_dlos",
 16660           "sensor_response_f_grid",
 16661           "sensor_response_pol_grid",
 16662           "sensor_response_dlos_grid",
 16663           "mblock_dlos_grid"),
 16667       IN(
"stokes_dim", 
"f_grid"),
 16674       NAME(
"sensor_losGeometricFromSensorPosToOtherPositions"),
 16676           "The geometric line-of-sight between pair of points.\n" 16678           "The method sets *sensor_los* to the line-of-sights, that matches the\n" 16679           "geometrical propagation path from *sensor_pos* to *target_pos*. This\n" 16680           "is done for pair of positions, i.e. the two matrices shall have the same\n" 16681           "number of rows. The number of columns in *target_pos* shall be two for\n" 16682           "1D and 2D and two for 3D, exactly as for *rte_pos2*.\n" 16684           "See also *rte_losGeometricFromRtePosToRtePos2*. This method calls that\n" 16685           "method for each pair of positions, where values in *sensor_pos* matches\n" 16686           "*rte_pos and values in *target_pos* matches *rte_pos2*.\n"),
 16692       IN(
"atmosphere_dim",
 16700       GIN_DESC(
"Target position, for each position in *sensor_pos*.")));
 16703       NAME(
"sensor_responseAntenna"),
 16705           "Includes response of the antenna.\n" 16707           "The function returns the sensor response matrix after the antenna\n" 16708           "characteristics have been included.\n" 16710           "The function handles \"multi-beam\" cases where the polarisation\n" 16711           "coordinate system is the same for all beams.\n" 16713           "See *antenna_dim*, *antenna_dlos* and *antenna_response* for\n" 16714           "details on how to specify the antenna response.\n" 16716           "The text below refers to *mblock_dlos_grid* despite it is not an\n" 16717           "input to the method. The method instead uses *sensor_response_dlos_grid*\n" 16718           "but the values in this WSV are likely coming from *mblock_dlos_grid*.\n" 16720           "One dimensional antenna patterns are handled as other response\n" 16721           "functions. That is, both antenna response and radiances are treated\n" 16722           "as piece-wise linear functions, and the pencil beam calculations must\n" 16723           "cover the full sensor response (i.e. *mblock_dlos_grid* must be\n" 16724           "sufficiently broad).\n" 16726           "There exist different options for two dimensional (2D) antenna patterns,\n" 16727           "see below (if 2D, the GIN *option_2d* must be set, the default results\n" 16728           "in an error). A normalisation is always applied for 2D antennas (i.e.\n" 16729           "*sensor-norm* is ignored).\n" 16731           "\"interp_response\"" 16732           "For this option, each direction defined by *mblock_dlos_grid* is\n" 16733           "considered to represent the same size in terms of solid beam angle,\n" 16734           "and the antenna pattern is interpolated to these directions. There is\n" 16735           "no check on how well *mblock_dlos_grid* covers the antenna response.\n" 16736           "The response is treated to be zero outside the ranges of its  anular\n" 16740           "This option is more similar to the 1D case. The radiances are treated\n" 16741           "as a bi-linear function, but the antenna response is treated as step-\n" 16742           "wise constant function (in contrast to 1D). For this option\n" 16743           "*mblock_dlos_grid* must match a combination of zenith and azimuth\n" 16744           "grids, and this for a particular order. If the zenith and azimuth\n" 16745           "grids have 3 and 2 values, respectively, the order shall be:\n" 16746           "  [(za1,aa1); (za2,aa1); (za3,aa1); (za1,aa2); (za2,aa2); (za3,aa2) ]\n" 16747           "Both these grids must be strictly increasing and as for 1D must cover\n" 16748           "the antenna response completely.\n"),
 16749       AUTHORS(
"Patrick Eriksson", 
"Mattias Ekstrom"),
 16750       OUT(
"sensor_response",
 16751           "sensor_response_f",
 16752           "sensor_response_pol",
 16753           "sensor_response_dlos",
 16754           "sensor_response_dlos_grid"),
 16758       IN(
"sensor_response",
 16759          "sensor_response_f",
 16760          "sensor_response_pol",
 16761          "sensor_response_dlos",
 16762          "sensor_response_f_grid",
 16763          "sensor_response_pol_grid",
 16764          "sensor_response_dlos_grid",
 16768          "antenna_response",
 16770       GIN( 
"option_2d" ),
 16773       GIN_DESC( 
"Calculation option for 2D antenna cases. See above for details." )));
 16776       NAME(
"sensor_responseBackend"),
 16778           "Includes response of the backend (spectrometer).\n" 16780           "The function returns the sensor response matrix after the backend\n" 16781           "characteristics have been included.\n" 16783           "See *f_backend*, *backend_channel_response* and *sensor_norm* for\n" 16784           "details on how to specify the backend response.\n"),
 16785       AUTHORS(
"Mattias Ekstrom", 
"Patrick Eriksson"),
 16786       OUT(
"sensor_response",
 16787           "sensor_response_f",
 16788           "sensor_response_pol",
 16789           "sensor_response_dlos",
 16790           "sensor_response_f_grid"),
 16794       IN(
"sensor_response",
 16795          "sensor_response_f",
 16796          "sensor_response_pol",
 16797          "sensor_response_dlos",
 16798          "sensor_response_f_grid",
 16799          "sensor_response_pol_grid",
 16800          "sensor_response_dlos_grid",
 16802          "backend_channel_response",
 16810       NAME(
"sensor_responseBackendFrequencySwitching"),
 16812           "Frequency switching for a pure SSB reciever.\n" 16814           "This function can be used for simulation of frequency switching.\n" 16815           "That is, when the final spectrum is the difference of two spectra\n" 16816           "shifted in frequency. The switching is performed by the LO, but\n" 16817           "for a pure singel sideband reciever this is most easily simulated\n" 16818           "by instead shifting the backend, as done here.\n" 16820           "A strightforward frequency switching is modelled (no folding)\n" 16821           "The channel positions for the first measurement cycle are\n" 16822           "f_backend+df1, and for the second f_backend+df2. The first\n" 16823           "measurement cycle is given the negive weight. That is, the output\n" 16824           "is the spectrum for cycle2 minus the spectrum for cycle1.\n" 16825           "Output frequency grids are set to *f_backend*.\n" 16827           "Use *sensor_responseFrequencySwitching* for double sideband cases.\n" 16829           "The method has the same general functionality as, and can replace,\n" 16830           "*sensor_responseBackend*.\n"),
 16832       OUT(
"sensor_response",
 16833           "sensor_response_f",
 16834           "sensor_response_pol",
 16835           "sensor_response_dlos",
 16836           "sensor_response_f_grid"),
 16840       IN(
"sensor_response",
 16841          "sensor_response_f",
 16842          "sensor_response_pol",
 16843          "sensor_response_dlos",
 16844          "sensor_response_f_grid",
 16845          "sensor_response_pol_grid",
 16846          "sensor_response_dlos_grid",
 16848          "backend_channel_response",
 16853       GIN_DESC(
"Frequency throw for cycle1.", 
"Frequency throw for cycle2.")));
 16856       NAME(
"sensor_responseBeamSwitching"),
 16858           "Simulation of \"beam switching\".\n" 16860           "The measurement procedure is based on taking the difference between\n" 16861           "two spectra measured in different directions, and the calculation\n" 16862           "set-up must treat exactly two observation directions.\n" 16864           "The returned spectrum is y = w1*y + w2*y2, where y1 and w1 are the\n" 16865           "spectrum and weight for the first direction, respectively (y2 and\n" 16866           "(w2 defined correspondingly for the second direction).\n" 16868           "Zenith and azimuth angles after beam switching are set to the\n" 16869           "values of the second direction.\n"),
 16871       OUT(
"sensor_response",
 16872           "sensor_response_f",
 16873           "sensor_response_pol",
 16874           "sensor_response_dlos",
 16875           "sensor_response_dlos_grid"),
 16879       IN(
"sensor_response",
 16880          "sensor_response_f",
 16881          "sensor_response_pol",
 16882          "sensor_response_dlos",
 16883          "sensor_response_f_grid",
 16884          "sensor_response_pol_grid",
 16885          "sensor_response_dlos_grid"),
 16889       GIN_DESC(
"Weight for values from first viewing direction.",
 16890                "Weight for values from second viewing direction.")));
 16893       NAME(
"sensor_responseFillFgrid"),
 16895           "Polynomial frequency interpolation of spectra.\n" 16897           "The sensor response methods treat the spectra to be piece-wise linear\n" 16898           "functions. This method is a workaround for making methods handling\n" 16899           "the spectra in a more elaborate way: it generates spectra on a more\n" 16900           "dense grid by polynomial interpolation. The interpolation is not\n" 16901           "done explicitly, it is incorporated into *sensor_response*.\n" 16903           "This method should in general increase the calculation accuracy for\n" 16904           "a given *f_grid*. However, the selection of (original) grid points\n" 16905           "becomes more sensitive when using this method. A poor choice of grid\n" 16906           "points can result in a decreased accuracy, or generation of negative\n" 16907           "radiances. Test calculations indicated that the error easily can\n" 16908           "increase with this method close the edge of *f_grid*, and it could\n" 16909           "be wise to make *f_grid* a bit wider than actually necessary to avoid\n" 16912           "The method shall be inserted before the antenna stage. That is, this\n" 16913           "method shall normally be called directly after *sensor_responseInit*.\n" 16915           "Between each neighbouring points of *f_grid*, this method adds\n" 16916           "*nfill* grid points. The polynomial order of the interpolation is\n" 16919       OUT(
"sensor_response",
 16920           "sensor_response_f",
 16921           "sensor_response_pol",
 16922           "sensor_response_dlos",
 16923           "sensor_response_f_grid"),
 16927       IN(
"sensor_response",
 16928          "sensor_response_f",
 16929          "sensor_response_pol",
 16930          "sensor_response_dlos",
 16931          "sensor_response_f_grid",
 16932          "sensor_response_pol_grid",
 16933          "sensor_response_dlos_grid"),
 16934       GIN(
"polyorder", 
"nfill"),
 16937       GIN_DESC(
"Polynomial order of interpolation",
 16938                "Number of points to insert in each gap of f_grid")));
 16941       NAME(
"sensor_responseFrequencySwitching"),
 16943           "Simulation of \"frequency switching\".\n" 16945           "A general method for frequency switching. The WSM\n" 16946           "*sensor_responseBackendFrequencySwitching* gives a description of\n" 16947           "this observation technique, and is also a more straightforward\n" 16948           " method for pure singel sideband cases.\n" 16950           "It is here assume that *sensor_responseMultiMixerBackend* has been\n" 16951           "used to calculate the spectrum for two LO positions. This method\n" 16952           "calculates the difference between these two spectra, where the\n" 16953           "second spectrum gets weight 1 and the first weight -1 (as in\n" 16954           "*sensor_responseBackendFrequencySwitching*).\n" 16956           "Output frequency grids are taken from the second spectrum.\n"),
 16958       OUT(
"sensor_response",
 16959           "sensor_response_f",
 16960           "sensor_response_pol",
 16961           "sensor_response_dlos",
 16962           "sensor_response_f_grid"),
 16966       IN(
"sensor_response",
 16967          "sensor_response_f",
 16968          "sensor_response_pol",
 16969          "sensor_response_dlos",
 16970          "sensor_response_f_grid",
 16971          "sensor_response_pol_grid",
 16972          "sensor_response_dlos_grid"),
 16979       NAME(
"sensor_responseIF2RF"),
 16981           "Converts sensor response variables from IF to RF.\n" 16983           "The function converts intermediate frequencies (IF) in\n" 16984           "*sensor_response_f* and *sensor_response_f_grid* to radio\n" 16985           "frequencies (RF). This conversion is needed if the frequency\n" 16986           "translation of a mixer is included and the position of backend\n" 16987           "channels are specified in RF.\n" 16989           "A direct frequency conversion is performed. Values are not\n" 16990           "sorted in any way.\n"),
 16992       OUT(
"sensor_response_f", 
"sensor_response_f_grid"),
 16996       IN(
"sensor_response_f", 
"sensor_response_f_grid", 
"lo", 
"sideband_mode"),
 17003       NAME(
"sensor_responseInit"),
 17005           "Initialises the variables summarising the sensor response.\n" 17007           "This method sets the variables to match monochromatic pencil beam\n" 17008           "calculations, to be further modified by inclusion of sensor\n" 17009           "characteristics. Use *sensorOff* if pure monochromatic pencil\n" 17010           "beam calculations shall be performed.\n" 17012           "The variables are set as follows:\n" 17013           "   sensor_response : Identity matrix, with size matching *f_grid*,\n" 17014           "                     *stokes_dim* and *mblock_dlos_grid*.\n" 17015           "   sensor_response_f       : Repeated values of *f_grid*.\n" 17016           "   sensor_response_pol     : Data matching *stokes_dim*.\n" 17017           "   sensor_response_dlos    : Repeated values of *mblock_dlos_grid*.\n" 17018           "   sensor_response_f_grid  : Equal to *f_grid*.\n" 17019           "   sensor_response_pol_grid: Set to 1:*stokes_dim*.\n" 17020           "   sensor_response_dlos_grid : Equal to *mblock_dlos_grid*.\n"),
 17021       AUTHORS(
"Mattias Ekstrom", 
"Patrick Eriksson"),
 17022       OUT(
"sensor_response",
 17023           "sensor_response_f",
 17024           "sensor_response_pol",
 17025           "sensor_response_dlos",
 17026           "sensor_response_f_grid",
 17027           "sensor_response_pol_grid",
 17028           "sensor_response_dlos_grid"),
 17033          "mblock_dlos_grid",
 17044       NAME(
"sensor_responseMetMM"),
 17046           "Sensor setup for meteorological millimeter instruments.\n" 17048           "This method is handy if you are simulating a passband-type instrument,\n" 17049           "consisting of a few discrete channels.\n" 17051           "For flexibility, the Met-MM system is seperated in two calculation\n" 17052           "steps. To fully use the system, create *f_grid* (and some associated\n" 17053           "variables) by *f_gridMetMM* before calling this method. However, it is\n" 17054           "possible to use this method with any *f_grid*, as long as matching\n" 17055           "*f_backend*, *channel2fgrid_indexes* and *channel2fgrid_weights*\n" 17058           "Each scan sequence is treated as a measurement block. *sensor_pos* is\n" 17059           "set in the standard way. The number of rows in *sensor_pos* determines the\n" 17060           "number of scan sequences that will be simulated. On the other hand,\n" 17061           "*sensor_los* is handled in a special way. All zenith angles must be set\n" 17062           "to 180 deg. For 3D, the given azimuth angles are taken as the direction\n" 17063           "of scanning, where the azimuth angle is defined with respect to North\n" 17064           "in standard manner. For example, if the scanning happens to move from\n" 17065           "SW to NE, the azimuth angle should be set to 45 deg. The angles of the\n" 17066           "scanning sequence are taken from *antenna_dlos*. This WSV is here only\n" 17067           "allowed to have a single column, holding relative zenith angles. For\n" 17068           "3D, the azimuth angles in *antenna_dlos* are hard-coded to zero. As\n" 17069           "zenith angles in *sensor_los* are locked to 180 deg, *antenna_dlos*\n" 17070           "effectively holds the nadir angles. These angles can be both positive or\n" 17071           "negative, where the recommended choice is to operate with negative\n" 17072           "to end up with final zenith angles between 0 and 180 deg.\n" 17074           "The method does not support 2D atmospheres (across-track scanning is\n" 17075           "inconsistent with 2D). For simpler switching between 1D and 3D,\n" 17076           "the argument *mirror_dza* is at hand. It can only be used for 3D.\n" 17077           "If set to true, the zenith angles in *antenna_dlos* are mapped\n" 17078           "to also cover the other side of the swath and the simulations will\n" 17079           "cover both sides of the swath.\n"),
 17080       AUTHORS(
"Oliver Lemke", 
"Patrick Eriksson"),
 17082           "mblock_dlos_grid",
 17084           "sensor_response_f",
 17085           "sensor_response_pol",
 17086           "sensor_response_dlos",
 17087           "sensor_response_f_grid",
 17088           "sensor_response_pol_grid",
 17089           "sensor_response_dlos_grid",
 17094       IN(
"atmosphere_dim",
 17098          "channel2fgrid_indexes",
 17099          "channel2fgrid_weights",
 17102          "met_mm_polarisation",
 17104       GIN(
"use_antenna", 
"mirror_dza"),
 17107       GIN_DESC(
"Flag to enable (1) or disable (0) antenna.",
 17108                "Flag to include second part of swath (only 3D, see above).")));
 17111       NAME(
"sensor_responseMixer"),
 17113           "Includes response of the mixer of a heterodyne system.\n" 17115           "The function returns the sensor response matrix after the mixer\n" 17116           "characteristics have been included. Frequency variables are\n" 17117           "converted from radio frequency (RF) to intermediate frequency (IF).\n" 17118           "The returned frequency grid covers the range [0,max_if], where\n" 17119           "max_if is the highest IF covered by the sideband response grid.\n" 17121           "See *lo* and *sideband_response* for details on how to specify the\n" 17122           "mixer response\n"),
 17123       AUTHORS(
"Mattias Ekstrom", 
"Patrick Eriksson"),
 17124       OUT(
"sensor_response",
 17125           "sensor_response_f",
 17126           "sensor_response_pol",
 17127           "sensor_response_dlos",
 17128           "sensor_response_f_grid"),
 17132       IN(
"sensor_response",
 17133          "sensor_response_f",
 17134          "sensor_response_pol",
 17135          "sensor_response_dlos",
 17136          "sensor_response_f_grid",
 17137          "sensor_response_pol_grid",
 17138          "sensor_response_dlos_grid",
 17140          "sideband_response",
 17148       NAME(
"sensor_responseMixerBackendPrecalcWeights"),
 17150           "Includes pre-calculated response covering mixer and backend.\n" 17152           "This method acts similar to *sensor_responseBackend*, but uses\n" 17153           "pre-calculated weights. These weights can also include the effect\n" 17154           "of mixer and sideband filtering.\n" 17156           "As usual, *f_backend* gives the frequency of the channels. This WSM\n" 17157           "has no direct influence on the result, but at least representative\n" 17158           "values must be set.\n" 17160           "The frequency response is defined using *channel2fgrid_indexes* and\n" 17161           "*channel2fgrid_weights*.\n" 17163           "Both *channel2fgrid_indexes* and *channel2fgrid_weights* are assumed\n" 17164           "to be common for all viewing directions.\n"),
 17166       OUT(
"sensor_response",
 17167           "sensor_response_f",
 17168           "sensor_response_pol",
 17169           "sensor_response_dlos",
 17170           "sensor_response_f_grid"),
 17174       IN(
"sensor_response",
 17175          "sensor_response_f",
 17176          "sensor_response_pol",
 17177          "sensor_response_dlos",
 17178          "sensor_response_f_grid",
 17179          "sensor_response_pol_grid",
 17180          "sensor_response_dlos_grid",
 17182          "channel2fgrid_indexes",
 17183          "channel2fgrid_weights"),
 17190       NAME(
"sensor_responseMultiMixerBackend"),
 17192           "Handles mixer and backend parts for an instrument having multiple\n" 17195           "The WSMs *sensor_responseMixer*, *sensor_responseIF2RF* and\n" 17196           "*sensor_responseBackend* are called for each mixer chain, and a\n" 17197           "complete *sensor_response* is assembled. The instrument responses\n" 17198           "are described by *lo_multi*, *sideband_response_multi*,\n" 17199           "*sideband_mode_multi*, *f_backend_multi* and\n" 17200           "*backend_channel_response_multi*. All these WSVs must have same\n" 17201           "vector or array length. As *sensor_responseIF2RF* is called,\n" 17202           "*f_backend_multi* must hold RF (not IF) and output frequencies\n" 17203           "will be in absolute frequency (RF).\n"),
 17205       OUT(
"sensor_response",
 17206           "sensor_response_f",
 17207           "sensor_response_pol",
 17208           "sensor_response_dlos",
 17209           "sensor_response_f_grid"),
 17213       IN(
"sensor_response",
 17214          "sensor_response_f",
 17215          "sensor_response_pol",
 17216          "sensor_response_dlos",
 17217          "sensor_response_f_grid",
 17218          "sensor_response_pol_grid",
 17219          "sensor_response_dlos_grid",
 17221          "sideband_response_multi",
 17222          "sideband_mode_multi",
 17224          "backend_channel_response_multi",
 17232       NAME(
"sensor_responsePolarisation"),
 17234           "Extraction of non-default polarisation components.\n" 17236           "The default is to output the Stokes elements I, Q, U and V (up to\n" 17237           "*stokes_dim*). This method allows to change the \"polarisation\" of\n" 17238           "the output. Polarisation components to be extracted are selected by\n" 17239           "*instrument_pol*. This method can be applied at any step of the sensor\n" 17242           "The method can only be applied on data for I, Q, U and V. The value\n" 17243           "of *stokes_dim* must be sufficiently large for the selected\n" 17244           "components. For example, I+45 requires that *stokes_dim* is at\n" 17247           "See *instrument_pol* for coding of polarisation states.\n" 17249           "Note that the state of *iy_unit* is considered. This WSV must give\n" 17250           "the actual unit of the data. This as, the extraction of components\n" 17251           "is slightly different if data are radiances or brightness\n" 17252           "temperatures.  In practise this means that *iy_unit* (as to be\n" 17253           "applied inside *iy_main_agenda*) must be set before calling this\n" 17256       OUT(
"sensor_response",
 17257           "sensor_response_f",
 17258           "sensor_response_pol",
 17259           "sensor_response_dlos",
 17260           "sensor_response_pol_grid"),
 17264       IN(
"sensor_response",
 17265          "sensor_response_f",
 17266          "sensor_response_pol",
 17267          "sensor_response_dlos",
 17268          "sensor_response_f_grid",
 17269          "sensor_response_pol_grid",
 17270          "sensor_response_dlos_grid",
 17280       NAME(
"sensor_responseStokesRotation"),
 17282           "Includes a rotation of the Stokes H and V directions.\n" 17284           "The method applies the rotations implied by *stokes_rotation*.\n" 17285           "See the description of that WSV for details.\n" 17287           "This method does not change the size of *sensor_response*, and\n" 17288           "the auxiliary variables (sensor_response_f etc.) are not changed.\n" 17290           "To apply the method, *stokes_dim* must be >= 3. The complete effect\n" 17291           "of the rotation can not be determibed with lower *stokes_dim*.\n"),
 17293       OUT(
"sensor_response"),
 17297       IN(
"sensor_response",
 17298          "sensor_response_f_grid",
 17299          "sensor_response_pol_grid",
 17300          "sensor_response_dlos_grid",
 17302          "stokes_rotation"),
 17309       NAME(
"sensor_responseSimpleAMSU"),
 17311           "Simplified sensor setup for an AMSU-type instrument.\n" 17313           "This method allows quick and simple definition of AMSU-type\n" 17314           "sensors. Assumptions:\n" 17316           "1. Pencil beam antenna.\n" 17317           "2. Double sideband receivers.\n" 17318           "3. Sideband mode \"upper\"\n" 17319           "4. The channel response is rectangular.\n" 17321           "Under these assumptions the only inputs needed are the LO positions,\n" 17322           "the offsets from the LO, and the IF bandwidths. They are provieded\n" 17323           "in sensor_description_amsu.\n"),
 17327           "mblock_dlos_grid",
 17329           "sensor_response_f",
 17330           "sensor_response_pol",
 17331           "sensor_response_dlos",
 17332           "sensor_response_f_grid",
 17333           "sensor_response_pol_grid",
 17334           "sensor_response_dlos_grid",
 17339       IN(
"atmosphere_dim", 
"stokes_dim", 
"sensor_description_amsu"),
 17343       GIN_DESC(
"Desired grid spacing in Hz.")));
 17346       NAME(
"sensor_responseGenericAMSU"),
 17348           "Simplified sensor setup for an AMSU-type instrument.\n" 17350           "This function is derived from 'sensor_responseSimpleAMSU' \n" 17351           "but is more generalized since the number of passbands in each \n" 17352           "can be in the range from 1 to 4 - in order to correctly simulate\n" 17353           "AMSU-A type sensors \n" 17355           "This method allows quick and simple definition of AMSU-type\n" 17356           "sensors. Assumptions:\n" 17358           "1. Pencil beam antenna.\n" 17359           "2. 1-4 Passband/sidebands per channel.\n" 17360           "3. Sideband mode \"upper\"\n" 17361           "4. The channel response is rectangular.\n" 17363           "Under these assumptions the only inputs needed are the LO positions,\n" 17364           "the offsets from the LO, and the IF bandwidths. They are provided\n" 17365           "in sensor_description_amsu.\n"),
 17369           "mblock_dlos_grid",
 17371           "sensor_response_f",
 17372           "sensor_response_pol",
 17373           "sensor_response_dlos",
 17374           "sensor_response_f_grid",
 17375           "sensor_response_pol_grid",
 17376           "sensor_response_dlos_grid",
 17381       IN(
"atmosphere_dim", 
"stokes_dim", 
"sensor_description_amsu"),
 17385       GIN_DESC(
"Desired grid spacing in Hz.")));
 17388       NAME(
"sensor_responseWMRF"),
 17390           "Adds WMRF weights to sensor response.\n" 17392           "This method adds a spectrometer response that has been calculated\n" 17393           "with the weighted mean of representative frequencies (WMRF) method. It\n" 17394           "consists of a set of selected frequencies, and associated weights.\n"),
 17396           "Stefan Buehler, based on Patrick Erikssons sensor_responseBackend"),
 17397       OUT(
"sensor_response",
 17398           "sensor_response_f",
 17399           "sensor_response_pol",
 17400           "sensor_response_dlos",
 17401           "sensor_response_f_grid"),
 17405       IN(
"sensor_response",
 17406          "sensor_response_f",
 17407          "sensor_response_pol",
 17408          "sensor_response_dlos",
 17409          "sensor_response_f_grid",
 17410          "sensor_response_pol_grid",
 17411          "sensor_response_dlos_grid",
 17421                DESCRIPTION(
"Change the number of threads used by ARTS.\n"),
 17445       GIN_DESC(
"Time to sleep for in seconds")));
 17449       DESCRIPTION(
"Sleeps until time has been reached.\n"),
 17462       NAME(
"SparseSparseMultiply"),
 17464           "Multiplies a Sparse with another Sparse, result stored in Sparse.\n" 17466           "Makes the calculation: out = m1 * m2\n"),
 17471       GOUT_DESC(
"Product, can be same variable as any of the inputs."),
 17476       GIN_DESC(
"Left sparse matrix.", 
"Right sparse matrix.")));
 17479       NAME(
"SparseMatrixIdentity"),
 17481           "Returns a sparse dentity matrix.\n" 17483           "The size of the matrix created is n x n. Default is to return a\n" 17484           "true identity matrix (I), but you can also select another value\n" 17485           "along the diagonal be setting *value*. That is, the output is\n" 17487       AUTHORS(
"Simon Pfreundschuh"),
 17496       GIN_DESC(
"Size of the matrix", 
"The value along the diagonal.")));
 17499       NAME(
"spectral_irradiance_fieldFromSpectralRadianceField"),
 17501           "Calculates the spectral irradiance from *spectral_radiance_field* .\n" 17502           "by integrating over the angular grids according to the grids set\n" 17503           "by *AngularGridsSetFluxCalc* \n" 17504           "See *AngularGridsSetFluxCalc to set \n" 17505           "*za_grid, aa_grid, and za_grid_weights*\n"),
 17507       OUT(
"spectral_irradiance_field"),
 17511       IN(
"spectral_radiance_field", 
"za_grid", 
"aa_grid", 
"za_grid_weights"),
 17518       NAME(
"spectral_radiance_fieldClearskyPlaneParallel"),
 17520           "Clear-sky radiance field of a plane parallel atmosphere.\n" 17522           "The method assumes a 1D flat planet. Radiances along each direction\n" 17523           "given by *za_grid* are calculated using *ppathPlaneParallel*\n" 17524           "and *iyEmissionStandard*.\n" 17526           "Surface properties are defined by *iy_surface_agenda*, i.e. there is no\n" 17527           "restriction to e.g. specular surfaces.\n" 17529           "Note that the variable *ppath_lmax* is considered, and that it can be\n" 17530           "critical for the accuracy for zenith angles close to 90 degrees. That\n" 17531           "is, using ppath_lmax=-1 is not recommended for this function.\n" 17533           "Information on transmission is also provided by the GOUT *trans_field*.\n" 17534           "For up-welling radiation (scat_za > 90), this variable holds the\n" 17535           "transmission to space, for considered position and propagation direction.\n" 17536           "For down-welling radiation, *trans_field* holds instead the transmission\n" 17537           "down to the surface.\n"),
 17539       OUT(
"spectral_radiance_field"),
 17540       GOUT(
"trans_field"),
 17542       GOUT_DESC(
"Dimensions: [f_grid,p_grid,za_grid]. See further above."),
 17543       IN(
"propmat_clearsky_agenda",
 17544          "water_p_eq_agenda",
 17546          "iy_surface_agenda",
 17547          "iy_cloudbox_agenda",
 17566          "surface_props_data",
 17568       GIN(
"use_parallel_iy"),
 17571       GIN_DESC(
"0: Parallelize over zenith angles\n" 17572                "1: Use more memory intensiv iyEmissionStandardParallel*")));
 17575       NAME(
"spectral_radiance_fieldCopyCloudboxField"),
 17577           "Set *spectral_radiance_field* to be a copy of *cloudbox_field*.\n" 17579           "This method can only be used for 1D atmospheres and if the cloud\n" 17580           "box covers the complete atmosphere. For such case, the two fields\n" 17581           "cover the same atmospheric volume and a direct copying can be made.\n"),
 17583       OUT(
"spectral_radiance_field"),
 17587       IN(
"atmosphere_dim",
 17598       NAME(
"spectral_radiance_fieldExpandCloudboxField"),
 17600           "Uses and expands *cloudbox_field* to set *spectral_radiance_field*.\n" 17602           "The method demands that *cloudbox_field* starts at the first pressure\n" 17603           "level (i.e. cloudbox_limits[0] is 0). The method copies *cloudbox_field*\n" 17604           "to fill *spectral_radiance_field* up to the top of the cloudbox.\n" 17606           "To fill the remaning part of *spectral_radiance_field*, clear-sky\n" 17607           "calculations are performed largely in the same maner as done by\n" 17608           "*spectral_radiance_fieldClearskyPlaneParallel*. That is, clear-sky\n" 17609           "calculations are done for the upper part of the atmosphere, assuming\n" 17612           "Note that the cloud box constitutes the lower boundary for the later\n" 17613           "calculations, and *iy_cloudbox_agenda* must be set to perform an\n" 17614           "interpolation of the cloudbox field.\n"),
 17616       OUT(
"spectral_radiance_field"),
 17620       IN(
"propmat_clearsky_agenda",
 17621          "water_p_eq_agenda",
 17623          "iy_surface_agenda",
 17624          "iy_cloudbox_agenda",
 17646          "surface_props_data",
 17648       GIN(
"use_parallel_iy"),
 17651       GIN_DESC(
"0: Parallelize over zenith angles\n" 17652                "1: Use more memory intensiv iyEmissionStandardParallel*")));
 17655       NAME(
"specular_losCalc"),
 17657           "Calculates the specular direction of surface reflections.\n" 17659           "A help method to set up the surface properties. This method\n" 17660           "calculates *specular_los*, that is required in several methods\n" 17661           "to convert zenith angles to incidence angles.\n" 17663           "The method also returns the line-of-sight matching the surface normal.\n" 17665           "The default is to consider the surface slope when calculating the\n" 17666           "specular direction. That is, the variation of *z_surface* (as well as\n" 17667           "the geoid radius) is considered and the specular direction is calculated\n" 17668           "including the specified topography. This part can be deactivated by\n" 17669           "setting *ignore_surface_slope* to 1. In this case, the zenith angle of\n" 17670           "the specular direction is simply 180-rtp_los[0]. *ignore_surface_slope*\n" 17671           "has only an effect for 2D and 3D, as 1D implies a constant radius of\n" 17672           "the surface (i.e. no topography).\n"),
 17674       OUT(
"specular_los", 
"surface_normal"),
 17685       GIN(
"ignore_surface_slope"),
 17688       GIN_DESC(
"Flag to control if surface slope is consdered or not.")));
 17691       NAME(
"specular_losCalcNoTopography"),
 17693           "Calculates the specular direction of surface reflections for horisontal\n" 17696           "In contrast to *specular_losCalc*, this method ignores the topography\n" 17697           "implied by *z_surface*. That is, any slope of the surface is ignored.\n" 17699           "The typical application of this WSM should be water surfaces (lakes and\n" 17702       OUT(
"specular_los", 
"surface_normal"),
 17706       IN(
"rtp_pos", 
"rtp_los", 
"atmosphere_dim"),
 17713       NAME(
"StringJoin"),
 17715           "Concatenate two or more strings.\n" 17717           "The output string is overwritten, but is allowed to appear\n" 17718           "in the input list. Up to 10 strings can be concatenated at once.\n"),
 17745       GIN_DEFAULT(
NODEF, 
NODEF, 
"", 
"", 
"", 
"", 
"", 
"", 
"", 
""),
 17747                "Input text string.",
 17748                "Input text string.",
 17749                "Input text string.",
 17750                "Input text string.",
 17751                "Input text string.",
 17752                "Input text string.",
 17753                "Input text string.",
 17754                "Input text string.",
 17755                "Input text string.")));
 17759                DESCRIPTION(
"Sets a String to the given text string.\n"),
 17773       NAME(
"z_surfaceFromFileAndGrid"),
 17775           "Sets the surface altitude for a given latitude and longitude grid.\n"),
 17781       IN(
"lat_grid", 
"lon_grid"),
 17782       GIN(
"filename", 
"interp_order", 
"set_lowest_altitude_to_zero"),
 17783       GIN_TYPE(
"String", 
"Index", 
"Index"),
 17786           "File of GriddedField2 with surface altitudes gridded",
 17787           "Interpolation order",
 17788           "Index that sets the lowest altitude to 0 to ignore sub-surface pressures/altitudes")));
 17791       NAME(
"z_surfaceConstantAltitude"),
 17793           "Sets the surface altitude to a constant. Defaults to zero.\n"),
 17799       IN(
"lat_grid", 
"lon_grid"),
 17803       GIN_DESC(
"The constant altitude.")));
 17806       NAME(
"surfaceBlackbody"),
 17808           "Creates variables to mimic a blackbody surface.\n" 17810           "This method sets up *surface_los*, *surface_rmatrix* and\n" 17811           "*surface_emission* for *surface_rtprop_agenda*. Here, *surface_los*\n" 17812           "and *surface_rmatrix* are set to be empty, and *surface_emission*\n" 17813           "to hold blackbody radiation for a temperature of *surface_skin_t*.\n"),
 17815       OUT(
"surface_los", 
"surface_rmatrix", 
"surface_emission"),
 17819       IN(
"atmosphere_dim",
 17831       NAME(
"surfaceFastem"),
 17833           "Usage of FASTEM together with MC and DOIT.\n" 17835           "The recommended way to use FASTEM is by *iySurfaceFastem*, but that\n" 17836           "is not always possible, such as when using MC and DOIT. This is the\n" 17837           "case as those scattering methods use *surface_rtprop_agenda*,\n" 17838           "while *iySurfaceFastem* fits with *iy_surface_agenda*. This WSM solves\n" 17839           "this by allowing FASTEM to be used inside *surface_rtprop_agenda*.\n" 17841           "However, FASTEM is here used in an approximative way. For a correct\n" 17842           "usage of FASTEM, the atmospheric transmittance shall be calculated\n" 17843           "for the position and direction of concern, but this is not possible\n" 17844           "together with DOIT and MC. Instead, the transmittance is an input\n" 17845           "to the method, and must either be pre-calculated or set to a\n" 17846           "representative value.\n" 17848           "See *iySurfaceFastem*, for further details on the special input\n" 17851       OUT(
"surface_los", 
"surface_rmatrix", 
"surface_emission"),
 17855       IN(
"atmosphere_dim",
 17866       GIN_TYPE(
"Numeric", 
"Numeric", 
"Numeric", 
"Vector", 
"Index"),
 17868       GIN_DESC(
"Salinity, 0-1. That is, 3% is given as 0.03.",
 17870                "Wind direction. See futher above.",
 17871                "Transmittance along path of downwelling radiation. A vector " 17872                "with the same length as *f_grid*.",
 17873                "The version of FASTEM to use.")));
 17876       NAME(
"surfaceTessem"),
 17878           "TESSEM sea surface microwave emissivity parametrization.\n" 17880           "This method computes surface emissivity and reflectivity matrices for\n" 17881           "ocean surfaces using the TESSEM emissivity model: Prigent, C., et al.\n" 17882           "Sea‐surface emissivity parametrization from microwaves to millimetre\n" 17883           "waves, QJRMS, 2017, 143.702: 596-605.\n" 17885           "The validity range of the parametrization of is 10 to 700 GHz, but for\n" 17886           "some extra flexibility frequencies between 5 and 900 GHz are accepted.\n" 17887           "The accepted temperaute range for *surface_skin_t* is [260.0 K, 373.0 K]\n" 17889           "The model itself is represented by the neural networks in\n" 17890           "*tessem_neth* and *tessem_netv*.\n"),
 17891       AUTHORS(
"Simon Pfreundschuh"),
 17892       OUT(
"surface_los", 
"surface_rmatrix", 
"surface_emission"),
 17896       IN(
"atmosphere_dim",
 17904       GIN(
"salinity", 
"wind_speed"),
 17907       GIN_DESC(
"Salinity, 0-1. That is, 3% is given as 0.03.", 
"Wind speed.")));
 17910       NAME(
"surfaceTelsem"),
 17912           "Compute surface emissivities using the TELSEM 2 model.\n" 17914           "This method uses second version of the TELSEM model for calculating\n" 17915           "land surface emissivities (F. Aires et al, \"A Tool to Estimate \n" 17916           " Land‐Surface Emissivities at Microwave frequencies (TELSEM) for use\n" 17917           " in numerical weather prediction\" Quarterly Journal of the Royal\n" 17918           "Meteorological Society, vol. 137, (656), pp. 690-699, 2011.)\n" 17919           "This methods computes land surface emissivities for a given pencil beam\n" 17920           "using a given TELSEM2 atlas.\n" 17921           "The input must satisfy the following conditions, otherwise an error is thrown:\n" 17922           " - The input frequencies (*f_grid*) must be within the range [5 GHz, 900 GHz]\n" 17923           " - The skin temperature (*surface_skin_t*) must be within the range\n" 17924           "   [180 K, 360 K]\n" 17926           "A TELSEM atlas contains only suface emissivities for locations that are\n" 17927           "classified as land. By default this WSM will throw an error if the\n" 17928           "pencil beam hits the surface at a position that is not contained in the\n" 17931           "The above behavior can be avoided by setting *d_max* to a positive value.\n" 17932           "This enables nearest neighbor interpolation, which assigns the emissivities\n" 17933           "of the nearest found cell in the atlas to the given position. In this case,\n" 17934           "an error is only thrown if the distance of the found neighbor is higher\n" 17935           "than the provided value of *d_max.\n" 17937           "You can limit the final reflectivity applied by setting *r_min* and *r_max*.\n" 17939           "To extract a land-sea mask from a given telsem atlas see the WSM\n" 17940           "*telsemSurfaceTypeLandSea*.\n"),
 17941       AUTHORS(
"Simon Pfreundschuh"),
 17942       OUT(
"surface_los", 
"surface_rmatrix", 
"surface_emission"),
 17946       IN(
"atmosphere_dim",
 17955       GIN(
"atlas", 
"r_min", 
"r_max", 
"d_max"),
 17956       GIN_TYPE(
"TelsemAtlas", 
"Numeric", 
"Numeric", 
"Numeric"),
 17958       GIN_DESC(
"The Telsem atlas to use for the emissivity calculation.",
 17959                "Minimum allowed value for reflectivity to apply.",
 17960                "Maximum allowed value for reflectivity to apply.",
 17961                "Maximum allowed distance in meters for nearest neighbor" 17962                " interpolation in meters. Set to a negative value or zero " 17963                " to disable interpolation.")));
 17966       NAME(
"surfaceFlatRefractiveIndex"),
 17968           "Creates variables to mimic specular reflection by a (flat) surface\n" 17969           "where the complex refractive index is specified.\n" 17971           "The dielectric properties of the surface are described by\n" 17972           "*surface_complex_refr_index*. The Fresnel equations are used to\n" 17973           "calculate amplitude reflection coefficients. The method can thus\n" 17974           "result in that the reflection properties differ between frequencies\n" 17975           "and polarisations.\n" 17977           "Local thermodynamic equilibrium is assumed, which corresponds to\n" 17978           "that the reflection and emission coefficients add up to 1.\n"),
 17980       OUT(
"surface_los", 
"surface_rmatrix", 
"surface_emission"),
 17991          "surface_complex_refr_index"),
 17998       NAME(
"surfaceFlatReflectivity"),
 18000           "Creates variables to mimic specular reflection by a (flat) surface\n" 18001           "where *surface_reflectivity* is specified.\n" 18003           "Works basically as *surfaceFlatScalarReflectivity* but is more\n" 18004           "general as vector radiative transfer is more properly handled. See\n" 18005           "the ARTS theory document (ATD) for details around how\n" 18006           "*surface_emission* is determined. In the nomenclature of ATD,\n" 18007           "*surface_reflectivity* gives R.\n"),
 18009       OUT(
"surface_los", 
"surface_rmatrix", 
"surface_emission"),
 18020          "surface_reflectivity"),
 18027       NAME(
"surfaceFlatRvRh"),
 18029           "Creates variables to mimic specular reflection by a (flat) surface\n" 18030           "where *surface_rv_rh* is specified.\n" 18032           "This method assumes that the reflection at vertical and horizontal\n" 18033           "polarisation differs. As power reflection coefficients are provided\n" 18034           "there is no information at hand on phase shifts between polarisations,\n" 18035           "and they are simply assumed to be zero. These assumptions result in\n" 18036           "that *surface_emission* is set to zero for positions corresponding to\n" 18037           "U and V, and that all diagonal elementsof  *surface_rmatrix* are equal\n" 18038           "(the mean of rv and rh). Further, all off-diagonal elements of\n" 18039           "*surface_rmatrix* are all zero except for (0,1) and (1,0).\n"),
 18041       OUT(
"surface_los", 
"surface_rmatrix", 
"surface_emission"),
 18059       NAME(
"surfaceFlatScalarReflectivity"),
 18061           "Creates variables to mimic specular reflection by a (flat) surface\n" 18062           "where *surface_scalar_reflectivity* is specified.\n" 18064           "This method assumes that the reflection at vertical and horizontal\n" 18065           "polarisation is identical. This assumption includes that there is no\n" 18066           "phase shift between polarisations. These assumptions result in that\n" 18067           "*surface_emission* is set to zero for positions corresponding to Q,\n" 18068           "U and V, and that *surface_rmatrix* becomes a diagonal matrix (with\n" 18069           "all elements on the diagonal equal to the specified reflectivity).\n"),
 18071       OUT(
"surface_los", 
"surface_rmatrix", 
"surface_emission"),
 18082          "surface_scalar_reflectivity"),
 18089       NAME(
"surfaceLambertianSimple"),
 18091           "Creates variables to mimic a Lambertian surface.\n" 18093           "A Lambertian surface can be characterised solely by its\n" 18094           "reflectivity, here taken from *surface_scalar_reflectivity*.\n" 18096           "The down-welling radiation field is estimated by making calculations\n" 18097           "for *lambertian_nza* directions. The range of zenith angles ([0,90])\n" 18098           "is divided in an equidistant manner for 1D. For 2D and 3D see below.\n" 18099           "The values for *surface_rmatrix* are assuming a constant radiance\n" 18100           "over each zenith angle range. See AUG.\n" 18102           "Default is to select the zenith angles for *sensor_los* to be placed\n" 18103           "centrally in the grid ranges. For example, if *lambertian_nza* is set\n" 18104           "to 9, down-welling radiation will be calculated for zenith angles = \n" 18105           "5, 15, ..., 85. The position of these angles can be shifted by\n" 18106           "*za_pos*. This variable specifies the fractional distance inside the\n" 18107           "ranges. For example, a *za_pos* of 0.7 (np still 9) gives the angles\n" 18108           "7, 17, ..., 87.\n" 18110           "Only upper-left diagonal element of the *surface_rmatrix* is\n" 18111           "non-zero. That is, the upwelling radiation is always unpolarised.\n" 18113           "Local thermodynamic equilibrium is assumed, which corresponds to\n" 18114           "that the reflection and emission coefficients \"add up to 1\".\n" 18116           "For 2D and 3D, the down-welling directions are placed along the\n" 18117           "the viewing direction, e.g. for 3D the azimuth angle is kept constant.\n" 18118           "In 2D and 3D surface topography can exist, and to avoid getting views\n" 18119           "going directly into the surface, angels are not distributed over 90 deg,\n" 18120           "but 90-abs(surface_normal[0]).\n"),
 18122       OUT(
"surface_los", 
"surface_rmatrix", 
"surface_emission"),
 18133          "surface_scalar_reflectivity"),
 18134       GIN(
"lambertian_nza", 
"za_pos"),
 18137       GIN_DESC(
"Number of downwelling streams.",
 18138                "Position of angle in *surface_los* inside ranges of zenith " 18139                "angle grid. See above.")));
 18142       NAME(
"surfaceSemiSpecularBy3beams"),
 18144           "A simplistic treatment of semi-specular surfaces.\n" 18146           "This method has no strong physical basis but could be used for simpler\n" 18147           "testing or as starting point for more advanced methods.\n" 18149           "This method assumes that the surface can be treated to have three facets,\n" 18150           "all lacking surface roughness. One facet is assumed to give standard\n" 18151           "specular reflection, while the two other facets are tilted with +dza\n" 18152           "and -dza, respectively. The tilt is assumed to only affect the zenith\n" 18153           "angle of the reflected direction (azimuth same as for specular direction).\n" 18154           "The area ratio of the non-tilted facet is set by *specular_factor*.\n" 18155           "That is, the specular beam is given weight w, while the other two beams\n" 18156           "each get weight (1-w)/2.\n" 18158           "If a facet tilts away from the viewing direction in such way that\n" 18159           "the surface is observed from below, the tilt of the facet is decreased\n" 18160           "in steps of 1 degree until a successful calculation is obtained. If this\n" 18161           "turns out to require a tilt of zero, this facete is merged with\n" 18162           "the specular direction.\n" 18164           "The pure specular properties of the surface shall be described by\n" 18165           "*surface_rtprop_sub_agenda*. That is, if you have specular surface\n" 18166           "described and you want to make it semi-specular by this method, you\n" 18167           "move the content of the existing *surface_rtprop_agenda* to\n" 18168           "*surface_rtprop_sub_agenda* and instead fill *surface_rtprop_agenda*\n" 18169           "with this method.\n"),
 18171       OUT(
"surface_skin_t",
 18174           "surface_emission"),
 18178       IN(
"atmosphere_dim",
 18182          "surface_rtprop_sub_agenda"),
 18183       GIN(
"specular_factor", 
"dza"),
 18186       GIN_DESC(
"The weight given to the specular direction. Denoted as w above." 18187                " A value between 1/3 and 1.",
 18188                "Zenith angle seperation to each secondary direction. A " 18189                "between 0 and 45 degrees.")));
 18192       NAME(
"surfaceSplitSpecularTo3beams"),
 18194           "A very simple approximation of a semi-specular surface.\n" 18196           "This method has no direct physical basis but could be used for simpler\n" 18197           "testing or as starting point for more advanced methods.\n" 18199           "The method requires that the surface RT properties (e.g. *surface_los*)\n" 18200           "have been set up to mimic a specular surface. This method splits the down-\n" 18201           "welling radiation into three directions. The specular direction is given\n" 18202           "weight w, while the other two beams each get weight (1-w)/2. The basic\n" 18203           "polarised reflectivity from the specular calculations is maintained\n" 18204           "for each beam. The beams are just separated in zenith angle, with a\n" 18205           "separation of *dza*. The lowermost beam is not allowed to be closer to\n" 18206           "the surface than 1 degree. If there is no room for the lowermost beam,\n" 18207           "it is merged with the main beam.\n"),
 18209       OUT(
"surface_los", 
"surface_rmatrix"),
 18218       GIN(
"specular_factor", 
"dza"),
 18221       GIN_DESC(
"The weight given to the specular direction. Denoted as w above." 18222                " A value between 1/3 and 1.",
 18223                "Zenith angle seperation to each secondary direction. A " 18224                "between 0 and 45 degrees.")));
 18227       NAME(
"surface_complex_refr_indexFromGriddedField5"),
 18229           "Extracts complex refractive index from a field of such data.\n" 18231           "The method allows to obtain *surface_complex_refr_index* by\n" 18232           "interpolation of a geographical field of such data. The position\n" 18233           "for which refraction shall be extracted is given by *rtp_pos*.\n" 18234           "The refractive index field is expected to be stored as:\n" 18235           "   GriddedField5:\n" 18236           "      Vector f_grid[N_f]\n" 18237           "      Vector T_grid[N_T]\n" 18238           "      ArrayOfString Complex[2]\n" 18239           "      Vector \"Latitude\"  [N_lat]\n" 18240           "      Vector \"Longitude\" [N_lon]\n" 18241           "      Tensor5 data[N_f][N_T][2][N_lat][N_lon]\n" 18243           "Definition and treatment of the three first dimensions follows\n" 18244           "*complex_refr_index*, e.g. the temperature grid is allowed\n" 18245           "to have length 1. The grids for latitude and longitude must have\n" 18246           "a length of >= 2 (ie. no automatic expansion).\n" 18248           "Hence, this method performs an interpolation only in the lat and\n" 18249           "lon dimensions, to a single point. The remaining GriddedField3 is\n" 18250           "simply returned as *surface_complex_refr_index*.\n"),
 18252       OUT(
"surface_complex_refr_index"),
 18256       IN(
"atmosphere_dim", 
"lat_grid", 
"lat_true", 
"lon_true", 
"rtp_pos"),
 18257       GIN(
"complex_refr_index_field"),
 18260       GIN_DESC(
"A field of complex refractive index.")));
 18263       NAME(
"surface_reflectivityFromGriddedField6"),
 18265           "Extracts surface reflectivities from a field of such data.\n" 18267           "This method allows to specify a field of surface reflectivity for\n" 18268           "automatic interpolation to points of interest. The position and\n" 18269           "direction for which the reflectivity shall be extracted are given\n" 18270           "by *rtp_pos* and *rtp_los*. The reflectivity field is expected to\n" 18272           "   GriddedField6:\n" 18273           "      Vector \"Frequency\"       [N_f]\n" 18274           "      Vector \"Stokes element\"  [N_s1]\n" 18275           "      Vector \"Stokes_element\"  [N_s2]\n" 18276           "      Vector \"Incidence angle\" [N_ia]\n" 18277           "      Vector \"Latitude\"        [N_lat]\n" 18278           "      Vector \"Longitude\"       [N_lon]\n" 18279           "      Tensor6 data[N_f][N_s1][N_s2][N_ia][N_lat][N_lon]\n" 18281           "Grids for incidence angle, latitude and longitude must have a\n" 18282           "length of >= 2 (ie. no automatic expansion). If the frequency grid\n" 18283           "has length 1, this is taken as that the reflectivity is constant,\n" 18284           "following the definition of *surface_scalar_reflectivity*.\n" 18285           "The data can cover higher Stokes dimensionalities than set by\n" 18286           "*stokes_dim*. Data for non-used Stokes elements are just cropped.\n" 18287           "The order between the two Stokes dimensions is the same as in\n" 18288           "*surface_reflectivity* and surface_rmatrix*.\n" 18290           "The interpolation is done in steps:\n" 18291           "   1: Linear interpolation for lat and lon (std. extrapolation).\n" 18292           "   2: Interpolation in incidence angle (std. extrapolation).\n" 18293           "      If the grid has a length of >= 4, cubic interpolation is\n" 18294           "      applied. Otherwise linear interpolation.\n" 18295           "   3. Linear interpolation in frequency (if input data have more\n" 18296           "      than one frequency).\n"),
 18298       OUT(
"surface_reflectivity"),
 18313       GIN_DESC(
"A field of surface reflectivities")));
 18316       NAME(
"surface_rtpropCallAgendaX"),
 18318           "Switch between the elements of *surface_rtprop_agenda_array*.\n" 18320           "This method simply calls the agenda matching *surface_type* and\n" 18321           "returns the results. That is, the agenda in *surface_rtprop_agenda_array*\n" 18322           "with index *surface_type* (0-based) is called.\n"),
 18324       OUT(
"surface_skin_t",
 18327           "surface_emission"),
 18334          "surface_rtprop_agenda_array",
 18336          "surface_type_aux"),
 18343       NAME(
"surface_scalar_reflectivityFromGriddedField4"),
 18345           "Extracts scalar surface reflectivities from a field of such data.\n" 18347           "This method allows to specify a field of surface reflectivity for\n" 18348           "automatic interpolation to points of interest. The position and\n" 18349           "direction for which the reflectivity shall be extracted are given\n" 18350           "by *rtp_pos* and *rtp_los*. The reflectivity field is expected to\n" 18352           "   GriddedField4:\n" 18353           "      Vector \"Frequency\"       [N_f]\n" 18354           "      Vector \"Incidence angle\" [N_ia]\n" 18355           "      Vector \"Latitude\"        [N_lat]\n" 18356           "      Vector \"Longitude\"       [N_lon]\n" 18357           "      Tensor4 data[N_f][N_ia][N_lat][N_lon]\n" 18359           "Grids for incidence angle, latitude and longitude must have a\n" 18360           "length of >= 2 (ie. no automatic expansion). If the frequency grid\n" 18361           "has length 1, this is taken as the reflectivity is constant,\n" 18362           "following the definition of *surface_scalar_reflectivity*.\n" 18364           "The interpolation is done in steps:\n" 18365           "   1: Linear interpolation for lat and lon (std. extrapolation).\n" 18366           "   2: Interpolation in incidence angle (std. extrapolation).\n" 18367           "      If the grid has a length of >= 4, cubic interpolation is\n" 18368           "      applied. Otherwise linear interpolation.\n" 18369           "   3. Linear interpolation if frequency (if input data have more\n" 18370           "      than one frequency).\n"),
 18372       OUT(
"surface_scalar_reflectivity"),
 18387       GIN_DESC(
"A field of scalar surface reflectivities")));
 18416       NAME(
"surface_scalar_reflectivityFromSurface_rmatrix"),
 18418           "Sets *surface_scalar_reflectivity* based on *surface_rmatrix*.\n" 18420           "For each frequency f, *surface_scalar_reflectivity* is set to\n" 18421           "the sum of surface_rmatrix(joker,f,0,0).\n"),
 18423       OUT(
"surface_scalar_reflectivity"),
 18427       IN(
"surface_rmatrix"),
 18434       NAME(
"surface_typeInterpTypeMask"),
 18436           "Closest neighbour interpolation of surface type mask.\n" 18438           "The method determines the surface type at the position of concern\n" 18439           "(*rtp_pos*) from the provided type mask (*surface_type_mask*).\n" 18440           "The closest point in the mask is selected. The surface type\n" 18441           "is set to the integer part of the value at the found point, while\n" 18442           "*surface_type_aux* is set to the reminder. For example, if the\n" 18443           "mask value at closest point is 2.23, *surface_type* is set to 2\n" 18444           "*surface_type_aux* becomes 0.23.\n" 18446           "The altitude in *rtp_pos* is ignored.\n"),
 18448       OUT(
"surface_type", 
"surface_type_aux"),
 18452       IN(
"atmosphere_dim",
 18457          "surface_type_mask"),
 18464       NAME(
"SurfaceDummy"),
 18466           "Dummy method for *iy_surface_agenda*.\n" 18468           "If you don't make use of *surface_props_data* and associated\n" 18469           "variables, include this method *iy_surface_agenda*. The method\n" 18470           "just checks that the variables of concern are set to be empty,\n" 18471           "and you don't need to include calls of *Ignore* and *Touch* in\n" 18474       OUT(
"dsurface_rmatrix_dx", 
"dsurface_emission_dx"),
 18478       IN(
"dsurface_rmatrix_dx",
 18479          "dsurface_emission_dx",
 18483          "surface_props_data",
 18484          "surface_props_names",
 18493       NAME(
"SurfaceFastem"),
 18495           "FASTEM sea surface microwave emissivity parametrization.\n" 18497           "The variable *surface_props_data* must contain these data:\n" 18498           "  \"Water skin temperature\"\n" 18499           "  \"Wind speed\"\n" 18500           "  \"Wind direction\"\n" 18503           "For some details and comments see *FastemStandAlone* and *surfaceFastem*.\n"),
 18507           "dsurface_rmatrix_dx",
 18508           "surface_emission",
 18509           "dsurface_emission_dx"),
 18513       IN(
"dsurface_rmatrix_dx",
 18514          "dsurface_emission_dx",
 18522          "surface_props_data",
 18523          "surface_props_names",
 18526       GIN(
"transmittance", 
"fastem_version"),
 18529       GIN_DESC(
"Transmittance along path of downwelling radiation. A vector " 18530                "with the same length as *f_grid*.",
 18531                "The version of FASTEM to use.")));
 18534       NAME(
"SurfaceTessem"),
 18536           "TESSEM sea surface microwave emissivity parametrization.\n" 18538           "The variable *surface_props_data* must contain these data:\n" 18539           "  \"Water skin temperature\"\n" 18540           "  \"Wind speed\"\n" 18543           "This method computes surface emissivity and reflectivity matrices for\n" 18544           "ocean surfaces using the TESSEM emissivity model: Prigent, C., et al.\n" 18545           "Sea-surface emissivity parametrization from microwaves to millimetre\n" 18546           "waves, QJRMS, 2017, 143.702: 596-605.\n" 18548           "The validity range of the parametrization of is 10 to 700 GHz, but for\n" 18549           "some extra flexibility frequencies between 5 and 900 GHz are accepted.\n" 18550           "The accepted temperaute range for water skin temperature is\n" 18551           "[260.0 K, 373.0 K]. Salinity shall be in the range [0,1]. That is, a\n" 18552           "salinity of 3% is given as 0.03.\n" 18554           "The model itself is represented by the neural networks in\n" 18555           "*tessem_neth* and *tessem_netv*.\n"),
 18556       AUTHORS(
"Simon Pfreundschuh", 
"Patrick Eriksson"),
 18559           "dsurface_rmatrix_dx",
 18560           "surface_emission",
 18561           "dsurface_emission_dx"),
 18565       IN(
"dsurface_rmatrix_dx",
 18566          "dsurface_emission_dx",
 18576          "surface_props_data",
 18577          "surface_props_names",
 18586       NAME(
"TangentPointExtract"),
 18588           "Finds the tangent point of a propagation path.\n" 18590           "The tangent point is here defined as the point with the lowest\n" 18591           "altitude (which differes from the definition used in the code\n" 18592           "where it is the point with the lowest radius, or equally the point\n" 18593           "with a zenith angle of 90 deg.)\n" 18595           "The tangent point is returned as a vector, with columns matching\n" 18596           "e.g. *rte_pos*. If the propagation path has no tangent point, the\n" 18597           "vector is set to NaN.\n"),
 18602       GOUT_DESC(
"The position vector of the tangent point."),
 18610       NAME(
"TangentPointPrint"),
 18612           "Prints information about the tangent point of a propagation path.\n" 18614           "The tangent point is here defined as the point with the lowest\n" 18615           "altitude (which differes from the definition used in the code\n" 18616           "where it is the point with the lowest radius, or equally the point\n" 18617           "with a zenith angle of 90 deg.)\n"),
 18627       GIN_DESC(
"Output level to use.")));
 18630       NAME(
"telsemStandalone"),
 18632           "Stand-alone evaluation of the Telsem model.\n" 18634           "This evaluates the Telsem land surface emissivity\n" 18635           "model using the data from the provided atlas.\n" 18637           "Since TELSEM atlases do not contain data for all locations\n" 18638           "this function allows for nearest neighbor interpolation, which\n" 18639           "can be enabled by setting the *d_max* GIN to a positive value.\n" 18641           "This WSM throws a runtime error if the queried location is not\n" 18642           "contained in the atlas or the distance of the neighboring cell\n" 18643           "exceeds the given *d_max* value.\n"),
 18644       AUTHORS(
"Simon Pfreundschuh"),
 18646       GOUT(
"emissivities"),
 18648       GOUT_DESC(
"The computed h and v emissivites"),
 18650       GIN(
"lat", 
"lon", 
"theta", 
"f", 
"ta", 
"d_max"),
 18652           "Numeric", 
"Numeric", 
"Numeric", 
"Vector", 
"TelsemAtlas", 
"Numeric"),
 18654       GIN_DESC(
"The latitude for which to compute the emissivities.",
 18655                "The latitude for which to compute the emissivities.",
 18656                "The incidence angle.",
 18657                "The frequencies for which to compute the emissivities.",
 18658                "The Telsem atlas to use.",
 18659                "The maximum allowed distance for nearest neighbor" 18660                " interpolation in meters.")));
 18663       NAME(
"telsemAtlasLookup"),
 18665           "Lookup SSMI emissivities from Telsem Atlas.\n" 18667           "This returns the emissivities (indices [0,..,6])\n" 18668           " for the SSMI channels that are contained in\n" 18669           "the Telsem atlas.\n" 18671           "If given latitude and longitude are not in the atlas an empty\n" 18672           "vector is returned.\n"),
 18673       AUTHORS(
"Simon Pfreundschuh"),
 18675       GOUT(
"emissivities"),
 18677       GOUT_DESC(
"The SSMI emissivities from the atlas"),
 18679       GIN(
"lat", 
"lon", 
"atlas"),
 18680       GIN_TYPE(
"Numeric", 
"Numeric", 
"TelsemAtlas"),
 18682       GIN_DESC(
"The latitude for which to compute the emissivities.",
 18683                "The latitude for which to compute the emissivities.",
 18684                "The Telsem atlas to use.")));
 18687       NAME(
"telsemSurfaceTypeLandSea"),
 18689           "TELSEM based land sea mask.\n" 18691           "This method determines whether the position in *rtp_pos* is\n" 18692           "of type ocean or land depending on whether a corresponding\n" 18693           "cell is contained in the provided TELSEM atlas.\n" 18694           "In combination with the WSM *surface_rtpropCallAgendaX* this\n" 18695           "can be used to used different methods to compute surface radiative\n" 18697       AUTHORS(
"Simon Pfreundschuh"),
 18698       OUT(
"surface_type"),
 18702       IN(
"atmosphere_dim", 
"lat_grid", 
"lat_true", 
"lon_true", 
"rtp_pos"),
 18706       GIN_DESC(
"The telsem atlas from which to lookup the surface type.")));
 18709       NAME(
"telsem_atlasReadAscii"),
 18711           "Reads single TELSEM atlas.\n" 18713           "'directory' needs to contain the original 12 Telsem atlas files\n" 18714           "and the correlations file. This WSM reads the atlas for the specified\n" 18715           "month and stores the result in the provided output atlas.\n"),
 18716       AUTHORS(
"Simon Pfreundschuh"),
 18720       GOUT_DESC(
"The atlas into which to store the loaded atlas."),
 18722       GIN(
"directory", 
"month", 
"filename_pattern"),
 18723       GIN_TYPE(
"String", 
"Index", 
"String"),
 18725       GIN_DESC(
"Directory with TELSEM 2 SSMI atlas files.",
 18726                "The month for which the atlas should be read.",
 18727                "Filename pattern (@MM@ gets replaced by month number)")));
 18730       NAME(
"telsem_atlasesReadAscii"),
 18732           "Reads TELSEM atlas files.\n" 18734           "'directory' needs to contain the original 12 Telsem atlas files\n" 18735           "and the correlations file.\n" 18736           "The whole data is combined into the WSV *telsem_atlases*\n"),
 18738       OUT(
"telsem_atlases"),
 18743       GIN(
"directory", 
"filename_pattern"),
 18746       GIN_DESC(
"Directory with TELSEM 2 SSMI atlas files.",
 18747                "Filename pattern (@MM@ gets replaced by month number)")));
 18750       NAME(
"Tensor3AddScalar"),
 18751       DESCRIPTION(
"Adds a scalar value to all elements of a tensor3.\n" 18753                   "The result can either be stored in the same or another\n" 18761       GIN(
"in", 
"value"),
 18764       GIN_DESC(
"Input tensor.", 
"The value to be added to the tensor.")));
 18767       NAME(
"Tensor3ExtractFromTensor4"),
 18769           "Extracts a Tensor3 from a Tensor4.\n" 18771           "Copies book, page, row or column with given Index from input Tensor4\n" 18772           "variable to output Tensor3.\n" 18773           "Higher order equivalent of *VectorExtractFromMatrix*.\n"),
 18780       GIN(
"in", 
"i", 
"direction"),
 18781       GIN_TYPE(
"Tensor4", 
"Index", 
"String"),
 18784                "Index of book, page, row or column to extract.",
 18785                "Direction. \"book\" or \"page\" or \"row\" or \"column\".")));
 18788       NAME(
"Tensor3Scale"),
 18789       DESCRIPTION(
"Scales all elements of a tensor with the specified value.\n" 18791                   "The result can either be stored in the same or another\n" 18799       GIN(
"in", 
"value"),
 18803                "The value to be multiplied with the tensor.")));
 18806       NAME(
"Tensor3SetConstant"),
 18808           "Creates a tensor and sets all elements to the specified value.\n" 18810           "The size is determined by *ncols*, *nrows* etc.\n"),
 18816       IN(
"npages", 
"nrows", 
"ncols"),
 18823       NAME(
"Tensor4AddScalar"),
 18824       DESCRIPTION(
"Adds a scalar value to all elements of a tensor4.\n" 18826                   "The result can either be stored in the same or another\n" 18834       GIN(
"in", 
"value"),
 18837       GIN_DESC(
"Input tensor.", 
"The value to be added to the tensor.")));
 18874       NAME(
"Tensor4Scale"),
 18875       DESCRIPTION(
"Scales all elements of a tensor with the specified value.\n" 18877                   "The result can either be stored in the same or another\n" 18885       GIN(
"in", 
"value"),
 18889                "The value to be multiplied with the tensor.")));
 18892       NAME(
"Tensor4SetConstant"),
 18894           "Creates a tensor and sets all elements to the specified value.\n" 18896           "The size is determined by *ncols*, *nrows* etc.\n"),
 18902       IN(
"nbooks", 
"npages", 
"nrows", 
"ncols"),
 18909       NAME(
"Tensor5Scale"),
 18910       DESCRIPTION(
"Scales all elements of a tensor with the specified value.\n" 18912                   "The result can either be stored in the same or another\n" 18920       GIN(
"in", 
"value"),
 18924                "The value to be multiplied with the tensor.")));
 18927       NAME(
"Tensor5SetConstant"),
 18929           "Creates a tensor and sets all elements to the specified value.\n" 18931           "The size is determined by *ncols*, *nrows* etc.\n"),
 18937       IN(
"nshelves", 
"nbooks", 
"npages", 
"nrows", 
"ncols"),
 18944       NAME(
"Tensor6Scale"),
 18945       DESCRIPTION(
"Scales all elements of a tensor with the specified value.\n" 18947                   "The result can either be stored in the same or another\n" 18955       GIN(
"in", 
"value"),
 18959                "The value to be multiplied with the tensor.")));
 18962       NAME(
"Tensor6SetConstant"),
 18964           "Creates a tensor and sets all elements to the specified value.\n" 18966           "The size is determined by *ncols*, *nrows* etc.\n"),
 18972       IN(
"nvitrines", 
"nshelves", 
"nbooks", 
"npages", 
"nrows", 
"ncols"),
 18979       NAME(
"Tensor7Scale"),
 18980       DESCRIPTION(
"Scales all elements of a tensor with the specified value.\n" 18982                   "The result can either be stored in the same or another\n" 18990       GIN(
"in", 
"value"),
 18994                "The value to be multiplied with the tensor.")));
 18997       NAME(
"Tensor7SetConstant"),
 18999           "Creates a tensor and sets all elements to the specified value.\n" 19001           "The size is determined by *ncols*, *nrows* etc.\n"),
 19020       NAME(
"TestArrayOfAgenda"),
 19022           "A method that is used for the TestArrayOfAgenda test case.\n"),
 19028       IN(
"test_agenda_array"),
 19032       GIN_DESC(
"Index of agenda in array to execute.")));
 19035       NAME(
"TessemNNReadAscii"),
 19037           "Reads the initialization data for the TESSEM NeuralNet from an ASCII file.\n"),
 19042       GOUT_DESC(
"Tessem NeuralNet configuration."),
 19048           "NeuralNet parameters file as provided in the TESSEM 2 distribution.")));
 19051       NAME(
"TestTessem"),
 19053           "Example method for TESSEM2.\n" 19055           "When using the default neural network parameter files\n" 19056           "from the Tessem 2 distribution, the input Vector should contain\n" 19058           "   - Frequency (10-700) in GHz.\n" 19059           "   - Theta (0-90) Incidence angle in degrees.\n" 19060           "   - Windspeed (0-25) at 10m (m/s)\n" 19061           "     Higher wind speed can be used, but without garantee.\n" 19062           "   - Surface skin temperature (270-310) in K.\n" 19063           "   - Salinity (0-0.04) in kg/kg\n"),
 19068       GOUT_DESC(
"Tessem output emissivity."),
 19070       GIN(
"net", 
"invalues"),
 19073       GIN_DESC(
"Tessem NeuralNet parameters.", 
"Input data.")));
 19078           "A dummy method that can be used for test purposes.\n" 19080           "This method can be used by ARTS developers to quickly test stuff.\n" 19081           "The implementation is in file m_general.cc. This just saves you the\n" 19082           "trouble of adding a dummy method everytime you want to try\n" 19083           "something out quickly.\n"),
 19096       NAME(
"time_gridOffset"),
 19097       DESCRIPTION(
"Offsets a time grid by some seconds.\n"),
 19107       GIN_DESC(
"Time in seconds to add")));
 19113                            "Use *timerStop* to stop the timer.\n" 19117                            "   ReadXML(f_grid,\"frequencies.xml\")\n" 19119                            "   Print(timer)\n"),
 19135                            "See *timerStart* for example usage.\n"),
 19148       NAME(
"time_stampsSort"),
 19149       DESCRIPTION(
"Sort *in* by *time_stamps* into *out*.\n"),
 19153       GOUT_TYPE(
"ArrayOfTime,ArrayOfVector"),
 19157       GIN_TYPE(
"ArrayOfTime,ArrayOfVector"),
 19159       GIN_DESC(
"Array to sort of same size as *time_stamps*")));
 19162       NAME(
"TMatrixTest"),
 19164           "T-Matrix validation test.\n" 19166           "Executes the standard test included with the T-Matrix Fortran code.\n" 19167           "Should give the same as running the tmatrix_lp executable in\n" 19168           "3rdparty/tmatrix/.\n"),
 19183           "As *Ignore* but for agenda output.\n" 19185           "This method is handy for use in agendas in order to suppress\n" 19186           "warnings about not-produced output workspace variables.\n" 19188           "What it does, in case the variable is initialized already, is:\n" 19190           "In case the variable is not yet initialized, it is set to NaN.\n"),
 19195       GOUT_DESC(
"Variable to do nothing with."),
 19206       NAME(
"transmittanceFromIy_aux"),
 19208           "Creates a vector of transmittance values.\n" 19210           "The transmittances are set based on optical depths in *iy_aux*. That is,\n" 19211           "one of the quantities in *iy_aux* must be \"Optical depth\".\n" 19213           "The created vector has a length matching *f_grid* and can e.g. be used\n" 19214           "as input to some of the FASTEM methods.\n"),
 19217       GOUT(
"transmittance"),
 19219       GOUT_DESC(
"Created vector of transmittance values."),
 19220       IN(
"iy_aux_vars", 
"iy_aux"),
 19227       NAME(
"VectorAddScalar"),
 19229           "Adds a scalar to all elements of a vector.\n" 19231           "The result can either be stored in the same or another vector.\n"),
 19238       GIN(
"in", 
"value"),
 19241       GIN_DESC(
"Input vector.", 
"The value to be added to the vector.")));
 19244       NAME(
"VectorAddVector"),
 19246           "Element-wise addition of two vectors.\n" 19248           "The method calculates c = a + b.\n" 19250           "The variable *b* is allowed to have length 1, for any length of\n" 19251           "*a*. This single value in *b* is then added to every element of *a*.\n" 19253           "The vectors *a* and *c* can be the same WSV, while *b* can not be\n" 19254           "the same WSV as any of the the other vector.\n"),
 19264       GIN_DESC(
"Input vector.", 
"Vector to be added.")));
 19267       NAME(
"VectorCrop"),
 19269           "Keeps only values of a vector inside the specified range.\n" 19271           "All values outside the range [min_value,max-value] are removed.\n" 19272           "Note the default values, that basically should act as -+Inf.\n" 19274           "The result can either be stored in the same or another vector.\n"),
 19281       GIN(
"in", 
"min_value", 
"max_value"),
 19282       GIN_TYPE(
"Vector", 
"Numeric", 
"Numeric"),
 19285                "Minimum value to keep",
 19286                "Maximum value to keep")));
 19289       NAME(
"VectorExtractFromMatrix"),
 19291           "Extracts a Vector from a Matrix.\n" 19293           "Copies row or column with given Index from input Matrix variable\n" 19294           "to create output Vector.\n"),
 19295       AUTHORS(
"Patrick Eriksson, Oliver Lemke, Stefan Buehler"),
 19301       GIN(
"in", 
"i", 
"direction"),
 19302       GIN_TYPE(
"Matrix", 
"Index", 
"String"),
 19305                "Index of row or column.",
 19306                "Direction. \"row\" or \"column\".")));
 19309       NAME(
"VectorFlip"),
 19311           "Flips a vector.\n" 19313           "The output is the input vector in reversed order. The result can\n" 19314           "either be stored in the same or another vector.\n"),
 19327       NAME(
"VectorInsertGridPoints"),
 19329           "Insert some additional points into a grid.\n" 19331           "This method can for example be used to add line center frequencies to\n" 19332           "a regular frequency grid. If the original grid is [1,2,3], and the\n" 19333           "additional points are [2.2,2.4], the result will be [1,2,2.2,2.4,3].\n" 19335           "It is assumed that the original grid is sorted, otherwise a runtime\n" 19336           "error is thrown. The vector with the points to insert does not have to\n" 19337           "be sorted. If some of the input points are already in the grid, these\n" 19338           "points are not inserted again. New points outside the original grid are\n" 19339           "appended at the appropriate end. Input vector and output vector can be\n" 19342           "Generic output:\n" 19343           "  Vector : The new grid vector.\n" 19346           "  Vector : The original grid vector.\n" 19347           "  Vector : The points to insert.\n"),
 19354       GIN(
"in", 
"points"),
 19357       GIN_DESC(
"The original grid vector", 
"The points to insert")));
 19360       NAME(
"VectorLinSpace"),
 19362           "Initializes a vector with linear spacing.\n" 19364           "The first element equals always the start value, and the spacing\n" 19365           "equals always the step value, but the last value can deviate from\n" 19366           "the stop value. *step* can be both positive and negative.\n" 19368           "The created vector is [start, start+step, start+2*step, ...]\n "),
 19375       GIN(
"start", 
"stop", 
"step"),
 19376       GIN_TYPE(
"Numeric", 
"Numeric", 
"Numeric"),
 19379                "Maximum/minimum value of the end value",
 19380                "Spacing of the vector.")));
 19383       NAME(
"VectorLogSpace"),
 19385           "Initializes a vector with logarithmic spacing.\n" 19387           "The first element equals always the start value, and the spacing\n" 19388           "equals always the step value, but note that the last value can \n" 19389           "deviate from the stop value. The keyword step can be both positive\n" 19392           "Note, that although start has to be given in direct coordinates,\n" 19393           "step has to be given in log coordinates.\n" 19395           "Explicitly, the vector is:\n" 19396           " exp([ln(start), ln(start)+step, ln(start)+2*step, ...])\n"),
 19403       GIN(
"start", 
"stop", 
"step"),
 19404       GIN_TYPE(
"Numeric", 
"Numeric", 
"Numeric"),
 19406       GIN_DESC(
"The start value. (Direct coordinates!)",
 19407                "The maximum value of the end value. (Direct coordinates!)",
 19408                "The spacing of the vector. (Log coordinates!)")));
 19411       NAME(
"VectorMatrixMultiply"),
 19413           "Multiply a Vector with a Matrix and store the result in another\n" 19416           "This just computes the normal Matrix-Vector product, y=M*x. It is ok\n" 19417           "if input and output Vector are the same. This function is handy for\n" 19418           "multiplying the H Matrix to spectra.\n"),
 19423       GOUT_DESC(
"The result of the multiplication (dimension m)."),
 19428       GIN_DESC(
"The Matrix to multiply (dimension mxn).",
 19429                "The original Vector (dimension n).")));
 19432       NAME(
"VectorNLinSpace"),
 19434           "Creates a vector with length *nelem*, equally spaced between the\n" 19435           "given end values.\n" 19437           "The length (*nelem*) must be larger than 1.\n"),
 19444       GIN(
"start", 
"stop"),
 19447       GIN_DESC(
"Start value.", 
"End value.")));
 19450       NAME(
"VectorNLogSpace"),
 19452           "Creates a vector with length *nelem*, equally logarithmically\n" 19453           "spaced between the given end values.\n" 19455           "The length (*nelem*) must be larger than 1.\n"),
 19462       GIN(
"start", 
"stop"),
 19465       GIN_DESC(
"Start value.", 
"End value.")));
 19468       NAME(
"VectorReshapeMatrix"),
 19470           "Converts a Matrix to a Vector.\n" 19472           "The matrix is reshaped into a vector. That is, all elements of the matrix\n" 19473           "are kept. The elements can be extracted both in column (default) and row\n" 19474           "order. The ouput vector has the same length for both options.\n"),
 19481       GIN(
"in", 
"direction"),
 19484       GIN_DESC(
"Input matrix.", 
"Direction. \"row\" or \"column\".")));
 19487       NAME(
"VectorScale"),
 19489           "Scales all elements of a vector with the same value.\n" 19491           "The result can either be stored in the same or another vector.\n"),
 19498       GIN(
"in", 
"value"),
 19501       GIN_DESC(
"Input vector.", 
"Scaling value.")));
 19504       NAME(
"VectorSetConstant"),
 19506           "Creates a vector and sets all elements to the specified value.\n" 19508           "The vector length is determined by *nelem*.\n"),
 19523           "Create a vector from the given list of numbers.\n" 19525           "   VectorSet(p_grid, [1000, 100, 10] )\n" 19526           "   Will create a p_grid vector with these three elements.\n"),
 19540       NAME(
"VectorSubtractVector"),
 19542           "Element-wise subtraction of two vectors.\n" 19544           "The method calculates c = a - b.\n" 19546           "The variable *b* is allowed to have length 1, for any length of\n" 19547           "*a*. This single value in *b* is then added to every element of *a*.\n" 19549           "The vectors *a* and *c* can be the same WSV, while *b* can not be\n" 19550           "the same WSV as any of the the other vector.\n"),
 19560       GIN_DESC(
"Input vector.", 
"Vector to be subtracted.")));
 19563       NAME(
"VectorVectorMultiply"),
 19565           "Multiply a Vector with another Vector and store result in a third one.\n" 19567           "This is an element-wise multiplication. It is ok if output Vector is\n" 19568           "the same as any of the input Vectors.\n"),
 19573       GOUT_DESC(
"The result of the multiplication (dimension m)."),
 19578       GIN_DESC(
"Original Vector #1 (dimension m).",
 19579                "Original Vector #2 (dimension m).")));
 19582       NAME(
"VectorZtanToZaRefr1D"),
 19584           "Converts a set of true tangent altitudes to zenith angles.\n" 19586           "The tangent altitudes are given to the function as a vector, which\n" 19587           "are converted to a generic vector of zenith angles. The position of\n" 19588           "the sensor is given by the WSV *sensor_pos*. The function works\n" 19589           "only for 1D. The zenith angles are always set to be positive.\n"),
 19590       AUTHORS(
"Patrick Eriksson", 
"Mattias Ekstrom"),
 19594       GOUT_DESC(
"Vector with zenith angles."),
 19595       IN(
"refr_index_air_agenda",
 19607       GIN_DESC(
"Vector with tangent altitudes.")));
 19610       NAME(
"VectorZtanToZa1D"),
 19612           "Converts a set of geometrical tangent altitudes to zenith angles.\n" 19614           "The tangent altitudes are given to the function as a vector, which\n" 19615           "are converted to a generic vector of zenith angles. The position of\n" 19616           "the sensor is given by the WSV *sensor_pos*. The function works\n" 19617           "only for 1D. The zenith angles are always set to be positive.\n"),
 19618       AUTHORS(
"Patrick Eriksson", 
"Mattias Ekstrom"),
 19622       GOUT_DESC(
"Vector with zenith angles."),
 19623       IN(
"sensor_pos", 
"refellipsoid", 
"atmosphere_dim"),
 19627       GIN_DESC(
"Vector with tangent altitudes.")));
 19630       NAME(
"verbosityInit"),
 19632           "Initializes the verbosity levels.\n" 19634           "Sets verbosity to defaults or the levels specified by -r on the command line.\n"),
 19647       NAME(
"verbositySet"),
 19649           "Sets the verbosity levels.\n" 19651           "Sets the reporting level for agenda calls, screen and file.\n" 19652           "All reporting levels can reach from 0 (only error messages)\n" 19653           "to 3 (everything). The agenda setting applies in addition\n" 19654           "to both screen and file output.\n"),
 19661       GIN(
"agenda", 
"screen", 
"file"),
 19662       GIN_TYPE(
"Index", 
"Index", 
"Index"),
 19664       GIN_DESC(
"Agenda verbosity level",
 19665                "Screen verbosity level",
 19666                "Report file verbosity level")));
 19670                DESCRIPTION(
"Sets the verbosity level for agenda output.\n" 19672                            "See *verbositySet*\n"),
 19682                GIN_DESC(
"Agenda verbosity level")));
 19686                DESCRIPTION(
"Sets the verbosity level for report file output.\n" 19688                            "See *verbositySet*\n"),
 19698                GIN_DESC(
"Report file verbosity level")));
 19702                DESCRIPTION(
"Sets the verbosity level for screen output.\n" 19704                            "See *verbositySet*\n"),
 19714                GIN_DESC(
"Screen verbosity level")));
 19717       NAME(
"vmr_fieldClip"),
 19719           "Clipping of *vmr_field*.\n" 19721           "The method allows you to apply hard limits the values of *vmr_field*.\n" 19722           "All values, of the species selected, below *limit_low*, are simply\n" 19723           "set to *limit_low*. And the same is performed with respect to\n" 19724           "*limit_high*. That is, the data in x for the retrieval quantity are\n" 19725           "forced to be inside the range [limit_low,limit_high].\n" 19727           "Setting species=\"ALL\", is a shortcut for applying the limits on all\n" 19734       IN(
"vmr_field", 
"abs_species"),
 19735       GIN(
"species", 
"limit_low", 
"limit_high"),
 19736       GIN_TYPE(
"String", 
"Numeric", 
"Numeric"),
 19738       GIN_DESC(
"Name of species to consider, or \"ALL\".",
 19739                "Lower limit for clipping.",
 19740                "Upper limit for clipping.")));
 19743       NAME(
"vmr_fieldPerturb"),
 19744       DESCRIPTION(
"Adds a perturbation to *vmr_field*.\n" 19746                   "Works as *AtmFieldPerturb* but acts on *vmr_field*.\n"),
 19766           "String", 
"Vector", 
"Vector", 
"Vector", 
"Index", 
"Numeric", 
"String"),
 19768       GIN_DESC(
"Name of species to perturb.",
 19769                "Pressure retrieval grid.",
 19770                "Latitude retrieval grid.",
 19771                "Longitude retrieval grid.",
 19772                "Index of position where the perturbation shall be performed.",
 19773                "Size of perturbation.",
 19774                "Type of perturbation, " 19781       NAME(
"vmr_fieldPerturbAtmGrids"),
 19783           "Adds a perturbation to *vmr_field*.\n" 19785           "Works as *AtmFieldPerturbAtmGrids* but acts on *vmr_field*.\n"),
 19797       GIN(
"species", 
"pert_index", 
"pert_size", 
"pert_mode"),
 19798       GIN_TYPE(
"String", 
"Index", 
"Numeric", 
"String"),
 19800       GIN_DESC(
"Name of species to perturb.",
 19801                "Index of position where the perturbation shall be performed.",
 19802                "Size of perturbation.",
 19803                "Type of perturbation, " 19810       NAME(
"vmr_fieldSetAllConstant"),
 19812           "Sets the VMR of all species to a select constant value.\n" 19814           "The *vmr_field* WSM must have a correct size before calling this method.\n" 19815           "The length of vmr_values and of abs_species must match.\n"),
 19821       IN(
"vmr_field", 
"abs_species"),
 19825       GIN_DESC(
"VMR value to apply for each abs_species.")));
 19828       NAME(
"water_p_eq_fieldMK05"),
 19830           "Calculates *water_p_eq_field* according to Murphy and Koop, 2005.\n" 19832           "The saturation pressure is set to the one with respect to water at\n" 19833           "temperatures >= 0C, and to the one with respect to ice for <0C.\n" 19835           "The saturation pressure with respect to liquid and ice water is\n" 19836           "calculated according to Eq. 10 and 7, respectively, of:\n" 19837           "Murphy, D. M., & Koop, T. (2005). Review of the vapour pressures of\n" 19838           "ice and supercooled water for atmospheric applications. Quarterly\n" 19839           "Journal of the Royal Meteorological Society, 131(608), 1539-1565.\n"),
 19841       OUT(
"water_p_eq_field"),
 19852       NAME(
"vmr_fieldSetConstant"),
 19854           "Sets the VMR of a species to a constant value.\n" 19856           "The *vmr_field* WSM must have a correct size before calling this method.\n"),
 19862       IN(
"vmr_field", 
"abs_species"),
 19863       GIN(
"species", 
"vmr_value"),
 19867                "VMR value to apply for the selected species.")));
 19870       NAME(
"Wigner6Init"),
 19871       DESCRIPTION(
"Initialize the wigner 3 and 6 tables\n" 19873                   "The default values take about 1 Gb memory.\n"),
 19875       OUT(
"wigner_initialized"),
 19880       GIN(
"fast_wigner_stored_symbols", 
"largest_wigner_symbol_parameter"),
 19884           "Number of stored symbols possible before replacements",
 19885           "Largest symbol used for initializing factorials (e.g., largest J or L)")));
 19888       NAME(
"Wigner3Init"),
 19891                   "The default values take about 400 Mb memory.\n"),
 19893       OUT(
"wigner_initialized"),
 19898       GIN(
"fast_wigner_stored_symbols", 
"largest_wigner_symbol_parameter"),
 19902           "Number of stored symbols possible before replacements",
 19903           "Largest symbol used for initializing factorials (e.g., largest J or L)")));
 19907                DESCRIPTION(
"Unloads the wigner 3 and 6 tables\n"),
 19909                OUT(
"wigner_initialized"),
 19913                IN(
"wigner_initialized"),
 19922                                  OUT(
"wigner_initialized"),
 19926                                  IN(
"wigner_initialized"),
 19933       NAME(
"WignerFastInfoPrint"),
 19935           "Prints the fast wigner table information if compiled with this option\n"),
 19941       IN(
"wigner_initialized"),
 19948       NAME(
"WindFieldsCalc"),
 19950           "Interpolation of raw wind fields to calculation grids.\n" 19951           "Heritage from *AtmFieldsCalc*\n" 19953           "Internally, *WindFieldsCalc* applies *GriddedFieldPRegrid* and\n" 19954           "*GriddedFieldLatLonRegrid*. Generally, 'half-grid-step' extrapolation\n" 19955           "is allowed and applied.\n"),
 19957       OUT(
"wind_u_field", 
"wind_v_field", 
"wind_w_field"),
 19964          "wind_u_field_raw",
 19965          "wind_v_field_raw",
 19966          "wind_w_field_raw",
 19968       GIN(
"interp_order"),
 19971       GIN_DESC(
"Interpolation order (1=linear interpolation).")));
 19974       NAME(
"WindFieldsCalcExpand1D"),
 19976           "Interpolation of 1D raw atmospheric fields to create 2D or 3D\n" 19977           "homogeneous wind fields.  Derived from *AtmFieldsCalcExpand1D*\n" 19979           "The method works as *WindFieldsCalc*, but accepts only raw 1D\n" 19980           "wind fields. The raw data is interpolated to *p_grid* and\n" 19981           "the obtained values are applied for all latitudes, and also\n" 19982           "longitudes for 3D, to create a homogeneous atmosphere.\n"),
 19984       OUT(
"wind_u_field", 
"wind_v_field", 
"wind_w_field"),
 19991          "wind_u_field_raw",
 19992          "wind_v_field_raw",
 19993          "wind_w_field_raw",
 19995       GIN(
"interp_order"),
 19998       GIN_DESC(
"Interpolation order (1=linear interpolation).")));
 20001       NAME(
"WindRawRead"),
 20003           "Reads wind field data from a scenario.\n" 20005           "A full set of field components is read (NOTE: fails if scenario\n" 20006           "only contains selected field components). The files can be\n" 20007           "anywhere, but must all be in the same directory specified by\n" 20008           "'basename'. Naming convention for the field component files is\n" 20009           "basename.wind_u.xml for the u-component, v- and w-components\n" 20012       OUT(
"wind_u_field_raw", 
"wind_v_field_raw", 
"wind_w_field_raw"),
 20020       GIN_DESC(
"Name of scenario, probably including the full path. For " 20021                "example: \"/data/wind_field\"")));
 20024       NAME(
"wind_u_fieldIncludePlanetRotation"),
 20026           "Maps the planet's rotation to an imaginary wind.\n" 20028           "This method is of relevance if the observation platform is not\n" 20029           "following the planet's rotation, and Doppler effects must be\n" 20030           "considered. Examples include full disk observations from another\n" 20031           "planet or a satellite not in orbit of the observed planet.\n" 20033           "The rotation of the planet is not causing any Doppler shift for\n" 20034           "1D and 2D simulations, and the method can only be used for 3D.\n"),
 20036       OUT(
"wind_u_field"),
 20047          "planet_rotation_period"),
 20054       NAME(
"WMRFSelectChannels"),
 20056           "Select some channels for WMRF calculation.\n" 20058           "The HIRS fast setup consists of a precalculated frequency grid\n" 20059           "covering all HIRS channels, and associated weights for each channel,\n" 20060           "stored in a weight matrix. (A *sensor_response* matrix.)\n" 20062           "If not all channels are requested for\n" 20063           "simulation, then this method can be used to remove the unwanted\n" 20064           "channels. It changes a number of variables in consistent fashion:\n" 20066           "- Unwanted channels are removed from f_backend. \n" 20067           "- Unwanted channels are removed from wmrf_weights.\n" 20068           "- Unnecessary frequencies are removed from f_grid.\n" 20069           "- Unnecessary frequencies are removed from wmrf_weights.\n"),
 20071       OUT(
"f_grid", 
"wmrf_weights", 
"f_backend"),
 20075       IN(
"f_grid", 
"f_backend", 
"wmrf_weights", 
"wmrf_channels"),
 20082       NAME(
"WriteMolTau"),
 20084           "Writes a 'molecular_tau_file' as required for libRadtran.\n" 20086           "The libRadtran (www.libradtran.org) radiative transfer package is a \n" 20087           "comprehensive package for various applications, it can be used to \n" 20088           "compute radiances, irradiances, actinic fluxes, ... for the solar \n" 20089           "and the thermal spectral ranges. Absorption is usually treated using \n" 20090           "k-distributions or other parameterizations. For calculations with high \n" 20091           "spectral resolution it requires absorption coefficients from an external \n" 20092           "line-by-line model. Using this method, arts generates a file that can be \n" 20093           "used by libRadtran (option molecular_tau_file)." 20100       IN(
"f_grid", 
"z_field", 
"propmat_clearsky_field", 
"atmosphere_dim"),
 20104       GIN_DESC(
"Name of the *molecular_tau_file*.")));
 20107       NAME(
"WriteNetCDF"),
 20108       DESCRIPTION(
"Writes a workspace variable to a NetCDF file.\n" 20110                   "This method can write variables of limited groups.\n" 20112                   "If the filename is omitted, the variable is written\n" 20113                   "to <basename>.<variable_name>.nc.\n"),
 20120       GIN(
"in", 
"filename"),
 20121       GIN_TYPE(
"Vector, Matrix, Tensor3, Tensor4, Tensor5, ArrayOfVector," 20122                "ArrayOfMatrix, GasAbsLookup",
 20125       GIN_DESC(
"Variable to be saved.", 
"Name of the NetCDF file."),
 20133       NAME(
"WriteNetCDFIndexed"),
 20134       DESCRIPTION(
"As *WriteNetCDF*, but creates indexed file names.\n" 20136                   "This method can write variables of any group.\n" 20138                   "If the filename is omitted, the variable is written\n" 20139                   "to <basename>.<variable_name>.nc.\n"),
 20146       GIN(
"in", 
"filename"),
 20147       GIN_TYPE(
"Vector, Matrix, Tensor3, Tensor4, Tensor5, ArrayOfVector," 20148                "ArrayOfMatrix, GasAbsLookup",
 20151       GIN_DESC(
"Variable to be saved.", 
"Name of the NetCDF file."),
 20160       DESCRIPTION(
"Writes a workspace variable to an XML file.\n" 20162                   "This method can write variables of any group.\n" 20164                   "If the filename is omitted, the variable is written\n" 20165                   "to <basename>.<variable_name>.xml.\n" 20166                   "If no_clobber is set to 1, an increasing number will be\n" 20167                   "appended to the filename if the file already exists.\n"),
 20173       IN(
"output_file_format"),
 20174       GIN(
"in", 
"filename", 
"no_clobber"),
 20175       GIN_TYPE(
"Any", 
"String", 
"Index"),
 20178                "Name of the XML file.",
 20179                "0: Overwrite existing files, 1: Use unique filenames"),
 20187       NAME(
"WriteXMLIndexed"),
 20188       DESCRIPTION(
"As *WriteXML*, but creates indexed file names.\n" 20190                   "The variable is written to a file with name:\n" 20191                   "   <filename>.<file_index>.xml.\n" 20192                   "where <file_index> is the value of *file_index*.\n" 20194                   "This means that *filename* shall here not include the .xml\n" 20195                   "extension. Omitting filename works as for *WriteXML*.\n"),
 20196       AUTHORS(
"Patrick Eriksson, Oliver Lemke"),
 20201       IN(
"output_file_format", 
"file_index"),
 20202       GIN(
"in", 
"filename", 
"digits"),
 20203       GIN_TYPE(
"Any", 
"String", 
"Index"),
 20206           "Workspace variable to be saved.",
 20207           "File name. See above.",
 20208           "Equalize the widths of all numbers by padding with zeros as necessary.\n" 20209           "0 means no padding (default)."),
 20217       NAME(
"xaStandard"),
 20219           "Standard function for creating *xa*.\n" 20221           "The method creates *xa* based on *jacobian_quantities* and the various\n" 20222           "atmospheric fields. In the case of scattering species, the data are\n" 20223           "taken from *particle_bulkprop_field*. The following retrieval quantities\n" 20226           "   Absorption species\n" 20227           "   Scattering species\n" 20229           "   Polynomial baseline fit\n" 20230           "   Sinusoidal baseline fit\n"),
 20236       IN(
"jacobian_quantities",
 20237          "atmfields_checked",
 20247          "cloudbox_checked",
 20248          "particle_bulkprop_field",
 20249          "particle_bulkprop_names",
 20256          "surface_props_data",
 20257          "surface_props_names",
 20258          "water_p_eq_agenda"),
 20267           "Clipping of the state vector.\n" 20269           "The method allows you to apply hard limits the values of a\n" 20270           "retrieval quantity. The retrieval quantity is specified by\n" 20271           "*ijq*. All values of the quantity below *limit_low*, are simply\n" 20272           "set to *limit_low*. And the same is performed with respect to\n" 20273           "*limit_high*. That is, the data in x for the retrieval quantity\n" 20274           "are forced to be inside the range [limit_low,limit_high].\n" 20276           "Setting ijq=-1, is a shortcut for applying the limits on all\n" 20277           "retrieval quantities.\n" 20279           "Notice that limits must be specified in the unit used in *x*.\n"),
 20285       IN(
"x", 
"jacobian_quantities"),
 20286       GIN(
"ijq", 
"limit_low", 
"limit_high"),
 20287       GIN_TYPE(
"Index", 
"Numeric", 
"Numeric"),
 20289       GIN_DESC(
"Retrieval quantity index (zero-based)",
 20290                "Lower limit for clipping.",
 20291                "Upper limit for clipping.")));
 20294       NAME(
"x2artsAtmAndSurf"),
 20296           "Maps *x* to atmospheric and surface variables.\n" 20298           "Maps OEM's state vector, *x*, to the matching ARTS variables. This\n" 20299           "method handles atmospheric and surface variables. If you retrieve\n" 20300           "other variables, make sure that you also call *x2artsSensor* and/or\n" 20301           "*x2artsSpectroscopy*.\n" 20303           "The following retrieval quantities are handled by this method:\n" 20305           "   Absorption species\n" 20306           "   Scattering species\n" 20308           "   Surface variables\n" 20310           "Should only be used inside *inversion_iterate_agenda*.\n"),
 20314           "particle_bulkprop_field",
 20321           "surface_props_data"),
 20327          "particle_bulkprop_field",
 20334          "surface_props_data",
 20335          "jacobian_quantities",
 20337          "atmfields_checked",
 20345          "cloudbox_checked",
 20346          "particle_bulkprop_names",
 20347          "surface_props_names",
 20348          "water_p_eq_agenda"),
 20355       NAME(
"x2artsSensor"),
 20357           "Maps *x* to sensor variables.\n" 20359           "Maps OEM's state vector, *x*, to the matching ARTS variables. This\n" 20360           "method handles variables associated with the sensor. If you retrieve\n" 20361           "other variables, make sure that you also call *x2artsAtmAndSurf*\n" 20362           " and/or *x2artsSpectroscopy*.\n" 20364           "The following retrieval quantities are handled by this method:\n" 20366           "   Frequency shift and stretch\n" 20369           "Should only be used inside *inversion_iterate_agenda*.\n" 20371           "Elements in *x* representing pointing corrections are mapped to\n" 20372           "*sensor_los*. Elements representing frequency corrections are mapped\n" 20373           "to *f_backend*. Baseline variables are mapped to *y_baseline*.\n" 20375           "The sensor response is recalculated if there is any non-zero frequency\n" 20382           "sensor_response_f",
 20383           "sensor_response_pol",
 20384           "sensor_response_dlos",
 20385           "sensor_response_f_grid",
 20386           "sensor_response_pol_grid",
 20387           "sensor_response_dlos_grid",
 20388           "mblock_dlos_grid"),
 20395          "sensor_response_f",
 20396          "sensor_response_pol",
 20397          "sensor_response_dlos",
 20398          "sensor_response_f_grid",
 20399          "sensor_response_pol_grid",
 20400          "sensor_response_dlos_grid",
 20401          "mblock_dlos_grid",
 20402          "jacobian_quantities",
 20404          "sensor_response_agenda",
 20413       NAME(
"x2artsSpectroscopy"),
 20414       DESCRIPTION(
"Just defined to indicate a future extensiom.\n" 20416                   "Don't call the method, it will just generate an error.\n"),
 20429       NAME(
"yApplySensorPol"),
 20431           "Extraction of arbitrary linear polarisation.\n" 20433           "This method shall be called after *yCalc* and then applies *sensor_pol*\n" 20434           "on the outout of *yCalc*. See *sensor_pol* for definition of the\n" 20435           "polarisation responses. THe *sensor_response* give to *yCalc* can not\n" 20436           "contain any polarisation response, it must maintain original Stokes\n" 20437           "elelemnts. The value of *stokes_dim* muist be >= 3.\n" 20439           "The values in *sensor_pol* are applied on *y*, and *jacobian* if relevant.\n" 20440           "*y_pol* is set following the values in *sensor_pol* but is rounded to\n" 20441           "an integer value. Remaining data associated with *y* (e.g. y_pos) are\n" 20442           "set to the value matching the first Stokes element.\n"),
 20444       OUT(
"y", 
"y_f", 
"y_pol", 
"y_pos", 
"y_los", 
"y_aux", 
"y_geo", 
"jacobian"),
 20466       NAME(
"yApplyUnit"),
 20468           "Conversion of *y* to other spectral units.\n" 20470           "Any conversion to brightness temperature is normally made inside\n" 20471           "*yCalc*. This method makes it possible to also make this conversion\n" 20472           "after *yCalc*, but with restrictions for *jacobian* and with.\n" 20473           "respect to the n2-law of radiance.\n" 20475           "The conversion made inside *iyEmissionStandard* is mimiced\n" 20476           "and see that method for constraints and selection of output units.\n" 20477           "This with the restriction that the n2-law can be ignored. The later\n" 20478           "is the case if the sensor is placed in space, or if the refractive\n" 20479           "only devaites slightly from unity.\n" 20481           "The method handles *y* and *jacobian* in parallel, where\n" 20482           "the last variable is only considered if it is set. The\n" 20483           "input data must be in original radiance units. A completely\n" 20484           "stringent check of this can not be performed.\n" 20486           "The method can not be used with jacobian quantities that are not\n" 20487           "obtained through radiative transfer calculations. One example on\n" 20488           "quantity that can not be handled is *jacobianAddPolyfit*. There\n" 20489           "are no automatic checks warning for incorrect usage!\n" 20491           "If you are using this method, *iy_unit* should be set to \"1\" when\n" 20492           "calling *yCalc*, and be changed before calling this method.\n" 20494           "Conversion of *y_aux* is not supported.\n"),
 20496       OUT(
"y", 
"jacobian"),
 20500       IN(
"y", 
"jacobian", 
"y_f", 
"y_pol", 
"iy_unit"),
 20507       NAME(
"ybatchCalc"),
 20509           "Performs batch calculations for the measurement vector y.\n" 20511           "We perform *ybatch_n* jobs, starting at index *ybatch_start*. (Zero\n" 20512           "based indexing, as usual.) The output array *ybatch* will have\n" 20513           "ybatch_n elements. Indices in the output array start\n" 20514           "with zero, independent of *ybatch_start*.\n" 20516           "The method performs the following:\n" 20517           "   1. Sets *ybatch_index* = *ybatch_start*.\n" 20518           "   2. Performs a-d until\n" 20519           "      *ybatch_index* = *ybatch_start* + *ybatch_n*.\n" 20520           "        a. Executes *ybatch_calc_agenda*.\n" 20521           "        b. If *ybatch_index* = *ybatch_start*, resizes *ybatch*\n" 20522           "           based on *ybatch_n* and length of *y*.\n" 20523           "        c. Copies *y* to *ybatch_index* - *ybatch_start*\n" 20525           "        d. Adds 1 to *ybatch_index*.\n" 20527           "Beside the *ybatch_calc_agenda*, the WSVs *ybatch_start*\n" 20528           "and *ybatch_n* must be set before calling this method.\n" 20529           "Further, *ybatch_calc_agenda* is expected to produce a\n" 20530           "spectrum and should accordingly include a call of *yCalc*\n" 20531           "(or asimilar method).\n" 20533           "The input variable *ybatch_start* is set to a default of zero in\n" 20534           "*general.arts*.\n" 20536           "An agenda that calculates spectra for different temperature profiles\n" 20537           "could look like this:\n" 20539           "   AgendaSet(ybatch_calc_agenda){\n" 20540           "      Extract(t_field,tensor4_1,ybatch_index)\n" 20544           "Jacobians are also collected, and stored in output variable *ybatch_jacobians*. \n" 20545           "(This will be empty if yCalc produces empty Jacobians.)\n" 20547           "See the user guide for further practical examples.\n"),
 20549       OUT(
"ybatch", 
"ybatch_aux", 
"ybatch_jacobians"),
 20553       IN(
"ybatch_start", 
"ybatch_n", 
"ybatch_calc_agenda"),
 20557       GIN_DESC(
"A flag with value 1 or 0. If set to one, the batch\n" 20558                "calculation will continue, even if individual jobs fail. In\n" 20559                "that case, a warning message is written to screen and file\n" 20560                "(out1 output stream), and the *y* Vector entry for the\n" 20561                "failed job in *ybatch* is left empty.")));
 20564       NAME(
"yColdAtmHot"),
 20566           "Computes *y* from input using standard calibration scheme of cold-atm-hot observations\n" 20568           "If calib evaluates as true:\n" 20569           "    y = cold_temp + (hot_temp - cold_temp) * (atm - cold) / (hot - cold)\n" 20571           "If calib evaluates as false:\n" 20572           "    y = (hot_temp * cold - cold_temp * hot) / (hot - cold)\n"),
 20579       GIN(
"cold", 
"atm", 
"hot", 
"cold_temp", 
"hot_temp", 
"calib"),
 20580       GIN_TYPE(
"Vector", 
"Vector", 
"Vector", 
"Numeric", 
"Numeric", 
"Index"),
 20582       GIN_DESC(
"N-elem Vector of cold load linear power",
 20583                "N-elem Vector of atmosphere linear power",
 20584                "N-elem Vector of hot load linear power",
 20585                "Cold load temperature",
 20586                "Hot load temperature",
 20587                "Flag for calibration scheme, false means system temperature is computed")));
 20590       NAME(
"ybatchMetProfiles"),
 20592           "This method is used for simulating ARTS for metoffice model fields" 20594           "This method reads in *met_amsu_data* which contains the\n" 20595           "lat-lon of the metoffice profile files as a Matrix. It then\n" 20596           "loops over the number of profiles and corresponding to each\n" 20597           "longitude create the appropriate profile basename. Then,\n" 20598           "corresponding to each basename we have temperature field, altitude\n" 20599           "field, humidity field, and particle number density field. The\n" 20600           "temperature field and altitude field are stored in the same dimensions\n" 20601           "as *t_field_raw* and *z_field_raw*. The oxygen and nitrogen VMRs are\n" 20602           "set to constant values of 0.209 and 0.782, respectively and are used\n" 20603           "along with humidity field to generate *vmr_field_raw*. \n" 20605           "The three fields *t_field_raw*, *z_field_raw*, and *vmr_field_raw* are\n" 20606           "given as input to *met_profile_calc_agenda* which is called in this\n" 20607           "method. See documentation of WSM *met_profile_calc_agenda* for more\n" 20608           "information on this agenda. \n" 20610           "The method also converts satellite zenith angle to appropriate\n" 20611           "*sensor_los*. It also sets the *p_grid* and *cloudbox_limits*\n" 20612           "from the profiles inside the function\n"),
 20619          "met_profile_calc_agenda",
 20628       GIN(
"nelem_p_grid", 
"met_profile_path", 
"met_profile_pnd_path"),
 20629       GIN_TYPE(
"Index", 
"String", 
"String"),
 20631       GIN_DESC(
"FIXME DOC", 
"FIXME DOC", 
"FIXME DOC")));
 20634       NAME(
"ybatchMetProfilesClear"),
 20636           "This method is used for simulating ARTS for metoffice model fields\n" 20637           "for clear sky conditions.\n" 20639           "This method reads in *met_amsu_data* which contains the\n" 20640           "lat-lon of the metoffice profile files as a Matrix. It then\n" 20641           "loops over the number of profiles and corresponding to each\n" 20642           "longitude create the appropriate profile basename. Then,\n" 20643           "Corresponding to each basename we have temperature field, altitude\n" 20644           "field, humidity field, and particle number density field. The\n" 20645           "temperature field and altitude field are stored in the same dimensions\n" 20646           "as *t_field_raw* and *z_field_raw*. The oxygen and nitrogen VMRs are\n" 20647           "set to constant values of 0.209 and 0.782, respectively and are used\n" 20648           "along with humidity field to generate *vmr_field_raw*. \n" 20650           "The three fields *t_field_raw*, *z_field_raw*, and *vmr_field_raw* are\n" 20651           "given as input to *met_profile_calc_agenda* which is called in this\n" 20652           "method. See documentation of WSM *met_profile_calc_agenda* for more\n" 20653           "information on this agenda. \n" 20655           "The method also converts satellite zenith angle to appropriate\n" 20656           "*sensor_los*. It also sets the *p_grid* and *cloudbox_limits*\n" 20657           "from the profiles inside the function\n"),
 20664          "met_profile_calc_agenda",
 20669       GIN(
"nelem_p_grid", 
"met_profile_path"),
 20672       GIN_DESC(
"FIXME DOC", 
"FIXME DOC")));
 20676       NAME(
"ybatchTimeAveraging"),
 20678           "Time average of *ybatch* and *time_grid*\n" 20680           "Computes the internal covariance matrix in *covmat_sepsbatch*, and\n" 20681           "stores the number of elements per averaging in *counts*\n"),
 20683       OUT(
"ybatch", 
"time_grid", 
"covmat_sepsbatch", 
"counts"),
 20687       IN(
"ybatch", 
"time_grid"),
 20688       GIN(
"time_step", 
"disregard_first", 
"disregard_last"),
 20689       GIN_TYPE(
"String", 
"Index", 
"Index"),
 20691       GIN_DESC(
"Time step in the form \"INDEX SCALE\", where SCALE is \"h\", \"min\", or \"s\" for hours, minutes or seconds",
 20692                "Flag to remove first time step (e.g., if it is an incomplete step)",
 20693                "Flag to remove last time step (e.g., if it is an incomplete step)")));
 20696       NAME(
"ybatchTroposphericCorrectionNaiveMedianForward"),
 20698           "Performs naive tropospheric corrections on *ybatch*\n" 20700           "Sets *ybatch_corr* to be able to perform the inverse of the corrections,\n" 20701           "each array-element with 3 entries as [median, part_trans, trop_temp]\n"),
 20703       OUT(
"ybatch_corr", 
"ybatch"),
 20708       GIN(
"range", 
"trop_temp", 
"targ_temp"),
 20709       GIN_TYPE(
"ArrayOfIndex", 
"Vector", 
"Numeric"),
 20711       GIN_DESC(
"Positions where the median of the baseline is computed, if empty all is used",
 20712                "Radiative temperature of the troposphere",
 20713                "Temperature target of the baseline")));
 20716       NAME(
"ybatchTroposphericCorrectionNaiveMedianInverse"),
 20718           "Performs inverse of naive tropospheric corrections on *ybatch*\n"),
 20724       IN(
"ybatch", 
"ybatch_corr"),
 20733           "Calculation of complete measurement vectors (y).\n" 20735           "The method performs radiative transfer calculations from a sensor\n" 20736           "perspective. Radiative transfer calculations are performed for\n" 20737           "monochromatic pencil beams, following *iy_main_agenda* and\n" 20738           "associated agendas. Obtained radiances are weighted together by\n" 20739           "*sensor_response*, to include the characteristics of the sensor.\n" 20740           "The measurement vector obtained can contain anything from a single\n" 20741           "frequency value to a series of measurement scans (each consisting\n" 20742           "of a series of spectra), all depending on the settings. Spectra\n" 20743           "and jacobians are calculated in parallel.\n" 20745           "The frequency, polarisation etc. for each measurement value is\n" 20746           "given by *y_f*, *y_pol*, *y_pos* and *y_los*.\n" 20748           "The content of *y_aux* follows *iy_aux_vars. See the method selected\n" 20749           "for *iy_main_agenda* for allowed choices.\n" 20751           "The geo-positions (*y_geo*) are set based on *sensor_response*. When\n" 20752           "an antenna pattern is considered, there are several pencil beams,\n" 20753           "and thus also several goe-positions, associated with each value of *y*.\n" 20754           "The geo-position assigned to a value in *y* is the *geo_pos* of the pencil\n" 20755           "beam related to the highest value in *sensor_response*. This means that\n" 20756           "*mblock_dlos_grid* must contain the bore-sight direction (0,0), if you\n" 20757           "want *y_geo* to exactly match the bore-sight direction.\n" 20759           "The Jacobian provided (*jacobian*) is adopted to selected retrieval\n" 20760           "units, but no transformations are applied. Transformations are\n" 20761           "included by calling *jacobianAdjustAndTransform*.\n"),
 20763       OUT(
"y", 
"y_f", 
"y_pol", 
"y_pos", 
"y_los", 
"y_aux", 
"y_geo", 
"jacobian"),
 20767       IN(
"atmgeom_checked",
 20768          "atmfields_checked",
 20772          "cloudbox_checked",
 20773          "scat_data_checked",
 20780          "mblock_dlos_grid",
 20782          "sensor_response_f",
 20783          "sensor_response_pol",
 20784          "sensor_response_dlos",
 20790          "jacobian_quantities",
 20798       NAME(
"yCalcAppend"),
 20800           "Replaces *yCalc* if a measurement shall be appended to an\n" 20803           "The method works basically as *yCalc* but appends the results to\n" 20804           "existing data, instead of creating completely new *y* and its\n" 20805           "associated variables. This method is required if your measurement\n" 20806           "consists of data from two instruments using different observation\n" 20807           "techniques (corresponding to different iyCalc-methods). One such\n" 20808           "example is if emission and transmission data are combined into a\n" 20809           "joint retrieval. The method can also be used to get around the\n" 20810           "constrain that *sensor_response* is required to be the same for\n" 20813           "The new measurement is simply appended to the input *y*, and the\n" 20814           "other output variables are treated correspondingly. Data are\n" 20815           "appended \"blindly\" in *y_aux*. That is, data of different type\n" 20816           "are appended if *iy_aux_vars* differs between the two measurements,\n" 20817           "the data are appended strictly following the order. First variable\n" 20818           "of second measurement is appended to first variable of first\n" 20819           "measurement, and so on. The number of auxiliary variables can differ\n" 20820           "between the measurements. Missing data are set to zero.\n" 20822           "The set of retrieval quantities can differ between the two\n" 20823           "calculations. If an atmospheric quantity is part of both Jacobians,\n" 20824           "the same retrieval grids must be used in both cases.\n" 20825           "The treatment of instrument related Jacobians (baseline fits,\n" 20826           "pointing ...) follows the *append_instrument_wfs* argument.\n" 20828           "A difference to *yCalc* is that *jacobian_quantities* is both in-\n" 20829           "and output variable. The input version shall match the measurement\n" 20830           "to be calculated, while the output version matches the output *y*,\n" 20831           "the combined, measurements. A copies of *jacobian_quantities* of the\n" 20832           "first measurement must be made and shall be provided to the method\n" 20833           "as *jacobian_quantities_copy*.\n" 20835           "As for *yCalc* Jacobian transformations are not handled, and the\n" 20836           "the input Jacobian shall not contain transformations. That is\n" 20837           "*jacobianAdjustAndTransform* shall be called after this method,\n" 20838           "when the complete Jacobian is at hand.\n"),
 20848           "jacobian_quantities"),
 20861          "atmfields_checked",
 20865          "cloudbox_checked",
 20866          "scat_data_checked",
 20873          "mblock_dlos_grid",
 20875          "sensor_response_f",
 20876          "sensor_response_pol",
 20877          "sensor_response_dlos",
 20883          "jacobian_quantities",
 20885       GIN(
"jacobian_quantities_copy", 
"append_instrument_wfs"),
 20886       GIN_TYPE(
"ArrayOfRetrievalQuantity", 
"Index"),
 20888       GIN_DESC(
"Copy of *jacobian_quantities* of first measurement.",
 20889                "Flag controlling if instrumental weighting functions are " 20890                "appended or treated as different retrieval quantities.")));
 20895           "Replaces *yCalc* for radar/lidar calculations.\n" 20897           "The output format for *iy* when simulating radars and lidars differs\n" 20898           "from the standard one, and *yCalc* can not be used for such simulations.\n" 20899           "This method works largely as *yCalc*, but is tailored to handle the\n" 20900           "output from *iyActiveSingleScat*.\n" 20902           "The method requires additional information about the sensor,\n" 20903           "regarding its recieving properties. First of all, recieved\n" 20904           "polarisation states are taken from *instrument_pol_array*. Note\n" 20905           "that this WSV allows to define several measured polarisations\n" 20906           "for each transmitted signal. For example, it is possible to\n" 20907           "simulate transmission of V and measuring backsacttered V and H.\n" 20909           "Secondly, the range averaging is described by *range_bins*. These\n" 20910           "bins can either be specified in altitude or two-way travel time.\n" 20911           "In both case, the edges of the range bins shall be specified.\n" 20912           "All data (including auxiliary variables) are returned as the\n" 20913           "average inside the bins. If a bin is totally outside the model\n" 20914           "atmosphere, NaN is returned.\n" 20916           "The options for *iy_unit* are:\n" 20917           " \"1\"   : Backscatter coefficient. Unit is 1/(m*sr). At zero\n" 20918           "           attenuation, this equals the scattering matrix value for\n" 20919           "           the backward direction. See further AUG.\n" 20920           " \"Ze\"  : Equivalent reflectivity. Unit is mm^6/m^3. Conversion\n" 20921           "           formula is given below.\n" 20922           " \"dBZe\": 10*log10(Ze/Z0), where Z0 is 1 mm^6/m^3.\n" 20924           "The conversion from backscatter coefficient to Ze is:\n" 20925           "   Ze = 1e18 * lambda^4 / (k2 * pi^5) * sum(sigma),\n" 20926           "where sum(sigma) = 4 * pi * b, and b is the backscatter coefficient.\n" 20928           "The reference dielectric factor can either specified directly by\n" 20929           "the argument *k2*. For example, to mimic the CloudSat data, *k2*\n" 20930           "shall be set to 0.75 (citaion needed). If *k2* is set to be \n" 20931           "negative (which is defualt), k2 is calculated as:\n" 20932           "   k2 = abs( (n^2-1)/(n^2+2) )^2,\n" 20933           "where n is the refractive index of liquid water at temperature\n" 20934           "*ze_tref* and the frequency of the radar, calculated by the MPM93\n" 20935           "parameterization.\n" 20937           "A lower limit for dBZe is applied (*dbze_min*). The main reason is to\n" 20938           "handle the fact dBZe is not defined for Ze=0, and dBZe is set to the\n" 20939           "clip value when Ze < 10^(dbze_min/10).\n"),
 20941       OUT(
"y", 
"y_f", 
"y_pol", 
"y_pos", 
"y_los", 
"y_aux", 
"y_geo", 
"jacobian"),
 20945       IN(
"atmgeom_checked",
 20946          "atmfields_checked",
 20954          "cloudbox_checked",
 20959          "jacobian_quantities",
 20962          "instrument_pol_array",
 20964       GIN(
"ze_tref", 
"k2", 
"dbze_min"),
 20965       GIN_TYPE(
"Numeric", 
"Numeric", 
"Numeric"),
 20967       GIN_DESC(
"Reference temperature for conversion to Ze.",
 20968                "Reference dielectric factor.",
 20969                "Clip value for dBZe.")));
 20972       NAME(
"ySimpleSpectrometer"),
 20974           "Converts *iy* to *y* assuming a fixed frequency resolution.\n" 20976           "This is a short-cut, avoiding *yCalc*, that can be used to convert\n" 20977           "monochromatic pencil beam data to spectra with a fixed resolution.\n" 20979           "The method mimics a spectrometer with rectangular response\n" 20980           "functions, all having the same width (*df*). The position of\n" 20981           "the first spectrometer channel is set to f_grid[0]+df/2.\n" 20982           "The centre frequency of channels are returned as *y_f*.\n" 20984           "Auxiliary variables and *jacobian*s are not handled.\n"),
 20990       IN(
"iy", 
"stokes_dim", 
"f_grid"),
 20994       GIN_DESC(
"Selected frequency resolution.")));
 20997       NAME(
"z_fieldFromHSE"),
 20999           "Force altitudes to fulfil hydrostatic equilibrium.\n" 21001           "The method applies hydrostatic equilibrium. A mixture of \"dry\n" 21002           "air\" and water vapour (if present as *abs_species* tag) is assumed.\n" 21003           "That is, the air is assumed to be well mixed and its weight, apart\n" 21004           "from the water vapour, is constant (*molarmass_dry_air*). In\n" 21005           "addition, the effect of any particles (including liquid and ice\n" 21006           "particles) is neglected.\n" 21008           "The output is an update of *z_field*. This variable is expected to\n" 21009           "contain approximative altitudes when calling the function. The\n" 21010           "altitude matching *p_hse* is kept constant. Other input altitudes can\n" 21011           "basically be arbitrary, but good estimates give quicker calculations.\n" 21013           "The calculations are repeated until the change in altitude is below\n" 21014           "*z_hse_accuracy*. An iterative process is needed as gravity varies\n" 21017           "For 1D and 2D, the geographical position is taken from *lat_true*\n" 21018           "and *lon_true*.\n"),
 21024       IN(
"atmosphere_dim",
 21036          "atmfields_checked",
 21038          "molarmass_dry_air",
 
MdRecord create_mdrecord(const char(&name) [LEN_OF_NAME], const char(&description) [LEN_OF_DESCRIPTION], const std::array< String, NUM_OF_AUTHORS > &authors, const std::array< String, NUM_OF_OUTPUTS > &output, const std::array< String, NUM_OF_GOUT_ARGS > &gout, const std::array< String, NUM_OF_GOUT_TYPES > &gouttype, const std::array< String, NUM_OF_GOUT_DESCRIPTIONS > &goutdesc, const std::array< String, NUM_OF_INPUTS > &input, const std::array< String, NUM_OF_GIN_ARGS > &gin, const std::array< String, NUM_OF_GIN_TYPES > &gintype, const std::array< String, NUM_OF_GIN_DEFAULTS > &gindefault, const std::array< String, NUM_OF_GIN_DESCRIPTIONS > &gindesc, Ts ... flags)
All information for one workspace method. 
String get_array_groups_as_string(bool basetype_is_group, bool return_basetype_only)
Return string list of array types. 
The global header file for ARTS. 
#define USES_TEMPLATES(x)
Array< String > ArrayOfString
An array of Strings. 
This can be used to make arrays out of anything. 
const ArrayOfString wsv_group_names
The names associated with Wsv groups as Strings. 
void define_md_data_raw()
Declaration of the class MdRecord. 
my_basic_string< char > String
The String type for ARTS. 
std::array< String, sizeof...(T)> string_array(const T &... input)
const Array< MdRecord > md_data_raw
Lookup information for workspace methods. 
Auxiliary header stuff related to workspace variable groups.