43 template <
typename ... T>
49 template <
size_t LEN_OF_NAME,
50 size_t LEN_OF_DESCRIPTION,
51 size_t NUM_OF_AUTHORS,
52 size_t NUM_OF_OUTPUTS,
53 size_t NUM_OF_GOUT_ARGS,
54 size_t NUM_OF_GOUT_TYPES,
55 size_t NUM_OF_GOUT_DESCRIPTIONS,
57 size_t NUM_OF_GIN_ARGS,
58 size_t NUM_OF_GIN_TYPES,
59 size_t NUM_OF_GIN_DEFAULTS,
60 size_t NUM_OF_GIN_DESCRIPTIONS,
63 const char (&name) [LEN_OF_NAME],
64 const char (&description) [LEN_OF_DESCRIPTION],
65 const std::array<String, NUM_OF_AUTHORS>& authors,
66 const std::array<String, NUM_OF_OUTPUTS>& output,
67 const std::array<String, NUM_OF_GOUT_ARGS>& gout,
68 const std::array<String, NUM_OF_GOUT_TYPES>& gouttype,
69 const std::array<String, NUM_OF_GOUT_DESCRIPTIONS>& goutdesc,
70 const std::array<String, NUM_OF_INPUTS>& input,
71 const std::array<String, NUM_OF_GIN_ARGS>& gin,
72 const std::array<String, NUM_OF_GIN_TYPES>& gintype,
73 const std::array<String, NUM_OF_GIN_DEFAULTS>& gindefault,
74 const std::array<String, NUM_OF_GIN_DESCRIPTIONS>& gindesc,
77 static_assert(LEN_OF_NAME > 1,
"Must have a name");
78 static_assert(LEN_OF_DESCRIPTION > 1,
"Must have a description");
79 static_assert(NUM_OF_AUTHORS not_eq 0,
"Must have at least one author");
80 static_assert(NUM_OF_GOUT_ARGS == NUM_OF_GOUT_TYPES,
"GOUT type(s) count does not match number of GOUT");
81 static_assert(NUM_OF_GOUT_ARGS == NUM_OF_GOUT_DESCRIPTIONS,
"GOUT description(s) count does not match number of GOUT");
82 static_assert(NUM_OF_GIN_ARGS == NUM_OF_GIN_TYPES,
"GIN type(s) count does not match number of GIN");
83 static_assert(NUM_OF_GIN_ARGS == NUM_OF_GIN_DEFAULTS,
"GIN default(s) count does not match number of GIN");
84 static_assert(NUM_OF_GIN_ARGS == NUM_OF_GIN_DESCRIPTIONS,
"GIN description(s) count does not match number of GIN");
103 #define DESCRIPTION(x) x 104 #define AUTHORS(...) \ 105 string_array( __VA_ARGS__ ) 107 string_array( __VA_ARGS__ ) 109 string_array( __VA_ARGS__ ) 110 #define GOUT_TYPE(...) \ 111 string_array( __VA_ARGS__ ) 112 #define GOUT_DESC(...) \ 113 string_array( __VA_ARGS__ ) 115 string_array( __VA_ARGS__ ) 117 string_array( __VA_ARGS__ ) 118 #define GIN_TYPE(...) \ 119 string_array( __VA_ARGS__ ) 120 #define GIN_DEFAULT(...) \ 121 string_array( __VA_ARGS__ ) 122 #define GIN_DESC(...) \ 123 string_array( __VA_ARGS__ ) 124 #define SETMETHOD(x) x 125 #define AGENDAMETHOD(x) x 126 #define USES_TEMPLATES(x) x 127 #define PASSWORKSPACE(x) x 128 #define PASSWSVNAMES(x) x 203 const String ARRAY_GROUPS_WITH_BASETYPE =
215 String(
"Creates a variable of group " + *it +
218 "After being created, the variable is uninitialized.\n")
242 NAME(
"AbsInputFromAtmFields"),
243 DESCRIPTION(
"Initialises the WSVs *abs_p*, *abs_t* and *abs_vmrs* from\n" 244 "*p_grid, *t_field* and *vmr_field*.\n" 246 "This only works for a 1D atmosphere!\n"),
248 OUT(
"abs_p",
"abs_t",
"abs_vmrs"),
252 IN(
"atmosphere_dim",
"p_grid",
"t_field",
"vmr_field"),
259 NAME(
"AbsInputFromRteScalars"),
261 "Initialize absorption input WSVs from local atmospheric conditions.\n" 263 "The purpose of this method is to allow an explicit line-by-line\n" 264 "calculation, e.g., by *abs_coefCalcFromXsec*, to be put inside the\n" 265 "*propmat_clearsky_agenda*. What the method does is to prepare absorption\n" 266 "input parameters (pressure, temperature, VMRs), from the input\n" 267 "parameters to *propmat_clearsky_agenda*.\n"),
269 OUT(
"abs_p",
"abs_t",
"abs_vmrs"),
273 IN(
"rtp_pressure",
"rtp_temperature",
"rtp_vmr"),
280 NAME(
"abs_cia_dataAddCIARecord"),
282 "Takes CIARecord as input and appends the results in the appropriate place.\n" 284 "If CIARecord has same species as species in *abs_cia_data*, then the array\n" 285 "position is used to append all of the CIARecord into the array. If clobber\n" 286 "evaluates as true, cia_record overwrites the appropriate *abs_cia_data*. If\n" 287 "species in cia_record are not in *abs_cia_data*, the CIARecord is pushed back.\n"),
294 GIN(
"cia_record",
"clobber"),
297 GIN_DESC(
"CIA record to append to *abs_cia_data*.",
298 "If true, the new input clobbers the old cia data.")));
301 NAME(
"abs_cia_dataReadFromCIA"),
303 "Read data from a CIA data file for all CIA molecules defined\n" 304 "in *abs_species*.\n" 306 "The units in the HITRAN file are:\n" 307 "Frequency: cm^(-1)\n" 308 "Binary absorption cross-section: cm^5 molec^(-2)\n" 310 "Upon reading we convert this to the ARTS internal SI units \n" 311 "of Hz and m^5 molec^(-2).\n"),
321 GIN_DESC(
"Path to the CIA catalog directory.")));
324 NAME(
"abs_cia_dataReadFromXML"),
326 "Read data from a CIA XML file and check that all CIA tags defined\n" 327 "in *abs_species* are present in the file.\n" 329 "The units of the data are described in *abs_cia_dataReadFromCIA*.\n"),
339 GIN_DESC(
"Name of the XML file.")));
342 NAME(
"abs_coefCalcFromXsec"),
343 DESCRIPTION(
"Calculate absorption coefficients from cross sections.\n" 345 "This calculates both the total absorption and the\n" 346 "absorption per species.\n" 348 "Cross sections are multiplied by n*VMR.\n"),
349 AUTHORS(
"Stefan Buehler",
"Axel von Engeln"),
354 "abs_coef_per_species",
355 "src_coef_per_species"),
359 IN(
"abs_xsec_per_species",
360 "src_xsec_per_species",
361 "dabs_xsec_per_species_dx",
362 "dsrc_xsec_per_species_dx",
364 "jacobian_quantities",
374 NAME(
"abs_cont_descriptionAppend"),
376 "Appends the description of a continuum model or a complete absorption\n" 377 "model to *abs_cont_names* and *abs_cont_parameters*.\n" 379 "See online documentation for *abs_cont_names* for a list of\n" 380 "allowed models and for information what parameters they require. See\n" 381 "file includes/continua.arts for default parameters for the various models.\n"),
382 AUTHORS(
"Thomas Kuhn",
"Stefan Buehler"),
383 OUT(
"abs_cont_names",
"abs_cont_models",
"abs_cont_parameters"),
387 IN(
"abs_cont_names",
"abs_cont_models",
"abs_cont_parameters"),
388 GIN(
"tagname",
"model",
"userparam"),
389 GIN_TYPE(
"String",
"String",
"Vector"),
392 "The name (species tag) of a continuum model. Must match one\n" 393 "of the models implemented in ARTS.\n",
394 "A string selecting a particular continuum/full model under this\n" 396 "A Vector containing the required parameters for the selected model.\n" 397 "The meaning of the parameters and how many parameters are required\n" 398 "depends on the model.\n")));
401 NAME(
"abs_cont_descriptionInit"),
403 "Initializes the two workspace variables for the continuum description,\n" 404 "*abs_cont_names* and *abs_cont_parameters*.\n" 406 "This method does not really do anything, except setting the two\n" 407 "variables to empty Arrays. It is just necessary because the method\n" 408 "*abs_cont_descriptionAppend* wants to append to the variables.\n" 410 "Formally, the continuum description workspace variables are required\n" 411 "by the absorption calculation methods (e.g., *abs_coefCalcFromXsec*). Therefore you\n" 412 "always have to call at least *abs_cont_descriptionInit*, even if you do\n" 413 "not want to use any continua.\n"),
414 AUTHORS(
"Thomas Kuhn",
"Stefan Buehler"),
415 OUT(
"abs_cont_names",
"abs_cont_models",
"abs_cont_parameters"),
426 NAME(
"abs_hitran_relmat_dataReadHitranRelmatDataAndLines"),
427 DESCRIPTION(
"Reads HITRAN line mixing data from a basedir\n" 428 "The basedir must point at line mixing data as provided by HITRAN.\n" 429 "The lines will be changed such that ALL CO2 lines are truncated\n" 430 "before adding the HITRAN line mixing lines.\n" 432 "The available modes are such that \"VP*\" uses Voigt profiles and\n" 433 "\"SDVP*\" uses speed-dependent Voigt profiles, where the \"_Y\"\n" 434 "signifies if Rosenkranz-style line mixing is considered or not, and\n" 435 "the \"W\" at the end signifies that full calculations are used. At\n" 436 "the line mixing limit, line mixing is simply turned off.\n" 438 "The \"FullW\" mode uses Lorentzian calculations with the full relaxation\n" 439 "matrix until the line mixing limit is reached and it switches to Voigt.\n" 441 "The HITRAN LM data is available for download at:\n" 442 "https://hitran.org/supplementary/\n" 445 OUT(
"abs_hitran_relmat_data",
"abs_lines_per_species"),
449 IN(
"abs_lines_per_species",
"abs_species"),
450 GIN(
"basedir",
"linemixinglimit",
"fmin",
"fmax",
"stot",
"mode"),
451 GIN_TYPE(
"String",
"Numeric",
"Numeric",
"Numeric",
"Numeric",
"String"),
453 GIN_DESC(
"Direcory where the linemixing data is to be found",
454 "Line mixing limit as defined by *AbsorptionLines*",
455 "Minimum frequency to read from",
456 "Maximum frequency to read until",
457 "Minimum integrated band strength to consider",
458 "Mode of calculations. The options are: \"VP\", \"VP_Y\", \"SDVP\", \"SDVP_Y\", \"FullW\", and \"VP_W\"" 462 NAME(
"abs_linesCleanupEmpty"),
463 DESCRIPTION(
"Removes empty bands from *abs_lines*.\n"),
476 NAME(
"abs_linesKeepBands"),
477 DESCRIPTION(
"Keep only *qid*-matches in *abs_lines*\n" 479 "The ignore values will ignore isotopologue and/or species.\n" 480 "The latter means the isotopologue has to be ignores.\n"),
487 GIN(
"qid",
"ignore_spec",
"ignore_isot"),
488 GIN_TYPE(
"QuantumIdentifier",
"Index",
"Index"),
490 GIN_DESC(
"Band ID",
"If species is to be ignores",
"If isotopologue is to be ignored")));
493 NAME(
"abs_linesRemoveBand"),
494 DESCRIPTION(
"Removes *qid* band from *abs_lines*\n"),
507 NAME(
"abs_linesRemoveUnusedLocalQuantumNumbers"),
509 "Removes unused quantums from local values in the line lists\n"),
522 NAME(
"abs_linesReplaceWithLines"),
524 "Replace all lines in *abs_lines* that match with lines in replacement_lines.\n" 526 "Each replacement_lines must match excatly a single line in *abs_lines*.\n" 528 "The matching required identical quantum number signatures to work\n" 530 "Note that lines are identified by their AbsorptionLines tags and by their quantum numbers.\n"),
537 GIN(
"replacing_lines"),
540 GIN_DESC(
"Line-array that replace lines in *abs_lines*.")));
543 NAME(
"abs_linesAppendWithLines"),
545 "Appends all lines in *abs_lines* that match with lines in replacement_lines if *safe*.\n" 546 "If not *safe*, appends all lines.\n" 548 "No appended line is allowed to match any line in *abs_lines* if *safe*\n" 550 "Conditional behavior if *safe*:\n" 551 "\tIf the AbosorptionLines to be appended match no AbsorptionLines\n" 552 "\tin *abs_lines*, then the entire AbsorptionLines is appended.\n" 553 "\tOtherwise, only a single AbsorptionLines can be matched and is not\n" 554 "\tallowed to have any internal matches\n" 556 "Note that lines are identified by their AbsorptionLines tags and by their quantum numbers\n" 557 "in *safe* mode.\n"),
564 GIN(
"appending_lines",
"safe"),
565 GIN_TYPE(
"ArrayOfAbsorptionLines",
"Index"),
567 GIN_DESC(
"Line-array that appends lines in *abs_lines*.",
568 "Flag whether to check quantum numbers or not")));
571 NAME(
"abs_linesDeleteWithLines"),
573 "Deletes all lines in *abs_lines* that match with lines in replacement_lines.\n" 575 "If a deleted line has no match, then nothing happens.\n" 577 "Note that lines are identified by their AbsorptionLines tags and by their quantum numbers.\n" 578 "There is no need to have all values correct.\n"),
585 GIN(
"deleting_lines"),
588 GIN_DESC(
"Line-array that removes lines from *abs_lines*.")));
591 NAME(
"abs_linesDeleteBadF0"),
593 "Deletes all lines in *abs_lines* that have bad central frequencies\n" 595 "If lower evaluates as true, deletes all lines with a frequency below f0.\n" 596 "Otherwise deletes all lines with a frequency above f0.\n"),
607 "Lower or upper flag (eval as boolean)")));
610 NAME(
"abs_linesDeleteLinesWithUndefinedLocalQuanta"),
612 "Deletes all lines in *abs_lines* that have undefined local quanta\n"),
625 NAME(
"abs_linesDeleteLinesWithBadOrHighChangingJs"),
626 DESCRIPTION(
"Deletes all lines in *abs_lines* that have undefined Js or Js\n" 627 "that change more than 1 between energy levels\n"),
640 NAME(
"abs_linesDeleteLinesWithQuantumNumberAbove"),
641 DESCRIPTION(
"Deletes all lines in *abs_lines* that have too large quantum number\n"),
648 GIN(
"quantumnumber",
"quantumnumber_value"),
651 GIN_DESC(
"Quantum number identified",
"Value")));
654 NAME(
"abs_linesPrintDefinedQuantumNumbers"),
655 DESCRIPTION(
"Print the count of defined quantum numbers in the catalog\n"),
668 NAME(
"abs_lines_per_speciesReadSplitCatalog"),
669 DESCRIPTION(
"Reads *abs_lines_per_species* split by\n" 670 "*abs_linesWriteSplitXML* or *abs_lines_per_speciesWriteSplitXML*\n" 672 "Note that this will sort the isotopologue\n"),
674 OUT(
"abs_lines_per_species"),
682 GIN_DESC(
"The path to the split catalog files")));
685 NAME(
"abs_linesReadSpeciesSplitCatalog"),
686 DESCRIPTION(
"Reads a catalog of absorption lines files in a directory\n"),
693 GIN(
"basename",
"robust"),
696 GIN_DESC(
"The path to the split catalog files",
697 "Flag to continue in case nothing is found [0 throws, 1 continues]")));
700 NAME(
"abs_lines_per_speciesReadSpeciesSplitCatalog"),
701 DESCRIPTION(
"See *abs_lines_per_speciesReadSplitCatalog* but expects\n" 702 "a single file per species of *ArrayOfAbsorptionLines*\n"),
704 OUT(
"abs_lines_per_species"),
709 GIN(
"basename",
"robust"),
712 GIN_DESC(
"The path to the split catalog files",
713 "Flag to continue in case nothing is found [0 throws, 1 continues]")));
716 NAME(
"abs_lines_per_speciesSetEmpty"),
717 DESCRIPTION(
"Empties *abs_lines_per_species* at the correct size.\n"),
719 OUT(
"abs_lines_per_species"),
731 DESCRIPTION(
"Sets a broadening parameter to empty if it is efficiently empty\n" 733 "This will not save RAM but it will save disk space (reading time),\n" 734 "and computational time by not doing unecessary calculations\n"),
748 DESCRIPTION(
"Sets normalization type for all lines.\n" 750 "Available options:\n" 751 "\t\"VVH\" \t - \t Van Vleck and Huber\n" 752 "\t\"VVW\" \t - \t Van Vleck and Weisskopf\n" 753 "\t\"RQ\" \t - \t Rosenkranz quadratic\n" 754 "\t\"None\" \t - \t No extra normalization\n" 756 "See the theory guide for more details.\n"),
766 GIN_DESC(
"Method of line normalizations")));
772 OUT(
"abs_lines_per_species"),
776 IN(
"abs_lines_per_species"),
780 GIN_DESC(
"Method of line normalizations")));
784 DESCRIPTION(
"See *abs_linesSetNormalization* for options\n" 786 "This function only acts on matches between the bands and input ID\n"),
794 GIN_TYPE(
"String",
"QuantumIdentifier"),
796 GIN_DESC(
"Method of line normalizations",
797 "ID of one or more bands")));
801 DESCRIPTION(
"See *abs_linesSetNormalization* for options\n" 803 "This function only acts on matches between the bands and input ID\n"),
805 OUT(
"abs_lines_per_species"),
809 IN(
"abs_lines_per_species"),
811 GIN_TYPE(
"String",
"QuantumIdentifier"),
813 GIN_DESC(
"Method of line normalizations",
814 "ID of one or more bands")));
818 DESCRIPTION(
"See *abs_linesSetNormalization* but for single species\n"),
820 OUT(
"abs_lines_per_species"),
824 IN(
"abs_lines_per_species",
"abs_species"),
825 GIN(
"option",
"species_tag"),
828 GIN_DESC(
"Method of line normalizations",
829 "The species tag from *abs_species* to change")));
835 "Available options:\n" 836 "\t\"None\" \t - \t No mirrored line\n" 837 "\t\"Same\" \t - \t Mirrored line broadened by line shape\n" 838 "\t\"Manual\" \t - \t Manually mirrored line (be careful; allows all frequencies)\n" 839 "\t\"Lorentz\" \t - \t Mirrored line broadened by Lorentz\n" 841 "Note that mirroring is never applied for DP line shape\n" 842 "Also note that Lorentz profile is approached by most line shapes at high frequency offset.\n" 843 "Also note that Manual settings are potentially dangerous as other frequency\n" 844 "offsets might not work as hoped.\n"),
854 GIN_DESC(
"Method of line mirroring")));
860 OUT(
"abs_lines_per_species"),
864 IN(
"abs_lines_per_species"),
868 GIN_DESC(
"Method of line mirroring")));
872 DESCRIPTION(
"See *abs_linesSetMirroring* for options\n" 874 "This function only acts on matches between the bands and input ID\n"),
882 GIN_TYPE(
"String",
"QuantumIdentifier"),
884 GIN_DESC(
"Method of line mirroring",
885 "ID of one or more bands")));
889 DESCRIPTION(
"See *abs_linesSetMirroring* for options\n" 891 "This function only acts on matches between the bands and input ID\n"),
893 OUT(
"abs_lines_per_species"),
897 IN(
"abs_lines_per_species"),
899 GIN_TYPE(
"String",
"QuantumIdentifier"),
901 GIN_DESC(
"Method of line mirroring",
902 "ID of one or more bands")));
906 DESCRIPTION(
"See *abs_linesSetMirroring* but for single species\n"),
908 OUT(
"abs_lines_per_species"),
912 IN(
"abs_lines_per_species",
"abs_species"),
913 GIN(
"option",
"species_tag"),
916 GIN_DESC(
"Method of line mirroring",
917 "The species tag from *abs_species* to change")));
921 DESCRIPTION(
"Sets population type for all lines.\n" 923 "Available options:\n" 924 "\t\"LTE\" \t - \t Standard distribution by temperature\n" 925 "\t\"NLTE-VibrationalTemperatures\" \t - \t LTE but with vibrational temperatures\n" 926 "\t\"NLTE\" \t - \t Distribution is given as input\n" 928 "You must have set *nlte_field* and/or its ilk to use the NLTE methods.\n"),
938 GIN_DESC(
"Method of line population")));
944 OUT(
"abs_lines_per_species"),
948 IN(
"abs_lines_per_species"),
952 GIN_DESC(
"Method of line population")));
956 DESCRIPTION(
"See *abs_linesSetPopulation* for options\n" 958 "This function only acts on matches between the bands and input ID\n"),
966 GIN_TYPE(
"String",
"QuantumIdentifier"),
968 GIN_DESC(
"Method of line population",
969 "ID of one or more bands")));
973 DESCRIPTION(
"See *abs_linesSetPopulation* for options\n" 975 "This function only acts on matches between the bands and input ID\n"),
977 OUT(
"abs_lines_per_species"),
981 IN(
"abs_lines_per_species"),
983 GIN_TYPE(
"String",
"QuantumIdentifier"),
985 GIN_DESC(
"Method of line population",
986 "ID of one or more bands")));
990 DESCRIPTION(
"See *abs_linesSetPopulation* but for single species\n"),
992 OUT(
"abs_lines_per_species"),
996 IN(
"abs_lines_per_species",
"abs_species"),
997 GIN(
"option",
"species_tag"),
1000 GIN_DESC(
"Method of line population",
1001 "The species tag from *abs_species* to change")));
1005 DESCRIPTION(
"Sets shape calculations type for all lines.\n" 1007 "Available options:\n" 1008 "\t\"DP\" \t - \t Doppler profile\n" 1009 "\t\"LP\" \t - \t Lorentz profile\n" 1010 "\t\"VP\" \t - \t Voigt profile\n" 1011 "\t\"SDVP\" \t - \t Speed-dependent Voigt profile\n" 1012 "\t\"HTP\" \t - \t Hartman-Tran profile\n" 1014 "See the theory guide for more details.\n"),
1024 GIN_DESC(
"Method of line shape calculations")));
1030 OUT(
"abs_lines_per_species"),
1034 IN(
"abs_lines_per_species"),
1038 GIN_DESC(
"Method of line shape calculations")));
1042 DESCRIPTION(
"See *abs_linesSetLineShapeType* for options\n" 1044 "This function only acts on matches between the bands and input ID\n"),
1051 GIN(
"option",
"ID"),
1052 GIN_TYPE(
"String",
"QuantumIdentifier"),
1054 GIN_DESC(
"Method of line shape calculations",
1055 "ID of one or more bands")));
1059 DESCRIPTION(
"See *abs_linesSetLineShapeType* for options\n" 1061 "This function only acts on matches between the bands and input ID\n"),
1063 OUT(
"abs_lines_per_species"),
1067 IN(
"abs_lines_per_species"),
1068 GIN(
"option",
"ID"),
1069 GIN_TYPE(
"String",
"QuantumIdentifier"),
1071 GIN_DESC(
"Method of line shape calculations",
1072 "ID of one or more bands")));
1076 DESCRIPTION(
"See *abs_linesSetLineShapeType* but for single species\n"),
1078 OUT(
"abs_lines_per_species"),
1082 IN(
"abs_lines_per_species",
"abs_species"),
1083 GIN(
"option",
"species_tag"),
1086 GIN_DESC(
"Method of line shape calculations",
1087 "The species tag from *abs_species* to change")));
1091 DESCRIPTION(
"Sets cutoff type and magnitude for all lines.\n" 1093 "The line is cut off when this is active at the given frequency.\n" 1094 "The only non-zero range is from this range to its negative equivalent\n" 1096 "Available options:\n" 1097 "\t\"None\" \t - \t No cutoff\n" 1098 "\t\"ByLine\" \t - \t Cutoff relative line center, highest frequency: F0+cutoff\n" 1099 "\t\"ByBand\" \t - \t Absolute frequency, highest frequency: cutoff\n" 1101 "For \"ByLine\", the negative frequency is at F0-cutoff\n" 1102 "For \"ByBand\", the negative frequency is at cutoff minus twice the average band frequency\n"),
1109 GIN(
"option",
"value"),
1112 GIN_DESC(
"Method of line shape calculations",
1113 "Value of cutoff")));
1119 OUT(
"abs_lines_per_species"),
1123 IN(
"abs_lines_per_species"),
1124 GIN(
"option",
"value"),
1127 GIN_DESC(
"Method of line shape calculations",
1128 "Value of cutoff")));
1132 DESCRIPTION(
"See *abs_linesSetCutoff* for more options.\n" 1134 "This function only acts on matches between the bands and input ID\n"),
1141 GIN(
"option",
"value",
"ID"),
1142 GIN_TYPE(
"String",
"Numeric",
"QuantumIdentifier"),
1144 GIN_DESC(
"Method of line shape calculations",
1146 "ID of one or more bands")));
1150 DESCRIPTION(
"See *abs_linesSetCutoff* for more options.\n" 1152 "This function only acts on matches between the bands and input ID\n"),
1154 OUT(
"abs_lines_per_species"),
1158 IN(
"abs_lines_per_species"),
1159 GIN(
"option",
"value",
"ID"),
1160 GIN_TYPE(
"String",
"Numeric",
"QuantumIdentifier"),
1162 GIN_DESC(
"Method of line shape calculations",
1164 "ID of one or more bands")));
1168 DESCRIPTION(
"See *abs_linesSetCutoff* but for single species\n"),
1170 OUT(
"abs_lines_per_species"),
1174 IN(
"abs_lines_per_species",
"abs_species"),
1175 GIN(
"option",
"value",
"species_tag"),
1176 GIN_TYPE(
"String",
"Numeric",
"String"),
1178 GIN_DESC(
"Method of line shape calculations",
1180 "The species tag from *abs_species* to change")));
1184 DESCRIPTION(
"Sets line mixing limit for all lines.\n" 1186 "If value is less than 0, no limit is applied and line mixing is active.\n" 1187 "Otherwise, line mixing is inactive if the pressure is below the limit.\n"),
1201 DESCRIPTION(
"See *abs_linesSetLinemixingLimit*\n"),
1203 OUT(
"abs_lines_per_species"),
1207 IN(
"abs_lines_per_species"),
1215 DESCRIPTION(
"See *abs_linesSetLinemixingLimit* for values\n" 1217 "This function only acts on matches between the bands and input ID\n"),
1225 GIN_TYPE(
"Numeric",
"QuantumIdentifier"),
1228 "ID of one or more bands")));
1232 DESCRIPTION(
"See *abs_linesSetLinemixingLimit* for values\n" 1234 "This function only acts on matches between the bands and input ID\n"),
1236 OUT(
"abs_lines_per_species"),
1240 IN(
"abs_lines_per_species"),
1242 GIN_TYPE(
"Numeric",
"QuantumIdentifier"),
1245 "ID of one or more bands")));
1249 DESCRIPTION(
"See *abs_linesSetLinemixingLimit* but for single species\n"),
1251 OUT(
"abs_lines_per_species"),
1255 IN(
"abs_lines_per_species",
"abs_species"),
1256 GIN(
"value",
"species_tag"),
1260 "The species tag from *abs_species* to change")));
1264 DESCRIPTION(
"Sets reference temperature for all lines.\n"),
1280 OUT(
"abs_lines_per_species"),
1284 IN(
"abs_lines_per_species"),
1294 "This function only acts on matches between the bands and input ID\n"),
1302 GIN_TYPE(
"Numeric",
"QuantumIdentifier"),
1305 "ID of one or more bands")));
1311 "This function only acts on matches between the bands and input ID\n"),
1313 OUT(
"abs_lines_per_species"),
1317 IN(
"abs_lines_per_species"),
1319 GIN_TYPE(
"Numeric",
"QuantumIdentifier"),
1322 "ID of one or more bands")));
1326 DESCRIPTION(
"See *abs_linesSetT0* but for single species\n"),
1328 OUT(
"abs_lines_per_species"),
1332 IN(
"abs_lines_per_species",
"abs_species"),
1333 GIN(
"value",
"species_tag"),
1337 "The species tag from *abs_species* to change")));
1341 DESCRIPTION(
"Sets a quantum number to a new value\n" 1343 "This function only acts on matches between the bands and input ID\n"),
1350 GIN(
"quantum_number",
"value",
"ID"),
1351 GIN_TYPE(
"String",
"Rational",
"QuantumIdentifier"),
1354 "Value of quantum number",
1355 "ID of one or more bands")));
1359 DESCRIPTION(
"See *abs_linesSetQuantumNumberForMatch*\n"),
1361 OUT(
"abs_lines_per_species"),
1365 IN(
"abs_lines_per_species"),
1366 GIN(
"quantum_number",
"value",
"ID"),
1367 GIN_TYPE(
"String",
"Rational",
"QuantumIdentifier"),
1370 "Value of quantum number",
1371 "ID of one or more bands")));
1374 NAME(
"abs_linesChangeBaseParameterForMatchingLevel"),
1376 "Change parameter of all levels in *abs_lines* that match with *QuantumIdentifier*.\n" 1377 "Only works for these parameters:\n" 1378 "parameter_name = \"Statistical Weight\"\n" 1379 "parameter_name = \"Zeeman Coefficient\"\n"),
1386 GIN(
"QI",
"parameter_name",
"change",
"relative"),
1387 GIN_TYPE(
"QuantumIdentifier",
"String",
"Numeric",
"Index"),
1389 GIN_DESC(
"Information to match the level.",
1390 "Name of parameter to be replaced",
1391 "Value with which to change matching level's value",
1392 "Flag for relative change (0 is absolute change)")));
1395 NAME(
"abs_linesChangeBaseParameterForMatchingLevels"),
1396 DESCRIPTION(
"See *abs_linesChangeBaseParameterForMatchingLevel*\n"),
1403 GIN(
"QI",
"parameter_name",
"change",
"relative"),
1404 GIN_TYPE(
"ArrayOfQuantumIdentifier",
"String",
"Vector",
"Index"),
1406 GIN_DESC(
"Information to match the level.",
1407 "Name of parameter to be replaced",
1408 "Value with which to change matching level's value",
1409 "Flag for relative change (0 is absolute change)")));
1412 NAME(
"abs_lines_per_speciesChangeBaseParameterForMatchingLevel"),
1413 DESCRIPTION(
"See *abs_linesChangeBaseParameterForMatchingLevel*\n"),
1415 OUT(
"abs_lines_per_species"),
1419 IN(
"abs_lines_per_species"),
1420 GIN(
"QI",
"parameter_name",
"change",
"relative"),
1421 GIN_TYPE(
"QuantumIdentifier",
"String",
"Numeric",
"Index"),
1423 GIN_DESC(
"Information to match the level.",
1424 "Name of parameter to be replaced",
1425 "Value with which to change matching level's value",
1426 "Flag for relative change (0 is absolute change)")));
1429 NAME(
"abs_lines_per_speciesChangeBaseParameterForMatchingLevels"),
1430 DESCRIPTION(
"See *abs_linesChangeBaseParameterForMatchingLevel*\n"),
1432 OUT(
"abs_lines_per_species"),
1436 IN(
"abs_lines_per_species"),
1437 GIN(
"QI",
"parameter_name",
"change",
"relative"),
1438 GIN_TYPE(
"ArrayOfQuantumIdentifier",
"String",
"Vector",
"Index"),
1440 GIN_DESC(
"Information to match the level.",
1441 "Name of parameter to be replaced",
1442 "Value with which to change matching level's value",
1443 "Flag for relative change (0 is absolute change)")));
1446 NAME(
"abs_linesSetBaseParameterForMatchingLevel"),
1448 "Set parameter of all levels in *abs_lines* that match with *QuantumIdentifier*.\n" 1449 "Only works for these parameters:\n" 1450 "parameter_name = \"Statistical Weight\"\n" 1451 "parameter_name = \"Zeeman Coefficient\"\n"),
1458 GIN(
"QI",
"parameter_name",
"change"),
1459 GIN_TYPE(
"QuantumIdentifier",
"String",
"Numeric"),
1461 GIN_DESC(
"Information to match the level.",
1462 "Name of parameter to be replaced",
1463 "Value with which to set matching level's value")));
1466 NAME(
"abs_linesSetBaseParameterForMatchingLevels"),
1467 DESCRIPTION(
"See *abs_linesSetBaseParameterForMatchingLevel*\n"),
1474 GIN(
"QI",
"parameter_name",
"change"),
1475 GIN_TYPE(
"ArrayOfQuantumIdentifier",
"String",
"Vector"),
1477 GIN_DESC(
"Information to match the level.",
1478 "Name of parameter to be replaced",
1479 "Value with which to set matching level's value")));
1482 NAME(
"abs_lines_per_speciesSetBaseParameterForMatchingLevel"),
1483 DESCRIPTION(
"See *abs_linesSetBaseParameterForMatchingLevel*\n"),
1485 OUT(
"abs_lines_per_species"),
1489 IN(
"abs_lines_per_species"),
1490 GIN(
"QI",
"parameter_name",
"change"),
1491 GIN_TYPE(
"QuantumIdentifier",
"String",
"Numeric"),
1493 GIN_DESC(
"Information to match the level.",
1494 "Name of parameter to be replaced",
1495 "Value with which to set matching level's value")));
1498 NAME(
"abs_lines_per_speciesSetBaseParameterForMatchingLevels"),
1499 DESCRIPTION(
"See *abs_linesSetBaseParameterForMatchingLevel*\n"),
1501 OUT(
"abs_lines_per_species"),
1505 IN(
"abs_lines_per_species"),
1506 GIN(
"QI",
"parameter_name",
"change"),
1507 GIN_TYPE(
"ArrayOfQuantumIdentifier",
"String",
"Vector"),
1509 GIN_DESC(
"Information to match the level.",
1510 "Name of parameter to be replaced",
1511 "Value with which to set matching level's value")));
1514 NAME(
"abs_linesChangeBaseParameterForMatchingLines"),
1516 "Change parameter of all lines in *abs_lines* that match with *QuantumIdentifier*.\n" 1517 "Only works for these parameters:\n" 1518 "parameter_name = \"Central Frequency\"\n" 1519 "parameter_name = \"Line Strength\"\n" 1520 "parameter_name = \"Lower State Energy\"\n" 1521 "parameter_name = \"Einstein Coefficient\"\n" 1522 "parameter_name = \"Lower Statistical Weight\"\n" 1523 "parameter_name = \"Upper Statistical Weight\"\n" 1524 "parameter_name = \"Lower Zeeman Coefficient\"\n" 1525 "parameter_name = \"Upper Zeeman Coefficient\"\n" 1527 "Note that loose_matching:=0 means only identical quantum identifiers are accepted,\n" 1528 "otherwise the numbers in QI must just be contained in the line identifier\n"),
1535 GIN(
"QI",
"parameter_name",
"change",
"relative",
"loose_matching"),
1536 GIN_TYPE(
"QuantumIdentifier",
"String",
"Numeric",
"Index",
"Index"),
1538 GIN_DESC(
"Information to match the line.",
1539 "Name of parameter to be replaced",
1540 "Value with which to change matching line's value",
1541 "Flag for relative change (0 is absolute change)",
1542 "Flag for loose match (0 means only complete matches)")));
1545 NAME(
"abs_lines_per_speciesChangeBaseParameterForMatchingLines"),
1546 DESCRIPTION(
"See *abs_linesChangeBaseParameterForMatchingLines*\n"),
1548 OUT(
"abs_lines_per_species"),
1552 IN(
"abs_lines_per_species"),
1553 GIN(
"QI",
"parameter_name",
"change",
"relative",
"loose_matching"),
1554 GIN_TYPE(
"QuantumIdentifier",
"String",
"Numeric",
"Index",
"Index"),
1556 GIN_DESC(
"Information to match the line.",
1557 "Name of parameter to be replaced",
1558 "Value with which to change matching line's value",
1559 "Flag for relative change (0 is absolute change)",
1560 "Flag for loose match (0 means only complete matches)")));
1563 NAME(
"abs_lines_per_speciesChangeBaseParameterForSpecies"),
1564 DESCRIPTION(
"See *abs_linesChangeBaseParameterForMatchingLines* but for single species\n"),
1566 OUT(
"abs_lines_per_species"),
1570 IN(
"abs_lines_per_species",
"abs_species"),
1571 GIN(
"QI",
"parameter_name",
"change",
"relative",
"loose_matching",
"species_tag"),
1572 GIN_TYPE(
"QuantumIdentifier",
"String",
"Numeric",
"Index",
"Index",
"String"),
1574 GIN_DESC(
"Information to match the line.",
1575 "Name of parameter to be replaced",
1576 "Value with which to change matching line's value",
1577 "Flag for relative change (0 is absolute change)",
1578 "Flag for loose match (0 means only complete matches)",
1579 "The species tag from *abs_species* to change")));
1582 NAME(
"abs_linesSetBaseParameterForMatchingLines"),
1584 "Set parameter of all lines in *abs_lines* that match with *QuantumIdentifier*.\n" 1585 "Only works for these parameters:\n" 1586 "parameter_name = \"Central Frequency\"\n" 1587 "parameter_name = \"Line Strength\"\n" 1588 "parameter_name = \"Lower State Energy\"\n" 1589 "parameter_name = \"Einstein Coefficient\"\n" 1590 "parameter_name = \"Lower Statistical Weight\"\n" 1591 "parameter_name = \"Upper Statistical Weight\"\n" 1592 "parameter_name = \"Lower Zeeman Coefficient\"\n" 1593 "parameter_name = \"Upper Zeeman Coefficient\"\n" 1595 "Note that loose_matching:=0 means only identical quantum identifiers are accepted,\n" 1596 "otherwise the numbers in QI must just be contained in the line identifier\n"),
1603 GIN(
"QI",
"parameter_name",
"change",
"loose_matching"),
1604 GIN_TYPE(
"QuantumIdentifier",
"String",
"Numeric",
"Index"),
1606 GIN_DESC(
"Information to match the line.",
1607 "Name of parameter to be replaced",
1608 "Value with which to change matching line's value",
1609 "Flag for loose match (0 means only complete matches)")));
1612 NAME(
"abs_lines_per_speciesSetBaseParameterForMatchingLines"),
1613 DESCRIPTION(
"See *abs_linesSetBaseParameterForMatchingLines*\n"),
1615 OUT(
"abs_lines_per_species"),
1619 IN(
"abs_lines_per_species"),
1620 GIN(
"QI",
"parameter_name",
"change",
"loose_matching"),
1621 GIN_TYPE(
"QuantumIdentifier",
"String",
"Numeric",
"Index"),
1623 GIN_DESC(
"Information to match the line.",
1624 "Name of parameter to be replaced",
1625 "Value with which to change matching line's value",
1626 "Flag for loose match (0 means only complete matches)")));
1629 NAME(
"abs_lines_per_speciesSetBaseParameterForSpecies"),
1630 DESCRIPTION(
"See *abs_linesSetBaseParameterForMatchingLines* but for single species\n"),
1632 OUT(
"abs_lines_per_species"),
1636 IN(
"abs_lines_per_species",
"abs_species"),
1637 GIN(
"QI",
"parameter_name",
"change",
"loose_matching",
"species_tag"),
1638 GIN_TYPE(
"QuantumIdentifier",
"String",
"Numeric",
"Index",
"String"),
1640 GIN_DESC(
"Information to match the line.",
1641 "Name of parameter to be replaced",
1642 "Value with which to change matching line's value",
1643 "Flag for loose match (0 means only complete matches)",
1644 "The species tag from *abs_species* to change")));
1647 NAME(
"abs_linesSetLineShapeModelParameterForMatchingLines"),
1648 DESCRIPTION(
"Sets line shape model data parameter in matching lines.\n" 1650 "The matching is done so that QI must be in the line identifier\n" 1652 "Acceptable parameter(s) are:\n" 1663 "Acceptable coefficient(s) are:\n" 1669 "Acceptable species are:\n" 1670 "\t\"AIR\" (so long as it is the broadening species list)\n" 1671 "\t\"SELF\" (so long as it is the broadening species list)\n" 1672 "\tAny species in the line broadening species\n" 1674 "Throws an error if it cannot find any targets to change\n" 1682 GIN(
"QI",
"parameter",
"coefficient",
"species",
"change"),
1689 GIN_DESC(
"Information to match the line.",
1690 "Name of parameter to be replaced",
1691 "Coefficient of the parameter to be changed",
1692 "Species of parameter to be changed",
1693 "Sets the value found")));
1696 NAME(
"abs_lines_per_speciesSetLineShapeModelParameterForMatchingLines"),
1697 DESCRIPTION(
"See *abs_linesSetLineShapeModelParameterForMatchingLines*\n" 1700 OUT(
"abs_lines_per_species"),
1704 IN(
"abs_lines_per_species"),
1705 GIN(
"QI",
"parameter",
"coefficient",
"species",
"change"),
1712 GIN_DESC(
"Information to match the line.",
1713 "Name of parameter to be replaced",
1714 "Coefficient of the parameter to be changed",
1715 "Species of parameter to be changed",
1716 "Sets the value found")));
1719 NAME(
"abs_lines_per_speciesSetLineShapeModelParameterForSpecies"),
1720 DESCRIPTION(
"See *abs_linesSetLineShapeModelParameterForMatchingLines*\n" 1723 OUT(
"abs_lines_per_species"),
1727 IN(
"abs_lines_per_species",
"abs_species"),
1728 GIN(
"QI",
"parameter",
"coefficient",
"species",
"change",
"species_tag"),
1736 GIN_DESC(
"Information to match the line.",
1737 "Name of parameter to be replaced",
1738 "Coefficient of the parameter to be changed",
1739 "Species of parameter to be changed",
1740 "Sets the value found",
1741 "The species tag from *abs_species* to change")));
1744 NAME(
"abs_linesChangeLineShapeModelParameterForMatchingLines"),
1745 DESCRIPTION(
"Change line shape model data parameter in matching lines.\n" 1747 "The matching is done so that QI must be in the line identifier\n" 1749 "Acceptable parameter(s) are:\n" 1760 "Acceptable coefficient(s) are:\n" 1766 "Acceptable species are:\n" 1767 "\t\"AIR\" (so long as it is the broadening species list)\n" 1768 "\t\"SELF\" (so long as it is the broadening species list)\n" 1769 "\tAny species in the line broadening species\n" 1771 "The line parameter will have its old value plus the change if\n" 1772 "relative is false, else it will have its old value times\n" 1775 "Throws an error if it cannot find any targets to change\n" 1783 GIN(
"QI",
"parameter",
"coefficient",
"species",
"change",
"relative"),
1791 GIN_DESC(
"Information to match the line.",
1792 "Name of parameter to be replaced",
1793 "Coefficient of the parameter to be changed",
1794 "Species of parameter to be changed",
1795 "Change in the value found",
1796 "Flag for relative change (0 is absolute change)")));
1799 NAME(
"abs_lines_per_speciesChangeLineShapeModelParameterForMatchingLines"),
1800 DESCRIPTION(
"See *abs_linesChangeLineShapeModelParameterForMatchingLines*\n" 1803 OUT(
"abs_lines_per_species"),
1807 IN(
"abs_lines_per_species"),
1808 GIN(
"QI",
"parameter",
"coefficient",
"species",
"change",
"relative"),
1816 GIN_DESC(
"Information to match the line.",
1817 "Name of parameter to be replaced",
1818 "Coefficient of the parameter to be changed",
1819 "Species of parameter to be changed",
1820 "Change in the value found",
1821 "Flag for relative change (0 is absolute change)")));
1824 NAME(
"abs_lines_per_speciesChangeLineShapeModelParameterForSpecies"),
1825 DESCRIPTION(
"See *abs_linesChangeLineShapeModelParameterForMatchingLines*\n" 1828 OUT(
"abs_lines_per_species"),
1832 IN(
"abs_lines_per_species",
"abs_species"),
1833 GIN(
"QI",
"parameter",
"coefficient",
"species",
"change",
"relative",
"species_tag"),
1842 GIN_DESC(
"Information to match the line.",
1843 "Name of parameter to be replaced",
1844 "Coefficient of the parameter to be changed",
1845 "Species of parameter to be changed",
1846 "Change in the value found",
1847 "Flag for relative change (0 is absolute change)",
1848 "The species tag from *abs_species* to change")));
1851 NAME(
"abs_linesCompact"),
1852 DESCRIPTION(
"Removes lines that are unimportant because of their\n" 1853 "cutoff frequency range\n"),
1854 AUTHORS(
"Stefan Buehler",
"Richard Larsson"),
1859 IN(
"abs_lines",
"f_grid"),
1866 NAME(
"abs_lines_per_speciesCompact"),
1868 AUTHORS(
"Stefan Buehler",
"Richard Larsson"),
1869 OUT(
"abs_lines_per_species"),
1873 IN(
"abs_lines_per_species",
"f_grid"),
1880 NAME(
"abs_lines_per_speciesCreateFromLines"),
1882 "Split lines up into the different species.\n" 1884 "The order of the splitting will match the outer layer of *abs_species*\n" 1885 "There will be no respect for the internal layer of *abs_species*\n"),
1887 OUT(
"abs_lines_per_species"),
1891 IN(
"abs_lines",
"abs_species"),
1898 NAME(
"abs_lookupAdapt"),
1900 "Adapts a gas absorption lookup table to the current calculation.\n" 1902 "The lookup table can contain more species and more frequencies than\n" 1903 "are needed for the current calculation. This method cuts down the\n" 1904 "table in memory, so that it contains just what is needed. Also, the\n" 1905 "species in the table are brought in the same order as the species in\n" 1906 "the current calculation.\n" 1908 "Of course, the method also performs quite a lot of checks on the\n" 1909 "table. If something is not ok, a runtime error is thrown.\n" 1911 "The method sets a flag *abs_lookup_is_adapted* to indicate that the\n" 1912 "table has been checked and that it is ok. Never set this by hand,\n" 1913 "always use this method to set it!\n"),
1915 OUT(
"abs_lookup",
"abs_lookup_is_adapted"),
1919 IN(
"abs_lookup",
"abs_species",
"f_grid"),
1926 NAME(
"abs_lookupCalc"),
1928 "Creates a gas absorption lookup table.\n" 1930 "The lookup table stores absorption cross-sections as a function of\n" 1931 "pressure. Additionally, absorption can be stored as a function of\n" 1932 "temperature for temperature perturbations from a reference\n" 1935 "Additionally, absorption can be stored as a function of water vapor\n" 1936 "VMR perturbations from a reference profile. The variable *abs_nls*\n" 1937 "specifies, for which species water vapor perturbations should be\n" 1940 "Note, that the absorbing gas can be any gas, but the perturbing gas is\n" 1943 OUT(
"abs_lookup",
"abs_lookup_is_adapted"),
1962 NAME(
"abs_lookupInit"),
1964 "Creates an empty gas absorption lookup table.\n" 1966 "This is mainly there to help developers. For example, you can write\n" 1967 "the empty table to an XML file, to see the file format.\n"),
1980 NAME(
"abs_lookupSetup"),
1982 "Set up input parameters for abs_lookupCalc.\n" 1984 "More information can be found in the documentation for method\n" 1985 "*abs_lookupSetupBatch*\n" 1987 "Max and min values of H2O and temperature are adjusted to allow for\n" 1988 "numerical perturbations in Jacobian calculation.\n" 1990 "The input variables *abs_nls_interp_order* and *abs_t_interp_order*\n" 1991 "are used to make sure that there are enough points in *abs_nls_pert*\n" 1992 "and *abs_t_pert* for the chosen interpolation order.\n" 1994 "Note: For homogeneous 1D cases, it can be advantageous to calculate\n" 1995 "*abs_lookup* from the 1D atmosphere, and to expand the atmosphere\n" 1996 "to 3D only after that. This particularly if nonlinear species\n" 1997 "(i.e., H2O) are involved." 2000 " *abs_lookupSetupBatch*\n"),
2011 IN(
"atmosphere_dim",
2017 "atmfields_checked",
2019 "abs_p_interp_order",
2020 "abs_t_interp_order",
2021 "abs_nls_interp_order"),
2022 GIN(
"p_step",
"t_step",
"h2o_step"),
2023 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric"),
2026 "Maximum step in log10(p[Pa]). If the pressure grid is " 2027 "coarser than this, additional points are added until each " 2028 "log step is smaller than this.",
2030 "The temperature variation grid step in Kelvin, " 2031 "for a 2D or 3D atmosphere. For a 1D atmosphere this " 2032 "parameter is not used.",
2034 "The H2O variation grid step [fractional], if " 2035 "H2O variations are done (which is determined automatically, " 2036 "based on abs_species and the atmospheric dimension). For a " 2037 "1D atmosphere this parameter is not used.")));
2040 NAME(
"abs_lookupSetupBatch"),
2042 "Set up input parameters for abs_lookupCalc for batch calculations.\n" 2044 "This method performs a similar task as *abs_lookupSetup*, with the\n" 2045 "difference that the lookup table setup is not for a single\n" 2046 "atmospheric state, but for a whole batch of them, stored in\n" 2047 "*batch_atm_fields_compact*.\n" 2049 "The method checks *abs_species* to decide which species require\n" 2050 "nonlinear treatment in the lookup table.\n" 2052 "The method also checks which range of pressures, temperatures, and\n" 2053 "VMRs occurs, and sets *abs_p*, *abs_t*, *abs_t_pert*, and *abs_vmrs*\n" 2056 "If nonlinear species are present, *abs_nls* and *abs_nls_pert* are also\n" 2059 "Max and min values of H2O and temperature are adjusted to allow for\n" 2060 "numerical perturbations in Jacobian calculation.\n" 2062 "The input variables *abs_nls_interp_order* and *abs_t_interp_order*\n" 2063 "are used to make sure that there are enough points in *abs_nls_pert*\n" 2064 "and *abs_t_pert* for the chosen interpolation order.\n" 2066 "The method checks each given field using *atmfields_checkedCalc*.\n" 2067 "If a field does not pass the check, a run-time error is thrown.\n" 2068 "To prevent this, the parameter *robust* can be set to one: Invalid \n" 2069 "atmospheres are skipped, but the run continues. This matches the \n" 2070 "robust behaviour of *ybatchCalc*.\n" 2073 " *abs_lookupSetup*\n"),
2085 "batch_atm_fields_compact",
2086 "abs_p_interp_order",
2087 "abs_t_interp_order",
2088 "abs_nls_interp_order",
2096 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric",
"Vector",
"Index",
"Index"),
2099 "Grid step in log10(p[Pa]) (base 10 logarithm).",
2101 "The temperature variation grid step in Kelvin. The true " 2102 "step can become finer than this, if required by the " 2103 "interpolation order.",
2105 "The H2O variation grid step [fractional], if H2O variations " 2106 "are done (which is determined automatically, based on " 2107 "abs_species and the atmospheric dimension). As for T, the true " 2108 "step can turn out finer if required by the interpolation order.",
2110 "You can give here explicit extreme values to add to " 2111 "abs_t_pert and abs_nls_pert. The order is [t_pert_min, " 2112 "t_pert_max, nls_pert_min, nls_pert_max].",
2114 "A flag with value 1 or 0. If set to one, the batch\n" 2115 "setup will continue, even if individual fields are invalid.\n" 2116 "This is consistent with the behaviour of *ybatchCalc*.",
2118 "A flag with value 1 or 0. If set to one, the gridnames of \n" 2119 " every *atm_fields_compact* are checked.")));
2122 NAME(
"abs_lookupSetupWide"),
2124 "Set up input parameters for abs_lookupCalc for a wide range of\n" 2125 "atmospheric conditions.\n" 2127 "This method can be used to set up parameters for a lookup table that\n" 2128 "really covers all reasonable atmospheric conditions.\n" 2130 "Reference profiles of T and H2O will be constant, so that the\n" 2131 "different dimensions in the lookup table are actually \"orthogonal\",\n" 2132 "unlike the traditional case where we have pressure dependent reference\n" 2133 "profiles. This makes the table numerically somewhat more robust then\n" 2134 "the traditional ones, and it makes it straightforward to calculate the\n" 2135 "accuracy for the different interpolations with abs_lookupTestAccuracy.\n" 2137 "You can give min an max values for the atmospheric conditions. The\n" 2138 "default values are chosen such that they cover the value range over\n" 2139 "the complete Chevallier91L data set, and a bit more. The statistics\n" 2140 "of the Chevallier91L data are:\n" 2142 "min(p) / max(p) [Pa]: 1 / 104960\n" 2143 "min(T) / max(T) [K]: 158.21 / 320.39\n" 2144 "min(H2O) / max(H2O) [VMR]: -5.52e-07 / 0.049\n"),
2156 "abs_p_interp_order",
2157 "abs_t_interp_order",
2158 "abs_nls_interp_order"),
2159 GIN(
"p_min",
"p_max",
"p_step",
"t_min",
"t_max",
"h2o_min",
"h2o_max"),
2167 GIN_DEFAULT(
"0.5",
"110000",
"0.05",
"100",
"400",
"0",
"0.05"),
2168 GIN_DESC(
"Pressure grid minimum [Pa].",
2169 "Pressure grid maximum [Pa].",
2170 "Pressure grid step in log10(p[Pa]) (base 10 logarithm).",
2171 "Temperature grid minimum [K].",
2172 "Temperature grid maximum [K].",
2173 "Humidity grid minimum [fractional].",
2174 "Humidity grid maximum [fractional].")));
2177 NAME(
"abs_lookupTestAccuracy"),
2179 "Test accuracy of absorption lookup table.\n" 2181 "Explicitly compare absorption from the lookup table with line-by-line\n" 2182 "calculations for strategically selected conditions (in-between the\n" 2183 "lookup table grid points).\n" 2185 "For error units see *abs_lookupTestAccMC*\n" 2187 "Produces no workspace output, only output to the output streams.\n"),
2194 "abs_lookup_is_adapted",
2195 "abs_p_interp_order",
2196 "abs_t_interp_order",
2197 "abs_nls_interp_order",
2205 NAME(
"abs_lookupTestAccMC"),
2207 "Test accuracy of absorption lookup table with Monte Carlo Algorithm.\n" 2209 "Explicitly compare absorption from the lookup table with line-by-line\n" 2210 "calculations for random conditions.\n" 2212 "The quantities returned are the mean value and standard deviation of\n" 2213 "the absolute value of the relative error in percent.\n" 2214 "The relative error itself is computed for a large number of cases\n" 2215 "(pressure, temperature, and H2O VMR combinations). In the frequency\n" 2216 "dimension the maximum value is taken for each case.\n" 2218 "Produces no workspace output, only output to the output streams.\n"),
2225 "abs_lookup_is_adapted",
2226 "abs_p_interp_order",
2227 "abs_t_interp_order",
2228 "abs_nls_interp_order",
2237 NAME(
"abs_nlteFromRaw"),
2246 IN(
"nlte_level_identifiers",
2247 "nlte_vibrational_energies"),
2251 GIN_DESC(
"Vibrational data [nlevels, np]")));
2254 NAME(
"abs_speciesAdd"),
2256 "Adds species tag groups to the list of absorption species.\n" 2258 "This WSM is similar to *abs_speciesSet*, the only difference is that\n" 2259 "this method appends species to an existing list of absorption species instead\n" 2260 "of creating the whole list.\n" 2262 "See *abs_speciesSet* for details on how tags are defined and examples of\n" 2263 "how to input them in the control file.\n"),
2266 "propmat_clearsky_agenda_checked",
2267 "abs_xsec_agenda_checked"),
2275 GIN_DESC(
"Specify one String for each tag group that you want to\n" 2276 "add. Inside the String, separate the tags by commas\n" 2277 "(plus optional blanks).\n")));
2280 NAME(
"abs_speciesAdd2"),
2282 "Adds a species tag group to the list of absorption species and\n" 2283 "jacobian quantities.\n" 2285 "The method is basically a combined call of *abs_speciesAdd* and\n" 2286 "*jacobianAddAbsSpecies*. In this way it is not needed to specify a\n" 2287 "tag group in two different places.\n" 2289 "Arguments exactly as for *jacobianAddAbsSpecies*. Note that this\n" 2290 "method only handles a single tag group, in contrast to\n" 2291 "*abs_speciesAdd*.\n"),
2294 "jacobian_quantities",
2296 "propmat_clearsky_agenda_checked",
2297 "abs_xsec_agenda_checked"),
2301 IN(
"abs_species",
"atmosphere_dim",
"p_grid",
"lat_grid",
"lon_grid"),
2302 GIN(
"gin1",
"gin2",
"gin3",
"species",
"unit"),
2303 GIN_TYPE(
"Vector",
"Vector",
"Vector",
"String",
"String"),
2305 GIN_DESC(
"Pressure retrieval grid.",
2306 "Latitude retrieval grid.",
2307 "Longitude retreival grid.",
2308 "The species tag of the retrieval quantity.",
2309 "Retrieval unit. See above."),
2316 NAME(
"abs_speciesDefineAllInScenario"),
2318 "Define one tag group for each species known to ARTS and included in an\n" 2319 "atmospheric scenario.\n" 2321 "You can use this as an alternative to *abs_speciesSet* if you want to make an\n" 2322 "absorption calculation that is as complete as possible. The method\n" 2323 "goes through all defined species and tries to open the VMR file. If\n" 2324 "this works the tag is included, otherwise it is skipped.\n"),
2327 "propmat_clearsky_agenda_checked",
2328 "abs_xsec_agenda_checked"),
2337 "The name and path of a particular atmospheric scenario.\n" 2338 "For example: /pool/lookup2/arts-data/atmosphere/fascod/tropical")));
2341 NAME(
"abs_speciesDefineAll"),
2342 DESCRIPTION(
"Sets *abs_species*[i][0] to all species in ARTS\n"),
2345 "propmat_clearsky_agenda_checked",
2346 "abs_xsec_agenda_checked"),
2371 NAME(
"abs_speciesSet"),
2373 "Set up a list of absorption species tag groups.\n" 2375 "Workspace variables like *abs_species* contain several tag\n" 2376 "groups. Each tag group contains one or more tags. This method converts\n" 2377 "descriptions of tag groups given in the keyword to the ARTS internal\n" 2378 "representation (an *ArrayOfArrayOfSpeciesTag*). A tag group selects\n" 2379 "spectral features which belong to the same species.\n" 2381 "A tag is defined in terms of the name of the species, isotopologue, and a\n" 2382 "range of frequencies. Species are named after the standard chemical\n" 2383 "names, e.g., \"O3\". Isotopologues are given by the last digit of the atomic\n" 2384 "weight, i.g., \"O3-668\" for the asymmetric ozone molecule including an\n" 2385 "oxygen 18 atom. Groups of transitions are specified by giving a lower\n" 2386 "and upper limit of a frequency range, e.g., \"O3-666-500e9-501e9\".\n" 2388 "To turn on Zeeman calculation for a species, \"-Z\" may be appended\n" 2389 "to its name: \"O2-Z\" or \"O2-Z-66\"\n" 2391 "To turn on line mixing calculation for a species, \"-LM\" may be appended\n" 2392 "to its name (or after the Zeeman tag): \"O2-LM\" or \"O2-Z-LM-66\"\n" 2394 "The symbol \"*\" acts as a wild card. Furthermore, frequency range or\n" 2395 "frequency range and isotopologue may be omitted.\n" 2397 "Finally, instead of the isotopologue the special letter \"nl\" may be given,\n" 2398 "e.g., \"H2O-nl\". This means that no absorption at all is associated\n" 2399 "with this tag. (It is not quite clear if this feature is useful for\n" 2400 "anything right now.)\n" 2404 " species = [ \"O3-666-500e9-501e9, O3-686\",\n" 2406 " \"H2O-PWR98\" ]\n" 2408 " The first tag group selects all O3-666 lines between 500 and\n" 2409 " 501 GHz plus all O3-686 lines. \n" 2411 " The second tag group selects all remaining O3 transitions.\n" 2413 " The third tag group selects H2O, with one of the complete\n" 2414 " absorption models (Rosenkranz 98). No spectrocopic line catalogue\n" 2415 " data will be used for that third tag group.\n" 2417 " Note that order of tag groups in the species list matters. In our\n" 2418 " example, changing the order of the first two tag group will give\n" 2419 " different results: as \"O3\" already selects all O3 transitions,\n" 2420 " no lines will remain to be selected by the\n" 2421 " \"O3-666-500e9-501e9, O3-686\" tag.\n" 2423 "For CIA species the tag consists of the two involved species and\n" 2424 "a dataset index. CIA species can be defined for multiple regions\n" 2425 "The dataset index determines which region to use from the corresponding\n" 2426 "CIARecord in *abs_cia_data*.\n" 2430 "species = [ \"N2-CIA-N2-0, N2-CIA-N2-1\" ]\n" 2432 "For Hitran cross section species the tag consists of the species and\n" 2433 "the tagtype HXSEC, e.g. CFC11-HXSEC. The data for the species must be\n" 2434 "available in the *hitran_xsec_data* variable." 2436 "*abs_xsec_agenda_checked* and *propmat_clearsky_agenda_checked*\n" 2437 "are set to be false.\n"),
2440 "abs_xsec_agenda_checked",
2441 "propmat_clearsky_agenda_checked"),
2449 GIN_DESC(
"Specify one String for each tag group that you want to\n" 2450 "create. Inside the String, separate the tags by commas\n" 2451 "(plus optional blanks).\n")));
2454 NAME(
"abs_vecAddGas"),
2456 "Add gas absorption to first element of absorption vector.\n" 2458 "The task of this method is to sum up the gas absorption of the\n" 2459 "different gas species and add the result to the first element of the\n" 2460 "absorption vector.\n"),
2466 IN(
"abs_vec",
"propmat_clearsky"),
2473 NAME(
"abs_xsec_agenda_checkedCalc"),
2475 "Checks if the *abs_xsec_agenda* contains all necessary\n" 2476 "methods to calculate all the species in *abs_species*.\n" 2478 "This method should be called just before the *abs_xsec_agenda*\n" 2479 "is used, e.g. *abs_lookupCalc*, *ybatchCalc*, *yCalc*\n"),
2481 OUT(
"abs_xsec_agenda_checked"),
2485 IN(
"abs_species",
"abs_xsec_agenda"),
2492 NAME(
"abs_xsec_per_speciesAddCIA"),
2494 "Calculate absorption cross sections per tag group for HITRAN CIA continua.\n" 2496 "This interpolates the cross sections from *abs_cia_data*.\n" 2498 "The robust option is intended only for testing. Do not use for normal\n" 2499 "runs, since subsequent functions will not be able to deal with NAN values.\n"),
2501 OUT(
"abs_xsec_per_species",
"dabs_xsec_per_species_dx"),
2505 IN(
"abs_xsec_per_species",
2506 "dabs_xsec_per_species_dx",
2508 "jacobian_quantities",
2509 "abs_species_active",
2515 GIN(
"T_extrapolfac",
"robust"),
2519 "Temperature extrapolation factor (relative to grid spacing).",
2520 "Set to 1 to suppress runtime errors (and return NAN values instead).")));
2523 NAME(
"abs_xsec_per_speciesAddHitranXsec"),
2525 "Calculate absorption cross sections per tag group for HITRAN xsec species.\n" 2527 "This broadens the cross section data from *hitran_xsec_data* and\n" 2528 "interpolates it onto the current f_grid.\n" 2530 "apply_tfit turns of the temperature fit. It is only meant for testing\n" 2531 "and should alwasy be kept on for real calculations.\n" 2533 "This method depends on the FFTW-3 library.\n"),
2535 OUT(
"abs_xsec_per_species",
"dabs_xsec_per_species_dx"),
2539 IN(
"abs_xsec_per_species",
2540 "dabs_xsec_per_species_dx",
2542 "jacobian_quantities",
2543 "abs_species_active",
2547 "hitran_xsec_data"),
2548 GIN(
"apply_tfit",
"force_p",
"force_t"),
2549 GIN_TYPE(
"Index",
"Numeric",
"Numeric"),
2552 "Positive value forces constant pressure [Pa].",
2553 "Positive value forces constant temperature [K].")));
2556 NAME(
"abs_xsec_per_speciesAddConts"),
2558 "Calculate absorption cross sections per tag group for continua.\n"),
2560 OUT(
"abs_xsec_per_species",
"dabs_xsec_per_species_dx"),
2564 IN(
"abs_xsec_per_species",
2565 "dabs_xsec_per_species_dx",
2567 "jacobian_quantities",
2568 "abs_species_active",
2574 "abs_cont_parameters",
2582 NAME(
"abs_xsec_per_speciesAddLines"),
2584 "Calculates the line spectrum for both attenuation and phase\n" 2585 "for each tag group and adds it to abs_xsec_per_species.\n"),
2587 OUT(
"abs_xsec_per_species",
2588 "src_xsec_per_species",
2589 "dabs_xsec_per_species_dx",
2590 "dsrc_xsec_per_species_dx"),
2594 IN(
"abs_xsec_per_species",
2595 "src_xsec_per_species",
2596 "dabs_xsec_per_species_dx",
2597 "dsrc_xsec_per_species_dx",
2599 "jacobian_quantities",
2600 "abs_species_active",
2606 "abs_lines_per_species",
2607 "isotopologue_ratios",
2608 "partition_functions",
2616 NAME(
"abs_xsec_per_speciesAddPredefinedO2MPM2020"),
2617 DESCRIPTION(
"Reimplementation of published O2 absorption line cross-section algorithm\n" 2620 "\tDmitriy S. Makarov, Mikhail Yu. Tretyakov, Philip W. Rosenkranz, JQSRT 243, 2020,\n" 2621 "\tRevision of the 60-GHz atmospheric oxygen absorption band models for practical use,\n" 2622 "\thttps://doi.org/10.1016/j.jqsrt.2019.106798\n" 2624 "Note that this is only really applicable to Earth and at lower altitudes.\n" 2625 "The only two tested derivatives are for frequency and for temperature but\n" 2626 "other untested derivatives are available for all model parameters except a2\n" 2629 OUT(
"abs_xsec_per_species",
2630 "dabs_xsec_per_species_dx"),
2634 IN(
"abs_xsec_per_species",
2635 "dabs_xsec_per_species_dx",
2637 "jacobian_quantities",
2648 NAME(
"abs_xsec_per_speciesInit"),
2650 "Initialize *abs_xsec_per_species*.\n" 2652 "The initialization is\n" 2653 "necessary, because methods *abs_xsec_per_speciesAddLines*\n" 2654 "and *abs_xsec_per_speciesAddConts* just add to *abs_xsec_per_species*.\n" 2655 "The size is determined from *abs_species*.\n"),
2657 OUT(
"abs_xsec_per_species",
2658 "src_xsec_per_species",
2659 "dabs_xsec_per_species_dx",
2660 "dsrc_xsec_per_species_dx"),
2665 "jacobian_quantities",
2666 "abs_species_active",
2669 "abs_xsec_agenda_checked",
2679 "Adds zenith and azimuth angles.\n" 2681 "Adds up line-of-sights (LOS). In short, *dlos* is added to *ref_los*,\n" 2682 "assuming that a unit changes in zenith and azimuth are equal where\n" 2690 GIN(
"ref_los",
"dlos"),
2693 GIN_DESC(
"Reference line-of-sight (a single LOS).",
2694 "Change in line-of-sight (can be multiple LOS).")));
2697 NAME(
"AgendaAppend"),
2699 "Append methods to an agenda.\n" 2701 "An agenda is used to store a list of methods that are meant to be\n" 2702 "executed sequentially.\n" 2704 "This method takes the methods given in the body (in the curly braces)\n" 2705 "and appends them to the agenda given by the output argument (in the round\n" 2708 "It also uses the agenda lookup data (defined in file agendas.cc) to\n" 2709 "check, whether the given methods use the right input WSVs and produce\n" 2710 "the right output WSVs.\n"),
2738 GIN_DESC(
"Agenda to be executed."),
2743 NAME(
"AgendaExecuteExclusive"),
2745 "Execute an agenda exclusively.\n" 2747 "Only one call to *AgendaExecuteExclusive* is executed at a time.\n" 2748 "Other calls to this function are blocked until the current one\n" 2749 "finishes. WARNING: Can cause deadlocks! Use with care.\n"),
2759 GIN_DESC(
"Agenda to be executed."),
2766 "Set up an agenda.\n" 2768 "An agenda is used to store a list of methods that are meant to be\n" 2769 "executed sequentially.\n" 2771 "This method takes the methods given in the body (in the curly braces)\n" 2772 "and puts them in the agenda given by the output argument (in the round\n" 2775 "It also uses the agenda lookup data (defined in file agendas.cc) to\n" 2776 "check, whether the given methods use the right input WSVs and\n" 2777 "produce the right output WSVs.\n"),
2795 NAME(
"AngularGridsSetFluxCalc"),
2797 "Sets the angular grids for the calculation of radiation fluxes\n" 2798 "(irradiance) per hemispheres and heating rates\n" 2800 "This method sets the angular grids for the radiation fluxes type\n" 2801 "calculations and calculates the integration weights *za_grid_weights*\n" 2802 "for the zenith angle integration. For down- und up-looking\n" 2803 "geometries it suffices to define *N_za_grid* and\n" 2804 "*N_aa_grid*. From *N_aa_grid* an equally spaced grid is\n" 2805 "created and stored in the WSV*aa_grid*.\n" 2806 "Depending on the desired *za_grid_type* *za_grid* will be\n" 2807 "equally spaced ('linear') or unequally ('linear_mu','double_gauss')\n" 2808 "Important, *N_za_grid* must be an even number because for the \n" 2809 "integration over each hemisphere *N_za_grid* / 2 zenith angles are needed.\n" 2811 "Possible zenith angle grid types are:\n" 2812 "double_gauss: The zenith grid and the integration weights are set according\n" 2813 " to a gauss-legendre integration for each hemispheres.\n" 2814 "linear: Equally space grid between 0 deg and 180 deg including the poles\n" 2815 "linear_mu: Similar to 'linear' but equally spaced for cos(180 deg) to cos(0 deg),\n" 2816 " which results a unequally spaced angular grid\n" 2820 OUT(
"za_grid",
"aa_grid",
"za_grid_weights"),
2825 GIN(
"N_za_grid",
"N_aa_grid",
"za_grid_type"),
2826 GIN_TYPE(
"Index",
"Index",
"String"),
2828 GIN_DESC(
"Number of zenith angles",
2829 "Number of azimuth angles",
2830 "Zenith angle grid type")));
2833 NAME(
"ArrayOfAgendaAppend"),
2834 DESCRIPTION(
"Set up an agenda and append it to the array of agendas.\n" 2836 "See *AgendaSet* for details.\n"),
2855 DESCRIPTION(
"Execute an agenda from an ArrayOfAgenda.\n"),
2861 IN(
"agenda_array_index"),
2870 NAME(
"AntennaConstantGaussian1D"),
2872 "Sets up a 1D gaussian antenna response and a matching\n" 2873 "*mblock_dlos_grid*.\n" 2875 "As *antenna_responseGaussian*, but also creates *mblock_dlos_grid*.\n" 2876 "For returned antenna response, see *antenna_responseGaussian*.\n" 2878 "The size of *mblock_dlos_grid* is determined by *n_za_grid*.\n" 2879 "The end points of the grid are set to be the same as for the\n" 2880 "antenna response. The spacing of the grid follows the magnitude of\n" 2881 "the response; the spacing is smaller where the response is high.\n" 2882 "More precisely, the grid points are determined by dividing\n" 2883 "the cumulative sum of the response in equal steps. This makes sense\n" 2884 "if the representation error of the radiance (as a function of\n" 2885 "zenith angle) increases linearly with the grid spacing.\n" 2887 "The WSV *antenna_dlos* is set to [0].\n" 2889 "The antenna repsonse is not normalised.\n"),
2899 GIN(
"n_za_grid",
"fwhm",
"xwidth_si",
"dx_si"),
2900 GIN_TYPE(
"Index",
"Numeric",
"Numeric",
"Numeric"),
2902 GIN_DESC(
"Number of points to include in *mblock_dlos_grid*.",
2903 "Full width at half-maximum of antenna beam [deg].",
2904 "Half-width of response, in terms of std. dev.",
2905 "Grid spacing, in terms of std. dev.")));
2908 NAME(
"AntennaMultiBeamsToPencilBeams"),
2910 "Maps a multi-beam case to a matching pencil beam case.\n" 2912 "Cases with overlapping beams are most efficiently handled by\n" 2913 "letting *antenna_dlos* have several rows. That is, there are\n" 2914 "multiple beams for each measurement block. The drawback is that\n" 2915 "many variables must be adjusted if the corresponding pencil beam\n" 2916 "spectra shall be calculated. This method makes this adjustment.\n" 2917 "That is, if you have a control file for a multiple beam case and\n" 2918 "for some reason want to avoid the antenna weighting, you add this\n" 2919 "method before *sensor_responseInit*, and remove the call of\n" 2920 "*sensor_responseAntenna* and you will get the matching pencil beam\n" 2927 "mblock_dlos_grid"),
2945 "Sets some antenna related variables\n" 2947 "Use this method to set *antenna_dim* and *mblock_dlos_grid* to\n" 2948 "suitable values (1 and [0], respectively) for cases when a\n" 2949 "sensor is included, but the antenna pattern is neglected.\n"),
2951 OUT(
"antenna_dim",
"mblock_dlos_grid"),
2962 NAME(
"antenna_responseGaussian"),
2964 "Sets up a gaussian antenna response.\n" 2966 "The method assumes that the response is the same for all\n" 2967 "frequencies and polarisations, and that it can be modelled as\n" 2970 "The grid generated is approximately\n" 2971 " si * [-xwidth_si:dx_si:xwidth_si]\n" 2972 "where si is the standard deviation corresponding to the FWHM.\n" 2973 "That is, width and spacing of the grid is specified in terms of\n" 2974 "number of standard deviations. If xwidth_si is set to 2, the\n" 2975 "response will cover about 95% the complete response. For\n" 2976 "xwidth_si=3, about 99% is covered. If xwidth_si/dx_si is not\n" 2977 "an integer, the end points of the grid are kept and the spacing\n" 2978 "of the grid is reduced (ie. spacing is equal or smaller *dx_si*).\n" 2980 "If the 2D option is selected (*do_2d*), a circular antenna is\n" 2981 "assumed and the response is any direction follows the 1D case.\n" 2983 "The antenna repsonse is not normalised.\n"),
2985 OUT(
"antenna_response"),
2990 GIN(
"fwhm",
"xwidth_si",
"dx_si",
"do_2d"),
2991 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric",
"Index"),
2993 GIN_DESC(
"Full width at half-maximum",
2994 "Half-width of response, in terms of std. dev.",
2995 "Grid spacing, in terms of std. dev.",
2996 "Set to 1 to create a 2D antenna pattern.")));
2999 NAME(
"antenna_responseVaryingGaussian"),
3001 "Sets up gaussian antenna responses.\n" 3003 "Similar to *antenna_responseGaussian* but allows to set up\n" 3004 "responses that varies with frequency. That is, the method assumes\n" 3005 "that the response is the same for all polarisations, and that it\n" 3006 "can be modelled as a gaussian function varying with frequency.\n" 3008 "The full width at half maximum (FWHM in radians) is calculated as:\n" 3009 " fwhm = lambda / leff\n" 3010 "where lambda is the wavelength and *leff* is the effective size of\n" 3011 "the antenna. Normally, *leff* is smaller than the physical antenna\n" 3014 "Antenna responses are created for *nf* frequencies spanning the\n" 3015 "range [*fstart*,*fstop*], with a logarithmic spacing. That is, the\n" 3016 "frequency grid of the responses is taken from *VectorNLogSpace*.\n" 3018 "The responses have a common angular grid. The width, determined by\n" 3019 "*xwidth_si*, is set for the lowest frequency, while the spacing\n" 3020 "(*dx_si*) is set for the highest frequency. This ensures that both\n" 3021 "the width and spacing are equal or better than *xwidth_si* and\n" 3022 "*dx_si*, respectively, for all frequencies.\n" 3024 "If the 2D option is selected (*do_2d*), a circular antenna is\n" 3025 "assumed and the response is any direction follows the 1D case.\n" 3027 "The antenna repsonse is not normalised.\n"),
3029 OUT(
"antenna_response"),
3034 GIN(
"leff",
"xwidth_si",
"dx_si",
"nf",
"fstart",
"fstop",
"do_2d"),
3043 GIN_DESC(
"Effective size of the antenna",
3044 "Half-width of response, in terms of std. dev.",
3045 "Grid spacing, in terms of std. dev.",
3046 "Number of points in frequency grid (must be >= 2)",
3047 "Start point of frequency grid",
3048 "End point of frequency grid",
3049 "Set to 1 to create a 2D antenna pattern.")));
3054 "Append one workspace variable to another.\n" 3056 "This method can append an array to another array of the same type,\n" 3057 "e.g. ArrayOfIndex to ArrayOfIndex. Or a single element to an array\n" 3058 "such as a Tensor3 to an ArrayOfTensor3.\n" 3060 "Appending two vectors or a numeric to a vector works as for array\n" 3063 "Both another matrix or a vector can be appended to a matrix. In\n" 3064 "addition, for matrices, the 'append dimension' can be selected.\n" 3065 "The third argument, *dimension*, indicates how to append, where\n" 3066 "\"leading\" means to append row-wise, and \"trailing\" means\n" 3069 "Other types (TensorX) are currently only implemented for\n" 3070 "appending to the leading dimension.\n" 3072 "This method is not implemented for all types, just for those that\n" 3073 "were thought or found to be useful. (See variable list below.).\n"),
3074 AUTHORS(
"Stefan Buehler, Oliver Lemke"),
3082 ARRAY_GROUPS +
", " + ARRAY_GROUPS_WITH_BASETYPE),
3083 GOUT_DESC(
"The variable to append to."),
3085 GIN(
"in",
"dimension"),
3091 ARRAY_GROUPS +
"," + GROUPS_WITH_ARRAY_TYPE,
3095 "The variable to append.",
3096 "Where to append. Could be either the \"leading\" or \"trailing\" dimension."),
3104 NAME(
"ArrayOfGriddedFieldGetNames"),
3105 DESCRIPTION(
"Get the names of all GriddedFields stored in an Array.\n" 3107 "See *GriddedFieldGetName*.\n"),
3112 GOUT_DESC(
"Names of the GriddedFields in the ArrayOfGriddedField."),
3114 GIN(
"griddedfields"),
3115 GIN_TYPE(
"ArrayOfGriddedField1, ArrayOfGriddedField2," 3116 "ArrayOfGriddedField3, ArrayOfGriddedField4"),
3118 GIN_DESC(
"Array of GriddedFields."),
3124 NAME(
"ArrayOfIndexLinSpace"),
3126 "Initializes an ArrayOfIndex with linear spacing.\n" 3128 "The first element equals always the start value, and the spacing\n" 3129 "equals always the step value, but the last value can deviate from\n" 3130 "the stop value. *step* can be both positive and negative.\n" 3132 "The created array is [start, start+step, start+2*step, ...]\n "),
3139 GIN(
"start",
"stop",
"step"),
3140 GIN_TYPE(
"Index",
"Index",
"Index"),
3143 "Maximum/minimum value of the end value",
3144 "Spacing of the array.")));
3147 NAME(
"ArrayOfIndexSet"),
3148 DESCRIPTION(
"Creates an ArrayOfIndex from the given list of numbers.\n"),
3158 GIN_DESC(
"Indexes for initializiation."),
3162 NAME(
"ArrayOfIndexSetConstant"),
3163 DESCRIPTION(
"Creates an ArrayOfIndex of length *nelem*, with all values\n" 3178 NAME(
"ArrayOfStringSet"),
3179 DESCRIPTION(
"Sets a String array according the given text.\n" 3180 "The format is text = [\"String1\",\"String2\",...]\n"),
3190 GIN_DESC(
"Strings for initialization."),
3196 "Runs the agenda that is specified inside the curly braces. ARTS\n" 3197 "controlfiles must define this method. It is executed automatically\n" 3198 "when ARTS is run on the controlfile and cannot be called by the user.\n" 3199 "This methods was used for Arts 1 controlfiles and is now obsolete.\n" 3217 "Runs the agenda that is specified inside the curly braces. ARTS\n" 3218 "controlfiles must define this method. It is executed automatically\n" 3219 "when ARTS is run on the controlfile and cannot be called by the user.\n"),
3234 NAME(
"AtmFieldPerturb"),
3236 "Adds a perturbation to an atmospheric field.\n" 3238 "The shape and position of the perturbation follow the retrieval grids.\n" 3239 "That is, the shape of the perturbation has a traingular shape, \n" 3240 "with breake points at the retrieval grid points. The position is\n" 3241 "given as an index. This index matches the column in the Jacobian\n" 3242 "for the selected grid position.\n" 3244 "If the retrieval grids fully match the atmospheric grids, you can\n" 3245 "use *AtmFieldPerturbAtmGrids*, that is faster. The description of\n" 3246 "that method can help to understand this method.\n"),
3249 GOUT(
"perturbed_field"),
3252 IN(
"atmosphere_dim",
"p_grid",
"lat_grid",
"lon_grid"),
3253 GIN(
"original_field",
3268 GIN_DESC(
"Original field, e.g. *t_field*.",
3269 "Pressure retrieval grid.",
3270 "Latitude retrieval grid.",
3271 "Longitude retrieval grid.",
3272 "Index of position where the perturbation shall be performed.",
3273 "Size of perturbation.",
3274 "Type of perturbation, " 3281 NAME(
"AtmFieldPerturbAtmGrids"),
3283 "As *AtmFieldPerturb*, but perturbation follows the atmospheric grids.\n" 3285 "The method effectively performs this\n" 3286 " perturbed_field = original_field\n" 3287 " perturbed_field(p_index,lat_index,lon_index) += pert_size\n" 3288 "if not *pert_mode* is set to " 3290 " when this is done\n" 3291 " perturbed_field = original_field\n" 3292 " perturbed_field(p_index,lat_index,lon_index) *= 1*pert_size\n" 3293 "where p_index etc. are derived from *pert_index*.\n"),
3296 GOUT(
"perturbed_field"),
3299 IN(
"atmosphere_dim",
"p_grid",
"lat_grid",
"lon_grid"),
3300 GIN(
"original_field",
"pert_index",
"pert_size",
"pert_mode"),
3301 GIN_TYPE(
"Tensor3",
"Index",
"Numeric",
"String"),
3303 GIN_DESC(
"Original field, e.g. *t_field*.",
3304 "Index of position where the perturbation shall be performed.",
3305 "Size of perturbation.",
3306 "Type of perturbation, " 3313 NAME(
"AtmFieldPRegrid"),
3315 "Interpolates the input field along the pressure dimension from\n" 3316 "*p_grid_old* to to *p_grid_new*.\n" 3318 "Extrapolation is allowed within the common 0.5grid-step margin.\n" 3319 "in and out fields can be the same variable.\n"),
3324 GOUT_DESC(
"Regridded atmospheric field."),
3326 GIN(
"in",
"p_grid_new",
"p_grid_old",
"interp_order"),
3327 GIN_TYPE(
"Tensor3, Tensor4",
"Vector",
"Vector",
"Index"),
3329 GIN_DESC(
"Input atmospheric field.",
3330 "Pressure grid to regrid to",
3331 "Pressure grid of input field",
3332 "Interpolation order.")));
3335 NAME(
"AtmFieldsCalc"),
3337 "Interpolation of raw atmospheric T, z, VMR, and NLTE T/r fields to\n" 3338 "calculation grids.\n" 3340 "An atmospheric scenario includes the following data for each\n" 3341 "position (pressure, latitude, longitude) in the atmosphere:\n" 3342 " 1. temperature field\n" 3343 " 2. the corresponding altitude field\n" 3344 " 3. vmr fields for the gaseous species\n" 3345 "This method interpolates the fields of raw data (*t_field_raw*,\n" 3346 "*z_field_raw*, *vmr_field_raw*) which can be stored on arbitrary\n" 3347 "grids to the calculation grids (*p_grid*, *lat_grid*, *lon_grid*).\n" 3348 "If *nlte_field_raw* is empty, it is assumed to be so because LTE is\n" 3349 "assumed by the user and *nlte_field* will be empty.\n" 3351 "Internally, *AtmFieldsCalc* applies *GriddedFieldPRegrid* and\n" 3352 "*GriddedFieldLatLonRegrid*. Generally, 'half-grid-step' extrapolation\n" 3353 "is allowed and applied. However, if *vmr_zeropadding*=1 then VMRs at\n" 3354 "*p_grid* levels exceeding the raw VMRs' pressure grid are set to 0\n" 3355 "(applying the *vmr_zeropadding* option of *GriddedFieldPRegrid*).\n" 3357 "Default is to just accept obtained VMRs. If you want to enforce\n" 3358 "that all VMR created are >= 0, set *vmr_nonegative* to 1. Negative\n" 3359 "values are then set 0. Beside being present in input data, negative\n" 3360 "VMR can be generated from the interpolation if *interp_order* is\n" 3362 AUTHORS(
"Claudia Emde",
"Stefan Buehler"),
3363 OUT(
"t_field",
"z_field",
"vmr_field",
"nlte_field"),
3374 "nlte_level_identifiers",
3375 "nlte_vibrational_energies",
3380 "nlte_when_negative"),
3381 GIN_TYPE(
"Index",
"Index",
"Index",
"Index"),
3383 GIN_DESC(
"Interpolation order (1=linear interpolation).",
3384 "Pad VMRs with zeroes to fit the pressure grid if necessary.",
3385 "If set to 1, negative VMRs are set to 0.",
3386 "-1: Skip step. 0: Negative is 0. Else: Negative is t.")));
3389 NAME(
"AtmFieldsCalcExpand1D"),
3391 "Interpolation of 1D raw atmospheric fields to create 2D or 3D\n" 3392 "homogeneous atmospheric fields.\n" 3394 "The method works as *AtmFieldsCalc*, but accepts only raw 1D\n" 3395 "atmospheres. The raw atmosphere is interpolated to *p_grid* and\n" 3396 "the obtained values are applied for all latitudes, and also\n" 3397 "longitudes for 3D, to create a homogeneous atmosphere.\n" 3399 "The method deals only with the atmospheric fields, and to create\n" 3400 "a true 2D or 3D version of a 1D case, a demand is also that the\n" 3401 "ellipsoid is set to be a sphere.\n"),
3402 AUTHORS(
"Patrick Eriksson",
"Claudia Emde",
"Stefan Buehler"),
3403 OUT(
"t_field",
"z_field",
"vmr_field",
"nlte_field"),
3414 "nlte_level_identifiers",
3415 "nlte_vibrational_energies",
3420 "nlte_when_negative"),
3421 GIN_TYPE(
"Index",
"Index",
"Index",
"Index"),
3423 GIN_DESC(
"Interpolation order (1=linear interpolation).",
3424 "Pad VMRs with zeroes to fit the pressure grid if necessary.",
3425 "If set to 1, negative VMRs are set to 0.",
3426 "-1: Skip step. 0: Negative is 0. Else: Negative is t.")));
3429 NAME(
"AtmFieldsExpand1D"),
3431 "Maps a 1D case to 2D or 3D homogeneous atmospheric fields.\n" 3433 "This method takes a 1D atmospheric case and converts it to the\n" 3434 "corresponding case for 2D or 3D. The atmospheric fields (t_field,\n" 3435 "z_field and vmr_field) must be 1D and match *p_grid*. The size of\n" 3436 "the new data is determined by *atmosphere_dim*, *lat_grid* and\n" 3437 "*lon_grid*. That is, these later variables have been changed since\n" 3438 "the original fields were created.\n" 3440 "The method deals only with the atmospheric fields, and to create\n" 3441 "a true 2D or 3D version of a 1D case, a demand is also that the\n" 3442 "ellipsoid is set to be a sphere.\n"),
3444 OUT(
"t_field",
"z_field",
"vmr_field"),
3459 "Flag to determine if a search for NaN shall be performed or not.")));
3462 NAME(
"AtmFieldsExtract1D"),
3464 "Converts 2D or 3D homogeneous atmospheric fields to a 1D case.\n" 3466 "The method extracts data for given latitude and longitude index\n" 3467 "to create a 1D atmosphere. *AtmosphereSet1D* is called to set\n" 3468 "output values of *atmosphere_dim*, *lat_grid* and *lon_grid*.\n" 3469 "Nothing is done if *atmosphere_dim* alöready is 1.\n"),
3471 OUT(
"atmosphere_dim",
3480 IN(
"atmosphere_dim",
3486 GIN(
"ilat",
"ilon"),
3489 GIN_DESC(
"Pick data having this latitude index (0-based).",
3490 "Pick data having this longitude index (0-based).")));
3493 NAME(
"AtmFieldsRefinePgrid"),
3495 "Refines the pressure grid and regrids the clearsky atmospheric\n" 3496 "fields accordingly.\n" 3498 "This method is, e.g., used for absorption lookup table testing. It\n" 3499 "can also be used to refine the *p_grid* and atmospheric fields from\n" 3500 "compact state atmospheres.\n" 3502 "It adds additional vertical grid points to the atmospheric fields, by\n" 3503 "interpolating them in the usual ARTS way (linear in log pressure).\n" 3505 "How fine the new grid will be is determined by the keyword parameter\n" 3506 "p_step. The definition of p_step, and the default interpolation\n" 3507 "behavior, is consistent with *abs_lookupSetup* and\n" 3508 "*abs_lookupSetupBatch* (new points are added between the original\n" 3509 "ones, so that the spacing is always below p_step.)\n" 3511 "Internally, *AtmFieldsRefinePgrid* applies *p_gridRefine* and\n" 3512 "*AtmFieldPRegrid* to the clearsky atmospheric fields (T, z, vmr).\n" 3514 "Atmospheric field related check WSV are reset to 0 (unchecked),\n" 3515 "i.e., the corresponding checkedCalc methods have to be performed\n" 3516 "(again) before *yCalc* or similar methods can be executed.\n"),
3522 "atmfields_checked",
3524 "cloudbox_checked"),
3535 GIN(
"p_step",
"interp_order"),
3538 GIN_DESC(
"Maximum step in log(p[Pa]) (natural logarithm, as always). If\n" 3539 "the pressure grid is coarser than this, additional points\n" 3540 "are added until each log step is smaller than this.\n",
3541 "Interpolation order.")));
3544 NAME(
"AtmFieldsAndParticleBulkPropFieldFromCompact"),
3546 "Extract pressure grid and atmospheric fields from\n" 3547 "*atm_fields_compact*.\n" 3549 "An atmospheric scenario includes the following data for each\n" 3550 "position (pressure, latitude, longitude) in the atmosphere:\n" 3551 " 1. temperature field\n" 3552 " 2. the corresponding altitude field\n" 3553 " 3. vmr fields for the gaseous species\n" 3554 " 4. scattering species fields\n" 3556 "This method splits up the data found in *atm_fields_compact* to\n" 3557 "p_grid, lat_grid, lon_grid, vmr_field, particle_bulkprop_field,\n" 3558 "and particle_bulkprop_names.\n" 3559 "See documentation of *atm_fields_compact* for a definition of the\n" 3562 "Compact states are characterized by having all atmospheric fields\n" 3563 "already given on identical grids. That is, no interpolation needs\n" 3564 "to be and is performed. Keyword *p_min* allows to remove atmospheric\n" 3565 "levels with pressures lower than the given value (default: no\n" 3566 "removal). This reduces computational burden and is useful when\n" 3567 "upper atmospheric contributions are negligible.\n" 3569 "Possible future extensions: Add a keyword parameter to refine the\n" 3570 "pressure grid if it is too coarse. Or a version that interpolates\n" 3571 "onto given grids, instead of using and returning the original grids.\n"),
3572 AUTHORS(
"Jana Mendrok, Manfred Brath"),
3579 "particle_bulkprop_field",
3580 "particle_bulkprop_names"),
3584 IN(
"abs_species",
"atm_fields_compact",
"atmosphere_dim"),
3585 GIN(
"delim",
"p_min",
"check_gridnames"),
3586 GIN_TYPE(
"String",
"Numeric",
"Index"),
3589 "Delimiter string of *scat_species* elements.",
3591 "Minimum-pressure level to consider (for TOA).",
3593 "A flag with value 1 or 0. If set to one, the gridnames of \n" 3594 " the *atm_fields_compact* are checked.")));
3597 NAME(
"atmfields_checkedCalc"),
3599 "Checks consistency of (clear sky) atmospheric fields.\n" 3601 "The following WSVs are treated: *p_grid*, *lat_grid*, *lon_grid*,\n" 3602 "*t_field*, *vmr_field*, wind_u/v/w_field and mag_u/v/w_field.\n" 3604 "If any of the variables above is changed, then this method shall be\n" 3605 "called again (no automatic check that this is fulfilled!).\n" 3607 "The tests include that:\n" 3608 " 1. Atmospheric grids (p/lat/lon_grid) are OK with respect to\n" 3609 " *atmosphere_dim* (and vmr_field also regarding *abs_species*).\n" 3610 " 2. Atmospheric fields have sizes consistent with the atmospheric\n" 3612 " 3. *abs_f_interp_order* is not zero if any wind is nonzero.\n" 3613 " 4. All values in *t_field* are > 0.\n" 3615 "Default is that values in *vmr_field* are demanded to be >= 0\n" 3616 "(ie. zero allowed, in contrast to *t_field*), but this\n" 3617 "requirement can be removed by the *negative_vmr_ok* argument.\n" 3619 "If any test fails, there is an error. Otherwise,\n" 3620 "*atmfields_checked* is set to 1.\n" 3622 "The cloudbox is covered by *cloudbox_checked*, *z_field* is\n" 3623 "part of the checks done around *atmgeom_checked*.\n" 3625 "If you choose to use *bad_partition_functions_ok* please note that\n" 3626 "this is done on your own risk and that it could introduce hard-to-\n" 3627 "track errors into your calculations. Do not use this for anything\n" 3630 OUT(
"atmfields_checked"),
3634 IN(
"atmosphere_dim",
3647 "partition_functions",
3648 "abs_f_interp_order"),
3649 GIN(
"negative_vmr_ok",
"bad_partition_functions_ok"),
3652 GIN_DESC(
"Flag whether to accept vmr_field < 0.",
3653 "Flag whether to accept partition functions not covering" 3654 " *t_field* range.")));
3657 NAME(
"atmgeom_checkedCalc"),
3659 "Checks consistency of geometric considerations of the atmosphere.\n" 3661 "The following WSVs are checked: *z_field*, *refellipsoid*, *z_surface*,\n" 3662 "*lat_true* and *lon_true*. If any of the variables above is changed,\n" 3663 "then this method shall be called again (no automatic check that this is\n" 3666 "The tests include that:\n" 3667 " 1. *refellipsoid* has correct size, and that eccentricity is\n" 3668 " set to zero if 1D atmosphere.\n" 3669 " 2. *z_field* and *z_surface* have sizes consistent with the\n" 3670 " atmospheric grids.\n" 3671 " 3. There is no gap between *z_surface* and *z_field*.\n" 3673 "*lat_true* and *lon_true* are allowed to be empty.\n" 3675 "If any test fails, there is an error. Otherwise, *atmgeom_checked*\n" 3678 "See further *atmgeom_checkedCalc*.\n"),
3680 OUT(
"atmgeom_checked"),
3684 IN(
"atmosphere_dim",
3699 NAME(
"AtmosphereSet1D"),
3701 "Sets the atmospheric dimension to 1D.\n" 3703 "Sets *atmosphere_dim* to 1, and the latitude and longitude grids\n" 3704 "are set to be empty.\n"),
3706 OUT(
"atmosphere_dim",
"lat_grid",
"lon_grid"),
3717 NAME(
"AtmosphereSet2D"),
3719 "Sets the atmospheric dimension to be 2D.\n" 3721 "Sets *atmosphere_dim* to 2 and the longitude grid to be empty.\n"),
3723 OUT(
"atmosphere_dim",
"lon_grid"),
3734 NAME(
"AtmosphereSet3D"),
3736 "Sets the atmospheric dimension to 3D.\n" 3738 "Sets *atmosphere_dim* to 3, and *lat_true* and *lon_true* are\n" 3739 "set to be empty.\n"),
3741 OUT(
"atmosphere_dim",
"lat_true",
"lon_true"),
3754 "Reads atmospheric data from a scenario.\n" 3756 "An atmospheric scenario includes the following data for each\n" 3757 "position (pressure, latitude, longitude) in the atmosphere:\n" 3758 " 1. temperature field\n" 3759 " 2. the corresponding altitude field\n" 3760 " 3. vmr fields for the absorption species\n" 3761 "The vmr fields read are governed by the species given in\n" 3762 "*abs_species*. Beside gaseous species, these can also contain\n" 3763 "purely absorbing particulate matter. In the latter case the\n" 3764 "profiles are supposed to provide the mass content (unit kg/m3) for\n" 3765 "clouds and precipitation rate (unit kg/m2/s) for precipitation\n" 3766 "instead of the vmr.\n" 3768 "The data is stored in different files. This methods reads all\n" 3769 "files and creates the variables *t_field_raw*, *z_field_raw* and\n" 3770 "*vmr_field_raw*. *nlte_field_raw* is set to empty.\n" 3772 "Files in a scenarios should be named matching the pattern of:\n" 3773 "basename.speciesname.xml\n (for temperature and altitude the\n" 3774 "expected 'speciesname' are 't' and'z', respectivly)." 3776 "The files can be anywhere, but they must all be in the same\n" 3777 "directory, selected by 'basename'. The files are chosen by the\n" 3778 "species name. If you have more than one tag group for the same\n" 3779 "species, the same profile will be used.\n"),
3785 "nlte_level_identifiers",
3786 "nlte_vibrational_energies"),
3794 GIN_DESC(
"Name of scenario, probably including the full path. For " 3795 "example: \"/smiles_local/arts-data/atmosphere/fascod/" 3799 NAME(
"AtmWithNLTERawRead"),
3801 "Reads atmospheric data from a scenario.\n" 3803 "An atmospheric scenario includes the following data for each\n" 3804 "position (pressure, latitude, longitude) in the atmosphere:\n" 3805 " 1. temperature field\n" 3806 " 2. the corresponding altitude field\n" 3807 " 3. vmr fields for the gaseous species\n" 3808 " 4. Non-LTE temperature fields and matching identifiers\n" 3809 "The data is stored in different files. This method reads all\n" 3810 "files and creates the variables *t_field_raw*, *z_field_raw*,\n" 3811 "*vmr_field_raw*, *nlte_field_raw*, and *nlte_level_identifiers*.\n" 3813 "Files in a scenarios should be named matching the pattern of:\n" 3814 "tropical.H2O.xml\n" 3816 "The files can be anywhere, but they must be all in the same\n" 3817 "directory, selected by 'basename'. The files are chosen by the\n" 3818 "species name. If you have more than one tag group for the same\n" 3819 "species, the same profile will be used.\n"),
3820 AUTHORS(
"Claudia Emde",
"Richard Larsson"),
3825 "nlte_level_identifiers",
3826 "nlte_vibrational_energies"),
3831 GIN(
"basename",
"expect_vibrational_energies"),
3834 GIN_DESC(
"Name of scenario, probably including the full path. For " 3835 "example: \"/smiles_local/arts-data/atmosphere/fascod/" 3837 "Should ev.xml be read?")));
3840 NAME(
"atm_fields_compactAddConstant"),
3842 "Adds a constant field to atm_fields_compact.\n" 3844 "This is handy, e.g., for nitrogen or oxygen. The constant value can\n" 3845 "be appended or prepended as an additional field to the already\n" 3846 "existing collection of fields. All dimensions (pressure, latitude,\n" 3847 "longitude) are filled up, so this works for 1D, 2D, or 3D\n" 3850 "The passed *name* of the field has to be in accordance with the\n" 3851 "tagging structure described for *atm_fields_compact*.\n" 3853 "A list of condensibles can be optionally specified if the VMR of\n" 3854 "the added species is assuming dry air. The VMR of the added species\n" 3855 "is then scaled down by the sum of the condensibles' VMR:\n" 3856 "VMR * (1 - VMR_sum_of_condensibles).\n" 3857 "For Earth this should be set to [\"abs_species-H2O\"]\n"),
3858 AUTHORS(
"Stefan Buehler, Oliver Lemke"),
3859 OUT(
"atm_fields_compact"),
3863 IN(
"atm_fields_compact"),
3864 GIN(
"name",
"value",
"prepend",
"condensibles"),
3865 GIN_TYPE(
"String",
"Numeric",
"Index",
"ArrayOfString"),
3868 "Name of additional atmospheric field, with constant value.",
3869 "Constant value of additional field.",
3870 "0 = Append to the end, 1 = insert at the beginning.",
3871 "List of condensibles used to scale down the VMR of the added species.")));
3874 NAME(
"atm_fields_compactAddSpecies"),
3876 "Adds a field to atm_fields_compact, with interpolation.\n" 3878 "This method appends or prepends a *GriddedField3* to *atm_fields_compact*.\n" 3879 "The *GriddedField3* is interpolated upon the grid of\n" 3880 "*atm_fields_compact*. A typical use case for this method may be to\n" 3881 "add a climatology of some gas when this gas is needed for radiative\n" 3882 "transfer calculations, but not yet present in *atm_fields_compact*.\n" 3883 "One case where this happens is when using the Chevalier91L dataset\n" 3884 "for infrared simulations.\n" 3886 "The grids in *atm_fields_compact* must fully encompass the grids in\n" 3887 "the *GriddedField3* to be added, for interpolation to succeed. If\n" 3888 "this is not the case, a RuntimeError is thrown.\n" 3890 "The passed *name* of the field has to be in accordance with the\n" 3891 "tagging structure described for *atm_fields_compact*.\n"),
3893 OUT(
"atm_fields_compact"),
3897 IN(
"atm_fields_compact"),
3898 GIN(
"name",
"value",
"prepend"),
3899 GIN_TYPE(
"String",
"GriddedField3",
"Index"),
3901 GIN_DESC(
"Name of additional atmospheric field.",
3902 "Value of additional atmospheric field.",
3903 "0 = Append to the end, 1 = insert at the beginning.")));
3906 NAME(
"atm_fields_compactCleanup"),
3908 "Removes unrealistically small or erroneous data from\n" 3909 "*atm_fields_compact* (or other GriddedField4 data)\n" 3911 "This WSM checks if the data in *atm_fields_compact* contains\n" 3912 "values smaller than the given *threshold*. In this case, these\n" 3913 "values will be set to zero.\n" 3915 "The method should be applied if *atm_fields_compact* contains\n" 3916 "unrealistically small or erroneous data (NWP/GCM model data\n" 3917 "occassionally contains negative values, which are numerical\n" 3918 "artefacts rather than physical values.)\n"),
3920 OUT(
"atm_fields_compact"),
3924 IN(
"atm_fields_compact"),
3929 "Threshold below which *atm_fields_compact* values are set to zero.")));
3932 NAME(
"atm_fields_compactCreateFromField"),
3934 "Initiates *atm_fields_compact* from a field.\n" 3936 "*atm_fields_compact* will have the same size and grids as the GriddedField3,\n" 3937 "but with one dimension as length 1.\n"),
3939 OUT(
"atm_fields_compact"),
3944 GIN(
"name",
"field"),
3945 GIN_TYPE(
"String",
"GriddedField3"),
3947 GIN_DESC(
"Name atmospheric field.",
"The atmospheric field.")));
3950 NAME(
"atm_fields_compactFromMatrix"),
3952 "Sets *atm_fields_compact* from 1D fields given in form of a matrix.\n" 3954 "For batch calculations it is handy to store atmospheric\n" 3955 "profiles in an array of matrix. We take such a matrix, and create\n" 3956 "*atm_fields_compact* from it.\n" 3958 "The matrix must contain one row for each pressure level.\n" 3960 "Not all fields contained in the matrix must be selected into\n" 3961 "*atm_fields_compact*, but the selection must at least contain\n" 3962 "fields of pressure, temperature, altitude and one absorption\n" 3964 "The matrix can contain some additional fields which are not\n" 3965 "directly used by ARTS for calculations but can be required for\n" 3966 "further processing, e.g. wind speed and direction. These fields do\n" 3967 "not need to be transfered into the *atm_fields_compact* variable.\n" 3969 "Selection of fields into *atm_fields_compact* works by providing a\n" 3970 "field name tag in *field_names* for the selected fields, while\n" 3971 "unselected fields are tagged by 'ignore'. Order of tags in\n" 3972 "*field_names* is strictly taken as corresponding to column order in\n" 3974 "The pressure fields are by convention the first column of the\n" 3975 "matrix, hence must not be tagged. That is, there must be given one\n" 3976 "field name tag less than matrix columns.\n" 3978 "For detailed tagging conventions see *atm_fields_compact*.\n" 3980 "Works only for *atmosphere_dim==1.*\n"),
3981 AUTHORS(
"Stefan Buehler",
"Daniel Kreyling",
"Jana Mendrok"),
3982 OUT(
"atm_fields_compact"),
3986 IN(
"atmosphere_dim"),
3987 GIN(
"gin1",
"field_names"),
3988 GIN_TYPE(
"Matrix",
"ArrayOfString"),
3990 GIN_DESC(
"One atmosphere matrix from batch input ArrayOfMatrix.",
3991 "Order/names of atmospheric fields.")));
3994 NAME(
"backend_channel_responseFlat"),
3996 "Sets up a rectangular channel response.\n" 3998 "The response of the backend channels is hee assumed to be constant\n" 3999 "inside the resolution width, and zero outside.\n" 4001 "The method assumes that all channels have the same response.\n"),
4003 OUT(
"backend_channel_response"),
4011 GIN_DESC(
"The spectrometer resolution.")));
4014 NAME(
"backend_channel_responseGaussian"),
4016 "Sets up a gaussian backend channel response.\n" 4018 "The method assumes that all channels can be modelled as gaussian.\n" 4020 "If *fwhm* has only one element, all channels are assumed to be equal.\n" 4021 "If *fwhm* has multiple elements, *xwidth_si* and *dx_si* must have one\n" 4022 "element or the same number of elements as *fwhm*. If one element is given,\n" 4023 "this value will be used for all channels.\n" 4025 "The grid generated can be written as\n" 4026 " si * [-xwidth_si:dx_si:xwidth_si]\n" 4027 "where si is the standard deviation corresponding to the FWHM.\n" 4028 "That is, width and spacing of the grid is specified in terms of\n" 4029 "number of standard deviations. If xwidth_si is set to 2, the\n" 4030 "response will cover about 95% the complete response. For\n" 4031 "xwidth_si=3, about 99% is covered. If xwidth_si/dx_si is not\n" 4032 "an integer, the end points of the grid are kept and the spacing\n" 4033 "if the grid is adjusted in the downward direction (ie. spacing is.\n" 4034 "is max *dx_si*).\n"),
4035 AUTHORS(
"Patrick Eriksson, Oliver Lemke"),
4036 OUT(
"backend_channel_response"),
4041 GIN(
"fwhm",
"xwidth_si",
"dx_si"),
4042 GIN_TYPE(
"Vector",
"Vector",
"Vector"),
4044 GIN_DESC(
"Full width at half-maximum",
4045 "Half-width of response, in terms of std. dev.",
4046 "Grid spacing, in terms of std. dev.")));
4049 NAME(
"batch_atm_fields_compactAddConstant"),
4050 DESCRIPTION(
"Adds a constant field to batch_atm_fields_compact.\n" 4052 "Applies *atm_fields_compactAddConstant* to each batch.\n" 4053 "The format is equal to that WSM.\n"),
4055 OUT(
"batch_atm_fields_compact"),
4059 IN(
"batch_atm_fields_compact"),
4060 GIN(
"name",
"value",
"prepend",
"condensibles"),
4061 GIN_TYPE(
"String",
"Numeric",
"Index",
"ArrayOfString"),
4064 "Name of additional atmospheric field, with constant value.",
4065 "Constant value of additional field.",
4066 "0 = Append to the end, 1 = insert at the beginning.",
4067 "List of condensibles used to scale down the VMR of the added species.")));
4070 NAME(
"batch_atm_fields_compactAddSpecies"),
4072 "Adds a field to *batch_atm_fields_compact*, with interpolation.\n" 4074 "This method appends or prepends a *GriddedField3* to each *atm_fields_compact*.\n" 4075 "in *batch_atm_fields_compact*. For details, see *atm_fields_compactAddSpecies*.\n"),
4077 OUT(
"batch_atm_fields_compact"),
4081 IN(
"batch_atm_fields_compact"),
4082 GIN(
"name",
"value",
"prepend"),
4083 GIN_TYPE(
"String",
"GriddedField3",
"Index"),
4086 "Name of additional atmospheric field. Use, e.g., vmr_ch4 for methane VMR",
4087 "Value of additional atmospheric field.",
4088 "0 = Append to the end, 1 = insert at the beginning.")));
4091 NAME(
"batch_atm_fields_compactCleanup"),
4093 "Removes unrealistically small or erroneous data from each data field\n" 4094 "of *batch_atm_fields_compact* (or other AerrayOfGriddedField4 data)\n" 4096 "This WSM checks if the data in *batch_atm_fields_compact* contains\n" 4097 "values smaller than the given *threshold*. In this case, these\n" 4098 "values will be set to zero.\n" 4100 "The method should be applied if *batch_atm_fields_compact* contains\n" 4101 "unrealistically small or erroneous data (NWP/GCM model data\n" 4102 "occassionally contains negative values, which are numerical\n" 4103 "artefacts rather than physical values.)\n"),
4105 OUT(
"batch_atm_fields_compact"),
4109 IN(
"batch_atm_fields_compact"),
4114 "Threshold below which *atm_fields_compact* values are set to zero.")));
4117 NAME(
"batch_atm_fields_compactFromArrayOfMatrix"),
4119 "Expand batch of 1D atmospheric state matrices to batch_atm_fields_compact.\n" 4121 "This is used to handle 1D batch cases, e.g. from NWP/GCM model like\n" 4122 "the Chevallier91L data set, stored in a matrix (it is preferred,\n" 4123 "though, to immediatedly store the model fields as\n" 4124 "*ArrayOfGriddedField4* and use *ReadXML* to load them directly into\n" 4125 "*batch_atm_fields_compact*).\n" 4127 "Works only for *atmosphere_dim==1.*\n" 4129 "See *atm_fields_compactFromMatrix* for basic documentation.\n" 4131 "See *batch_atm_fields_compactAddConstant* and\n" 4132 "batch_atm_fields_compactAddSpecies* for adding additional fields.\n"),
4133 AUTHORS(
"Stefan Buehler",
"Daniel Kreyling",
"Jana Mendrok"),
4134 OUT(
"batch_atm_fields_compact"),
4138 IN(
"atmosphere_dim"),
4139 GIN(
"atmospheres_fields",
"field_names"),
4140 GIN_TYPE(
"ArrayOfMatrix",
"ArrayOfString"),
4142 GIN_DESC(
"Batch of atmospheres stored in one array of matrix",
4143 "Order/names of atmospheric fields.")));
4148 "Display information about the given CIA tags.\n" 4149 "The CIA tags shown are in the same format as needed by *abs_speciesSet*.\n"),
4156 GIN(
"catalogpath",
"cia_tags"),
4157 GIN_TYPE(
"String",
"ArrayOfString"),
4159 GIN_DESC(
"Path to the CIA catalog directory.",
4160 "Array of CIA tags to view, e.g. [ \"N2-N2\", \"H2-H2\" ]")));
4163 NAME(
"CIARecordReadFromFile"),
4164 DESCRIPTION(
"Reads CIARecord from Hitran-style file.\n"),
4169 GOUT_DESC(
"CIARecord type variable for input and output."),
4171 GIN(
"species_tag",
"filename"),
4174 GIN_DESC(
"SpeciesTag string to associate with this CIARecord. See " 4175 "*abs_speciesSet* for correct format.",
4176 "Filename of HITRAN CIA data file.")));
4179 NAME(
"cloudboxOff"),
4181 "Deactivates the cloud box.\n" 4183 "Use this method if no scattering calculations shall be performed.\n" 4185 "The function sets *cloudbox_on* to 0, *cloudbox_limits*,\n" 4186 "*pnd_field*, *scat_data*, *scat_data_raw*, *iy_cloudbox_agenda*\n" 4187 "and *particle_masses* to be empty and sizes *dpnd_field_dx* to be\n" 4188 "consitent with *jacobian_quantities*.\n"),
4191 "ppath_inside_cloudbox_do",
4193 "iy_cloudbox_agenda",
4199 "scat_data_checked",
4204 IN(
"jacobian_quantities"),
4211 NAME(
"cloudboxSetAutomatically"),
4213 "Sets the cloud box to encompass the cloud given by the entries\n" 4214 "in *particle_field*.\n" 4216 "This WSM handles one *Tensor4* type *particle_field* at a time. It can\n" 4217 "be used to determine the cloudbox from *particle_bulkprop_field*,\n" 4218 "but also from the various scat_species_XXX_field (or even from a\n" 4219 "read-in *pnd_field*). For the latter, the WSM needs to be called\n" 4220 "once per each scat_species_XXX_field, with previously determined\n" 4221 "*cloudbox_limits* provided through *cloudbox_limits_old*.\n" 4223 "The function must be called before executing any WSM that applies\n" 4224 "*cloudbox_limits*.\n" 4226 "The function iterates over all 3D fields in *particle_field* (which\n" 4227 "might correspond to the different scattering species as in\n" 4228 "scat_species_XXX_field or to different particle bulk properties as\n" 4229 "in *particle_bulkprop_field*). Each field is searched for the first\n" 4230 "and last pressure index, where the value is unequal to zero. This\n" 4231 "index is then copied to *cloudbox_limits*.\n" 4232 "If *particle_field* is empty, the cloudbox is switched off\n" 4233 "(*cloudbox_on*=0).\n" 4235 "Additionaly the lower cloudbox_limit is altered by *cloudbox_margin*.\n" 4236 "The margin is given as a height difference in meters and transformed\n" 4237 "into a pressure (via isothermal barometric height formula). This\n" 4238 "alteration is to ensure covering photons that leave the cloud, but\n" 4239 "reenter through a limb path.\n" 4240 "If *cloudbox_margin* is set to -1 (default), the cloudbox will extend\n" 4241 "to the surface. Hence, the lower cloudbox_limit is set to 0 (index\n" 4242 "of first pressure level).\n" 4243 "*cloudbox_margin* will be applied on each call of the WSM. Hence,\n" 4244 "if called successively, e.g. for several scat_species_XXX_field,\n" 4245 "and *cloudbox_margin* is not -1, it is suggested to apply the\n" 4246 "desired *cloudbox_margin* only for the last WSM call, while for the\n" 4247 "others set *cloudbox_margin* to 0.\n" 4249 "Works only for *atmosphere_dim==1.*\n"),
4250 AUTHORS(
"Jana Mendrok, Daniel Kreyling"),
4251 OUT(
"cloudbox_on",
"cloudbox_limits"),
4255 IN(
"atmosphere_dim",
"p_grid",
"lat_grid",
"lon_grid"),
4256 GIN(
"particle_field",
"cloudbox_limits_old",
"cloudbox_margin"),
4257 GIN_TYPE(
"Tensor4",
"ArrayOfIndex",
"Numeric"),
4259 GIN_DESC(
"A collection of particle property fields (e.g." 4260 " *particle_bulkprop_field*," 4261 " *scat_species_mass_density_field*).",
4262 "Preset cloudbox limits, e.g. resulting from a previous run" 4263 " of *cloudboxSetAutomatically*.",
4264 "Minimum distance [m] between lowest 'cloudy' level and" 4265 " cloudbox lower limit. If set to *-1* (default), the" 4266 " cloudbox lower limit is fixed to 0, i.e., corresponds to" 4267 " the lowest atmospheric level (or the surface).")));
4271 DESCRIPTION(
"Sets the cloudbox to cover the full atmosphere.\n"),
4272 AUTHORS(
"Claudia Emde, Jana Mendrok"),
4273 OUT(
"cloudbox_on",
"cloudbox_limits"),
4277 IN(
"atmosphere_dim",
"p_grid",
"lat_grid",
"lon_grid"),
4284 NAME(
"cloudboxSetManually"),
4286 "Sets the cloud box to encompass the given positions.\n" 4288 "The function sets *cloudbox_on* to 1 and sets *cloudbox_limits*\n" 4289 "following the given pressure, latitude and longitude positions.\n" 4290 "The index limits in *cloudbox_limits* are selected to give the\n" 4291 "smallest possible cloud box that encompass the given points.\n" 4293 "The points must be given in the same order as used in\n" 4294 "*cloudbox_limits*. That means that the first keyword argument\n" 4295 "shall be a higher pressure than argument two, while the latitude\n" 4296 "and longitude points are given in increasing order. Positions\n" 4297 "given for dimensions not used by the selected atmospheric\n" 4298 "dimensionality are ignored.\n" 4300 "The given pressure points can be outside the range of *p_grid*.\n" 4301 "The pressure limit is then set to the end point of *p_grid*.\n" 4302 "The given latitude and longitude points must be inside the range\n" 4303 "of the corresponding grid. In addition, the latitude and longitude\n" 4304 "points cannot be inside the outermost grid ranges as the latitude\n" 4305 "and longitude limits in *cloudbox_limits* are not allowed to be\n" 4306 "grid end points.\n"),
4308 OUT(
"cloudbox_on",
"cloudbox_limits"),
4312 IN(
"atmosphere_dim",
"p_grid",
"lat_grid",
"lon_grid"),
4313 GIN(
"p1",
"p2",
"lat1",
"lat2",
"lon1",
"lon2"),
4315 "Numeric",
"Numeric",
"Numeric",
"Numeric",
"Numeric",
"Numeric"),
4318 "Lower pressure point.",
4319 "Lower latitude point.",
4320 "Upper latitude point.",
4321 "Lower longitude point.",
4322 "Upper longitude point.")));
4325 NAME(
"cloudboxSetManuallyAltitude"),
4327 "Sets the cloud box to encompass the given positions.\n" 4329 "As *cloudboxSetManually* but uses altitudes instead of pressure.\n" 4330 "The given altitude points can be outside the range of *z_field*.\n" 4331 "The altitude limit is then set to the end point of *p_grid*.\n"),
4333 OUT(
"cloudbox_on",
"cloudbox_limits"),
4337 IN(
"atmosphere_dim",
"z_field",
"lat_grid",
"lon_grid"),
4338 GIN(
"z1",
"z2",
"lat1",
"lat2",
"lon1",
"lon2"),
4340 "Numeric",
"Numeric",
"Numeric",
"Numeric",
"Numeric",
"Numeric"),
4343 "Upper altitude point.",
4344 "Lower latitude point.",
4345 "Upper latitude point.",
4346 "Lower longitude point.",
4347 "Upper longitude point.")));
4350 NAME(
"cloudbox_checkedCalc"),
4352 "Checks consistency and validity of the cloudbox governing variables.\n" 4354 "The following WSVs are treated: *cloudbox_on*, *cloudbox_limits*,\n" 4355 "*pnd_field*, *scat_data*, *scat_species*, *abs_species*, *particle_masses*\n" 4356 "*particle_bulkprop_field*, *particle_bulkprop_names* and wind_u/v/w_field.\n" 4358 "If any of these variables is changed, then this method shall be\n" 4359 "called again (no automatic check that this is fulfilled!).\n" 4361 "The main checks are if the cloudbox limits are OK with respect to\n" 4362 "the atmospheric dimensionality and the limits of the atmosphere,\n" 4363 "and that the scattering element variables *pnd_field* and\n" 4364 "*scat_data* match in size.\n" 4366 "Further checks on *scat_data* are performed in *scat_data_checkedCalc*\n" 4368 "*scat_species* and *particle_masses* must either be empty or have a\n" 4369 "size that matches the other data. If non-empty, some check of these\n" 4370 "variables are performed.\n" 4372 "If any test fails, there is an error. Otherwise, *cloudbox_checked*\n" 4374 AUTHORS(
"Patrick Eriksson, Jana Mendrok"),
4375 OUT(
"cloudbox_checked"),
4379 IN(
"atmfields_checked",
4393 "jacobian_quantities",
4398 GIN(
"negative_pnd_ok"),
4401 GIN_DESC(
"Flag whether to accept pnd_field < 0.")));
4404 NAME(
"cloudbox_field_monoIterate"),
4406 "Iterative solution of the VRTE (DOIT method).\n" 4408 "A solution for the RTE with scattering is found using the\n" 4410 " 1. Calculate scattering integral using *doit_scat_field_agenda*.\n" 4411 " 2. Calculate RT with fixed scattered field using\n" 4412 " *doit_rte_agenda*.\n" 4413 " 3. Convergence test using *doit_conv_test_agenda*.\n" 4415 "Note: The atmospheric dimensionality *atmosphere_dim* can be\n" 4416 " either 1 or 3. To these dimensions the method adapts\n" 4417 " automatically. 2D scattering calculations are not\n" 4419 AUTHORS(
"Claudia Emde, Jakob Doerr"),
4420 OUT(
"cloudbox_field_mono"),
4424 IN(
"cloudbox_field_mono",
4425 "doit_scat_field_agenda",
4427 "doit_conv_test_agenda"),
4432 "Index wether to accelerate only the intensity (1) or the whole Stokes Vector (4)")));
4435 NAME(
"cloudbox_fieldCrop"),
4437 "Extracts a part of an existing *cloudbox_field*.\n" 4439 "The cropping is defined by defining new cloudbox limits. Note that\n" 4440 "*new_limit0* is an index with respect to *p_grid*, etc.\n" 4442 "The following must be valid:\n" 4443 " new_limit0 >= cloudbox_limits[0]\n" 4444 " new_limit1 <= cloudbox_limits[1]\n" 4445 " new_limit2 >= cloudbox_limits[2]\n" 4446 " new_limit3 <= cloudbox_limits[3]\n" 4447 " new_limit4 >= cloudbox_limits[4]\n" 4448 " new_limit5 <= cloudbox_limits[5]\n" 4450 "Indexes for dimensions not used are ignored.\n"),
4452 OUT(
"cloudbox_field",
"cloudbox_limits"),
4456 IN(
"atmosphere_dim",
"cloudbox_on",
"cloudbox_limits",
"cloudbox_field"),
4463 GIN_TYPE(
"Index",
"Index",
"Index",
"Index",
"Index",
"Index"),
4465 GIN_DESC(
"New value for cloudbox_limits[0].",
4466 "New value for cloudbox_limits[1].",
4467 "New value for cloudbox_limits[2].",
4468 "New value for cloudbox_limits[3].",
4469 "New value for cloudbox_limits[4].",
4470 "New value for cloudbox_limits[5].")));
4473 NAME(
"cloudbox_fieldSetFromPrecalc"),
4475 "Sets the initial cloudbox intensity field *cloudbox_field* from a\n" 4476 "precalculated field.\n" 4478 "This method sets the (monochromatic) first guess radiation field\n" 4479 "inside the cloudbox from a precalculated *cloudbox_field_precalc*,\n" 4480 "e.g., from the solution of a similar atmospheric scenario. The\n" 4481 "dimensions of *cloudbox_field_precalc* have to be consistent with\n" 4482 "the DOIT setup in terms of frequencies, pressure levels inside the\n" 4483 "cloudbox, polar angles used as well as the stokes dimension.\n" 4484 "Incoming field on the cloudbox boundaries is adapted to the actual\n" 4485 "clearsky incoming field as, e.g., calculated by *DoitGetIncoming*.\n"),
4487 OUT(
"cloudbox_field"),
4491 IN(
"cloudbox_field",
4497 "doit_is_initialized"),
4498 GIN(
"cloudbox_field_precalc"),
4501 GIN_DESC(
"Precalculated radiation field (of type *cloudbox_field*)")));
4504 NAME(
"cloudbox_fieldSetClearsky"),
4506 "Interpolate clearsky field on all gridpoints in cloudbox.\n" 4508 "This method uses a linear 1D/3D interpolation scheme to obtain the\n" 4509 "radiation field on all grid points inside the cloud box from the\n" 4510 "clear sky field on the cloudbox boundary. This radiation field\n" 4511 "is taken as the first guess radiation field in the DOIT module.\n" 4513 "Set the *all_frequencies* to 1 if the clearsky field shall be used\n" 4514 "as initial field for all frequencies. Set it to 0 if the clear sky\n" 4515 "field shall be used only for the first frequency in *f_grid*. For\n" 4516 "later frequencies, *cloudbox_field* of the previous frequency is then\n" 4518 AUTHORS(
"Sreerekha T.R. and Claudia Emde"),
4519 OUT(
"cloudbox_field"),
4523 IN(
"cloudbox_field",
4530 "doit_is_initialized"),
4531 GIN(
"all_frequencies"),
4537 NAME(
"cloudbox_field_monoSetConst"),
4539 "This method sets the initial field inside the cloudbox to a\n" 4540 "constant value. The method works only for monochromatic\n" 4541 "calculations (number of elements in f_grid=1).\n" 4543 "The user can specify a value for each Stokes dimension in the\n" 4544 "control file by *value*.\n"),
4546 OUT(
"cloudbox_field_mono"),
4550 IN(
"cloudbox_field_mono",
4560 GIN_DESC(
"A vector containing 4 elements with the value of the " 4561 "initial field for each Stokes dimension.")));
4564 NAME(
"cloudbox_fieldSetConst"),
4566 "This method sets the initial field inside the cloudbox to a\n" 4569 "The user has to specify a value for each Stokes dimension in the\n" 4570 "control file by *value*.\n"),
4572 OUT(
"cloudbox_field"),
4576 IN(
"cloudbox_field",
4586 GIN_DESC(
"A vector containing *stokes_dim* elements with the value of" 4587 " the initial field for each Stokes dimension.")));
4590 NAME(
"cloudbox_fieldSetConstPerFreq"),
4592 "This method sets the initial field inside the cloudbox to a\n" 4593 "constant value per frequency slice.\n" 4595 "The user has specify a value for each frequency and Stokes\n" 4596 "dimension in the control file by *value*.\n"),
4598 OUT(
"cloudbox_field"),
4602 IN(
"cloudbox_field",
4612 GIN_DESC(
"A matrix containing *stokes_dim* elements per frequency" 4613 " (row) with the value of the initial field for each" 4614 " frequency and Stokes dimension.")));
4617 NAME(
"cloudbox_fieldUpdate1D"),
4619 "RT calculation in cloudbox with fixed scattering integral (1D).\n" 4621 "Updates the radiation field (DOIT method). The method loops\n" 4622 "through the cloudbox to update the radiation field for all\n" 4623 "positions and directions in the 1D cloudbox.\n" 4625 "Note: This method is very inefficient, because the number of\n" 4626 "iterations scales with the number of cloudbox pressure levels.\n" 4627 "It is recommended to use *cloudbox_fieldUpdateSeq1D*.\n"),
4629 OUT(
"cloudbox_field_mono"),
4633 IN(
"cloudbox_field_mono",
4636 "propmat_clearsky_agenda",
4641 "ppath_step_agenda",
4650 "surface_rtprop_agenda",
4658 NAME(
"cloudbox_fieldUpdateSeq1D"),
4660 "RT calculation in cloudbox with fixed scattering integral.\n" 4662 "Updates radiation field (*cloudbox_field*) in DOIT module.\n" 4663 "This method loops through the cloudbox to update the\n" 4664 "radiation field for all positions and directions in the 1D\n" 4665 "cloudbox. The method applies the sequential update. For more\n" 4666 "information refer to AUG.\n"),
4668 OUT(
"cloudbox_field_mono",
"doit_scat_field"),
4672 IN(
"cloudbox_field_mono",
4675 "propmat_clearsky_agenda",
4681 "ppath_step_agenda",
4690 "surface_rtprop_agenda",
4692 GIN(
"normalize",
"norm_error_threshold",
"norm_debug"),
4693 GIN_TYPE(
"Index",
"Numeric",
"Index"),
4696 "Apply normalization to scattered field.",
4697 "Error threshold for scattered field correction factor.",
4698 "Debugging flag. Set to 1 to output normalization factor to out0.")));
4701 NAME(
"cloudbox_fieldUpdateSeq1DPP"),
4703 "RT calculation in cloudbox with fixed scattering integral.\n" 4705 "Update radiation field (*cloudbox_field*) in DOIT module.\n" 4706 "This method loops through the cloudbox to update the\n" 4707 "radiation field for all\n" 4708 "positions and directions in the 1D cloudbox. The method applies\n" 4709 "the sequential update and the plane parallel approximation.\n" 4710 "This method is only slightly faster than\n" 4711 "*cloudbox_fieldUpdateSeq1D* and it is less accurate. It can not\n" 4712 "be used for limb simulations.\n"),
4714 OUT(
"cloudbox_field_mono",
"za_index"),
4718 IN(
"cloudbox_field_mono",
4721 "propmat_clearsky_agenda",
4737 NAME(
"cloudbox_fieldUpdateSeq3D"),
4739 "RT calculation in cloudbox with fixed scattering integral.\n" 4741 "Update radiation field (*cloudbox_field*) in DOIT module.\n" 4742 "This method loops through the cloudbox to update the\n" 4743 "radiation field for all positions and directions in the 3D\n" 4744 "cloudbox. The method applies the sequential update. For more\n" 4745 "information please refer to AUG.\n" 4746 "Surface reflections are not yet implemented in 3D scattering\n" 4749 OUT(
"cloudbox_field_mono"),
4753 IN(
"cloudbox_field_mono",
4756 "propmat_clearsky_agenda",
4762 "ppath_step_agenda",
4780 NAME(
"cloudbox_field_monoOptimizeReverse"),
4782 "Interpolate *cloudbox_field_mono* back to the original p_grid.\n" 4783 "For detailed description, see *OptimizeDoitPressureGrid*. \n"),
4785 OUT(
"cloudbox_field_mono"),
4789 IN(
"cloudbox_field_mono",
"p_grid_orig",
"p_grid",
"cloudbox_limits"),
4798 "Checks the consistency between two variables.\n" 4800 "The two variables are checked to not deviate outside the specified\n" 4801 "value (*maxabsdiff*). An error is issued if this is not fulfilled.\n" 4803 "The main application of this method is to be part of the test\n" 4804 "control files, and then used to check that a calculated value\n" 4805 "is consistent with an old, reference, value.\n"),
4812 GIN(
"var1",
"var2",
"maxabsdiff",
"error_message"),
4814 "Numeric, Vector, Matrix, Tensor3, Tensor4, Tensor5, Tensor7," 4815 "ArrayOfVector, ArrayOfMatrix, ArrayOfTensor7, GriddedField3," 4816 "Sparse, SingleScatteringData",
4818 "Numeric, Vector, Matrix, Tensor3, Tensor4, Tensor5, Tensor7," 4819 "ArrayOfVector, ArrayOfMatrix, ArrayOfTensor7, GriddedField3," 4820 "Sparse, SingleScatteringData",
4826 "A second variable",
4827 "Threshold for maximum absolute difference.",
4828 "Additional error message."),
4836 NAME(
"CompareRelative"),
4838 "Checks the consistency between two variables by their relative values.\n" 4840 "The two variables are checked to not deviate outside the specified\n" 4841 "relative value (*maxabsreldiff*). An error is issued if this is not\n" 4844 "The main application of this method is to be part of the test\n" 4845 "control files, and then used to check that a calculated value\n" 4846 "is consistent with an old, reference, value.\n" 4848 "If either value is 0.0, the relative error is considered as 0\n" 4849 "for easier use. This really means infinite differences, though\n" 4850 "allowing zero-crossings is useful for plenty of tests. So Be Aware!\n" 4852 "If both *var1* and *var2* are non-zero, the difference is evaluated\n" 4853 "as: abs(var1/var2-1)\n" 4854 "That is, *var2* is taken as the reference value.\n"),
4855 AUTHORS(
"Oliver Lemke",
"Richard Larsson"),
4861 GIN(
"var1",
"var2",
"maxabsreldiff",
"error_message"),
4863 "Numeric, Vector, Matrix, Tensor3, Tensor4, Tensor5, Tensor6, Tensor7," 4864 "ArrayOfVector, ArrayOfMatrix, ArrayOfTensor3, ArrayOfTensor4," 4865 "ArrayOfTensor6, ArrayOfTensor7, ArrayOfArrayOfVector," 4866 "ArrayOfArrayOfMatrix, ArrayOfArrayOfTensor3, ArrayOfArrayOfTensor6," 4867 "ArrayOfPropagationMatrix, ArrayOfArrayOfPropagationMatrix," 4868 "ArrayOfStokesVector, ArrayOfArrayOfStokesVector,EnergyLevelMap,",
4869 "Numeric, Vector, Matrix, Tensor3, Tensor4, Tensor5, Tensor6, Tensor7," 4870 "ArrayOfVector, ArrayOfMatrix, ArrayOfTensor3, ArrayOfTensor4," 4871 "ArrayOfTensor6, ArrayOfTensor7, ArrayOfArrayOfVector," 4872 "ArrayOfArrayOfMatrix, ArrayOfArrayOfTensor3, ArrayOfArrayOfTensor6," 4873 "ArrayOfPropagationMatrix, ArrayOfArrayOfPropagationMatrix," 4874 "ArrayOfStokesVector, ArrayOfArrayOfStokesVector,EnergyLevelMap,",
4879 "A second variable",
4880 "Threshold for maximum relative difference.",
4881 "Additional error message."),
4889 NAME(
"complex_refr_indexConstant"),
4891 "Set complex refractive index to a constant value.\n" 4893 "Frequency and temperature grids are set to have length 1 (and\n" 4894 "set to the value 0).\n"),
4896 OUT(
"complex_refr_index"),
4901 GIN(
"refr_index_real",
"refr_index_imag"),
4904 GIN_DESC(
"Real part of refractive index",
4905 "Imag part of refractive index")));
4908 NAME(
"complex_refr_indexIceMatzler06"),
4910 "Refractive index of ice following Matzler06 parameterization.\n" 4912 "Calculates temperature dependent complex refractive index of\n" 4913 "hexagonal ice at microwave and sub-mm frequencies (10MHz-3Tz).\n" 4915 "This parametrization is also applied by the microwave and\n" 4916 "submm-wave part of the Warren08 model.\n" 4919 "Matzler, C., 2006: Thermal Microwave Radiation: Application for\n" 4920 "Remote Sensing, Microwave dielectric properties of ice, pp. 455-462,\n" 4921 "Inst. Eng. Technol., Stevenage, U. K.\n" 4922 "Warren, S. G., and R. E. Brandt, 2008: Optical constants of ice\n" 4923 "from the ultraviolet to the microwave: A revised compilation,\n" 4924 "J. Geophys. Res., 113, D14220, doi:10.1029/2007JD009744.\n"),
4926 OUT(
"complex_refr_index"),
4931 GIN(
"data_f_grid",
"data_T_grid"),
4934 GIN_DESC(
"Frequency grid for refractive index calculation",
4935 "Temperature grid for refractive index calculation")));
4938 NAME(
"complex_refr_indexIceWarren84"),
4940 "Refractive index of ice following Warren84 parameterization.\n" 4942 "Calculates complex refractive index of Ice 1H for wavelengths\n" 4943 "between 45 nm and 8.6 m.\n" 4944 "For wavelengths above 167 microns, temperature dependence is\n" 4945 "included for temperatures between 213 and 272K.\n" 4946 "Mainly intended for applications in Earth ice\n" 4947 "clouds and snow, not other planets or interstellar space;\n" 4948 "the temperature dependence or crystalline form of ice may be\n" 4949 "incorrect for these latter applications.\n" 4951 "Authors of Fortran function:\n" 4952 "Stephen Warren, Univ. of Washington (1983)\n" 4953 "Bo-Cai Gao, JCESS, Univ. of Maryland (1995)\n" 4954 "Warren Wiscombe, NASA Goddard (1995)\n" 4957 "Warren, S., 1984: Optical Constants of Ice from the Ultraviolet\n" 4958 "to the Microwave, Appl. Opt. 23, 1206-1225\n" 4960 "Kou, L., D. Labrie, and P. Chylek, 1994: Refractive indices\n" 4961 "of water and ice in the 0.65- to 2.5-micron spectral range,\n" 4962 "Appl. Opt. 32, 3531-3540\n" 4964 "Perovich, D., and J. Govoni, 1991: Absorption Coefficients\n" 4965 "of Ice from 250 to 400 nm, Geophys. Res. Lett. 18, 1233-1235\n"),
4967 OUT(
"complex_refr_index"),
4972 GIN(
"data_f_grid",
"data_T_grid"),
4975 GIN_DESC(
"Frequency grid for refractive index calculation",
4976 "Temperature grid for refractive index calculation")));
4979 NAME(
"complex_refr_indexWaterLiebe93"),
4981 "Complex refractive index of liquid water according to Liebe 1993.\n" 4983 "The method treats liquid water without salt. Thus, not valid below\n" 4984 "10 GHz. Upper frequency limit not known, here set to 1000 GHz.\n" 4985 "Model parameters taken from Atmlab function epswater93 (by\n" 4986 "C. Maetzler), which refer to Liebe 1993 without closer\n" 4989 "Temperatures must be between -40 and 100 degrees Celsius. The\n" 4990 "accuracy of the parametrization below 0 C is not known by us.\n"),
4991 AUTHORS(
"Patrick Eriksson",
"Oliver Lemke"),
4992 OUT(
"complex_refr_index"),
4997 GIN(
"data_f_grid",
"data_T_grid"),
5000 GIN_DESC(
"Frequency grid for refractive index calculation",
5001 "Temperature grid for refractive index calculation")));
5006 "Copy a workspace variable.\n" 5008 "This method can copy any workspace variable\n" 5009 "to another workspace variable of the same group. (E.g., a Matrix to\n" 5010 "another Matrix.)\n" 5012 "As always, output comes first in the argument list!\n" 5016 "Copy(f_grid, p_grid)\n" 5018 "Will copy the content of *p_grid* to *f_grid*. The size of *f_grid*\n" 5019 "is adjusted automatically (the normal behaviour for workspace\n" 5040 "Create 1D covariance matrix.\n" 5042 "Creates a 1D covariance matrix for two retrieval quantities on given \n" 5043 " grids from a given functional form. Elements of the covariance matrix\n" 5045 " S_{i,j} = sigma_i * sigma_j * f(d_{i,j} / l_{i,j}) \n" 5046 " where d_{i,j} is the distance between the two grid points and l_{i,j}\n" 5047 " the mean of the correlation lengths of the grid points.\n" 5049 " If a cutoff value co is given elements with absolute value less than this \n" 5050 " are set to zero.\n" 5052 "The following functional forms are available:\n" 5053 " \"exp\": f(x) = exp(-x) \n" 5054 " \"lin\": f(x) = 1.0 - x, for x > 1.0, 0.0 otherwise \n" 5055 " \"gauss\": f(x) = exp(-x^2) \n"),
5056 AUTHORS(
"Simon Pfreundschuh"),
5060 GOUT_DESC(
"The matrix in which to store the covariance matrix."),
5079 GIN_DESC(
"The retrieval grid for the first retrieval quantity.",
5080 "The retrieval grid for the second retrieval quantity." 5081 " (If empty taken as grid_1)",
5082 "The variances of the first retrieval quantity.",
5083 "The variances of the second retrieval quantity." 5084 "(If empty taken as sigma_1)",
5085 "The correlations lengths of the first retrieval quantity.",
5086 "The correlations lengths of the second retrieval quantity." 5087 "(If empty taken as cls_1)",
5088 "The cutoff value for covariance matrix elements.",
5089 "The name of the functional form to use."),
5095 NAME(
"covmat1DMarkov"),
5097 "Create Markov Process Covariance Matrix.\n" 5099 "Create a markov process covariance matrix for a retrieval quantity on \n" 5100 " evenly spaced 1D grid. The correlation between two grid points i,j is \n" 5101 " is computed as \n" 5102 " cov(i,j) = sigma[i] * sigma[j] * exp(- d(i,j) / lc)\n" 5103 " where d(i,j) = abs(grid[i] - grid[j]).\n" 5105 "This function also sets covmat_inv_block to the analytically computed inverse\n" 5106 "of the covariance matrix of the markov provess, which is tri-diagonal. Note\n" 5107 "that this requires the retrieval grid to be evenly spaced.\n"),
5108 AUTHORS(
"Simon Pfreundschuh"),
5110 GOUT(
"out",
"out_inverse"),
5111 GOUT_TYPE(
"Matrix, Sparse",
"Matrix, Sparse"),
5113 "The matrix in which to store the covariance matrix.",
5114 "The matrix in which to store the inverse of the covariance matrix."),
5116 GIN(
"grid",
"sigma",
"lc",
"co"),
5117 GIN_TYPE(
"Vector",
"Vector",
"Numeric",
"Numeric"),
5120 "The vairance for each grid point.",
5121 "The correlation length of the Markov process.",
5122 "The cutoff value below which elements will be set to 0.0"),
5128 NAME(
"covmatDiagonal"),
5130 "Sets the matrix in covmat_block to a diagonal matrix with the variances\n" 5131 "provided in *vars* as diagonal elements." 5133 "Also sets covmat_block_inv to the inverse of the block so that the\n" 5134 "computation of the inverse is avoided.\n"),
5135 AUTHORS(
"Simon Pfreundschuh"),
5137 GOUT(
"out",
"out_inverse"),
5138 GOUT_TYPE(
"Matrix, Sparse",
"Matrix, Sparse"),
5140 "The matrix in which to store the covariance matrix.",
5141 "The matrix in which to store the inverse of the covariance matrix."),
5146 GIN_DESC(
"Variances to be used as diagonal elements of covmat_block."),
5152 NAME(
"covmat_seAddBlock"),
5154 "Add a block to the measurement covariance matrix *covmat_se*\n" 5156 "This functions adds a given dense or sparse matrix as block to the covariance\n" 5157 "matrix *covmat_sx*. The position of the block can be given by the generic\n" 5158 "arguments *i* and *j*. Note that diagonal blocks must be added in order starting from\n" 5159 " in the top left corner. If an off-diagonal block is added it must have corresponding\n" 5160 " existing blocks on the diagonal and these must be consistent with the dimensions\n" 5161 " of the block. If *i* and *j* are not provided, the blok will be added\n" 5162 "at the first free spot on the diagonal.\n"),
5163 AUTHORS(
"Simon Pfreundschuh"),
5169 GIN(
"block",
"i",
"j"),
5170 GIN_TYPE(
"Matrix, Sparse",
"Index",
"Index"),
5172 GIN_DESC(
"The block to add to the covariance matrix",
5173 "Index of a retrieval quantity. Must satisfy *i* <= *j*.",
5174 "Index of a retrieval quantity. Must satisfy *i* <= *j*."),
5180 NAME(
"covmat_seAddInverseBlock"),
5182 "Add the inverse of a block to covariance matrix *covmat_se*\n" 5184 "This functions adds a given matrix as the inverse of a block in the covariance\n" 5185 "matrix *covmat_se*. The purpose of this function is to allow the user to\n" 5186 "to use a precomputed inverse for this block in the covariance matrix, that may\n" 5187 "for example have been obtained analytically.\n" 5189 "This function requires the corresponding non-inverse block to already be present in *covmat_se*" 5191 "\n Note that for this to work this retrieval quantity must be independent from\n" 5192 "other retrieval quantities that do not have an inverse. Otherwise the inverse\n" 5193 "will be ignored and recomputed numerically.\n" 5195 "For the rest, the same requirements as for *covmat_seAddBlock* apply.\n"),
5196 AUTHORS(
"Simon Pfreundschuh"),
5202 GIN(
"block",
"i",
"j"),
5203 GIN_TYPE(
"Matrix, Sparse",
"Index",
"Index"),
5205 GIN_DESC(
"The inverse block to add to the covariance matrix",
5206 "Index of a retrieval quantity. Must satisfy *i* <= *j*.",
5207 "Index of a retrieval quantity. Must satisfy *i* <= *j*."),
5213 NAME(
"covmat_seSet"),
5215 "Set covmat_se to a given matrix.\n" 5217 "This sets the measurement covariance matrix *covmat_se* to\n" 5218 "the matrix given by the generic input *covmat*. The covariance\n" 5219 "matrix can be of type CovarianceMatrix, Matrix or Sparse.\n"),
5220 AUTHORS(
"Simon Pfreundschuh"),
5227 GIN_TYPE(
"CovarianceMatrix, Matrix, Sparse"),
5229 GIN_DESC(
"The matrix to set as the covariance matrix."),
5235 NAME(
"covmat_sxSet"),
5237 "Set covmat_sx to a given matrix.\n" 5239 "This sets the measurement covariance matrix *covmat_sx* to\n" 5240 "the matrix given by the generic input *covmat*. The covariance\n" 5241 "matrix can be of type CovarianceMatrix, Matrix or Sparse.\n"),
5242 AUTHORS(
"Simon Pfreundschuh"),
5249 GIN_TYPE(
"CovarianceMatrix, Matrix, Sparse"),
5251 GIN_DESC(
"The matrix to set as the covariance matrix."),
5257 NAME(
"covmat_sxAddBlock"),
5259 "Add a block to the a priori covariance matrix *covmat_sx*\n" 5261 "This functions adds a given matrix as a block in the covariance\n" 5262 "matrix *covmat_sx*. The position of the block can be given by the generic\n" 5263 "arguments *i* and *j*, which should give the index of the retrieval quantity in\n" 5264 "*jacobian_quantities*, which is given just by the order the quantities have been\n" 5265 "added to the retrieval.\n" 5267 "If arguments *i* and *j* are omitted, the block will be added as diagonal block\n" 5268 "for the last added retrieval quantity.\n" 5270 "If provided, the index *i* must be less than or equal to *j*. Also the provided\n" 5271 "block must be consistent with the corresponding retrieval quantities.\n"),
5272 AUTHORS(
"Simon Pfreundschuh"),
5277 IN(
"covmat_sx",
"jacobian_quantities"),
5278 GIN(
"block",
"i",
"j"),
5279 GIN_TYPE(
"Matrix, Sparse",
"Index",
"Index"),
5281 GIN_DESC(
"The block to add to the covariance matrix",
5282 "Index of a retrieval quantity. Must satisfy *i* <= *j*.",
5283 "Index of a retrieval quantity. Must satisfy *i* <= *j*."),
5289 NAME(
"covmat_sxAddInverseBlock"),
5291 "Add the inverse of a block in covariance matrix *covmat_sx*\n" 5293 "This functions adds a given matrix as the inverse of a block in the covariance\n" 5294 "matrix *covmat_sx*. The purpose of this function is to allow the user to\n" 5295 "to use a precomputed inverse for this block in the covariance matrix, the may\n" 5296 "for example by obtained analytically.\n" 5298 "This function requires the non-inverse block to already be present in *covmat_sx*" 5300 "\n Note that for this to work this retrieval quantity must be independent from\n" 5301 "other retrieval quantities that do not have an inverse. Otherwise the inverse\n" 5302 "will be ignored and recomputed numerically.\n" 5304 "For the rest, the same requirements as for *covmat_sxAddBlock* apply.\n"),
5305 AUTHORS(
"Simon Pfreundschuh"),
5310 IN(
"covmat_sx",
"jacobian_quantities"),
5311 GIN(
"block",
"i",
"j"),
5312 GIN_TYPE(
"Matrix, Sparse",
"Index",
"Index"),
5314 GIN_DESC(
"The inverse block to add to the covariance matrix",
5315 "Index of a retrieval quantity. Must satisfy *i* <= *j*.",
5316 "Index of a retrieval quantity. Must satisfy *i* <= *j*."),
5322 NAME(
"covmat_sxExtractSqrtDiagonal"),
5324 "Extract the square root of the diagonal of the state space covariance matrix." 5326 "This function extracts the diagonal of the state space covariance matrix\n" 5327 "*covmat_sx* and computes its square root. The resulting vector can then\n" 5328 "be used as *x_norm* argument for the OEM method to avoid scaling problems.\n"),
5329 AUTHORS(
"Simon Pfreundschuh"),
5333 GOUT_DESC(
"The vector containing the square root of the diagonal elements" 5346 "Deletes a workspace variable.\n" 5348 "The variable is marked as uninitialized and its memory freed.\n" 5349 "It is not removed from the workspace though, therefore you\n" 5350 "don't need to/can't call Create for this variable again.\n"),
5360 GIN_DESC(
"Variable to be deleted."),
5368 NAME(
"diameter_maxFromDiameter_volume_equ"),
5370 "Calculates maximum and area equivalent diameters from volume\n" 5371 "equivalent diameter.\n" 5373 "This is primarily a help function for using the T-matrix method\n" 5374 "and only a few particle shapes are handled. " 5376 "For shapes handled and further comments on the input arguments, see\n" 5377 "*scat_data_singleTmatrix*.\n" 5379 "Area equivalent diameter is the equivalent sphere diameter\n" 5380 "corresponding to the \"maximum axial area\". This is the largest\n" 5381 "cross-sectional area of the particle, observed either along the\n" 5382 "particle's main axis or in the perpendicular direction. That is,\n" 5383 "for a cylinder having diameter d and thickness h, this area is\n" 5384 "either (pi*d^2)/4 or (h*d).\n"),
5385 AUTHORS(
"Johan Strandgren",
"Patrick Eriksson"),
5387 GOUT(
"diameter_max",
"diameter_area_equ"),
5390 "Maximum dimension of the particle.",
5391 "Maximum axial area equivalent diameter of the particle, see above."),
5393 GIN(
"shape",
"diameter_volume_equ",
"aspect_ratio"),
5394 GIN_TYPE(
"String",
"Numeric",
"Numeric"),
5397 "Particle equivalent volume diameter.",
5398 "Particle aspect ratio.")));
5401 NAME(
"diameter_volume_equFromDiameter_max"),
5403 "Converts from maximum to volume equivalent diameter.\n" 5405 "This is primarily a help function for using the T-matrix part\n" 5406 "and only a few particle shapes are handled. " 5408 "For shapes handled and further comments on the input arguments,\n" 5409 "see *scat_data_singleTmatrix*.\n" 5411 "Also the volume is provided. It is simply sqrt(pi*dveq^3/6).\n"),
5412 AUTHORS(
"Johan Strandgren",
"Patrick Eriksson"),
5414 GOUT(
"diameter_volume_equ",
"volume"),
5416 GOUT_DESC(
"Particle volume equivalent diameter.",
5417 "Volume of the particle."),
5419 GIN(
"shape",
"diameter_max",
"aspect_ratio"),
5420 GIN_TYPE(
"String",
"Numeric",
"Numeric"),
5423 "Maximum dimension of the particle.",
5424 "Particle aspect ratio.")));
5427 NAME(
"DiagonalMatrix"),
5429 "Create a diagonal matrix from a vector." 5431 "This creates a dense or sparse diagonal matrix with the elements of the given vector\n" 5432 " on the diagonal.\n"),
5433 AUTHORS(
"Simon Pfreundschuh"),
5442 GIN_DESC(
"The vector containing the diagonal elements.")));
5447 "Derives the difference betwenn zenith and azimuth angles.\n" 5449 "Determines the difference between a set of angles (*other_los*)\n" 5450 "and a reference direction (*ref_los*). This method reverses the\n" 5451 "addition made by *AddZaAa*.\n"),
5456 GOUT_DESC(
"Derived differences in line-of-sight."),
5458 GIN(
"ref_los",
"other_los"),
5461 GIN_DESC(
"Reference line-of-sight (a single LOS).",
5462 "Other line-of-sights (can be multiple LOS).")));
5467 "Interface to the DISORT scattering solver (by Stamnes et al.).\n" 5469 "DISCLAIMER: There is a couple of known issues with the current\n" 5470 "implementation (see below). Use this WSM with care and only if\n" 5471 "these limitations/requirements are fulfilled. Results might be\n" 5472 "erroneous otherwise.\n" 5474 "DISORT provides the radiation field (*cloudbox_field*) from a scalar\n" 5475 "1D scattering solution assuming a plane-parallel atmosphere (flat\n" 5476 "Earth). Only totally randomly oriented particles are allowed.\n" 5477 "Refraction is not taken into account. Only Lambertian surface\n" 5478 "reflection is handled.\n" 5480 "*nstreams* is the number of polar angles taken into account\n" 5481 "internally in the scattering solution, *za_grid* is the\n" 5482 "polar angle grid on which *cloudbox_field* is provided.\n" 5483 "*nstreams* determines the angular resolution, hence the accuracy,\n" 5484 "of the scattering solution. The more anisotropic the bulk scattering\n" 5485 "matrix, the more streams are required. The computational burden\n" 5486 "increases approximately linearly with *nstreams*. The default value\n" 5487 "(8) is sufficient for most microwave scattering calculations. It is\n" 5488 "likely insufficient for IR calculations involving ice clouds,\n" 5491 "Further, *za_grid* determines the resolution of the output\n" 5492 "radiation field. The size of *za_grid* has no practical\n" 5493 "impact on computation time in the case of Disort and higher\n" 5494 "resolution generally improves the interpolation results, hence\n" 5495 "larger *za_grid* are recommended. To ensure sufficient\n" 5496 "interpolation accuracy, we require a (hardcoded) minimum size of 38.\n" 5498 "Different sphericity levels are emulated here by embedding DISORT\n" 5499 "in different ways and using different output. The available options\n" 5500 "(from low to high sphericity level) are:\n" 5501 "- Cloudbox extends over whole atmosphere (e.g. by setting cloudbox\n" 5502 " from *cloudboxSetFullAtm*).\n" 5503 "- Cloudbox extends over a limited part of the atmosphere only (e.g.\n" 5504 " by setting cloudbox from *cloudboxSetAutomatically* or\n" 5505 " *cloudboxSetManually*). Internally, DISORT is run over the whole\n" 5506 " atmosphere, but only the radiation field within the cloudbox is\n" 5507 " passed on and used further in ARTS (e.g. by *yCalc*).\n" 5509 "Known issues of ARTS implementation:\n" 5510 "- Surface altitude is not an interface parameter. Surface is\n" 5511 " implicitly assumed to be at the lowest atmospheric level.\n" 5512 "- Scattering angle grids of all scattering elements have to be\n" 5513 " identical (except if *pfct_method* is 'interpolate').\n" 5515 "Keyword *pfct_method* allows to chose the method to extract phase\n" 5516 "function. 'interpolate' considers temperature dependence. Others\n" 5517 "neglect it by chosing one specific temperature grid point from the\n" 5518 "single scattering data: 'low' choses the lowest T-point, 'high' the\n" 5519 "highest T-point, and 'median' the median T-point. As different\n" 5520 "scattering elements can have different temperature grids, the actual\n" 5521 "temperature value used can differ between the scattering elements.\n" 5522 "Currently, other methods than 'interpolate' require all scattering\n" 5523 "elements to be given on identical scattering angle grids.\n" 5524 "Note that this keyword solely affects the phase function;\n" 5525 "extinction/absorption/scattering cross sections are always\n" 5526 "interpolated to the actual temperature.\n"),
5527 AUTHORS(
"Claudia Emde, Jana Mendrok"),
5528 OUT(
"cloudbox_field"),
5532 IN(
"atmfields_checked",
5534 "scat_data_checked",
5538 "propmat_clearsky_agenda",
5551 "surface_scalar_reflectivity"),
5552 GIN(
"nstreams",
"pfct_method",
"Npfct",
"quiet"),
5553 GIN_TYPE(
"Index",
"String",
"Index",
"Index"),
5555 GIN_DESC(
"Number of polar angle directions (streams) in DISORT " 5556 "solution (must be an even number).",
5557 "Flag which method to apply to derive phase function.",
5558 "Number of angular grid points to calculate bulk phase" 5559 " function on (and derive Legendre polnomials from). If <0," 5560 " the finest za_grid from scat_data will be used.",
5561 "Silence C Disort warnings.")));
5564 NAME(
"DisortCalcWithARTSSurface"),
5566 "DISORT with surface.\n" 5568 AUTHORS(
"Claudia Emde, Jana Mendrok"),
5569 OUT(
"cloudbox_field"),
5573 IN(
"atmfields_checked",
5575 "scat_data_checked",
5579 "propmat_clearsky_agenda",
5580 "surface_rtprop_agenda",
5591 GIN(
"nstreams",
"pfct_method",
"Npfct",
"quiet"),
5592 GIN_TYPE(
"Index",
"String",
"Index",
"Index"),
5594 GIN_DESC(
"Number of polar angle directions (streams) in DISORT " 5595 "solution (must be an even number).",
5596 "Flag which method to apply to derive phase function.",
5597 "Number of angular grid points to calculate bulk phase" 5598 " function on (and derive Legendre polnomials from). If <0," 5599 " the finest za_grid from scat_data will be used.",
5600 "Silence C Disort warnings.")));
5603 NAME(
"DisortCalcClearsky"),
5605 "Interface to DISORT for running clear-sky cases.\n" 5607 "The method runs DISORT with *pnd_field* set to zero.\n" 5609 "Note that this version returns *spectral_radiance_field*, i.e.\n" 5610 "the solution for the full atmosphere. The standard *DisortCalc*\n" 5611 "only returns the field inside the cloudbox.\n"),
5613 OUT(
"spectral_radiance_field"),
5617 IN(
"atmfields_checked",
5619 "propmat_clearsky_agenda",
5630 "surface_scalar_reflectivity"),
5631 GIN(
"nstreams",
"quiet"),
5634 GIN_DESC(
"Number of polar angle directions (streams) in DISORT " 5635 "solution (must be an even number).",
5636 "Silence C Disort warnings.")));
5639 NAME(
"DOBatchCalc"),
5641 "Performs batch calculations for radiation fields.\n" 5643 "We perform *ybatch_n* jobs, starting at index *ybatch_start*. (Zero\n" 5644 "based indexing, as usual.) The output arrays will have\n" 5645 "ybatch_n elements. Indices in the output array start\n" 5646 "with zero, independent of *ybatch_start*.\n" 5648 "WARNING, MEMORY INTENSIVE!!!: Since the outputs of this methods can\n" 5649 "be very large, make sure you only pass back output you need.\n" 5650 "Estimate the size of your output by looking at the dimensions\n" 5651 "beforehand. If you only want to pass back some fields, make sure to\n" 5652 "empty the others at the end of your *dobatch_calc_agenda*. E.g.:\n" 5653 "Tensor7SetConstant(cloudbox_field, 0, 0, 0, 0, 0, 0, 0, 0.)\n" 5655 "The method performs the following:\n" 5656 " 1. Sets *ybatch_index* = *ybatch_start*.\n" 5657 " 2. Performs a-d until\n" 5658 " *ybatch_index* = *ybatch_start* + *ybatch_n*.\n" 5659 " a. Executes *dobatch_calc_agenda*.\n" 5660 " b. If *ybatch_index* = *ybatch_start*, resizes the output\n" 5661 " arrays based on *ybatch_n*.\n" 5662 " c. Copies calculated fields to *ybatch_index* - *ybatch_start*\n" 5663 " of output arrays.\n" 5664 " d. Adds 1 to *ybatch_index*.\n" 5666 "Beside the *dobatch_calc_agenda*, the WSVs *ybatch_start*\n" 5667 "and *ybatch_n* must be set before calling this method.\n" 5669 "The input variable *ybatch_start* is set to a default of zero in\n" 5670 "*general.arts*.\n"),
5672 OUT(
"dobatch_cloudbox_field",
5673 "dobatch_radiance_field",
5674 "dobatch_irradiance_field",
5675 "dobatch_spectral_irradiance_field"),
5679 IN(
"ybatch_start",
"ybatch_n",
"dobatch_calc_agenda"),
5683 GIN_DESC(
"A flag with value 1 or 0. If set to one, the batch\n" 5684 "calculation will continue, even if individual jobs fail. In\n" 5685 "that case, a warning message is written to screen and file\n" 5686 "(out1 output stream), and the output array entry for the\n" 5687 "failed job in the output fields is left empty.")));
5690 NAME(
"DOAngularGridsSet"),
5692 "Sets the angular grids for Discrete Ordinate type scattering\n" 5695 "This method sets the angular grids for the Discrete Ordinate type\n" 5696 "scattering calculations (DOIT, DISORT). For down- und up-looking\n" 5697 "geometries it suffices to define *N_za_grid* (both solvers) and\n" 5698 "*N_aa_grid* (DOIT). From these numbers equally spaced grids are\n" 5699 "created and stored in the WSVs *za_grid* and *aa_grid*.\n" 5701 "For limb simulations it is important to use an optimized zenith\n" 5702 "angle grid with a very fine resolution around the horizon\n" 5703 "(za=90 degrees). Such a grid can be generated using\n" 5704 "*doit_za_grid_optCalc*. To be applied, the name of the file holding\n" 5705 "the optimized angle grid has to be given (*za_grid_opt_file*).\n" 5707 "When an optimized grid is present, the equidistant grid is used for\n" 5708 "the calculation of the scattering integrals, while the optimized\n" 5709 "grid is applied for the integration of the radiative transfer\n" 5710 "equation. Otherwise the equidistant grid is used throughout. For\n" 5711 "down-looking cases using the equidistant grid typically suffices\n" 5712 "and speeds up the calculations.\n"),
5714 OUT(
"doit_za_grid_size",
"aa_grid",
"za_grid"),
5719 GIN(
"N_za_grid",
"N_aa_grid",
"za_grid_opt_file"),
5720 GIN_TYPE(
"Index",
"Index",
"String"),
5722 GIN_DESC(
"Number of grid points in zenith angle grid. " 5723 "Recommended value is 19.",
5724 "Number of grid points in azimuth angle grid. " 5725 "Recommended value is 37.",
5726 "Name of special grid for RT part.")));
5731 "Main DOIT method.\n" 5733 "This method executes *doit_mono_agenda* for each frequency\n" 5734 "in *f_grid*. The output is the radiation field inside the cloudbox\n" 5735 "(*cloudbox_field*).\n"),
5737 OUT(
"cloudbox_field"),
5741 IN(
"cloudbox_field",
5742 "atmfields_checked",
5745 "scat_data_checked",
5749 "doit_is_initialized"),
5756 NAME(
"DoitGetIncoming"),
5758 "Calculates incoming radiation field of the cloudbox by repeated\n" 5759 "radiative transfer calculations.\n" 5761 "The method performs monochromatic pencil beam calculations for\n" 5762 "all grid positions on the cloudbox boundary, and all directions\n" 5763 "given by scattering angle grids (*scat_za/aa_grid*). Found radiances\n" 5764 "are stored in *cloudbox_field* which can be used as boundary\n" 5765 "conditions when scattering inside the cloud box is solved by the\n" 5766 "*DoitCalc* method.\n" 5768 "Note that *cloudbox_field* will always hold intensity in terms of\n" 5769 "radiances, regardless of the setting of *iy_unit* (unit conversion\n" 5770 "is done within *yCalc* or *iyCalc*, which will provide their output\n" 5771 "in terms of the specified *iy_unit*; no explicit unit conversion by\n" 5772 "the user necessary.).\n"),
5773 AUTHORS(
"Sreerekha T.R.",
"Claudia Emde"),
5774 OUT(
"cloudbox_field"),
5778 IN(
"cloudbox_field",
5779 "atmfields_checked",
5782 "doit_is_initialized",
5795 GIN(
"rigorous",
"maxratio"),
5799 "Fail if incoming field is not safely interpolable.",
5800 "Maximum allowed ratio of two radiances regarded as interpolable.")));
5803 NAME(
"DoitGetIncoming1DAtm"),
5805 "As *DoitGetIncoming* but assumes clear sky part to be 1D." 5807 "The incoming field is calculated only for one position and azimuth\n" 5808 "angle for each cloud box boundary, and obtained values are used\n" 5809 "for all other postions and azimuth angles. This works if a 3D\n" 5810 "cloud box is put into an 1D background atmosphere.\n" 5812 "This method can only be used for 3D cases.\n"),
5813 AUTHORS(
"Sreerekha T.R.",
"Claudia Emde"),
5814 OUT(
"cloudbox_field",
"cloudbox_on"),
5818 IN(
"cloudbox_field",
5819 "atmfields_checked",
5822 "doit_is_initialized",
5843 "Initialises variables for DOIT scattering calculations.\n" 5845 "Note that multi-dimensional output variables (Tensors, specifically)\n" 5846 "are NaN-initialized. That is, this methods needs to be called\n" 5847 "BEFORE other WSMs that provide input to *DoitCalc*, e.g. before\n" 5848 "*DoitGetIncoming*.\n"),
5850 OUT(
"doit_scat_field",
"cloudbox_field",
"doit_is_initialized"),
5859 "doit_za_grid_size",
5868 NAME(
"DoitScatteringDataPrepare"),
5870 "Prepares single scattering data for a DOIT scattering calculation.\n" 5872 "First the scattering data is interpolated in frequency using\n" 5873 "*scat_data_monoCalc*. Then the phase matrix data is\n" 5874 "transformed or interpolated from the raw data to the laboratory frame\n" 5875 "for all possible combinations of the angles contained in the angular\n" 5876 "grids which are set in *DOAngularGridsSet*. The resulting phase\n" 5877 "matrices are stored in *pha_mat_sptDOITOpt*.\n"),
5879 OUT(
"pha_mat_sptDOITOpt",
"scat_data_mono",
"pha_mat_doit",
"aa_grid"),
5883 IN(
"doit_za_grid_size",
5886 "scat_data_checked",
5893 "pha_mat_spt_agenda"),
5900 NAME(
"DoitWriteIterationFields"),
5902 "Writes DOIT iteration fields.\n" 5904 "This method writes intermediate iteration fields to xml-files. The\n" 5905 "method can be used as a part of *doit_conv_test_agenda*.\n" 5907 "The iterations to be stored are specified by *iterations*, e.g.:\n" 5908 " iterations = [3, 6, 9]\n" 5909 "In this case the 3rd, 6th and 9th iterations are stored.\n" 5910 "If a number is larger than the total number of iterations, this\n" 5911 "number is ignored. If all iterations should be stored set\n" 5912 " iterations = [-1]\n" 5914 "The frequencies to be stored are specified by *frequencies* in the\n" 5915 "same way as the iterations. The frequency index corresponds to the\n" 5916 "order of frequencies in *f_grid*.\n" 5918 "The output files are named doit_iteration_fX_iY.xml with X being the\n" 5919 "frequency index and iY the iteration counter.\n"),
5925 IN(
"doit_iteration_counter",
"cloudbox_field_mono",
"f_index"),
5926 GIN(
"iterations",
"frequencies"),
5927 GIN_TYPE(
"ArrayOfIndex",
"ArrayOfIndex"),
5929 GIN_DESC(
"Selection of iterations to store.",
5930 "Selection of frequencies to store.")));
5933 NAME(
"doit_conv_flagAbs"),
5935 "DOIT convergence test (maximum absolute difference).\n" 5937 "The function calculates the absolute differences for two successive\n" 5938 "iteration fields. It picks out the maximum values for each Stokes\n" 5939 "component separately. The convergence test is fullfilled under the\n" 5940 "following conditions:\n" 5941 " |I(m+1) - I(m)| < epsilon_1 Intensity.\n" 5942 " |Q(m+1) - Q(m)| < epsilon_2 The other Stokes components.\n" 5943 " |U(m+1) - U(m)| < epsilon_3 \n" 5944 " |V(m+1) - V(m)| < epsilon_4 \n" 5945 "These conditions have to be valid for all positions in the\n" 5946 "cloudbox and for all directions.\n"),
5948 OUT(
"doit_conv_flag",
"doit_iteration_counter",
"cloudbox_field_mono"),
5952 IN(
"doit_conv_flag",
5953 "doit_iteration_counter",
5954 "cloudbox_field_mono",
5955 "cloudbox_field_mono_old"),
5956 GIN(
"epsilon",
"max_iterations",
"nonconv_return_nan"),
5957 GIN_TYPE(
"Vector",
"Index",
"Index"),
5959 GIN_DESC(
"Limits for convergence. A vector with length matching " 5960 "*stokes_dim* with unit [W / (m^2 Hz sr)].",
5961 "Maximum number of iterations allowed to reach convergence" 5963 "Flag whether to accept result at max_iterations (0=default)" 5964 "or whether to return NaNs in case of non-convergence at" 5965 "max_iterations")));
5968 NAME(
"doit_conv_flagAbsBT"),
5970 "DOIT convergence test (maximum absolute difference in Rayleigh Jeans " 5973 "As *doit_conv_flagAbs* but convergence limits are specified in\n" 5974 "Rayleigh-Jeans brighntess temperatures.\n"),
5975 AUTHORS(
"Sreerekha T.R.",
"Claudia Emde"),
5976 OUT(
"doit_conv_flag",
"doit_iteration_counter",
"cloudbox_field_mono"),
5980 IN(
"doit_conv_flag",
5981 "doit_iteration_counter",
5982 "cloudbox_field_mono",
5983 "cloudbox_field_mono_old",
5986 GIN(
"epsilon",
"max_iterations",
"nonconv_return_nan"),
5987 GIN_TYPE(
"Vector",
"Index",
"Index"),
5989 GIN_DESC(
"Limits for convergence. A vector with length matching " 5990 "*stokes_dim* with unit [K].",
5991 "Maximum number of iterations allowed to reach convergence" 5993 "Flag whether to accept result at max_iterations (0=default)" 5994 "or whether to return NaNs in case of non-convergence at" 5995 "max_iterations")));
5998 NAME(
"doit_conv_flagLsq"),
6000 "DOIT convergence test (least squares).\n" 6002 "As *doit_conv_flagAbsBT* but applies a least squares convergence\n" 6003 "test between two successive iteration fields.\n" 6005 "Warning: This method is not recommended because this kind of\n" 6006 "convergence test is not sufficiently strict, so that the\n" 6007 "DOIT result might be wrong.\n"),
6009 OUT(
"doit_conv_flag",
"doit_iteration_counter",
"cloudbox_field_mono"),
6013 IN(
"doit_conv_flag",
6014 "doit_iteration_counter",
6015 "cloudbox_field_mono",
6016 "cloudbox_field_mono_old",
6019 GIN(
"epsilon",
"max_iterations",
"nonconv_return_nan"),
6020 GIN_TYPE(
"Vector",
"Index",
"Index"),
6022 GIN_DESC(
"Limits for convergence. A vector with length matching " 6023 "*stokes_dim* with unit [K].",
6024 "Maximum number of iterations allowed to reach convergence" 6026 "Flag whether to accept result at max_iterations (0=default)" 6027 "or whether to return NaNs in case of non-convergence at" 6028 "max_iterations")));
6031 NAME(
"OptimizeDoitPressureGrid"),
6033 "Optimization of the pressure grid for RT calculation.\n" 6034 "The methods consists of three parts:\n" 6035 "1) Calculate the single scattering albedo and the scattering optical" 6036 "thickness from the scattering and absorption species. \n" 6037 "2) Enhance z_field according to the two thresholds sgl_alb_max and tau_scat_max." 6038 "If the resulting cloudbox size is bigger than cloudbox_size_max, this step is \n" 6039 "repeated with a higher threshold of tau_scat_max. \n" 6040 "3) Interpolate all variables used in doit_mono_agenda to the new z_field \n" 6041 "This method should be called inside\n" 6042 "*doit_mono_agenda*, right before *cloudbox_field_monoIterate*. It can \n" 6043 "only be used if *ScatSpeciesMerge* has been called and if it is\n" 6044 "called, *cloudbox_field_monoOptimizeReverse* has to be\n" 6045 "called right after *cloudbox_field_monoIterate* to interpolate\n" 6046 "*cloudbox_field_mono* back to the original size.\n" 6047 "Optimization currently only works with *stokes_dim* = 1 .\n"),
6055 "cloudbox_field_mono",
6068 "cloudbox_field_mono",
6073 "propmat_clearsky_agenda"),
6074 GIN(
"tau_scat_max",
"sgl_alb_max",
"cloudbox_size_max"),
6075 GIN_TYPE(
"Numeric",
"Numeric",
"Index"),
6077 GIN_DESC(
"Maximum scattering optical thickness",
6078 "Maximum single scattering albedo",
6079 "Maximum cloudbox size")));
6082 NAME(
"doit_scat_fieldCalc"),
6084 "Calculates the scattering integral field in the DOIT module.\n" 6086 "The scattering integral field is generated by integrating\n" 6087 "the product of phase matrix and Stokes vector over all incident\n" 6088 "angles. For more information please refer to AUG.\n"),
6089 AUTHORS(
"Sreerekha T.R.",
"Claudia Emde"),
6090 OUT(
"doit_scat_field"),
6094 IN(
"doit_scat_field",
6095 "pha_mat_spt_agenda",
6096 "cloudbox_field_mono",
6103 "doit_za_grid_size",
6111 NAME(
"doit_scat_fieldCalcLimb"),
6113 "Calculates the scattering integral field in the DOIT module (limb).\n" 6115 "The scattering integral field is the field generated by integrating\n" 6116 "the product of phase matrix and the Stokes vector over all incident\n" 6119 "For limb simulations it makes sense to use different\n" 6120 "zenith angle grids for the scattering integral part and the RT part,\n" 6121 "because the latter part requires a much finer resolution near\n" 6122 "90 degrees. Taking an optimized grid for the RT part and an equidistant\n" 6123 "grid for the scattering integral part saves very much CPU time.\n" 6124 "This method uses the equidistant za_grid defined in\n" 6125 "*DOAngularGridsSet* and it should always be used for limb\n" 6128 "For more information please refer to AUG.\n"),
6130 OUT(
"doit_scat_field"),
6134 IN(
"doit_scat_field",
6135 "pha_mat_spt_agenda",
6136 "cloudbox_field_mono",
6143 "doit_za_grid_size",
6152 NAME(
"doit_za_grid_optCalc"),
6154 "Zenith angle grid optimization for scattering calculation.\n" 6156 "This method optimizes the zenith angle grid. As input it requires\n" 6157 "a radiation field (*cloudbox_field*) which is calculated on a very\n" 6158 "fine zenith angle grid (*za_grid*). Based on this field\n" 6159 "zenith angle grid points are selected, such that the maximum\n" 6160 "difference between the radiation field represented on the very\n" 6161 "fine zenith angle grid and the radiation field represented on the\n" 6162 "optimized grid (*doit_za_grid_opt*) is less than the accuracy\n" 6163 "(*acc*). Between the grid points the radiation field is interpolated\n" 6164 "linearly or polynomially depending on *doit_za_interp*.\n" 6166 "Note: The method works only for a 1D atmosphere and for one\n" 6169 OUT(
"doit_za_grid_opt"),
6173 IN(
"cloudbox_field_mono",
"za_grid",
"doit_za_interp"),
6177 GIN_DESC(
"Accuracy to achieve [%].")));
6180 NAME(
"doit_za_interpSet"),
6182 "Define interpolation method for zenith angle dimension.\n" 6184 "You can use this method to choose the interpolation method for\n" 6185 "interpolations in the zenith angle dimension.\n"),
6187 OUT(
"doit_za_interp"),
6191 IN(
"atmosphere_dim"),
6192 GIN(
"interp_method"),
6195 GIN_DESC(
"Interpolation method (\"linear\" or \"polynomial\").")));
6199 DESCRIPTION(
"Sets the seconds between two times.\n"),
6204 GOUT_DESC(
"Time in seconds between *start* and *end*"),
6206 GIN(
"start",
"end"),
6209 GIN_DESC(
"Start time",
"End time")));
6212 NAME(
"EnergyLevelMapSet"),
6228 "Issues an error and exits ARTS.\n" 6230 "This method can be placed in agendas that must be specified, but\n" 6231 "are expected not to be used for the particular case. An inclusion\n" 6232 "in *surface_rtprop_agenda* could look like:\n " 6233 "Error{\"Surface interceptions of propagation path not expected.\"}\n" 6235 "Ignore and other dummy method calls must still be included.\n"),
6245 GIN_DESC(
"String describing the error.")));
6250 "Stops the execution and exits ARTS.\n" 6252 "This method is handy if you want to debug one of your control\n" 6253 "files. You can insert it anywhere in the control file. When\n" 6254 "it is reached, it will terminate the program.\n"),
6269 "Extracts an element from an array.\n" 6271 "Copies the element with the given Index from the input\n" 6272 "variable to the output variable.\n" 6274 "For a Tensor3 as an input, it copies the page with the given\n" 6275 "Index from the input Tensor3 variable to the output Matrix.\n" 6277 "In other words, the selection is always done on the first dimension.\n"),
6281 GOUT_TYPE(
"Index, ArrayOfIndex, Numeric, Vector," 6283 "Tensor3, Tensor4, Tensor4," 6284 "GriddedField3, ArrayOfGriddedField3," 6285 "GriddedField4, String," 6286 "SingleScatteringData, ArrayOfSingleScatteringData," 6288 "QuantumIdentifier"),
6291 GIN(
"haystack",
"index"),
6292 GIN_TYPE(
"ArrayOfIndex, ArrayOfArrayOfIndex, Vector, ArrayOfVector," 6293 "ArrayOfMatrix, Tensor3," 6294 "Tensor4, ArrayOfTensor4, Tensor5," 6295 "ArrayOfGriddedField3, ArrayOfArrayOfGriddedField3," 6296 "ArrayOfGriddedField4, ArrayOfString," 6297 "ArrayOfSingleScatteringData," 6298 "ArrayOfArrayOfSingleScatteringData," 6299 "ArrayOfTelsemAtlas," 6300 "ArrayOfQuantumIdentifier",
6303 GIN_DESC(
"Variable to extract from.",
6304 "Position of the element which should be extracted."),
6310 NAME(
"ExtractFromMetaSingleScatSpecies"),
6312 "Extract (numeric) parameters from scat_meta of a single scattering\n" 6320 GOUT_DESC(
"The extracted meta parameter values."),
6322 GIN(
"meta_name",
"scat_species_index"),
6325 GIN_DESC(
"Name of the meta parameter to extract.",
6326 "Array index of scattering species from which to extract.")));
6329 NAME(
"ext_matAddGas"),
6331 "Add gas absorption to all diagonal elements of extinction matrix.\n" 6333 "The task of this method is to sum up the gas absorption of the\n" 6334 "different gas species and add the result to the extinction matrix.\n"),
6340 IN(
"ext_mat",
"propmat_clearsky"),
6347 NAME(
"FastemStandAlone"),
6349 "Stand-alone usage of FASTEM.\n" 6351 "FASTEM is a parameterisation of the emissivity of water surfaces\n" 6352 "including the impact of waves, salinity and non-specular effects.\n" 6353 "This is more or less direct interface to FASTEM, but slightly\n" 6354 "adopted to fit with ARTS. The unit of frequency and salinity\n" 6355 "differ, and this version is \"vectorised\" in frequency.\n" 6357 "The output is four emissivity and reflectivity values for each\n" 6358 "frequency. These values are defined in Eq. 13 of \"An Improved\n" 6359 "Fast Microwave Water Emissivity Model\" by Liu, Weng and English,\n" 6360 "I3TRGS, 2011. Note that emissivity and reflectivity do not add up\n" 6361 "to 1, which is the way FASTEM compensates for non-specular effects.\n" 6363 "There is an error if any frequency is above 250 GHz, or if the skin\n" 6364 "temperature is below 260 K. If the skin temperature is below 270 K,\n" 6365 "it is adjusted to 270 K.\n" 6367 "FASTEM returns unphysical values for propagation close to the\n" 6368 "horizon, here emissivity and reflectivity can be outside [0,1].\n" 6369 "If either emissivity or reflectivity is below/above 0/1, it is\n" 6370 "set to 0/1, and the other value is set to 1/0. That is, e+r=1\n" 6371 "is enforced. These problems start about 15 degrees from the horizon.\n"),
6372 AUTHORS(
"Oliver Lemke, Patrick Eriksson"),
6374 GOUT(
"emissivity",
"reflectivity"),
6376 GOUT_DESC(
"Emission values. One row for each frequency. See above.",
6377 "Reflectivity values. One row for each frequency. See above."),
6378 IN(
"f_grid",
"surface_skin_t"),
6385 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric",
"Numeric",
"Vector",
"Index"),
6387 GIN_DESC(
"Zenith angle of line-of-sigh, 90 to 180 deg.",
6388 "Salinity, 0-1. That is, 3% is given as 0.03.",
6390 "Azimuth angle between wind direction and line-of-sight. " 6391 "This angle is measured clockwise from north, i.e. E=90deg.",
6392 "The transmission of the atmosphere, along the propagation " 6393 "path of the downwelling radiation. One value per frequency.",
6394 "The version of FASTEM to use.")));
6397 NAME(
"FieldFromGriddedField"),
6398 DESCRIPTION(
"Extract the data from a GriddedField.\n" 6400 "A check is performed that the grids from the\n" 6401 "GriddedField match *p_grid*, *lat_grid* and *lon_grid*.\n"),
6405 GOUT_TYPE(
"Matrix, Tensor3, Tensor4, Tensor4"),
6407 IN(
"p_grid",
"lat_grid",
"lon_grid"),
6410 "GriddedField2, GriddedField3, GriddedField4, ArrayOfGriddedField3"),
6412 GIN_DESC(
"Raw input gridded field.")));
6416 DESCRIPTION(
"Sets an index variable that acts as an on/off flag to 0.\n"),
6430 DESCRIPTION(
"Sets an index variable that acts as an on/off flag to 1.\n"),
6444 DESCRIPTION(
"Flattens an ArrayOfArray<T> to Array<T> or an Array\n" 6445 "of matpack-types to a larger dimension matpack (if dimensions agree)\n" 6447 "The intended transformation for arrays is (sub-arrays can have different sizes):\n" 6448 " {{a, b, c}, {d, e}} -> {a, b, c, d, e}\n" 6450 "The intended transformation for arrays to matpack types is (sub-types must have same size):\n" 6451 " {{a, b, c}, {d, e, f}} -> {a, b, c, d, e, f}\n"),
6455 GOUT_TYPE(
"ArrayOfTime,ArrayOfVector,Matrix,Tensor3,Tensor4,Tensor5,Tensor6,Tensor7"),
6456 GOUT_DESC(
"Flatter array/matpack-type"),
6459 GIN_TYPE(
"ArrayOfArrayOfTime,ArrayOfArrayOfVector,ArrayOfVector,ArrayOfMatrix,ArrayOfTensor3,ArrayOfTensor4,ArrayOfTensor5,ArrayOfTensor6"),
6466 "A simple for-loop.\n" 6468 "This method is handy when you quickly want to test out a calculation\n" 6469 "with a set of different settings.\n" 6471 "It does a for-loop from start to stop in steps of step (who would\n" 6472 "have guessed that). For each iteration, the agenda *forloop_agenda* is\n" 6473 "executed. Inside the agenda, the variable *forloop_index* is available\n" 6474 "as index counter.\n" 6476 "There are no other inputs to *forloop_agenda*, and also no outputs. That\n" 6477 "means, if you want to get any results out of this loop, you have to\n" 6478 "save it to files (for example with *WriteXMLIndexed*), since\n" 6479 "variables used inside the agenda will only be local.\n" 6481 "Note that this kind of for loop is not parallel.\n" 6483 "The method is intended for simple testing, not as a replacement of\n" 6484 "*ybatchCalc*. However, it is compatible with *ybatchCalc*, in the sense\n" 6485 "that *ybatchCalc* may occur inside *forloop_agenda*.\n"),
6491 IN(
"forloop_agenda"),
6492 GIN(
"start",
"stop",
"step"),
6493 GIN_TYPE(
"Index",
"Index",
"Index"),
6495 GIN_DESC(
"Start value.",
"End value.",
"Step size.")));
6498 NAME(
"FrequencyFromWavelength"),
6500 "Convert from wavelength [m] to frequency [Hz].\n" 6502 "This is a generic method. It can take a single wavelength value or a wavelength vector as input.\n"),
6515 NAME(
"FrequencyFromCGSAngularWavenumber"),
6517 "Convert from angular wavenumber [cm^-1] to frequency [Hz].\n" 6519 "This converts angular wavenumber (2*PI/wavelength) into frequency.\n"),
6526 GIN(
"angular_wavenumber"),
6529 GIN_DESC(
"angular wavenumber [cm^-1]")));
6532 NAME(
"FrequencyFromCGSKayserWavenumber"),
6534 "Convert from Kayser wavenumber [cm^-1] to frequency [Hz].\n" 6536 "This converts Kayser wavenumber (1/wavelength) into frequency.\n"),
6543 GIN(
"kayser_wavenumber"),
6546 GIN_DESC(
"Kayser wavenumber [cm^-1]")));
6549 NAME(
"f_gridFromAbsorptionLines"),
6550 DESCRIPTION(
"Sets *f_grid* to a grid relative to *abs_lines_per_species*\n" 6552 "Each line will have *abs_lines_per_species* will have a grid\n" 6553 "of *num_freqs* grid points in [f0+*delta_f_low*, f0+*delta_f_upp*],\n" 6554 "where f0 is the line center.\n" 6556 "Before leaving the function, *f_grid* is sorted.\n" 6558 "Note that this method could generate significantly large *f_grid*\n" 6559 "if used carelessly\n"),
6565 IN(
"abs_lines_per_species"),
6566 GIN(
"delta_f_low",
"delta_f_upp",
"num_freqs"),
6567 GIN_TYPE(
"Numeric",
"Numeric",
"Index"),
6570 "Upper range of delta f",
6571 "Number of frequencies")));
6574 NAME(
"f_gridFromGasAbsLookup"),
6576 "Sets *f_grid* to the frequency grid of *abs_lookup*.\n" 6578 "Must be called between importing/creating raw absorption table and\n" 6579 "call of *abs_lookupAdapt*.\n"),
6592 NAME(
"f_gridFromSensorAMSU"),
6594 "Automatically calculate f_grid to match the sensor.\n" 6596 "This method is handy if you are simulating an AMSU-type instrument,\n" 6597 "consisting of a few discrete channels. The case that channels touch,\n" 6598 "as for MHS, is handled correctly. But the case that channels overlap\n" 6599 "is not (yet) handled and results in an error message.\n" 6601 "The method calculates *f_grid* to match the instrument, as given by\n" 6602 "the local oscillator frequencies *lo_multi*, the backend\n" 6603 "frequencies *f_backend_multi*, and the backend channel\n" 6604 "responses *backend_channel_response_multi*.\n" 6606 "You have to specify the desired spacing in the keyword *spacing*,\n" 6607 "which has a default value of 100 MHz. (The actual value is 0.1e9,\n" 6608 "since our unit is Hz.)\n" 6610 "The produced grid will not have exactly the requested spacing, but\n" 6611 "will not be coarser than requested. The algorithm starts with the band\n" 6612 "edges, then adds additional points until the spacing is at least as\n" 6613 "fine as requested.\n" 6615 "There is a similar method for HIRS-type instruments,\n" 6616 "see *f_gridFromSensorHIRS*.\n"),
6617 AUTHORS(
"Stefan Buehler, Mathias Milz"),
6622 IN(
"lo_multi",
"f_backend_multi",
"backend_channel_response_multi"),
6626 GIN_DESC(
"Desired grid spacing in Hz.")));
6629 NAME(
"f_gridFromSensorAMSUgeneric"),
6631 "Automatcially calculate f_grid to match the sensor. \n" 6632 "This function is based on 'f_gridFromSensorAMSU' \n" 6634 "The method calculates *f_grid* to match the instrument, as given by\n" 6635 "the backend frequencies *f_backend*, and the backend channel\n" 6636 "responses *backend_channel_response*.\n" 6638 "You have to specify the desired spacing in the keyword *spacing*,\n" 6639 "which has a default value of 100 MHz. (The actual value is 0.1e9,\n" 6640 "since our unit is Hz.)" 6642 "The produced grid will not have exactly the requested spacing, but\n" 6643 "it will not be coarser than requested. The algorithm starts with the band\n" 6644 "edges, then adds additional points until the spacing is at least as\n" 6645 "fine as requested.\n"),
6651 IN(
"f_backend_multi",
"backend_channel_response_multi"),
6652 GIN(
"spacing",
"verbosityVect"),
6655 GIN_DESC(
"Desired grid spacing in Hz.",
"Bandwidth adjusted spacing")));
6658 NAME(
"f_gridFromSensorHIRS"),
6660 "Automatically calculate f_grid to match the sensor.\n" 6662 "This method is handy if you are simulating a HIRS-type instrument,\n" 6663 "consisting of a few discrete channels.\n" 6665 "It calculates f_grid to match the instrument, as given by the nominal\n" 6666 "band frequencies *f_backend* and the spectral channel response\n" 6667 "functions given by *backend_channel_response*.\n" 6669 "You have to specify the desired spacing in the keyword *spacing*, which\n" 6670 "has a default value of 5e8 Hz.\n" 6672 "The produced grid will not have exactly the requested spacing, but\n" 6673 "will not be coarser than requested. The algorithm starts with the band\n" 6674 "edges, then adds additional points until the spacing is at least as\n" 6675 "fine as requested.\n" 6677 "There is a similar method for AMSU-type instruments, see\n" 6678 "*f_gridFromSensorAMSU*.\n"),
6684 IN(
"f_backend",
"backend_channel_response"),
6688 GIN_DESC(
"Desired grid spacing in Hz.")));
6691 NAME(
"f_gridMetMM"),
6693 "Sets *f_grid* and associated variables match MetMM settings.\n" 6695 "The method calculates *f_grid* to match the specifications of a\n" 6696 "*met_mm_backend* table and method arguments.\n" 6698 "You have to specify the desired spacing using the keyword *freq_spacing*.\n" 6699 "You can pass a *Vector* with one element to apply the same spacing to all\n" 6700 "channels or pass a spacing value for each channel separately.\n" 6702 "Optionally, *freq_number* can be set to specify the mininum number of\n" 6703 "frequencies per passband for each channel. The frequencies are placed\n" 6704 "equally spaced in each passband. The minimum spacing resulting from\n" 6705 "*freq_number* and *freq_spacing* will be used for the calculation. To\n" 6706 "explicitly use *freq_spacing* for a channel, *freq_number* can be set\n" 6707 "to -1 for this channel.\n" 6709 "The number of elements in *freq_number* can either be the number of\n" 6710 "channels or 1. If only one element is given, this number is used for\n" 6711 "all channels. If *freq_number* is 1 and *freq_spacing* is wider than\n" 6712 "the bandwidth of the channel, one frequency is placed in the middle of\n" 6715 "Frequencies that would be closer than *freq_merge_threshold* in the\n" 6716 "generated *f_grid* are merged together. This value should be left at\n" 6717 "the default value. This is only meant to compensate for numerical\n" 6718 "inaccuracies in the frequency calculation to merge frequency that are\n" 6719 "supposed to be identical.\n"),
6720 AUTHORS(
"Oliver Lemke",
"Patrick Eriksson"),
6723 "channel2fgrid_indexes",
6724 "channel2fgrid_weights"),
6728 IN(
"met_mm_backend"),
6729 GIN(
"freq_spacing",
"freq_number",
"freq_merge_threshold"),
6730 GIN_TYPE(
"Vector",
"ArrayOfIndex",
"Numeric"),
6732 GIN_DESC(
"Desired grid spacing in Hz.",
6733 "Number of frequencies per passband for each channel.",
6734 "Merge frequencies that are closer than this value in Hz.")));
6739 "Gravity at zero altitude on Earth.\n" 6741 "Sets *g0* for the given latitude using a standard parameterisation.\n"),
6756 "Numeric from Wikipedia.\n"),
6771 "Gravity at zero altitude on Jupiter.\n" 6773 "Sets *g0* to mean equatorial gravity on Jupiter. Value provided by\n" 6774 "MPS under ESA-planetary study (TN1).\n"),
6789 "Gravity at zero altitude on Mars.\n" 6791 "Sets *g0* to mean equatorial gravity on Mars. Value provided by\n" 6792 "MPS under ESA-planetary study (TN1).\n"),
6807 "Gravity at zero altitude on Venus.\n" 6809 "Sets *g0* to mean equatorial gravity on Venus. Value from Ahrens\n" 6810 "(1995), provided by MPS under ESA-planetary study (TN1).\n"),
6823 NAME(
"geo_posEndOfPpath"),
6824 DESCRIPTION(
"Sets geo-position based on *ppath*.\n" 6826 "The geo-position is set to the position of the last point\n" 6827 "of the present propagation path. This will be the surface,\n" 6828 "top-of-the atmosphere or cloudbox position, depending of\n" 6829 "observation geometry and if the cloudbox is active.\n"),
6842 NAME(
"geo_posLowestAltitudeOfPpath"),
6844 "Sets geo-position based on *ppath*.\n" 6846 "The geo-position is set to the position of the last point\n" 6847 "of the present propagation path having the lowest altitude.\n"),
6860 NAME(
"geo_posWherePpathPassesZref"),
6862 "Sets geo-position based on *ppath*.\n" 6864 "The geo-position is set to the position where the propagation\n" 6865 "path passes the reference altitude. If this altitude is passes\n" 6866 "more than once, the passing closest to the sensor is selected.\n" 6867 "If the reference altitude is not passed at all, *geo_pos* is\n" 6881 NAME(
"GetEnvironmentVariable"),
6883 "Copy the contents of an environment variable to an ARTS String or Index.\n"),
6888 GOUT_DESC(
"Contents of environment variable."),
6893 GIN_DESC(
"Name of environment variable.")));
6897 DESCRIPTION(
"Returns the number of threads used by ARTS.\n"),
6913 "See *ArrayOfGriddedFieldGetNames*.\n"),
6920 GIN(
"griddedfield"),
6921 GIN_TYPE(
"GriddedField1, GriddedField2, GriddedField3, " 6922 "GriddedField4, GriddedField5, GriddedField6 "),
6930 NAME(
"GriddedFieldLatLonExpand"),
6932 "Expands the latitude and longitude grid of the GriddedField to\n" 6933 "[-90, 90] and [0,360], respectively. Expansion is only done in\n" 6934 "the dimension(s), where the grid size is 1.\n" 6935 "The values from the input data will be duplicated to accomodate\n" 6936 "for the larger size of the output field.\n" 6937 "gfield_raw_out and gfield_raw_in can be the same variable.\n"),
6942 "GriddedField2, GriddedField3, GriddedField4, ArrayOfGriddedField3"),
6947 "GriddedField2, GriddedField3, GriddedField4, ArrayOfGriddedField3"),
6949 GIN_DESC(
"Raw input gridded field.")));
6952 NAME(
"GriddedFieldLatLonRegrid"),
6954 "Interpolates the input field along the latitude and longitude dimensions\n" 6955 "to *lat_true* and *lon_true*.\n" 6957 "If the input longitude grid is outside of *lon_true* it will be shifted\n" 6958 "left or right by 360. If it covers 360 degrees, a cyclic interpolation\n" 6959 "will be performed.\n" 6960 "in and out fields can be the same variable.\n"),
6965 "GriddedField2, GriddedField3, GriddedField4, ArrayOfGriddedField3"),
6967 IN(
"lat_true",
"lon_true"),
6968 GIN(
"in",
"interp_order"),
6970 "GriddedField2, GriddedField3, GriddedField4, ArrayOfGriddedField3",
6973 GIN_DESC(
"Raw input gridded field.",
"Interpolation order.")));
6976 NAME(
"GriddedFieldPRegrid"),
6978 "Interpolates the input field along the pressure dimension to *p_grid*.\n" 6980 "If zero-padding is applied (zeropadding=1), pressures that are\n" 6981 "outside the *p_grid* are set to 0. This is thought, e.g., for VMR\n" 6982 "fields that outside the given pressure can safely be assumed to be\n" 6984 "Note: Using zeropadding for altitude and temperature fields is\n" 6985 "strongly discouraged (it will work here, though, but likely trigger\n" 6986 "errors later on).\n" 6987 "Extrapolation is allowed within the common 0.5grid-step margin,\n" 6988 "but is overruled by zeropadding.\n" 6989 "in and out fields can be the same variable.\n"),
6993 GOUT_TYPE(
"GriddedField3, GriddedField4, ArrayOfGriddedField3"),
6996 GIN(
"in",
"interp_order",
"zeropadding"),
6997 GIN_TYPE(
"GriddedField3, GriddedField4, ArrayOfGriddedField3",
7001 GIN_DESC(
"Raw input gridded field.",
7002 "Interpolation order.",
7003 "Apply zero-padding.")));
7006 NAME(
"GriddedFieldZToPRegrid"),
7008 "Interpolates the input field along the vertical dimension to *p_grid*.\n" 7010 "This is done from z_field, and thus requires the atmosphere to be set \n" 7013 "The latitude and longitude grid of the input field must match *lat_grid*\n" 7014 "and *lon_grid* for the method to work.\n" 7021 GOUT_DESC(
"Regridded output; Pressure-gridded field."),
7022 IN(
"p_grid",
"lat_grid",
"lon_grid",
"z_field"),
7023 GIN(
"in",
"interp_order",
"zeropadding"),
7024 GIN_TYPE(
"GriddedField3",
"Index",
"Index"),
7026 GIN_DESC(
"Raw input; Altitude-gridded field.",
7027 "Interpolation order.",
7028 "Apply zero-padding.")));
7030 NAME(
"heating_ratesFromIrradiance"),
7032 "Calculates heating rates. It assumes that the heating rates\n" 7033 "depend only on the vertical derivation of the net flux.\n" 7034 "The net flux is the sum of the irradiance field in upward \n" 7035 " direction and the irradiance field in downward direction\n"),
7037 OUT(
"heating_rates"),
7041 IN(
"p_grid",
"irradiance_field",
"specific_heat_capacity",
"g0"),
7050 "Ignore a workspace variable.\n" 7052 "This method is handy for use in agendas in order to suppress warnings\n" 7053 "about unused input workspace variables. What it does is: Nothing!\n" 7054 "In other words, it just ignores the variable it is called on.\n" 7056 "This method can ignore any workspace variable you want.\n" 7060 "AgendaSet(els_agenda){\n" 7061 " Ignore(ls_sigma)\n" 7065 "Without Ignore you would get an error message, because 'els_agenda' is\n" 7066 "supposed to use the Doppler width 'ls_sigma', but the Lorentz lineshape\n" 7067 "'elsLorentz' does not need it.\n"),
7077 GIN_DESC(
"Variable to be ignored."),
7085 "Includes the contents of another controlfile.\n" 7087 "The INCLUDE statement inserts the contents of the controlfile\n" 7088 "with the given name into the current controlfile.\n" 7089 "If the filename is given without path information, ARTS will\n" 7090 "first search for the file in all directories specified with the\n" 7091 "-I (see arts -h) commandline option and then in directories given\n" 7092 "in the environment variable ARTS_INCLUDE_PATH. In the environment\n" 7093 "variable multiple paths have to be separated by colons.\n" 7095 "Note that INCLUDE is not a workspace method and thus the\n" 7096 "syntax is different:\n" 7099 " INCLUDE \"general.arts\"\n" 7102 "Includes can also be nested. In the example above general.arts\n" 7103 "can contain further includes which will then be treated\n" 7106 "The idea behind this mechanism is that you can write common settings\n" 7107 "for a bunch of calculations into one file. Then, you can create\n" 7108 "several controlfiles which include the basic settings and tweak them\n" 7109 "for different cases. When you decide to make changes to your setup\n" 7110 "that should apply to all calculations, you only have to make a\n" 7111 "single change in the include file instead of modifying all your\n" 7127 "Adds a index and a value (out = in+value).\n" 7129 "The result can either be stored in the same or another index.\n" 7130 "(in and out can be the same variable, but not out and value)\n"),
7131 AUTHORS(
"Patrick Eriksson, Oliver Lemke"),
7140 GIN_DESC(
"Input Index.",
"Value to add.")));
7143 NAME(
"IndexNumberOfAtmosphericPoints"),
7145 "Counts number of points in the atmosphere.\n" 7147 "For a 3D atmosphere the method sets *n* to:\n" 7148 " p_grid.nelem()*lat_grid.nelem()*lon_grid.nelem()\n" 7149 "For 1D and 2D the same calculation is done, but ignoring dimensions\n" 7155 GOUT_DESC(
"Variable to set with number of points."),
7156 IN(
"atmosphere_dim",
"p_grid",
"lat_grid",
"lon_grid"),
7164 DESCRIPTION(
"Sets an index workspace variable to the given value.\n"),
7178 NAME(
"IndexSetToLast"),
7180 "Set an Index to point towards last position of array-type variables.\n" 7182 "This method works as nelemGet, but gives the index number of the last\n" 7183 "element (which equals nelem-1).\n"),
7184 AUTHORS(
"Patrick Eriksson",
"Oliver Lemke"),
7191 GIN_TYPE(ARRAY_GROUPS +
", Vector"),
7193 GIN_DESC(
"The method is defined for these groups."),
7202 "Input and output can be same variable.\n"),
7212 GIN_DESC(
"Input index variable.")));
7218 "Input and output can be same variable.\n"),
7228 GIN_DESC(
"Input index variable.")));
7231 NAME(
"InterpAtmFieldToPosition"),
7232 DESCRIPTION(
"Point interpolation of atmospheric fields.\n" 7234 "The default way to specify the position is by *rtp_pos*.\n" 7236 "Linear interpolation is applied.\n"),
7241 GOUT_DESC(
"Value obtained by the interpolation."),
7242 IN(
"atmosphere_dim",
7251 GIN_DESC(
"Field to interpolate.")));
7254 NAME(
"InterpGriddedField2ToPosition"),
7256 "Latitude and longitude interpolation of a GriddedField2.\n" 7258 "The default way to specify the position is by *rtp_pos*.\n" 7260 "The interpolation is done for the latitude and longitude in\n" 7261 "*rtp_pos*. The altitude in *rtp_pos* is completely ignored.\n" 7262 "Linear interpolation is applied.\n" 7264 "The input field (*gfield2*) is expected to have latitude and\n" 7265 "longitude as first and second dimension.\n"),
7270 GOUT_DESC(
"Value obtained by interpolation."),
7271 IN(
"atmosphere_dim",
"lat_grid",
"lat_true",
"lon_true",
"rtp_pos"),
7275 GIN_DESC(
"Gridded field to interpolate.")));
7278 NAME(
"InterpSurfaceFieldToPosition"),
7280 "Point interpolation of surface fields.\n" 7282 "The default way to specify the position is by *rtp_pos*.\n" 7284 "Linear interpolation is applied.\n" 7286 "The interpolation is done for the latitude and longitude in\n" 7287 "*rtp_pos*, while the altitude in *rtp_pos* is not part of the\n" 7288 "calculations. However, it is checked that the altitude of *rtp_pos*\n" 7289 "is inside the range covered by *z_surface* with a 1 m margin, to\n" 7290 "give a warning when the specified position is not consistent with\n" 7291 "the surface altitudes.\n"),
7296 GOUT_DESC(
"Value obtained by interpolation."),
7297 IN(
"atmosphere_dim",
"lat_grid",
"lon_grid",
"rtp_pos",
"z_surface"),
7301 GIN_DESC(
"Field to interpolate.")));
7304 NAME(
"irradiance_fieldFromRadiance"),
7306 "Calculate the irradiance also known as flux density from the *radiance_field* .\n" 7307 "by integrating over the angular grids according to the grids set\n" 7308 "by *AngularGridsSetFluxCalc* \n" 7309 "See *AngularGridsSetFluxCalc to set \n" 7310 "*za_grid, aa_grid, and za_grid_weights*\n"),
7312 OUT(
"irradiance_field"),
7316 IN(
"radiance_field",
"za_grid",
"aa_grid",
"za_grid_weights"),
7323 NAME(
"isotopologue_ratiosInitFromBuiltin"),
7325 "Initialize isotopologue ratios with default values from built-in\n" 7328 OUT(
"isotopologue_ratios"),
7339 NAME(
"iyActiveSingleScat"),
7341 "Simulation of radar/lidar, restricted to single scattering.\n" 7343 "The WSM treats e.g. radar measurements of cloud and precipitation,\n" 7344 "on the condition that multiple scattering can be ignored. Beside\n" 7345 "the direct backsacttering, the two-way attenuation by gases and\n" 7346 "particles is considered. Surface scattering is ignored.\n" 7348 "The method could potentially be used for lidars, but multiple\n" 7349 "scattering poses here a must stronger constrain for the range of\n" 7352 "The method can be used with *iyCalc*, but not with *yCalc*. In the\n" 7353 "later case, use instead *yActive*.\n" 7355 "The method returns the backscattering for each point of *ppath*.\n" 7356 "Several frequencies can be treated in parallel. The size of *iy*\n" 7357 "is [ nf*np, stokes_dim ], where nf is the length of *f_grid* and\n" 7358 "np is the number of path points. The data are stored in blocks\n" 7359 "of [ np, stokes_dim ]. That is, all the results for the first\n" 7360 "frequency occupy the np first rows of *iy* etc.\n" 7362 "The polarisation state of the transmitted pulse is taken from\n" 7363 "*iy_transmitter_agenda*. If the radar transmits several polarisations\n" 7364 "at the same frequency, you need to handle this by using two frequencies\n" 7365 "in *f_grid*, but these can be almost identical.\n" 7367 "This method does not consider *iy_unit*. Unit changes are insted applied\n" 7368 "in *yActive. The output of this method matches the option \"1\".\n" 7370 "Transmission is handled in a slightly simplified manner for efficiency\n" 7371 "reasons. First of all, the transmission matrix is assumed to be the same\n" 7372 "in both directions between the sensor and the point of back-scattering.\n" 7373 "This should in general be true, but exceptions could exist. The extinction\n" 7374 "due to particles can also be scaled, which could be of interest when e.g.\n" 7375 "characterising inversions.\n" 7377 "Further, for Jacobian calculations the default is to assume that the\n" 7378 "transmission is unaffected by the retrieval quantities. This is done\n" 7379 "to save computational time, and should be a valid approximation for the\n" 7380 "single-scattering conditions. Set *trans_in_jacobian* to 1 to obtain\n" 7381 "the more accurate Jacobian.\n" 7383 "Some auxiliary radiative transfer quantities can be obtained. Auxiliary\n" 7384 "quantities are selected by *iy_aux_vars* and returned by *iy_aux*.\n" 7385 "Valid choices for auxiliary data are:\n" 7386 " \"Radiative background\": Index value flagging the radiative\n" 7387 " background. The following coding is used: 0=space, 1=surface\n" 7388 " and 2=cloudbox.\n" 7389 " \"Backscattering\": The unattenuated backscattering. That is, as\n" 7390 " *iy* but with no attenuated applied. Here all columns are filled.\n" 7391 " \"Optical depth\": Scalar, total and two-way, optical depth between\n" 7392 " sensor and each point of the propagation path. Calculated based on\n" 7393 " the (1,1)-element of the transmission matrix (1-based indexing),\n" 7394 " i.e. only fully valid for scalar RT.\n" 7395 " \"Particle extinction\": As \"Optical depth\", but only with particle\n" 7396 " attenuation included. That is, gas absorption is ignored.\n" 7397 "If nothing else is stated, only the first column of *iy_aux* is filled,\n" 7398 "i.e. the column matching Stokes element I, while remaing columns are\n" 7399 "are filled with zeros.\n"),
7412 "ppvar_trans_cumulat"),
7437 "scat_data_checked",
7440 "jacobian_quantities",
7442 "propmat_clearsky_agenda",
7443 "water_p_eq_agenda",
7444 "iy_transmitter_agenda",
7448 GIN(
"trans_in_jacobian",
"pext_scaling",
"t_interp_order"),
7449 GIN_TYPE(
"Index",
"Numeric",
"Index"),
7451 GIN_DESC(
"Flag determining if change in transmission is considered" 7452 " in calculation of the Jacobian or not.",
7453 "Particle extinction is scaled with this value. A value" 7454 " inside [0,2]. Set it to 0 if you want to remove particle" 7455 " extinction totally.",
7456 "Interpolation order of temperature for scattering data (so" 7457 " far only applied in phase matrix, not in extinction and" 7461 NAME(
"iyActiveSingleScat2"),
7463 AUTHORS(
"Patrick Eriksson",
"Richard Larsson"),
7475 "ppvar_trans_cumulat"),
7500 "scat_data_checked",
7503 "jacobian_quantities",
7505 "propmat_clearsky_agenda",
7506 "water_p_eq_agenda",
7507 "iy_transmitter_agenda",
7511 GIN(
"trans_in_jacobian",
"pext_scaling",
"t_interp_order"),
7512 GIN_TYPE(
"Index",
"Numeric",
"Index"),
7514 GIN_DESC(
"Flag determining if change in transmission is considered" 7515 " in calculation of the Jacobian or not.",
7516 "Particle extinction is scaled with this value. A value" 7517 " inside [0,2]. Set it to 0 if you want to remove particle" 7518 " extinction totally.",
7519 "Interpolation order of temperature for scattering data (so" 7520 " far only applied in phase matrix, not in extinction and" 7524 NAME(
"iyApplyUnit"),
7526 "Conversion of *iy* to other spectral units.\n" 7528 "The method allows a change of unit, as a post-processing step,\n" 7529 "ignoring the n2-law of radiance.\n" 7531 "The conversion made inside *iyEmissionStandard* is mimiced,\n" 7532 "see that method for constraints and selection of output units.\n" 7533 "Restricted to that the n2-law can be ignored. This assumption\n" 7534 "is valid if the sensor is placed in space, or if the refractive\n" 7535 "index only deviates slightly from unity.\n" 7537 "It is stressed that there is no automatic check that the method is\n" 7538 "applied correctly, it is up to the user to ensure that the input\n" 7539 "data are suitable for the conversion.\n" 7541 "Beside *iy*, these auxilary quantities are modified:\n" 7542 " \"iy\", \"Error\" and \"Error (uncorrelated)\"\n" 7544 "Please note that *diy_dx* is not handled.\n"),
7546 OUT(
"iy",
"iy_aux"),
7550 IN(
"iy",
"iy_aux",
"stokes_dim",
"f_grid",
"iy_aux_vars",
"iy_unit"),
7561 "A single monochromatic pencil beam calculation.\n" 7563 "Performs monochromatic radiative transfer calculations for the\n" 7564 "specified position (*rte_pos*) and line-of-sight (*rte_pos*).\n" 7565 "See *iy* and associated variables for format of output.\n" 7567 "Please note that Jacobian type calculations not are supported.\n" 7568 "For this use *yCalc*.\n" 7570 "No sensor characteristics are applied. These are most easily\n" 7571 "incorporated by using *yCalc*\n"),
7573 OUT(
"iy",
"iy_aux",
"ppath"),
7577 IN(
"atmgeom_checked",
7578 "atmfields_checked",
7583 "scat_data_checked",
7597 NAME(
"iyEmissionStandard"),
7599 "Standard method for radiative transfer calculations with emission.\n" 7601 "Designed to be part of *iy_main_agenda*. That is, only valid\n" 7602 "outside the cloudbox (no scattering). For details se the user guide.\n" 7604 "The possible choices for *iy_unit* are\n" 7605 " \"1\" : No conversion, i.e. [W/(m^2 Hz sr)] (radiance per\n" 7606 " frequency unit).\n" 7607 " \"RJBT\" : Conversion to Rayleigh-Jean brightness\n" 7609 " \"PlanckBT\" : Conversion to Planck brightness temperature.\n" 7610 " \"W/(m^2 m sr)\" : Conversion to [W/(m^2 m sr)] (radiance per\n" 7611 " wavelength unit).\n" 7612 " \"W/(m^2 m-1 sr)\": Conversion to [W/(m^2 m-1 sr)] (radiance per\n" 7613 " wavenumber unit).\n" 7614 "Expressions applied and considerations for the unit conversion of\n" 7615 "radiances are discussed in Sec. 5.7 of the ARTS-2.0 article.\n" 7617 "*iy_unit* is only applied if *iy_agenda_call1* is 1. This means that\n" 7618 "no unit ocnversion is applied for internal iterative calls.\n" 7620 "Some auxiliary radiative transfer quantities can be obtained. Auxiliary\n" 7621 "quantities are selected by *iy_aux_vars* and returned by *iy_aux*.\n" 7622 "Valid choices for auxiliary data are:\n" 7623 " \"Radiative background\": Index value flagging the radiative\n" 7624 " background. The following coding is used: 0=space, 1=surface\n" 7625 " and 2=cloudbox.\n" 7626 " \"Optical depth\": Scalar optical depth between the observation point\n" 7627 " and the end of the present propagation path. Calculated based on\n" 7628 " the (1,1)-element of the transmission matrix (1-based indexing),\n" 7629 " i.e. only fully valid for scalar RT.\n" 7630 "If nothing else is stated, only the first column of *iy_aux* is filled,\n" 7631 "i.e. the column matching Stokes element I, while remaing columns are\n" 7632 "are filled with zeros.\n"),
7633 AUTHORS(
"Patrick Eriksson",
"Richard Larsson",
"Oliver Lemke"),
7645 "ppvar_trans_cumulat",
7646 "ppvar_trans_partial"),
7670 "jacobian_quantities",
7673 "propmat_clearsky_agenda",
7674 "water_p_eq_agenda",
7677 "iy_surface_agenda",
7678 "iy_cloudbox_agenda",
7682 "surface_props_data"),
7689 NAME(
"iyEmissionStandardSequential"),
7691 "DEPRECATED! Should go away soon\n" 7692 "Sequential version of *iyEmissionStandard*\n" 7694 "For documentation see *iyEmissionStandard*.\n"),
7695 AUTHORS(
"Patrick Eriksson",
"Richard Larsson"),
7707 "ppvar_trans_cumulat",
7708 "ppvar_trans_partial"),
7732 "jacobian_quantities",
7735 "propmat_clearsky_agenda",
7736 "water_p_eq_agenda",
7739 "iy_surface_agenda",
7740 "iy_cloudbox_agenda",
7744 "surface_props_data"),
7835 AUTHORS(
"Patrick Eriksson",
"Jana Mendrok",
"Richard Larsson"),
7848 "ppvar_trans_cumulat"),
7877 "jacobian_quantities",
7878 "propmat_clearsky_agenda",
7879 "water_p_eq_agenda",
7882 "iy_surface_agenda",
7883 "iy_cloudbox_agenda",
7889 "surface_props_data",
7892 GIN(
"Naa_grid",
"t_interp_order"),
7895 GIN_DESC(
"Number of azimuth angles to consider in scattering source term" 7897 "Interpolation order of temperature for scattering data (so" 7898 " far only applied in phase matrix, not in extinction and" 7903 DESCRIPTION(
"So far just for even more testing.\n"),
7904 AUTHORS(
"Patrick Eriksson",
"Jana Mendrok",
"Richard Larsson"),
7917 "ppvar_trans_cumulat"),
7946 "jacobian_quantities",
7947 "propmat_clearsky_agenda",
7948 "water_p_eq_agenda",
7951 "iy_surface_agenda",
7952 "iy_cloudbox_agenda",
7958 "surface_props_data",
7961 GIN(
"Naa_grid",
"t_interp_order"),
7964 GIN_DESC(
"Number of azimuth angles to consider in scattering source term" 7966 "Interpolation order of temperature for scattering data (so" 7967 " far only applied in phase matrix, not in extinction and" 7971 NAME(
"iyIndependentBeamApproximation"),
7974 "Describe how *atm_fields_compact* is filled.\n"),
7976 OUT(
"iy",
"iy_aux",
"ppath",
"diy_dx",
"atm_fields_compact"),
8014 "iy_independent_beam_approx_agenda"),
8015 GIN(
"return_atm1d",
"skip_vmr",
"skip_pnd",
"return_masses"),
8016 GIN_TYPE(
"Index",
"Index",
"Index",
"Index"),
8019 "Flag to trigger that *atm_fields_compact* is filled. ",
8020 "Flag to not include vmr data in *atm_fields_compact*.",
8021 "Flag to not include pnd data in *atm_fields_compact*.",
8022 "Flag to include particle category masses in *atm_fields_compact*." 8023 "Conversion is done by *particle_masses*.")));
8026 NAME(
"iyInterpCloudboxField"),
8028 "Interpolates the intensity field of the cloud box.\n" 8030 "Determines the intensity field at the position and direction\n" 8031 "specified by *rte_pos* and *rte_los*. The position can be both\n" 8032 "inside the cloud box or at its edge.\n" 8034 "The interpolation in the spatial dimensions is linear.\n" 8036 "For the zenith angle dimensions several options for controlling\n" 8037 "the interpolation are at hand. Default is linear interpolation.\n" 8038 "Higher order polynomial interpolation is activated by setting\n" 8039 "*za_interp_order* to a value > 1. Default is to perform the\n" 8040 "interpolation separately for [0,90[ and ]90,180]. To handle\n" 8041 "90 degree or use the full range ([0,180]) as basis for the\n" 8042 "interpolation, set *za_restrict* to 0. You can select to use\n" 8043 "cos(za) as the independent variable (instead of za) by setting\n" 8044 "*cos_za_interp* to 1.\n" 8046 "For the azimuth dimension the interpolation order can be\n" 8047 "selected, in the same manner as for zenith.\n"),
8048 AUTHORS(
"Claudia Emde",
"Patrick Eriksson",
"Jana Mendrok"),
8053 IN(
"cloudbox_field",
8069 GIN(
"za_interp_order",
8074 GIN_TYPE(
"Index",
"Index",
"Index",
"Numeric",
"Index"),
8076 GIN_DESC(
"Zenith angle interpolation order.",
8077 "Flag whether to restric zenith angle interpolation to one " 8079 "Flag whether to do zenith angle interpolation in cosine space.",
8080 "Maximum allowed extrapolation range in zenith angle.",
8081 "Azimuth angle interpolation order.")));
8084 NAME(
"iyLoopFrequencies"),
8086 "Radiative transfer calculations one frequency at the time.\n" 8088 "The method loops the frequencies in *f_grid* and calls\n" 8089 "*iy_loop_freqs_agenda* for each individual value. This method is\n" 8090 "placed in *iy_main_agenda*, and the actual radiative transfer\n" 8091 " method is put in *iy_loop_freqs_agenda*.\n" 8093 "A common justification for using the method should be to consider\n" 8094 "dispersion. By using this method it is ensured that the propagation\n" 8095 "path for each individual frequency is calculated.\n"),
8097 OUT(
"iy",
"iy_aux",
"ppath",
"diy_dx"),
8109 "iy_loop_freqs_agenda"),
8118 "Interface to Monte Carlo part for *iy_main_agenda*.\n" 8120 "Basically an interface to *MCGeneral* for doing monochromatic\n" 8121 "pencil beam calculations. This functions allows Monte Carlo (MC)\n" 8122 "calculations for sets of frequencies and sensor pos/los in a single\n" 8123 "run. Sensor responses can be included in the standard manner\n" 8124 "(through *yCalc*).\n" 8126 "This function does not apply the MC approach when it comes\n" 8127 "to sensor properties. These properties are not considered when\n" 8128 "tracking photons, which is done in *MCGeneral* (but then only for\n" 8129 "the antenna pattern).\n" 8131 "Output unit options (*iy_unit*) exactly as for *MCGeneral*.\n" 8133 "The MC calculation errors are all assumed be uncorrelated and each\n" 8134 "have a normal distribution. These properties are of relevance when\n" 8135 "weighting the errors with the sensor repsonse matrix. The seed is\n" 8136 "reset for each call of *MCGeneral* to obtain uncorrelated errors.\n" 8138 "MC control arguments (mc_std_err, mc_max_time, mc_min_iter, mc_max_iter\n" 8139 "mc_taustep_limit) as for *MCGeneral*. The arguments are applied\n" 8140 "for each monochromatic pencil beam calculation individually.\n" 8141 "As for *MCGeneral*, the value of *mc_error* shall be adopted to\n" 8144 "The following auxiliary data can be obtained:\n" 8145 " \"Error (uncorrelated)\": Calculation error. Size: [nf,ns,1,1].\n" 8146 " (The later part of the text string is required. It is used as\n" 8147 " a flag to yCalc for how to apply the sensor data.)\n" 8149 " nf: Number of frequencies.\n" 8150 " ns: Number of Stokes elements.\n"),
8152 OUT(
"iy",
"iy_aux",
"diy_dx"),
8156 IN(
"iy_agenda_call1",
8177 "surface_rtprop_agenda",
8178 "propmat_clearsky_agenda",
8179 "ppath_step_agenda",
8188 "mc_taustep_limit"),
8189 GIN(
"t_interp_order"),
8192 GIN_DESC(
"Interpolation order of temperature for scattering data (so" 8193 " far only applied in phase matrix, not in extinction and" 8315 NAME(
"iyReplaceFromAux"),
8317 "Change of main output variable.\n" 8319 "With this method you can replace the content of *iy* with one of\n" 8320 "the auxiliary variables. The selected variable (by *aux_var*) must\n" 8321 "be part of *iy_aux_vars*. The corresponding data from *iy_aux* are\n" 8322 "copied to form a new *iy* (*iy_aux* is left unchanged). Elements of\n" 8323 "*iy* correponding to Stokes elements not covered by the auxiliary\n" 8324 "variable are just set to zero.\n" 8326 "Jacobian variables are not handled.\n"),
8332 IN(
"iy",
"iy_aux",
"iy_aux_vars",
"jacobian_do"),
8336 GIN_DESC(
"Auxiliary variable to insert as *iy*.")));
8339 NAME(
"iySurfaceCallAgendaX"),
8341 "Switch between the elements of *iy_surface_agenda_array*.\n" 8343 "This method simply calls the agenda matching *surface_type* and\n" 8344 "returns the results. That is, the agenda in *iy_surface_agenda_array*\n" 8345 "with index *surface_type* (0-based) is called.\n"),
8347 OUT(
"iy",
"diy_dx"),
8362 "iy_surface_agenda_array",
8364 "surface_type_aux"),
8371 NAME(
"iySurfaceFastem"),
8373 "Usage of FASTEM for emissivity and reflectivity of water surfaces.\n" 8375 "This method allows usage of the FASTEM model inside\n" 8376 "*iy_surface_agenda*. The aim is to use FASTEM in the exact same\n" 8377 "way as done in RTTOV. For example, the transmittance for down-\n" 8378 "welling radiation is considered. RTTOV os just 1D. Here 2D and 3D\n" 8379 "are handled as the 1D case, the down-welling radiation is just\n" 8380 "calculated for the directuon matching specular reflection.\n" 8382 "The wind direction is given as the azimuth angle, counted\n" 8383 "clockwise from north (i.e. an easterly wind is at 90 deg).\n" 8384 "This matches the general definition of azimuth inside ARTS.\n" 8385 "For 1D and 2D, the wind direction must be adjusted to match the\n" 8386 "fact that the line-of-sight is locked to be at 0 deg (180 for 2D\n" 8387 "in the case of a negative zenith angle). For 3D, the true wind\n" 8388 "direction shall be used.\n" 8390 "FASTEM is called by *FastemStandAlone*. See that WSM for further\n" 8391 "comments on variables and limitations.\n"),
8393 OUT(
"iy",
"diy_dx"),
8412 GIN(
"salinity",
"wind_speed",
"wind_direction",
"fastem_version"),
8413 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric",
"Index"),
8415 GIN_DESC(
"Salinity, 0-1. That is, 3% is given as 0.03.",
8417 "Wind direction. See further above.",
8418 "The version of FASTEM to use.")));
8421 NAME(
"iySurfaceRtpropAgenda"),
8423 "Interface to *surface_rtprop_agenda* for *iy_surface_agenda*.\n" 8425 "This method is designed to be part of *iy_surface_agenda*. It\n" 8426 "determines the radiative properties of the surface by\n" 8427 "*surface_rtprop_agenda* and calculates the downwelling radiation\n" 8428 "by *iy_main_agenda*, and sums up the terms as described in AUG.\n" 8429 "That is, this WSM uses the output from *surface_rtprop_agenda*\n" 8430 "in a straightforward fashion.\n"),
8432 OUT(
"iy",
"diy_dx"),
8450 "surface_rtprop_agenda"),
8457 NAME(
"iySurfaceRtpropCalc"),
8459 "Applies *surface_los*, *surface_rmatrix* and *surface_emission*.\n" 8461 "This method is designed to be part of *iy_surface_agenda* and\n" 8462 "should be mandatory when using methods describing the surface\n" 8463 "radiative transfer properties by *surface_los*, *surface_rmatrix*\n" 8464 "and *surface_emission*. The task of this method is to apply these\n" 8465 "three WSVs to obtain the upwelling radiation from the surface.\n" 8466 "This upwelling radiation is the sum of surface emission and\n" 8467 "reflected downwelling radiation. The later part is calculated\n" 8468 "by calling *iy_main_agenda*. See further AUG.\n"),
8470 OUT(
"iy",
"diy_dx"),
8479 "dsurface_rmatrix_dx",
8480 "dsurface_emission_dx",
8484 "jacobian_quantities",
8501 NAME(
"iyTransmissionStandard"),
8503 "Standard method for handling transmission measurements.\n" 8505 "Designed to be part of *iy_main_agenda*. Treatment of the cloudbox\n" 8506 "is incorporated (that is, no need to define *iy_cloudbox_agenda*).\n" 8508 "The transmitter is assumed to be placed at the end of provided *ppath*.\n" 8509 "The transmitted signal is taken from *iy_transmitter_agenda*. This\n" 8510 "signal is propagated along the path, considering attenuation alone.\n" 8511 "That is, the result of the method (*iy*) is the output of\n" 8512 "*iy_transmitter_agenda* multiplied with the transmission along the\n" 8513 "propagation path.\n" 8515 "As mentioned, the given *ppath* determines the position of the\n" 8516 "transmitter. For clear-sky and no modification of *ppath*, this\n" 8517 "means that the transitter will either be found at the surface or\n" 8518 "at the top-of-the-atmosphere. If you want to maintain this even with\n" 8519 "an active cloudbox, calculate *ppath* as\n" 8520 " ppathCalc( cloudbox_on=0 )\n" 8521 "Without setting cloudbox_on=0, the transmitter will end up inside or\n" 8522 "at the boundary of the cloudbox.\n" 8524 "Some auxiliary radiative transfer quantities can be obtained. Auxiliary\n" 8525 "quantities are selected by *iy_aux_vars* and returned by *iy_aux*.\n" 8526 "Valid choices for auxiliary data are:\n" 8527 " \"Radiative background\": Index value flagging the radiative\n" 8528 " background. The following coding is used: 0=space, 1=surface\n" 8529 " and 2=cloudbox. The value is added to each column.\n" 8530 " \"Optical depth\": Scalar optical depth between the observation point\n" 8531 " and the end of the present propagation path. Calculated based on\n" 8532 " the (1,1)-element of the transmission matrix (1-based indexing),\n" 8533 " i.e. only fully valid for scalar RT. The value is added to each\n" 8535 AUTHORS(
"Patrick Eriksson",
"Richard Larsson"),
8548 "ppvar_trans_cumulat"),
8575 "jacobian_quantities",
8577 "propmat_clearsky_agenda",
8578 "water_p_eq_agenda",
8579 "iy_transmitter_agenda",
8589 NAME(
"iy_transmitterMultiplePol"),
8591 "Transmitted signal having multiple polarisations.\n" 8593 "The method is intended to be part of *iy_transmitter_agenda*. It\n" 8594 "sets *iy* to describe the transmitted signal/pulses. The polarisation\n" 8595 "state is taken from *instrument_pol*, where *instrument_pol* must\n" 8596 "contain an element for each frequency in *f_grid*. The transmitted\n" 8597 "signal/pulses are set to be of unit magnitude, such as [1,1,0,0].\n"),
8603 IN(
"stokes_dim",
"f_grid",
"instrument_pol"),
8610 NAME(
"iy_transmitterSinglePol"),
8612 "Transmitted signal having a single polarisations.\n" 8614 "The method is intended to be part of *iy_transmitter_agenda*. It\n" 8615 "sets *iy* to describe the transmitted pulses/signal. The polarisation\n" 8616 "state is taken from *instrument_pol*, where *instrument_pol* must contain\n" 8617 "a single value. This polarisation state is applied for all\n" 8618 "frequencies. The transmitted pulses/signals are set to be of unit\n" 8619 "magnitude, such as [1,1,0,0].\n"),
8625 IN(
"stokes_dim",
"f_grid",
"instrument_pol"),
8632 NAME(
"jacobianAddAbsSpecies"),
8634 "Includes an absorption species in the Jacobian.\n" 8636 "For 1D or 2D calculations the latitude and/or longitude grid of\n" 8637 "the retrieval field should set to have zero length.\n" 8639 "These retrieval units are at hand for all gas species:\n" 8640 " \"vmr\" : Volume mixing ratio.\n" 8641 " \"nd\" : Number density.\n" 8642 " \"rel\" : Relative unit (e.g. 1.1 means 10% more of the gas).\n" 8644 "For water vapour, also these units are at hand:\n" 8645 " \"rh\" : Relative humidity.\n" 8646 " \"q\" : Specific humidity.\n" 8648 "Note that *for_species_tag* is used to indicate if species tag VMR,\n" 8649 "rather than atmospheric gas VMR is calculated. Set it to 0 and we\n" 8650 "calculate the atmospheric gas VMR, but this only works for \"analytical\".\n" 8652 "Note that the Jacobian is set to zero where volume mixing ratio equals zero.\n" 8654 "The number of elements added to the state vector (*x*) is:\n" 8655 " n_g1 * n_g2 * n_g3\n" 8656 "where n_g1, n_g2 and n_g3 are the length of GIN *g1*, *g2* and *g3*,\n" 8657 "respectively. Here empty vectors should be considered to have a length 1.\n" 8658 "The elements are sorted with pressure as innermost loop, followed by\n" 8659 "latitude and longitude as outermost loop.\n"),
8660 AUTHORS(
"Mattias Ekstrom",
"Patrick Eriksson"),
8661 OUT(
"jacobian_quantities",
"jacobian_agenda"),
8665 IN(
"jacobian_quantities",
8671 GIN(
"g1",
"g2",
"g3",
"species",
"unit",
"for_species_tag"),
8672 GIN_TYPE(
"Vector",
"Vector",
"Vector",
"String",
"String",
"Index"),
8674 GIN_DESC(
"Pressure retrieval grid.",
8675 "Latitude retrieval grid.",
8676 "Longitude retreival grid.",
8677 "The species tag of the retrieval quantity.",
8678 "Retrieval unit. See above.",
8679 "Index-bool for acting on species tags or species."),
8686 NAME(
"jacobianAddBasicCatalogParameter"),
8688 "Includes a basic catalog parameter in the Jacobian. These are constant\n" 8689 "over all layers and so only a single vector output is returned.\n" 8691 "The only basic catalog parameters currently supported are:\n" 8692 " \"Line Strength\"\n" 8693 " \"Line Center\"\n" 8695 "The *catalog_identity* should be able to identify one or many\n" 8696 "lines in the catalog used for calculating the spectral absorption.\n" 8697 "Note that partial matching for energy levels are allowed but not\n" 8698 "recommended, as it is somewhat nonsensical to add multiple parameters\n" 8700 "Also note *jacobianAddShapeCatalogParameter* as this allows addition\n" 8701 "of shape parameters, e.g., pressure broadening coefficients\n" 8703 "Each call to this function adds just a single value to *x*.\n" 8705 "Example given the catalog_identity=\"O2-66 TR UP v1 0 J 1 LO v1 0 J 0\",\n" 8706 "only the O2 ground-level 119 GHz line can be accessed and only its\n" 8707 "catalog_parameter will be accessed. However, the more lenient\n" 8708 "catalog_identity=\"O2-66 TR UP J 1 LO J 0\" may be used, but then the\n" 8709 "118 GHz line belonging to v1=1 branch will be added to the same *x*.\n"),
8711 OUT(
"jacobian_quantities",
"jacobian_agenda"),
8715 IN(
"jacobian_quantities",
"jacobian_agenda"),
8716 GIN(
"catalog_identity",
"catalog_parameter"),
8717 GIN_TYPE(
"QuantumIdentifier",
"String"),
8719 GIN_DESC(
"The catalog line matching information.",
8720 "The catalog parameter of the retrieval quantity.")));
8723 NAME(
"jacobianAddBasicCatalogParameters"),
8725 "See *jacobianAddBasicCatalogParameter*.\n" 8727 "This adds a multiple of parameters for first each catalog_identity in\n" 8728 "catalog_identities and then for each catalog_parameter in catalog_parameters\n" 8729 "by looping calls to *jacobianAddBasicCatalogParameter* over these input\n"),
8731 OUT(
"jacobian_quantities",
"jacobian_agenda"),
8735 IN(
"jacobian_quantities",
"jacobian_agenda"),
8736 GIN(
"catalog_identities",
"catalog_parameters"),
8737 GIN_TYPE(
"ArrayOfQuantumIdentifier",
"ArrayOfString"),
8739 GIN_DESC(
"The catalog line matching information.",
8740 "The catalog parameter of the retrieval quantity.")));
8743 NAME(
"jacobianAddFreqShift"),
8745 "Includes a frequency fit of shift type in the Jacobian.\n" 8747 "Retrieval of deviations between nominal and actual backend\n" 8748 "frequencies can be included by this method. The assumption here is\n" 8749 "that the deviation is a constant off-set, a shift, common for all\n" 8750 "frequencies (and not varying between measurement blocks).\n" 8752 "This method adds one element to the state vector (*x*).\n"),
8754 OUT(
"jacobian_quantities",
"jacobian_agenda"),
8758 IN(
"jacobian_quantities",
"jacobian_agenda",
"f_grid"),
8762 GIN_DESC(
"Size of perturbation to apply.")));
8765 NAME(
"jacobianAddFreqStretch"),
8767 "Includes a frequency fit of stretch type in the Jacobian.\n" 8769 "Retrieval of deviations between nominal and actual backend\n" 8770 "frequencies can be included by this method. The assumption here is\n" 8771 "that the deviation varies linearly over the frequency range\n" 8772 "(following ARTS basis function for polynomial order 1).\n" 8774 "This method adds one element to the state vector (*x*).\n"),
8776 OUT(
"jacobian_quantities",
"jacobian_agenda"),
8780 IN(
"jacobian_quantities",
"jacobian_agenda",
"f_grid"),
8784 GIN_DESC(
"Size of perturbation to apply.")));
8787 NAME(
"jacobianAddShapeCatalogParameter"),
8789 "Adds a line shape parameter to the Jacobian calculations. These\n" 8790 "are constant over all levels so only a single *x*-value is added\n" 8792 "Line function parameter assume the derivatives\n" 8793 "of internal pressure broadening and line mixing\n" 8794 "functionality follows a simply f(T, T0, X0, X1, X2)\n" 8795 "format. The shape of the function f() is determined by\n" 8796 "input catalog; please see the ARTS documentation for more\n" 8799 "The input are as follows:\n" 8800 " line_identity: Identifier of preferably a single line\n" 8801 " species: A SpeciesTag, e.g., \"O2\" or \"H2O\" for common species.\n" 8802 " Note that \"SELF\" and \"AIR\" tags are used for shape parameters\n" 8803 " affected by self and air-broadening, respectively.\n" 8804 " variable: A variable supported by the line, these can be\n" 8805 " \"G0\": Speed-independent pressure broadening\n" 8806 " \"G2\": Speed-dependent pressure broadening\n" 8807 " \"D0\": Speed-independent pressure shift\n" 8808 " \"D2\": Speed-dependent pressure shift\n" 8809 " \"FVC\": Frequency of velocity changing collisions\n" 8810 " \"ETA\": partial correlation between velocity and\n" 8811 " rotational state changes due to collisions\n" 8812 " \"Y\": First order line-mixing parameter\n" 8813 " \"G\": Second order line-mixing parameter for strength\n" 8814 " \"DV\": Second order line-mixing parameter for shifting\n" 8815 " coefficient: A coefficient in the model to compute the above parameters.\n" 8817 "Note that we cannot test if the line in question supports the variable and\n" 8818 "coefficient at the level of this function, so many errors will only be reported\n" 8819 "at a later stage\n" 8821 "For other spectroscopic parameters, see *jacobianAddBasicCatalogParameter*.\n" 8822 "Also see said function for an example of how to set the QuantumIdentifier\n"),
8824 OUT(
"jacobian_quantities",
"jacobian_agenda"),
8828 IN(
"jacobian_quantities",
"jacobian_agenda"),
8829 GIN(
"line_identity",
"species",
"variable",
"coefficient"),
8830 GIN_TYPE(
"QuantumIdentifier",
"String",
"String",
"String"),
8833 "Species of interest",
8834 "Variable of interest",
8835 "Coefficient of interest")));
8838 NAME(
"jacobianAddShapeCatalogParameters"),
8840 "See *jacobianAddShapeCatalogParameter* for information on\n" 8841 "the GIN parameters\n" 8843 "This function accepts the same input but for lists of data.\n" 8844 "The function loops over each input list\n" 8845 "individually and appends the information to *jacobian_quantities*.\n" 8847 "Special \"ALL\" for 1 length *variables* and *coefficients* are\n" 8848 "allowed to compute all variables/coefficients in the order described\n" 8849 "in the description of *jacobianAddShapeCatalogParameter*\n" 8851 "For example, if *line_identities* have length 5, *species* length 4,\n" 8852 "*variables* length 3, and *coefficients* length 2, there will be\n" 8853 "5*4x3x2 = 120 new additions to *jacobian_quantities* in the order:\n" 8854 "\t[{line_identities[0], species[0], variables[0] coefficients[0]}]\n" 8855 "\t[{line_identities[0], species[0], variables[0] coefficients[1]}]\n" 8856 "\t[{line_identities[0], species[0], variables[1] coefficients[0]}]\n" 8857 "\t[{line_identities[0], species[0], variables[1] coefficients[1]}]\n" 8858 "\t[{line_identities[0], species[0], variables[2] coefficients[0]}]\n" 8859 "\t[{line_identities[0], species[0], variables[2] coefficients[1]}]\n" 8860 "\t[{line_identities[0], species[1], variables[0] coefficients[0]}]\n" 8862 "\t[{line_identities[4], species[3], variables[1] coefficients[1]}]\n" 8863 "\t[{line_identities[4], species[3], variables[2] coefficients[0]}]\n" 8864 "\t[{line_identities[4], species[3], variables[2] coefficients[1]}]\n" 8865 "or in words: lines first, then species, then variables, then coefficients\n"),
8867 OUT(
"jacobian_quantities",
"jacobian_agenda"),
8871 IN(
"jacobian_quantities",
"jacobian_agenda"),
8872 GIN(
"line_identities",
"species",
"variables",
"coefficients"),
8873 GIN_TYPE(
"ArrayOfQuantumIdentifier",
8878 GIN_DESC(
"List of line identifiers",
8879 "List of species of interest",
8880 "List of variables of interest",
8881 "List of coefficients of interest")));
8884 NAME(
"jacobianAddMagField"),
8886 "Includes one magnetic field component in the Jacobian.\n" 8888 "The method follows the pattern of other Jacobian methods. The\n" 8889 "calculations can only be performed by analytic expressions.\n" 8891 "The magnetic field components are retrieved separately, and,\n" 8892 "hence, the argument *component* can be \"u\", \"v\", \"w\",\n" 8893 "and \"strength\".\n" 8895 "The number of elements added to the state vector (*x*) is:\n" 8896 " n_g1 * n_g2 * n_g3\n" 8897 "where n_g1, n_g2 and n_g3 are the length of GIN *g1*, *g2* and *g3*,\n" 8898 "respectively. Here empty vectors should be considered to have a length 1.\n" 8899 "The elements are sorted with pressure as innermost loop, followed by\n" 8900 "latitude and longitude as outermost loop.\n" 8902 "The dB-parameter is only used for Faraday rotation\n"),
8903 AUTHORS(
"Patrick Eriksson",
"Richard Larsson"),
8904 OUT(
"jacobian_quantities",
"jacobian_agenda"),
8908 IN(
"jacobian_quantities",
8914 GIN(
"g1",
"g2",
"g3",
"component",
"dB"),
8915 GIN_TYPE(
"Vector",
"Vector",
"Vector",
"String",
"Numeric"),
8917 GIN_DESC(
"Pressure retrieval grid.",
8918 "Latitude retrieval grid.",
8919 "Longitude retreival grid.",
8920 "Magnetic field component to retrieve",
8921 "Magnetic field perturbation")));
8924 NAME(
"jacobianAddNLTE"),
8926 "Experimental NLTE Jacobian.\n" 8928 "Intention: Adds the nlte_field level distribution per atmospheric grid\n" 8929 "to the Jacobian.\n" 8931 "The number of elements added to the state vector (*x*) is:\n" 8932 " n_g1 * n_g2 * n_g3\n" 8933 "where n_g1, n_g2 and n_g3 are the length of GIN *g1*, *g2* and *g3*,\n" 8934 "respectively. Here empty vectors should be considered to have a length 1.\n" 8935 "The elements are sorted with pressure as innermost loop, followed by\n" 8936 "latitude and longitude as outermost loop.\n" 8938 "The QuantumIdentifier should identify a single energy level, such as:\n" 8939 "\"H2O-161 EN J 1 Ka 0 Kc 1\", for one of the lower levels in the chains\n" 8940 "of transitions of water. Note that using this method directly is not\n" 8941 "best practice, as the quantum identifiers of the levels have to be known\n" 8942 "at an early stage in NLTE calculations, and will usually populate the\n" 8943 "*nlte_level_identifiers* variable, meaning it is better to use *jacobianAddNLTE*\n" 8944 "directly than to individually call this function\n"),
8946 OUT(
"jacobian_quantities",
"jacobian_agenda"),
8950 IN(
"jacobian_quantities",
8956 GIN(
"g1",
"g2",
"g3",
"energy_level_identity",
"dx"),
8957 GIN_TYPE(
"Vector",
"Vector",
"Vector",
"QuantumIdentifier",
"Numeric"),
8959 GIN_DESC(
"Pressure retrieval grid.",
8960 "Latitude retrieval grid.",
8961 "Longitude retreival grid.",
8962 "Identifier to the eneregy level",
8963 "Perturbation of value if required by method")));
8966 NAME(
"jacobianAddNLTEs"),
8968 "Experimental NLTE Jacobian. Same as *jacobianAddNLTE* but for\n" 8971 "Adds energy_level_identities.nelem() times as many arguments to *x*\n" 8972 "as *jacobianAddNLTE*, ordered as energy_level_identities describes\n" 8974 "This method is preferred to *jacobianAddNLTE*, since *energy_level_identities*\n" 8975 "is conveniently almost always the same as *nlte_level_identifiers*\n"),
8977 OUT(
"jacobian_quantities",
"jacobian_agenda"),
8981 IN(
"jacobian_quantities",
8987 GIN(
"g1",
"g2",
"g3",
"energy_level_identities",
"dx"),
8989 "Vector",
"Vector",
"Vector",
"ArrayOfQuantumIdentifier",
"Numeric"),
8991 GIN_DESC(
"Pressure retrieval grid.",
8992 "Latitude retrieval grid.",
8993 "Longitude retreival grid.",
8994 "Identifiers to the eneregy level",
8995 "Perturbation of value if required by method")));
8998 NAME(
"jacobianAddPointingZa"),
9000 "Adds sensor pointing zenith angle off-set jacobian.\n" 9002 "Retrieval of deviations between nominal and actual zenith angle of\n" 9003 "the sensor can be included by this method. The weighing functions\n" 9004 "can be calculated in several ways:\n" 9005 " calcmode = \"recalc\": Recalculation of pencil beam spectra,\n" 9006 " shifted with *dza* from nominal values. A single-sided\n" 9007 " perturbation is applied (towards higher zenith angles).\n" 9008 " calcmode = \"interp\": Inter/extrapolation of existing pencil\n" 9009 " beam spectra. For this option, allow some extra margins for\n" 9010 " zenith angle grids, to avoid artifacts when extrapolating\n" 9011 " the data (to shifted zenith angles). The average of a\n" 9012 " negative and a positive shift is taken." 9014 "The interp option is recommended. It should in general be both\n" 9015 "faster and more accurate (due to the double sided disturbance).\n" 9016 "In addition, it is less sensitive to the choice of dza (as long\n" 9017 "as a small value is applied).\n" 9019 "The pointing off-set can be modelled to be time varying. The time\n" 9020 "variation is then described by a polynomial (with standard base\n" 9021 "functions). For example, a polynomial order of 0 means that the\n" 9022 "off-set is constant in time. If the off-set is totally uncorrelated\n" 9023 "between the spectra, set the order to -1.\n" 9025 "The number of elements added to the state vector (*x*) is\n" 9026 " if poly_order < 0 : length of *sensor_time*\n" 9027 " otherwise : poly_order+1\n" 9028 "In the first case, the order in *x* matches *sensor_time*. In the second\n" 9029 "case, the coefficient for polynomial order 0 comes first etc.\n"),
9030 AUTHORS(
"Patrick Eriksson",
"Mattias Ekstrom"),
9031 OUT(
"jacobian_quantities",
"jacobian_agenda"),
9035 IN(
"jacobian_quantities",
"jacobian_agenda",
"sensor_pos",
"sensor_time"),
9036 GIN(
"poly_order",
"calcmode",
"dza"),
9037 GIN_TYPE(
"Index",
"String",
"Numeric"),
9039 GIN_DESC(
"Order of polynomial to describe the time variation of " 9040 "pointing off-sets.",
9041 "Calculation method. See above",
9042 "Size of perturbation to apply (when applicable).")));
9045 NAME(
"jacobianAddPolyfit"),
9047 "Includes polynomial baseline fit in the Jacobian.\n" 9049 "This method deals with retrieval of disturbances of the spectra\n" 9050 "that can be described by an additive term, a baseline off-set.\n" 9052 "The baseline off-set is here modelled as a polynomial. The\n" 9053 "polynomial spans the complete frequency range spanned by\n" 9054 "*sensor_response_f_grid* and the method should only of interest for\n" 9055 "cases with no frequency gap in the spectra. The default assumption\n" 9056 "is that the off-set differs between all spectra, but it can also be\n" 9057 "assumed that the off-set is common for all e.g. line-of-sights.\n" 9059 "If the simulation/retrieval deals with a single spectrum, the number\n" 9060 "of elements added to the state vector (*x*) is poly_order+1. The\n" 9061 "coefficient for polynomial order 0 comes first etc. The same is true\n" 9062 "if *no_pol_variation*, *no_los_variation* and *no_mblock_variation*\n" 9063 "all are set to 1, even if several spectra are involved. Otherwise the" 9064 "number of elements added to *x* depends on the number of spectra and\n" 9065 "the settings of *no_pol_variation*, *no_los_variation* and \n" 9066 "*no_mblock_variation*. The coefficients of the different polynomial\n" 9067 "orders are treated as separate retrieval quantities. That is, the\n" 9068 "the elements associated with polynomial order 0 are grouped and form\n" 9069 "together a retrieval quantity. The coefficients for higher polynomial\n" 9070 "orders are treated in the same way.\n"),
9072 OUT(
"jacobian_quantities",
"jacobian_agenda"),
9076 IN(
"jacobian_quantities",
9078 "sensor_response_pol_grid",
9079 "sensor_response_dlos_grid",
9084 "no_mblock_variation"),
9085 GIN_TYPE(
"Index",
"Index",
"Index",
"Index"),
9087 GIN_DESC(
"Polynomial order to use for the fit.",
9088 "Set to 1 if the baseline off-set is the same for all " 9089 "Stokes components.",
9090 "Set to 1 if the baseline off-set is the same for all " 9091 "line-of-sights (inside each measurement block).",
9092 "Set to 1 if the baseline off-set is the same for all " 9093 "measurement blocks.")));
9096 NAME(
"jacobianAddScatSpecies"),
9098 "Includes a scattering species in the Jacobian.\n" 9100 "For 1D or 2D calculations the latitude and/or longitude grid of\n" 9101 "the retrieval field should set to have zero length.\n" 9103 "The number of elements added to the state vector (*x*) is:\n" 9104 " n_g1 * n_g2 * n_g3\n" 9105 "where n_g1, n_g2 and n_g3 are the length of GIN *g1*, *g2* and *g3*,\n" 9106 "respectively. Here empty vectors should be considered to have a length 1.\n" 9107 "The elements are sorted with pressure as innermost loop, followed by\n" 9108 "latitude and longitude as outermost loop.\n"),
9110 OUT(
"jacobian_quantities",
"jacobian_agenda"),
9114 IN(
"jacobian_quantities",
9120 GIN(
"g1",
"g2",
"g3",
"species",
"quantity"),
9121 GIN_TYPE(
"Vector",
"Vector",
"Vector",
"String",
"String"),
9124 "Pressure retrieval grid.",
9125 "Latitude retrieval grid.",
9126 "Longitude retreival grid.",
9127 "Name of scattering species, must match one element in *scat_species*.",
9128 "Retrieval quantity, e.g. \"IWC\"."),
9135 NAME(
"jacobianAddSinefit"),
9137 "Includes sinusoidal baseline fit in the Jacobian.\n" 9139 "Works as *jacobianAddPolyfit*, beside that a series of sine and\n" 9140 "cosine terms are used for the baseline fit.\n" 9142 "For each value in *period_lengths one sine and one cosine term are\n" 9143 "included (in mentioned order). By these two terms the amplitude and\n" 9144 "\"phase\" for each period length can be determined. The sine and\n" 9145 "cosine terms have value 0 and 1, respectively, for first frequency.\n" 9147 "If the simulation/retrieval deals with a single spectrum, the number\n" 9148 "of elements added to the state vector (*x*) is 2*nperiods, where\n" 9149 "nperiods is the length of *period_lengths*. The same is true\n" 9150 "if *no_pol_variation*, *no_los_variation* and *no_mblock_variation*\n" 9151 "all are set to 1, even if several spectra are involved. Otherwise the" 9152 "number of elements added to *x* depends on the number of spectra and\n" 9153 "the settings of *no_pol_variation*, *no_los_variation* and \n" 9154 "*no_mblock_variation*. The sine and cosine terms for each period\n" 9155 "length are treated as a separate retrieval quantities. That is, the\n" 9156 "the elements associated with the first period length are grouped and\n" 9157 "form together a retrieval quantity, etc. Inside each retrieval quantity\n" 9158 "the pairs of sine and cosine terms are kept together, in given order.\n"),
9160 OUT(
"jacobian_quantities",
"jacobian_agenda"),
9164 IN(
"jacobian_quantities",
9166 "sensor_response_pol_grid",
9167 "sensor_response_dlos_grid",
9169 GIN(
"period_lengths",
9172 "no_mblock_variation"),
9173 GIN_TYPE(
"Vector",
"Index",
"Index",
"Index"),
9175 GIN_DESC(
"Period lengths of the fit.",
9176 "Set to 1 if the baseline off-set is the same for all " 9177 "Stokes components.",
9178 "Set to 1 if the baseline off-set is the same for all " 9179 "line-of-sights (inside each measurement block).",
9180 "Set to 1 if the baseline off-set is the same for all " 9181 "measurement blocks.")));
9184 NAME(
"jacobianAddSpecialSpecies"),
9186 "Includes a special absorption species in the Jacobian.\n" 9188 "Similar to *jacobianAddAbsSpecies* but only for number densities.\n" 9190 "Species allowed are:\n" 9192 " \"particulates\"\n" 9194 "Note that the average of all particulates are used to scale its\n" 9195 "*jacobian*, so this method works best when only one type of\n" 9196 "particulate is being used, i.e., when *scat_data* has only one\n" 9197 "scattering species.\n" 9199 "The number of elements added to the state vector (*x*) is:\n" 9200 " n_g1 * n_g2 * n_g3\n" 9201 "where n_g1, n_g2 and n_g3 are the length of GIN *g1*, *g2* and *g3*,\n" 9202 "respectively. Here empty vectors should be considered to have a length 1.\n" 9203 "The elements are sorted with pressure as innermost loop, followed by\n" 9204 "latitude and longitude as outermost loop.\n"),
9206 OUT(
"jacobian_quantities",
"jacobian_agenda"),
9210 IN(
"jacobian_quantities",
9216 GIN(
"g1",
"g2",
"g3",
"species"),
9217 GIN_TYPE(
"Vector",
"Vector",
"Vector",
"String"),
9219 GIN_DESC(
"Pressure retrieval grid.",
9220 "Latitude retrieval grid.",
9221 "Longitude retreival grid.",
9222 "The species of the retrieval quantity."),
9229 NAME(
"jacobianAddSurfaceQuantity"),
9231 "Includes a surface quantity in the Jacobian.\n" 9233 "The quantity is specified by the GIN-variable *quantity*. The name\n" 9234 "of the quantity must match the name used in *surface_props_names*.\n" 9236 "For 1D or 2D calculations the latitude and/or longitude grid of\n" 9237 "the retrieval field should set to have zero length.\n" 9239 "The number of elements added to the state vector (*x*) is:\n" 9241 "where n_g1 and n_g2 are the length of GIN *g1* and *g2*, respectively.\n" 9242 "Here empty vectors should be considered to have a length 1.\n" 9243 "The elements are sorted with latitude as innermost loop and longitude\n" 9244 "as outermost loop.\n"),
9246 OUT(
"jacobian_quantities",
"jacobian_agenda"),
9250 IN(
"jacobian_quantities",
9255 GIN(
"g1",
"g2",
"quantity"),
9256 GIN_TYPE(
"Vector",
"Vector",
"String"),
9258 GIN_DESC(
"Latitude retrieval grid.",
9259 "Longitude retreival grid.",
9260 "Retrieval quantity, e.g. \"Wind speed\"."),
9267 NAME(
"jacobianAddTemperature"),
9269 "Includes atmospheric temperatures in the Jacobian.\n" 9271 "The calculations are performed by (semi-)analytical expressions.\n" 9272 "Hydrostatic equilibrium (HSE) can be included.\n" 9274 "The analytical calculation approach neglects so far refraction\n" 9275 "totally, but considers the local effect of HSE.\n" 9276 "The later should be accaptable for observations around zenith and\n" 9277 "nadir. There is no warning if the method is applied incorrectly, \n" 9278 "with respect to these issues. Note that the argument *hse* of this\n" 9279 "WSM only refers to the Jacobian calculation, if the model and/or\n" 9280 "retrieved atmosphere actually fulfils HSE or not is governed in\n" 9283 "The calculations (both options) assume that gas species are defined\n" 9284 "in VMR (a change in temperature then changes the number density). \n" 9285 "This has the consequence that retrieval of temperatures and number\n" 9286 "density can not be mixed. Neither any warning here!\n" 9288 "The number of elements added to the state vector (*x*) is:\n" 9289 " n_g1 * n_g2 * n_g3\n" 9290 "where n_g1, n_g2 and n_g3 are the length of GIN *g1*, *g2* and *g3*,\n" 9291 "respectively. Here empty vectors should be considered to have a length 1.\n" 9292 "The elements are sorted with pressure as innermost loop, followed by\n" 9293 "latitude and longitude as outermost loop.\n"),
9294 AUTHORS(
"Mattias Ekstrom",
"Patrick Eriksson"),
9295 OUT(
"jacobian_quantities",
"jacobian_agenda"),
9299 IN(
"jacobian_quantities",
9305 GIN(
"g1",
"g2",
"g3",
"hse"),
9306 GIN_TYPE(
"Vector",
"Vector",
"Vector",
"String"),
9308 GIN_DESC(
"Pressure retrieval grid.",
9309 "Latitude retrieval grid.",
9310 "Longitude retreival grid.",
9311 "Flag to assume HSE or not (\"on\" or \"off\").")));
9314 NAME(
"jacobianAddWind"),
9316 "Includes one atmospheric wind component in the Jacobian.\n" 9318 "The method follows the pattern of other Jacobian methods. The\n" 9319 "calculations can only be performed by analytic expressions.\n" 9320 "Some lower level function depends on frequency perturbations,\n" 9321 "however, so therefore a frequency perturbation df is required\n" 9322 "and as a consequence *abs_f_interp_order* must be > 0.\n" 9324 "The wind field components are retrieved separately, and,\n" 9325 "hence, the argument *component* can be \"u\", \"v\" or \"w\" \n" 9326 "for vector components, or just \"strength\" for total wind speed.\n" 9328 "The number of elements added to the state vector (*x*) is:\n" 9329 " n_g1 * n_g2 * n_g3\n" 9330 "where n_g1, n_g2 and n_g3 are the length of GIN *g1*, *g2* and *g3*,\n" 9331 "respectively. Here empty vectors should be considered to have a length 1.\n" 9332 "The elements are sorted with pressure as innermost loop, followed by\n" 9333 "latitude and longitude as outermost loop.\n"),
9335 OUT(
"jacobian_quantities",
"jacobian_agenda"),
9339 IN(
"jacobian_quantities",
9345 GIN(
"g1",
"g2",
"g3",
"component",
"dfrequency"),
9346 GIN_TYPE(
"Vector",
"Vector",
"Vector",
"String",
"Numeric"),
9348 GIN_DESC(
"Pressure retrieval grid.",
9349 "Latitude retrieval grid.",
9350 "Longitude retrieval grid.",
9351 "Wind component to retrieve",
9352 "This is the frequency perturbation")));
9355 NAME(
"jacobianAdjustAndTransform"),
9357 "Applies adjustments and transformations on *jacobian*.\n" 9359 "The method handles two tasks:\n" 9360 "1. The retrieval transformations set by the user can not be applied\n" 9361 "onthe Jacobian inside *yCalc*. Transformations are instead applied\n" 9362 "by calling this method.\n" 9363 "2. It applies required adjustments of the Jacoboan. So far there is\n" 9364 "only one possible adjustment. If any absorption species uses the \"rel\"\n" 9365 "unit, an adjustment is needed for later iterations of the inversion.\n" 9367 "If no tranformations are selected and the \"rel\" option is not used at\n" 9368 "all, there is no need to call this method(, but you can still include it\n" 9369 "without causing any error, the calculations will just be a bit slower).\n" 9370 "Otherwise, this method should be called, typically as part of\n" 9371 "*inversion_iterate_agenda*.\n" 9373 "The method accepts if *jacobian* is empty, and then does, nothing.\n"),
9379 IN(
"jacobian",
"jacobian_quantities",
"x"),
9386 NAME(
"jacobianCalcDoNothing"),
9388 "This function doesn't do anything. It just exists to satisfy\n" 9389 "the input and output requirement of the *jacobian_agenda*.\n" 9391 "This method is added to *jacobian_agenda* by *jacobianAddAbsSpecies*\n" 9392 "and some similar methods, and it should normally not be called by\n" 9399 IN(
"jacobian",
"mblock_index",
"iyb",
"yb"),
9406 NAME(
"jacobianCalcFreqShift"),
9408 "Calculates frequency shift jacobians by interpolation\n" 9411 "This function is added to *jacobian_agenda* by jacobianAddFreqShift\n" 9412 "and should normally not be called by the user.\n"),
9426 "jacobian_quantities"),
9433 NAME(
"jacobianCalcFreqStretch"),
9435 "Calculates frequency stretch jacobians by interpolation\n" 9438 "This function is added to *jacobian_agenda* by jacobianAddFreqStretch\n" 9439 "and should normally not be called by the user.\n"),
9453 "sensor_response_pol_grid",
9454 "sensor_response_f_grid",
9455 "sensor_response_dlos_grid",
9456 "jacobian_quantities"),
9463 NAME(
"jacobianCalcPointingZaInterp"),
9464 DESCRIPTION(
"Calculates zenith angle pointing deviation jacobians by\n" 9465 "inter-extrapolation of *iyb*.\n" 9467 "This function is added to *jacobian_agenda* by\n" 9468 "jacobianAddPointingZa and should normally not be\n" 9469 "called by the user.\n"),
9485 "jacobian_quantities"),
9492 NAME(
"jacobianCalcPointingZaRecalc"),
9493 DESCRIPTION(
"Calculates zenith angle pointing deviation jacobians by\n" 9494 "recalulation of *iyb*.\n" 9496 "This function is added to *jacobian_agenda* by\n" 9497 "jacobianAddPointingZa and should normally not be\n" 9498 "called by the user.\n"),
9499 AUTHORS(
"Mattias Ekstrom",
"Patrick Eriksson"),
9522 "jacobian_quantities"),
9529 NAME(
"jacobianCalcPolyfit"),
9531 "Calculates jacobians for polynomial baseline fit.\n" 9533 "This function is added to *jacobian_agenda* by jacobianAddPolyfit\n" 9534 "and should normally not be called by the user.\n"),
9545 "sensor_response_pol_grid",
9546 "sensor_response_f_grid",
9547 "sensor_response_dlos_grid",
9548 "jacobian_quantities"),
9552 GIN_DESC(
"Polynomial coefficient to handle."),
9556 NAME(
"jacobianCalcSinefit"),
9558 "Calculates jacobians for sinusoidal baseline fit.\n" 9560 "This function is added to *jacobian_agenda* by jacobianAddPolyfit\n" 9561 "and should normally not be called by the user.\n"),
9572 "sensor_response_pol_grid",
9573 "sensor_response_f_grid",
9574 "sensor_response_dlos_grid",
9575 "jacobian_quantities"),
9576 GIN(
"period_index"),
9579 GIN_DESC(
"Index among the period length specified for add-method."),
9583 NAME(
"jacobianClose"),
9585 "Closes the array of retrieval quantities and prepares for\n" 9586 "calculation of the Jacobian matrix.\n" 9588 "This function closes the *jacobian_quantities* array and sets\n" 9589 "*jacobian_do* to 1.\n" 9591 "Retrieval quantities should not be added after a call to this WSM.\n" 9592 "No calculations are performed here.\n"),
9594 OUT(
"jacobian_do",
"jacobian_agenda"),
9598 IN(
"jacobian_agenda",
"jacobian_quantities"),
9605 NAME(
"jacobianFromTwoY"),
9607 "Sets *jacobian* based on the difference vetween two measurement vectors.\n" 9609 "This function assumes that *y_pert* contains a measurement calculated\n" 9610 "with some variable perturbed, in comparison to the calculation\n" 9611 "behind *y*. The function takes the differences between *y_pert*\n" 9612 "and *y* to form a numerical derived estimate of *jacobian*.\n" 9613 "This gives a Jacobian wit a single column.\n" 9615 "*jacobian* equals here: (y_pert-y)/pert_size.\n"),
9622 GIN(
"y_pert",
"pert_size"),
9625 GIN_DESC(
"Perturbed measurement vector",
9626 "Size of perturbation behind spectra in *ybatch*.")));
9629 NAME(
"jacobianFromYbatch"),
9631 "Sets *jacobian* based on perturbation calcuations.\n" 9633 "This function assumes that *ybatch* contains spectra calculated\n" 9634 "with some variable perturbed, in comparison to the calculation\n" 9635 "behind *y*. The function takes the differences between *ybatch*\n" 9636 "and *y* to form a numerical derived estimate of *jacobian*.\n" 9638 "Column i of *jacobian* equals: (ybatch[i]-y)/pert_size.\n"),
9648 GIN_DESC(
"Size of perturbation behind spectra in *ybatch*.")));
9651 NAME(
"jacobianInit"),
9653 "Initialises the variables connected to the Jacobian matrix.\n" 9655 "This function initialises the *jacobian_quantities* array so\n" 9656 "that retrieval quantities can be added to it. Accordingly, it has\n" 9657 "to be called before any calls to jacobianAddTemperature or\n" 9658 "similar methods.\n" 9660 "The Jacobian quantities are initialised to be empty.\n"),
9662 OUT(
"jacobian_quantities",
"jacobian_agenda"),
9673 NAME(
"jacobianOff"),
9675 "Makes mandatory initialisation of some jacobian variables.\n" 9677 "Some clear-sky jacobian WSVs must be initialised even if no such\n" 9678 "calculations will be performed. This is handled with this method.\n" 9679 "That is, this method must be called when no clear-sky jacobians\n" 9680 "will be calculated (even if cloudy-sky jacobians are calculated!).\n" 9682 "Sets *jacobian_do* to 0.\n"),
9684 OUT(
"jacobian_do",
"jacobian_agenda",
"jacobian_quantities"),
9695 NAME(
"jacobianSetAffineTransformation"),
9697 "Adds an affine transformation of the last element of\n" 9698 "*jacobian_quantities*.\n" 9700 "See *jacobianSetFuncTransformation* for a general description of how\n" 9701 "retrieval transformations are defined. Transformations are not applied by\n" 9702 "methods such as*yCalc*. Instead, the method *jacobianAdjustAndTransform*\n" 9703 "must be called to activate the transformations.\n" 9705 "The affine transformation is specified by a transformation matrix, A,\n" 9706 "and an offset vector, b. These two are applied as described in\n" 9707 "*jacobianSetFuncTransformation*.\n" 9709 "The transformations is applied as\n" 9710 " x = A * ( z - b )\n" 9711 "where z is the retrieval quantity on the standard retrieval grids\n" 9712 "and x is the final state vector.\n" 9714 "So far, the following must be true for valid A-matrices\n" 9716 "That is, the reversed transformation is given by A transposed.\n" 9718 "This method must only be called if an affine transformation is wanted.\n" 9719 "Default is to make no such tranformation at all.\n"),
9720 AUTHORS(
"Simon Pfreundschuh"),
9721 OUT(
"jacobian_quantities"),
9725 IN(
"jacobian_quantities"),
9726 GIN(
"transformation_matrix",
"offset_vector"),
9729 GIN_DESC(
"The transformation matrix A",
"The offset vector b")));
9732 NAME(
"jacobianSetFuncTransformation"),
9734 "Sets the functional transformation of the last element of\n" 9735 "*jacobian_quantities*.\n" 9737 "See below for a general description of how retrieval transformations\n" 9738 "are defined. Transformations are not applied by methods such as*yCalc*.\n" 9739 "Instead, the method *jacobianAdjustAndTransform* must be called to\n" 9740 "activate the transformations.\n" 9742 "The following transformations can be selected (by *transformation_func*):\n" 9743 " log : The natural logarithm\n" 9744 " log10 : The base-10 logarithm\n" 9745 " atanh : Area hyperbolic tangent \n" 9746 " none : No transformation at all\n" 9748 "This method needs only to be called if a functional transformation\n" 9749 "is wanted. Default is to make no such tranformation at all (i.e.\n" 9750 "the option \"none\" exists only for reasons of flexibility).\n" 9752 "The log-options are applied as log(z-z_min) and log10(z-z_min).\n" 9753 "The default for *z_min* is zero, but by changing it the lower limit\n" 9754 "for z can be changed. Note that *z_min* becomes the lower limit for\n" 9755 "allowed values of z. The GIN *z_max* is here ignored.\n" 9757 "For the atanh-option, also *z_max* is considered. This transformation\n" 9758 "is applied as atanh((2(z-z_min)/(z_max-z_min))-1). As above,*z_min*\n" 9759 "is lower limit for allowed values of z. On the other hand, *z_max*\n" 9760 "eines the upper limit for z.\n" 9762 "The GIN *transformation_func* is so far only used for atanh. The parameter\n" 9763 "specifies the maximum allowed value allowed for u. That is, the valid\n" 9764 "range for u becomes ]0,tfunc_parameter[. Note that log and log10\n" 9765 "demands/ensures that u > 0, but implies no upper limit.\n" 9767 "General handling of retrieval units and transformations:\n" 9769 "Default is that quantities are retrieved as defined in ARTS, but\n" 9770 "both some unit conversion and transformations are provided. These\n" 9771 "operations are applied as:\n" 9772 " x = A * ( f(u(z)) - b ) \n" 9774 " z is the quantity as defined ARTS\n" 9775 " u represents the change of unit\n" 9776 " f is the transformation function\n" 9777 " A and b define together an affine transformation\n" 9778 " x is the retrieved quantity\n" 9779 "For example, this systen allows to retrive a principal component\n" 9780 "representation (A and b) of the log (f) of relative humidity (u).\n" 9782 "Change of unit is selected by the quantity specific jacobian-add\n" 9783 "methods (so far only at hand for gas species). \n" 9785 "Activating a transformation function is done by this method. Note\n" 9786 "that the functions are defined as the transformation from z to x.\n" 9787 "For more details on affine transformations, see\n" 9788 "*jacobianSetAffineTransformation*.\n"),
9789 AUTHORS(
"Patrick Eriksson",
"Simon Pfreundschuh"),
9790 OUT(
"jacobian_quantities"),
9794 IN(
"jacobian_quantities"),
9795 GIN(
"transformation_func",
"z_min",
"z_max"),
9796 GIN_TYPE(
"String",
"Numeric",
"Numeric"),
9798 GIN_DESC(
"The transformation function.",
9799 "Lower limit of z.",
9800 "Upper limit of z.")));
9803 NAME(
"lat_gridFromRawField"),
9805 "Sets *lat_grid* according to given raw atmospheric field's lat_grid.\n" 9806 "Similar to *p_gridFromZRaw*, but acting on a generic *GriddedField3*\n" 9807 "(e.g., a wind or magnetic field component).\n"),
9817 GIN_DESC(
"A raw atmospheric field.")));
9820 NAME(
"lbl_checkedCalc"),
9821 DESCRIPTION(
"Checks that the line-by-line parameters are OK.\n" 9823 "On failure, will throw. On success, lbl_checked evals as true\n" 9825 "Note that checks may become more stringent as ARTS evolves, especially for\n" 9826 "\"new\" options. This test might succeed in one version of ARTS but fail\n" 9827 "in later versions\n"),
9833 IN(
"abs_lines_per_species",
"abs_species",
"isotopologue_ratios",
"partition_functions"),
9840 NAME(
"LocalTimeOffset"),
9841 DESCRIPTION(
"Sets the seconds between localtime and gmtime representation of now().\n"),
9846 GOUT_DESC(
"Time in seconds between local and gmt"),
9854 NAME(
"lon_gridFromRawField"),
9856 "Sets *lon_grid* according to given raw atmospheric field's lat_grid.\n" 9857 "Similar to *p_gridFromZRaw*, but acting on a generic *GriddedField3*\n" 9858 "(e.g., a wind or magnetic field component).\n"),
9868 GIN_DESC(
"A raw atmospheric field.")));
9871 NAME(
"MagFieldsCalc"),
9873 "Interpolation of raw magnetic fields to calculation grids.\n" 9874 "Heritage from *AtmFieldsCalc*\n" 9876 "Internally, *MagFieldsCalc* applies *GriddedFieldPRegrid* and\n" 9877 "*GriddedFieldLatLonRegrid*. Generally, 'half-grid-step' extrapolation\n" 9878 "is allowed and applied.\n"),
9880 OUT(
"mag_u_field",
"mag_v_field",
"mag_w_field"),
9891 GIN(
"interp_order"),
9894 GIN_DESC(
"Interpolation order (1=linear interpolation).")));
9897 NAME(
"MagFieldsCalcExpand1D"),
9899 "Interpolation of 1D raw atmospheric fields to create 2D or 3D\n" 9900 "homogeneous magnetic fields. Derived from *AtmFieldsCalcExpand1D*\n" 9902 "The method works as *MagFieldsCalc*, but accepts only raw 1D\n" 9903 "magnetic fields. The raw data is interpolated to *p_grid* and\n" 9904 "the obtained values are applied for all latitudes, and also\n" 9905 "longitudes for 3D, to create a homogeneous atmosphere.\n"),
9907 OUT(
"mag_u_field",
"mag_v_field",
"mag_w_field"),
9918 GIN(
"interp_order"),
9921 GIN_DESC(
"Interpolation order (1=linear interpolation).")));
9924 NAME(
"MagFieldsFromAltitudeRawCalc"),
9926 "Regrids the rawfield by lat-lon and interpolates to z_field.\n"),
9928 OUT(
"mag_u_field",
"mag_v_field",
"mag_w_field"),
9938 GIN(
"interp_order",
"extrapolating"),
9941 GIN_DESC(
"Interpolation order (1=linear interpolation).",
9942 "Extrapolation allowed in interpolation of altitude.")));
9947 "Reads magnetic field data from a scenario.\n" 9949 "A full set of field components is read (NOTE: fails if scenario\n" 9950 "only contains selected field components). The files can be\n" 9951 "anywhere, but must all be in the same directory specified by\n" 9952 "'basename'. Naming convention for the field component files is\n" 9953 "basename.mag_u.xml for the u-component, v- and w-components\n" 9956 OUT(
"mag_u_field_raw",
"mag_v_field_raw",
"mag_w_field_raw"),
9964 GIN_DESC(
"Name of scenario, probably including the full path. For " 9965 "example: \"/data/magnetic_field\"")));
9968 NAME(
"MatrixAddScalar"),
9970 "Adds a scalar to all elements of a matrix.\n" 9972 "The result can either be stored in the same or another matrix.\n"),
9982 GIN_DESC(
"Input matrix.",
"The value to be added to the matrix.")));
9987 "Sets a matrix to hold cosmic background radiation (CBR).\n" 9989 "The CBR is assumed to be un-polarized and Stokes components 2-4\n" 9990 "are zero. Number of Stokes components, that equals the number\n" 9991 "of columns in the created matrix, is determined by *stokes_dim*.\n" 9992 "The number of rows in the created matrix equals the length of the\n" 9993 "given frequency vector.\n" 9995 "The cosmic radiation is modelled as blackbody radiation for the\n" 9996 "temperature given by the global constant COSMIC_BG_TEMP, set in\n" 9997 "the file constants.cc. The frequencies are taken from the generic\n" 10000 "The standard definition, in ARTS, of the Planck function is\n" 10001 "followed and the unit of the returned data is W/(m3 * Hz * sr).\n"),
10014 NAME(
"MatrixCopySparse"),
10015 DESCRIPTION(
"Creates a matrix by copying a variable of type Sparse.\n"),
10025 GIN_DESC(
"The sparse matrix to be copied.")));
10028 NAME(
"MatrixExtractFromTensor3"),
10030 "Extracts a Matrix from a Tensor3.\n" 10032 "Copies page or row or column with given Index from input Tensor3\n" 10033 "variable to output Matrix.\n" 10034 "Higher order equivalent of *VectorExtractFromMatrix*.\n"),
10041 GIN(
"in",
"i",
"direction"),
10042 GIN_TYPE(
"Tensor3",
"Index",
"String"),
10045 "Index of page or row or column to extract.",
10046 "Direction. \"page\" or \"row\" or \"column\".")));
10050 DESCRIPTION(
"Turns a covariance matrix into a Matrix.\n"),
10060 GIN_DESC(
"Input covariance matrix.")));
10063 NAME(
"MatrixIdentity"),
10065 "Returns an identity matrix.\n" 10067 "The size if the matrix created is n x n. Default is to return a\n" 10068 "true identity matrix (I), but you can also select another value\n" 10069 "along the diagonal by setting *value*. That is, the output is\n" 10080 GIN_DESC(
"Size of the matrix",
"The value along the diagonal.")));
10083 NAME(
"MatrixMatrixMultiply"),
10085 "Multiply a Matrix with another Matrix and store the result in the result\n" 10088 "This just computes the normal Matrix-Matrix product, Y=M*X. It is ok\n" 10089 "if Y and X are the same Matrix.\n"),
10094 GOUT_DESC(
"The result of the multiplication (dimension mxc)."),
10099 GIN_DESC(
"The Matrix to multiply (dimension mxn).",
10100 "The original Matrix (dimension nxc).")));
10103 NAME(
"MatrixPlanck"),
10105 "Sets a matrix to hold blackbody radiation.\n" 10107 "The radiation is assumed to be un-polarized and Stokes components\n" 10108 "2-4 are zero. Number of Stokes components, that equals the number\n" 10109 "of columns in the created matrix, is determined by *stokes_dim*.\n" 10110 "The number of rows in the created matrix equals the length of the\n" 10111 "given frequency vector.\n" 10113 "The standard definition, in ARTS, of the Planck function is\n" 10114 "followed and the unit of the returned data is W/(m3 * Hz * sr).\n"),
10124 GIN_DESC(
"Frequency vector.",
"Temperature [K].")));
10127 NAME(
"MatrixScale"),
10128 DESCRIPTION(
"Scales all elements of a matrix with the specified value.\n" 10130 "The result can either be stored in the same or another\n" 10138 GIN(
"in",
"value"),
10142 "The value to be multiplied with the matrix.")));
10146 DESCRIPTION(
"Initialize a Matrix from the given list of numbers.\n" 10149 " MatrixSet(m1, [1, 2, 3; 4, 5, 6])\n"),
10159 GIN_DESC(
"The values of the newly created matrix. Elements are separated " 10160 "by commas, rows by semicolons."),
10164 NAME(
"MatrixSetConstant"),
10166 "Creates a matrix and sets all elements to the specified value.\n" 10168 "The size is determined by *ncols* and *nrows*.\n"),
10174 IN(
"nrows",
"ncols"),
10181 NAME(
"MatrixUnitIntensity"),
10183 "Sets a matrix to hold unpolarised radiation with unit intensity.\n" 10185 "Works as MatrixPlanck where the radiation is set to 1.\n"),
10198 NAME(
"MatrixVectorMultiply"),
10200 "Multiply a Matrix with a Vector\n" 10202 "Computes the normal Matrix-Vector product, out=m*v. It is ok if out and v\n" 10203 "are the same Vector.\n"),
10204 AUTHORS(
"Stefan Buehler and Patrick Eriksson"),
10208 GOUT_DESC(
"The result of the multiplication (length m)."),
10213 GIN_DESC(
"The Matrix to multiply (dimension mxn).",
10214 "The original Vector (length n).")));
10217 NAME(
"Matrix1ColFromVector"),
10218 DESCRIPTION(
"Forms a matrix containing one column from a vector.\n"),
10228 GIN_DESC(
"The vector to be copied.")));
10231 NAME(
"Matrix2ColFromVectors"),
10233 "Forms a matrix containing two columns from two vectors.\n" 10235 "The vectors are included as columns in the matrix in the same order\n" 10236 "as they are given.\n"),
10246 GIN_DESC(
"The vector to be copied into the first column.",
10247 "The vector to be copied into the second column.")));
10250 NAME(
"Matrix3ColFromVectors"),
10252 "Forms a matrix containing three columns from three vectors.\n" 10254 "The vectors are included as columns in the matrix in the same order\n" 10255 "as they are given.\n"),
10262 GIN(
"v1",
"v2",
"v3"),
10263 GIN_TYPE(
"Vector",
"Vector",
"Vector"),
10265 GIN_DESC(
"The vector to be copied into the first column.",
10266 "The vector to be copied into the second column.",
10267 "The vector to be copied into the third column.")));
10270 NAME(
"Matrix1RowFromVector"),
10271 DESCRIPTION(
"Forms a matrix containing one row from a vector.\n"),
10281 GIN_DESC(
"The vector to be copied.")));
10284 NAME(
"Matrix2RowFromVectors"),
10286 "Forms a matrix containing two rows from two vectors.\n" 10288 "The vectors are included as rows in the matrix in the same order\n" 10289 "as they are given.\n"),
10299 GIN_DESC(
"The vector to be copied into the first row.",
10300 "The vector to be copied into the second row.")));
10303 NAME(
"Matrix3RowFromVectors"),
10305 "Forms a matrix containing three rows from three vectors.\n" 10307 "The vectors are included as rows in the matrix in the same order\n" 10308 "as they are given.\n"),
10315 GIN(
"v1",
"v2",
"v3"),
10316 GIN_TYPE(
"Vector",
"Vector",
"Vector"),
10318 GIN_DESC(
"The vector to be copied into the first row.",
10319 "The vector to be copied into the second row.",
10320 "The vector to be copied into the third row.")));
10323 NAME(
"mblock_dlos_gridUniformCircular"),
10325 "Gives *mblock_dlos_grid* roughly circular coverage, with uniform spacing.\n" 10327 "The method considers points on a regular grid with a spacing set by\n" 10328 "GIN *spacing*. All points inside a radius from (0,0) are included in\n" 10329 "*mblock_dlos_grid*. The positions in *mblock_dlos_grid* thus covers\n" 10330 "a roughly circular domain, and cover the same solid beam angle.\n" 10331 "The radius is adjusted according to *spacing' and *centre*, but is\n" 10332 "ensured to be >= *width*.\n" 10334 "Note that the method assumes that width is small and the solid beam\n" 10335 "angle does not change with distance from (0.0).\n" 10337 "Defualt is to consider grid positions of ..., -spacing/2, spacing/2, ...\n" 10338 "If you want to have (0,0) as a point in *mblock_dlos_grid*, change\n" 10339 "*centre* from its default value.\n"),
10341 OUT(
"mblock_dlos_grid"),
10346 GIN(
"spacing",
"width",
"centre"),
10347 GIN_TYPE(
"Numeric",
"Numeric",
"Index"),
10349 GIN_DESC(
"The angular spacing between points.",
10350 "The minimum distance from (0,0) to cover.",
10351 "Set to 1 to place a point at (0,0).")));
10354 NAME(
"mblock_dlos_gridUniformRectangular"),
10356 "Gives *mblock_dlos_grid* rectangular coverage, with uniform spacing.\n" 10358 "The method creates an equidistant rectangular grid. The width in zenith\n" 10359 "and azimuth can differ. Note that selected widths are half-widths (i.e.\n" 10360 "distance from (0,0), and refers to the mimumum value allowed. The actual\n" 10361 "width depends on values selected for *spacing* and *centre*.\n" 10363 "Defualt is to consider grid positions of ..., -spacing/2, spacing/2, ...\n" 10364 "If you want to have (0,0) as a point in *mblock_dlos_grid*, change\n" 10365 "*centre* from its default value.\n"),
10367 OUT(
"mblock_dlos_grid"),
10372 GIN(
"spacing",
"za_width",
"aa_width",
"centre"),
10373 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric",
"Index"),
10375 GIN_DESC(
"The angular spacing between points.",
10376 "Min value of half-width in zenith angle direction.",
10377 "Min value of half-width in azimuth angle direction.",
10378 "Set to 1 to place a point at (0,0).")));
10381 NAME(
"mc_antennaSetGaussian"),
10383 "Makes mc_antenna (used by MCGeneral) a 2D Gaussian pattern.\n" 10385 "The gaussian antenna pattern is determined by *za_sigma* and\n" 10386 "*aa_sigma*, which represent the standard deviations in the\n" 10387 "uncorrelated bivariate normal distribution.\n"),
10394 GIN(
"za_sigma",
"aa_sigma"),
10397 GIN_DESC(
"Width in the zenith angle dimension as described above.",
10398 "Width in the azimuth angle dimension as described above.")));
10401 NAME(
"mc_antennaSetGaussianByFWHM"),
10403 "Makes mc_antenna (used by MCGeneral) a 2D Gaussian pattern.\n" 10405 "The gaussian antenna pattern is determined by *za_fwhm* and\n" 10406 "*aa_fwhm*, which represent the full width half maximum (FWHM)\n" 10407 "of the antenna response, in the zenith and azimuthal planes.\n"),
10414 GIN(
"za_fwhm",
"aa_fwhm"),
10417 GIN_DESC(
"Width in the zenith angle dimension as described above.",
10418 "Width in the azimuth angle dimension as described above.")));
10421 NAME(
"mc_antennaSetPencilBeam"),
10423 "Makes mc_antenna (used by MCGeneral) a pencil beam.\n" 10425 "This WSM makes the subsequent MCGeneral WSM perform pencil beam\n" 10426 "RT calculations.\n"),
10441 "A generalised 3D reversed Monte Carlo radiative algorithm, that\n" 10442 "allows for 2D antenna patterns, surface reflection and arbitrary\n" 10443 "sensor positions.\n" 10445 "The main output variables *y* and *mc_error* represent the\n" 10446 "Stokes vector integrated over the antenna function, and the\n" 10447 "estimated error in this vector, respectively.\n" 10449 "The WSV *mc_max_iter* describes the maximum number of `photons\'\n" 10450 "used in the simulation (more photons means smaller *mc_error*).\n" 10451 "*mc_std_err* is the desired value of mc_error. *mc_max_time* is\n" 10452 "the maximum allowed number of seconds for MCGeneral. The method\n" 10453 "will terminate once any of the max_iter, std_err, max_time\n" 10454 "criteria are met. If negative values are given for these\n" 10455 "parameters then it is ignored.\n" 10457 "The WSV *mc_min_iter* sets the minimum number of photons to apply\n" 10458 "before the condition set by *mc_std_err* is considered. Values\n" 10459 "of *mc_min_iter* below 100 are not accepted.\n" 10461 "Only \"1\" and \"RJBT\" are allowed for *iy_unit*. The value of\n" 10462 "*mc_error* follows the selection for *iy_unit* (both for in- and\n" 10466 "mc_iteration_count",
10469 "mc_source_domain",
10481 "ppath_step_agenda",
10485 "surface_rtprop_agenda",
10486 "propmat_clearsky_agenda",
10499 "atmfields_checked",
10501 "scat_data_checked",
10502 "cloudbox_checked",
10509 "mc_taustep_limit"),
10510 GIN(
"l_mc_scat_order",
"t_interp_order"),
10513 GIN_DESC(
"The length to be given to *mc_scat_order*. Note that" 10514 " scattering orders equal and above this value will not" 10516 "Interpolation order of temperature for scattering data (so" 10517 " far only applied in phase matrix, not in extinction and" 10523 "A radar 3D foward Monte Carlo radiative algorithm, that allows \n" 10524 "for 2D antenna patterns and arbitrary sensor positions.\n" 10525 "Surface reflections are currently ignored.\n" 10527 "The main output variable *y* and *mc_error* represent the\n" 10528 "radar reflectivity integrated over the antenna function, and the\n" 10529 "estimated error in this vector, respectively.\n" 10531 "Unlike with yActive, the range bins gives the boundaries of \n" 10532 "the range bins as either round-trip time or distance from radar.\n" 10534 "The WSV *mc_y_tx* gives the polarization state of the \n" 10537 "The WSV *mc_max_scatorder* prescribes the maximum scattering \n" 10538 "order to consider, after which `photon\'-tracing will be\n" 10539 "terminated. A value of one calculates only single scattering.\n" 10541 "The WSV *mc_max_iter* describes the maximum number of `photons\'\n" 10542 "used in the simulation (more photons means smaller *mc_error*).\n" 10543 "The method will terminate once the max_iter criterium is met.\n" 10544 "If negative values are given for these parameters then it is\n" 10547 "Only \"1\" and \"Ze\" are allowed for *iy_unit*. The value of\n" 10548 "*mc_error* follows the selection for *iy_unit* (both for in- and\n" 10551 OUT(
"y",
"mc_error"),
10563 "ppath_step_agenda",
10565 "propmat_clearsky_agenda",
10580 "atmfields_checked",
10582 "scat_data_checked",
10583 "cloudbox_checked",
10585 "mc_max_scatorder",
10588 GIN(
"ze_tref",
"k2",
"t_interp_order"),
10589 GIN_TYPE(
"Numeric",
"Numeric",
"Index"),
10591 GIN_DESC(
"Reference temperature for conversion to Ze.",
10592 "Reference dielectric factor.",
10593 "Interpolation order of temperature for scattering data (so" 10594 " far only applied in phase matrix, not in extinction and" 10599 DESCRIPTION(
"Sets the value of mc_seed from system time\n"),
10612 NAME(
"nlte_fieldRescalePopulationLevels"),
10614 "Rescale NLTE field to expected total distribution amongst levels\n"),
10624 GIN_DESC(
"Scaling (e.g., 0.75 for only orth-water on Earth)")));
10627 NAME(
"nlte_fieldForSingleSpeciesNonOverlappingLines"),
10629 "NLTE field for a simple setup.\n" 10631 "This will solve for *nlte_field* in the input atmosphere.\n" 10632 "The solver depends on the lines not overlapping and that there\n" 10633 "is only a single species in the atmosphere.\n"),
10641 "abs_lines_per_species",
10642 "collision_coefficients",
10643 "collision_line_identifiers",
10644 "isotopologue_ratios",
10648 "iy_surface_agenda",
10649 "iy_cloudbox_agenda",
10650 "propmat_clearsky_agenda",
10651 "water_p_eq_agenda",
10658 "surface_props_data",
10660 GIN(
"df",
"convergence_limit",
"nz",
"nf",
"dampened",
"iteration_limit"),
10661 GIN_TYPE(
"Numeric",
"Numeric",
"Index",
"Index",
"Index",
"Index"),
10663 GIN_DESC(
"relative frequency to line center",
10664 "max relative change in ratio of level to stop iterations",
10665 "number of zenith angles",
10666 "number of frequency grid-points per line",
10667 "use transmission dampening or not",
10668 "max number of iterations before defaul break of iterations")));
10671 NAME(
"collision_coefficientsFromSplitFiles"),
10673 "Reads *collision_coefficients* and *collision_line_identifiers* from location on filesystem\n" 10674 "with many species. The species in this location must match *abs_species*. The location\n" 10675 "must also contain an ArrayOfQuantumIdentifier file ending with qid.xml\n"),
10677 OUT(
"collision_coefficients",
"collision_line_identifiers"),
10685 GIN_DESC(
"path to files to read")));
10688 NAME(
"NumericAdd"),
10690 "Adds a numeric and a value (out = in+value).\n" 10692 "The result can either be stored in the same or another numeric.\n" 10693 "(in and out can be the same varible, but not out and value)\n"),
10700 GIN(
"in",
"value"),
10703 GIN_DESC(
"Input numeric.",
"Value to add.")));
10706 NAME(
"NumericFromVector"),
10708 "Derivs a numeric from a vector, following selected operation.\n" 10710 "The following operations can be selected:\n" 10711 " first : Selects the first element of the vector.\n" 10712 " last : Selects the last element of the vector.\n" 10713 " max : Selects the maximum element of the vector.\n" 10714 " min : Selects the minimum element of the vector.\n" 10715 " mean : Calculates the mean of the vector.\n"),
10725 GIN_DESC(
"Input vector.",
"Selected operation.")));
10728 NAME(
"NumericInvScale"),
10730 "Inversely scales/divides a numeric with a value (out = in/value).\n" 10732 "The result can either be stored in the same or another numeric.\n" 10733 "(in and out can be the same varible, but not out and value)\n"),
10740 GIN(
"in",
"value"),
10743 GIN_DESC(
"Input numeric.",
"Scaling value.")));
10746 NAME(
"NumericScale"),
10748 "Scales/multiplies a numeric with a value (out = in*value).\n" 10750 "The result can either be stored in the same or another numeric.\n" 10751 "(in and out can be the same varible, but not out and value)\n"),
10758 GIN(
"in",
"value"),
10761 GIN_DESC(
"Input numeric.",
"Scaling value.")));
10764 NAME(
"NumericSet"),
10765 DESCRIPTION(
"Sets a numeric workspace variable to the given value.\n"),
10779 NAME(
"QuantumIdentifierSet"),
10781 "Sets a QuantumIdentifier workspace variable to the given value\n" 10782 "by converting the input String\n"),
10789 GIN(
"string_initializer"),
10792 GIN_DESC(
"The string representing the value."),
10796 NAME(
"ArrayOfQuantumIdentifierSet"),
10798 "Sets an ArrayOfQuantumIdentifier workspace variable to the given value\n" 10799 "by converting the input ArrayOfString\n"),
10806 GIN(
"string_initializers"),
10809 GIN_DESC(
"The array of string representing the values of the array."),
10815 "Retrieve nelem from given variable and store the value in the\n" 10816 "variable *nelem*.\n"),
10824 GIN_TYPE(ARRAY_GROUPS +
", Vector"),
10826 GIN_DESC(
"Variable to get the number of elements from."),
10834 "Retrieve ncols from given variable and store the value in the\n" 10835 "workspace variable *ncols*\n"),
10843 GIN_TYPE(
"Matrix, Sparse, Tensor3, Tensor4, Tensor5, Tensor6, Tensor7"),
10845 GIN_DESC(
"Variable to get the number of columns from."),
10853 "Retrieve nrows from given variable and store the value in the\n" 10854 "workspace variable *nrows*\n"),
10862 GIN_TYPE(
"Matrix, Sparse, Tensor3, Tensor4, Tensor5, Tensor6, Tensor7"),
10864 GIN_DESC(
"Variable to get the number of rows from."),
10872 "Retrieve npages from given variable and store the value in the\n" 10873 "workspace variable *npages*\n"),
10881 GIN_TYPE(
"Tensor3, Tensor4, Tensor5, Tensor6, Tensor7"),
10883 GIN_DESC(
"Variable to get the number of pages from."),
10891 "Retrieve nbooks from given variable and store the value in the\n" 10892 "workspace variable *nbooks*\n"),
10900 GIN_TYPE(
"Tensor4, Tensor5, Tensor6, Tensor7"),
10902 GIN_DESC(
"Variable to get the number of books from."),
10908 NAME(
"nshelvesGet"),
10910 "Retrieve nshelves from given variable and store the value in the\n" 10911 "workspace variable *nshelves*\n"),
10919 GIN_TYPE(
"Tensor5, Tensor6, Tensor7"),
10921 GIN_DESC(
"Variable to get the number of shelves from."),
10927 NAME(
"nvitrinesGet"),
10929 "Retrieve nvitrines from given variable and store the value in the\n" 10930 "workspace variable *nvitrines*\n"),
10940 GIN_DESC(
"Variable to get the number of vitrines from."),
10946 NAME(
"nlibrariesGet"),
10948 "Retrieve nlibraries from given variable and store the value in the\n" 10949 "workspace variable *nlibraries*\n"),
10959 GIN_DESC(
"Variable to get the number of libraries from."),
10965 NAME(
"nlte_sourceFromTemperatureAndSrcCoefPerSpecies"),
10967 "Turn NLTE absorption per species into the source function by multiplying\n" 10968 "NLTE absorption per species with the LTE Planck source function.\n"),
10970 OUT(
"nlte_source",
"dnlte_dx_source",
"nlte_dsource_dx"),
10974 IN(
"src_coef_per_species",
10976 "jacobian_quantities",
10978 "rtp_temperature"),
10988 "The variables are set as follows:\n" 10989 " nlte_field : Empty.\n" 10990 " nlte_level_identifiers : Empty.\n"),
10992 OUT(
"nlte_do",
"nlte_field",
"nlte_level_identifiers"),
11003 NAME(
"nlteSetByQuantumIdentifiers"),
11005 "Turns on NTLE calculations.\n" 11007 "Takes the quantum identifers for NLTE temperatures and matches it to\n" 11008 "lines in *abs_lines_per_species*. *abs_species* must be set and is used\n" 11009 "to speed up calculations. After the function is done, all affected\n" 11010 "lines in *abs_lines_per_species* will have an internal tag to the relevant\n" 11011 "quantum identifier, which is a requirement for deeper code.\n" 11013 "If vibrational_energies is input it must match *nlte_level_identifiers*\n" 11014 "in length. The vibrational energies of the affected lines will then be\n" 11015 "set by the function. Otherwise, it is assumed the vibrational energies\n" 11016 "are set by another method. If they are not set, calculations will complain\n" 11017 "later on while running deeper code.\n" 11019 "For now only vibrational energy states are assumed to be able to be in\n" 11020 "non-LTE conditions. The *QuantumIdentifier* for an energy state in ARTS\n" 11022 "\t\"CO2-626 EN v1 0/1 v2 1/1 l2 1/1 v3 0/1 r 1/1\"\n" 11023 "and the matching will match ALL lines with the above. Note then that if, e.g.,\n" 11024 "the \"v1 0/1\" term was removed from the above, then ARTS will assume that\n" 11025 "\"v1\" is not part of the level of energy state of interest, so lines\n" 11026 "of different \"v1\" will be matched as the same state. If a line is matched\n" 11027 "to more than one energy state, errors should be thrown, but be careful.\n" 11029 "Set type of population to change computations and expected input as:\n" 11030 "\tLTE: Compute population by ratios found from LTE temperatures\n" 11031 "\tTV: Compute population by ratios found from NLTE vibrational temperatures\n" 11032 "\tND: Compute population by ratios found from NLTE number densities\n"),
11034 OUT(
"nlte_do",
"abs_lines_per_species"),
11038 IN(
"abs_lines_per_species",
"nlte_field"),
11045 NAME(
"nlte_fieldFromRaw"),
11054 IN(
"nlte_level_identifiers",
11055 "nlte_vibrational_energies"),
11059 GIN_DESC(
"Vibrational data [nlevels, np, nlat, nlon]")));
11062 NAME(
"nlte_fieldSetLteExternalPartitionFunction"),
11065 "Sets NLTE ratios to those expected for LTE calculations\n" 11066 "with a known partition function\n"),
11068 OUT(
"nlte_do",
"nlte_field",
"abs_lines_per_species"),
11072 IN(
"abs_lines_per_species",
11073 "nlte_level_identifiers",
11074 "partition_functions",
11082 NAME(
"ArrayOfQuantumIdentifierFromLines"),
11084 "Sets an ArrayOfQuantumIdentifier to all levels in *abs_lines_per_species*\n" 11085 "with defined quantum numbers\n" 11087 "Lines without defined quantum numbers are ignored\n"),
11092 GOUT_DESC(
"Identifiers to all levels in *abs_lines_per_species*"),
11093 IN(
"abs_lines_per_species"),
11097 GIN_DESC(
"Only look at global quantum numbers")));
11100 NAME(
"nlte_fieldSetLteInternalPartitionFunction"),
11102 "Turns on NTLE calculations.\n" 11104 "Sets NLTE ratios to those expected for LTE calculations\n" 11105 "with estimation of the partition function as the sum of all\n" 11106 "states of a species\n"),
11108 OUT(
"nlte_do",
"nlte_field",
"abs_lines_per_species"),
11112 IN(
"abs_lines_per_species",
"nlte_level_identifiers",
"t_field"),
11120 DESCRIPTION(
"Sets time to system_clock::now().\n"),
11133 NAME(
"timeOffset"),
11149 "Inversion by the so called optimal estimation method (OEM).\n" 11151 "Work in progress ...\n" 11153 "The cost function to minimise, including a normalisation with length" 11155 " cost = cost_y + cost_x\n" 11157 " cost_y = 1/m * [y-yf]' * covmat_se_inv * [y-yf]\n" 11158 " cost_x = 1/m * [x-xa]' * covmat_sx_inv * [x-xa]\n" 11160 " The current implementation provides 3 methods for the minimization of\n" 11161 "the cost functional: Linear, Gauss-Newton and Levenberg-Marquardt.\n" 11162 "The Gauss-Newton minimizer attempts to find a minimum solution by \n" 11163 "fitting a quadratic function to the cost functional. The linear minimizer\n" 11164 "is a special case of the Gauss-Newton method, since for a linear forward\n" 11165 "model the exact solution of the minimization problem is obtained after\n" 11166 "the first step. The Levenberg-Marquardt method adaptively constrains the\n" 11167 "search region for the next iteration step by means of the so-called gamma-factor.\n" 11168 "This makes the method more suitable for strongly non-linear problems.\n" 11169 "If the gamma-factor is 0, Levenberg-Marquardt and Gauss-Newton method\n" 11170 "are identical. Each minimization method (li,gn,lm) has an indirect\n" 11171 "variant (li_cg,gn_cg,lm_cg), which uses the conjugate gradient solver\n" 11172 "for the linear system that has to be solved in each minimzation step.\n" 11173 "This of advantage for very large problems, that would otherwise require\n" 11174 "the computation of expensive matrix products.\n" 11176 "Description of the special input arguments:\n" 11179 " \"li\": A linear problem is assumed and a single iteration is performed.\n" 11180 " \"li_cg\": A linear problem is assumed and solved using the CG solver.\n" 11181 " \"gn\": Non-linear, with Gauss-Newton iteration scheme.\n" 11182 " \"gn_cg\": Non-linear, with Gauss-Newton and conjugate gradient solver.\n" 11183 " \"lm\": Non-linear, with Levenberg-Marquardt (LM) iteration scheme.\n" 11184 " \"lm_cg\": Non-linear, with Levenberg-Marquardt (LM) iteration scheme and conjugate gradient solver.\n" 11185 "*max_start_cost*\n" 11186 " No inversion is done if the cost matching the a priori state is above\n" 11187 " this value. If set to a negative value, all values are accepted.\n" 11188 " This argument also controls if the start cost is calculated. If\n" 11189 " set to <= 0, the start cost in *oem_diagnostics* is set to NaN\n" 11190 " when using \"li\" and \"gn\".\n" 11192 " A normalisation vector for *x*. A normalisation of *x* can be needed\n" 11193 " due to limited numerical precision. If this vector is set to be empty\n" 11194 " no normalisation is done (defualt case). Otherwise, this must be a\n" 11195 " vector with same length as *x*, just having values above zero.\n" 11196 " Elementwise division between *x* and *x_norm* (x./x_norm) shall give\n" 11197 " a vector where all values are in the order of unity. Maybe the best\n" 11198 " way to set *x_norm* is x_norm = sqrt( diag( Sx ) ).\n" 11200 " Maximum number of iterations to perform. No effect for \"li\".\n" 11202 " Iteration stop criterion. The criterion used is the same as given\n" 11203 " in Rodgers\' \"Inverse Methods for Atmospheric Sounding\"\n" 11204 "*lm_ga_settings*\n" 11205 " Settings controlling the gamma factor, part of the \"LM\" method.\n" 11206 " This is a vector of length 6, having the elements (0-based index):\n" 11207 " 0: Start value.\n" 11208 " 1: Fractional decrease after succesfull iteration.\n" 11209 " 2: Fractional increase after unsuccessful iteration.\n" 11210 " 3: Maximum allowed value. If the value is passed, the inversion\n" 11212 " 4: Lower treshold. If the threshold is passed, gamma is set to zero.\n" 11213 " If gamma must be increased from zero, gamma is set to this value.\n" 11214 " 5: Gamma limit. This is an additional stop criterion. Convergence\n" 11215 " is not considered until there has been one succesful iteration\n" 11216 " having a gamma <= this value.\n" 11217 " The default setting triggers an error if \"lm\" is selected.\n" 11218 "*clear matrices*\n" 11219 " With this flag set to 1, *jacobian* and *dxdy* are returned as empty\n" 11221 "*display_progress*\n" 11222 " Controls if there is any screen output. The overall report level\n" 11223 " is ignored by this WSM.\n"),
11242 "jacobian_quantities",
11243 "inversion_iterate_agenda"),
11251 "display_progress"),
11261 GIN_DESC(
"Iteration method. For this and all options below, see " 11263 "Maximum allowed value of cost function at start.",
11264 "Normalisation of Sx.",
11265 "Maximum number of iterations.",
11266 "Stop criterion for iterative inversions.",
11267 "Settings associated with the ga factor of the LM method.",
11268 "An option to save memory.",
11269 "Flag to control if inversion diagnostics shall be printed " 11270 "on the screen.")));
11275 "Calculates the averaging kernel matrix describing the sensitivity of the\n" 11276 "OEM retrieval with respect to the true state of the system. A prerequisite\n" 11277 "for the calculation of the averaging kernel matrix is a successful OEM\n" 11278 "calculation in which the jacobian and the gain matrix dxdy have been calculated.\n"),
11279 AUTHORS(
"Simon Pfreundschuh"),
11284 IN(
"dxdy",
"jacobian"),
11291 NAME(
"covmat_soCalc"),
11293 "Calculates the covariance matrix describing the error due to uncertainties\n" 11294 "in the observation system. The uncertainties of the observation system are\n" 11295 "described by *covmat_se*, which must be set by the user to include the\n" 11296 "relevant contributions from the measurement and the forward model.\n" 11298 "Prerequisite for the calculation of *covmat_so* is a successful OEM\n" 11299 "computation where also the gain matrix has been computed.\n"),
11300 AUTHORS(
"Simon Pfreundschuh"),
11305 IN(
"dxdy",
"covmat_se"),
11312 NAME(
"covmat_ssCalc"),
11314 "Calculates the covariance matrix describing the error due to smoothing.\n" 11316 "The calculation of *covmat_ss* also requires the averaging kernel matrix *avk*\n" 11317 "to be computed after a successful OEM calculation.\n"),
11318 AUTHORS(
"Simon Pfreundschuh"),
11323 IN(
"avk",
"covmat_sx"),
11330 NAME(
"opt_prop_bulkCalc"),
11332 "Calculates bulk absorption extinction at one atmospheric grid point.\n" 11334 "This WSM sums up the monochromatic absorption vectors and\n" 11335 "extinction matrices of all scattering elements (*abs_vec_spt* and\n" 11336 "*ext_mat_spt*, respectively) weighted by their respective\n" 11337 "particle number density given by *pnd_field*, for a single location\n" 11338 "within the cloudbox, given by *scat_p_index*, *scat_lat_index*, and\n" 11339 "*scat_lon_index*.\n" 11340 "The resulting extinction matrix is added to the workspace variable\n" 11342 AUTHORS(
"Jana Mendrok, Sreerekha T.R."),
11343 OUT(
"ext_mat",
"abs_vec"),
11361 NAME(
"opt_prop_sptFromData"),
11363 "Calculates monochromatic optical properties for all scattering\n" 11366 "In this function the extinction matrix and the absorption vector\n" 11367 "are calculated in the laboratory frame. An interpolation of the\n" 11368 "data on the actual frequency is the first step in this function.\n" 11369 "The next step is a transformation from the database coordinate\n" 11370 "system to the laboratory coordinate system.\n" 11372 "Output of the function are *ext_mat_spt* and *abs_vec_spt*, which\n" 11373 "hold the optical properties for a specified propagation direction\n" 11374 "for each scattering element.\n"),
11376 OUT(
"ext_mat_spt",
"abs_vec_spt"),
11400 NAME(
"opt_prop_sptFromScat_data"),
11402 "Derives monochromatic optical properties for all scattering\n" 11405 "As *opt_prop_sptFromData*, but using frequency pre-interpolated\n" 11406 "data (as produced by *scat_dataCalc*), i.e. in here no frequency\n" 11407 "interpolation is done anymore.\n"),
11408 AUTHORS(
"Jana Mendrok, Claudia Emde"),
11409 OUT(
"ext_mat_spt",
"abs_vec_spt"),
11416 "scat_data_checked",
11433 NAME(
"opt_prop_sptFromMonoData"),
11435 "Calculates optical properties for the scattering elements.\n" 11437 "As *opt_prop_sptFromData* but no frequency interpolation is\n" 11438 "performed. The single scattering data is here obtained from\n" 11439 "*scat_data_mono*, instead of *scat_data*.\n"),
11441 OUT(
"ext_mat_spt",
"abs_vec_spt"),
11464 DESCRIPTION(
"Sets the output file format to ASCII.\n"),
11466 OUT(
"output_file_format"),
11478 DESCRIPTION(
"Sets the output file format to binary.\n"),
11480 OUT(
"output_file_format"),
11492 DESCRIPTION(
"Sets the output file format to zipped ASCII.\n"),
11494 OUT(
"output_file_format"),
11505 NAME(
"particle_bulkprop_fieldClip"),
11507 "Clipping of *particle_bulkprop_field*.\n" 11509 "The method allows you to apply hard limits the values of\n" 11510 "*particle_bulkprop_field*. All values, of the property selected,\n" 11511 "below *limit_low*, are simply set to *limit_low*. And the same\n" 11512 "is performed with respect to *limit_high*. That is, the data in x\n" 11513 "for the retrieval quantity are forced to be inside the range\n" 11514 "[limit_low,limit_high].\n" 11516 "Setting species=\"ALL\", is a shortcut for applying the limits on all\n" 11519 OUT(
"particle_bulkprop_field"),
11523 IN(
"particle_bulkprop_field",
"particle_bulkprop_names"),
11524 GIN(
"bulkprop_name",
"limit_low",
"limit_high"),
11525 GIN_TYPE(
"String",
"Numeric",
"Numeric"),
11527 GIN_DESC(
"Name of bulk property to consider, or \"ALL\".",
11528 "Lower limit for clipping.",
11529 "Upper limit for clipping.")));
11532 NAME(
"particle_bulkprop_fieldPerturb"),
11534 "Adds a perturbation to *particle_bulkprop_field*.\n" 11536 "Works as *AtmFieldPerturb* but acts on *particle_bulkprop_field*.\n"),
11538 OUT(
"particle_bulkprop_field"),
11542 IN(
"particle_bulkprop_field",
11547 "particle_bulkprop_names"),
11548 GIN(
"particle_type",
11556 "String",
"Vector",
"Vector",
"Vector",
"Index",
"Numeric",
"String"),
11558 GIN_DESC(
"Name of field to perturb, such as " 11561 "Pressure retrieval grid.",
11562 "Latitude retrieval grid.",
11563 "Longitude retrieval grid.",
11564 "Index of position where the perturbation shall be performed.",
11565 "Size of perturbation.",
11566 "Type of perturbation, " 11573 NAME(
"particle_bulkprop_fieldPerturbAtmGrids"),
11575 "Adds a perturbation to *particle_bulkprop_field*.\n" 11577 "Works as *AtmFieldPerturbAtmGrids* but acts on *particle_bulkprop_field*.\n"),
11579 OUT(
"particle_bulkprop_field"),
11583 IN(
"particle_bulkprop_field",
11588 "particle_bulkprop_names"),
11589 GIN(
"particle_type",
"pert_index",
"pert_size",
"pert_mode"),
11590 GIN_TYPE(
"String",
"Index",
"Numeric",
"String"),
11592 GIN_DESC(
"Name of field to perturb, such as " 11595 "Index of position where the perturbation shall be performed.",
11596 "Size of perturbation.",
11597 "Type of perturbation, " 11604 NAME(
"particle_massesFromMetaDataSingleCategory"),
11606 "Sets *particle_masses* based on *scat_meta* assuming\n" 11607 "all particles are of the same mass category.\n" 11609 "This method derives the particle masses from the mass entry\n" 11610 "of each scattering element. It is assumed that all scattering\n" 11611 "elements represent particles of the same (bulk) matter\n" 11612 "(e.g. water or ice). With other words, a single mass category\n" 11613 "is assumed (see *particle_masses* for a definition of \"mass\n" 11616 "To be clear, the above are assumptions of the method, the user\n" 11617 "is free to work with any scattering element. For Earth and just having\n" 11618 "cloud and particles, the resulting mass category can be seen as\n" 11619 "the total cloud water content, with possible contribution from\n" 11620 "both ice and liquid phase.\n"),
11621 AUTHORS(
"Jana Mendrok",
"Patrick Eriksson"),
11622 OUT(
"particle_masses"),
11633 NAME(
"particle_massesFromMetaData"),
11635 "Derives *particle_masses* from *scat_meta*.\n" 11637 "This method is supposed to be used to derive *particle_masses*\n" 11638 "when *pnd_field* is internally calculated using\n" 11639 "*pnd_fieldCalcFromParticleBulkProps* (in contrast to reading it\n" 11640 "from external sources using *ScatElementsPndAndScatAdd* and\n" 11641 "*pnd_fieldCalcFrompnd_field_raw*).\n" 11642 "It extracts the mass information of the scattering elements from\n" 11643 "*scat_meta*. Each scattering species is taken as a separate\n" 11644 "category of particle_masses, i.e., the resulting\n" 11645 "*particle_masses* matrix will contain as many columns as\n" 11646 "scattering species are present in *scat_meta*.\n"),
11648 OUT(
"particle_masses"),
11659 NAME(
"partition_functionsInitFromBuiltin"),
11661 "Initialize partition functions with default values from built-in\n" 11662 "species data.\n"),
11664 OUT(
"partition_functions"),
11675 NAME(
"pha_matCalc"),
11677 "Calculates the total phase matrix of all scattering elements.\n" 11679 "This function sums up the monochromatic phase matrices of all\n" 11680 "scattering elements *pha_mat_spt* weighted with their respective\n" 11681 "particle number density, given by *pnd_field*, for a single location\n" 11682 "within the cloudbox, given by *scat_p_index*, *scat_lat_index*, and\n" 11683 "*scat_lon_index*.\n"),
11701 NAME(
"pha_mat_sptFromData"),
11703 "Calculation of the phase matrix of the individual scattering elements.\n" 11705 "This function can be used in *pha_mat_spt_agenda* as part of\n" 11706 "the calculation of the scattering integral.\n" 11708 "First, data at the requested frequency (given by *f_grid* and\n" 11709 "*f_index*) and temperature (given by *rtp_temperature*) is\n" 11710 "extracted. This is followed by a transformation from the database\n" 11711 "coordinate system to the laboratory coordinate system.\n" 11713 "Frequency extraction is always done by (linear) interpolation.\n" 11714 "Temperature is (linearly) interpolated when at least two\n" 11715 "temperature grid points are present in the *scat_data* and\n" 11716 "*rtp_temperature* is positive. If only a single temperature point\n" 11717 "is available, data for this point is used without modification. In\n" 11718 "order to speed up calculations, temperature interpolation can be\n" 11719 "avoided by passing a *rtp_temperature*<0. In this case, a specific\n" 11720 "temperature grid from the *scat_data* grid is used without\n" 11721 "modification. The selection is as follows:\n" 11722 " -10 < *rtp_temperature * < 0 T_grid[0] lowest temperature\n" 11723 " -20 < *rtp_temperature * < -10 T_grid[nT-1] highest temperature\n" 11724 " *rtp_temperature* < -20 T_grid[nT/2] median grid point\n"),
11726 OUT(
"pha_mat_spt"),
11749 NAME(
"pha_mat_sptFromDataDOITOpt"),
11751 "Calculation of the phase matrix of the individual scattering elements.\n" 11753 "In this function the phase matrix is extracted from\n" 11754 "*pha_mat_sptDOITOpt*. It can be used in the agenda\n" 11755 "*pha_mat_spt_agenda*. This method must be used in combination with\n" 11756 "*DoitScatteringDataPrepare*.\n" 11758 "Temperature is considered as described for *pha_mat_sptFromData*\n"),
11760 OUT(
"pha_mat_spt"),
11765 "pha_mat_sptDOITOpt",
11767 "doit_za_grid_size",
11782 NAME(
"pha_mat_sptFromMonoData"),
11784 "Calculation of the phase matrix of the individual scattering elements.\n" 11786 "This function is the monochromatic version of *pha_mat_sptFromData*.\n"),
11788 OUT(
"pha_mat_spt"),
11794 "doit_za_grid_size",
11809 NAME(
"pha_mat_sptFromScat_data"),
11811 "Calculation of the phase matrix of the individual scattering elements.\n" 11813 "As *pha_mat_sptFromData*, but using frequency pre-interpolated\n" 11814 "data (as produced by *scat_dataCalc*), i.e. in here no frequency\n" 11815 "interpolation is done anymore.\n"),
11816 AUTHORS(
"Jana Mendrok, Claudia Emde"),
11817 OUT(
"pha_mat_spt"),
11823 "scat_data_checked",
11840 NAME(
"pndFromPsd"),
11842 "Calculates *pnd_data* from given *psd_data* for one scattering species.\n" 11844 "Performs integration of the size distribution over the size grid\n" 11845 "bin deriving pnd (units #/m3) from psd (units #/m3/m). Some checks\n" 11846 "on the sufficiency of the size grid range and coverage are applied.\n" 11848 "*quad_order* can be 0 for rectangular or 1 for trapezoidal\n" 11849 "integration. The only difference is the treatment of the start and\n" 11850 "end nodes. For trapezoidal their corresponding bins end exactly at\n" 11851 "the nodes, while for rectangular they extend further out by the half\n" 11852 "distance to the neighbor node (but not beyond 0).\n" 11854 "Attempts to check that the size grids and *scat_data* represent the\n" 11855 "bulk extinction sufficiently. Specifically, it is tested that\n" 11856 " (a) psd*ext is decreasing at the small and large particle size\n" 11857 " ends of the size grid - but only if scattering species bulk\n" 11858 " extinction exceeds 1% of *threshold_ss_ext*.\n" 11859 " (b) removing the smallest and largest particles changes the\n" 11860 " resulting bulk extinction by less then a fraction of\n" 11861 " *threshold_se_ext* - but only if scattering species bulk\n" 11862 " extinction exceeds *threshold_ss_ext* and number density (pnd)\n" 11863 " of the edge size point at this atmospheric level is larger\n" 11864 " than *threshold_se_pnd* times the maximum pnd of this\n" 11865 " scattering element over all atmospheric levels.\n" 11866 "Skipping tests in case of low extinction is done in order to\n" 11867 "minimize issues arising from very low mass densities,\n" 11868 "particularly at single atmospheric levels, and very low bulk\n" 11869 "extinctions, i.e. in cases where the effects on the radiance fields\n" 11870 "are estimated to be low." 11872 "NOTE: The tests are only approximate and do not guarantee the\n" 11873 "validity of the resulting bulk properties (and increasing the\n" 11874 "thresholds will decrease the reliability of the bulk properties).\n"),
11875 AUTHORS(
"Jana Mendrok, Patrick Eriksson"),
11876 OUT(
"pnd_data",
"dpnd_data_dx"),
11880 IN(
"pnd_size_grid",
11886 "scat_data_checked"),
11889 "threshold_se_ext",
11890 "threshold_ss_ext",
11891 "threshold_se_pnd"),
11892 GIN_TYPE(
"Index",
"Index",
"Numeric",
"Numeric",
"Numeric"),
11894 GIN_DESC(
"Order of bin quadrature.",
11895 "Take data from scattering species of this index (0-based) in" 11897 "Maximum allowed extinction fraction in each of the edge size" 11899 "Minimum bulk extinction in the processed scattering species" 11900 " for which to apply size grid representation checks.",
11901 "Minimum ratio of edge point pnd to maximum pnd of this" 11902 " scattering element over all pressure levels.")));
11905 NAME(
"pndFromPsdBasic"),
11907 "Calculates *pnd_data* from given *psd_data*.\n" 11909 "As *pndFromPsdBasic*, but without bulk extinction representation\n" 11911 AUTHORS(
"Jana Mendrok, Patrick Eriksson"),
11912 OUT(
"pnd_data",
"dpnd_data_dx"),
11916 IN(
"pnd_size_grid",
"psd_data",
"psd_size_grid",
"dpsd_data_dx"),
11920 GIN_DESC(
"Order of bin quadrature.")));
11923 NAME(
"pnd_fieldCalcFromParticleBulkProps"),
11925 "Converts particle bulk property data to *pnd_field*.\n" 11927 "In short, the method combines *scat_species*, *pnd_agenda_array*,\n" 11928 "*particle_bulkprop_field* and their associated variables to derive\n" 11931 "The method does nothing if cloudbox is inactive.\n" 11933 "Otherwise, cloudbox limits must be set before calling the method,\n" 11934 "and *particle_bulkprop_field* is checked to have non-zero elements\n" 11935 "just inside the cloudbox.\n"),
11936 AUTHORS(
"Patrick Eriksson, Jana Mendrok"),
11937 OUT(
"pnd_field",
"dpnd_field_dx"),
11941 IN(
"atmosphere_dim",
11951 "particle_bulkprop_field",
11952 "particle_bulkprop_names",
11953 "pnd_agenda_array",
11954 "pnd_agenda_array_input_names",
11956 "jacobian_quantities"),
11963 NAME(
"pnd_fieldCalcFrompnd_field_raw"),
11965 "Interpolation of particle number density fields to calculation grid\n" 11966 "inside cloudbox.\n" 11968 "This method interpolates the particle number density field\n" 11969 "from the raw data *pnd_field_raw* to obtain *pnd_field*.\n" 11970 "For 1D cases, where internally *GriddedFieldPRegrid* and\n" 11971 "*GriddedFieldLatLonRegrid* are applied, *zeropadding*=1 sets the\n" 11972 "*pnd_field* at pressure levels levels exceeding pnd_field_raw's\n" 11973 "pressure grid to 0 (not implemented for 2D and 3D yet). Default:\n" 11974 "zeropadding=0, which throws an error if the calculation pressure grid\n" 11975 "*p_grid* is not completely covered by pnd_field_raw's pressure grid.\n"),
11976 AUTHORS(
"Sreerekha T.R.",
"Claudia Emde",
"Oliver Lemke"),
11977 OUT(
"pnd_field",
"dpnd_field_dx"),
11987 "jacobian_quantities"),
11988 GIN(
"zeropadding"),
11991 GIN_DESC(
"Allow zeropadding of pnd_field.")));
11994 NAME(
"pnd_fieldExpand1D"),
11996 "Maps a 1D pnd_field to a (homogeneous) 2D or 3D pnd_field.\n" 11998 "This method takes a 1D *pnd_field* and converts it to a 2D or 3D\n" 11999 "\"cloud\". It is assumed that a complete 1D case has been created,\n" 12000 "and after this *atmosphere_dim*, *lat_grid*, *lon_grid* and\n" 12001 "*cloudbox_limits* have been changed to a 2D or 3D case (without\n" 12002 "changing the vertical extent of the cloudbox.\n" 12004 "No modification of *pnd_field* is made for the pressure dimension.\n" 12005 "At the latitude and longitude cloudbox edge points *pnd_field* is set to\n" 12006 "zero. This corresponds to nzero=1. If you want a larger margin between\n" 12007 "the lat and lon cloudbox edges and the \"cloud\" you increase\n" 12008 "*nzero*, where *nzero* is the number of grid points for which\n" 12009 "*pnd_field* shall be set to 0, counted from each lat and lon edge.\n" 12011 "See further *AtmFieldsExpand1D*.\n"),
12017 IN(
"pnd_field",
"atmosphere_dim",
"cloudbox_on",
"cloudbox_limits"),
12021 GIN_DESC(
"Number of zero values inside lat and lon limits.")));
12024 NAME(
"pnd_fieldZero"),
12026 "Sets *pnd_field* to zero.\n" 12028 "Creates an empty *pnd_field* of cloudbox size according to\n" 12029 "*cloudbox_limits* and with number of scattering elemements\n" 12030 "according to *scat_data*. If *scat_data* is not set yet, it will be\n" 12031 "filled with one dummy scattering element.\n" 12033 "The method works with both *scat_data* and *scat_data_raw*." 12035 "This method primarily exists for testing purposes.\n" 12036 "On the one hand, empty *pnd_field* runs can be used to test the\n" 12037 "agreement between true clear-sky (*cloudboxOff*) solutions and the\n" 12038 "scattering solver solution in factual clear-sky conditions. It is\n" 12039 "important to avoid discontinuities when switching from thin-cloud\n" 12040 "to clear-sky conditions.\n" 12041 "Moreover, scattering calculations using the DOIT method include\n" 12042 "interpolation errors. If one is interested in this effect, one\n" 12043 "should compare the DOIT result with an empty cloudbox to a clearsky\n" 12044 "calculation. That means that the iterative method is performed for\n" 12045 "a cloudbox with no particles.\n"),
12046 AUTHORS(
"Claudia Emde, Jana Mendrok"),
12047 OUT(
"pnd_field",
"dpnd_field_dx",
"scat_data"),
12055 "jacobian_quantities"),
12062 NAME(
"ppath_fieldFromDownUpLimbGeoms"),
12064 "Computes ppath_field from \"standalone\" sensors looking upwards from\n" 12065 "0 m altitude with zenith angles range [0, 90], downwards from the top\n" 12066 "of the atmosphere covering the zenith angle range from 180 degrees to\n" 12067 "the surface tangent minus 1e-4 degrees, and through the limb covering\n" 12068 "at the same position as the downwards looking sensor covering the zenith\n" 12069 "angle range from the surface tangent plus 1e-4 degrees to 90 degrees minus\n" 12072 "The top of the atmosphere is from *z_field*(-1, 0, 0) [python range notation].\n" 12074 "The field will consist of 3*nz arrays structured as [up, limb, down]\n" 12076 "The intent of this function is to generate a field so that calculations\n" 12077 "of *ppvar_iy* of all the fields will cover the zenith angle space\n" 12078 "of all positions in *z_field*.\n" 12080 "Only works for *atmosphere_dim* 1, spherical planets, and *ppath_lmax*<0\n"),
12082 OUT(
"ppath_field"),
12093 "cloudbox_checked",
12094 "ppath_inside_cloudbox_do",
12103 GIN_DESC(
"Number of zenith angles per position")));
12108 "Stand-alone calculation of propagation paths.\n" 12110 "Beside a few checks of input data, the only operation of this\n" 12111 "method is to execute *ppath_agenda*.\n" 12113 "Propagation paths are normally calculated as part of the radiative\n" 12114 "transfer calculations, and this method is not part of the control\n" 12115 "file. A reason to call this function directly would be to obtain a\n" 12116 "propagation path for plotting. Anyhow, use this method instead\n" 12117 "of calling e.g.*ppathStepByStep directly.\n"),
12129 "cloudbox_checked",
12130 "ppath_inside_cloudbox_do",
12140 NAME(
"ppath_fieldCalc"),
12142 "Stand-alone calculation of propagation path field from sensors.\n" 12144 "Uses *ppathCalc* internally.\n"),
12146 OUT(
"ppath_field"),
12156 "cloudbox_checked",
12157 "ppath_inside_cloudbox_do",
12167 NAME(
"ppathCalcFromAltitude"),
12169 "Moves *rte_pos* forwards to near altitude before calling *ppathCalc*\n" 12170 "to compute a different *ppath*. The accuracy-variable gives minimum\n" 12171 "distance before the input altitude.\n" 12173 "The forward-moving algorithm calls *ppathCalc* several\n" 12174 "times at reduced maximum distances. The intention is to maintain\n" 12175 "the correct *rte_los* for a given *rte_pos* at all altitudes. The\n" 12176 "method is thus relatively slow, and VERY memory intense at low\n" 12179 "Intended to be used with \"tropospheric corrections\" from ground\n" 12180 "geometry. Not well-tested\n" 12182 "Throws error if no altitude is in line of sight.\n"),
12194 "cloudbox_checked",
12195 "ppath_inside_cloudbox_do",
12199 GIN(
"altitude",
"accuracy"),
12202 GIN_DESC(
"Altitude to move forward towards",
"Accuracy of altitude")));
12205 NAME(
"ppathFromRtePos2"),
12207 "Determines the propagation path from *rte_pos2* to *rte_pos*.\n" 12209 "The propagation path linking *rte_pos* and *rte_pos2* is calculated\n" 12210 "and returned. The method determines the path in a pure numerical\n" 12211 "manner, where a simple algorithm is applied. The task is to find\n" 12212 "the value of *rte_los* (at *rte_pos*) linking the two positions.\n" 12214 "See the user guide for a description of the search algorithm,\n" 12215 "including a more detailed definition of *za_accuracy*, \n" 12216 "*pplrt_factor* and *pplrt_lowest*.\n" 12218 "The standard application of this method should be to radio link\n" 12219 "calculations, where *rte_pos2* corresponds to a transmitter, and\n" 12220 "*rte_pos* to the receiver/sensor.\n" 12222 "The details of the ray tracing is controlled by *ppath_step_agenda*\n" 12225 OUT(
"ppath",
"rte_los",
"ppath_lraytrace"),
12229 IN(
"ppath_step_agenda",
12242 "ppath_lraytrace"),
12243 GIN(
"za_accuracy",
"pplrt_factor",
"pplrt_lowest"),
12244 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric"),
12246 GIN_DESC(
"Required accuracy, in form of the maximum allowed angular " 12248 "The factor with which ppath_lraytrace is decreased if " 12249 "no solution is found.",
12250 "Lowest value ppath_lraytrace to consider. The calculations " 12251 "are halted if this length is passed.")));
12254 NAME(
"ppathPlaneParallel"),
12256 "Propagation path calculations for a plane parallel atmosphere.\n" 12258 "This method basically assumes that the planet's radius is infinite,\n" 12259 "i.e. the planet surface has no curvature. Some consequences of this\n" 12261 " - the mathod can only be used for 1D\n" 12262 " - zenith angles between 89.9 and 90.1 deg are not allowed\n" 12263 " - refraction is always neglected\n" 12264 " - radii in ppath are set to Inf\n" 12266 "Notice that the method provides full propagation paths. This means\n" 12267 "that *ppath_step_agenda* is ignored (and thus also refraction).\n" 12268 "On the other hand, the method considers the cloudbox exactly as\n" 12269 "the standard path calculations.\n"),
12275 IN(
"atmosphere_dim",
12280 "ppath_inside_cloudbox_do",
12290 NAME(
"ppathStepByStep"),
12292 "Standard method for calculation of propagation paths.\n" 12294 "This method calculates complete propagation paths in a stepwise\n" 12295 "manner. Each step is denoted as a \"ppath_step\" and is the path\n" 12296 "through/inside a single grid box.\n" 12298 "The definition of a propgation path cannot be accommodated here.\n" 12299 "For more information read the chapter on propagation paths in the\n" 12300 "ARTS user guide.\n" 12302 "This method should never be called directly. Use *ppathCalc* instead\n" 12303 "if you want to extract propagation paths.\n"),
12309 IN(
"ppath_step_agenda",
12310 "ppath_inside_cloudbox_do",
12324 "ppath_lraytrace"),
12331 NAME(
"ppathWriteXMLPartial"),
12333 "WSM to only write a reduced Ppath, omitting grid positions.\n" 12335 "The following fields are set to be empty: gp_p, gp_lat and gp_lon.\n" 12336 "This cam drastically decrease the time for reading the structure\n" 12337 "by some external software.\n" 12339 "If *file_index is >= 0, the variable is written to a file with name:\n" 12340 " <filename>.<file_index>.xml.\n" 12341 "where <file_index> is the value of *file_index*.\n" 12343 "This means that *filename* shall here not include the .xml\n" 12344 "extension. Omitting filename works as for *WriteXML*.\n"),
12350 IN(
"output_file_format",
"ppath"),
12351 GIN(
"filename",
"file_index"),
12355 "Optional file index to append to filename.")));
12358 NAME(
"ppath_stepGeometric"),
12360 "Calculates a geometrical propagation path step.\n" 12362 "This function determines a propagation path step by pure\n" 12363 "geometrical calculations. That is, refraction is neglected. Path\n" 12364 "points are always included for crossings with the grids, tangent\n" 12365 "points and intersection points with the surface. The WSV *ppath_lmax*\n" 12366 "gives the option to include additional points to ensure that the\n" 12367 "distance along the path between the points does not exceed the\n" 12368 "selected maximum length. No additional points are included if\n" 12369 "*ppath_lmax* is set to <= 0.\n" 12371 "For further information, type see the on-line information for\n" 12372 "*ppath_step_agenda*.\n"),
12392 NAME(
"ppath_stepRefractionBasic"),
12394 "Calculates a propagation path step, considering refraction by a\n" 12395 "basic approach.\n" 12397 "Refraction is taken into account by probably the simplest approach\n" 12398 "possible. The path is treated to consist of piece-wise geometric\n" 12399 "steps. A geometric path step is calculated from each point by\n" 12400 "using the local line-of-sight. Snell's law for spherical symmetry\n" 12401 "is used for 1D to determine the zenith angle at the new point.\n" 12402 "For 2D and 3D, the zenith angle is calculated using the average\n" 12403 "gradient of the refractive index between the two points. For 3D,\n" 12404 "the azimuth angle is treated in the same way as the zenith one.\n" 12406 "The maximum length of each ray tracing step is given by the WSV\n" 12407 "*ppath_lraytrace*. The length will never exceed the given maximum,\n" 12408 "but it can be smaller. The ray tracing steps are only used to\n" 12409 "determine the path. Points to describe the path are included as\n" 12410 "for *ppath_stepGeometric*, this including the functionality of\n" 12411 "*ppath_lmax*.\n"),
12417 IN(
"refr_index_air_agenda",
12430 "ppath_lraytrace"),
12437 NAME(
"ppvar_optical_depthFromPpvar_trans_cumulat"),
12439 "Sets *ppvar_optical_depth* according to provided transmission data.\n" 12441 "The values in ppvar_optical_depth are set to\n" 12442 "-log( ppvar_trans_cumulat(joker,joker,0,0) ).\n"),
12444 OUT(
"ppvar_optical_depth"),
12448 IN(
"ppvar_trans_cumulat"),
12456 DESCRIPTION(
"Prints a variable on the screen.\n"),
12463 GIN(
"in",
"level"),
12466 GIN_DESC(
"Variable to be printed.",
"Output level to use."),
12473 DESCRIPTION(
"Prints (most) physical constants used in ARTS.\n"),
12487 DESCRIPTION(
"Prints a list of the workspace variables.\n"),
12494 GIN(
"only_allocated",
"level"),
12497 GIN_DESC(
"Flag for printing either all variables (0) or only " 12498 "allocated ones (1).",
12499 "Output level to use."),
12506 NAME(
"ZFromPSimple"),
12508 "Simple conversion from pressure to altitude.\n" 12510 "This function converts a vector of pressure values to an approximate vector\n" 12511 "of corresponding heights. The formula used to convert pressure to height is:\n" 12512 "z = 16000 * (5.0 - log10(p))" 12513 "That is, a pressure is assumed to decrease by a factor of 10 every 16km.\n" 12515 "Note that all pressure values in the vector must be greater than 0.01.\n"),
12516 AUTHORS(
"Simon Pfreundschuh"),
12520 GOUT_DESC(
"Approximate heights of pressure grid points."),
12530 NAME(
"PFromZSimple"),
12532 "Simple conversion from altitude to pressure.\n" 12534 "This function converts a vector of altitudes to an approximate vector\n" 12535 "of corresponding pressures. The formula used to convert altitide z to height\n" 12537 "p = 10.0^(5.0 - z / 1600)\n" 12539 "Note that all altitude values in the vector must be less than 120 km, \n" 12540 " otherwise an error will be thrown.\n"),
12541 AUTHORS(
"Simon Pfreundschuh"),
12545 GOUT_DESC(
"Approximate pressures of corresponding to given altitudes."),
12555 NAME(
"propmat_clearskyAddFaraday"),
12557 "Calculates absorption matrix describing Faraday rotation.\n" 12559 "Faraday rotation is a change of polarization state of an\n" 12560 "electromagnetic wave propagating through charged matter by\n" 12561 "interaction with a magnetic field. Hence, this method requires\n" 12562 "*abs_species* to contain 'free_electrons' and electron content field\n" 12563 "(as part of *vmr_field*) as well as magnetic field (*mag_u_field*,\n" 12564 "*mag_v_field*, *mag_w_field*) to be specified.\n" 12566 "Faraday rotation affects Stokes parameters 2 and 3 (but not\n" 12567 "intensity!). Therefore, this method requires stokes_dim>2.\n" 12569 "Like all 'propmat_clearskyAdd*' methods, the method is additive,\n" 12570 "i.e., does not overwrite the propagation matrix *propmat_clearsky*,\n" 12571 "but adds further contributions.\n"),
12573 OUT(
"propmat_clearsky",
"dpropmat_clearsky_dx"),
12577 IN(
"propmat_clearsky",
12578 "dpropmat_clearsky_dx",
12583 "jacobian_quantities",
12593 NAME(
"propmat_clearskyAddFromAbsCoefPerSpecies"),
12595 "Copy *propmat_clearsky* from *abs_coef_per_species*. This is handy for putting an\n" 12596 "explicit line-by-line calculation into the\n" 12597 "*propmat_clearsky_agenda*. This method is also used internally by.\n" 12598 "*propmat_clearskyAddOnTheFly*.\n" 12599 "Like all other propmat_clearsky methods, this method does not overwrite\n" 12600 "prior content of *propmat_clearsky*, but adds to it.\n"),
12602 OUT(
"propmat_clearsky",
"dpropmat_clearsky_dx"),
12606 IN(
"propmat_clearsky",
"abs_coef_per_species",
"dabs_coef_dx"),
12613 NAME(
"propmat_clearskyAddFromLookup"),
12615 "Extract gas absorption coefficients from lookup table.\n" 12617 "This extracts the absorption coefficient for all species from the\n" 12618 "lookup table, and adds them to the propagation matrix. Extraction is\n" 12619 "for one specific atmospheric condition, i.e., a set of pressure,\n" 12620 "temperature, and VMR values.\n" 12622 "Some special species are ignored, for example Zeeman species and free\n" 12623 "electrons, since their absorption properties are not simple scalars\n" 12624 "and cannot be handled by the lookup table.\n" 12626 "The interpolation order in T and H2O is given by *abs_t_interp_order*\n" 12627 "and *abs_nls_interp_order*, respectively.\n" 12629 "Extraction is done for the frequencies in f_grid. Frequency\n" 12630 "interpolation is controlled by *abs_f_interp_order*. If this is zero,\n" 12631 "then f_grid must either be the same as the internal frequency grid of\n" 12632 "the lookup table (for efficiency reasons, only the first and last\n" 12633 "element of f_grid are checked), or must have only a single element.\n" 12634 "If *abs_f_interp_order* is above zero, then frequency is interpolated\n" 12635 "along with the other interpolation dimensions. This is useful for\n" 12636 "calculations with Doppler shift.\n" 12638 "For Doppler calculations, you should generate the table with a\n" 12639 "somewhat larger frequency grid than the calculation itself has, since\n" 12640 "the Doppler shift will push the frequency grid out of the table range\n" 12643 "Some extrapolation is allowed. For pressure and frequency interpolation\n" 12644 "the standard extrapolation factor of 0.5 is applied. The factor is the\n" 12645 "default for temperature and VMR interpolation, but the extrapolation\n" 12646 "limit can here be adjusted by the *extpolfac* argument.\n" 12648 "See also: *propmat_clearskyAddOnTheFly*.\n"),
12649 AUTHORS(
"Stefan Buehler, Richard Larsson"),
12650 OUT(
"propmat_clearsky",
"dpropmat_clearsky_dx"),
12654 IN(
"propmat_clearsky",
12655 "dpropmat_clearsky_dx",
12657 "abs_lookup_is_adapted",
12658 "abs_p_interp_order",
12659 "abs_t_interp_order",
12660 "abs_nls_interp_order",
12661 "abs_f_interp_order",
12666 "jacobian_quantities"),
12670 GIN_DESC(
"Extrapolation factor (for temperature and VMR grid edges).")));
12673 NAME(
"propmat_clearskyAddHitranLineMixingLines"),
12675 "Calculates gas absorption coefficients line-by-line for HITRAN line mixed data.\n" 12677 "*Wigner6Init* or *Wigner3Init* must be called before this function.\n" 12680 "Please ensure you cite the original authors when you use this function:\n" 12681 "\tJ. Lamouroux, L. Realia, X. Thomas, et al., J.Q.S.R.T. 151 (2015), 88-96\n"),
12683 OUT(
"propmat_clearsky"),
12687 IN(
"propmat_clearsky",
12688 "abs_hitran_relmat_data",
12689 "abs_lines_per_species",
12692 "jacobian_quantities",
12693 "partition_functions",
12703 NAME(
"propmat_clearskyAddOnTheFly"),
12705 "Calculates gas absorption coefficients line-by-line.\n" 12707 "This method can be used inside *propmat_clearsky_agenda* just like\n" 12708 "*propmat_clearskyAddFromLookup*. It is a shortcut for putting in some\n" 12709 "other methods explicitly, namely:\n" 12711 " 1. *AbsInputFromRteScalars*\n" 12712 " 2. Execute *abs_xsec_agenda*\n" 12713 " 3. *abs_coefCalcFromXsec*\n" 12714 " 4. *propmat_clearskyAddFromAbsCoefPerSpecies*\n" 12716 "The calculation is for one specific atmospheric condition, i.e., a set\n" 12717 "of pressure, temperature, and VMR values.\n"),
12718 AUTHORS(
"Stefan Buehler, Richard Larsson"),
12719 OUT(
"propmat_clearsky",
12721 "dpropmat_clearsky_dx",
12723 "nlte_dsource_dx"),
12727 IN(
"propmat_clearsky",
12729 "dpropmat_clearsky_dx",
12734 "jacobian_quantities",
12739 "abs_xsec_agenda"),
12746 NAME(
"propmat_clearskyAddParticles"),
12748 "Calculates absorption coefficients of particles to be used in\n" 12749 "clearsky (non-cloudbox) calculations.\n" 12751 "This is a method to include particles (neglecting possible\n" 12752 "scattering components) in a clearsky calculation, i.e. without\n" 12753 "applying the cloudbox and scattering solvers. Particles are handled\n" 12754 "as absorbing species with one instance of 'particles' per scattering\n" 12755 "element considered added to *abs_species*. Particle absorption cross-\n" 12756 "sections at current atmospheric conditions are extracted from the\n" 12757 "single scattering data stored in *scat_data*, i.e., one array\n" 12758 "element per 'particles' instance in *abs_species* is required. Number\n" 12759 "densities are stored in *vmr_field_raw* or *vmr_field* as for all\n" 12760 "*abs_species*, but can be taken from (raw) pnd_field type data.\n" 12762 "Note that the absorption coefficient is applied both in the\n" 12763 "extinction term (neglecting scattering out of the line of sight)\n" 12764 "and the emission term (neglecting the scattering source term, i.e.\n" 12765 "scattering into the line of sight).\n" 12767 "Optionally, particle extinction (sum of absorption and scattering\n" 12768 "coefficient) can be used instead of absorption only. To choose this\n" 12769 "case, set the *use_abs_as_ext* flag to 0. However, be aware that\n" 12770 "this creates some unphysical emission term, hence is only suitable,\n" 12771 "where the source term is negligible anyways, e.g. for occultation\n" 12774 "A line-of-sight direction *rtp_los* is required as particles can\n" 12775 "exhibit directional dependent absorption properties, which is taken\n" 12776 "into account by this method." 12778 "*ScatElementsToabs_speciesAdd* can be used to add all required\n" 12779 "settings/data for individual scattering elements at once, i.e. a\n" 12780 " 'particles' tag to *abs_species*, a set of single scattering data to\n" 12781 "*scat_data* and a number density field to *vmr_field_raw*\n" 12782 "(*vmr_field* is derived applying AtmFieldsCalc once VMRs for all\n" 12783 "*abs_species* have been added) is appended for each scattering\n" 12786 "Like all 'propmat_clearskyAdd*' methods, the method is additive,\n" 12787 "i.e., does not overwrite the propagation matrix *propmat_clearsky*,\n" 12788 "but adds further contributions.\n"),
12790 OUT(
"propmat_clearsky",
"dpropmat_clearsky_dx"),
12794 IN(
"propmat_clearsky",
12795 "dpropmat_clearsky_dx",
12800 "jacobian_quantities",
12805 "scat_data_checked"),
12806 GIN(
"use_abs_as_ext"),
12809 GIN_DESC(
"A flag with value 1 or 0. If set to one, particle absorption\n" 12810 "is used in extinction and emission parts of the RT equation,\n" 12811 "and scattering out of LOS as well as into LOS is neglected.\n" 12812 "Otherwise, particle extinction (absorption+scattering) is\n" 12813 "applied in both the extinction as well as the emission part\n" 12814 "of the RT equation. That is, true extinction is applied, but\n" 12815 "emission also includes a pseudo-emission contribution from\n" 12816 "the scattering coefficient.\n")));
12819 NAME(
"propmat_clearskyAddZeeman"),
12821 "Calculates Zeeman-affected polarized propagation matrix and its\n" 12824 "Otherwise as *propmat_clearskyAddFromLookup*\n"),
12826 OUT(
"propmat_clearsky",
12828 "dpropmat_clearsky_dx",
12830 "nlte_dsource_dx"),
12834 IN(
"propmat_clearsky",
12836 "dpropmat_clearsky_dx",
12839 "abs_lines_per_species",
12842 "jacobian_quantities",
12843 "isotopologue_ratios",
12844 "partition_functions",
12853 GIN(
"manual_zeeman_tag",
12854 "manual_zeeman_magnetic_field_strength",
12855 "manual_zeeman_theta",
12856 "manual_zeeman_eta"),
12857 GIN_TYPE(
"Index",
"Numeric",
"Numeric",
"Numeric"),
12860 "Manual Magnetic Field Strength",
12861 "Manual theta given positive tag",
12862 "Manual eta given positive tag")));
12865 NAME(
"propmat_clearskyInit"),
12867 "Initialize *propmat_clearsky* and *nlte_source*.\n" 12869 "This method must be used inside *propmat_clearsky_agenda* and then\n" 12870 "be called first.\n"),
12871 AUTHORS(
"Oliver Lemke, Richard Larsson"),
12872 OUT(
"propmat_clearsky",
12874 "dpropmat_clearsky_dx",
12876 "nlte_dsource_dx"),
12881 "jacobian_quantities",
12884 "propmat_clearsky_agenda_checked",
12892 NAME(
"propmat_clearskyZero"),
12894 "Sets *propmat_clearsky* to match zero attenuation.\n" 12896 "Use this method just if you know what you are doing!\n" 12898 "If you want to make a calculation with no clear-sky attenuation at\n" 12899 "all, fill *propmat_clearsky_agenda* with this method and required\n" 12900 "Ignore statements (don't include *propmat_clearskyInit*).\n"),
12902 OUT(
"propmat_clearsky"),
12906 IN(
"f_grid",
"stokes_dim"),
12913 NAME(
"propmat_clearskyForceNegativeToZero"),
12914 DESCRIPTION(
"Sets *propmat_clearsky* to match zero attenuation\n" 12915 "if negative value. Useful for line mixing in some cases.\n" 12917 "Use this method just if you know what you are doing!\n"),
12919 OUT(
"propmat_clearsky"),
12923 IN(
"propmat_clearsky"),
12930 NAME(
"propmat_clearsky_agenda_checkedCalc"),
12932 "Checks if the *propmat_clearsky_agenda* contains all necessary\n" 12933 "methods to calculate all the species in *abs_species*.\n" 12935 "This method should be called just before the *propmat_clearsky_agenda*\n" 12936 "is used, e.g. *DoitGetIncoming*, *ybatchCalc*, *yCalc*\n"),
12938 OUT(
"propmat_clearsky_agenda_checked"),
12942 IN(
"abs_species",
"propmat_clearsky_agenda"),
12949 NAME(
"propmat_clearsky_fieldCalc"),
12951 "Calculate (vector) gas absorption coefficients for all points in the\n" 12954 "This is useful in two different contexts:\n" 12956 "1. For testing and plotting gas absorption. (For RT calculations, gas\n" 12957 "absorption is calculated or extracted locally, therefore there is no\n" 12958 "need to calculate a global field. But this method is handy for easy\n" 12959 "plotting of absorption vs. pressure, for example.)\n" 12961 "2. Inside the scattering region, monochromatic absorption is\n" 12962 "pre-calculated for the entire atmospheric field.\n" 12964 "The calculation itself is performed by the\n" 12965 "*propmat_clearsky_agenda*.\n"),
12966 AUTHORS(
"Stefan Buehler, Richard Larsson"),
12967 OUT(
"propmat_clearsky_field",
"nlte_source_field"),
12971 IN(
"atmfields_checked",
12983 "propmat_clearsky_agenda"),
12984 GIN(
"doppler",
"los"),
12987 GIN_DESC(
"A vector of doppler shift values in Hz. Must either be " 12988 "empty or have same dimension as p_grid.",
12989 "Line of sight")));
12992 NAME(
"psdAbelBoutle12"),
12994 "Abel and Boutle [2012] particle size distribution for rain.\n" 12996 "Reference: Abel and Boutle, An improved representation of the \n" 12997 "raindrop size distribution for single-moment microphysics schemes,\n" 13000 "This is a 1-parameter PSD, i.e. *pnd_agenda_input* shall have one\n" 13001 "column and *pnd_agenda_input_names* shall contain a single string.\n" 13002 "The input data in *pnd_agenda_input* shall be rain mass content in\n" 13003 "unit of [kg/m3]. The naming used is *pnd_agenda_input_names* is free\n" 13004 "but the same name must be used in *particle_bulkprop_names* and\n" 13005 "*dpnd_data_dx_names*.\n" 13007 "Particles are assumed to be near-spherical, ie. *psd_size_grid* can\n" 13008 "either be in terms of volume (or mass) equivalent diameter or\n" 13009 "maximum diameter.\n" 13011 "Derivatives are obtained analytically.\n" 13013 "The validity range of mass content is not limited. Negative mass\n" 13014 "contents will produce negative psd values following a distribution\n" 13015 "given by abs(RWC), ie. abs(psd)=f(abs(RWC)).\n" 13017 "If temperature is outside [*t_min*,*t_max*] psd=0 and dpsd=0 if\n" 13018 "picky=0, or an error is thrown if picky=1.\n"),
13020 OUT(
"psd_data",
"dpsd_data_dx"),
13024 IN(
"psd_size_grid",
13025 "pnd_agenda_input_t",
13026 "pnd_agenda_input",
13027 "pnd_agenda_input_names",
13028 "dpnd_data_dx_names",
13031 GIN(
"t_min",
"t_max",
"picky"),
13032 GIN_TYPE(
"Numeric",
"Numeric",
"Index"),
13035 "Low temperature limit to calculate a psd.",
13036 "High temperature limit to calculate a psd.",
13037 "Flag whether to be strict with parametrization value checks.")));
13040 NAME(
"psdDelanoeEtAl14"),
13042 "Normalized PSD as proposed in Delanoë et al. ((2014)),\n" 13044 "Title and journal:\n" 13045 "'Normalized particle size distribution for remote sensing\n" 13046 "application', J. Geophys. Res. Atmos., 119, 4204–422.\n" 13048 "The PSD has two independent parameters *n0Star*, the intercept\n" 13049 "parameter, and *Dm*, the volume-weighted diameter.\n" 13050 "This implementation expects as input two out of the following\n" 13051 "three quantities: *iwc*, *n0Star*, *Dm*. In this case one of\n" 13052 "the input parameters *iwc*, *n0Star*, *Dm* must be set to -999.\n*" 13053 "It is also possible to provide only *iwc*, in which case an a\n" 13054 "priori assumption will be used to deduce *n0Star* from temperature.\n" 13055 "In this case both *n0Star* and *Dm* must be set to -999.0.\n" 13057 "This PSD is not defined for vanishing concentrations of\n" 13058 "scatterers as it requires normalization by *Dm*. It is up\n" 13059 "to the user to ensure that the value of *Dm* is sufficiently\n" 13060 "large. An error is thrown if *Dm* is zero or below the value\n" 13061 "provided by *dm_min*.\n"),
13062 AUTHORS(
"Simon Pfreundschuh"),
13063 OUT(
"psd_data",
"dpsd_data_dx"),
13067 IN(
"psd_size_grid",
13068 "pnd_agenda_input_t",
13069 "pnd_agenda_input",
13070 "pnd_agenda_input_names",
13071 "dpnd_data_dx_names"),
13103 "Ice water content",
13104 "Intercept parameter",
13105 "Volume weighted diameter",
13107 "*alpha* parameter of the shape function",
13108 "*beta* paramter of the shape function",
13109 "Low temperature limit to calculate a psd.",
13110 "High temperature limit to calculate a psd.",
13111 "Lower threshold for *Dm* below which an error is thrown.",
13112 "Flag whether to be strict with parametrization value checks.")));
13115 NAME(
"psdFieldEtAl07"),
13117 "The Field et al. [2007] particle size distribution for snow and\n" 13120 "This is a 1-parameter PSD, i.e. *pnd_agenda_input* shall have one\n" 13121 "column and *pnd_agenda_input_names* shall contain a single string.\n" 13122 "The input data in *pnd_agenda_input* shall be ice hydrometeor mass\n" 13123 "content in unit of [kg/m3]. The naming used is *pnd_agenda_input_names*\n" 13124 "is free but the same name must be used in *particle_bulkprop_names* and\n" 13125 "*dpnd_data_dx_names*.\n" 13127 "*psd_size_grid* shall contain size in terms of maximum diameter.\n" 13129 "Derivatives are obtained by perturbation of 0.1%, but not less than\n" 13132 "Both parametrization for tropics and midlatitudes are handled,\n" 13133 "governed by setting of *regime*, where \"TR\" selectes the tropical\n" 13134 "case, and \"ML\" the midlatitude one.\n" 13136 "The validity range of mass content is not limited. Negative mass\n" 13137 "contents will produce negative psd values following a distribution\n" 13138 "given by abs(IWC), ie. abs(psd)=f(abs(IWC)).\n" 13140 "If temperature is outside [*t_min*,*t_max*] psd=0 and dpsd=0 if\n" 13141 "picky=0, or an error is thrown if picky=1.\n" 13143 "For temperatures below *t_min_psd*, the size distribution is\n" 13144 "calculated for T = *t_min_psd*. Likewise, for temperatures above\n" 13145 "*t_max_psd*, the distribution is derived for T = *t_max_psd*.\n" 13147 "Defaults of *t_min_psd* and *t_max_psd* were set considering that\n" 13148 "the parametrization has been derived from measurements over\n" 13149 "temperatures of -60C to 0C." 13151 "Checks of the sanity of the mass-dimension relationship are performed\n" 13152 "Errors are thrown if:\n" 13153 "- Mass-dimension relation exponent *scat_species_b* is outside\n" 13154 " [*beta_min*, *beta_max*].\n"),
13156 OUT(
"psd_data",
"dpsd_data_dx"),
13160 IN(
"psd_size_grid",
13161 "pnd_agenda_input_t",
13162 "pnd_agenda_input",
13163 "pnd_agenda_input_names",
13164 "dpnd_data_dx_names",
13185 "Parametrization regime (\"TR\"=tropical or \"ML\"=midlatitude).",
13186 "Low temperature limit to calculate a psd.",
13187 "High temperature limit to calculate a psd.",
13188 "Low temperature limit to use as paramtrization temperature.",
13189 "High temperature limit to use as paramtrization temperature.",
13190 "Low *b* limit (only if picky).",
13191 "High *b* limit (only if picky).",
13192 "Flag whether to be strict with parametrization value checks.")));
13195 NAME(
"psdFieldEtAl19"),
13197 "The Field [2019] particle size distribution for hail.\n" 13199 "Reference: Field, Normalized hail particle size distributions from the T-28\n" 13200 "storm-penetrating aircraft, JAMC, 2019\n" 13202 "This is a 1-parmater PSD i.e. *pnd_agenda_input* shall have one column and\n" 13203 "*pnd_agenda_input_names* shall contain a single string.\n" 13204 "The input data in *pnd_agenda_input* shall be hail mass content in\n" 13205 "unit of [kg/m3]. The naming used is *pnd_agenda_input_names* is free\n" 13206 "but the same name must be used in *particle_bulkprop_names* and\n" 13207 "*dpnd_data_dx_names*.\n" 13208 "The parameters assume a constant effective density, i.e. scat_species_b \approx 3\n" 13210 "Derivatives are obtained analytically.\n" 13212 "The validity range of mass content is not limited. Negative mass\n" 13213 "contents will produce negative psd values following a distribution\n" 13214 "given by abs(HWC), ie. abs(psd)=f(abs(HWC)).\n" 13216 "If temperature is outside [*t_min*,*t_max*] psd=0 and dpsd=0 if\n" 13217 "picky=0, or an error is thrown if picky=1.\n"),
13219 OUT(
"psd_data",
"dpsd_data_dx"),
13223 IN(
"psd_size_grid",
13224 "pnd_agenda_input_t",
13225 "pnd_agenda_input",
13226 "pnd_agenda_input_names",
13227 "dpnd_data_dx_names",
13230 GIN(
"t_min",
"t_max",
"picky"),
13231 GIN_TYPE(
"Numeric",
"Numeric",
"Index"),
13234 "Low temperature limit to calculate a psd.",
13235 "High temperature limit to calculate a psd.",
13236 "Flag whether to be strict with parametrization value checks.")));
13239 NAME(
"psdMcFarquaharHeymsfield97"),
13241 "McFarquahar and Heymsfield [1997] particle size distribution\n" 13244 "This is a 1-parameter PSD, i.e. *pnd_agenda_input* shall have one\n" 13245 "column and *pnd_agenda_input_names* shall contain a single string.\n" 13246 "The input data in *pnd_agenda_input* shall be ice hydrometeor mass\n" 13247 "content in unit of [kg/m3]. The naming used is *pnd_agenda_input_names*\n" 13248 "is free but the same name must be used in *particle_bulkprop_names* and\n" 13249 "*dpnd_data_dx_names*.\n" 13251 "*psd_size_grid* shall contain size in terms of volume equivalent diameter.\n" 13253 "Derivatives are obtained by perturbation of 0.1%, but not less than\n" 13256 "The validity range of mass content is not limited. Negative mass\n" 13257 "contents will produce negative psd values following a distribution\n" 13258 "given by abs(IWC), ie. abs(psd)=f(abs(IWC)).\n" 13260 "If temperature is outside [*t_min*,*t_max*] psd=0 and dpsd=0 if\n" 13261 "picky=0, or an error is thrown if picky=1.\n" 13263 "For temperatures below *t_min_psd*, the size distribution is\n" 13264 "calculated for T = *t_min_psd*. Likewise, for temperatures above\n" 13265 "*t_max_psd*, the distribution is derived for T = *t_max_psd*.\n" 13267 "Defaults of *t_min_psd* and *t_max_psd* were set considering that\n" 13268 "the parametrization has been derived from measurements over\n" 13269 "temperatures of -70C to -20C." 13271 "The noisy option can not be used together with calculation of\n" 13272 "derivatives (ie. when *dpnd_data_dx_names* is not empty).\n"),
13273 AUTHORS(
"Patrick Eriksson, Jana Mendrok"),
13274 OUT(
"psd_data",
"dpsd_data_dx"),
13278 IN(
"psd_size_grid",
13279 "pnd_agenda_input_t",
13280 "pnd_agenda_input",
13281 "pnd_agenda_input_names",
13282 "dpnd_data_dx_names",
13285 GIN(
"t_min",
"t_max",
"t_min_psd",
"t_max_psd",
"picky",
"noisy"),
13286 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric",
"Numeric",
"Index",
"Index"),
13287 GIN_DEFAULT(
"0",
"280.",
"180",
"273.15",
"0",
"0"),
13288 GIN_DESC(
"Low temperature limit to calculate a psd.",
13289 "High temperature limit to calculate a psd.",
13290 "Low temperature limit to use as paramtrization temperature.",
13291 "High temperature limit to use as paramtrization temperature.",
13292 "Flag whether to be strict with parametrization value checks.",
13293 "Distribution parameter perturbance flag")));
13296 NAME(
"psdMilbrandtYau05"),
13298 "Calculates *psd_data* and *dpsd_data_dx* following Milbrandt and Yau (2005)\n" 13299 "two moment particle size distribution for cloud water, cloud ice,\n" 13300 "rain, snow, graupel and hail, which is used in the GEM model.\n" 13302 "WSM for use in *pnd_agenda_array* for mapping *particle_bulkprop_field*\n" 13303 "to *pnd_field* using *pnd_fieldCalcFromParticleBulkProps*.\n" 13304 "Produces the particle size distribution values (dN/dD) and their\n" 13305 "derivates with respect to independent variables x by *dpnd_data_dx_names*\n" 13306 "over multiple particle sizes and atmospheric levels (or SWC/T\n" 13309 "*psd_size_grid* is considered to be in terms of maximum diameter.\n" 13310 "WC is considered to be in terms of mass content (or mass density),\n" 13311 "ie. units of [kg/m3]. N_tot in terms of number density, ie. units of [1/m3] ." 13313 "Derivatives with respect to WC and N_tot are obtained analytically.\n" 13315 "Six particle size distributions for the different hydrometeors are handled,\n" 13316 "governed by setting of *hydrometeor_type*, where \n" 13317 " \"cloud_water\" selects cloud liquid water , \n" 13318 " \"cloud_ice\" selects cloud ice, \n" 13319 " \"snow\" selects snow, \n" 13320 " \"rain\" selects rain, \n" 13321 " \"graupel\" selects graupel, and \n" 13322 " \"hail\" selects hail, \n" 13326 "*pnd_agenda_input_names* must include :\n" 13327 " [\"X-mass_density\", \"X-number_density\" ]. \"X\" is an arbitrary name\n" 13328 "The entries in *dpnd_data_dx_names* (ie. the allowed\n" 13329 "independent variablea ) can be \"X-mass_density\" and\\or \n" 13330 "\"X-number_density\".\n" 13332 "The validity range of WC is not limited. Negative WC will produce\n" 13333 "negative psd values following a distribution given by abs(WC), ie.\n" 13334 "abs(psd)=f(abs(WC)).\n" 13336 "If temperature is outside [*t_min*,*t_max*] psd=0 and dpsd=0 if\n" 13337 "picky=0, or an error is thrown if picky=1.\n" 13341 OUT(
"psd_data",
"dpsd_data_dx"),
13345 IN(
"psd_size_grid",
13346 "pnd_agenda_input_t",
13347 "pnd_agenda_input",
13348 "pnd_agenda_input_names",
13349 "dpnd_data_dx_names"),
13350 GIN(
"hydrometeor_type",
"t_min",
"t_max",
"picky"),
13351 GIN_TYPE(
"String",
"Numeric",
"Numeric",
"Index"),
13354 "Hydrometeor type (see above description).",
13355 "Low temperature limit to calculate a psd.",
13356 "High temperature limit to calculate a psd.",
13357 "Flag whether to be strict with parametrization value checks.")));
13360 NAME(
"psdModifiedGamma"),
13362 "Modified gamma distribution PSD using n0, mu, la and ga as parameters.\n" 13364 "The modified gamma distribution is a 4-parameter (n0, mu, la and ga)\n" 13365 "distribution [Petty & Huang, JAS, 2011)]:\n" 13366 " n(x) = n0 * x^mu * exp( -la*x^ga )\n" 13367 "where x is particle size or mass.\n" 13369 "The parameters can be given in two ways, either by *pnd_agenda_input* or\n" 13370 "as GIN arguments. The first option allows the parameter to vary, while\n" 13371 "in the second case the parameter gets a constant value. If a parameter is\n" 13372 "part of *pnd_agenda_input*, the corresponding GIN argument must be set\n" 13373 "to NaN (which is default). This means that the number of columns in\n" 13374 "*pnd_agenda_input* and the number of non-NaN choices for n0, mu, la and\n" 13375 "ga must add up to four.\n" 13377 "Data in *pnd_agenda_input* are linked to the MGD parameters in term of\n" 13378 "order, the naming in *pnd_agenda_input_names* is free. If all four\n" 13379 "parameteras are specified by *pnd_agenda_input*, the data in the first\n" 13380 "column are taken as n0, the second column as mu etc. If a parameter is\n" 13381 "given as a GIN argument, the columns are just shifted with one position.\n" 13382 "For example, if mu and ga are specified as GIN arguments, *pnd_agenda_input*\n" 13383 "shall have two columns, with n0-values in the first one and la-values in\n" 13384 "the second one.\n" 13386 "The GIN route is especially suitable for selecting special cases of MGD.\n" 13387 "For example, by setting mu=0 and ga=1, an exponential PSD is obtained:\n" 13388 " n(x) = n0 * exp( -la*x )\n" 13389 "With mu=1 and ga=1, the gamma PSD is obtained:\n" 13390 " n(x) = n0 * x^mu *exp( -la*x )\n" 13391 "There should be little overhead in using the method for exponential\n" 13392 "and gamma PSDs, there is an internal switch to dedicated expressions\n" 13393 "for those PSDs.\n" 13395 "Derivatives can only be obtained for parameters that are specified by\n" 13396 "*pnd_agenda_input*.\n" 13398 "If temperature is outside [*t_min*,*t_max*] psd=0 and dpsd=0 if\n" 13399 "picky=0, or an error is thrown if picky=1.\n" 13401 "These requirements apply to the MGD parameters:\n" 13405 OUT(
"psd_data",
"dpsd_data_dx"),
13409 IN(
"psd_size_grid",
13410 "pnd_agenda_input_t",
13411 "pnd_agenda_input",
13412 "pnd_agenda_input_names",
13413 "dpnd_data_dx_names"),
13414 GIN(
"n0",
"mu",
"la",
"ga",
"t_min",
"t_max",
"picky"),
13428 "Low temperature limit to calculate a psd.",
13429 "High temperature limit to calculate a psd.",
13430 "Flag whether to be strict with parametrization value checks.")));
13433 NAME(
"psdModifiedGammaMass"),
13435 "Modified gamma distribution (MGD) PSD, with mass content as input.\n" 13437 "See *psdModifiedGamma* for a defintion of MGD parameters and how\n" 13438 "this PSD is handled in ARTS. Only deviations with respect to\n" 13439 "*psdModifiedGamma* are described here.\n" 13441 "This version of MGD PSD takes mass content as first input argument.\n" 13442 "This means that the first column of *pnd_agenda_input* shall hold\n" 13443 "mass content data.\n" 13445 "The mass content basically replaces one of the standard parameters\n" 13446 "(n0, mu, la and ga). This parameter is denoted as the dependent one.\n" 13447 "The dependent parameter is selected by setting the corresponding GIN\n" 13448 "to -999. So far only n0 and la are allowed to be dependent.\n" 13450 "Regarding remaining columns in *pnd_agenda_input* and constant\n" 13451 "parameter values (by GIN) follows the same principle as for\n" 13452 "*psdModifiedGamma* except that mass is always in column one (as\n" 13453 "mentioned) and that there is no position in *pnd_agenda_input*\n" 13454 "for the dependent parameter.\n" 13456 "These requirements apply to the MGD parameters:\n" 13457 " mu + scat_species_b + 1 > 0\n" 13460 " If la is the dependent parameter, mass content must be > 0.\n"),
13462 OUT(
"psd_data",
"dpsd_data_dx"),
13466 IN(
"psd_size_grid",
13467 "pnd_agenda_input_t",
13468 "pnd_agenda_input",
13469 "pnd_agenda_input_names",
13470 "dpnd_data_dx_names",
13473 GIN(
"n0",
"mu",
"la",
"ga",
"t_min",
"t_max",
"picky"),
13487 "Low temperature limit to calculate a psd.",
13488 "High temperature limit to calculate a psd.",
13489 "Flag whether to be strict with parametrization value checks.")));
13492 NAME(
"psdModifiedGammaMassNtot"),
13494 "Modified gamma distribution PSD, with mass content and total number\n" 13495 "density (Ntot) as inputs.\n" 13497 "This version of MGD PSD works as *psdModifiedGammaMass*, but takes\n" 13498 "mass content and total number density as first two arguments. This\n" 13499 "means that the first and second column of *pnd_agenda_input* shall\n" 13500 "hold mass content and Ntot, respectively. Accordingly, the number\n" 13501 "of dependent parameters is two.\n" 13503 "These requirements apply:\n" 13507 " Ntot must be > 0.\n"),
13509 OUT(
"psd_data",
"dpsd_data_dx"),
13513 IN(
"psd_size_grid",
13514 "pnd_agenda_input_t",
13515 "pnd_agenda_input",
13516 "pnd_agenda_input_names",
13517 "dpnd_data_dx_names",
13520 GIN(
"n0",
"mu",
"la",
"ga",
"t_min",
"t_max",
"picky"),
13534 "Low temperature limit to calculate a psd.",
13535 "High temperature limit to calculate a psd.",
13536 "Flag whether to be strict with parametrization value checks.")));
13539 NAME(
"psdModifiedGammaMassMeanParticleMass"),
13541 "Modified gamma distribution PSD, with mass content and mean particle\n" 13542 "mass (Mmean) as inputs.\n" 13544 "\"Mean particle mass\" is here defined as the mass content divided with\n" 13545 "the total number density.\n" 13547 "This version of MGD PSD works as *psdModifiedGammaMass*, but takes\n" 13548 "mass content and mean particle mass as first two arguments. This\n" 13549 "means that the first and second column of *pnd_agenda_input* shall\n" 13550 "hold mass content and Mmean, respectively. Accordingly, the number\n" 13551 "of dependent parameters is two.\n" 13553 "These requirements apply to the MGD parameters:\n" 13557 " Mmean must be > 0.\n"),
13559 OUT(
"psd_data",
"dpsd_data_dx"),
13563 IN(
"psd_size_grid",
13564 "pnd_agenda_input_t",
13565 "pnd_agenda_input",
13566 "pnd_agenda_input_names",
13567 "dpnd_data_dx_names",
13570 GIN(
"n0",
"mu",
"la",
"ga",
"t_min",
"t_max",
"picky"),
13584 "Low temperature limit to calculate a psd.",
13585 "High temperature limit to calculate a psd.",
13586 "Flag whether to be strict with parametrization value checks.")));
13589 NAME(
"psdModifiedGammaMassSingleMoment"),
13591 "Modified gamma distribution PSD, with mass content as input.\n" 13593 "The intercept parameter N0 is assumed dependent on the slope parameter\n" 13594 "lambda, such that N0=N_alpha*lambda^n_b with fixed N_alpha and n_b.\n" 13595 "This is a common form for many PSD parametrizations for use with\n" 13596 "single-moment mass-based schemes.\n" 13598 "This version of MGD PSD takes mass content as first input argument.\n" 13599 "This means that the first column of *pnd_agenda_input* shall hold\n" 13600 "mass content data. The dependent parameter is assumed to be lambda.\n"),
13602 OUT(
"psd_data",
"dpsd_data_dx"),
13606 IN(
"psd_size_grid",
13607 "pnd_agenda_input_t",
13608 "pnd_agenda_input",
13609 "pnd_agenda_input_names",
13610 "dpnd_data_dx_names",
13613 GIN(
"n_alpha",
"n_b",
"mu",
"gamma",
"t_min",
"t_max",
"picky"),
13627 "Low temperature limit to calculate a psd.",
13628 "High temperature limit to calculate a psd.",
13629 "Flag whether to be strict with parametrization value checks.")));
13632 NAME(
"psdModifiedGammaMassXmean"),
13634 "Modified gamma distribution PSD, with mass content and mean size\n" 13635 "(Xmean) as inputs.\n" 13637 "\"Mean size\" is here defined as mass weighted size. Remembering that\n" 13638 "mass is a*x^b, this mean size can be expressed as M_b+1/M_b where M_b\n" 13639 "is b:th moment of the PSD (see e.g. Eq. 17 in Petty&Huang, JAS, 2011).\n" 13641 "This version of MGD PSD works as *psdModifiedGammaMass*, but takes\n" 13642 "mass content and mass size as first two arguments. This means that\n" 13643 "the first and second column of *pnd_agenda_input* shall hold mass\n" 13644 "content and Xmean, respectively. Accordingly, the number of dependent\n" 13645 "parameters is two.\n" 13647 "These requirements apply to the MGD parameters:\n" 13648 " mu + scat_species_b + 1 > 0\n" 13651 " Xmean must be > 0.\n"),
13653 OUT(
"psd_data",
"dpsd_data_dx"),
13657 IN(
"psd_size_grid",
13658 "pnd_agenda_input_t",
13659 "pnd_agenda_input",
13660 "pnd_agenda_input_names",
13661 "dpnd_data_dx_names",
13664 GIN(
"n0",
"mu",
"la",
"ga",
"t_min",
"t_max",
"picky"),
13678 "Low temperature limit to calculate a psd.",
13679 "High temperature limit to calculate a psd.",
13680 "Flag whether to be strict with parametrization value checks.")));
13683 NAME(
"psdModifiedGammaMassXmedian"),
13685 "Modified gamma distribution PSD, with mass content and median size\n" 13686 "(Xmedian) as inputs.\n" 13689 "This version of MGD PSD works as *psdModifiedGammaMass*, but takes\n" 13690 "mass content and median size as first two arguments. This means that\n" 13691 "the first and second column of *pnd_agenda_input* shall hold mass\n" 13692 "content and Xmedian, respectively. Accordingly, the number of\n" 13693 "dependent parameters is two.\n" 13695 "These requirements apply to the MGD parameters:\n" 13696 " mu + scat_species_b + 1 > 0\n" 13699 " Xmedian must be > 0.\n"),
13701 OUT(
"psd_data",
"dpsd_data_dx"),
13705 IN(
"psd_size_grid",
13706 "pnd_agenda_input_t",
13707 "pnd_agenda_input",
13708 "pnd_agenda_input_names",
13709 "dpnd_data_dx_names",
13712 GIN(
"n0",
"mu",
"la",
"ga",
"t_min",
"t_max",
"picky"),
13726 "Low temperature limit to calculate a psd.",
13727 "High temperature limit to calculate a psd.",
13728 "Flag whether to be strict with parametrization value checks.")));
13731 NAME(
"psdMonoDispersive"),
13733 "Mono-dispersive PSD, with number density given.\n" 13735 "This is a 1-parameter PSD, i.e. *pnd_agenda_input* shall have one\n" 13736 "column and *pnd_agenda_input_names* shall contain a single string.\n" 13737 "The input data in *pnd_agenda_input* shall be number densities, in\n" 13738 "unit of [#/m3]. The naming used is *pnd_agenda_input_names* is free\n" 13739 "but the same name must be used in *particle_bulkprop_names* and\n" 13740 "*dpnd_data_dx_names*.\n" 13742 "The method checks that the scattering species indicated (by\n" 13743 "*species_index*) has a single element, and just inserts the provided\n" 13744 "number density in *psd_data*.\n" 13746 "If temperature is outside [*t_min*,*t_max*] psd=0 and dpsd=0 if\n" 13747 "picky=0, or an error is thrown if picky=1.\n"),
13749 OUT(
"psd_data",
"dpsd_data_dx"),
13753 IN(
"pnd_agenda_input_t",
13754 "pnd_agenda_input",
13755 "pnd_agenda_input_names",
13756 "dpnd_data_dx_names",
13758 GIN(
"species_index",
"t_min",
"t_max",
"picky"),
13759 GIN_TYPE(
"Index",
"Numeric",
"Numeric",
"Index"),
13762 "The index of the scattering species of concern (0-based).",
13763 "Low temperature limit to calculate a psd.",
13764 "High temperature limit to calculate a psd.",
13765 "Flag whether to be strict with parametrization value checks.")));
13768 NAME(
"psdMonoMass"),
13770 "Mono-dispersive PSD, with mass content given.\n" 13772 "This is a 1-parameter PSD, i.e. *pnd_agenda_input* shall have one\n" 13773 "column and *pnd_agenda_input_names* shall contain a single string.\n" 13774 "The input data in *pnd_agenda_input* shall be mass contents, in\n" 13775 "unit of [#/m3]. The naming used is *pnd_agenda_input_names* is free\n" 13776 "but the same name must be used in *particle_bulkprop_names* and\n" 13777 "*dpnd_data_dx_names*.\n" 13779 "The method checks that the scattering species indicated (by\n" 13780 "*species_index*) has a single element, and sets *psd_data* based\n" 13781 "on the mass contents given and the particle mass (derived from\n" 13784 "If temperature is outside [*t_min*,*t_max*] psd=0 and dpsd=0 if\n" 13785 "picky=0, or an error is thrown if picky=1.\n"),
13787 OUT(
"psd_data",
"dpsd_data_dx"),
13791 IN(
"pnd_agenda_input_t",
13792 "pnd_agenda_input",
13793 "pnd_agenda_input_names",
13794 "dpnd_data_dx_names",
13796 GIN(
"species_index",
"t_min",
"t_max",
"picky"),
13797 GIN_TYPE(
"Index",
"Numeric",
"Numeric",
"Index"),
13800 "The index of the scattering species of concern (0-based).",
13801 "Low temperature limit to calculate a psd.",
13802 "High temperature limit to calculate a psd.",
13803 "Flag whether to be strict with parametrization value checks.")));
13806 NAME(
"psdSeifertBeheng06"),
13808 "Calculates *psd_data* and *dpsd_data_dx* following Seifert and Beheng (2006)\n" 13809 "two moment particle size distribution for cloud water, cloud ice,\n" 13810 "rain, snow, graupel and hail, which is used in the ICON model.\n" 13812 "WSM for use in *pnd_agenda_array* for mapping *particle_bulkprop_field*\n" 13813 "to *pnd_field* using *pnd_fieldCalcFromParticleBulkProps*.\n" 13814 "Produces the particle size distribution values (dN/dD) and their\n" 13815 "derivates with respect to independent variables x by *dpnd_data_dx_names*\n" 13816 "over multiple particle sizes and atmospheric levels (or SWC/T\n" 13819 "*psd_size_grid* is considered to be in terms of mass.\n" 13820 "WC is considered to be in terms of mass content (or mass density),\n" 13821 "ie. units of [kg/m3]. N_tot in terms of number density, ie. units of [1/m3] ." 13823 "Derivatives with respect to WC and N_tot are obtained analytically.\n" 13825 "Six particle size distributions for the different hydrometeors are handled,\n" 13826 "governed by setting of *hydrometeor_type*, where \n" 13827 " \"cloud_water\" selects cloud liquid water , \n" 13828 " \"cloud_ice\" selects cloud ice, \n" 13829 " \"snow\" selects snow, \n" 13830 " \"rain\" selects rain, \n" 13831 " \"graupel\" selects graupel, and \n" 13832 " \"hail\" selects hail, \n" 13836 "*pnd_agenda_input_names* must include :\n" 13837 " [\"X-mass_density\", \"X-number_density\" ]. \"X\" is an arbitrary name\n" 13838 "The entries in *dpnd_data_dx_names* (ie. the allowed\n" 13839 "independent variablea ) can be \"X-mass_density\" and\\or \n" 13840 "\"X-number_density\".\n" 13842 "The validity range of WC is not limited. Negative WC will produce\n" 13843 "negative psd values following a distribution given by abs(WC), ie.\n" 13844 "abs(psd)=f(abs(WC)).\n" 13846 "If temperature is outside [*t_min*,*t_max*] psd=0 and dpsd=0 if\n" 13847 "picky=0, or an error is thrown if picky=1.\n" 13851 OUT(
"psd_data",
"dpsd_data_dx"),
13855 IN(
"psd_size_grid",
13856 "pnd_agenda_input_t",
13857 "pnd_agenda_input",
13858 "pnd_agenda_input_names",
13859 "dpnd_data_dx_names"),
13860 GIN(
"hydrometeor_type",
"t_min",
"t_max",
"picky"),
13861 GIN_TYPE(
"String",
"Numeric",
"Numeric",
"Index"),
13864 "Hydrometeor type (see above description).",
13865 "Low temperature limit to calculate a psd.",
13866 "High temperature limit to calculate a psd.",
13867 "Flag whether to be strict with parametrization value checks.")));
13870 NAME(
"psdWangEtAl16"),
13872 "Wang et al. [2016] particle size distribution for rain.\n" 13874 "Reference: Wang et al., Investigation of liquid cloud microphysical\n" 13875 "properties of deep convective systems: 1. Parameterization raindrop\n" 13876 "size distribution and its application ..., 2016.\n" 13878 "This is a 1-parameter PSD, i.e. *pnd_agenda_input* shall have one\n" 13879 "column and *pnd_agenda_input_names* shall contain a single string.\n" 13880 "The input data in *pnd_agenda_input* shall be rain mass content in\n" 13881 "unit of [kg/m3]. The naming used is *pnd_agenda_input_names* is free\n" 13882 "but the same name must be used in *particle_bulkprop_names* and\n" 13883 "*dpnd_data_dx_names*.\n" 13885 "Particles are assumed to be near-spherical, ie. *psd_size_grid* can\n" 13886 "either be in terms of volume (or mass) equivalent diameter or\n" 13887 "maximum diameter.\n" 13889 "Derivatives are obtained analytically.\n" 13891 "The validity range of mass content is not limited. Negative mass\n" 13892 "contents will produce negative psd values following a distribution\n" 13893 "given by abs(RWC), ie. abs(psd)=f(abs(RWC)).\n" 13895 "If temperature is outside [*t_min*,*t_max*] psd=0 and dpsd=0 if\n" 13896 "picky=0, or an error is thrown if picky=1.\n"),
13897 AUTHORS(
"Jana Mendrok, Patrick Eriksson"),
13898 OUT(
"psd_data",
"dpsd_data_dx"),
13902 IN(
"psd_size_grid",
13903 "pnd_agenda_input_t",
13904 "pnd_agenda_input",
13905 "pnd_agenda_input_names",
13906 "dpnd_data_dx_names",
13909 GIN(
"t_min",
"t_max",
"picky"),
13910 GIN_TYPE(
"Numeric",
"Numeric",
"Index"),
13913 "Low temperature limit to calculate a psd.",
13914 "High temperature limit to calculate a psd.",
13915 "Flag whether to be strict with parametrization value checks.")));
13918 NAME(
"p_gridDensify"),
13920 "A simple way to make *p_grid* more dense.\n" 13922 "The method includes new values in *p_grid*. For each intermediate\n" 13923 "pressure range, *nfill* points are added. That is, setting *nfill*\n" 13924 "to zero returns an unmodified copy of *p_grid_old*. The number of\n" 13925 "elements of the new *p_grid* is (n0-1)*(1+nfill)+1, where n0 is the\n" 13926 "length of *p_grid_old*.\n" 13928 "The new points are distributed equidistant in log(p).\n" 13930 "For safety, new grid and old grid Vectors are not allowed to be the\n" 13931 "same variable (both will be needed later on for regridding of the\n" 13932 "atmospheric fields), and atmospheric field related *checked WSV are\n" 13933 "reset to 0 (unchecked).\n"),
13934 AUTHORS(
"Patrick Eriksson, Jana Mendrok"),
13935 OUT(
"p_grid",
"atmfields_checked",
"atmgeom_checked",
"cloudbox_checked"),
13940 GIN(
"p_grid_old",
"nfill"),
13944 "A copy of the current (the old) p_grid. Not allowed to be " 13945 "the same variable as the output *p_grid*.",
13947 "Number of points to add between adjacent pressure points." 13948 "The default value (-1) results in an error.")));
13951 NAME(
"p_gridFromZRaw"),
13953 "Sets *p_grid* according to input atmosphere's raw z_field, derived\n" 13954 "e.g. from *AtmRawRead*.\n" 13955 "Attention: as default only pressure values for altitudes >= 0 are\n" 13956 "extracted. If negative altitudes shall also be selected, set no_neg=0.\n"),
13957 AUTHORS(
"Claudia Emde, Jana Mendrok"),
13966 GIN_DESC(
"Exclude negative altitudes.")));
13969 NAME(
"lat_gridFromZRaw"),
13971 "Sets *lat_grid* according to input atmosphere's *z_field_raw*\n"),
13984 NAME(
"lon_gridFromZRaw"),
13986 "Sets *lon_grid* according to input atmosphere's *z_field_raw*\n"),
13999 NAME(
"atm_gridsFromZRaw"),
14001 "Calls *p_gridFromZRaw*, *lat_gridFromZRaw* and *lon_gridFromZRaw*\n"),
14003 OUT(
"p_grid",
"lat_grid",
"lon_grid"),
14011 GIN_DESC(
"Exclude negative altitudes.")));
14014 NAME(
"p_gridFromGasAbsLookup"),
14015 DESCRIPTION(
"Sets *p_grid* to the pressure grid of *abs_lookup*.\n"),
14028 NAME(
"p_gridRefine"),
14030 "Provides refined pressure grid.\n" 14032 "Created new pressure grid has (log10) spacings below a given\n" 14035 "For safety, new grid and old grid Vectors are not allowed to be the\n" 14036 "same variable (both will be needed later on for regridding of the\n" 14037 "atmospheric fields), and atmospheric field related *checked WSV are\n" 14038 "reset to 0 (unchecked).\n"),
14039 AUTHORS(
"Stefan Buehler, Jana Mendrok"),
14040 OUT(
"p_grid",
"atmfields_checked",
"atmgeom_checked",
"cloudbox_checked"),
14045 GIN(
"p_grid_old",
"p_step"),
14049 "A copy of the current (the old) p_grid. Not allowed to be " 14050 "the same variable as the output *p_grid*.",
14052 "Maximum step in log10(p[Pa]). If the pressure grid is " 14053 "coarser than this, additional points are added until each " 14054 "log step is smaller than this.")));
14057 NAME(
"RadiationFieldSpectralIntegrate"),
14059 "Integrates fields like *spectral_irradiance_field* or *cloudbox_field*\n" 14060 "over frequency.\n" 14061 "Important, the first dimension must be the frequency dimension!\n" 14062 "If a field like *cloudbox_field* is input, the stokes dimension\n" 14063 "is also removed.\n"),
14066 GOUT(
"radiation_field"),
14070 GIN(
"spectral_radiation_field"),
14076 NAME(
"line_irradianceCalcForSingleSpeciesNonOverlappingLinesPseudo2D"),
14077 DESCRIPTION(
"Computes the line irradiance and line transmission\n" 14079 "Presently only works for 1D atmospheres\n"),
14081 OUT(
"line_irradiance",
"line_transmission"),
14086 "abs_lines_per_species",
14093 "surface_props_data",
14097 "iy_surface_agenda",
14098 "iy_cloudbox_agenda",
14099 "propmat_clearsky_agenda"),
14100 GIN(
"df",
"nz",
"nf",
"r"),
14101 GIN_TYPE(
"Numeric",
"Index",
"Index",
"Numeric"),
14103 GIN_DESC(
"relative frequency to line center",
14104 "number of zeniths",
14105 "number of frequencies per line",
14106 "Distance assumed when computing local (1-T)")));
14109 NAME(
"RationalAdd"),
14111 "Adds a Rational and a value (out = in+value).\n" 14113 "The result can either be stored in the same or another Rational.\n" 14114 "(in and out can be the same varible, but not out and value)\n"),
14121 GIN(
"in",
"value"),
14124 GIN_DESC(
"Input Rational.",
"Value to add.")));
14127 NAME(
"RationalInvScale"),
14129 "Inversely scales/divides a Rational with a value (out = in/value).\n" 14131 "The result can either be stored in the same or another Rational.\n" 14132 "(in and out can be the same varible, but not out and value)\n"),
14139 GIN(
"in",
"value"),
14142 GIN_DESC(
"Input Rational.",
"Scaling Rational.")));
14145 NAME(
"RationalScale"),
14147 "Scales/multiplies a Rational with a value (out = in*value).\n" 14149 "The result can either be stored in the same or another Rational.\n" 14150 "(in and out can be the same varible, but not out and value)\n"),
14157 GIN(
"in",
"value"),
14160 GIN_DESC(
"Input Rational.",
"Scaling value.")));
14163 NAME(
"RationalSet"),
14164 DESCRIPTION(
"Sets a Rational workspace variable to the given value.\n"),
14171 GIN(
"numerator",
"denominator"),
14174 GIN_DESC(
"The numerator.",
"The denominator.")));
14177 NAME(
"ReadArrayOfARTSCAT"),
14178 DESCRIPTION(
"Reads an old Array<ArrayOfLineRecord> ARTSCAT file.\n" 14180 "Note that the ARTSCAT-5 had quantum numbers and options\n" 14181 "stored inside it but that the options will overwrite that\n" 14182 "information. Be careful setting the options!\n"),
14183 AUTHORS(
"Stefan Buehler",
"Richard Larsson"),
14189 GIN(
"filename",
"fmin",
"fmax",
"globalquantumnumbers",
14190 "localquantumnumbers",
"normalization_option",
"mirroring_option",
14191 "population_option",
"lineshapetype_option",
"cutoff_option",
14192 "cutoff_value",
"linemixinglimit_value"),
14193 GIN_TYPE(
"String",
"Numeric",
"Numeric",
"String",
"String",
"String",
14194 "String",
"String",
"String",
"String",
"Numeric",
"Numeric"),
14196 "None",
"750e9",
"-1"),
14197 GIN_DESC(
"Name of the ARTSCAT file",
14198 "Minimum frequency of read lines",
14199 "Maximum frequency of read lines",
14200 "Global quantum number list (space-separated)",
14201 "Local quantum number list (space-separated)",
14202 "Normalization option, see *abs_linesSetNormalization*",
14203 "Mirroring option, see *abs_linesSetMirroring*",
14204 "Population option, see *abs_linesSetPopulation*",
14205 "Lineshape option, see *abs_linesSetLineShapeType*",
14206 "Cutoff option, see *abs_linesSetCutoff*",
14207 "Cutoff value, see *abs_linesSetCutoff*",
14208 "Line mixing limit, see *abs_linesSetLinemixingLimit*")));
14211 NAME(
"ReadSplitARTSCAT"),
14212 DESCRIPTION(
"Reads several old ArrayOfLineRecord ARTSCAT file\n" 14214 "Note that the ARTSCAT-5 had quantum numbers and options\n" 14215 "stored inside it but that the options will overwrite that\n" 14216 "information. Be careful setting the options!\n"),
14217 AUTHORS(
"Oliver Lemke",
"Richard Larsson"),
14223 GIN(
"basename",
"fmin",
"fmax",
"globalquantumnumbers",
"localquantumnumbers",
14224 "ignore_missing",
"normalization_option",
"mirroring_option",
14225 "population_option",
"lineshapetype_option",
"cutoff_option",
14226 "cutoff_value",
"linemixinglimit_value"),
14227 GIN_TYPE(
"String",
"Numeric",
"Numeric",
"String",
"String",
"Index",
"String",
14228 "String",
"String",
"String",
"String",
"Numeric",
"Numeric"),
14229 GIN_DEFAULT(
NODEF,
"0",
"1e99",
"",
"",
"0",
"None",
"None",
"LTE",
"VP",
14230 "None",
"750e9",
"-1"),
14232 "Minimum frequency of read lines",
14233 "Maximum frequency of read lines",
14234 "Global quantum number list (space-separated)",
14235 "Local quantum number list (space-separated)",
14236 "Ignores instead of throws if an *abs_species* is missing",
14237 "Normalization option, see *abs_linesSetNormalization*",
14238 "Mirroring option, see *abs_linesSetMirroring*",
14239 "Population option, see *abs_linesSetPopulation*",
14240 "Lineshape option, see *abs_linesSetLineShapeType*",
14241 "Cutoff option, see *abs_linesSetCutoff*",
14242 "Cutoff value, see *abs_linesSetCutoff*",
14243 "Line mixing limit, see *abs_linesSetLinemixingLimit*")));
14246 NAME(
"ReadARTSCAT"),
14247 DESCRIPTION(
"Reads an old ArrayOfLineRecord ARTSCAT file\n" 14249 "Note that the ARTSCAT-5 had quantum numbers and options\n" 14250 "stored inside it but that the options will overwrite that\n" 14251 "information. Be careful setting the options!\n"),
14252 AUTHORS(
"Stefan Buehler",
"Richard Larsson"),
14258 GIN(
"filename",
"fmin",
"fmax",
"globalquantumnumbers",
14259 "localquantumnumbers",
"normalization_option",
"mirroring_option",
14260 "population_option",
"lineshapetype_option",
"cutoff_option",
14261 "cutoff_value",
"linemixinglimit_value"),
14262 GIN_TYPE(
"String",
"Numeric",
"Numeric",
"String",
"String",
"String",
14263 "String",
"String",
"String",
"String",
"Numeric",
"Numeric"),
14265 "None",
"750e9",
"-1"),
14266 GIN_DESC(
"Name of the ARTSCAT file",
14267 "Minimum frequency of read lines",
14268 "Maximum frequency of read lines",
14269 "Global quantum number list (space-separated)",
14270 "Local quantum number list (space-separated)",
14271 "Normalization option, see *abs_linesSetNormalization*",
14272 "Mirroring option, see *abs_linesSetMirroring*",
14273 "Population option, see *abs_linesSetPopulation*",
14274 "Lineshape option, see *abs_linesSetLineShapeType*",
14275 "Cutoff option, see *abs_linesSetCutoff*",
14276 "Cutoff value, see *abs_linesSetCutoff*",
14277 "Line mixing limit, see *abs_linesSetLinemixingLimit*")));
14280 NAME(
"ReadHITRAN"),
14283 "The HITRAN type switch can be:\n" 14284 "\t\"Pre2004\"\t-\tfor old format\n" 14285 "\t\"Post2004\"\t-\tfor new format\n" 14286 "\t\"Online\"\t-\tfor the online format with quantum numbers (highly experimental)\n" 14288 "Be careful setting the options!\n" 14290 AUTHORS(
"Hermann Berg",
"Thomas Kuhn",
"Richard Larsson"),
14296 GIN(
"filename",
"fmin",
"fmax",
"globalquantumnumbers",
"localquantumnumbers",
14297 "hitran_type",
"normalization_option",
"mirroring_option",
14298 "population_option",
"lineshapetype_option",
"cutoff_option",
14299 "cutoff_value",
"linemixinglimit_value"),
14300 GIN_TYPE(
"String",
"Numeric",
"Numeric",
"String",
"String",
"String",
"String",
14301 "String",
"String",
"String",
"String",
"Numeric",
"Numeric"),
14302 GIN_DEFAULT(
NODEF,
"0",
"1e99",
"",
"",
"Post2004",
"None",
"None",
"LTE",
"VP",
14303 "None",
"750e9",
"-1"),
14304 GIN_DESC(
"Name of the HITRAN file",
14305 "Minimum frequency of read lines",
14306 "Maximum frequency of read lines",
14307 "Global quantum number list (space-separated)",
14308 "Local quantum number list (space-separated)",
14309 "Method to use to read the line data",
14310 "Normalization option, see *abs_linesSetNormalization*",
14311 "Mirroring option, see *abs_linesSetMirroring*",
14312 "Population option, see *abs_linesSetPopulation*",
14313 "Lineshape option, see *abs_linesSetLineShapeType*",
14314 "Cutoff option, see *abs_linesSetCutoff*",
14315 "Cutoff value, see *abs_linesSetCutoff*",
14316 "Line mixing limit, see *abs_linesSetLinemixingLimit*")));
14319 NAME(
"ReadLBLRTM"),
14322 "Be careful setting the options!\n"),
14329 GIN(
"filename",
"fmin",
"fmax",
"globalquantumnumbers",
14330 "localquantumnumbers",
"normalization_option",
"mirroring_option",
14331 "population_option",
"lineshapetype_option",
"cutoff_option",
14332 "cutoff_value",
"linemixinglimit_value"),
14333 GIN_TYPE(
"String",
"Numeric",
"Numeric",
"String",
"String",
"String",
14334 "String",
"String",
"String",
"String",
"Numeric",
"Numeric"),
14336 "None",
"750e9",
"-1"),
14337 GIN_DESC(
"Name of the LBLRTM file",
14338 "Minimum frequency of read lines",
14339 "Maximum frequency of read lines",
14340 "Global quantum number list (space-separated)",
14341 "Local quantum number list (space-separated)",
14342 "Normalization option, see *abs_linesSetNormalization*",
14343 "Mirroring option, see *abs_linesSetMirroring*",
14344 "Population option, see *abs_linesSetPopulation*",
14345 "Lineshape option, see *abs_linesSetLineShapeType*",
14346 "Cutoff option, see *abs_linesSetCutoff*",
14347 "Cutoff value, see *abs_linesSetCutoff*",
14348 "Line mixing limit, see *abs_linesSetLinemixingLimit*")));
14351 NAME(
"ReadMytran2"),
14354 "Be careful setting the options!\n"),
14355 AUTHORS(
"Axel von Engeln",
"Stefan Buehler",
"Richard Larsson"),
14361 GIN(
"filename",
"fmin",
"fmax",
"globalquantumnumbers",
14362 "localquantumnumbers",
"normalization_option",
"mirroring_option",
14363 "population_option",
"lineshapetype_option",
"cutoff_option",
14364 "cutoff_value",
"linemixinglimit_value"),
14365 GIN_TYPE(
"String",
"Numeric",
"Numeric",
"String",
"String",
"String",
14366 "String",
"String",
"String",
"String",
"Numeric",
"Numeric"),
14368 "None",
"750e9",
"-1"),
14369 GIN_DESC(
"Name of the Mytran2 file",
14370 "Minimum frequency of read lines",
14371 "Maximum frequency of read lines",
14372 "Global quantum number list (space-separated)",
14373 "Local quantum number list (space-separated)",
14374 "Normalization option, see *abs_linesSetNormalization*",
14375 "Mirroring option, see *abs_linesSetMirroring*",
14376 "Population option, see *abs_linesSetPopulation*",
14377 "Lineshape option, see *abs_linesSetLineShapeType*",
14378 "Cutoff option, see *abs_linesSetCutoff*",
14379 "Cutoff value, see *abs_linesSetCutoff*",
14380 "Line mixing limit, see *abs_linesSetLinemixingLimit*")));
14386 "Be careful setting the options!\n"),
14387 AUTHORS(
"Thomas Kuhn",
"Richard Larsson"),
14393 GIN(
"filename",
"fmin",
"fmax",
"globalquantumnumbers",
14394 "localquantumnumbers",
"normalization_option",
"mirroring_option",
14395 "population_option",
"lineshapetype_option",
"cutoff_option",
14396 "cutoff_value",
"linemixinglimit_value"),
14397 GIN_TYPE(
"String",
"Numeric",
"Numeric",
"String",
"String",
"String",
14398 "String",
"String",
"String",
"String",
"Numeric",
"Numeric"),
14400 "None",
"750e9",
"-1"),
14402 "Minimum frequency of read lines",
14403 "Maximum frequency of read lines",
14404 "Global quantum number list (space-separated)",
14405 "Local quantum number list (space-separated)",
14406 "Normalization option, see *abs_linesSetNormalization*",
14407 "Mirroring option, see *abs_linesSetMirroring*",
14408 "Population option, see *abs_linesSetPopulation*",
14409 "Lineshape option, see *abs_linesSetLineShapeType*",
14410 "Cutoff option, see *abs_linesSetCutoff*",
14411 "Cutoff value, see *abs_linesSetCutoff*",
14412 "Line mixing limit, see *abs_linesSetLinemixingLimit*")));
14415 NAME(
"abs_linesTruncateGlobalQuantumNumbers"),
14416 DESCRIPTION(
"Truncates all global quantum numbers\n" 14417 "and then recombine the line list.\n"),
14430 NAME(
"abs_linesWriteSplitXML"),
14431 DESCRIPTION(
"Writes a split catalog, AbsorptionLines by AbsorptionLines.\n" 14433 "There will be one unique file generated per AbsorptionLines in *abs_lines*.\n" 14435 "The names of these files will be:\n" 14436 "\tbasename+\".\"+AbsorptionLines.SpeciesName()+\".\"+to_string(N)+\".xml\"\n" 14437 "where N>=0 and the species name is something line \"H2O\".\n"),
14443 IN(
"output_file_format",
"abs_lines"),
14447 GIN_DESC(
"Path to store the files at")));
14450 NAME(
"abs_linesWriteSpeciesSplitXML"),
14451 DESCRIPTION(
"As *abs_linesWriteSplitXML* but writes an array\n" 14458 IN(
"output_file_format",
"abs_lines"),
14462 GIN_DESC(
"Path to store the files at")));
14465 NAME(
"abs_lines_per_speciesWriteSplitXML"),
14468 "In addition, the structure of the files generated will not care about\n" 14469 "generating identifiers for the order in *abs_species*\n"),
14475 IN(
"output_file_format",
"abs_lines_per_species"),
14479 GIN_DESC(
"Path to store the files at")));
14482 NAME(
"abs_lines_per_speciesWriteSpeciesSplitXML"),
14483 DESCRIPTION(
"See *abs_linesWriteSpeciesSplitXML*\n" 14485 "In addition, the structure of the files generated will not care about\n" 14486 "generating identifiers for the order in *abs_species*\n"),
14492 IN(
"output_file_format",
"abs_lines_per_species"),
14496 GIN_DESC(
"Path to store the files at")));
14499 NAME(
"ReadNetCDF"),
14500 DESCRIPTION(
"Reads a workspace variable from a NetCDF file.\n" 14502 "This method can read variables of any group.\n" 14504 "If the filename is omitted, the variable is read\n" 14505 "from <basename>.<variable_name>.nc.\n"),
14509 GOUT_TYPE(
"Vector, Matrix, Tensor3, Tensor4, Tensor5, ArrayOfVector," 14510 "ArrayOfMatrix, GasAbsLookup"),
14516 GIN_DESC(
"Name of the NetCDF file."),
14526 "Reads a workspace variable from an XML file.\n" 14528 "This method can read variables of any group.\n" 14530 "If the filename is omitted, the variable is read\n" 14531 "from <basename>.<variable_name>.xml.\n" 14532 "If the given filename does not exist, this method will\n" 14533 "also look for files with an added .xml, .xml.gz and .gz extension\n"),
14543 GIN_DESC(
"Name of the XML file."),
14551 NAME(
"ReadXMLIndexed"),
14552 DESCRIPTION(
"As *ReadXML*, but reads indexed file names.\n" 14554 "The variable is read from a file with name:\n" 14555 " <filename>.<file_index>.xml.\n" 14556 "where <file_index> is the value of *file_index*.\n" 14558 "This means that *filename* shall here not include the .xml\n" 14559 "extension. Omitting filename works as for *ReadXML*.\n"),
14564 GOUT_DESC(
"Workspace variable to be read."),
14566 GIN(
"filename",
"digits"),
14570 "File name. See above.",
14571 "Equalize the widths of all numbers by padding with zeros as necessary.\n" 14572 "0 means no padding (default)."),
14582 "Reduces a larger class to a smaller class of same size.\n" 14584 "The Reduce command reduces all \"1\"-dimensions to nil. Examples:\n" 14585 "\t1) 1 Vector can be reduced to a Numeric\n" 14586 "\t2) 2x1 Matrix can be reduced to 2 Vector\n" 14587 "\t3) 1x3x1 Tensor3 can be reduced to 3 Vector\n" 14588 "\t4) 1x1x1x1 Tensor4 can be reduced to a Numeric\n" 14589 "\t5) 3x1x4x1x5 Tensor5 can only be reduced to 3x4x5 Tensor3\n" 14590 "\t6) 1x1x1x1x2x3 Tensor6 can be reduced to 2x3 Matrix\n" 14591 "\t7) 2x3x4x5x6x7x1 Tensor7 can be reduced to 2x3x4x5x6x7 Tensor6\n" 14593 AUTHORS(
"Oliver Lemke",
"Richard Larsson"),
14596 GOUT_TYPE(
"Numeric, Numeric, Numeric, Numeric, Numeric, Numeric, Numeric," 14597 "Vector, Vector, Vector, Vector, Vector, Vector," 14598 "Matrix, Matrix, Matrix, Matrix, Matrix," 14599 "Tensor3, Tensor3, Tensor3, Tensor3," 14600 "Tensor4, Tensor4, Tensor4," 14601 "Tensor5, Tensor5," 14606 GIN_TYPE(
"Vector, Matrix, Tensor3, Tensor4, Tensor5, Tensor6, Tensor7," 14607 "Matrix, Tensor3, Tensor4, Tensor5, Tensor6, Tensor7," 14608 "Tensor3, Tensor4, Tensor5, Tensor6, Tensor7," 14609 "Tensor4, Tensor5, Tensor6, Tensor7," 14610 "Tensor5, Tensor6, Tensor7," 14611 "Tensor6, Tensor7," 14614 GIN_DESC(
"Over-dimensioned input"),
14620 NAME(
"refellipsoidEarth"),
14622 "Earth reference ellipsoids.\n" 14624 "The reference ellipsoid (*refellipsoid*) is set to model the Earth,\n" 14625 "following different models. The options are:\n" 14627 " \"Sphere\" : A spherical Earth. The radius is set following\n" 14628 " the value set for the Earth radius in constants.cc.\n" 14630 " \"WGS84\" : The reference ellipsoid used by the GPS system.\n" 14631 " Should be the standard choice for a non-spherical Earth.\n"),
14633 OUT(
"refellipsoid"),
14641 GIN_DESC(
"Model ellipsoid to use. Options listed above.")));
14647 "From Wikipedia\n"),
14649 OUT(
"refellipsoid"),
14657 GIN_DESC(
"Model ellipsoid to use. Options listed above.")));
14660 NAME(
"refellipsoidForAzimuth"),
14662 "Conversion of 3D ellipsoid to 1D curvature radius.\n" 14664 "Calculates the curvature radius for the given latitude and azimuth\n" 14665 "angle, and uses this to set a spherical reference ellipsoid\n" 14666 "suitable for 1D calculations. The curvature radius is a better\n" 14667 "local approximation than using the local ellipsoid radius.\n" 14669 "The used expression assumes a geodetic latitude, but also\n" 14670 "latitudes should be OK as using this method anyhow signifies\n" 14671 "an approximation.\n"),
14673 OUT(
"refellipsoid"),
14677 IN(
"refellipsoid"),
14678 GIN(
"latitude",
"azimuth"),
14681 GIN_DESC(
"Latitude.",
"Azimuth angle.")));
14684 NAME(
"refellipsoidEuropa"),
14686 "Io reference ellipsoids.\n" 14688 "The reference ellipsoid (*refellipsoid*) is set to model Io,\n" 14689 "folowing different models. The options are:\n" 14691 " \"Sphere\" : A spherical planetesimal. The radius is taken from\n" 14692 " report of the IAU/IAG Working Group.\n"),
14694 OUT(
"refellipsoid"),
14702 GIN_DESC(
"Model ellipsoid to use. Options listed above.")));
14705 NAME(
"refellipsoidIo"),
14707 "Io reference ellipsoids.\n" 14709 "The reference ellipsoid (*refellipsoid*) is set to model Io,\n" 14710 "folowing different models. The options are:\n" 14712 " \"Sphere\" : A spherical planetesimal. The radius is taken from\n" 14713 " report of the IAU/IAG Working Group.\n"),
14715 OUT(
"refellipsoid"),
14723 GIN_DESC(
"Model ellipsoid to use. Options listed above.")));
14726 NAME(
"refellipsoidJupiter"),
14728 "Jupiter reference ellipsoids.\n" 14730 "The reference ellipsoid (*refellipsoid*) is set to model Jupiter,\n" 14731 "folowing different models. The options are:\n" 14733 " \"Sphere\" : A spherical planet. The radius is taken from a\n" 14734 " report of the IAU/IAG Working Group.\n" 14736 " \"Ellipsoid\" : A reference ellipsoid with parameters taken from\n" 14737 " a report of the IAU/IAG Working Group.\n"),
14739 OUT(
"refellipsoid"),
14747 GIN_DESC(
"Model ellipsoid to use. Options listed above.")));
14750 NAME(
"refellipsoidMars"),
14752 "Mars reference ellipsoids.\n" 14754 "The reference ellipsoid (*refellipsoid*) is set to model Mars,\n" 14755 "folowing different models. The options are:\n" 14757 " \"Sphere\" : A spherical planet. The radius is taken from a\n" 14758 " report of the IAU/IAG Working Group.\n" 14760 " \"Ellipsoid\" : A reference ellipsoid with parameters taken from\n" 14761 " a report of the IAU/IAG Working Group.\n"),
14763 OUT(
"refellipsoid"),
14771 GIN_DESC(
"Model ellipsoid to use. Options listed above.")));
14774 NAME(
"refellipsoidMoon"),
14776 "Moon reference ellipsoids.\n" 14778 "The reference ellipsoid (*refellipsoid*) is set to model Moon,\n" 14779 "folowing different models. The options are:\n" 14781 " \"Sphere\" : A spherical planet. The radius is taken from a\n" 14782 " report of the IAU/IAG Working Group.\n" 14784 " \"Ellipsoid\" : A reference ellipsoid with parameters taken from\n" 14785 " Wikepedia (see code for details). The IAU/IAG working group\n" 14786 " defines the Moon ellipsoid to be a sphere.\n"),
14788 OUT(
"refellipsoid"),
14796 GIN_DESC(
"Model ellipsoid to use. Options listed above.")));
14799 NAME(
"refellipsoidOrbitPlane"),
14801 "Conversion of 3D ellipsoid to 2D orbit track geometry.\n" 14803 "Determines an approximate reference ellipsoid following an orbit\n" 14804 "track. The new ellipsoid is determined simply, by determining the\n" 14805 "radius at the maximum latitude and from this value calculate a new\n" 14806 "new eccentricity. The orbit is specified by giving the orbit\n" 14807 "inclination (*orbitinc*), that is normally a value around 100 deg\n" 14808 "for polar sun-synchronous orbits.\n"),
14810 OUT(
"refellipsoid"),
14814 IN(
"refellipsoid"),
14821 NAME(
"refellipsoidSet"),
14823 "Manual setting of the reference ellipsoid.\n" 14825 "The two values of *refellipsoid* can here be set manually. The two\n" 14826 "arguments correspond directly to first and second element of\n" 14827 "*refellipsoid*.\n"),
14829 OUT(
"refellipsoid"),
14837 GIN_DESC(
"Average or equatorial radius.",
"Eccentricity")));
14840 NAME(
"refellipsoidVenus"),
14842 "Venus reference ellipsoids.\n" 14844 "The reference ellipsoid (*refellipsoid*) is set to model Venus,\n" 14845 "folowing different models. The options are:\n" 14847 " \"Sphere\" : A spherical planet. The radius is taken from a\n" 14848 " report of the IAU/IAG Working Group.\n" 14850 "According to the report used above, the Venus ellipsoid lacks\n" 14851 "eccentricity and no further models should be required.\n"),
14853 OUT(
"refellipsoid"),
14861 GIN_DESC(
"Model ellipsoid to use. Options listed above.")));
14864 NAME(
"refr_index_airFreeElectrons"),
14866 "Microwave refractive index due to free electrons.\n" 14868 "The refractive index of free electrons is added to *refr_index_air*.\n" 14869 "To obtain the complete value, *refr_index_air* should be set to 1\n" 14870 "before calling this WSM. This applies also to *refr_index_air_group*.\n" 14872 "The expression applied is n=sqrt(1-wp^2/w^2) where wp is the plasma\n" 14873 "frequency, and w is the angular frequency (the function returns\n" 14874 "n-1, that here is slightly negative). This expressions is found in\n" 14875 "many textbooks, e.g. Rybicki and Lightman (1979). The above refers\n" 14876 "to *refr_index_air*. *refr_index_air_group* is sqrt(1+wp^2/w^2).\n" 14878 "The expression is dispersive. The frequency applied is the mean of\n" 14879 "first and last element of *f_grid* is selected. This frequency must\n" 14880 "be at least twice the plasma frequency.\n" 14882 "An error is issued if free electrons not are part of *abs_species*\n" 14883 "(and there exist a corresponding \"vmr\"-value). This demand is\n" 14884 "removed if *demand_vmr_value* is set to 0, but use this option\n" 14887 OUT(
"refr_index_air",
"refr_index_air_group"),
14891 IN(
"refr_index_air",
14892 "refr_index_air_group",
14896 GIN(
"demand_vmr_value"),
14899 GIN_DESC(
"Flag to control if it is demanded that free electrons are " 14900 "in *abs_species*. Default is that this is demanded.")));
14903 NAME(
"refr_index_airInfraredEarth"),
14905 "Calculates the IR refractive index due to gases in the\n" 14906 "Earth's atmosphere.\n" 14908 "Only refractivity of dry air is considered. The formula used is\n" 14909 "contributed by Michael Hoepfner, Forschungszentrum Karlsruhe.\n" 14911 "The refractivity of dry air is added to *refr_index_air*. To obtain\n" 14912 "the complete value, *refr_index_air* should be set to 1 before\n" 14913 "calling this WSM. This applies also to *refr_index_air_group*.\n" 14915 "The expression used is non-dispersive. Hence, *refr_index_air* and\n" 14916 "*refr_index_air_group* are identical.\n"),
14918 OUT(
"refr_index_air",
"refr_index_air_group"),
14922 IN(
"refr_index_air",
14923 "refr_index_air_group",
14925 "rtp_temperature"),
14932 NAME(
"refr_index_airMicrowavesEarth"),
14934 "Microwave refractive index in Earth's atmosphere.\n" 14936 "This method just considers pressure, temperature and water\n" 14937 "vapour, which should suffice for Earth. For a more general\n" 14938 "method, see *refr_index_airMicrowavesGeneral*.\n" 14940 "The refractivity of dry air and water vapour is added to\n" 14941 "*refr_index_air*. To obtain the complete value, *refr_index_air*\n" 14942 "should be set to 1 before calling this WSM. This applies also to\n" 14943 "*refr_index_air_group.\n" 14945 "The expression used is non-dispersive. Hence, *refr_index_air*\n" 14946 "and *refr_index_air_group* are identical.\n" 14948 "The standard expression for Earth and microwaves is used:\n" 14949 " N = k1*(P-e)/T + k2*e/T + k3*e/T^2\n" 14950 "where N is refractivity, P is pressure, T is temperature and\n" 14951 "e is water vapour partial pressure. The values of k1, k2 and k3\n" 14952 "can be modified.\n" 14954 "Many different values of k1, k2 and k3 can be found in the\n" 14955 "literature. The default values applied here are taken from\n" 14956 "Bevis et al., GPS meteorology: Mapping ..., JAM, 1994.\n" 14957 "More specifically, these value are found in Table 1, listed\n" 14958 "as \"Present study\". Note that in ARTS Pa is used for pressure\n" 14959 "and k1, k2 and k3 must be adjusted accordingly.\n"),
14961 OUT(
"refr_index_air",
"refr_index_air_group"),
14965 IN(
"refr_index_air",
14966 "refr_index_air_group",
14971 GIN(
"k1",
"k2",
"k3"),
14972 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric"),
14974 GIN_DESC(
"Coefficient a, see above",
14975 "Coefficient b, see above",
14976 "Coefficient c, see above")));
14979 NAME(
"refr_index_airMicrowavesGeneral"),
14981 "Microwave refractive index due to gases in planetary atmospheres.\n" 14983 "The refractivity of a specified gas mixture is calculated and added\n" 14984 "to *refr_index_air*. To obtain the complete value, *refr_index_air*\n" 14985 "should be set to 1 before calling this WSM. This applies also to\n" 14986 "*refr_index_air_group.\n" 14988 "The expression used is non-dispersive. Hence, *refr_index_air* and\n" 14989 "*refr_index_air_group* are identical.\n" 14991 "Uses the methodology introduced by Newell&Baird (1965) for calculating\n" 14992 "refractivity of variable gas mixtures based on refractivity of the\n" 14993 "individual gases at reference conditions. Assuming ideal gas law for\n" 14994 "converting reference refractivity to actual pressure and temperature\n" 14995 "conditions. Reference refractivities are also taken from Newell&Baird (1965)\n" 14996 "and are vailable for N2, O2, CO2, H2, and He. Additionally, H2O reference\n" 14997 "refractivity has been derived from H2O contribution in Thayer (see\n" 14998 "*refr_index_airMicrowavesEarth*) for T0=273.15K. Any mixture of these gases\n" 14999 "can be taken into account.\n"),
15001 OUT(
"refr_index_air",
"refr_index_air_group"),
15005 IN(
"refr_index_air",
15006 "refr_index_air_group",
15017 NAME(
"retrievalDefClose"),
15019 "Closes the definition of retrieval quantities and correlations and\n" 15020 "prepares related WSVs for the retrieval.\n" 15022 "This function calls jacobianClose and checks that the corvariance matrices\n" 15023 "are consistent with the Jacobian.\n"),
15024 AUTHORS(
"Simon Pfreundschuh"),
15025 OUT(
"jacobian_do",
"jacobian_agenda",
"retrieval_checked"),
15029 IN(
"jacobian_agenda",
"covmat_sx",
"jacobian_quantities"),
15036 NAME(
"retrievalAddAbsSpecies"),
15038 "Adds an absorption species to the retrieval quantities.\n" 15040 "Similar to *jacobianAddAbsSpecies* but also sets the corresponding block in\n" 15041 "*covmat_sx* to the matrices provided in *covmat_block* and *covmat_inv_block*.\n" 15042 "The dimensions of *covmat_block* are required to agree with the dimensions of the\n" 15043 "retrieval grid.\n" 15045 "*covmat_inv_block* must be either empty or the same dimension as *covmat_block*.\n" 15046 "If provided, this matrix will be used as the inverse for the covariance matrix block\n" 15047 "and numerical inversion of this block is thus avoided. Note, however, that this is\n" 15048 "only effective if this block is uncorrelated with any other retrieval quantity.\n" 15050 "For number and order of elements added to *x*, see *jacobianAddAbsSpecies*.\n"),
15051 AUTHORS(
"Simon Pfreundschuh"),
15052 OUT(
"covmat_sx",
"jacobian_quantities",
"jacobian_agenda"),
15057 "jacobian_quantities",
15061 "covmat_inv_block",
15065 GIN(
"g1",
"g2",
"g3",
"species",
"unit",
"for_species_tag"),
15066 GIN_TYPE(
"Vector",
"Vector",
"Vector",
"String",
"String",
"Index"),
15068 GIN_DESC(
"Pressure retrieval grid.",
15069 "Latitude retrieval grid.",
15070 "Longitude retreival grid.",
15071 "The species tag of the retrieval quantity.",
15072 "Retrieval unit. See above.",
15073 "Index-bool for acting on species tags or species."),
15080 NAME(
"retrievalAddFreqShift"),
15082 "Same as *jacobianAddFreqShift* but also adds the correlation block\n" 15083 "contained in *covmat_block* and *covmat_inv_block* to *covmat_sx*.\n" 15085 "For number and order of elements added to *x*, see *jacobianAddFreqShift*.\n"),
15086 AUTHORS(
"Simon Pfreundschuh"),
15087 OUT(
"covmat_sx",
"jacobian_quantities",
"jacobian_agenda"),
15093 "covmat_inv_block",
15094 "jacobian_quantities",
15100 GIN_DESC(
"Size of perturbation to apply.")));
15103 NAME(
"retrievalAddFreqStretch"),
15105 "Same as *jacobianAddFreqShift* but also adds the correlation block\n" 15106 "contained in *covmat_block* and *covmat_inv_block* to *covmat_sx*.\n" 15108 "For number and order of elements added to *x*, see *jacobianAddFreqStretch*.\n"),
15109 AUTHORS(
"Simon Pfreundschuh"),
15110 OUT(
"covmat_sx",
"jacobian_quantities",
"jacobian_agenda"),
15114 IN(
"jacobian_quantities",
15118 "covmat_inv_block"),
15122 GIN_DESC(
"Size of perturbation to apply.")));
15125 NAME(
"retrievalDefInit"),
15127 "Begin retrieval definition section.\n" 15129 "This function initialises all variables required for defining\n" 15130 "retrieval quantities and corresponding covariance matrices.\n" 15131 "By default, Jacobian quantities should be added withing the.\n" 15132 "retrieval definition section. If Jacobian quantities are\n" 15133 "defined separately *initialize_jacobian* must be set to 0,\n" 15134 "otherwise the quantities will be discarded.\n"),
15135 AUTHORS(
"Simon Pfreundschuh"),
15139 "covmat_inv_block",
15140 "jacobian_quantities",
15141 "jacobian_agenda"),
15146 GIN(
"initialize_jacobian"),
15149 GIN_DESC(
"Flag whether or not to (re)initialize Jacobian-related\n" 15150 "quantities. Set to 0 if Jacobian is already defined.")));
15153 NAME(
"retrievalAddCatalogParameter"),
15155 "Similar to *jacobianAddBasicCatalogParameter* but also adds a corresponding\n" 15156 "block to *covmat_sx* with the given *var* as variance value.\n" 15158 "For number and order of elements added to *x*,\n" 15159 "see *jacobianAddBasicCatalogParameter*.\n"),
15160 AUTHORS(
"Simon Pfreundschuh"),
15161 OUT(
"covmat_sx",
"jacobian_quantities",
"jacobian_agenda"),
15165 IN(
"covmat_sx",
"jacobian_quantities",
"jacobian_agenda"),
15166 GIN(
"catalog_identity",
"catalog_parameter",
"var"),
15167 GIN_TYPE(
"QuantumIdentifier",
"String",
"Numeric"),
15169 GIN_DESC(
"The catalog line matching information.",
15170 "The catalog parameter of the retrieval quantity.",
15171 "The variance of the catalog parameter.")));
15174 NAME(
"retrievalAddCatalogParameters"),
15176 "Same as *jacobianAddBasicCatalogParameters* but also adds a new\n" 15177 "block to *covmat_sx* using the matrices in *covmat_block* and\n" 15178 "*covmat_inv_block*.\n" 15180 "If *covmat_inv_block* is non-empty, it is used as inverse for the added block\n" 15181 "which avoids its numerical computation.\n" 15183 "For number and order of elements added to *x*,\n" 15184 "see *jacobianAddBasicCatalogParameters*.\n"),
15185 AUTHORS(
"Simon Pfreundschuh"),
15186 OUT(
"covmat_sx",
"jacobian_quantities",
"jacobian_agenda"),
15191 "jacobian_quantities",
15194 "covmat_inv_block"),
15195 GIN(
"catalog_identities",
"catalog_parameters"),
15196 GIN_TYPE(
"ArrayOfQuantumIdentifier",
"ArrayOfString"),
15198 GIN_DESC(
"The catalog line matching informations.",
15199 "The catalog parameters of the retrieval quantity.")));
15202 NAME(
"retrievalAddMagField"),
15204 "Same as *jacobianAddMagField* but also adds a new block to *covmat_sx*\n" 15205 "using the matrices in *covmat_block* and *covmat_inv_block*.\n" 15207 "If *covmat_inv_block* is non-empty, it is used as inverse for the added block\n" 15208 "which avoids its numerical computation.\n" 15210 "For number and order of elements added to *x*, see *jacobianAddMagField*.\n"),
15211 AUTHORS(
"Simon Pfreundschuh"),
15212 OUT(
"covmat_sx",
"jacobian_quantities",
"jacobian_agenda"),
15217 "jacobian_quantities",
15221 "covmat_inv_block",
15225 GIN(
"g1",
"g2",
"g3",
"component",
"dB"),
15226 GIN_TYPE(
"Vector",
"Vector",
"Vector",
"String",
"Numeric"),
15228 GIN_DESC(
"Pressure retrieval grid.",
15229 "Latitude retrieval grid.",
15230 "Longitude retreival grid.",
15231 "Magnetic field component to retrieve",
15232 "Magnetic field perturbation")));
15235 NAME(
"retrievalAddPointingZa"),
15237 "Same as *jacobianAddPointingZa* but also adds a new block to *covmat_sx*\n" 15238 "using the matrices in *covmat_block* and *covmat_inv_block*.\n" 15240 "If *covmat_inv_block* is non-empty, it is used as inverse for the added block\n" 15241 "which avoids its numerical computation.\n" 15243 "For number and order of elements added to *x*, see *jacobianAddPointingZa*.\n"),
15244 AUTHORS(
"Simon Pfreundschuh"),
15245 OUT(
"covmat_sx",
"jacobian_quantities",
"jacobian_agenda"),
15250 "jacobian_quantities",
15253 "covmat_inv_block",
15256 GIN(
"poly_order",
"calcmode",
"dza"),
15257 GIN_TYPE(
"Index",
"String",
"Numeric"),
15259 GIN_DESC(
"Order of polynomial to describe the time variation of " 15260 "pointing off-sets.",
15261 "Calculation method. See above",
15262 "Size of perturbation to apply (when applicable).")));
15265 NAME(
"retrievalAddPolyfit"),
15267 "Same as *jacobianAddPolyfit* but also adds a new block to *covmat_sx*\n" 15268 "using the matrices in *covmat_block* and *covmat_inv_block*.\n" 15270 "If *covmat_inv_block* is non-empty, it is used as inverse for the added block\n" 15271 "which avoids its numerical computation.\n" 15273 "For number and order of elements added to *x*, see *jacobianAddPolyfit*.\n"),
15274 AUTHORS(
"Simon Pfreundschuh"),
15275 OUT(
"covmat_sx",
"jacobian_quantities",
"jacobian_agenda"),
15280 "jacobian_quantities",
15283 "covmat_inv_block",
15284 "sensor_response_pol_grid",
15285 "sensor_response_dlos_grid",
15288 "no_pol_variation",
15289 "no_los_variation",
15290 "no_mblock_variation"),
15291 GIN_TYPE(
"Index",
"Index",
"Index",
"Index"),
15293 GIN_DESC(
"Polynomial order to use for the fit.",
15294 "Set to 1 if the baseline off-set is the same for all " 15295 "Stokes components.",
15296 "Set to 1 if the baseline off-set is the same for all " 15297 "line-of-sights (inside each measurement block).",
15298 "Set to 1 if the baseline off-set is the same for all " 15299 "measurement blocks.")));
15302 NAME(
"retrievalAddScatSpecies"),
15304 "Same as *jacobianAddPolyfit* but also adds a new block to *covmat_sx*\n" 15305 "using the matrices in *covmat_block* and *covmat_inv_block*.\n" 15307 "If *covmat_inv_block* is non-empty, it is used as inverse for the added block\n" 15308 "which avoids its numerical computation.\n" 15310 "For number and order of elements added to *x*, see *jacobianAddScatSpecies*.\n"),
15311 AUTHORS(
"Simon Pfreundschuh"),
15312 OUT(
"covmat_sx",
"jacobian_quantities",
"jacobian_agenda"),
15317 "jacobian_quantities",
15321 "covmat_inv_block",
15325 GIN(
"g1",
"g2",
"g3",
"species",
"quantity"),
15326 GIN_TYPE(
"Vector",
"Vector",
"Vector",
"String",
"String"),
15329 "Pressure retrieval grid.",
15330 "Latitude retrieval grid.",
15331 "Longitude retreival grid.",
15332 "Name of scattering species, must match one element in *scat_species*.",
15333 "Retrieval quantity, e.g. \"IWC\"."),
15340 NAME(
"retrievalAddSinefit"),
15342 "Same as *jacobianAddSinefit* but also adds a new block to *covmat_sx*\n" 15343 "using the matrices in *covmat_block* and *covmat_inv_block*.\n" 15345 "If *covmat_inv_block* is non-empty, it is used as inverse for the added block\n" 15346 "which avoids its numerical computation.\n" 15348 "For number and order of elements added to *x*, see *jacobianAddSinefit*.\n"),
15349 AUTHORS(
"Simon Pfreundschuh"),
15350 OUT(
"covmat_sx",
"jacobian_quantities",
"jacobian_agenda"),
15355 "jacobian_quantities",
15358 "covmat_inv_block",
15359 "sensor_response_pol_grid",
15360 "sensor_response_dlos_grid",
15362 GIN(
"period_lengths",
15363 "no_pol_variation",
15364 "no_los_variation",
15365 "no_mblock_variation"),
15366 GIN_TYPE(
"Vector",
"Index",
"Index",
"Index"),
15368 GIN_DESC(
"Period lengths of the fit.",
15369 "Set to 1 if the baseline off-set is the same for all " 15370 "Stokes components.",
15371 "Set to 1 if the baseline off-set is the same for all " 15372 "line-of-sights (inside each measurement block).",
15373 "Set to 1 if the baseline off-set is the same for all " 15374 "measurement blocks.")));
15377 NAME(
"retrievalAddSpecialSpecies"),
15379 "Same as *jacobianAddSpecialSpecies* but also adds a new block to *covmat_sx*\n" 15380 "using the matrices in *covmat_block* and *covmat_inv_block*.\n" 15382 "If *covmat_inv_block* is non-empty, it is used as inverse for the added block\n" 15383 "which avoids its numerical computation.\n" 15385 "For number and order of elements added to *x*, see *jacobianAddSpecialSpecies*.\n"),
15386 AUTHORS(
"Simon Pfreundschuh"),
15387 OUT(
"covmat_sx",
"jacobian_quantities",
"jacobian_agenda"),
15392 "jacobian_quantities",
15396 "covmat_inv_block",
15400 GIN(
"g1",
"g2",
"g3",
"species"),
15401 GIN_TYPE(
"Vector",
"Vector",
"Vector",
"String"),
15403 GIN_DESC(
"Pressure retrieval grid.",
15404 "Latitude retrieval grid.",
15405 "Longitude retreival grid.",
15406 "The species of the retrieval quantity."),
15413 NAME(
"retrievalAddSurfaceQuantity"),
15415 "Same as *jacobianAddSurfaceQuantity* but also adds a new block to *covmat_sx*\n" 15416 "using the matrices in *covmat_block* and *covmat_inv_block*.\n" 15418 "If *covmat_inv_block* is non-empty, it is used as inverse for the added block\n" 15419 "which avoids its numerical computation.\n" 15421 "For number and order of elements added to *x*, see *jacobianAddSurfaceQuantity*.\n"),
15423 OUT(
"covmat_sx",
"jacobian_quantities",
"jacobian_agenda"),
15428 "jacobian_quantities",
15431 "covmat_inv_block",
15435 GIN(
"g1",
"g2",
"quantity"),
15436 GIN_TYPE(
"Vector",
"Vector",
"String"),
15438 GIN_DESC(
"Latitude retrieval grid.",
15439 "Longitude retreival grid.",
15440 "Retrieval quantity, e.g. \"Wind speed\".")));
15443 NAME(
"retrievalAddTemperature"),
15445 "Same as *jacobianAddTemperature* but also adds a new block to *covmat_sx*\n" 15446 "using the matrices in *covmat_block* and *covmat_inv_block*.\n" 15448 "If *covmat_inv_block* is non-empty, it is used as inverse for the added block\n" 15449 "which avoids its numerical computation.\n" 15451 "For number and order of elements added to *x*, see *jacobianAddTemperature*.\n"),
15452 AUTHORS(
"Simon Pfreundschuh"),
15453 OUT(
"covmat_sx",
"jacobian_quantities",
"jacobian_agenda"),
15458 "jacobian_quantities",
15462 "covmat_inv_block",
15466 GIN(
"g1",
"g2",
"g3",
"hse"),
15467 GIN_TYPE(
"Vector",
"Vector",
"Vector",
"String"),
15469 GIN_DESC(
"Pressure retrieval grid.",
15470 "Latitude retrieval grid.",
15471 "Longitude retreival grid.",
15472 "Flag to assume HSE or not (\"on\" or \"off\").")));
15475 NAME(
"retrievalAddWind"),
15477 "Same as *jacobianAddWind* but also adds a new block to *covmat_sx*\n" 15478 "using the matrices in *covmat_block* and *covmat_inv_block*.\n" 15480 "If *covmat_inv_block* is non-empty, it is used as inverse for the added block\n" 15481 "which avoids its numerical computation.\n" 15483 "For number and order of elements added to *x*, see *jacobianAddWind*.\n"),
15484 AUTHORS(
"Simon Pfreundschuh"),
15485 OUT(
"covmat_sx",
"jacobian_quantities",
"jacobian_agenda"),
15490 "jacobian_quantities",
15494 "covmat_inv_block",
15498 GIN(
"g1",
"g2",
"g3",
"component",
"dfrequency"),
15499 GIN_TYPE(
"Vector",
"Vector",
"Vector",
"String",
"Numeric"),
15501 GIN_DESC(
"Pressure retrieval grid.",
15502 "Latitude retrieval grid.",
15503 "Longitude retrieval grid.",
15504 "Wind component to retrieve",
15505 "This is the frequency perturbation")));
15508 NAME(
"retrievalErrorsExtract"),
15510 "Extract retrieval error from covariance matrices.\n" 15512 "Extracts the error estimates for the retrieved quantities from the covariance\n" 15513 "matrices for the error due to measurement noise *covmat_so* and the error due\n" 15514 "to limited resolution of the observation system *covmat_ss* and stores them in\n" 15515 "the vectors *retrieval_eo* and *retrieval_ss*, respectively." 15517 "To etract these errors, first the convariance matrices of which the errors \n" 15518 "should be extracted have to be computed using the WSMs *covmat_soCalc*\n" 15519 "and *covmat_ssCalc* or set to be empty in order to be ignored. Note, however,\n" 15520 "that this will also set the corresponding error vector to be empty.\n"),
15521 AUTHORS(
"Simon Pfreundschuh"),
15522 OUT(
"retrieval_eo",
"retrieval_ss"),
15526 IN(
"covmat_so",
"covmat_ss"),
15535 "Interface to the PolRadTran RT4 scattering solver (by F. Evans).\n" 15537 "RT4 provides the radiation field (*cloudbox_field*) from a vector\n" 15538 "1D scattering solution assuming a plane-parallel atmosphere (flat\n" 15539 "Earth). It calculates up to two Stokes parameters (*stokes_dim*<=2),\n" 15540 "i.e., all azimuthally randomly oriented particles are allowed (this\n" 15541 "also includes macroscopically isotropic particles). Refraction is\n" 15542 "not taken into account.\n" 15544 "The scattering solution is internally obtained over the full\n" 15545 "(plane-parallel) atmosphere, i.e. not confined to the cloudbox.\n" 15546 "However, the radiation field output is limited to the cloudbox.\n" 15547 "This allows to consider clearsky RT through a non-spherical\n" 15548 "atmosphere outside the cloudbox improving the RT solution for\n" 15549 "non-plane-parallel media compared to the plain RT4 output.\n" 15551 "*nstreams* is the number of polar angles taken into account\n" 15552 "internally in the scattering solution. That is, *nstreams*\n" 15553 "determines the angular resolution, hence the accuracy, of the\n" 15554 "scattering solution. The more anisotropic the bulk scattering\n" 15555 "matrix, the more streams are required. The computational burden\n" 15556 "increases approximately with the third power of *nstreams*.\n" 15557 "The default value (*nstreams*=16) was found to be sufficient for\n" 15558 "most microwave scattering calculations. It is likely insufficient\n" 15559 "for IR calculations involving ice clouds, though.\n" 15561 "Here, *za_grid* is NOT an input parameter, but output, and its\n" 15562 "size equals *nstreams* or *nstreams*+2 (Gauss-Legendre and Double\n" 15563 "Gauss quadratures in case *add_straight_angles*=1) (the reason is\n" 15564 "that the computational burden is high for additional angles,\n" 15565 "regardless whether they are quadrature angles or not; hence the\n" 15566 "quadrature angles supplemented with 0 and 180deg are considered to\n" 15567 "provide the best radiation field for a given effort).\n" 15569 "The *auto_inc_nstreams* feature can be used to increase the number\n" 15570 "of streams used internally in the scattering solution when found\n" 15572 "NOTE: this number-of-streams increase is only internally - the\n" 15573 "angular dimension of the output *cloudbox_field* is fixed to the\n" 15574 "*nstreams* given as input to this WSM.\n" 15576 "Quadrature methods available are: 'L'obatto, 'G'auss-Legendre and\n" 15577 "'D'ouble Gauss quadrature.\n" 15579 "This WSM applies *surface_rtprop_agenda* to derive reflection\n" 15580 "matrix and surface emission vector that are directly feed into\n" 15581 "RT4's core solver (instead of their RT4-internal calculation as\n" 15582 "used by *RT4CalcWithRT4Surface*).\n" 15584 "Known issues of ARTS implementation:\n" 15585 "- TOA incoming radiation is so far assumed as blackbody cosmic\n" 15586 " background (temperature taken from the ARTS-internal constant).\n" 15588 "The keyword *pfct_method* allows to choose the method to extract the\n" 15589 "scattering matrix. 'interpolate' considers temperature dependence,\n" 15590 "others neglect it by chosing one specific temperature grid point\n" 15591 "from the single scattering data: 'low' choses the lowest T-point,\n" 15592 "'high' the highest T-point, and 'median' the median T-point. As\n" 15593 "different scattering elements can have different temperature grids,\n" 15594 "the actual temperature value used can differ between the scattering\n" 15596 "Note that this keyword solely affects the scattering matrix;\n" 15597 "extinction matrix and absorption vector are always interpolated to\n" 15598 "the actual temperature.\n"),
15600 OUT(
"cloudbox_field",
"za_grid",
"aa_grid"),
15604 IN(
"atmfields_checked",
15606 "scat_data_checked",
15607 "cloudbox_checked",
15610 "propmat_clearsky_agenda",
15611 "surface_rtprop_agenda",
15625 "add_straight_angles",
15626 "pfct_aa_grid_size",
15627 "auto_inc_nstreams",
15642 GIN_DEFAULT(
"16",
"median",
"D",
"1",
"19",
"0",
"0",
"1",
"0",
"1e-6"),
15643 GIN_DESC(
"Number of polar angle directions (streams) in RT4" 15644 " solution (must be an even number).",
15645 "Flag which method to apply to derive phase function (for" 15646 " available options see above).",
15647 "Flag which quadrature to apply in RT4 solution (for" 15648 " available options see above).",
15649 "Flag whether to include nadir and zenith as explicit" 15650 " directions (only effective for quad_type G and D).",
15651 "Number of azimuthal angle grid points to consider in" 15652 " Fourier series decomposition of scattering matrix (only" 15653 " applied for randomly oriented scattering elements)",
15654 "Flag whether to internally increase nstreams (individually" 15655 " per frequency) if norm of (bulk) scattering matrix is not" 15656 " preserved properly. If 0, no adaptation is done. Else" 15657 " *auto_inc_nstreams* gives the maximum number of streams to" 15658 " increase to. Note that the output *cloudbox_field* remains" 15659 " with angular dimension of *nstreams*, only the internal" 15660 " solution is adapted (and then interpolated to the" 15661 " lower-resolution output angular grid).",
15662 "For *auto_inc_nstreams*>0, flag whether to not fail even if" 15663 " scattering matrix norm is not preserved when maximum stream" 15664 " number is reached. Internal RT4 calculations is then" 15665 " performed with nstreams=*auto_inc_nstreams*.",
15666 "For *auto_inc_nstreams*>0, polar angle interpolation order" 15667 " for interpolation from internal increased stream to" 15668 " originally requested nstreams-ifield.",
15669 "For *auto_inc_nstreams*>0, flag whether to do polar angle" 15670 " interpolation in cosine (='mu') space.",
15671 "Maximum optical depth of infinitesimal layer (where single" 15672 " scattering approximation is assumed to apply).")));
15675 NAME(
"RT4CalcWithRT4Surface"),
15677 "As RT4Calc except for using RT4's proprietary surface type handling.\n" 15679 "This WSM is only indented for testing purposes.\n" 15681 "The following surface type/property methods are available and\n" 15682 "require the the following input:\n" 15683 "- 'L'ambertian: *surface_scalar_reflectivity*, *surface_skin_t*\n" 15684 "- 'F'resnel: *surface_complex_refr_index*, *surface_skin_t*\n" 15685 "- 'S'pecular: *surface_reflectivity*, *surface_skin_t*\n" 15686 "'L' and 'F' use proprietary RT4 methods, 'S' uses RT4's Fresnel\n" 15687 "methods modified to behave similar to ARTS'\n" 15688 "*surfaceFlatReflectivity*.\n"),
15690 OUT(
"cloudbox_field",
"za_grid",
"aa_grid"),
15694 IN(
"atmfields_checked",
15696 "scat_data_checked",
15697 "cloudbox_checked",
15700 "propmat_clearsky_agenda",
15712 "surface_scalar_reflectivity",
15713 "surface_reflectivity",
15714 "surface_complex_refr_index"),
15719 "add_straight_angles",
15720 "pfct_aa_grid_size",
15721 "auto_inc_nstreams",
15738 "16",
"median",
"A",
"D",
"1",
"19",
"0",
"0",
"1",
"0",
"1e-6"),
15739 GIN_DESC(
"Number of polar angle directions (streams) in RT4" 15740 " solution (must be an even number).",
15741 "Flag which method to apply to derive phase function (for" 15742 " available options see above).",
15743 "Flag which surface type/surface property method to use" 15744 " (for available options see above).",
15745 "Flag which quadrature to apply in RT4 solution (for" 15746 " available options see above).",
15747 "Flag whether to include nadir and zenith as explicit" 15748 " directions (only effective for quad_type G and D).",
15749 "Number of azimuthal angle grid points to consider in" 15750 " Fourier series decomposition of scattering matrix (only" 15751 " applied for randomly oriented scattering elements)",
15752 "Flag whether to internally increase nstreams (individually" 15753 " per frequency) if norm of (bulk) scattering matrix is not" 15754 " preserved properly. If 0, no adaptation is done. Else" 15755 " *auto_inc_nstreams* gives the maximum number of streams to" 15757 "For *auto_inc_nstreams*>0, flag whether to not fail even if" 15758 " scattering matrix norm is not preserved when maximum stream" 15759 " number is reached. Internal RT4 calculations is then" 15760 " performed with nstreams=*auto_inc_nstreams*.",
15761 "For *auto_inc_nstreams*>0, polar angle interpolation order" 15762 " for interpolation from internal increased stream to" 15763 " originally requested nstreams-ifield.",
15764 "For *auto_inc_nstreams*>0, flag whether to do polar angle" 15765 " interpolation in cosine (='mu') space.",
15766 "Maximum optical depth of infinitesimal layer (where single" 15767 " scattering approximation is assumed to apply).")));
15772 "RT4 validation test.\n" 15774 "Executes test case testc shipped with PolRadTran/RT4 code (but uses\n" 15775 "data files converted to arts-xml). Output written to (xml-)file.\n"),
15780 GOUT_DESC(
"RT4 testc calculation results."),
15784 GIN_DEFAULT(
"artscomponents/polradtran/testdata/"),
15785 GIN_DESC(
"Folder containing arts-xml converted test case input data.")));
15788 NAME(
"rte_losGeometricFromRtePosToRtePos2"),
15790 "The geometric line-of-sight between two points.\n" 15792 "The method sets *rte_los* to the line-of-sight, at *rte_pos*,\n" 15793 "that matches the geometrical propagation path between *rte_pos*\n" 15794 "and *rte_pos2*.\n" 15796 "The standard case should be that *rte_pos2* corresponds to a\n" 15797 "transmitter, and *rte_pos* to the receiver/sensor.\n"),
15803 IN(
"atmosphere_dim",
15816 DESCRIPTION(
"Sets *rte_los* to the given angles.\n" 15818 "The azimuth angle is ignored for 1D and 2D.\n"),
15824 IN(
"atmosphere_dim"),
15828 GIN_DESC(
"Zenith angle of sensor line-of-sight.",
15829 "Azimuth angle of sensor line-of-sight.")));
15832 NAME(
"rte_posSet"),
15834 "Sets *rte_pos* to the given co-ordinates.\n" 15836 "The longitude is ignored for 1D and 2D, and the latitude is also \n" 15837 "ignored for 1D.\n"),
15843 IN(
"atmosphere_dim"),
15844 GIN(
"z",
"lat",
"lon"),
15845 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric"),
15847 GIN_DESC(
"Geometrical altitude of sensor position.",
15848 "Latitude of sensor position.",
15849 "Longitude of sensor position.")));
15852 NAME(
"rte_pos_losMoveToStartOfPpath"),
15854 "Sets *rte_pos* and *rte_los* to values for last point in *ppath*.\n" 15856 "For example, if the propagation path intersects with the surface,\n" 15857 "this method gives you the position and angle of *ppath* at the\n" 15860 OUT(
"rte_pos",
"rte_los"),
15864 IN(
"atmosphere_dim",
"ppath"),
15872 NAME(
"rtp_nlteFromRaw"),
15881 IN(
"nlte_level_identifiers",
15882 "nlte_vibrational_energies"),
15886 GIN_DESC(
"Vibrational data [nlevels]")));
15889 NAME(
"ScatElementsPndAndScatAdd"),
15891 "Adds single scattering data and particle number density for\n" 15892 "individual scattering elements.\n" 15894 "The methods reads the specified files and appends the obtained data\n" 15895 "to *scat_data* and *pnd_field_raw*. Scattering data is appended to\n" 15896 "the current last existing scattering species in *scat_data*.\n"),
15897 AUTHORS(
"Claudia Emde, Jana Mendrok"),
15898 OUT(
"scat_data_raw",
"pnd_field_raw"),
15902 IN(
"scat_data_raw",
"pnd_field_raw",
"atmosphere_dim"),
15903 GIN(
"scat_data_files",
"pnd_field_files"),
15904 GIN_TYPE(
"ArrayOfString",
"ArrayOfString"),
15906 GIN_DESC(
"List of names of single scattering data files.",
15907 "List of names of the corresponding pnd_field files.")));
15910 NAME(
"ScatElementsSelect"),
15912 "Allows to limit considered scattering elements according to size.\n" 15914 "Scattering elements of a specified scattering species are removed\n" 15915 "from *scat_data_raw* and *scat_meta*, i.e. removed from further\n" 15916 "calculations, if their particle size exceeds the specified limits.\n" 15917 "Specification of the scattering species is done by name matching the\n" 15918 "scattering species name part of *scat_species* tag.\n" 15919 "As size parameter, all size parameters reported by the meta data\n" 15920 "can be used (see *scat_meta_single* for offered parameters and\n" 15921 "their naming).\n"),
15922 AUTHORS(
"Daniel Kreyling, Oliver Lemke, Jana Mendrok"),
15923 OUT(
"scat_data_raw",
"scat_meta"),
15927 IN(
"scat_data_raw",
"scat_meta",
"scat_species"),
15928 GIN(
"species",
"sizeparam",
"sizemin",
"sizemax",
"tolerance",
"delim"),
15929 GIN_TYPE(
"String",
"String",
"Numeric",
"Numeric",
"Numeric",
"String"),
15931 GIN_DESC(
"Species on which to apply size selection.",
15932 "Size parameter to apply for size selection.",
15933 "Minimum size [m] of the scattering elements to consider",
15934 "Maximum size [m] of the scattering elements to consider (if " 15935 "negative, no max. limitation is applied).",
15936 "Relative numerical tolerance of size limit values.",
15937 "Delimiter string of *scat_species* elements.")));
15940 NAME(
"ScatElementsToabs_speciesAdd"),
15942 "Appends scattering elements to *abs_species* including reading\n" 15943 "single scattering data and corresponding pnd field.\n" 15945 "The methods reads the specified single scattering and pnd_field\n" 15946 "data of individual scattering elements and appends the obtained data\n" 15947 "to *scat_data* (appending to its last scattering species) and\n" 15948 "*vmr_field_raw*. Per scattering element, it also appends one\n" 15949 "instance of species 'particles' to *abs_species*.\n"),
15951 OUT(
"scat_data_raw",
15954 "propmat_clearsky_agenda_checked",
15955 "abs_xsec_agenda_checked"),
15959 IN(
"scat_data_raw",
15962 "propmat_clearsky_agenda_checked",
15963 "abs_xsec_agenda_checked",
15966 GIN(
"scat_data_files",
"pnd_field_files"),
15967 GIN_TYPE(
"ArrayOfString",
"ArrayOfString"),
15969 GIN_DESC(
"List of names of single scattering data files.",
15970 "List of names of the corresponding pnd_field files.")));
15973 NAME(
"ScatSpeciesExtendTemperature"),
15975 "Extends valid temperature range of single scattering data.\n" 15977 "The method allows to extend the temperature range of given single\n" 15978 "scattering data by duplicating optical property data at the low\n" 15979 "and/or high limits of the associated temperature grid. *T_low* and\n" 15980 "*T_high* specify the temperature grid points that are added.\n" 15981 "Extension is only performed if *T_low* is lower and *T_high* is\n" 15982 "higher than the original lowest and highest temperatures,\n" 15983 "respectively, and if the original data contains more than one\n" 15984 "temperature grid point (i.e., when not assumed constant anyways).\n" 15986 "The method is thought, e.g., for atmospheric ice falling into\n" 15987 "atmospheric layers with temperatures above the melting point of\n" 15988 "ice, where ambient and particle temperature deviate (as long as\n" 15989 "frozen the ice temperature remains at the melting point\n" 15990 "temperature). It is not internally checked, whether the original\n" 15991 "data includes the melting point.\n" 15992 "The method can be used in a wider sense. However, it remains in the\n" 15993 "responsibility of the user to apply the method in a meaningful\n" 15994 "sense and on meaningful single scattering data.\n" 15996 "The temperature extension is applied on all scattering elements of\n" 15997 "a scattering species. If *scat_species* is defined, *species* can\n" 15998 "be used to select the species on which the extension shall be\n" 15999 "applied comparing *species* with the scattering species name part\n" 16000 "of *scat_species*. If no *species* is specified, the method is\n" 16001 "applied on the current last existing scattering species in\n" 16002 "*scat_data*. Through the latter the method can be applied for cases\n" 16003 "when *scat_species* is not defined (e.g. when *pnd_field* data is\n" 16004 "created externally instead of from hydrometeor fields \n"),
16006 OUT(
"scat_data_raw"),
16010 IN(
"scat_data_raw",
"scat_species"),
16011 GIN(
"species",
"scat_species_delim",
"T_low",
"T_high"),
16012 GIN_TYPE(
"String",
"String",
"Numeric",
"Numeric"),
16015 "Scattering species to act on (see WSM description for details).",
16016 "Delimiter string of *scat_species* elements.",
16017 "Temperature grid extension point at low temperature limit.",
16018 "Temperature grid extension point at high temperature limit.")));
16021 NAME(
"ScatSpeciesInit"),
16023 "Initializes the scattering species related data variables.\n" 16025 "This method initializes the *scat_species* WSV, the variables that\n" 16026 "will hold the raw optical properties and the raw particle number\n" 16027 "distributions of the scattering elements (*scat_data_raw* and\n" 16028 "*pnd_field_raw*, respectively) as well as the one holding the meta\n" 16029 "information about the scattering elements (*scat_meta*).\n" 16031 "This method has to be executed before WSM reading/adding to the\n" 16032 "said variable, e.g. before *ScatSpeciesPndAndScatAdd*.\n"),
16034 OUT(
"scat_species",
16037 "scat_data_checked",
16050 NAME(
"ScatSpeciesMerge"),
16052 "Merges single scattering data of all scattering elements into one\n" 16053 "element of bulk properties.\n" 16055 "Before entering the scattering solver, this method prepares the\n" 16056 "effective bulk single scattering properties of all scattering\n" 16057 "elements. Done by calculating the particle number density weighted\n" 16058 "sum of the single scattering properties of all scattering elements\n" 16059 "per pressure level. Accordingly, *pnd_field* is resized to\n" 16060 "[np, np, 1, 1], where np is the number of pressure levels inside\n" 16061 "the cloudbox. The diagonal elements of the new *pnd_field* are set\n" 16062 "to 1, all others to 0. *scat_data* is resized to np. Each new\n" 16063 "scattering element represents the weighted sum of all particles at\n" 16064 "one presssure level.\n" 16066 "The method also adapts *scat_species* and *scat_meta* such that\n" 16067 "they remain consistent with *pnd_field* and can pass\n" 16068 "*cloudbox_checkedCalc*.\n" 16070 "The method is suggested to be called directly after\n" 16071 "*pnd_fieldCalcFromParticleBulkProps* (but also after\n" 16072 "*cloudbox_checkedCalc*).\n" 16073 "Its purpose is to speed up the scattering calculations.\n" 16075 "This is an experimental method currently only working for limited\n" 16076 "cases. All scattering elements must be of the same ptype and must\n" 16077 "share the same *f_grid*, *za_grid*, and *aa_grid*. That is, the\n" 16078 "scattering matrix, extinction matrix, and absorption vector of all\n" 16079 "scattering elements must have the same dimensions. No interpolation\n" 16080 "(apart from temperature) is performed.\n" 16082 "This method can only be used with a 1D atmosphere.\n"),
16088 "cloudbox_checked"),
16096 "cloudbox_checked",
16109 NAME(
"ScatSpeciesPndAndScatAdd"),
16111 "Adds single scattering data and particle number densities for one\n" 16112 "scattering species.\n" 16114 "The WSV *pnd_field_raw* containing particle number densities for\n" 16115 "all scattering species can be generated outside ARTS, for example\n" 16116 "by using PyARTS or atmlab. This method reads this data as well as\n" 16117 "its corresponding single scattering data, which is added as a new\n" 16118 "scattering species to *scat_data*.\n" 16119 "This method needs as input an ArrayOfString holding the filenames\n" 16120 "of the single scattering data for each scattering element and a\n" 16121 "file containing the corresponding *pnd_field_raw*. In contrast to\n" 16122 "the scattering data, the pnd-fields are stored in a single XML-file\n" 16123 "containing an ArrayofGriddedField3, i.e. holding the pnd-field data\n" 16124 "of all scattering elements.\n" 16126 "Important note:\n" 16127 "The order of the filenames for the scattering data files has to\n" 16128 "correspond to the order of the pnd-fields, stored in the variable\n" 16129 "*pnd_field_raw*.\n"),
16130 AUTHORS(
"Claudia Emde, Jana Mendrok"),
16131 OUT(
"scat_data_raw",
"pnd_field_raw"),
16135 IN(
"scat_data_raw",
"pnd_field_raw",
"atmosphere_dim"),
16136 GIN(
"scat_data_files",
"pnd_fieldarray_file"),
16137 GIN_TYPE(
"ArrayOfString",
"String"),
16140 "Array of names of files containing the single scattering data.",
16141 "Name of file holding the corresponding array of pnd_field data.")));
16144 NAME(
"ScatSpeciesScatAndMetaRead"),
16146 "Reads single scattering data and scattering meta data for one\n" 16147 "scattering species.\n" 16149 "This method takes a string array as input containing the location\n" 16150 "(path and filename) of the single scattering data. Location of\n" 16151 "corresponding scattering meta data is derived applying a naming\n" 16152 "convention: ending '.xml*' is replaced by '.meta.xml' (search for\n" 16153 "zipped files is done automatically).\n" 16155 "All scattering elements read in one call of the method are assigned\n" 16156 "to one and the same scattering species. That is, reading in data for\n" 16157 "a bunch of scattering species can be realized by multiple call of\n" 16158 "this method. Assignment to scattering species is in the order of the\n" 16159 "calls (i.e., first method call reads data for first *scat_species*\n" 16160 "entry, second call for second scat_species entry and so on).\n" 16161 "Note that no two scattering elements of the same scattering species\n" 16162 "are allowed to be equal in size*\n" 16164 "Important note:\n" 16165 "The order of the filenames for the single scattering data files has to\n" 16166 "exactly correspond to the order of the scattering meta data files.\n"),
16167 AUTHORS(
"Daniel Kreyling, Oliver Lemke, Jana Mendrok"),
16168 OUT(
"scat_data_raw",
"scat_meta"),
16172 IN(
"scat_data_raw",
"scat_meta"),
16173 GIN(
"scat_data_files"),
16176 GIN_DESC(
"Array of single scattering data file names.")));
16179 NAME(
"scat_data_singleTmatrix"),
16181 "A basic interface to Mishchenko's T-matrix code linked to ARTS.\n" 16183 "The method performs a T-matrix calculation for a single scattering\n" 16184 "element, i.e. a combination of particle shape, size, aspect ratio\n" 16185 "and orientation.\n" 16187 "Particle shape (*shape*) has two options:\n" 16188 " \"spheroidal\" and \"cylindrical\"\n" 16190 "Particle size (*diameter_volume_equ*) is given as the equivalent\n" 16191 "volume sphere diameter. That is, the diameter obtained if all the\n" 16192 "particle's material is rearranged into a (solid) sphere.\n" 16194 "Particle aspect ratio ar (*aspect_ratio*) is a numeric value, defined\n" 16195 "according to Mishchenko's definition as ratio of horizontal axis a to\n" 16196 "vertical (rotational) axis b: ar=a/b. That is, oblates have ar>1,\n" 16198 "Perfect spheres (spheroidals with ar=1) can trigger numerical issues.\n" 16199 "To avoid these, we internally increase their aspect ratio by 1e-6,\n" 16200 "i.e. turning perfect spheres into very light oblates.\n" 16202 "Particle type (*ptype*) has two options:\n" 16203 " \"totally_random\" and \"azimuthally_random\"\n" 16204 "For totally randomly oriented particles, *data_aa_grid* is not taken\n" 16205 "into account (but a Vector type container needs to be passed).\n" 16207 "For further information on how aspect ratio and the different shapes\n" 16208 "and orientations are defined, see the documentation of the T-matrix\n" 16209 "code found http://www.giss.nasa.gov/staff/mmishchenko/t_matrix.html\n" 16211 "Regarding *ndgs*, we refer to the this comment from the documentation:\n" 16212 " \"Parameter controlling the number of division points\n" 16213 " in computing integrals over the particle surface.\n" 16214 " For compact particles, the recommended value is 2.\n" 16215 " For highly aspherical particles larger values (3, 4,...)\n" 16216 " may be necessary to obtain convergence.\n" 16217 " The code does not check convergence over this parameter.\n" 16218 " Therefore, control comparisons of results obtained with\n" 16219 " different NDGS-values are recommended.\"\n"),
16220 AUTHORS(
"Johan Strandgren",
"Patrick Eriksson"),
16221 OUT(
"scat_data_single",
"scat_meta_single"),
16225 IN(
"complex_refr_index"),
16227 "diameter_volume_equ",
16264 "Set by user, unknown source.",
16268 GIN_DESC(
"Particle shape. Options listed above.",
16269 "Particle volume equivalent diameter [m]. See defintion above.",
16270 "Particle aspect ratio.",
16271 "Particle mass. This information is just included in the meta" 16272 " data, and does not affect the T-matrix calculations.",
16273 "Particle type/orientation. Options listed above.",
16274 "Frequency grid of the scattering data to be calculated.",
16275 "Temperature grid of the scattering data to be calculated.",
16276 "Zenith angle grid of the scattering data to be calculated.",
16277 "Azimuth angle grid of the scattering data to be calculated.",
16278 "Accuracy of the computations.",
16279 "String describing the source of *complex_refr_index*, for" 16280 " inclusion in meta data.",
16281 "See above. So far only applied for random orientation.",
16282 "Continue even if individual T-matrix calculations fail. " 16283 "Respective scattering element data will be NAN.",
16284 "Suppress print output from tmatrix fortran code.")));
16337 NAME(
"scat_data_checkedCalc"),
16339 "Checks dimensions, grids and single scattering properties of all\n" 16340 "scattering elements in *scat_data*.\n" 16342 "Dimension and grid equirements:\n" 16343 "- The scattering element's f_grid is either identical to *f_grid* or\n" 16344 " of dimension 1.\n" 16345 "- In the latter case, the scattering element's f_grid value must\n" 16346 " not deviate from any of the *f_grid* values by more than a\n" 16347 " fraction of *dfrel_threshold*.\n" 16348 "- The frequency dimension of pha_mat_data, ext_mat_data, and\n" 16349 " abs_vec_data is either equal to the scattering element's f_grid\n" 16351 "- The temperature dimension of pha_mat_data, ext_mat_data, and\n" 16352 " abs_vec_data is either equal to the scattering element's T_grid\n" 16354 "- The temperature dimension of ext_mat_data, and abs_vec_data is\n" 16357 "The single scattering property contents are checked using\n" 16358 "*scat_dataCheck*. For details, see there. The depth of these checks\n" 16359 "and their rigour can adapted (see description of parameters\n" 16360 "*check_level* and *sca_mat_threshold* in *scat_dataCheck*) or can\n" 16361 "be skipped entirely (setting *check_level* to 'none').\n" 16362 "NOTE: These test shall only be skipped when one is confident that\n" 16363 "the data is correct, e.g. by having run *scat_dataCheck* on the set\n" 16364 "of data before, e.g. in a separate ARTS run.\n"),
16366 OUT(
"scat_data_checked"),
16370 IN(
"scat_data",
"f_grid"),
16371 GIN(
"dfrel_threshold",
"check_level",
"sca_mat_threshold"),
16372 GIN_TYPE(
"Numeric",
"String",
"Numeric"),
16374 GIN_DESC(
"Maximum relative frequency deviation between (single entry)" 16375 " scattering element f_grid values and the RT calculation's" 16377 "See *check_level* in *scat_dataCheck*.",
16378 "See *sca_mat_threshold* in *scat_dataCheck*.")));
16381 NAME(
"scat_data_monoCalc"),
16383 "Interpolates *scat_data* by frequency to give *scat_data_mono*.\n"),
16385 OUT(
"scat_data_mono"),
16389 IN(
"scat_data",
"f_grid",
"f_index"),
16396 NAME(
"scat_data_monoExtract"),
16398 "Extracts data at *f_index* from *scat_data* to give *scat_data_mono*.\n"),
16400 OUT(
"scat_data_mono"),
16404 IN(
"scat_data",
"f_index"),
16411 NAME(
"scat_dataCalc"),
16413 "Prepares *scat_data* for the scattering solver.\n" 16415 "Derives single scattering data for the frequencies given by\n" 16416 "*f_grid* by interpolation from *scat_data_raw*. *f_grid* should be\n" 16417 "the actual WSV *f_grid* or a single-element Vector.\n"),
16423 IN(
"scat_data_raw",
"f_grid"),
16424 GIN(
"interp_order"),
16427 GIN_DESC(
"Interpolation order.")));
16430 NAME(
"scat_dataCheck"),
16432 "Method for checking the validity and consistency of the single\n" 16433 "scattering properties in *scat_data*.\n" 16435 "It checks that *scat_data* does not contain any invalid values,\n" 16436 "that is any NaN elements in K, Z, or a or any negative values in\n" 16437 "the 'scalar' properties K11, Z11, and a1.\n" 16439 "When *check_type* is 'all', it is furthermore checked that the\n" 16440 "scattering matrix is properly normalized, that is that the solid\n" 16441 "sphere integrated scattering matrix (int_Z11), which is supposed to\n" 16442 "be normalized to the scattering cross section, is sufficiently\n" 16443 "consistent with the scattering cross section (C_sca) derived from\n" 16444 "the difference of extinction (K11) and absorption (a1):\n" 16445 "int_z11 ~ C_sca = K11-a1.\n" 16446 "Sufficient consistency is defined by the maximum allowed deviation\n" 16447 "in single scattering albedo, *sca_mat_threshold*, testing for\n" 16448 " ( <int_Z11>/<C_sca>-1. ) * ( <C_sca>/<K11> ) <= sca_mat_threshold.\n" 16449 "The check is skipped if *check_type* is 'sane'.\n"),
16450 AUTHORS(
"Claudia Emde",
"Jana Mendrok"),
16456 GIN(
"check_type",
"sca_mat_threshold"),
16459 GIN_DESC(
"The level of checks to apply on scat_data ('sane' or 'all';" 16461 "Threshold for allowed albedo deviation (see above).")));
16464 NAME(
"scat_dataReduceT"),
16466 "Reduces temperature dimension of single scattering to a single entry.\n" 16469 "Derives single scattering data for the frequencies given by\n" 16470 "*f_grid* by interpolation from *scat_data*. *f_grid* should be\n" 16471 "the actual WSV *f_grid* or a single-element Vector.\n"),
16482 "sca_mat_threshold"),
16483 GIN_TYPE(
"Index",
"Numeric",
"Index",
"Index",
"Numeric"),
16485 GIN_DESC(
"Apply on *scat_data* from scattering species of this index" 16487 "Temperature to interpolate *scat_data* to.",
16488 "Interpolation order.",
16489 "Flag whether to apply temperture reduction on phase matrix" 16490 " data only (1) or on all single scattering properties (0).",
16491 "Threshold for allowed albedo deviation.")));
16494 NAME(
"ScatSpeciesSizeMassInfo"),
16496 "Derives size and mass information for a scattering species." 16498 "This method assumes that the mass-size relationship can described\n" 16499 "by *scat_species_a* and *scat_species_b*. See documentation of \n" 16500 "*scat_species_a* for details.\n" 16502 "The quantity to be used as size descriptor is here denoted as x, and\n" 16503 "is selected by setting *x_unit*. The options are:\n" 16504 " \"dveq\" : The size grid is set to scat_meta.diameter_volume_equ\n" 16505 " \"dmax\" : The size grid is set to scat_meta.diameter_max\n" 16506 " \"area\" : The size grid is set to scat_meta.diameter_area_equ_aerodynamical\n" 16507 " \"mass\" : The size grid is set to scat_meta.mass\n" 16508 "This selection determines *scat_species_x*.\n" 16510 "The parameters *scat_species_a* and *scat_species_b* are determined by\n" 16511 "a numeric fit between *scat_species_x* and corresponding masses in\n" 16512 "*scat_meta*. This fit is performed over sizes inside the range\n" 16513 "[x_fit_start,x_fit_end]. This range is allowed to be broader than\n" 16514 "the coverage of *scat_species_x*. There must be at least two sizes\n" 16515 "inside [x_fit_start,x_fit_end].\n"),
16516 AUTHORS(
"Manfred Brath",
"Jana Mendrok",
"Patrick Eriksson"),
16517 OUT(
"scat_species_x",
"scat_species_a",
"scat_species_b"),
16522 GIN(
"species_index",
"x_unit",
"x_fit_start",
"x_fit_end",
"do_only_x"),
16523 GIN_TYPE(
"Index",
"String",
"Numeric",
"Numeric",
"Index"),
16525 GIN_DESC(
"Take data from scattering species of this index (0-based) in" 16527 "Unit for size grid, allowed options listed above.",
16528 "Smallest size to consider in fit to determine a and b.",
16529 "Largest size to consider in fit to determine a and b.",
16530 "A flag to deactivate calculation of a and b, to possibly " 16531 "save some time. The a and b parameters are then set to -1." 16532 "Default is to calculate a and b.")));
16535 NAME(
"particle_fieldCleanup"),
16537 "Removes unrealistically small or erroneous data from particle fields.\n" 16539 "This WSM checks if the input particle field (e.g.\n" 16540 "*particle_bulkprop_field*, scat_species_XXX_field) contains values\n" 16541 "smaller than the given *threshold*. In this case, these values will\n" 16542 "be set to zero.\n" 16544 "The method should be applied if the particle fields contain\n" 16545 "unrealistically small or erroneous data (NWP/GCM model data, e.g.\n" 16546 "from the Chevallierl_91l sets, often contain very small or even\n" 16547 "negative values, which are numerical artefacts rather than physical\n" 16549 "For the scat_species_XXX_fields, it needs to be applied separately\n" 16550 "per Tensor4 type field collection. This allows to use different\n" 16551 "thresholds for the different types of fields (not for the different\n" 16552 "scattering species, though).\n" 16554 "*particle_fieldCleanup* shall be called after generation of the\n" 16555 "atmopheric fields.\n"),
16558 GOUT(
"particle_field_out"),
16560 GOUT_DESC(
"A particle property field, e.g. *particle_bulkprop_field*" 16561 " or *scat_species_mass_density_field*"),
16563 GIN(
"particle_field_in",
"threshold"),
16566 GIN_DESC(
"A particle property field, e.g. *particle_bulkprop_field* or" 16567 " *scat_species_mass_density_field*",
16568 "Threshold below which the *particle_field* values are set to" 16574 "Method to select some elements from one array and copy them to\n" 16575 "a new array. (Works also for vectors.)\n" 16577 "This works also for higher dimensional objects, where the selection is\n" 16578 "always performed in the first dimension.\n" 16580 "If needleindexes is set to [-1], all elements are copied." 16584 "Select(y,x,[0,3])\n" 16586 "will select the first and fourth row of matrix x and copy them to the\n" 16587 "output matrix y.\n" 16589 "Note that it is even safe to use this method if needles and haystack\n" 16590 "are the same variable.\n"),
16594 GOUT_TYPE(ARRAY_GROUPS +
", Vector, Matrix, Sparse"),
16595 GOUT_DESC(
"Selected elements. Must have the same variable type as " 16598 GIN(
"haystack",
"needleindexes"),
16599 GIN_TYPE(ARRAY_GROUPS +
", Vector, Matrix, Sparse",
"ArrayOfIndex"),
16601 GIN_DESC(
"Variable to select from. May be the same variable as needles.",
16602 "The elements to select (zero based indexing, as always.)"),
16608 NAME(
"sensor_checkedCalc"),
16610 "Checks consistency of the sensor variables.\n" 16612 "The following WSVs are examined: *f_grid*, *sensor_pos*, *sensor_los*,\n" 16613 "*transmitter_pos*, *mblock_dlos_grid*, *antenna_dim*,\n" 16614 "*sensor_response*, *sensor_response_f*, *sensor_response_pol*,\n" 16615 "and *sensor_response_dlos*.\n" 16617 "If any of these variables are changed, then this method shall be\n" 16618 "called again (no automatic check that this is fulfilled!).\n" 16620 "The main tests are that dimensions of sensor variables agree\n" 16621 "with other settings, e.g., the size of f_grid, atmosphere_dim,\n" 16622 "stokes_dim, etc.\n" 16624 "If any test fails, there is an error. Otherwise, *sensor_checked*\n" 16627 OUT(
"sensor_checked"),
16631 IN(
"atmosphere_dim",
16637 "mblock_dlos_grid",
16639 "sensor_response_f",
16640 "sensor_response_pol",
16641 "sensor_response_dlos"),
16650 "Sets sensor WSVs to obtain monochromatic pencil beam values.\n" 16652 "The variables are set as follows:\n" 16653 " mblock_dlos_grid : One row with zero(s).\n" 16654 " sensor_response* : As returned by *sensor_responseInit*.\n"),
16656 OUT(
"sensor_response",
16657 "sensor_response_f",
16658 "sensor_response_pol",
16659 "sensor_response_dlos",
16660 "sensor_response_f_grid",
16661 "sensor_response_pol_grid",
16662 "sensor_response_dlos_grid",
16663 "mblock_dlos_grid"),
16667 IN(
"stokes_dim",
"f_grid"),
16674 NAME(
"sensor_losGeometricFromSensorPosToOtherPositions"),
16676 "The geometric line-of-sight between pair of points.\n" 16678 "The method sets *sensor_los* to the line-of-sights, that matches the\n" 16679 "geometrical propagation path from *sensor_pos* to *target_pos*. This\n" 16680 "is done for pair of positions, i.e. the two matrices shall have the same\n" 16681 "number of rows. The number of columns in *target_pos* shall be two for\n" 16682 "1D and 2D and two for 3D, exactly as for *rte_pos2*.\n" 16684 "See also *rte_losGeometricFromRtePosToRtePos2*. This method calls that\n" 16685 "method for each pair of positions, where values in *sensor_pos* matches\n" 16686 "*rte_pos and values in *target_pos* matches *rte_pos2*.\n"),
16692 IN(
"atmosphere_dim",
16700 GIN_DESC(
"Target position, for each position in *sensor_pos*.")));
16703 NAME(
"sensor_responseAntenna"),
16705 "Includes response of the antenna.\n" 16707 "The function returns the sensor response matrix after the antenna\n" 16708 "characteristics have been included.\n" 16710 "The function handles \"multi-beam\" cases where the polarisation\n" 16711 "coordinate system is the same for all beams.\n" 16713 "See *antenna_dim*, *antenna_dlos* and *antenna_response* for\n" 16714 "details on how to specify the antenna response.\n" 16716 "The text below refers to *mblock_dlos_grid* despite it is not an\n" 16717 "input to the method. The method instead uses *sensor_response_dlos_grid*\n" 16718 "but the values in this WSV are likely coming from *mblock_dlos_grid*.\n" 16720 "One dimensional antenna patterns are handled as other response\n" 16721 "functions. That is, both antenna response and radiances are treated\n" 16722 "as piece-wise linear functions, and the pencil beam calculations must\n" 16723 "cover the full sensor response (i.e. *mblock_dlos_grid* must be\n" 16724 "sufficiently broad).\n" 16726 "There exist different options for two dimensional (2D) antenna patterns,\n" 16727 "see below (if 2D, the GIN *option_2d* must be set, the default results\n" 16728 "in an error). A normalisation is always applied for 2D antennas (i.e.\n" 16729 "*sensor-norm* is ignored).\n" 16731 "\"interp_response\"" 16732 "For this option, each direction defined by *mblock_dlos_grid* is\n" 16733 "considered to represent the same size in terms of solid beam angle,\n" 16734 "and the antenna pattern is interpolated to these directions. There is\n" 16735 "no check on how well *mblock_dlos_grid* covers the antenna response.\n" 16736 "The response is treated to be zero outside the ranges of its anular\n" 16740 "This option is more similar to the 1D case. The radiances are treated\n" 16741 "as a bi-linear function, but the antenna response is treated as step-\n" 16742 "wise constant function (in contrast to 1D). For this option\n" 16743 "*mblock_dlos_grid* must match a combination of zenith and azimuth\n" 16744 "grids, and this for a particular order. If the zenith and azimuth\n" 16745 "grids have 3 and 2 values, respectively, the order shall be:\n" 16746 " [(za1,aa1); (za2,aa1); (za3,aa1); (za1,aa2); (za2,aa2); (za3,aa2) ]\n" 16747 "Both these grids must be strictly increasing and as for 1D must cover\n" 16748 "the antenna response completely.\n"),
16749 AUTHORS(
"Patrick Eriksson",
"Mattias Ekstrom"),
16750 OUT(
"sensor_response",
16751 "sensor_response_f",
16752 "sensor_response_pol",
16753 "sensor_response_dlos",
16754 "sensor_response_dlos_grid"),
16758 IN(
"sensor_response",
16759 "sensor_response_f",
16760 "sensor_response_pol",
16761 "sensor_response_dlos",
16762 "sensor_response_f_grid",
16763 "sensor_response_pol_grid",
16764 "sensor_response_dlos_grid",
16768 "antenna_response",
16770 GIN(
"option_2d" ),
16773 GIN_DESC(
"Calculation option for 2D antenna cases. See above for details." )));
16776 NAME(
"sensor_responseBackend"),
16778 "Includes response of the backend (spectrometer).\n" 16780 "The function returns the sensor response matrix after the backend\n" 16781 "characteristics have been included.\n" 16783 "See *f_backend*, *backend_channel_response* and *sensor_norm* for\n" 16784 "details on how to specify the backend response.\n"),
16785 AUTHORS(
"Mattias Ekstrom",
"Patrick Eriksson"),
16786 OUT(
"sensor_response",
16787 "sensor_response_f",
16788 "sensor_response_pol",
16789 "sensor_response_dlos",
16790 "sensor_response_f_grid"),
16794 IN(
"sensor_response",
16795 "sensor_response_f",
16796 "sensor_response_pol",
16797 "sensor_response_dlos",
16798 "sensor_response_f_grid",
16799 "sensor_response_pol_grid",
16800 "sensor_response_dlos_grid",
16802 "backend_channel_response",
16810 NAME(
"sensor_responseBackendFrequencySwitching"),
16812 "Frequency switching for a pure SSB reciever.\n" 16814 "This function can be used for simulation of frequency switching.\n" 16815 "That is, when the final spectrum is the difference of two spectra\n" 16816 "shifted in frequency. The switching is performed by the LO, but\n" 16817 "for a pure singel sideband reciever this is most easily simulated\n" 16818 "by instead shifting the backend, as done here.\n" 16820 "A strightforward frequency switching is modelled (no folding)\n" 16821 "The channel positions for the first measurement cycle are\n" 16822 "f_backend+df1, and for the second f_backend+df2. The first\n" 16823 "measurement cycle is given the negive weight. That is, the output\n" 16824 "is the spectrum for cycle2 minus the spectrum for cycle1.\n" 16825 "Output frequency grids are set to *f_backend*.\n" 16827 "Use *sensor_responseFrequencySwitching* for double sideband cases.\n" 16829 "The method has the same general functionality as, and can replace,\n" 16830 "*sensor_responseBackend*.\n"),
16832 OUT(
"sensor_response",
16833 "sensor_response_f",
16834 "sensor_response_pol",
16835 "sensor_response_dlos",
16836 "sensor_response_f_grid"),
16840 IN(
"sensor_response",
16841 "sensor_response_f",
16842 "sensor_response_pol",
16843 "sensor_response_dlos",
16844 "sensor_response_f_grid",
16845 "sensor_response_pol_grid",
16846 "sensor_response_dlos_grid",
16848 "backend_channel_response",
16853 GIN_DESC(
"Frequency throw for cycle1.",
"Frequency throw for cycle2.")));
16856 NAME(
"sensor_responseBeamSwitching"),
16858 "Simulation of \"beam switching\".\n" 16860 "The measurement procedure is based on taking the difference between\n" 16861 "two spectra measured in different directions, and the calculation\n" 16862 "set-up must treat exactly two observation directions.\n" 16864 "The returned spectrum is y = w1*y + w2*y2, where y1 and w1 are the\n" 16865 "spectrum and weight for the first direction, respectively (y2 and\n" 16866 "(w2 defined correspondingly for the second direction).\n" 16868 "Zenith and azimuth angles after beam switching are set to the\n" 16869 "values of the second direction.\n"),
16871 OUT(
"sensor_response",
16872 "sensor_response_f",
16873 "sensor_response_pol",
16874 "sensor_response_dlos",
16875 "sensor_response_dlos_grid"),
16879 IN(
"sensor_response",
16880 "sensor_response_f",
16881 "sensor_response_pol",
16882 "sensor_response_dlos",
16883 "sensor_response_f_grid",
16884 "sensor_response_pol_grid",
16885 "sensor_response_dlos_grid"),
16889 GIN_DESC(
"Weight for values from first viewing direction.",
16890 "Weight for values from second viewing direction.")));
16893 NAME(
"sensor_responseFillFgrid"),
16895 "Polynomial frequency interpolation of spectra.\n" 16897 "The sensor response methods treat the spectra to be piece-wise linear\n" 16898 "functions. This method is a workaround for making methods handling\n" 16899 "the spectra in a more elaborate way: it generates spectra on a more\n" 16900 "dense grid by polynomial interpolation. The interpolation is not\n" 16901 "done explicitly, it is incorporated into *sensor_response*.\n" 16903 "This method should in general increase the calculation accuracy for\n" 16904 "a given *f_grid*. However, the selection of (original) grid points\n" 16905 "becomes more sensitive when using this method. A poor choice of grid\n" 16906 "points can result in a decreased accuracy, or generation of negative\n" 16907 "radiances. Test calculations indicated that the error easily can\n" 16908 "increase with this method close the edge of *f_grid*, and it could\n" 16909 "be wise to make *f_grid* a bit wider than actually necessary to avoid\n" 16912 "The method shall be inserted before the antenna stage. That is, this\n" 16913 "method shall normally be called directly after *sensor_responseInit*.\n" 16915 "Between each neighbouring points of *f_grid*, this method adds\n" 16916 "*nfill* grid points. The polynomial order of the interpolation is\n" 16919 OUT(
"sensor_response",
16920 "sensor_response_f",
16921 "sensor_response_pol",
16922 "sensor_response_dlos",
16923 "sensor_response_f_grid"),
16927 IN(
"sensor_response",
16928 "sensor_response_f",
16929 "sensor_response_pol",
16930 "sensor_response_dlos",
16931 "sensor_response_f_grid",
16932 "sensor_response_pol_grid",
16933 "sensor_response_dlos_grid"),
16934 GIN(
"polyorder",
"nfill"),
16937 GIN_DESC(
"Polynomial order of interpolation",
16938 "Number of points to insert in each gap of f_grid")));
16941 NAME(
"sensor_responseFrequencySwitching"),
16943 "Simulation of \"frequency switching\".\n" 16945 "A general method for frequency switching. The WSM\n" 16946 "*sensor_responseBackendFrequencySwitching* gives a description of\n" 16947 "this observation technique, and is also a more straightforward\n" 16948 " method for pure singel sideband cases.\n" 16950 "It is here assume that *sensor_responseMultiMixerBackend* has been\n" 16951 "used to calculate the spectrum for two LO positions. This method\n" 16952 "calculates the difference between these two spectra, where the\n" 16953 "second spectrum gets weight 1 and the first weight -1 (as in\n" 16954 "*sensor_responseBackendFrequencySwitching*).\n" 16956 "Output frequency grids are taken from the second spectrum.\n"),
16958 OUT(
"sensor_response",
16959 "sensor_response_f",
16960 "sensor_response_pol",
16961 "sensor_response_dlos",
16962 "sensor_response_f_grid"),
16966 IN(
"sensor_response",
16967 "sensor_response_f",
16968 "sensor_response_pol",
16969 "sensor_response_dlos",
16970 "sensor_response_f_grid",
16971 "sensor_response_pol_grid",
16972 "sensor_response_dlos_grid"),
16979 NAME(
"sensor_responseIF2RF"),
16981 "Converts sensor response variables from IF to RF.\n" 16983 "The function converts intermediate frequencies (IF) in\n" 16984 "*sensor_response_f* and *sensor_response_f_grid* to radio\n" 16985 "frequencies (RF). This conversion is needed if the frequency\n" 16986 "translation of a mixer is included and the position of backend\n" 16987 "channels are specified in RF.\n" 16989 "A direct frequency conversion is performed. Values are not\n" 16990 "sorted in any way.\n"),
16992 OUT(
"sensor_response_f",
"sensor_response_f_grid"),
16996 IN(
"sensor_response_f",
"sensor_response_f_grid",
"lo",
"sideband_mode"),
17003 NAME(
"sensor_responseInit"),
17005 "Initialises the variables summarising the sensor response.\n" 17007 "This method sets the variables to match monochromatic pencil beam\n" 17008 "calculations, to be further modified by inclusion of sensor\n" 17009 "characteristics. Use *sensorOff* if pure monochromatic pencil\n" 17010 "beam calculations shall be performed.\n" 17012 "The variables are set as follows:\n" 17013 " sensor_response : Identity matrix, with size matching *f_grid*,\n" 17014 " *stokes_dim* and *mblock_dlos_grid*.\n" 17015 " sensor_response_f : Repeated values of *f_grid*.\n" 17016 " sensor_response_pol : Data matching *stokes_dim*.\n" 17017 " sensor_response_dlos : Repeated values of *mblock_dlos_grid*.\n" 17018 " sensor_response_f_grid : Equal to *f_grid*.\n" 17019 " sensor_response_pol_grid: Set to 1:*stokes_dim*.\n" 17020 " sensor_response_dlos_grid : Equal to *mblock_dlos_grid*.\n"),
17021 AUTHORS(
"Mattias Ekstrom",
"Patrick Eriksson"),
17022 OUT(
"sensor_response",
17023 "sensor_response_f",
17024 "sensor_response_pol",
17025 "sensor_response_dlos",
17026 "sensor_response_f_grid",
17027 "sensor_response_pol_grid",
17028 "sensor_response_dlos_grid"),
17033 "mblock_dlos_grid",
17044 NAME(
"sensor_responseMetMM"),
17046 "Sensor setup for meteorological millimeter instruments.\n" 17048 "This method is handy if you are simulating a passband-type instrument,\n" 17049 "consisting of a few discrete channels.\n" 17051 "For flexibility, the Met-MM system is seperated in two calculation\n" 17052 "steps. To fully use the system, create *f_grid* (and some associated\n" 17053 "variables) by *f_gridMetMM* before calling this method. However, it is\n" 17054 "possible to use this method with any *f_grid*, as long as matching\n" 17055 "*f_backend*, *channel2fgrid_indexes* and *channel2fgrid_weights*\n" 17058 "Each scan sequence is treated as a measurement block. *sensor_pos* is\n" 17059 "set in the standard way. The number of rows in *sensor_pos* determines the\n" 17060 "number of scan sequences that will be simulated. On the other hand,\n" 17061 "*sensor_los* is handled in a special way. All zenith angles must be set\n" 17062 "to 180 deg. For 3D, the given azimuth angles are taken as the direction\n" 17063 "of scanning, where the azimuth angle is defined with respect to North\n" 17064 "in standard manner. For example, if the scanning happens to move from\n" 17065 "SW to NE, the azimuth angle should be set to 45 deg. The angles of the\n" 17066 "scanning sequence are taken from *antenna_dlos*. This WSV is here only\n" 17067 "allowed to have a single column, holding relative zenith angles. For\n" 17068 "3D, the azimuth angles in *antenna_dlos* are hard-coded to zero. As\n" 17069 "zenith angles in *sensor_los* are locked to 180 deg, *antenna_dlos*\n" 17070 "effectively holds the nadir angles. These angles can be both positive or\n" 17071 "negative, where the recommended choice is to operate with negative\n" 17072 "to end up with final zenith angles between 0 and 180 deg.\n" 17074 "The method does not support 2D atmospheres (across-track scanning is\n" 17075 "inconsistent with 2D). For simpler switching between 1D and 3D,\n" 17076 "the argument *mirror_dza* is at hand. It can only be used for 3D.\n" 17077 "If set to true, the zenith angles in *antenna_dlos* are mapped\n" 17078 "to also cover the other side of the swath and the simulations will\n" 17079 "cover both sides of the swath.\n"),
17080 AUTHORS(
"Oliver Lemke",
"Patrick Eriksson"),
17082 "mblock_dlos_grid",
17084 "sensor_response_f",
17085 "sensor_response_pol",
17086 "sensor_response_dlos",
17087 "sensor_response_f_grid",
17088 "sensor_response_pol_grid",
17089 "sensor_response_dlos_grid",
17094 IN(
"atmosphere_dim",
17098 "channel2fgrid_indexes",
17099 "channel2fgrid_weights",
17102 "met_mm_polarisation",
17104 GIN(
"use_antenna",
"mirror_dza"),
17107 GIN_DESC(
"Flag to enable (1) or disable (0) antenna.",
17108 "Flag to include second part of swath (only 3D, see above).")));
17111 NAME(
"sensor_responseMixer"),
17113 "Includes response of the mixer of a heterodyne system.\n" 17115 "The function returns the sensor response matrix after the mixer\n" 17116 "characteristics have been included. Frequency variables are\n" 17117 "converted from radio frequency (RF) to intermediate frequency (IF).\n" 17118 "The returned frequency grid covers the range [0,max_if], where\n" 17119 "max_if is the highest IF covered by the sideband response grid.\n" 17121 "See *lo* and *sideband_response* for details on how to specify the\n" 17122 "mixer response\n"),
17123 AUTHORS(
"Mattias Ekstrom",
"Patrick Eriksson"),
17124 OUT(
"sensor_response",
17125 "sensor_response_f",
17126 "sensor_response_pol",
17127 "sensor_response_dlos",
17128 "sensor_response_f_grid"),
17132 IN(
"sensor_response",
17133 "sensor_response_f",
17134 "sensor_response_pol",
17135 "sensor_response_dlos",
17136 "sensor_response_f_grid",
17137 "sensor_response_pol_grid",
17138 "sensor_response_dlos_grid",
17140 "sideband_response",
17148 NAME(
"sensor_responseMixerBackendPrecalcWeights"),
17150 "Includes pre-calculated response covering mixer and backend.\n" 17152 "This method acts similar to *sensor_responseBackend*, but uses\n" 17153 "pre-calculated weights. These weights can also include the effect\n" 17154 "of mixer and sideband filtering.\n" 17156 "As usual, *f_backend* gives the frequency of the channels. This WSM\n" 17157 "has no direct influence on the result, but at least representative\n" 17158 "values must be set.\n" 17160 "The frequency response is defined using *channel2fgrid_indexes* and\n" 17161 "*channel2fgrid_weights*.\n" 17163 "Both *channel2fgrid_indexes* and *channel2fgrid_weights* are assumed\n" 17164 "to be common for all viewing directions.\n"),
17166 OUT(
"sensor_response",
17167 "sensor_response_f",
17168 "sensor_response_pol",
17169 "sensor_response_dlos",
17170 "sensor_response_f_grid"),
17174 IN(
"sensor_response",
17175 "sensor_response_f",
17176 "sensor_response_pol",
17177 "sensor_response_dlos",
17178 "sensor_response_f_grid",
17179 "sensor_response_pol_grid",
17180 "sensor_response_dlos_grid",
17182 "channel2fgrid_indexes",
17183 "channel2fgrid_weights"),
17190 NAME(
"sensor_responseMultiMixerBackend"),
17192 "Handles mixer and backend parts for an instrument having multiple\n" 17195 "The WSMs *sensor_responseMixer*, *sensor_responseIF2RF* and\n" 17196 "*sensor_responseBackend* are called for each mixer chain, and a\n" 17197 "complete *sensor_response* is assembled. The instrument responses\n" 17198 "are described by *lo_multi*, *sideband_response_multi*,\n" 17199 "*sideband_mode_multi*, *f_backend_multi* and\n" 17200 "*backend_channel_response_multi*. All these WSVs must have same\n" 17201 "vector or array length. As *sensor_responseIF2RF* is called,\n" 17202 "*f_backend_multi* must hold RF (not IF) and output frequencies\n" 17203 "will be in absolute frequency (RF).\n"),
17205 OUT(
"sensor_response",
17206 "sensor_response_f",
17207 "sensor_response_pol",
17208 "sensor_response_dlos",
17209 "sensor_response_f_grid"),
17213 IN(
"sensor_response",
17214 "sensor_response_f",
17215 "sensor_response_pol",
17216 "sensor_response_dlos",
17217 "sensor_response_f_grid",
17218 "sensor_response_pol_grid",
17219 "sensor_response_dlos_grid",
17221 "sideband_response_multi",
17222 "sideband_mode_multi",
17224 "backend_channel_response_multi",
17232 NAME(
"sensor_responsePolarisation"),
17234 "Extraction of non-default polarisation components.\n" 17236 "The default is to output the Stokes elements I, Q, U and V (up to\n" 17237 "*stokes_dim*). This method allows to change the \"polarisation\" of\n" 17238 "the output. Polarisation components to be extracted are selected by\n" 17239 "*instrument_pol*. This method can be applied at any step of the sensor\n" 17242 "The method can only be applied on data for I, Q, U and V. The value\n" 17243 "of *stokes_dim* must be sufficiently large for the selected\n" 17244 "components. For example, I+45 requires that *stokes_dim* is at\n" 17247 "See *instrument_pol* for coding of polarisation states.\n" 17249 "Note that the state of *iy_unit* is considered. This WSV must give\n" 17250 "the actual unit of the data. This as, the extraction of components\n" 17251 "is slightly different if data are radiances or brightness\n" 17252 "temperatures. In practise this means that *iy_unit* (as to be\n" 17253 "applied inside *iy_main_agenda*) must be set before calling this\n" 17256 OUT(
"sensor_response",
17257 "sensor_response_f",
17258 "sensor_response_pol",
17259 "sensor_response_dlos",
17260 "sensor_response_pol_grid"),
17264 IN(
"sensor_response",
17265 "sensor_response_f",
17266 "sensor_response_pol",
17267 "sensor_response_dlos",
17268 "sensor_response_f_grid",
17269 "sensor_response_pol_grid",
17270 "sensor_response_dlos_grid",
17280 NAME(
"sensor_responseStokesRotation"),
17282 "Includes a rotation of the Stokes H and V directions.\n" 17284 "The method applies the rotations implied by *stokes_rotation*.\n" 17285 "See the description of that WSV for details.\n" 17287 "This method does not change the size of *sensor_response*, and\n" 17288 "the auxiliary variables (sensor_response_f etc.) are not changed.\n" 17290 "To apply the method, *stokes_dim* must be >= 3. The complete effect\n" 17291 "of the rotation can not be determibed with lower *stokes_dim*.\n"),
17293 OUT(
"sensor_response"),
17297 IN(
"sensor_response",
17298 "sensor_response_f_grid",
17299 "sensor_response_pol_grid",
17300 "sensor_response_dlos_grid",
17302 "stokes_rotation"),
17309 NAME(
"sensor_responseSimpleAMSU"),
17311 "Simplified sensor setup for an AMSU-type instrument.\n" 17313 "This method allows quick and simple definition of AMSU-type\n" 17314 "sensors. Assumptions:\n" 17316 "1. Pencil beam antenna.\n" 17317 "2. Double sideband receivers.\n" 17318 "3. Sideband mode \"upper\"\n" 17319 "4. The channel response is rectangular.\n" 17321 "Under these assumptions the only inputs needed are the LO positions,\n" 17322 "the offsets from the LO, and the IF bandwidths. They are provieded\n" 17323 "in sensor_description_amsu.\n"),
17327 "mblock_dlos_grid",
17329 "sensor_response_f",
17330 "sensor_response_pol",
17331 "sensor_response_dlos",
17332 "sensor_response_f_grid",
17333 "sensor_response_pol_grid",
17334 "sensor_response_dlos_grid",
17339 IN(
"atmosphere_dim",
"stokes_dim",
"sensor_description_amsu"),
17343 GIN_DESC(
"Desired grid spacing in Hz.")));
17346 NAME(
"sensor_responseGenericAMSU"),
17348 "Simplified sensor setup for an AMSU-type instrument.\n" 17350 "This function is derived from 'sensor_responseSimpleAMSU' \n" 17351 "but is more generalized since the number of passbands in each \n" 17352 "can be in the range from 1 to 4 - in order to correctly simulate\n" 17353 "AMSU-A type sensors \n" 17355 "This method allows quick and simple definition of AMSU-type\n" 17356 "sensors. Assumptions:\n" 17358 "1. Pencil beam antenna.\n" 17359 "2. 1-4 Passband/sidebands per channel.\n" 17360 "3. Sideband mode \"upper\"\n" 17361 "4. The channel response is rectangular.\n" 17363 "Under these assumptions the only inputs needed are the LO positions,\n" 17364 "the offsets from the LO, and the IF bandwidths. They are provided\n" 17365 "in sensor_description_amsu.\n"),
17369 "mblock_dlos_grid",
17371 "sensor_response_f",
17372 "sensor_response_pol",
17373 "sensor_response_dlos",
17374 "sensor_response_f_grid",
17375 "sensor_response_pol_grid",
17376 "sensor_response_dlos_grid",
17381 IN(
"atmosphere_dim",
"stokes_dim",
"sensor_description_amsu"),
17385 GIN_DESC(
"Desired grid spacing in Hz.")));
17388 NAME(
"sensor_responseWMRF"),
17390 "Adds WMRF weights to sensor response.\n" 17392 "This method adds a spectrometer response that has been calculated\n" 17393 "with the weighted mean of representative frequencies (WMRF) method. It\n" 17394 "consists of a set of selected frequencies, and associated weights.\n"),
17396 "Stefan Buehler, based on Patrick Erikssons sensor_responseBackend"),
17397 OUT(
"sensor_response",
17398 "sensor_response_f",
17399 "sensor_response_pol",
17400 "sensor_response_dlos",
17401 "sensor_response_f_grid"),
17405 IN(
"sensor_response",
17406 "sensor_response_f",
17407 "sensor_response_pol",
17408 "sensor_response_dlos",
17409 "sensor_response_f_grid",
17410 "sensor_response_pol_grid",
17411 "sensor_response_dlos_grid",
17421 DESCRIPTION(
"Change the number of threads used by ARTS.\n"),
17445 GIN_DESC(
"Time to sleep for in seconds")));
17449 DESCRIPTION(
"Sleeps until time has been reached.\n"),
17462 NAME(
"SparseSparseMultiply"),
17464 "Multiplies a Sparse with another Sparse, result stored in Sparse.\n" 17466 "Makes the calculation: out = m1 * m2\n"),
17471 GOUT_DESC(
"Product, can be same variable as any of the inputs."),
17476 GIN_DESC(
"Left sparse matrix.",
"Right sparse matrix.")));
17479 NAME(
"SparseMatrixIdentity"),
17481 "Returns a sparse dentity matrix.\n" 17483 "The size of the matrix created is n x n. Default is to return a\n" 17484 "true identity matrix (I), but you can also select another value\n" 17485 "along the diagonal be setting *value*. That is, the output is\n" 17487 AUTHORS(
"Simon Pfreundschuh"),
17496 GIN_DESC(
"Size of the matrix",
"The value along the diagonal.")));
17499 NAME(
"spectral_irradiance_fieldFromSpectralRadianceField"),
17501 "Calculates the spectral irradiance from *spectral_radiance_field* .\n" 17502 "by integrating over the angular grids according to the grids set\n" 17503 "by *AngularGridsSetFluxCalc* \n" 17504 "See *AngularGridsSetFluxCalc to set \n" 17505 "*za_grid, aa_grid, and za_grid_weights*\n"),
17507 OUT(
"spectral_irradiance_field"),
17511 IN(
"spectral_radiance_field",
"za_grid",
"aa_grid",
"za_grid_weights"),
17518 NAME(
"spectral_radiance_fieldClearskyPlaneParallel"),
17520 "Clear-sky radiance field of a plane parallel atmosphere.\n" 17522 "The method assumes a 1D flat planet. Radiances along each direction\n" 17523 "given by *za_grid* are calculated using *ppathPlaneParallel*\n" 17524 "and *iyEmissionStandard*.\n" 17526 "Surface properties are defined by *iy_surface_agenda*, i.e. there is no\n" 17527 "restriction to e.g. specular surfaces.\n" 17529 "Note that the variable *ppath_lmax* is considered, and that it can be\n" 17530 "critical for the accuracy for zenith angles close to 90 degrees. That\n" 17531 "is, using ppath_lmax=-1 is not recommended for this function.\n" 17533 "Information on transmission is also provided by the GOUT *trans_field*.\n" 17534 "For up-welling radiation (scat_za > 90), this variable holds the\n" 17535 "transmission to space, for considered position and propagation direction.\n" 17536 "For down-welling radiation, *trans_field* holds instead the transmission\n" 17537 "down to the surface.\n"),
17539 OUT(
"spectral_radiance_field"),
17540 GOUT(
"trans_field"),
17542 GOUT_DESC(
"Dimensions: [f_grid,p_grid,za_grid]. See further above."),
17543 IN(
"propmat_clearsky_agenda",
17544 "water_p_eq_agenda",
17546 "iy_surface_agenda",
17547 "iy_cloudbox_agenda",
17566 "surface_props_data",
17568 GIN(
"use_parallel_iy"),
17571 GIN_DESC(
"0: Parallelize over zenith angles\n" 17572 "1: Use more memory intensiv iyEmissionStandardParallel*")));
17575 NAME(
"spectral_radiance_fieldCopyCloudboxField"),
17577 "Set *spectral_radiance_field* to be a copy of *cloudbox_field*.\n" 17579 "This method can only be used for 1D atmospheres and if the cloud\n" 17580 "box covers the complete atmosphere. For such case, the two fields\n" 17581 "cover the same atmospheric volume and a direct copying can be made.\n"),
17583 OUT(
"spectral_radiance_field"),
17587 IN(
"atmosphere_dim",
17598 NAME(
"spectral_radiance_fieldExpandCloudboxField"),
17600 "Uses and expands *cloudbox_field* to set *spectral_radiance_field*.\n" 17602 "The method demands that *cloudbox_field* starts at the first pressure\n" 17603 "level (i.e. cloudbox_limits[0] is 0). The method copies *cloudbox_field*\n" 17604 "to fill *spectral_radiance_field* up to the top of the cloudbox.\n" 17606 "To fill the remaning part of *spectral_radiance_field*, clear-sky\n" 17607 "calculations are performed largely in the same maner as done by\n" 17608 "*spectral_radiance_fieldClearskyPlaneParallel*. That is, clear-sky\n" 17609 "calculations are done for the upper part of the atmosphere, assuming\n" 17612 "Note that the cloud box constitutes the lower boundary for the later\n" 17613 "calculations, and *iy_cloudbox_agenda* must be set to perform an\n" 17614 "interpolation of the cloudbox field.\n"),
17616 OUT(
"spectral_radiance_field"),
17620 IN(
"propmat_clearsky_agenda",
17621 "water_p_eq_agenda",
17623 "iy_surface_agenda",
17624 "iy_cloudbox_agenda",
17646 "surface_props_data",
17648 GIN(
"use_parallel_iy"),
17651 GIN_DESC(
"0: Parallelize over zenith angles\n" 17652 "1: Use more memory intensiv iyEmissionStandardParallel*")));
17655 NAME(
"specular_losCalc"),
17657 "Calculates the specular direction of surface reflections.\n" 17659 "A help method to set up the surface properties. This method\n" 17660 "calculates *specular_los*, that is required in several methods\n" 17661 "to convert zenith angles to incidence angles.\n" 17663 "The method also returns the line-of-sight matching the surface normal.\n" 17665 "The default is to consider the surface slope when calculating the\n" 17666 "specular direction. That is, the variation of *z_surface* (as well as\n" 17667 "the geoid radius) is considered and the specular direction is calculated\n" 17668 "including the specified topography. This part can be deactivated by\n" 17669 "setting *ignore_surface_slope* to 1. In this case, the zenith angle of\n" 17670 "the specular direction is simply 180-rtp_los[0]. *ignore_surface_slope*\n" 17671 "has only an effect for 2D and 3D, as 1D implies a constant radius of\n" 17672 "the surface (i.e. no topography).\n"),
17674 OUT(
"specular_los",
"surface_normal"),
17685 GIN(
"ignore_surface_slope"),
17688 GIN_DESC(
"Flag to control if surface slope is consdered or not.")));
17691 NAME(
"specular_losCalcNoTopography"),
17693 "Calculates the specular direction of surface reflections for horisontal\n" 17696 "In contrast to *specular_losCalc*, this method ignores the topography\n" 17697 "implied by *z_surface*. That is, any slope of the surface is ignored.\n" 17699 "The typical application of this WSM should be water surfaces (lakes and\n" 17702 OUT(
"specular_los",
"surface_normal"),
17706 IN(
"rtp_pos",
"rtp_los",
"atmosphere_dim"),
17713 NAME(
"StringJoin"),
17715 "Concatenate two or more strings.\n" 17717 "The output string is overwritten, but is allowed to appear\n" 17718 "in the input list. Up to 10 strings can be concatenated at once.\n"),
17745 GIN_DEFAULT(
NODEF,
NODEF,
"",
"",
"",
"",
"",
"",
"",
""),
17747 "Input text string.",
17748 "Input text string.",
17749 "Input text string.",
17750 "Input text string.",
17751 "Input text string.",
17752 "Input text string.",
17753 "Input text string.",
17754 "Input text string.",
17755 "Input text string.")));
17759 DESCRIPTION(
"Sets a String to the given text string.\n"),
17773 NAME(
"z_surfaceFromFileAndGrid"),
17775 "Sets the surface altitude for a given latitude and longitude grid.\n"),
17781 IN(
"lat_grid",
"lon_grid"),
17782 GIN(
"filename",
"interp_order",
"set_lowest_altitude_to_zero"),
17783 GIN_TYPE(
"String",
"Index",
"Index"),
17786 "File of GriddedField2 with surface altitudes gridded",
17787 "Interpolation order",
17788 "Index that sets the lowest altitude to 0 to ignore sub-surface pressures/altitudes")));
17791 NAME(
"z_surfaceConstantAltitude"),
17793 "Sets the surface altitude to a constant. Defaults to zero.\n"),
17799 IN(
"lat_grid",
"lon_grid"),
17803 GIN_DESC(
"The constant altitude.")));
17806 NAME(
"surfaceBlackbody"),
17808 "Creates variables to mimic a blackbody surface.\n" 17810 "This method sets up *surface_los*, *surface_rmatrix* and\n" 17811 "*surface_emission* for *surface_rtprop_agenda*. Here, *surface_los*\n" 17812 "and *surface_rmatrix* are set to be empty, and *surface_emission*\n" 17813 "to hold blackbody radiation for a temperature of *surface_skin_t*.\n"),
17815 OUT(
"surface_los",
"surface_rmatrix",
"surface_emission"),
17819 IN(
"atmosphere_dim",
17831 NAME(
"surfaceFastem"),
17833 "Usage of FASTEM together with MC and DOIT.\n" 17835 "The recommended way to use FASTEM is by *iySurfaceFastem*, but that\n" 17836 "is not always possible, such as when using MC and DOIT. This is the\n" 17837 "case as those scattering methods use *surface_rtprop_agenda*,\n" 17838 "while *iySurfaceFastem* fits with *iy_surface_agenda*. This WSM solves\n" 17839 "this by allowing FASTEM to be used inside *surface_rtprop_agenda*.\n" 17841 "However, FASTEM is here used in an approximative way. For a correct\n" 17842 "usage of FASTEM, the atmospheric transmittance shall be calculated\n" 17843 "for the position and direction of concern, but this is not possible\n" 17844 "together with DOIT and MC. Instead, the transmittance is an input\n" 17845 "to the method, and must either be pre-calculated or set to a\n" 17846 "representative value.\n" 17848 "See *iySurfaceFastem*, for further details on the special input\n" 17851 OUT(
"surface_los",
"surface_rmatrix",
"surface_emission"),
17855 IN(
"atmosphere_dim",
17866 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric",
"Vector",
"Index"),
17868 GIN_DESC(
"Salinity, 0-1. That is, 3% is given as 0.03.",
17870 "Wind direction. See futher above.",
17871 "Transmittance along path of downwelling radiation. A vector " 17872 "with the same length as *f_grid*.",
17873 "The version of FASTEM to use.")));
17876 NAME(
"surfaceTessem"),
17878 "TESSEM sea surface microwave emissivity parametrization.\n" 17880 "This method computes surface emissivity and reflectivity matrices for\n" 17881 "ocean surfaces using the TESSEM emissivity model: Prigent, C., et al.\n" 17882 "Sea‐surface emissivity parametrization from microwaves to millimetre\n" 17883 "waves, QJRMS, 2017, 143.702: 596-605.\n" 17885 "The validity range of the parametrization of is 10 to 700 GHz, but for\n" 17886 "some extra flexibility frequencies between 5 and 900 GHz are accepted.\n" 17887 "The accepted temperaute range for *surface_skin_t* is [260.0 K, 373.0 K]\n" 17889 "The model itself is represented by the neural networks in\n" 17890 "*tessem_neth* and *tessem_netv*.\n"),
17891 AUTHORS(
"Simon Pfreundschuh"),
17892 OUT(
"surface_los",
"surface_rmatrix",
"surface_emission"),
17896 IN(
"atmosphere_dim",
17904 GIN(
"salinity",
"wind_speed"),
17907 GIN_DESC(
"Salinity, 0-1. That is, 3% is given as 0.03.",
"Wind speed.")));
17910 NAME(
"surfaceTelsem"),
17912 "Compute surface emissivities using the TELSEM 2 model.\n" 17914 "This method uses second version of the TELSEM model for calculating\n" 17915 "land surface emissivities (F. Aires et al, \"A Tool to Estimate \n" 17916 " Land‐Surface Emissivities at Microwave frequencies (TELSEM) for use\n" 17917 " in numerical weather prediction\" Quarterly Journal of the Royal\n" 17918 "Meteorological Society, vol. 137, (656), pp. 690-699, 2011.)\n" 17919 "This methods computes land surface emissivities for a given pencil beam\n" 17920 "using a given TELSEM2 atlas.\n" 17921 "The input must satisfy the following conditions, otherwise an error is thrown:\n" 17922 " - The input frequencies (*f_grid*) must be within the range [5 GHz, 900 GHz]\n" 17923 " - The skin temperature (*surface_skin_t*) must be within the range\n" 17924 " [180 K, 360 K]\n" 17926 "A TELSEM atlas contains only suface emissivities for locations that are\n" 17927 "classified as land. By default this WSM will throw an error if the\n" 17928 "pencil beam hits the surface at a position that is not contained in the\n" 17931 "The above behavior can be avoided by setting *d_max* to a positive value.\n" 17932 "This enables nearest neighbor interpolation, which assigns the emissivities\n" 17933 "of the nearest found cell in the atlas to the given position. In this case,\n" 17934 "an error is only thrown if the distance of the found neighbor is higher\n" 17935 "than the provided value of *d_max.\n" 17937 "You can limit the final reflectivity applied by setting *r_min* and *r_max*.\n" 17939 "To extract a land-sea mask from a given telsem atlas see the WSM\n" 17940 "*telsemSurfaceTypeLandSea*.\n"),
17941 AUTHORS(
"Simon Pfreundschuh"),
17942 OUT(
"surface_los",
"surface_rmatrix",
"surface_emission"),
17946 IN(
"atmosphere_dim",
17955 GIN(
"atlas",
"r_min",
"r_max",
"d_max"),
17956 GIN_TYPE(
"TelsemAtlas",
"Numeric",
"Numeric",
"Numeric"),
17958 GIN_DESC(
"The Telsem atlas to use for the emissivity calculation.",
17959 "Minimum allowed value for reflectivity to apply.",
17960 "Maximum allowed value for reflectivity to apply.",
17961 "Maximum allowed distance in meters for nearest neighbor" 17962 " interpolation in meters. Set to a negative value or zero " 17963 " to disable interpolation.")));
17966 NAME(
"surfaceFlatRefractiveIndex"),
17968 "Creates variables to mimic specular reflection by a (flat) surface\n" 17969 "where the complex refractive index is specified.\n" 17971 "The dielectric properties of the surface are described by\n" 17972 "*surface_complex_refr_index*. The Fresnel equations are used to\n" 17973 "calculate amplitude reflection coefficients. The method can thus\n" 17974 "result in that the reflection properties differ between frequencies\n" 17975 "and polarisations.\n" 17977 "Local thermodynamic equilibrium is assumed, which corresponds to\n" 17978 "that the reflection and emission coefficients add up to 1.\n"),
17980 OUT(
"surface_los",
"surface_rmatrix",
"surface_emission"),
17991 "surface_complex_refr_index"),
17998 NAME(
"surfaceFlatReflectivity"),
18000 "Creates variables to mimic specular reflection by a (flat) surface\n" 18001 "where *surface_reflectivity* is specified.\n" 18003 "Works basically as *surfaceFlatScalarReflectivity* but is more\n" 18004 "general as vector radiative transfer is more properly handled. See\n" 18005 "the ARTS theory document (ATD) for details around how\n" 18006 "*surface_emission* is determined. In the nomenclature of ATD,\n" 18007 "*surface_reflectivity* gives R.\n"),
18009 OUT(
"surface_los",
"surface_rmatrix",
"surface_emission"),
18020 "surface_reflectivity"),
18027 NAME(
"surfaceFlatRvRh"),
18029 "Creates variables to mimic specular reflection by a (flat) surface\n" 18030 "where *surface_rv_rh* is specified.\n" 18032 "This method assumes that the reflection at vertical and horizontal\n" 18033 "polarisation differs. As power reflection coefficients are provided\n" 18034 "there is no information at hand on phase shifts between polarisations,\n" 18035 "and they are simply assumed to be zero. These assumptions result in\n" 18036 "that *surface_emission* is set to zero for positions corresponding to\n" 18037 "U and V, and that all diagonal elementsof *surface_rmatrix* are equal\n" 18038 "(the mean of rv and rh). Further, all off-diagonal elements of\n" 18039 "*surface_rmatrix* are all zero except for (0,1) and (1,0).\n"),
18041 OUT(
"surface_los",
"surface_rmatrix",
"surface_emission"),
18059 NAME(
"surfaceFlatScalarReflectivity"),
18061 "Creates variables to mimic specular reflection by a (flat) surface\n" 18062 "where *surface_scalar_reflectivity* is specified.\n" 18064 "This method assumes that the reflection at vertical and horizontal\n" 18065 "polarisation is identical. This assumption includes that there is no\n" 18066 "phase shift between polarisations. These assumptions result in that\n" 18067 "*surface_emission* is set to zero for positions corresponding to Q,\n" 18068 "U and V, and that *surface_rmatrix* becomes a diagonal matrix (with\n" 18069 "all elements on the diagonal equal to the specified reflectivity).\n"),
18071 OUT(
"surface_los",
"surface_rmatrix",
"surface_emission"),
18082 "surface_scalar_reflectivity"),
18089 NAME(
"surfaceLambertianSimple"),
18091 "Creates variables to mimic a Lambertian surface.\n" 18093 "A Lambertian surface can be characterised solely by its\n" 18094 "reflectivity, here taken from *surface_scalar_reflectivity*.\n" 18096 "The down-welling radiation field is estimated by making calculations\n" 18097 "for *lambertian_nza* directions. The range of zenith angles ([0,90])\n" 18098 "is divided in an equidistant manner for 1D. For 2D and 3D see below.\n" 18099 "The values for *surface_rmatrix* are assuming a constant radiance\n" 18100 "over each zenith angle range. See AUG.\n" 18102 "Default is to select the zenith angles for *sensor_los* to be placed\n" 18103 "centrally in the grid ranges. For example, if *lambertian_nza* is set\n" 18104 "to 9, down-welling radiation will be calculated for zenith angles = \n" 18105 "5, 15, ..., 85. The position of these angles can be shifted by\n" 18106 "*za_pos*. This variable specifies the fractional distance inside the\n" 18107 "ranges. For example, a *za_pos* of 0.7 (np still 9) gives the angles\n" 18108 "7, 17, ..., 87.\n" 18110 "Only upper-left diagonal element of the *surface_rmatrix* is\n" 18111 "non-zero. That is, the upwelling radiation is always unpolarised.\n" 18113 "Local thermodynamic equilibrium is assumed, which corresponds to\n" 18114 "that the reflection and emission coefficients \"add up to 1\".\n" 18116 "For 2D and 3D, the down-welling directions are placed along the\n" 18117 "the viewing direction, e.g. for 3D the azimuth angle is kept constant.\n" 18118 "In 2D and 3D surface topography can exist, and to avoid getting views\n" 18119 "going directly into the surface, angels are not distributed over 90 deg,\n" 18120 "but 90-abs(surface_normal[0]).\n"),
18122 OUT(
"surface_los",
"surface_rmatrix",
"surface_emission"),
18133 "surface_scalar_reflectivity"),
18134 GIN(
"lambertian_nza",
"za_pos"),
18137 GIN_DESC(
"Number of downwelling streams.",
18138 "Position of angle in *surface_los* inside ranges of zenith " 18139 "angle grid. See above.")));
18142 NAME(
"surfaceSemiSpecularBy3beams"),
18144 "A simplistic treatment of semi-specular surfaces.\n" 18146 "This method has no strong physical basis but could be used for simpler\n" 18147 "testing or as starting point for more advanced methods.\n" 18149 "This method assumes that the surface can be treated to have three facets,\n" 18150 "all lacking surface roughness. One facet is assumed to give standard\n" 18151 "specular reflection, while the two other facets are tilted with +dza\n" 18152 "and -dza, respectively. The tilt is assumed to only affect the zenith\n" 18153 "angle of the reflected direction (azimuth same as for specular direction).\n" 18154 "The area ratio of the non-tilted facet is set by *specular_factor*.\n" 18155 "That is, the specular beam is given weight w, while the other two beams\n" 18156 "each get weight (1-w)/2.\n" 18158 "If a facet tilts away from the viewing direction in such way that\n" 18159 "the surface is observed from below, the tilt of the facet is decreased\n" 18160 "in steps of 1 degree until a successful calculation is obtained. If this\n" 18161 "turns out to require a tilt of zero, this facete is merged with\n" 18162 "the specular direction.\n" 18164 "The pure specular properties of the surface shall be described by\n" 18165 "*surface_rtprop_sub_agenda*. That is, if you have specular surface\n" 18166 "described and you want to make it semi-specular by this method, you\n" 18167 "move the content of the existing *surface_rtprop_agenda* to\n" 18168 "*surface_rtprop_sub_agenda* and instead fill *surface_rtprop_agenda*\n" 18169 "with this method.\n"),
18171 OUT(
"surface_skin_t",
18174 "surface_emission"),
18178 IN(
"atmosphere_dim",
18182 "surface_rtprop_sub_agenda"),
18183 GIN(
"specular_factor",
"dza"),
18186 GIN_DESC(
"The weight given to the specular direction. Denoted as w above." 18187 " A value between 1/3 and 1.",
18188 "Zenith angle seperation to each secondary direction. A " 18189 "between 0 and 45 degrees.")));
18192 NAME(
"surfaceSplitSpecularTo3beams"),
18194 "A very simple approximation of a semi-specular surface.\n" 18196 "This method has no direct physical basis but could be used for simpler\n" 18197 "testing or as starting point for more advanced methods.\n" 18199 "The method requires that the surface RT properties (e.g. *surface_los*)\n" 18200 "have been set up to mimic a specular surface. This method splits the down-\n" 18201 "welling radiation into three directions. The specular direction is given\n" 18202 "weight w, while the other two beams each get weight (1-w)/2. The basic\n" 18203 "polarised reflectivity from the specular calculations is maintained\n" 18204 "for each beam. The beams are just separated in zenith angle, with a\n" 18205 "separation of *dza*. The lowermost beam is not allowed to be closer to\n" 18206 "the surface than 1 degree. If there is no room for the lowermost beam,\n" 18207 "it is merged with the main beam.\n"),
18209 OUT(
"surface_los",
"surface_rmatrix"),
18218 GIN(
"specular_factor",
"dza"),
18221 GIN_DESC(
"The weight given to the specular direction. Denoted as w above." 18222 " A value between 1/3 and 1.",
18223 "Zenith angle seperation to each secondary direction. A " 18224 "between 0 and 45 degrees.")));
18227 NAME(
"surface_complex_refr_indexFromGriddedField5"),
18229 "Extracts complex refractive index from a field of such data.\n" 18231 "The method allows to obtain *surface_complex_refr_index* by\n" 18232 "interpolation of a geographical field of such data. The position\n" 18233 "for which refraction shall be extracted is given by *rtp_pos*.\n" 18234 "The refractive index field is expected to be stored as:\n" 18235 " GriddedField5:\n" 18236 " Vector f_grid[N_f]\n" 18237 " Vector T_grid[N_T]\n" 18238 " ArrayOfString Complex[2]\n" 18239 " Vector \"Latitude\" [N_lat]\n" 18240 " Vector \"Longitude\" [N_lon]\n" 18241 " Tensor5 data[N_f][N_T][2][N_lat][N_lon]\n" 18243 "Definition and treatment of the three first dimensions follows\n" 18244 "*complex_refr_index*, e.g. the temperature grid is allowed\n" 18245 "to have length 1. The grids for latitude and longitude must have\n" 18246 "a length of >= 2 (ie. no automatic expansion).\n" 18248 "Hence, this method performs an interpolation only in the lat and\n" 18249 "lon dimensions, to a single point. The remaining GriddedField3 is\n" 18250 "simply returned as *surface_complex_refr_index*.\n"),
18252 OUT(
"surface_complex_refr_index"),
18256 IN(
"atmosphere_dim",
"lat_grid",
"lat_true",
"lon_true",
"rtp_pos"),
18257 GIN(
"complex_refr_index_field"),
18260 GIN_DESC(
"A field of complex refractive index.")));
18263 NAME(
"surface_reflectivityFromGriddedField6"),
18265 "Extracts surface reflectivities from a field of such data.\n" 18267 "This method allows to specify a field of surface reflectivity for\n" 18268 "automatic interpolation to points of interest. The position and\n" 18269 "direction for which the reflectivity shall be extracted are given\n" 18270 "by *rtp_pos* and *rtp_los*. The reflectivity field is expected to\n" 18272 " GriddedField6:\n" 18273 " Vector \"Frequency\" [N_f]\n" 18274 " Vector \"Stokes element\" [N_s1]\n" 18275 " Vector \"Stokes_element\" [N_s2]\n" 18276 " Vector \"Incidence angle\" [N_ia]\n" 18277 " Vector \"Latitude\" [N_lat]\n" 18278 " Vector \"Longitude\" [N_lon]\n" 18279 " Tensor6 data[N_f][N_s1][N_s2][N_ia][N_lat][N_lon]\n" 18281 "Grids for incidence angle, latitude and longitude must have a\n" 18282 "length of >= 2 (ie. no automatic expansion). If the frequency grid\n" 18283 "has length 1, this is taken as that the reflectivity is constant,\n" 18284 "following the definition of *surface_scalar_reflectivity*.\n" 18285 "The data can cover higher Stokes dimensionalities than set by\n" 18286 "*stokes_dim*. Data for non-used Stokes elements are just cropped.\n" 18287 "The order between the two Stokes dimensions is the same as in\n" 18288 "*surface_reflectivity* and surface_rmatrix*.\n" 18290 "The interpolation is done in steps:\n" 18291 " 1: Linear interpolation for lat and lon (std. extrapolation).\n" 18292 " 2: Interpolation in incidence angle (std. extrapolation).\n" 18293 " If the grid has a length of >= 4, cubic interpolation is\n" 18294 " applied. Otherwise linear interpolation.\n" 18295 " 3. Linear interpolation in frequency (if input data have more\n" 18296 " than one frequency).\n"),
18298 OUT(
"surface_reflectivity"),
18313 GIN_DESC(
"A field of surface reflectivities")));
18316 NAME(
"surface_rtpropCallAgendaX"),
18318 "Switch between the elements of *surface_rtprop_agenda_array*.\n" 18320 "This method simply calls the agenda matching *surface_type* and\n" 18321 "returns the results. That is, the agenda in *surface_rtprop_agenda_array*\n" 18322 "with index *surface_type* (0-based) is called.\n"),
18324 OUT(
"surface_skin_t",
18327 "surface_emission"),
18334 "surface_rtprop_agenda_array",
18336 "surface_type_aux"),
18343 NAME(
"surface_scalar_reflectivityFromGriddedField4"),
18345 "Extracts scalar surface reflectivities from a field of such data.\n" 18347 "This method allows to specify a field of surface reflectivity for\n" 18348 "automatic interpolation to points of interest. The position and\n" 18349 "direction for which the reflectivity shall be extracted are given\n" 18350 "by *rtp_pos* and *rtp_los*. The reflectivity field is expected to\n" 18352 " GriddedField4:\n" 18353 " Vector \"Frequency\" [N_f]\n" 18354 " Vector \"Incidence angle\" [N_ia]\n" 18355 " Vector \"Latitude\" [N_lat]\n" 18356 " Vector \"Longitude\" [N_lon]\n" 18357 " Tensor4 data[N_f][N_ia][N_lat][N_lon]\n" 18359 "Grids for incidence angle, latitude and longitude must have a\n" 18360 "length of >= 2 (ie. no automatic expansion). If the frequency grid\n" 18361 "has length 1, this is taken as the reflectivity is constant,\n" 18362 "following the definition of *surface_scalar_reflectivity*.\n" 18364 "The interpolation is done in steps:\n" 18365 " 1: Linear interpolation for lat and lon (std. extrapolation).\n" 18366 " 2: Interpolation in incidence angle (std. extrapolation).\n" 18367 " If the grid has a length of >= 4, cubic interpolation is\n" 18368 " applied. Otherwise linear interpolation.\n" 18369 " 3. Linear interpolation if frequency (if input data have more\n" 18370 " than one frequency).\n"),
18372 OUT(
"surface_scalar_reflectivity"),
18387 GIN_DESC(
"A field of scalar surface reflectivities")));
18416 NAME(
"surface_scalar_reflectivityFromSurface_rmatrix"),
18418 "Sets *surface_scalar_reflectivity* based on *surface_rmatrix*.\n" 18420 "For each frequency f, *surface_scalar_reflectivity* is set to\n" 18421 "the sum of surface_rmatrix(joker,f,0,0).\n"),
18423 OUT(
"surface_scalar_reflectivity"),
18427 IN(
"surface_rmatrix"),
18434 NAME(
"surface_typeInterpTypeMask"),
18436 "Closest neighbour interpolation of surface type mask.\n" 18438 "The method determines the surface type at the position of concern\n" 18439 "(*rtp_pos*) from the provided type mask (*surface_type_mask*).\n" 18440 "The closest point in the mask is selected. The surface type\n" 18441 "is set to the integer part of the value at the found point, while\n" 18442 "*surface_type_aux* is set to the reminder. For example, if the\n" 18443 "mask value at closest point is 2.23, *surface_type* is set to 2\n" 18444 "*surface_type_aux* becomes 0.23.\n" 18446 "The altitude in *rtp_pos* is ignored.\n"),
18448 OUT(
"surface_type",
"surface_type_aux"),
18452 IN(
"atmosphere_dim",
18457 "surface_type_mask"),
18464 NAME(
"SurfaceDummy"),
18466 "Dummy method for *iy_surface_agenda*.\n" 18468 "If you don't make use of *surface_props_data* and associated\n" 18469 "variables, include this method *iy_surface_agenda*. The method\n" 18470 "just checks that the variables of concern are set to be empty,\n" 18471 "and you don't need to include calls of *Ignore* and *Touch* in\n" 18474 OUT(
"dsurface_rmatrix_dx",
"dsurface_emission_dx"),
18478 IN(
"dsurface_rmatrix_dx",
18479 "dsurface_emission_dx",
18483 "surface_props_data",
18484 "surface_props_names",
18493 NAME(
"SurfaceFastem"),
18495 "FASTEM sea surface microwave emissivity parametrization.\n" 18497 "The variable *surface_props_data* must contain these data:\n" 18498 " \"Water skin temperature\"\n" 18499 " \"Wind speed\"\n" 18500 " \"Wind direction\"\n" 18503 "For some details and comments see *FastemStandAlone* and *surfaceFastem*.\n"),
18507 "dsurface_rmatrix_dx",
18508 "surface_emission",
18509 "dsurface_emission_dx"),
18513 IN(
"dsurface_rmatrix_dx",
18514 "dsurface_emission_dx",
18522 "surface_props_data",
18523 "surface_props_names",
18526 GIN(
"transmittance",
"fastem_version"),
18529 GIN_DESC(
"Transmittance along path of downwelling radiation. A vector " 18530 "with the same length as *f_grid*.",
18531 "The version of FASTEM to use.")));
18534 NAME(
"SurfaceTessem"),
18536 "TESSEM sea surface microwave emissivity parametrization.\n" 18538 "The variable *surface_props_data* must contain these data:\n" 18539 " \"Water skin temperature\"\n" 18540 " \"Wind speed\"\n" 18543 "This method computes surface emissivity and reflectivity matrices for\n" 18544 "ocean surfaces using the TESSEM emissivity model: Prigent, C., et al.\n" 18545 "Sea-surface emissivity parametrization from microwaves to millimetre\n" 18546 "waves, QJRMS, 2017, 143.702: 596-605.\n" 18548 "The validity range of the parametrization of is 10 to 700 GHz, but for\n" 18549 "some extra flexibility frequencies between 5 and 900 GHz are accepted.\n" 18550 "The accepted temperaute range for water skin temperature is\n" 18551 "[260.0 K, 373.0 K]. Salinity shall be in the range [0,1]. That is, a\n" 18552 "salinity of 3% is given as 0.03.\n" 18554 "The model itself is represented by the neural networks in\n" 18555 "*tessem_neth* and *tessem_netv*.\n"),
18556 AUTHORS(
"Simon Pfreundschuh",
"Patrick Eriksson"),
18559 "dsurface_rmatrix_dx",
18560 "surface_emission",
18561 "dsurface_emission_dx"),
18565 IN(
"dsurface_rmatrix_dx",
18566 "dsurface_emission_dx",
18576 "surface_props_data",
18577 "surface_props_names",
18586 NAME(
"TangentPointExtract"),
18588 "Finds the tangent point of a propagation path.\n" 18590 "The tangent point is here defined as the point with the lowest\n" 18591 "altitude (which differes from the definition used in the code\n" 18592 "where it is the point with the lowest radius, or equally the point\n" 18593 "with a zenith angle of 90 deg.)\n" 18595 "The tangent point is returned as a vector, with columns matching\n" 18596 "e.g. *rte_pos*. If the propagation path has no tangent point, the\n" 18597 "vector is set to NaN.\n"),
18602 GOUT_DESC(
"The position vector of the tangent point."),
18610 NAME(
"TangentPointPrint"),
18612 "Prints information about the tangent point of a propagation path.\n" 18614 "The tangent point is here defined as the point with the lowest\n" 18615 "altitude (which differes from the definition used in the code\n" 18616 "where it is the point with the lowest radius, or equally the point\n" 18617 "with a zenith angle of 90 deg.)\n"),
18627 GIN_DESC(
"Output level to use.")));
18630 NAME(
"telsemStandalone"),
18632 "Stand-alone evaluation of the Telsem model.\n" 18634 "This evaluates the Telsem land surface emissivity\n" 18635 "model using the data from the provided atlas.\n" 18637 "Since TELSEM atlases do not contain data for all locations\n" 18638 "this function allows for nearest neighbor interpolation, which\n" 18639 "can be enabled by setting the *d_max* GIN to a positive value.\n" 18641 "This WSM throws a runtime error if the queried location is not\n" 18642 "contained in the atlas or the distance of the neighboring cell\n" 18643 "exceeds the given *d_max* value.\n"),
18644 AUTHORS(
"Simon Pfreundschuh"),
18646 GOUT(
"emissivities"),
18648 GOUT_DESC(
"The computed h and v emissivites"),
18650 GIN(
"lat",
"lon",
"theta",
"f",
"ta",
"d_max"),
18652 "Numeric",
"Numeric",
"Numeric",
"Vector",
"TelsemAtlas",
"Numeric"),
18654 GIN_DESC(
"The latitude for which to compute the emissivities.",
18655 "The latitude for which to compute the emissivities.",
18656 "The incidence angle.",
18657 "The frequencies for which to compute the emissivities.",
18658 "The Telsem atlas to use.",
18659 "The maximum allowed distance for nearest neighbor" 18660 " interpolation in meters.")));
18663 NAME(
"telsemAtlasLookup"),
18665 "Lookup SSMI emissivities from Telsem Atlas.\n" 18667 "This returns the emissivities (indices [0,..,6])\n" 18668 " for the SSMI channels that are contained in\n" 18669 "the Telsem atlas.\n" 18671 "If given latitude and longitude are not in the atlas an empty\n" 18672 "vector is returned.\n"),
18673 AUTHORS(
"Simon Pfreundschuh"),
18675 GOUT(
"emissivities"),
18677 GOUT_DESC(
"The SSMI emissivities from the atlas"),
18679 GIN(
"lat",
"lon",
"atlas"),
18680 GIN_TYPE(
"Numeric",
"Numeric",
"TelsemAtlas"),
18682 GIN_DESC(
"The latitude for which to compute the emissivities.",
18683 "The latitude for which to compute the emissivities.",
18684 "The Telsem atlas to use.")));
18687 NAME(
"telsemSurfaceTypeLandSea"),
18689 "TELSEM based land sea mask.\n" 18691 "This method determines whether the position in *rtp_pos* is\n" 18692 "of type ocean or land depending on whether a corresponding\n" 18693 "cell is contained in the provided TELSEM atlas.\n" 18694 "In combination with the WSM *surface_rtpropCallAgendaX* this\n" 18695 "can be used to used different methods to compute surface radiative\n" 18697 AUTHORS(
"Simon Pfreundschuh"),
18698 OUT(
"surface_type"),
18702 IN(
"atmosphere_dim",
"lat_grid",
"lat_true",
"lon_true",
"rtp_pos"),
18706 GIN_DESC(
"The telsem atlas from which to lookup the surface type.")));
18709 NAME(
"telsem_atlasReadAscii"),
18711 "Reads single TELSEM atlas.\n" 18713 "'directory' needs to contain the original 12 Telsem atlas files\n" 18714 "and the correlations file. This WSM reads the atlas for the specified\n" 18715 "month and stores the result in the provided output atlas.\n"),
18716 AUTHORS(
"Simon Pfreundschuh"),
18720 GOUT_DESC(
"The atlas into which to store the loaded atlas."),
18722 GIN(
"directory",
"month",
"filename_pattern"),
18723 GIN_TYPE(
"String",
"Index",
"String"),
18725 GIN_DESC(
"Directory with TELSEM 2 SSMI atlas files.",
18726 "The month for which the atlas should be read.",
18727 "Filename pattern (@MM@ gets replaced by month number)")));
18730 NAME(
"telsem_atlasesReadAscii"),
18732 "Reads TELSEM atlas files.\n" 18734 "'directory' needs to contain the original 12 Telsem atlas files\n" 18735 "and the correlations file.\n" 18736 "The whole data is combined into the WSV *telsem_atlases*\n"),
18738 OUT(
"telsem_atlases"),
18743 GIN(
"directory",
"filename_pattern"),
18746 GIN_DESC(
"Directory with TELSEM 2 SSMI atlas files.",
18747 "Filename pattern (@MM@ gets replaced by month number)")));
18750 NAME(
"Tensor3AddScalar"),
18751 DESCRIPTION(
"Adds a scalar value to all elements of a tensor3.\n" 18753 "The result can either be stored in the same or another\n" 18761 GIN(
"in",
"value"),
18764 GIN_DESC(
"Input tensor.",
"The value to be added to the tensor.")));
18767 NAME(
"Tensor3ExtractFromTensor4"),
18769 "Extracts a Tensor3 from a Tensor4.\n" 18771 "Copies book, page, row or column with given Index from input Tensor4\n" 18772 "variable to output Tensor3.\n" 18773 "Higher order equivalent of *VectorExtractFromMatrix*.\n"),
18780 GIN(
"in",
"i",
"direction"),
18781 GIN_TYPE(
"Tensor4",
"Index",
"String"),
18784 "Index of book, page, row or column to extract.",
18785 "Direction. \"book\" or \"page\" or \"row\" or \"column\".")));
18788 NAME(
"Tensor3Scale"),
18789 DESCRIPTION(
"Scales all elements of a tensor with the specified value.\n" 18791 "The result can either be stored in the same or another\n" 18799 GIN(
"in",
"value"),
18803 "The value to be multiplied with the tensor.")));
18806 NAME(
"Tensor3SetConstant"),
18808 "Creates a tensor and sets all elements to the specified value.\n" 18810 "The size is determined by *ncols*, *nrows* etc.\n"),
18816 IN(
"npages",
"nrows",
"ncols"),
18823 NAME(
"Tensor4AddScalar"),
18824 DESCRIPTION(
"Adds a scalar value to all elements of a tensor4.\n" 18826 "The result can either be stored in the same or another\n" 18834 GIN(
"in",
"value"),
18837 GIN_DESC(
"Input tensor.",
"The value to be added to the tensor.")));
18874 NAME(
"Tensor4Scale"),
18875 DESCRIPTION(
"Scales all elements of a tensor with the specified value.\n" 18877 "The result can either be stored in the same or another\n" 18885 GIN(
"in",
"value"),
18889 "The value to be multiplied with the tensor.")));
18892 NAME(
"Tensor4SetConstant"),
18894 "Creates a tensor and sets all elements to the specified value.\n" 18896 "The size is determined by *ncols*, *nrows* etc.\n"),
18902 IN(
"nbooks",
"npages",
"nrows",
"ncols"),
18909 NAME(
"Tensor5Scale"),
18910 DESCRIPTION(
"Scales all elements of a tensor with the specified value.\n" 18912 "The result can either be stored in the same or another\n" 18920 GIN(
"in",
"value"),
18924 "The value to be multiplied with the tensor.")));
18927 NAME(
"Tensor5SetConstant"),
18929 "Creates a tensor and sets all elements to the specified value.\n" 18931 "The size is determined by *ncols*, *nrows* etc.\n"),
18937 IN(
"nshelves",
"nbooks",
"npages",
"nrows",
"ncols"),
18944 NAME(
"Tensor6Scale"),
18945 DESCRIPTION(
"Scales all elements of a tensor with the specified value.\n" 18947 "The result can either be stored in the same or another\n" 18955 GIN(
"in",
"value"),
18959 "The value to be multiplied with the tensor.")));
18962 NAME(
"Tensor6SetConstant"),
18964 "Creates a tensor and sets all elements to the specified value.\n" 18966 "The size is determined by *ncols*, *nrows* etc.\n"),
18972 IN(
"nvitrines",
"nshelves",
"nbooks",
"npages",
"nrows",
"ncols"),
18979 NAME(
"Tensor7Scale"),
18980 DESCRIPTION(
"Scales all elements of a tensor with the specified value.\n" 18982 "The result can either be stored in the same or another\n" 18990 GIN(
"in",
"value"),
18994 "The value to be multiplied with the tensor.")));
18997 NAME(
"Tensor7SetConstant"),
18999 "Creates a tensor and sets all elements to the specified value.\n" 19001 "The size is determined by *ncols*, *nrows* etc.\n"),
19020 NAME(
"TestArrayOfAgenda"),
19022 "A method that is used for the TestArrayOfAgenda test case.\n"),
19028 IN(
"test_agenda_array"),
19032 GIN_DESC(
"Index of agenda in array to execute.")));
19035 NAME(
"TessemNNReadAscii"),
19037 "Reads the initialization data for the TESSEM NeuralNet from an ASCII file.\n"),
19042 GOUT_DESC(
"Tessem NeuralNet configuration."),
19048 "NeuralNet parameters file as provided in the TESSEM 2 distribution.")));
19051 NAME(
"TestTessem"),
19053 "Example method for TESSEM2.\n" 19055 "When using the default neural network parameter files\n" 19056 "from the Tessem 2 distribution, the input Vector should contain\n" 19058 " - Frequency (10-700) in GHz.\n" 19059 " - Theta (0-90) Incidence angle in degrees.\n" 19060 " - Windspeed (0-25) at 10m (m/s)\n" 19061 " Higher wind speed can be used, but without garantee.\n" 19062 " - Surface skin temperature (270-310) in K.\n" 19063 " - Salinity (0-0.04) in kg/kg\n"),
19068 GOUT_DESC(
"Tessem output emissivity."),
19070 GIN(
"net",
"invalues"),
19073 GIN_DESC(
"Tessem NeuralNet parameters.",
"Input data.")));
19078 "A dummy method that can be used for test purposes.\n" 19080 "This method can be used by ARTS developers to quickly test stuff.\n" 19081 "The implementation is in file m_general.cc. This just saves you the\n" 19082 "trouble of adding a dummy method everytime you want to try\n" 19083 "something out quickly.\n"),
19096 NAME(
"time_gridOffset"),
19097 DESCRIPTION(
"Offsets a time grid by some seconds.\n"),
19107 GIN_DESC(
"Time in seconds to add")));
19113 "Use *timerStop* to stop the timer.\n" 19117 " ReadXML(f_grid,\"frequencies.xml\")\n" 19119 " Print(timer)\n"),
19135 "See *timerStart* for example usage.\n"),
19148 NAME(
"time_stampsSort"),
19149 DESCRIPTION(
"Sort *in* by *time_stamps* into *out*.\n"),
19153 GOUT_TYPE(
"ArrayOfTime,ArrayOfVector"),
19157 GIN_TYPE(
"ArrayOfTime,ArrayOfVector"),
19159 GIN_DESC(
"Array to sort of same size as *time_stamps*")));
19162 NAME(
"TMatrixTest"),
19164 "T-Matrix validation test.\n" 19166 "Executes the standard test included with the T-Matrix Fortran code.\n" 19167 "Should give the same as running the tmatrix_lp executable in\n" 19168 "3rdparty/tmatrix/.\n"),
19183 "As *Ignore* but for agenda output.\n" 19185 "This method is handy for use in agendas in order to suppress\n" 19186 "warnings about not-produced output workspace variables.\n" 19188 "What it does, in case the variable is initialized already, is:\n" 19190 "In case the variable is not yet initialized, it is set to NaN.\n"),
19195 GOUT_DESC(
"Variable to do nothing with."),
19206 NAME(
"transmittanceFromIy_aux"),
19208 "Creates a vector of transmittance values.\n" 19210 "The transmittances are set based on optical depths in *iy_aux*. That is,\n" 19211 "one of the quantities in *iy_aux* must be \"Optical depth\".\n" 19213 "The created vector has a length matching *f_grid* and can e.g. be used\n" 19214 "as input to some of the FASTEM methods.\n"),
19217 GOUT(
"transmittance"),
19219 GOUT_DESC(
"Created vector of transmittance values."),
19220 IN(
"iy_aux_vars",
"iy_aux"),
19227 NAME(
"VectorAddScalar"),
19229 "Adds a scalar to all elements of a vector.\n" 19231 "The result can either be stored in the same or another vector.\n"),
19238 GIN(
"in",
"value"),
19241 GIN_DESC(
"Input vector.",
"The value to be added to the vector.")));
19244 NAME(
"VectorAddVector"),
19246 "Element-wise addition of two vectors.\n" 19248 "The method calculates c = a + b.\n" 19250 "The variable *b* is allowed to have length 1, for any length of\n" 19251 "*a*. This single value in *b* is then added to every element of *a*.\n" 19253 "The vectors *a* and *c* can be the same WSV, while *b* can not be\n" 19254 "the same WSV as any of the the other vector.\n"),
19264 GIN_DESC(
"Input vector.",
"Vector to be added.")));
19267 NAME(
"VectorCrop"),
19269 "Keeps only values of a vector inside the specified range.\n" 19271 "All values outside the range [min_value,max-value] are removed.\n" 19272 "Note the default values, that basically should act as -+Inf.\n" 19274 "The result can either be stored in the same or another vector.\n"),
19281 GIN(
"in",
"min_value",
"max_value"),
19282 GIN_TYPE(
"Vector",
"Numeric",
"Numeric"),
19285 "Minimum value to keep",
19286 "Maximum value to keep")));
19289 NAME(
"VectorExtractFromMatrix"),
19291 "Extracts a Vector from a Matrix.\n" 19293 "Copies row or column with given Index from input Matrix variable\n" 19294 "to create output Vector.\n"),
19295 AUTHORS(
"Patrick Eriksson, Oliver Lemke, Stefan Buehler"),
19301 GIN(
"in",
"i",
"direction"),
19302 GIN_TYPE(
"Matrix",
"Index",
"String"),
19305 "Index of row or column.",
19306 "Direction. \"row\" or \"column\".")));
19309 NAME(
"VectorFlip"),
19311 "Flips a vector.\n" 19313 "The output is the input vector in reversed order. The result can\n" 19314 "either be stored in the same or another vector.\n"),
19327 NAME(
"VectorInsertGridPoints"),
19329 "Insert some additional points into a grid.\n" 19331 "This method can for example be used to add line center frequencies to\n" 19332 "a regular frequency grid. If the original grid is [1,2,3], and the\n" 19333 "additional points are [2.2,2.4], the result will be [1,2,2.2,2.4,3].\n" 19335 "It is assumed that the original grid is sorted, otherwise a runtime\n" 19336 "error is thrown. The vector with the points to insert does not have to\n" 19337 "be sorted. If some of the input points are already in the grid, these\n" 19338 "points are not inserted again. New points outside the original grid are\n" 19339 "appended at the appropriate end. Input vector and output vector can be\n" 19342 "Generic output:\n" 19343 " Vector : The new grid vector.\n" 19346 " Vector : The original grid vector.\n" 19347 " Vector : The points to insert.\n"),
19354 GIN(
"in",
"points"),
19357 GIN_DESC(
"The original grid vector",
"The points to insert")));
19360 NAME(
"VectorLinSpace"),
19362 "Initializes a vector with linear spacing.\n" 19364 "The first element equals always the start value, and the spacing\n" 19365 "equals always the step value, but the last value can deviate from\n" 19366 "the stop value. *step* can be both positive and negative.\n" 19368 "The created vector is [start, start+step, start+2*step, ...]\n "),
19375 GIN(
"start",
"stop",
"step"),
19376 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric"),
19379 "Maximum/minimum value of the end value",
19380 "Spacing of the vector.")));
19383 NAME(
"VectorLogSpace"),
19385 "Initializes a vector with logarithmic spacing.\n" 19387 "The first element equals always the start value, and the spacing\n" 19388 "equals always the step value, but note that the last value can \n" 19389 "deviate from the stop value. The keyword step can be both positive\n" 19392 "Note, that although start has to be given in direct coordinates,\n" 19393 "step has to be given in log coordinates.\n" 19395 "Explicitly, the vector is:\n" 19396 " exp([ln(start), ln(start)+step, ln(start)+2*step, ...])\n"),
19403 GIN(
"start",
"stop",
"step"),
19404 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric"),
19406 GIN_DESC(
"The start value. (Direct coordinates!)",
19407 "The maximum value of the end value. (Direct coordinates!)",
19408 "The spacing of the vector. (Log coordinates!)")));
19411 NAME(
"VectorMatrixMultiply"),
19413 "Multiply a Vector with a Matrix and store the result in another\n" 19416 "This just computes the normal Matrix-Vector product, y=M*x. It is ok\n" 19417 "if input and output Vector are the same. This function is handy for\n" 19418 "multiplying the H Matrix to spectra.\n"),
19423 GOUT_DESC(
"The result of the multiplication (dimension m)."),
19428 GIN_DESC(
"The Matrix to multiply (dimension mxn).",
19429 "The original Vector (dimension n).")));
19432 NAME(
"VectorNLinSpace"),
19434 "Creates a vector with length *nelem*, equally spaced between the\n" 19435 "given end values.\n" 19437 "The length (*nelem*) must be larger than 1.\n"),
19444 GIN(
"start",
"stop"),
19447 GIN_DESC(
"Start value.",
"End value.")));
19450 NAME(
"VectorNLogSpace"),
19452 "Creates a vector with length *nelem*, equally logarithmically\n" 19453 "spaced between the given end values.\n" 19455 "The length (*nelem*) must be larger than 1.\n"),
19462 GIN(
"start",
"stop"),
19465 GIN_DESC(
"Start value.",
"End value.")));
19468 NAME(
"VectorReshapeMatrix"),
19470 "Converts a Matrix to a Vector.\n" 19472 "The matrix is reshaped into a vector. That is, all elements of the matrix\n" 19473 "are kept. The elements can be extracted both in column (default) and row\n" 19474 "order. The ouput vector has the same length for both options.\n"),
19481 GIN(
"in",
"direction"),
19484 GIN_DESC(
"Input matrix.",
"Direction. \"row\" or \"column\".")));
19487 NAME(
"VectorScale"),
19489 "Scales all elements of a vector with the same value.\n" 19491 "The result can either be stored in the same or another vector.\n"),
19498 GIN(
"in",
"value"),
19501 GIN_DESC(
"Input vector.",
"Scaling value.")));
19504 NAME(
"VectorSetConstant"),
19506 "Creates a vector and sets all elements to the specified value.\n" 19508 "The vector length is determined by *nelem*.\n"),
19523 "Create a vector from the given list of numbers.\n" 19525 " VectorSet(p_grid, [1000, 100, 10] )\n" 19526 " Will create a p_grid vector with these three elements.\n"),
19540 NAME(
"VectorSubtractVector"),
19542 "Element-wise subtraction of two vectors.\n" 19544 "The method calculates c = a - b.\n" 19546 "The variable *b* is allowed to have length 1, for any length of\n" 19547 "*a*. This single value in *b* is then added to every element of *a*.\n" 19549 "The vectors *a* and *c* can be the same WSV, while *b* can not be\n" 19550 "the same WSV as any of the the other vector.\n"),
19560 GIN_DESC(
"Input vector.",
"Vector to be subtracted.")));
19563 NAME(
"VectorVectorMultiply"),
19565 "Multiply a Vector with another Vector and store result in a third one.\n" 19567 "This is an element-wise multiplication. It is ok if output Vector is\n" 19568 "the same as any of the input Vectors.\n"),
19573 GOUT_DESC(
"The result of the multiplication (dimension m)."),
19578 GIN_DESC(
"Original Vector #1 (dimension m).",
19579 "Original Vector #2 (dimension m).")));
19582 NAME(
"VectorZtanToZaRefr1D"),
19584 "Converts a set of true tangent altitudes to zenith angles.\n" 19586 "The tangent altitudes are given to the function as a vector, which\n" 19587 "are converted to a generic vector of zenith angles. The position of\n" 19588 "the sensor is given by the WSV *sensor_pos*. The function works\n" 19589 "only for 1D. The zenith angles are always set to be positive.\n"),
19590 AUTHORS(
"Patrick Eriksson",
"Mattias Ekstrom"),
19594 GOUT_DESC(
"Vector with zenith angles."),
19595 IN(
"refr_index_air_agenda",
19607 GIN_DESC(
"Vector with tangent altitudes.")));
19610 NAME(
"VectorZtanToZa1D"),
19612 "Converts a set of geometrical tangent altitudes to zenith angles.\n" 19614 "The tangent altitudes are given to the function as a vector, which\n" 19615 "are converted to a generic vector of zenith angles. The position of\n" 19616 "the sensor is given by the WSV *sensor_pos*. The function works\n" 19617 "only for 1D. The zenith angles are always set to be positive.\n"),
19618 AUTHORS(
"Patrick Eriksson",
"Mattias Ekstrom"),
19622 GOUT_DESC(
"Vector with zenith angles."),
19623 IN(
"sensor_pos",
"refellipsoid",
"atmosphere_dim"),
19627 GIN_DESC(
"Vector with tangent altitudes.")));
19630 NAME(
"verbosityInit"),
19632 "Initializes the verbosity levels.\n" 19634 "Sets verbosity to defaults or the levels specified by -r on the command line.\n"),
19647 NAME(
"verbositySet"),
19649 "Sets the verbosity levels.\n" 19651 "Sets the reporting level for agenda calls, screen and file.\n" 19652 "All reporting levels can reach from 0 (only error messages)\n" 19653 "to 3 (everything). The agenda setting applies in addition\n" 19654 "to both screen and file output.\n"),
19661 GIN(
"agenda",
"screen",
"file"),
19662 GIN_TYPE(
"Index",
"Index",
"Index"),
19664 GIN_DESC(
"Agenda verbosity level",
19665 "Screen verbosity level",
19666 "Report file verbosity level")));
19670 DESCRIPTION(
"Sets the verbosity level for agenda output.\n" 19672 "See *verbositySet*\n"),
19682 GIN_DESC(
"Agenda verbosity level")));
19686 DESCRIPTION(
"Sets the verbosity level for report file output.\n" 19688 "See *verbositySet*\n"),
19698 GIN_DESC(
"Report file verbosity level")));
19702 DESCRIPTION(
"Sets the verbosity level for screen output.\n" 19704 "See *verbositySet*\n"),
19714 GIN_DESC(
"Screen verbosity level")));
19717 NAME(
"vmr_fieldClip"),
19719 "Clipping of *vmr_field*.\n" 19721 "The method allows you to apply hard limits the values of *vmr_field*.\n" 19722 "All values, of the species selected, below *limit_low*, are simply\n" 19723 "set to *limit_low*. And the same is performed with respect to\n" 19724 "*limit_high*. That is, the data in x for the retrieval quantity are\n" 19725 "forced to be inside the range [limit_low,limit_high].\n" 19727 "Setting species=\"ALL\", is a shortcut for applying the limits on all\n" 19734 IN(
"vmr_field",
"abs_species"),
19735 GIN(
"species",
"limit_low",
"limit_high"),
19736 GIN_TYPE(
"String",
"Numeric",
"Numeric"),
19738 GIN_DESC(
"Name of species to consider, or \"ALL\".",
19739 "Lower limit for clipping.",
19740 "Upper limit for clipping.")));
19743 NAME(
"vmr_fieldPerturb"),
19744 DESCRIPTION(
"Adds a perturbation to *vmr_field*.\n" 19746 "Works as *AtmFieldPerturb* but acts on *vmr_field*.\n"),
19766 "String",
"Vector",
"Vector",
"Vector",
"Index",
"Numeric",
"String"),
19768 GIN_DESC(
"Name of species to perturb.",
19769 "Pressure retrieval grid.",
19770 "Latitude retrieval grid.",
19771 "Longitude retrieval grid.",
19772 "Index of position where the perturbation shall be performed.",
19773 "Size of perturbation.",
19774 "Type of perturbation, " 19781 NAME(
"vmr_fieldPerturbAtmGrids"),
19783 "Adds a perturbation to *vmr_field*.\n" 19785 "Works as *AtmFieldPerturbAtmGrids* but acts on *vmr_field*.\n"),
19797 GIN(
"species",
"pert_index",
"pert_size",
"pert_mode"),
19798 GIN_TYPE(
"String",
"Index",
"Numeric",
"String"),
19800 GIN_DESC(
"Name of species to perturb.",
19801 "Index of position where the perturbation shall be performed.",
19802 "Size of perturbation.",
19803 "Type of perturbation, " 19810 NAME(
"vmr_fieldSetAllConstant"),
19812 "Sets the VMR of all species to a select constant value.\n" 19814 "The *vmr_field* WSM must have a correct size before calling this method.\n" 19815 "The length of vmr_values and of abs_species must match.\n"),
19821 IN(
"vmr_field",
"abs_species"),
19825 GIN_DESC(
"VMR value to apply for each abs_species.")));
19828 NAME(
"water_p_eq_fieldMK05"),
19830 "Calculates *water_p_eq_field* according to Murphy and Koop, 2005.\n" 19832 "The saturation pressure is set to the one with respect to water at\n" 19833 "temperatures >= 0C, and to the one with respect to ice for <0C.\n" 19835 "The saturation pressure with respect to liquid and ice water is\n" 19836 "calculated according to Eq. 10 and 7, respectively, of:\n" 19837 "Murphy, D. M., & Koop, T. (2005). Review of the vapour pressures of\n" 19838 "ice and supercooled water for atmospheric applications. Quarterly\n" 19839 "Journal of the Royal Meteorological Society, 131(608), 1539-1565.\n"),
19841 OUT(
"water_p_eq_field"),
19852 NAME(
"vmr_fieldSetConstant"),
19854 "Sets the VMR of a species to a constant value.\n" 19856 "The *vmr_field* WSM must have a correct size before calling this method.\n"),
19862 IN(
"vmr_field",
"abs_species"),
19863 GIN(
"species",
"vmr_value"),
19867 "VMR value to apply for the selected species.")));
19870 NAME(
"Wigner6Init"),
19871 DESCRIPTION(
"Initialize the wigner 3 and 6 tables\n" 19873 "The default values take about 1 Gb memory.\n"),
19875 OUT(
"wigner_initialized"),
19880 GIN(
"fast_wigner_stored_symbols",
"largest_wigner_symbol_parameter"),
19884 "Number of stored symbols possible before replacements",
19885 "Largest symbol used for initializing factorials (e.g., largest J or L)")));
19888 NAME(
"Wigner3Init"),
19891 "The default values take about 400 Mb memory.\n"),
19893 OUT(
"wigner_initialized"),
19898 GIN(
"fast_wigner_stored_symbols",
"largest_wigner_symbol_parameter"),
19902 "Number of stored symbols possible before replacements",
19903 "Largest symbol used for initializing factorials (e.g., largest J or L)")));
19907 DESCRIPTION(
"Unloads the wigner 3 and 6 tables\n"),
19909 OUT(
"wigner_initialized"),
19913 IN(
"wigner_initialized"),
19922 OUT(
"wigner_initialized"),
19926 IN(
"wigner_initialized"),
19933 NAME(
"WignerFastInfoPrint"),
19935 "Prints the fast wigner table information if compiled with this option\n"),
19941 IN(
"wigner_initialized"),
19948 NAME(
"WindFieldsCalc"),
19950 "Interpolation of raw wind fields to calculation grids.\n" 19951 "Heritage from *AtmFieldsCalc*\n" 19953 "Internally, *WindFieldsCalc* applies *GriddedFieldPRegrid* and\n" 19954 "*GriddedFieldLatLonRegrid*. Generally, 'half-grid-step' extrapolation\n" 19955 "is allowed and applied.\n"),
19957 OUT(
"wind_u_field",
"wind_v_field",
"wind_w_field"),
19964 "wind_u_field_raw",
19965 "wind_v_field_raw",
19966 "wind_w_field_raw",
19968 GIN(
"interp_order"),
19971 GIN_DESC(
"Interpolation order (1=linear interpolation).")));
19974 NAME(
"WindFieldsCalcExpand1D"),
19976 "Interpolation of 1D raw atmospheric fields to create 2D or 3D\n" 19977 "homogeneous wind fields. Derived from *AtmFieldsCalcExpand1D*\n" 19979 "The method works as *WindFieldsCalc*, but accepts only raw 1D\n" 19980 "wind fields. The raw data is interpolated to *p_grid* and\n" 19981 "the obtained values are applied for all latitudes, and also\n" 19982 "longitudes for 3D, to create a homogeneous atmosphere.\n"),
19984 OUT(
"wind_u_field",
"wind_v_field",
"wind_w_field"),
19991 "wind_u_field_raw",
19992 "wind_v_field_raw",
19993 "wind_w_field_raw",
19995 GIN(
"interp_order"),
19998 GIN_DESC(
"Interpolation order (1=linear interpolation).")));
20001 NAME(
"WindRawRead"),
20003 "Reads wind field data from a scenario.\n" 20005 "A full set of field components is read (NOTE: fails if scenario\n" 20006 "only contains selected field components). The files can be\n" 20007 "anywhere, but must all be in the same directory specified by\n" 20008 "'basename'. Naming convention for the field component files is\n" 20009 "basename.wind_u.xml for the u-component, v- and w-components\n" 20012 OUT(
"wind_u_field_raw",
"wind_v_field_raw",
"wind_w_field_raw"),
20020 GIN_DESC(
"Name of scenario, probably including the full path. For " 20021 "example: \"/data/wind_field\"")));
20024 NAME(
"wind_u_fieldIncludePlanetRotation"),
20026 "Maps the planet's rotation to an imaginary wind.\n" 20028 "This method is of relevance if the observation platform is not\n" 20029 "following the planet's rotation, and Doppler effects must be\n" 20030 "considered. Examples include full disk observations from another\n" 20031 "planet or a satellite not in orbit of the observed planet.\n" 20033 "The rotation of the planet is not causing any Doppler shift for\n" 20034 "1D and 2D simulations, and the method can only be used for 3D.\n"),
20036 OUT(
"wind_u_field"),
20047 "planet_rotation_period"),
20054 NAME(
"WMRFSelectChannels"),
20056 "Select some channels for WMRF calculation.\n" 20058 "The HIRS fast setup consists of a precalculated frequency grid\n" 20059 "covering all HIRS channels, and associated weights for each channel,\n" 20060 "stored in a weight matrix. (A *sensor_response* matrix.)\n" 20062 "If not all channels are requested for\n" 20063 "simulation, then this method can be used to remove the unwanted\n" 20064 "channels. It changes a number of variables in consistent fashion:\n" 20066 "- Unwanted channels are removed from f_backend. \n" 20067 "- Unwanted channels are removed from wmrf_weights.\n" 20068 "- Unnecessary frequencies are removed from f_grid.\n" 20069 "- Unnecessary frequencies are removed from wmrf_weights.\n"),
20071 OUT(
"f_grid",
"wmrf_weights",
"f_backend"),
20075 IN(
"f_grid",
"f_backend",
"wmrf_weights",
"wmrf_channels"),
20082 NAME(
"WriteMolTau"),
20084 "Writes a 'molecular_tau_file' as required for libRadtran.\n" 20086 "The libRadtran (www.libradtran.org) radiative transfer package is a \n" 20087 "comprehensive package for various applications, it can be used to \n" 20088 "compute radiances, irradiances, actinic fluxes, ... for the solar \n" 20089 "and the thermal spectral ranges. Absorption is usually treated using \n" 20090 "k-distributions or other parameterizations. For calculations with high \n" 20091 "spectral resolution it requires absorption coefficients from an external \n" 20092 "line-by-line model. Using this method, arts generates a file that can be \n" 20093 "used by libRadtran (option molecular_tau_file)." 20100 IN(
"f_grid",
"z_field",
"propmat_clearsky_field",
"atmosphere_dim"),
20104 GIN_DESC(
"Name of the *molecular_tau_file*.")));
20107 NAME(
"WriteNetCDF"),
20108 DESCRIPTION(
"Writes a workspace variable to a NetCDF file.\n" 20110 "This method can write variables of limited groups.\n" 20112 "If the filename is omitted, the variable is written\n" 20113 "to <basename>.<variable_name>.nc.\n"),
20120 GIN(
"in",
"filename"),
20121 GIN_TYPE(
"Vector, Matrix, Tensor3, Tensor4, Tensor5, ArrayOfVector," 20122 "ArrayOfMatrix, GasAbsLookup",
20125 GIN_DESC(
"Variable to be saved.",
"Name of the NetCDF file."),
20133 NAME(
"WriteNetCDFIndexed"),
20134 DESCRIPTION(
"As *WriteNetCDF*, but creates indexed file names.\n" 20136 "This method can write variables of any group.\n" 20138 "If the filename is omitted, the variable is written\n" 20139 "to <basename>.<variable_name>.nc.\n"),
20146 GIN(
"in",
"filename"),
20147 GIN_TYPE(
"Vector, Matrix, Tensor3, Tensor4, Tensor5, ArrayOfVector," 20148 "ArrayOfMatrix, GasAbsLookup",
20151 GIN_DESC(
"Variable to be saved.",
"Name of the NetCDF file."),
20160 DESCRIPTION(
"Writes a workspace variable to an XML file.\n" 20162 "This method can write variables of any group.\n" 20164 "If the filename is omitted, the variable is written\n" 20165 "to <basename>.<variable_name>.xml.\n" 20166 "If no_clobber is set to 1, an increasing number will be\n" 20167 "appended to the filename if the file already exists.\n"),
20173 IN(
"output_file_format"),
20174 GIN(
"in",
"filename",
"no_clobber"),
20175 GIN_TYPE(
"Any",
"String",
"Index"),
20178 "Name of the XML file.",
20179 "0: Overwrite existing files, 1: Use unique filenames"),
20187 NAME(
"WriteXMLIndexed"),
20188 DESCRIPTION(
"As *WriteXML*, but creates indexed file names.\n" 20190 "The variable is written to a file with name:\n" 20191 " <filename>.<file_index>.xml.\n" 20192 "where <file_index> is the value of *file_index*.\n" 20194 "This means that *filename* shall here not include the .xml\n" 20195 "extension. Omitting filename works as for *WriteXML*.\n"),
20196 AUTHORS(
"Patrick Eriksson, Oliver Lemke"),
20201 IN(
"output_file_format",
"file_index"),
20202 GIN(
"in",
"filename",
"digits"),
20203 GIN_TYPE(
"Any",
"String",
"Index"),
20206 "Workspace variable to be saved.",
20207 "File name. See above.",
20208 "Equalize the widths of all numbers by padding with zeros as necessary.\n" 20209 "0 means no padding (default)."),
20217 NAME(
"xaStandard"),
20219 "Standard function for creating *xa*.\n" 20221 "The method creates *xa* based on *jacobian_quantities* and the various\n" 20222 "atmospheric fields. In the case of scattering species, the data are\n" 20223 "taken from *particle_bulkprop_field*. The following retrieval quantities\n" 20226 " Absorption species\n" 20227 " Scattering species\n" 20229 " Polynomial baseline fit\n" 20230 " Sinusoidal baseline fit\n"),
20236 IN(
"jacobian_quantities",
20237 "atmfields_checked",
20247 "cloudbox_checked",
20248 "particle_bulkprop_field",
20249 "particle_bulkprop_names",
20256 "surface_props_data",
20257 "surface_props_names",
20258 "water_p_eq_agenda"),
20267 "Clipping of the state vector.\n" 20269 "The method allows you to apply hard limits the values of a\n" 20270 "retrieval quantity. The retrieval quantity is specified by\n" 20271 "*ijq*. All values of the quantity below *limit_low*, are simply\n" 20272 "set to *limit_low*. And the same is performed with respect to\n" 20273 "*limit_high*. That is, the data in x for the retrieval quantity\n" 20274 "are forced to be inside the range [limit_low,limit_high].\n" 20276 "Setting ijq=-1, is a shortcut for applying the limits on all\n" 20277 "retrieval quantities.\n" 20279 "Notice that limits must be specified in the unit used in *x*.\n"),
20285 IN(
"x",
"jacobian_quantities"),
20286 GIN(
"ijq",
"limit_low",
"limit_high"),
20287 GIN_TYPE(
"Index",
"Numeric",
"Numeric"),
20289 GIN_DESC(
"Retrieval quantity index (zero-based)",
20290 "Lower limit for clipping.",
20291 "Upper limit for clipping.")));
20294 NAME(
"x2artsAtmAndSurf"),
20296 "Maps *x* to atmospheric and surface variables.\n" 20298 "Maps OEM's state vector, *x*, to the matching ARTS variables. This\n" 20299 "method handles atmospheric and surface variables. If you retrieve\n" 20300 "other variables, make sure that you also call *x2artsSensor* and/or\n" 20301 "*x2artsSpectroscopy*.\n" 20303 "The following retrieval quantities are handled by this method:\n" 20305 " Absorption species\n" 20306 " Scattering species\n" 20308 " Surface variables\n" 20310 "Should only be used inside *inversion_iterate_agenda*.\n"),
20314 "particle_bulkprop_field",
20321 "surface_props_data"),
20327 "particle_bulkprop_field",
20334 "surface_props_data",
20335 "jacobian_quantities",
20337 "atmfields_checked",
20345 "cloudbox_checked",
20346 "particle_bulkprop_names",
20347 "surface_props_names",
20348 "water_p_eq_agenda"),
20355 NAME(
"x2artsSensor"),
20357 "Maps *x* to sensor variables.\n" 20359 "Maps OEM's state vector, *x*, to the matching ARTS variables. This\n" 20360 "method handles variables associated with the sensor. If you retrieve\n" 20361 "other variables, make sure that you also call *x2artsAtmAndSurf*\n" 20362 " and/or *x2artsSpectroscopy*.\n" 20364 "The following retrieval quantities are handled by this method:\n" 20366 " Frequency shift and stretch\n" 20369 "Should only be used inside *inversion_iterate_agenda*.\n" 20371 "Elements in *x* representing pointing corrections are mapped to\n" 20372 "*sensor_los*. Elements representing frequency corrections are mapped\n" 20373 "to *f_backend*. Baseline variables are mapped to *y_baseline*.\n" 20375 "The sensor response is recalculated if there is any non-zero frequency\n" 20382 "sensor_response_f",
20383 "sensor_response_pol",
20384 "sensor_response_dlos",
20385 "sensor_response_f_grid",
20386 "sensor_response_pol_grid",
20387 "sensor_response_dlos_grid",
20388 "mblock_dlos_grid"),
20395 "sensor_response_f",
20396 "sensor_response_pol",
20397 "sensor_response_dlos",
20398 "sensor_response_f_grid",
20399 "sensor_response_pol_grid",
20400 "sensor_response_dlos_grid",
20401 "mblock_dlos_grid",
20402 "jacobian_quantities",
20404 "sensor_response_agenda",
20413 NAME(
"x2artsSpectroscopy"),
20414 DESCRIPTION(
"Just defined to indicate a future extensiom.\n" 20416 "Don't call the method, it will just generate an error.\n"),
20429 NAME(
"yApplySensorPol"),
20431 "Extraction of arbitrary linear polarisation.\n" 20433 "This method shall be called after *yCalc* and then applies *sensor_pol*\n" 20434 "on the outout of *yCalc*. See *sensor_pol* for definition of the\n" 20435 "polarisation responses. THe *sensor_response* give to *yCalc* can not\n" 20436 "contain any polarisation response, it must maintain original Stokes\n" 20437 "elelemnts. The value of *stokes_dim* muist be >= 3.\n" 20439 "The values in *sensor_pol* are applied on *y*, and *jacobian* if relevant.\n" 20440 "*y_pol* is set following the values in *sensor_pol* but is rounded to\n" 20441 "an integer value. Remaining data associated with *y* (e.g. y_pos) are\n" 20442 "set to the value matching the first Stokes element.\n"),
20444 OUT(
"y",
"y_f",
"y_pol",
"y_pos",
"y_los",
"y_aux",
"y_geo",
"jacobian"),
20466 NAME(
"yApplyUnit"),
20468 "Conversion of *y* to other spectral units.\n" 20470 "Any conversion to brightness temperature is normally made inside\n" 20471 "*yCalc*. This method makes it possible to also make this conversion\n" 20472 "after *yCalc*, but with restrictions for *jacobian* and with.\n" 20473 "respect to the n2-law of radiance.\n" 20475 "The conversion made inside *iyEmissionStandard* is mimiced\n" 20476 "and see that method for constraints and selection of output units.\n" 20477 "This with the restriction that the n2-law can be ignored. The later\n" 20478 "is the case if the sensor is placed in space, or if the refractive\n" 20479 "only devaites slightly from unity.\n" 20481 "The method handles *y* and *jacobian* in parallel, where\n" 20482 "the last variable is only considered if it is set. The\n" 20483 "input data must be in original radiance units. A completely\n" 20484 "stringent check of this can not be performed.\n" 20486 "The method can not be used with jacobian quantities that are not\n" 20487 "obtained through radiative transfer calculations. One example on\n" 20488 "quantity that can not be handled is *jacobianAddPolyfit*. There\n" 20489 "are no automatic checks warning for incorrect usage!\n" 20491 "If you are using this method, *iy_unit* should be set to \"1\" when\n" 20492 "calling *yCalc*, and be changed before calling this method.\n" 20494 "Conversion of *y_aux* is not supported.\n"),
20496 OUT(
"y",
"jacobian"),
20500 IN(
"y",
"jacobian",
"y_f",
"y_pol",
"iy_unit"),
20507 NAME(
"ybatchCalc"),
20509 "Performs batch calculations for the measurement vector y.\n" 20511 "We perform *ybatch_n* jobs, starting at index *ybatch_start*. (Zero\n" 20512 "based indexing, as usual.) The output array *ybatch* will have\n" 20513 "ybatch_n elements. Indices in the output array start\n" 20514 "with zero, independent of *ybatch_start*.\n" 20516 "The method performs the following:\n" 20517 " 1. Sets *ybatch_index* = *ybatch_start*.\n" 20518 " 2. Performs a-d until\n" 20519 " *ybatch_index* = *ybatch_start* + *ybatch_n*.\n" 20520 " a. Executes *ybatch_calc_agenda*.\n" 20521 " b. If *ybatch_index* = *ybatch_start*, resizes *ybatch*\n" 20522 " based on *ybatch_n* and length of *y*.\n" 20523 " c. Copies *y* to *ybatch_index* - *ybatch_start*\n" 20525 " d. Adds 1 to *ybatch_index*.\n" 20527 "Beside the *ybatch_calc_agenda*, the WSVs *ybatch_start*\n" 20528 "and *ybatch_n* must be set before calling this method.\n" 20529 "Further, *ybatch_calc_agenda* is expected to produce a\n" 20530 "spectrum and should accordingly include a call of *yCalc*\n" 20531 "(or asimilar method).\n" 20533 "The input variable *ybatch_start* is set to a default of zero in\n" 20534 "*general.arts*.\n" 20536 "An agenda that calculates spectra for different temperature profiles\n" 20537 "could look like this:\n" 20539 " AgendaSet(ybatch_calc_agenda){\n" 20540 " Extract(t_field,tensor4_1,ybatch_index)\n" 20544 "Jacobians are also collected, and stored in output variable *ybatch_jacobians*. \n" 20545 "(This will be empty if yCalc produces empty Jacobians.)\n" 20547 "See the user guide for further practical examples.\n"),
20549 OUT(
"ybatch",
"ybatch_aux",
"ybatch_jacobians"),
20553 IN(
"ybatch_start",
"ybatch_n",
"ybatch_calc_agenda"),
20557 GIN_DESC(
"A flag with value 1 or 0. If set to one, the batch\n" 20558 "calculation will continue, even if individual jobs fail. In\n" 20559 "that case, a warning message is written to screen and file\n" 20560 "(out1 output stream), and the *y* Vector entry for the\n" 20561 "failed job in *ybatch* is left empty.")));
20564 NAME(
"yColdAtmHot"),
20566 "Computes *y* from input using standard calibration scheme of cold-atm-hot observations\n" 20568 "If calib evaluates as true:\n" 20569 " y = cold_temp + (hot_temp - cold_temp) * (atm - cold) / (hot - cold)\n" 20571 "If calib evaluates as false:\n" 20572 " y = (hot_temp * cold - cold_temp * hot) / (hot - cold)\n"),
20579 GIN(
"cold",
"atm",
"hot",
"cold_temp",
"hot_temp",
"calib"),
20580 GIN_TYPE(
"Vector",
"Vector",
"Vector",
"Numeric",
"Numeric",
"Index"),
20582 GIN_DESC(
"N-elem Vector of cold load linear power",
20583 "N-elem Vector of atmosphere linear power",
20584 "N-elem Vector of hot load linear power",
20585 "Cold load temperature",
20586 "Hot load temperature",
20587 "Flag for calibration scheme, false means system temperature is computed")));
20590 NAME(
"ybatchMetProfiles"),
20592 "This method is used for simulating ARTS for metoffice model fields" 20594 "This method reads in *met_amsu_data* which contains the\n" 20595 "lat-lon of the metoffice profile files as a Matrix. It then\n" 20596 "loops over the number of profiles and corresponding to each\n" 20597 "longitude create the appropriate profile basename. Then,\n" 20598 "corresponding to each basename we have temperature field, altitude\n" 20599 "field, humidity field, and particle number density field. The\n" 20600 "temperature field and altitude field are stored in the same dimensions\n" 20601 "as *t_field_raw* and *z_field_raw*. The oxygen and nitrogen VMRs are\n" 20602 "set to constant values of 0.209 and 0.782, respectively and are used\n" 20603 "along with humidity field to generate *vmr_field_raw*. \n" 20605 "The three fields *t_field_raw*, *z_field_raw*, and *vmr_field_raw* are\n" 20606 "given as input to *met_profile_calc_agenda* which is called in this\n" 20607 "method. See documentation of WSM *met_profile_calc_agenda* for more\n" 20608 "information on this agenda. \n" 20610 "The method also converts satellite zenith angle to appropriate\n" 20611 "*sensor_los*. It also sets the *p_grid* and *cloudbox_limits*\n" 20612 "from the profiles inside the function\n"),
20619 "met_profile_calc_agenda",
20628 GIN(
"nelem_p_grid",
"met_profile_path",
"met_profile_pnd_path"),
20629 GIN_TYPE(
"Index",
"String",
"String"),
20631 GIN_DESC(
"FIXME DOC",
"FIXME DOC",
"FIXME DOC")));
20634 NAME(
"ybatchMetProfilesClear"),
20636 "This method is used for simulating ARTS for metoffice model fields\n" 20637 "for clear sky conditions.\n" 20639 "This method reads in *met_amsu_data* which contains the\n" 20640 "lat-lon of the metoffice profile files as a Matrix. It then\n" 20641 "loops over the number of profiles and corresponding to each\n" 20642 "longitude create the appropriate profile basename. Then,\n" 20643 "Corresponding to each basename we have temperature field, altitude\n" 20644 "field, humidity field, and particle number density field. The\n" 20645 "temperature field and altitude field are stored in the same dimensions\n" 20646 "as *t_field_raw* and *z_field_raw*. The oxygen and nitrogen VMRs are\n" 20647 "set to constant values of 0.209 and 0.782, respectively and are used\n" 20648 "along with humidity field to generate *vmr_field_raw*. \n" 20650 "The three fields *t_field_raw*, *z_field_raw*, and *vmr_field_raw* are\n" 20651 "given as input to *met_profile_calc_agenda* which is called in this\n" 20652 "method. See documentation of WSM *met_profile_calc_agenda* for more\n" 20653 "information on this agenda. \n" 20655 "The method also converts satellite zenith angle to appropriate\n" 20656 "*sensor_los*. It also sets the *p_grid* and *cloudbox_limits*\n" 20657 "from the profiles inside the function\n"),
20664 "met_profile_calc_agenda",
20669 GIN(
"nelem_p_grid",
"met_profile_path"),
20672 GIN_DESC(
"FIXME DOC",
"FIXME DOC")));
20676 NAME(
"ybatchTimeAveraging"),
20678 "Time average of *ybatch* and *time_grid*\n" 20680 "Computes the internal covariance matrix in *covmat_sepsbatch*, and\n" 20681 "stores the number of elements per averaging in *counts*\n"),
20683 OUT(
"ybatch",
"time_grid",
"covmat_sepsbatch",
"counts"),
20687 IN(
"ybatch",
"time_grid"),
20688 GIN(
"time_step",
"disregard_first",
"disregard_last"),
20689 GIN_TYPE(
"String",
"Index",
"Index"),
20691 GIN_DESC(
"Time step in the form \"INDEX SCALE\", where SCALE is \"h\", \"min\", or \"s\" for hours, minutes or seconds",
20692 "Flag to remove first time step (e.g., if it is an incomplete step)",
20693 "Flag to remove last time step (e.g., if it is an incomplete step)")));
20696 NAME(
"ybatchTroposphericCorrectionNaiveMedianForward"),
20698 "Performs naive tropospheric corrections on *ybatch*\n" 20700 "Sets *ybatch_corr* to be able to perform the inverse of the corrections,\n" 20701 "each array-element with 3 entries as [median, part_trans, trop_temp]\n"),
20703 OUT(
"ybatch_corr",
"ybatch"),
20708 GIN(
"range",
"trop_temp",
"targ_temp"),
20709 GIN_TYPE(
"ArrayOfIndex",
"Vector",
"Numeric"),
20711 GIN_DESC(
"Positions where the median of the baseline is computed, if empty all is used",
20712 "Radiative temperature of the troposphere",
20713 "Temperature target of the baseline")));
20716 NAME(
"ybatchTroposphericCorrectionNaiveMedianInverse"),
20718 "Performs inverse of naive tropospheric corrections on *ybatch*\n"),
20724 IN(
"ybatch",
"ybatch_corr"),
20733 "Calculation of complete measurement vectors (y).\n" 20735 "The method performs radiative transfer calculations from a sensor\n" 20736 "perspective. Radiative transfer calculations are performed for\n" 20737 "monochromatic pencil beams, following *iy_main_agenda* and\n" 20738 "associated agendas. Obtained radiances are weighted together by\n" 20739 "*sensor_response*, to include the characteristics of the sensor.\n" 20740 "The measurement vector obtained can contain anything from a single\n" 20741 "frequency value to a series of measurement scans (each consisting\n" 20742 "of a series of spectra), all depending on the settings. Spectra\n" 20743 "and jacobians are calculated in parallel.\n" 20745 "The frequency, polarisation etc. for each measurement value is\n" 20746 "given by *y_f*, *y_pol*, *y_pos* and *y_los*.\n" 20748 "The content of *y_aux* follows *iy_aux_vars. See the method selected\n" 20749 "for *iy_main_agenda* for allowed choices.\n" 20751 "The geo-positions (*y_geo*) are set based on *sensor_response*. When\n" 20752 "an antenna pattern is considered, there are several pencil beams,\n" 20753 "and thus also several goe-positions, associated with each value of *y*.\n" 20754 "The geo-position assigned to a value in *y* is the *geo_pos* of the pencil\n" 20755 "beam related to the highest value in *sensor_response*. This means that\n" 20756 "*mblock_dlos_grid* must contain the bore-sight direction (0,0), if you\n" 20757 "want *y_geo* to exactly match the bore-sight direction.\n" 20759 "The Jacobian provided (*jacobian*) is adopted to selected retrieval\n" 20760 "units, but no transformations are applied. Transformations are\n" 20761 "included by calling *jacobianAdjustAndTransform*.\n"),
20763 OUT(
"y",
"y_f",
"y_pol",
"y_pos",
"y_los",
"y_aux",
"y_geo",
"jacobian"),
20767 IN(
"atmgeom_checked",
20768 "atmfields_checked",
20772 "cloudbox_checked",
20773 "scat_data_checked",
20780 "mblock_dlos_grid",
20782 "sensor_response_f",
20783 "sensor_response_pol",
20784 "sensor_response_dlos",
20790 "jacobian_quantities",
20798 NAME(
"yCalcAppend"),
20800 "Replaces *yCalc* if a measurement shall be appended to an\n" 20803 "The method works basically as *yCalc* but appends the results to\n" 20804 "existing data, instead of creating completely new *y* and its\n" 20805 "associated variables. This method is required if your measurement\n" 20806 "consists of data from two instruments using different observation\n" 20807 "techniques (corresponding to different iyCalc-methods). One such\n" 20808 "example is if emission and transmission data are combined into a\n" 20809 "joint retrieval. The method can also be used to get around the\n" 20810 "constrain that *sensor_response* is required to be the same for\n" 20813 "The new measurement is simply appended to the input *y*, and the\n" 20814 "other output variables are treated correspondingly. Data are\n" 20815 "appended \"blindly\" in *y_aux*. That is, data of different type\n" 20816 "are appended if *iy_aux_vars* differs between the two measurements,\n" 20817 "the data are appended strictly following the order. First variable\n" 20818 "of second measurement is appended to first variable of first\n" 20819 "measurement, and so on. The number of auxiliary variables can differ\n" 20820 "between the measurements. Missing data are set to zero.\n" 20822 "The set of retrieval quantities can differ between the two\n" 20823 "calculations. If an atmospheric quantity is part of both Jacobians,\n" 20824 "the same retrieval grids must be used in both cases.\n" 20825 "The treatment of instrument related Jacobians (baseline fits,\n" 20826 "pointing ...) follows the *append_instrument_wfs* argument.\n" 20828 "A difference to *yCalc* is that *jacobian_quantities* is both in-\n" 20829 "and output variable. The input version shall match the measurement\n" 20830 "to be calculated, while the output version matches the output *y*,\n" 20831 "the combined, measurements. A copies of *jacobian_quantities* of the\n" 20832 "first measurement must be made and shall be provided to the method\n" 20833 "as *jacobian_quantities_copy*.\n" 20835 "As for *yCalc* Jacobian transformations are not handled, and the\n" 20836 "the input Jacobian shall not contain transformations. That is\n" 20837 "*jacobianAdjustAndTransform* shall be called after this method,\n" 20838 "when the complete Jacobian is at hand.\n"),
20848 "jacobian_quantities"),
20861 "atmfields_checked",
20865 "cloudbox_checked",
20866 "scat_data_checked",
20873 "mblock_dlos_grid",
20875 "sensor_response_f",
20876 "sensor_response_pol",
20877 "sensor_response_dlos",
20883 "jacobian_quantities",
20885 GIN(
"jacobian_quantities_copy",
"append_instrument_wfs"),
20886 GIN_TYPE(
"ArrayOfRetrievalQuantity",
"Index"),
20888 GIN_DESC(
"Copy of *jacobian_quantities* of first measurement.",
20889 "Flag controlling if instrumental weighting functions are " 20890 "appended or treated as different retrieval quantities.")));
20895 "Replaces *yCalc* for radar/lidar calculations.\n" 20897 "The output format for *iy* when simulating radars and lidars differs\n" 20898 "from the standard one, and *yCalc* can not be used for such simulations.\n" 20899 "This method works largely as *yCalc*, but is tailored to handle the\n" 20900 "output from *iyActiveSingleScat*.\n" 20902 "The method requires additional information about the sensor,\n" 20903 "regarding its recieving properties. First of all, recieved\n" 20904 "polarisation states are taken from *instrument_pol_array*. Note\n" 20905 "that this WSV allows to define several measured polarisations\n" 20906 "for each transmitted signal. For example, it is possible to\n" 20907 "simulate transmission of V and measuring backsacttered V and H.\n" 20909 "Secondly, the range averaging is described by *range_bins*. These\n" 20910 "bins can either be specified in altitude or two-way travel time.\n" 20911 "In both case, the edges of the range bins shall be specified.\n" 20912 "All data (including auxiliary variables) are returned as the\n" 20913 "average inside the bins. If a bin is totally outside the model\n" 20914 "atmosphere, NaN is returned.\n" 20916 "The options for *iy_unit* are:\n" 20917 " \"1\" : Backscatter coefficient. Unit is 1/(m*sr). At zero\n" 20918 " attenuation, this equals the scattering matrix value for\n" 20919 " the backward direction. See further AUG.\n" 20920 " \"Ze\" : Equivalent reflectivity. Unit is mm^6/m^3. Conversion\n" 20921 " formula is given below.\n" 20922 " \"dBZe\": 10*log10(Ze/Z0), where Z0 is 1 mm^6/m^3.\n" 20924 "The conversion from backscatter coefficient to Ze is:\n" 20925 " Ze = 1e18 * lambda^4 / (k2 * pi^5) * sum(sigma),\n" 20926 "where sum(sigma) = 4 * pi * b, and b is the backscatter coefficient.\n" 20928 "The reference dielectric factor can either specified directly by\n" 20929 "the argument *k2*. For example, to mimic the CloudSat data, *k2*\n" 20930 "shall be set to 0.75 (citaion needed). If *k2* is set to be \n" 20931 "negative (which is defualt), k2 is calculated as:\n" 20932 " k2 = abs( (n^2-1)/(n^2+2) )^2,\n" 20933 "where n is the refractive index of liquid water at temperature\n" 20934 "*ze_tref* and the frequency of the radar, calculated by the MPM93\n" 20935 "parameterization.\n" 20937 "A lower limit for dBZe is applied (*dbze_min*). The main reason is to\n" 20938 "handle the fact dBZe is not defined for Ze=0, and dBZe is set to the\n" 20939 "clip value when Ze < 10^(dbze_min/10).\n"),
20941 OUT(
"y",
"y_f",
"y_pol",
"y_pos",
"y_los",
"y_aux",
"y_geo",
"jacobian"),
20945 IN(
"atmgeom_checked",
20946 "atmfields_checked",
20954 "cloudbox_checked",
20959 "jacobian_quantities",
20962 "instrument_pol_array",
20964 GIN(
"ze_tref",
"k2",
"dbze_min"),
20965 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric"),
20967 GIN_DESC(
"Reference temperature for conversion to Ze.",
20968 "Reference dielectric factor.",
20969 "Clip value for dBZe.")));
20972 NAME(
"ySimpleSpectrometer"),
20974 "Converts *iy* to *y* assuming a fixed frequency resolution.\n" 20976 "This is a short-cut, avoiding *yCalc*, that can be used to convert\n" 20977 "monochromatic pencil beam data to spectra with a fixed resolution.\n" 20979 "The method mimics a spectrometer with rectangular response\n" 20980 "functions, all having the same width (*df*). The position of\n" 20981 "the first spectrometer channel is set to f_grid[0]+df/2.\n" 20982 "The centre frequency of channels are returned as *y_f*.\n" 20984 "Auxiliary variables and *jacobian*s are not handled.\n"),
20990 IN(
"iy",
"stokes_dim",
"f_grid"),
20994 GIN_DESC(
"Selected frequency resolution.")));
20997 NAME(
"z_fieldFromHSE"),
20999 "Force altitudes to fulfil hydrostatic equilibrium.\n" 21001 "The method applies hydrostatic equilibrium. A mixture of \"dry\n" 21002 "air\" and water vapour (if present as *abs_species* tag) is assumed.\n" 21003 "That is, the air is assumed to be well mixed and its weight, apart\n" 21004 "from the water vapour, is constant (*molarmass_dry_air*). In\n" 21005 "addition, the effect of any particles (including liquid and ice\n" 21006 "particles) is neglected.\n" 21008 "The output is an update of *z_field*. This variable is expected to\n" 21009 "contain approximative altitudes when calling the function. The\n" 21010 "altitude matching *p_hse* is kept constant. Other input altitudes can\n" 21011 "basically be arbitrary, but good estimates give quicker calculations.\n" 21013 "The calculations are repeated until the change in altitude is below\n" 21014 "*z_hse_accuracy*. An iterative process is needed as gravity varies\n" 21017 "For 1D and 2D, the geographical position is taken from *lat_true*\n" 21018 "and *lon_true*.\n"),
21024 IN(
"atmosphere_dim",
21036 "atmfields_checked",
21038 "molarmass_dry_air",
MdRecord create_mdrecord(const char(&name) [LEN_OF_NAME], const char(&description) [LEN_OF_DESCRIPTION], const std::array< String, NUM_OF_AUTHORS > &authors, const std::array< String, NUM_OF_OUTPUTS > &output, const std::array< String, NUM_OF_GOUT_ARGS > &gout, const std::array< String, NUM_OF_GOUT_TYPES > &gouttype, const std::array< String, NUM_OF_GOUT_DESCRIPTIONS > &goutdesc, const std::array< String, NUM_OF_INPUTS > &input, const std::array< String, NUM_OF_GIN_ARGS > &gin, const std::array< String, NUM_OF_GIN_TYPES > &gintype, const std::array< String, NUM_OF_GIN_DEFAULTS > &gindefault, const std::array< String, NUM_OF_GIN_DESCRIPTIONS > &gindesc, Ts ... flags)
All information for one workspace method.
String get_array_groups_as_string(bool basetype_is_group, bool return_basetype_only)
Return string list of array types.
The global header file for ARTS.
#define USES_TEMPLATES(x)
Array< String > ArrayOfString
An array of Strings.
This can be used to make arrays out of anything.
const ArrayOfString wsv_group_names
The names associated with Wsv groups as Strings.
void define_md_data_raw()
Declaration of the class MdRecord.
my_basic_string< char > String
The String type for ARTS.
std::array< String, sizeof...(T)> string_array(const T &... input)
const Array< MdRecord > md_data_raw
Lookup information for workspace methods.
Auxiliary header stuff related to workspace variable groups.