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_linesSetZeemanCoefficients"),
1745 DESCRIPTION(
"Sets the Zeeman coefficients of the lines by user input\n"),
1753 GIN_TYPE(
"ArrayOfQuantumIdentifier",
"Vector"),
1755 GIN_DESC(
"Information to match an energy level of a/many lines.",
1756 "Corresponding value to set as Zeeman coefficient")));
1759 NAME(
"abs_lines_per_speciesSetZeemanCoefficients"),
1760 DESCRIPTION(
"See *abs_linesSetZeemanCoefficients*\n"),
1762 OUT(
"abs_lines_per_species"),
1766 IN(
"abs_lines_per_species"),
1768 GIN_TYPE(
"ArrayOfQuantumIdentifier",
"Vector"),
1770 GIN_DESC(
"Information to match an energy level of a/many lines.",
1771 "Corresponding value to set as Zeeman coefficient")));
1774 NAME(
"abs_linesChangeLineShapeModelParameterForMatchingLines"),
1775 DESCRIPTION(
"Change line shape model data parameter in matching lines.\n"
1777 "The matching is done so that QI must be in the line identifier\n"
1779 "Acceptable parameter(s) are:\n"
1790 "Acceptable coefficient(s) are:\n"
1796 "Acceptable species are:\n"
1797 "\t\"AIR\" (so long as it is the broadening species list)\n"
1798 "\t\"SELF\" (so long as it is the broadening species list)\n"
1799 "\tAny species in the line broadening species\n"
1801 "The line parameter will have its old value plus the change if\n"
1802 "relative is false, else it will have its old value times\n"
1805 "Throws an error if it cannot find any targets to change\n"
1813 GIN(
"QI",
"parameter",
"coefficient",
"species",
"change",
"relative"),
1821 GIN_DESC(
"Information to match the line.",
1822 "Name of parameter to be replaced",
1823 "Coefficient of the parameter to be changed",
1824 "Species of parameter to be changed",
1825 "Change in the value found",
1826 "Flag for relative change (0 is absolute change)")));
1829 NAME(
"abs_lines_per_speciesChangeLineShapeModelParameterForMatchingLines"),
1830 DESCRIPTION(
"See *abs_linesChangeLineShapeModelParameterForMatchingLines*\n"
1833 OUT(
"abs_lines_per_species"),
1837 IN(
"abs_lines_per_species"),
1838 GIN(
"QI",
"parameter",
"coefficient",
"species",
"change",
"relative"),
1846 GIN_DESC(
"Information to match the line.",
1847 "Name of parameter to be replaced",
1848 "Coefficient of the parameter to be changed",
1849 "Species of parameter to be changed",
1850 "Change in the value found",
1851 "Flag for relative change (0 is absolute change)")));
1854 NAME(
"abs_lines_per_speciesChangeLineShapeModelParameterForSpecies"),
1855 DESCRIPTION(
"See *abs_linesChangeLineShapeModelParameterForMatchingLines*\n"
1858 OUT(
"abs_lines_per_species"),
1862 IN(
"abs_lines_per_species",
"abs_species"),
1863 GIN(
"QI",
"parameter",
"coefficient",
"species",
"change",
"relative",
"species_tag"),
1872 GIN_DESC(
"Information to match the line.",
1873 "Name of parameter to be replaced",
1874 "Coefficient of the parameter to be changed",
1875 "Species of parameter to be changed",
1876 "Change in the value found",
1877 "Flag for relative change (0 is absolute change)",
1878 "The species tag from *abs_species* to change")));
1881 NAME(
"abs_linesCompact"),
1882 DESCRIPTION(
"Removes lines that are unimportant because of their\n"
1883 "cutoff frequency range\n"),
1884 AUTHORS(
"Stefan Buehler",
"Richard Larsson"),
1889 IN(
"abs_lines",
"f_grid"),
1896 NAME(
"abs_lines_per_speciesCompact"),
1898 AUTHORS(
"Stefan Buehler",
"Richard Larsson"),
1899 OUT(
"abs_lines_per_species"),
1903 IN(
"abs_lines_per_species",
"f_grid"),
1910 NAME(
"abs_lines_per_speciesCreateFromLines"),
1912 "Split lines up into the different species.\n"
1914 "The order of the splitting will match the outer layer of *abs_species*\n"
1915 "There will be no respect for the internal layer of *abs_species*\n"),
1917 OUT(
"abs_lines_per_species"),
1921 IN(
"abs_lines",
"abs_species"),
1928 NAME(
"abs_lookupAdapt"),
1930 "Adapts a gas absorption lookup table to the current calculation.\n"
1932 "The lookup table can contain more species and more frequencies than\n"
1933 "are needed for the current calculation. This method cuts down the\n"
1934 "table in memory, so that it contains just what is needed. Also, the\n"
1935 "species in the table are brought in the same order as the species in\n"
1936 "the current calculation.\n"
1938 "Of course, the method also performs quite a lot of checks on the\n"
1939 "table. If something is not ok, a runtime error is thrown.\n"
1941 "The method sets a flag *abs_lookup_is_adapted* to indicate that the\n"
1942 "table has been checked and that it is ok. Never set this by hand,\n"
1943 "always use this method to set it!\n"),
1945 OUT(
"abs_lookup",
"abs_lookup_is_adapted"),
1949 IN(
"abs_lookup",
"abs_species",
"f_grid"),
1956 NAME(
"abs_lookupCalc"),
1958 "Creates a gas absorption lookup table.\n"
1960 "The lookup table stores absorption cross-sections as a function of\n"
1961 "pressure. Additionally, absorption can be stored as a function of\n"
1962 "temperature for temperature perturbations from a reference\n"
1965 "Additionally, absorption can be stored as a function of water vapor\n"
1966 "VMR perturbations from a reference profile. The variable *abs_nls*\n"
1967 "specifies, for which species water vapor perturbations should be\n"
1970 "Note, that the absorbing gas can be any gas, but the perturbing gas is\n"
1973 OUT(
"abs_lookup",
"abs_lookup_is_adapted"),
1992 NAME(
"abs_lookupInit"),
1994 "Creates an empty gas absorption lookup table.\n"
1996 "This is mainly there to help developers. For example, you can write\n"
1997 "the empty table to an XML file, to see the file format.\n"),
2010 NAME(
"abs_lookupSetup"),
2012 "Set up input parameters for abs_lookupCalc.\n"
2014 "More information can be found in the documentation for method\n"
2015 "*abs_lookupSetupBatch*\n"
2017 "Max and min values of H2O and temperature are adjusted to allow for\n"
2018 "numerical perturbations in Jacobian calculation.\n"
2020 "The input variables *abs_nls_interp_order* and *abs_t_interp_order*\n"
2021 "are used to make sure that there are enough points in *abs_nls_pert*\n"
2022 "and *abs_t_pert* for the chosen interpolation order.\n"
2024 "Note: For homogeneous 1D cases, it can be advantageous to calculate\n"
2025 "*abs_lookup* from the 1D atmosphere, and to expand the atmosphere\n"
2026 "to 3D only after that. This particularly if nonlinear species\n"
2027 "(i.e., H2O) are involved."
2030 " *abs_lookupSetupBatch*\n"),
2041 IN(
"atmosphere_dim",
2047 "atmfields_checked",
2049 "abs_p_interp_order",
2050 "abs_t_interp_order",
2051 "abs_nls_interp_order"),
2052 GIN(
"p_step",
"t_step",
"h2o_step"),
2053 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric"),
2056 "Maximum step in log10(p[Pa]). If the pressure grid is "
2057 "coarser than this, additional points are added until each "
2058 "log step is smaller than this.",
2060 "The temperature variation grid step in Kelvin, "
2061 "for a 2D or 3D atmosphere. For a 1D atmosphere this "
2062 "parameter is not used.",
2064 "The H2O variation grid step [fractional], if "
2065 "H2O variations are done (which is determined automatically, "
2066 "based on abs_species and the atmospheric dimension). For a "
2067 "1D atmosphere this parameter is not used.")));
2070 NAME(
"abs_lookupSetupBatch"),
2072 "Set up input parameters for abs_lookupCalc for batch calculations.\n"
2074 "This method performs a similar task as *abs_lookupSetup*, with the\n"
2075 "difference that the lookup table setup is not for a single\n"
2076 "atmospheric state, but for a whole batch of them, stored in\n"
2077 "*batch_atm_fields_compact*.\n"
2079 "The method checks *abs_species* to decide which species require\n"
2080 "nonlinear treatment in the lookup table.\n"
2082 "The method also checks which range of pressures, temperatures, and\n"
2083 "VMRs occurs, and sets *abs_p*, *abs_t*, *abs_t_pert*, and *abs_vmrs*\n"
2086 "If nonlinear species are present, *abs_nls* and *abs_nls_pert* are also\n"
2089 "Max and min values of H2O and temperature are adjusted to allow for\n"
2090 "numerical perturbations in Jacobian calculation.\n"
2092 "The input variables *abs_nls_interp_order* and *abs_t_interp_order*\n"
2093 "are used to make sure that there are enough points in *abs_nls_pert*\n"
2094 "and *abs_t_pert* for the chosen interpolation order.\n"
2096 "The method checks each given field using *atmfields_checkedCalc*.\n"
2097 "If a field does not pass the check, a run-time error is thrown.\n"
2098 "To prevent this, the parameter *robust* can be set to one: Invalid \n"
2099 "atmospheres are skipped, but the run continues. This matches the \n"
2100 "robust behaviour of *ybatchCalc*.\n"
2103 " *abs_lookupSetup*\n"),
2115 "batch_atm_fields_compact",
2116 "abs_p_interp_order",
2117 "abs_t_interp_order",
2118 "abs_nls_interp_order",
2126 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric",
"Vector",
"Index",
"Index"),
2129 "Grid step in log10(p[Pa]) (base 10 logarithm).",
2131 "The temperature variation grid step in Kelvin. The true "
2132 "step can become finer than this, if required by the "
2133 "interpolation order.",
2135 "The H2O variation grid step [fractional], if H2O variations "
2136 "are done (which is determined automatically, based on "
2137 "abs_species and the atmospheric dimension). As for T, the true "
2138 "step can turn out finer if required by the interpolation order.",
2140 "You can give here explicit extreme values to add to "
2141 "abs_t_pert and abs_nls_pert. The order is [t_pert_min, "
2142 "t_pert_max, nls_pert_min, nls_pert_max].",
2144 "A flag with value 1 or 0. If set to one, the batch\n"
2145 "setup will continue, even if individual fields are invalid.\n"
2146 "This is consistent with the behaviour of *ybatchCalc*.",
2148 "A flag with value 1 or 0. If set to one, the gridnames of \n"
2149 " every *atm_fields_compact* are checked.")));
2152 NAME(
"abs_lookupSetupWide"),
2154 "Set up input parameters for abs_lookupCalc for a wide range of\n"
2155 "atmospheric conditions.\n"
2157 "This method can be used to set up parameters for a lookup table that\n"
2158 "really covers all reasonable atmospheric conditions.\n"
2160 "Reference profiles of T and H2O will be constant, so that the\n"
2161 "different dimensions in the lookup table are actually \"orthogonal\",\n"
2162 "unlike the traditional case where we have pressure dependent reference\n"
2163 "profiles. This makes the table numerically somewhat more robust then\n"
2164 "the traditional ones, and it makes it straightforward to calculate the\n"
2165 "accuracy for the different interpolations with abs_lookupTestAccuracy.\n"
2167 "You can give min an max values for the atmospheric conditions. The\n"
2168 "default values are chosen such that they cover the value range over\n"
2169 "the complete Chevallier91L data set, and a bit more. The statistics\n"
2170 "of the Chevallier91L data are:\n"
2172 "min(p) / max(p) [Pa]: 1 / 104960\n"
2173 "min(T) / max(T) [K]: 158.21 / 320.39\n"
2174 "min(H2O) / max(H2O) [VMR]: -5.52e-07 / 0.049\n"),
2186 "abs_p_interp_order",
2187 "abs_t_interp_order",
2188 "abs_nls_interp_order"),
2189 GIN(
"p_min",
"p_max",
"p_step",
"t_min",
"t_max",
"h2o_min",
"h2o_max"),
2197 GIN_DEFAULT(
"0.5",
"110000",
"0.05",
"100",
"400",
"0",
"0.05"),
2198 GIN_DESC(
"Pressure grid minimum [Pa].",
2199 "Pressure grid maximum [Pa].",
2200 "Pressure grid step in log10(p[Pa]) (base 10 logarithm).",
2201 "Temperature grid minimum [K].",
2202 "Temperature grid maximum [K].",
2203 "Humidity grid minimum [fractional].",
2204 "Humidity grid maximum [fractional].")));
2207 NAME(
"abs_lookupTestAccuracy"),
2209 "Test accuracy of absorption lookup table.\n"
2211 "Explicitly compare absorption from the lookup table with line-by-line\n"
2212 "calculations for strategically selected conditions (in-between the\n"
2213 "lookup table grid points).\n"
2215 "For error units see *abs_lookupTestAccMC*\n"
2217 "Produces no workspace output, only output to the output streams.\n"),
2224 "abs_lookup_is_adapted",
2225 "abs_p_interp_order",
2226 "abs_t_interp_order",
2227 "abs_nls_interp_order",
2235 NAME(
"abs_lookupTestAccMC"),
2237 "Test accuracy of absorption lookup table with Monte Carlo Algorithm.\n"
2239 "Explicitly compare absorption from the lookup table with line-by-line\n"
2240 "calculations for random conditions.\n"
2242 "The quantities returned are the mean value and standard deviation of\n"
2243 "the absolute value of the relative error in percent.\n"
2244 "The relative error itself is computed for a large number of cases\n"
2245 "(pressure, temperature, and H2O VMR combinations). In the frequency\n"
2246 "dimension the maximum value is taken for each case.\n"
2248 "Produces no workspace output, only output to the output streams.\n"),
2255 "abs_lookup_is_adapted",
2256 "abs_p_interp_order",
2257 "abs_t_interp_order",
2258 "abs_nls_interp_order",
2267 NAME(
"abs_nlteFromRaw"),
2276 IN(
"nlte_level_identifiers",
2277 "nlte_vibrational_energies"),
2281 GIN_DESC(
"Vibrational data [nlevels, np]")));
2284 NAME(
"abs_speciesAdd"),
2286 "Adds species tag groups to the list of absorption species.\n"
2288 "This WSM is similar to *abs_speciesSet*, the only difference is that\n"
2289 "this method appends species to an existing list of absorption species instead\n"
2290 "of creating the whole list.\n"
2292 "See *abs_speciesSet* for details on how tags are defined and examples of\n"
2293 "how to input them in the control file.\n"),
2296 "propmat_clearsky_agenda_checked",
2297 "abs_xsec_agenda_checked"),
2305 GIN_DESC(
"Specify one String for each tag group that you want to\n"
2306 "add. Inside the String, separate the tags by commas\n"
2307 "(plus optional blanks).\n")));
2310 NAME(
"abs_speciesAdd2"),
2312 "Adds a species tag group to the list of absorption species and\n"
2313 "jacobian quantities.\n"
2315 "The method is basically a combined call of *abs_speciesAdd* and\n"
2316 "*jacobianAddAbsSpecies*. In this way it is not needed to specify a\n"
2317 "tag group in two different places.\n"
2319 "Arguments exactly as for *jacobianAddAbsSpecies*. Note that this\n"
2320 "method only handles a single tag group, in contrast to\n"
2321 "*abs_speciesAdd*.\n"),
2324 "jacobian_quantities",
2326 "propmat_clearsky_agenda_checked",
2327 "abs_xsec_agenda_checked"),
2331 IN(
"abs_species",
"atmosphere_dim",
"p_grid",
"lat_grid",
"lon_grid"),
2332 GIN(
"gin1",
"gin2",
"gin3",
"species",
"unit"),
2333 GIN_TYPE(
"Vector",
"Vector",
"Vector",
"String",
"String"),
2335 GIN_DESC(
"Pressure retrieval grid.",
2336 "Latitude retrieval grid.",
2337 "Longitude retreival grid.",
2338 "The species tag of the retrieval quantity.",
2339 "Retrieval unit. See above."),
2346 NAME(
"abs_speciesDefineAllInScenario"),
2348 "Define one tag group for each species known to ARTS and included in an\n"
2349 "atmospheric scenario.\n"
2351 "You can use this as an alternative to *abs_speciesSet* if you want to make an\n"
2352 "absorption calculation that is as complete as possible. The method\n"
2353 "goes through all defined species and tries to open the VMR file. If\n"
2354 "this works the tag is included, otherwise it is skipped.\n"),
2357 "propmat_clearsky_agenda_checked",
2358 "abs_xsec_agenda_checked"),
2367 "The name and path of a particular atmospheric scenario.\n"
2368 "For example: /pool/lookup2/arts-data/atmosphere/fascod/tropical")));
2371 NAME(
"abs_speciesDefineAll"),
2372 DESCRIPTION(
"Sets *abs_species*[i][0] to all species in ARTS\n"),
2375 "propmat_clearsky_agenda_checked",
2376 "abs_xsec_agenda_checked"),
2401 NAME(
"abs_speciesSet"),
2403 "Set up a list of absorption species tag groups.\n"
2405 "Workspace variables like *abs_species* contain several tag\n"
2406 "groups. Each tag group contains one or more tags. This method converts\n"
2407 "descriptions of tag groups given in the keyword to the ARTS internal\n"
2408 "representation (an *ArrayOfArrayOfSpeciesTag*). A tag group selects\n"
2409 "spectral features which belong to the same species.\n"
2411 "A tag is defined in terms of the name of the species, isotopologue, and a\n"
2412 "range of frequencies. Species are named after the standard chemical\n"
2413 "names, e.g., \"O3\". Isotopologues are given by the last digit of the atomic\n"
2414 "weight, i.g., \"O3-668\" for the asymmetric ozone molecule including an\n"
2415 "oxygen 18 atom. Groups of transitions are specified by giving a lower\n"
2416 "and upper limit of a frequency range, e.g., \"O3-666-500e9-501e9\".\n"
2418 "To turn on Zeeman calculation for a species, \"-Z\" may be appended\n"
2419 "to its name: \"O2-Z\" or \"O2-Z-66\"\n"
2421 "To turn on line mixing calculation for a species, \"-LM\" may be appended\n"
2422 "to its name (or after the Zeeman tag): \"O2-LM\" or \"O2-Z-LM-66\"\n"
2424 "The symbol \"*\" acts as a wild card. Furthermore, frequency range or\n"
2425 "frequency range and isotopologue may be omitted.\n"
2427 "Finally, instead of the isotopologue the special letter \"nl\" may be given,\n"
2428 "e.g., \"H2O-nl\". This means that no absorption at all is associated\n"
2429 "with this tag. (It is not quite clear if this feature is useful for\n"
2430 "anything right now.)\n"
2434 " species = [ \"O3-666-500e9-501e9, O3-686\",\n"
2436 " \"H2O-PWR98\" ]\n"
2438 " The first tag group selects all O3-666 lines between 500 and\n"
2439 " 501 GHz plus all O3-686 lines. \n"
2441 " The second tag group selects all remaining O3 transitions.\n"
2443 " The third tag group selects H2O, with one of the complete\n"
2444 " absorption models (Rosenkranz 98). No spectrocopic line catalogue\n"
2445 " data will be used for that third tag group.\n"
2447 " Note that order of tag groups in the species list matters. In our\n"
2448 " example, changing the order of the first two tag group will give\n"
2449 " different results: as \"O3\" already selects all O3 transitions,\n"
2450 " no lines will remain to be selected by the\n"
2451 " \"O3-666-500e9-501e9, O3-686\" tag.\n"
2453 "For CIA species the tag consists of the two involved species and\n"
2454 "a dataset index. CIA species can be defined for multiple regions\n"
2455 "The dataset index determines which region to use from the corresponding\n"
2456 "CIARecord in *abs_cia_data*.\n"
2460 "species = [ \"N2-CIA-N2-0, N2-CIA-N2-1\" ]\n"
2462 "For Hitran cross section species the tag consists of the species and\n"
2463 "the tagtype HXSEC, e.g. CFC11-HXSEC. The data for the species must be\n"
2464 "available in the *hitran_xsec_data* variable."
2466 "*abs_xsec_agenda_checked* and *propmat_clearsky_agenda_checked*\n"
2467 "are set to be false.\n"),
2470 "abs_xsec_agenda_checked",
2471 "propmat_clearsky_agenda_checked"),
2479 GIN_DESC(
"Specify one String for each tag group that you want to\n"
2480 "create. Inside the String, separate the tags by commas\n"
2481 "(plus optional blanks).\n")));
2484 NAME(
"abs_vecAddGas"),
2486 "Add gas absorption to first element of absorption vector.\n"
2488 "The task of this method is to sum up the gas absorption of the\n"
2489 "different gas species and add the result to the first element of the\n"
2490 "absorption vector.\n"),
2496 IN(
"abs_vec",
"propmat_clearsky"),
2503 NAME(
"abs_xsec_agenda_checkedCalc"),
2505 "Checks if the *abs_xsec_agenda* contains all necessary\n"
2506 "methods to calculate all the species in *abs_species*.\n"
2508 "This method should be called just before the *abs_xsec_agenda*\n"
2509 "is used, e.g. *abs_lookupCalc*, *ybatchCalc*, *yCalc*\n"),
2511 OUT(
"abs_xsec_agenda_checked"),
2515 IN(
"abs_species",
"abs_xsec_agenda"),
2522 NAME(
"abs_xsec_per_speciesAddCIA"),
2524 "Calculate absorption cross sections per tag group for HITRAN CIA continua.\n"
2526 "This interpolates the cross sections from *abs_cia_data*.\n"
2528 "The robust option is intended only for testing. Do not use for normal\n"
2529 "runs, since subsequent functions will not be able to deal with NAN values.\n"),
2531 OUT(
"abs_xsec_per_species",
"dabs_xsec_per_species_dx"),
2535 IN(
"abs_xsec_per_species",
2536 "dabs_xsec_per_species_dx",
2538 "jacobian_quantities",
2539 "abs_species_active",
2545 GIN(
"T_extrapolfac",
"robust"),
2549 "Temperature extrapolation factor (relative to grid spacing).",
2550 "Set to 1 to suppress runtime errors (and return NAN values instead).")));
2553 NAME(
"abs_xsec_per_speciesAddHitranXsec"),
2555 "Calculate absorption cross sections per tag group for HITRAN xsec species.\n"
2557 "This broadens the cross section data from *hitran_xsec_data* and\n"
2558 "interpolates it onto the current f_grid.\n"
2560 "apply_tfit turns of the temperature fit. It is only meant for testing\n"
2561 "and should alwasy be kept on for real calculations.\n"
2563 "This method depends on the FFTW-3 library.\n"),
2565 OUT(
"abs_xsec_per_species",
"dabs_xsec_per_species_dx"),
2569 IN(
"abs_xsec_per_species",
2570 "dabs_xsec_per_species_dx",
2572 "jacobian_quantities",
2573 "abs_species_active",
2577 "hitran_xsec_data"),
2578 GIN(
"apply_tfit",
"force_p",
"force_t"),
2579 GIN_TYPE(
"Index",
"Numeric",
"Numeric"),
2582 "Positive value forces constant pressure [Pa].",
2583 "Positive value forces constant temperature [K].")));
2586 NAME(
"abs_xsec_per_speciesAddConts"),
2588 "Calculate absorption cross sections per tag group for continua.\n"),
2590 OUT(
"abs_xsec_per_species",
"dabs_xsec_per_species_dx"),
2594 IN(
"abs_xsec_per_species",
2595 "dabs_xsec_per_species_dx",
2597 "jacobian_quantities",
2598 "abs_species_active",
2604 "abs_cont_parameters",
2612 NAME(
"abs_xsec_per_speciesAddLines"),
2614 "Calculates the line spectrum for both attenuation and phase\n"
2615 "for each tag group and adds it to abs_xsec_per_species.\n"),
2617 OUT(
"abs_xsec_per_species",
2618 "src_xsec_per_species",
2619 "dabs_xsec_per_species_dx",
2620 "dsrc_xsec_per_species_dx"),
2624 IN(
"abs_xsec_per_species",
2625 "src_xsec_per_species",
2626 "dabs_xsec_per_species_dx",
2627 "dsrc_xsec_per_species_dx",
2629 "jacobian_quantities",
2630 "abs_species_active",
2636 "abs_lines_per_species",
2637 "isotopologue_ratios",
2638 "partition_functions",
2646 NAME(
"abs_xsec_per_speciesAddPredefinedO2MPM2020"),
2647 DESCRIPTION(
"Reimplementation of published O2 absorption line cross-section algorithm\n"
2650 "\tDmitriy S. Makarov, Mikhail Yu. Tretyakov, Philip W. Rosenkranz, JQSRT 243, 2020,\n"
2651 "\tRevision of the 60-GHz atmospheric oxygen absorption band models for practical use,\n"
2652 "\thttps://doi.org/10.1016/j.jqsrt.2019.106798\n"
2654 "Note that this is only really applicable to Earth and at lower altitudes.\n"
2655 "The only two tested derivatives are for frequency and for temperature but\n"
2656 "other untested derivatives are available for all model parameters except a2\n"
2659 OUT(
"abs_xsec_per_species",
2660 "dabs_xsec_per_species_dx"),
2664 IN(
"abs_xsec_per_species",
2665 "dabs_xsec_per_species_dx",
2667 "jacobian_quantities",
2678 NAME(
"abs_xsec_per_speciesInit"),
2680 "Initialize *abs_xsec_per_species*.\n"
2682 "The initialization is\n"
2683 "necessary, because methods *abs_xsec_per_speciesAddLines*\n"
2684 "and *abs_xsec_per_speciesAddConts* just add to *abs_xsec_per_species*.\n"
2685 "The size is determined from *abs_species*.\n"),
2687 OUT(
"abs_xsec_per_species",
2688 "src_xsec_per_species",
2689 "dabs_xsec_per_species_dx",
2690 "dsrc_xsec_per_species_dx"),
2695 "jacobian_quantities",
2696 "abs_species_active",
2699 "abs_xsec_agenda_checked",
2709 "Adds zenith and azimuth angles.\n"
2711 "Adds up line-of-sights (LOS). In short, *dlos* is added to *ref_los*,\n"
2712 "assuming that a unit changes in zenith and azimuth are equal where\n"
2720 GIN(
"ref_los",
"dlos"),
2723 GIN_DESC(
"Reference line-of-sight (a single LOS).",
2724 "Change in line-of-sight (can be multiple LOS).")));
2727 NAME(
"AgendaAppend"),
2729 "Append methods to an agenda.\n"
2731 "An agenda is used to store a list of methods that are meant to be\n"
2732 "executed sequentially.\n"
2734 "This method takes the methods given in the body (in the curly braces)\n"
2735 "and appends them to the agenda given by the output argument (in the round\n"
2738 "It also uses the agenda lookup data (defined in file agendas.cc) to\n"
2739 "check, whether the given methods use the right input WSVs and produce\n"
2740 "the right output WSVs.\n"),
2768 GIN_DESC(
"Agenda to be executed."),
2773 NAME(
"AgendaExecuteExclusive"),
2775 "Execute an agenda exclusively.\n"
2777 "Only one call to *AgendaExecuteExclusive* is executed at a time.\n"
2778 "Other calls to this function are blocked until the current one\n"
2779 "finishes. WARNING: Can cause deadlocks! Use with care.\n"),
2789 GIN_DESC(
"Agenda to be executed."),
2796 "Set up an agenda.\n"
2798 "An agenda is used to store a list of methods that are meant to be\n"
2799 "executed sequentially.\n"
2801 "This method takes the methods given in the body (in the curly braces)\n"
2802 "and puts them in the agenda given by the output argument (in the round\n"
2805 "It also uses the agenda lookup data (defined in file agendas.cc) to\n"
2806 "check, whether the given methods use the right input WSVs and\n"
2807 "produce the right output WSVs.\n"),
2825 NAME(
"AngularGridsSetFluxCalc"),
2827 "Sets the angular grids for the calculation of radiation fluxes\n"
2828 "(irradiance) per hemispheres and heating rates\n"
2830 "This method sets the angular grids for the radiation fluxes type\n"
2831 "calculations and calculates the integration weights *za_grid_weights*\n"
2832 "for the zenith angle integration. For down- und up-looking\n"
2833 "geometries it suffices to define *N_za_grid* and\n"
2834 "*N_aa_grid*. From *N_aa_grid* an equally spaced grid is\n"
2835 "created and stored in the WSV*aa_grid*.\n"
2836 "Depending on the desired *za_grid_type* *za_grid* will be\n"
2837 "equally spaced ('linear') or unequally ('linear_mu','double_gauss')\n"
2838 "Important, *N_za_grid* must be an even number because for the \n"
2839 "integration over each hemisphere *N_za_grid* / 2 zenith angles are needed.\n"
2841 "Possible zenith angle grid types are:\n"
2842 "double_gauss: The zenith grid and the integration weights are set according\n"
2843 " to a gauss-legendre integration for each hemispheres.\n"
2844 "linear: Equally space grid between 0 deg and 180 deg including the poles\n"
2845 "linear_mu: Similar to 'linear' but equally spaced for cos(180 deg) to cos(0 deg),\n"
2846 " which results a unequally spaced angular grid\n"
2850 OUT(
"za_grid",
"aa_grid",
"za_grid_weights"),
2855 GIN(
"N_za_grid",
"N_aa_grid",
"za_grid_type"),
2856 GIN_TYPE(
"Index",
"Index",
"String"),
2858 GIN_DESC(
"Number of zenith angles",
2859 "Number of azimuth angles",
2860 "Zenith angle grid type")));
2863 NAME(
"ArrayOfAgendaAppend"),
2864 DESCRIPTION(
"Set up an agenda and append it to the array of agendas.\n"
2866 "See *AgendaSet* for details.\n"),
2885 DESCRIPTION(
"Execute an agenda from an ArrayOfAgenda.\n"),
2891 IN(
"agenda_array_index"),
2900 NAME(
"AntennaConstantGaussian1D"),
2902 "Sets up a 1D gaussian antenna response and a matching\n"
2903 "*mblock_dlos_grid*.\n"
2905 "As *antenna_responseGaussian*, but also creates *mblock_dlos_grid*.\n"
2906 "For returned antenna response, see *antenna_responseGaussian*.\n"
2908 "The size of *mblock_dlos_grid* is determined by *n_za_grid*.\n"
2909 "The end points of the grid are set to be the same as for the\n"
2910 "antenna response. The spacing of the grid follows the magnitude of\n"
2911 "the response; the spacing is smaller where the response is high.\n"
2912 "More precisely, the grid points are determined by dividing\n"
2913 "the cumulative sum of the response in equal steps. This makes sense\n"
2914 "if the representation error of the radiance (as a function of\n"
2915 "zenith angle) increases linearly with the grid spacing.\n"
2917 "The WSV *antenna_dlos* is set to [0].\n"
2919 "The antenna repsonse is not normalised.\n"),
2929 GIN(
"n_za_grid",
"fwhm",
"xwidth_si",
"dx_si"),
2930 GIN_TYPE(
"Index",
"Numeric",
"Numeric",
"Numeric"),
2932 GIN_DESC(
"Number of points to include in *mblock_dlos_grid*.",
2933 "Full width at half-maximum of antenna beam [deg].",
2934 "Half-width of response, in terms of std. dev.",
2935 "Grid spacing, in terms of std. dev.")));
2938 NAME(
"AntennaMultiBeamsToPencilBeams"),
2940 "Maps a multi-beam case to a matching pencil beam case.\n"
2942 "Cases with overlapping beams are most efficiently handled by\n"
2943 "letting *antenna_dlos* have several rows. That is, there are\n"
2944 "multiple beams for each measurement block. The drawback is that\n"
2945 "many variables must be adjusted if the corresponding pencil beam\n"
2946 "spectra shall be calculated. This method makes this adjustment.\n"
2947 "That is, if you have a control file for a multiple beam case and\n"
2948 "for some reason want to avoid the antenna weighting, you add this\n"
2949 "method before *sensor_responseInit*, and remove the call of\n"
2950 "*sensor_responseAntenna* and you will get the matching pencil beam\n"
2957 "mblock_dlos_grid"),
2975 "Sets some antenna related variables\n"
2977 "Use this method to set *antenna_dim* and *mblock_dlos_grid* to\n"
2978 "suitable values (1 and [0], respectively) for cases when a\n"
2979 "sensor is included, but the antenna pattern is neglected.\n"),
2981 OUT(
"antenna_dim",
"mblock_dlos_grid"),
2992 NAME(
"antenna_responseGaussian"),
2994 "Sets up a gaussian antenna response.\n"
2996 "The method assumes that the response is the same for all\n"
2997 "frequencies and polarisations, and that it can be modelled as\n"
3000 "The grid generated is approximately\n"
3001 " si * [-xwidth_si:dx_si:xwidth_si]\n"
3002 "where si is the standard deviation corresponding to the FWHM.\n"
3003 "That is, width and spacing of the grid is specified in terms of\n"
3004 "number of standard deviations. If xwidth_si is set to 2, the\n"
3005 "response will cover about 95% the complete response. For\n"
3006 "xwidth_si=3, about 99% is covered. If xwidth_si/dx_si is not\n"
3007 "an integer, the end points of the grid are kept and the spacing\n"
3008 "of the grid is reduced (ie. spacing is equal or smaller *dx_si*).\n"
3010 "If the 2D option is selected (*do_2d*), a circular antenna is\n"
3011 "assumed and the response is any direction follows the 1D case.\n"
3013 "The antenna repsonse is not normalised.\n"),
3015 OUT(
"antenna_response"),
3020 GIN(
"fwhm",
"xwidth_si",
"dx_si",
"do_2d"),
3021 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric",
"Index"),
3023 GIN_DESC(
"Full width at half-maximum",
3024 "Half-width of response, in terms of std. dev.",
3025 "Grid spacing, in terms of std. dev.",
3026 "Set to 1 to create a 2D antenna pattern.")));
3029 NAME(
"antenna_responseVaryingGaussian"),
3031 "Sets up gaussian antenna responses.\n"
3033 "Similar to *antenna_responseGaussian* but allows to set up\n"
3034 "responses that varies with frequency. That is, the method assumes\n"
3035 "that the response is the same for all polarisations, and that it\n"
3036 "can be modelled as a gaussian function varying with frequency.\n"
3038 "The full width at half maximum (FWHM in radians) is calculated as:\n"
3039 " fwhm = lambda / leff\n"
3040 "where lambda is the wavelength and *leff* is the effective size of\n"
3041 "the antenna. Normally, *leff* is smaller than the physical antenna\n"
3044 "Antenna responses are created for *nf* frequencies spanning the\n"
3045 "range [*fstart*,*fstop*], with a logarithmic spacing. That is, the\n"
3046 "frequency grid of the responses is taken from *VectorNLogSpace*.\n"
3048 "The responses have a common angular grid. The width, determined by\n"
3049 "*xwidth_si*, is set for the lowest frequency, while the spacing\n"
3050 "(*dx_si*) is set for the highest frequency. This ensures that both\n"
3051 "the width and spacing are equal or better than *xwidth_si* and\n"
3052 "*dx_si*, respectively, for all frequencies.\n"
3054 "If the 2D option is selected (*do_2d*), a circular antenna is\n"
3055 "assumed and the response is any direction follows the 1D case.\n"
3057 "The antenna repsonse is not normalised.\n"),
3059 OUT(
"antenna_response"),
3064 GIN(
"leff",
"xwidth_si",
"dx_si",
"nf",
"fstart",
"fstop",
"do_2d"),
3073 GIN_DESC(
"Effective size of the antenna",
3074 "Half-width of response, in terms of std. dev.",
3075 "Grid spacing, in terms of std. dev.",
3076 "Number of points in frequency grid (must be >= 2)",
3077 "Start point of frequency grid",
3078 "End point of frequency grid",
3079 "Set to 1 to create a 2D antenna pattern.")));
3084 "Append one workspace variable to another.\n"
3086 "This method can append an array to another array of the same type,\n"
3087 "e.g. ArrayOfIndex to ArrayOfIndex. Or a single element to an array\n"
3088 "such as a Tensor3 to an ArrayOfTensor3.\n"
3090 "Appending two vectors or a numeric to a vector works as for array\n"
3093 "Both another matrix or a vector can be appended to a matrix. In\n"
3094 "addition, for matrices, the 'append dimension' can be selected.\n"
3095 "The third argument, *dimension*, indicates how to append, where\n"
3096 "\"leading\" means to append row-wise, and \"trailing\" means\n"
3099 "Other types (TensorX) are currently only implemented for\n"
3100 "appending to the leading dimension.\n"
3102 "This method is not implemented for all types, just for those that\n"
3103 "were thought or found to be useful. (See variable list below.).\n"),
3104 AUTHORS(
"Stefan Buehler, Oliver Lemke"),
3112 ARRAY_GROUPS +
", " + ARRAY_GROUPS_WITH_BASETYPE),
3113 GOUT_DESC(
"The variable to append to."),
3115 GIN(
"in",
"dimension"),
3121 ARRAY_GROUPS +
"," + GROUPS_WITH_ARRAY_TYPE,
3125 "The variable to append.",
3126 "Where to append. Could be either the \"leading\" or \"trailing\" dimension."),
3134 NAME(
"ArrayOfGriddedFieldGetNames"),
3135 DESCRIPTION(
"Get the names of all GriddedFields stored in an Array.\n"
3137 "See *GriddedFieldGetName*.\n"),
3142 GOUT_DESC(
"Names of the GriddedFields in the ArrayOfGriddedField."),
3144 GIN(
"griddedfields"),
3145 GIN_TYPE(
"ArrayOfGriddedField1, ArrayOfGriddedField2,"
3146 "ArrayOfGriddedField3, ArrayOfGriddedField4"),
3148 GIN_DESC(
"Array of GriddedFields."),
3154 NAME(
"ArrayOfIndexLinSpace"),
3156 "Initializes an ArrayOfIndex with linear spacing.\n"
3158 "The first element equals always the start value, and the spacing\n"
3159 "equals always the step value, but the last value can deviate from\n"
3160 "the stop value. *step* can be both positive and negative.\n"
3162 "The created array is [start, start+step, start+2*step, ...]\n "),
3169 GIN(
"start",
"stop",
"step"),
3170 GIN_TYPE(
"Index",
"Index",
"Index"),
3173 "Maximum/minimum value of the end value",
3174 "Spacing of the array.")));
3177 NAME(
"ArrayOfIndexSet"),
3178 DESCRIPTION(
"Creates an ArrayOfIndex from the given list of numbers.\n"),
3188 GIN_DESC(
"Indexes for initializiation."),
3192 NAME(
"ArrayOfIndexSetConstant"),
3193 DESCRIPTION(
"Creates an ArrayOfIndex of length *nelem*, with all values\n"
3208 NAME(
"ArrayOfStringSet"),
3209 DESCRIPTION(
"Sets a String array according the given text.\n"
3210 "The format is text = [\"String1\",\"String2\",...]\n"),
3220 GIN_DESC(
"Strings for initialization."),
3226 "Runs the agenda that is specified inside the curly braces. ARTS\n"
3227 "controlfiles must define this method. It is executed automatically\n"
3228 "when ARTS is run on the controlfile and cannot be called by the user.\n"
3229 "This methods was used for Arts 1 controlfiles and is now obsolete.\n"
3247 "Runs the agenda that is specified inside the curly braces. ARTS\n"
3248 "controlfiles must define this method. It is executed automatically\n"
3249 "when ARTS is run on the controlfile and cannot be called by the user.\n"),
3264 NAME(
"AtmFieldPerturb"),
3266 "Adds a perturbation to an atmospheric field.\n"
3268 "The shape and position of the perturbation follow the retrieval grids.\n"
3269 "That is, the shape of the perturbation has a traingular shape, \n"
3270 "with breake points at the retrieval grid points. The position is\n"
3271 "given as an index. This index matches the column in the Jacobian\n"
3272 "for the selected grid position.\n"
3274 "If the retrieval grids fully match the atmospheric grids, you can\n"
3275 "use *AtmFieldPerturbAtmGrids*, that is faster. The description of\n"
3276 "that method can help to understand this method.\n"),
3279 GOUT(
"perturbed_field"),
3282 IN(
"atmosphere_dim",
"p_grid",
"lat_grid",
"lon_grid"),
3283 GIN(
"original_field",
3298 GIN_DESC(
"Original field, e.g. *t_field*.",
3299 "Pressure retrieval grid.",
3300 "Latitude retrieval grid.",
3301 "Longitude retrieval grid.",
3302 "Index of position where the perturbation shall be performed.",
3303 "Size of perturbation.",
3304 "Type of perturbation, "
3311 NAME(
"AtmFieldPerturbAtmGrids"),
3313 "As *AtmFieldPerturb*, but perturbation follows the atmospheric grids.\n"
3315 "The method effectively performs this\n"
3316 " perturbed_field = original_field\n"
3317 " perturbed_field(p_index,lat_index,lon_index) += pert_size\n"
3318 "if not *pert_mode* is set to "
3320 " when this is done\n"
3321 " perturbed_field = original_field\n"
3322 " perturbed_field(p_index,lat_index,lon_index) *= 1*pert_size\n"
3323 "where p_index etc. are derived from *pert_index*.\n"),
3326 GOUT(
"perturbed_field"),
3329 IN(
"atmosphere_dim",
"p_grid",
"lat_grid",
"lon_grid"),
3330 GIN(
"original_field",
"pert_index",
"pert_size",
"pert_mode"),
3331 GIN_TYPE(
"Tensor3",
"Index",
"Numeric",
"String"),
3333 GIN_DESC(
"Original field, e.g. *t_field*.",
3334 "Index of position where the perturbation shall be performed.",
3335 "Size of perturbation.",
3336 "Type of perturbation, "
3343 NAME(
"AtmFieldPRegrid"),
3345 "Interpolates the input field along the pressure dimension from\n"
3346 "*p_grid_old* to to *p_grid_new*.\n"
3348 "Extrapolation is allowed within the common 0.5grid-step margin.\n"
3349 "in and out fields can be the same variable.\n"),
3354 GOUT_DESC(
"Regridded atmospheric field."),
3356 GIN(
"in",
"p_grid_new",
"p_grid_old",
"interp_order"),
3357 GIN_TYPE(
"Tensor3, Tensor4",
"Vector",
"Vector",
"Index"),
3359 GIN_DESC(
"Input atmospheric field.",
3360 "Pressure grid to regrid to",
3361 "Pressure grid of input field",
3362 "Interpolation order.")));
3365 NAME(
"AtmFieldsCalc"),
3367 "Interpolation of raw atmospheric T, z, VMR, and NLTE T/r fields to\n"
3368 "calculation grids.\n"
3370 "An atmospheric scenario includes the following data for each\n"
3371 "position (pressure, latitude, longitude) in the atmosphere:\n"
3372 " 1. temperature field\n"
3373 " 2. the corresponding altitude field\n"
3374 " 3. vmr fields for the gaseous species\n"
3375 "This method interpolates the fields of raw data (*t_field_raw*,\n"
3376 "*z_field_raw*, *vmr_field_raw*) which can be stored on arbitrary\n"
3377 "grids to the calculation grids (*p_grid*, *lat_grid*, *lon_grid*).\n"
3378 "If *nlte_field_raw* is empty, it is assumed to be so because LTE is\n"
3379 "assumed by the user and *nlte_field* will be empty.\n"
3381 "Internally, *AtmFieldsCalc* applies *GriddedFieldPRegrid* and\n"
3382 "*GriddedFieldLatLonRegrid*. Generally, 'half-grid-step' extrapolation\n"
3383 "is allowed and applied. However, if *vmr_zeropadding*=1 then VMRs at\n"
3384 "*p_grid* levels exceeding the raw VMRs' pressure grid are set to 0\n"
3385 "(applying the *vmr_zeropadding* option of *GriddedFieldPRegrid*).\n"
3387 "Default is to just accept obtained VMRs. If you want to enforce\n"
3388 "that all VMR created are >= 0, set *vmr_nonegative* to 1. Negative\n"
3389 "values are then set 0. Beside being present in input data, negative\n"
3390 "VMR can be generated from the interpolation if *interp_order* is\n"
3392 AUTHORS(
"Claudia Emde",
"Stefan Buehler"),
3393 OUT(
"t_field",
"z_field",
"vmr_field",
"nlte_field"),
3404 "nlte_level_identifiers",
3405 "nlte_vibrational_energies",
3410 "nlte_when_negative"),
3411 GIN_TYPE(
"Index",
"Index",
"Index",
"Index"),
3413 GIN_DESC(
"Interpolation order (1=linear interpolation).",
3414 "Pad VMRs with zeroes to fit the pressure grid if necessary.",
3415 "If set to 1, negative VMRs are set to 0.",
3416 "-1: Skip step. 0: Negative is 0. Else: Negative is t.")));
3419 NAME(
"AtmFieldsCalcExpand1D"),
3421 "Interpolation of 1D raw atmospheric fields to create 2D or 3D\n"
3422 "homogeneous atmospheric fields.\n"
3424 "The method works as *AtmFieldsCalc*, but accepts only raw 1D\n"
3425 "atmospheres. The raw atmosphere is interpolated to *p_grid* and\n"
3426 "the obtained values are applied for all latitudes, and also\n"
3427 "longitudes for 3D, to create a homogeneous atmosphere.\n"
3429 "The method deals only with the atmospheric fields, and to create\n"
3430 "a true 2D or 3D version of a 1D case, a demand is also that the\n"
3431 "ellipsoid is set to be a sphere.\n"),
3432 AUTHORS(
"Patrick Eriksson",
"Claudia Emde",
"Stefan Buehler"),
3433 OUT(
"t_field",
"z_field",
"vmr_field",
"nlte_field"),
3444 "nlte_level_identifiers",
3445 "nlte_vibrational_energies",
3450 "nlte_when_negative"),
3451 GIN_TYPE(
"Index",
"Index",
"Index",
"Index"),
3453 GIN_DESC(
"Interpolation order (1=linear interpolation).",
3454 "Pad VMRs with zeroes to fit the pressure grid if necessary.",
3455 "If set to 1, negative VMRs are set to 0.",
3456 "-1: Skip step. 0: Negative is 0. Else: Negative is t.")));
3459 NAME(
"AtmFieldsExpand1D"),
3461 "Maps a 1D case to 2D or 3D homogeneous atmospheric fields.\n"
3463 "This method takes a 1D atmospheric case and converts it to the\n"
3464 "corresponding case for 2D or 3D. The atmospheric fields (t_field,\n"
3465 "z_field and vmr_field) must be 1D and match *p_grid*. The size of\n"
3466 "the new data is determined by *atmosphere_dim*, *lat_grid* and\n"
3467 "*lon_grid*. That is, these later variables have been changed since\n"
3468 "the original fields were created.\n"
3470 "The method deals only with the atmospheric fields, and to create\n"
3471 "a true 2D or 3D version of a 1D case, a demand is also that the\n"
3472 "ellipsoid is set to be a sphere.\n"),
3474 OUT(
"t_field",
"z_field",
"vmr_field"),
3489 "Flag to determine if a search for NaN shall be performed or not.")));
3492 NAME(
"AtmFieldsExtract1D"),
3494 "Converts 2D or 3D homogeneous atmospheric fields to a 1D case.\n"
3496 "The method extracts data for given latitude and longitude index\n"
3497 "to create a 1D atmosphere. *AtmosphereSet1D* is called to set\n"
3498 "output values of *atmosphere_dim*, *lat_grid* and *lon_grid*.\n"
3499 "Nothing is done if *atmosphere_dim* alöready is 1.\n"),
3501 OUT(
"atmosphere_dim",
3510 IN(
"atmosphere_dim",
3516 GIN(
"ilat",
"ilon"),
3519 GIN_DESC(
"Pick data having this latitude index (0-based).",
3520 "Pick data having this longitude index (0-based).")));
3523 NAME(
"AtmFieldsRefinePgrid"),
3525 "Refines the pressure grid and regrids the clearsky atmospheric\n"
3526 "fields accordingly.\n"
3528 "This method is, e.g., used for absorption lookup table testing. It\n"
3529 "can also be used to refine the *p_grid* and atmospheric fields from\n"
3530 "compact state atmospheres.\n"
3532 "It adds additional vertical grid points to the atmospheric fields, by\n"
3533 "interpolating them in the usual ARTS way (linear in log pressure).\n"
3535 "How fine the new grid will be is determined by the keyword parameter\n"
3536 "p_step. The definition of p_step, and the default interpolation\n"
3537 "behavior, is consistent with *abs_lookupSetup* and\n"
3538 "*abs_lookupSetupBatch* (new points are added between the original\n"
3539 "ones, so that the spacing is always below p_step.)\n"
3541 "Internally, *AtmFieldsRefinePgrid* applies *p_gridRefine* and\n"
3542 "*AtmFieldPRegrid* to the clearsky atmospheric fields (T, z, vmr).\n"
3544 "Atmospheric field related check WSV are reset to 0 (unchecked),\n"
3545 "i.e., the corresponding checkedCalc methods have to be performed\n"
3546 "(again) before *yCalc* or similar methods can be executed.\n"),
3552 "atmfields_checked",
3554 "cloudbox_checked"),
3565 GIN(
"p_step",
"interp_order"),
3568 GIN_DESC(
"Maximum step in log(p[Pa]) (natural logarithm, as always). If\n"
3569 "the pressure grid is coarser than this, additional points\n"
3570 "are added until each log step is smaller than this.\n",
3571 "Interpolation order.")));
3574 NAME(
"AtmFieldsAndParticleBulkPropFieldFromCompact"),
3576 "Extract pressure grid and atmospheric fields from\n"
3577 "*atm_fields_compact*.\n"
3579 "An atmospheric scenario includes the following data for each\n"
3580 "position (pressure, latitude, longitude) in the atmosphere:\n"
3581 " 1. temperature field\n"
3582 " 2. the corresponding altitude field\n"
3583 " 3. vmr fields for the gaseous species\n"
3584 " 4. scattering species fields\n"
3586 "This method splits up the data found in *atm_fields_compact* to\n"
3587 "p_grid, lat_grid, lon_grid, vmr_field, particle_bulkprop_field,\n"
3588 "and particle_bulkprop_names.\n"
3589 "See documentation of *atm_fields_compact* for a definition of the\n"
3592 "Compact states are characterized by having all atmospheric fields\n"
3593 "already given on identical grids. That is, no interpolation needs\n"
3594 "to be and is performed. Keyword *p_min* allows to remove atmospheric\n"
3595 "levels with pressures lower than the given value (default: no\n"
3596 "removal). This reduces computational burden and is useful when\n"
3597 "upper atmospheric contributions are negligible.\n"
3599 "Possible future extensions: Add a keyword parameter to refine the\n"
3600 "pressure grid if it is too coarse. Or a version that interpolates\n"
3601 "onto given grids, instead of using and returning the original grids.\n"),
3602 AUTHORS(
"Jana Mendrok, Manfred Brath"),
3609 "particle_bulkprop_field",
3610 "particle_bulkprop_names"),
3614 IN(
"abs_species",
"atm_fields_compact",
"atmosphere_dim"),
3615 GIN(
"delim",
"p_min",
"check_gridnames"),
3616 GIN_TYPE(
"String",
"Numeric",
"Index"),
3619 "Delimiter string of *scat_species* elements.",
3621 "Minimum-pressure level to consider (for TOA).",
3623 "A flag with value 1 or 0. If set to one, the gridnames of \n"
3624 " the *atm_fields_compact* are checked.")));
3627 NAME(
"atmfields_checkedCalc"),
3629 "Checks consistency of (clear sky) atmospheric fields.\n"
3631 "The following WSVs are treated: *p_grid*, *lat_grid*, *lon_grid*,\n"
3632 "*t_field*, *vmr_field*, wind_u/v/w_field and mag_u/v/w_field.\n"
3634 "If any of the variables above is changed, then this method shall be\n"
3635 "called again (no automatic check that this is fulfilled!).\n"
3637 "The tests include that:\n"
3638 " 1. Atmospheric grids (p/lat/lon_grid) are OK with respect to\n"
3639 " *atmosphere_dim* (and vmr_field also regarding *abs_species*).\n"
3640 " 2. Atmospheric fields have sizes consistent with the atmospheric\n"
3642 " 3. *abs_f_interp_order* is not zero if any wind is nonzero.\n"
3643 " 4. All values in *t_field* are > 0.\n"
3645 "Default is that values in *vmr_field* are demanded to be >= 0\n"
3646 "(ie. zero allowed, in contrast to *t_field*), but this\n"
3647 "requirement can be removed by the *negative_vmr_ok* argument.\n"
3649 "If any test fails, there is an error. Otherwise,\n"
3650 "*atmfields_checked* is set to 1.\n"
3652 "The cloudbox is covered by *cloudbox_checked*, *z_field* is\n"
3653 "part of the checks done around *atmgeom_checked*.\n"
3655 "If you choose to use *bad_partition_functions_ok* please note that\n"
3656 "this is done on your own risk and that it could introduce hard-to-\n"
3657 "track errors into your calculations. Do not use this for anything\n"
3660 OUT(
"atmfields_checked"),
3664 IN(
"atmosphere_dim",
3677 "partition_functions",
3678 "abs_f_interp_order"),
3679 GIN(
"negative_vmr_ok",
"bad_partition_functions_ok"),
3682 GIN_DESC(
"Flag whether to accept vmr_field < 0.",
3683 "Flag whether to accept partition functions not covering"
3684 " *t_field* range.")));
3687 NAME(
"atmgeom_checkedCalc"),
3689 "Checks consistency of geometric considerations of the atmosphere.\n"
3691 "The following WSVs are checked: *z_field*, *refellipsoid*, *z_surface*,\n"
3692 "*lat_true* and *lon_true*. If any of the variables above is changed,\n"
3693 "then this method shall be called again (no automatic check that this is\n"
3696 "The tests include that:\n"
3697 " 1. *refellipsoid* has correct size, and that eccentricity is\n"
3698 " set to zero if 1D atmosphere.\n"
3699 " 2. *z_field* and *z_surface* have sizes consistent with the\n"
3700 " atmospheric grids.\n"
3701 " 3. There is no gap between *z_surface* and *z_field*.\n"
3703 "*lat_true* and *lon_true* are allowed to be empty.\n"
3705 "If any test fails, there is an error. Otherwise, *atmgeom_checked*\n"
3708 "See further *atmgeom_checkedCalc*.\n"),
3710 OUT(
"atmgeom_checked"),
3714 IN(
"atmosphere_dim",
3729 NAME(
"AtmosphereSet1D"),
3731 "Sets the atmospheric dimension to 1D.\n"
3733 "Sets *atmosphere_dim* to 1, and the latitude and longitude grids\n"
3734 "are set to be empty.\n"),
3736 OUT(
"atmosphere_dim",
"lat_grid",
"lon_grid"),
3747 NAME(
"AtmosphereSet2D"),
3749 "Sets the atmospheric dimension to be 2D.\n"
3751 "Sets *atmosphere_dim* to 2 and the longitude grid to be empty.\n"),
3753 OUT(
"atmosphere_dim",
"lon_grid"),
3764 NAME(
"AtmosphereSet3D"),
3766 "Sets the atmospheric dimension to 3D.\n"
3768 "Sets *atmosphere_dim* to 3, and *lat_true* and *lon_true* are\n"
3769 "set to be empty.\n"),
3771 OUT(
"atmosphere_dim",
"lat_true",
"lon_true"),
3784 "Reads atmospheric data from a scenario.\n"
3786 "An atmospheric scenario includes the following data for each\n"
3787 "position (pressure, latitude, longitude) in the atmosphere:\n"
3788 " 1. temperature field\n"
3789 " 2. the corresponding altitude field\n"
3790 " 3. vmr fields for the absorption species\n"
3791 "The vmr fields read are governed by the species given in\n"
3792 "*abs_species*. Beside gaseous species, these can also contain\n"
3793 "purely absorbing particulate matter. In the latter case the\n"
3794 "profiles are supposed to provide the mass content (unit kg/m3) for\n"
3795 "clouds and precipitation rate (unit kg/m2/s) for precipitation\n"
3796 "instead of the vmr.\n"
3798 "The data is stored in different files. This methods reads all\n"
3799 "files and creates the variables *t_field_raw*, *z_field_raw* and\n"
3800 "*vmr_field_raw*. *nlte_field_raw* is set to empty.\n"
3802 "Files in a scenarios should be named matching the pattern of:\n"
3803 "basename.speciesname.xml\n (for temperature and altitude the\n"
3804 "expected 'speciesname' are 't' and'z', respectivly)."
3806 "The files can be anywhere, but they must all be in the same\n"
3807 "directory, selected by 'basename'. The files are chosen by the\n"
3808 "species name. If you have more than one tag group for the same\n"
3809 "species, the same profile will be used.\n"),
3815 "nlte_level_identifiers",
3816 "nlte_vibrational_energies"),
3824 GIN_DESC(
"Name of scenario, probably including the full path. For "
3825 "example: \"/smiles_local/arts-data/atmosphere/fascod/"
3829 NAME(
"AtmWithNLTERawRead"),
3831 "Reads atmospheric data from a scenario.\n"
3833 "An atmospheric scenario includes the following data for each\n"
3834 "position (pressure, latitude, longitude) in the atmosphere:\n"
3835 " 1. temperature field\n"
3836 " 2. the corresponding altitude field\n"
3837 " 3. vmr fields for the gaseous species\n"
3838 " 4. Non-LTE temperature fields and matching identifiers\n"
3839 "The data is stored in different files. This method reads all\n"
3840 "files and creates the variables *t_field_raw*, *z_field_raw*,\n"
3841 "*vmr_field_raw*, *nlte_field_raw*, and *nlte_level_identifiers*.\n"
3843 "Files in a scenarios should be named matching the pattern of:\n"
3844 "tropical.H2O.xml\n"
3846 "The files can be anywhere, but they must be all in the same\n"
3847 "directory, selected by 'basename'. The files are chosen by the\n"
3848 "species name. If you have more than one tag group for the same\n"
3849 "species, the same profile will be used.\n"),
3850 AUTHORS(
"Claudia Emde",
"Richard Larsson"),
3855 "nlte_level_identifiers",
3856 "nlte_vibrational_energies"),
3861 GIN(
"basename",
"expect_vibrational_energies"),
3864 GIN_DESC(
"Name of scenario, probably including the full path. For "
3865 "example: \"/smiles_local/arts-data/atmosphere/fascod/"
3867 "Should ev.xml be read?")));
3870 NAME(
"atm_fields_compactAddConstant"),
3872 "Adds a constant field to atm_fields_compact.\n"
3874 "This is handy, e.g., for nitrogen or oxygen. The constant value can\n"
3875 "be appended or prepended as an additional field to the already\n"
3876 "existing collection of fields. All dimensions (pressure, latitude,\n"
3877 "longitude) are filled up, so this works for 1D, 2D, or 3D\n"
3880 "The passed *name* of the field has to be in accordance with the\n"
3881 "tagging structure described for *atm_fields_compact*.\n"
3883 "A list of condensibles can be optionally specified if the VMR of\n"
3884 "the added species is assuming dry air. The VMR of the added species\n"
3885 "is then scaled down by the sum of the condensibles' VMR:\n"
3886 "VMR * (1 - VMR_sum_of_condensibles).\n"
3887 "For Earth this should be set to [\"abs_species-H2O\"]\n"),
3888 AUTHORS(
"Stefan Buehler, Oliver Lemke"),
3889 OUT(
"atm_fields_compact"),
3893 IN(
"atm_fields_compact"),
3894 GIN(
"name",
"value",
"prepend",
"condensibles"),
3895 GIN_TYPE(
"String",
"Numeric",
"Index",
"ArrayOfString"),
3898 "Name of additional atmospheric field, with constant value.",
3899 "Constant value of additional field.",
3900 "0 = Append to the end, 1 = insert at the beginning.",
3901 "List of condensibles used to scale down the VMR of the added species.")));
3904 NAME(
"atm_fields_compactAddSpecies"),
3906 "Adds a field to atm_fields_compact, with interpolation.\n"
3908 "This method appends or prepends a *GriddedField3* to *atm_fields_compact*.\n"
3909 "The *GriddedField3* is interpolated upon the grid of\n"
3910 "*atm_fields_compact*. A typical use case for this method may be to\n"
3911 "add a climatology of some gas when this gas is needed for radiative\n"
3912 "transfer calculations, but not yet present in *atm_fields_compact*.\n"
3913 "One case where this happens is when using the Chevalier91L dataset\n"
3914 "for infrared simulations.\n"
3916 "The grids in *atm_fields_compact* must fully encompass the grids in\n"
3917 "the *GriddedField3* to be added, for interpolation to succeed. If\n"
3918 "this is not the case, a RuntimeError is thrown.\n"
3920 "The passed *name* of the field has to be in accordance with the\n"
3921 "tagging structure described for *atm_fields_compact*.\n"),
3923 OUT(
"atm_fields_compact"),
3927 IN(
"atm_fields_compact"),
3928 GIN(
"name",
"value",
"prepend"),
3929 GIN_TYPE(
"String",
"GriddedField3",
"Index"),
3931 GIN_DESC(
"Name of additional atmospheric field.",
3932 "Value of additional atmospheric field.",
3933 "0 = Append to the end, 1 = insert at the beginning.")));
3936 NAME(
"atm_fields_compactCleanup"),
3938 "Removes unrealistically small or erroneous data from\n"
3939 "*atm_fields_compact* (or other GriddedField4 data)\n"
3941 "This WSM checks if the data in *atm_fields_compact* contains\n"
3942 "values smaller than the given *threshold*. In this case, these\n"
3943 "values will be set to zero.\n"
3945 "The method should be applied if *atm_fields_compact* contains\n"
3946 "unrealistically small or erroneous data (NWP/GCM model data\n"
3947 "occassionally contains negative values, which are numerical\n"
3948 "artefacts rather than physical values.)\n"),
3950 OUT(
"atm_fields_compact"),
3954 IN(
"atm_fields_compact"),
3959 "Threshold below which *atm_fields_compact* values are set to zero.")));
3962 NAME(
"atm_fields_compactCreateFromField"),
3964 "Initiates *atm_fields_compact* from a field.\n"
3966 "*atm_fields_compact* will have the same size and grids as the GriddedField3,\n"
3967 "but with one dimension as length 1.\n"),
3969 OUT(
"atm_fields_compact"),
3974 GIN(
"name",
"field"),
3975 GIN_TYPE(
"String",
"GriddedField3"),
3977 GIN_DESC(
"Name atmospheric field.",
"The atmospheric field.")));
3980 NAME(
"atm_fields_compactFromMatrix"),
3982 "Sets *atm_fields_compact* from 1D fields given in form of a matrix.\n"
3984 "For batch calculations it is handy to store atmospheric\n"
3985 "profiles in an array of matrix. We take such a matrix, and create\n"
3986 "*atm_fields_compact* from it.\n"
3988 "The matrix must contain one row for each pressure level.\n"
3990 "Not all fields contained in the matrix must be selected into\n"
3991 "*atm_fields_compact*, but the selection must at least contain\n"
3992 "fields of pressure, temperature, altitude and one absorption\n"
3994 "The matrix can contain some additional fields which are not\n"
3995 "directly used by ARTS for calculations but can be required for\n"
3996 "further processing, e.g. wind speed and direction. These fields do\n"
3997 "not need to be transfered into the *atm_fields_compact* variable.\n"
3999 "Selection of fields into *atm_fields_compact* works by providing a\n"
4000 "field name tag in *field_names* for the selected fields, while\n"
4001 "unselected fields are tagged by 'ignore'. Order of tags in\n"
4002 "*field_names* is strictly taken as corresponding to column order in\n"
4004 "The pressure fields are by convention the first column of the\n"
4005 "matrix, hence must not be tagged. That is, there must be given one\n"
4006 "field name tag less than matrix columns.\n"
4008 "For detailed tagging conventions see *atm_fields_compact*.\n"
4010 "Works only for *atmosphere_dim==1.*\n"),
4011 AUTHORS(
"Stefan Buehler",
"Daniel Kreyling",
"Jana Mendrok"),
4012 OUT(
"atm_fields_compact"),
4016 IN(
"atmosphere_dim"),
4017 GIN(
"gin1",
"field_names"),
4018 GIN_TYPE(
"Matrix",
"ArrayOfString"),
4020 GIN_DESC(
"One atmosphere matrix from batch input ArrayOfMatrix.",
4021 "Order/names of atmospheric fields.")));
4024 NAME(
"backend_channel_responseFlat"),
4026 "Sets up a rectangular channel response.\n"
4028 "The response of the backend channels is hee assumed to be constant\n"
4029 "inside the resolution width, and zero outside.\n"
4031 "The method assumes that all channels have the same response.\n"),
4033 OUT(
"backend_channel_response"),
4041 GIN_DESC(
"The spectrometer resolution.")));
4044 NAME(
"backend_channel_responseGaussian"),
4046 "Sets up a gaussian backend channel response.\n"
4048 "The method assumes that all channels can be modelled as gaussian.\n"
4050 "If *fwhm* has only one element, all channels are assumed to be equal.\n"
4051 "If *fwhm* has multiple elements, *xwidth_si* and *dx_si* must have one\n"
4052 "element or the same number of elements as *fwhm*. If one element is given,\n"
4053 "this value will be used for all channels.\n"
4055 "The grid generated can be written as\n"
4056 " si * [-xwidth_si:dx_si:xwidth_si]\n"
4057 "where si is the standard deviation corresponding to the FWHM.\n"
4058 "That is, width and spacing of the grid is specified in terms of\n"
4059 "number of standard deviations. If xwidth_si is set to 2, the\n"
4060 "response will cover about 95% the complete response. For\n"
4061 "xwidth_si=3, about 99% is covered. If xwidth_si/dx_si is not\n"
4062 "an integer, the end points of the grid are kept and the spacing\n"
4063 "if the grid is adjusted in the downward direction (ie. spacing is.\n"
4064 "is max *dx_si*).\n"),
4065 AUTHORS(
"Patrick Eriksson, Oliver Lemke"),
4066 OUT(
"backend_channel_response"),
4071 GIN(
"fwhm",
"xwidth_si",
"dx_si"),
4072 GIN_TYPE(
"Vector",
"Vector",
"Vector"),
4074 GIN_DESC(
"Full width at half-maximum",
4075 "Half-width of response, in terms of std. dev.",
4076 "Grid spacing, in terms of std. dev.")));
4079 NAME(
"batch_atm_fields_compactAddConstant"),
4080 DESCRIPTION(
"Adds a constant field to batch_atm_fields_compact.\n"
4082 "Applies *atm_fields_compactAddConstant* to each batch.\n"
4083 "The format is equal to that WSM.\n"),
4085 OUT(
"batch_atm_fields_compact"),
4089 IN(
"batch_atm_fields_compact"),
4090 GIN(
"name",
"value",
"prepend",
"condensibles"),
4091 GIN_TYPE(
"String",
"Numeric",
"Index",
"ArrayOfString"),
4094 "Name of additional atmospheric field, with constant value.",
4095 "Constant value of additional field.",
4096 "0 = Append to the end, 1 = insert at the beginning.",
4097 "List of condensibles used to scale down the VMR of the added species.")));
4100 NAME(
"batch_atm_fields_compactAddSpecies"),
4102 "Adds a field to *batch_atm_fields_compact*, with interpolation.\n"
4104 "This method appends or prepends a *GriddedField3* to each *atm_fields_compact*.\n"
4105 "in *batch_atm_fields_compact*. For details, see *atm_fields_compactAddSpecies*.\n"),
4107 OUT(
"batch_atm_fields_compact"),
4111 IN(
"batch_atm_fields_compact"),
4112 GIN(
"name",
"value",
"prepend"),
4113 GIN_TYPE(
"String",
"GriddedField3",
"Index"),
4116 "Name of additional atmospheric field. Use, e.g., vmr_ch4 for methane VMR",
4117 "Value of additional atmospheric field.",
4118 "0 = Append to the end, 1 = insert at the beginning.")));
4121 NAME(
"batch_atm_fields_compactCleanup"),
4123 "Removes unrealistically small or erroneous data from each data field\n"
4124 "of *batch_atm_fields_compact* (or other AerrayOfGriddedField4 data)\n"
4126 "This WSM checks if the data in *batch_atm_fields_compact* contains\n"
4127 "values smaller than the given *threshold*. In this case, these\n"
4128 "values will be set to zero.\n"
4130 "The method should be applied if *batch_atm_fields_compact* contains\n"
4131 "unrealistically small or erroneous data (NWP/GCM model data\n"
4132 "occassionally contains negative values, which are numerical\n"
4133 "artefacts rather than physical values.)\n"),
4135 OUT(
"batch_atm_fields_compact"),
4139 IN(
"batch_atm_fields_compact"),
4144 "Threshold below which *atm_fields_compact* values are set to zero.")));
4147 NAME(
"batch_atm_fields_compactFromArrayOfMatrix"),
4149 "Expand batch of 1D atmospheric state matrices to batch_atm_fields_compact.\n"
4151 "This is used to handle 1D batch cases, e.g. from NWP/GCM model like\n"
4152 "the Chevallier91L data set, stored in a matrix (it is preferred,\n"
4153 "though, to immediatedly store the model fields as\n"
4154 "*ArrayOfGriddedField4* and use *ReadXML* to load them directly into\n"
4155 "*batch_atm_fields_compact*).\n"
4157 "Works only for *atmosphere_dim==1.*\n"
4159 "See *atm_fields_compactFromMatrix* for basic documentation.\n"
4161 "See *batch_atm_fields_compactAddConstant* and\n"
4162 "batch_atm_fields_compactAddSpecies* for adding additional fields.\n"),
4163 AUTHORS(
"Stefan Buehler",
"Daniel Kreyling",
"Jana Mendrok"),
4164 OUT(
"batch_atm_fields_compact"),
4168 IN(
"atmosphere_dim"),
4169 GIN(
"atmospheres_fields",
"field_names"),
4170 GIN_TYPE(
"ArrayOfMatrix",
"ArrayOfString"),
4172 GIN_DESC(
"Batch of atmospheres stored in one array of matrix",
4173 "Order/names of atmospheric fields.")));
4178 "Display information about the given CIA tags.\n"
4179 "The CIA tags shown are in the same format as needed by *abs_speciesSet*.\n"),
4186 GIN(
"catalogpath",
"cia_tags"),
4187 GIN_TYPE(
"String",
"ArrayOfString"),
4189 GIN_DESC(
"Path to the CIA catalog directory.",
4190 "Array of CIA tags to view, e.g. [ \"N2-N2\", \"H2-H2\" ]")));
4193 NAME(
"CIARecordReadFromFile"),
4194 DESCRIPTION(
"Reads CIARecord from Hitran-style file.\n"),
4199 GOUT_DESC(
"CIARecord type variable for input and output."),
4201 GIN(
"species_tag",
"filename"),
4204 GIN_DESC(
"SpeciesTag string to associate with this CIARecord. See "
4205 "*abs_speciesSet* for correct format.",
4206 "Filename of HITRAN CIA data file.")));
4209 NAME(
"cloudboxOff"),
4211 "Deactivates the cloud box.\n"
4213 "Use this method if no scattering calculations shall be performed.\n"
4215 "The function sets *cloudbox_on* to 0, *cloudbox_limits*,\n"
4216 "*pnd_field*, *scat_data*, *scat_data_raw*, *iy_cloudbox_agenda*\n"
4217 "and *particle_masses* to be empty and sizes *dpnd_field_dx* to be\n"
4218 "consitent with *jacobian_quantities*.\n"),
4221 "ppath_inside_cloudbox_do",
4223 "iy_cloudbox_agenda",
4229 "scat_data_checked",
4234 IN(
"jacobian_quantities"),
4241 NAME(
"cloudboxSetAutomatically"),
4243 "Sets the cloud box to encompass the cloud given by the entries\n"
4244 "in *particle_field*.\n"
4246 "This WSM handles one *Tensor4* type *particle_field* at a time. It can\n"
4247 "be used to determine the cloudbox from *particle_bulkprop_field*\n"
4249 "The function must be called before executing any WSM that applies\n"
4250 "*cloudbox_limits*.\n"
4252 "The function iterates over all 3D fields in *particle_field* (which\n"
4253 "might correspond to different particle bulk properties as in\n"
4254 "*particle_bulkprop_field*). Each field is searched for the first\n"
4255 "and last pressure index, where the value is unequal to zero. This\n"
4256 "index is then copied to *cloudbox_limits*.\n"
4257 "If *particle_field* is empty, the cloudbox is switched off\n"
4258 "(*cloudbox_on*=0).\n"
4260 "Additionaly the lower cloudbox_limit is altered by *cloudbox_margin*.\n"
4261 "The margin is given as a height difference in meters and transformed\n"
4262 "into a pressure (via isothermal barometric height formula). This\n"
4263 "alteration is to ensure covering photons that leave the cloud, but\n"
4264 "reenter through a limb path.\n"
4265 "If *cloudbox_margin* is set to -1 (default), the cloudbox will extend\n"
4266 "to the surface. Hence, the lower cloudbox_limit is set to 0 (index\n"
4267 "of first pressure level).\n"
4268 "*cloudbox_margin* will be applied on each call of the WSM.\n"
4270 "Works only for *atmosphere_dim==1.*\n"),
4271 AUTHORS(
"Jana Mendrok, Daniel Kreyling"),
4272 OUT(
"cloudbox_on",
"cloudbox_limits"),
4276 IN(
"atmosphere_dim",
"p_grid",
"lat_grid",
"lon_grid"),
4277 GIN(
"particle_field",
"cloudbox_limits_old",
"cloudbox_margin"),
4278 GIN_TYPE(
"Tensor4",
"ArrayOfIndex",
"Numeric"),
4280 GIN_DESC(
"A collection of particle property fields (e.g."
4281 " *particle_bulkprop_field*).",
4282 "Preset cloudbox limits, e.g. resulting from a previous run"
4283 " of *cloudboxSetAutomatically*.",
4284 "Minimum distance [m] between lowest 'cloudy' level and"
4285 " cloudbox lower limit. If set to *-1* (default), the"
4286 " cloudbox lower limit is fixed to 0, i.e., corresponds to"
4287 " the lowest atmospheric level (or the surface).")));
4291 DESCRIPTION(
"Sets the cloudbox to cover the full atmosphere.\n"),
4292 AUTHORS(
"Claudia Emde, Jana Mendrok"),
4293 OUT(
"cloudbox_on",
"cloudbox_limits"),
4297 IN(
"atmosphere_dim",
"p_grid",
"lat_grid",
"lon_grid"),
4304 NAME(
"cloudboxSetManually"),
4306 "Sets the cloud box to encompass the given positions.\n"
4308 "The function sets *cloudbox_on* to 1 and sets *cloudbox_limits*\n"
4309 "following the given pressure, latitude and longitude positions.\n"
4310 "The index limits in *cloudbox_limits* are selected to give the\n"
4311 "smallest possible cloud box that encompass the given points.\n"
4313 "The points must be given in the same order as used in\n"
4314 "*cloudbox_limits*. That means that the first keyword argument\n"
4315 "shall be a higher pressure than argument two, while the latitude\n"
4316 "and longitude points are given in increasing order. Positions\n"
4317 "given for dimensions not used by the selected atmospheric\n"
4318 "dimensionality are ignored.\n"
4320 "The given pressure points can be outside the range of *p_grid*.\n"
4321 "The pressure limit is then set to the end point of *p_grid*.\n"
4322 "The given latitude and longitude points must be inside the range\n"
4323 "of the corresponding grid. In addition, the latitude and longitude\n"
4324 "points cannot be inside the outermost grid ranges as the latitude\n"
4325 "and longitude limits in *cloudbox_limits* are not allowed to be\n"
4326 "grid end points.\n"),
4328 OUT(
"cloudbox_on",
"cloudbox_limits"),
4332 IN(
"atmosphere_dim",
"p_grid",
"lat_grid",
"lon_grid"),
4333 GIN(
"p1",
"p2",
"lat1",
"lat2",
"lon1",
"lon2"),
4335 "Numeric",
"Numeric",
"Numeric",
"Numeric",
"Numeric",
"Numeric"),
4338 "Lower pressure point.",
4339 "Lower latitude point.",
4340 "Upper latitude point.",
4341 "Lower longitude point.",
4342 "Upper longitude point.")));
4345 NAME(
"cloudboxSetManuallyAltitude"),
4347 "Sets the cloud box to encompass the given positions.\n"
4349 "As *cloudboxSetManually* but uses altitudes instead of pressure.\n"
4350 "The given altitude points can be outside the range of *z_field*.\n"
4351 "The altitude limit is then set to the end point of *p_grid*.\n"),
4353 OUT(
"cloudbox_on",
"cloudbox_limits"),
4357 IN(
"atmosphere_dim",
"z_field",
"lat_grid",
"lon_grid"),
4358 GIN(
"z1",
"z2",
"lat1",
"lat2",
"lon1",
"lon2"),
4360 "Numeric",
"Numeric",
"Numeric",
"Numeric",
"Numeric",
"Numeric"),
4363 "Upper altitude point.",
4364 "Lower latitude point.",
4365 "Upper latitude point.",
4366 "Lower longitude point.",
4367 "Upper longitude point.")));
4370 NAME(
"cloudbox_checkedCalc"),
4372 "Checks consistency and validity of the cloudbox governing variables.\n"
4374 "The following WSVs are treated: *cloudbox_on*, *cloudbox_limits*,\n"
4375 "*pnd_field*, *scat_data*, *scat_species*, *abs_species*, *particle_masses*\n"
4376 "*particle_bulkprop_field*, *particle_bulkprop_names* and wind_u/v/w_field.\n"
4378 "If any of these variables is changed, then this method shall be\n"
4379 "called again (no automatic check that this is fulfilled!).\n"
4381 "The main checks are if the cloudbox limits are OK with respect to\n"
4382 "the atmospheric dimensionality and the limits of the atmosphere,\n"
4383 "and that the scattering element variables *pnd_field* and\n"
4384 "*scat_data* match in size.\n"
4386 "Further checks on *scat_data* are performed in *scat_data_checkedCalc*\n"
4388 "*scat_species* and *particle_masses* must either be empty or have a\n"
4389 "size that matches the other data. If non-empty, some check of these\n"
4390 "variables are performed.\n"
4392 "If any test fails, there is an error. Otherwise, *cloudbox_checked*\n"
4394 AUTHORS(
"Patrick Eriksson, Jana Mendrok"),
4395 OUT(
"cloudbox_checked"),
4399 IN(
"atmfields_checked",
4413 "jacobian_quantities",
4418 GIN(
"negative_pnd_ok"),
4421 GIN_DESC(
"Flag whether to accept pnd_field < 0.")));
4424 NAME(
"cloudbox_field_monoIterate"),
4426 "Iterative solution of the VRTE (DOIT method).\n"
4428 "A solution for the RTE with scattering is found using the\n"
4430 " 1. Calculate scattering integral using *doit_scat_field_agenda*.\n"
4431 " 2. Calculate RT with fixed scattered field using\n"
4432 " *doit_rte_agenda*.\n"
4433 " 3. Convergence test using *doit_conv_test_agenda*.\n"
4435 "Note: The atmospheric dimensionality *atmosphere_dim* can be\n"
4436 " either 1 or 3. To these dimensions the method adapts\n"
4437 " automatically. 2D scattering calculations are not\n"
4439 AUTHORS(
"Claudia Emde, Jakob Doerr"),
4440 OUT(
"cloudbox_field_mono"),
4444 IN(
"cloudbox_field_mono",
4445 "doit_scat_field_agenda",
4447 "doit_conv_test_agenda"),
4452 "Index wether to accelerate only the intensity (1) or the whole Stokes Vector (4)")));
4455 NAME(
"cloudbox_fieldCrop"),
4457 "Extracts a part of an existing *cloudbox_field*.\n"
4459 "The cropping is defined by defining new cloudbox limits. Note that\n"
4460 "*new_limit0* is an index with respect to *p_grid*, etc.\n"
4462 "The following must be valid:\n"
4463 " new_limit0 >= cloudbox_limits[0]\n"
4464 " new_limit1 <= cloudbox_limits[1]\n"
4465 " new_limit2 >= cloudbox_limits[2]\n"
4466 " new_limit3 <= cloudbox_limits[3]\n"
4467 " new_limit4 >= cloudbox_limits[4]\n"
4468 " new_limit5 <= cloudbox_limits[5]\n"
4470 "Indexes for dimensions not used are ignored.\n"),
4472 OUT(
"cloudbox_field",
"cloudbox_limits"),
4476 IN(
"atmosphere_dim",
"cloudbox_on",
"cloudbox_limits",
"cloudbox_field"),
4483 GIN_TYPE(
"Index",
"Index",
"Index",
"Index",
"Index",
"Index"),
4485 GIN_DESC(
"New value for cloudbox_limits[0].",
4486 "New value for cloudbox_limits[1].",
4487 "New value for cloudbox_limits[2].",
4488 "New value for cloudbox_limits[3].",
4489 "New value for cloudbox_limits[4].",
4490 "New value for cloudbox_limits[5].")));
4493 NAME(
"cloudbox_fieldSetFromPrecalc"),
4495 "Sets the initial cloudbox intensity field *cloudbox_field* from a\n"
4496 "precalculated field.\n"
4498 "This method sets the (monochromatic) first guess radiation field\n"
4499 "inside the cloudbox from a precalculated *cloudbox_field_precalc*,\n"
4500 "e.g., from the solution of a similar atmospheric scenario. The\n"
4501 "dimensions of *cloudbox_field_precalc* have to be consistent with\n"
4502 "the DOIT setup in terms of frequencies, pressure levels inside the\n"
4503 "cloudbox, polar angles used as well as the stokes dimension.\n"
4504 "Incoming field on the cloudbox boundaries is adapted to the actual\n"
4505 "clearsky incoming field as, e.g., calculated by *DoitGetIncoming*.\n"),
4507 OUT(
"cloudbox_field"),
4511 IN(
"cloudbox_field",
4517 "doit_is_initialized"),
4518 GIN(
"cloudbox_field_precalc"),
4521 GIN_DESC(
"Precalculated radiation field (of type *cloudbox_field*)")));
4524 NAME(
"cloudbox_fieldSetClearsky"),
4526 "Interpolate clearsky field on all gridpoints in cloudbox.\n"
4528 "This method uses a linear 1D/3D interpolation scheme to obtain the\n"
4529 "radiation field on all grid points inside the cloud box from the\n"
4530 "clear sky field on the cloudbox boundary. This radiation field\n"
4531 "is taken as the first guess radiation field in the DOIT module.\n"
4533 "Set the *all_frequencies* to 1 if the clearsky field shall be used\n"
4534 "as initial field for all frequencies. Set it to 0 if the clear sky\n"
4535 "field shall be used only for the first frequency in *f_grid*. For\n"
4536 "later frequencies, *cloudbox_field* of the previous frequency is then\n"
4538 AUTHORS(
"Sreerekha T.R. and Claudia Emde"),
4539 OUT(
"cloudbox_field"),
4543 IN(
"cloudbox_field",
4550 "doit_is_initialized"),
4551 GIN(
"all_frequencies"),
4557 NAME(
"cloudbox_field_monoSetConst"),
4559 "This method sets the initial field inside the cloudbox to a\n"
4560 "constant value. The method works only for monochromatic\n"
4561 "calculations (number of elements in f_grid=1).\n"
4563 "The user can specify a value for each Stokes dimension in the\n"
4564 "control file by *value*.\n"),
4566 OUT(
"cloudbox_field_mono"),
4570 IN(
"cloudbox_field_mono",
4580 GIN_DESC(
"A vector containing 4 elements with the value of the "
4581 "initial field for each Stokes dimension.")));
4584 NAME(
"cloudbox_fieldSetConst"),
4586 "This method sets the initial field inside the cloudbox to a\n"
4589 "The user has to specify a value for each Stokes dimension in the\n"
4590 "control file by *value*.\n"),
4592 OUT(
"cloudbox_field"),
4596 IN(
"cloudbox_field",
4606 GIN_DESC(
"A vector containing *stokes_dim* elements with the value of"
4607 " the initial field for each Stokes dimension.")));
4610 NAME(
"cloudbox_fieldSetConstPerFreq"),
4612 "This method sets the initial field inside the cloudbox to a\n"
4613 "constant value per frequency slice.\n"
4615 "The user has specify a value for each frequency and Stokes\n"
4616 "dimension in the control file by *value*.\n"),
4618 OUT(
"cloudbox_field"),
4622 IN(
"cloudbox_field",
4632 GIN_DESC(
"A matrix containing *stokes_dim* elements per frequency"
4633 " (row) with the value of the initial field for each"
4634 " frequency and Stokes dimension.")));
4637 NAME(
"cloudbox_fieldUpdate1D"),
4639 "RT calculation in cloudbox with fixed scattering integral (1D).\n"
4641 "Updates the radiation field (DOIT method). The method loops\n"
4642 "through the cloudbox to update the radiation field for all\n"
4643 "positions and directions in the 1D cloudbox.\n"
4645 "Note: This method is very inefficient, because the number of\n"
4646 "iterations scales with the number of cloudbox pressure levels.\n"
4647 "It is recommended to use *cloudbox_fieldUpdateSeq1D*.\n"),
4649 OUT(
"cloudbox_field_mono"),
4653 IN(
"cloudbox_field_mono",
4656 "propmat_clearsky_agenda",
4661 "ppath_step_agenda",
4670 "surface_rtprop_agenda",
4678 NAME(
"cloudbox_fieldUpdateSeq1D"),
4680 "RT calculation in cloudbox with fixed scattering integral.\n"
4682 "Updates radiation field (*cloudbox_field*) in DOIT module.\n"
4683 "This method loops through the cloudbox to update the\n"
4684 "radiation field for all positions and directions in the 1D\n"
4685 "cloudbox. The method applies the sequential update. For more\n"
4686 "information refer to AUG.\n"),
4688 OUT(
"cloudbox_field_mono",
"doit_scat_field"),
4692 IN(
"cloudbox_field_mono",
4695 "propmat_clearsky_agenda",
4701 "ppath_step_agenda",
4710 "surface_rtprop_agenda",
4712 GIN(
"normalize",
"norm_error_threshold",
"norm_debug"),
4713 GIN_TYPE(
"Index",
"Numeric",
"Index"),
4716 "Apply normalization to scattered field.",
4717 "Error threshold for scattered field correction factor.",
4718 "Debugging flag. Set to 1 to output normalization factor to out0.")));
4721 NAME(
"cloudbox_fieldUpdateSeq1DPP"),
4723 "RT calculation in cloudbox with fixed scattering integral.\n"
4725 "Update radiation field (*cloudbox_field*) in DOIT module.\n"
4726 "This method loops through the cloudbox to update the\n"
4727 "radiation field for all\n"
4728 "positions and directions in the 1D cloudbox. The method applies\n"
4729 "the sequential update and the plane parallel approximation.\n"
4730 "This method is only slightly faster than\n"
4731 "*cloudbox_fieldUpdateSeq1D* and it is less accurate. It can not\n"
4732 "be used for limb simulations.\n"),
4734 OUT(
"cloudbox_field_mono",
"za_index"),
4738 IN(
"cloudbox_field_mono",
4741 "propmat_clearsky_agenda",
4757 NAME(
"cloudbox_fieldUpdateSeq3D"),
4759 "RT calculation in cloudbox with fixed scattering integral.\n"
4761 "Update radiation field (*cloudbox_field*) in DOIT module.\n"
4762 "This method loops through the cloudbox to update the\n"
4763 "radiation field for all positions and directions in the 3D\n"
4764 "cloudbox. The method applies the sequential update. For more\n"
4765 "information please refer to AUG.\n"
4766 "Surface reflections are not yet implemented in 3D scattering\n"
4769 OUT(
"cloudbox_field_mono"),
4773 IN(
"cloudbox_field_mono",
4776 "propmat_clearsky_agenda",
4782 "ppath_step_agenda",
4800 NAME(
"cloudbox_field_monoOptimizeReverse"),
4802 "Interpolate *cloudbox_field_mono* back to the original p_grid.\n"
4803 "For detailed description, see *OptimizeDoitPressureGrid*. \n"),
4805 OUT(
"cloudbox_field_mono"),
4809 IN(
"cloudbox_field_mono",
"p_grid_orig",
"p_grid",
"cloudbox_limits"),
4818 "Checks the consistency between two variables.\n"
4820 "The two variables are checked to not deviate outside the specified\n"
4821 "value (*maxabsdiff*). An error is issued if this is not fulfilled.\n"
4823 "The main application of this method is to be part of the test\n"
4824 "control files, and then used to check that a calculated value\n"
4825 "is consistent with an old, reference, value.\n"),
4832 GIN(
"var1",
"var2",
"maxabsdiff",
"error_message"),
4834 "Numeric, Vector, Matrix, Tensor3, Tensor4, Tensor5, Tensor7,"
4835 "ArrayOfVector, ArrayOfMatrix, ArrayOfTensor7, GriddedField3,"
4836 "Sparse, SingleScatteringData",
4838 "Numeric, Vector, Matrix, Tensor3, Tensor4, Tensor5, Tensor7,"
4839 "ArrayOfVector, ArrayOfMatrix, ArrayOfTensor7, GriddedField3,"
4840 "Sparse, SingleScatteringData",
4846 "A second variable",
4847 "Threshold for maximum absolute difference.",
4848 "Additional error message."),
4856 NAME(
"CompareRelative"),
4858 "Checks the consistency between two variables by their relative values.\n"
4860 "The two variables are checked to not deviate outside the specified\n"
4861 "relative value (*maxabsreldiff*). An error is issued if this is not\n"
4864 "The main application of this method is to be part of the test\n"
4865 "control files, and then used to check that a calculated value\n"
4866 "is consistent with an old, reference, value.\n"
4868 "If either value is 0.0, the relative error is considered as 0\n"
4869 "for easier use. This really means infinite differences, though\n"
4870 "allowing zero-crossings is useful for plenty of tests. So Be Aware!\n"
4872 "If both *var1* and *var2* are non-zero, the difference is evaluated\n"
4873 "as: abs(var1/var2-1)\n"
4874 "That is, *var2* is taken as the reference value.\n"),
4875 AUTHORS(
"Oliver Lemke",
"Richard Larsson"),
4881 GIN(
"var1",
"var2",
"maxabsreldiff",
"error_message"),
4883 "Numeric, Vector, Matrix, Tensor3, Tensor4, Tensor5, Tensor6, Tensor7,"
4884 "ArrayOfVector, ArrayOfMatrix, ArrayOfTensor3, ArrayOfTensor4,"
4885 "ArrayOfTensor6, ArrayOfTensor7, ArrayOfArrayOfVector,"
4886 "ArrayOfArrayOfMatrix, ArrayOfArrayOfTensor3, ArrayOfArrayOfTensor6,"
4887 "ArrayOfPropagationMatrix, ArrayOfArrayOfPropagationMatrix,"
4888 "ArrayOfStokesVector, ArrayOfArrayOfStokesVector,EnergyLevelMap,",
4889 "Numeric, Vector, Matrix, Tensor3, Tensor4, Tensor5, Tensor6, Tensor7,"
4890 "ArrayOfVector, ArrayOfMatrix, ArrayOfTensor3, ArrayOfTensor4,"
4891 "ArrayOfTensor6, ArrayOfTensor7, ArrayOfArrayOfVector,"
4892 "ArrayOfArrayOfMatrix, ArrayOfArrayOfTensor3, ArrayOfArrayOfTensor6,"
4893 "ArrayOfPropagationMatrix, ArrayOfArrayOfPropagationMatrix,"
4894 "ArrayOfStokesVector, ArrayOfArrayOfStokesVector,EnergyLevelMap,",
4899 "A second variable",
4900 "Threshold for maximum relative difference.",
4901 "Additional error message."),
4909 NAME(
"complex_refr_indexConstant"),
4911 "Set complex refractive index to a constant value.\n"
4913 "Frequency and temperature grids are set to have length 1 (and\n"
4914 "set to the value 0).\n"),
4916 OUT(
"complex_refr_index"),
4921 GIN(
"refr_index_real",
"refr_index_imag"),
4924 GIN_DESC(
"Real part of refractive index",
4925 "Imag part of refractive index")));
4928 NAME(
"complex_refr_indexIceMatzler06"),
4930 "Refractive index of ice following Matzler06 parameterization.\n"
4932 "Calculates temperature dependent complex refractive index of\n"
4933 "hexagonal ice at microwave and sub-mm frequencies (10MHz-3Tz).\n"
4935 "This parametrization is also applied by the microwave and\n"
4936 "submm-wave part of the Warren08 model.\n"
4939 "Matzler, C., 2006: Thermal Microwave Radiation: Application for\n"
4940 "Remote Sensing, Microwave dielectric properties of ice, pp. 455-462,\n"
4941 "Inst. Eng. Technol., Stevenage, U. K.\n"
4942 "Warren, S. G., and R. E. Brandt, 2008: Optical constants of ice\n"
4943 "from the ultraviolet to the microwave: A revised compilation,\n"
4944 "J. Geophys. Res., 113, D14220, doi:10.1029/2007JD009744.\n"),
4946 OUT(
"complex_refr_index"),
4951 GIN(
"data_f_grid",
"data_T_grid"),
4954 GIN_DESC(
"Frequency grid for refractive index calculation",
4955 "Temperature grid for refractive index calculation")));
4958 NAME(
"complex_refr_indexIceWarren84"),
4960 "Refractive index of ice following Warren84 parameterization.\n"
4962 "Calculates complex refractive index of Ice 1H for wavelengths\n"
4963 "between 45 nm and 8.6 m.\n"
4964 "For wavelengths above 167 microns, temperature dependence is\n"
4965 "included for temperatures between 213 and 272K.\n"
4966 "Mainly intended for applications in Earth ice\n"
4967 "clouds and snow, not other planets or interstellar space;\n"
4968 "the temperature dependence or crystalline form of ice may be\n"
4969 "incorrect for these latter applications.\n"
4971 "Authors of Fortran function:\n"
4972 "Stephen Warren, Univ. of Washington (1983)\n"
4973 "Bo-Cai Gao, JCESS, Univ. of Maryland (1995)\n"
4974 "Warren Wiscombe, NASA Goddard (1995)\n"
4977 "Warren, S., 1984: Optical Constants of Ice from the Ultraviolet\n"
4978 "to the Microwave, Appl. Opt. 23, 1206-1225\n"
4980 "Kou, L., D. Labrie, and P. Chylek, 1994: Refractive indices\n"
4981 "of water and ice in the 0.65- to 2.5-micron spectral range,\n"
4982 "Appl. Opt. 32, 3531-3540\n"
4984 "Perovich, D., and J. Govoni, 1991: Absorption Coefficients\n"
4985 "of Ice from 250 to 400 nm, Geophys. Res. Lett. 18, 1233-1235\n"),
4987 OUT(
"complex_refr_index"),
4992 GIN(
"data_f_grid",
"data_T_grid"),
4995 GIN_DESC(
"Frequency grid for refractive index calculation",
4996 "Temperature grid for refractive index calculation")));
4999 NAME(
"complex_refr_indexWaterLiebe93"),
5001 "Complex refractive index of liquid water according to Liebe 1993.\n"
5003 "The method treats liquid water without salt. Thus, not valid below\n"
5004 "10 GHz. Upper frequency limit not known, here set to 1000 GHz.\n"
5005 "Model parameters taken from Atmlab function epswater93 (by\n"
5006 "C. Maetzler), which refer to Liebe 1993 without closer\n"
5009 "Temperatures must be between -40 and 100 degrees Celsius. The\n"
5010 "accuracy of the parametrization below 0 C is not known by us.\n"),
5011 AUTHORS(
"Patrick Eriksson",
"Oliver Lemke"),
5012 OUT(
"complex_refr_index"),
5017 GIN(
"data_f_grid",
"data_T_grid"),
5020 GIN_DESC(
"Frequency grid for refractive index calculation",
5021 "Temperature grid for refractive index calculation")));
5026 "Copy a workspace variable.\n"
5028 "This method can copy any workspace variable\n"
5029 "to another workspace variable of the same group. (E.g., a Matrix to\n"
5030 "another Matrix.)\n"
5032 "As always, output comes first in the argument list!\n"
5036 "Copy(f_grid, p_grid)\n"
5038 "Will copy the content of *p_grid* to *f_grid*. The size of *f_grid*\n"
5039 "is adjusted automatically (the normal behaviour for workspace\n"
5060 "Create 1D covariance matrix.\n"
5062 "Creates a 1D covariance matrix for two retrieval quantities on given \n"
5063 " grids from a given functional form. Elements of the covariance matrix\n"
5065 " S_{i,j} = sigma_i * sigma_j * f(d_{i,j} / l_{i,j}) \n"
5066 " where d_{i,j} is the distance between the two grid points and l_{i,j}\n"
5067 " the mean of the correlation lengths of the grid points.\n"
5069 " If a cutoff value co is given elements with absolute value less than this \n"
5070 " are set to zero.\n"
5072 "The following functional forms are available:\n"
5073 " \"exp\": f(x) = exp(-x) \n"
5074 " \"lin\": f(x) = 1.0 - x, for x > 1.0, 0.0 otherwise \n"
5075 " \"gauss\": f(x) = exp(-x^2) \n"),
5076 AUTHORS(
"Simon Pfreundschuh"),
5080 GOUT_DESC(
"The matrix in which to store the covariance matrix."),
5099 GIN_DESC(
"The retrieval grid for the first retrieval quantity.",
5100 "The retrieval grid for the second retrieval quantity."
5101 " (If empty taken as grid_1)",
5102 "The variances of the first retrieval quantity.",
5103 "The variances of the second retrieval quantity."
5104 "(If empty taken as sigma_1)",
5105 "The correlations lengths of the first retrieval quantity.",
5106 "The correlations lengths of the second retrieval quantity."
5107 "(If empty taken as cls_1)",
5108 "The cutoff value for covariance matrix elements.",
5109 "The name of the functional form to use."),
5115 NAME(
"covmat1DMarkov"),
5117 "Create Markov Process Covariance Matrix.\n"
5119 "Create a markov process covariance matrix for a retrieval quantity on \n"
5120 " evenly spaced 1D grid. The correlation between two grid points i,j is \n"
5121 " is computed as \n"
5122 " cov(i,j) = sigma[i] * sigma[j] * exp(- d(i,j) / lc)\n"
5123 " where d(i,j) = abs(grid[i] - grid[j]).\n"
5125 "This function also sets covmat_inv_block to the analytically computed inverse\n"
5126 "of the covariance matrix of the markov provess, which is tri-diagonal. Note\n"
5127 "that this requires the retrieval grid to be evenly spaced.\n"),
5128 AUTHORS(
"Simon Pfreundschuh"),
5130 GOUT(
"out",
"out_inverse"),
5131 GOUT_TYPE(
"Matrix, Sparse",
"Matrix, Sparse"),
5133 "The matrix in which to store the covariance matrix.",
5134 "The matrix in which to store the inverse of the covariance matrix."),
5136 GIN(
"grid",
"sigma",
"lc",
"co"),
5137 GIN_TYPE(
"Vector",
"Vector",
"Numeric",
"Numeric"),
5140 "The vairance for each grid point.",
5141 "The correlation length of the Markov process.",
5142 "The cutoff value below which elements will be set to 0.0"),
5148 NAME(
"covmatDiagonal"),
5150 "Sets the matrix in covmat_block to a diagonal matrix with the variances\n"
5151 "provided in *vars* as diagonal elements."
5153 "Also sets covmat_block_inv to the inverse of the block so that the\n"
5154 "computation of the inverse is avoided.\n"),
5155 AUTHORS(
"Simon Pfreundschuh"),
5157 GOUT(
"out",
"out_inverse"),
5158 GOUT_TYPE(
"Matrix, Sparse",
"Matrix, Sparse"),
5160 "The matrix in which to store the covariance matrix.",
5161 "The matrix in which to store the inverse of the covariance matrix."),
5166 GIN_DESC(
"Variances to be used as diagonal elements of covmat_block."),
5172 NAME(
"covmat_seAddBlock"),
5174 "Add a block to the measurement covariance matrix *covmat_se*\n"
5176 "This functions adds a given dense or sparse matrix as block to the covariance\n"
5177 "matrix *covmat_sx*. The position of the block can be given by the generic\n"
5178 "arguments *i* and *j*. Note that diagonal blocks must be added in order starting from\n"
5179 " in the top left corner. If an off-diagonal block is added it must have corresponding\n"
5180 " existing blocks on the diagonal and these must be consistent with the dimensions\n"
5181 " of the block. If *i* and *j* are not provided, the blok will be added\n"
5182 "at the first free spot on the diagonal.\n"),
5183 AUTHORS(
"Simon Pfreundschuh"),
5189 GIN(
"block",
"i",
"j"),
5190 GIN_TYPE(
"Matrix, Sparse",
"Index",
"Index"),
5192 GIN_DESC(
"The block to add to the covariance matrix",
5193 "Index of a retrieval quantity. Must satisfy *i* <= *j*.",
5194 "Index of a retrieval quantity. Must satisfy *i* <= *j*."),
5200 NAME(
"covmat_seAddInverseBlock"),
5202 "Add the inverse of a block to covariance matrix *covmat_se*\n"
5204 "This functions adds a given matrix as the inverse of a block in the covariance\n"
5205 "matrix *covmat_se*. The purpose of this function is to allow the user to\n"
5206 "to use a precomputed inverse for this block in the covariance matrix, that may\n"
5207 "for example have been obtained analytically.\n"
5209 "This function requires the corresponding non-inverse block to already be present in *covmat_se*"
5211 "\n Note that for this to work this retrieval quantity must be independent from\n"
5212 "other retrieval quantities that do not have an inverse. Otherwise the inverse\n"
5213 "will be ignored and recomputed numerically.\n"
5215 "For the rest, the same requirements as for *covmat_seAddBlock* apply.\n"),
5216 AUTHORS(
"Simon Pfreundschuh"),
5222 GIN(
"block",
"i",
"j"),
5223 GIN_TYPE(
"Matrix, Sparse",
"Index",
"Index"),
5225 GIN_DESC(
"The inverse block to add to the covariance matrix",
5226 "Index of a retrieval quantity. Must satisfy *i* <= *j*.",
5227 "Index of a retrieval quantity. Must satisfy *i* <= *j*."),
5233 NAME(
"covmat_seSet"),
5235 "Set covmat_se to a given matrix.\n"
5237 "This sets the measurement covariance matrix *covmat_se* to\n"
5238 "the matrix given by the generic input *covmat*. The covariance\n"
5239 "matrix can be of type CovarianceMatrix, Matrix or Sparse.\n"),
5240 AUTHORS(
"Simon Pfreundschuh"),
5247 GIN_TYPE(
"CovarianceMatrix, Matrix, Sparse"),
5249 GIN_DESC(
"The matrix to set as the covariance matrix."),
5255 NAME(
"covmat_sxSet"),
5257 "Set covmat_sx to a given matrix.\n"
5259 "This sets the measurement covariance matrix *covmat_sx* to\n"
5260 "the matrix given by the generic input *covmat*. The covariance\n"
5261 "matrix can be of type CovarianceMatrix, Matrix or Sparse.\n"),
5262 AUTHORS(
"Simon Pfreundschuh"),
5269 GIN_TYPE(
"CovarianceMatrix, Matrix, Sparse"),
5271 GIN_DESC(
"The matrix to set as the covariance matrix."),
5277 NAME(
"covmat_sxAddBlock"),
5279 "Add a block to the a priori covariance matrix *covmat_sx*\n"
5281 "This functions adds a given matrix as a block in the covariance\n"
5282 "matrix *covmat_sx*. The position of the block can be given by the generic\n"
5283 "arguments *i* and *j*, which should give the index of the retrieval quantity in\n"
5284 "*jacobian_quantities*, which is given just by the order the quantities have been\n"
5285 "added to the retrieval.\n"
5287 "If arguments *i* and *j* are omitted, the block will be added as diagonal block\n"
5288 "for the last added retrieval quantity.\n"
5290 "If provided, the index *i* must be less than or equal to *j*. Also the provided\n"
5291 "block must be consistent with the corresponding retrieval quantities.\n"),
5292 AUTHORS(
"Simon Pfreundschuh"),
5297 IN(
"covmat_sx",
"jacobian_quantities"),
5298 GIN(
"block",
"i",
"j"),
5299 GIN_TYPE(
"Matrix, Sparse",
"Index",
"Index"),
5301 GIN_DESC(
"The block to add to the covariance matrix",
5302 "Index of a retrieval quantity. Must satisfy *i* <= *j*.",
5303 "Index of a retrieval quantity. Must satisfy *i* <= *j*."),
5309 NAME(
"covmat_sxAddInverseBlock"),
5311 "Add the inverse of a block in covariance matrix *covmat_sx*\n"
5313 "This functions adds a given matrix as the inverse of a block in the covariance\n"
5314 "matrix *covmat_sx*. The purpose of this function is to allow the user to\n"
5315 "to use a precomputed inverse for this block in the covariance matrix, the may\n"
5316 "for example by obtained analytically.\n"
5318 "This function requires the non-inverse block to already be present in *covmat_sx*"
5320 "\n Note that for this to work this retrieval quantity must be independent from\n"
5321 "other retrieval quantities that do not have an inverse. Otherwise the inverse\n"
5322 "will be ignored and recomputed numerically.\n"
5324 "For the rest, the same requirements as for *covmat_sxAddBlock* apply.\n"),
5325 AUTHORS(
"Simon Pfreundschuh"),
5330 IN(
"covmat_sx",
"jacobian_quantities"),
5331 GIN(
"block",
"i",
"j"),
5332 GIN_TYPE(
"Matrix, Sparse",
"Index",
"Index"),
5334 GIN_DESC(
"The inverse block to add to the covariance matrix",
5335 "Index of a retrieval quantity. Must satisfy *i* <= *j*.",
5336 "Index of a retrieval quantity. Must satisfy *i* <= *j*."),
5342 NAME(
"covmat_sxExtractSqrtDiagonal"),
5344 "Extract the square root of the diagonal of the state space covariance matrix."
5346 "This function extracts the diagonal of the state space covariance matrix\n"
5347 "*covmat_sx* and computes its square root. The resulting vector can then\n"
5348 "be used as *x_norm* argument for the OEM method to avoid scaling problems.\n"),
5349 AUTHORS(
"Simon Pfreundschuh"),
5353 GOUT_DESC(
"The vector containing the square root of the diagonal elements"
5366 "Deletes a workspace variable.\n"
5368 "The variable is marked as uninitialized and its memory freed.\n"
5369 "It is not removed from the workspace though, therefore you\n"
5370 "don't need to/can't call Create for this variable again.\n"),
5380 GIN_DESC(
"Variable to be deleted."),
5388 NAME(
"diameter_maxFromDiameter_volume_equ"),
5390 "Calculates maximum and area equivalent diameters from volume\n"
5391 "equivalent diameter.\n"
5393 "This is primarily a help function for using the T-matrix method\n"
5394 "and only a few particle shapes are handled. "
5396 "For shapes handled and further comments on the input arguments, see\n"
5397 "*scat_data_singleTmatrix*.\n"
5399 "Area equivalent diameter is the equivalent sphere diameter\n"
5400 "corresponding to the \"maximum axial area\". This is the largest\n"
5401 "cross-sectional area of the particle, observed either along the\n"
5402 "particle's main axis or in the perpendicular direction. That is,\n"
5403 "for a cylinder having diameter d and thickness h, this area is\n"
5404 "either (pi*d^2)/4 or (h*d).\n"),
5405 AUTHORS(
"Johan Strandgren",
"Patrick Eriksson"),
5407 GOUT(
"diameter_max",
"diameter_area_equ"),
5410 "Maximum dimension of the particle.",
5411 "Maximum axial area equivalent diameter of the particle, see above."),
5413 GIN(
"shape",
"diameter_volume_equ",
"aspect_ratio"),
5414 GIN_TYPE(
"String",
"Numeric",
"Numeric"),
5417 "Particle equivalent volume diameter.",
5418 "Particle aspect ratio.")));
5421 NAME(
"diameter_volume_equFromDiameter_max"),
5423 "Converts from maximum to volume equivalent diameter.\n"
5425 "This is primarily a help function for using the T-matrix part\n"
5426 "and only a few particle shapes are handled. "
5428 "For shapes handled and further comments on the input arguments,\n"
5429 "see *scat_data_singleTmatrix*.\n"
5431 "Also the volume is provided. It is simply sqrt(pi*dveq^3/6).\n"),
5432 AUTHORS(
"Johan Strandgren",
"Patrick Eriksson"),
5434 GOUT(
"diameter_volume_equ",
"volume"),
5436 GOUT_DESC(
"Particle volume equivalent diameter.",
5437 "Volume of the particle."),
5439 GIN(
"shape",
"diameter_max",
"aspect_ratio"),
5440 GIN_TYPE(
"String",
"Numeric",
"Numeric"),
5443 "Maximum dimension of the particle.",
5444 "Particle aspect ratio.")));
5447 NAME(
"DiagonalMatrix"),
5449 "Create a diagonal matrix from a vector."
5451 "This creates a dense or sparse diagonal matrix with the elements of the given vector\n"
5452 " on the diagonal.\n"),
5453 AUTHORS(
"Simon Pfreundschuh"),
5462 GIN_DESC(
"The vector containing the diagonal elements.")));
5467 "Derives the difference betwenn zenith and azimuth angles.\n"
5469 "Determines the difference between a set of angles (*other_los*)\n"
5470 "and a reference direction (*ref_los*). This method reverses the\n"
5471 "addition made by *AddZaAa*.\n"),
5476 GOUT_DESC(
"Derived differences in line-of-sight."),
5478 GIN(
"ref_los",
"other_los"),
5481 GIN_DESC(
"Reference line-of-sight (a single LOS).",
5482 "Other line-of-sights (can be multiple LOS).")));
5487 "Interface to the DISORT scattering solver (by Stamnes et al.).\n"
5489 "DISCLAIMER: There is a couple of known issues with the current\n"
5490 "implementation (see below). Use this WSM with care and only if\n"
5491 "these limitations/requirements are fulfilled. Results might be\n"
5492 "erroneous otherwise.\n"
5494 "DISORT provides the radiation field (*cloudbox_field*) from a scalar\n"
5495 "1D scattering solution assuming a plane-parallel atmosphere (flat\n"
5496 "Earth). Only totally randomly oriented particles are allowed.\n"
5497 "Refraction is not taken into account. Only Lambertian surface\n"
5498 "reflection is handled.\n"
5500 "*nstreams* is the number of polar angles taken into account\n"
5501 "internally in the scattering solution, *za_grid* is the\n"
5502 "polar angle grid on which *cloudbox_field* is provided.\n"
5503 "*nstreams* determines the angular resolution, hence the accuracy,\n"
5504 "of the scattering solution. The more anisotropic the bulk scattering\n"
5505 "matrix, the more streams are required. The computational burden\n"
5506 "increases approximately linearly with *nstreams*. The default value\n"
5507 "(8) is sufficient for most microwave scattering calculations. It is\n"
5508 "likely insufficient for IR calculations involving ice clouds,\n"
5511 "Further, *za_grid* determines the resolution of the output\n"
5512 "radiation field. The size of *za_grid* has no practical\n"
5513 "impact on computation time in the case of Disort and higher\n"
5514 "resolution generally improves the interpolation results, hence\n"
5515 "larger *za_grid* are recommended. To ensure sufficient\n"
5516 "interpolation accuracy, we require a (hardcoded) minimum size of 38.\n"
5518 "Different sphericity levels are emulated here by embedding DISORT\n"
5519 "in different ways and using different output. The available options\n"
5520 "(from low to high sphericity level) are:\n"
5521 "- Cloudbox extends over whole atmosphere (e.g. by setting cloudbox\n"
5522 " from *cloudboxSetFullAtm*).\n"
5523 "- Cloudbox extends over a limited part of the atmosphere only (e.g.\n"
5524 " by setting cloudbox from *cloudboxSetAutomatically* or\n"
5525 " *cloudboxSetManually*). Internally, DISORT is run over the whole\n"
5526 " atmosphere, but only the radiation field within the cloudbox is\n"
5527 " passed on and used further in ARTS (e.g. by *yCalc*).\n"
5529 "Known issues of ARTS implementation:\n"
5530 "- Surface altitude is not an interface parameter. Surface is\n"
5531 " implicitly assumed to be at the lowest atmospheric level.\n"
5532 "- Scattering angle grids of all scattering elements have to be\n"
5533 " identical (except if *pfct_method* is 'interpolate').\n"
5535 "Keyword *pfct_method* allows to chose the method to extract phase\n"
5536 "function. 'interpolate' considers temperature dependence. Others\n"
5537 "neglect it by chosing one specific temperature grid point from the\n"
5538 "single scattering data: 'low' choses the lowest T-point, 'high' the\n"
5539 "highest T-point, and 'median' the median T-point. As different\n"
5540 "scattering elements can have different temperature grids, the actual\n"
5541 "temperature value used can differ between the scattering elements.\n"
5542 "Currently, other methods than 'interpolate' require all scattering\n"
5543 "elements to be given on identical scattering angle grids.\n"
5544 "Note that this keyword solely affects the phase function;\n"
5545 "extinction/absorption/scattering cross sections are always\n"
5546 "interpolated to the actual temperature.\n"),
5547 AUTHORS(
"Claudia Emde, Jana Mendrok"),
5548 OUT(
"cloudbox_field"),
5552 IN(
"atmfields_checked",
5554 "scat_data_checked",
5558 "propmat_clearsky_agenda",
5571 "surface_scalar_reflectivity"),
5572 GIN(
"nstreams",
"pfct_method",
"Npfct",
"quiet"),
5573 GIN_TYPE(
"Index",
"String",
"Index",
"Index"),
5575 GIN_DESC(
"Number of polar angle directions (streams) in DISORT "
5576 "solution (must be an even number).",
5577 "Flag which method to apply to derive phase function.",
5578 "Number of angular grid points to calculate bulk phase"
5579 " function on (and derive Legendre polnomials from). If <0,"
5580 " the finest za_grid from scat_data will be used.",
5581 "Silence C Disort warnings.")));
5584 NAME(
"DisortCalcWithARTSSurface"),
5586 "DISORT with surface.\n"
5588 AUTHORS(
"Claudia Emde, Jana Mendrok"),
5589 OUT(
"cloudbox_field"),
5593 IN(
"atmfields_checked",
5595 "scat_data_checked",
5599 "propmat_clearsky_agenda",
5600 "surface_rtprop_agenda",
5611 GIN(
"nstreams",
"pfct_method",
"Npfct",
"quiet"),
5612 GIN_TYPE(
"Index",
"String",
"Index",
"Index"),
5614 GIN_DESC(
"Number of polar angle directions (streams) in DISORT "
5615 "solution (must be an even number).",
5616 "Flag which method to apply to derive phase function.",
5617 "Number of angular grid points to calculate bulk phase"
5618 " function on (and derive Legendre polnomials from). If <0,"
5619 " the finest za_grid from scat_data will be used.",
5620 "Silence C Disort warnings.")));
5623 NAME(
"DisortCalcClearsky"),
5625 "Interface to DISORT for running clear-sky cases.\n"
5627 "The method runs DISORT with *pnd_field* set to zero.\n"
5629 "Note that this version returns *spectral_radiance_field*, i.e.\n"
5630 "the solution for the full atmosphere. The standard *DisortCalc*\n"
5631 "only returns the field inside the cloudbox.\n"),
5633 OUT(
"spectral_radiance_field"),
5637 IN(
"atmfields_checked",
5639 "propmat_clearsky_agenda",
5650 "surface_scalar_reflectivity"),
5651 GIN(
"nstreams",
"quiet"),
5654 GIN_DESC(
"Number of polar angle directions (streams) in DISORT "
5655 "solution (must be an even number).",
5656 "Silence C Disort warnings.")));
5659 NAME(
"DOBatchCalc"),
5661 "Performs batch calculations for radiation fields.\n"
5663 "We perform *ybatch_n* jobs, starting at index *ybatch_start*. (Zero\n"
5664 "based indexing, as usual.) The output arrays will have\n"
5665 "ybatch_n elements. Indices in the output array start\n"
5666 "with zero, independent of *ybatch_start*.\n"
5668 "WARNING, MEMORY INTENSIVE!!!: Since the outputs of this methods can\n"
5669 "be very large, make sure you only pass back output you need.\n"
5670 "Estimate the size of your output by looking at the dimensions\n"
5671 "beforehand. If you only want to pass back some fields, make sure to\n"
5672 "empty the others at the end of your *dobatch_calc_agenda*. E.g.:\n"
5673 "Tensor7SetConstant(cloudbox_field, 0, 0, 0, 0, 0, 0, 0, 0.)\n"
5675 "The method performs the following:\n"
5676 " 1. Sets *ybatch_index* = *ybatch_start*.\n"
5677 " 2. Performs a-d until\n"
5678 " *ybatch_index* = *ybatch_start* + *ybatch_n*.\n"
5679 " a. Executes *dobatch_calc_agenda*.\n"
5680 " b. If *ybatch_index* = *ybatch_start*, resizes the output\n"
5681 " arrays based on *ybatch_n*.\n"
5682 " c. Copies calculated fields to *ybatch_index* - *ybatch_start*\n"
5683 " of output arrays.\n"
5684 " d. Adds 1 to *ybatch_index*.\n"
5686 "Beside the *dobatch_calc_agenda*, the WSVs *ybatch_start*\n"
5687 "and *ybatch_n* must be set before calling this method.\n"
5689 "The input variable *ybatch_start* is set to a default of zero in\n"
5690 "*general.arts*.\n"),
5692 OUT(
"dobatch_cloudbox_field",
5693 "dobatch_radiance_field",
5694 "dobatch_irradiance_field",
5695 "dobatch_spectral_irradiance_field"),
5699 IN(
"ybatch_start",
"ybatch_n",
"dobatch_calc_agenda"),
5703 GIN_DESC(
"A flag with value 1 or 0. If set to one, the batch\n"
5704 "calculation will continue, even if individual jobs fail. In\n"
5705 "that case, a warning message is written to screen and file\n"
5706 "(out1 output stream), and the output array entry for the\n"
5707 "failed job in the output fields is left empty.")));
5710 NAME(
"DOAngularGridsSet"),
5712 "Sets the angular grids for Discrete Ordinate type scattering\n"
5715 "This method sets the angular grids for the Discrete Ordinate type\n"
5716 "scattering calculations (DOIT, DISORT). For down- und up-looking\n"
5717 "geometries it suffices to define *N_za_grid* (both solvers) and\n"
5718 "*N_aa_grid* (DOIT). From these numbers equally spaced grids are\n"
5719 "created and stored in the WSVs *za_grid* and *aa_grid*.\n"
5721 "For limb simulations it is important to use an optimized zenith\n"
5722 "angle grid with a very fine resolution around the horizon\n"
5723 "(za=90 degrees). Such a grid can be generated using\n"
5724 "*doit_za_grid_optCalc*. To be applied, the name of the file holding\n"
5725 "the optimized angle grid has to be given (*za_grid_opt_file*).\n"
5727 "When an optimized grid is present, the equidistant grid is used for\n"
5728 "the calculation of the scattering integrals, while the optimized\n"
5729 "grid is applied for the integration of the radiative transfer\n"
5730 "equation. Otherwise the equidistant grid is used throughout. For\n"
5731 "down-looking cases using the equidistant grid typically suffices\n"
5732 "and speeds up the calculations.\n"),
5734 OUT(
"doit_za_grid_size",
"aa_grid",
"za_grid"),
5739 GIN(
"N_za_grid",
"N_aa_grid",
"za_grid_opt_file"),
5740 GIN_TYPE(
"Index",
"Index",
"String"),
5742 GIN_DESC(
"Number of grid points in zenith angle grid. "
5743 "Recommended value is 19.",
5744 "Number of grid points in azimuth angle grid. "
5745 "Recommended value is 37.",
5746 "Name of special grid for RT part.")));
5751 "Main DOIT method.\n"
5753 "This method executes *doit_mono_agenda* for each frequency\n"
5754 "in *f_grid*. The output is the radiation field inside the cloudbox\n"
5755 "(*cloudbox_field*).\n"),
5757 OUT(
"cloudbox_field"),
5761 IN(
"cloudbox_field",
5762 "atmfields_checked",
5765 "scat_data_checked",
5769 "doit_is_initialized"),
5776 NAME(
"DoitGetIncoming"),
5778 "Calculates incoming radiation field of the cloudbox by repeated\n"
5779 "radiative transfer calculations.\n"
5781 "The method performs monochromatic pencil beam calculations for\n"
5782 "all grid positions on the cloudbox boundary, and all directions\n"
5783 "given by scattering angle grids (*scat_za/aa_grid*). Found radiances\n"
5784 "are stored in *cloudbox_field* which can be used as boundary\n"
5785 "conditions when scattering inside the cloud box is solved by the\n"
5786 "*DoitCalc* method.\n"
5788 "Note that *cloudbox_field* will always hold intensity in terms of\n"
5789 "radiances, regardless of the setting of *iy_unit* (unit conversion\n"
5790 "is done within *yCalc* or *iyCalc*, which will provide their output\n"
5791 "in terms of the specified *iy_unit*; no explicit unit conversion by\n"
5792 "the user necessary.).\n"),
5793 AUTHORS(
"Sreerekha T.R.",
"Claudia Emde"),
5794 OUT(
"cloudbox_field"),
5798 IN(
"cloudbox_field",
5799 "atmfields_checked",
5802 "doit_is_initialized",
5815 GIN(
"rigorous",
"maxratio"),
5819 "Fail if incoming field is not safely interpolable.",
5820 "Maximum allowed ratio of two radiances regarded as interpolable.")));
5823 NAME(
"DoitGetIncoming1DAtm"),
5825 "As *DoitGetIncoming* but assumes clear sky part to be 1D."
5827 "The incoming field is calculated only for one position and azimuth\n"
5828 "angle for each cloud box boundary, and obtained values are used\n"
5829 "for all other postions and azimuth angles. This works if a 3D\n"
5830 "cloud box is put into an 1D background atmosphere.\n"
5832 "This method can only be used for 3D cases.\n"),
5833 AUTHORS(
"Sreerekha T.R.",
"Claudia Emde"),
5834 OUT(
"cloudbox_field",
"cloudbox_on"),
5838 IN(
"cloudbox_field",
5839 "atmfields_checked",
5842 "doit_is_initialized",
5863 "Initialises variables for DOIT scattering calculations.\n"
5865 "Note that multi-dimensional output variables (Tensors, specifically)\n"
5866 "are NaN-initialized. That is, this methods needs to be called\n"
5867 "BEFORE other WSMs that provide input to *DoitCalc*, e.g. before\n"
5868 "*DoitGetIncoming*.\n"),
5870 OUT(
"doit_scat_field",
"cloudbox_field",
"doit_is_initialized"),
5879 "doit_za_grid_size",
5888 NAME(
"DoitScatteringDataPrepare"),
5890 "Prepares single scattering data for a DOIT scattering calculation.\n"
5892 "First the scattering data is interpolated in frequency using\n"
5893 "*scat_data_monoCalc*. Then the phase matrix data is\n"
5894 "transformed or interpolated from the raw data to the laboratory frame\n"
5895 "for all possible combinations of the angles contained in the angular\n"
5896 "grids which are set in *DOAngularGridsSet*. The resulting phase\n"
5897 "matrices are stored in *pha_mat_sptDOITOpt*.\n"),
5899 OUT(
"pha_mat_sptDOITOpt",
"scat_data_mono",
"pha_mat_doit",
"aa_grid"),
5903 IN(
"doit_za_grid_size",
5906 "scat_data_checked",
5913 "pha_mat_spt_agenda"),
5920 NAME(
"DoitWriteIterationFields"),
5922 "Writes DOIT iteration fields.\n"
5924 "This method writes intermediate iteration fields to xml-files. The\n"
5925 "method can be used as a part of *doit_conv_test_agenda*.\n"
5927 "The iterations to be stored are specified by *iterations*, e.g.:\n"
5928 " iterations = [3, 6, 9]\n"
5929 "In this case the 3rd, 6th and 9th iterations are stored.\n"
5930 "If a number is larger than the total number of iterations, this\n"
5931 "number is ignored. If all iterations should be stored set\n"
5932 " iterations = [-1]\n"
5934 "The frequencies to be stored are specified by *frequencies* in the\n"
5935 "same way as the iterations. The frequency index corresponds to the\n"
5936 "order of frequencies in *f_grid*.\n"
5938 "The output files are named doit_iteration_fX_iY.xml with X being the\n"
5939 "frequency index and iY the iteration counter.\n"),
5945 IN(
"doit_iteration_counter",
"cloudbox_field_mono",
"f_index"),
5946 GIN(
"iterations",
"frequencies"),
5947 GIN_TYPE(
"ArrayOfIndex",
"ArrayOfIndex"),
5949 GIN_DESC(
"Selection of iterations to store.",
5950 "Selection of frequencies to store.")));
5953 NAME(
"doit_conv_flagAbs"),
5955 "DOIT convergence test (maximum absolute difference).\n"
5957 "The function calculates the absolute differences for two successive\n"
5958 "iteration fields. It picks out the maximum values for each Stokes\n"
5959 "component separately. The convergence test is fullfilled under the\n"
5960 "following conditions:\n"
5961 " |I(m+1) - I(m)| < epsilon_1 Intensity.\n"
5962 " |Q(m+1) - Q(m)| < epsilon_2 The other Stokes components.\n"
5963 " |U(m+1) - U(m)| < epsilon_3 \n"
5964 " |V(m+1) - V(m)| < epsilon_4 \n"
5965 "These conditions have to be valid for all positions in the\n"
5966 "cloudbox and for all directions.\n"),
5968 OUT(
"doit_conv_flag",
"doit_iteration_counter",
"cloudbox_field_mono"),
5972 IN(
"doit_conv_flag",
5973 "doit_iteration_counter",
5974 "cloudbox_field_mono",
5975 "cloudbox_field_mono_old"),
5976 GIN(
"epsilon",
"max_iterations",
"nonconv_return_nan"),
5977 GIN_TYPE(
"Vector",
"Index",
"Index"),
5979 GIN_DESC(
"Limits for convergence. A vector with length matching "
5980 "*stokes_dim* with unit [W / (m^2 Hz sr)].",
5981 "Maximum number of iterations allowed to reach convergence"
5983 "Flag whether to accept result at max_iterations (0=default)"
5984 "or whether to return NaNs in case of non-convergence at"
5985 "max_iterations")));
5988 NAME(
"doit_conv_flagAbsBT"),
5990 "DOIT convergence test (maximum absolute difference in Rayleigh Jeans "
5993 "As *doit_conv_flagAbs* but convergence limits are specified in\n"
5994 "Rayleigh-Jeans brighntess temperatures.\n"),
5995 AUTHORS(
"Sreerekha T.R.",
"Claudia Emde"),
5996 OUT(
"doit_conv_flag",
"doit_iteration_counter",
"cloudbox_field_mono"),
6000 IN(
"doit_conv_flag",
6001 "doit_iteration_counter",
6002 "cloudbox_field_mono",
6003 "cloudbox_field_mono_old",
6006 GIN(
"epsilon",
"max_iterations",
"nonconv_return_nan"),
6007 GIN_TYPE(
"Vector",
"Index",
"Index"),
6009 GIN_DESC(
"Limits for convergence. A vector with length matching "
6010 "*stokes_dim* with unit [K].",
6011 "Maximum number of iterations allowed to reach convergence"
6013 "Flag whether to accept result at max_iterations (0=default)"
6014 "or whether to return NaNs in case of non-convergence at"
6015 "max_iterations")));
6018 NAME(
"doit_conv_flagLsq"),
6020 "DOIT convergence test (least squares).\n"
6022 "As *doit_conv_flagAbsBT* but applies a least squares convergence\n"
6023 "test between two successive iteration fields.\n"
6025 "Warning: This method is not recommended because this kind of\n"
6026 "convergence test is not sufficiently strict, so that the\n"
6027 "DOIT result might be wrong.\n"),
6029 OUT(
"doit_conv_flag",
"doit_iteration_counter",
"cloudbox_field_mono"),
6033 IN(
"doit_conv_flag",
6034 "doit_iteration_counter",
6035 "cloudbox_field_mono",
6036 "cloudbox_field_mono_old",
6039 GIN(
"epsilon",
"max_iterations",
"nonconv_return_nan"),
6040 GIN_TYPE(
"Vector",
"Index",
"Index"),
6042 GIN_DESC(
"Limits for convergence. A vector with length matching "
6043 "*stokes_dim* with unit [K].",
6044 "Maximum number of iterations allowed to reach convergence"
6046 "Flag whether to accept result at max_iterations (0=default)"
6047 "or whether to return NaNs in case of non-convergence at"
6048 "max_iterations")));
6051 NAME(
"OptimizeDoitPressureGrid"),
6053 "Optimization of the pressure grid for RT calculation.\n"
6054 "The methods consists of three parts:\n"
6055 "1) Calculate the single scattering albedo and the scattering optical"
6056 "thickness from the scattering and absorption species. \n"
6057 "2) Enhance z_field according to the two thresholds sgl_alb_max and tau_scat_max."
6058 "If the resulting cloudbox size is bigger than cloudbox_size_max, this step is \n"
6059 "repeated with a higher threshold of tau_scat_max. \n"
6060 "3) Interpolate all variables used in doit_mono_agenda to the new z_field \n"
6061 "This method should be called inside\n"
6062 "*doit_mono_agenda*, right before *cloudbox_field_monoIterate*. It can \n"
6063 "only be used if *ScatSpeciesMerge* has been called and if it is\n"
6064 "called, *cloudbox_field_monoOptimizeReverse* has to be\n"
6065 "called right after *cloudbox_field_monoIterate* to interpolate\n"
6066 "*cloudbox_field_mono* back to the original size.\n"
6067 "Optimization currently only works with *stokes_dim* = 1 .\n"),
6075 "cloudbox_field_mono",
6088 "cloudbox_field_mono",
6093 "propmat_clearsky_agenda"),
6094 GIN(
"tau_scat_max",
"sgl_alb_max",
"cloudbox_size_max"),
6095 GIN_TYPE(
"Numeric",
"Numeric",
"Index"),
6097 GIN_DESC(
"Maximum scattering optical thickness",
6098 "Maximum single scattering albedo",
6099 "Maximum cloudbox size")));
6102 NAME(
"doit_scat_fieldCalc"),
6104 "Calculates the scattering integral field in the DOIT module.\n"
6106 "The scattering integral field is generated by integrating\n"
6107 "the product of phase matrix and Stokes vector over all incident\n"
6108 "angles. For more information please refer to AUG.\n"),
6109 AUTHORS(
"Sreerekha T.R.",
"Claudia Emde"),
6110 OUT(
"doit_scat_field"),
6114 IN(
"doit_scat_field",
6115 "pha_mat_spt_agenda",
6116 "cloudbox_field_mono",
6123 "doit_za_grid_size",
6131 NAME(
"doit_scat_fieldCalcLimb"),
6133 "Calculates the scattering integral field in the DOIT module (limb).\n"
6135 "The scattering integral field is the field generated by integrating\n"
6136 "the product of phase matrix and the Stokes vector over all incident\n"
6139 "For limb simulations it makes sense to use different\n"
6140 "zenith angle grids for the scattering integral part and the RT part,\n"
6141 "because the latter part requires a much finer resolution near\n"
6142 "90 degrees. Taking an optimized grid for the RT part and an equidistant\n"
6143 "grid for the scattering integral part saves very much CPU time.\n"
6144 "This method uses the equidistant za_grid defined in\n"
6145 "*DOAngularGridsSet* and it should always be used for limb\n"
6148 "For more information please refer to AUG.\n"),
6150 OUT(
"doit_scat_field"),
6154 IN(
"doit_scat_field",
6155 "pha_mat_spt_agenda",
6156 "cloudbox_field_mono",
6163 "doit_za_grid_size",
6172 NAME(
"doit_za_grid_optCalc"),
6174 "Zenith angle grid optimization for scattering calculation.\n"
6176 "This method optimizes the zenith angle grid. As input it requires\n"
6177 "a radiation field (*cloudbox_field*) which is calculated on a very\n"
6178 "fine zenith angle grid (*za_grid*). Based on this field\n"
6179 "zenith angle grid points are selected, such that the maximum\n"
6180 "difference between the radiation field represented on the very\n"
6181 "fine zenith angle grid and the radiation field represented on the\n"
6182 "optimized grid (*doit_za_grid_opt*) is less than the accuracy\n"
6183 "(*acc*). Between the grid points the radiation field is interpolated\n"
6184 "linearly or polynomially depending on *doit_za_interp*.\n"
6186 "Note: The method works only for a 1D atmosphere and for one\n"
6189 OUT(
"doit_za_grid_opt"),
6193 IN(
"cloudbox_field_mono",
"za_grid",
"doit_za_interp"),
6197 GIN_DESC(
"Accuracy to achieve [%].")));
6200 NAME(
"doit_za_interpSet"),
6202 "Define interpolation method for zenith angle dimension.\n"
6204 "You can use this method to choose the interpolation method for\n"
6205 "interpolations in the zenith angle dimension.\n"),
6207 OUT(
"doit_za_interp"),
6211 IN(
"atmosphere_dim"),
6212 GIN(
"interp_method"),
6215 GIN_DESC(
"Interpolation method (\"linear\" or \"polynomial\").")));
6219 DESCRIPTION(
"Sets the seconds between two times.\n"),
6224 GOUT_DESC(
"Time in seconds between *start* and *end*"),
6226 GIN(
"start",
"end"),
6229 GIN_DESC(
"Start time",
"End time")));
6232 NAME(
"EnergyLevelMapSet"),
6248 "Issues an error and exits ARTS.\n"
6250 "This method can be placed in agendas that must be specified, but\n"
6251 "are expected not to be used for the particular case. An inclusion\n"
6252 "in *surface_rtprop_agenda* could look like:\n "
6253 "Error{\"Surface interceptions of propagation path not expected.\"}\n"
6255 "Ignore and other dummy method calls must still be included.\n"),
6265 GIN_DESC(
"String describing the error.")));
6270 "Stops the execution and exits ARTS.\n"
6272 "This method is handy if you want to debug one of your control\n"
6273 "files. You can insert it anywhere in the control file. When\n"
6274 "it is reached, it will terminate the program.\n"),
6289 "Extracts an element from an array.\n"
6291 "Copies the element with the given Index from the input\n"
6292 "variable to the output variable.\n"
6294 "For a Tensor3 as an input, it copies the page with the given\n"
6295 "Index from the input Tensor3 variable to the output Matrix.\n"
6297 "In other words, the selection is always done on the first dimension.\n"),
6301 GOUT_TYPE(
"Index, ArrayOfIndex, Numeric, Vector,"
6303 "Tensor3, Tensor4, Tensor4,"
6304 "GriddedField3, ArrayOfGriddedField3,"
6305 "GriddedField4, String,"
6306 "SingleScatteringData, ArrayOfSingleScatteringData,"
6308 "QuantumIdentifier"),
6311 GIN(
"haystack",
"index"),
6312 GIN_TYPE(
"ArrayOfIndex, ArrayOfArrayOfIndex, Vector, ArrayOfVector,"
6313 "ArrayOfMatrix, Tensor3,"
6314 "Tensor4, ArrayOfTensor4, Tensor5,"
6315 "ArrayOfGriddedField3, ArrayOfArrayOfGriddedField3,"
6316 "ArrayOfGriddedField4, ArrayOfString,"
6317 "ArrayOfSingleScatteringData,"
6318 "ArrayOfArrayOfSingleScatteringData,"
6319 "ArrayOfTelsemAtlas,"
6320 "ArrayOfQuantumIdentifier",
6323 GIN_DESC(
"Variable to extract from.",
6324 "Position of the element which should be extracted."),
6330 NAME(
"ExtractFromMetaSingleScatSpecies"),
6332 "Extract (numeric) parameters from scat_meta of a single scattering\n"
6340 GOUT_DESC(
"The extracted meta parameter values."),
6342 GIN(
"meta_name",
"scat_species_index"),
6345 GIN_DESC(
"Name of the meta parameter to extract.",
6346 "Array index of scattering species from which to extract.")));
6349 NAME(
"ext_matAddGas"),
6351 "Add gas absorption to all diagonal elements of extinction matrix.\n"
6353 "The task of this method is to sum up the gas absorption of the\n"
6354 "different gas species and add the result to the extinction matrix.\n"),
6360 IN(
"ext_mat",
"propmat_clearsky"),
6367 NAME(
"FastemStandAlone"),
6369 "Stand-alone usage of FASTEM.\n"
6371 "FASTEM is a parameterisation of the emissivity of water surfaces\n"
6372 "including the impact of waves, salinity and non-specular effects.\n"
6373 "This is more or less direct interface to FASTEM, but slightly\n"
6374 "adopted to fit with ARTS. The unit of frequency and salinity\n"
6375 "differ, and this version is \"vectorised\" in frequency.\n"
6377 "The output is four emissivity and reflectivity values for each\n"
6378 "frequency. These values are defined in Eq. 13 of \"An Improved\n"
6379 "Fast Microwave Water Emissivity Model\" by Liu, Weng and English,\n"
6380 "I3TRGS, 2011. Note that emissivity and reflectivity do not add up\n"
6381 "to 1, which is the way FASTEM compensates for non-specular effects.\n"
6383 "There is an error if any frequency is above 250 GHz, or if the skin\n"
6384 "temperature is below 260 K. If the skin temperature is below 270 K,\n"
6385 "it is adjusted to 270 K.\n"
6387 "FASTEM returns unphysical values for propagation close to the\n"
6388 "horizon, here emissivity and reflectivity can be outside [0,1].\n"
6389 "If either emissivity or reflectivity is below/above 0/1, it is\n"
6390 "set to 0/1, and the other value is set to 1/0. That is, e+r=1\n"
6391 "is enforced. These problems start about 15 degrees from the horizon.\n"),
6392 AUTHORS(
"Oliver Lemke, Patrick Eriksson"),
6394 GOUT(
"emissivity",
"reflectivity"),
6396 GOUT_DESC(
"Emission values. One row for each frequency. See above.",
6397 "Reflectivity values. One row for each frequency. See above."),
6398 IN(
"f_grid",
"surface_skin_t"),
6405 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric",
"Numeric",
"Vector",
"Index"),
6407 GIN_DESC(
"Zenith angle of line-of-sigh, 90 to 180 deg.",
6408 "Salinity, 0-1. That is, 3% is given as 0.03.",
6410 "Azimuth angle between wind direction and line-of-sight. "
6411 "This angle is measured clockwise from north, i.e. E=90deg.",
6412 "The transmission of the atmosphere, along the propagation "
6413 "path of the downwelling radiation. One value per frequency.",
6414 "The version of FASTEM to use.")));
6417 NAME(
"FieldFromGriddedField"),
6418 DESCRIPTION(
"Extract the data from a GriddedField.\n"
6420 "A check is performed that the grids from the\n"
6421 "GriddedField match *p_grid*, *lat_grid* and *lon_grid*.\n"),
6425 GOUT_TYPE(
"Matrix, Tensor3, Tensor4, Tensor4"),
6427 IN(
"p_grid",
"lat_grid",
"lon_grid"),
6430 "GriddedField2, GriddedField3, GriddedField4, ArrayOfGriddedField3"),
6432 GIN_DESC(
"Raw input gridded field.")));
6436 DESCRIPTION(
"Sets an index variable that acts as an on/off flag to 0.\n"),
6450 DESCRIPTION(
"Sets an index variable that acts as an on/off flag to 1.\n"),
6464 DESCRIPTION(
"Flattens an ArrayOfArray<T> to Array<T> or an Array\n"
6465 "of matpack-types to a larger dimension matpack (if dimensions agree)\n"
6467 "The intended transformation for arrays is (sub-arrays can have different sizes):\n"
6468 " {{a, b, c}, {d, e}} -> {a, b, c, d, e}\n"
6470 "The intended transformation for arrays to matpack types is (sub-types must have same size):\n"
6471 " {{a, b, c}, {d, e, f}} -> {a, b, c, d, e, f}\n"),
6475 GOUT_TYPE(
"ArrayOfTime,ArrayOfVector,Matrix,Tensor3,Tensor4,Tensor5,Tensor6,Tensor7"),
6476 GOUT_DESC(
"Flatter array/matpack-type"),
6479 GIN_TYPE(
"ArrayOfArrayOfTime,ArrayOfArrayOfVector,ArrayOfVector,ArrayOfMatrix,ArrayOfTensor3,ArrayOfTensor4,ArrayOfTensor5,ArrayOfTensor6"),
6486 "A simple for-loop.\n"
6488 "This method is handy when you quickly want to test out a calculation\n"
6489 "with a set of different settings.\n"
6491 "It does a for-loop from start to stop in steps of step (who would\n"
6492 "have guessed that). For each iteration, the agenda *forloop_agenda* is\n"
6493 "executed. Inside the agenda, the variable *forloop_index* is available\n"
6494 "as index counter.\n"
6496 "There are no other inputs to *forloop_agenda*, and also no outputs. That\n"
6497 "means, if you want to get any results out of this loop, you have to\n"
6498 "save it to files (for example with *WriteXMLIndexed*), since\n"
6499 "variables used inside the agenda will only be local.\n"
6501 "Note that this kind of for loop is not parallel.\n"
6503 "The method is intended for simple testing, not as a replacement of\n"
6504 "*ybatchCalc*. However, it is compatible with *ybatchCalc*, in the sense\n"
6505 "that *ybatchCalc* may occur inside *forloop_agenda*.\n"),
6511 IN(
"forloop_agenda"),
6512 GIN(
"start",
"stop",
"step"),
6513 GIN_TYPE(
"Index",
"Index",
"Index"),
6515 GIN_DESC(
"Start value.",
"End value.",
"Step size.")));
6518 NAME(
"FrequencyFromWavelength"),
6520 "Convert from wavelength [m] to frequency [Hz].\n"
6522 "This is a generic method. It can take a single wavelength value or a wavelength vector as input.\n"),
6535 NAME(
"FrequencyFromCGSAngularWavenumber"),
6537 "Convert from angular wavenumber [cm^-1] to frequency [Hz].\n"
6539 "This converts angular wavenumber (2*PI/wavelength) into frequency.\n"),
6546 GIN(
"angular_wavenumber"),
6549 GIN_DESC(
"angular wavenumber [cm^-1]")));
6552 NAME(
"FrequencyFromCGSKayserWavenumber"),
6554 "Convert from Kayser wavenumber [cm^-1] to frequency [Hz].\n"
6556 "This converts Kayser wavenumber (1/wavelength) into frequency.\n"),
6563 GIN(
"kayser_wavenumber"),
6566 GIN_DESC(
"Kayser wavenumber [cm^-1]")));
6569 NAME(
"f_gridFromAbsorptionLines"),
6570 DESCRIPTION(
"Sets *f_grid* to a grid relative to *abs_lines_per_species*\n"
6572 "Each line will have *abs_lines_per_species* will have a grid\n"
6573 "of *num_freqs* grid points in [f0+*delta_f_low*, f0+*delta_f_upp*],\n"
6574 "where f0 is the line center.\n"
6576 "Before leaving the function, *f_grid* is sorted.\n"
6578 "Note that this method could generate significantly large *f_grid*\n"
6579 "if used carelessly\n"),
6585 IN(
"abs_lines_per_species"),
6586 GIN(
"delta_f_low",
"delta_f_upp",
"num_freqs"),
6587 GIN_TYPE(
"Numeric",
"Numeric",
"Index"),
6590 "Upper range of delta f",
6591 "Number of frequencies")));
6594 NAME(
"f_gridFromGasAbsLookup"),
6596 "Sets *f_grid* to the frequency grid of *abs_lookup*.\n"
6598 "Must be called between importing/creating raw absorption table and\n"
6599 "call of *abs_lookupAdapt*.\n"),
6612 NAME(
"f_gridFromSensorAMSU"),
6614 "Automatically calculate f_grid to match the sensor.\n"
6616 "This method is handy if you are simulating an AMSU-type instrument,\n"
6617 "consisting of a few discrete channels. The case that channels touch,\n"
6618 "as for MHS, is handled correctly. But the case that channels overlap\n"
6619 "is not (yet) handled and results in an error message.\n"
6621 "The method calculates *f_grid* to match the instrument, as given by\n"
6622 "the local oscillator frequencies *lo_multi*, the backend\n"
6623 "frequencies *f_backend_multi*, and the backend channel\n"
6624 "responses *backend_channel_response_multi*.\n"
6626 "You have to specify the desired spacing in the keyword *spacing*,\n"
6627 "which has a default value of 100 MHz. (The actual value is 0.1e9,\n"
6628 "since our unit is Hz.)\n"
6630 "The produced grid will not have exactly the requested spacing, but\n"
6631 "will not be coarser than requested. The algorithm starts with the band\n"
6632 "edges, then adds additional points until the spacing is at least as\n"
6633 "fine as requested.\n"
6635 "There is a similar method for HIRS-type instruments,\n"
6636 "see *f_gridFromSensorHIRS*.\n"),
6637 AUTHORS(
"Stefan Buehler, Mathias Milz"),
6642 IN(
"lo_multi",
"f_backend_multi",
"backend_channel_response_multi"),
6646 GIN_DESC(
"Desired grid spacing in Hz.")));
6649 NAME(
"f_gridFromSensorAMSUgeneric"),
6651 "Automatcially calculate f_grid to match the sensor. \n"
6652 "This function is based on 'f_gridFromSensorAMSU' \n"
6654 "The method calculates *f_grid* to match the instrument, as given by\n"
6655 "the backend frequencies *f_backend*, and the backend channel\n"
6656 "responses *backend_channel_response*.\n"
6658 "You have to specify the desired spacing in the keyword *spacing*,\n"
6659 "which has a default value of 100 MHz. (The actual value is 0.1e9,\n"
6660 "since our unit is Hz.)"
6662 "The produced grid will not have exactly the requested spacing, but\n"
6663 "it will not be coarser than requested. The algorithm starts with the band\n"
6664 "edges, then adds additional points until the spacing is at least as\n"
6665 "fine as requested.\n"),
6671 IN(
"f_backend_multi",
"backend_channel_response_multi"),
6672 GIN(
"spacing",
"verbosityVect"),
6675 GIN_DESC(
"Desired grid spacing in Hz.",
"Bandwidth adjusted spacing")));
6678 NAME(
"f_gridFromSensorHIRS"),
6680 "Automatically calculate f_grid to match the sensor.\n"
6682 "This method is handy if you are simulating a HIRS-type instrument,\n"
6683 "consisting of a few discrete channels.\n"
6685 "It calculates f_grid to match the instrument, as given by the nominal\n"
6686 "band frequencies *f_backend* and the spectral channel response\n"
6687 "functions given by *backend_channel_response*.\n"
6689 "You have to specify the desired spacing in the keyword *spacing*, which\n"
6690 "has a default value of 5e8 Hz.\n"
6692 "The produced grid will not have exactly the requested spacing, but\n"
6693 "will not be coarser than requested. The algorithm starts with the band\n"
6694 "edges, then adds additional points until the spacing is at least as\n"
6695 "fine as requested.\n"
6697 "There is a similar method for AMSU-type instruments, see\n"
6698 "*f_gridFromSensorAMSU*.\n"),
6704 IN(
"f_backend",
"backend_channel_response"),
6708 GIN_DESC(
"Desired grid spacing in Hz.")));
6711 NAME(
"f_gridMetMM"),
6713 "Sets *f_grid* and associated variables match MetMM settings.\n"
6715 "The method calculates *f_grid* to match the specifications of a\n"
6716 "*met_mm_backend* table and method arguments.\n"
6718 "You have to specify the desired spacing using the keyword *freq_spacing*.\n"
6719 "You can pass a *Vector* with one element to apply the same spacing to all\n"
6720 "channels or pass a spacing value for each channel separately.\n"
6722 "Optionally, *freq_number* can be set to specify the mininum number of\n"
6723 "frequencies per passband for each channel. The frequencies are placed\n"
6724 "equally spaced in each passband. The minimum spacing resulting from\n"
6725 "*freq_number* and *freq_spacing* will be used for the calculation. To\n"
6726 "explicitly use *freq_spacing* for a channel, *freq_number* can be set\n"
6727 "to -1 for this channel.\n"
6729 "The number of elements in *freq_number* can either be the number of\n"
6730 "channels or 1. If only one element is given, this number is used for\n"
6731 "all channels. If *freq_number* is 1 and *freq_spacing* is wider than\n"
6732 "the bandwidth of the channel, one frequency is placed in the middle of\n"
6735 "Frequencies that would be closer than *freq_merge_threshold* in the\n"
6736 "generated *f_grid* are merged together. This value should be left at\n"
6737 "the default value. This is only meant to compensate for numerical\n"
6738 "inaccuracies in the frequency calculation to merge frequency that are\n"
6739 "supposed to be identical.\n"),
6740 AUTHORS(
"Oliver Lemke",
"Patrick Eriksson"),
6743 "channel2fgrid_indexes",
6744 "channel2fgrid_weights"),
6748 IN(
"met_mm_backend"),
6749 GIN(
"freq_spacing",
"freq_number",
"freq_merge_threshold"),
6750 GIN_TYPE(
"Vector",
"ArrayOfIndex",
"Numeric"),
6752 GIN_DESC(
"Desired grid spacing in Hz.",
6753 "Number of frequencies per passband for each channel.",
6754 "Merge frequencies that are closer than this value in Hz.")));
6759 "Gravity at zero altitude on Earth.\n"
6761 "Sets *g0* for the given latitude using a standard parameterisation.\n"),
6776 "Numeric from Wikipedia.\n"),
6791 "Gravity at zero altitude on Jupiter.\n"
6793 "Sets *g0* to mean equatorial gravity on Jupiter. Value provided by\n"
6794 "MPS under ESA-planetary study (TN1).\n"),
6809 "Gravity at zero altitude on Mars.\n"
6811 "Sets *g0* to mean equatorial gravity on Mars. Value provided by\n"
6812 "MPS under ESA-planetary study (TN1).\n"),
6827 "Gravity at zero altitude on Venus.\n"
6829 "Sets *g0* to mean equatorial gravity on Venus. Value from Ahrens\n"
6830 "(1995), provided by MPS under ESA-planetary study (TN1).\n"),
6843 NAME(
"geo_posEndOfPpath"),
6844 DESCRIPTION(
"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. This will be the surface,\n"
6848 "top-of-the atmosphere or cloudbox position, depending of\n"
6849 "observation geometry and if the cloudbox is active.\n"),
6862 NAME(
"geo_posLowestAltitudeOfPpath"),
6864 "Sets geo-position based on *ppath*.\n"
6866 "The geo-position is set to the position of the last point\n"
6867 "of the present propagation path having the lowest altitude.\n"),
6880 NAME(
"geo_posWherePpathPassesZref"),
6882 "Sets geo-position based on *ppath*.\n"
6884 "The geo-position is set to the position where the propagation\n"
6885 "path passes the reference altitude. If this altitude is passes\n"
6886 "more than once, the passing closest to the sensor is selected.\n"
6887 "If the reference altitude is not passed at all, *geo_pos* is\n"
6901 NAME(
"GetEnvironmentVariable"),
6903 "Copy the contents of an environment variable to an ARTS String or Index.\n"),
6908 GOUT_DESC(
"Contents of environment variable."),
6913 GIN_DESC(
"Name of environment variable.")));
6917 DESCRIPTION(
"Returns the number of threads used by ARTS.\n"),
6933 "See *ArrayOfGriddedFieldGetNames*.\n"),
6940 GIN(
"griddedfield"),
6941 GIN_TYPE(
"GriddedField1, GriddedField2, GriddedField3, "
6942 "GriddedField4, GriddedField5, GriddedField6 "),
6950 NAME(
"GriddedFieldLatLonExpand"),
6952 "Expands the latitude and longitude grid of the GriddedField to\n"
6953 "[-90, 90] and [0,360], respectively. Expansion is only done in\n"
6954 "the dimension(s), where the grid size is 1.\n"
6955 "The values from the input data will be duplicated to accomodate\n"
6956 "for the larger size of the output field.\n"
6957 "gfield_raw_out and gfield_raw_in can be the same variable.\n"),
6962 "GriddedField2, GriddedField3, GriddedField4, ArrayOfGriddedField3"),
6967 "GriddedField2, GriddedField3, GriddedField4, ArrayOfGriddedField3"),
6969 GIN_DESC(
"Raw input gridded field.")));
6972 NAME(
"GriddedFieldLatLonRegrid"),
6974 "Interpolates the input field along the latitude and longitude dimensions\n"
6975 "to *lat_true* and *lon_true*.\n"
6977 "If the input longitude grid is outside of *lon_true* it will be shifted\n"
6978 "left or right by 360. If it covers 360 degrees, a cyclic interpolation\n"
6979 "will be performed.\n"
6980 "in and out fields can be the same variable.\n"),
6985 "GriddedField2, GriddedField3, GriddedField4, ArrayOfGriddedField3"),
6987 IN(
"lat_true",
"lon_true"),
6988 GIN(
"in",
"interp_order"),
6990 "GriddedField2, GriddedField3, GriddedField4, ArrayOfGriddedField3",
6993 GIN_DESC(
"Raw input gridded field.",
"Interpolation order.")));
6996 NAME(
"GriddedFieldPRegrid"),
6998 "Interpolates the input field along the pressure dimension to *p_grid*.\n"
7000 "If zero-padding is applied (zeropadding=1), pressures that are\n"
7001 "outside the *p_grid* are set to 0. This is thought, e.g., for VMR\n"
7002 "fields that outside the given pressure can safely be assumed to be\n"
7004 "Note: Using zeropadding for altitude and temperature fields is\n"
7005 "strongly discouraged (it will work here, though, but likely trigger\n"
7006 "errors later on).\n"
7007 "Extrapolation is allowed within the common 0.5grid-step margin,\n"
7008 "but is overruled by zeropadding.\n"
7009 "in and out fields can be the same variable.\n"),
7013 GOUT_TYPE(
"GriddedField3, GriddedField4, ArrayOfGriddedField3"),
7016 GIN(
"in",
"interp_order",
"zeropadding"),
7017 GIN_TYPE(
"GriddedField3, GriddedField4, ArrayOfGriddedField3",
7021 GIN_DESC(
"Raw input gridded field.",
7022 "Interpolation order.",
7023 "Apply zero-padding.")));
7026 NAME(
"GriddedFieldZToPRegrid"),
7028 "Interpolates the input field along the vertical dimension to *p_grid*.\n"
7030 "This is done from z_field, and thus requires the atmosphere to be set \n"
7033 "The latitude and longitude grid of the input field must match *lat_grid*\n"
7034 "and *lon_grid* for the method to work.\n"
7041 GOUT_DESC(
"Regridded output; Pressure-gridded field."),
7042 IN(
"p_grid",
"lat_grid",
"lon_grid",
"z_field"),
7043 GIN(
"in",
"interp_order",
"zeropadding"),
7044 GIN_TYPE(
"GriddedField3",
"Index",
"Index"),
7046 GIN_DESC(
"Raw input; Altitude-gridded field.",
7047 "Interpolation order.",
7048 "Apply zero-padding.")));
7050 NAME(
"heating_ratesFromIrradiance"),
7052 "Calculates heating rates. It assumes that the heating rates\n"
7053 "depend only on the vertical derivation of the net flux.\n"
7054 "The net flux is the sum of the irradiance field in upward \n"
7055 " direction and the irradiance field in downward direction\n"),
7057 OUT(
"heating_rates"),
7061 IN(
"p_grid",
"irradiance_field",
"specific_heat_capacity",
"g0"),
7070 "Ignore a workspace variable.\n"
7072 "This method is handy for use in agendas in order to suppress warnings\n"
7073 "about unused input workspace variables. What it does is: Nothing!\n"
7074 "In other words, it just ignores the variable it is called on.\n"
7076 "This method can ignore any workspace variable you want.\n"
7080 "AgendaSet(els_agenda){\n"
7081 " Ignore(ls_sigma)\n"
7085 "Without Ignore you would get an error message, because 'els_agenda' is\n"
7086 "supposed to use the Doppler width 'ls_sigma', but the Lorentz lineshape\n"
7087 "'elsLorentz' does not need it.\n"),
7097 GIN_DESC(
"Variable to be ignored."),
7105 "Includes the contents of another controlfile.\n"
7107 "The INCLUDE statement inserts the contents of the controlfile\n"
7108 "with the given name into the current controlfile.\n"
7109 "If the filename is given without path information, ARTS will\n"
7110 "first search for the file in all directories specified with the\n"
7111 "-I (see arts -h) commandline option and then in directories given\n"
7112 "in the environment variable ARTS_INCLUDE_PATH. In the environment\n"
7113 "variable multiple paths have to be separated by colons.\n"
7115 "Note that INCLUDE is not a workspace method and thus the\n"
7116 "syntax is different:\n"
7119 " INCLUDE \"general.arts\"\n"
7122 "Includes can also be nested. In the example above general.arts\n"
7123 "can contain further includes which will then be treated\n"
7126 "The idea behind this mechanism is that you can write common settings\n"
7127 "for a bunch of calculations into one file. Then, you can create\n"
7128 "several controlfiles which include the basic settings and tweak them\n"
7129 "for different cases. When you decide to make changes to your setup\n"
7130 "that should apply to all calculations, you only have to make a\n"
7131 "single change in the include file instead of modifying all your\n"
7147 "Adds a index and a value (out = in+value).\n"
7149 "The result can either be stored in the same or another index.\n"
7150 "(in and out can be the same variable, but not out and value)\n"),
7151 AUTHORS(
"Patrick Eriksson, Oliver Lemke"),
7160 GIN_DESC(
"Input Index.",
"Value to add.")));
7163 NAME(
"IndexNumberOfAtmosphericPoints"),
7165 "Counts number of points in the atmosphere.\n"
7167 "For a 3D atmosphere the method sets *n* to:\n"
7168 " p_grid.nelem()*lat_grid.nelem()*lon_grid.nelem()\n"
7169 "For 1D and 2D the same calculation is done, but ignoring dimensions\n"
7175 GOUT_DESC(
"Variable to set with number of points."),
7176 IN(
"atmosphere_dim",
"p_grid",
"lat_grid",
"lon_grid"),
7184 DESCRIPTION(
"Sets an index workspace variable to the given value.\n"),
7198 NAME(
"IndexSetToLast"),
7200 "Set an Index to point towards last position of array-type variables.\n"
7202 "This method works as nelemGet, but gives the index number of the last\n"
7203 "element (which equals nelem-1).\n"),
7204 AUTHORS(
"Patrick Eriksson",
"Oliver Lemke"),
7211 GIN_TYPE(ARRAY_GROUPS +
", Vector"),
7213 GIN_DESC(
"The method is defined for these groups."),
7222 "Input and output can be same variable.\n"),
7232 GIN_DESC(
"Input index variable.")));
7238 "Input and output can be same variable.\n"),
7248 GIN_DESC(
"Input index variable.")));
7251 NAME(
"InterpAtmFieldToPosition"),
7252 DESCRIPTION(
"Point interpolation of atmospheric fields.\n"
7254 "The default way to specify the position is by *rtp_pos*.\n"
7256 "Linear interpolation is applied.\n"),
7261 GOUT_DESC(
"Value obtained by the interpolation."),
7262 IN(
"atmosphere_dim",
7271 GIN_DESC(
"Field to interpolate.")));
7274 NAME(
"InterpGriddedField2ToPosition"),
7276 "Latitude and longitude interpolation of a GriddedField2.\n"
7278 "The default way to specify the position is by *rtp_pos*.\n"
7280 "The interpolation is done for the latitude and longitude in\n"
7281 "*rtp_pos*. The altitude in *rtp_pos* is completely ignored.\n"
7282 "Linear interpolation is applied.\n"
7284 "The input field (*gfield2*) is expected to have latitude and\n"
7285 "longitude as first and second dimension.\n"),
7290 GOUT_DESC(
"Value obtained by interpolation."),
7291 IN(
"atmosphere_dim",
"lat_grid",
"lat_true",
"lon_true",
"rtp_pos"),
7295 GIN_DESC(
"Gridded field to interpolate.")));
7298 NAME(
"InterpSurfaceFieldToPosition"),
7300 "Point interpolation of surface fields.\n"
7302 "The default way to specify the position is by *rtp_pos*.\n"
7304 "Linear interpolation is applied.\n"
7306 "The interpolation is done for the latitude and longitude in\n"
7307 "*rtp_pos*, while the altitude in *rtp_pos* is not part of the\n"
7308 "calculations. However, it is checked that the altitude of *rtp_pos*\n"
7309 "is inside the range covered by *z_surface* with a 1 m margin, to\n"
7310 "give a warning when the specified position is not consistent with\n"
7311 "the surface altitudes.\n"),
7316 GOUT_DESC(
"Value obtained by interpolation."),
7317 IN(
"atmosphere_dim",
"lat_grid",
"lon_grid",
"rtp_pos",
"z_surface"),
7321 GIN_DESC(
"Field to interpolate.")));
7324 NAME(
"irradiance_fieldFromRadiance"),
7326 "Calculate the irradiance also known as flux density from the *radiance_field* .\n"
7327 "by integrating over the angular grids according to the grids set\n"
7328 "by *AngularGridsSetFluxCalc* \n"
7329 "See *AngularGridsSetFluxCalc to set \n"
7330 "*za_grid, aa_grid, and za_grid_weights*\n"),
7332 OUT(
"irradiance_field"),
7336 IN(
"radiance_field",
"za_grid",
"aa_grid",
"za_grid_weights"),
7343 NAME(
"isotopologue_ratiosInitFromBuiltin"),
7345 "Initialize isotopologue ratios with default values from built-in\n"
7348 OUT(
"isotopologue_ratios"),
7359 NAME(
"iyActiveSingleScat"),
7361 "Simulation of radar/lidar, restricted to single scattering.\n"
7363 "The WSM treats e.g. radar measurements of cloud and precipitation,\n"
7364 "on the condition that multiple scattering can be ignored. Beside\n"
7365 "the direct backsacttering, the two-way attenuation by gases and\n"
7366 "particles is considered. Surface scattering is ignored.\n"
7368 "The method could potentially be used for lidars, but multiple\n"
7369 "scattering poses here a must stronger constrain for the range of\n"
7372 "The method can be used with *iyCalc*, but not with *yCalc*. In the\n"
7373 "later case, use instead *yActive*.\n"
7375 "The method returns the backscattering for each point of *ppath*.\n"
7376 "Several frequencies can be treated in parallel. The size of *iy*\n"
7377 "is [ nf*np, stokes_dim ], where nf is the length of *f_grid* and\n"
7378 "np is the number of path points. The data are stored in blocks\n"
7379 "of [ np, stokes_dim ]. That is, all the results for the first\n"
7380 "frequency occupy the np first rows of *iy* etc.\n"
7382 "The polarisation state of the transmitted pulse is taken from\n"
7383 "*iy_transmitter_agenda*. If the radar transmits several polarisations\n"
7384 "at the same frequency, you need to handle this by using two frequencies\n"
7385 "in *f_grid*, but these can be almost identical.\n"
7387 "This method does not consider *iy_unit*. Unit changes are insted applied\n"
7388 "in *yActive. The output of this method matches the option \"1\".\n"
7390 "Transmission is handled in a slightly simplified manner for efficiency\n"
7391 "reasons. First of all, the transmission matrix is assumed to be the same\n"
7392 "in both directions between the sensor and the point of back-scattering.\n"
7393 "This should in general be true, but exceptions could exist. The extinction\n"
7394 "due to particles can also be scaled, which could be of interest when e.g.\n"
7395 "characterising inversions.\n"
7397 "Further, for Jacobian calculations the default is to assume that the\n"
7398 "transmission is unaffected by the retrieval quantities. This is done\n"
7399 "to save computational time, and should be a valid approximation for the\n"
7400 "single-scattering conditions. Set *trans_in_jacobian* to 1 to obtain\n"
7401 "the more accurate Jacobian.\n"
7403 "Some auxiliary radiative transfer quantities can be obtained. Auxiliary\n"
7404 "quantities are selected by *iy_aux_vars* and returned by *iy_aux*.\n"
7405 "Valid choices for auxiliary data are:\n"
7406 " \"Radiative background\": Index value flagging the radiative\n"
7407 " background. The following coding is used: 0=space, 1=surface\n"
7408 " and 2=cloudbox.\n"
7409 " \"Backscattering\": The unattenuated backscattering. That is, as\n"
7410 " *iy* but with no attenuated applied. Here all columns are filled.\n"
7411 " \"Optical depth\": Scalar, total and two-way, optical depth between\n"
7412 " sensor and each point of the propagation path. Calculated based on\n"
7413 " the (1,1)-element of the transmission matrix (1-based indexing),\n"
7414 " i.e. only fully valid for scalar RT.\n"
7415 " \"Particle extinction\": As \"Optical depth\", but only with particle\n"
7416 " attenuation included. That is, gas absorption is ignored.\n"
7417 "If nothing else is stated, only the first column of *iy_aux* is filled,\n"
7418 "i.e. the column matching Stokes element I, while remaing columns are\n"
7419 "are filled with zeros.\n"),
7432 "ppvar_trans_cumulat"),
7457 "scat_data_checked",
7460 "jacobian_quantities",
7462 "propmat_clearsky_agenda",
7463 "water_p_eq_agenda",
7464 "iy_transmitter_agenda",
7468 GIN(
"trans_in_jacobian",
"pext_scaling",
"t_interp_order"),
7469 GIN_TYPE(
"Index",
"Numeric",
"Index"),
7471 GIN_DESC(
"Flag determining if change in transmission is considered"
7472 " in calculation of the Jacobian or not.",
7473 "Particle extinction is scaled with this value. A value"
7474 " inside [0,2]. Set it to 0 if you want to remove particle"
7475 " extinction totally.",
7476 "Interpolation order of temperature for scattering data (so"
7477 " far only applied in phase matrix, not in extinction and"
7481 NAME(
"iyActiveSingleScat2"),
7483 AUTHORS(
"Patrick Eriksson",
"Richard Larsson"),
7495 "ppvar_trans_cumulat"),
7520 "scat_data_checked",
7523 "jacobian_quantities",
7525 "propmat_clearsky_agenda",
7526 "water_p_eq_agenda",
7527 "iy_transmitter_agenda",
7531 GIN(
"trans_in_jacobian",
"pext_scaling",
"t_interp_order"),
7532 GIN_TYPE(
"Index",
"Numeric",
"Index"),
7534 GIN_DESC(
"Flag determining if change in transmission is considered"
7535 " in calculation of the Jacobian or not.",
7536 "Particle extinction is scaled with this value. A value"
7537 " inside [0,2]. Set it to 0 if you want to remove particle"
7538 " extinction totally.",
7539 "Interpolation order of temperature for scattering data (so"
7540 " far only applied in phase matrix, not in extinction and"
7544 NAME(
"iyApplyUnit"),
7546 "Conversion of *iy* to other spectral units.\n"
7548 "The method allows a change of unit, as a post-processing step,\n"
7549 "ignoring the n2-law of radiance.\n"
7551 "The conversion made inside *iyEmissionStandard* is mimiced,\n"
7552 "see that method for constraints and selection of output units.\n"
7553 "Restricted to that the n2-law can be ignored. This assumption\n"
7554 "is valid if the sensor is placed in space, or if the refractive\n"
7555 "index only deviates slightly from unity.\n"
7557 "It is stressed that there is no automatic check that the method is\n"
7558 "applied correctly, it is up to the user to ensure that the input\n"
7559 "data are suitable for the conversion.\n"
7561 "Beside *iy*, these auxilary quantities are modified:\n"
7562 " \"iy\", \"Error\" and \"Error (uncorrelated)\"\n"
7564 "Please note that *diy_dx* is not handled.\n"),
7566 OUT(
"iy",
"iy_aux"),
7570 IN(
"iy",
"iy_aux",
"stokes_dim",
"f_grid",
"iy_aux_vars",
"iy_unit"),
7581 "A single monochromatic pencil beam calculation.\n"
7583 "Performs monochromatic radiative transfer calculations for the\n"
7584 "specified position (*rte_pos*) and line-of-sight (*rte_pos*).\n"
7585 "See *iy* and associated variables for format of output.\n"
7587 "Please note that Jacobian type calculations not are supported.\n"
7588 "For this use *yCalc*.\n"
7590 "No sensor characteristics are applied. These are most easily\n"
7591 "incorporated by using *yCalc*\n"),
7593 OUT(
"iy",
"iy_aux",
"ppath"),
7597 IN(
"atmgeom_checked",
7598 "atmfields_checked",
7603 "scat_data_checked",
7617 NAME(
"iyEmissionStandard"),
7619 "Standard method for radiative transfer calculations with emission.\n"
7621 "Designed to be part of *iy_main_agenda*. That is, only valid\n"
7622 "outside the cloudbox (no scattering). For details se the user guide.\n"
7624 "The possible choices for *iy_unit* are\n"
7625 " \"1\" : No conversion, i.e. [W/(m^2 Hz sr)] (radiance per\n"
7626 " frequency unit).\n"
7627 " \"RJBT\" : Conversion to Rayleigh-Jean brightness\n"
7629 " \"PlanckBT\" : Conversion to Planck brightness temperature.\n"
7630 " \"W/(m^2 m sr)\" : Conversion to [W/(m^2 m sr)] (radiance per\n"
7631 " wavelength unit).\n"
7632 " \"W/(m^2 m-1 sr)\": Conversion to [W/(m^2 m-1 sr)] (radiance per\n"
7633 " wavenumber unit).\n"
7634 "Expressions applied and considerations for the unit conversion of\n"
7635 "radiances are discussed in Sec. 5.7 of the ARTS-2.0 article.\n"
7637 "*iy_unit* is only applied if *iy_agenda_call1* is 1. This means that\n"
7638 "no unit ocnversion is applied for internal iterative calls.\n"
7640 "Some auxiliary radiative transfer quantities can be obtained. Auxiliary\n"
7641 "quantities are selected by *iy_aux_vars* and returned by *iy_aux*.\n"
7642 "Valid choices for auxiliary data are:\n"
7643 " \"Radiative background\": Index value flagging the radiative\n"
7644 " background. The following coding is used: 0=space, 1=surface\n"
7645 " and 2=cloudbox.\n"
7646 " \"Optical depth\": Scalar optical depth between the observation point\n"
7647 " and the end of the present propagation path. Calculated based on\n"
7648 " the (1,1)-element of the transmission matrix (1-based indexing),\n"
7649 " i.e. only fully valid for scalar RT.\n"
7650 "If nothing else is stated, only the first column of *iy_aux* is filled,\n"
7651 "i.e. the column matching Stokes element I, while remaing columns are\n"
7652 "are filled with zeros.\n"),
7653 AUTHORS(
"Patrick Eriksson",
"Richard Larsson",
"Oliver Lemke"),
7665 "ppvar_trans_cumulat",
7666 "ppvar_trans_partial"),
7690 "jacobian_quantities",
7693 "propmat_clearsky_agenda",
7694 "water_p_eq_agenda",
7697 "iy_surface_agenda",
7698 "iy_cloudbox_agenda",
7702 "surface_props_data"),
7709 NAME(
"iyEmissionStandardSequential"),
7711 "DEPRECATED! Should go away soon\n"
7712 "Sequential version of *iyEmissionStandard*\n"
7714 "For documentation see *iyEmissionStandard*.\n"),
7715 AUTHORS(
"Patrick Eriksson",
"Richard Larsson"),
7727 "ppvar_trans_cumulat",
7728 "ppvar_trans_partial"),
7752 "jacobian_quantities",
7755 "propmat_clearsky_agenda",
7756 "water_p_eq_agenda",
7759 "iy_surface_agenda",
7760 "iy_cloudbox_agenda",
7764 "surface_props_data"),
7855 AUTHORS(
"Patrick Eriksson",
"Jana Mendrok",
"Richard Larsson"),
7868 "ppvar_trans_cumulat"),
7897 "jacobian_quantities",
7898 "propmat_clearsky_agenda",
7899 "water_p_eq_agenda",
7902 "iy_surface_agenda",
7903 "iy_cloudbox_agenda",
7909 "surface_props_data",
7912 GIN(
"Naa_grid",
"t_interp_order"),
7915 GIN_DESC(
"Number of azimuth angles to consider in scattering source term"
7917 "Interpolation order of temperature for scattering data (so"
7918 " far only applied in phase matrix, not in extinction and"
7923 DESCRIPTION(
"So far just for even more testing.\n"),
7924 AUTHORS(
"Patrick Eriksson",
"Jana Mendrok",
"Richard Larsson"),
7937 "ppvar_trans_cumulat"),
7966 "jacobian_quantities",
7967 "propmat_clearsky_agenda",
7968 "water_p_eq_agenda",
7971 "iy_surface_agenda",
7972 "iy_cloudbox_agenda",
7978 "surface_props_data",
7981 GIN(
"Naa_grid",
"t_interp_order"),
7984 GIN_DESC(
"Number of azimuth angles to consider in scattering source term"
7986 "Interpolation order of temperature for scattering data (so"
7987 " far only applied in phase matrix, not in extinction and"
7991 NAME(
"iyIndependentBeamApproximation"),
7994 "Describe how *atm_fields_compact* is filled.\n"),
7996 OUT(
"iy",
"iy_aux",
"ppath",
"diy_dx",
"atm_fields_compact"),
8034 "iy_independent_beam_approx_agenda"),
8035 GIN(
"return_atm1d",
"skip_vmr",
"skip_pnd",
"return_masses"),
8036 GIN_TYPE(
"Index",
"Index",
"Index",
"Index"),
8039 "Flag to trigger that *atm_fields_compact* is filled. ",
8040 "Flag to not include vmr data in *atm_fields_compact*.",
8041 "Flag to not include pnd data in *atm_fields_compact*.",
8042 "Flag to include particle category masses in *atm_fields_compact*."
8043 "Conversion is done by *particle_masses*.")));
8046 NAME(
"iyInterpCloudboxField"),
8048 "Interpolates the intensity field of the cloud box.\n"
8050 "Determines the intensity field at the position and direction\n"
8051 "specified by *rte_pos* and *rte_los*. The position can be both\n"
8052 "inside the cloud box or at its edge.\n"
8054 "The interpolation in the spatial dimensions is linear.\n"
8056 "For the zenith angle dimensions several options for controlling\n"
8057 "the interpolation are at hand. Default is linear interpolation.\n"
8058 "Higher order polynomial interpolation is activated by setting\n"
8059 "*za_interp_order* to a value > 1. Default is to perform the\n"
8060 "interpolation separately for [0,90[ and ]90,180]. To handle\n"
8061 "90 degree or use the full range ([0,180]) as basis for the\n"
8062 "interpolation, set *za_restrict* to 0. You can select to use\n"
8063 "cos(za) as the independent variable (instead of za) by setting\n"
8064 "*cos_za_interp* to 1.\n"
8066 "For the azimuth dimension the interpolation order can be\n"
8067 "selected, in the same manner as for zenith.\n"),
8068 AUTHORS(
"Claudia Emde",
"Patrick Eriksson",
"Jana Mendrok"),
8073 IN(
"cloudbox_field",
8089 GIN(
"za_interp_order",
8094 GIN_TYPE(
"Index",
"Index",
"Index",
"Numeric",
"Index"),
8096 GIN_DESC(
"Zenith angle interpolation order.",
8097 "Flag whether to restric zenith angle interpolation to one "
8099 "Flag whether to do zenith angle interpolation in cosine space.",
8100 "Maximum allowed extrapolation range in zenith angle.",
8101 "Azimuth angle interpolation order.")));
8104 NAME(
"iyLoopFrequencies"),
8106 "Radiative transfer calculations one frequency at the time.\n"
8108 "The method loops the frequencies in *f_grid* and calls\n"
8109 "*iy_loop_freqs_agenda* for each individual value. This method is\n"
8110 "placed in *iy_main_agenda*, and the actual radiative transfer\n"
8111 " method is put in *iy_loop_freqs_agenda*.\n"
8113 "A common justification for using the method should be to consider\n"
8114 "dispersion. By using this method it is ensured that the propagation\n"
8115 "path for each individual frequency is calculated.\n"),
8117 OUT(
"iy",
"iy_aux",
"ppath",
"diy_dx"),
8129 "iy_loop_freqs_agenda"),
8138 "Interface to Monte Carlo part for *iy_main_agenda*.\n"
8140 "Basically an interface to *MCGeneral* for doing monochromatic\n"
8141 "pencil beam calculations. This functions allows Monte Carlo (MC)\n"
8142 "calculations for sets of frequencies and sensor pos/los in a single\n"
8143 "run. Sensor responses can be included in the standard manner\n"
8144 "(through *yCalc*).\n"
8146 "This function does not apply the MC approach when it comes\n"
8147 "to sensor properties. These properties are not considered when\n"
8148 "tracking photons, which is done in *MCGeneral* (but then only for\n"
8149 "the antenna pattern).\n"
8151 "Output unit options (*iy_unit*) exactly as for *MCGeneral*.\n"
8153 "The MC calculation errors are all assumed be uncorrelated and each\n"
8154 "have a normal distribution. These properties are of relevance when\n"
8155 "weighting the errors with the sensor repsonse matrix. The seed is\n"
8156 "reset for each call of *MCGeneral* to obtain uncorrelated errors.\n"
8158 "MC control arguments (mc_std_err, mc_max_time, mc_min_iter, mc_max_iter\n"
8159 "mc_taustep_limit) as for *MCGeneral*. The arguments are applied\n"
8160 "for each monochromatic pencil beam calculation individually.\n"
8161 "As for *MCGeneral*, the value of *mc_error* shall be adopted to\n"
8164 "The following auxiliary data can be obtained:\n"
8165 " \"Error (uncorrelated)\": Calculation error. Size: [nf,ns,1,1].\n"
8166 " (The later part of the text string is required. It is used as\n"
8167 " a flag to yCalc for how to apply the sensor data.)\n"
8169 " nf: Number of frequencies.\n"
8170 " ns: Number of Stokes elements.\n"),
8172 OUT(
"iy",
"iy_aux",
"diy_dx"),
8176 IN(
"iy_agenda_call1",
8197 "surface_rtprop_agenda",
8198 "propmat_clearsky_agenda",
8199 "ppath_step_agenda",
8208 "mc_taustep_limit"),
8209 GIN(
"t_interp_order"),
8212 GIN_DESC(
"Interpolation order of temperature for scattering data (so"
8213 " far only applied in phase matrix, not in extinction and"
8335 NAME(
"iyReplaceFromAux"),
8337 "Change of main output variable.\n"
8339 "With this method you can replace the content of *iy* with one of\n"
8340 "the auxiliary variables. The selected variable (by *aux_var*) must\n"
8341 "be part of *iy_aux_vars*. The corresponding data from *iy_aux* are\n"
8342 "copied to form a new *iy* (*iy_aux* is left unchanged). Elements of\n"
8343 "*iy* correponding to Stokes elements not covered by the auxiliary\n"
8344 "variable are just set to zero.\n"
8346 "Jacobian variables are not handled.\n"),
8352 IN(
"iy",
"iy_aux",
"iy_aux_vars",
"jacobian_do"),
8356 GIN_DESC(
"Auxiliary variable to insert as *iy*.")));
8359 NAME(
"iySurfaceCallAgendaX"),
8361 "Switch between the elements of *iy_surface_agenda_array*.\n"
8363 "This method simply calls the agenda matching *surface_type* and\n"
8364 "returns the results. That is, the agenda in *iy_surface_agenda_array*\n"
8365 "with index *surface_type* (0-based) is called.\n"),
8367 OUT(
"iy",
"diy_dx"),
8382 "iy_surface_agenda_array",
8384 "surface_type_aux"),
8391 NAME(
"iySurfaceFastem"),
8393 "Usage of FASTEM for emissivity and reflectivity of water surfaces.\n"
8395 "This method allows usage of the FASTEM model inside\n"
8396 "*iy_surface_agenda*. The aim is to use FASTEM in the exact same\n"
8397 "way as done in RTTOV. For example, the transmittance for down-\n"
8398 "welling radiation is considered. RTTOV os just 1D. Here 2D and 3D\n"
8399 "are handled as the 1D case, the down-welling radiation is just\n"
8400 "calculated for the directuon matching specular reflection.\n"
8402 "The wind direction is given as the azimuth angle, counted\n"
8403 "clockwise from north (i.e. an easterly wind is at 90 deg).\n"
8404 "This matches the general definition of azimuth inside ARTS.\n"
8405 "For 1D and 2D, the wind direction must be adjusted to match the\n"
8406 "fact that the line-of-sight is locked to be at 0 deg (180 for 2D\n"
8407 "in the case of a negative zenith angle). For 3D, the true wind\n"
8408 "direction shall be used.\n"
8410 "FASTEM is called by *FastemStandAlone*. See that WSM for further\n"
8411 "comments on variables and limitations.\n"),
8413 OUT(
"iy",
"diy_dx"),
8432 GIN(
"salinity",
"wind_speed",
"wind_direction",
"fastem_version"),
8433 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric",
"Index"),
8435 GIN_DESC(
"Salinity, 0-1. That is, 3% is given as 0.03.",
8437 "Wind direction. See further above.",
8438 "The version of FASTEM to use.")));
8441 NAME(
"iySurfaceRtpropAgenda"),
8443 "Interface to *surface_rtprop_agenda* for *iy_surface_agenda*.\n"
8445 "This method is designed to be part of *iy_surface_agenda*. It\n"
8446 "determines the radiative properties of the surface by\n"
8447 "*surface_rtprop_agenda* and calculates the downwelling radiation\n"
8448 "by *iy_main_agenda*, and sums up the terms as described in AUG.\n"
8449 "That is, this WSM uses the output from *surface_rtprop_agenda*\n"
8450 "in a straightforward fashion.\n"),
8452 OUT(
"iy",
"diy_dx"),
8470 "surface_rtprop_agenda"),
8477 NAME(
"iySurfaceRtpropCalc"),
8479 "Applies *surface_los*, *surface_rmatrix* and *surface_emission*.\n"
8481 "This method is designed to be part of *iy_surface_agenda* and\n"
8482 "should be mandatory when using methods describing the surface\n"
8483 "radiative transfer properties by *surface_los*, *surface_rmatrix*\n"
8484 "and *surface_emission*. The task of this method is to apply these\n"
8485 "three WSVs to obtain the upwelling radiation from the surface.\n"
8486 "This upwelling radiation is the sum of surface emission and\n"
8487 "reflected downwelling radiation. The later part is calculated\n"
8488 "by calling *iy_main_agenda*. See further AUG.\n"),
8490 OUT(
"iy",
"diy_dx"),
8499 "dsurface_rmatrix_dx",
8500 "dsurface_emission_dx",
8504 "jacobian_quantities",
8521 NAME(
"iyTransmissionStandard"),
8523 "Standard method for handling transmission measurements.\n"
8525 "Designed to be part of *iy_main_agenda*. Treatment of the cloudbox\n"
8526 "is incorporated (that is, no need to define *iy_cloudbox_agenda*).\n"
8528 "The transmitter is assumed to be placed at the end of provided *ppath*.\n"
8529 "The transmitted signal is taken from *iy_transmitter_agenda*. This\n"
8530 "signal is propagated along the path, considering attenuation alone.\n"
8531 "That is, the result of the method (*iy*) is the output of\n"
8532 "*iy_transmitter_agenda* multiplied with the transmission along the\n"
8533 "propagation path.\n"
8535 "As mentioned, the given *ppath* determines the position of the\n"
8536 "transmitter. For clear-sky and no modification of *ppath*, this\n"
8537 "means that the transitter will either be found at the surface or\n"
8538 "at the top-of-the-atmosphere. If you want to maintain this even with\n"
8539 "an active cloudbox, calculate *ppath* as\n"
8540 " ppathCalc( cloudbox_on=0 )\n"
8541 "Without setting cloudbox_on=0, the transmitter will end up inside or\n"
8542 "at the boundary of the cloudbox.\n"
8544 "Some auxiliary radiative transfer quantities can be obtained. Auxiliary\n"
8545 "quantities are selected by *iy_aux_vars* and returned by *iy_aux*.\n"
8546 "Valid choices for auxiliary data are:\n"
8547 " \"Radiative background\": Index value flagging the radiative\n"
8548 " background. The following coding is used: 0=space, 1=surface\n"
8549 " and 2=cloudbox. The value is added to each column.\n"
8550 " \"Optical depth\": Scalar optical depth between the observation point\n"
8551 " and the end of the present propagation path. Calculated based on\n"
8552 " the (1,1)-element of the transmission matrix (1-based indexing),\n"
8553 " i.e. only fully valid for scalar RT. The value is added to each\n"
8555 AUTHORS(
"Patrick Eriksson",
"Richard Larsson"),
8568 "ppvar_trans_cumulat"),
8595 "jacobian_quantities",
8597 "propmat_clearsky_agenda",
8598 "water_p_eq_agenda",
8599 "iy_transmitter_agenda",
8609 NAME(
"iy_transmitterMultiplePol"),
8611 "Transmitted signal having multiple polarisations.\n"
8613 "The method is intended to be part of *iy_transmitter_agenda*. It\n"
8614 "sets *iy* to describe the transmitted signal/pulses. The polarisation\n"
8615 "state is taken from *instrument_pol*, where *instrument_pol* must\n"
8616 "contain an element for each frequency in *f_grid*. The transmitted\n"
8617 "signal/pulses are set to be of unit magnitude, such as [1,1,0,0].\n"),
8623 IN(
"stokes_dim",
"f_grid",
"instrument_pol"),
8630 NAME(
"iy_transmitterSinglePol"),
8632 "Transmitted signal having a single polarisations.\n"
8634 "The method is intended to be part of *iy_transmitter_agenda*. It\n"
8635 "sets *iy* to describe the transmitted pulses/signal. The polarisation\n"
8636 "state is taken from *instrument_pol*, where *instrument_pol* must contain\n"
8637 "a single value. This polarisation state is applied for all\n"
8638 "frequencies. The transmitted pulses/signals are set to be of unit\n"
8639 "magnitude, such as [1,1,0,0].\n"),
8645 IN(
"stokes_dim",
"f_grid",
"instrument_pol"),
8652 NAME(
"jacobianAddAbsSpecies"),
8654 "Includes an absorption species in the Jacobian.\n"
8656 "For 1D or 2D calculations the latitude and/or longitude grid of\n"
8657 "the retrieval field should set to have zero length.\n"
8659 "These retrieval units are at hand for all gas species:\n"
8660 " \"vmr\" : Volume mixing ratio.\n"
8661 " \"nd\" : Number density.\n"
8662 " \"rel\" : Relative unit (e.g. 1.1 means 10% more of the gas).\n"
8664 "For water vapour, also these units are at hand:\n"
8665 " \"rh\" : Relative humidity.\n"
8666 " \"q\" : Specific humidity.\n"
8668 "Note that *for_species_tag* is used to indicate if species tag VMR,\n"
8669 "rather than atmospheric gas VMR is calculated. Set it to 0 and we\n"
8670 "calculate the atmospheric gas VMR, but this only works for \"analytical\".\n"
8672 "Note that the Jacobian is set to zero where volume mixing ratio equals zero.\n"
8674 "The number of elements added to the state vector (*x*) is:\n"
8675 " n_g1 * n_g2 * n_g3\n"
8676 "where n_g1, n_g2 and n_g3 are the length of GIN *g1*, *g2* and *g3*,\n"
8677 "respectively. Here empty vectors should be considered to have a length 1.\n"
8678 "The elements are sorted with pressure as innermost loop, followed by\n"
8679 "latitude and longitude as outermost loop.\n"),
8680 AUTHORS(
"Mattias Ekstrom",
"Patrick Eriksson"),
8681 OUT(
"jacobian_quantities",
"jacobian_agenda"),
8685 IN(
"jacobian_quantities",
8691 GIN(
"g1",
"g2",
"g3",
"species",
"unit",
"for_species_tag"),
8692 GIN_TYPE(
"Vector",
"Vector",
"Vector",
"String",
"String",
"Index"),
8694 GIN_DESC(
"Pressure retrieval grid.",
8695 "Latitude retrieval grid.",
8696 "Longitude retreival grid.",
8697 "The species tag of the retrieval quantity.",
8698 "Retrieval unit. See above.",
8699 "Index-bool for acting on species tags or species."),
8706 NAME(
"jacobianAddBasicCatalogParameter"),
8708 "Includes a basic catalog parameter in the Jacobian. These are constant\n"
8709 "over all layers and so only a single vector output is returned.\n"
8711 "The only basic catalog parameters currently supported are:\n"
8712 " \"Line Strength\"\n"
8713 " \"Line Center\"\n"
8715 "The *catalog_identity* should be able to identify one or many\n"
8716 "lines in the catalog used for calculating the spectral absorption.\n"
8717 "Note that partial matching for energy levels are allowed but not\n"
8718 "recommended, as it is somewhat nonsensical to add multiple parameters\n"
8720 "Also note *jacobianAddShapeCatalogParameter* as this allows addition\n"
8721 "of shape parameters, e.g., pressure broadening coefficients\n"
8723 "Each call to this function adds just a single value to *x*.\n"
8725 "Example given the catalog_identity=\"O2-66 TR UP v1 0 J 1 LO v1 0 J 0\",\n"
8726 "only the O2 ground-level 119 GHz line can be accessed and only its\n"
8727 "catalog_parameter will be accessed. However, the more lenient\n"
8728 "catalog_identity=\"O2-66 TR UP J 1 LO J 0\" may be used, but then the\n"
8729 "118 GHz line belonging to v1=1 branch will be added to the same *x*.\n"),
8731 OUT(
"jacobian_quantities",
"jacobian_agenda"),
8735 IN(
"jacobian_quantities",
"jacobian_agenda"),
8736 GIN(
"catalog_identity",
"catalog_parameter"),
8737 GIN_TYPE(
"QuantumIdentifier",
"String"),
8739 GIN_DESC(
"The catalog line matching information.",
8740 "The catalog parameter of the retrieval quantity.")));
8743 NAME(
"jacobianAddBasicCatalogParameters"),
8745 "See *jacobianAddBasicCatalogParameter*.\n"
8747 "This adds a multiple of parameters for first each catalog_identity in\n"
8748 "catalog_identities and then for each catalog_parameter in catalog_parameters\n"
8749 "by looping calls to *jacobianAddBasicCatalogParameter* over these input\n"),
8751 OUT(
"jacobian_quantities",
"jacobian_agenda"),
8755 IN(
"jacobian_quantities",
"jacobian_agenda"),
8756 GIN(
"catalog_identities",
"catalog_parameters"),
8757 GIN_TYPE(
"ArrayOfQuantumIdentifier",
"ArrayOfString"),
8759 GIN_DESC(
"The catalog line matching information.",
8760 "The catalog parameter of the retrieval quantity.")));
8763 NAME(
"jacobianAddFreqShift"),
8765 "Includes a frequency fit of shift type in the Jacobian.\n"
8767 "Retrieval of deviations between nominal and actual backend\n"
8768 "frequencies can be included by this method. The assumption here is\n"
8769 "that the deviation is a constant off-set, a shift, common for all\n"
8770 "frequencies (and not varying between measurement blocks).\n"
8772 "This method adds one element to the state vector (*x*).\n"),
8774 OUT(
"jacobian_quantities",
"jacobian_agenda"),
8778 IN(
"jacobian_quantities",
"jacobian_agenda",
"f_grid"),
8782 GIN_DESC(
"Size of perturbation to apply.")));
8785 NAME(
"jacobianAddFreqStretch"),
8787 "Includes a frequency fit of stretch type in the Jacobian.\n"
8789 "Retrieval of deviations between nominal and actual backend\n"
8790 "frequencies can be included by this method. The assumption here is\n"
8791 "that the deviation varies linearly over the frequency range\n"
8792 "(following ARTS basis function for polynomial order 1).\n"
8794 "This method adds one element to the state vector (*x*).\n"),
8796 OUT(
"jacobian_quantities",
"jacobian_agenda"),
8800 IN(
"jacobian_quantities",
"jacobian_agenda",
"f_grid"),
8804 GIN_DESC(
"Size of perturbation to apply.")));
8807 NAME(
"jacobianAddShapeCatalogParameter"),
8809 "Adds a line shape parameter to the Jacobian calculations. These\n"
8810 "are constant over all levels so only a single *x*-value is added\n"
8812 "Line function parameter assume the derivatives\n"
8813 "of internal pressure broadening and line mixing\n"
8814 "functionality follows a simply f(T, T0, X0, X1, X2)\n"
8815 "format. The shape of the function f() is determined by\n"
8816 "input catalog; please see the ARTS documentation for more\n"
8819 "The input are as follows:\n"
8820 " line_identity: Identifier of preferably a single line\n"
8821 " species: A SpeciesTag, e.g., \"O2\" or \"H2O\" for common species.\n"
8822 " Note that \"SELF\" and \"AIR\" tags are used for shape parameters\n"
8823 " affected by self and air-broadening, respectively.\n"
8824 " variable: A variable supported by the line, these can be\n"
8825 " \"G0\": Speed-independent pressure broadening\n"
8826 " \"G2\": Speed-dependent pressure broadening\n"
8827 " \"D0\": Speed-independent pressure shift\n"
8828 " \"D2\": Speed-dependent pressure shift\n"
8829 " \"FVC\": Frequency of velocity changing collisions\n"
8830 " \"ETA\": partial correlation between velocity and\n"
8831 " rotational state changes due to collisions\n"
8832 " \"Y\": First order line-mixing parameter\n"
8833 " \"G\": Second order line-mixing parameter for strength\n"
8834 " \"DV\": Second order line-mixing parameter for shifting\n"
8835 " coefficient: A coefficient in the model to compute the above parameters.\n"
8837 "Note that we cannot test if the line in question supports the variable and\n"
8838 "coefficient at the level of this function, so many errors will only be reported\n"
8839 "at a later stage\n"
8841 "For other spectroscopic parameters, see *jacobianAddBasicCatalogParameter*.\n"
8842 "Also see said function for an example of how to set the QuantumIdentifier\n"),
8844 OUT(
"jacobian_quantities",
"jacobian_agenda"),
8848 IN(
"jacobian_quantities",
"jacobian_agenda"),
8849 GIN(
"line_identity",
"species",
"variable",
"coefficient"),
8850 GIN_TYPE(
"QuantumIdentifier",
"String",
"String",
"String"),
8853 "Species of interest",
8854 "Variable of interest",
8855 "Coefficient of interest")));
8858 NAME(
"jacobianAddShapeCatalogParameters"),
8860 "See *jacobianAddShapeCatalogParameter* for information on\n"
8861 "the GIN parameters\n"
8863 "This function accepts the same input but for lists of data.\n"
8864 "The function loops over each input list\n"
8865 "individually and appends the information to *jacobian_quantities*.\n"
8867 "Special \"ALL\" for 1 length *variables* and *coefficients* are\n"
8868 "allowed to compute all variables/coefficients in the order described\n"
8869 "in the description of *jacobianAddShapeCatalogParameter*\n"
8871 "For example, if *line_identities* have length 5, *species* length 4,\n"
8872 "*variables* length 3, and *coefficients* length 2, there will be\n"
8873 "5*4x3x2 = 120 new additions to *jacobian_quantities* in the order:\n"
8874 "\t[{line_identities[0], species[0], variables[0] coefficients[0]}]\n"
8875 "\t[{line_identities[0], species[0], variables[0] coefficients[1]}]\n"
8876 "\t[{line_identities[0], species[0], variables[1] coefficients[0]}]\n"
8877 "\t[{line_identities[0], species[0], variables[1] coefficients[1]}]\n"
8878 "\t[{line_identities[0], species[0], variables[2] coefficients[0]}]\n"
8879 "\t[{line_identities[0], species[0], variables[2] coefficients[1]}]\n"
8880 "\t[{line_identities[0], species[1], variables[0] coefficients[0]}]\n"
8882 "\t[{line_identities[4], species[3], variables[1] coefficients[1]}]\n"
8883 "\t[{line_identities[4], species[3], variables[2] coefficients[0]}]\n"
8884 "\t[{line_identities[4], species[3], variables[2] coefficients[1]}]\n"
8885 "or in words: lines first, then species, then variables, then coefficients\n"),
8887 OUT(
"jacobian_quantities",
"jacobian_agenda"),
8891 IN(
"jacobian_quantities",
"jacobian_agenda"),
8892 GIN(
"line_identities",
"species",
"variables",
"coefficients"),
8893 GIN_TYPE(
"ArrayOfQuantumIdentifier",
8898 GIN_DESC(
"List of line identifiers",
8899 "List of species of interest",
8900 "List of variables of interest",
8901 "List of coefficients of interest")));
8904 NAME(
"jacobianAddMagField"),
8906 "Includes one magnetic field component in the Jacobian.\n"
8908 "The method follows the pattern of other Jacobian methods. The\n"
8909 "calculations can only be performed by analytic expressions.\n"
8911 "The magnetic field components are retrieved separately, and,\n"
8912 "hence, the argument *component* can be \"u\", \"v\", \"w\",\n"
8913 "and \"strength\".\n"
8915 "The number of elements added to the state vector (*x*) is:\n"
8916 " n_g1 * n_g2 * n_g3\n"
8917 "where n_g1, n_g2 and n_g3 are the length of GIN *g1*, *g2* and *g3*,\n"
8918 "respectively. Here empty vectors should be considered to have a length 1.\n"
8919 "The elements are sorted with pressure as innermost loop, followed by\n"
8920 "latitude and longitude as outermost loop.\n"
8922 "The dB-parameter is only used for Faraday rotation\n"),
8923 AUTHORS(
"Patrick Eriksson",
"Richard Larsson"),
8924 OUT(
"jacobian_quantities",
"jacobian_agenda"),
8928 IN(
"jacobian_quantities",
8934 GIN(
"g1",
"g2",
"g3",
"component",
"dB"),
8935 GIN_TYPE(
"Vector",
"Vector",
"Vector",
"String",
"Numeric"),
8937 GIN_DESC(
"Pressure retrieval grid.",
8938 "Latitude retrieval grid.",
8939 "Longitude retreival grid.",
8940 "Magnetic field component to retrieve",
8941 "Magnetic field perturbation")));
8944 NAME(
"jacobianAddNLTE"),
8946 "Experimental NLTE Jacobian.\n"
8948 "Intention: Adds the nlte_field level distribution per atmospheric grid\n"
8949 "to the Jacobian.\n"
8951 "The number of elements added to the state vector (*x*) is:\n"
8952 " n_g1 * n_g2 * n_g3\n"
8953 "where n_g1, n_g2 and n_g3 are the length of GIN *g1*, *g2* and *g3*,\n"
8954 "respectively. Here empty vectors should be considered to have a length 1.\n"
8955 "The elements are sorted with pressure as innermost loop, followed by\n"
8956 "latitude and longitude as outermost loop.\n"
8958 "The QuantumIdentifier should identify a single energy level, such as:\n"
8959 "\"H2O-161 EN J 1 Ka 0 Kc 1\", for one of the lower levels in the chains\n"
8960 "of transitions of water. Note that using this method directly is not\n"
8961 "best practice, as the quantum identifiers of the levels have to be known\n"
8962 "at an early stage in NLTE calculations, and will usually populate the\n"
8963 "*nlte_level_identifiers* variable, meaning it is better to use *jacobianAddNLTE*\n"
8964 "directly than to individually call this function\n"),
8966 OUT(
"jacobian_quantities",
"jacobian_agenda"),
8970 IN(
"jacobian_quantities",
8976 GIN(
"g1",
"g2",
"g3",
"energy_level_identity",
"dx"),
8977 GIN_TYPE(
"Vector",
"Vector",
"Vector",
"QuantumIdentifier",
"Numeric"),
8979 GIN_DESC(
"Pressure retrieval grid.",
8980 "Latitude retrieval grid.",
8981 "Longitude retreival grid.",
8982 "Identifier to the eneregy level",
8983 "Perturbation of value if required by method")));
8986 NAME(
"jacobianAddNLTEs"),
8988 "Experimental NLTE Jacobian. Same as *jacobianAddNLTE* but for\n"
8991 "Adds energy_level_identities.nelem() times as many arguments to *x*\n"
8992 "as *jacobianAddNLTE*, ordered as energy_level_identities describes\n"
8994 "This method is preferred to *jacobianAddNLTE*, since *energy_level_identities*\n"
8995 "is conveniently almost always the same as *nlte_level_identifiers*\n"),
8997 OUT(
"jacobian_quantities",
"jacobian_agenda"),
9001 IN(
"jacobian_quantities",
9007 GIN(
"g1",
"g2",
"g3",
"energy_level_identities",
"dx"),
9009 "Vector",
"Vector",
"Vector",
"ArrayOfQuantumIdentifier",
"Numeric"),
9011 GIN_DESC(
"Pressure retrieval grid.",
9012 "Latitude retrieval grid.",
9013 "Longitude retreival grid.",
9014 "Identifiers to the eneregy level",
9015 "Perturbation of value if required by method")));
9018 NAME(
"jacobianAddPointingZa"),
9020 "Adds sensor pointing zenith angle off-set jacobian.\n"
9022 "Retrieval of deviations between nominal and actual zenith angle of\n"
9023 "the sensor can be included by this method. The weighing functions\n"
9024 "can be calculated in several ways:\n"
9025 " calcmode = \"recalc\": Recalculation of pencil beam spectra,\n"
9026 " shifted with *dza* from nominal values. A single-sided\n"
9027 " perturbation is applied (towards higher zenith angles).\n"
9028 " calcmode = \"interp\": Inter/extrapolation of existing pencil\n"
9029 " beam spectra. For this option, allow some extra margins for\n"
9030 " zenith angle grids, to avoid artifacts when extrapolating\n"
9031 " the data (to shifted zenith angles). The average of a\n"
9032 " negative and a positive shift is taken."
9034 "The interp option is recommended. It should in general be both\n"
9035 "faster and more accurate (due to the double sided disturbance).\n"
9036 "In addition, it is less sensitive to the choice of dza (as long\n"
9037 "as a small value is applied).\n"
9039 "The pointing off-set can be modelled to be time varying. The time\n"
9040 "variation is then described by a polynomial (with standard base\n"
9041 "functions). For example, a polynomial order of 0 means that the\n"
9042 "off-set is constant in time. If the off-set is totally uncorrelated\n"
9043 "between the spectra, set the order to -1.\n"
9045 "The number of elements added to the state vector (*x*) is\n"
9046 " if poly_order < 0 : length of *sensor_time*\n"
9047 " otherwise : poly_order+1\n"
9048 "In the first case, the order in *x* matches *sensor_time*. In the second\n"
9049 "case, the coefficient for polynomial order 0 comes first etc.\n"),
9050 AUTHORS(
"Patrick Eriksson",
"Mattias Ekstrom"),
9051 OUT(
"jacobian_quantities",
"jacobian_agenda"),
9055 IN(
"jacobian_quantities",
"jacobian_agenda",
"sensor_pos",
"sensor_time"),
9056 GIN(
"poly_order",
"calcmode",
"dza"),
9057 GIN_TYPE(
"Index",
"String",
"Numeric"),
9059 GIN_DESC(
"Order of polynomial to describe the time variation of "
9060 "pointing off-sets.",
9061 "Calculation method. See above",
9062 "Size of perturbation to apply (when applicable).")));
9065 NAME(
"jacobianAddPolyfit"),
9067 "Includes polynomial baseline fit in the Jacobian.\n"
9069 "This method deals with retrieval of disturbances of the spectra\n"
9070 "that can be described by an additive term, a baseline off-set.\n"
9072 "The baseline off-set is here modelled as a polynomial. The\n"
9073 "polynomial spans the complete frequency range spanned by\n"
9074 "*sensor_response_f_grid* and the method should only of interest for\n"
9075 "cases with no frequency gap in the spectra. The default assumption\n"
9076 "is that the off-set differs between all spectra, but it can also be\n"
9077 "assumed that the off-set is common for all e.g. line-of-sights.\n"
9079 "If the simulation/retrieval deals with a single spectrum, the number\n"
9080 "of elements added to the state vector (*x*) is poly_order+1. The\n"
9081 "coefficient for polynomial order 0 comes first etc. The same is true\n"
9082 "if *no_pol_variation*, *no_los_variation* and *no_mblock_variation*\n"
9083 "all are set to 1, even if several spectra are involved. Otherwise the"
9084 "number of elements added to *x* depends on the number of spectra and\n"
9085 "the settings of *no_pol_variation*, *no_los_variation* and \n"
9086 "*no_mblock_variation*. The coefficients of the different polynomial\n"
9087 "orders are treated as separate retrieval quantities. That is, the\n"
9088 "the elements associated with polynomial order 0 are grouped and form\n"
9089 "together a retrieval quantity. The coefficients for higher polynomial\n"
9090 "orders are treated in the same way.\n"),
9092 OUT(
"jacobian_quantities",
"jacobian_agenda"),
9096 IN(
"jacobian_quantities",
9098 "sensor_response_pol_grid",
9099 "sensor_response_dlos_grid",
9104 "no_mblock_variation"),
9105 GIN_TYPE(
"Index",
"Index",
"Index",
"Index"),
9107 GIN_DESC(
"Polynomial order to use for the fit.",
9108 "Set to 1 if the baseline off-set is the same for all "
9109 "Stokes components.",
9110 "Set to 1 if the baseline off-set is the same for all "
9111 "line-of-sights (inside each measurement block).",
9112 "Set to 1 if the baseline off-set is the same for all "
9113 "measurement blocks.")));
9116 NAME(
"jacobianAddScatSpecies"),
9118 "Includes a scattering species in the Jacobian.\n"
9120 "For 1D or 2D calculations the latitude and/or longitude grid of\n"
9121 "the retrieval field should set to have zero length.\n"
9123 "The number of elements added to the state vector (*x*) is:\n"
9124 " n_g1 * n_g2 * n_g3\n"
9125 "where n_g1, n_g2 and n_g3 are the length of GIN *g1*, *g2* and *g3*,\n"
9126 "respectively. Here empty vectors should be considered to have a length 1.\n"
9127 "The elements are sorted with pressure as innermost loop, followed by\n"
9128 "latitude and longitude as outermost loop.\n"),
9130 OUT(
"jacobian_quantities",
"jacobian_agenda"),
9134 IN(
"jacobian_quantities",
9140 GIN(
"g1",
"g2",
"g3",
"species",
"quantity"),
9141 GIN_TYPE(
"Vector",
"Vector",
"Vector",
"String",
"String"),
9144 "Pressure retrieval grid.",
9145 "Latitude retrieval grid.",
9146 "Longitude retreival grid.",
9147 "Name of scattering species, must match one element in *scat_species*.",
9148 "Retrieval quantity, e.g. \"IWC\"."),
9155 NAME(
"jacobianAddSinefit"),
9157 "Includes sinusoidal baseline fit in the Jacobian.\n"
9159 "Works as *jacobianAddPolyfit*, beside that a series of sine and\n"
9160 "cosine terms are used for the baseline fit.\n"
9162 "For each value in *period_lengths one sine and one cosine term are\n"
9163 "included (in mentioned order). By these two terms the amplitude and\n"
9164 "\"phase\" for each period length can be determined. The sine and\n"
9165 "cosine terms have value 0 and 1, respectively, for first frequency.\n"
9167 "If the simulation/retrieval deals with a single spectrum, the number\n"
9168 "of elements added to the state vector (*x*) is 2*nperiods, where\n"
9169 "nperiods is the length of *period_lengths*. The same is true\n"
9170 "if *no_pol_variation*, *no_los_variation* and *no_mblock_variation*\n"
9171 "all are set to 1, even if several spectra are involved. Otherwise the"
9172 "number of elements added to *x* depends on the number of spectra and\n"
9173 "the settings of *no_pol_variation*, *no_los_variation* and \n"
9174 "*no_mblock_variation*. The sine and cosine terms for each period\n"
9175 "length are treated as a separate retrieval quantities. That is, the\n"
9176 "the elements associated with the first period length are grouped and\n"
9177 "form together a retrieval quantity, etc. Inside each retrieval quantity\n"
9178 "the pairs of sine and cosine terms are kept together, in given order.\n"),
9180 OUT(
"jacobian_quantities",
"jacobian_agenda"),
9184 IN(
"jacobian_quantities",
9186 "sensor_response_pol_grid",
9187 "sensor_response_dlos_grid",
9189 GIN(
"period_lengths",
9192 "no_mblock_variation"),
9193 GIN_TYPE(
"Vector",
"Index",
"Index",
"Index"),
9195 GIN_DESC(
"Period lengths of the fit.",
9196 "Set to 1 if the baseline off-set is the same for all "
9197 "Stokes components.",
9198 "Set to 1 if the baseline off-set is the same for all "
9199 "line-of-sights (inside each measurement block).",
9200 "Set to 1 if the baseline off-set is the same for all "
9201 "measurement blocks.")));
9204 NAME(
"jacobianAddSpecialSpecies"),
9206 "Includes a special absorption species in the Jacobian.\n"
9208 "Similar to *jacobianAddAbsSpecies* but only for number densities.\n"
9210 "Species allowed are:\n"
9212 " \"particulates\"\n"
9214 "Note that the average of all particulates are used to scale its\n"
9215 "*jacobian*, so this method works best when only one type of\n"
9216 "particulate is being used, i.e., when *scat_data* has only one\n"
9217 "scattering species.\n"
9219 "The number of elements added to the state vector (*x*) is:\n"
9220 " n_g1 * n_g2 * n_g3\n"
9221 "where n_g1, n_g2 and n_g3 are the length of GIN *g1*, *g2* and *g3*,\n"
9222 "respectively. Here empty vectors should be considered to have a length 1.\n"
9223 "The elements are sorted with pressure as innermost loop, followed by\n"
9224 "latitude and longitude as outermost loop.\n"),
9226 OUT(
"jacobian_quantities",
"jacobian_agenda"),
9230 IN(
"jacobian_quantities",
9236 GIN(
"g1",
"g2",
"g3",
"species"),
9237 GIN_TYPE(
"Vector",
"Vector",
"Vector",
"String"),
9239 GIN_DESC(
"Pressure retrieval grid.",
9240 "Latitude retrieval grid.",
9241 "Longitude retreival grid.",
9242 "The species of the retrieval quantity."),
9249 NAME(
"jacobianAddSurfaceQuantity"),
9251 "Includes a surface quantity in the Jacobian.\n"
9253 "The quantity is specified by the GIN-variable *quantity*. The name\n"
9254 "of the quantity must match the name used in *surface_props_names*.\n"
9256 "For 1D or 2D calculations the latitude and/or longitude grid of\n"
9257 "the retrieval field should set to have zero length.\n"
9259 "The number of elements added to the state vector (*x*) is:\n"
9261 "where n_g1 and n_g2 are the length of GIN *g1* and *g2*, respectively.\n"
9262 "Here empty vectors should be considered to have a length 1.\n"
9263 "The elements are sorted with latitude as innermost loop and longitude\n"
9264 "as outermost loop.\n"),
9266 OUT(
"jacobian_quantities",
"jacobian_agenda"),
9270 IN(
"jacobian_quantities",
9275 GIN(
"g1",
"g2",
"quantity"),
9276 GIN_TYPE(
"Vector",
"Vector",
"String"),
9278 GIN_DESC(
"Latitude retrieval grid.",
9279 "Longitude retreival grid.",
9280 "Retrieval quantity, e.g. \"Wind speed\"."),
9287 NAME(
"jacobianAddTemperature"),
9289 "Includes atmospheric temperatures in the Jacobian.\n"
9291 "The calculations are performed by (semi-)analytical expressions.\n"
9292 "Hydrostatic equilibrium (HSE) can be included.\n"
9294 "The analytical calculation approach neglects so far refraction\n"
9295 "totally, but considers the local effect of HSE.\n"
9296 "The later should be accaptable for observations around zenith and\n"
9297 "nadir. There is no warning if the method is applied incorrectly, \n"
9298 "with respect to these issues. Note that the argument *hse* of this\n"
9299 "WSM only refers to the Jacobian calculation, if the model and/or\n"
9300 "retrieved atmosphere actually fulfils HSE or not is governed in\n"
9303 "The calculations (both options) assume that gas species are defined\n"
9304 "in VMR (a change in temperature then changes the number density). \n"
9305 "This has the consequence that retrieval of temperatures and number\n"
9306 "density can not be mixed. Neither any warning here!\n"
9308 "The number of elements added to the state vector (*x*) is:\n"
9309 " n_g1 * n_g2 * n_g3\n"
9310 "where n_g1, n_g2 and n_g3 are the length of GIN *g1*, *g2* and *g3*,\n"
9311 "respectively. Here empty vectors should be considered to have a length 1.\n"
9312 "The elements are sorted with pressure as innermost loop, followed by\n"
9313 "latitude and longitude as outermost loop.\n"),
9314 AUTHORS(
"Mattias Ekstrom",
"Patrick Eriksson"),
9315 OUT(
"jacobian_quantities",
"jacobian_agenda"),
9319 IN(
"jacobian_quantities",
9325 GIN(
"g1",
"g2",
"g3",
"hse"),
9326 GIN_TYPE(
"Vector",
"Vector",
"Vector",
"String"),
9328 GIN_DESC(
"Pressure retrieval grid.",
9329 "Latitude retrieval grid.",
9330 "Longitude retreival grid.",
9331 "Flag to assume HSE or not (\"on\" or \"off\").")));
9334 NAME(
"jacobianAddWind"),
9336 "Includes one atmospheric wind component in the Jacobian.\n"
9338 "The method follows the pattern of other Jacobian methods. The\n"
9339 "calculations can only be performed by analytic expressions.\n"
9340 "Some lower level function depends on frequency perturbations,\n"
9341 "however, so therefore a frequency perturbation df is required\n"
9342 "and as a consequence *abs_f_interp_order* must be > 0.\n"
9344 "The wind field components are retrieved separately, and,\n"
9345 "hence, the argument *component* can be \"u\", \"v\" or \"w\" \n"
9346 "for vector components, or just \"strength\" for total wind speed.\n"
9348 "The number of elements added to the state vector (*x*) is:\n"
9349 " n_g1 * n_g2 * n_g3\n"
9350 "where n_g1, n_g2 and n_g3 are the length of GIN *g1*, *g2* and *g3*,\n"
9351 "respectively. Here empty vectors should be considered to have a length 1.\n"
9352 "The elements are sorted with pressure as innermost loop, followed by\n"
9353 "latitude and longitude as outermost loop.\n"),
9355 OUT(
"jacobian_quantities",
"jacobian_agenda"),
9359 IN(
"jacobian_quantities",
9365 GIN(
"g1",
"g2",
"g3",
"component",
"dfrequency"),
9366 GIN_TYPE(
"Vector",
"Vector",
"Vector",
"String",
"Numeric"),
9368 GIN_DESC(
"Pressure retrieval grid.",
9369 "Latitude retrieval grid.",
9370 "Longitude retrieval grid.",
9371 "Wind component to retrieve",
9372 "This is the frequency perturbation")));
9375 NAME(
"jacobianAdjustAndTransform"),
9377 "Applies adjustments and transformations on *jacobian*.\n"
9379 "The method handles two tasks:\n"
9380 "1. The retrieval transformations set by the user can not be applied\n"
9381 "onthe Jacobian inside *yCalc*. Transformations are instead applied\n"
9382 "by calling this method.\n"
9383 "2. It applies required adjustments of the Jacoboan. So far there is\n"
9384 "only one possible adjustment. If any absorption species uses the \"rel\"\n"
9385 "unit, an adjustment is needed for later iterations of the inversion.\n"
9387 "If no tranformations are selected and the \"rel\" option is not used at\n"
9388 "all, there is no need to call this method(, but you can still include it\n"
9389 "without causing any error, the calculations will just be a bit slower).\n"
9390 "Otherwise, this method should be called, typically as part of\n"
9391 "*inversion_iterate_agenda*.\n"
9393 "The method accepts if *jacobian* is empty, and then does, nothing.\n"),
9399 IN(
"jacobian",
"jacobian_quantities",
"x"),
9406 NAME(
"jacobianCalcDoNothing"),
9408 "This function doesn't do anything. It just exists to satisfy\n"
9409 "the input and output requirement of the *jacobian_agenda*.\n"
9411 "This method is added to *jacobian_agenda* by *jacobianAddAbsSpecies*\n"
9412 "and some similar methods, and it should normally not be called by\n"
9419 IN(
"jacobian",
"mblock_index",
"iyb",
"yb"),
9426 NAME(
"jacobianCalcFreqShift"),
9428 "Calculates frequency shift jacobians by interpolation\n"
9431 "This function is added to *jacobian_agenda* by jacobianAddFreqShift\n"
9432 "and should normally not be called by the user.\n"),
9446 "jacobian_quantities"),
9453 NAME(
"jacobianCalcFreqStretch"),
9455 "Calculates frequency stretch jacobians by interpolation\n"
9458 "This function is added to *jacobian_agenda* by jacobianAddFreqStretch\n"
9459 "and should normally not be called by the user.\n"),
9473 "sensor_response_pol_grid",
9474 "sensor_response_f_grid",
9475 "sensor_response_dlos_grid",
9476 "jacobian_quantities"),
9483 NAME(
"jacobianCalcPointingZaInterp"),
9484 DESCRIPTION(
"Calculates zenith angle pointing deviation jacobians by\n"
9485 "inter-extrapolation of *iyb*.\n"
9487 "This function is added to *jacobian_agenda* by\n"
9488 "jacobianAddPointingZa and should normally not be\n"
9489 "called by the user.\n"),
9505 "jacobian_quantities"),
9512 NAME(
"jacobianCalcPointingZaRecalc"),
9513 DESCRIPTION(
"Calculates zenith angle pointing deviation jacobians by\n"
9514 "recalulation of *iyb*.\n"
9516 "This function is added to *jacobian_agenda* by\n"
9517 "jacobianAddPointingZa and should normally not be\n"
9518 "called by the user.\n"),
9519 AUTHORS(
"Mattias Ekstrom",
"Patrick Eriksson"),
9542 "jacobian_quantities"),
9549 NAME(
"jacobianCalcPolyfit"),
9551 "Calculates jacobians for polynomial baseline fit.\n"
9553 "This function is added to *jacobian_agenda* by jacobianAddPolyfit\n"
9554 "and should normally not be called by the user.\n"),
9565 "sensor_response_pol_grid",
9566 "sensor_response_f_grid",
9567 "sensor_response_dlos_grid",
9568 "jacobian_quantities"),
9572 GIN_DESC(
"Polynomial coefficient to handle."),
9576 NAME(
"jacobianCalcSinefit"),
9578 "Calculates jacobians for sinusoidal baseline fit.\n"
9580 "This function is added to *jacobian_agenda* by jacobianAddPolyfit\n"
9581 "and should normally not be called by the user.\n"),
9592 "sensor_response_pol_grid",
9593 "sensor_response_f_grid",
9594 "sensor_response_dlos_grid",
9595 "jacobian_quantities"),
9596 GIN(
"period_index"),
9599 GIN_DESC(
"Index among the period length specified for add-method."),
9603 NAME(
"jacobianClose"),
9605 "Closes the array of retrieval quantities and prepares for\n"
9606 "calculation of the Jacobian matrix.\n"
9608 "This function closes the *jacobian_quantities* array and sets\n"
9609 "*jacobian_do* to 1.\n"
9611 "Retrieval quantities should not be added after a call to this WSM.\n"
9612 "No calculations are performed here.\n"),
9614 OUT(
"jacobian_do",
"jacobian_agenda"),
9618 IN(
"jacobian_agenda",
"jacobian_quantities"),
9625 NAME(
"jacobianFromTwoY"),
9627 "Sets *jacobian* based on the difference vetween two measurement vectors.\n"
9629 "This function assumes that *y_pert* contains a measurement calculated\n"
9630 "with some variable perturbed, in comparison to the calculation\n"
9631 "behind *y*. The function takes the differences between *y_pert*\n"
9632 "and *y* to form a numerical derived estimate of *jacobian*.\n"
9633 "This gives a Jacobian wit a single column.\n"
9635 "*jacobian* equals here: (y_pert-y)/pert_size.\n"),
9642 GIN(
"y_pert",
"pert_size"),
9645 GIN_DESC(
"Perturbed measurement vector",
9646 "Size of perturbation behind spectra in *ybatch*.")));
9649 NAME(
"jacobianFromYbatch"),
9651 "Sets *jacobian* based on perturbation calcuations.\n"
9653 "This function assumes that *ybatch* contains spectra calculated\n"
9654 "with some variable perturbed, in comparison to the calculation\n"
9655 "behind *y*. The function takes the differences between *ybatch*\n"
9656 "and *y* to form a numerical derived estimate of *jacobian*.\n"
9658 "Column i of *jacobian* equals: (ybatch[i]-y)/pert_size.\n"),
9668 GIN_DESC(
"Size of perturbation behind spectra in *ybatch*.")));
9671 NAME(
"jacobianInit"),
9673 "Initialises the variables connected to the Jacobian matrix.\n"
9675 "This function initialises the *jacobian_quantities* array so\n"
9676 "that retrieval quantities can be added to it. Accordingly, it has\n"
9677 "to be called before any calls to jacobianAddTemperature or\n"
9678 "similar methods.\n"
9680 "The Jacobian quantities are initialised to be empty.\n"),
9682 OUT(
"jacobian_quantities",
"jacobian_agenda"),
9693 NAME(
"jacobianOff"),
9695 "Makes mandatory initialisation of some jacobian variables.\n"
9697 "Some clear-sky jacobian WSVs must be initialised even if no such\n"
9698 "calculations will be performed. This is handled with this method.\n"
9699 "That is, this method must be called when no clear-sky jacobians\n"
9700 "will be calculated (even if cloudy-sky jacobians are calculated!).\n"
9702 "Sets *jacobian_do* to 0.\n"),
9704 OUT(
"jacobian_do",
"jacobian_agenda",
"jacobian_quantities"),
9715 NAME(
"jacobianSetAffineTransformation"),
9717 "Adds an affine transformation of the last element of\n"
9718 "*jacobian_quantities*.\n"
9720 "See *jacobianSetFuncTransformation* for a general description of how\n"
9721 "retrieval transformations are defined. Transformations are not applied by\n"
9722 "methods such as*yCalc*. Instead, the method *jacobianAdjustAndTransform*\n"
9723 "must be called to activate the transformations.\n"
9725 "The affine transformation is specified by a transformation matrix, A,\n"
9726 "and an offset vector, b. These two are applied as described in\n"
9727 "*jacobianSetFuncTransformation*.\n"
9729 "The transformations is applied as\n"
9730 " x = A * ( z - b )\n"
9731 "where z is the retrieval quantity on the standard retrieval grids\n"
9732 "and x is the final state vector.\n"
9734 "So far, the following must be true for valid A-matrices\n"
9736 "That is, the reversed transformation is given by A transposed.\n"
9738 "This method must only be called if an affine transformation is wanted.\n"
9739 "Default is to make no such tranformation at all.\n"),
9740 AUTHORS(
"Simon Pfreundschuh"),
9741 OUT(
"jacobian_quantities"),
9745 IN(
"jacobian_quantities"),
9746 GIN(
"transformation_matrix",
"offset_vector"),
9749 GIN_DESC(
"The transformation matrix A",
"The offset vector b")));
9752 NAME(
"jacobianSetFuncTransformation"),
9754 "Sets the functional transformation of the last element of\n"
9755 "*jacobian_quantities*.\n"
9757 "See below for a general description of how retrieval transformations\n"
9758 "are defined. Transformations are not applied by methods such as*yCalc*.\n"
9759 "Instead, the method *jacobianAdjustAndTransform* must be called to\n"
9760 "activate the transformations.\n"
9762 "The following transformations can be selected (by *transformation_func*):\n"
9763 " log : The natural logarithm\n"
9764 " log10 : The base-10 logarithm\n"
9765 " atanh : Area hyperbolic tangent \n"
9766 " none : No transformation at all\n"
9768 "This method needs only to be called if a functional transformation\n"
9769 "is wanted. Default is to make no such tranformation at all (i.e.\n"
9770 "the option \"none\" exists only for reasons of flexibility).\n"
9772 "The log-options are applied as log(z-z_min) and log10(z-z_min).\n"
9773 "The default for *z_min* is zero, but by changing it the lower limit\n"
9774 "for z can be changed. Note that *z_min* becomes the lower limit for\n"
9775 "allowed values of z. The GIN *z_max* is here ignored.\n"
9777 "For the atanh-option, also *z_max* is considered. This transformation\n"
9778 "is applied as atanh((2(z-z_min)/(z_max-z_min))-1). As above,*z_min*\n"
9779 "is lower limit for allowed values of z. On the other hand, *z_max*\n"
9780 "eines the upper limit for z.\n"
9782 "The GIN *transformation_func* is so far only used for atanh. The parameter\n"
9783 "specifies the maximum allowed value allowed for u. That is, the valid\n"
9784 "range for u becomes ]0,tfunc_parameter[. Note that log and log10\n"
9785 "demands/ensures that u > 0, but implies no upper limit.\n"
9787 "General handling of retrieval units and transformations:\n"
9789 "Default is that quantities are retrieved as defined in ARTS, but\n"
9790 "both some unit conversion and transformations are provided. These\n"
9791 "operations are applied as:\n"
9792 " x = A * ( f(u(z)) - b ) \n"
9794 " z is the quantity as defined ARTS\n"
9795 " u represents the change of unit\n"
9796 " f is the transformation function\n"
9797 " A and b define together an affine transformation\n"
9798 " x is the retrieved quantity\n"
9799 "For example, this systen allows to retrive a principal component\n"
9800 "representation (A and b) of the log (f) of relative humidity (u).\n"
9802 "Change of unit is selected by the quantity specific jacobian-add\n"
9803 "methods (so far only at hand for gas species). \n"
9805 "Activating a transformation function is done by this method. Note\n"
9806 "that the functions are defined as the transformation from z to x.\n"
9807 "For more details on affine transformations, see\n"
9808 "*jacobianSetAffineTransformation*.\n"),
9809 AUTHORS(
"Patrick Eriksson",
"Simon Pfreundschuh"),
9810 OUT(
"jacobian_quantities"),
9814 IN(
"jacobian_quantities"),
9815 GIN(
"transformation_func",
"z_min",
"z_max"),
9816 GIN_TYPE(
"String",
"Numeric",
"Numeric"),
9818 GIN_DESC(
"The transformation function.",
9819 "Lower limit of z.",
9820 "Upper limit of z.")));
9823 NAME(
"lat_gridFromRawField"),
9825 "Sets *lat_grid* according to given raw atmospheric field's lat_grid.\n"
9826 "Similar to *p_gridFromZRaw*, but acting on a generic *GriddedField3*\n"
9827 "(e.g., a wind or magnetic field component).\n"),
9837 GIN_DESC(
"A raw atmospheric field.")));
9840 NAME(
"lbl_checkedCalc"),
9841 DESCRIPTION(
"Checks that the line-by-line parameters are OK.\n"
9843 "On failure, will throw. On success, lbl_checked evals as true\n"
9845 "Note that checks may become more stringent as ARTS evolves, especially for\n"
9846 "\"new\" options. This test might succeed in one version of ARTS but fail\n"
9847 "in later versions\n"),
9853 IN(
"abs_lines_per_species",
"abs_species",
"isotopologue_ratios",
"partition_functions"),
9860 NAME(
"LocalTimeOffset"),
9861 DESCRIPTION(
"Sets the seconds between localtime and gmtime representation of now().\n"),
9866 GOUT_DESC(
"Time in seconds between local and gmt"),
9874 NAME(
"lon_gridFromRawField"),
9876 "Sets *lon_grid* according to given raw atmospheric field's lat_grid.\n"
9877 "Similar to *p_gridFromZRaw*, but acting on a generic *GriddedField3*\n"
9878 "(e.g., a wind or magnetic field component).\n"),
9888 GIN_DESC(
"A raw atmospheric field.")));
9891 NAME(
"MagFieldsCalc"),
9893 "Interpolation of raw magnetic fields to calculation grids.\n"
9894 "Heritage from *AtmFieldsCalc*\n"
9896 "Internally, *MagFieldsCalc* applies *GriddedFieldPRegrid* and\n"
9897 "*GriddedFieldLatLonRegrid*. Generally, 'half-grid-step' extrapolation\n"
9898 "is allowed and applied.\n"),
9900 OUT(
"mag_u_field",
"mag_v_field",
"mag_w_field"),
9911 GIN(
"interp_order"),
9914 GIN_DESC(
"Interpolation order (1=linear interpolation).")));
9917 NAME(
"MagFieldsCalcExpand1D"),
9919 "Interpolation of 1D raw atmospheric fields to create 2D or 3D\n"
9920 "homogeneous magnetic fields. Derived from *AtmFieldsCalcExpand1D*\n"
9922 "The method works as *MagFieldsCalc*, but accepts only raw 1D\n"
9923 "magnetic fields. The raw data is interpolated to *p_grid* and\n"
9924 "the obtained values are applied for all latitudes, and also\n"
9925 "longitudes for 3D, to create a homogeneous atmosphere.\n"),
9927 OUT(
"mag_u_field",
"mag_v_field",
"mag_w_field"),
9938 GIN(
"interp_order"),
9941 GIN_DESC(
"Interpolation order (1=linear interpolation).")));
9944 NAME(
"MagFieldsFromAltitudeRawCalc"),
9946 "Regrids the rawfield by lat-lon and interpolates to z_field.\n"),
9948 OUT(
"mag_u_field",
"mag_v_field",
"mag_w_field"),
9958 GIN(
"interp_order",
"extrapolating"),
9961 GIN_DESC(
"Interpolation order (1=linear interpolation).",
9962 "Extrapolation allowed in interpolation of altitude.")));
9967 "Reads magnetic field data from a scenario.\n"
9969 "A full set of field components is read (NOTE: fails if scenario\n"
9970 "only contains selected field components). The files can be\n"
9971 "anywhere, but must all be in the same directory specified by\n"
9972 "'basename'. Naming convention for the field component files is\n"
9973 "basename.mag_u.xml for the u-component, v- and w-components\n"
9976 OUT(
"mag_u_field_raw",
"mag_v_field_raw",
"mag_w_field_raw"),
9984 GIN_DESC(
"Name of scenario, probably including the full path. For "
9985 "example: \"/data/magnetic_field\"")));
9988 NAME(
"MatrixAddScalar"),
9990 "Adds a scalar to all elements of a matrix.\n"
9992 "The result can either be stored in the same or another matrix.\n"),
10002 GIN_DESC(
"Input matrix.",
"The value to be added to the matrix.")));
10007 "Sets a matrix to hold cosmic background radiation (CBR).\n"
10009 "The CBR is assumed to be un-polarized and Stokes components 2-4\n"
10010 "are zero. Number of Stokes components, that equals the number\n"
10011 "of columns in the created matrix, is determined by *stokes_dim*.\n"
10012 "The number of rows in the created matrix equals the length of the\n"
10013 "given frequency vector.\n"
10015 "The cosmic radiation is modelled as blackbody radiation for the\n"
10016 "temperature given by the global constant COSMIC_BG_TEMP, set in\n"
10017 "the file constants.cc. The frequencies are taken from the generic\n"
10020 "The standard definition, in ARTS, of the Planck function is\n"
10021 "followed and the unit of the returned data is W/(m3 * Hz * sr).\n"),
10034 NAME(
"MatrixCopySparse"),
10035 DESCRIPTION(
"Creates a matrix by copying a variable of type Sparse.\n"),
10045 GIN_DESC(
"The sparse matrix to be copied.")));
10048 NAME(
"MatrixExtractFromTensor3"),
10050 "Extracts a Matrix from a Tensor3.\n"
10052 "Copies page or row or column with given Index from input Tensor3\n"
10053 "variable to output Matrix.\n"
10054 "Higher order equivalent of *VectorExtractFromMatrix*.\n"),
10061 GIN(
"in",
"i",
"direction"),
10062 GIN_TYPE(
"Tensor3",
"Index",
"String"),
10065 "Index of page or row or column to extract.",
10066 "Direction. \"page\" or \"row\" or \"column\".")));
10070 DESCRIPTION(
"Turns a covariance matrix into a Matrix.\n"),
10080 GIN_DESC(
"Input covariance matrix.")));
10083 NAME(
"MatrixIdentity"),
10085 "Returns an identity matrix.\n"
10087 "The size if the matrix created is n x n. Default is to return a\n"
10088 "true identity matrix (I), but you can also select another value\n"
10089 "along the diagonal by setting *value*. That is, the output is\n"
10100 GIN_DESC(
"Size of the matrix",
"The value along the diagonal.")));
10103 NAME(
"MatrixMatrixMultiply"),
10105 "Multiply a Matrix with another Matrix and store the result in the result\n"
10108 "This just computes the normal Matrix-Matrix product, Y=M*X. It is ok\n"
10109 "if Y and X are the same Matrix.\n"),
10114 GOUT_DESC(
"The result of the multiplication (dimension mxc)."),
10119 GIN_DESC(
"The Matrix to multiply (dimension mxn).",
10120 "The original Matrix (dimension nxc).")));
10123 NAME(
"MatrixPlanck"),
10125 "Sets a matrix to hold blackbody radiation.\n"
10127 "The radiation is assumed to be un-polarized and Stokes components\n"
10128 "2-4 are zero. Number of Stokes components, that equals the number\n"
10129 "of columns in the created matrix, is determined by *stokes_dim*.\n"
10130 "The number of rows in the created matrix equals the length of the\n"
10131 "given frequency vector.\n"
10133 "The standard definition, in ARTS, of the Planck function is\n"
10134 "followed and the unit of the returned data is W/(m3 * Hz * sr).\n"),
10144 GIN_DESC(
"Frequency vector.",
"Temperature [K].")));
10147 NAME(
"MatrixScale"),
10148 DESCRIPTION(
"Scales all elements of a matrix with the specified value.\n"
10150 "The result can either be stored in the same or another\n"
10158 GIN(
"in",
"value"),
10162 "The value to be multiplied with the matrix.")));
10166 DESCRIPTION(
"Initialize a Matrix from the given list of numbers.\n"
10169 " MatrixSet(m1, [1, 2, 3; 4, 5, 6])\n"),
10179 GIN_DESC(
"The values of the newly created matrix. Elements are separated "
10180 "by commas, rows by semicolons."),
10184 NAME(
"MatrixSetConstant"),
10186 "Creates a matrix and sets all elements to the specified value.\n"
10188 "The size is determined by *ncols* and *nrows*.\n"),
10194 IN(
"nrows",
"ncols"),
10201 NAME(
"MatrixUnitIntensity"),
10203 "Sets a matrix to hold unpolarised radiation with unit intensity.\n"
10205 "Works as MatrixPlanck where the radiation is set to 1.\n"),
10218 NAME(
"MatrixVectorMultiply"),
10220 "Multiply a Matrix with a Vector\n"
10222 "Computes the normal Matrix-Vector product, out=m*v. It is ok if out and v\n"
10223 "are the same Vector.\n"),
10224 AUTHORS(
"Stefan Buehler and Patrick Eriksson"),
10228 GOUT_DESC(
"The result of the multiplication (length m)."),
10233 GIN_DESC(
"The Matrix to multiply (dimension mxn).",
10234 "The original Vector (length n).")));
10237 NAME(
"Matrix1ColFromVector"),
10238 DESCRIPTION(
"Forms a matrix containing one column from a vector.\n"),
10248 GIN_DESC(
"The vector to be copied.")));
10251 NAME(
"Matrix2ColFromVectors"),
10253 "Forms a matrix containing two columns from two vectors.\n"
10255 "The vectors are included as columns in the matrix in the same order\n"
10256 "as they are given.\n"),
10266 GIN_DESC(
"The vector to be copied into the first column.",
10267 "The vector to be copied into the second column.")));
10270 NAME(
"Matrix3ColFromVectors"),
10272 "Forms a matrix containing three columns from three vectors.\n"
10274 "The vectors are included as columns in the matrix in the same order\n"
10275 "as they are given.\n"),
10282 GIN(
"v1",
"v2",
"v3"),
10283 GIN_TYPE(
"Vector",
"Vector",
"Vector"),
10285 GIN_DESC(
"The vector to be copied into the first column.",
10286 "The vector to be copied into the second column.",
10287 "The vector to be copied into the third column.")));
10290 NAME(
"Matrix1RowFromVector"),
10291 DESCRIPTION(
"Forms a matrix containing one row from a vector.\n"),
10301 GIN_DESC(
"The vector to be copied.")));
10304 NAME(
"Matrix2RowFromVectors"),
10306 "Forms a matrix containing two rows from two vectors.\n"
10308 "The vectors are included as rows in the matrix in the same order\n"
10309 "as they are given.\n"),
10319 GIN_DESC(
"The vector to be copied into the first row.",
10320 "The vector to be copied into the second row.")));
10323 NAME(
"Matrix3RowFromVectors"),
10325 "Forms a matrix containing three rows from three vectors.\n"
10327 "The vectors are included as rows in the matrix in the same order\n"
10328 "as they are given.\n"),
10335 GIN(
"v1",
"v2",
"v3"),
10336 GIN_TYPE(
"Vector",
"Vector",
"Vector"),
10338 GIN_DESC(
"The vector to be copied into the first row.",
10339 "The vector to be copied into the second row.",
10340 "The vector to be copied into the third row.")));
10343 NAME(
"mblock_dlos_gridUniformCircular"),
10345 "Gives *mblock_dlos_grid* roughly circular coverage, with uniform spacing.\n"
10347 "The method considers points on a regular grid with a spacing set by\n"
10348 "GIN *spacing*. All points inside a radius from (0,0) are included in\n"
10349 "*mblock_dlos_grid*. The positions in *mblock_dlos_grid* thus covers\n"
10350 "a roughly circular domain, and cover the same solid beam angle.\n"
10351 "The radius is adjusted according to *spacing' and *centre*, but is\n"
10352 "ensured to be >= *width*.\n"
10354 "Note that the method assumes that width is small and the solid beam\n"
10355 "angle does not change with distance from (0.0).\n"
10357 "Defualt is to consider grid positions of ..., -spacing/2, spacing/2, ...\n"
10358 "If you want to have (0,0) as a point in *mblock_dlos_grid*, change\n"
10359 "*centre* from its default value.\n"),
10361 OUT(
"mblock_dlos_grid"),
10366 GIN(
"spacing",
"width",
"centre"),
10367 GIN_TYPE(
"Numeric",
"Numeric",
"Index"),
10369 GIN_DESC(
"The angular spacing between points.",
10370 "The minimum distance from (0,0) to cover.",
10371 "Set to 1 to place a point at (0,0).")));
10374 NAME(
"mblock_dlos_gridUniformRectangular"),
10376 "Gives *mblock_dlos_grid* rectangular coverage, with uniform spacing.\n"
10378 "The method creates an equidistant rectangular grid. The width in zenith\n"
10379 "and azimuth can differ. Note that selected widths are half-widths (i.e.\n"
10380 "distance from (0,0), and refers to the mimumum value allowed. The actual\n"
10381 "width depends on values selected for *spacing* and *centre*.\n"
10383 "Defualt is to consider grid positions of ..., -spacing/2, spacing/2, ...\n"
10384 "If you want to have (0,0) as a point in *mblock_dlos_grid*, change\n"
10385 "*centre* from its default value.\n"),
10387 OUT(
"mblock_dlos_grid"),
10392 GIN(
"spacing",
"za_width",
"aa_width",
"centre"),
10393 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric",
"Index"),
10395 GIN_DESC(
"The angular spacing between points.",
10396 "Min value of half-width in zenith angle direction.",
10397 "Min value of half-width in azimuth angle direction.",
10398 "Set to 1 to place a point at (0,0).")));
10401 NAME(
"mc_antennaSetGaussian"),
10403 "Makes mc_antenna (used by MCGeneral) a 2D Gaussian pattern.\n"
10405 "The gaussian antenna pattern is determined by *za_sigma* and\n"
10406 "*aa_sigma*, which represent the standard deviations in the\n"
10407 "uncorrelated bivariate normal distribution.\n"),
10414 GIN(
"za_sigma",
"aa_sigma"),
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_antennaSetGaussianByFWHM"),
10423 "Makes mc_antenna (used by MCGeneral) a 2D Gaussian pattern.\n"
10425 "The gaussian antenna pattern is determined by *za_fwhm* and\n"
10426 "*aa_fwhm*, which represent the full width half maximum (FWHM)\n"
10427 "of the antenna response, in the zenith and azimuthal planes.\n"),
10434 GIN(
"za_fwhm",
"aa_fwhm"),
10437 GIN_DESC(
"Width in the zenith angle dimension as described above.",
10438 "Width in the azimuth angle dimension as described above.")));
10441 NAME(
"mc_antennaSetPencilBeam"),
10443 "Makes mc_antenna (used by MCGeneral) a pencil beam.\n"
10445 "This WSM makes the subsequent MCGeneral WSM perform pencil beam\n"
10446 "RT calculations.\n"),
10461 "A generalised 3D reversed Monte Carlo radiative algorithm, that\n"
10462 "allows for 2D antenna patterns, surface reflection and arbitrary\n"
10463 "sensor positions.\n"
10465 "The main output variables *y* and *mc_error* represent the\n"
10466 "Stokes vector integrated over the antenna function, and the\n"
10467 "estimated error in this vector, respectively.\n"
10469 "The WSV *mc_max_iter* describes the maximum number of `photons\'\n"
10470 "used in the simulation (more photons means smaller *mc_error*).\n"
10471 "*mc_std_err* is the desired value of mc_error. *mc_max_time* is\n"
10472 "the maximum allowed number of seconds for MCGeneral. The method\n"
10473 "will terminate once any of the max_iter, std_err, max_time\n"
10474 "criteria are met. If negative values are given for these\n"
10475 "parameters then it is ignored.\n"
10477 "The WSV *mc_min_iter* sets the minimum number of photons to apply\n"
10478 "before the condition set by *mc_std_err* is considered. Values\n"
10479 "of *mc_min_iter* below 100 are not accepted.\n"
10481 "Only \"1\" and \"RJBT\" are allowed for *iy_unit*. The value of\n"
10482 "*mc_error* follows the selection for *iy_unit* (both for in- and\n"
10486 "mc_iteration_count",
10489 "mc_source_domain",
10501 "ppath_step_agenda",
10505 "surface_rtprop_agenda",
10506 "propmat_clearsky_agenda",
10519 "atmfields_checked",
10521 "scat_data_checked",
10522 "cloudbox_checked",
10529 "mc_taustep_limit"),
10530 GIN(
"l_mc_scat_order",
"t_interp_order"),
10533 GIN_DESC(
"The length to be given to *mc_scat_order*. Note that"
10534 " scattering orders equal and above this value will not"
10536 "Interpolation order of temperature for scattering data (so"
10537 " far only applied in phase matrix, not in extinction and"
10543 "A radar 3D foward Monte Carlo radiative algorithm, that allows \n"
10544 "for 2D antenna patterns and arbitrary sensor positions.\n"
10545 "Surface reflections are currently ignored.\n"
10547 "The main output variable *y* and *mc_error* represent the\n"
10548 "radar reflectivity integrated over the antenna function, and the\n"
10549 "estimated error in this vector, respectively.\n"
10551 "Unlike with yActive, the range bins gives the boundaries of \n"
10552 "the range bins as either round-trip time or distance from radar.\n"
10554 "The WSV *mc_y_tx* gives the polarization state of the \n"
10557 "The WSV *mc_max_scatorder* prescribes the maximum scattering \n"
10558 "order to consider, after which `photon\'-tracing will be\n"
10559 "terminated. A value of one calculates only single scattering.\n"
10561 "The WSV *mc_max_iter* describes the maximum number of `photons\'\n"
10562 "used in the simulation (more photons means smaller *mc_error*).\n"
10563 "The method will terminate once the max_iter criterium is met.\n"
10564 "If negative values are given for these parameters then it is\n"
10567 "Only \"1\" and \"Ze\" are allowed for *iy_unit*. The value of\n"
10568 "*mc_error* follows the selection for *iy_unit* (both for in- and\n"
10571 OUT(
"y",
"mc_error"),
10583 "ppath_step_agenda",
10585 "propmat_clearsky_agenda",
10600 "atmfields_checked",
10602 "scat_data_checked",
10603 "cloudbox_checked",
10605 "mc_max_scatorder",
10608 GIN(
"ze_tref",
"k2",
"t_interp_order"),
10609 GIN_TYPE(
"Numeric",
"Numeric",
"Index"),
10611 GIN_DESC(
"Reference temperature for conversion to Ze.",
10612 "Reference dielectric factor.",
10613 "Interpolation order of temperature for scattering data (so"
10614 " far only applied in phase matrix, not in extinction and"
10619 DESCRIPTION(
"Sets the value of mc_seed from system time\n"),
10632 NAME(
"nlte_fieldRescalePopulationLevels"),
10634 "Rescale NLTE field to expected total distribution amongst levels\n"),
10644 GIN_DESC(
"Scaling (e.g., 0.75 for only orth-water on Earth)")));
10647 NAME(
"nlte_fieldForSingleSpeciesNonOverlappingLines"),
10649 "NLTE field for a simple setup.\n"
10651 "This will solve for *nlte_field* in the input atmosphere.\n"
10652 "The solver depends on the lines not overlapping and that there\n"
10653 "is only a single species in the atmosphere.\n"),
10661 "abs_lines_per_species",
10662 "collision_coefficients",
10663 "collision_line_identifiers",
10664 "isotopologue_ratios",
10668 "iy_surface_agenda",
10669 "iy_cloudbox_agenda",
10670 "propmat_clearsky_agenda",
10671 "water_p_eq_agenda",
10678 "surface_props_data",
10680 GIN(
"df",
"convergence_limit",
"nz",
"nf",
"dampened",
"iteration_limit"),
10681 GIN_TYPE(
"Numeric",
"Numeric",
"Index",
"Index",
"Index",
"Index"),
10683 GIN_DESC(
"relative frequency to line center",
10684 "max relative change in ratio of level to stop iterations",
10685 "number of zenith angles",
10686 "number of frequency grid-points per line",
10687 "use transmission dampening or not",
10688 "max number of iterations before defaul break of iterations")));
10691 NAME(
"collision_coefficientsFromSplitFiles"),
10693 "Reads *collision_coefficients* and *collision_line_identifiers* from location on filesystem\n"
10694 "with many species. The species in this location must match *abs_species*. The location\n"
10695 "must also contain an ArrayOfQuantumIdentifier file ending with qid.xml\n"),
10697 OUT(
"collision_coefficients",
"collision_line_identifiers"),
10705 GIN_DESC(
"path to files to read")));
10708 NAME(
"NumericAdd"),
10710 "Adds a numeric and a value (out = in+value).\n"
10712 "The result can either be stored in the same or another numeric.\n"
10713 "(in and out can be the same varible, but not out and value)\n"),
10720 GIN(
"in",
"value"),
10723 GIN_DESC(
"Input numeric.",
"Value to add.")));
10726 NAME(
"NumericFromVector"),
10728 "Derivs a numeric from a vector, following selected operation.\n"
10730 "The following operations can be selected:\n"
10731 " first : Selects the first element of the vector.\n"
10732 " last : Selects the last element of the vector.\n"
10733 " max : Selects the maximum element of the vector.\n"
10734 " min : Selects the minimum element of the vector.\n"
10735 " mean : Calculates the mean of the vector.\n"),
10745 GIN_DESC(
"Input vector.",
"Selected operation.")));
10748 NAME(
"NumericInvScale"),
10750 "Inversely scales/divides a numeric with a value (out = in/value).\n"
10752 "The result can either be stored in the same or another numeric.\n"
10753 "(in and out can be the same varible, but not out and value)\n"),
10760 GIN(
"in",
"value"),
10763 GIN_DESC(
"Input numeric.",
"Scaling value.")));
10766 NAME(
"NumericScale"),
10768 "Scales/multiplies a numeric with a value (out = in*value).\n"
10770 "The result can either be stored in the same or another numeric.\n"
10771 "(in and out can be the same varible, but not out and value)\n"),
10778 GIN(
"in",
"value"),
10781 GIN_DESC(
"Input numeric.",
"Scaling value.")));
10784 NAME(
"NumericSet"),
10785 DESCRIPTION(
"Sets a numeric workspace variable to the given value.\n"),
10799 NAME(
"QuantumIdentifierSet"),
10801 "Sets a QuantumIdentifier workspace variable to the given value\n"
10802 "by converting the input String\n"),
10809 GIN(
"string_initializer"),
10812 GIN_DESC(
"The string representing the value."),
10816 NAME(
"ArrayOfQuantumIdentifierSet"),
10818 "Sets an ArrayOfQuantumIdentifier workspace variable to the given value\n"
10819 "by converting the input ArrayOfString\n"),
10826 GIN(
"string_initializers"),
10829 GIN_DESC(
"The array of string representing the values of the array."),
10835 "Retrieve nelem from given variable and store the value in the\n"
10836 "variable *nelem*.\n"),
10844 GIN_TYPE(ARRAY_GROUPS +
", Vector"),
10846 GIN_DESC(
"Variable to get the number of elements from."),
10854 "Retrieve ncols from given variable and store the value in the\n"
10855 "workspace variable *ncols*\n"),
10863 GIN_TYPE(
"Matrix, Sparse, Tensor3, Tensor4, Tensor5, Tensor6, Tensor7"),
10865 GIN_DESC(
"Variable to get the number of columns from."),
10873 "Retrieve nrows from given variable and store the value in the\n"
10874 "workspace variable *nrows*\n"),
10882 GIN_TYPE(
"Matrix, Sparse, Tensor3, Tensor4, Tensor5, Tensor6, Tensor7"),
10884 GIN_DESC(
"Variable to get the number of rows from."),
10892 "Retrieve npages from given variable and store the value in the\n"
10893 "workspace variable *npages*\n"),
10901 GIN_TYPE(
"Tensor3, Tensor4, Tensor5, Tensor6, Tensor7"),
10903 GIN_DESC(
"Variable to get the number of pages from."),
10911 "Retrieve nbooks from given variable and store the value in the\n"
10912 "workspace variable *nbooks*\n"),
10920 GIN_TYPE(
"Tensor4, Tensor5, Tensor6, Tensor7"),
10922 GIN_DESC(
"Variable to get the number of books from."),
10928 NAME(
"nshelvesGet"),
10930 "Retrieve nshelves from given variable and store the value in the\n"
10931 "workspace variable *nshelves*\n"),
10939 GIN_TYPE(
"Tensor5, Tensor6, Tensor7"),
10941 GIN_DESC(
"Variable to get the number of shelves from."),
10947 NAME(
"nvitrinesGet"),
10949 "Retrieve nvitrines from given variable and store the value in the\n"
10950 "workspace variable *nvitrines*\n"),
10960 GIN_DESC(
"Variable to get the number of vitrines from."),
10966 NAME(
"nlibrariesGet"),
10968 "Retrieve nlibraries from given variable and store the value in the\n"
10969 "workspace variable *nlibraries*\n"),
10979 GIN_DESC(
"Variable to get the number of libraries from."),
10985 NAME(
"nlte_sourceFromTemperatureAndSrcCoefPerSpecies"),
10987 "Turn NLTE absorption per species into the source function by multiplying\n"
10988 "NLTE absorption per species with the LTE Planck source function.\n"),
10990 OUT(
"nlte_source",
"dnlte_dx_source",
"nlte_dsource_dx"),
10994 IN(
"src_coef_per_species",
10996 "jacobian_quantities",
10998 "rtp_temperature"),
11008 "The variables are set as follows:\n"
11009 " nlte_field : Empty.\n"
11010 " nlte_level_identifiers : Empty.\n"),
11012 OUT(
"nlte_do",
"nlte_field",
"nlte_level_identifiers"),
11023 NAME(
"nlteSetByQuantumIdentifiers"),
11025 "Turns on NTLE calculations.\n"
11027 "Takes the quantum identifers for NLTE temperatures and matches it to\n"
11028 "lines in *abs_lines_per_species*. *abs_species* must be set and is used\n"
11029 "to speed up calculations. After the function is done, all affected\n"
11030 "lines in *abs_lines_per_species* will have an internal tag to the relevant\n"
11031 "quantum identifier, which is a requirement for deeper code.\n"
11033 "If vibrational_energies is input it must match *nlte_level_identifiers*\n"
11034 "in length. The vibrational energies of the affected lines will then be\n"
11035 "set by the function. Otherwise, it is assumed the vibrational energies\n"
11036 "are set by another method. If they are not set, calculations will complain\n"
11037 "later on while running deeper code.\n"
11039 "For now only vibrational energy states are assumed to be able to be in\n"
11040 "non-LTE conditions. The *QuantumIdentifier* for an energy state in ARTS\n"
11042 "\t\"CO2-626 EN v1 0/1 v2 1/1 l2 1/1 v3 0/1 r 1/1\"\n"
11043 "and the matching will match ALL lines with the above. Note then that if, e.g.,\n"
11044 "the \"v1 0/1\" term was removed from the above, then ARTS will assume that\n"
11045 "\"v1\" is not part of the level of energy state of interest, so lines\n"
11046 "of different \"v1\" will be matched as the same state. If a line is matched\n"
11047 "to more than one energy state, errors should be thrown, but be careful.\n"
11049 "Set type of population to change computations and expected input as:\n"
11050 "\tLTE: Compute population by ratios found from LTE temperatures\n"
11051 "\tTV: Compute population by ratios found from NLTE vibrational temperatures\n"
11052 "\tND: Compute population by ratios found from NLTE number densities\n"),
11054 OUT(
"nlte_do",
"abs_lines_per_species"),
11058 IN(
"abs_lines_per_species",
"nlte_field"),
11065 NAME(
"nlte_fieldFromRaw"),
11074 IN(
"nlte_level_identifiers",
11075 "nlte_vibrational_energies"),
11079 GIN_DESC(
"Vibrational data [nlevels, np, nlat, nlon]")));
11082 NAME(
"nlte_fieldSetLteExternalPartitionFunction"),
11085 "Sets NLTE ratios to those expected for LTE calculations\n"
11086 "with a known partition function\n"),
11088 OUT(
"nlte_do",
"nlte_field",
"abs_lines_per_species"),
11092 IN(
"abs_lines_per_species",
11093 "nlte_level_identifiers",
11094 "partition_functions",
11102 NAME(
"ArrayOfQuantumIdentifierFromLines"),
11104 "Sets an ArrayOfQuantumIdentifier to all levels in *abs_lines_per_species*\n"
11105 "with defined quantum numbers\n"
11107 "Lines without defined quantum numbers are ignored\n"),
11112 GOUT_DESC(
"Identifiers to all levels in *abs_lines_per_species*"),
11113 IN(
"abs_lines_per_species"),
11117 GIN_DESC(
"Only look at global quantum numbers")));
11120 NAME(
"nlte_fieldSetLteInternalPartitionFunction"),
11122 "Turns on NTLE calculations.\n"
11124 "Sets NLTE ratios to those expected for LTE calculations\n"
11125 "with estimation of the partition function as the sum of all\n"
11126 "states of a species\n"),
11128 OUT(
"nlte_do",
"nlte_field",
"abs_lines_per_species"),
11132 IN(
"abs_lines_per_species",
"nlte_level_identifiers",
"t_field"),
11140 DESCRIPTION(
"Sets time to system_clock::now().\n"),
11153 NAME(
"timeOffset"),
11169 "Inversion by the so called optimal estimation method (OEM).\n"
11171 "Work in progress ...\n"
11173 "The cost function to minimise, including a normalisation with length"
11175 " cost = cost_y + cost_x\n"
11177 " cost_y = 1/m * [y-yf]' * covmat_se_inv * [y-yf]\n"
11178 " cost_x = 1/m * [x-xa]' * covmat_sx_inv * [x-xa]\n"
11180 " The current implementation provides 3 methods for the minimization of\n"
11181 "the cost functional: Linear, Gauss-Newton and Levenberg-Marquardt.\n"
11182 "The Gauss-Newton minimizer attempts to find a minimum solution by \n"
11183 "fitting a quadratic function to the cost functional. The linear minimizer\n"
11184 "is a special case of the Gauss-Newton method, since for a linear forward\n"
11185 "model the exact solution of the minimization problem is obtained after\n"
11186 "the first step. The Levenberg-Marquardt method adaptively constrains the\n"
11187 "search region for the next iteration step by means of the so-called gamma-factor.\n"
11188 "This makes the method more suitable for strongly non-linear problems.\n"
11189 "If the gamma-factor is 0, Levenberg-Marquardt and Gauss-Newton method\n"
11190 "are identical. Each minimization method (li,gn,lm) has an indirect\n"
11191 "variant (li_cg,gn_cg,lm_cg), which uses the conjugate gradient solver\n"
11192 "for the linear system that has to be solved in each minimzation step.\n"
11193 "This of advantage for very large problems, that would otherwise require\n"
11194 "the computation of expensive matrix products.\n"
11196 "Description of the special input arguments:\n"
11199 " \"li\": A linear problem is assumed and a single iteration is performed.\n"
11200 " \"li_cg\": A linear problem is assumed and solved using the CG solver.\n"
11201 " \"gn\": Non-linear, with Gauss-Newton iteration scheme.\n"
11202 " \"gn_cg\": Non-linear, with Gauss-Newton and conjugate gradient solver.\n"
11203 " \"lm\": Non-linear, with Levenberg-Marquardt (LM) iteration scheme.\n"
11204 " \"lm_cg\": Non-linear, with Levenberg-Marquardt (LM) iteration scheme and conjugate gradient solver.\n"
11205 "*max_start_cost*\n"
11206 " No inversion is done if the cost matching the a priori state is above\n"
11207 " this value. If set to a negative value, all values are accepted.\n"
11208 " This argument also controls if the start cost is calculated. If\n"
11209 " set to <= 0, the start cost in *oem_diagnostics* is set to NaN\n"
11210 " when using \"li\" and \"gn\".\n"
11212 " A normalisation vector for *x*. A normalisation of *x* can be needed\n"
11213 " due to limited numerical precision. If this vector is set to be empty\n"
11214 " no normalisation is done (defualt case). Otherwise, this must be a\n"
11215 " vector with same length as *x*, just having values above zero.\n"
11216 " Elementwise division between *x* and *x_norm* (x./x_norm) shall give\n"
11217 " a vector where all values are in the order of unity. Maybe the best\n"
11218 " way to set *x_norm* is x_norm = sqrt( diag( Sx ) ).\n"
11220 " Maximum number of iterations to perform. No effect for \"li\".\n"
11222 " Iteration stop criterion. The criterion used is the same as given\n"
11223 " in Rodgers\' \"Inverse Methods for Atmospheric Sounding\"\n"
11224 "*lm_ga_settings*\n"
11225 " Settings controlling the gamma factor, part of the \"LM\" method.\n"
11226 " This is a vector of length 6, having the elements (0-based index):\n"
11227 " 0: Start value.\n"
11228 " 1: Fractional decrease after succesfull iteration.\n"
11229 " 2: Fractional increase after unsuccessful iteration.\n"
11230 " 3: Maximum allowed value. If the value is passed, the inversion\n"
11232 " 4: Lower treshold. If the threshold is passed, gamma is set to zero.\n"
11233 " If gamma must be increased from zero, gamma is set to this value.\n"
11234 " 5: Gamma limit. This is an additional stop criterion. Convergence\n"
11235 " is not considered until there has been one succesful iteration\n"
11236 " having a gamma <= this value.\n"
11237 " The default setting triggers an error if \"lm\" is selected.\n"
11238 "*clear matrices*\n"
11239 " With this flag set to 1, *jacobian* and *dxdy* are returned as empty\n"
11241 "*display_progress*\n"
11242 " Controls if there is any screen output. The overall report level\n"
11243 " is ignored by this WSM.\n"),
11262 "jacobian_quantities",
11263 "inversion_iterate_agenda"),
11271 "display_progress"),
11281 GIN_DESC(
"Iteration method. For this and all options below, see "
11283 "Maximum allowed value of cost function at start.",
11284 "Normalisation of Sx.",
11285 "Maximum number of iterations.",
11286 "Stop criterion for iterative inversions.",
11287 "Settings associated with the ga factor of the LM method.",
11288 "An option to save memory.",
11289 "Flag to control if inversion diagnostics shall be printed "
11290 "on the screen.")));
11295 "Calculates the averaging kernel matrix describing the sensitivity of the\n"
11296 "OEM retrieval with respect to the true state of the system. A prerequisite\n"
11297 "for the calculation of the averaging kernel matrix is a successful OEM\n"
11298 "calculation in which the jacobian and the gain matrix dxdy have been calculated.\n"),
11299 AUTHORS(
"Simon Pfreundschuh"),
11304 IN(
"dxdy",
"jacobian"),
11311 NAME(
"covmat_soCalc"),
11313 "Calculates the covariance matrix describing the error due to uncertainties\n"
11314 "in the observation system. The uncertainties of the observation system are\n"
11315 "described by *covmat_se*, which must be set by the user to include the\n"
11316 "relevant contributions from the measurement and the forward model.\n"
11318 "Prerequisite for the calculation of *covmat_so* is a successful OEM\n"
11319 "computation where also the gain matrix has been computed.\n"),
11320 AUTHORS(
"Simon Pfreundschuh"),
11325 IN(
"dxdy",
"covmat_se"),
11332 NAME(
"covmat_ssCalc"),
11334 "Calculates the covariance matrix describing the error due to smoothing.\n"
11336 "The calculation of *covmat_ss* also requires the averaging kernel matrix *avk*\n"
11337 "to be computed after a successful OEM calculation.\n"),
11338 AUTHORS(
"Simon Pfreundschuh"),
11343 IN(
"avk",
"covmat_sx"),
11350 NAME(
"opt_prop_bulkCalc"),
11352 "Calculates bulk absorption extinction at one atmospheric grid point.\n"
11354 "This WSM sums up the monochromatic absorption vectors and\n"
11355 "extinction matrices of all scattering elements (*abs_vec_spt* and\n"
11356 "*ext_mat_spt*, respectively) weighted by their respective\n"
11357 "particle number density given by *pnd_field*, for a single location\n"
11358 "within the cloudbox, given by *scat_p_index*, *scat_lat_index*, and\n"
11359 "*scat_lon_index*.\n"
11360 "The resulting extinction matrix is added to the workspace variable\n"
11362 AUTHORS(
"Jana Mendrok, Sreerekha T.R."),
11363 OUT(
"ext_mat",
"abs_vec"),
11381 NAME(
"opt_prop_sptFromData"),
11383 "Calculates monochromatic optical properties for all scattering\n"
11386 "In this function the extinction matrix and the absorption vector\n"
11387 "are calculated in the laboratory frame. An interpolation of the\n"
11388 "data on the actual frequency is the first step in this function.\n"
11389 "The next step is a transformation from the database coordinate\n"
11390 "system to the laboratory coordinate system.\n"
11392 "Output of the function are *ext_mat_spt* and *abs_vec_spt*, which\n"
11393 "hold the optical properties for a specified propagation direction\n"
11394 "for each scattering element.\n"),
11396 OUT(
"ext_mat_spt",
"abs_vec_spt"),
11420 NAME(
"opt_prop_sptFromScat_data"),
11422 "Derives monochromatic optical properties for all scattering\n"
11425 "As *opt_prop_sptFromData*, but using frequency pre-interpolated\n"
11426 "data (as produced by *scat_dataCalc*), i.e. in here no frequency\n"
11427 "interpolation is done anymore.\n"),
11428 AUTHORS(
"Jana Mendrok, Claudia Emde"),
11429 OUT(
"ext_mat_spt",
"abs_vec_spt"),
11436 "scat_data_checked",
11453 NAME(
"opt_prop_sptFromMonoData"),
11455 "Calculates optical properties for the scattering elements.\n"
11457 "As *opt_prop_sptFromData* but no frequency interpolation is\n"
11458 "performed. The single scattering data is here obtained from\n"
11459 "*scat_data_mono*, instead of *scat_data*.\n"),
11461 OUT(
"ext_mat_spt",
"abs_vec_spt"),
11484 DESCRIPTION(
"Sets the output file format to ASCII.\n"),
11486 OUT(
"output_file_format"),
11498 DESCRIPTION(
"Sets the output file format to binary.\n"),
11500 OUT(
"output_file_format"),
11512 DESCRIPTION(
"Sets the output file format to zipped ASCII.\n"),
11514 OUT(
"output_file_format"),
11525 NAME(
"particle_bulkprop_fieldClip"),
11527 "Clipping of *particle_bulkprop_field*.\n"
11529 "The method allows you to apply hard limits the values of\n"
11530 "*particle_bulkprop_field*. All values, of the property selected,\n"
11531 "below *limit_low*, are simply set to *limit_low*. And the same\n"
11532 "is performed with respect to *limit_high*. That is, the data in x\n"
11533 "for the retrieval quantity are forced to be inside the range\n"
11534 "[limit_low,limit_high].\n"
11536 "Setting species=\"ALL\", is a shortcut for applying the limits on all\n"
11539 OUT(
"particle_bulkprop_field"),
11543 IN(
"particle_bulkprop_field",
"particle_bulkprop_names"),
11544 GIN(
"bulkprop_name",
"limit_low",
"limit_high"),
11545 GIN_TYPE(
"String",
"Numeric",
"Numeric"),
11547 GIN_DESC(
"Name of bulk property to consider, or \"ALL\".",
11548 "Lower limit for clipping.",
11549 "Upper limit for clipping.")));
11552 NAME(
"particle_bulkprop_fieldPerturb"),
11554 "Adds a perturbation to *particle_bulkprop_field*.\n"
11556 "Works as *AtmFieldPerturb* but acts on *particle_bulkprop_field*.\n"),
11558 OUT(
"particle_bulkprop_field"),
11562 IN(
"particle_bulkprop_field",
11567 "particle_bulkprop_names"),
11568 GIN(
"particle_type",
11576 "String",
"Vector",
"Vector",
"Vector",
"Index",
"Numeric",
"String"),
11578 GIN_DESC(
"Name of field to perturb, such as "
11581 "Pressure retrieval grid.",
11582 "Latitude retrieval grid.",
11583 "Longitude retrieval grid.",
11584 "Index of position where the perturbation shall be performed.",
11585 "Size of perturbation.",
11586 "Type of perturbation, "
11593 NAME(
"particle_bulkprop_fieldPerturbAtmGrids"),
11595 "Adds a perturbation to *particle_bulkprop_field*.\n"
11597 "Works as *AtmFieldPerturbAtmGrids* but acts on *particle_bulkprop_field*.\n"),
11599 OUT(
"particle_bulkprop_field"),
11603 IN(
"particle_bulkprop_field",
11608 "particle_bulkprop_names"),
11609 GIN(
"particle_type",
"pert_index",
"pert_size",
"pert_mode"),
11610 GIN_TYPE(
"String",
"Index",
"Numeric",
"String"),
11612 GIN_DESC(
"Name of field to perturb, such as "
11615 "Index of position where the perturbation shall be performed.",
11616 "Size of perturbation.",
11617 "Type of perturbation, "
11624 NAME(
"particle_massesFromMetaDataSingleCategory"),
11626 "Sets *particle_masses* based on *scat_meta* assuming\n"
11627 "all particles are of the same mass category.\n"
11629 "This method derives the particle masses from the mass entry\n"
11630 "of each scattering element. It is assumed that all scattering\n"
11631 "elements represent particles of the same (bulk) matter\n"
11632 "(e.g. water or ice). With other words, a single mass category\n"
11633 "is assumed (see *particle_masses* for a definition of \"mass\n"
11636 "To be clear, the above are assumptions of the method, the user\n"
11637 "is free to work with any scattering element. For Earth and just having\n"
11638 "cloud and particles, the resulting mass category can be seen as\n"
11639 "the total cloud water content, with possible contribution from\n"
11640 "both ice and liquid phase.\n"),
11641 AUTHORS(
"Jana Mendrok",
"Patrick Eriksson"),
11642 OUT(
"particle_masses"),
11653 NAME(
"particle_massesFromMetaData"),
11655 "Derives *particle_masses* from *scat_meta*.\n"
11657 "This method is supposed to be used to derive *particle_masses*\n"
11658 "when *pnd_field* is internally calculated using\n"
11659 "*pnd_fieldCalcFromParticleBulkProps* (in contrast to reading it\n"
11660 "from external sources using *ScatElementsPndAndScatAdd* and\n"
11661 "*pnd_fieldCalcFrompnd_field_raw*).\n"
11662 "It extracts the mass information of the scattering elements from\n"
11663 "*scat_meta*. Each scattering species is taken as a separate\n"
11664 "category of particle_masses, i.e., the resulting\n"
11665 "*particle_masses* matrix will contain as many columns as\n"
11666 "scattering species are present in *scat_meta*.\n"),
11668 OUT(
"particle_masses"),
11679 NAME(
"partition_functionsInitFromBuiltin"),
11681 "Initialize partition functions with default values from built-in\n"
11682 "species data.\n"),
11684 OUT(
"partition_functions"),
11695 NAME(
"pha_matCalc"),
11697 "Calculates the total phase matrix of all scattering elements.\n"
11699 "This function sums up the monochromatic phase matrices of all\n"
11700 "scattering elements *pha_mat_spt* weighted with their respective\n"
11701 "particle number density, given by *pnd_field*, for a single location\n"
11702 "within the cloudbox, given by *scat_p_index*, *scat_lat_index*, and\n"
11703 "*scat_lon_index*.\n"),
11721 NAME(
"pha_mat_sptFromData"),
11723 "Calculation of the phase matrix of the individual scattering elements.\n"
11725 "This function can be used in *pha_mat_spt_agenda* as part of\n"
11726 "the calculation of the scattering integral.\n"
11728 "First, data at the requested frequency (given by *f_grid* and\n"
11729 "*f_index*) and temperature (given by *rtp_temperature*) is\n"
11730 "extracted. This is followed by a transformation from the database\n"
11731 "coordinate system to the laboratory coordinate system.\n"
11733 "Frequency extraction is always done by (linear) interpolation.\n"
11734 "Temperature is (linearly) interpolated when at least two\n"
11735 "temperature grid points are present in the *scat_data* and\n"
11736 "*rtp_temperature* is positive. If only a single temperature point\n"
11737 "is available, data for this point is used without modification. In\n"
11738 "order to speed up calculations, temperature interpolation can be\n"
11739 "avoided by passing a *rtp_temperature*<0. In this case, a specific\n"
11740 "temperature grid from the *scat_data* grid is used without\n"
11741 "modification. The selection is as follows:\n"
11742 " -10 < *rtp_temperature * < 0 T_grid[0] lowest temperature\n"
11743 " -20 < *rtp_temperature * < -10 T_grid[nT-1] highest temperature\n"
11744 " *rtp_temperature* < -20 T_grid[nT/2] median grid point\n"),
11746 OUT(
"pha_mat_spt"),
11769 NAME(
"pha_mat_sptFromDataDOITOpt"),
11771 "Calculation of the phase matrix of the individual scattering elements.\n"
11773 "In this function the phase matrix is extracted from\n"
11774 "*pha_mat_sptDOITOpt*. It can be used in the agenda\n"
11775 "*pha_mat_spt_agenda*. This method must be used in combination with\n"
11776 "*DoitScatteringDataPrepare*.\n"
11778 "Temperature is considered as described for *pha_mat_sptFromData*\n"),
11780 OUT(
"pha_mat_spt"),
11785 "pha_mat_sptDOITOpt",
11787 "doit_za_grid_size",
11802 NAME(
"pha_mat_sptFromMonoData"),
11804 "Calculation of the phase matrix of the individual scattering elements.\n"
11806 "This function is the monochromatic version of *pha_mat_sptFromData*.\n"),
11808 OUT(
"pha_mat_spt"),
11814 "doit_za_grid_size",
11829 NAME(
"pha_mat_sptFromScat_data"),
11831 "Calculation of the phase matrix of the individual scattering elements.\n"
11833 "As *pha_mat_sptFromData*, but using frequency pre-interpolated\n"
11834 "data (as produced by *scat_dataCalc*), i.e. in here no frequency\n"
11835 "interpolation is done anymore.\n"),
11836 AUTHORS(
"Jana Mendrok, Claudia Emde"),
11837 OUT(
"pha_mat_spt"),
11843 "scat_data_checked",
11860 NAME(
"pndFromPsd"),
11862 "Calculates *pnd_data* from given *psd_data* for one scattering species.\n"
11864 "Performs integration of the size distribution over the size grid\n"
11865 "bin deriving pnd (units #/m3) from psd (units #/m3/m). Some checks\n"
11866 "on the sufficiency of the size grid range and coverage are applied.\n"
11868 "*quad_order* can be 0 for rectangular or 1 for trapezoidal\n"
11869 "integration. The only difference is the treatment of the start and\n"
11870 "end nodes. For trapezoidal their corresponding bins end exactly at\n"
11871 "the nodes, while for rectangular they extend further out by the half\n"
11872 "distance to the neighbor node (but not beyond 0).\n"
11874 "Attempts to check that the size grids and *scat_data* represent the\n"
11875 "bulk extinction sufficiently. Specifically, it is tested that\n"
11876 " (a) psd*ext is decreasing at the small and large particle size\n"
11877 " ends of the size grid - but only if scattering species bulk\n"
11878 " extinction exceeds 1% of *threshold_ss_ext*.\n"
11879 " (b) removing the smallest and largest particles changes the\n"
11880 " resulting bulk extinction by less then a fraction of\n"
11881 " *threshold_se_ext* - but only if scattering species bulk\n"
11882 " extinction exceeds *threshold_ss_ext* and number density (pnd)\n"
11883 " of the edge size point at this atmospheric level is larger\n"
11884 " than *threshold_se_pnd* times the maximum pnd of this\n"
11885 " scattering element over all atmospheric levels.\n"
11886 "Skipping tests in case of low extinction is done in order to\n"
11887 "minimize issues arising from very low mass densities,\n"
11888 "particularly at single atmospheric levels, and very low bulk\n"
11889 "extinctions, i.e. in cases where the effects on the radiance fields\n"
11890 "are estimated to be low."
11892 "NOTE: The tests are only approximate and do not guarantee the\n"
11893 "validity of the resulting bulk properties (and increasing the\n"
11894 "thresholds will decrease the reliability of the bulk properties).\n"),
11895 AUTHORS(
"Jana Mendrok, Patrick Eriksson"),
11896 OUT(
"pnd_data",
"dpnd_data_dx"),
11900 IN(
"pnd_size_grid",
11906 "scat_data_checked"),
11909 "threshold_se_ext",
11910 "threshold_ss_ext",
11911 "threshold_se_pnd"),
11912 GIN_TYPE(
"Index",
"Index",
"Numeric",
"Numeric",
"Numeric"),
11914 GIN_DESC(
"Order of bin quadrature.",
11915 "Take data from scattering species of this index (0-based) in"
11917 "Maximum allowed extinction fraction in each of the edge size"
11919 "Minimum bulk extinction in the processed scattering species"
11920 " for which to apply size grid representation checks.",
11921 "Minimum ratio of edge point pnd to maximum pnd of this"
11922 " scattering element over all pressure levels.")));
11925 NAME(
"pndFromPsdBasic"),
11927 "Calculates *pnd_data* from given *psd_data*.\n"
11929 "As *pndFromPsdBasic*, but without bulk extinction representation\n"
11931 AUTHORS(
"Jana Mendrok, Patrick Eriksson"),
11932 OUT(
"pnd_data",
"dpnd_data_dx"),
11936 IN(
"pnd_size_grid",
"psd_data",
"psd_size_grid",
"dpsd_data_dx"),
11940 GIN_DESC(
"Order of bin quadrature.")));
11943 NAME(
"pnd_fieldCalcFromParticleBulkProps"),
11945 "Converts particle bulk property data to *pnd_field*.\n"
11947 "In short, the method combines *scat_species*, *pnd_agenda_array*,\n"
11948 "*particle_bulkprop_field* and their associated variables to derive\n"
11951 "The method does nothing if cloudbox is inactive.\n"
11953 "Otherwise, cloudbox limits must be set before calling the method,\n"
11954 "and *particle_bulkprop_field* is checked to have non-zero elements\n"
11955 "just inside the cloudbox.\n"),
11956 AUTHORS(
"Patrick Eriksson, Jana Mendrok"),
11957 OUT(
"pnd_field",
"dpnd_field_dx"),
11961 IN(
"atmosphere_dim",
11971 "particle_bulkprop_field",
11972 "particle_bulkprop_names",
11973 "pnd_agenda_array",
11974 "pnd_agenda_array_input_names",
11976 "jacobian_quantities"),
11983 NAME(
"pnd_fieldCalcFrompnd_field_raw"),
11985 "Interpolation of particle number density fields to calculation grid\n"
11986 "inside cloudbox.\n"
11988 "This method interpolates the particle number density field\n"
11989 "from the raw data *pnd_field_raw* to obtain *pnd_field*.\n"
11990 "For 1D cases, where internally *GriddedFieldPRegrid* and\n"
11991 "*GriddedFieldLatLonRegrid* are applied, *zeropadding*=1 sets the\n"
11992 "*pnd_field* at pressure levels levels exceeding pnd_field_raw's\n"
11993 "pressure grid to 0 (not implemented for 2D and 3D yet). Default:\n"
11994 "zeropadding=0, which throws an error if the calculation pressure grid\n"
11995 "*p_grid* is not completely covered by pnd_field_raw's pressure grid.\n"),
11996 AUTHORS(
"Sreerekha T.R.",
"Claudia Emde",
"Oliver Lemke"),
11997 OUT(
"pnd_field",
"dpnd_field_dx"),
12007 "jacobian_quantities"),
12008 GIN(
"zeropadding"),
12011 GIN_DESC(
"Allow zeropadding of pnd_field.")));
12014 NAME(
"pnd_fieldExpand1D"),
12016 "Maps a 1D pnd_field to a (homogeneous) 2D or 3D pnd_field.\n"
12018 "This method takes a 1D *pnd_field* and converts it to a 2D or 3D\n"
12019 "\"cloud\". It is assumed that a complete 1D case has been created,\n"
12020 "and after this *atmosphere_dim*, *lat_grid*, *lon_grid* and\n"
12021 "*cloudbox_limits* have been changed to a 2D or 3D case (without\n"
12022 "changing the vertical extent of the cloudbox.\n"
12024 "No modification of *pnd_field* is made for the pressure dimension.\n"
12025 "At the latitude and longitude cloudbox edge points *pnd_field* is set to\n"
12026 "zero. This corresponds to nzero=1. If you want a larger margin between\n"
12027 "the lat and lon cloudbox edges and the \"cloud\" you increase\n"
12028 "*nzero*, where *nzero* is the number of grid points for which\n"
12029 "*pnd_field* shall be set to 0, counted from each lat and lon edge.\n"
12031 "See further *AtmFieldsExpand1D*.\n"),
12037 IN(
"pnd_field",
"atmosphere_dim",
"cloudbox_on",
"cloudbox_limits"),
12041 GIN_DESC(
"Number of zero values inside lat and lon limits.")));
12044 NAME(
"pnd_fieldZero"),
12046 "Sets *pnd_field* to zero.\n"
12048 "Creates an empty *pnd_field* of cloudbox size according to\n"
12049 "*cloudbox_limits* and with number of scattering elemements\n"
12050 "according to *scat_data*. If *scat_data* is not set yet, it will be\n"
12051 "filled with one dummy scattering element.\n"
12053 "The method works with both *scat_data* and *scat_data_raw*."
12055 "This method primarily exists for testing purposes.\n"
12056 "On the one hand, empty *pnd_field* runs can be used to test the\n"
12057 "agreement between true clear-sky (*cloudboxOff*) solutions and the\n"
12058 "scattering solver solution in factual clear-sky conditions. It is\n"
12059 "important to avoid discontinuities when switching from thin-cloud\n"
12060 "to clear-sky conditions.\n"
12061 "Moreover, scattering calculations using the DOIT method include\n"
12062 "interpolation errors. If one is interested in this effect, one\n"
12063 "should compare the DOIT result with an empty cloudbox to a clearsky\n"
12064 "calculation. That means that the iterative method is performed for\n"
12065 "a cloudbox with no particles.\n"),
12066 AUTHORS(
"Claudia Emde, Jana Mendrok"),
12067 OUT(
"pnd_field",
"dpnd_field_dx",
"scat_data"),
12075 "jacobian_quantities"),
12082 NAME(
"ppath_fieldFromDownUpLimbGeoms"),
12084 "Computes ppath_field from \"standalone\" sensors looking upwards from\n"
12085 "0 m altitude with zenith angles range [0, 90], downwards from the top\n"
12086 "of the atmosphere covering the zenith angle range from 180 degrees to\n"
12087 "the surface tangent minus 1e-4 degrees, and through the limb covering\n"
12088 "at the same position as the downwards looking sensor covering the zenith\n"
12089 "angle range from the surface tangent plus 1e-4 degrees to 90 degrees minus\n"
12092 "The top of the atmosphere is from *z_field*(-1, 0, 0) [python range notation].\n"
12094 "The field will consist of 3*nz arrays structured as [up, limb, down]\n"
12096 "The intent of this function is to generate a field so that calculations\n"
12097 "of *ppvar_iy* of all the fields will cover the zenith angle space\n"
12098 "of all positions in *z_field*.\n"
12100 "Only works for *atmosphere_dim* 1, spherical planets, and *ppath_lmax*<0\n"),
12102 OUT(
"ppath_field"),
12113 "cloudbox_checked",
12114 "ppath_inside_cloudbox_do",
12123 GIN_DESC(
"Number of zenith angles per position")));
12128 "Stand-alone calculation of propagation paths.\n"
12130 "Beside a few checks of input data, the only operation of this\n"
12131 "method is to execute *ppath_agenda*.\n"
12133 "Propagation paths are normally calculated as part of the radiative\n"
12134 "transfer calculations, and this method is not part of the control\n"
12135 "file. A reason to call this function directly would be to obtain a\n"
12136 "propagation path for plotting. Anyhow, use this method instead\n"
12137 "of calling e.g.*ppathStepByStep directly.\n"),
12149 "cloudbox_checked",
12150 "ppath_inside_cloudbox_do",
12160 NAME(
"ppath_fieldCalc"),
12162 "Stand-alone calculation of propagation path field from sensors.\n"
12164 "Uses *ppathCalc* internally.\n"),
12166 OUT(
"ppath_field"),
12176 "cloudbox_checked",
12177 "ppath_inside_cloudbox_do",
12187 NAME(
"ppathCalcFromAltitude"),
12189 "Moves *rte_pos* forwards to near altitude before calling *ppathCalc*\n"
12190 "to compute a different *ppath*. The accuracy-variable gives minimum\n"
12191 "distance before the input altitude.\n"
12193 "The forward-moving algorithm calls *ppathCalc* several\n"
12194 "times at reduced maximum distances. The intention is to maintain\n"
12195 "the correct *rte_los* for a given *rte_pos* at all altitudes. The\n"
12196 "method is thus relatively slow, and VERY memory intense at low\n"
12199 "Intended to be used with \"tropospheric corrections\" from ground\n"
12200 "geometry. Not well-tested\n"
12202 "Throws error if no altitude is in line of sight.\n"),
12214 "cloudbox_checked",
12215 "ppath_inside_cloudbox_do",
12219 GIN(
"altitude",
"accuracy"),
12222 GIN_DESC(
"Altitude to move forward towards",
"Accuracy of altitude")));
12225 NAME(
"ppathFromRtePos2"),
12227 "Determines the propagation path from *rte_pos2* to *rte_pos*.\n"
12229 "The propagation path linking *rte_pos* and *rte_pos2* is calculated\n"
12230 "and returned. The method determines the path in a pure numerical\n"
12231 "manner, where a simple algorithm is applied. The task is to find\n"
12232 "the value of *rte_los* (at *rte_pos*) linking the two positions.\n"
12234 "See the user guide for a description of the search algorithm,\n"
12235 "including a more detailed definition of *za_accuracy*, \n"
12236 "*pplrt_factor* and *pplrt_lowest*.\n"
12238 "The standard application of this method should be to radio link\n"
12239 "calculations, where *rte_pos2* corresponds to a transmitter, and\n"
12240 "*rte_pos* to the receiver/sensor.\n"
12242 "The details of the ray tracing is controlled by *ppath_step_agenda*\n"
12245 OUT(
"ppath",
"rte_los",
"ppath_lraytrace"),
12249 IN(
"ppath_step_agenda",
12262 "ppath_lraytrace"),
12263 GIN(
"za_accuracy",
"pplrt_factor",
"pplrt_lowest"),
12264 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric"),
12266 GIN_DESC(
"Required accuracy, in form of the maximum allowed angular "
12268 "The factor with which ppath_lraytrace is decreased if "
12269 "no solution is found.",
12270 "Lowest value ppath_lraytrace to consider. The calculations "
12271 "are halted if this length is passed.")));
12274 NAME(
"ppathPlaneParallel"),
12276 "Propagation path calculations for a plane parallel atmosphere.\n"
12278 "This method basically assumes that the planet's radius is infinite,\n"
12279 "i.e. the planet surface has no curvature. Some consequences of this\n"
12281 " - the mathod can only be used for 1D\n"
12282 " - zenith angles between 89.9 and 90.1 deg are not allowed\n"
12283 " - refraction is always neglected\n"
12284 " - radii in ppath are set to Inf\n"
12286 "Notice that the method provides full propagation paths. This means\n"
12287 "that *ppath_step_agenda* is ignored (and thus also refraction).\n"
12288 "On the other hand, the method considers the cloudbox exactly as\n"
12289 "the standard path calculations.\n"),
12295 IN(
"atmosphere_dim",
12300 "ppath_inside_cloudbox_do",
12310 NAME(
"ppathStepByStep"),
12312 "Standard method for calculation of propagation paths.\n"
12314 "This method calculates complete propagation paths in a stepwise\n"
12315 "manner. Each step is denoted as a \"ppath_step\" and is the path\n"
12316 "through/inside a single grid box.\n"
12318 "The definition of a propgation path cannot be accommodated here.\n"
12319 "For more information read the chapter on propagation paths in the\n"
12320 "ARTS user guide.\n"
12322 "This method should never be called directly. Use *ppathCalc* instead\n"
12323 "if you want to extract propagation paths.\n"),
12329 IN(
"ppath_step_agenda",
12330 "ppath_inside_cloudbox_do",
12344 "ppath_lraytrace"),
12351 NAME(
"ppathWriteXMLPartial"),
12353 "WSM to only write a reduced Ppath, omitting grid positions.\n"
12355 "The following fields are set to be empty: gp_p, gp_lat and gp_lon.\n"
12356 "This cam drastically decrease the time for reading the structure\n"
12357 "by some external software.\n"
12359 "If *file_index is >= 0, the variable is written to a file with name:\n"
12360 " <filename>.<file_index>.xml.\n"
12361 "where <file_index> is the value of *file_index*.\n"
12363 "This means that *filename* shall here not include the .xml\n"
12364 "extension. Omitting filename works as for *WriteXML*.\n"),
12370 IN(
"output_file_format",
"ppath"),
12371 GIN(
"filename",
"file_index"),
12375 "Optional file index to append to filename.")));
12378 NAME(
"ppath_stepGeometric"),
12380 "Calculates a geometrical propagation path step.\n"
12382 "This function determines a propagation path step by pure\n"
12383 "geometrical calculations. That is, refraction is neglected. Path\n"
12384 "points are always included for crossings with the grids, tangent\n"
12385 "points and intersection points with the surface. The WSV *ppath_lmax*\n"
12386 "gives the option to include additional points to ensure that the\n"
12387 "distance along the path between the points does not exceed the\n"
12388 "selected maximum length. No additional points are included if\n"
12389 "*ppath_lmax* is set to <= 0.\n"
12391 "For further information, type see the on-line information for\n"
12392 "*ppath_step_agenda*.\n"),
12412 NAME(
"ppath_stepRefractionBasic"),
12414 "Calculates a propagation path step, considering refraction by a\n"
12415 "basic approach.\n"
12417 "Refraction is taken into account by probably the simplest approach\n"
12418 "possible. The path is treated to consist of piece-wise geometric\n"
12419 "steps. A geometric path step is calculated from each point by\n"
12420 "using the local line-of-sight. Snell's law for spherical symmetry\n"
12421 "is used for 1D to determine the zenith angle at the new point.\n"
12422 "For 2D and 3D, the zenith angle is calculated using the average\n"
12423 "gradient of the refractive index between the two points. For 3D,\n"
12424 "the azimuth angle is treated in the same way as the zenith one.\n"
12426 "The maximum length of each ray tracing step is given by the WSV\n"
12427 "*ppath_lraytrace*. The length will never exceed the given maximum,\n"
12428 "but it can be smaller. The ray tracing steps are only used to\n"
12429 "determine the path. Points to describe the path are included as\n"
12430 "for *ppath_stepGeometric*, this including the functionality of\n"
12431 "*ppath_lmax*.\n"),
12437 IN(
"refr_index_air_agenda",
12450 "ppath_lraytrace"),
12457 NAME(
"ppvar_optical_depthFromPpvar_trans_cumulat"),
12459 "Sets *ppvar_optical_depth* according to provided transmission data.\n"
12461 "The values in ppvar_optical_depth are set to\n"
12462 "-log( ppvar_trans_cumulat(joker,joker,0,0) ).\n"),
12464 OUT(
"ppvar_optical_depth"),
12468 IN(
"ppvar_trans_cumulat"),
12476 DESCRIPTION(
"Prints a variable on the screen.\n"),
12483 GIN(
"in",
"level"),
12486 GIN_DESC(
"Variable to be printed.",
"Output level to use."),
12493 DESCRIPTION(
"Prints (most) physical constants used in ARTS.\n"),
12507 DESCRIPTION(
"Prints a list of the workspace variables.\n"),
12514 GIN(
"only_allocated",
"level"),
12517 GIN_DESC(
"Flag for printing either all variables (0) or only "
12518 "allocated ones (1).",
12519 "Output level to use."),
12526 NAME(
"ZFromPSimple"),
12528 "Simple conversion from pressure to altitude.\n"
12530 "This function converts a vector of pressure values to an approximate vector\n"
12531 "of corresponding heights. The formula used to convert pressure to height is:\n"
12532 "z = 16000 * (5.0 - log10(p))"
12533 "That is, a pressure is assumed to decrease by a factor of 10 every 16km.\n"
12535 "Note that all pressure values in the vector must be greater than 0.01.\n"),
12536 AUTHORS(
"Simon Pfreundschuh"),
12540 GOUT_DESC(
"Approximate heights of pressure grid points."),
12550 NAME(
"PFromZSimple"),
12552 "Simple conversion from altitude to pressure.\n"
12554 "This function converts a vector of altitudes to an approximate vector\n"
12555 "of corresponding pressures. The formula used to convert altitide z to height\n"
12557 "p = 10.0^(5.0 - z / 1600)\n"
12559 "Note that all altitude values in the vector must be less than 120 km, \n"
12560 " otherwise an error will be thrown.\n"),
12561 AUTHORS(
"Simon Pfreundschuh"),
12565 GOUT_DESC(
"Approximate pressures of corresponding to given altitudes."),
12575 NAME(
"propmat_clearskyAddFaraday"),
12577 "Calculates absorption matrix describing Faraday rotation.\n"
12579 "Faraday rotation is a change of polarization state of an\n"
12580 "electromagnetic wave propagating through charged matter by\n"
12581 "interaction with a magnetic field. Hence, this method requires\n"
12582 "*abs_species* to contain 'free_electrons' and electron content field\n"
12583 "(as part of *vmr_field*) as well as magnetic field (*mag_u_field*,\n"
12584 "*mag_v_field*, *mag_w_field*) to be specified.\n"
12586 "Faraday rotation affects Stokes parameters 2 and 3 (but not\n"
12587 "intensity!). Therefore, this method requires stokes_dim>2.\n"
12589 "Like all 'propmat_clearskyAdd*' methods, the method is additive,\n"
12590 "i.e., does not overwrite the propagation matrix *propmat_clearsky*,\n"
12591 "but adds further contributions.\n"),
12593 OUT(
"propmat_clearsky",
"dpropmat_clearsky_dx"),
12597 IN(
"propmat_clearsky",
12598 "dpropmat_clearsky_dx",
12603 "jacobian_quantities",
12613 NAME(
"propmat_clearskyAddFromAbsCoefPerSpecies"),
12615 "Copy *propmat_clearsky* from *abs_coef_per_species*. This is handy for putting an\n"
12616 "explicit line-by-line calculation into the\n"
12617 "*propmat_clearsky_agenda*. This method is also used internally by.\n"
12618 "*propmat_clearskyAddOnTheFly*.\n"
12619 "Like all other propmat_clearsky methods, this method does not overwrite\n"
12620 "prior content of *propmat_clearsky*, but adds to it.\n"),
12622 OUT(
"propmat_clearsky",
"dpropmat_clearsky_dx"),
12626 IN(
"propmat_clearsky",
"abs_coef_per_species",
"dabs_coef_dx"),
12633 NAME(
"propmat_clearskyAddFromLookup"),
12635 "Extract gas absorption coefficients from lookup table.\n"
12637 "This extracts the absorption coefficient for all species from the\n"
12638 "lookup table, and adds them to the propagation matrix. Extraction is\n"
12639 "for one specific atmospheric condition, i.e., a set of pressure,\n"
12640 "temperature, and VMR values.\n"
12642 "Some special species are ignored, for example Zeeman species and free\n"
12643 "electrons, since their absorption properties are not simple scalars\n"
12644 "and cannot be handled by the lookup table.\n"
12646 "The interpolation order in T and H2O is given by *abs_t_interp_order*\n"
12647 "and *abs_nls_interp_order*, respectively.\n"
12649 "Extraction is done for the frequencies in f_grid. Frequency\n"
12650 "interpolation is controlled by *abs_f_interp_order*. If this is zero,\n"
12651 "then f_grid must either be the same as the internal frequency grid of\n"
12652 "the lookup table (for efficiency reasons, only the first and last\n"
12653 "element of f_grid are checked), or must have only a single element.\n"
12654 "If *abs_f_interp_order* is above zero, then frequency is interpolated\n"
12655 "along with the other interpolation dimensions. This is useful for\n"
12656 "calculations with Doppler shift.\n"
12658 "For Doppler calculations, you should generate the table with a\n"
12659 "somewhat larger frequency grid than the calculation itself has, since\n"
12660 "the Doppler shift will push the frequency grid out of the table range\n"
12663 "Some extrapolation is allowed. For pressure and frequency interpolation\n"
12664 "the standard extrapolation factor of 0.5 is applied. The factor is the\n"
12665 "default for temperature and VMR interpolation, but the extrapolation\n"
12666 "limit can here be adjusted by the *extpolfac* argument.\n"
12668 "See also: *propmat_clearskyAddOnTheFly*.\n"),
12669 AUTHORS(
"Stefan Buehler, Richard Larsson"),
12670 OUT(
"propmat_clearsky",
"dpropmat_clearsky_dx"),
12674 IN(
"propmat_clearsky",
12675 "dpropmat_clearsky_dx",
12677 "abs_lookup_is_adapted",
12678 "abs_p_interp_order",
12679 "abs_t_interp_order",
12680 "abs_nls_interp_order",
12681 "abs_f_interp_order",
12686 "jacobian_quantities"),
12690 GIN_DESC(
"Extrapolation factor (for temperature and VMR grid edges).")));
12693 NAME(
"propmat_clearskyAddHitranLineMixingLines"),
12695 "Calculates gas absorption coefficients line-by-line for HITRAN line mixed data.\n"
12697 "*Wigner6Init* or *Wigner3Init* must be called before this function.\n"
12700 "Please ensure you cite the original authors when you use this function:\n"
12701 "\tJ. Lamouroux, L. Realia, X. Thomas, et al., J.Q.S.R.T. 151 (2015), 88-96\n"),
12703 OUT(
"propmat_clearsky"),
12707 IN(
"propmat_clearsky",
12708 "abs_hitran_relmat_data",
12709 "abs_lines_per_species",
12712 "jacobian_quantities",
12713 "partition_functions",
12723 NAME(
"propmat_clearskyAddOnTheFly"),
12725 "Calculates gas absorption coefficients line-by-line.\n"
12727 "This method can be used inside *propmat_clearsky_agenda* just like\n"
12728 "*propmat_clearskyAddFromLookup*. It is a shortcut for putting in some\n"
12729 "other methods explicitly, namely:\n"
12731 " 1. *AbsInputFromRteScalars*\n"
12732 " 2. Execute *abs_xsec_agenda*\n"
12733 " 3. *abs_coefCalcFromXsec*\n"
12734 " 4. *propmat_clearskyAddFromAbsCoefPerSpecies*\n"
12736 "The calculation is for one specific atmospheric condition, i.e., a set\n"
12737 "of pressure, temperature, and VMR values.\n"),
12738 AUTHORS(
"Stefan Buehler, Richard Larsson"),
12739 OUT(
"propmat_clearsky",
12741 "dpropmat_clearsky_dx",
12743 "nlte_dsource_dx"),
12747 IN(
"propmat_clearsky",
12749 "dpropmat_clearsky_dx",
12754 "jacobian_quantities",
12759 "abs_xsec_agenda"),
12766 NAME(
"propmat_clearskyAddParticles"),
12768 "Calculates absorption coefficients of particles to be used in\n"
12769 "clearsky (non-cloudbox) calculations.\n"
12771 "This is a method to include particles (neglecting possible\n"
12772 "scattering components) in a clearsky calculation, i.e. without\n"
12773 "applying the cloudbox and scattering solvers. Particles are handled\n"
12774 "as absorbing species with one instance of 'particles' per scattering\n"
12775 "element considered added to *abs_species*. Particle absorption cross-\n"
12776 "sections at current atmospheric conditions are extracted from the\n"
12777 "single scattering data stored in *scat_data*, i.e., one array\n"
12778 "element per 'particles' instance in *abs_species* is required. Number\n"
12779 "densities are stored in *vmr_field_raw* or *vmr_field* as for all\n"
12780 "*abs_species*, but can be taken from (raw) pnd_field type data.\n"
12782 "Note that the absorption coefficient is applied both in the\n"
12783 "extinction term (neglecting scattering out of the line of sight)\n"
12784 "and the emission term (neglecting the scattering source term, i.e.\n"
12785 "scattering into the line of sight).\n"
12787 "Optionally, particle extinction (sum of absorption and scattering\n"
12788 "coefficient) can be used instead of absorption only. To choose this\n"
12789 "case, set the *use_abs_as_ext* flag to 0. However, be aware that\n"
12790 "this creates some unphysical emission term, hence is only suitable,\n"
12791 "where the source term is negligible anyways, e.g. for occultation\n"
12794 "A line-of-sight direction *rtp_los* is required as particles can\n"
12795 "exhibit directional dependent absorption properties, which is taken\n"
12796 "into account by this method."
12798 "*ScatElementsToabs_speciesAdd* can be used to add all required\n"
12799 "settings/data for individual scattering elements at once, i.e. a\n"
12800 " 'particles' tag to *abs_species*, a set of single scattering data to\n"
12801 "*scat_data* and a number density field to *vmr_field_raw*\n"
12802 "(*vmr_field* is derived applying AtmFieldsCalc once VMRs for all\n"
12803 "*abs_species* have been added) is appended for each scattering\n"
12806 "Like all 'propmat_clearskyAdd*' methods, the method is additive,\n"
12807 "i.e., does not overwrite the propagation matrix *propmat_clearsky*,\n"
12808 "but adds further contributions.\n"),
12810 OUT(
"propmat_clearsky",
"dpropmat_clearsky_dx"),
12814 IN(
"propmat_clearsky",
12815 "dpropmat_clearsky_dx",
12820 "jacobian_quantities",
12825 "scat_data_checked"),
12826 GIN(
"use_abs_as_ext"),
12829 GIN_DESC(
"A flag with value 1 or 0. If set to one, particle absorption\n"
12830 "is used in extinction and emission parts of the RT equation,\n"
12831 "and scattering out of LOS as well as into LOS is neglected.\n"
12832 "Otherwise, particle extinction (absorption+scattering) is\n"
12833 "applied in both the extinction as well as the emission part\n"
12834 "of the RT equation. That is, true extinction is applied, but\n"
12835 "emission also includes a pseudo-emission contribution from\n"
12836 "the scattering coefficient.\n")));
12839 NAME(
"propmat_clearskyAddZeeman"),
12841 "Calculates Zeeman-affected polarized propagation matrix and its\n"
12844 "Otherwise as *propmat_clearskyAddFromLookup*\n"),
12846 OUT(
"propmat_clearsky",
12848 "dpropmat_clearsky_dx",
12850 "nlte_dsource_dx"),
12854 IN(
"propmat_clearsky",
12856 "dpropmat_clearsky_dx",
12859 "abs_lines_per_species",
12862 "jacobian_quantities",
12863 "isotopologue_ratios",
12864 "partition_functions",
12873 GIN(
"manual_zeeman_tag",
12874 "manual_zeeman_magnetic_field_strength",
12875 "manual_zeeman_theta",
12876 "manual_zeeman_eta"),
12877 GIN_TYPE(
"Index",
"Numeric",
"Numeric",
"Numeric"),
12880 "Manual Magnetic Field Strength",
12881 "Manual theta given positive tag",
12882 "Manual eta given positive tag")));
12885 NAME(
"propmat_clearskyInit"),
12887 "Initialize *propmat_clearsky* and *nlte_source*.\n"
12889 "This method must be used inside *propmat_clearsky_agenda* and then\n"
12890 "be called first.\n"),
12891 AUTHORS(
"Oliver Lemke, Richard Larsson"),
12892 OUT(
"propmat_clearsky",
12894 "dpropmat_clearsky_dx",
12896 "nlte_dsource_dx"),
12901 "jacobian_quantities",
12904 "propmat_clearsky_agenda_checked",
12912 NAME(
"propmat_clearskyZero"),
12914 "Sets *propmat_clearsky* to match zero attenuation.\n"
12916 "Use this method just if you know what you are doing!\n"
12918 "If you want to make a calculation with no clear-sky attenuation at\n"
12919 "all, fill *propmat_clearsky_agenda* with this method and required\n"
12920 "Ignore statements (don't include *propmat_clearskyInit*).\n"),
12922 OUT(
"propmat_clearsky"),
12926 IN(
"f_grid",
"stokes_dim"),
12933 NAME(
"propmat_clearskyForceNegativeToZero"),
12934 DESCRIPTION(
"Sets *propmat_clearsky* to match zero attenuation\n"
12935 "if negative value. Useful for line mixing in some cases.\n"
12937 "Use this method just if you know what you are doing!\n"),
12939 OUT(
"propmat_clearsky"),
12943 IN(
"propmat_clearsky"),
12950 NAME(
"propmat_clearsky_agenda_checkedCalc"),
12952 "Checks if the *propmat_clearsky_agenda* contains all necessary\n"
12953 "methods to calculate all the species in *abs_species*.\n"
12955 "This method should be called just before the *propmat_clearsky_agenda*\n"
12956 "is used, e.g. *DoitGetIncoming*, *ybatchCalc*, *yCalc*\n"),
12958 OUT(
"propmat_clearsky_agenda_checked"),
12962 IN(
"abs_species",
"propmat_clearsky_agenda"),
12969 NAME(
"propmat_clearsky_fieldCalc"),
12971 "Calculate (vector) gas absorption coefficients for all points in the\n"
12974 "This is useful in two different contexts:\n"
12976 "1. For testing and plotting gas absorption. (For RT calculations, gas\n"
12977 "absorption is calculated or extracted locally, therefore there is no\n"
12978 "need to calculate a global field. But this method is handy for easy\n"
12979 "plotting of absorption vs. pressure, for example.)\n"
12981 "2. Inside the scattering region, monochromatic absorption is\n"
12982 "pre-calculated for the entire atmospheric field.\n"
12984 "The calculation itself is performed by the\n"
12985 "*propmat_clearsky_agenda*.\n"),
12986 AUTHORS(
"Stefan Buehler, Richard Larsson"),
12987 OUT(
"propmat_clearsky_field",
"nlte_source_field"),
12991 IN(
"atmfields_checked",
13003 "propmat_clearsky_agenda"),
13004 GIN(
"doppler",
"los"),
13007 GIN_DESC(
"A vector of doppler shift values in Hz. Must either be "
13008 "empty or have same dimension as p_grid.",
13009 "Line of sight")));
13012 NAME(
"psdAbelBoutle12"),
13014 "Abel and Boutle [2012] particle size distribution for rain.\n"
13016 "Reference: Abel and Boutle, An improved representation of the \n"
13017 "raindrop size distribution for single-moment microphysics schemes,\n"
13020 "This is a 1-parameter PSD, i.e. *pnd_agenda_input* shall have one\n"
13021 "column and *pnd_agenda_input_names* shall contain a single string.\n"
13022 "The input data in *pnd_agenda_input* shall be rain mass content in\n"
13023 "unit of [kg/m3]. The naming used is *pnd_agenda_input_names* is free\n"
13024 "but the same name must be used in *particle_bulkprop_names* and\n"
13025 "*dpnd_data_dx_names*.\n"
13027 "Particles are assumed to be near-spherical, ie. *psd_size_grid* can\n"
13028 "either be in terms of volume (or mass) equivalent diameter or\n"
13029 "maximum diameter.\n"
13031 "Derivatives are obtained analytically.\n"
13033 "The validity range of mass content is not limited. Negative mass\n"
13034 "contents will produce negative psd values following a distribution\n"
13035 "given by abs(RWC), ie. abs(psd)=f(abs(RWC)).\n"
13037 "If temperature is outside [*t_min*,*t_max*] psd=0 and dpsd=0 if\n"
13038 "picky=0, or an error is thrown if picky=1.\n"),
13040 OUT(
"psd_data",
"dpsd_data_dx"),
13044 IN(
"psd_size_grid",
13045 "pnd_agenda_input_t",
13046 "pnd_agenda_input",
13047 "pnd_agenda_input_names",
13048 "dpnd_data_dx_names",
13051 GIN(
"t_min",
"t_max",
"picky"),
13052 GIN_TYPE(
"Numeric",
"Numeric",
"Index"),
13055 "Low temperature limit to calculate a psd.",
13056 "High temperature limit to calculate a psd.",
13057 "Flag whether to be strict with parametrization value checks.")));
13060 NAME(
"psdDelanoeEtAl14"),
13062 "Normalized PSD as proposed in Delanoë et al. ((2014)),\n"
13064 "Title and journal:\n"
13065 "'Normalized particle size distribution for remote sensing\n"
13066 "application', J. Geophys. Res. Atmos., 119, 4204–422.\n"
13068 "The PSD has two independent parameters *n0Star*, the intercept\n"
13069 "parameter, and *Dm*, the volume-weighted diameter.\n"
13070 "This implementation expects as input two out of the following\n"
13071 "three quantities: *iwc*, *n0Star*, *Dm*. In this case one of\n"
13072 "the input parameters *iwc*, *n0Star*, *Dm* must be set to -999.\n*"
13073 "It is also possible to provide only *iwc*, in which case an a\n"
13074 "priori assumption will be used to deduce *n0Star* from temperature.\n"
13075 "In this case both *n0Star* and *Dm* must be set to -999.0.\n"
13077 "This PSD is not defined for vanishing concentrations of\n"
13078 "scatterers as it requires normalization by *Dm*. It is up\n"
13079 "to the user to ensure that the value of *Dm* is sufficiently\n"
13080 "large. An error is thrown if *Dm* is zero or below the value\n"
13081 "provided by *dm_min*.\n"),
13082 AUTHORS(
"Simon Pfreundschuh"),
13083 OUT(
"psd_data",
"dpsd_data_dx"),
13087 IN(
"psd_size_grid",
13088 "pnd_agenda_input_t",
13089 "pnd_agenda_input",
13090 "pnd_agenda_input_names",
13091 "dpnd_data_dx_names"),
13123 "Ice water content",
13124 "Intercept parameter",
13125 "Volume weighted diameter",
13127 "*alpha* parameter of the shape function",
13128 "*beta* paramter of the shape function",
13129 "Low temperature limit to calculate a psd.",
13130 "High temperature limit to calculate a psd.",
13131 "Lower threshold for *Dm* below which an error is thrown.",
13132 "Flag whether to be strict with parametrization value checks.")));
13135 NAME(
"psdFieldEtAl07"),
13137 "The Field et al. [2007] particle size distribution for snow and\n"
13140 "This is a 1-parameter PSD, i.e. *pnd_agenda_input* shall have one\n"
13141 "column and *pnd_agenda_input_names* shall contain a single string.\n"
13142 "The input data in *pnd_agenda_input* shall be ice hydrometeor mass\n"
13143 "content in unit of [kg/m3]. The naming used is *pnd_agenda_input_names*\n"
13144 "is free but the same name must be used in *particle_bulkprop_names* and\n"
13145 "*dpnd_data_dx_names*.\n"
13147 "*psd_size_grid* shall contain size in terms of maximum diameter.\n"
13149 "Derivatives are obtained by perturbation of 0.1%, but not less than\n"
13152 "Both parametrization for tropics and midlatitudes are handled,\n"
13153 "governed by setting of *regime*, where \"TR\" selectes the tropical\n"
13154 "case, and \"ML\" the midlatitude one.\n"
13156 "The validity range of mass content is not limited. Negative mass\n"
13157 "contents will produce negative psd values following a distribution\n"
13158 "given by abs(IWC), ie. abs(psd)=f(abs(IWC)).\n"
13160 "If temperature is outside [*t_min*,*t_max*] psd=0 and dpsd=0 if\n"
13161 "picky=0, or an error is thrown if picky=1.\n"
13163 "For temperatures below *t_min_psd*, the size distribution is\n"
13164 "calculated for T = *t_min_psd*. Likewise, for temperatures above\n"
13165 "*t_max_psd*, the distribution is derived for T = *t_max_psd*.\n"
13167 "Defaults of *t_min_psd* and *t_max_psd* were set considering that\n"
13168 "the parametrization has been derived from measurements over\n"
13169 "temperatures of -60C to 0C."
13171 "Checks of the sanity of the mass-dimension relationship are performed\n"
13172 "Errors are thrown if:\n"
13173 "- Mass-dimension relation exponent *scat_species_b* is outside\n"
13174 " [*beta_min*, *beta_max*].\n"),
13176 OUT(
"psd_data",
"dpsd_data_dx"),
13180 IN(
"psd_size_grid",
13181 "pnd_agenda_input_t",
13182 "pnd_agenda_input",
13183 "pnd_agenda_input_names",
13184 "dpnd_data_dx_names",
13205 "Parametrization regime (\"TR\"=tropical or \"ML\"=midlatitude).",
13206 "Low temperature limit to calculate a psd.",
13207 "High temperature limit to calculate a psd.",
13208 "Low temperature limit to use as paramtrization temperature.",
13209 "High temperature limit to use as paramtrization temperature.",
13210 "Low *b* limit (only if picky).",
13211 "High *b* limit (only if picky).",
13212 "Flag whether to be strict with parametrization value checks.")));
13215 NAME(
"psdFieldEtAl19"),
13217 "The Field [2019] particle size distribution for hail.\n"
13219 "Reference: Field, Normalized hail particle size distributions from the T-28\n"
13220 "storm-penetrating aircraft, JAMC, 2019\n"
13222 "This is a 1-parmater PSD i.e. *pnd_agenda_input* shall have one column and\n"
13223 "*pnd_agenda_input_names* shall contain a single string.\n"
13224 "The input data in *pnd_agenda_input* shall be hail mass content in\n"
13225 "unit of [kg/m3]. The naming used is *pnd_agenda_input_names* is free\n"
13226 "but the same name must be used in *particle_bulkprop_names* and\n"
13227 "*dpnd_data_dx_names*.\n"
13228 "The parameters assume a constant effective density, i.e. scat_species_b \approx 3\n"
13230 "Derivatives are obtained analytically.\n"
13232 "The validity range of mass content is not limited. Negative mass\n"
13233 "contents will produce negative psd values following a distribution\n"
13234 "given by abs(HWC), ie. abs(psd)=f(abs(HWC)).\n"
13236 "If temperature is outside [*t_min*,*t_max*] psd=0 and dpsd=0 if\n"
13237 "picky=0, or an error is thrown if picky=1.\n"),
13239 OUT(
"psd_data",
"dpsd_data_dx"),
13243 IN(
"psd_size_grid",
13244 "pnd_agenda_input_t",
13245 "pnd_agenda_input",
13246 "pnd_agenda_input_names",
13247 "dpnd_data_dx_names",
13250 GIN(
"t_min",
"t_max",
"picky"),
13251 GIN_TYPE(
"Numeric",
"Numeric",
"Index"),
13254 "Low temperature limit to calculate a psd.",
13255 "High temperature limit to calculate a psd.",
13256 "Flag whether to be strict with parametrization value checks.")));
13259 NAME(
"psdMcFarquaharHeymsfield97"),
13261 "McFarquahar and Heymsfield [1997] particle size distribution\n"
13264 "This is a 1-parameter PSD, i.e. *pnd_agenda_input* shall have one\n"
13265 "column and *pnd_agenda_input_names* shall contain a single string.\n"
13266 "The input data in *pnd_agenda_input* shall be ice hydrometeor mass\n"
13267 "content in unit of [kg/m3]. The naming used is *pnd_agenda_input_names*\n"
13268 "is free but the same name must be used in *particle_bulkprop_names* and\n"
13269 "*dpnd_data_dx_names*.\n"
13271 "*psd_size_grid* shall contain size in terms of volume equivalent diameter.\n"
13273 "Derivatives are obtained by perturbation of 0.1%, but not less than\n"
13276 "The validity range of mass content is not limited. Negative mass\n"
13277 "contents will produce negative psd values following a distribution\n"
13278 "given by abs(IWC), ie. abs(psd)=f(abs(IWC)).\n"
13280 "If temperature is outside [*t_min*,*t_max*] psd=0 and dpsd=0 if\n"
13281 "picky=0, or an error is thrown if picky=1.\n"
13283 "For temperatures below *t_min_psd*, the size distribution is\n"
13284 "calculated for T = *t_min_psd*. Likewise, for temperatures above\n"
13285 "*t_max_psd*, the distribution is derived for T = *t_max_psd*.\n"
13287 "Defaults of *t_min_psd* and *t_max_psd* were set considering that\n"
13288 "the parametrization has been derived from measurements over\n"
13289 "temperatures of -70C to -20C."
13291 "The noisy option can not be used together with calculation of\n"
13292 "derivatives (ie. when *dpnd_data_dx_names* is not empty).\n"),
13293 AUTHORS(
"Patrick Eriksson, Jana Mendrok"),
13294 OUT(
"psd_data",
"dpsd_data_dx"),
13298 IN(
"psd_size_grid",
13299 "pnd_agenda_input_t",
13300 "pnd_agenda_input",
13301 "pnd_agenda_input_names",
13302 "dpnd_data_dx_names",
13305 GIN(
"t_min",
"t_max",
"t_min_psd",
"t_max_psd",
"picky",
"noisy"),
13306 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric",
"Numeric",
"Index",
"Index"),
13307 GIN_DEFAULT(
"0",
"280.",
"180",
"273.15",
"0",
"0"),
13308 GIN_DESC(
"Low temperature limit to calculate a psd.",
13309 "High temperature limit to calculate a psd.",
13310 "Low temperature limit to use as paramtrization temperature.",
13311 "High temperature limit to use as paramtrization temperature.",
13312 "Flag whether to be strict with parametrization value checks.",
13313 "Distribution parameter perturbance flag")));
13316 NAME(
"psdMilbrandtYau05"),
13318 "Calculates *psd_data* and *dpsd_data_dx* following Milbrandt and Yau (2005)\n"
13319 "two moment particle size distribution for cloud water, cloud ice,\n"
13320 "rain, snow, graupel and hail, which is used in the GEM model.\n"
13322 "WSM for use in *pnd_agenda_array* for mapping *particle_bulkprop_field*\n"
13323 "to *pnd_field* using *pnd_fieldCalcFromParticleBulkProps*.\n"
13324 "Produces the particle size distribution values (dN/dD) and their\n"
13325 "derivates with respect to independent variables x by *dpnd_data_dx_names*\n"
13326 "over multiple particle sizes and atmospheric levels (or SWC/T\n"
13329 "*psd_size_grid* is considered to be in terms of maximum diameter.\n"
13330 "WC is considered to be in terms of mass content (or mass density),\n"
13331 "ie. units of [kg/m3]. N_tot in terms of number density, ie. units of [1/m3] ."
13333 "Derivatives with respect to WC and N_tot are obtained analytically.\n"
13335 "Six particle size distributions for the different hydrometeors are handled,\n"
13336 "governed by setting of *hydrometeor_type*, where \n"
13337 " \"cloud_water\" selects cloud liquid water , \n"
13338 " \"cloud_ice\" selects cloud ice, \n"
13339 " \"snow\" selects snow, \n"
13340 " \"rain\" selects rain, \n"
13341 " \"graupel\" selects graupel, and \n"
13342 " \"hail\" selects hail, \n"
13346 "*pnd_agenda_input_names* must include :\n"
13347 " [\"X-mass_density\", \"X-number_density\" ]. \"X\" is an arbitrary name\n"
13348 "The entries in *dpnd_data_dx_names* (ie. the allowed\n"
13349 "independent variablea ) can be \"X-mass_density\" and\\or \n"
13350 "\"X-number_density\".\n"
13352 "The validity range of WC is not limited. Negative WC will produce\n"
13353 "negative psd values following a distribution given by abs(WC), ie.\n"
13354 "abs(psd)=f(abs(WC)).\n"
13356 "If temperature is outside [*t_min*,*t_max*] psd=0 and dpsd=0 if\n"
13357 "picky=0, or an error is thrown if picky=1.\n"
13361 OUT(
"psd_data",
"dpsd_data_dx"),
13365 IN(
"psd_size_grid",
13366 "pnd_agenda_input_t",
13367 "pnd_agenda_input",
13368 "pnd_agenda_input_names",
13369 "dpnd_data_dx_names"),
13370 GIN(
"hydrometeor_type",
"t_min",
"t_max",
"picky"),
13371 GIN_TYPE(
"String",
"Numeric",
"Numeric",
"Index"),
13374 "Hydrometeor type (see above description).",
13375 "Low temperature limit to calculate a psd.",
13376 "High temperature limit to calculate a psd.",
13377 "Flag whether to be strict with parametrization value checks.")));
13380 NAME(
"psdModifiedGamma"),
13382 "Modified gamma distribution PSD using n0, mu, la and ga as parameters.\n"
13384 "The modified gamma distribution is a 4-parameter (n0, mu, la and ga)\n"
13385 "distribution [Petty & Huang, JAS, 2011)]:\n"
13386 " n(x) = n0 * x^mu * exp( -la*x^ga )\n"
13387 "where x is particle size or mass.\n"
13389 "The parameters can be given in two ways, either by *pnd_agenda_input* or\n"
13390 "as GIN arguments. The first option allows the parameter to vary, while\n"
13391 "in the second case the parameter gets a constant value. If a parameter is\n"
13392 "part of *pnd_agenda_input*, the corresponding GIN argument must be set\n"
13393 "to NaN (which is default). This means that the number of columns in\n"
13394 "*pnd_agenda_input* and the number of non-NaN choices for n0, mu, la and\n"
13395 "ga must add up to four.\n"
13397 "Data in *pnd_agenda_input* are linked to the MGD parameters in term of\n"
13398 "order, the naming in *pnd_agenda_input_names* is free. If all four\n"
13399 "parameteras are specified by *pnd_agenda_input*, the data in the first\n"
13400 "column are taken as n0, the second column as mu etc. If a parameter is\n"
13401 "given as a GIN argument, the columns are just shifted with one position.\n"
13402 "For example, if mu and ga are specified as GIN arguments, *pnd_agenda_input*\n"
13403 "shall have two columns, with n0-values in the first one and la-values in\n"
13404 "the second one.\n"
13406 "The GIN route is especially suitable for selecting special cases of MGD.\n"
13407 "For example, by setting mu=0 and ga=1, an exponential PSD is obtained:\n"
13408 " n(x) = n0 * exp( -la*x )\n"
13409 "With mu=1 and ga=1, the gamma PSD is obtained:\n"
13410 " n(x) = n0 * x^mu *exp( -la*x )\n"
13411 "There should be little overhead in using the method for exponential\n"
13412 "and gamma PSDs, there is an internal switch to dedicated expressions\n"
13413 "for those PSDs.\n"
13415 "Derivatives can only be obtained for parameters that are specified by\n"
13416 "*pnd_agenda_input*.\n"
13418 "If temperature is outside [*t_min*,*t_max*] psd=0 and dpsd=0 if\n"
13419 "picky=0, or an error is thrown if picky=1.\n"
13421 "These requirements apply to the MGD parameters:\n"
13425 OUT(
"psd_data",
"dpsd_data_dx"),
13429 IN(
"psd_size_grid",
13430 "pnd_agenda_input_t",
13431 "pnd_agenda_input",
13432 "pnd_agenda_input_names",
13433 "dpnd_data_dx_names"),
13434 GIN(
"n0",
"mu",
"la",
"ga",
"t_min",
"t_max",
"picky"),
13448 "Low temperature limit to calculate a psd.",
13449 "High temperature limit to calculate a psd.",
13450 "Flag whether to be strict with parametrization value checks.")));
13453 NAME(
"psdModifiedGammaMass"),
13455 "Modified gamma distribution (MGD) PSD, with mass content as input.\n"
13457 "See *psdModifiedGamma* for a defintion of MGD parameters and how\n"
13458 "this PSD is handled in ARTS. Only deviations with respect to\n"
13459 "*psdModifiedGamma* are described here.\n"
13461 "This version of MGD PSD takes mass content as first input argument.\n"
13462 "This means that the first column of *pnd_agenda_input* shall hold\n"
13463 "mass content data.\n"
13465 "The mass content basically replaces one of the standard parameters\n"
13466 "(n0, mu, la and ga). This parameter is denoted as the dependent one.\n"
13467 "The dependent parameter is selected by setting the corresponding GIN\n"
13468 "to -999. So far only n0 and la are allowed to be dependent.\n"
13470 "Regarding remaining columns in *pnd_agenda_input* and constant\n"
13471 "parameter values (by GIN) follows the same principle as for\n"
13472 "*psdModifiedGamma* except that mass is always in column one (as\n"
13473 "mentioned) and that there is no position in *pnd_agenda_input*\n"
13474 "for the dependent parameter.\n"
13476 "These requirements apply to the MGD parameters:\n"
13477 " mu + scat_species_b + 1 > 0\n"
13480 " If la is the dependent parameter, mass content must be > 0.\n"),
13482 OUT(
"psd_data",
"dpsd_data_dx"),
13486 IN(
"psd_size_grid",
13487 "pnd_agenda_input_t",
13488 "pnd_agenda_input",
13489 "pnd_agenda_input_names",
13490 "dpnd_data_dx_names",
13493 GIN(
"n0",
"mu",
"la",
"ga",
"t_min",
"t_max",
"picky"),
13507 "Low temperature limit to calculate a psd.",
13508 "High temperature limit to calculate a psd.",
13509 "Flag whether to be strict with parametrization value checks.")));
13512 NAME(
"psdModifiedGammaMassNtot"),
13514 "Modified gamma distribution PSD, with mass content and total number\n"
13515 "density (Ntot) as inputs.\n"
13517 "This version of MGD PSD works as *psdModifiedGammaMass*, but takes\n"
13518 "mass content and total number density as first two arguments. This\n"
13519 "means that the first and second column of *pnd_agenda_input* shall\n"
13520 "hold mass content and Ntot, respectively. Accordingly, the number\n"
13521 "of dependent parameters is two.\n"
13523 "These requirements apply:\n"
13527 " Ntot must be > 0.\n"),
13529 OUT(
"psd_data",
"dpsd_data_dx"),
13533 IN(
"psd_size_grid",
13534 "pnd_agenda_input_t",
13535 "pnd_agenda_input",
13536 "pnd_agenda_input_names",
13537 "dpnd_data_dx_names",
13540 GIN(
"n0",
"mu",
"la",
"ga",
"t_min",
"t_max",
"picky"),
13554 "Low temperature limit to calculate a psd.",
13555 "High temperature limit to calculate a psd.",
13556 "Flag whether to be strict with parametrization value checks.")));
13559 NAME(
"psdModifiedGammaMassMeanParticleMass"),
13561 "Modified gamma distribution PSD, with mass content and mean particle\n"
13562 "mass (Mmean) as inputs.\n"
13564 "\"Mean particle mass\" is here defined as the mass content divided with\n"
13565 "the total number density.\n"
13567 "This version of MGD PSD works as *psdModifiedGammaMass*, but takes\n"
13568 "mass content and mean particle mass as first two arguments. This\n"
13569 "means that the first and second column of *pnd_agenda_input* shall\n"
13570 "hold mass content and Mmean, respectively. Accordingly, the number\n"
13571 "of dependent parameters is two.\n"
13573 "These requirements apply to the MGD parameters:\n"
13577 " Mmean must be > 0.\n"),
13579 OUT(
"psd_data",
"dpsd_data_dx"),
13583 IN(
"psd_size_grid",
13584 "pnd_agenda_input_t",
13585 "pnd_agenda_input",
13586 "pnd_agenda_input_names",
13587 "dpnd_data_dx_names",
13590 GIN(
"n0",
"mu",
"la",
"ga",
"t_min",
"t_max",
"picky"),
13604 "Low temperature limit to calculate a psd.",
13605 "High temperature limit to calculate a psd.",
13606 "Flag whether to be strict with parametrization value checks.")));
13609 NAME(
"psdModifiedGammaMassSingleMoment"),
13611 "Modified gamma distribution PSD, with mass content as input.\n"
13613 "The intercept parameter N0 is assumed dependent on the slope parameter\n"
13614 "lambda, such that N0=N_alpha*lambda^n_b with fixed N_alpha and n_b.\n"
13615 "This is a common form for many PSD parametrizations for use with\n"
13616 "single-moment mass-based schemes.\n"
13618 "This version of MGD PSD takes mass content as first input argument.\n"
13619 "This means that the first column of *pnd_agenda_input* shall hold\n"
13620 "mass content data. The dependent parameter is assumed to be lambda.\n"),
13622 OUT(
"psd_data",
"dpsd_data_dx"),
13626 IN(
"psd_size_grid",
13627 "pnd_agenda_input_t",
13628 "pnd_agenda_input",
13629 "pnd_agenda_input_names",
13630 "dpnd_data_dx_names",
13633 GIN(
"n_alpha",
"n_b",
"mu",
"gamma",
"t_min",
"t_max",
"picky"),
13647 "Low temperature limit to calculate a psd.",
13648 "High temperature limit to calculate a psd.",
13649 "Flag whether to be strict with parametrization value checks.")));
13652 NAME(
"psdModifiedGammaMassXmean"),
13654 "Modified gamma distribution PSD, with mass content and mean size\n"
13655 "(Xmean) as inputs.\n"
13657 "\"Mean size\" is here defined as mass weighted size. Remembering that\n"
13658 "mass is a*x^b, this mean size can be expressed as M_b+1/M_b where M_b\n"
13659 "is b:th moment of the PSD (see e.g. Eq. 17 in Petty&Huang, JAS, 2011).\n"
13661 "This version of MGD PSD works as *psdModifiedGammaMass*, but takes\n"
13662 "mass content and mass size as first two arguments. This means that\n"
13663 "the first and second column of *pnd_agenda_input* shall hold mass\n"
13664 "content and Xmean, respectively. Accordingly, the number of dependent\n"
13665 "parameters is two.\n"
13667 "These requirements apply to the MGD parameters:\n"
13668 " mu + scat_species_b + 1 > 0\n"
13671 " Xmean must be > 0.\n"),
13673 OUT(
"psd_data",
"dpsd_data_dx"),
13677 IN(
"psd_size_grid",
13678 "pnd_agenda_input_t",
13679 "pnd_agenda_input",
13680 "pnd_agenda_input_names",
13681 "dpnd_data_dx_names",
13684 GIN(
"n0",
"mu",
"la",
"ga",
"t_min",
"t_max",
"picky"),
13698 "Low temperature limit to calculate a psd.",
13699 "High temperature limit to calculate a psd.",
13700 "Flag whether to be strict with parametrization value checks.")));
13703 NAME(
"psdModifiedGammaMassXmedian"),
13705 "Modified gamma distribution PSD, with mass content and median size\n"
13706 "(Xmedian) as inputs.\n"
13709 "This version of MGD PSD works as *psdModifiedGammaMass*, but takes\n"
13710 "mass content and median size as first two arguments. This means that\n"
13711 "the first and second column of *pnd_agenda_input* shall hold mass\n"
13712 "content and Xmedian, respectively. Accordingly, the number of\n"
13713 "dependent parameters is two.\n"
13715 "These requirements apply to the MGD parameters:\n"
13716 " mu + scat_species_b + 1 > 0\n"
13719 " Xmedian must be > 0.\n"),
13721 OUT(
"psd_data",
"dpsd_data_dx"),
13725 IN(
"psd_size_grid",
13726 "pnd_agenda_input_t",
13727 "pnd_agenda_input",
13728 "pnd_agenda_input_names",
13729 "dpnd_data_dx_names",
13732 GIN(
"n0",
"mu",
"la",
"ga",
"t_min",
"t_max",
"picky"),
13746 "Low temperature limit to calculate a psd.",
13747 "High temperature limit to calculate a psd.",
13748 "Flag whether to be strict with parametrization value checks.")));
13751 NAME(
"psdMonoDispersive"),
13753 "Mono-dispersive PSD, with number density given.\n"
13755 "This is a 1-parameter PSD, i.e. *pnd_agenda_input* shall have one\n"
13756 "column and *pnd_agenda_input_names* shall contain a single string.\n"
13757 "The input data in *pnd_agenda_input* shall be number densities, in\n"
13758 "unit of [#/m3]. The naming used is *pnd_agenda_input_names* is free\n"
13759 "but the same name must be used in *particle_bulkprop_names* and\n"
13760 "*dpnd_data_dx_names*.\n"
13762 "The method checks that the scattering species indicated (by\n"
13763 "*species_index*) has a single element, and just inserts the provided\n"
13764 "number density in *psd_data*.\n"
13766 "If temperature is outside [*t_min*,*t_max*] psd=0 and dpsd=0 if\n"
13767 "picky=0, or an error is thrown if picky=1.\n"),
13769 OUT(
"psd_data",
"dpsd_data_dx"),
13773 IN(
"pnd_agenda_input_t",
13774 "pnd_agenda_input",
13775 "pnd_agenda_input_names",
13776 "dpnd_data_dx_names",
13778 GIN(
"species_index",
"t_min",
"t_max",
"picky"),
13779 GIN_TYPE(
"Index",
"Numeric",
"Numeric",
"Index"),
13782 "The index of the scattering species of concern (0-based).",
13783 "Low temperature limit to calculate a psd.",
13784 "High temperature limit to calculate a psd.",
13785 "Flag whether to be strict with parametrization value checks.")));
13788 NAME(
"psdMonoMass"),
13790 "Mono-dispersive PSD, with mass content given.\n"
13792 "This is a 1-parameter PSD, i.e. *pnd_agenda_input* shall have one\n"
13793 "column and *pnd_agenda_input_names* shall contain a single string.\n"
13794 "The input data in *pnd_agenda_input* shall be mass contents, in\n"
13795 "unit of [#/m3]. The naming used is *pnd_agenda_input_names* is free\n"
13796 "but the same name must be used in *particle_bulkprop_names* and\n"
13797 "*dpnd_data_dx_names*.\n"
13799 "The method checks that the scattering species indicated (by\n"
13800 "*species_index*) has a single element, and sets *psd_data* based\n"
13801 "on the mass contents given and the particle mass (derived from\n"
13804 "If temperature is outside [*t_min*,*t_max*] psd=0 and dpsd=0 if\n"
13805 "picky=0, or an error is thrown if picky=1.\n"),
13807 OUT(
"psd_data",
"dpsd_data_dx"),
13811 IN(
"pnd_agenda_input_t",
13812 "pnd_agenda_input",
13813 "pnd_agenda_input_names",
13814 "dpnd_data_dx_names",
13816 GIN(
"species_index",
"t_min",
"t_max",
"picky"),
13817 GIN_TYPE(
"Index",
"Numeric",
"Numeric",
"Index"),
13820 "The index of the scattering species of concern (0-based).",
13821 "Low temperature limit to calculate a psd.",
13822 "High temperature limit to calculate a psd.",
13823 "Flag whether to be strict with parametrization value checks.")));
13826 NAME(
"psdSeifertBeheng06"),
13828 "Calculates *psd_data* and *dpsd_data_dx* following Seifert and Beheng (2006)\n"
13829 "two moment particle size distribution for cloud water, cloud ice,\n"
13830 "rain, snow, graupel and hail, which is used in the ICON model.\n"
13832 "WSM for use in *pnd_agenda_array* for mapping *particle_bulkprop_field*\n"
13833 "to *pnd_field* using *pnd_fieldCalcFromParticleBulkProps*.\n"
13834 "Produces the particle size distribution values (dN/dD) and their\n"
13835 "derivates with respect to independent variables x by *dpnd_data_dx_names*\n"
13836 "over multiple particle sizes and atmospheric levels (or SWC/T\n"
13839 "*psd_size_grid* is considered to be in terms of mass.\n"
13840 "WC is considered to be in terms of mass content (or mass density),\n"
13841 "ie. units of [kg/m3]. N_tot in terms of number density, ie. units of [1/m3] ."
13843 "Derivatives with respect to WC and N_tot are obtained analytically.\n"
13845 "Six particle size distributions for the different hydrometeors are handled,\n"
13846 "governed by setting of *hydrometeor_type*, where \n"
13847 " \"cloud_water\" selects cloud liquid water , \n"
13848 " \"cloud_ice\" selects cloud ice, \n"
13849 " \"snow\" selects snow, \n"
13850 " \"rain\" selects rain, \n"
13851 " \"graupel\" selects graupel, and \n"
13852 " \"hail\" selects hail, \n"
13856 "*pnd_agenda_input_names* must include :\n"
13857 " [\"X-mass_density\", \"X-number_density\" ]. \"X\" is an arbitrary name\n"
13858 "The entries in *dpnd_data_dx_names* (ie. the allowed\n"
13859 "independent variablea ) can be \"X-mass_density\" and\\or \n"
13860 "\"X-number_density\".\n"
13862 "The validity range of WC is not limited. Negative WC will produce\n"
13863 "negative psd values following a distribution given by abs(WC), ie.\n"
13864 "abs(psd)=f(abs(WC)).\n"
13866 "If temperature is outside [*t_min*,*t_max*] psd=0 and dpsd=0 if\n"
13867 "picky=0, or an error is thrown if picky=1.\n"
13871 OUT(
"psd_data",
"dpsd_data_dx"),
13875 IN(
"psd_size_grid",
13876 "pnd_agenda_input_t",
13877 "pnd_agenda_input",
13878 "pnd_agenda_input_names",
13879 "dpnd_data_dx_names"),
13880 GIN(
"hydrometeor_type",
"t_min",
"t_max",
"picky"),
13881 GIN_TYPE(
"String",
"Numeric",
"Numeric",
"Index"),
13884 "Hydrometeor type (see above description).",
13885 "Low temperature limit to calculate a psd.",
13886 "High temperature limit to calculate a psd.",
13887 "Flag whether to be strict with parametrization value checks.")));
13890 NAME(
"psdWangEtAl16"),
13892 "Wang et al. [2016] particle size distribution for rain.\n"
13894 "Reference: Wang et al., Investigation of liquid cloud microphysical\n"
13895 "properties of deep convective systems: 1. Parameterization raindrop\n"
13896 "size distribution and its application ..., 2016.\n"
13898 "This is a 1-parameter PSD, i.e. *pnd_agenda_input* shall have one\n"
13899 "column and *pnd_agenda_input_names* shall contain a single string.\n"
13900 "The input data in *pnd_agenda_input* shall be rain mass content in\n"
13901 "unit of [kg/m3]. The naming used is *pnd_agenda_input_names* is free\n"
13902 "but the same name must be used in *particle_bulkprop_names* and\n"
13903 "*dpnd_data_dx_names*.\n"
13905 "Particles are assumed to be near-spherical, ie. *psd_size_grid* can\n"
13906 "either be in terms of volume (or mass) equivalent diameter or\n"
13907 "maximum diameter.\n"
13909 "Derivatives are obtained analytically.\n"
13911 "The validity range of mass content is not limited. Negative mass\n"
13912 "contents will produce negative psd values following a distribution\n"
13913 "given by abs(RWC), ie. abs(psd)=f(abs(RWC)).\n"
13915 "If temperature is outside [*t_min*,*t_max*] psd=0 and dpsd=0 if\n"
13916 "picky=0, or an error is thrown if picky=1.\n"),
13917 AUTHORS(
"Jana Mendrok, Patrick Eriksson"),
13918 OUT(
"psd_data",
"dpsd_data_dx"),
13922 IN(
"psd_size_grid",
13923 "pnd_agenda_input_t",
13924 "pnd_agenda_input",
13925 "pnd_agenda_input_names",
13926 "dpnd_data_dx_names",
13929 GIN(
"t_min",
"t_max",
"picky"),
13930 GIN_TYPE(
"Numeric",
"Numeric",
"Index"),
13933 "Low temperature limit to calculate a psd.",
13934 "High temperature limit to calculate a psd.",
13935 "Flag whether to be strict with parametrization value checks.")));
13938 NAME(
"p_gridDensify"),
13940 "A simple way to make *p_grid* more dense.\n"
13942 "The method includes new values in *p_grid*. For each intermediate\n"
13943 "pressure range, *nfill* points are added. That is, setting *nfill*\n"
13944 "to zero returns an unmodified copy of *p_grid_old*. The number of\n"
13945 "elements of the new *p_grid* is (n0-1)*(1+nfill)+1, where n0 is the\n"
13946 "length of *p_grid_old*.\n"
13948 "The new points are distributed equidistant in log(p).\n"
13950 "For safety, new grid and old grid Vectors are not allowed to be the\n"
13951 "same variable (both will be needed later on for regridding of the\n"
13952 "atmospheric fields), and atmospheric field related *checked WSV are\n"
13953 "reset to 0 (unchecked).\n"),
13954 AUTHORS(
"Patrick Eriksson, Jana Mendrok"),
13955 OUT(
"p_grid",
"atmfields_checked",
"atmgeom_checked",
"cloudbox_checked"),
13960 GIN(
"p_grid_old",
"nfill"),
13964 "A copy of the current (the old) p_grid. Not allowed to be "
13965 "the same variable as the output *p_grid*.",
13967 "Number of points to add between adjacent pressure points."
13968 "The default value (-1) results in an error.")));
13971 NAME(
"p_gridFromZRaw"),
13973 "Sets *p_grid* according to input atmosphere's raw z_field, derived\n"
13974 "e.g. from *AtmRawRead*.\n"
13975 "Attention: as default only pressure values for altitudes >= 0 are\n"
13976 "extracted. If negative altitudes shall also be selected, set no_neg=0.\n"),
13977 AUTHORS(
"Claudia Emde, Jana Mendrok"),
13986 GIN_DESC(
"Exclude negative altitudes.")));
13989 NAME(
"lat_gridFromZRaw"),
13991 "Sets *lat_grid* according to input atmosphere's *z_field_raw*\n"),
14004 NAME(
"lon_gridFromZRaw"),
14006 "Sets *lon_grid* according to input atmosphere's *z_field_raw*\n"),
14019 NAME(
"atm_gridsFromZRaw"),
14021 "Calls *p_gridFromZRaw*, *lat_gridFromZRaw* and *lon_gridFromZRaw*\n"),
14023 OUT(
"p_grid",
"lat_grid",
"lon_grid"),
14031 GIN_DESC(
"Exclude negative altitudes.")));
14034 NAME(
"p_gridFromGasAbsLookup"),
14035 DESCRIPTION(
"Sets *p_grid* to the pressure grid of *abs_lookup*.\n"),
14048 NAME(
"p_gridRefine"),
14050 "Provides refined pressure grid.\n"
14052 "Created new pressure grid has (log10) spacings below a given\n"
14055 "For safety, new grid and old grid Vectors are not allowed to be the\n"
14056 "same variable (both will be needed later on for regridding of the\n"
14057 "atmospheric fields), and atmospheric field related *checked WSV are\n"
14058 "reset to 0 (unchecked).\n"),
14059 AUTHORS(
"Stefan Buehler, Jana Mendrok"),
14060 OUT(
"p_grid",
"atmfields_checked",
"atmgeom_checked",
"cloudbox_checked"),
14065 GIN(
"p_grid_old",
"p_step"),
14069 "A copy of the current (the old) p_grid. Not allowed to be "
14070 "the same variable as the output *p_grid*.",
14072 "Maximum step in log10(p[Pa]). If the pressure grid is "
14073 "coarser than this, additional points are added until each "
14074 "log step is smaller than this.")));
14077 NAME(
"RadiationFieldSpectralIntegrate"),
14079 "Integrates fields like *spectral_irradiance_field* or *cloudbox_field*\n"
14080 "over frequency.\n"
14081 "Important, the first dimension must be the frequency dimension!\n"
14082 "If a field like *cloudbox_field* is input, the stokes dimension\n"
14083 "is also removed.\n"),
14086 GOUT(
"radiation_field"),
14090 GIN(
"spectral_radiation_field"),
14096 NAME(
"line_irradianceCalcForSingleSpeciesNonOverlappingLinesPseudo2D"),
14097 DESCRIPTION(
"Computes the line irradiance and line transmission\n"
14099 "Presently only works for 1D atmospheres\n"),
14101 OUT(
"line_irradiance",
"line_transmission"),
14106 "abs_lines_per_species",
14113 "surface_props_data",
14117 "iy_surface_agenda",
14118 "iy_cloudbox_agenda",
14119 "propmat_clearsky_agenda"),
14120 GIN(
"df",
"nz",
"nf",
"r"),
14121 GIN_TYPE(
"Numeric",
"Index",
"Index",
"Numeric"),
14123 GIN_DESC(
"relative frequency to line center",
14124 "number of zeniths",
14125 "number of frequencies per line",
14126 "Distance assumed when computing local (1-T)")));
14129 NAME(
"RationalAdd"),
14131 "Adds a Rational and a value (out = in+value).\n"
14133 "The result can either be stored in the same or another Rational.\n"
14134 "(in and out can be the same varible, but not out and value)\n"),
14141 GIN(
"in",
"value"),
14144 GIN_DESC(
"Input Rational.",
"Value to add.")));
14147 NAME(
"RationalInvScale"),
14149 "Inversely scales/divides a Rational with a value (out = in/value).\n"
14151 "The result can either be stored in the same or another Rational.\n"
14152 "(in and out can be the same varible, but not out and value)\n"),
14159 GIN(
"in",
"value"),
14162 GIN_DESC(
"Input Rational.",
"Scaling Rational.")));
14165 NAME(
"RationalScale"),
14167 "Scales/multiplies a Rational with a value (out = in*value).\n"
14169 "The result can either be stored in the same or another Rational.\n"
14170 "(in and out can be the same varible, but not out and value)\n"),
14177 GIN(
"in",
"value"),
14180 GIN_DESC(
"Input Rational.",
"Scaling value.")));
14183 NAME(
"RationalSet"),
14184 DESCRIPTION(
"Sets a Rational workspace variable to the given value.\n"),
14191 GIN(
"numerator",
"denominator"),
14194 GIN_DESC(
"The numerator.",
"The denominator.")));
14197 NAME(
"ReadArrayOfARTSCAT"),
14198 DESCRIPTION(
"Reads an old Array<ArrayOfLineRecord> ARTSCAT file.\n"
14200 "Note that the ARTSCAT-5 had quantum numbers and options\n"
14201 "stored inside it but that the options will overwrite that\n"
14202 "information. Be careful setting the options!\n"),
14203 AUTHORS(
"Stefan Buehler",
"Richard Larsson"),
14209 GIN(
"filename",
"fmin",
"fmax",
"globalquantumnumbers",
14210 "localquantumnumbers",
"normalization_option",
"mirroring_option",
14211 "population_option",
"lineshapetype_option",
"cutoff_option",
14212 "cutoff_value",
"linemixinglimit_value"),
14213 GIN_TYPE(
"String",
"Numeric",
"Numeric",
"String",
"String",
"String",
14214 "String",
"String",
"String",
"String",
"Numeric",
"Numeric"),
14216 "None",
"750e9",
"-1"),
14217 GIN_DESC(
"Name of the ARTSCAT file",
14218 "Minimum frequency of read lines",
14219 "Maximum frequency of read lines",
14220 "Global quantum number list (space-separated)",
14221 "Local quantum number list (space-separated)",
14222 "Normalization option, see *abs_linesSetNormalization*",
14223 "Mirroring option, see *abs_linesSetMirroring*",
14224 "Population option, see *abs_linesSetPopulation*",
14225 "Lineshape option, see *abs_linesSetLineShapeType*",
14226 "Cutoff option, see *abs_linesSetCutoff*",
14227 "Cutoff value, see *abs_linesSetCutoff*",
14228 "Line mixing limit, see *abs_linesSetLinemixingLimit*")));
14231 NAME(
"ReadSplitARTSCAT"),
14232 DESCRIPTION(
"Reads several old ArrayOfLineRecord ARTSCAT file\n"
14234 "Note that the ARTSCAT-5 had quantum numbers and options\n"
14235 "stored inside it but that the options will overwrite that\n"
14236 "information. Be careful setting the options!\n"),
14237 AUTHORS(
"Oliver Lemke",
"Richard Larsson"),
14243 GIN(
"basename",
"fmin",
"fmax",
"globalquantumnumbers",
"localquantumnumbers",
14244 "ignore_missing",
"normalization_option",
"mirroring_option",
14245 "population_option",
"lineshapetype_option",
"cutoff_option",
14246 "cutoff_value",
"linemixinglimit_value"),
14247 GIN_TYPE(
"String",
"Numeric",
"Numeric",
"String",
"String",
"Index",
"String",
14248 "String",
"String",
"String",
"String",
"Numeric",
"Numeric"),
14249 GIN_DEFAULT(
NODEF,
"0",
"1e99",
"",
"",
"0",
"None",
"None",
"LTE",
"VP",
14250 "None",
"750e9",
"-1"),
14252 "Minimum frequency of read lines",
14253 "Maximum frequency of read lines",
14254 "Global quantum number list (space-separated)",
14255 "Local quantum number list (space-separated)",
14256 "Ignores instead of throws if an *abs_species* is missing",
14257 "Normalization option, see *abs_linesSetNormalization*",
14258 "Mirroring option, see *abs_linesSetMirroring*",
14259 "Population option, see *abs_linesSetPopulation*",
14260 "Lineshape option, see *abs_linesSetLineShapeType*",
14261 "Cutoff option, see *abs_linesSetCutoff*",
14262 "Cutoff value, see *abs_linesSetCutoff*",
14263 "Line mixing limit, see *abs_linesSetLinemixingLimit*")));
14266 NAME(
"ReadARTSCAT"),
14267 DESCRIPTION(
"Reads an old ArrayOfLineRecord ARTSCAT file\n"
14269 "Note that the ARTSCAT-5 had quantum numbers and options\n"
14270 "stored inside it but that the options will overwrite that\n"
14271 "information. Be careful setting the options!\n"),
14272 AUTHORS(
"Stefan Buehler",
"Richard Larsson"),
14278 GIN(
"filename",
"fmin",
"fmax",
"globalquantumnumbers",
14279 "localquantumnumbers",
"normalization_option",
"mirroring_option",
14280 "population_option",
"lineshapetype_option",
"cutoff_option",
14281 "cutoff_value",
"linemixinglimit_value"),
14282 GIN_TYPE(
"String",
"Numeric",
"Numeric",
"String",
"String",
"String",
14283 "String",
"String",
"String",
"String",
"Numeric",
"Numeric"),
14285 "None",
"750e9",
"-1"),
14286 GIN_DESC(
"Name of the ARTSCAT file",
14287 "Minimum frequency of read lines",
14288 "Maximum frequency of read lines",
14289 "Global quantum number list (space-separated)",
14290 "Local quantum number list (space-separated)",
14291 "Normalization option, see *abs_linesSetNormalization*",
14292 "Mirroring option, see *abs_linesSetMirroring*",
14293 "Population option, see *abs_linesSetPopulation*",
14294 "Lineshape option, see *abs_linesSetLineShapeType*",
14295 "Cutoff option, see *abs_linesSetCutoff*",
14296 "Cutoff value, see *abs_linesSetCutoff*",
14297 "Line mixing limit, see *abs_linesSetLinemixingLimit*")));
14300 NAME(
"ReadHITRAN"),
14303 "The HITRAN type switch can be:\n"
14304 "\t\"Pre2004\"\t-\tfor old format\n"
14305 "\t\"Post2004\"\t-\tfor new format\n"
14306 "\t\"Online\"\t-\tfor the online format with quantum numbers (highly experimental)\n"
14308 "Be careful setting the options!\n"
14310 AUTHORS(
"Hermann Berg",
"Thomas Kuhn",
"Richard Larsson"),
14316 GIN(
"filename",
"fmin",
"fmax",
"globalquantumnumbers",
"localquantumnumbers",
14317 "hitran_type",
"normalization_option",
"mirroring_option",
14318 "population_option",
"lineshapetype_option",
"cutoff_option",
14319 "cutoff_value",
"linemixinglimit_value"),
14320 GIN_TYPE(
"String",
"Numeric",
"Numeric",
"String",
"String",
"String",
"String",
14321 "String",
"String",
"String",
"String",
"Numeric",
"Numeric"),
14322 GIN_DEFAULT(
NODEF,
"0",
"1e99",
"",
"",
"Post2004",
"None",
"None",
"LTE",
"VP",
14323 "None",
"750e9",
"-1"),
14324 GIN_DESC(
"Name of the HITRAN file",
14325 "Minimum frequency of read lines",
14326 "Maximum frequency of read lines",
14327 "Global quantum number list (space-separated)",
14328 "Local quantum number list (space-separated)",
14329 "Method to use to read the line data",
14330 "Normalization option, see *abs_linesSetNormalization*",
14331 "Mirroring option, see *abs_linesSetMirroring*",
14332 "Population option, see *abs_linesSetPopulation*",
14333 "Lineshape option, see *abs_linesSetLineShapeType*",
14334 "Cutoff option, see *abs_linesSetCutoff*",
14335 "Cutoff value, see *abs_linesSetCutoff*",
14336 "Line mixing limit, see *abs_linesSetLinemixingLimit*")));
14339 NAME(
"ReadLBLRTM"),
14342 "Be careful setting the options!\n"),
14349 GIN(
"filename",
"fmin",
"fmax",
"globalquantumnumbers",
14350 "localquantumnumbers",
"normalization_option",
"mirroring_option",
14351 "population_option",
"lineshapetype_option",
"cutoff_option",
14352 "cutoff_value",
"linemixinglimit_value"),
14353 GIN_TYPE(
"String",
"Numeric",
"Numeric",
"String",
"String",
"String",
14354 "String",
"String",
"String",
"String",
"Numeric",
"Numeric"),
14356 "None",
"750e9",
"-1"),
14357 GIN_DESC(
"Name of the LBLRTM file",
14358 "Minimum frequency of read lines",
14359 "Maximum frequency of read lines",
14360 "Global quantum number list (space-separated)",
14361 "Local quantum number list (space-separated)",
14362 "Normalization option, see *abs_linesSetNormalization*",
14363 "Mirroring option, see *abs_linesSetMirroring*",
14364 "Population option, see *abs_linesSetPopulation*",
14365 "Lineshape option, see *abs_linesSetLineShapeType*",
14366 "Cutoff option, see *abs_linesSetCutoff*",
14367 "Cutoff value, see *abs_linesSetCutoff*",
14368 "Line mixing limit, see *abs_linesSetLinemixingLimit*")));
14371 NAME(
"ReadMytran2"),
14374 "Be careful setting the options!\n"),
14375 AUTHORS(
"Axel von Engeln",
"Stefan Buehler",
"Richard Larsson"),
14381 GIN(
"filename",
"fmin",
"fmax",
"globalquantumnumbers",
14382 "localquantumnumbers",
"normalization_option",
"mirroring_option",
14383 "population_option",
"lineshapetype_option",
"cutoff_option",
14384 "cutoff_value",
"linemixinglimit_value"),
14385 GIN_TYPE(
"String",
"Numeric",
"Numeric",
"String",
"String",
"String",
14386 "String",
"String",
"String",
"String",
"Numeric",
"Numeric"),
14388 "None",
"750e9",
"-1"),
14389 GIN_DESC(
"Name of the Mytran2 file",
14390 "Minimum frequency of read lines",
14391 "Maximum frequency of read lines",
14392 "Global quantum number list (space-separated)",
14393 "Local quantum number list (space-separated)",
14394 "Normalization option, see *abs_linesSetNormalization*",
14395 "Mirroring option, see *abs_linesSetMirroring*",
14396 "Population option, see *abs_linesSetPopulation*",
14397 "Lineshape option, see *abs_linesSetLineShapeType*",
14398 "Cutoff option, see *abs_linesSetCutoff*",
14399 "Cutoff value, see *abs_linesSetCutoff*",
14400 "Line mixing limit, see *abs_linesSetLinemixingLimit*")));
14406 "Be careful setting the options!\n"),
14407 AUTHORS(
"Thomas Kuhn",
"Richard Larsson"),
14413 GIN(
"filename",
"fmin",
"fmax",
"globalquantumnumbers",
14414 "localquantumnumbers",
"normalization_option",
"mirroring_option",
14415 "population_option",
"lineshapetype_option",
"cutoff_option",
14416 "cutoff_value",
"linemixinglimit_value"),
14417 GIN_TYPE(
"String",
"Numeric",
"Numeric",
"String",
"String",
"String",
14418 "String",
"String",
"String",
"String",
"Numeric",
"Numeric"),
14420 "None",
"750e9",
"-1"),
14422 "Minimum frequency of read lines",
14423 "Maximum frequency of read lines",
14424 "Global quantum number list (space-separated)",
14425 "Local quantum number list (space-separated)",
14426 "Normalization option, see *abs_linesSetNormalization*",
14427 "Mirroring option, see *abs_linesSetMirroring*",
14428 "Population option, see *abs_linesSetPopulation*",
14429 "Lineshape option, see *abs_linesSetLineShapeType*",
14430 "Cutoff option, see *abs_linesSetCutoff*",
14431 "Cutoff value, see *abs_linesSetCutoff*",
14432 "Line mixing limit, see *abs_linesSetLinemixingLimit*")));
14435 NAME(
"abs_linesTruncateGlobalQuantumNumbers"),
14436 DESCRIPTION(
"Truncates all global quantum numbers\n"
14437 "and then recombine the line list.\n"),
14450 NAME(
"abs_linesWriteSplitXML"),
14451 DESCRIPTION(
"Writes a split catalog, AbsorptionLines by AbsorptionLines.\n"
14453 "There will be one unique file generated per AbsorptionLines in *abs_lines*.\n"
14455 "The names of these files will be:\n"
14456 "\tbasename+\".\"+AbsorptionLines.SpeciesName()+\".\"+to_string(N)+\".xml\"\n"
14457 "where N>=0 and the species name is something line \"H2O\".\n"),
14463 IN(
"output_file_format",
"abs_lines"),
14467 GIN_DESC(
"Path to store the files at")));
14470 NAME(
"abs_linesWriteSpeciesSplitXML"),
14471 DESCRIPTION(
"As *abs_linesWriteSplitXML* but writes an array\n"
14478 IN(
"output_file_format",
"abs_lines"),
14482 GIN_DESC(
"Path to store the files at")));
14485 NAME(
"abs_lines_per_speciesWriteSplitXML"),
14488 "In addition, the structure of the files generated will not care about\n"
14489 "generating identifiers for the order in *abs_species*\n"),
14495 IN(
"output_file_format",
"abs_lines_per_species"),
14499 GIN_DESC(
"Path to store the files at")));
14502 NAME(
"abs_lines_per_speciesWriteSpeciesSplitXML"),
14503 DESCRIPTION(
"See *abs_linesWriteSpeciesSplitXML*\n"
14505 "In addition, the structure of the files generated will not care about\n"
14506 "generating identifiers for the order in *abs_species*\n"),
14512 IN(
"output_file_format",
"abs_lines_per_species"),
14516 GIN_DESC(
"Path to store the files at")));
14519 NAME(
"ReadNetCDF"),
14520 DESCRIPTION(
"Reads a workspace variable from a NetCDF file.\n"
14522 "This method can read variables of any group.\n"
14524 "If the filename is omitted, the variable is read\n"
14525 "from <basename>.<variable_name>.nc.\n"),
14529 GOUT_TYPE(
"Vector, Matrix, Tensor3, Tensor4, Tensor5, ArrayOfVector,"
14530 "ArrayOfMatrix, GasAbsLookup"),
14536 GIN_DESC(
"Name of the NetCDF file."),
14546 "Reads a workspace variable from an XML file.\n"
14548 "This method can read variables of any group.\n"
14550 "If the filename is omitted, the variable is read\n"
14551 "from <basename>.<variable_name>.xml.\n"
14552 "If the given filename does not exist, this method will\n"
14553 "also look for files with an added .xml, .xml.gz and .gz extension\n"),
14563 GIN_DESC(
"Name of the XML file."),
14571 NAME(
"ReadXMLIndexed"),
14572 DESCRIPTION(
"As *ReadXML*, but reads indexed file names.\n"
14574 "The variable is read from a file with name:\n"
14575 " <filename>.<file_index>.xml.\n"
14576 "where <file_index> is the value of *file_index*.\n"
14578 "This means that *filename* shall here not include the .xml\n"
14579 "extension. Omitting filename works as for *ReadXML*.\n"),
14584 GOUT_DESC(
"Workspace variable to be read."),
14586 GIN(
"filename",
"digits"),
14590 "File name. See above.",
14591 "Equalize the widths of all numbers by padding with zeros as necessary.\n"
14592 "0 means no padding (default)."),
14602 "Reduces a larger class to a smaller class of same size.\n"
14604 "The Reduce command reduces all \"1\"-dimensions to nil. Examples:\n"
14605 "\t1) 1 Vector can be reduced to a Numeric\n"
14606 "\t2) 2x1 Matrix can be reduced to 2 Vector\n"
14607 "\t3) 1x3x1 Tensor3 can be reduced to 3 Vector\n"
14608 "\t4) 1x1x1x1 Tensor4 can be reduced to a Numeric\n"
14609 "\t5) 3x1x4x1x5 Tensor5 can only be reduced to 3x4x5 Tensor3\n"
14610 "\t6) 1x1x1x1x2x3 Tensor6 can be reduced to 2x3 Matrix\n"
14611 "\t7) 2x3x4x5x6x7x1 Tensor7 can be reduced to 2x3x4x5x6x7 Tensor6\n"
14613 AUTHORS(
"Oliver Lemke",
"Richard Larsson"),
14616 GOUT_TYPE(
"Numeric, Numeric, Numeric, Numeric, Numeric, Numeric, Numeric,"
14617 "Vector, Vector, Vector, Vector, Vector, Vector,"
14618 "Matrix, Matrix, Matrix, Matrix, Matrix,"
14619 "Tensor3, Tensor3, Tensor3, Tensor3,"
14620 "Tensor4, Tensor4, Tensor4,"
14621 "Tensor5, Tensor5,"
14626 GIN_TYPE(
"Vector, Matrix, Tensor3, Tensor4, Tensor5, Tensor6, Tensor7,"
14627 "Matrix, Tensor3, Tensor4, Tensor5, Tensor6, Tensor7,"
14628 "Tensor3, Tensor4, Tensor5, Tensor6, Tensor7,"
14629 "Tensor4, Tensor5, Tensor6, Tensor7,"
14630 "Tensor5, Tensor6, Tensor7,"
14631 "Tensor6, Tensor7,"
14634 GIN_DESC(
"Over-dimensioned input"),
14640 NAME(
"refellipsoidEarth"),
14642 "Earth reference ellipsoids.\n"
14644 "The reference ellipsoid (*refellipsoid*) is set to model the Earth,\n"
14645 "following different models. The options are:\n"
14647 " \"Sphere\" : A spherical Earth. The radius is set following\n"
14648 " the value set for the Earth radius in constants.cc.\n"
14650 " \"WGS84\" : The reference ellipsoid used by the GPS system.\n"
14651 " Should be the standard choice for a non-spherical Earth.\n"),
14653 OUT(
"refellipsoid"),
14661 GIN_DESC(
"Model ellipsoid to use. Options listed above.")));
14667 "From Wikipedia\n"),
14669 OUT(
"refellipsoid"),
14677 GIN_DESC(
"Model ellipsoid to use. Options listed above.")));
14680 NAME(
"refellipsoidForAzimuth"),
14682 "Conversion of 3D ellipsoid to 1D curvature radius.\n"
14684 "Calculates the curvature radius for the given latitude and azimuth\n"
14685 "angle, and uses this to set a spherical reference ellipsoid\n"
14686 "suitable for 1D calculations. The curvature radius is a better\n"
14687 "local approximation than using the local ellipsoid radius.\n"
14689 "The used expression assumes a geodetic latitude, but also\n"
14690 "latitudes should be OK as using this method anyhow signifies\n"
14691 "an approximation.\n"),
14693 OUT(
"refellipsoid"),
14697 IN(
"refellipsoid"),
14698 GIN(
"latitude",
"azimuth"),
14701 GIN_DESC(
"Latitude.",
"Azimuth angle.")));
14704 NAME(
"refellipsoidEuropa"),
14706 "Io reference ellipsoids.\n"
14708 "The reference ellipsoid (*refellipsoid*) is set to model Io,\n"
14709 "folowing different models. The options are:\n"
14711 " \"Sphere\" : A spherical planetesimal. The radius is taken from\n"
14712 " report of the IAU/IAG Working Group.\n"),
14714 OUT(
"refellipsoid"),
14722 GIN_DESC(
"Model ellipsoid to use. Options listed above.")));
14725 NAME(
"refellipsoidIo"),
14727 "Io reference ellipsoids.\n"
14729 "The reference ellipsoid (*refellipsoid*) is set to model Io,\n"
14730 "folowing different models. The options are:\n"
14732 " \"Sphere\" : A spherical planetesimal. The radius is taken from\n"
14733 " report of the IAU/IAG Working Group.\n"),
14735 OUT(
"refellipsoid"),
14743 GIN_DESC(
"Model ellipsoid to use. Options listed above.")));
14746 NAME(
"refellipsoidJupiter"),
14748 "Jupiter reference ellipsoids.\n"
14750 "The reference ellipsoid (*refellipsoid*) is set to model Jupiter,\n"
14751 "folowing different models. The options are:\n"
14753 " \"Sphere\" : A spherical planet. The radius is taken from a\n"
14754 " report of the IAU/IAG Working Group.\n"
14756 " \"Ellipsoid\" : A reference ellipsoid with parameters taken from\n"
14757 " a report of the IAU/IAG Working Group.\n"),
14759 OUT(
"refellipsoid"),
14767 GIN_DESC(
"Model ellipsoid to use. Options listed above.")));
14770 NAME(
"refellipsoidMars"),
14772 "Mars reference ellipsoids.\n"
14774 "The reference ellipsoid (*refellipsoid*) is set to model Mars,\n"
14775 "folowing different models. The options are:\n"
14777 " \"Sphere\" : A spherical planet. The radius is taken from a\n"
14778 " report of the IAU/IAG Working Group.\n"
14780 " \"Ellipsoid\" : A reference ellipsoid with parameters taken from\n"
14781 " a report of the IAU/IAG Working Group.\n"),
14783 OUT(
"refellipsoid"),
14791 GIN_DESC(
"Model ellipsoid to use. Options listed above.")));
14794 NAME(
"refellipsoidMoon"),
14796 "Moon reference ellipsoids.\n"
14798 "The reference ellipsoid (*refellipsoid*) is set to model Moon,\n"
14799 "folowing different models. The options are:\n"
14801 " \"Sphere\" : A spherical planet. The radius is taken from a\n"
14802 " report of the IAU/IAG Working Group.\n"
14804 " \"Ellipsoid\" : A reference ellipsoid with parameters taken from\n"
14805 " Wikepedia (see code for details). The IAU/IAG working group\n"
14806 " defines the Moon ellipsoid to be a sphere.\n"),
14808 OUT(
"refellipsoid"),
14816 GIN_DESC(
"Model ellipsoid to use. Options listed above.")));
14819 NAME(
"refellipsoidOrbitPlane"),
14821 "Conversion of 3D ellipsoid to 2D orbit track geometry.\n"
14823 "Determines an approximate reference ellipsoid following an orbit\n"
14824 "track. The new ellipsoid is determined simply, by determining the\n"
14825 "radius at the maximum latitude and from this value calculate a new\n"
14826 "new eccentricity. The orbit is specified by giving the orbit\n"
14827 "inclination (*orbitinc*), that is normally a value around 100 deg\n"
14828 "for polar sun-synchronous orbits.\n"),
14830 OUT(
"refellipsoid"),
14834 IN(
"refellipsoid"),
14841 NAME(
"refellipsoidSet"),
14843 "Manual setting of the reference ellipsoid.\n"
14845 "The two values of *refellipsoid* can here be set manually. The two\n"
14846 "arguments correspond directly to first and second element of\n"
14847 "*refellipsoid*.\n"),
14849 OUT(
"refellipsoid"),
14857 GIN_DESC(
"Average or equatorial radius.",
"Eccentricity")));
14860 NAME(
"refellipsoidVenus"),
14862 "Venus reference ellipsoids.\n"
14864 "The reference ellipsoid (*refellipsoid*) is set to model Venus,\n"
14865 "folowing different models. The options are:\n"
14867 " \"Sphere\" : A spherical planet. The radius is taken from a\n"
14868 " report of the IAU/IAG Working Group.\n"
14870 "According to the report used above, the Venus ellipsoid lacks\n"
14871 "eccentricity and no further models should be required.\n"),
14873 OUT(
"refellipsoid"),
14881 GIN_DESC(
"Model ellipsoid to use. Options listed above.")));
14884 NAME(
"refr_index_airFreeElectrons"),
14886 "Microwave refractive index due to free electrons.\n"
14888 "The refractive index of free electrons is added to *refr_index_air*.\n"
14889 "To obtain the complete value, *refr_index_air* should be set to 1\n"
14890 "before calling this WSM. This applies also to *refr_index_air_group*.\n"
14892 "The expression applied is n=sqrt(1-wp^2/w^2) where wp is the plasma\n"
14893 "frequency, and w is the angular frequency (the function returns\n"
14894 "n-1, that here is slightly negative). This expressions is found in\n"
14895 "many textbooks, e.g. Rybicki and Lightman (1979). The above refers\n"
14896 "to *refr_index_air*. *refr_index_air_group* is sqrt(1+wp^2/w^2).\n"
14898 "The expression is dispersive. The frequency applied is the mean of\n"
14899 "first and last element of *f_grid* is selected. This frequency must\n"
14900 "be at least twice the plasma frequency.\n"
14902 "An error is issued if free electrons not are part of *abs_species*\n"
14903 "(and there exist a corresponding \"vmr\"-value). This demand is\n"
14904 "removed if *demand_vmr_value* is set to 0, but use this option\n"
14907 OUT(
"refr_index_air",
"refr_index_air_group"),
14911 IN(
"refr_index_air",
14912 "refr_index_air_group",
14916 GIN(
"demand_vmr_value"),
14919 GIN_DESC(
"Flag to control if it is demanded that free electrons are "
14920 "in *abs_species*. Default is that this is demanded.")));
14923 NAME(
"refr_index_airInfraredEarth"),
14925 "Calculates the IR refractive index due to gases in the\n"
14926 "Earth's atmosphere.\n"
14928 "Only refractivity of dry air is considered. The formula used is\n"
14929 "contributed by Michael Hoepfner, Forschungszentrum Karlsruhe.\n"
14931 "The refractivity of dry air is added to *refr_index_air*. To obtain\n"
14932 "the complete value, *refr_index_air* should be set to 1 before\n"
14933 "calling this WSM. This applies also to *refr_index_air_group*.\n"
14935 "The expression used is non-dispersive. Hence, *refr_index_air* and\n"
14936 "*refr_index_air_group* are identical.\n"),
14938 OUT(
"refr_index_air",
"refr_index_air_group"),
14942 IN(
"refr_index_air",
14943 "refr_index_air_group",
14945 "rtp_temperature"),
14952 NAME(
"refr_index_airMicrowavesEarth"),
14954 "Microwave refractive index in Earth's atmosphere.\n"
14956 "This method just considers pressure, temperature and water\n"
14957 "vapour, which should suffice for Earth. For a more general\n"
14958 "method, see *refr_index_airMicrowavesGeneral*.\n"
14960 "The refractivity of dry air and water vapour is added to\n"
14961 "*refr_index_air*. To obtain the complete value, *refr_index_air*\n"
14962 "should be set to 1 before calling this WSM. This applies also to\n"
14963 "*refr_index_air_group.\n"
14965 "The expression used is non-dispersive. Hence, *refr_index_air*\n"
14966 "and *refr_index_air_group* are identical.\n"
14968 "The standard expression for Earth and microwaves is used:\n"
14969 " N = k1*(P-e)/T + k2*e/T + k3*e/T^2\n"
14970 "where N is refractivity, P is pressure, T is temperature and\n"
14971 "e is water vapour partial pressure. The values of k1, k2 and k3\n"
14972 "can be modified.\n"
14974 "Many different values of k1, k2 and k3 can be found in the\n"
14975 "literature. The default values applied here are taken from\n"
14976 "Bevis et al., GPS meteorology: Mapping ..., JAM, 1994.\n"
14977 "More specifically, these value are found in Table 1, listed\n"
14978 "as \"Present study\". Note that in ARTS Pa is used for pressure\n"
14979 "and k1, k2 and k3 must be adjusted accordingly.\n"),
14981 OUT(
"refr_index_air",
"refr_index_air_group"),
14985 IN(
"refr_index_air",
14986 "refr_index_air_group",
14991 GIN(
"k1",
"k2",
"k3"),
14992 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric"),
14994 GIN_DESC(
"Coefficient a, see above",
14995 "Coefficient b, see above",
14996 "Coefficient c, see above")));
14999 NAME(
"refr_index_airMicrowavesGeneral"),
15001 "Microwave refractive index due to gases in planetary atmospheres.\n"
15003 "The refractivity of a specified gas mixture is calculated and added\n"
15004 "to *refr_index_air*. To obtain the complete value, *refr_index_air*\n"
15005 "should be set to 1 before calling this WSM. This applies also to\n"
15006 "*refr_index_air_group.\n"
15008 "The expression used is non-dispersive. Hence, *refr_index_air* and\n"
15009 "*refr_index_air_group* are identical.\n"
15011 "Uses the methodology introduced by Newell&Baird (1965) for calculating\n"
15012 "refractivity of variable gas mixtures based on refractivity of the\n"
15013 "individual gases at reference conditions. Assuming ideal gas law for\n"
15014 "converting reference refractivity to actual pressure and temperature\n"
15015 "conditions. Reference refractivities are also taken from Newell&Baird (1965)\n"
15016 "and are vailable for N2, O2, CO2, H2, and He. Additionally, H2O reference\n"
15017 "refractivity has been derived from H2O contribution in Thayer (see\n"
15018 "*refr_index_airMicrowavesEarth*) for T0=273.15K. Any mixture of these gases\n"
15019 "can be taken into account.\n"),
15021 OUT(
"refr_index_air",
"refr_index_air_group"),
15025 IN(
"refr_index_air",
15026 "refr_index_air_group",
15037 NAME(
"retrievalDefClose"),
15039 "Closes the definition of retrieval quantities and correlations and\n"
15040 "prepares related WSVs for the retrieval.\n"
15042 "This function calls jacobianClose and checks that the corvariance matrices\n"
15043 "are consistent with the Jacobian.\n"),
15044 AUTHORS(
"Simon Pfreundschuh"),
15045 OUT(
"jacobian_do",
"jacobian_agenda",
"retrieval_checked"),
15049 IN(
"jacobian_agenda",
"covmat_sx",
"jacobian_quantities"),
15056 NAME(
"retrievalAddAbsSpecies"),
15058 "Adds an absorption species to the retrieval quantities.\n"
15060 "Similar to *jacobianAddAbsSpecies* but also sets the corresponding block in\n"
15061 "*covmat_sx* to the matrices provided in *covmat_block* and *covmat_inv_block*.\n"
15062 "The dimensions of *covmat_block* are required to agree with the dimensions of the\n"
15063 "retrieval grid.\n"
15065 "*covmat_inv_block* must be either empty or the same dimension as *covmat_block*.\n"
15066 "If provided, this matrix will be used as the inverse for the covariance matrix block\n"
15067 "and numerical inversion of this block is thus avoided. Note, however, that this is\n"
15068 "only effective if this block is uncorrelated with any other retrieval quantity.\n"
15070 "For number and order of elements added to *x*, see *jacobianAddAbsSpecies*.\n"),
15071 AUTHORS(
"Simon Pfreundschuh"),
15072 OUT(
"covmat_sx",
"jacobian_quantities",
"jacobian_agenda"),
15077 "jacobian_quantities",
15081 "covmat_inv_block",
15085 GIN(
"g1",
"g2",
"g3",
"species",
"unit",
"for_species_tag"),
15086 GIN_TYPE(
"Vector",
"Vector",
"Vector",
"String",
"String",
"Index"),
15088 GIN_DESC(
"Pressure retrieval grid.",
15089 "Latitude retrieval grid.",
15090 "Longitude retreival grid.",
15091 "The species tag of the retrieval quantity.",
15092 "Retrieval unit. See above.",
15093 "Index-bool for acting on species tags or species."),
15100 NAME(
"retrievalAddFreqShift"),
15102 "Same as *jacobianAddFreqShift* but also adds the correlation block\n"
15103 "contained in *covmat_block* and *covmat_inv_block* to *covmat_sx*.\n"
15105 "For number and order of elements added to *x*, see *jacobianAddFreqShift*.\n"),
15106 AUTHORS(
"Simon Pfreundschuh"),
15107 OUT(
"covmat_sx",
"jacobian_quantities",
"jacobian_agenda"),
15113 "covmat_inv_block",
15114 "jacobian_quantities",
15120 GIN_DESC(
"Size of perturbation to apply.")));
15123 NAME(
"retrievalAddFreqStretch"),
15125 "Same as *jacobianAddFreqShift* but also adds the correlation block\n"
15126 "contained in *covmat_block* and *covmat_inv_block* to *covmat_sx*.\n"
15128 "For number and order of elements added to *x*, see *jacobianAddFreqStretch*.\n"),
15129 AUTHORS(
"Simon Pfreundschuh"),
15130 OUT(
"covmat_sx",
"jacobian_quantities",
"jacobian_agenda"),
15134 IN(
"jacobian_quantities",
15138 "covmat_inv_block"),
15142 GIN_DESC(
"Size of perturbation to apply.")));
15145 NAME(
"retrievalDefInit"),
15147 "Begin retrieval definition section.\n"
15149 "This function initialises all variables required for defining\n"
15150 "retrieval quantities and corresponding covariance matrices.\n"
15151 "By default, Jacobian quantities should be added withing the.\n"
15152 "retrieval definition section. If Jacobian quantities are\n"
15153 "defined separately *initialize_jacobian* must be set to 0,\n"
15154 "otherwise the quantities will be discarded.\n"),
15155 AUTHORS(
"Simon Pfreundschuh"),
15159 "covmat_inv_block",
15160 "jacobian_quantities",
15161 "jacobian_agenda"),
15166 GIN(
"initialize_jacobian"),
15169 GIN_DESC(
"Flag whether or not to (re)initialize Jacobian-related\n"
15170 "quantities. Set to 0 if Jacobian is already defined.")));
15173 NAME(
"retrievalAddCatalogParameter"),
15175 "Similar to *jacobianAddBasicCatalogParameter* but also adds a corresponding\n"
15176 "block to *covmat_sx* with the given *var* as variance value.\n"
15178 "For number and order of elements added to *x*,\n"
15179 "see *jacobianAddBasicCatalogParameter*.\n"),
15180 AUTHORS(
"Simon Pfreundschuh"),
15181 OUT(
"covmat_sx",
"jacobian_quantities",
"jacobian_agenda"),
15185 IN(
"covmat_sx",
"jacobian_quantities",
"jacobian_agenda"),
15186 GIN(
"catalog_identity",
"catalog_parameter",
"var"),
15187 GIN_TYPE(
"QuantumIdentifier",
"String",
"Numeric"),
15189 GIN_DESC(
"The catalog line matching information.",
15190 "The catalog parameter of the retrieval quantity.",
15191 "The variance of the catalog parameter.")));
15194 NAME(
"retrievalAddCatalogParameters"),
15196 "Same as *jacobianAddBasicCatalogParameters* but also adds a new\n"
15197 "block to *covmat_sx* using the matrices in *covmat_block* and\n"
15198 "*covmat_inv_block*.\n"
15200 "If *covmat_inv_block* is non-empty, it is used as inverse for the added block\n"
15201 "which avoids its numerical computation.\n"
15203 "For number and order of elements added to *x*,\n"
15204 "see *jacobianAddBasicCatalogParameters*.\n"),
15205 AUTHORS(
"Simon Pfreundschuh"),
15206 OUT(
"covmat_sx",
"jacobian_quantities",
"jacobian_agenda"),
15211 "jacobian_quantities",
15214 "covmat_inv_block"),
15215 GIN(
"catalog_identities",
"catalog_parameters"),
15216 GIN_TYPE(
"ArrayOfQuantumIdentifier",
"ArrayOfString"),
15218 GIN_DESC(
"The catalog line matching informations.",
15219 "The catalog parameters of the retrieval quantity.")));
15222 NAME(
"retrievalAddMagField"),
15224 "Same as *jacobianAddMagField* but also adds a new block to *covmat_sx*\n"
15225 "using the matrices in *covmat_block* and *covmat_inv_block*.\n"
15227 "If *covmat_inv_block* is non-empty, it is used as inverse for the added block\n"
15228 "which avoids its numerical computation.\n"
15230 "For number and order of elements added to *x*, see *jacobianAddMagField*.\n"),
15231 AUTHORS(
"Simon Pfreundschuh"),
15232 OUT(
"covmat_sx",
"jacobian_quantities",
"jacobian_agenda"),
15237 "jacobian_quantities",
15241 "covmat_inv_block",
15245 GIN(
"g1",
"g2",
"g3",
"component",
"dB"),
15246 GIN_TYPE(
"Vector",
"Vector",
"Vector",
"String",
"Numeric"),
15248 GIN_DESC(
"Pressure retrieval grid.",
15249 "Latitude retrieval grid.",
15250 "Longitude retreival grid.",
15251 "Magnetic field component to retrieve",
15252 "Magnetic field perturbation")));
15255 NAME(
"retrievalAddPointingZa"),
15257 "Same as *jacobianAddPointingZa* but also adds a new block to *covmat_sx*\n"
15258 "using the matrices in *covmat_block* and *covmat_inv_block*.\n"
15260 "If *covmat_inv_block* is non-empty, it is used as inverse for the added block\n"
15261 "which avoids its numerical computation.\n"
15263 "For number and order of elements added to *x*, see *jacobianAddPointingZa*.\n"),
15264 AUTHORS(
"Simon Pfreundschuh"),
15265 OUT(
"covmat_sx",
"jacobian_quantities",
"jacobian_agenda"),
15270 "jacobian_quantities",
15273 "covmat_inv_block",
15276 GIN(
"poly_order",
"calcmode",
"dza"),
15277 GIN_TYPE(
"Index",
"String",
"Numeric"),
15279 GIN_DESC(
"Order of polynomial to describe the time variation of "
15280 "pointing off-sets.",
15281 "Calculation method. See above",
15282 "Size of perturbation to apply (when applicable).")));
15285 NAME(
"retrievalAddPolyfit"),
15287 "Same as *jacobianAddPolyfit* but also adds a new block to *covmat_sx*\n"
15288 "using the matrices in *covmat_block* and *covmat_inv_block*.\n"
15290 "If *covmat_inv_block* is non-empty, it is used as inverse for the added block\n"
15291 "which avoids its numerical computation.\n"
15293 "For number and order of elements added to *x*, see *jacobianAddPolyfit*.\n"),
15294 AUTHORS(
"Simon Pfreundschuh"),
15295 OUT(
"covmat_sx",
"jacobian_quantities",
"jacobian_agenda"),
15300 "jacobian_quantities",
15303 "covmat_inv_block",
15304 "sensor_response_pol_grid",
15305 "sensor_response_dlos_grid",
15308 "no_pol_variation",
15309 "no_los_variation",
15310 "no_mblock_variation"),
15311 GIN_TYPE(
"Index",
"Index",
"Index",
"Index"),
15313 GIN_DESC(
"Polynomial order to use for the fit.",
15314 "Set to 1 if the baseline off-set is the same for all "
15315 "Stokes components.",
15316 "Set to 1 if the baseline off-set is the same for all "
15317 "line-of-sights (inside each measurement block).",
15318 "Set to 1 if the baseline off-set is the same for all "
15319 "measurement blocks.")));
15322 NAME(
"retrievalAddScatSpecies"),
15324 "Same as *jacobianAddPolyfit* but also adds a new block to *covmat_sx*\n"
15325 "using the matrices in *covmat_block* and *covmat_inv_block*.\n"
15327 "If *covmat_inv_block* is non-empty, it is used as inverse for the added block\n"
15328 "which avoids its numerical computation.\n"
15330 "For number and order of elements added to *x*, see *jacobianAddScatSpecies*.\n"),
15331 AUTHORS(
"Simon Pfreundschuh"),
15332 OUT(
"covmat_sx",
"jacobian_quantities",
"jacobian_agenda"),
15337 "jacobian_quantities",
15341 "covmat_inv_block",
15345 GIN(
"g1",
"g2",
"g3",
"species",
"quantity"),
15346 GIN_TYPE(
"Vector",
"Vector",
"Vector",
"String",
"String"),
15349 "Pressure retrieval grid.",
15350 "Latitude retrieval grid.",
15351 "Longitude retreival grid.",
15352 "Name of scattering species, must match one element in *scat_species*.",
15353 "Retrieval quantity, e.g. \"IWC\"."),
15360 NAME(
"retrievalAddSinefit"),
15362 "Same as *jacobianAddSinefit* but also adds a new block to *covmat_sx*\n"
15363 "using the matrices in *covmat_block* and *covmat_inv_block*.\n"
15365 "If *covmat_inv_block* is non-empty, it is used as inverse for the added block\n"
15366 "which avoids its numerical computation.\n"
15368 "For number and order of elements added to *x*, see *jacobianAddSinefit*.\n"),
15369 AUTHORS(
"Simon Pfreundschuh"),
15370 OUT(
"covmat_sx",
"jacobian_quantities",
"jacobian_agenda"),
15375 "jacobian_quantities",
15378 "covmat_inv_block",
15379 "sensor_response_pol_grid",
15380 "sensor_response_dlos_grid",
15382 GIN(
"period_lengths",
15383 "no_pol_variation",
15384 "no_los_variation",
15385 "no_mblock_variation"),
15386 GIN_TYPE(
"Vector",
"Index",
"Index",
"Index"),
15388 GIN_DESC(
"Period lengths of the fit.",
15389 "Set to 1 if the baseline off-set is the same for all "
15390 "Stokes components.",
15391 "Set to 1 if the baseline off-set is the same for all "
15392 "line-of-sights (inside each measurement block).",
15393 "Set to 1 if the baseline off-set is the same for all "
15394 "measurement blocks.")));
15397 NAME(
"retrievalAddSpecialSpecies"),
15399 "Same as *jacobianAddSpecialSpecies* but also adds a new block to *covmat_sx*\n"
15400 "using the matrices in *covmat_block* and *covmat_inv_block*.\n"
15402 "If *covmat_inv_block* is non-empty, it is used as inverse for the added block\n"
15403 "which avoids its numerical computation.\n"
15405 "For number and order of elements added to *x*, see *jacobianAddSpecialSpecies*.\n"),
15406 AUTHORS(
"Simon Pfreundschuh"),
15407 OUT(
"covmat_sx",
"jacobian_quantities",
"jacobian_agenda"),
15412 "jacobian_quantities",
15416 "covmat_inv_block",
15420 GIN(
"g1",
"g2",
"g3",
"species"),
15421 GIN_TYPE(
"Vector",
"Vector",
"Vector",
"String"),
15423 GIN_DESC(
"Pressure retrieval grid.",
15424 "Latitude retrieval grid.",
15425 "Longitude retreival grid.",
15426 "The species of the retrieval quantity."),
15433 NAME(
"retrievalAddSurfaceQuantity"),
15435 "Same as *jacobianAddSurfaceQuantity* but also adds a new block to *covmat_sx*\n"
15436 "using the matrices in *covmat_block* and *covmat_inv_block*.\n"
15438 "If *covmat_inv_block* is non-empty, it is used as inverse for the added block\n"
15439 "which avoids its numerical computation.\n"
15441 "For number and order of elements added to *x*, see *jacobianAddSurfaceQuantity*.\n"),
15443 OUT(
"covmat_sx",
"jacobian_quantities",
"jacobian_agenda"),
15448 "jacobian_quantities",
15451 "covmat_inv_block",
15455 GIN(
"g1",
"g2",
"quantity"),
15456 GIN_TYPE(
"Vector",
"Vector",
"String"),
15458 GIN_DESC(
"Latitude retrieval grid.",
15459 "Longitude retreival grid.",
15460 "Retrieval quantity, e.g. \"Wind speed\".")));
15463 NAME(
"retrievalAddTemperature"),
15465 "Same as *jacobianAddTemperature* but also adds a new block to *covmat_sx*\n"
15466 "using the matrices in *covmat_block* and *covmat_inv_block*.\n"
15468 "If *covmat_inv_block* is non-empty, it is used as inverse for the added block\n"
15469 "which avoids its numerical computation.\n"
15471 "For number and order of elements added to *x*, see *jacobianAddTemperature*.\n"),
15472 AUTHORS(
"Simon Pfreundschuh"),
15473 OUT(
"covmat_sx",
"jacobian_quantities",
"jacobian_agenda"),
15478 "jacobian_quantities",
15482 "covmat_inv_block",
15486 GIN(
"g1",
"g2",
"g3",
"hse"),
15487 GIN_TYPE(
"Vector",
"Vector",
"Vector",
"String"),
15489 GIN_DESC(
"Pressure retrieval grid.",
15490 "Latitude retrieval grid.",
15491 "Longitude retreival grid.",
15492 "Flag to assume HSE or not (\"on\" or \"off\").")));
15495 NAME(
"retrievalAddWind"),
15497 "Same as *jacobianAddWind* but also adds a new block to *covmat_sx*\n"
15498 "using the matrices in *covmat_block* and *covmat_inv_block*.\n"
15500 "If *covmat_inv_block* is non-empty, it is used as inverse for the added block\n"
15501 "which avoids its numerical computation.\n"
15503 "For number and order of elements added to *x*, see *jacobianAddWind*.\n"),
15504 AUTHORS(
"Simon Pfreundschuh"),
15505 OUT(
"covmat_sx",
"jacobian_quantities",
"jacobian_agenda"),
15510 "jacobian_quantities",
15514 "covmat_inv_block",
15518 GIN(
"g1",
"g2",
"g3",
"component",
"dfrequency"),
15519 GIN_TYPE(
"Vector",
"Vector",
"Vector",
"String",
"Numeric"),
15521 GIN_DESC(
"Pressure retrieval grid.",
15522 "Latitude retrieval grid.",
15523 "Longitude retrieval grid.",
15524 "Wind component to retrieve",
15525 "This is the frequency perturbation")));
15528 NAME(
"retrievalErrorsExtract"),
15530 "Extract retrieval error from covariance matrices.\n"
15532 "Extracts the error estimates for the retrieved quantities from the covariance\n"
15533 "matrices for the error due to measurement noise *covmat_so* and the error due\n"
15534 "to limited resolution of the observation system *covmat_ss* and stores them in\n"
15535 "the vectors *retrieval_eo* and *retrieval_ss*, respectively."
15537 "To etract these errors, first the convariance matrices of which the errors \n"
15538 "should be extracted have to be computed using the WSMs *covmat_soCalc*\n"
15539 "and *covmat_ssCalc* or set to be empty in order to be ignored. Note, however,\n"
15540 "that this will also set the corresponding error vector to be empty.\n"),
15541 AUTHORS(
"Simon Pfreundschuh"),
15542 OUT(
"retrieval_eo",
"retrieval_ss"),
15546 IN(
"covmat_so",
"covmat_ss"),
15555 "Interface to the PolRadTran RT4 scattering solver (by F. Evans).\n"
15557 "RT4 provides the radiation field (*cloudbox_field*) from a vector\n"
15558 "1D scattering solution assuming a plane-parallel atmosphere (flat\n"
15559 "Earth). It calculates up to two Stokes parameters (*stokes_dim*<=2),\n"
15560 "i.e., all azimuthally randomly oriented particles are allowed (this\n"
15561 "also includes macroscopically isotropic particles). Refraction is\n"
15562 "not taken into account.\n"
15564 "The scattering solution is internally obtained over the full\n"
15565 "(plane-parallel) atmosphere, i.e. not confined to the cloudbox.\n"
15566 "However, the radiation field output is limited to the cloudbox.\n"
15567 "This allows to consider clearsky RT through a non-spherical\n"
15568 "atmosphere outside the cloudbox improving the RT solution for\n"
15569 "non-plane-parallel media compared to the plain RT4 output.\n"
15571 "*nstreams* is the number of polar angles taken into account\n"
15572 "internally in the scattering solution. That is, *nstreams*\n"
15573 "determines the angular resolution, hence the accuracy, of the\n"
15574 "scattering solution. The more anisotropic the bulk scattering\n"
15575 "matrix, the more streams are required. The computational burden\n"
15576 "increases approximately with the third power of *nstreams*.\n"
15577 "The default value (*nstreams*=16) was found to be sufficient for\n"
15578 "most microwave scattering calculations. It is likely insufficient\n"
15579 "for IR calculations involving ice clouds, though.\n"
15581 "Here, *za_grid* is NOT an input parameter, but output, and its\n"
15582 "size equals *nstreams* or *nstreams*+2 (Gauss-Legendre and Double\n"
15583 "Gauss quadratures in case *add_straight_angles*=1) (the reason is\n"
15584 "that the computational burden is high for additional angles,\n"
15585 "regardless whether they are quadrature angles or not; hence the\n"
15586 "quadrature angles supplemented with 0 and 180deg are considered to\n"
15587 "provide the best radiation field for a given effort).\n"
15589 "The *auto_inc_nstreams* feature can be used to increase the number\n"
15590 "of streams used internally in the scattering solution when found\n"
15592 "NOTE: this number-of-streams increase is only internally - the\n"
15593 "angular dimension of the output *cloudbox_field* is fixed to the\n"
15594 "*nstreams* given as input to this WSM.\n"
15596 "Quadrature methods available are: 'L'obatto, 'G'auss-Legendre and\n"
15597 "'D'ouble Gauss quadrature.\n"
15599 "This WSM applies *surface_rtprop_agenda* to derive reflection\n"
15600 "matrix and surface emission vector that are directly feed into\n"
15601 "RT4's core solver (instead of their RT4-internal calculation as\n"
15602 "used by *RT4CalcWithRT4Surface*).\n"
15604 "Known issues of ARTS implementation:\n"
15605 "- TOA incoming radiation is so far assumed as blackbody cosmic\n"
15606 " background (temperature taken from the ARTS-internal constant).\n"
15608 "The keyword *pfct_method* allows to choose the method to extract the\n"
15609 "scattering matrix. 'interpolate' considers temperature dependence,\n"
15610 "others neglect it by chosing one specific temperature grid point\n"
15611 "from the single scattering data: 'low' choses the lowest T-point,\n"
15612 "'high' the highest T-point, and 'median' the median T-point. As\n"
15613 "different scattering elements can have different temperature grids,\n"
15614 "the actual temperature value used can differ between the scattering\n"
15616 "Note that this keyword solely affects the scattering matrix;\n"
15617 "extinction matrix and absorption vector are always interpolated to\n"
15618 "the actual temperature.\n"),
15620 OUT(
"cloudbox_field",
"za_grid",
"aa_grid"),
15624 IN(
"atmfields_checked",
15626 "scat_data_checked",
15627 "cloudbox_checked",
15630 "propmat_clearsky_agenda",
15631 "surface_rtprop_agenda",
15645 "add_straight_angles",
15646 "pfct_aa_grid_size",
15647 "auto_inc_nstreams",
15662 GIN_DEFAULT(
"16",
"median",
"D",
"1",
"19",
"0",
"0",
"1",
"0",
"1e-6"),
15663 GIN_DESC(
"Number of polar angle directions (streams) in RT4"
15664 " solution (must be an even number).",
15665 "Flag which method to apply to derive phase function (for"
15666 " available options see above).",
15667 "Flag which quadrature to apply in RT4 solution (for"
15668 " available options see above).",
15669 "Flag whether to include nadir and zenith as explicit"
15670 " directions (only effective for quad_type G and D).",
15671 "Number of azimuthal angle grid points to consider in"
15672 " Fourier series decomposition of scattering matrix (only"
15673 " applied for randomly oriented scattering elements)",
15674 "Flag whether to internally increase nstreams (individually"
15675 " per frequency) if norm of (bulk) scattering matrix is not"
15676 " preserved properly. If 0, no adaptation is done. Else"
15677 " *auto_inc_nstreams* gives the maximum number of streams to"
15678 " increase to. Note that the output *cloudbox_field* remains"
15679 " with angular dimension of *nstreams*, only the internal"
15680 " solution is adapted (and then interpolated to the"
15681 " lower-resolution output angular grid).",
15682 "For *auto_inc_nstreams*>0, flag whether to not fail even if"
15683 " scattering matrix norm is not preserved when maximum stream"
15684 " number is reached. Internal RT4 calculations is then"
15685 " performed with nstreams=*auto_inc_nstreams*.",
15686 "For *auto_inc_nstreams*>0, polar angle interpolation order"
15687 " for interpolation from internal increased stream to"
15688 " originally requested nstreams-ifield.",
15689 "For *auto_inc_nstreams*>0, flag whether to do polar angle"
15690 " interpolation in cosine (='mu') space.",
15691 "Maximum optical depth of infinitesimal layer (where single"
15692 " scattering approximation is assumed to apply).")));
15695 NAME(
"RT4CalcWithRT4Surface"),
15697 "As RT4Calc except for using RT4's proprietary surface type handling.\n"
15699 "This WSM is only indented for testing purposes.\n"
15701 "The following surface type/property methods are available and\n"
15702 "require the the following input:\n"
15703 "- 'L'ambertian: *surface_scalar_reflectivity*, *surface_skin_t*\n"
15704 "- 'F'resnel: *surface_complex_refr_index*, *surface_skin_t*\n"
15705 "- 'S'pecular: *surface_reflectivity*, *surface_skin_t*\n"
15706 "'L' and 'F' use proprietary RT4 methods, 'S' uses RT4's Fresnel\n"
15707 "methods modified to behave similar to ARTS'\n"
15708 "*surfaceFlatReflectivity*.\n"),
15710 OUT(
"cloudbox_field",
"za_grid",
"aa_grid"),
15714 IN(
"atmfields_checked",
15716 "scat_data_checked",
15717 "cloudbox_checked",
15720 "propmat_clearsky_agenda",
15732 "surface_scalar_reflectivity",
15733 "surface_reflectivity",
15734 "surface_complex_refr_index"),
15739 "add_straight_angles",
15740 "pfct_aa_grid_size",
15741 "auto_inc_nstreams",
15758 "16",
"median",
"A",
"D",
"1",
"19",
"0",
"0",
"1",
"0",
"1e-6"),
15759 GIN_DESC(
"Number of polar angle directions (streams) in RT4"
15760 " solution (must be an even number).",
15761 "Flag which method to apply to derive phase function (for"
15762 " available options see above).",
15763 "Flag which surface type/surface property method to use"
15764 " (for available options see above).",
15765 "Flag which quadrature to apply in RT4 solution (for"
15766 " available options see above).",
15767 "Flag whether to include nadir and zenith as explicit"
15768 " directions (only effective for quad_type G and D).",
15769 "Number of azimuthal angle grid points to consider in"
15770 " Fourier series decomposition of scattering matrix (only"
15771 " applied for randomly oriented scattering elements)",
15772 "Flag whether to internally increase nstreams (individually"
15773 " per frequency) if norm of (bulk) scattering matrix is not"
15774 " preserved properly. If 0, no adaptation is done. Else"
15775 " *auto_inc_nstreams* gives the maximum number of streams to"
15777 "For *auto_inc_nstreams*>0, flag whether to not fail even if"
15778 " scattering matrix norm is not preserved when maximum stream"
15779 " number is reached. Internal RT4 calculations is then"
15780 " performed with nstreams=*auto_inc_nstreams*.",
15781 "For *auto_inc_nstreams*>0, polar angle interpolation order"
15782 " for interpolation from internal increased stream to"
15783 " originally requested nstreams-ifield.",
15784 "For *auto_inc_nstreams*>0, flag whether to do polar angle"
15785 " interpolation in cosine (='mu') space.",
15786 "Maximum optical depth of infinitesimal layer (where single"
15787 " scattering approximation is assumed to apply).")));
15792 "RT4 validation test.\n"
15794 "Executes test case testc shipped with PolRadTran/RT4 code (but uses\n"
15795 "data files converted to arts-xml). Output written to (xml-)file.\n"),
15800 GOUT_DESC(
"RT4 testc calculation results."),
15804 GIN_DEFAULT(
"artscomponents/polradtran/testdata/"),
15805 GIN_DESC(
"Folder containing arts-xml converted test case input data.")));
15808 NAME(
"rte_losGeometricFromRtePosToRtePos2"),
15810 "The geometric line-of-sight between two points.\n"
15812 "The method sets *rte_los* to the line-of-sight, at *rte_pos*,\n"
15813 "that matches the geometrical propagation path between *rte_pos*\n"
15814 "and *rte_pos2*.\n"
15816 "The standard case should be that *rte_pos2* corresponds to a\n"
15817 "transmitter, and *rte_pos* to the receiver/sensor.\n"),
15823 IN(
"atmosphere_dim",
15836 DESCRIPTION(
"Sets *rte_los* to the given angles.\n"
15838 "The azimuth angle is ignored for 1D and 2D.\n"),
15844 IN(
"atmosphere_dim"),
15848 GIN_DESC(
"Zenith angle of sensor line-of-sight.",
15849 "Azimuth angle of sensor line-of-sight.")));
15852 NAME(
"rte_posSet"),
15854 "Sets *rte_pos* to the given co-ordinates.\n"
15856 "The longitude is ignored for 1D and 2D, and the latitude is also \n"
15857 "ignored for 1D.\n"),
15863 IN(
"atmosphere_dim"),
15864 GIN(
"z",
"lat",
"lon"),
15865 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric"),
15867 GIN_DESC(
"Geometrical altitude of sensor position.",
15868 "Latitude of sensor position.",
15869 "Longitude of sensor position.")));
15872 NAME(
"rte_pos_losMoveToStartOfPpath"),
15874 "Sets *rte_pos* and *rte_los* to values for last point in *ppath*.\n"
15876 "For example, if the propagation path intersects with the surface,\n"
15877 "this method gives you the position and angle of *ppath* at the\n"
15880 OUT(
"rte_pos",
"rte_los"),
15884 IN(
"atmosphere_dim",
"ppath"),
15892 NAME(
"rtp_nlteFromRaw"),
15901 IN(
"nlte_level_identifiers",
15902 "nlte_vibrational_energies"),
15906 GIN_DESC(
"Vibrational data [nlevels]")));
15909 NAME(
"ScatElementsPndAndScatAdd"),
15911 "Adds single scattering data and particle number density for\n"
15912 "individual scattering elements.\n"
15914 "The methods reads the specified files and appends the obtained data\n"
15915 "to *scat_data* and *pnd_field_raw*. Scattering data is appended to\n"
15916 "the current last existing scattering species in *scat_data*.\n"),
15917 AUTHORS(
"Claudia Emde, Jana Mendrok"),
15918 OUT(
"scat_data_raw",
"pnd_field_raw"),
15922 IN(
"scat_data_raw",
"pnd_field_raw",
"atmosphere_dim"),
15923 GIN(
"scat_data_files",
"pnd_field_files"),
15924 GIN_TYPE(
"ArrayOfString",
"ArrayOfString"),
15926 GIN_DESC(
"List of names of single scattering data files.",
15927 "List of names of the corresponding pnd_field files.")));
15930 NAME(
"ScatElementsSelect"),
15932 "Allows to limit considered scattering elements according to size.\n"
15934 "Scattering elements of a specified scattering species are removed\n"
15935 "from *scat_data_raw* and *scat_meta*, i.e. removed from further\n"
15936 "calculations, if their particle size exceeds the specified limits.\n"
15937 "Specification of the scattering species is done by name matching the\n"
15938 "scattering species name part of *scat_species* tag.\n"
15939 "As size parameter, all size parameters reported by the meta data\n"
15940 "can be used (see *scat_meta_single* for offered parameters and\n"
15941 "their naming).\n"),
15942 AUTHORS(
"Daniel Kreyling, Oliver Lemke, Jana Mendrok"),
15943 OUT(
"scat_data_raw",
"scat_meta"),
15947 IN(
"scat_data_raw",
"scat_meta",
"scat_species"),
15948 GIN(
"species",
"sizeparam",
"sizemin",
"sizemax",
"tolerance",
"delim"),
15949 GIN_TYPE(
"String",
"String",
"Numeric",
"Numeric",
"Numeric",
"String"),
15951 GIN_DESC(
"Species on which to apply size selection.",
15952 "Size parameter to apply for size selection.",
15953 "Minimum size [m] of the scattering elements to consider",
15954 "Maximum size [m] of the scattering elements to consider (if "
15955 "negative, no max. limitation is applied).",
15956 "Relative numerical tolerance of size limit values.",
15957 "Delimiter string of *scat_species* elements.")));
15960 NAME(
"ScatElementsToabs_speciesAdd"),
15962 "Appends scattering elements to *abs_species* including reading\n"
15963 "single scattering data and corresponding pnd field.\n"
15965 "The methods reads the specified single scattering and pnd_field\n"
15966 "data of individual scattering elements and appends the obtained data\n"
15967 "to *scat_data* (appending to its last scattering species) and\n"
15968 "*vmr_field_raw*. Per scattering element, it also appends one\n"
15969 "instance of species 'particles' to *abs_species*.\n"),
15971 OUT(
"scat_data_raw",
15974 "propmat_clearsky_agenda_checked",
15975 "abs_xsec_agenda_checked"),
15979 IN(
"scat_data_raw",
15982 "propmat_clearsky_agenda_checked",
15983 "abs_xsec_agenda_checked",
15986 GIN(
"scat_data_files",
"pnd_field_files"),
15987 GIN_TYPE(
"ArrayOfString",
"ArrayOfString"),
15989 GIN_DESC(
"List of names of single scattering data files.",
15990 "List of names of the corresponding pnd_field files.")));
15993 NAME(
"ScatSpeciesExtendTemperature"),
15995 "Extends valid temperature range of single scattering data.\n"
15997 "The method allows to extend the temperature range of given single\n"
15998 "scattering data by duplicating optical property data at the low\n"
15999 "and/or high limits of the associated temperature grid. *T_low* and\n"
16000 "*T_high* specify the temperature grid points that are added.\n"
16001 "Extension is only performed if *T_low* is lower and *T_high* is\n"
16002 "higher than the original lowest and highest temperatures,\n"
16003 "respectively, and if the original data contains more than one\n"
16004 "temperature grid point (i.e., when not assumed constant anyways).\n"
16006 "The method is thought, e.g., for atmospheric ice falling into\n"
16007 "atmospheric layers with temperatures above the melting point of\n"
16008 "ice, where ambient and particle temperature deviate (as long as\n"
16009 "frozen the ice temperature remains at the melting point\n"
16010 "temperature). It is not internally checked, whether the original\n"
16011 "data includes the melting point.\n"
16012 "The method can be used in a wider sense. However, it remains in the\n"
16013 "responsibility of the user to apply the method in a meaningful\n"
16014 "sense and on meaningful single scattering data.\n"
16016 "The temperature extension is applied on all scattering elements of\n"
16017 "a scattering species. If *scat_species* is defined, *species* can\n"
16018 "be used to select the species on which the extension shall be\n"
16019 "applied comparing *species* with the scattering species name part\n"
16020 "of *scat_species*. If no *species* is specified, the method is\n"
16021 "applied on the current last existing scattering species in\n"
16022 "*scat_data*. Through the latter the method can be applied for cases\n"
16023 "when *scat_species* is not defined (e.g. when *pnd_field* data is\n"
16024 "created externally instead of from hydrometeor fields \n"),
16026 OUT(
"scat_data_raw"),
16030 IN(
"scat_data_raw",
"scat_species"),
16031 GIN(
"species",
"scat_species_delim",
"T_low",
"T_high"),
16032 GIN_TYPE(
"String",
"String",
"Numeric",
"Numeric"),
16035 "Scattering species to act on (see WSM description for details).",
16036 "Delimiter string of *scat_species* elements.",
16037 "Temperature grid extension point at low temperature limit.",
16038 "Temperature grid extension point at high temperature limit.")));
16041 NAME(
"ScatSpeciesInit"),
16043 "Initializes the scattering species related data variables.\n"
16045 "This method initializes the *scat_species* WSV, the variables that\n"
16046 "will hold the raw optical properties and the raw particle number\n"
16047 "distributions of the scattering elements (*scat_data_raw* and\n"
16048 "*pnd_field_raw*, respectively) as well as the one holding the meta\n"
16049 "information about the scattering elements (*scat_meta*).\n"
16051 "This method has to be executed before WSM reading/adding to the\n"
16052 "said variable, e.g. before *ScatSpeciesPndAndScatAdd*.\n"),
16054 OUT(
"scat_species",
16057 "scat_data_checked",
16070 NAME(
"ScatSpeciesMerge"),
16072 "Merges single scattering data of all scattering elements into one\n"
16073 "element of bulk properties.\n"
16075 "Before entering the scattering solver, this method prepares the\n"
16076 "effective bulk single scattering properties of all scattering\n"
16077 "elements. Done by calculating the particle number density weighted\n"
16078 "sum of the single scattering properties of all scattering elements\n"
16079 "per pressure level. Accordingly, *pnd_field* is resized to\n"
16080 "[np, np, 1, 1], where np is the number of pressure levels inside\n"
16081 "the cloudbox. The diagonal elements of the new *pnd_field* are set\n"
16082 "to 1, all others to 0. *scat_data* is resized to np. Each new\n"
16083 "scattering element represents the weighted sum of all particles at\n"
16084 "one presssure level.\n"
16086 "The method also adapts *scat_species* and *scat_meta* such that\n"
16087 "they remain consistent with *pnd_field* and can pass\n"
16088 "*cloudbox_checkedCalc*.\n"
16090 "The method is suggested to be called directly after\n"
16091 "*pnd_fieldCalcFromParticleBulkProps* (but also after\n"
16092 "*cloudbox_checkedCalc*).\n"
16093 "Its purpose is to speed up the scattering calculations.\n"
16095 "This is an experimental method currently only working for limited\n"
16096 "cases. All scattering elements must be of the same ptype and must\n"
16097 "share the same *f_grid*, *za_grid*, and *aa_grid*. That is, the\n"
16098 "scattering matrix, extinction matrix, and absorption vector of all\n"
16099 "scattering elements must have the same dimensions. No interpolation\n"
16100 "(apart from temperature) is performed.\n"
16102 "This method can only be used with a 1D atmosphere.\n"),
16108 "cloudbox_checked"),
16116 "cloudbox_checked",
16129 NAME(
"ScatSpeciesPndAndScatAdd"),
16131 "Adds single scattering data and particle number densities for one\n"
16132 "scattering species.\n"
16134 "The WSV *pnd_field_raw* containing particle number densities for\n"
16135 "all scattering species can be generated outside ARTS, for example\n"
16136 "by using PyARTS or atmlab. This method reads this data as well as\n"
16137 "its corresponding single scattering data, which is added as a new\n"
16138 "scattering species to *scat_data*.\n"
16139 "This method needs as input an ArrayOfString holding the filenames\n"
16140 "of the single scattering data for each scattering element and a\n"
16141 "file containing the corresponding *pnd_field_raw*. In contrast to\n"
16142 "the scattering data, the pnd-fields are stored in a single XML-file\n"
16143 "containing an ArrayofGriddedField3, i.e. holding the pnd-field data\n"
16144 "of all scattering elements.\n"
16146 "Important note:\n"
16147 "The order of the filenames for the scattering data files has to\n"
16148 "correspond to the order of the pnd-fields, stored in the variable\n"
16149 "*pnd_field_raw*.\n"),
16150 AUTHORS(
"Claudia Emde, Jana Mendrok"),
16151 OUT(
"scat_data_raw",
"pnd_field_raw"),
16155 IN(
"scat_data_raw",
"pnd_field_raw",
"atmosphere_dim"),
16156 GIN(
"scat_data_files",
"pnd_fieldarray_file"),
16157 GIN_TYPE(
"ArrayOfString",
"String"),
16160 "Array of names of files containing the single scattering data.",
16161 "Name of file holding the corresponding array of pnd_field data.")));
16164 NAME(
"ScatSpeciesScatAndMetaRead"),
16166 "Reads single scattering data and scattering meta data for one\n"
16167 "scattering species.\n"
16169 "This method takes a string array as input containing the location\n"
16170 "(path and filename) of the single scattering data. Location of\n"
16171 "corresponding scattering meta data is derived applying a naming\n"
16172 "convention: ending '.xml*' is replaced by '.meta.xml' (search for\n"
16173 "zipped files is done automatically).\n"
16175 "All scattering elements read in one call of the method are assigned\n"
16176 "to one and the same scattering species. That is, reading in data for\n"
16177 "a bunch of scattering species can be realized by multiple call of\n"
16178 "this method. Assignment to scattering species is in the order of the\n"
16179 "calls (i.e., first method call reads data for first *scat_species*\n"
16180 "entry, second call for second scat_species entry and so on).\n"
16181 "Note that no two scattering elements of the same scattering species\n"
16182 "are allowed to be equal in size*\n"
16184 "Important note:\n"
16185 "The order of the filenames for the single scattering data files has to\n"
16186 "exactly correspond to the order of the scattering meta data files.\n"),
16187 AUTHORS(
"Daniel Kreyling, Oliver Lemke, Jana Mendrok"),
16188 OUT(
"scat_data_raw",
"scat_meta"),
16192 IN(
"scat_data_raw",
"scat_meta"),
16193 GIN(
"scat_data_files"),
16196 GIN_DESC(
"Array of single scattering data file names.")));
16199 NAME(
"scat_data_singleTmatrix"),
16201 "A basic interface to Mishchenko's T-matrix code linked to ARTS.\n"
16203 "The method performs a T-matrix calculation for a single scattering\n"
16204 "element, i.e. a combination of particle shape, size, aspect ratio\n"
16205 "and orientation.\n"
16207 "Particle shape (*shape*) has two options:\n"
16208 " \"spheroidal\" and \"cylindrical\"\n"
16210 "Particle size (*diameter_volume_equ*) is given as the equivalent\n"
16211 "volume sphere diameter. That is, the diameter obtained if all the\n"
16212 "particle's material is rearranged into a (solid) sphere.\n"
16214 "Particle aspect ratio ar (*aspect_ratio*) is a numeric value, defined\n"
16215 "according to Mishchenko's definition as ratio of horizontal axis a to\n"
16216 "vertical (rotational) axis b: ar=a/b. That is, oblates have ar>1,\n"
16218 "Perfect spheres (spheroidals with ar=1) can trigger numerical issues.\n"
16219 "To avoid these, we internally increase their aspect ratio by 1e-6,\n"
16220 "i.e. turning perfect spheres into very light oblates.\n"
16222 "Particle type (*ptype*) has two options:\n"
16223 " \"totally_random\" and \"azimuthally_random\"\n"
16224 "For totally randomly oriented particles, *data_aa_grid* is not taken\n"
16225 "into account (but a Vector type container needs to be passed).\n"
16227 "For further information on how aspect ratio and the different shapes\n"
16228 "and orientations are defined, see the documentation of the T-matrix\n"
16229 "code found http://www.giss.nasa.gov/staff/mmishchenko/t_matrix.html\n"
16231 "Regarding *ndgs*, we refer to the this comment from the documentation:\n"
16232 " \"Parameter controlling the number of division points\n"
16233 " in computing integrals over the particle surface.\n"
16234 " For compact particles, the recommended value is 2.\n"
16235 " For highly aspherical particles larger values (3, 4,...)\n"
16236 " may be necessary to obtain convergence.\n"
16237 " The code does not check convergence over this parameter.\n"
16238 " Therefore, control comparisons of results obtained with\n"
16239 " different NDGS-values are recommended.\"\n"),
16240 AUTHORS(
"Johan Strandgren",
"Patrick Eriksson"),
16241 OUT(
"scat_data_single",
"scat_meta_single"),
16245 IN(
"complex_refr_index"),
16247 "diameter_volume_equ",
16284 "Set by user, unknown source.",
16288 GIN_DESC(
"Particle shape. Options listed above.",
16289 "Particle volume equivalent diameter [m]. See defintion above.",
16290 "Particle aspect ratio.",
16291 "Particle mass. This information is just included in the meta"
16292 " data, and does not affect the T-matrix calculations.",
16293 "Particle type/orientation. Options listed above.",
16294 "Frequency grid of the scattering data to be calculated.",
16295 "Temperature grid of the scattering data to be calculated.",
16296 "Zenith angle grid of the scattering data to be calculated.",
16297 "Azimuth angle grid of the scattering data to be calculated.",
16298 "Accuracy of the computations.",
16299 "String describing the source of *complex_refr_index*, for"
16300 " inclusion in meta data.",
16301 "See above. So far only applied for random orientation.",
16302 "Continue even if individual T-matrix calculations fail. "
16303 "Respective scattering element data will be NAN.",
16304 "Suppress print output from tmatrix fortran code.")));
16357 NAME(
"scat_data_checkedCalc"),
16359 "Checks dimensions, grids and single scattering properties of all\n"
16360 "scattering elements in *scat_data*.\n"
16362 "Dimension and grid equirements:\n"
16363 "- The scattering element's f_grid is either identical to *f_grid* or\n"
16364 " of dimension 1.\n"
16365 "- In the latter case, the scattering element's f_grid value must\n"
16366 " not deviate from any of the *f_grid* values by more than a\n"
16367 " fraction of *dfrel_threshold*.\n"
16368 "- The frequency dimension of pha_mat_data, ext_mat_data, and\n"
16369 " abs_vec_data is either equal to the scattering element's f_grid\n"
16371 "- The temperature dimension of pha_mat_data, ext_mat_data, and\n"
16372 " abs_vec_data is either equal to the scattering element's T_grid\n"
16374 "- The temperature dimension of ext_mat_data, and abs_vec_data is\n"
16377 "The single scattering property contents are checked using\n"
16378 "*scat_dataCheck*. For details, see there. The depth of these checks\n"
16379 "and their rigour can adapted (see description of parameters\n"
16380 "*check_level* and *sca_mat_threshold* in *scat_dataCheck*) or can\n"
16381 "be skipped entirely (setting *check_level* to 'none').\n"
16382 "NOTE: These test shall only be skipped when one is confident that\n"
16383 "the data is correct, e.g. by having run *scat_dataCheck* on the set\n"
16384 "of data before, e.g. in a separate ARTS run.\n"),
16386 OUT(
"scat_data_checked"),
16390 IN(
"scat_data",
"f_grid"),
16391 GIN(
"dfrel_threshold",
"check_level",
"sca_mat_threshold"),
16392 GIN_TYPE(
"Numeric",
"String",
"Numeric"),
16394 GIN_DESC(
"Maximum relative frequency deviation between (single entry)"
16395 " scattering element f_grid values and the RT calculation's"
16397 "See *check_level* in *scat_dataCheck*.",
16398 "See *sca_mat_threshold* in *scat_dataCheck*.")));
16401 NAME(
"scat_data_monoCalc"),
16403 "Interpolates *scat_data* by frequency to give *scat_data_mono*.\n"),
16405 OUT(
"scat_data_mono"),
16409 IN(
"scat_data",
"f_grid",
"f_index"),
16416 NAME(
"scat_data_monoExtract"),
16418 "Extracts data at *f_index* from *scat_data* to give *scat_data_mono*.\n"),
16420 OUT(
"scat_data_mono"),
16424 IN(
"scat_data",
"f_index"),
16431 NAME(
"scat_dataCalc"),
16433 "Prepares *scat_data* for the scattering solver.\n"
16435 "Derives single scattering data for the frequencies given by\n"
16436 "*f_grid* by interpolation from *scat_data_raw*. *f_grid* should be\n"
16437 "the actual WSV *f_grid* or a single-element Vector.\n"),
16443 IN(
"scat_data_raw",
"f_grid"),
16444 GIN(
"interp_order"),
16447 GIN_DESC(
"Interpolation order.")));
16450 NAME(
"scat_dataCheck"),
16452 "Method for checking the validity and consistency of the single\n"
16453 "scattering properties in *scat_data*.\n"
16455 "It checks that *scat_data* does not contain any invalid values,\n"
16456 "that is any NaN elements in K, Z, or a or any negative values in\n"
16457 "the 'scalar' properties K11, Z11, and a1.\n"
16459 "When *check_type* is 'all', it is furthermore checked that the\n"
16460 "scattering matrix is properly normalized, that is that the solid\n"
16461 "sphere integrated scattering matrix (int_Z11), which is supposed to\n"
16462 "be normalized to the scattering cross section, is sufficiently\n"
16463 "consistent with the scattering cross section (C_sca) derived from\n"
16464 "the difference of extinction (K11) and absorption (a1):\n"
16465 "int_z11 ~ C_sca = K11-a1.\n"
16466 "Sufficient consistency is defined by the maximum allowed deviation\n"
16467 "in single scattering albedo, *sca_mat_threshold*, testing for\n"
16468 " ( <int_Z11>/<C_sca>-1. ) * ( <C_sca>/<K11> ) <= sca_mat_threshold.\n"
16469 "The check is skipped if *check_type* is 'sane'.\n"),
16470 AUTHORS(
"Claudia Emde",
"Jana Mendrok"),
16476 GIN(
"check_type",
"sca_mat_threshold"),
16479 GIN_DESC(
"The level of checks to apply on scat_data ('sane' or 'all';"
16481 "Threshold for allowed albedo deviation (see above).")));
16484 NAME(
"scat_dataReduceT"),
16486 "Reduces temperature dimension of single scattering to a single entry.\n"
16489 "Derives single scattering data for the frequencies given by\n"
16490 "*f_grid* by interpolation from *scat_data*. *f_grid* should be\n"
16491 "the actual WSV *f_grid* or a single-element Vector.\n"),
16502 "sca_mat_threshold"),
16503 GIN_TYPE(
"Index",
"Numeric",
"Index",
"Index",
"Numeric"),
16505 GIN_DESC(
"Apply on *scat_data* from scattering species of this index"
16507 "Temperature to interpolate *scat_data* to.",
16508 "Interpolation order.",
16509 "Flag whether to apply temperture reduction on phase matrix"
16510 " data only (1) or on all single scattering properties (0).",
16511 "Threshold for allowed albedo deviation.")));
16514 NAME(
"ScatSpeciesSizeMassInfo"),
16516 "Derives size and mass information for a scattering species."
16518 "This method assumes that the mass-size relationship can described\n"
16519 "by *scat_species_a* and *scat_species_b*. See documentation of \n"
16520 "*scat_species_a* for details.\n"
16522 "The quantity to be used as size descriptor is here denoted as x, and\n"
16523 "is selected by setting *x_unit*. The options are:\n"
16524 " \"dveq\" : The size grid is set to scat_meta.diameter_volume_equ\n"
16525 " \"dmax\" : The size grid is set to scat_meta.diameter_max\n"
16526 " \"area\" : The size grid is set to scat_meta.diameter_area_equ_aerodynamical\n"
16527 " \"mass\" : The size grid is set to scat_meta.mass\n"
16528 "This selection determines *scat_species_x*.\n"
16530 "The parameters *scat_species_a* and *scat_species_b* are determined by\n"
16531 "a numeric fit between *scat_species_x* and corresponding masses in\n"
16532 "*scat_meta*. This fit is performed over sizes inside the range\n"
16533 "[x_fit_start,x_fit_end]. This range is allowed to be broader than\n"
16534 "the coverage of *scat_species_x*. There must be at least two sizes\n"
16535 "inside [x_fit_start,x_fit_end].\n"),
16536 AUTHORS(
"Manfred Brath",
"Jana Mendrok",
"Patrick Eriksson"),
16537 OUT(
"scat_species_x",
"scat_species_a",
"scat_species_b"),
16542 GIN(
"species_index",
"x_unit",
"x_fit_start",
"x_fit_end",
"do_only_x"),
16543 GIN_TYPE(
"Index",
"String",
"Numeric",
"Numeric",
"Index"),
16545 GIN_DESC(
"Take data from scattering species of this index (0-based) in"
16547 "Unit for size grid, allowed options listed above.",
16548 "Smallest size to consider in fit to determine a and b.",
16549 "Largest size to consider in fit to determine a and b.",
16550 "A flag to deactivate calculation of a and b, to possibly "
16551 "save some time. The a and b parameters are then set to -1."
16552 "Default is to calculate a and b.")));
16555 NAME(
"particle_fieldCleanup"),
16557 "Removes unrealistically small or erroneous data from particle fields.\n"
16559 "This WSM checks if the input particle field (e.g.\n"
16560 "*particle_bulkprop_field*) contains values\n"
16561 "smaller than the given *threshold*. In this case, these values will\n"
16562 "be set to zero.\n"
16564 "The method should be applied if the particle fields contain\n"
16565 "unrealistically small or erroneous data (NWP/GCM model data, e.g.\n"
16566 "from the Chevallierl_91l sets, often contain very small or even\n"
16567 "negative values, which are numerical artefacts rather than physical\n"
16569 "For the scat_species_XXX_fields, it needs to be applied separately\n"
16570 "per Tensor4 type field collection. This allows to use different\n"
16571 "thresholds for the different types of fields (not for the different\n"
16572 "scattering species, though).\n"
16574 "*particle_fieldCleanup* shall be called after generation of the\n"
16575 "atmopheric fields.\n"),
16578 GOUT(
"particle_field_out"),
16580 GOUT_DESC(
"A particle property field, e.g. *particle_bulkprop_field*"),
16582 GIN(
"particle_field_in",
"threshold"),
16585 GIN_DESC(
"A particle property field, e.g. *particle_bulkprop_field*",
16586 "Threshold below which the *particle_field* values are set to"
16592 "Method to select some elements from one array and copy them to\n"
16593 "a new array. (Works also for vectors.)\n"
16595 "This works also for higher dimensional objects, where the selection is\n"
16596 "always performed in the first dimension.\n"
16598 "If needleindexes is set to [-1], all elements are copied."
16602 "Select(y,x,[0,3])\n"
16604 "will select the first and fourth row of matrix x and copy them to the\n"
16605 "output matrix y.\n"
16607 "Note that it is even safe to use this method if needles and haystack\n"
16608 "are the same variable.\n"),
16612 GOUT_TYPE(ARRAY_GROUPS +
", Vector, Matrix, Sparse"),
16613 GOUT_DESC(
"Selected elements. Must have the same variable type as "
16616 GIN(
"haystack",
"needleindexes"),
16617 GIN_TYPE(ARRAY_GROUPS +
", Vector, Matrix, Sparse",
"ArrayOfIndex"),
16619 GIN_DESC(
"Variable to select from. May be the same variable as needles.",
16620 "The elements to select (zero based indexing, as always.)"),
16626 NAME(
"sensor_checkedCalc"),
16628 "Checks consistency of the sensor variables.\n"
16630 "The following WSVs are examined: *f_grid*, *sensor_pos*, *sensor_los*,\n"
16631 "*transmitter_pos*, *mblock_dlos_grid*, *antenna_dim*,\n"
16632 "*sensor_response*, *sensor_response_f*, *sensor_response_pol*,\n"
16633 "and *sensor_response_dlos*.\n"
16635 "If any of these variables are changed, then this method shall be\n"
16636 "called again (no automatic check that this is fulfilled!).\n"
16638 "The main tests are that dimensions of sensor variables agree\n"
16639 "with other settings, e.g., the size of f_grid, atmosphere_dim,\n"
16640 "stokes_dim, etc.\n"
16642 "If any test fails, there is an error. Otherwise, *sensor_checked*\n"
16645 OUT(
"sensor_checked"),
16649 IN(
"atmosphere_dim",
16655 "mblock_dlos_grid",
16657 "sensor_response_f",
16658 "sensor_response_pol",
16659 "sensor_response_dlos"),
16668 "Sets sensor WSVs to obtain monochromatic pencil beam values.\n"
16670 "The variables are set as follows:\n"
16671 " mblock_dlos_grid : One row with zero(s).\n"
16672 " sensor_response* : As returned by *sensor_responseInit*.\n"),
16674 OUT(
"sensor_response",
16675 "sensor_response_f",
16676 "sensor_response_pol",
16677 "sensor_response_dlos",
16678 "sensor_response_f_grid",
16679 "sensor_response_pol_grid",
16680 "sensor_response_dlos_grid",
16681 "mblock_dlos_grid"),
16685 IN(
"stokes_dim",
"f_grid"),
16692 NAME(
"sensor_losGeometricFromSensorPosToOtherPositions"),
16694 "The geometric line-of-sight between pair of points.\n"
16696 "The method sets *sensor_los* to the line-of-sights, that matches the\n"
16697 "geometrical propagation path from *sensor_pos* to *target_pos*. This\n"
16698 "is done for pair of positions, i.e. the two matrices shall have the same\n"
16699 "number of rows. The number of columns in *target_pos* shall be two for\n"
16700 "1D and 2D and two for 3D, exactly as for *rte_pos2*.\n"
16702 "See also *rte_losGeometricFromRtePosToRtePos2*. This method calls that\n"
16703 "method for each pair of positions, where values in *sensor_pos* matches\n"
16704 "*rte_pos and values in *target_pos* matches *rte_pos2*.\n"),
16710 IN(
"atmosphere_dim",
16718 GIN_DESC(
"Target position, for each position in *sensor_pos*.")));
16721 NAME(
"sensor_responseAntenna"),
16723 "Includes response of the antenna.\n"
16725 "The function returns the sensor response matrix after the antenna\n"
16726 "characteristics have been included.\n"
16728 "The function handles \"multi-beam\" cases where the polarisation\n"
16729 "coordinate system is the same for all beams.\n"
16731 "See *antenna_dim*, *antenna_dlos* and *antenna_response* for\n"
16732 "details on how to specify the antenna response.\n"
16734 "The text below refers to *mblock_dlos_grid* despite it is not an\n"
16735 "input to the method. The method instead uses *sensor_response_dlos_grid*\n"
16736 "but the values in this WSV are likely coming from *mblock_dlos_grid*.\n"
16738 "One dimensional antenna patterns are handled as other response\n"
16739 "functions. That is, both antenna response and radiances are treated\n"
16740 "as piece-wise linear functions, and the pencil beam calculations must\n"
16741 "cover the full sensor response (i.e. *mblock_dlos_grid* must be\n"
16742 "sufficiently broad).\n"
16744 "There exist different options for two dimensional (2D) antenna patterns,\n"
16745 "see below (if 2D, the GIN *option_2d* must be set, the default results\n"
16746 "in an error). A normalisation is always applied for 2D antennas (i.e.\n"
16747 "*sensor-norm* is ignored).\n"
16749 "\"interp_response\""
16750 "For this option, each direction defined by *mblock_dlos_grid* is\n"
16751 "considered to represent the same size in terms of solid beam angle,\n"
16752 "and the antenna pattern is interpolated to these directions. There is\n"
16753 "no check on how well *mblock_dlos_grid* covers the antenna response.\n"
16754 "The response is treated to be zero outside the ranges of its anular\n"
16758 "This option is more similar to the 1D case. The radiances are treated\n"
16759 "as a bi-linear function, but the antenna response is treated as step-\n"
16760 "wise constant function (in contrast to 1D). For this option\n"
16761 "*mblock_dlos_grid* must match a combination of zenith and azimuth\n"
16762 "grids, and this for a particular order. If the zenith and azimuth\n"
16763 "grids have 3 and 2 values, respectively, the order shall be:\n"
16764 " [(za1,aa1); (za2,aa1); (za3,aa1); (za1,aa2); (za2,aa2); (za3,aa2) ]\n"
16765 "Both these grids must be strictly increasing and as for 1D must cover\n"
16766 "the antenna response completely.\n"),
16767 AUTHORS(
"Patrick Eriksson",
"Mattias Ekstrom"),
16768 OUT(
"sensor_response",
16769 "sensor_response_f",
16770 "sensor_response_pol",
16771 "sensor_response_dlos",
16772 "sensor_response_dlos_grid"),
16776 IN(
"sensor_response",
16777 "sensor_response_f",
16778 "sensor_response_pol",
16779 "sensor_response_dlos",
16780 "sensor_response_f_grid",
16781 "sensor_response_pol_grid",
16782 "sensor_response_dlos_grid",
16786 "antenna_response",
16788 GIN(
"option_2d" ),
16791 GIN_DESC(
"Calculation option for 2D antenna cases. See above for details." )));
16794 NAME(
"sensor_responseBackend"),
16796 "Includes response of the backend (spectrometer).\n"
16798 "The function returns the sensor response matrix after the backend\n"
16799 "characteristics have been included.\n"
16801 "See *f_backend*, *backend_channel_response* and *sensor_norm* for\n"
16802 "details on how to specify the backend response.\n"),
16803 AUTHORS(
"Mattias Ekstrom",
"Patrick Eriksson"),
16804 OUT(
"sensor_response",
16805 "sensor_response_f",
16806 "sensor_response_pol",
16807 "sensor_response_dlos",
16808 "sensor_response_f_grid"),
16812 IN(
"sensor_response",
16813 "sensor_response_f",
16814 "sensor_response_pol",
16815 "sensor_response_dlos",
16816 "sensor_response_f_grid",
16817 "sensor_response_pol_grid",
16818 "sensor_response_dlos_grid",
16820 "backend_channel_response",
16828 NAME(
"sensor_responseBackendFrequencySwitching"),
16830 "Frequency switching for a pure SSB reciever.\n"
16832 "This function can be used for simulation of frequency switching.\n"
16833 "That is, when the final spectrum is the difference of two spectra\n"
16834 "shifted in frequency. The switching is performed by the LO, but\n"
16835 "for a pure singel sideband reciever this is most easily simulated\n"
16836 "by instead shifting the backend, as done here.\n"
16838 "A strightforward frequency switching is modelled (no folding)\n"
16839 "The channel positions for the first measurement cycle are\n"
16840 "f_backend+df1, and for the second f_backend+df2. The first\n"
16841 "measurement cycle is given the negive weight. That is, the output\n"
16842 "is the spectrum for cycle2 minus the spectrum for cycle1.\n"
16843 "Output frequency grids are set to *f_backend*.\n"
16845 "Use *sensor_responseFrequencySwitching* for double sideband cases.\n"
16847 "The method has the same general functionality as, and can replace,\n"
16848 "*sensor_responseBackend*.\n"),
16850 OUT(
"sensor_response",
16851 "sensor_response_f",
16852 "sensor_response_pol",
16853 "sensor_response_dlos",
16854 "sensor_response_f_grid"),
16858 IN(
"sensor_response",
16859 "sensor_response_f",
16860 "sensor_response_pol",
16861 "sensor_response_dlos",
16862 "sensor_response_f_grid",
16863 "sensor_response_pol_grid",
16864 "sensor_response_dlos_grid",
16866 "backend_channel_response",
16871 GIN_DESC(
"Frequency throw for cycle1.",
"Frequency throw for cycle2.")));
16874 NAME(
"sensor_responseBeamSwitching"),
16876 "Simulation of \"beam switching\".\n"
16878 "The measurement procedure is based on taking the difference between\n"
16879 "two spectra measured in different directions, and the calculation\n"
16880 "set-up must treat exactly two observation directions.\n"
16882 "The returned spectrum is y = w1*y + w2*y2, where y1 and w1 are the\n"
16883 "spectrum and weight for the first direction, respectively (y2 and\n"
16884 "(w2 defined correspondingly for the second direction).\n"
16886 "Zenith and azimuth angles after beam switching are set to the\n"
16887 "values of the second direction.\n"),
16889 OUT(
"sensor_response",
16890 "sensor_response_f",
16891 "sensor_response_pol",
16892 "sensor_response_dlos",
16893 "sensor_response_dlos_grid"),
16897 IN(
"sensor_response",
16898 "sensor_response_f",
16899 "sensor_response_pol",
16900 "sensor_response_dlos",
16901 "sensor_response_f_grid",
16902 "sensor_response_pol_grid",
16903 "sensor_response_dlos_grid"),
16907 GIN_DESC(
"Weight for values from first viewing direction.",
16908 "Weight for values from second viewing direction.")));
16911 NAME(
"sensor_responseFillFgrid"),
16913 "Polynomial frequency interpolation of spectra.\n"
16915 "The sensor response methods treat the spectra to be piece-wise linear\n"
16916 "functions. This method is a workaround for making methods handling\n"
16917 "the spectra in a more elaborate way: it generates spectra on a more\n"
16918 "dense grid by polynomial interpolation. The interpolation is not\n"
16919 "done explicitly, it is incorporated into *sensor_response*.\n"
16921 "This method should in general increase the calculation accuracy for\n"
16922 "a given *f_grid*. However, the selection of (original) grid points\n"
16923 "becomes more sensitive when using this method. A poor choice of grid\n"
16924 "points can result in a decreased accuracy, or generation of negative\n"
16925 "radiances. Test calculations indicated that the error easily can\n"
16926 "increase with this method close the edge of *f_grid*, and it could\n"
16927 "be wise to make *f_grid* a bit wider than actually necessary to avoid\n"
16930 "The method shall be inserted before the antenna stage. That is, this\n"
16931 "method shall normally be called directly after *sensor_responseInit*.\n"
16933 "Between each neighbouring points of *f_grid*, this method adds\n"
16934 "*nfill* grid points. The polynomial order of the interpolation is\n"
16937 OUT(
"sensor_response",
16938 "sensor_response_f",
16939 "sensor_response_pol",
16940 "sensor_response_dlos",
16941 "sensor_response_f_grid"),
16945 IN(
"sensor_response",
16946 "sensor_response_f",
16947 "sensor_response_pol",
16948 "sensor_response_dlos",
16949 "sensor_response_f_grid",
16950 "sensor_response_pol_grid",
16951 "sensor_response_dlos_grid"),
16952 GIN(
"polyorder",
"nfill"),
16955 GIN_DESC(
"Polynomial order of interpolation",
16956 "Number of points to insert in each gap of f_grid")));
16959 NAME(
"sensor_responseFrequencySwitching"),
16961 "Simulation of \"frequency switching\".\n"
16963 "A general method for frequency switching. The WSM\n"
16964 "*sensor_responseBackendFrequencySwitching* gives a description of\n"
16965 "this observation technique, and is also a more straightforward\n"
16966 " method for pure singel sideband cases.\n"
16968 "It is here assume that *sensor_responseMultiMixerBackend* has been\n"
16969 "used to calculate the spectrum for two LO positions. This method\n"
16970 "calculates the difference between these two spectra, where the\n"
16971 "second spectrum gets weight 1 and the first weight -1 (as in\n"
16972 "*sensor_responseBackendFrequencySwitching*).\n"
16974 "Output frequency grids are taken from the second spectrum.\n"),
16976 OUT(
"sensor_response",
16977 "sensor_response_f",
16978 "sensor_response_pol",
16979 "sensor_response_dlos",
16980 "sensor_response_f_grid"),
16984 IN(
"sensor_response",
16985 "sensor_response_f",
16986 "sensor_response_pol",
16987 "sensor_response_dlos",
16988 "sensor_response_f_grid",
16989 "sensor_response_pol_grid",
16990 "sensor_response_dlos_grid"),
16997 NAME(
"sensor_responseIF2RF"),
16999 "Converts sensor response variables from IF to RF.\n"
17001 "The function converts intermediate frequencies (IF) in\n"
17002 "*sensor_response_f* and *sensor_response_f_grid* to radio\n"
17003 "frequencies (RF). This conversion is needed if the frequency\n"
17004 "translation of a mixer is included and the position of backend\n"
17005 "channels are specified in RF.\n"
17007 "A direct frequency conversion is performed. Values are not\n"
17008 "sorted in any way.\n"),
17010 OUT(
"sensor_response_f",
"sensor_response_f_grid"),
17014 IN(
"sensor_response_f",
"sensor_response_f_grid",
"lo",
"sideband_mode"),
17021 NAME(
"sensor_responseInit"),
17023 "Initialises the variables summarising the sensor response.\n"
17025 "This method sets the variables to match monochromatic pencil beam\n"
17026 "calculations, to be further modified by inclusion of sensor\n"
17027 "characteristics. Use *sensorOff* if pure monochromatic pencil\n"
17028 "beam calculations shall be performed.\n"
17030 "The variables are set as follows:\n"
17031 " sensor_response : Identity matrix, with size matching *f_grid*,\n"
17032 " *stokes_dim* and *mblock_dlos_grid*.\n"
17033 " sensor_response_f : Repeated values of *f_grid*.\n"
17034 " sensor_response_pol : Data matching *stokes_dim*.\n"
17035 " sensor_response_dlos : Repeated values of *mblock_dlos_grid*.\n"
17036 " sensor_response_f_grid : Equal to *f_grid*.\n"
17037 " sensor_response_pol_grid: Set to 1:*stokes_dim*.\n"
17038 " sensor_response_dlos_grid : Equal to *mblock_dlos_grid*.\n"),
17039 AUTHORS(
"Mattias Ekstrom",
"Patrick Eriksson"),
17040 OUT(
"sensor_response",
17041 "sensor_response_f",
17042 "sensor_response_pol",
17043 "sensor_response_dlos",
17044 "sensor_response_f_grid",
17045 "sensor_response_pol_grid",
17046 "sensor_response_dlos_grid"),
17051 "mblock_dlos_grid",
17062 NAME(
"sensor_responseMetMM"),
17064 "Sensor setup for meteorological millimeter instruments.\n"
17066 "This method is handy if you are simulating a passband-type instrument,\n"
17067 "consisting of a few discrete channels.\n"
17069 "For flexibility, the Met-MM system is seperated in two calculation\n"
17070 "steps. To fully use the system, create *f_grid* (and some associated\n"
17071 "variables) by *f_gridMetMM* before calling this method. However, it is\n"
17072 "possible to use this method with any *f_grid*, as long as matching\n"
17073 "*f_backend*, *channel2fgrid_indexes* and *channel2fgrid_weights*\n"
17076 "Each scan sequence is treated as a measurement block. *sensor_pos* is\n"
17077 "set in the standard way. The number of rows in *sensor_pos* determines the\n"
17078 "number of scan sequences that will be simulated. On the other hand,\n"
17079 "*sensor_los* is handled in a special way. All zenith angles must be set\n"
17080 "to 180 deg. For 3D, the given azimuth angles are taken as the direction\n"
17081 "of scanning, where the azimuth angle is defined with respect to North\n"
17082 "in standard manner. For example, if the scanning happens to move from\n"
17083 "SW to NE, the azimuth angle should be set to 45 deg. The angles of the\n"
17084 "scanning sequence are taken from *antenna_dlos*. This WSV is here only\n"
17085 "allowed to have a single column, holding relative zenith angles. For\n"
17086 "3D, the azimuth angles in *antenna_dlos* are hard-coded to zero. As\n"
17087 "zenith angles in *sensor_los* are locked to 180 deg, *antenna_dlos*\n"
17088 "effectively holds the nadir angles. These angles can be both positive or\n"
17089 "negative, where the recommended choice is to operate with negative\n"
17090 "to end up with final zenith angles between 0 and 180 deg.\n"
17092 "The method does not support 2D atmospheres (across-track scanning is\n"
17093 "inconsistent with 2D). For simpler switching between 1D and 3D,\n"
17094 "the argument *mirror_dza* is at hand. It can only be used for 3D.\n"
17095 "If set to true, the zenith angles in *antenna_dlos* are mapped\n"
17096 "to also cover the other side of the swath and the simulations will\n"
17097 "cover both sides of the swath.\n"),
17098 AUTHORS(
"Oliver Lemke",
"Patrick Eriksson"),
17100 "mblock_dlos_grid",
17102 "sensor_response_f",
17103 "sensor_response_pol",
17104 "sensor_response_dlos",
17105 "sensor_response_f_grid",
17106 "sensor_response_pol_grid",
17107 "sensor_response_dlos_grid",
17112 IN(
"atmosphere_dim",
17116 "channel2fgrid_indexes",
17117 "channel2fgrid_weights",
17120 "met_mm_polarisation",
17122 GIN(
"use_antenna",
"mirror_dza"),
17125 GIN_DESC(
"Flag to enable (1) or disable (0) antenna.",
17126 "Flag to include second part of swath (only 3D, see above).")));
17129 NAME(
"sensor_responseMixer"),
17131 "Includes response of the mixer of a heterodyne system.\n"
17133 "The function returns the sensor response matrix after the mixer\n"
17134 "characteristics have been included. Frequency variables are\n"
17135 "converted from radio frequency (RF) to intermediate frequency (IF).\n"
17136 "The returned frequency grid covers the range [0,max_if], where\n"
17137 "max_if is the highest IF covered by the sideband response grid.\n"
17139 "See *lo* and *sideband_response* for details on how to specify the\n"
17140 "mixer response\n"),
17141 AUTHORS(
"Mattias Ekstrom",
"Patrick Eriksson"),
17142 OUT(
"sensor_response",
17143 "sensor_response_f",
17144 "sensor_response_pol",
17145 "sensor_response_dlos",
17146 "sensor_response_f_grid"),
17150 IN(
"sensor_response",
17151 "sensor_response_f",
17152 "sensor_response_pol",
17153 "sensor_response_dlos",
17154 "sensor_response_f_grid",
17155 "sensor_response_pol_grid",
17156 "sensor_response_dlos_grid",
17158 "sideband_response",
17166 NAME(
"sensor_responseMixerBackendPrecalcWeights"),
17168 "Includes pre-calculated response covering mixer and backend.\n"
17170 "This method acts similar to *sensor_responseBackend*, but uses\n"
17171 "pre-calculated weights. These weights can also include the effect\n"
17172 "of mixer and sideband filtering.\n"
17174 "As usual, *f_backend* gives the frequency of the channels. This WSM\n"
17175 "has no direct influence on the result, but at least representative\n"
17176 "values must be set.\n"
17178 "The frequency response is defined using *channel2fgrid_indexes* and\n"
17179 "*channel2fgrid_weights*.\n"
17181 "Both *channel2fgrid_indexes* and *channel2fgrid_weights* are assumed\n"
17182 "to be common for all viewing directions.\n"),
17184 OUT(
"sensor_response",
17185 "sensor_response_f",
17186 "sensor_response_pol",
17187 "sensor_response_dlos",
17188 "sensor_response_f_grid"),
17192 IN(
"sensor_response",
17193 "sensor_response_f",
17194 "sensor_response_pol",
17195 "sensor_response_dlos",
17196 "sensor_response_f_grid",
17197 "sensor_response_pol_grid",
17198 "sensor_response_dlos_grid",
17200 "channel2fgrid_indexes",
17201 "channel2fgrid_weights"),
17208 NAME(
"sensor_responseMultiMixerBackend"),
17210 "Handles mixer and backend parts for an instrument having multiple\n"
17213 "The WSMs *sensor_responseMixer*, *sensor_responseIF2RF* and\n"
17214 "*sensor_responseBackend* are called for each mixer chain, and a\n"
17215 "complete *sensor_response* is assembled. The instrument responses\n"
17216 "are described by *lo_multi*, *sideband_response_multi*,\n"
17217 "*sideband_mode_multi*, *f_backend_multi* and\n"
17218 "*backend_channel_response_multi*. All these WSVs must have same\n"
17219 "vector or array length. As *sensor_responseIF2RF* is called,\n"
17220 "*f_backend_multi* must hold RF (not IF) and output frequencies\n"
17221 "will be in absolute frequency (RF).\n"),
17223 OUT(
"sensor_response",
17224 "sensor_response_f",
17225 "sensor_response_pol",
17226 "sensor_response_dlos",
17227 "sensor_response_f_grid"),
17231 IN(
"sensor_response",
17232 "sensor_response_f",
17233 "sensor_response_pol",
17234 "sensor_response_dlos",
17235 "sensor_response_f_grid",
17236 "sensor_response_pol_grid",
17237 "sensor_response_dlos_grid",
17239 "sideband_response_multi",
17240 "sideband_mode_multi",
17242 "backend_channel_response_multi",
17250 NAME(
"sensor_responsePolarisation"),
17252 "Extraction of non-default polarisation components.\n"
17254 "The default is to output the Stokes elements I, Q, U and V (up to\n"
17255 "*stokes_dim*). This method allows to change the \"polarisation\" of\n"
17256 "the output. Polarisation components to be extracted are selected by\n"
17257 "*instrument_pol*. This method can be applied at any step of the sensor\n"
17260 "The method can only be applied on data for I, Q, U and V. The value\n"
17261 "of *stokes_dim* must be sufficiently large for the selected\n"
17262 "components. For example, I+45 requires that *stokes_dim* is at\n"
17265 "See *instrument_pol* for coding of polarisation states.\n"
17267 "Note that the state of *iy_unit* is considered. This WSV must give\n"
17268 "the actual unit of the data. This as, the extraction of components\n"
17269 "is slightly different if data are radiances or brightness\n"
17270 "temperatures. In practise this means that *iy_unit* (as to be\n"
17271 "applied inside *iy_main_agenda*) must be set before calling this\n"
17274 OUT(
"sensor_response",
17275 "sensor_response_f",
17276 "sensor_response_pol",
17277 "sensor_response_dlos",
17278 "sensor_response_pol_grid"),
17282 IN(
"sensor_response",
17283 "sensor_response_f",
17284 "sensor_response_pol",
17285 "sensor_response_dlos",
17286 "sensor_response_f_grid",
17287 "sensor_response_pol_grid",
17288 "sensor_response_dlos_grid",
17298 NAME(
"sensor_responseStokesRotation"),
17300 "Includes a rotation of the Stokes H and V directions.\n"
17302 "The method applies the rotations implied by *stokes_rotation*.\n"
17303 "See the description of that WSV for details.\n"
17305 "This method does not change the size of *sensor_response*, and\n"
17306 "the auxiliary variables (sensor_response_f etc.) are not changed.\n"
17308 "To apply the method, *stokes_dim* must be >= 3. The complete effect\n"
17309 "of the rotation can not be determibed with lower *stokes_dim*.\n"),
17311 OUT(
"sensor_response"),
17315 IN(
"sensor_response",
17316 "sensor_response_f_grid",
17317 "sensor_response_pol_grid",
17318 "sensor_response_dlos_grid",
17320 "stokes_rotation"),
17327 NAME(
"sensor_responseSimpleAMSU"),
17329 "Simplified sensor setup for an AMSU-type instrument.\n"
17331 "This method allows quick and simple definition of AMSU-type\n"
17332 "sensors. Assumptions:\n"
17334 "1. Pencil beam antenna.\n"
17335 "2. Double sideband receivers.\n"
17336 "3. Sideband mode \"upper\"\n"
17337 "4. The channel response is rectangular.\n"
17339 "Under these assumptions the only inputs needed are the LO positions,\n"
17340 "the offsets from the LO, and the IF bandwidths. They are provieded\n"
17341 "in sensor_description_amsu.\n"),
17345 "mblock_dlos_grid",
17347 "sensor_response_f",
17348 "sensor_response_pol",
17349 "sensor_response_dlos",
17350 "sensor_response_f_grid",
17351 "sensor_response_pol_grid",
17352 "sensor_response_dlos_grid",
17357 IN(
"atmosphere_dim",
"stokes_dim",
"sensor_description_amsu"),
17361 GIN_DESC(
"Desired grid spacing in Hz.")));
17364 NAME(
"sensor_responseGenericAMSU"),
17366 "Simplified sensor setup for an AMSU-type instrument.\n"
17368 "This function is derived from 'sensor_responseSimpleAMSU' \n"
17369 "but is more generalized since the number of passbands in each \n"
17370 "can be in the range from 1 to 4 - in order to correctly simulate\n"
17371 "AMSU-A type sensors \n"
17373 "This method allows quick and simple definition of AMSU-type\n"
17374 "sensors. Assumptions:\n"
17376 "1. Pencil beam antenna.\n"
17377 "2. 1-4 Passband/sidebands per channel.\n"
17378 "3. Sideband mode \"upper\"\n"
17379 "4. The channel response is rectangular.\n"
17381 "Under these assumptions the only inputs needed are the LO positions,\n"
17382 "the offsets from the LO, and the IF bandwidths. They are provided\n"
17383 "in sensor_description_amsu.\n"),
17387 "mblock_dlos_grid",
17389 "sensor_response_f",
17390 "sensor_response_pol",
17391 "sensor_response_dlos",
17392 "sensor_response_f_grid",
17393 "sensor_response_pol_grid",
17394 "sensor_response_dlos_grid",
17399 IN(
"atmosphere_dim",
"stokes_dim",
"sensor_description_amsu"),
17403 GIN_DESC(
"Desired grid spacing in Hz.")));
17406 NAME(
"sensor_responseWMRF"),
17408 "Adds WMRF weights to sensor response.\n"
17410 "This method adds a spectrometer response that has been calculated\n"
17411 "with the weighted mean of representative frequencies (WMRF) method. It\n"
17412 "consists of a set of selected frequencies, and associated weights.\n"),
17414 "Stefan Buehler, based on Patrick Erikssons sensor_responseBackend"),
17415 OUT(
"sensor_response",
17416 "sensor_response_f",
17417 "sensor_response_pol",
17418 "sensor_response_dlos",
17419 "sensor_response_f_grid"),
17423 IN(
"sensor_response",
17424 "sensor_response_f",
17425 "sensor_response_pol",
17426 "sensor_response_dlos",
17427 "sensor_response_f_grid",
17428 "sensor_response_pol_grid",
17429 "sensor_response_dlos_grid",
17439 DESCRIPTION(
"Change the number of threads used by ARTS.\n"),
17463 GIN_DESC(
"Time to sleep for in seconds")));
17467 DESCRIPTION(
"Sleeps until time has been reached.\n"),
17480 NAME(
"SparseSparseMultiply"),
17482 "Multiplies a Sparse with another Sparse, result stored in Sparse.\n"
17484 "Makes the calculation: out = m1 * m2\n"),
17489 GOUT_DESC(
"Product, can be same variable as any of the inputs."),
17494 GIN_DESC(
"Left sparse matrix.",
"Right sparse matrix.")));
17497 NAME(
"SparseMatrixIdentity"),
17499 "Returns a sparse dentity matrix.\n"
17501 "The size of the matrix created is n x n. Default is to return a\n"
17502 "true identity matrix (I), but you can also select another value\n"
17503 "along the diagonal be setting *value*. That is, the output is\n"
17505 AUTHORS(
"Simon Pfreundschuh"),
17514 GIN_DESC(
"Size of the matrix",
"The value along the diagonal.")));
17517 NAME(
"spectral_irradiance_fieldFromSpectralRadianceField"),
17519 "Calculates the spectral irradiance from *spectral_radiance_field* .\n"
17520 "by integrating over the angular grids according to the grids set\n"
17521 "by *AngularGridsSetFluxCalc* \n"
17522 "See *AngularGridsSetFluxCalc to set \n"
17523 "*za_grid, aa_grid, and za_grid_weights*\n"),
17525 OUT(
"spectral_irradiance_field"),
17529 IN(
"spectral_radiance_field",
"za_grid",
"aa_grid",
"za_grid_weights"),
17536 NAME(
"spectral_radiance_fieldClearskyPlaneParallel"),
17538 "Clear-sky radiance field of a plane parallel atmosphere.\n"
17540 "The method assumes a 1D flat planet. Radiances along each direction\n"
17541 "given by *za_grid* are calculated using *ppathPlaneParallel*\n"
17542 "and *iyEmissionStandard*.\n"
17544 "Surface properties are defined by *iy_surface_agenda*, i.e. there is no\n"
17545 "restriction to e.g. specular surfaces.\n"
17547 "Note that the variable *ppath_lmax* is considered, and that it can be\n"
17548 "critical for the accuracy for zenith angles close to 90 degrees. That\n"
17549 "is, using ppath_lmax=-1 is not recommended for this function.\n"
17551 "Information on transmission is also provided by the GOUT *trans_field*.\n"
17552 "For up-welling radiation (scat_za > 90), this variable holds the\n"
17553 "transmission to space, for considered position and propagation direction.\n"
17554 "For down-welling radiation, *trans_field* holds instead the transmission\n"
17555 "down to the surface.\n"),
17557 OUT(
"spectral_radiance_field"),
17558 GOUT(
"trans_field"),
17560 GOUT_DESC(
"Dimensions: [f_grid,p_grid,za_grid]. See further above."),
17561 IN(
"propmat_clearsky_agenda",
17562 "water_p_eq_agenda",
17564 "iy_surface_agenda",
17565 "iy_cloudbox_agenda",
17584 "surface_props_data",
17586 GIN(
"use_parallel_iy"),
17589 GIN_DESC(
"0: Parallelize over zenith angles\n"
17590 "1: Use more memory intensiv iyEmissionStandardParallel*")));
17593 NAME(
"spectral_radiance_fieldCopyCloudboxField"),
17595 "Set *spectral_radiance_field* to be a copy of *cloudbox_field*.\n"
17597 "This method can only be used for 1D atmospheres and if the cloud\n"
17598 "box covers the complete atmosphere. For such case, the two fields\n"
17599 "cover the same atmospheric volume and a direct copying can be made.\n"),
17601 OUT(
"spectral_radiance_field"),
17605 IN(
"atmosphere_dim",
17616 NAME(
"spectral_radiance_fieldExpandCloudboxField"),
17618 "Uses and expands *cloudbox_field* to set *spectral_radiance_field*.\n"
17620 "The method demands that *cloudbox_field* starts at the first pressure\n"
17621 "level (i.e. cloudbox_limits[0] is 0). The method copies *cloudbox_field*\n"
17622 "to fill *spectral_radiance_field* up to the top of the cloudbox.\n"
17624 "To fill the remaning part of *spectral_radiance_field*, clear-sky\n"
17625 "calculations are performed largely in the same maner as done by\n"
17626 "*spectral_radiance_fieldClearskyPlaneParallel*. That is, clear-sky\n"
17627 "calculations are done for the upper part of the atmosphere, assuming\n"
17630 "Note that the cloud box constitutes the lower boundary for the later\n"
17631 "calculations, and *iy_cloudbox_agenda* must be set to perform an\n"
17632 "interpolation of the cloudbox field.\n"),
17634 OUT(
"spectral_radiance_field"),
17638 IN(
"propmat_clearsky_agenda",
17639 "water_p_eq_agenda",
17641 "iy_surface_agenda",
17642 "iy_cloudbox_agenda",
17664 "surface_props_data",
17666 GIN(
"use_parallel_iy"),
17669 GIN_DESC(
"0: Parallelize over zenith angles\n"
17670 "1: Use more memory intensiv iyEmissionStandardParallel*")));
17673 NAME(
"specular_losCalc"),
17675 "Calculates the specular direction of surface reflections.\n"
17677 "A help method to set up the surface properties. This method\n"
17678 "calculates *specular_los*, that is required in several methods\n"
17679 "to convert zenith angles to incidence angles.\n"
17681 "The method also returns the line-of-sight matching the surface normal.\n"
17683 "The default is to consider the surface slope when calculating the\n"
17684 "specular direction. That is, the variation of *z_surface* (as well as\n"
17685 "the geoid radius) is considered and the specular direction is calculated\n"
17686 "including the specified topography. This part can be deactivated by\n"
17687 "setting *ignore_surface_slope* to 1. In this case, the zenith angle of\n"
17688 "the specular direction is simply 180-rtp_los[0]. *ignore_surface_slope*\n"
17689 "has only an effect for 2D and 3D, as 1D implies a constant radius of\n"
17690 "the surface (i.e. no topography).\n"),
17692 OUT(
"specular_los",
"surface_normal"),
17703 GIN(
"ignore_surface_slope"),
17706 GIN_DESC(
"Flag to control if surface slope is consdered or not.")));
17709 NAME(
"specular_losCalcNoTopography"),
17711 "Calculates the specular direction of surface reflections for horisontal\n"
17714 "In contrast to *specular_losCalc*, this method ignores the topography\n"
17715 "implied by *z_surface*. That is, any slope of the surface is ignored.\n"
17717 "The typical application of this WSM should be water surfaces (lakes and\n"
17720 OUT(
"specular_los",
"surface_normal"),
17724 IN(
"rtp_pos",
"rtp_los",
"atmosphere_dim"),
17731 NAME(
"StringJoin"),
17733 "Concatenate two or more strings.\n"
17735 "The output string is overwritten, but is allowed to appear\n"
17736 "in the input list. Up to 10 strings can be concatenated at once.\n"),
17763 GIN_DEFAULT(
NODEF,
NODEF,
"",
"",
"",
"",
"",
"",
"",
""),
17765 "Input text string.",
17766 "Input text string.",
17767 "Input text string.",
17768 "Input text string.",
17769 "Input text string.",
17770 "Input text string.",
17771 "Input text string.",
17772 "Input text string.",
17773 "Input text string.")));
17777 DESCRIPTION(
"Sets a String to the given text string.\n"),
17791 NAME(
"z_surfaceFromFileAndGrid"),
17793 "Sets the surface altitude for a given latitude and longitude grid.\n"),
17799 IN(
"lat_grid",
"lon_grid"),
17800 GIN(
"filename",
"interp_order",
"set_lowest_altitude_to_zero"),
17801 GIN_TYPE(
"String",
"Index",
"Index"),
17804 "File of GriddedField2 with surface altitudes gridded",
17805 "Interpolation order",
17806 "Index that sets the lowest altitude to 0 to ignore sub-surface pressures/altitudes")));
17809 NAME(
"z_surfaceConstantAltitude"),
17811 "Sets the surface altitude to a constant. Defaults to zero.\n"),
17817 IN(
"lat_grid",
"lon_grid"),
17821 GIN_DESC(
"The constant altitude.")));
17824 NAME(
"surfaceBlackbody"),
17826 "Creates variables to mimic a blackbody surface.\n"
17828 "This method sets up *surface_los*, *surface_rmatrix* and\n"
17829 "*surface_emission* for *surface_rtprop_agenda*. Here, *surface_los*\n"
17830 "and *surface_rmatrix* are set to be empty, and *surface_emission*\n"
17831 "to hold blackbody radiation for a temperature of *surface_skin_t*.\n"),
17833 OUT(
"surface_los",
"surface_rmatrix",
"surface_emission"),
17837 IN(
"atmosphere_dim",
17849 NAME(
"surfaceFastem"),
17851 "Usage of FASTEM together with MC and DOIT.\n"
17853 "The recommended way to use FASTEM is by *iySurfaceFastem*, but that\n"
17854 "is not always possible, such as when using MC and DOIT. This is the\n"
17855 "case as those scattering methods use *surface_rtprop_agenda*,\n"
17856 "while *iySurfaceFastem* fits with *iy_surface_agenda*. This WSM solves\n"
17857 "this by allowing FASTEM to be used inside *surface_rtprop_agenda*.\n"
17859 "However, FASTEM is here used in an approximative way. For a correct\n"
17860 "usage of FASTEM, the atmospheric transmittance shall be calculated\n"
17861 "for the position and direction of concern, but this is not possible\n"
17862 "together with DOIT and MC. Instead, the transmittance is an input\n"
17863 "to the method, and must either be pre-calculated or set to a\n"
17864 "representative value.\n"
17866 "See *iySurfaceFastem*, for further details on the special input\n"
17869 OUT(
"surface_los",
"surface_rmatrix",
"surface_emission"),
17873 IN(
"atmosphere_dim",
17884 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric",
"Vector",
"Index"),
17886 GIN_DESC(
"Salinity, 0-1. That is, 3% is given as 0.03.",
17888 "Wind direction. See futher above.",
17889 "Transmittance along path of downwelling radiation. A vector "
17890 "with the same length as *f_grid*.",
17891 "The version of FASTEM to use.")));
17894 NAME(
"surfaceTessem"),
17896 "TESSEM sea surface microwave emissivity parametrization.\n"
17898 "This method computes surface emissivity and reflectivity matrices for\n"
17899 "ocean surfaces using the TESSEM emissivity model: Prigent, C., et al.\n"
17900 "Sea‐surface emissivity parametrization from microwaves to millimetre\n"
17901 "waves, QJRMS, 2017, 143.702: 596-605.\n"
17903 "The validity range of the parametrization of is 10 to 700 GHz, but for\n"
17904 "some extra flexibility frequencies between 5 and 900 GHz are accepted.\n"
17905 "The accepted temperaute range for *surface_skin_t* is [260.0 K, 373.0 K]\n"
17907 "The model itself is represented by the neural networks in\n"
17908 "*tessem_neth* and *tessem_netv*.\n"),
17909 AUTHORS(
"Simon Pfreundschuh"),
17910 OUT(
"surface_los",
"surface_rmatrix",
"surface_emission"),
17914 IN(
"atmosphere_dim",
17922 GIN(
"salinity",
"wind_speed"),
17925 GIN_DESC(
"Salinity, 0-1. That is, 3% is given as 0.03.",
"Wind speed.")));
17928 NAME(
"surfaceTelsem"),
17930 "Compute surface emissivities using the TELSEM 2 model.\n"
17932 "This method uses second version of the TELSEM model for calculating\n"
17933 "land surface emissivities (F. Aires et al, \"A Tool to Estimate \n"
17934 " Land‐Surface Emissivities at Microwave frequencies (TELSEM) for use\n"
17935 " in numerical weather prediction\" Quarterly Journal of the Royal\n"
17936 "Meteorological Society, vol. 137, (656), pp. 690-699, 2011.)\n"
17937 "This methods computes land surface emissivities for a given pencil beam\n"
17938 "using a given TELSEM2 atlas.\n"
17939 "The input must satisfy the following conditions, otherwise an error is thrown:\n"
17940 " - The input frequencies (*f_grid*) must be within the range [5 GHz, 900 GHz]\n"
17941 " - The skin temperature (*surface_skin_t*) must be within the range\n"
17942 " [180 K, 360 K]\n"
17944 "A TELSEM atlas contains only suface emissivities for locations that are\n"
17945 "classified as land. By default this WSM will throw an error if the\n"
17946 "pencil beam hits the surface at a position that is not contained in the\n"
17949 "The above behavior can be avoided by setting *d_max* to a positive value.\n"
17950 "This enables nearest neighbor interpolation, which assigns the emissivities\n"
17951 "of the nearest found cell in the atlas to the given position. In this case,\n"
17952 "an error is only thrown if the distance of the found neighbor is higher\n"
17953 "than the provided value of *d_max.\n"
17955 "You can limit the final reflectivity applied by setting *r_min* and *r_max*.\n"
17957 "To extract a land-sea mask from a given telsem atlas see the WSM\n"
17958 "*telsemSurfaceTypeLandSea*.\n"),
17959 AUTHORS(
"Simon Pfreundschuh"),
17960 OUT(
"surface_los",
"surface_rmatrix",
"surface_emission"),
17964 IN(
"atmosphere_dim",
17973 GIN(
"atlas",
"r_min",
"r_max",
"d_max"),
17974 GIN_TYPE(
"TelsemAtlas",
"Numeric",
"Numeric",
"Numeric"),
17976 GIN_DESC(
"The Telsem atlas to use for the emissivity calculation.",
17977 "Minimum allowed value for reflectivity to apply.",
17978 "Maximum allowed value for reflectivity to apply.",
17979 "Maximum allowed distance in meters for nearest neighbor"
17980 " interpolation in meters. Set to a negative value or zero "
17981 " to disable interpolation.")));
17984 NAME(
"surfaceFlatRefractiveIndex"),
17986 "Creates variables to mimic specular reflection by a (flat) surface\n"
17987 "where the complex refractive index is specified.\n"
17989 "The dielectric properties of the surface are described by\n"
17990 "*surface_complex_refr_index*. The Fresnel equations are used to\n"
17991 "calculate amplitude reflection coefficients. The method can thus\n"
17992 "result in that the reflection properties differ between frequencies\n"
17993 "and polarisations.\n"
17995 "Local thermodynamic equilibrium is assumed, which corresponds to\n"
17996 "that the reflection and emission coefficients add up to 1.\n"),
17998 OUT(
"surface_los",
"surface_rmatrix",
"surface_emission"),
18009 "surface_complex_refr_index"),
18016 NAME(
"surfaceFlatReflectivity"),
18018 "Creates variables to mimic specular reflection by a (flat) surface\n"
18019 "where *surface_reflectivity* is specified.\n"
18021 "Works basically as *surfaceFlatScalarReflectivity* but is more\n"
18022 "general as vector radiative transfer is more properly handled. See\n"
18023 "the ARTS theory document (ATD) for details around how\n"
18024 "*surface_emission* is determined. In the nomenclature of ATD,\n"
18025 "*surface_reflectivity* gives R.\n"),
18027 OUT(
"surface_los",
"surface_rmatrix",
"surface_emission"),
18038 "surface_reflectivity"),
18045 NAME(
"surfaceFlatRvRh"),
18047 "Creates variables to mimic specular reflection by a (flat) surface\n"
18048 "where *surface_rv_rh* is specified.\n"
18050 "This method assumes that the reflection at vertical and horizontal\n"
18051 "polarisation differs. As power reflection coefficients are provided\n"
18052 "there is no information at hand on phase shifts between polarisations,\n"
18053 "and they are simply assumed to be zero. These assumptions result in\n"
18054 "that *surface_emission* is set to zero for positions corresponding to\n"
18055 "U and V, and that all diagonal elementsof *surface_rmatrix* are equal\n"
18056 "(the mean of rv and rh). Further, all off-diagonal elements of\n"
18057 "*surface_rmatrix* are all zero except for (0,1) and (1,0).\n"),
18059 OUT(
"surface_los",
"surface_rmatrix",
"surface_emission"),
18077 NAME(
"surfaceFlatScalarReflectivity"),
18079 "Creates variables to mimic specular reflection by a (flat) surface\n"
18080 "where *surface_scalar_reflectivity* is specified.\n"
18082 "This method assumes that the reflection at vertical and horizontal\n"
18083 "polarisation is identical. This assumption includes that there is no\n"
18084 "phase shift between polarisations. These assumptions result in that\n"
18085 "*surface_emission* is set to zero for positions corresponding to Q,\n"
18086 "U and V, and that *surface_rmatrix* becomes a diagonal matrix (with\n"
18087 "all elements on the diagonal equal to the specified reflectivity).\n"),
18089 OUT(
"surface_los",
"surface_rmatrix",
"surface_emission"),
18100 "surface_scalar_reflectivity"),
18107 NAME(
"surfaceLambertianSimple"),
18109 "Creates variables to mimic a Lambertian surface.\n"
18111 "A Lambertian surface can be characterised solely by its\n"
18112 "reflectivity, here taken from *surface_scalar_reflectivity*.\n"
18114 "The down-welling radiation field is estimated by making calculations\n"
18115 "for *lambertian_nza* directions. The range of zenith angles ([0,90])\n"
18116 "is divided in an equidistant manner for 1D. For 2D and 3D see below.\n"
18117 "The values for *surface_rmatrix* are assuming a constant radiance\n"
18118 "over each zenith angle range. See AUG.\n"
18120 "Default is to select the zenith angles for *sensor_los* to be placed\n"
18121 "centrally in the grid ranges. For example, if *lambertian_nza* is set\n"
18122 "to 9, down-welling radiation will be calculated for zenith angles = \n"
18123 "5, 15, ..., 85. The position of these angles can be shifted by\n"
18124 "*za_pos*. This variable specifies the fractional distance inside the\n"
18125 "ranges. For example, a *za_pos* of 0.7 (np still 9) gives the angles\n"
18126 "7, 17, ..., 87.\n"
18128 "Only upper-left diagonal element of the *surface_rmatrix* is\n"
18129 "non-zero. That is, the upwelling radiation is always unpolarised.\n"
18131 "Local thermodynamic equilibrium is assumed, which corresponds to\n"
18132 "that the reflection and emission coefficients \"add up to 1\".\n"
18134 "For 2D and 3D, the down-welling directions are placed along the\n"
18135 "the viewing direction, e.g. for 3D the azimuth angle is kept constant.\n"
18136 "In 2D and 3D surface topography can exist, and to avoid getting views\n"
18137 "going directly into the surface, angels are not distributed over 90 deg,\n"
18138 "but 90-abs(surface_normal[0]).\n"),
18140 OUT(
"surface_los",
"surface_rmatrix",
"surface_emission"),
18151 "surface_scalar_reflectivity"),
18152 GIN(
"lambertian_nza",
"za_pos"),
18155 GIN_DESC(
"Number of downwelling streams.",
18156 "Position of angle in *surface_los* inside ranges of zenith "
18157 "angle grid. See above.")));
18160 NAME(
"surfaceSemiSpecularBy3beams"),
18162 "A simplistic treatment of semi-specular surfaces.\n"
18164 "This method has no strong physical basis but could be used for simpler\n"
18165 "testing or as starting point for more advanced methods.\n"
18167 "This method assumes that the surface can be treated to have three facets,\n"
18168 "all lacking surface roughness. One facet is assumed to give standard\n"
18169 "specular reflection, while the two other facets are tilted with +dza\n"
18170 "and -dza, respectively. The tilt is assumed to only affect the zenith\n"
18171 "angle of the reflected direction (azimuth same as for specular direction).\n"
18172 "The area ratio of the non-tilted facet is set by *specular_factor*.\n"
18173 "That is, the specular beam is given weight w, while the other two beams\n"
18174 "each get weight (1-w)/2.\n"
18176 "If a facet tilts away from the viewing direction in such way that\n"
18177 "the surface is observed from below, the tilt of the facet is decreased\n"
18178 "in steps of 1 degree until a successful calculation is obtained. If this\n"
18179 "turns out to require a tilt of zero, this facete is merged with\n"
18180 "the specular direction.\n"
18182 "The pure specular properties of the surface shall be described by\n"
18183 "*surface_rtprop_sub_agenda*. That is, if you have specular surface\n"
18184 "described and you want to make it semi-specular by this method, you\n"
18185 "move the content of the existing *surface_rtprop_agenda* to\n"
18186 "*surface_rtprop_sub_agenda* and instead fill *surface_rtprop_agenda*\n"
18187 "with this method.\n"),
18189 OUT(
"surface_skin_t",
18192 "surface_emission"),
18196 IN(
"atmosphere_dim",
18200 "surface_rtprop_sub_agenda"),
18201 GIN(
"specular_factor",
"dza"),
18204 GIN_DESC(
"The weight given to the specular direction. Denoted as w above."
18205 " A value between 1/3 and 1.",
18206 "Zenith angle seperation to each secondary direction. A "
18207 "between 0 and 45 degrees.")));
18210 NAME(
"surfaceSplitSpecularTo3beams"),
18212 "A very simple approximation of a semi-specular surface.\n"
18214 "This method has no direct physical basis but could be used for simpler\n"
18215 "testing or as starting point for more advanced methods.\n"
18217 "The method requires that the surface RT properties (e.g. *surface_los*)\n"
18218 "have been set up to mimic a specular surface. This method splits the down-\n"
18219 "welling radiation into three directions. The specular direction is given\n"
18220 "weight w, while the other two beams each get weight (1-w)/2. The basic\n"
18221 "polarised reflectivity from the specular calculations is maintained\n"
18222 "for each beam. The beams are just separated in zenith angle, with a\n"
18223 "separation of *dza*. The lowermost beam is not allowed to be closer to\n"
18224 "the surface than 1 degree. If there is no room for the lowermost beam,\n"
18225 "it is merged with the main beam.\n"),
18227 OUT(
"surface_los",
"surface_rmatrix"),
18236 GIN(
"specular_factor",
"dza"),
18239 GIN_DESC(
"The weight given to the specular direction. Denoted as w above."
18240 " A value between 1/3 and 1.",
18241 "Zenith angle seperation to each secondary direction. A "
18242 "between 0 and 45 degrees.")));
18245 NAME(
"surface_complex_refr_indexFromGriddedField5"),
18247 "Extracts complex refractive index from a field of such data.\n"
18249 "The method allows to obtain *surface_complex_refr_index* by\n"
18250 "interpolation of a geographical field of such data. The position\n"
18251 "for which refraction shall be extracted is given by *rtp_pos*.\n"
18252 "The refractive index field is expected to be stored as:\n"
18253 " GriddedField5:\n"
18254 " Vector f_grid[N_f]\n"
18255 " Vector T_grid[N_T]\n"
18256 " ArrayOfString Complex[2]\n"
18257 " Vector \"Latitude\" [N_lat]\n"
18258 " Vector \"Longitude\" [N_lon]\n"
18259 " Tensor5 data[N_f][N_T][2][N_lat][N_lon]\n"
18261 "Definition and treatment of the three first dimensions follows\n"
18262 "*complex_refr_index*, e.g. the temperature grid is allowed\n"
18263 "to have length 1. The grids for latitude and longitude must have\n"
18264 "a length of >= 2 (ie. no automatic expansion).\n"
18266 "Hence, this method performs an interpolation only in the lat and\n"
18267 "lon dimensions, to a single point. The remaining GriddedField3 is\n"
18268 "simply returned as *surface_complex_refr_index*.\n"),
18270 OUT(
"surface_complex_refr_index"),
18274 IN(
"atmosphere_dim",
"lat_grid",
"lat_true",
"lon_true",
"rtp_pos"),
18275 GIN(
"complex_refr_index_field"),
18278 GIN_DESC(
"A field of complex refractive index.")));
18281 NAME(
"surface_reflectivityFromGriddedField6"),
18283 "Extracts surface reflectivities from a field of such data.\n"
18285 "This method allows to specify a field of surface reflectivity for\n"
18286 "automatic interpolation to points of interest. The position and\n"
18287 "direction for which the reflectivity shall be extracted are given\n"
18288 "by *rtp_pos* and *rtp_los*. The reflectivity field is expected to\n"
18290 " GriddedField6:\n"
18291 " Vector \"Frequency\" [N_f]\n"
18292 " Vector \"Stokes element\" [N_s1]\n"
18293 " Vector \"Stokes_element\" [N_s2]\n"
18294 " Vector \"Incidence angle\" [N_ia]\n"
18295 " Vector \"Latitude\" [N_lat]\n"
18296 " Vector \"Longitude\" [N_lon]\n"
18297 " Tensor6 data[N_f][N_s1][N_s2][N_ia][N_lat][N_lon]\n"
18299 "Grids for incidence angle, latitude and longitude must have a\n"
18300 "length of >= 2 (ie. no automatic expansion). If the frequency grid\n"
18301 "has length 1, this is taken as that the reflectivity is constant,\n"
18302 "following the definition of *surface_scalar_reflectivity*.\n"
18303 "The data can cover higher Stokes dimensionalities than set by\n"
18304 "*stokes_dim*. Data for non-used Stokes elements are just cropped.\n"
18305 "The order between the two Stokes dimensions is the same as in\n"
18306 "*surface_reflectivity* and surface_rmatrix*.\n"
18308 "The interpolation is done in steps:\n"
18309 " 1: Linear interpolation for lat and lon (std. extrapolation).\n"
18310 " 2: Interpolation in incidence angle (std. extrapolation).\n"
18311 " If the grid has a length of >= 4, cubic interpolation is\n"
18312 " applied. Otherwise linear interpolation.\n"
18313 " 3. Linear interpolation in frequency (if input data have more\n"
18314 " than one frequency).\n"),
18316 OUT(
"surface_reflectivity"),
18331 GIN_DESC(
"A field of surface reflectivities")));
18334 NAME(
"surface_rtpropCallAgendaX"),
18336 "Switch between the elements of *surface_rtprop_agenda_array*.\n"
18338 "This method simply calls the agenda matching *surface_type* and\n"
18339 "returns the results. That is, the agenda in *surface_rtprop_agenda_array*\n"
18340 "with index *surface_type* (0-based) is called.\n"),
18342 OUT(
"surface_skin_t",
18345 "surface_emission"),
18352 "surface_rtprop_agenda_array",
18354 "surface_type_aux"),
18361 NAME(
"surface_scalar_reflectivityFromGriddedField4"),
18363 "Extracts scalar surface reflectivities from a field of such data.\n"
18365 "This method allows to specify a field of surface reflectivity for\n"
18366 "automatic interpolation to points of interest. The position and\n"
18367 "direction for which the reflectivity shall be extracted are given\n"
18368 "by *rtp_pos* and *rtp_los*. The reflectivity field is expected to\n"
18370 " GriddedField4:\n"
18371 " Vector \"Frequency\" [N_f]\n"
18372 " Vector \"Incidence angle\" [N_ia]\n"
18373 " Vector \"Latitude\" [N_lat]\n"
18374 " Vector \"Longitude\" [N_lon]\n"
18375 " Tensor4 data[N_f][N_ia][N_lat][N_lon]\n"
18377 "Grids for incidence angle, latitude and longitude must have a\n"
18378 "length of >= 2 (ie. no automatic expansion). If the frequency grid\n"
18379 "has length 1, this is taken as the reflectivity is constant,\n"
18380 "following the definition of *surface_scalar_reflectivity*.\n"
18382 "The interpolation is done in steps:\n"
18383 " 1: Linear interpolation for lat and lon (std. extrapolation).\n"
18384 " 2: Interpolation in incidence angle (std. extrapolation).\n"
18385 " If the grid has a length of >= 4, cubic interpolation is\n"
18386 " applied. Otherwise linear interpolation.\n"
18387 " 3. Linear interpolation if frequency (if input data have more\n"
18388 " than one frequency).\n"),
18390 OUT(
"surface_scalar_reflectivity"),
18405 GIN_DESC(
"A field of scalar surface reflectivities")));
18434 NAME(
"surface_scalar_reflectivityFromSurface_rmatrix"),
18436 "Sets *surface_scalar_reflectivity* based on *surface_rmatrix*.\n"
18438 "For each frequency f, *surface_scalar_reflectivity* is set to\n"
18439 "the sum of surface_rmatrix(joker,f,0,0).\n"),
18441 OUT(
"surface_scalar_reflectivity"),
18445 IN(
"surface_rmatrix"),
18452 NAME(
"surface_typeInterpTypeMask"),
18454 "Closest neighbour interpolation of surface type mask.\n"
18456 "The method determines the surface type at the position of concern\n"
18457 "(*rtp_pos*) from the provided type mask (*surface_type_mask*).\n"
18458 "The closest point in the mask is selected. The surface type\n"
18459 "is set to the integer part of the value at the found point, while\n"
18460 "*surface_type_aux* is set to the reminder. For example, if the\n"
18461 "mask value at closest point is 2.23, *surface_type* is set to 2\n"
18462 "*surface_type_aux* becomes 0.23.\n"
18464 "The altitude in *rtp_pos* is ignored.\n"),
18466 OUT(
"surface_type",
"surface_type_aux"),
18470 IN(
"atmosphere_dim",
18475 "surface_type_mask"),
18482 NAME(
"SurfaceDummy"),
18484 "Dummy method for *iy_surface_agenda*.\n"
18486 "If you don't make use of *surface_props_data* and associated\n"
18487 "variables, include this method *iy_surface_agenda*. The method\n"
18488 "just checks that the variables of concern are set to be empty,\n"
18489 "and you don't need to include calls of *Ignore* and *Touch* in\n"
18492 OUT(
"dsurface_rmatrix_dx",
"dsurface_emission_dx"),
18496 IN(
"dsurface_rmatrix_dx",
18497 "dsurface_emission_dx",
18501 "surface_props_data",
18502 "surface_props_names",
18511 NAME(
"SurfaceFastem"),
18513 "FASTEM sea surface microwave emissivity parametrization.\n"
18515 "The variable *surface_props_data* must contain these data:\n"
18516 " \"Water skin temperature\"\n"
18517 " \"Wind speed\"\n"
18518 " \"Wind direction\"\n"
18521 "For some details and comments see *FastemStandAlone* and *surfaceFastem*.\n"),
18525 "dsurface_rmatrix_dx",
18526 "surface_emission",
18527 "dsurface_emission_dx"),
18531 IN(
"dsurface_rmatrix_dx",
18532 "dsurface_emission_dx",
18540 "surface_props_data",
18541 "surface_props_names",
18544 GIN(
"transmittance",
"fastem_version"),
18547 GIN_DESC(
"Transmittance along path of downwelling radiation. A vector "
18548 "with the same length as *f_grid*.",
18549 "The version of FASTEM to use.")));
18552 NAME(
"SurfaceTessem"),
18554 "TESSEM sea surface microwave emissivity parametrization.\n"
18556 "The variable *surface_props_data* must contain these data:\n"
18557 " \"Water skin temperature\"\n"
18558 " \"Wind speed\"\n"
18561 "This method computes surface emissivity and reflectivity matrices for\n"
18562 "ocean surfaces using the TESSEM emissivity model: Prigent, C., et al.\n"
18563 "Sea-surface emissivity parametrization from microwaves to millimetre\n"
18564 "waves, QJRMS, 2017, 143.702: 596-605.\n"
18566 "The validity range of the parametrization of is 10 to 700 GHz, but for\n"
18567 "some extra flexibility frequencies between 5 and 900 GHz are accepted.\n"
18568 "The accepted temperaute range for water skin temperature is\n"
18569 "[260.0 K, 373.0 K]. Salinity shall be in the range [0,1]. That is, a\n"
18570 "salinity of 3% is given as 0.03.\n"
18572 "The model itself is represented by the neural networks in\n"
18573 "*tessem_neth* and *tessem_netv*.\n"),
18574 AUTHORS(
"Simon Pfreundschuh",
"Patrick Eriksson"),
18577 "dsurface_rmatrix_dx",
18578 "surface_emission",
18579 "dsurface_emission_dx"),
18583 IN(
"dsurface_rmatrix_dx",
18584 "dsurface_emission_dx",
18594 "surface_props_data",
18595 "surface_props_names",
18604 NAME(
"TangentPointExtract"),
18606 "Finds the tangent point of a propagation path.\n"
18608 "The tangent point is here defined as the point with the lowest\n"
18609 "altitude (which differes from the definition used in the code\n"
18610 "where it is the point with the lowest radius, or equally the point\n"
18611 "with a zenith angle of 90 deg.)\n"
18613 "The tangent point is returned as a vector, with columns matching\n"
18614 "e.g. *rte_pos*. If the propagation path has no tangent point, the\n"
18615 "vector is set to NaN.\n"),
18620 GOUT_DESC(
"The position vector of the tangent point."),
18628 NAME(
"TangentPointPrint"),
18630 "Prints information about the tangent point of a propagation path.\n"
18632 "The tangent point is here defined as the point with the lowest\n"
18633 "altitude (which differes from the definition used in the code\n"
18634 "where it is the point with the lowest radius, or equally the point\n"
18635 "with a zenith angle of 90 deg.)\n"),
18645 GIN_DESC(
"Output level to use.")));
18648 NAME(
"telsemStandalone"),
18650 "Stand-alone evaluation of the Telsem model.\n"
18652 "This evaluates the Telsem land surface emissivity\n"
18653 "model using the data from the provided atlas.\n"
18655 "Since TELSEM atlases do not contain data for all locations\n"
18656 "this function allows for nearest neighbor interpolation, which\n"
18657 "can be enabled by setting the *d_max* GIN to a positive value.\n"
18659 "This WSM throws a runtime error if the queried location is not\n"
18660 "contained in the atlas or the distance of the neighboring cell\n"
18661 "exceeds the given *d_max* value.\n"),
18662 AUTHORS(
"Simon Pfreundschuh"),
18664 GOUT(
"emissivities"),
18666 GOUT_DESC(
"The computed h and v emissivites"),
18668 GIN(
"lat",
"lon",
"theta",
"f",
"ta",
"d_max"),
18670 "Numeric",
"Numeric",
"Numeric",
"Vector",
"TelsemAtlas",
"Numeric"),
18672 GIN_DESC(
"The latitude for which to compute the emissivities.",
18673 "The latitude for which to compute the emissivities.",
18674 "The incidence angle.",
18675 "The frequencies for which to compute the emissivities.",
18676 "The Telsem atlas to use.",
18677 "The maximum allowed distance for nearest neighbor"
18678 " interpolation in meters.")));
18681 NAME(
"telsemAtlasLookup"),
18683 "Lookup SSMI emissivities from Telsem Atlas.\n"
18685 "This returns the emissivities (indices [0,..,6])\n"
18686 " for the SSMI channels that are contained in\n"
18687 "the Telsem atlas.\n"
18689 "If given latitude and longitude are not in the atlas an empty\n"
18690 "vector is returned.\n"),
18691 AUTHORS(
"Simon Pfreundschuh"),
18693 GOUT(
"emissivities"),
18695 GOUT_DESC(
"The SSMI emissivities from the atlas"),
18697 GIN(
"lat",
"lon",
"atlas"),
18698 GIN_TYPE(
"Numeric",
"Numeric",
"TelsemAtlas"),
18700 GIN_DESC(
"The latitude for which to compute the emissivities.",
18701 "The latitude for which to compute the emissivities.",
18702 "The Telsem atlas to use.")));
18705 NAME(
"telsemSurfaceTypeLandSea"),
18707 "TELSEM based land sea mask.\n"
18709 "This method determines whether the position in *rtp_pos* is\n"
18710 "of type ocean or land depending on whether a corresponding\n"
18711 "cell is contained in the provided TELSEM atlas.\n"
18712 "In combination with the WSM *surface_rtpropCallAgendaX* this\n"
18713 "can be used to used different methods to compute surface radiative\n"
18715 AUTHORS(
"Simon Pfreundschuh"),
18716 OUT(
"surface_type"),
18720 IN(
"atmosphere_dim",
"lat_grid",
"lat_true",
"lon_true",
"rtp_pos"),
18724 GIN_DESC(
"The telsem atlas from which to lookup the surface type.")));
18727 NAME(
"telsem_atlasReadAscii"),
18729 "Reads single TELSEM atlas.\n"
18731 "'directory' needs to contain the original 12 Telsem atlas files\n"
18732 "and the correlations file. This WSM reads the atlas for the specified\n"
18733 "month and stores the result in the provided output atlas.\n"),
18734 AUTHORS(
"Simon Pfreundschuh"),
18738 GOUT_DESC(
"The atlas into which to store the loaded atlas."),
18740 GIN(
"directory",
"month",
"filename_pattern"),
18741 GIN_TYPE(
"String",
"Index",
"String"),
18743 GIN_DESC(
"Directory with TELSEM 2 SSMI atlas files.",
18744 "The month for which the atlas should be read.",
18745 "Filename pattern (@MM@ gets replaced by month number)")));
18748 NAME(
"telsem_atlasesReadAscii"),
18750 "Reads TELSEM atlas files.\n"
18752 "'directory' needs to contain the original 12 Telsem atlas files\n"
18753 "and the correlations file.\n"
18754 "The whole data is combined into the WSV *telsem_atlases*\n"),
18756 OUT(
"telsem_atlases"),
18761 GIN(
"directory",
"filename_pattern"),
18764 GIN_DESC(
"Directory with TELSEM 2 SSMI atlas files.",
18765 "Filename pattern (@MM@ gets replaced by month number)")));
18768 NAME(
"Tensor3AddScalar"),
18769 DESCRIPTION(
"Adds a scalar value to all elements of a tensor3.\n"
18771 "The result can either be stored in the same or another\n"
18779 GIN(
"in",
"value"),
18782 GIN_DESC(
"Input tensor.",
"The value to be added to the tensor.")));
18785 NAME(
"Tensor3ExtractFromTensor4"),
18787 "Extracts a Tensor3 from a Tensor4.\n"
18789 "Copies book, page, row or column with given Index from input Tensor4\n"
18790 "variable to output Tensor3.\n"
18791 "Higher order equivalent of *VectorExtractFromMatrix*.\n"),
18798 GIN(
"in",
"i",
"direction"),
18799 GIN_TYPE(
"Tensor4",
"Index",
"String"),
18802 "Index of book, page, row or column to extract.",
18803 "Direction. \"book\" or \"page\" or \"row\" or \"column\".")));
18806 NAME(
"Tensor3Scale"),
18807 DESCRIPTION(
"Scales all elements of a tensor with the specified value.\n"
18809 "The result can either be stored in the same or another\n"
18817 GIN(
"in",
"value"),
18821 "The value to be multiplied with the tensor.")));
18824 NAME(
"Tensor3SetConstant"),
18826 "Creates a tensor and sets all elements to the specified value.\n"
18828 "The size is determined by *ncols*, *nrows* etc.\n"),
18834 IN(
"npages",
"nrows",
"ncols"),
18841 NAME(
"Tensor4AddScalar"),
18842 DESCRIPTION(
"Adds a scalar value to all elements of a tensor4.\n"
18844 "The result can either be stored in the same or another\n"
18852 GIN(
"in",
"value"),
18855 GIN_DESC(
"Input tensor.",
"The value to be added to the tensor.")));
18892 NAME(
"Tensor4Scale"),
18893 DESCRIPTION(
"Scales all elements of a tensor with the specified value.\n"
18895 "The result can either be stored in the same or another\n"
18903 GIN(
"in",
"value"),
18907 "The value to be multiplied with the tensor.")));
18910 NAME(
"Tensor4SetConstant"),
18912 "Creates a tensor and sets all elements to the specified value.\n"
18914 "The size is determined by *ncols*, *nrows* etc.\n"),
18920 IN(
"nbooks",
"npages",
"nrows",
"ncols"),
18927 NAME(
"Tensor5Scale"),
18928 DESCRIPTION(
"Scales all elements of a tensor with the specified value.\n"
18930 "The result can either be stored in the same or another\n"
18938 GIN(
"in",
"value"),
18942 "The value to be multiplied with the tensor.")));
18945 NAME(
"Tensor5SetConstant"),
18947 "Creates a tensor and sets all elements to the specified value.\n"
18949 "The size is determined by *ncols*, *nrows* etc.\n"),
18955 IN(
"nshelves",
"nbooks",
"npages",
"nrows",
"ncols"),
18962 NAME(
"Tensor6Scale"),
18963 DESCRIPTION(
"Scales all elements of a tensor with the specified value.\n"
18965 "The result can either be stored in the same or another\n"
18973 GIN(
"in",
"value"),
18977 "The value to be multiplied with the tensor.")));
18980 NAME(
"Tensor6SetConstant"),
18982 "Creates a tensor and sets all elements to the specified value.\n"
18984 "The size is determined by *ncols*, *nrows* etc.\n"),
18990 IN(
"nvitrines",
"nshelves",
"nbooks",
"npages",
"nrows",
"ncols"),
18997 NAME(
"Tensor7Scale"),
18998 DESCRIPTION(
"Scales all elements of a tensor with the specified value.\n"
19000 "The result can either be stored in the same or another\n"
19008 GIN(
"in",
"value"),
19012 "The value to be multiplied with the tensor.")));
19015 NAME(
"Tensor7SetConstant"),
19017 "Creates a tensor and sets all elements to the specified value.\n"
19019 "The size is determined by *ncols*, *nrows* etc.\n"),
19038 NAME(
"TestArrayOfAgenda"),
19040 "A method that is used for the TestArrayOfAgenda test case.\n"),
19046 IN(
"test_agenda_array"),
19050 GIN_DESC(
"Index of agenda in array to execute.")));
19053 NAME(
"TessemNNReadAscii"),
19055 "Reads the initialization data for the TESSEM NeuralNet from an ASCII file.\n"),
19060 GOUT_DESC(
"Tessem NeuralNet configuration."),
19066 "NeuralNet parameters file as provided in the TESSEM 2 distribution.")));
19069 NAME(
"TestTessem"),
19071 "Example method for TESSEM2.\n"
19073 "When using the default neural network parameter files\n"
19074 "from the Tessem 2 distribution, the input Vector should contain\n"
19076 " - Frequency (10-700) in GHz.\n"
19077 " - Theta (0-90) Incidence angle in degrees.\n"
19078 " - Windspeed (0-25) at 10m (m/s)\n"
19079 " Higher wind speed can be used, but without garantee.\n"
19080 " - Surface skin temperature (270-310) in K.\n"
19081 " - Salinity (0-0.04) in kg/kg\n"),
19086 GOUT_DESC(
"Tessem output emissivity."),
19088 GIN(
"net",
"invalues"),
19091 GIN_DESC(
"Tessem NeuralNet parameters.",
"Input data.")));
19096 "A dummy method that can be used for test purposes.\n"
19098 "This method can be used by ARTS developers to quickly test stuff.\n"
19099 "The implementation is in file m_general.cc. This just saves you the\n"
19100 "trouble of adding a dummy method everytime you want to try\n"
19101 "something out quickly.\n"),
19114 NAME(
"time_gridOffset"),
19115 DESCRIPTION(
"Offsets a time grid by some seconds.\n"),
19125 GIN_DESC(
"Time in seconds to add")));
19131 "Use *timerStop* to stop the timer.\n"
19135 " ReadXML(f_grid,\"frequencies.xml\")\n"
19137 " Print(timer)\n"),
19153 "See *timerStart* for example usage.\n"),
19166 NAME(
"time_stampsSort"),
19167 DESCRIPTION(
"Sort *in* by *time_stamps* into *out*.\n"),
19171 GOUT_TYPE(
"ArrayOfTime,ArrayOfVector"),
19175 GIN_TYPE(
"ArrayOfTime,ArrayOfVector"),
19177 GIN_DESC(
"Array to sort of same size as *time_stamps*")));
19180 NAME(
"TMatrixTest"),
19182 "T-Matrix validation test.\n"
19184 "Executes the standard test included with the T-Matrix Fortran code.\n"
19185 "Should give the same as running the tmatrix_lp executable in\n"
19186 "3rdparty/tmatrix/.\n"),
19201 "As *Ignore* but for agenda output.\n"
19203 "This method is handy for use in agendas in order to suppress\n"
19204 "warnings about not-produced output workspace variables.\n"
19206 "What it does, in case the variable is initialized already, is:\n"
19208 "In case the variable is not yet initialized, it is set to NaN.\n"),
19213 GOUT_DESC(
"Variable to do nothing with."),
19224 NAME(
"transmittanceFromIy_aux"),
19226 "Creates a vector of transmittance values.\n"
19228 "The transmittances are set based on optical depths in *iy_aux*. That is,\n"
19229 "one of the quantities in *iy_aux* must be \"Optical depth\".\n"
19231 "The created vector has a length matching *f_grid* and can e.g. be used\n"
19232 "as input to some of the FASTEM methods.\n"),
19235 GOUT(
"transmittance"),
19237 GOUT_DESC(
"Created vector of transmittance values."),
19238 IN(
"iy_aux_vars",
"iy_aux"),
19245 NAME(
"VectorAddScalar"),
19247 "Adds a scalar to all elements of a vector.\n"
19249 "The result can either be stored in the same or another vector.\n"),
19256 GIN(
"in",
"value"),
19259 GIN_DESC(
"Input vector.",
"The value to be added to the vector.")));
19262 NAME(
"VectorAddVector"),
19264 "Element-wise addition of two vectors.\n"
19266 "The method calculates c = a + b.\n"
19268 "The variable *b* is allowed to have length 1, for any length of\n"
19269 "*a*. This single value in *b* is then added to every element of *a*.\n"
19271 "The vectors *a* and *c* can be the same WSV, while *b* can not be\n"
19272 "the same WSV as any of the the other vector.\n"),
19282 GIN_DESC(
"Input vector.",
"Vector to be added.")));
19285 NAME(
"VectorCrop"),
19287 "Keeps only values of a vector inside the specified range.\n"
19289 "All values outside the range [min_value,max-value] are removed.\n"
19290 "Note the default values, that basically should act as -+Inf.\n"
19292 "The result can either be stored in the same or another vector.\n"),
19299 GIN(
"in",
"min_value",
"max_value"),
19300 GIN_TYPE(
"Vector",
"Numeric",
"Numeric"),
19303 "Minimum value to keep",
19304 "Maximum value to keep")));
19307 NAME(
"VectorExtractFromMatrix"),
19309 "Extracts a Vector from a Matrix.\n"
19311 "Copies row or column with given Index from input Matrix variable\n"
19312 "to create output Vector.\n"),
19313 AUTHORS(
"Patrick Eriksson, Oliver Lemke, Stefan Buehler"),
19319 GIN(
"in",
"i",
"direction"),
19320 GIN_TYPE(
"Matrix",
"Index",
"String"),
19323 "Index of row or column.",
19324 "Direction. \"row\" or \"column\".")));
19327 NAME(
"VectorFlip"),
19329 "Flips a vector.\n"
19331 "The output is the input vector in reversed order. The result can\n"
19332 "either be stored in the same or another vector.\n"),
19345 NAME(
"VectorInsertGridPoints"),
19347 "Insert some additional points into a grid.\n"
19349 "This method can for example be used to add line center frequencies to\n"
19350 "a regular frequency grid. If the original grid is [1,2,3], and the\n"
19351 "additional points are [2.2,2.4], the result will be [1,2,2.2,2.4,3].\n"
19353 "It is assumed that the original grid is sorted, otherwise a runtime\n"
19354 "error is thrown. The vector with the points to insert does not have to\n"
19355 "be sorted. If some of the input points are already in the grid, these\n"
19356 "points are not inserted again. New points outside the original grid are\n"
19357 "appended at the appropriate end. Input vector and output vector can be\n"
19360 "Generic output:\n"
19361 " Vector : The new grid vector.\n"
19364 " Vector : The original grid vector.\n"
19365 " Vector : The points to insert.\n"),
19372 GIN(
"in",
"points"),
19375 GIN_DESC(
"The original grid vector",
"The points to insert")));
19378 NAME(
"VectorLinSpace"),
19380 "Initializes a vector with linear spacing.\n"
19382 "The first element equals always the start value, and the spacing\n"
19383 "equals always the step value, but the last value can deviate from\n"
19384 "the stop value. *step* can be both positive and negative.\n"
19386 "The created vector is [start, start+step, start+2*step, ...]\n "),
19393 GIN(
"start",
"stop",
"step"),
19394 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric"),
19397 "Maximum/minimum value of the end value",
19398 "Spacing of the vector.")));
19401 NAME(
"VectorLogSpace"),
19403 "Initializes a vector with logarithmic spacing.\n"
19405 "The first element equals always the start value, and the spacing\n"
19406 "equals always the step value, but note that the last value can \n"
19407 "deviate from the stop value. The keyword step can be both positive\n"
19410 "Note, that although start has to be given in direct coordinates,\n"
19411 "step has to be given in log coordinates.\n"
19413 "Explicitly, the vector is:\n"
19414 " exp([ln(start), ln(start)+step, ln(start)+2*step, ...])\n"),
19421 GIN(
"start",
"stop",
"step"),
19422 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric"),
19424 GIN_DESC(
"The start value. (Direct coordinates!)",
19425 "The maximum value of the end value. (Direct coordinates!)",
19426 "The spacing of the vector. (Log coordinates!)")));
19429 NAME(
"VectorMatrixMultiply"),
19431 "Multiply a Vector with a Matrix and store the result in another\n"
19434 "This just computes the normal Matrix-Vector product, y=M*x. It is ok\n"
19435 "if input and output Vector are the same. This function is handy for\n"
19436 "multiplying the H Matrix to spectra.\n"),
19441 GOUT_DESC(
"The result of the multiplication (dimension m)."),
19446 GIN_DESC(
"The Matrix to multiply (dimension mxn).",
19447 "The original Vector (dimension n).")));
19450 NAME(
"VectorNLinSpace"),
19452 "Creates a vector with length *nelem*, equally spaced between the\n"
19453 "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(
"VectorNLogSpace"),
19470 "Creates a vector with length *nelem*, equally logarithmically\n"
19471 "spaced between the given end values.\n"
19473 "The length (*nelem*) must be larger than 1.\n"),
19480 GIN(
"start",
"stop"),
19483 GIN_DESC(
"Start value.",
"End value.")));
19486 NAME(
"VectorReshapeMatrix"),
19488 "Converts a Matrix to a Vector.\n"
19490 "The matrix is reshaped into a vector. That is, all elements of the matrix\n"
19491 "are kept. The elements can be extracted both in column (default) and row\n"
19492 "order. The ouput vector has the same length for both options.\n"),
19499 GIN(
"in",
"direction"),
19502 GIN_DESC(
"Input matrix.",
"Direction. \"row\" or \"column\".")));
19505 NAME(
"VectorScale"),
19507 "Scales all elements of a vector with the same value.\n"
19509 "The result can either be stored in the same or another vector.\n"),
19516 GIN(
"in",
"value"),
19519 GIN_DESC(
"Input vector.",
"Scaling value.")));
19522 NAME(
"VectorSetConstant"),
19524 "Creates a vector and sets all elements to the specified value.\n"
19526 "The vector length is determined by *nelem*.\n"),
19541 "Create a vector from the given list of numbers.\n"
19543 " VectorSet(p_grid, [1000, 100, 10] )\n"
19544 " Will create a p_grid vector with these three elements.\n"),
19558 NAME(
"VectorSubtractVector"),
19560 "Element-wise subtraction of two vectors.\n"
19562 "The method calculates c = a - b.\n"
19564 "The variable *b* is allowed to have length 1, for any length of\n"
19565 "*a*. This single value in *b* is then added to every element of *a*.\n"
19567 "The vectors *a* and *c* can be the same WSV, while *b* can not be\n"
19568 "the same WSV as any of the the other vector.\n"),
19578 GIN_DESC(
"Input vector.",
"Vector to be subtracted.")));
19581 NAME(
"VectorVectorMultiply"),
19583 "Multiply a Vector with another Vector and store result in a third one.\n"
19585 "This is an element-wise multiplication. It is ok if output Vector is\n"
19586 "the same as any of the input Vectors.\n"),
19591 GOUT_DESC(
"The result of the multiplication (dimension m)."),
19596 GIN_DESC(
"Original Vector #1 (dimension m).",
19597 "Original Vector #2 (dimension m).")));
19600 NAME(
"VectorZtanToZaRefr1D"),
19602 "Converts a set of true tangent altitudes to zenith angles.\n"
19604 "The tangent altitudes are given to the function as a vector, which\n"
19605 "are converted to a generic vector of zenith angles. The position of\n"
19606 "the sensor is given by the WSV *sensor_pos*. The function works\n"
19607 "only for 1D. The zenith angles are always set to be positive.\n"),
19608 AUTHORS(
"Patrick Eriksson",
"Mattias Ekstrom"),
19612 GOUT_DESC(
"Vector with zenith angles."),
19613 IN(
"refr_index_air_agenda",
19625 GIN_DESC(
"Vector with tangent altitudes.")));
19628 NAME(
"VectorZtanToZa1D"),
19630 "Converts a set of geometrical tangent altitudes to zenith angles.\n"
19632 "The tangent altitudes are given to the function as a vector, which\n"
19633 "are converted to a generic vector of zenith angles. The position of\n"
19634 "the sensor is given by the WSV *sensor_pos*. The function works\n"
19635 "only for 1D. The zenith angles are always set to be positive.\n"),
19636 AUTHORS(
"Patrick Eriksson",
"Mattias Ekstrom"),
19640 GOUT_DESC(
"Vector with zenith angles."),
19641 IN(
"sensor_pos",
"refellipsoid",
"atmosphere_dim"),
19645 GIN_DESC(
"Vector with tangent altitudes.")));
19648 NAME(
"verbosityInit"),
19650 "Initializes the verbosity levels.\n"
19652 "Sets verbosity to defaults or the levels specified by -r on the command line.\n"),
19665 NAME(
"verbositySet"),
19667 "Sets the verbosity levels.\n"
19669 "Sets the reporting level for agenda calls, screen and file.\n"
19670 "All reporting levels can reach from 0 (only error messages)\n"
19671 "to 3 (everything). The agenda setting applies in addition\n"
19672 "to both screen and file output.\n"),
19679 GIN(
"agenda",
"screen",
"file"),
19680 GIN_TYPE(
"Index",
"Index",
"Index"),
19682 GIN_DESC(
"Agenda verbosity level",
19683 "Screen verbosity level",
19684 "Report file verbosity level")));
19688 DESCRIPTION(
"Sets the verbosity level for agenda output.\n"
19690 "See *verbositySet*\n"),
19700 GIN_DESC(
"Agenda verbosity level")));
19704 DESCRIPTION(
"Sets the verbosity level for report file output.\n"
19706 "See *verbositySet*\n"),
19716 GIN_DESC(
"Report file verbosity level")));
19720 DESCRIPTION(
"Sets the verbosity level for screen output.\n"
19722 "See *verbositySet*\n"),
19732 GIN_DESC(
"Screen verbosity level")));
19735 NAME(
"vmr_fieldClip"),
19737 "Clipping of *vmr_field*.\n"
19739 "The method allows you to apply hard limits the values of *vmr_field*.\n"
19740 "All values, of the species selected, below *limit_low*, are simply\n"
19741 "set to *limit_low*. And the same is performed with respect to\n"
19742 "*limit_high*. That is, the data in x for the retrieval quantity are\n"
19743 "forced to be inside the range [limit_low,limit_high].\n"
19745 "Setting species=\"ALL\", is a shortcut for applying the limits on all\n"
19752 IN(
"vmr_field",
"abs_species"),
19753 GIN(
"species",
"limit_low",
"limit_high"),
19754 GIN_TYPE(
"String",
"Numeric",
"Numeric"),
19756 GIN_DESC(
"Name of species to consider, or \"ALL\".",
19757 "Lower limit for clipping.",
19758 "Upper limit for clipping.")));
19761 NAME(
"vmr_fieldPerturb"),
19762 DESCRIPTION(
"Adds a perturbation to *vmr_field*.\n"
19764 "Works as *AtmFieldPerturb* but acts on *vmr_field*.\n"),
19784 "String",
"Vector",
"Vector",
"Vector",
"Index",
"Numeric",
"String"),
19786 GIN_DESC(
"Name of species to perturb.",
19787 "Pressure retrieval grid.",
19788 "Latitude retrieval grid.",
19789 "Longitude retrieval grid.",
19790 "Index of position where the perturbation shall be performed.",
19791 "Size of perturbation.",
19792 "Type of perturbation, "
19799 NAME(
"vmr_fieldPerturbAtmGrids"),
19801 "Adds a perturbation to *vmr_field*.\n"
19803 "Works as *AtmFieldPerturbAtmGrids* but acts on *vmr_field*.\n"),
19815 GIN(
"species",
"pert_index",
"pert_size",
"pert_mode"),
19816 GIN_TYPE(
"String",
"Index",
"Numeric",
"String"),
19818 GIN_DESC(
"Name of species to perturb.",
19819 "Index of position where the perturbation shall be performed.",
19820 "Size of perturbation.",
19821 "Type of perturbation, "
19828 NAME(
"vmr_fieldSetAllConstant"),
19830 "Sets the VMR of all species to a select constant value.\n"
19832 "The *vmr_field* WSM must have a correct size before calling this method.\n"
19833 "The length of vmr_values and of abs_species must match.\n"),
19839 IN(
"vmr_field",
"abs_species"),
19843 GIN_DESC(
"VMR value to apply for each abs_species.")));
19846 NAME(
"water_p_eq_fieldMK05"),
19848 "Calculates *water_p_eq_field* according to Murphy and Koop, 2005.\n"
19850 "The saturation pressure is set to the one with respect to water at\n"
19851 "temperatures >= 0C, and to the one with respect to ice for <0C.\n"
19853 "The saturation pressure with respect to liquid and ice water is\n"
19854 "calculated according to Eq. 10 and 7, respectively, of:\n"
19855 "Murphy, D. M., & Koop, T. (2005). Review of the vapour pressures of\n"
19856 "ice and supercooled water for atmospheric applications. Quarterly\n"
19857 "Journal of the Royal Meteorological Society, 131(608), 1539-1565.\n"),
19859 OUT(
"water_p_eq_field"),
19870 NAME(
"vmr_fieldSetConstant"),
19872 "Sets the VMR of a species to a constant value.\n"
19874 "The *vmr_field* WSM must have a correct size before calling this method.\n"),
19880 IN(
"vmr_field",
"abs_species"),
19881 GIN(
"species",
"vmr_value"),
19885 "VMR value to apply for the selected species.")));
19888 NAME(
"Wigner6Init"),
19889 DESCRIPTION(
"Initialize the wigner 3 and 6 tables\n"
19891 "The default values take about 1 Gb 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)")));
19906 NAME(
"Wigner3Init"),
19909 "The default values take about 400 Mb memory.\n"),
19911 OUT(
"wigner_initialized"),
19916 GIN(
"fast_wigner_stored_symbols",
"largest_wigner_symbol_parameter"),
19920 "Number of stored symbols possible before replacements",
19921 "Largest symbol used for initializing factorials (e.g., largest J or L)")));
19925 DESCRIPTION(
"Unloads the wigner 3 and 6 tables\n"),
19927 OUT(
"wigner_initialized"),
19931 IN(
"wigner_initialized"),
19940 OUT(
"wigner_initialized"),
19944 IN(
"wigner_initialized"),
19951 NAME(
"WignerFastInfoPrint"),
19953 "Prints the fast wigner table information if compiled with this option\n"),
19959 IN(
"wigner_initialized"),
19966 NAME(
"WindFieldsCalc"),
19968 "Interpolation of raw wind fields to calculation grids.\n"
19969 "Heritage from *AtmFieldsCalc*\n"
19971 "Internally, *WindFieldsCalc* applies *GriddedFieldPRegrid* and\n"
19972 "*GriddedFieldLatLonRegrid*. Generally, 'half-grid-step' extrapolation\n"
19973 "is allowed and applied.\n"),
19975 OUT(
"wind_u_field",
"wind_v_field",
"wind_w_field"),
19982 "wind_u_field_raw",
19983 "wind_v_field_raw",
19984 "wind_w_field_raw",
19986 GIN(
"interp_order"),
19989 GIN_DESC(
"Interpolation order (1=linear interpolation).")));
19992 NAME(
"WindFieldsCalcExpand1D"),
19994 "Interpolation of 1D raw atmospheric fields to create 2D or 3D\n"
19995 "homogeneous wind fields. Derived from *AtmFieldsCalcExpand1D*\n"
19997 "The method works as *WindFieldsCalc*, but accepts only raw 1D\n"
19998 "wind fields. The raw data is interpolated to *p_grid* and\n"
19999 "the obtained values are applied for all latitudes, and also\n"
20000 "longitudes for 3D, to create a homogeneous atmosphere.\n"),
20002 OUT(
"wind_u_field",
"wind_v_field",
"wind_w_field"),
20009 "wind_u_field_raw",
20010 "wind_v_field_raw",
20011 "wind_w_field_raw",
20013 GIN(
"interp_order"),
20016 GIN_DESC(
"Interpolation order (1=linear interpolation).")));
20019 NAME(
"WindRawRead"),
20021 "Reads wind field data from a scenario.\n"
20023 "A full set of field components is read (NOTE: fails if scenario\n"
20024 "only contains selected field components). The files can be\n"
20025 "anywhere, but must all be in the same directory specified by\n"
20026 "'basename'. Naming convention for the field component files is\n"
20027 "basename.wind_u.xml for the u-component, v- and w-components\n"
20030 OUT(
"wind_u_field_raw",
"wind_v_field_raw",
"wind_w_field_raw"),
20038 GIN_DESC(
"Name of scenario, probably including the full path. For "
20039 "example: \"/data/wind_field\"")));
20042 NAME(
"wind_u_fieldIncludePlanetRotation"),
20044 "Maps the planet's rotation to an imaginary wind.\n"
20046 "This method is of relevance if the observation platform is not\n"
20047 "following the planet's rotation, and Doppler effects must be\n"
20048 "considered. Examples include full disk observations from another\n"
20049 "planet or a satellite not in orbit of the observed planet.\n"
20051 "The rotation of the planet is not causing any Doppler shift for\n"
20052 "1D and 2D simulations, and the method can only be used for 3D.\n"),
20054 OUT(
"wind_u_field"),
20065 "planet_rotation_period"),
20072 NAME(
"WMRFSelectChannels"),
20074 "Select some channels for WMRF calculation.\n"
20076 "The HIRS fast setup consists of a precalculated frequency grid\n"
20077 "covering all HIRS channels, and associated weights for each channel,\n"
20078 "stored in a weight matrix. (A *sensor_response* matrix.)\n"
20080 "If not all channels are requested for\n"
20081 "simulation, then this method can be used to remove the unwanted\n"
20082 "channels. It changes a number of variables in consistent fashion:\n"
20084 "- Unwanted channels are removed from f_backend. \n"
20085 "- Unwanted channels are removed from wmrf_weights.\n"
20086 "- Unnecessary frequencies are removed from f_grid.\n"
20087 "- Unnecessary frequencies are removed from wmrf_weights.\n"),
20089 OUT(
"f_grid",
"wmrf_weights",
"f_backend"),
20093 IN(
"f_grid",
"f_backend",
"wmrf_weights",
"wmrf_channels"),
20100 NAME(
"WriteMolTau"),
20102 "Writes a 'molecular_tau_file' as required for libRadtran.\n"
20104 "The libRadtran (www.libradtran.org) radiative transfer package is a \n"
20105 "comprehensive package for various applications, it can be used to \n"
20106 "compute radiances, irradiances, actinic fluxes, ... for the solar \n"
20107 "and the thermal spectral ranges. Absorption is usually treated using \n"
20108 "k-distributions or other parameterizations. For calculations with high \n"
20109 "spectral resolution it requires absorption coefficients from an external \n"
20110 "line-by-line model. Using this method, arts generates a file that can be \n"
20111 "used by libRadtran (option molecular_tau_file)."
20118 IN(
"f_grid",
"z_field",
"propmat_clearsky_field",
"atmosphere_dim"),
20122 GIN_DESC(
"Name of the *molecular_tau_file*.")));
20125 NAME(
"WriteNetCDF"),
20126 DESCRIPTION(
"Writes a workspace variable to a NetCDF file.\n"
20128 "This method can write variables of limited groups.\n"
20130 "If the filename is omitted, the variable is written\n"
20131 "to <basename>.<variable_name>.nc.\n"),
20138 GIN(
"in",
"filename"),
20139 GIN_TYPE(
"Vector, Matrix, Tensor3, Tensor4, Tensor5, ArrayOfVector,"
20140 "ArrayOfMatrix, GasAbsLookup",
20143 GIN_DESC(
"Variable to be saved.",
"Name of the NetCDF file."),
20151 NAME(
"WriteNetCDFIndexed"),
20152 DESCRIPTION(
"As *WriteNetCDF*, but creates indexed file names.\n"
20154 "This method can write variables of any group.\n"
20156 "If the filename is omitted, the variable is written\n"
20157 "to <basename>.<variable_name>.nc.\n"),
20164 GIN(
"in",
"filename"),
20165 GIN_TYPE(
"Vector, Matrix, Tensor3, Tensor4, Tensor5, ArrayOfVector,"
20166 "ArrayOfMatrix, GasAbsLookup",
20169 GIN_DESC(
"Variable to be saved.",
"Name of the NetCDF file."),
20178 DESCRIPTION(
"Writes a workspace variable to an XML file.\n"
20180 "This method can write variables of any group.\n"
20182 "If the filename is omitted, the variable is written\n"
20183 "to <basename>.<variable_name>.xml.\n"
20184 "If no_clobber is set to 1, an increasing number will be\n"
20185 "appended to the filename if the file already exists.\n"),
20191 IN(
"output_file_format"),
20192 GIN(
"in",
"filename",
"no_clobber"),
20193 GIN_TYPE(
"Any",
"String",
"Index"),
20196 "Name of the XML file.",
20197 "0: Overwrite existing files, 1: Use unique filenames"),
20205 NAME(
"WriteXMLIndexed"),
20206 DESCRIPTION(
"As *WriteXML*, but creates indexed file names.\n"
20208 "The variable is written to a file with name:\n"
20209 " <filename>.<file_index>.xml.\n"
20210 "where <file_index> is the value of *file_index*.\n"
20212 "This means that *filename* shall here not include the .xml\n"
20213 "extension. Omitting filename works as for *WriteXML*.\n"),
20214 AUTHORS(
"Patrick Eriksson, Oliver Lemke"),
20219 IN(
"output_file_format",
"file_index"),
20220 GIN(
"in",
"filename",
"digits"),
20221 GIN_TYPE(
"Any",
"String",
"Index"),
20224 "Workspace variable to be saved.",
20225 "File name. See above.",
20226 "Equalize the widths of all numbers by padding with zeros as necessary.\n"
20227 "0 means no padding (default)."),
20235 NAME(
"xaStandard"),
20237 "Standard function for creating *xa*.\n"
20239 "The method creates *xa* based on *jacobian_quantities* and the various\n"
20240 "atmospheric fields. In the case of scattering species, the data are\n"
20241 "taken from *particle_bulkprop_field*. The following retrieval quantities\n"
20244 " Absorption species\n"
20245 " Scattering species\n"
20247 " Polynomial baseline fit\n"
20248 " Sinusoidal baseline fit\n"),
20254 IN(
"jacobian_quantities",
20255 "atmfields_checked",
20265 "cloudbox_checked",
20266 "particle_bulkprop_field",
20267 "particle_bulkprop_names",
20274 "surface_props_data",
20275 "surface_props_names",
20276 "water_p_eq_agenda"),
20285 "Clipping of the state vector.\n"
20287 "The method allows you to apply hard limits the values of a\n"
20288 "retrieval quantity. The retrieval quantity is specified by\n"
20289 "*ijq*. All values of the quantity below *limit_low*, are simply\n"
20290 "set to *limit_low*. And the same is performed with respect to\n"
20291 "*limit_high*. That is, the data in x for the retrieval quantity\n"
20292 "are forced to be inside the range [limit_low,limit_high].\n"
20294 "Setting ijq=-1, is a shortcut for applying the limits on all\n"
20295 "retrieval quantities.\n"
20297 "Notice that limits must be specified in the unit used in *x*.\n"),
20303 IN(
"x",
"jacobian_quantities"),
20304 GIN(
"ijq",
"limit_low",
"limit_high"),
20305 GIN_TYPE(
"Index",
"Numeric",
"Numeric"),
20307 GIN_DESC(
"Retrieval quantity index (zero-based)",
20308 "Lower limit for clipping.",
20309 "Upper limit for clipping.")));
20312 NAME(
"x2artsAtmAndSurf"),
20314 "Maps *x* to atmospheric and surface variables.\n"
20316 "Maps OEM's state vector, *x*, to the matching ARTS variables. This\n"
20317 "method handles atmospheric and surface variables. If you retrieve\n"
20318 "other variables, make sure that you also call *x2artsSensor* and/or\n"
20319 "*x2artsSpectroscopy*.\n"
20321 "The following retrieval quantities are handled by this method:\n"
20323 " Absorption species\n"
20324 " Scattering species\n"
20326 " Surface variables\n"
20328 "Should only be used inside *inversion_iterate_agenda*.\n"),
20332 "particle_bulkprop_field",
20339 "surface_props_data"),
20345 "particle_bulkprop_field",
20352 "surface_props_data",
20353 "jacobian_quantities",
20355 "atmfields_checked",
20363 "cloudbox_checked",
20364 "particle_bulkprop_names",
20365 "surface_props_names",
20366 "water_p_eq_agenda"),
20373 NAME(
"x2artsSensor"),
20375 "Maps *x* to sensor variables.\n"
20377 "Maps OEM's state vector, *x*, to the matching ARTS variables. This\n"
20378 "method handles variables associated with the sensor. If you retrieve\n"
20379 "other variables, make sure that you also call *x2artsAtmAndSurf*\n"
20380 " and/or *x2artsSpectroscopy*.\n"
20382 "The following retrieval quantities are handled by this method:\n"
20384 " Frequency shift and stretch\n"
20387 "Should only be used inside *inversion_iterate_agenda*.\n"
20389 "Elements in *x* representing pointing corrections are mapped to\n"
20390 "*sensor_los*. Elements representing frequency corrections are mapped\n"
20391 "to *f_backend*. Baseline variables are mapped to *y_baseline*.\n"
20393 "The sensor response is recalculated if there is any non-zero frequency\n"
20400 "sensor_response_f",
20401 "sensor_response_pol",
20402 "sensor_response_dlos",
20403 "sensor_response_f_grid",
20404 "sensor_response_pol_grid",
20405 "sensor_response_dlos_grid",
20406 "mblock_dlos_grid"),
20413 "sensor_response_f",
20414 "sensor_response_pol",
20415 "sensor_response_dlos",
20416 "sensor_response_f_grid",
20417 "sensor_response_pol_grid",
20418 "sensor_response_dlos_grid",
20419 "mblock_dlos_grid",
20420 "jacobian_quantities",
20422 "sensor_response_agenda",
20431 NAME(
"x2artsSpectroscopy"),
20432 DESCRIPTION(
"Just defined to indicate a future extensiom.\n"
20434 "Don't call the method, it will just generate an error.\n"),
20447 NAME(
"yApplySensorPol"),
20449 "Extraction of arbitrary linear polarisation.\n"
20451 "This method shall be called after *yCalc* and then applies *sensor_pol*\n"
20452 "on the outout of *yCalc*. See *sensor_pol* for definition of the\n"
20453 "polarisation responses. THe *sensor_response* give to *yCalc* can not\n"
20454 "contain any polarisation response, it must maintain original Stokes\n"
20455 "elelemnts. The value of *stokes_dim* muist be >= 3.\n"
20457 "The values in *sensor_pol* are applied on *y*, and *jacobian* if relevant.\n"
20458 "*y_pol* is set following the values in *sensor_pol* but is rounded to\n"
20459 "an integer value. Remaining data associated with *y* (e.g. y_pos) are\n"
20460 "set to the value matching the first Stokes element.\n"),
20462 OUT(
"y",
"y_f",
"y_pol",
"y_pos",
"y_los",
"y_aux",
"y_geo",
"jacobian"),
20484 NAME(
"yApplyUnit"),
20486 "Conversion of *y* to other spectral units.\n"
20488 "Any conversion to brightness temperature is normally made inside\n"
20489 "*yCalc*. This method makes it possible to also make this conversion\n"
20490 "after *yCalc*, but with restrictions for *jacobian* and with.\n"
20491 "respect to the n2-law of radiance.\n"
20493 "The conversion made inside *iyEmissionStandard* is mimiced\n"
20494 "and see that method for constraints and selection of output units.\n"
20495 "This with the restriction that the n2-law can be ignored. The later\n"
20496 "is the case if the sensor is placed in space, or if the refractive\n"
20497 "only devaites slightly from unity.\n"
20499 "The method handles *y* and *jacobian* in parallel, where\n"
20500 "the last variable is only considered if it is set. The\n"
20501 "input data must be in original radiance units. A completely\n"
20502 "stringent check of this can not be performed.\n"
20504 "The method can not be used with jacobian quantities that are not\n"
20505 "obtained through radiative transfer calculations. One example on\n"
20506 "quantity that can not be handled is *jacobianAddPolyfit*. There\n"
20507 "are no automatic checks warning for incorrect usage!\n"
20509 "If you are using this method, *iy_unit* should be set to \"1\" when\n"
20510 "calling *yCalc*, and be changed before calling this method.\n"
20512 "Conversion of *y_aux* is not supported.\n"),
20514 OUT(
"y",
"jacobian"),
20518 IN(
"y",
"jacobian",
"y_f",
"y_pol",
"iy_unit"),
20525 NAME(
"ybatchCalc"),
20527 "Performs batch calculations for the measurement vector y.\n"
20529 "We perform *ybatch_n* jobs, starting at index *ybatch_start*. (Zero\n"
20530 "based indexing, as usual.) The output array *ybatch* will have\n"
20531 "ybatch_n elements. Indices in the output array start\n"
20532 "with zero, independent of *ybatch_start*.\n"
20534 "The method performs the following:\n"
20535 " 1. Sets *ybatch_index* = *ybatch_start*.\n"
20536 " 2. Performs a-d until\n"
20537 " *ybatch_index* = *ybatch_start* + *ybatch_n*.\n"
20538 " a. Executes *ybatch_calc_agenda*.\n"
20539 " b. If *ybatch_index* = *ybatch_start*, resizes *ybatch*\n"
20540 " based on *ybatch_n* and length of *y*.\n"
20541 " c. Copies *y* to *ybatch_index* - *ybatch_start*\n"
20543 " d. Adds 1 to *ybatch_index*.\n"
20545 "Beside the *ybatch_calc_agenda*, the WSVs *ybatch_start*\n"
20546 "and *ybatch_n* must be set before calling this method.\n"
20547 "Further, *ybatch_calc_agenda* is expected to produce a\n"
20548 "spectrum and should accordingly include a call of *yCalc*\n"
20549 "(or asimilar method).\n"
20551 "The input variable *ybatch_start* is set to a default of zero in\n"
20552 "*general.arts*.\n"
20554 "An agenda that calculates spectra for different temperature profiles\n"
20555 "could look like this:\n"
20557 " AgendaSet(ybatch_calc_agenda){\n"
20558 " Extract(t_field,tensor4_1,ybatch_index)\n"
20562 "Jacobians are also collected, and stored in output variable *ybatch_jacobians*. \n"
20563 "(This will be empty if yCalc produces empty Jacobians.)\n"
20565 "See the user guide for further practical examples.\n"),
20567 OUT(
"ybatch",
"ybatch_aux",
"ybatch_jacobians"),
20571 IN(
"ybatch_start",
"ybatch_n",
"ybatch_calc_agenda"),
20575 GIN_DESC(
"A flag with value 1 or 0. If set to one, the batch\n"
20576 "calculation will continue, even if individual jobs fail. In\n"
20577 "that case, a warning message is written to screen and file\n"
20578 "(out1 output stream), and the *y* Vector entry for the\n"
20579 "failed job in *ybatch* is left empty.")));
20582 NAME(
"yColdAtmHot"),
20584 "Computes *y* from input using standard calibration scheme of cold-atm-hot observations\n"
20586 "If calib evaluates as true:\n"
20587 " y = cold_temp + (hot_temp - cold_temp) * (atm - cold) / (hot - cold)\n"
20589 "If calib evaluates as false:\n"
20590 " y = (hot_temp * cold - cold_temp * hot) / (hot - cold)\n"),
20597 GIN(
"cold",
"atm",
"hot",
"cold_temp",
"hot_temp",
"calib"),
20598 GIN_TYPE(
"Vector",
"Vector",
"Vector",
"Numeric",
"Numeric",
"Index"),
20600 GIN_DESC(
"N-elem Vector of cold load linear power",
20601 "N-elem Vector of atmosphere linear power",
20602 "N-elem Vector of hot load linear power",
20603 "Cold load temperature",
20604 "Hot load temperature",
20605 "Flag for calibration scheme, false means system temperature is computed")));
20608 NAME(
"ybatchMetProfiles"),
20610 "This method is used for simulating ARTS for metoffice model fields"
20612 "This method reads in *met_amsu_data* which contains the\n"
20613 "lat-lon of the metoffice profile files as a Matrix. It then\n"
20614 "loops over the number of profiles and corresponding to each\n"
20615 "longitude create the appropriate profile basename. Then,\n"
20616 "corresponding to each basename we have temperature field, altitude\n"
20617 "field, humidity field, and particle number density field. The\n"
20618 "temperature field and altitude field are stored in the same dimensions\n"
20619 "as *t_field_raw* and *z_field_raw*. The oxygen and nitrogen VMRs are\n"
20620 "set to constant values of 0.209 and 0.782, respectively and are used\n"
20621 "along with humidity field to generate *vmr_field_raw*. \n"
20623 "The three fields *t_field_raw*, *z_field_raw*, and *vmr_field_raw* are\n"
20624 "given as input to *met_profile_calc_agenda* which is called in this\n"
20625 "method. See documentation of WSM *met_profile_calc_agenda* for more\n"
20626 "information on this agenda. \n"
20628 "The method also converts satellite zenith angle to appropriate\n"
20629 "*sensor_los*. It also sets the *p_grid* and *cloudbox_limits*\n"
20630 "from the profiles inside the function\n"),
20637 "met_profile_calc_agenda",
20646 GIN(
"nelem_p_grid",
"met_profile_path",
"met_profile_pnd_path"),
20647 GIN_TYPE(
"Index",
"String",
"String"),
20649 GIN_DESC(
"FIXME DOC",
"FIXME DOC",
"FIXME DOC")));
20652 NAME(
"ybatchMetProfilesClear"),
20654 "This method is used for simulating ARTS for metoffice model fields\n"
20655 "for clear sky conditions.\n"
20657 "This method reads in *met_amsu_data* which contains the\n"
20658 "lat-lon of the metoffice profile files as a Matrix. It then\n"
20659 "loops over the number of profiles and corresponding to each\n"
20660 "longitude create the appropriate profile basename. Then,\n"
20661 "Corresponding to each basename we have temperature field, altitude\n"
20662 "field, humidity field, and particle number density field. The\n"
20663 "temperature field and altitude field are stored in the same dimensions\n"
20664 "as *t_field_raw* and *z_field_raw*. The oxygen and nitrogen VMRs are\n"
20665 "set to constant values of 0.209 and 0.782, respectively and are used\n"
20666 "along with humidity field to generate *vmr_field_raw*. \n"
20668 "The three fields *t_field_raw*, *z_field_raw*, and *vmr_field_raw* are\n"
20669 "given as input to *met_profile_calc_agenda* which is called in this\n"
20670 "method. See documentation of WSM *met_profile_calc_agenda* for more\n"
20671 "information on this agenda. \n"
20673 "The method also converts satellite zenith angle to appropriate\n"
20674 "*sensor_los*. It also sets the *p_grid* and *cloudbox_limits*\n"
20675 "from the profiles inside the function\n"),
20682 "met_profile_calc_agenda",
20687 GIN(
"nelem_p_grid",
"met_profile_path"),
20690 GIN_DESC(
"FIXME DOC",
"FIXME DOC")));
20694 NAME(
"ybatchTimeAveraging"),
20696 "Time average of *ybatch* and *time_grid*\n"
20698 "Computes the internal covariance matrix in *covmat_sepsbatch*, and\n"
20699 "stores the number of elements per averaging in *counts*\n"),
20701 OUT(
"ybatch",
"time_grid",
"covmat_sepsbatch",
"counts"),
20705 IN(
"ybatch",
"time_grid"),
20706 GIN(
"time_step",
"disregard_first",
"disregard_last"),
20707 GIN_TYPE(
"String",
"Index",
"Index"),
20709 GIN_DESC(
"Time step in the form \"INDEX SCALE\", where SCALE is \"h\", \"min\", or \"s\" for hours, minutes or seconds",
20710 "Flag to remove first time step (e.g., if it is an incomplete step)",
20711 "Flag to remove last time step (e.g., if it is an incomplete step)")));
20714 NAME(
"ybatchTroposphericCorrectionNaiveMedianForward"),
20716 "Performs naive tropospheric corrections on *ybatch*\n"
20718 "Sets *ybatch_corr* to be able to perform the inverse of the corrections,\n"
20719 "each array-element with 3 entries as [median, part_trans, trop_temp]\n"),
20721 OUT(
"ybatch_corr",
"ybatch"),
20726 GIN(
"range",
"trop_temp",
"targ_temp"),
20727 GIN_TYPE(
"ArrayOfIndex",
"Vector",
"Numeric"),
20729 GIN_DESC(
"Positions where the median of the baseline is computed, if empty all is used",
20730 "Radiative temperature of the troposphere",
20731 "Temperature target of the baseline")));
20734 NAME(
"ybatchTroposphericCorrectionNaiveMedianInverse"),
20736 "Performs inverse of naive tropospheric corrections on *ybatch*\n"),
20742 IN(
"ybatch",
"ybatch_corr"),
20751 "Calculation of complete measurement vectors (y).\n"
20753 "The method performs radiative transfer calculations from a sensor\n"
20754 "perspective. Radiative transfer calculations are performed for\n"
20755 "monochromatic pencil beams, following *iy_main_agenda* and\n"
20756 "associated agendas. Obtained radiances are weighted together by\n"
20757 "*sensor_response*, to include the characteristics of the sensor.\n"
20758 "The measurement vector obtained can contain anything from a single\n"
20759 "frequency value to a series of measurement scans (each consisting\n"
20760 "of a series of spectra), all depending on the settings. Spectra\n"
20761 "and jacobians are calculated in parallel.\n"
20763 "The frequency, polarisation etc. for each measurement value is\n"
20764 "given by *y_f*, *y_pol*, *y_pos* and *y_los*.\n"
20766 "The content of *y_aux* follows *iy_aux_vars. See the method selected\n"
20767 "for *iy_main_agenda* for allowed choices.\n"
20769 "The geo-positions (*y_geo*) are set based on *sensor_response*. When\n"
20770 "an antenna pattern is considered, there are several pencil beams,\n"
20771 "and thus also several goe-positions, associated with each value of *y*.\n"
20772 "The geo-position assigned to a value in *y* is the *geo_pos* of the pencil\n"
20773 "beam related to the highest value in *sensor_response*. This means that\n"
20774 "*mblock_dlos_grid* must contain the bore-sight direction (0,0), if you\n"
20775 "want *y_geo* to exactly match the bore-sight direction.\n"
20777 "The Jacobian provided (*jacobian*) is adopted to selected retrieval\n"
20778 "units, but no transformations are applied. Transformations are\n"
20779 "included by calling *jacobianAdjustAndTransform*.\n"),
20781 OUT(
"y",
"y_f",
"y_pol",
"y_pos",
"y_los",
"y_aux",
"y_geo",
"jacobian"),
20785 IN(
"atmgeom_checked",
20786 "atmfields_checked",
20790 "cloudbox_checked",
20791 "scat_data_checked",
20798 "mblock_dlos_grid",
20800 "sensor_response_f",
20801 "sensor_response_pol",
20802 "sensor_response_dlos",
20808 "jacobian_quantities",
20816 NAME(
"yCalcAppend"),
20818 "Replaces *yCalc* if a measurement shall be appended to an\n"
20821 "The method works basically as *yCalc* but appends the results to\n"
20822 "existing data, instead of creating completely new *y* and its\n"
20823 "associated variables. This method is required if your measurement\n"
20824 "consists of data from two instruments using different observation\n"
20825 "techniques (corresponding to different iyCalc-methods). One such\n"
20826 "example is if emission and transmission data are combined into a\n"
20827 "joint retrieval. The method can also be used to get around the\n"
20828 "constrain that *sensor_response* is required to be the same for\n"
20831 "The new measurement is simply appended to the input *y*, and the\n"
20832 "other output variables are treated correspondingly. Data are\n"
20833 "appended \"blindly\" in *y_aux*. That is, data of different type\n"
20834 "are appended if *iy_aux_vars* differs between the two measurements,\n"
20835 "the data are appended strictly following the order. First variable\n"
20836 "of second measurement is appended to first variable of first\n"
20837 "measurement, and so on. The number of auxiliary variables can differ\n"
20838 "between the measurements. Missing data are set to zero.\n"
20840 "The set of retrieval quantities can differ between the two\n"
20841 "calculations. If an atmospheric quantity is part of both Jacobians,\n"
20842 "the same retrieval grids must be used in both cases.\n"
20843 "The treatment of instrument related Jacobians (baseline fits,\n"
20844 "pointing ...) follows the *append_instrument_wfs* argument.\n"
20846 "A difference to *yCalc* is that *jacobian_quantities* is both in-\n"
20847 "and output variable. The input version shall match the measurement\n"
20848 "to be calculated, while the output version matches the output *y*,\n"
20849 "the combined, measurements. A copies of *jacobian_quantities* of the\n"
20850 "first measurement must be made and shall be provided to the method\n"
20851 "as *jacobian_quantities_copy*.\n"
20853 "As for *yCalc* Jacobian transformations are not handled, and the\n"
20854 "the input Jacobian shall not contain transformations. That is\n"
20855 "*jacobianAdjustAndTransform* shall be called after this method,\n"
20856 "when the complete Jacobian is at hand.\n"),
20866 "jacobian_quantities"),
20879 "atmfields_checked",
20883 "cloudbox_checked",
20884 "scat_data_checked",
20891 "mblock_dlos_grid",
20893 "sensor_response_f",
20894 "sensor_response_pol",
20895 "sensor_response_dlos",
20901 "jacobian_quantities",
20903 GIN(
"jacobian_quantities_copy",
"append_instrument_wfs"),
20904 GIN_TYPE(
"ArrayOfRetrievalQuantity",
"Index"),
20906 GIN_DESC(
"Copy of *jacobian_quantities* of first measurement.",
20907 "Flag controlling if instrumental weighting functions are "
20908 "appended or treated as different retrieval quantities.")));
20913 "Replaces *yCalc* for radar/lidar calculations.\n"
20915 "The output format for *iy* when simulating radars and lidars differs\n"
20916 "from the standard one, and *yCalc* can not be used for such simulations.\n"
20917 "This method works largely as *yCalc*, but is tailored to handle the\n"
20918 "output from *iyActiveSingleScat*.\n"
20920 "The method requires additional information about the sensor,\n"
20921 "regarding its recieving properties. First of all, recieved\n"
20922 "polarisation states are taken from *instrument_pol_array*. Note\n"
20923 "that this WSV allows to define several measured polarisations\n"
20924 "for each transmitted signal. For example, it is possible to\n"
20925 "simulate transmission of V and measuring backsacttered V and H.\n"
20927 "Secondly, the range averaging is described by *range_bins*. These\n"
20928 "bins can either be specified in altitude or two-way travel time.\n"
20929 "In both case, the edges of the range bins shall be specified.\n"
20930 "All data (including auxiliary variables) are returned as the\n"
20931 "average inside the bins. If a bin is totally outside the model\n"
20932 "atmosphere, NaN is returned.\n"
20934 "The options for *iy_unit* are:\n"
20935 " \"1\" : Backscatter coefficient. Unit is 1/(m*sr). At zero\n"
20936 " attenuation, this equals the scattering matrix value for\n"
20937 " the backward direction. See further AUG.\n"
20938 " \"Ze\" : Equivalent reflectivity. Unit is mm^6/m^3. Conversion\n"
20939 " formula is given below.\n"
20940 " \"dBZe\": 10*log10(Ze/Z0), where Z0 is 1 mm^6/m^3.\n"
20942 "The conversion from backscatter coefficient to Ze is:\n"
20943 " Ze = 1e18 * lambda^4 / (k2 * pi^5) * sum(sigma),\n"
20944 "where sum(sigma) = 4 * pi * b, and b is the backscatter coefficient.\n"
20946 "The reference dielectric factor can either specified directly by\n"
20947 "the argument *k2*. For example, to mimic the CloudSat data, *k2*\n"
20948 "shall be set to 0.75 (citaion needed). If *k2* is set to be \n"
20949 "negative (which is defualt), k2 is calculated as:\n"
20950 " k2 = abs( (n^2-1)/(n^2+2) )^2,\n"
20951 "where n is the refractive index of liquid water at temperature\n"
20952 "*ze_tref* and the frequency of the radar, calculated by the MPM93\n"
20953 "parameterization.\n"
20955 "A lower limit for dBZe is applied (*dbze_min*). The main reason is to\n"
20956 "handle the fact dBZe is not defined for Ze=0, and dBZe is set to the\n"
20957 "clip value when Ze < 10^(dbze_min/10).\n"),
20959 OUT(
"y",
"y_f",
"y_pol",
"y_pos",
"y_los",
"y_aux",
"y_geo",
"jacobian"),
20963 IN(
"atmgeom_checked",
20964 "atmfields_checked",
20972 "cloudbox_checked",
20977 "jacobian_quantities",
20980 "instrument_pol_array",
20982 GIN(
"ze_tref",
"k2",
"dbze_min"),
20983 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric"),
20985 GIN_DESC(
"Reference temperature for conversion to Ze.",
20986 "Reference dielectric factor.",
20987 "Clip value for dBZe.")));
20990 NAME(
"ySimpleSpectrometer"),
20992 "Converts *iy* to *y* assuming a fixed frequency resolution.\n"
20994 "This is a short-cut, avoiding *yCalc*, that can be used to convert\n"
20995 "monochromatic pencil beam data to spectra with a fixed resolution.\n"
20997 "The method mimics a spectrometer with rectangular response\n"
20998 "functions, all having the same width (*df*). The position of\n"
20999 "the first spectrometer channel is set to f_grid[0]+df/2.\n"
21000 "The centre frequency of channels are returned as *y_f*.\n"
21002 "Auxiliary variables and *jacobian*s are not handled.\n"),
21008 IN(
"iy",
"stokes_dim",
"f_grid"),
21012 GIN_DESC(
"Selected frequency resolution.")));
21015 NAME(
"z_fieldFromHSE"),
21017 "Force altitudes to fulfil hydrostatic equilibrium.\n"
21019 "The method applies hydrostatic equilibrium. A mixture of \"dry\n"
21020 "air\" and water vapour (if present as *abs_species* tag) is assumed.\n"
21021 "That is, the air is assumed to be well mixed and its weight, apart\n"
21022 "from the water vapour, is constant (*molarmass_dry_air*). In\n"
21023 "addition, the effect of any particles (including liquid and ice\n"
21024 "particles) is neglected.\n"
21026 "The output is an update of *z_field*. This variable is expected to\n"
21027 "contain approximative altitudes when calling the function. The\n"
21028 "altitude matching *p_hse* is kept constant. Other input altitudes can\n"
21029 "basically be arbitrary, but good estimates give quicker calculations.\n"
21031 "The calculations are repeated until the change in altitude is below\n"
21032 "*z_hse_accuracy*. An iterative process is needed as gravity varies\n"
21035 "For 1D and 2D, the geographical position is taken from *lat_true*\n"
21036 "and *lon_true*.\n"),
21042 IN(
"atmosphere_dim",
21054 "atmfields_checked",
21056 "molarmass_dry_air",