46template <
typename ... T>
47std::array<
const char *,
sizeof...(T)>
string_array(
const T*... input)
52template <
size_t NUM_OF_AUTHORS,
53 size_t NUM_OF_OUTPUTS,
54 size_t NUM_OF_GOUT_ARGS,
55 size_t NUM_OF_GOUT_TYPES,
56 size_t NUM_OF_GOUT_DESCRIPTIONS,
58 size_t NUM_OF_GIN_ARGS,
59 size_t NUM_OF_GIN_TYPES,
60 size_t NUM_OF_GIN_DEFAULTS,
61 size_t NUM_OF_GIN_DESCRIPTIONS,
65 const char *description,
66 const std::array<const char *, NUM_OF_AUTHORS>& authors,
67 const std::array<const char *, NUM_OF_OUTPUTS>& output,
68 const std::array<const char *, NUM_OF_GOUT_ARGS>& gout,
69 const std::array<const char *, NUM_OF_GOUT_TYPES>& gouttype,
70 const std::array<const char *, NUM_OF_GOUT_DESCRIPTIONS>& goutdesc,
71 const std::array<const char *, NUM_OF_INPUTS>& input,
72 const std::array<const char *, NUM_OF_GIN_ARGS>& gin,
73 const std::array<const char *, NUM_OF_GIN_TYPES>& gintype,
74 const std::array<const char *, NUM_OF_GIN_DEFAULTS>& gindefault,
75 const std::array<const char *, NUM_OF_GIN_DESCRIPTIONS>& gindesc,
78 static_assert(NUM_OF_AUTHORS not_eq 0,
"Must have at least one author");
79 static_assert(NUM_OF_GOUT_ARGS == NUM_OF_GOUT_TYPES,
"GOUT type(s) count does not match number of GOUT");
80 static_assert(NUM_OF_GOUT_ARGS == NUM_OF_GOUT_DESCRIPTIONS,
"GOUT description(s) count does not match number of GOUT");
81 static_assert(NUM_OF_GIN_ARGS == NUM_OF_GIN_TYPES,
"GIN type(s) count does not match number of GIN");
82 static_assert(NUM_OF_GIN_ARGS == NUM_OF_GIN_DEFAULTS,
"GIN default(s) count does not match number of GIN");
83 static_assert(NUM_OF_GIN_ARGS == NUM_OF_GIN_DESCRIPTIONS,
"GIN description(s) count does not match number of GIN");
102#define DESCRIPTION(x) x
103#define AUTHORS(...) \
104 string_array( __VA_ARGS__ )
106 string_array( __VA_ARGS__ )
108 string_array( __VA_ARGS__ )
109#define GOUT_TYPE(...) \
110 string_array( __VA_ARGS__ )
111#define GOUT_DESC(...) \
112 string_array( __VA_ARGS__ )
114 string_array( __VA_ARGS__ )
116 string_array( __VA_ARGS__ )
117#define GIN_TYPE(...) \
118 string_array( __VA_ARGS__ )
119#define GIN_DEFAULT(...) \
120 string_array( __VA_ARGS__ )
121#define GIN_DESC(...) \
122 string_array( __VA_ARGS__ )
123#define SETMETHOD(x) x
124#define AGENDAMETHOD(x) x
125#define USES_TEMPLATES(x) x
126#define PASSWORKSPACE(x) x
127#define PASSWSVNAMES(x) x
195 md_data_raw.resize(0);
202 const String ARRAY_GROUPS_WITH_BASETYPE =
207 for (
const auto & wsv_group : wsv_groups) {
208 if (wsv_group !=
"Any") {
210 NAME(
String(wsv_group.name +
"Create").c_str()),
212 String(
"Creates a variable of group " + wsv_group.name +
215 "After being created, the variable is uninitialized.\n")
233 if (wsv_group not_eq
"Agenda" and wsv_group not_eq
"ArrayOfAgenda") {
236 DESCRIPTION(
"Sets a workspace variable to the given value.\n"),
261 NAME(
"AbsInputFromAtmFields"),
262 DESCRIPTION(
"Initialises the WSVs *abs_p*, *abs_t* and *abs_vmrs* from\n"
263 "*p_grid, *t_field* and *vmr_field*.\n"
265 "This only works for a 1D atmosphere!\n"),
267 OUT(
"abs_p",
"abs_t",
"abs_vmrs"),
271 IN(
"atmosphere_dim",
"p_grid",
"t_field",
"vmr_field"),
278 NAME(
"abs_cia_dataAddCIARecord"),
280 "Takes CIARecord as input and appends the results in the appropriate place.\n"
282 "If CIARecord has same species as species in *abs_cia_data*, then the array\n"
283 "position is used to append all of the CIARecord into the array. If clobber\n"
284 "evaluates as true, cia_record overwrites the appropriate *abs_cia_data*. If\n"
285 "species in cia_record are not in *abs_cia_data*, the CIARecord is pushed back.\n"),
292 GIN(
"cia_record",
"clobber"),
295 GIN_DESC(
"CIA record to append to *abs_cia_data*.",
296 "If true, the new input clobbers the old cia data.")));
299 NAME(
"abs_cia_dataReadSpeciesSplitCatalog"),
301 "Reads a species split CIA dataset.\n"),
308 GIN(
"basename",
"robust"),
311 GIN_DESC(
"The path to the split catalog files",
312 "Flag to continue in case nothing is found [0 throws, 1 continues]")));
315 NAME(
"abs_cia_dataReadFromCIA"),
317 "Read data from a CIA data file for all CIA molecules defined\n"
318 "in *abs_species*.\n"
320 "The units in the HITRAN file are:\n"
321 "Frequency: cm^(-1)\n"
322 "Binary absorption cross-section: cm^5 molec^(-2)\n"
324 "Upon reading we convert this to the ARTS internal SI units \n"
325 "of Hz and m^5 molec^(-2).\n"),
335 GIN_DESC(
"Path to the CIA catalog directory.")));
338 NAME(
"abs_cia_dataReadFromXML"),
340 "Read data from a CIA XML file and check that all CIA tags defined\n"
341 "in *abs_species* are present in the file.\n"
343 "The units of the data are described in *abs_cia_dataReadFromCIA*.\n"),
353 GIN_DESC(
"Name of the XML file.")));
356 NAME(
"abs_hitran_relmat_dataReadHitranRelmatDataAndLines"),
357 DESCRIPTION(
"Reads HITRAN line mixing data from a basedir\n"
358 "The basedir must point at line mixing data as provided by HITRAN.\n"
359 "The lines will be changed such that ALL CO2 lines are truncated\n"
360 "before adding the HITRAN line mixing lines.\n"
362 "The available modes are such that \"VP*\" uses Voigt profiles and\n"
363 "\"SDVP*\" uses speed-dependent Voigt profiles, where the \"_Y\"\n"
364 "signifies if Rosenkranz-style line mixing is considered or not, and\n"
365 "the \"W\" at the end signifies that full calculations are used. At\n"
366 "the line mixing limit, line mixing is simply turned off.\n"
368 "The \"FullW\" mode uses Lorentzian calculations with the full relaxation\n"
369 "matrix until the line mixing limit is reached and it switches to Voigt.\n"
371 "The HITRAN LM data is available for download at:\n"
372 "https://hitran.org/supplementary/\n"
375 OUT(
"abs_hitran_relmat_data",
"abs_lines_per_species"),
379 IN(
"abs_lines_per_species",
"abs_species"),
380 GIN(
"basedir",
"linemixinglimit",
"fmin",
"fmax",
"stot",
"mode"),
381 GIN_TYPE(
"String",
"Numeric",
"Numeric",
"Numeric",
"Numeric",
"String"),
383 GIN_DESC(
"Direcory where the linemixing data is to be found",
384 "Line mixing limit as defined by *AbsorptionLines*",
385 "Minimum frequency to read from",
386 "Maximum frequency to read until",
387 "Minimum integrated band strength to consider",
388 "Mode of calculations. The options are: \"VP\", \"VP_Y\", \"SDVP\", \"SDVP_Y\", \"FullW\", and \"VP_W\""
392 NAME(
"abs_linesAdaptOnTheFlyLineMixing"),
393 DESCRIPTION(
"Adapts the line-catalog from using *ecs_data* data to.\n"
394 "instead fit ordered parameters to imitate the line mxixing\n"
396 "The order should be 1 or 2. It will compute at 3 as well, but\n"
397 "there's no support in current ARTS LBL to make use of it so it\n"
398 "will crash at some point\n"
405 IN(
"abs_lines",
"ecs_data"),
406 GIN(
"t_grid",
"pressure",
"order",
"robust",
"rosenkranz_adaptation"),
407 GIN_TYPE(
"Vector",
"Numeric",
"Index",
"Index",
"Index"),
409 GIN_DESC(
"The sorted temperature grid",
410 "The pressure at which the adaptation is made",
411 "The order of the parameters in adaptation",
412 "Boolean for failed band adaptation behavior. 0: throw exception. not 0: conversion to line-by-line calculations",
413 "Apply direct Rosenkranz adaptation instead of computing the Eigenvalues")));
416 NAME(
"abs_lines_per_speciesAdaptOnTheFlyLineMixing"),
417 DESCRIPTION(
"Calls *abs_linesAdaptOnTheFlyLineMixing* for each internal array\n"
420 OUT(
"abs_lines_per_species"),
424 IN(
"abs_lines_per_species",
"ecs_data"),
425 GIN(
"t_grid",
"pressure",
"order",
"robust",
"rosenkranz_adaptation"),
426 GIN_TYPE(
"Vector",
"Numeric",
"Index",
"Index",
"Index"),
428 GIN_DESC(
"The sorted temperature grid",
429 "The pressure at which the adaptation is made",
430 "The order of the parameters in adaptation",
431 "Boolean for failed band adaptation behavior. 0: throw exception. not 0: conversion to line-by-line calculations",
432 "Apply direct Rosenkranz adaptation instead of computing the Eigenvalues")));
435 NAME(
"abs_lines_per_speciesAdaptHitranLineMixing"),
436 DESCRIPTION(
"Adapts the line-catalog from using *abs_hitran_relmat_data* to.\n"
437 "instead fit ordered parameters to imitate the line mxixing\n"
439 "The order should be 1 or 2. It will compute at 3 as well, but\n"
440 "there's no support in current ARTS LBL to make use of it so it\n"
441 "will crash at some point\n"
444 OUT(
"abs_lines_per_species"),
448 IN(
"abs_lines_per_species",
"abs_hitran_relmat_data"),
449 GIN(
"t_grid",
"pressure",
"order"),
450 GIN_TYPE(
"Vector",
"Numeric",
"Index"),
452 GIN_DESC(
"The sorted temperature grid",
453 "The pressure at which the adaptation is made",
454 "The order of the parameters in adaptation")));
457 NAME(
"abs_linesKeepBand"),
458 DESCRIPTION(
"Keep only *qid*-match band lines in *abs_lines*\n"
460 "Note that other bands are technically kept but have zero lines\n"),
473 NAME(
"abs_linesRemoveBand"),
474 DESCRIPTION(
"Removes *qid* band from *abs_lines*\n"),
487 NAME(
"abs_linesRemoveLines"),
488 DESCRIPTION(
"Remove lines *abs_lines* outside of specifications\n"
490 "The specifications are:\n"
491 "\tThe lower frequency bound (all lines of this frequency or higher may be kept)\n"
492 "\tThe upper frequency bound (all lines of this frequency or lower may be kept)\n"
493 "\tThe lower intensity bound (all lines with lower intensity may be removed)\n"
495 "If safe evaluates true, all lines in an absorption band must fail the above\n"
496 "tests to be removed\n"
498 "The frequency filtering can be reversed, from keeping upper_frequency to\n"
499 "lower_frequency, to instead remove lines inside the range by setting\n"
500 "*flip_flims* to 1.\n"
502 "The method *abs_linesRemoveEmptyBands* is internally applied after the\n"
511 GIN(
"lower_frequency",
"upper_frequency",
"lower_intensity",
"safe",
"flip_flims"),
512 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric",
"Index",
"Index"),
514 GIN_DESC(
"The lower frequency bound",
515 "The upper frequency bound",
516 "The lower intensity bound",
517 "Remove only lines from a band if all lines of a band fail",
518 "Reverse the frequecy filtering, see above")));
521 NAME(
"abs_lines_per_speciesRemoveLines"),
522 DESCRIPTION(
"Repeats *abs_linesRemoveLines* for all inner arrays\n"
525 OUT(
"abs_lines_per_species"),
529 IN(
"abs_lines_per_species"),
530 GIN(
"lower_frequency",
"upper_frequency",
"lower_intensity",
"safe",
"flip_flims"),
531 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric",
"Index",
"Index"),
533 GIN_DESC(
"The lower frequency bound",
534 "The upper frequency bound",
535 "The lower intensity bound",
536 "Remove only lines from a band if all lines of a band fail",
537 "Reverse the frequecy filtering")));
540 NAME(
"abs_linesRemoveLinesFromSpecies"),
541 DESCRIPTION(
"As *abs_linesRemoveLines* but only for bands of the given species\n"
543 "species must be a single entry, and must specify the isotopologue\n"
551 GIN(
"species",
"lower_frequency",
"upper_frequency",
"lower_intensity",
552 "safe",
"flip_flims"),
553 GIN_TYPE(
"ArrayOfSpeciesTag",
"Numeric",
"Numeric",
"Numeric",
"Index",
"Index"),
556 "The lower frequency bound",
557 "The upper frequency bound",
558 "The lower intensity bound",
559 "Remove only lines from a band if all lines of a band fail",
560 "Reverse the frequecy filtering")));
563 NAME(
"abs_lines_per_speciesRemoveLinesFromSpecies"),
564 DESCRIPTION(
"Repeats *abs_linesRemoveLinesFromSpecies* for all inner arrays\n"
567 OUT(
"abs_lines_per_species"),
571 IN(
"abs_lines_per_species"),
572 GIN(
"species",
"lower_frequency",
"upper_frequency",
"lower_intensity",
573 "safe",
"flip_flims"),
574 GIN_TYPE(
"ArrayOfSpeciesTag",
"Numeric",
"Numeric",
"Numeric",
"Index",
"Index"),
577 "The lower frequency bound",
578 "The upper frequency bound",
579 "The lower intensity bound",
580 "Remove only lines from a band if all lines of a band fail",
581 "Reverse the frequecy filtering")));
584 NAME(
"abs_linesRemoveEmptyBands"),
585 DESCRIPTION(
"Removes emtpy bands from *abs_lines*\n"),
598 NAME(
"abs_linesFlatten"),
599 DESCRIPTION(
"Makes *abs_lines* with the same ID share lines\n"),
612 NAME(
"abs_lines_per_speciesFlatten"),
613 DESCRIPTION(
"Calls *abs_linesFlatten* per internal set of bands\n"),
615 OUT(
"abs_lines_per_species"),
619 IN(
"abs_lines_per_species"),
626 NAME(
"CallbackFunctionExecute"),
637 GIN_DESC(
"This will execute as \"function(current workspace);\""),
647 "Checks that *abs_lines* contains only unique absorption lines\n"),
660 NAME(
"abs_linesReplaceLines"),
662 "Replace all lines in *abs_lines* that match with lines in replacement_lines.\n"
664 "Each replacement_lines must match excatly a single line in *abs_lines*.\n"
666 "The matching requires identical quantum number signatures to work\n"
668 "Note that lines are identified by their quantum number identifier, and if the broadening or\n"
669 "compute data disagree between two bands, a new band is appended unless we can work around the issue.\n"
670 "This may cause *CheckUnique* to fail after running this method\n"),
677 GIN(
"replacing_lines"),
680 GIN_DESC(
"Line-array that replace lines in *abs_lines*.")));
683 NAME(
"abs_linesReplaceBands"),
685 "Replace all bands in *abs_lines* that match with bands in *replacing_bands*.\n"
687 "Each *replacing_bands* must match excatly a single band in *abs_lines*.\n"
689 "The matching requires identical quantum number signatures to work.\n"),
696 GIN(
"replacing_bands"),
699 GIN_DESC(
"Line-array that removes lines from *abs_lines*.")));
702 NAME(
"abs_linesDeleteBadF0"),
704 "Deletes all lines in *abs_lines* that have bad central frequencies\n"
706 "If lower evaluates as true, deletes all lines with a frequency below f0.\n"
707 "Otherwise deletes all lines with a frequency above f0.\n"),
718 "Lower or upper flag (eval as boolean)")));
721 NAME(
"abs_linesReadSpeciesSplitCatalog"),
722 DESCRIPTION(
"Reads a catalog of absorption lines files in a directory\n"),
729 GIN(
"basename",
"robust"),
732 GIN_DESC(
"The path to the split catalog files",
733 "Flag to continue in case nothing is found [0 throws, 1 continues]")));
736 NAME(
"abs_lines_per_speciesReadSpeciesSplitCatalog"),
737 DESCRIPTION(
"See *abs_linesReadSpeciesSplitCatalog* but only for *abs_species*\n"),
739 OUT(
"abs_lines_per_species"),
744 GIN(
"basename",
"robust"),
747 GIN_DESC(
"The path to the split catalog files",
748 "Flag to continue in case nothing is found [0 throws, 1 continues]")));
751 NAME(
"abs_lines_per_speciesSetEmpty"),
752 DESCRIPTION(
"Empties *abs_lines_per_species* at the correct size.\n"),
754 OUT(
"abs_lines_per_species"),
764 md_data_raw.push_back(
766 DESCRIPTION(
"Sets a broadening parameter to empty if it is effectively empty\n"),
778 md_data_raw.push_back(
780 DESCRIPTION(R
"--(Sets normalization type for all lines
783 "VVH" : Van Vleck and Huber
785 "VVW" : Van Vleck and Weisskopf
787 "RQ" : Rosenkranz quadratic
789 "SFS" : Simple frequency scaling
791 "None" : No extra normalization
793See the theory guide for more details.
804 GIN_DESC(
"Method of line normalizations")));
806 md_data_raw.push_back(
808 DESCRIPTION(R
"--(Sets normalization type for all lines
811 "VVH" : Van Vleck and Huber
813 "VVW" : Van Vleck and Weisskopf
815 "RQ" : Rosenkranz quadratic
817 "SFS" : Simple frequency scaling
819 "None" : No extra normalization
821See the theory guide for more details.
824 OUT(
"abs_lines_per_species"),
828 IN(
"abs_lines_per_species"),
832 GIN_DESC(
"Method of line normalizations")));
834 md_data_raw.push_back(
836 DESCRIPTION(R
"--(Sets normalization type for all matching lines
838Match is done with a quantum identifier
841 "VVH" : Van Vleck and Huber
843 "VVW" : Van Vleck and Weisskopf
845 "RQ" : Rosenkranz quadratic
847 "SFS" : Simple frequency scaling
849 "None" : No extra normalization
851See the theory guide for more details.
860 GIN_TYPE(
"String",
"QuantumIdentifier"),
862 GIN_DESC(
"Method of line normalizations",
863 "ID of one or more bands")));
865 md_data_raw.push_back(
867 DESCRIPTION(R
"--(Sets normalization type for all matching lines
869Match is done with a quantum identifier
872 "VVH" : Van Vleck and Huber
874 "VVW" : Van Vleck and Weisskopf
876 "RQ" : Rosenkranz quadratic
878 "SFS" : Simple frequency scaling
880 "None" : No extra normalization
882See the theory guide for more details.
885 OUT(
"abs_lines_per_species"),
889 IN(
"abs_lines_per_species"),
891 GIN_TYPE(
"String",
"QuantumIdentifier"),
893 GIN_DESC(
"Method of line normalizations",
894 "ID of one or more bands")));
896 md_data_raw.push_back(
898 DESCRIPTION(R
"--(Sets normalization type for all matching lines
900Match is done with a species tag
903 "VVH" : Van Vleck and Huber
905 "VVW" : Van Vleck and Weisskopf
907 "RQ" : Rosenkranz quadratic
909 "SFS" : Simple frequency scaling
911 "None" : No extra normalization
913See the theory guide for more details.
916 OUT(
"abs_lines_per_species"),
920 IN(
"abs_lines_per_species",
"abs_species"),
921 GIN(
"option",
"species_tag"),
924 GIN_DESC(
"Method of line normalizations",
925 "The species tag from *abs_species* to change")));
927 md_data_raw.push_back(
929 DESCRIPTION(R
"--(Sets mirroring type for all lines.
932 "None" : No mirrored line
934 "SameAsLineShape" : Mirrored line broadened by line shape
936 "Manual" : Manually mirrored line (be careful; allows all frequencies)
938 "Lorentz" : Mirrored line broadened by Lorentz
940Note that mirroring is never applied for DP line shape
942Also note that Lorentz profile is approached by most line shapes at high frequency offset.
944Also note that Manual settings are potentially dangerous as other frequency
945offsets might not work as hoped.
956 GIN_DESC(
"Method of line mirroring")));
958 md_data_raw.push_back(
960 DESCRIPTION(R
"--(Sets mirroring type for all lines.
963 "None" : No mirrored line
965 "SameAsLineShape" : Mirrored line broadened by line shape
967 "Manual" : Manually mirrored line (be careful; allows all frequencies)
969 "Lorentz" : Mirrored line broadened by Lorentz
971Note that mirroring is never applied for DP line shape
973Also note that Lorentz profile is approached by most line shapes at high frequency offset.
975Also note that Manual settings are potentially dangerous as other frequency
976offsets might not work as hoped.
979 OUT(
"abs_lines_per_species"),
983 IN(
"abs_lines_per_species"),
987 GIN_DESC(
"Method of line mirroring")));
989 md_data_raw.push_back(
991 DESCRIPTION(R
"--(Sets mirroring type for all matching lines.
993Match is done with a quantum identifier
996 "None" : No mirrored line
998 "SameAsLineShape" : Mirrored line broadened by line shape
1000 "Manual" : Manually mirrored line (be careful; allows all frequencies)
1002 "Lorentz" : Mirrored line broadened by Lorentz
1004Note that mirroring is never applied for DP line shape
1006Also note that Lorentz profile is approached by most line shapes at high frequency offset.
1008Also note that Manual settings are potentially dangerous as other frequency
1009offsets might not work as hoped.
1017 GIN(
"option",
"ID"),
1018 GIN_TYPE(
"String",
"QuantumIdentifier"),
1020 GIN_DESC(
"Method of line mirroring",
1021 "ID of one or more bands")));
1023 md_data_raw.push_back(
1025 DESCRIPTION(R
"--(Sets mirroring type for all matching lines.
1027Match is done with a quantum identifier
1030 "None" : No mirrored line
1032 "SameAsLineShape" : Mirrored line broadened by line shape
1034 "Manual" : Manually mirrored line (be careful; allows all frequencies)
1036 "Lorentz" : Mirrored line broadened by Lorentz
1038Note that mirroring is never applied for DP line shape
1040Also note that Lorentz profile is approached by most line shapes at high frequency offset.
1042Also note that Manual settings are potentially dangerous as other frequency
1043offsets might not work as hoped.
1046 OUT(
"abs_lines_per_species"),
1050 IN(
"abs_lines_per_species"),
1051 GIN(
"option",
"ID"),
1052 GIN_TYPE(
"String",
"QuantumIdentifier"),
1054 GIN_DESC(
"Method of line mirroring",
1055 "ID of one or more bands")));
1057 md_data_raw.push_back(
1059 DESCRIPTION(R
"--(Sets mirroring type for all matching lines.
1061Match is done with a species tag
1064 "None" : No mirrored line
1066 "SameAsLineShape" : Mirrored line broadened by line shape
1068 "Manual" : Manually mirrored line (be careful; allows all frequencies)
1070 "Lorentz" : Mirrored line broadened by Lorentz
1072Note that mirroring is never applied for DP line shape
1074Also note that Lorentz profile is approached by most line shapes at high frequency offset.
1076Also note that Manual settings are potentially dangerous as other frequency
1077offsets might not work as hoped.
1080 OUT(
"abs_lines_per_species"),
1084 IN(
"abs_lines_per_species",
"abs_species"),
1085 GIN(
"option",
"species_tag"),
1088 GIN_DESC(
"Method of line mirroring",
1089 "The species tag from *abs_species* to change")));
1091 md_data_raw.push_back(
1093 DESCRIPTION(
"Sorts first the lines then the bands by smallest first\n"),
1105 md_data_raw.push_back(
1107 DESCRIPTION(
"Makes a copy of all lines at negative frequency setting them.\n"
1108 "to manual mirroring mode\n"),
1120 md_data_raw.push_back(
1122 DESCRIPTION(
"Makes a copy of all lines at negative frequency setting them.\n"
1123 "to manual mirroring mode\n"),
1125 OUT(
"abs_lines_per_species"),
1129 IN(
"abs_lines_per_species"),
1135 md_data_raw.push_back(
1137 DESCRIPTION(
"Calls *abs_linesManualMirroring* for given species in *abs_species*\n"),
1139 OUT(
"abs_lines_per_species"),
1143 IN(
"abs_lines_per_species",
"abs_species"),
1149 md_data_raw.push_back(
1151 DESCRIPTION(R
"--(Sets population type for all lines.
1154 "LTE" : Assume band is in LTE
1156 "NLTE" : Assume band is in NLTE and the upper-to-lower ratio is known
1158 "VibTemps" : Assume band is in NLTE described by vibrational temperatures and LTE at other levels
1160 "ByHITRANRosenkranzRelmat" : Assume band needs to compute relaxation matrix to derive HITRAN Y-coefficients
1162 "ByHITRANFullRelmat" : Assume band needs to compute and directly use the relaxation matrix according to HITRAN
1164 "ByMakarovFullRelmat" : Assume band needs to compute and directly use the relaxation matrix according to Makarov et al 2020
1166 "ByRovibLinearDipoleLineMixing" : Assume band needs to compute and directly use the relaxation matrix according to Hartmann, Boulet, Robert, 2008, 1st edition
1168You must have set *nlte_field* and/or its ilk to use the NLTE methods.
1170You must have *abs_hitran_relmat_data* for the ByHITRANXX methods.
1172You must have *ecs_data* for the other two relaxation matrix options
1183 GIN_DESC(
"Method of line population")));
1185 md_data_raw.push_back(
1187 DESCRIPTION(R
"--(Sets population type for all lines.
1190 "LTE" : Assume band is in LTE
1192 "NLTE" : Assume band is in NLTE and the upper-to-lower ratio is known
1194 "VibTemps" : Assume band is in NLTE described by vibrational temperatures and LTE at other levels
1196 "ByHITRANRosenkranzRelmat" : Assume band needs to compute relaxation matrix to derive HITRAN Y-coefficients
1198 "ByHITRANFullRelmat" : Assume band needs to compute and directly use the relaxation matrix according to HITRAN
1200 "ByMakarovFullRelmat" : Assume band needs to compute and directly use the relaxation matrix according to Makarov et al 2020
1202 "ByRovibLinearDipoleLineMixing" : Assume band needs to compute and directly use the relaxation matrix according to Hartmann, Boulet, Robert, 2008, 1st edition
1204You must have set *nlte_field* and/or its ilk to use the NLTE methods.
1206You must have *abs_hitran_relmat_data* for the ByHITRANXX methods.
1208You must have *ecs_data* for the other two relaxation matrix options
1211 OUT(
"abs_lines_per_species"),
1215 IN(
"abs_lines_per_species"),
1219 GIN_DESC(
"Method of line population")));
1221 md_data_raw.push_back(
1223 DESCRIPTION(R
"--(Sets population type for all matching lines.
1225Match is done with a quantum identifier
1228 "LTE" : Assume band is in LTE
1230 "NLTE" : Assume band is in NLTE and the upper-to-lower ratio is known
1232 "VibTemps" : Assume band is in NLTE described by vibrational temperatures and LTE at other levels
1234 "ByHITRANRosenkranzRelmat" : Assume band needs to compute relaxation matrix to derive HITRAN Y-coefficients
1236 "ByHITRANFullRelmat" : Assume band needs to compute and directly use the relaxation matrix according to HITRAN
1238 "ByMakarovFullRelmat" : Assume band needs to compute and directly use the relaxation matrix according to Makarov et al 2020
1240 "ByRovibLinearDipoleLineMixing" : Assume band needs to compute and directly use the relaxation matrix according to Hartmann, Boulet, Robert, 2008, 1st edition
1242You must have set *nlte_field* and/or its ilk to use the NLTE methods.
1244You must have *abs_hitran_relmat_data* for the ByHITRANXX methods.
1246You must have *ecs_data* for the other two relaxation matrix options
1254 GIN(
"option",
"ID"),
1255 GIN_TYPE(
"String",
"QuantumIdentifier"),
1257 GIN_DESC(
"Method of line population",
1258 "ID of one or more bands")));
1260 md_data_raw.push_back(
1262 DESCRIPTION(R
"--(Sets population type for all matching lines.
1264Match is done with a quantum identifier
1267 "LTE" : Assume band is in LTE
1269 "NLTE" : Assume band is in NLTE and the upper-to-lower ratio is known
1271 "VibTemps" : Assume band is in NLTE described by vibrational temperatures and LTE at other levels
1273 "ByHITRANRosenkranzRelmat" : Assume band needs to compute relaxation matrix to derive HITRAN Y-coefficients
1275 "ByHITRANFullRelmat" : Assume band needs to compute and directly use the relaxation matrix according to HITRAN
1277 "ByMakarovFullRelmat" : Assume band needs to compute and directly use the relaxation matrix according to Makarov et al 2020
1279 "ByRovibLinearDipoleLineMixing" : Assume band needs to compute and directly use the relaxation matrix according to Hartmann, Boulet, Robert, 2008, 1st edition
1281You must have set *nlte_field* and/or its ilk to use the NLTE methods.
1283You must have *abs_hitran_relmat_data* for the ByHITRANXX methods.
1285You must have *ecs_data* for the other two relaxation matrix options
1288 OUT(
"abs_lines_per_species"),
1292 IN(
"abs_lines_per_species"),
1293 GIN(
"option",
"ID"),
1294 GIN_TYPE(
"String",
"QuantumIdentifier"),
1296 GIN_DESC(
"Method of line population",
1297 "ID of one or more bands")));
1299 md_data_raw.push_back(
1301 DESCRIPTION(R
"--(Sets population type for all matching lines.
1303Match is done with a species tag
1306 "LTE" : Assume band is in LTE
1308 "NLTE" : Assume band is in NLTE and the upper-to-lower ratio is known
1310 "VibTemps" : Assume band is in NLTE described by vibrational temperatures and LTE at other levels
1312 "ByHITRANRosenkranzRelmat" : Assume band needs to compute relaxation matrix to derive HITRAN Y-coefficients
1314 "ByHITRANFullRelmat" : Assume band needs to compute and directly use the relaxation matrix according to HITRAN
1316 "ByMakarovFullRelmat" : Assume band needs to compute and directly use the relaxation matrix according to Makarov et al 2020
1318 "ByRovibLinearDipoleLineMixing" : Assume band needs to compute and directly use the relaxation matrix according to Hartmann, Boulet, Robert, 2008, 1st edition
1320You must have set *nlte_field* and/or its ilk to use the NLTE methods.
1322You must have *abs_hitran_relmat_data* for the ByHITRANXX methods.
1324You must have *ecs_data* for the other two relaxation matrix options
1327 OUT(
"abs_lines_per_species"),
1331 IN(
"abs_lines_per_species",
"abs_species"),
1332 GIN(
"option",
"species_tag"),
1335 GIN_DESC(
"Method of line population",
1336 "The species tag from *abs_species* to change")));
1338 md_data_raw.push_back(
1340 DESCRIPTION(R
"--(Sets shape calculations type for all lines.
1343 "DP" : Doppler profile
1345 "LP" : Lorentz profile
1347 "VP" : Voigt profile
1349 "SDVP" : Speed-dependent Voigt profile
1351 "HTP" : Hartman-Tran profile
1353See the theory guide for more details.
1364 GIN_DESC(
"Method of line shape calculations")));
1366 md_data_raw.push_back(
1368 DESCRIPTION(R
"--(Sets shape calculations type for all lines.
1371 "DP" : Doppler profile
1373 "LP" : Lorentz profile
1375 "VP" : Voigt profile
1377 "SDVP" : Speed-dependent Voigt profile
1379 "HTP" : Hartman-Tran profile
1381See the theory guide for more details.
1384 OUT(
"abs_lines_per_species"),
1388 IN(
"abs_lines_per_species"),
1392 GIN_DESC(
"Method of line shape calculations")));
1394 md_data_raw.push_back(
1396 DESCRIPTION(R
"--(Sets shape calculations type for all matching lines.
1398Match is done with a quantum identifier
1401 "DP" : Doppler profile
1403 "LP" : Lorentz profile
1405 "VP" : Voigt profile
1407 "SDVP" : Speed-dependent Voigt profile
1409 "HTP" : Hartman-Tran profile
1411See the theory guide for more details.
1419 GIN(
"option",
"ID"),
1420 GIN_TYPE(
"String",
"QuantumIdentifier"),
1422 GIN_DESC(
"Method of line shape calculations",
1423 "ID of one or more bands")));
1425 md_data_raw.push_back(
1427 DESCRIPTION(R
"--(Sets shape calculations type for all matching lines.
1429Match is done with a quantum identifier
1432 "DP" : Doppler profile
1434 "LP" : Lorentz profile
1436 "VP" : Voigt profile
1438 "SDVP" : Speed-dependent Voigt profile
1440 "HTP" : Hartman-Tran profile
1442See the theory guide for more details.
1445 OUT(
"abs_lines_per_species"),
1449 IN(
"abs_lines_per_species"),
1450 GIN(
"option",
"ID"),
1451 GIN_TYPE(
"String",
"QuantumIdentifier"),
1453 GIN_DESC(
"Method of line shape calculations",
1454 "ID of one or more bands")));
1456 md_data_raw.push_back(
1458 DESCRIPTION(R
"--(Sets shape calculations type for all matching lines.
1460Match is done with a species tag
1463 "DP" : Doppler profile
1465 "LP" : Lorentz profile
1467 "VP" : Voigt profile
1469 "SDVP" : Speed-dependent Voigt profile
1471 "HTP" : Hartman-Tran profile
1473See the theory guide for more details.
1476 OUT(
"abs_lines_per_species"),
1480 IN(
"abs_lines_per_species",
"abs_species"),
1481 GIN(
"option",
"species_tag"),
1484 GIN_DESC(
"Method of line shape calculations",
1485 "The species tag from *abs_species* to change")));
1487 md_data_raw.push_back(
1489 DESCRIPTION(R
"--(Sets cutoff type and magnitude for all lines.
1491The line is cut off when this is active at the given frequency.
1492"The only non-zero range is from this range to its negative equivalent
1497 "ByLine" : Cutoff relative to a speed-independent shifted line center, highest frequency: F0+cutoff+D0
1499For "ByLine", the negative frequency is at F0-cutoff-D0
1507 GIN(
"option",
"value"),
1510 GIN_DESC(
"Method of line shape calculations",
1511 "Value of cutoff")));
1513 md_data_raw.push_back(
1515 DESCRIPTION(R
"--(Sets cutoff type and magnitude for all lines.
1517The line is cut off when this is active at the given frequency.
1518"The only non-zero range is from this range to its negative equivalent
1523 "ByLine" : Cutoff relative to a speed-independent shifted line center, highest frequency: F0+cutoff+D0
1525For "ByLine", the negative frequency is at F0-cutoff-D0
1528 OUT(
"abs_lines_per_species"),
1532 IN(
"abs_lines_per_species"),
1533 GIN(
"option",
"value"),
1536 GIN_DESC(
"Method of line shape calculations",
1537 "Value of cutoff")));
1539 md_data_raw.push_back(
1541 DESCRIPTION(R
"--(Sets cutoff type and magnitude for all matching lines.
1543Match is done with a quantum identifier
1545The line is cut off when this is active at the given frequency.
1546"The only non-zero range is from this range to its negative equivalent
1551 "ByLine" : Cutoff relative to a speed-independent shifted line center, highest frequency: F0+cutoff+D0
1553For "ByLine", the negative frequency is at F0-cutoff-D0
1561 GIN(
"option",
"value",
"ID"),
1562 GIN_TYPE(
"String",
"Numeric",
"QuantumIdentifier"),
1564 GIN_DESC(
"Method of line shape calculations",
1566 "ID of one or more bands")));
1568 md_data_raw.push_back(
1570 DESCRIPTION(R
"--(Sets cutoff type and magnitude for all matching lines.
1572Match is done with a quantum identifier
1574The line is cut off when this is active at the given frequency.
1575"The only non-zero range is from this range to its negative equivalent
1580 "ByLine" : Cutoff relative to a speed-independent shifted line center, highest frequency: F0+cutoff+D0
1582For "ByLine", the negative frequency is at F0-cutoff-D0
1585 OUT(
"abs_lines_per_species"),
1589 IN(
"abs_lines_per_species"),
1590 GIN(
"option",
"value",
"ID"),
1591 GIN_TYPE(
"String",
"Numeric",
"QuantumIdentifier"),
1593 GIN_DESC(
"Method of line shape calculations",
1595 "ID of one or more bands")));
1597 md_data_raw.push_back(
1599 DESCRIPTION(R
"--(Sets cutoff type and magnitude for all matching lines.
1601Match is done with a species tag
1603The line is cut off when this is active at the given frequency.
1604"The only non-zero range is from this range to its negative equivalent
1609 "ByLine" : Cutoff relative to a speed-independent shifted line center, highest frequency: F0+cutoff+D0
1611For "ByLine", the negative frequency is at F0-cutoff-D0
1614 OUT(
"abs_lines_per_species"),
1618 IN(
"abs_lines_per_species",
"abs_species"),
1619 GIN(
"option",
"value",
"species_tag"),
1620 GIN_TYPE(
"String",
"Numeric",
"String"),
1622 GIN_DESC(
"Method of line shape calculations",
1624 "The species tag from *abs_species* to change")));
1626 md_data_raw.push_back(
1628 DESCRIPTION(
"Sets line mixing limit for all lines.\n"
1630 "If value is less than 0, no limit is applied and line mixing is active.\n"
1631 "Otherwise, line mixing is inactive if the pressure is below the limit.\n"),
1643 md_data_raw.push_back(
1647 OUT(
"abs_lines_per_species"),
1651 IN(
"abs_lines_per_species"),
1657 md_data_raw.push_back(
1659 DESCRIPTION(
"See *abs_linesLinemixingLimit* for values\n"
1661 "This function only acts on matches between the bands and input ID\n"),
1669 GIN_TYPE(
"Numeric",
"QuantumIdentifier"),
1672 "ID of one or more bands")));
1674 md_data_raw.push_back(
1676 DESCRIPTION(
"See *abs_linesLinemixingLimit* for values\n"
1678 "This function only acts on matches between the bands and input ID\n"),
1680 OUT(
"abs_lines_per_species"),
1684 IN(
"abs_lines_per_species"),
1686 GIN_TYPE(
"Numeric",
"QuantumIdentifier"),
1689 "ID of one or more bands")));
1691 md_data_raw.push_back(
1693 DESCRIPTION(
"See *abs_linesLinemixingLimit* but for single species\n"),
1695 OUT(
"abs_lines_per_species"),
1699 IN(
"abs_lines_per_species",
"abs_species"),
1700 GIN(
"value",
"species_tag"),
1704 "The species tag from *abs_species* to change")));
1706 md_data_raw.push_back(
1708 DESCRIPTION(
"Sets reference temperature for all lines.\n"),
1720 md_data_raw.push_back(
1724 OUT(
"abs_lines_per_species"),
1728 IN(
"abs_lines_per_species"),
1734 md_data_raw.push_back(
1738 "This function only acts on matches between the bands and input ID\n"),
1746 GIN_TYPE(
"Numeric",
"QuantumIdentifier"),
1749 "ID of one or more bands")));
1751 md_data_raw.push_back(
1755 "This function only acts on matches between the bands and input ID\n"),
1757 OUT(
"abs_lines_per_species"),
1761 IN(
"abs_lines_per_species"),
1763 GIN_TYPE(
"Numeric",
"QuantumIdentifier"),
1766 "ID of one or more bands")));
1768 md_data_raw.push_back(
1770 DESCRIPTION(
"See *abs_linesT0* but for single species\n"),
1772 OUT(
"abs_lines_per_species"),
1776 IN(
"abs_lines_per_species",
"abs_species"),
1777 GIN(
"value",
"species_tag"),
1781 "The species tag from *abs_species* to change")));
1784 NAME(
"abs_linesChangeBaseParameterForMatchingLevel"),
1786 "Change parameter of all levels in *abs_lines* that match with *QuantumIdentifier*.\n"
1787 "Only works for these parameters:\n"
1788 "parameter_name = \"Statistical Weight\"\n"
1789 "parameter_name = \"Zeeman Coefficient\"\n"),
1796 GIN(
"QI",
"parameter_name",
"change",
"relative"),
1797 GIN_TYPE(
"QuantumIdentifier",
"String",
"Numeric",
"Index"),
1799 GIN_DESC(
"Information to match the level.",
1800 "Name of parameter to be replaced",
1801 "Value with which to change matching level's value",
1802 "Flag for relative change (0 is absolute change)")));
1805 NAME(
"abs_linesChangeBaseParameterForMatchingLevels"),
1806 DESCRIPTION(
"See *abs_linesChangeBaseParameterForMatchingLevel*\n"),
1813 GIN(
"QI",
"parameter_name",
"change",
"relative"),
1814 GIN_TYPE(
"ArrayOfQuantumIdentifier",
"String",
"Vector",
"Index"),
1816 GIN_DESC(
"Information to match the level.",
1817 "Name of parameter to be replaced",
1818 "Value with which to change matching level's value",
1819 "Flag for relative change (0 is absolute change)")));
1822 NAME(
"abs_lines_per_speciesChangeBaseParameterForMatchingLevel"),
1823 DESCRIPTION(
"See *abs_linesChangeBaseParameterForMatchingLevel*\n"),
1825 OUT(
"abs_lines_per_species"),
1829 IN(
"abs_lines_per_species"),
1830 GIN(
"QI",
"parameter_name",
"change",
"relative"),
1831 GIN_TYPE(
"QuantumIdentifier",
"String",
"Numeric",
"Index"),
1833 GIN_DESC(
"Information to match the level.",
1834 "Name of parameter to be replaced",
1835 "Value with which to change matching level's value",
1836 "Flag for relative change (0 is absolute change)")));
1839 NAME(
"abs_lines_per_speciesChangeBaseParameterForMatchingLevels"),
1840 DESCRIPTION(
"See *abs_linesChangeBaseParameterForMatchingLevel*\n"),
1842 OUT(
"abs_lines_per_species"),
1846 IN(
"abs_lines_per_species"),
1847 GIN(
"QI",
"parameter_name",
"change",
"relative"),
1848 GIN_TYPE(
"ArrayOfQuantumIdentifier",
"String",
"Vector",
"Index"),
1850 GIN_DESC(
"Information to match the level.",
1851 "Name of parameter to be replaced",
1852 "Value with which to change matching level's value",
1853 "Flag for relative change (0 is absolute change)")));
1856 NAME(
"abs_linesBaseParameterMatchingLevel"),
1858 "Set parameter of all levels in *abs_lines* that match with *QuantumIdentifier*.\n"
1859 "Only works for these parameters:\n"
1860 "parameter_name = \"Statistical Weight\"\n"
1861 "parameter_name = \"Zeeman Coefficient\"\n"),
1868 GIN(
"QI",
"parameter_name",
"change"),
1869 GIN_TYPE(
"QuantumIdentifier",
"String",
"Numeric"),
1871 GIN_DESC(
"Information to match the level.",
1872 "Name of parameter to be replaced",
1873 "Value with which to set matching level's value")));
1876 NAME(
"abs_linesBaseParameterMatchingLevels"),
1877 DESCRIPTION(
"See *abs_linesBaseParameterMatchingLevel*\n"),
1884 GIN(
"QI",
"parameter_name",
"change"),
1885 GIN_TYPE(
"ArrayOfQuantumIdentifier",
"String",
"Vector"),
1887 GIN_DESC(
"Information to match the level.",
1888 "Name of parameter to be replaced",
1889 "Value with which to set matching level's value")));
1892 NAME(
"abs_lines_per_speciesBaseParameterMatchingLevel"),
1893 DESCRIPTION(
"See *abs_linesBaseParameterMatchingLevel*\n"),
1895 OUT(
"abs_lines_per_species"),
1899 IN(
"abs_lines_per_species"),
1900 GIN(
"QI",
"parameter_name",
"change"),
1901 GIN_TYPE(
"QuantumIdentifier",
"String",
"Numeric"),
1903 GIN_DESC(
"Information to match the level.",
1904 "Name of parameter to be replaced",
1905 "Value with which to set matching level's value")));
1908 NAME(
"abs_lines_per_speciesBaseParameterMatchingLevels"),
1909 DESCRIPTION(
"See *abs_linesBaseParameterMatchingLevel*\n"),
1911 OUT(
"abs_lines_per_species"),
1915 IN(
"abs_lines_per_species"),
1916 GIN(
"QI",
"parameter_name",
"change"),
1917 GIN_TYPE(
"ArrayOfQuantumIdentifier",
"String",
"Vector"),
1919 GIN_DESC(
"Information to match the level.",
1920 "Name of parameter to be replaced",
1921 "Value with which to set matching level's value")));
1924 NAME(
"abs_linesChangeBaseParameterForMatchingLines"),
1926 "Change parameter of all lines in *abs_lines* that match with *QuantumIdentifier*.\n"
1927 "Only works for these parameters:\n"
1928 "parameter_name = \"Central Frequency\"\n"
1929 "parameter_name = \"Line Strength\"\n"
1930 "parameter_name = \"Lower State Energy\"\n"
1931 "parameter_name = \"Einstein Coefficient\"\n"
1932 "parameter_name = \"Lower Statistical Weight\"\n"
1933 "parameter_name = \"Upper Statistical Weight\"\n"
1934 "parameter_name = \"Lower Zeeman Coefficient\"\n"
1935 "parameter_name = \"Upper Zeeman Coefficient\"\n"),
1942 GIN(
"QI",
"parameter_name",
"change",
"relative"),
1943 GIN_TYPE(
"QuantumIdentifier",
"String",
"Numeric",
"Index"),
1945 GIN_DESC(
"Information to match the line/band.",
1946 "Name of parameter to be replaced",
1947 "Value with which to change matching line's value",
1948 "Flag for relative change (0 is absolute change)")));
1951 NAME(
"abs_lines_per_speciesChangeBaseParameterForMatchingLines"),
1952 DESCRIPTION(
"See *abs_linesChangeBaseParameterForMatchingLines*\n"),
1954 OUT(
"abs_lines_per_species"),
1958 IN(
"abs_lines_per_species"),
1959 GIN(
"QI",
"parameter_name",
"change",
"relative"),
1960 GIN_TYPE(
"QuantumIdentifier",
"String",
"Numeric",
"Index"),
1962 GIN_DESC(
"Information to match the line/band.",
1963 "Name of parameter to be replaced",
1964 "Value with which to change matching line's value",
1965 "Flag for relative change (0 is absolute change)")));
1968 NAME(
"abs_lines_per_speciesChangeBaseParameterForSpecies"),
1969 DESCRIPTION(
"See *abs_linesChangeBaseParameterForMatchingLines* but for single species\n"),
1971 OUT(
"abs_lines_per_species"),
1975 IN(
"abs_lines_per_species",
"abs_species"),
1976 GIN(
"QI",
"parameter_name",
"change",
"relative",
"species_tag"),
1977 GIN_TYPE(
"QuantumIdentifier",
"String",
"Numeric",
"Index",
"String"),
1979 GIN_DESC(
"Information to match the line/band.",
1980 "Name of parameter to be replaced",
1981 "Value with which to change matching line's value",
1982 "Flag for relative change (0 is absolute change)",
1983 "The species tag from *abs_species* to change")));
1986 NAME(
"abs_linesBaseParameterMatchingLines"),
1988 "Set parameter of all lines in *abs_lines* that match with *QuantumIdentifier*.\n"
1989 "Only works for these parameters:\n"
1990 "parameter_name = \"Central Frequency\"\n"
1991 "parameter_name = \"Line Strength\"\n"
1992 "parameter_name = \"Lower State Energy\"\n"
1993 "parameter_name = \"Einstein Coefficient\"\n"
1994 "parameter_name = \"Lower Statistical Weight\"\n"
1995 "parameter_name = \"Upper Statistical Weight\"\n"
1996 "parameter_name = \"Lower Zeeman Coefficient\"\n"
1997 "parameter_name = \"Upper Zeeman Coefficient\"\n"),
2004 GIN(
"QI",
"parameter_name",
"change"),
2005 GIN_TYPE(
"QuantumIdentifier",
"String",
"Numeric"),
2007 GIN_DESC(
"Information to match the line/band.",
2008 "Name of parameter to be replaced",
2009 "Value with which to change matching line's value")));
2012 NAME(
"abs_linesLineShapeModelParametersMatchingLines"),
2013 DESCRIPTION(
"Sets line shape model data parameter in matching lines.\n"
2015 "The matching is done so that QI must be in the line identifier\n"
2017 "Acceptable parameter(s) are:\n"
2028 "Acceptable temperaturemodel(s) are:\n"
2039 "Acceptable species are:\n"
2040 "\t\"AIR\" (so long as it is the broadening species list)\n"
2041 "\t\"SELF\" (so long as it is the broadening species list)\n"
2042 "\tAny species in the line broadening species\n"
2044 "See the user guide for the meanings of all of these keywords\n"
2052 GIN(
"QI",
"parameter",
"species",
"temperaturemodel",
"new_values"),
2059 GIN_DESC(
"Information to match the line.",
2060 "Name of parameter to be replaced",
2061 "Species of parameter to be changed",
2062 "Temperature model for the new values",
2063 "Sets the values found")));
2066 NAME(
"abs_lines_per_speciesLineShapeModelParametersMatchingLines"),
2067 DESCRIPTION(
"See *abs_linesLineShapeModelParametersMatchingLines*\n"
2070 OUT(
"abs_lines_per_species"),
2074 IN(
"abs_lines_per_species"),
2075 GIN(
"QI",
"parameter",
"species",
"temperaturemodel",
"new_values"),
2082 GIN_DESC(
"Information to match the line.",
2083 "Name of parameter to be replaced",
2084 "Species of parameter to be changed",
2085 "Temperature model for the new values",
2086 "Sets the values found")));
2089 NAME(
"abs_linesZeemanCoefficients"),
2090 DESCRIPTION(
"Sets the Zeeman coefficients of the lines by user input\n"
2092 "The matching is permissive, all in qid must just match. If there\n"
2093 "are multiple matches, the last match rules\n"),
2101 GIN_TYPE(
"ArrayOfQuantumIdentifier",
"Vector"),
2103 GIN_DESC(
"Information to match an energy level of a/many lines.",
2104 "Corresponding value to set as Zeeman coefficient")));
2107 NAME(
"abs_lines_per_speciesZeemanCoefficients"),
2108 DESCRIPTION(
"See *abs_linesZeemanCoefficients*\n"),
2110 OUT(
"abs_lines_per_species"),
2114 IN(
"abs_lines_per_species"),
2116 GIN_TYPE(
"ArrayOfQuantumIdentifier",
"Vector"),
2118 GIN_DESC(
"Information to match an energy level of a/many lines.",
2119 "Corresponding value to set as Zeeman coefficient")));
2122 NAME(
"abs_linesCompact"),
2123 DESCRIPTION(
"Removes lines that are unimportant because of their\n"
2124 "cutoff frequency range\n"),
2125 AUTHORS(
"Stefan Buehler",
"Richard Larsson"),
2130 IN(
"abs_lines",
"f_grid"),
2137 NAME(
"abs_lines_per_speciesCompact"),
2139 AUTHORS(
"Stefan Buehler",
"Richard Larsson"),
2140 OUT(
"abs_lines_per_species"),
2144 IN(
"abs_lines_per_species",
"f_grid"),
2151 NAME(
"abs_lines_per_speciesCreateFromLines"),
2153 "Split lines up into the different species.\n"
2155 "The order of the splitting will match the outer layer of *abs_species*\n"
2156 "There will be no respect for the internal layer of *abs_species*\n"),
2158 OUT(
"abs_lines_per_species"),
2162 IN(
"abs_lines",
"abs_species"),
2169 NAME(
"abs_linesTurnOffLineMixing"),
2170 DESCRIPTION(
"Sets all line mixing parameters to emtpy.\n"),
2183 NAME(
"abs_lines_per_speciesTurnOffLineMixing"),
2184 DESCRIPTION(
"Sets all line mixing parameters to emtpy.\n"),
2186 OUT(
"abs_lines_per_species"),
2197 NAME(
"abs_lookupAdapt"),
2199 "Adapts a gas absorption lookup table to the current calculation.\n"
2201 "The lookup table can contain more species and more frequencies than\n"
2202 "are needed for the current calculation. This method cuts down the\n"
2203 "table in memory, so that it contains just what is needed. Also, the\n"
2204 "species in the table are brought in the same order as the species in\n"
2205 "the current calculation.\n"
2207 "Of course, the method also performs quite a lot of checks on the\n"
2208 "table. If something is not ok, a runtime error is thrown.\n"
2210 "The method sets a flag *abs_lookup_is_adapted* to indicate that the\n"
2211 "table has been checked and that it is ok. Never set this by hand,\n"
2212 "always use this method to set it!\n"),
2214 OUT(
"abs_lookup",
"abs_lookup_is_adapted"),
2218 IN(
"abs_lookup",
"abs_species",
"f_grid"),
2225 NAME(
"abs_lookupCalc"),
2227 "Creates a gas absorption lookup table.\n"
2229 "The lookup table stores absorption cross-sections as a function of\n"
2230 "pressure. Additionally, absorption can be stored as a function of\n"
2231 "temperature for temperature perturbations from a reference\n"
2234 "Additionally, absorption can be stored as a function of water vapor\n"
2235 "VMR perturbations from a reference profile. The variable *abs_nls*\n"
2236 "specifies, for which species water vapor perturbations should be\n"
2239 "Note, that the absorbing gas can be any gas, but the perturbing gas is\n"
2242 OUT(
"abs_lookup",
"abs_lookup_is_adapted"),
2254 "propmat_clearsky_agenda"),
2258 GIN_DESC(
"Lowest possible VMR to compute absorption at")));
2261 NAME(
"abs_lookupInit"),
2263 "Creates an empty gas absorption lookup table.\n"
2265 "This is mainly there to help developers. For example, you can write\n"
2266 "the empty table to an XML file, to see the file format.\n"),
2279 NAME(
"abs_lookupSetup"),
2281 "Set up input parameters for abs_lookupCalc.\n"
2283 "More information can be found in the documentation for method\n"
2284 "*abs_lookupSetupBatch*\n"
2286 "Max and min values of H2O and temperature are adjusted to allow for\n"
2287 "numerical perturbations in Jacobian calculation.\n"
2289 "The input variables *abs_nls_interp_order* and *abs_t_interp_order*\n"
2290 "are used to make sure that there are enough points in *abs_nls_pert*\n"
2291 "and *abs_t_pert* for the chosen interpolation order.\n"
2293 "Note: For homogeneous 1D cases, it can be advantageous to calculate\n"
2294 "*abs_lookup* from the 1D atmosphere, and to expand the atmosphere\n"
2295 "to 3D only after that. This particularly if nonlinear species\n"
2296 "(i.e., H2O) are involved."
2299 " *abs_lookupSetupBatch*\n"),
2310 IN(
"atmosphere_dim",
2316 "atmfields_checked",
2318 "abs_p_interp_order",
2319 "abs_t_interp_order",
2320 "abs_nls_interp_order"),
2321 GIN(
"p_step",
"t_step",
"h2o_step"),
2322 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric"),
2325 "Maximum step in log10(p[Pa]). If the pressure grid is "
2326 "coarser than this, additional points are added until each "
2327 "log step is smaller than this.",
2329 "The temperature variation grid step in Kelvin, "
2330 "for a 2D or 3D atmosphere. For a 1D atmosphere this "
2331 "parameter is not used.",
2333 "The H2O variation grid step [fractional], if "
2334 "H2O variations are done (which is determined automatically, "
2335 "based on abs_species and the atmospheric dimension). For a "
2336 "1D atmosphere this parameter is not used.")));
2339 NAME(
"abs_lookupSetupBatch"),
2341 "Set up input parameters for abs_lookupCalc for batch calculations.\n"
2343 "This method performs a similar task as *abs_lookupSetup*, with the\n"
2344 "difference that the lookup table setup is not for a single\n"
2345 "atmospheric state, but for a whole batch of them, stored in\n"
2346 "*batch_atm_fields_compact*.\n"
2348 "The method checks *abs_species* to decide which species require\n"
2349 "nonlinear treatment in the lookup table.\n"
2351 "The method also checks which range of pressures, temperatures, and\n"
2352 "VMRs occurs, and sets *abs_p*, *abs_t*, *abs_t_pert*, and *abs_vmrs*\n"
2355 "If nonlinear species are present, *abs_nls* and *abs_nls_pert* are also\n"
2358 "Max and min values of H2O and temperature are adjusted to allow for\n"
2359 "numerical perturbations in Jacobian calculation.\n"
2361 "The input variables *abs_nls_interp_order* and *abs_t_interp_order*\n"
2362 "are used to make sure that there are enough points in *abs_nls_pert*\n"
2363 "and *abs_t_pert* for the chosen interpolation order.\n"
2365 "The method checks each given field using *atmfields_checkedCalc*.\n"
2366 "If a field does not pass the check, a run-time error is thrown.\n"
2367 "To prevent this, the parameter *robust* can be set to one: Invalid \n"
2368 "atmospheres are skipped, but the run continues. This matches the \n"
2369 "robust behaviour of *ybatchCalc*.\n"
2372 " *abs_lookupSetup*\n"),
2384 "batch_atm_fields_compact",
2385 "abs_p_interp_order",
2386 "abs_t_interp_order",
2387 "abs_nls_interp_order",
2395 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric",
"Vector",
"Index",
"Index"),
2398 "Grid step in log10(p[Pa]) (base 10 logarithm).",
2400 "The temperature variation grid step in Kelvin. The true "
2401 "step can become finer than this, if required by the "
2402 "interpolation order.",
2404 "The H2O variation grid step [fractional], if H2O variations "
2405 "are done (which is determined automatically, based on "
2406 "abs_species and the atmospheric dimension). As for T, the true "
2407 "step can turn out finer if required by the interpolation order.",
2409 "You can give here explicit extreme values to add to "
2410 "abs_t_pert and abs_nls_pert. The order is [t_pert_min, "
2411 "t_pert_max, nls_pert_min, nls_pert_max].",
2413 "A flag with value 1 or 0. If set to one, the batch\n"
2414 "setup will continue, even if individual fields are invalid.\n"
2415 "This is consistent with the behaviour of *ybatchCalc*.",
2417 "A flag with value 1 or 0. If set to one, the gridnames of \n"
2418 " every *atm_fields_compact* are checked.")));
2421 NAME(
"abs_lookupSetupWide"),
2423 "Set up input parameters for abs_lookupCalc for a wide range of\n"
2424 "atmospheric conditions.\n"
2426 "This method can be used to set up parameters for a lookup table that\n"
2427 "really covers all reasonable atmospheric conditions.\n"
2429 "Reference profiles of T and H2O will be constant, so that the\n"
2430 "different dimensions in the lookup table are actually \"orthogonal\",\n"
2431 "unlike the traditional case where we have pressure dependent reference\n"
2432 "profiles. This makes the table numerically somewhat more robust then\n"
2433 "the traditional ones, and it makes it straightforward to calculate the\n"
2434 "accuracy for the different interpolations with abs_lookupTestAccuracy.\n"
2436 "You can give min an max values for the atmospheric conditions. The\n"
2437 "default values are chosen such that they cover the value range over\n"
2438 "the complete Chevallier91L data set, and a bit more. The statistics\n"
2439 "of the Chevallier91L data are:\n"
2441 "min(p) / max(p) [Pa]: 1 / 104960\n"
2442 "min(T) / max(T) [K]: 158.21 / 320.39\n"
2443 "min(H2O) / max(H2O) [VMR]: -5.52e-07 / 0.049\n"),
2455 "abs_p_interp_order",
2456 "abs_t_interp_order",
2457 "abs_nls_interp_order"),
2458 GIN(
"p_min",
"p_max",
"p_step",
"t_min",
"t_max",
"h2o_min",
"h2o_max"),
2466 GIN_DEFAULT(
"0.5",
"110000",
"0.05",
"100",
"400",
"0",
"0.05"),
2467 GIN_DESC(
"Pressure grid minimum [Pa].",
2468 "Pressure grid maximum [Pa].",
2469 "Pressure grid step in log10(p[Pa]) (base 10 logarithm).",
2470 "Temperature grid minimum [K].",
2471 "Temperature grid maximum [K].",
2472 "Humidity grid minimum [fractional].",
2473 "Humidity grid maximum [fractional].")));
2476 NAME(
"abs_nlteFromRaw"),
2485 IN(
"nlte_level_identifiers",
2486 "nlte_vibrational_energies"),
2490 GIN_DESC(
"Vibrational data [nlevels, np]")));
2493 NAME(
"abs_speciesAdd"),
2495 "Adds species tag groups to the list of absorption species.\n"
2497 "This WSM is similar to *abs_speciesSet*, the only difference is that\n"
2498 "this method appends species to an existing list of absorption species instead\n"
2499 "of creating the whole list.\n"
2501 "See *abs_speciesSet* for details on how tags are defined and examples of\n"
2502 "how to input them in the control file.\n"),
2505 "propmat_clearsky_agenda_checked"),
2513 GIN_DESC(
"Specify one String for each tag group that you want to\n"
2514 "add. Inside the String, separate the tags by commas\n"
2515 "(plus optional blanks).\n")));
2518 NAME(
"abs_speciesAdd2"),
2520 "Adds a species tag group to the list of absorption species and\n"
2521 "jacobian quantities.\n"
2523 "The method is basically a combined call of *abs_speciesAdd* and\n"
2524 "*jacobianAddAbsSpecies*. In this way it is not needed to specify a\n"
2525 "tag group in two different places.\n"
2527 "Arguments exactly as for *jacobianAddAbsSpecies*. Note that this\n"
2528 "method only handles a single tag group, in contrast to\n"
2529 "*abs_speciesAdd*.\n"),
2532 "jacobian_quantities",
2534 "propmat_clearsky_agenda_checked"),
2538 IN(
"abs_species",
"atmosphere_dim",
"p_grid",
"lat_grid",
"lon_grid"),
2539 GIN(
"gin1",
"gin2",
"gin3",
"species",
"unit"),
2540 GIN_TYPE(
"Vector",
"Vector",
"Vector",
"String",
"String"),
2542 GIN_DESC(
"Pressure retrieval grid.",
2543 "Latitude retrieval grid.",
2544 "Longitude retreival grid.",
2545 "The species tag of the retrieval quantity.",
2546 "Retrieval unit. See above."),
2553 NAME(
"abs_speciesDefineAllInScenario"),
2555 "Define one tag group for each species known to ARTS and included in an\n"
2556 "atmospheric scenario.\n"
2558 "You can use this as an alternative to *abs_speciesSet* if you want to make an\n"
2559 "absorption calculation that is as complete as possible. The method\n"
2560 "goes through all defined species and tries to open the VMR file. If\n"
2561 "this works the tag is included, otherwise it is skipped.\n"),
2564 "propmat_clearsky_agenda_checked"),
2573 "The name and path of a particular atmospheric scenario.\n"
2574 "For example: /pool/lookup2/arts-data/atmosphere/fascod/tropical")));
2577 NAME(
"abs_speciesDefineAll"),
2578 DESCRIPTION(
"Sets *abs_species*[i][0] to all species in ARTS\n"),
2581 "propmat_clearsky_agenda_checked"),
2591 md_data_raw.push_back(
2606 NAME(
"abs_speciesSet"),
2608 "Set up a list of absorption species tag groups.\n"
2610 "Workspace variables like *abs_species* contain several tag\n"
2611 "groups. Each tag group contains one or more tags. This method converts\n"
2612 "descriptions of tag groups given in the keyword to the ARTS internal\n"
2613 "representation (an *ArrayOfArrayOfSpeciesTag*). A tag group selects\n"
2614 "spectral features which belong to the same species.\n"
2616 "A tag is defined in terms of the name of the species, isotopologue, and a\n"
2617 "range of frequencies. Species are named after the standard chemical\n"
2618 "names, e.g., \"O3\". Isotopologues are given by the last digit of the atomic\n"
2619 "weight, i.g., \"O3-668\" for the asymmetric ozone molecule including an\n"
2620 "oxygen 18 atom. Groups of transitions are specified by giving a lower\n"
2621 "and upper limit of a frequency range, e.g., \"O3-666-500e9-501e9\".\n"
2623 "To turn on Zeeman calculation for a species, \"-Z\" may be appended\n"
2624 "to its name: \"O2-Z\" or \"O2-Z-66\"\n"
2626 "The symbol \"*\" acts as a wild card. Furthermore, frequency range or\n"
2627 "frequency range and isotopologue may be omitted.\n"
2629 "Finally, instead of the isotopologue the special letter \"nl\" may be given,\n"
2630 "e.g., \"H2O-nl\". This means that no absorption at all is associated\n"
2631 "with this tag. (It is not quite clear if this feature is useful for\n"
2632 "anything right now.)\n"
2636 " species = [ \"O3-666-500e9-501e9, O3-686\",\n"
2638 " \"H2O-PWR98\" ]\n"
2640 " The first tag group selects all O3-666 lines between 500 and\n"
2641 " 501 GHz plus all O3-686 lines. \n"
2643 " The second tag group selects all remaining O3 transitions.\n"
2645 " The third tag group selects H2O, with one of the complete\n"
2646 " absorption models (Rosenkranz 98). No spectrocopic line catalogue\n"
2647 " data will be used for that third tag group. For more available full\n"
2648 " absorption models see *propmat_clearskyAddPredefined*\n"
2650 " Note that order of tag groups in the species list matters. In our\n"
2651 " example, changing the order of the first two tag group will give\n"
2652 " different results: as \"O3\" already selects all O3 transitions,\n"
2653 " no lines will remain to be selected by the\n"
2654 " \"O3-666-500e9-501e9, O3-686\" tag.\n"
2656 "For CIA species the tag consists of the two involved species and\n"
2657 "a dataset index. CIA species can be defined for multiple regions\n"
2658 "The dataset index determines which region to use from the corresponding\n"
2659 "CIARecord in *abs_cia_data*.\n"
2663 "species = [ \"N2-CIA-N2-0, N2-CIA-N2-1\" ]\n"
2665 "For Hitran cross section species the tag consists of the species and\n"
2666 "the tagtype XFIT, e.g. CFC11-XFIT. The data for the species must be\n"
2667 "available in the *xsec_fit_data* variable."
2669 "*propmat_clearsky_agenda_checked* is set to be false.\n"),
2672 "propmat_clearsky_agenda_checked"),
2680 GIN_DESC(
"Specify one String for each tag group that you want to\n"
2681 "create. Inside the String, separate the tags by commas\n"
2682 "(plus optional blanks).\n")));
2685 NAME(
"abs_vecAddGas"),
2687 "Add gas absorption to first element of absorption vector.\n"
2689 "The task of this method is to sum up the gas absorption of the\n"
2690 "different gas species and add the result to the first element of the\n"
2691 "absorption vector.\n"),
2697 IN(
"abs_vec",
"propmat_clearsky"),
2704 NAME(
"propmat_clearsky_agendaGUI"),
2705 DESCRIPTION(R
"--(Opens a GUI for running the propagation matrix agenda
2707Note that this is not thread-safe and should be executed on the main workspace
2709The values of all non-control flow are automatically loaded from the workspace
2710if they are defined. Otherwise some values are just selected
2718 IN(
"propmat_clearsky_agenda",
"abs_species"),
2722 GIN_DESC(
"Load non-logical variables from workspace if true")));
2725 NAME(
"predefined_model_dataInit"),
2726 DESCRIPTION(R
"--(Initialize the predefined model data
2729 OUT(
"predefined_model_data"),
2740 NAME(
"predefined_model_dataAddWaterMTCKD400"),
2741 DESCRIPTION(R
"--(Sets the data for MT CKD 4.0 Water model
2743Note that the vectors must have the same length, and that wavenumbers must be growing
2744at a constant rate. The minimum length is 4.
2746Note also that as this is predefined model data, the units of the values of the vectors
2747must be as described by each vector.
2749 AUTHORS("Richard Larsson"),
OUT(
"predefined_model_data"),
GOUT(),
2751 GIN(
"ref_temp",
"ref_press",
"ref_h2o_vmr",
"self_absco_ref",
2752 "for_absco_ref",
"wavenumbers",
"self_texp"),
2753 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric",
"Vector",
"Vector",
"Vector",
2756 GIN_DESC(
"Reference temperature",
"Reference pressure",
2757 "Reference volume mixing ratio of water",
2758 "Self absorption [1/(cm-1 molecules/cm^2]",
2759 "Foreign absorption [1/(cm-1 molecules/cm^2)]",
2760 "Wavenumbers [cm-1]",
"Self temperature exponent [-]")));
2763 NAME(
"propmat_clearskyAddPredefined"),
2764 DESCRIPTION(R
"--(Adds all of the predefined models in *abs_species* to the propmat_clearsky
2766Only supports temperature and wind speed derivatives
2771 60 GHz and 118 GHz lines only (no continua, no higher Hz line centers)
2773 Dmitriy S. Makarov, Mikhail Yu. Tretyakov, Philip W. Rosenkranz, JQSRT 243, 2020, Revision of the
2774 60-GHz atmospheric oxygen absorption band models for practical use,
2775 https://doi.org/10.1016/j.jqsrt.2019.106798
2777 H2O-ForeignContCKDMT350:
2778 Foreign continua. Expects H2O line center cutoff at 25 cm-1
2780 CKD_MTv3.50 H2O foreign continuum from the FORTRAN77 code written by Atmospheric and Environmental Research Inc. (AER),
2781 Radiation and Climate Group 131 Hartwell Avenue Lexington, MA 02421, USA
2782 http://www.rtweb.aer.com/continuum_frame.html
2784 H2O-SelfContCKDMT350:
2785 Self continua. Expects H2O line center cutoff at 25 cm-1
2787 CKD_MTv3.50 H2O self continuum from the FORTRAN77 code written by Atmospheric and Environmental Research Inc. (AER),
2788 Radiation and Climate Group 131 Hartwell Avenue Lexington, MA 02421, USA
2789 http://www.rtweb.aer.com/continuum_frame.html
2791 H2O-SelfContCKDMT400:
2792 Self continuum for water. General reference: Mlawer et al. (2012), doi:10.1098/rsta.2011.0295
2794 Our code is reimplemented based on original Fortran90 code that is/was/will-be-made available via hitran.org
2796 Note that this model comes with the copyright statement [1].
2798 Note also that this model requires *predefined_model_data* to contain relevant data set either using
2799 *predefined_model_dataAddWaterMTCKD400* or via some file reading routine.
2801 H2O-ForeignContCKDMT400:
2802 Foreign continuum for water. General reference: Mlawer et al. (2012), doi:10.1098/rsta.2011.0295
2804 Our code is reimplemented based on original Fortran90 code that is/was/will-be-made available via hitran.org
2806 Note that this model comes with the copyright statement [1].
2808 Note also that this model requires *predefined_model_data* to contain relevant data set either using
2809 *predefined_model_dataAddWaterMTCKD400* or via some file reading routine.
2811 H2O-ForeignContStandardType:
2812 Water microwave continua
2814 P. W. Rosenkranz., Radio Science, 33(4), 919, 1998 and
2815 Radio Science, Vol. 34(4), 1025, 1999.
2817 H2O-SelfContStandardType:
2818 Water microwave continua
2820 P. W. Rosenkranz., Radio Science, 33(4), 919, 1998 and
2821 Radio Science, Vol. 34(4), 1025, 1999.
2824 Microwave water absorption model
2826 H. J. Liebe, Int. J. Infrared and Millimeter Waves, 10(6), 1989, 631.
2829 Microwave water absorption model
2831 P. W. Rosenkranz., Radio Science, 33(4), 919, 1998 and
2832 Radio Science, Vol. 34(4), 1025, 1999.
2835 MT CKD absorption for CO2
2837 This absorption model is taken from the FORTRAN77 code of
2838 CKD_MT version 2.50 written by<br>
2839 Atmospheric and Environmental Research Inc. (AER),<br>
2840 Radiation and Climate Group<br>
2841 131 Hartwell Avenue<br>
2842 Lexington, MA 02421, USA<br>
2843 http://www.rtweb.aer.com/continuum_frame.html
2846 CIA for oxygen from MT CKD
2848 F. Thibault, V. Menoux, R. Le Doucen, L. Rosenman,
2849 J.-M. Hartmann, Ch. Boulet,<br>
2850 Infrared collision-induced absorption by O2 near 6.4 microns for
2851 atmospheric applications: measurements and emprirical modeling,<br>
2852 Appl. Optics, 35, 5911-5917, (1996).
2854 This absorption model is taken from the FORTRAN77 code of
2855 CKD_MT version 1.00 written by<br>
2856 Atmospheric and Environmental Research Inc. (AER),<br>
2857 Radiation and Climate Group<br>
2858 131 Hartwell Avenue<br>
2859 Lexington, MA 02421, USA<br>
2860 http://www.rtweb.aer.com/continuum_frame.html
2863 Oxygen microwave absorption model
2865 Reference: H. J. Liebe and G. A. Hufford and M. G. Cotton,<br>
2866 <i>Propagation modeling of moist air and suspended water/ice
2867 particles at frequencies below 1000 GHz</i>,<br>
2868 AGARD 52nd Specialists Meeting of the Electromagnetic Wave
2869 Propagation Panel,<br> Palma de Mallorca, Spain, 1993, May 17-21
2872 Oxygen microwave absorption model
2874 P.W. Rosenkranz, CHAP. 2 and appendix, in ATMOSPHERIC REMOTE SENSING
2875 BY MICROWAVE RADIOMETRY (M.A. Janssen, ed., 1993).
2876 H.J. Liebe et al, JQSRT V.48, PP.629-643 (1992).
2877 M.J. Schwartz, Ph.D. thesis, M.I.T. (1997).
2878 SUBMILLIMETER LINE INTENSITIES FROM HITRAN96.
2880 O2-SelfContStandardType:
2881 Microwave continua term
2883 Reference: P. W. Rosenkranz, Chapter 2, in M. A. Janssen, <br>
2884 <I>Atmospheric Remote Sensing by Microwave Radiometry</i>,<br>
2885 John Wiley & Sons, Inc., 1993.<br>
2887 Reference: H. J. Liebe and G. A. Hufford and M. G. Cotton,<br>
2888 <i>Propagation modeling of moist air and suspended water/ice
2889 particles at frequencies below 1000 GHz</i>,<br>
2890 AGARD 52nd Specialists Meeting of the Electromagnetic Wave
2891 Propagation Panel,<br> Palma de Mallorca, Spain, 1993, May 17-21
2894 Oxygen microwave absorption model
2896 References: H. J. Liebe and G. A. Hufford and M. G. Cotton,<br>
2897 <i>Propagation modeling of moist air and suspended water/ice
2898 particles at frequencies below 1000 GHz</i>,<br>
2899 AGARD 52nd Specialists Meeting of the Electromagnetic Wave
2900 Propagation Panel,<br> Palma de Mallorca, Spain, 1993, May 17-21
2902 M.Yu. Tretyakov, M.A. Koshelev, V.V. Dorovskikh,
2903 D.S. Makarov, P.W. Rosenkranz; 60-GHz oxygen band: precise broadening and central frequencies
2904 of fine-structure lines, absolute absorption profile
2905 at atmospheric pressure, and revision of mixing coefficients
2906 doi:10.1016/j.jms.2004.11.011
2911 CKD_MT 1.00 implementation of oxygen collision induced fundamental model of
2912 O2 continuum formulated by
2913 Mate et al. over the spectral region 7550-8486 cm-1:
2914 B. Mate, C. Lugez, G.T. Fraser, W.J. Lafferty,
2915 "Absolute Intensities for the O2 1.27 micron
2916 continuum absorption",
2917 J. Geophys. Res., 104, 30,585-30,590, 1999.
2919 Also, refer to the paper "Observed Atmospheric
2920 Collision Induced Absorption in Near Infrared Oxygen Bands",
2921 Mlawer, Clough, Brown, Stephen, Landry, Goldman, & Murcray,
2922 Journal of Geophysical Research (1997).
2924 This absorption model is taken from the FORTRAN77 code of
2925 CKD_MT version 1.00 written by<br>
2926 Atmospheric and Environmental Research Inc. (AER),<br>
2927 Radiation and Climate Group<br>
2928 131 Hartwell Avenue<br>
2929 Lexington, MA 02421, USA<br>
2930 http://www.rtweb.aer.com/continuum_frame.html<br>
2936 Mlawer, Clough, Brown, Stephen, Landry, Goldman, Murcray,<br>
2937 Observed Atmospheric Collision Induced Absorption in Near Infrared Oxygen Bands,<br>
2938 J. Geophys. Res., 103, D4, 3859-3863, 1998.
2940 This absorption model is taken from the FORTRAN77 code of
2941 CKD_MT version 1.00 written by<br>
2942 Atmospheric and Environmental Research Inc. (AER),<br>
2943 Radiation and Climate Group<br>
2944 131 Hartwell Avenue<br>
2945 Lexington, MA 02421, USA<br>
2946 http://www.rtweb.aer.com/continuum_frame.html<br>
2951 O2 continuum formulated by Greenblatt et al. over the spectral region
2952 8797-29870 cm-1: "Absorption Coefficients of Oxygen Between
2953 330 and 1140 nm, G.D. Green blatt, J.J. Orlando, J.B. Burkholder,
2954 and A.R. Ravishabkara, J. Geophys. Res., 95, 18577-18582, 1990.
2956 This absorption model is taken from the FORTRAN77 code of
2957 CKD_MT version 2.50 written by<br>
2958 Atmospheric and Environmental Research Inc. (AER),<br>
2959 Radiation and Climate Group<br>
2960 131 Hartwell Avenue<br>
2961 Lexington, MA 02421, USA<br>
2962 http://www.rtweb.aer.com/continuum_frame.html<br>
2967 Lafferty, W.J., A.M. Solodov,A. Weber, W.B. Olson and
2969 Infrared collision-induced absorption by
2970 N2 near 4.3 microns for atmospheric applications:
2971 Measurements and emprirical modeling, <br>
2972 Appl. Optics, 35, 5911-5917, (1996)
2974 This absorption model is taken from the FORTRAN77 code of
2975 CKD_MT version 1.00 written by<br>
2976 Atmospheric and Environmental Research Inc. (AER),<br>
2977 Radiation and Climate Group<br>
2978 131 Hartwell Avenue<br>
2979 Lexington, MA 02421, USA<br>
2980 http://www.rtweb.aer.com/continuum_frame.html
2985 Borysow, A, and L. Frommhold,<br>
2986 Collision-induced rototranslational absorption spectra of N2-N2
2987 pairs for temperatures from 50 to 300 K,<br>
2988 The Astrophysical Journal, 311, 1043-1057, 1986.
2990 This absorption model is taken from the FORTRAN77 code of
2991 CKD_MT version 1.00 written by<br>
2992 Atmospheric and Environmental Research Inc. (AER),<br>
2993 Radiation and Climate Group<br>
2994 131 Hartwell Avenue<br>
2995 Lexington, MA 02421, USA<br>
2996 http://www.rtweb.aer.com/continuum_frame.html
2998 N2-SelfContStandardType:
2999 Microwave nitrogen absorption continua
3001 Reference: P. W. Rosenkranz, Chapter 2, in M. A. Janssen, <br>
3002 <I>Atmospheric Remote Sensing by Microwave Radiometry</i>,<br>
3003 John Wiley & Sons, Inc., 1993.
3006 Water droplet absorption
3009 <i>Permittivity of Pure Water, at Standard Atmospheric Pressure, over the
3010 Frequency Range 0-25 THz and Temperature Range 0-100C</i>,<br>
3011 J. Phys. Chem. Ref. Data, Vol. 36, No. 1, 2007
3014 OUT(
"propmat_clearsky",
3015 "dpropmat_clearsky_dx"),
3019 IN(
"propmat_clearsky",
3020 "dpropmat_clearsky_dx",
3021 "predefined_model_data",
3023 "select_abs_species",
3024 "jacobian_quantities",
3037 "Adds zenith and azimuth angles.\n"
3039 "Adds up line-of-sights (LOS). In short, *dlos* is added to *ref_los*,\n"
3040 "assuming that a unit changes in zenith and azimuth are equal where\n"
3048 GIN(
"ref_los",
"dlos"),
3051 GIN_DESC(
"Reference line-of-sight (a single LOS).",
3052 "Change in line-of-sight (can be multiple LOS).")));
3055 NAME(
"AgendaAppend"),
3057 "Append methods to an agenda.\n"
3059 "An agenda is used to store a list of methods that are meant to be\n"
3060 "executed sequentially.\n"
3062 "This method takes the methods given in the body (in the curly braces)\n"
3063 "and appends them to the agenda given by the output argument (in the round\n"
3066 "It also uses the agenda lookup data (defined in file agendas.cc) to\n"
3067 "check, whether the given methods use the right input WSVs and produce\n"
3068 "the right output WSVs.\n"),
3096 GIN_DESC(
"Agenda to be executed."),
3101 NAME(
"AgendaExecuteExclusive"),
3103 "Execute an agenda exclusively.\n"
3105 "Only one call to *AgendaExecuteExclusive* is executed at a time.\n"
3106 "Other calls to this function are blocked until the current one\n"
3107 "finishes. WARNING: Can cause deadlocks! Use with care.\n"),
3117 GIN_DESC(
"Agenda to be executed."),
3124 "Set up an agenda.\n"
3126 "An agenda is used to store a list of methods that are meant to be\n"
3127 "executed sequentially.\n"
3129 "This method takes the methods given in the body (in the curly braces)\n"
3130 "and puts them in the agenda given by the output argument (in the round\n"
3133 "It also uses the agenda lookup data (defined in file agendas.cc) to\n"
3134 "check, whether the given methods use the right input WSVs and\n"
3135 "produce the right output WSVs.\n"),
3153 NAME(
"AngularGridsSetFluxCalc"),
3155 "Sets the angular grids for the calculation of radiation fluxes. \n"
3157 "This method sets the angular grids for the radiation fluxes type\n"
3158 "calculations and calculates the integration weights *za_grid_weights*\n"
3159 "for the zenith angle integration. For down- und up-looking geometries\n"
3160 "it suffices to use the default values of N_za_grid and N_aa_grid.\n"
3161 "From N_aa_grid an equally spaced grid is created and stored in the\n"
3163 "Depending on the desired za_grid_type *za_grid* will be\n"
3164 "equally spaced ('linear') or unequally ('linear_mu','double_gauss')\n"
3165 "Important, N_za_grid must be an even number because for the \n"
3166 "integration over each hemisphere N_za_grid / 2 zenith angles are needed.\n"
3168 "Possible zenith angle grid types are:\n"
3169 "double_gauss: The zenith grid and the integration weights are set according\n"
3170 " to a gauss-legendre integration for each hemispheres.\n"
3171 "linear: Equally space grid between 0 deg and 180 deg including the poles\n"
3172 "linear_mu: Similar to 'linear' but equally spaced for cos(180 deg) to cos(0 deg),\n"
3173 " which results a unequally spaced angular grid\n"
3177 OUT(
"za_grid",
"aa_grid",
"za_grid_weights"),
3182 GIN(
"N_za_grid",
"N_aa_grid",
"za_grid_type"),
3183 GIN_TYPE(
"Index",
"Index",
"String"),
3185 GIN_DESC(
"Number of zenith angles",
3186 "Number of azimuth angles",
3187 "Zenith angle grid type")));
3190 NAME(
"ArrayOfAgendaAppend"),
3191 DESCRIPTION(
"Set up an agenda and append it to the array of agendas.\n"
3193 "See *AgendaSet* for details.\n"),
3210 md_data_raw.push_back(
3212 DESCRIPTION(
"Execute an agenda from an ArrayOfAgenda.\n"),
3218 IN(
"agenda_array_index"),
3227 NAME(
"AntennaConstantGaussian1D"),
3229 "Sets up a 1D gaussian antenna response and a matching\n"
3230 "*mblock_dlos_grid*.\n"
3232 "As *antenna_responseGaussian*, but also creates *mblock_dlos_grid*.\n"
3233 "For returned antenna response, see *antenna_responseGaussian*.\n"
3235 "The size of *mblock_dlos_grid* is determined by *n_za_grid*.\n"
3236 "The end points of the grid are set to be the same as for the\n"
3237 "antenna response. The spacing of the grid follows the magnitude of\n"
3238 "the response; the spacing is smaller where the response is high.\n"
3239 "More precisely, the grid points are determined by dividing\n"
3240 "the cumulative sum of the response in equal steps. This makes sense\n"
3241 "if the representation error of the radiance (as a function of\n"
3242 "zenith angle) increases linearly with the grid spacing.\n"
3244 "The WSV *antenna_dlos* is set to [0].\n"
3246 "The antenna repsonse is not normalised.\n"),
3256 GIN(
"n_za_grid",
"fwhm",
"xwidth_si",
"dx_si"),
3257 GIN_TYPE(
"Index",
"Numeric",
"Numeric",
"Numeric"),
3259 GIN_DESC(
"Number of points (>1) to include in *mblock_dlos_grid*.",
3260 "Full width at half-maximum of antenna beam [deg].",
3261 "Half-width of response, in terms of std. dev.",
3262 "Grid spacing, in terms of std. dev.")));
3265 NAME(
"AntennaMultiBeamsToPencilBeams"),
3267 "Maps a multi-beam case to a matching pencil beam case.\n"
3269 "Cases with overlapping beams are most efficiently handled by\n"
3270 "letting *antenna_dlos* have several rows. That is, there are\n"
3271 "multiple beams for each measurement block. The drawback is that\n"
3272 "many variables must be adjusted if the corresponding pencil beam\n"
3273 "spectra shall be calculated. This method makes this adjustment.\n"
3274 "That is, if you have a control file for a multiple beam case and\n"
3275 "for some reason want to avoid the antenna weighting, you add this\n"
3276 "method before *sensor_responseInit*, and remove the call of\n"
3277 "*sensor_responseAntenna* and you will get the matching pencil beam\n"
3284 "mblock_dlos_grid"),
3302 "Sets some antenna related variables\n"
3304 "Use this method to set *antenna_dim* and *mblock_dlos_grid* to\n"
3305 "suitable values (1 and [0], respectively) for cases when a\n"
3306 "sensor is included, but the antenna pattern is neglected.\n"),
3308 OUT(
"antenna_dim",
"mblock_dlos_grid"),
3319 NAME(
"antenna_responseGaussian"),
3321 "Sets up a gaussian antenna response.\n"
3323 "The method assumes that the response is the same for all\n"
3324 "frequencies and polarisations, and that it can be modelled as\n"
3327 "The grid generated is approximately\n"
3328 " si * [-xwidth_si:dx_si:xwidth_si]\n"
3329 "where si is the standard deviation corresponding to the FWHM.\n"
3330 "That is, width and spacing of the grid is specified in terms of\n"
3331 "number of standard deviations. If xwidth_si is set to 2, the\n"
3332 "response will cover about 95% the complete response. For\n"
3333 "xwidth_si=3, about 99% is covered. If xwidth_si/dx_si is not\n"
3334 "an integer, the end points of the grid are kept and the spacing\n"
3335 "of the grid is reduced (ie. spacing is equal or smaller *dx_si*).\n"
3337 "If the 2D option is selected (*do_2d*), a circular antenna is\n"
3338 "assumed and the response is any direction follows the 1D case.\n"
3340 "The antenna repsonse is not normalised.\n"),
3342 OUT(
"antenna_response"),
3347 GIN(
"fwhm",
"xwidth_si",
"dx_si",
"do_2d"),
3348 GIN_TYPE(
"Numeric",
"Numeric",
"Numeric",
"Index"),
3350 GIN_DESC(
"Full width at half-maximum",
3351 "Half-width of response, in terms of std. dev.",
3352 "Grid spacing, in terms of std. dev.",
3353 "Set to 1 to create a 2D antenna pattern.")));
3356 NAME(
"antenna_responseVaryingGaussian"),
3358 "Sets up gaussian antenna responses.\n"
3360 "Similar to *antenna_responseGaussian* but allows to set up\n"
3361 "responses that varies with frequency. That is, the method assumes\n"
3362 "that the response is the same for all polarisations, and that it\n"
3363 "can be modelled as a gaussian function varying with frequency.\n"
3365 "The full width at half maximum (FWHM in radians) is calculated as:\n"
3366 " fwhm = lambda / leff\n"
3367 "where lambda is the wavelength and *leff* is the effective size of\n"
3368 "the antenna. Normally, *leff* is smaller than the physical antenna\n"
3371 "Antenna responses are created for *nf* frequencies spanning the\n"
3372 "range [*fstart*,*fstop*], with a logarithmic spacing. That is, the\n"
3373 "frequency grid of the responses is taken from *VectorNLogSpace*.\n"
3375 "The responses have a common angular grid. The width, determined by\n"
3376 "*xwidth_si*, is set for the lowest frequency, while the spacing\n"
3377 "(*dx_si*) is set for the highest frequency. This ensures that both\n"
3378 "the width and spacing are equal or better than *xwidth_si* and\n"
3379 "*dx_si*, respectively, for all frequencies.\n"
3381 "If the 2D option is selected (*do_2d*), a circular antenna is\n"
3382 "assumed and the response is any direction follows the 1D case.\n"
3384 "The antenna repsonse is not normalised.\n"),
3386 OUT(
"antenna_response"),
3391 GIN(
"leff",
"xwidth_si",
"dx_si",
"nf",
"fstart",
"fstop",
"do_2d"),
3400 GIN_DESC(
"Effective size of the antenna",
3401 "Half-width of response, in terms of std. dev.",
3402 "Grid spacing, in terms of std. dev.",
3403 "Number of points in frequency grid (must be >= 2)",
3404 "Start point of frequency grid",
3405 "End point of frequency grid",
3406 "Set to 1 to create a 2D antenna pattern.")));
3411 "Append one workspace variable to another.\n"
3413 "This method can append an array to another array of the same type,\n"
3414 "e.g. ArrayOfIndex to ArrayOfIndex. Or a single element to an array\n"
3415 "such as a Tensor3 to an ArrayOfTensor3.\n"
3417 "Appending two vectors or a numeric to a vector works as for array\n"
3420 "Both another matrix or a vector can be appended to a matrix. In\n"
3421 "addition, for matrices, the 'append dimension' can be selected.\n"
3422 "The third argument, *dimension*, indicates how to append, where\n"
3423 "\"leading\" means to append row-wise, and \"trailing\" means\n"
3426 "Other types (TensorX) are currently only implemented for\n"
3427 "appending to the leading dimension.\n"
3429 "This method is not implemented for all types, just for those that\n"
3430 "were thought or found to be useful. (See variable list below.).\n"),
3431 AUTHORS(
"Stefan Buehler, Oliver Lemke"),
3439 ARRAY_GROUPS +
", " + ARRAY_GROUPS_WITH_BASETYPE)
3441 GOUT_DESC(
"The variable to append to."),
3443 GIN(
"in",
"dimension"),
3449 ARRAY_GROUPS +
"," + GROUPS_WITH_ARRAY_TYPE).c_str(),
3453 "The variable to append.",
3454 "Where to append. Could be either the \"leading\" or \"trailing\" dimension."),
3462 NAME(
"ArrayOfGriddedFieldGetNames"),
3463 DESCRIPTION(
"Get the names of all GriddedFields stored in an Array.\n"
3465 "See *GriddedFieldGetName*.\n"),
3470 GOUT_DESC(
"Names of the GriddedFields in the ArrayOfGriddedField."),
3472 GIN(
"griddedfields"),
3473 GIN_TYPE(
"ArrayOfGriddedField1, ArrayOfGriddedField2,"
3474 "ArrayOfGriddedField3, ArrayOfGriddedField4"),
3476 GIN_DESC(
"Array of GriddedFields."),
3482 NAME(
"ArrayOfIndexLinSpace"),
3484 "Initializes an ArrayOfIndex with linear spacing.\n"
3486 "The first element equals always the start value, and the spacing\n"
3487 "equals always the step value, but the last value can deviate from\n"
3488 "the stop value. *step* can be both positive and negative.\n"
3490 "The created array is [start, start+step, start+2*step, ...]\n "),
3497 GIN(
"start",
"stop",
"step"),
3498 GIN_TYPE(
"Index",
"Index",
"Index"),
3501 "Maximum/minimum value of the end value",
3502 "Spacing of the array.")));
3505 NAME(
"ArrayOfIndexSetConstant"),
3506 DESCRIPTION(
"Creates an ArrayOfIndex of length *nelem*, with all values\n"
3521 NAME(
"ArrayOfTimeNLinSpace"),
3523 "Creates a time array with length *nelem*, equally spaced between the\n"
3524 "given end values.\n"
3526 "The length (*nelem*) must be larger than 1.\n"),
3533 GIN(
"start",
"stop"),
3536 GIN_DESC(
"Start value.",
"End value.")));
3539 NAME(
"ArrayOfTimeSetConstant"),
3541 "Creates an ArrayOfTime and sets all elements to the specified value.\n"
3543 "The vector length is determined by *nelem*.\n"),
3558 "Runs the agenda that is specified inside the curly braces. ARTS\n"
3559 "controlfiles must define this method. It is executed automatically\n"
3560 "when ARTS is run on the controlfile and cannot be called by the user.\n"
3561 "This methods was used for Arts 1 controlfiles and is now obsolete.\n"
3579 "Runs the agenda that is specified inside the curly braces. ARTS\n"
3580 "controlfiles must define this method. It is executed automatically\n"
3581 "when ARTS is run on the controlfile and cannot be called by the user.\n"),
3596 NAME(
"AtmFieldPerturb"),
3598 "Adds a perturbation to an atmospheric field.\n"
3600 "The shape and position of the perturbation follow the retrieval grids.\n"
3601 "That is, the shape of the perturbation has a traingular shape, \n"
3602 "with breake points at the retrieval grid points. The position is\n"
3603 "given as an index. This index matches the column in the Jacobian\n"
3604 "for the selected grid position.\n"
3606 "If the retrieval grids fully match the atmospheric grids, you can\n"
3607 "use *AtmFieldPerturbAtmGrids*, that is faster. The description of\n"
3608 "that method can help to understand this method.\n"),
3611 GOUT(
"perturbed_field"),
3614 IN(
"atmosphere_dim",
"p_grid",
"lat_grid",
"lon_grid"),
3615 GIN(
"original_field",
3630 GIN_DESC(
"Original field, e.g. *t_field*.",
3631 "Pressure retrieval grid.",
3632 "Latitude retrieval grid.",
3633 "Longitude retrieval grid.",
3634 "Index of position where the perturbation shall be performed.",
3635 "Size of perturbation.",
3636 "Type of perturbation, "
3643 NAME(
"AtmFieldPerturbAtmGrids"),
3645 "As *AtmFieldPerturb*, but perturbation follows the atmospheric grids.\n"
3647 "The method effectively performs this\n"
3648 " perturbed_field = original_field\n"
3649 " perturbed_field(p_index,lat_index,lon_index) += pert_size\n"
3650 "if not *pert_mode* is set to "
3652 " when this is done\n"
3653 " perturbed_field = original_field\n"
3654 " perturbed_field(p_index,lat_index,lon_index) *= 1*pert_size\n"
3655 "where p_index etc. are derived from *pert_index*.\n"),
3658 GOUT(
"perturbed_field"),
3661 IN(
"atmosphere_dim",
"p_grid",
"lat_grid",
"lon_grid"),
3662 GIN(
"original_field",
"pert_index",
"pert_size",
"pert_mode"),
3663 GIN_TYPE(
"Tensor3",
"Index",
"Numeric",
"String"),
3665 GIN_DESC(
"Original field, e.g. *t_field*.",
3666 "Index of position where the perturbation shall be performed.",
3667 "Size of perturbation.",
3668 "Type of perturbation, "
3675 NAME(
"AtmFieldPRegrid"),
3677 "Interpolates the input field along the pressure dimension from\n"
3678 "*p_grid_old* to to *p_grid_new*.\n"
3680 "Extrapolation is allowed within the common 0.5grid-step margin.\n"
3681 "in and out fields can be the same variable.\n"),
3686 GOUT_DESC(
"Regridded atmospheric field."),
3688 GIN(
"in",
"p_grid_new",
"p_grid_old",
"interp_order"),
3689 GIN_TYPE(
"Tensor3, Tensor4",
"Vector",
"Vector",
"Index"),
3691 GIN_DESC(
"Input atmospheric field.",
3692 "Pressure grid to regrid to",
3693 "Pressure grid of input field",
3694 "Interpolation order.")));
3697 NAME(
"AtmFieldsCalc"),
3699 "Interpolation of raw atmospheric T, z, VMR, and NLTE T/r fields to\n"
3700 "calculation grids.\n"
3702 "An atmospheric scenario includes the following data for each\n"
3703 "position (pressure, latitude, longitude) in the atmosphere:\n"
3704 " 1. temperature field\n"
3705 " 2. the corresponding altitude field\n"
3706 " 3. vmr fields for the gaseous species\n"
3707 "This method interpolates the fields of raw data (*t_field_raw*,\n"
3708 "*z_field_raw*, *vmr_field_raw*) which can be stored on arbitrary\n"
3709 "grids to the calculation grids (*p_grid*, *lat_grid*, *lon_grid*).\n"
3710 "If *nlte_field_raw* is empty, it is assumed to be so because LTE is\n"
3711 "assumed by the user and *nlte_field* will be empty.\n"
3713 "Internally, *AtmFieldsCalc* applies *GriddedFieldPRegrid* and\n"
3714 "*GriddedFieldLatLonRegrid*. Generally, 'half-grid-step' extrapolation\n"
3715 "is allowed and applied. However, if *vmr_zeropadding*=1 then VMRs at\n"
3716 "*p_grid* levels exceeding the raw VMRs' pressure grid are set to 0\n"
3717 "(applying the *vmr_zeropadding* option of *GriddedFieldPRegrid*).\n"
3719 "Default is to just accept obtained VMRs. If you want to enforce\n"
3720 "that all VMR created are >= 0, set *vmr_nonegative* to 1. Negative\n"
3721 "values are then set 0. Beside being present in input data, negative\n"
3722 "VMR can be generated from the interpolation if *interp_order* is\n"
3724 AUTHORS(
"Claudia Emde",
"Stefan Buehler"),
3725 OUT(
"t_field",
"z_field",
"vmr_field",
"nlte_field"),
3736 "nlte_level_identifiers",
3737 "nlte_vibrational_energies",
3742 "nlte_when_negative"),
3743 GIN_TYPE(
"Index",
"Index",
"Index",
"Index"),
3745 GIN_DESC(
"Interpolation order (1=linear interpolation).",
3746 "Pad VMRs with zeroes to fit the pressure grid if necessary.",
3747 "If set to 1, negative VMRs are set to 0.",
3748 "-1: Skip step. 0: Negative is 0. Else: Negative is t.")));
3751 NAME(
"AtmFieldsCalcExpand1D"),
3753 "Interpolation of 1D raw atmospheric fields to create 2D or 3D\n"
3754 "homogeneous atmospheric fields.\n"
3756 "The method works as *AtmFieldsCalc*, but accepts only raw 1D\n"
3757 "atmospheres. The raw atmosphere is interpolated to *p_grid* and\n"
3758 "the obtained values are applied for all latitudes, and also\n"
3759 "longitudes for 3D, to create a homogeneous atmosphere.\n"
3761 "The method deals only with the atmospheric fields, and to create\n"
3762 "a true 2D or 3D version of a 1D case, a demand is also that the\n"
3763 "ellipsoid is set to be a sphere.\n"),
3764 AUTHORS(
"Patrick Eriksson",
"Claudia Emde",
"Stefan Buehler"),
3765 OUT(
"t_field",
"z_field",
"vmr_field",
"nlte_field"),
3776 "nlte_level_identifiers",
3777 "nlte_vibrational_energies",
3782 "nlte_when_negative"),
3783 GIN_TYPE(
"Index",
"Index",
"Index",
"Index"),
3785 GIN_DESC(
"Interpolation order (1=linear interpolation).",
3786 "Pad VMRs with zeroes to fit the pressure grid if necessary.",
3787 "If set to 1, negative VMRs are set to 0.",
3788 "-1: Skip step. 0: Negative is 0. Else: Negative is t.")));
3791 NAME(
"AtmFieldsExpand1D"),
3793 "Maps a 1D case to 2D or 3D homogeneous atmospheric fields.\n"
3795 "This method takes a 1D atmospheric case and converts it to the\n"
3796 "corresponding case for 2D or 3D. The atmospheric fields (t_field,\n"
3797 "z_field and vmr_field) must be 1D and match *p_grid*. The size of\n"
3798 "the new data is determined by *atmosphere_dim*, *lat_grid* and\n"
3799 "*lon_grid*. That is, these later variables have been changed since\n"
3800 "the original fields were created.\n"
3802 "The method deals only with the atmospheric fields, and to create\n"
3803 "a true 2D or 3D version of a 1D case, a demand is also that the\n"
3804 "ellipsoid is set to be a sphere.\n"),
3806 OUT(
"t_field",
"z_field",
"vmr_field"),
3821 "Flag to determine if a search for NaN shall be performed or not.")));
3824 NAME(
"AtmFieldsExtract1D"),
3826 "Converts 2D or 3D homogeneous atmospheric fields to a 1D case.\n"
3828 "The method extracts data for given latitude and longitude index\n"
3829 "to create a 1D atmosphere. *AtmosphereSet1D* is called to set\n"
3830 "output values of *atmosphere_dim*, *lat_grid* and *lon_grid*.\n"
3831 "Nothing is done if *atmosphere_dim* alöready is 1.\n"),
3833 OUT(
"atmosphere_dim",
3842 IN(
"atmosphere_dim",
3848 GIN(
"ilat",
"ilon"),
3851 GIN_DESC(
"Pick data having this latitude index (0-based).",
3852 "Pick data having this longitude index (0-based).")));
3855 NAME(
"AtmFieldsRefinePgrid"),
3857 "Refines the pressure grid and regrids the clearsky atmospheric\n"
3858 "fields accordingly.\n"
3860 "This method is, e.g., used for absorption lookup table testing. It\n"
3861 "can also be used to refine the *p_grid* and atmospheric fields from\n"
3862 "compact state atmospheres.\n"
3864 "It adds additional vertical grid points to the atmospheric fields, by\n"
3865 "interpolating them in the usual ARTS way (linear in log pressure).\n"
3867 "How fine the new grid will be is determined by the keyword parameter\n"
3868 "p_step. The definition of p_step, and the default interpolation\n"
3869 "behavior, is consistent with *abs_lookupSetup* and\n"
3870 "*abs_lookupSetupBatch* (new points are added between the original\n"
3871 "ones, so that the spacing is always below p_step.)\n"
3873 "Internally, *AtmFieldsRefinePgrid* applies *p_gridRefine* and\n"
3874 "*AtmFieldPRegrid* to the clearsky atmospheric fields (T, z, vmr).\n"
3876 "Atmospheric field related check WSV are reset to 0 (unchecked),\n"
3877 "i.e., the corresponding checkedCalc methods have to be performed\n"
3878 "(again) before *yCalc* or similar methods can be executed.\n"),
3884 "atmfields_checked",
3886 "cloudbox_checked"),
3897 GIN(
"p_step",
"interp_order"),
3900 GIN_DESC(
"Maximum step in log(p[Pa]) (natural logarithm, as always). If\n"
3901 "the pressure grid is coarser than this, additional points\n"
3902 "are added until each log step is smaller than this.\n",
3903 "Interpolation order.")));
3906 NAME(
"AtmFieldsAndParticleBulkPropFieldFromCompact"),
3908 "Extract pressure grid and atmospheric fields from\n"
3909 "*atm_fields_compact*.\n"
3911 "An atmospheric scenario includes the following data for each\n"
3912 "position (pressure, latitude, longitude) in the atmosphere:\n"
3913 " 1. temperature field\n"
3914 " 2. the corresponding altitude field\n"
3915 " 3. vmr fields for the gaseous species\n"
3916 " 4. scattering species fields\n"
3918 "This method splits up the data found in *atm_fields_compact* to\n"
3919 "p_grid, lat_grid, lon_grid, vmr_field, particle_bulkprop_field,\n"
3920 "and particle_bulkprop_names.\n"
3921 "See documentation of *atm_fields_compact* for a definition of the\n"
3924 "Compact states are characterized by having all atmospheric fields\n"
3925 "already given on identical grids. That is, no interpolation needs\n"
3926 "to be and is performed. Keyword *p_min* allows to remove atmospheric\n"
3927 "levels with pressures lower than the given value (default: no\n"
3928 "removal). This reduces computational burden and is useful when\n"
3929 "upper atmospheric contributions are negligible.\n"
3931 "Possible future extensions: Add a keyword parameter to refine the\n"
3932 "pressure grid if it is too coarse. Or a version that interpolates\n"
3933 "onto given grids, instead of using and returning the original grids.\n"),
3934 AUTHORS(
"Jana Mendrok, Manfred Brath"),
3941 "particle_bulkprop_field",
3942 "particle_bulkprop_names"),
3946 IN(
"abs_species",
"atm_fields_compact",
"atmosphere_dim"),
3947 GIN(
"delim",
"p_min",
"check_gridnames"),
3948 GIN_TYPE(
"String",
"Numeric",
"Index"),
3951 "Delimiter string of *scat_species* elements.",
3953 "Minimum-pressure level to consider (for TOA).",
3955 "A flag with value 1 or 0. If set to one, the gridnames of \n"
3956 " the *atm_fields_compact* are checked.")));
3959 NAME(
"atmfields_checkedCalc"),
3961 "Checks consistency of (clear sky) atmospheric fields.\n"
3963 "The following WSVs are treated: *p_grid*, *lat_grid*, *lon_grid*,\n"
3964 "*t_field*, *vmr_field*, wind_u/v/w_field and mag_u/v/w_field.\n"
3966 "If any of the variables above is changed, then this method shall be\n"
3967 "called again (no automatic check that this is fulfilled!).\n"
3969 "The tests include that:\n"
3970 " 1. Atmospheric grids (p/lat/lon_grid) are OK with respect to\n"
3971 " *atmosphere_dim* (and vmr_field also regarding *abs_species*).\n"
3972 " 2. Atmospheric fields have sizes consistent with the atmospheric\n"
3974 " 3. *abs_f_interp_order* is not zero if any wind is nonzero.\n"
3975 " 4. All values in *t_field* are > 0.\n"
3977 "Default is that values in *vmr_field* are demanded to be >= 0\n"
3978 "(ie. zero allowed, in contrast to *t_field*), but this\n"
3979 "requirement can be removed by the *negative_vmr_ok* argument.\n"
3981 "If any test fails, there is an error. Otherwise,\n"
3982 "*atmfields_checked* is set to 1.\n"
3984 "The cloudbox is covered by *cloudbox_checked*, *z_field* is\n"
3985 "part of the checks done around *atmgeom_checked*.\n"),
3987 OUT(
"atmfields_checked"),
3991 IN(
"atmosphere_dim",
4004 "abs_f_interp_order"),
4005 GIN(
"negative_vmr_ok"),
4008 GIN_DESC(
"Flag whether to accept vmr_field < 0."
4012 NAME(
"atmgeom_checkedCalc"),
4014 "Checks consistency of geometric considerations of the atmosphere.\n"
4016 "The following WSVs are checked: *z_field*, *refellipsoid*, *z_surface*,\n"
4017 "*lat_true* and *lon_true*. If any of the variables above is changed,\n"
4018 "then this method shall be called again (no automatic check that this is\n"
4021 "The tests include that:\n"
4022 " 1. *refellipsoid* has correct size, and that eccentricity is\n"
4023 " set to zero if 1D atmosphere.\n"
4024 " 2. *z_field* and *z_surface* have sizes consistent with the\n"
4025 " atmospheric grids.\n"
4026 " 3. There is no gap between *z_surface* and *z_field*.\n"
4027 " 4. A rough search of maximum gradient of the altitude of the pressure\n"
4028 " level closest to 500 hPa is made. If this value exceeds the GIN\n"
4029 " *max500hpa_gradient* an error is issued. Please note that the unit\n"
4030 " of this GIN is m per 100km. For normal conditions on Earth, large\n"
4031 " scale gradients of the 500 hPa level is in the order of 20m/100km.\n"
4033 "*lat_true* and *lon_true* are allowed to be empty.\n"
4035 "If any test fails, there is an error. Otherwise, *atmgeom_checked*\n"
4038 "See further *atmgeom_checkedCalc*.\n"),
4040 OUT(
"atmgeom_checked"),
4044 IN(
"atmosphere_dim",
4053 GIN(
"max500hpa_gradient"),
4056 GIN_DESC(
"The maximum allowed gradient of 500 hPa pressure level [m/100km].")));
4059 NAME(
"AtmosphereSet1D"),
4061 "Sets the atmospheric dimension to 1D.\n"
4063 "Sets *atmosphere_dim* to 1, and the latitude and longitude grids\n"
4064 "are set to be empty.\n"),
4066 OUT(
"atmosphere_dim",
"lat_grid",
"lon_grid"),
4077 NAME(
"AtmosphereSet2D"),
4079 "Sets the atmospheric dimension to be 2D.\n"
4081 "Sets *atmosphere_dim* to 2 and the longitude grid to be empty.\n"),
4083 OUT(
"atmosphere_dim",
"lon_grid"),
4094 NAME(
"AtmosphereSet3D"),
4096 "Sets the atmospheric dimension to 3D.\n"
4098 "Sets *atmosphere_dim* to 3, and *lat_true* and *lon_true* are\n"
4099 "set to be empty.\n"),
4101 OUT(
"atmosphere_dim",
"lat_true",
"lon_true"),
4114 "Reads atmospheric data from a scenario.\n"
4116 "An atmospheric scenario includes the following data for each\n"
4117 "position (pressure, latitude, longitude) in the atmosphere:\n"
4118 " 1. temperature field\n"
4119 " 2. the corresponding altitude field\n"
4120 " 3. vmr fields for the absorption species\n"
4121 "The vmr fields read are governed by the species given in\n"
4122 "*abs_species*. Beside gaseous species, these can also contain\n"
4123 "purely absorbing particulate matter. In the latter case the\n"
4124 "profiles are supposed to provide the mass content (unit kg/m3) for\n"
4125 "clouds and precipitation rate (unit kg/m2/s) for precipitation\n"
4126 "instead of the vmr.\n"
4128 "The data is stored in different files. This methods reads all\n"
4129 "files and creates the variables *t_field_raw*, *z_field_raw* and\n"
4130 "*vmr_field_raw*. *nlte_field_raw* is set to empty.\n"
4132 "Files in a scenarios should be named matching the pattern of:\n"
4133 "basename.speciesname.xml\n (for temperature and altitude the\n"
4134 "expected 'speciesname' are 't' and'z', respectivly)."
4136 "The files can be anywhere, but they must all be in the same\n"
4137 "directory, selected by 'basename'. The files are chosen by the\n"
4138 "species name. If you have more than one tag group for the same\n"
4139 "species, the same profile will be used.\n"),
4145 "nlte_level_identifiers",
4146 "nlte_vibrational_energies"),
4154 GIN_DESC(
"Name of scenario, probably including the full path. For "
4155 "example: \"/smiles_local/arts-data/atmosphere/fascod/"
4159 NAME(
"AtmWithNLTERawRead"),
4161 "Reads atmospheric data from a scenario.\n"
4163 "An atmospheric scenario includes the following data for each\n"
4164 "position (pressure, latitude, longitude) in the atmosphere:\n"
4165 " 1. temperature field\n"
4166 " 2. the corresponding altitude field\n"
4167 " 3. vmr fields for the gaseous species\n"
4168 " 4. Non-LTE temperature fields and matching identifiers\n"
4169 "The data is stored in different files. This method reads all\n"
4170 "files and creates the variables *t_field_raw*, *z_field_raw*,\n"
4171 "*vmr_field_raw*, *nlte_field_raw*, and *nlte_level_identifiers*.\n"
4173 "Files in a scenarios should be named matching the pattern of:\n"
4174 "tropical.H2O.xml\n"
4176 "The files can be anywhere, but they must be all in the same\n"
4177 "directory, selected by 'basename'. The files are chosen by the\n"
4178 "species name. If you have more than one tag group for the same\n"
4179 "species, the same profile will be used.\n"),
4180 AUTHORS(
"Claudia Emde",
"Richard Larsson"),
4185 "nlte_level_identifiers",
4186 "nlte_vibrational_energies"),
4191 GIN(
"basename",
"expect_vibrational_energies"),
4194 GIN_DESC(
"Name of scenario, probably including the full path. For "
4195 "example: \"/smiles_local/arts-data/atmosphere/fascod/"
4197 "Should ev.xml be read?")));
4200 NAME(
"atm_fields_compactAddConstant"),
4202 "Adds a constant field to atm_fields_compact.\n"
4204 "This is handy, e.g., for nitrogen or oxygen. The constant value can\n"
4205 "be appended or prepended as an additional field to the already\n"
4206 "existing collection of fields. All dimensions (pressure, latitude,\n"
4207 "longitude) are filled up, so this works for 1D, 2D, or 3D\n"
4210 "The passed *name* of the field has to be in accordance with the\n"
4211 "tagging structure described for *atm_fields_compact*.\n"
4213 "A list of condensibles can be optionally specified if the VMR of\n"
4214 "the added species is assuming dry air. The VMR of the added species\n"
4215 "is then scaled down by the sum of the condensibles' VMR:\n"
4216 "VMR * (1 - VMR_sum_of_condensibles).\n"
4217 "For Earth this should be set to [\"abs_species-H2O\"]\n"),
4218 AUTHORS(
"Stefan Buehler, Oliver Lemke"),
4219 OUT(
"atm_fields_compact"),
4223 IN(
"atm_fields_compact"),
4224 GIN(
"name",
"value",
"prepend",
"condensibles"),
4225 GIN_TYPE(
"String",
"Numeric",
"Index",
"ArrayOfString"),
4228 "Name of additional atmospheric field, with constant value.",
4229 "Constant value of additional field.",
4230 "0 = Append to the end, 1 = insert at the beginning.",
4231 "List of condensibles used to scale down the VMR of the added species.")));
4234 NAME(
"atm_fields_compactAddSpecies"),
4236 "Adds a field to atm_fields_compact, with interpolation.\n"
4238 "This method appends or prepends a *GriddedField3* to *atm_fields_compact*.\n"
4239 "The *GriddedField3* is interpolated upon the grid of\n"
4240 "*atm_fields_compact*. A typical use case for this method may be to\n"
4241 "add a climatology of some gas when this gas is needed for radiative\n"
4242 "transfer calculations, but not yet present in *atm_fields_compact*.\n"
4243 "One case where this happens is when using the Chevalier91L dataset\n"
4244 "for infrared simulations.\n"
4246 "The grids in *atm_fields_compact* must fully encompass the grids in\n"
4247 "the *GriddedField3* to be added, for interpolation to succeed. If\n"
4248 "this is not the case, a RuntimeError is thrown.\n"
4250 "The passed *name* of the field has to be in accordance with the\n"
4251 "tagging structure described for *atm_fields_compact*.\n"),
4253 OUT(
"atm_fields_compact"),
4257 IN(
"atm_fields_compact"),
4258 GIN(
"name",
"value",
"prepend"),
4259 GIN_TYPE(
"String",
"GriddedField3",
"Index"),
4261 GIN_DESC(
"Name of additional atmospheric field.",
4262 "Value of additional atmospheric field.",
4263 "0 = Append to the end, 1 = insert at the beginning.")));
4266 NAME(
"atm_fields_compactCleanup"),
4268 "Removes unrealistically small or erroneous data from\n"
4269 "*atm_fields_compact* (or other GriddedField4 data)\n"
4271 "This WSM checks if the data in *atm_fields_compact* contains\n"
4272 "values smaller than the given *threshold*. In this case, these\n"
4273 "values will be set to zero.\n"
4275 "The method should be applied if *atm_fields_compact* contains\n"
4276 "unrealistically small or erroneous data (NWP/GCM model data\n"
4277 "occassionally contains negative values, which are numerical\n"
4278 "artefacts rather than physical values.)\n"),
4280 OUT(
"atm_fields_compact"),
4284 IN(
"atm_fields_compact"),
4289 "Threshold below which *atm_fields_compact* values are set to zero.")));
4292 NAME(
"atm_fields_compactCreateFromField"),
4294 "Initiates *atm_fields_compact* from a field.\n"
4296 "*atm_fields_compact* will have the same size and grids as the GriddedField3,\n"
4297 "but with one dimension as length 1.\n"),
4299 OUT(
"atm_fields_compact"),
4304 GIN(
"name",
"field"),
4305 GIN_TYPE(
"String",
"GriddedField3"),
4307 GIN_DESC(
"Name atmospheric field.",
"The atmospheric field.")));
4310 NAME(
"atm_fields_compactFromMatrix"),
4312 "Sets *atm_fields_compact* from 1D fields given in form of a matrix.\n"
4314 "For batch calculations it is handy to store atmospheric\n"
4315 "profiles in an array of matrix. We take such a matrix, and create\n"
4316 "*atm_fields_compact* from it.\n"
4318 "The matrix must contain one row for each pressure level.\n"
4320 "Not all fields contained in the matrix must be selected into\n"
4321 "*atm_fields_compact*, but the selection must at least contain\n"
4322 "fields of pressure, temperature, altitude and one absorption\n"
4324 "The matrix can contain some additional fields which are not\n"
4325 "directly used by ARTS for calculations but can be required for\n"
4326 "further processing, e.g. wind speed and direction. These fields do\n"
4327 "not need to be transfered into the *atm_fields_compact* variable.\n"
4329 "Selection of fields into *atm_fields_compact* works by providing a\n"
4330 "field name tag in *field_names* for the selected fields, while\n"
4331 "unselected fields are tagged by 'ignore'. Order of tags in\n"
4332 "*field_names* is strictly taken as corresponding to column order in\n"
4334 "The pressure fields are by convention the first column of the\n"
4335 "matrix, hence must not be tagged. That is, there must be given one\n"
4336 "field name tag less than matrix columns.\n"
4338 "For detailed tagging conventions see *atm_fields_compact*.\n"
4340 "Works only for *atmosphere_dim==1.*\n"),
4341 AUTHORS(
"Stefan Buehler",
"Daniel Kreyling",
"Jana Mendrok"),
4342 OUT(
"atm_fields_compact"),
4346 IN(
"atmosphere_dim"),
4347 GIN(
"gin1",
"field_names"),
4348 GIN_TYPE(
"Matrix",
"ArrayOfString"),
4350 GIN_DESC(
"One atmosphere matrix from batch input ArrayOfMatrix.",
4351 "Order/names of atmospheric fields.")));
4354 NAME(
"backend_channel_responseFlat"),
4356 "Sets up a rectangular channel response.\n"
4358 "The response of the backend channels is hee assumed to be constant\n"
4359 "inside the resolution width, and zero outside.\n"
4361 "The method assumes that all channels have the same response.\n"),
4363 OUT(
"backend_channel_response"),
4371 GIN_DESC(
"The spectrometer resolution.")));
4374 NAME(
"backend_channel_responseGaussian"),
4376 "Sets up a gaussian backend channel response.\n"
4378 "The method assumes that all channels can be modelled as gaussian.\n"
4380 "If *fwhm* has only one element, all channels are assumed to be equal.\n"
4381 "If *fwhm* has multiple elements, *xwidth_si* and *dx_si* must have one\n"
4382 "element or the same number of elements as *fwhm*. If one element is given,\n"
4383 "this value will be used for all channels.\n"
4385 "The grid generated can be written as\n"
4386 " si * [-xwidth_si:dx_si:xwidth_si]\n"
4387 "where si is the standard deviation corresponding to the FWHM.\n"
4388 "That is, width and spacing of the grid is specified in terms of\n"
4389 "number of standard deviations. If xwidth_si is set to 2, the\n"
4390 "response will cover about 95% the complete response. For\n"
4391 "xwidth_si=3, about 99% is covered. If xwidth_si/dx_si is not\n"
4392 "an integer, the end points of the grid are kept and the spacing\n"
4393 "if the grid is adjusted in the downward direction (ie. spacing is.\n"
4394 "is max *dx_si*).\n"),
4395 AUTHORS(
"Patrick Eriksson, Oliver Lemke"),
4396 OUT(
"backend_channel_response"),
4401 GIN(
"fwhm",
"xwidth_si",
"dx_si"),
4402 GIN_TYPE(
"Vector",
"Vector",
"Vector"),
4404 GIN_DESC(
"Full width at half-maximum",
4405 "Half-width of response, in terms of std. dev.",
4406 "Grid spacing, in terms of std. dev.")));
4409 NAME(
"batch_atm_fields_compactAddConstant"),
4410 DESCRIPTION(
"Adds a constant field to batch_atm_fields_compact.\n"
4412 "Applies *atm_fields_compactAddConstant* to each batch.\n"
4413 "The format is equal to that WSM.\n"),
4415 OUT(
"batch_atm_fields_compact"),
4419 IN(
"batch_atm_fields_compact"),
4420 GIN(
"name",
"value",
"prepend",
"condensibles"),
4421 GIN_TYPE(
"String",
"Numeric",
"Index",
"ArrayOfString"),
4424 "Name of additional atmospheric field, with constant value.",
4425 "Constant value of additional field.",
4426 "0 = Append to the end, 1 = insert at the beginning.",
4427 "List of condensibles used to scale down the VMR of the added species.")));
4430 NAME(
"batch_atm_fields_compactAddSpecies"),
4432 "Adds a field to *batch_atm_fields_compact*, with interpolation.\n"
4434 "This method appends or prepends a *GriddedField3* to each *atm_fields_compact*.\n"
4435 "in *batch_atm_fields_compact*. For details, see *atm_fields_compactAddSpecies*.\n"),
4437 OUT(
"batch_atm_fields_compact"),
4441 IN(
"batch_atm_fields_compact"),
4442 GIN(
"name",
"value",
"prepend"),
4443 GIN_TYPE(
"String",
"GriddedField3",
"Index"),
4446 "Name of additional atmospheric field. Use, e.g., vmr_ch4 for methane VMR",
4447 "Value of additional atmospheric field.",
4448 "0 = Append to the end, 1 = insert at the beginning.")));
4451 NAME(
"batch_atm_fields_compactCleanup"),
4453 "Removes unrealistically small or erroneous data from each data field\n"
4454 "of *batch_atm_fields_compact* (or other AerrayOfGriddedField4 data)\n"
4456 "This WSM checks if the data in *batch_atm_fields_compact* contains\n"
4457 "values smaller than the given *threshold*. In this case, these\n"
4458 "values will be set to zero.\n"
4460 "The method should be applied if *batch_atm_fields_compact* contains\n"
4461 "unrealistically small or erroneous data (NWP/GCM model data\n"
4462 "occassionally contains negative values, which are numerical\n"
4463 "artefacts rather than physical values.)\n"),
4465 OUT(
"batch_atm_fields_compact"),
4469 IN(
"batch_atm_fields_compact"),
4474 "Threshold below which *atm_fields_compact* values are set to zero.")));
4477 NAME(
"batch_atm_fields_compactFromArrayOfMatrix"),
4479 "Expand batch of 1D atmospheric state matrices to batch_atm_fields_compact.\n"
4481 "This is used to handle 1D batch cases, e.g. from NWP/GCM model like\n"
4482 "the Chevallier91L data set, stored in a matrix (it is preferred,\n"
4483 "though, to immediatedly store the model fields as\n"
4484 "*ArrayOfGriddedField4* and use *ReadXML* to load them directly into\n"
4485 "*batch_atm_fields_compact*).\n"
4487 "Works only for *atmosphere_dim==1.*\n"
4489 "See *atm_fields_compactFromMatrix* for basic documentation.\n"
4491 "See *batch_atm_fields_compactAddConstant* and\n"
4492 "batch_atm_fields_compactAddSpecies* for adding additional fields.\n"),
4493 AUTHORS(
"Stefan Buehler",
"Daniel Kreyling",
"Jana Mendrok"),
4494 OUT(
"batch_atm_fields_compact"),
4498 IN(
"atmosphere_dim"),
4499 GIN(
"atmospheres_fields",
"field_names"),
4500 GIN_TYPE(
"ArrayOfMatrix",
"ArrayOfString"),
4502 GIN_DESC(
"Batch of atmospheres stored in one array of matrix",
4503 "Order/names of atmospheric fields.")));
4508 "Display information about the given CIA tags.\n"
4509 "The CIA tags shown are in the same format as needed by *abs_speciesSet*.\n"),
4516 GIN(
"catalogpath",
"cia_tags"),
4517 GIN_TYPE(
"String",
"ArrayOfString"),
4519 GIN_DESC(
"Path to the CIA catalog directory.",
4520 "Array of CIA tags to view, e.g. [ \"N2-N2\", \"H2-H2\" ]")));
4523 NAME(
"CIARecordReadFromFile"),
4524 DESCRIPTION(
"Reads CIARecord from Hitran-style file.\n"),
4529 GOUT_DESC(
"CIARecord type variable for input and output."),
4531 GIN(
"species_tag",
"filename"),
4534 GIN_DESC(
"SpeciesTag string to associate with this CIARecord. See "
4535 "*abs_speciesSet* for correct format.",
4536 "Filename of HITRAN CIA data file.")));
4539 NAME(
"cloudboxOff"),
4541 "Deactivates the cloud box.\n"
4543 "Use this method if no scattering calculations shall be performed.\n"
4545 "The function sets *cloudbox_on* to 0, *cloudbox_limits*,\n"
4546 "*pnd_field*, *scat_data*, *scat_data_raw*, *iy_cloudbox_agenda*\n"
4547 "and *particle_masses* to be empty and sizes *dpnd_field_dx* to be\n"
4548 "consitent with *jacobian_quantities*.\n"),
4551 "ppath_inside_cloudbox_do",
4553 "iy_cloudbox_agenda",
4559 "scat_data_checked",
4564 IN(
"jacobian_quantities"),
4576 NAME(
"cloudboxSetAutomatically"),
4578 "Sets the cloud box to encompass the cloud given by the entries\n"
4579 "in *particle_field*.\n"
4581 "This WSM handles one *Tensor4* type *particle_field* at a time. It can\n"
4582 "be used to determine the cloudbox from *particle_bulkprop_field*\n"
4584 "The function must be called before executing any WSM that applies\n"
4585 "*cloudbox_limits*.\n"
4587 "The function iterates over all 3D fields in *particle_field* (which\n"
4588 "might correspond to different particle bulk properties as in\n"
4589 "*particle_bulkprop_field*). Each field is searched for the first\n"
4590 "and last pressure index, where the value is unequal to zero. This\n"
4591 "index is then copied to *cloudbox_limits*.\n"
4592 "If *particle_field* is empty, the cloudbox is switched off\n"
4593 "(*cloudbox_on*=0).\n"
4595 "Additionaly the lower cloudbox_limit is altered by *cloudbox_margin*.\n"
4596 "The margin is given as a height difference in meters and transformed\n"
4597 "into a pressure (via isothermal barometric height formula). This\n"
4598 "alteration is to ensure covering photons that leave the cloud, but\n"
4599 "reenter through a limb path.\n"
4600 "If *cloudbox_margin* is set to -1 (default), the cloudbox will extend\n"
4601 "to the surface. Hence, the lower cloudbox_limit is set to 0 (index\n"
4602 "of first pressure level).\n"
4603 "*cloudbox_margin* will be applied on each call of the WSM.\n"
4605 "Works only for *atmosphere_dim==1.*\n"),
4606 AUTHORS(
"Jana Mendrok, Daniel Kreyling"),
4607 OUT(
"cloudbox_on",
"cloudbox_limits"),
4611 IN(
"atmosphere_dim",
"p_grid",
"lat_grid",
"lon_grid"),
4612 GIN(
"particle_field",
"cloudbox_margin"),
4615 GIN_DESC(
"A collection of particle property fields (e.g."
4616 " *particle_bulkprop_field*).",
4617 "Minimum distance [m] between lowest 'cloudy' level and"
4618 " cloudbox lower limit. If set to *-1* (default), the"
4619 " cloudbox lower limit is fixed to 0, i.e., corresponds to"
4620 " the lowest atmospheric level (or the surface).")));
4623 NAME(
"cloudboxSetFullAtm"),
4625 "Sets the cloudbox to cover the full atmosphere.\n"
4627 "The cloudbox is always set to fully span the atmosphere vertically.\n"
4629 "For the latitide and longitide dimensions, default is to leave room\n"
4630 "between the cloudbox an the end of the atmosphere in these dimensions.\n"
4631 "This is required for some scattering solvers (MC and DOIT). In other\n"
4632 "cases it can be OK to let the cloudbox to fill the atmosphere fully\n"
4633 "also in latitude and longitude. This is triggered by setting the GIN\n"
4634 "fullfull to 1.\n"),
4635 AUTHORS(
"Claudia Emde, Jana Mendrok, Patrick Eriksson"),
4636 OUT(
"cloudbox_on",
"cloudbox_limits"),
4640 IN(
"atmosphere_dim",
"p_grid",
"lat_grid",
"lon_grid"),
4644 GIN_DESC(
"Flag to let cloudbox reach ends of lat and lon grids.")));
4647 NAME(
"cloudboxSetManually"),
4649 "Sets the cloud box to encompass the given positions.\n"
4651 "The function sets *cloudbox_on* to 1 and sets *cloudbox_limits*\n"
4652 "following the given pressure, latitude and longitude positions.\n"
4653 "The index limits in *cloudbox_limits* are selected to give the\n"
4654 "smallest possible cloud box that encompass the given points.\n"
4656 "The points must be given in the same order as used in\n"
4657 "*cloudbox_limits*. That means that the first keyword argument\n"
4658 "shall be a higher pressure than argument two, while the latitude\n"
4659 "and longitude points are given in increasing order. Positions\n"
4660 "given for dimensions not used by the selected atmospheric\n"
4661 "dimensionality are ignored.\n"
4663 "The given pressure points can be outside the range of *p_grid*.\n"
4664 "The pressure limit is then set to the end point of *p_grid*.\n"
4665 "The given latitude and longitude points must be inside the range\n"
4666 "of the corresponding grid. In addition, the latitude and longitude\n"
4667 "points cannot be inside the outermost grid ranges as the latitude\n"
4668 "and longitude limits in *cloudbox_limits* are not allowed to be\n"
4669 "grid end points.\n"),
4671 OUT(
"cloudbox_on",
"cloudbox_limits"),
4675 IN(
"atmosphere_dim",
"p_grid",
"lat_grid",
"lon_grid"),
4676 GIN(
"p1",
"p2",
"lat1",
"lat2",
"lon1",
"lon2"),
4678 "Numeric",
"Numeric",
"Numeric",
"Numeric",
"Numeric",
"Numeric"),
4681 "Lower pressure point.",
4682 "Lower latitude point.",
4683 "Upper latitude point.",
4684 "Lower longitude point.",
4685 "Upper longitude point.")));
4688 NAME(
"cloudboxSetManuallyAltitude"),
4690 "Sets the cloud box to encompass the given positions.\n"
4692 "As *cloudboxSetManually* but uses altitudes instead of pressure.\n"
4693 "The given altitude points can be outside the range of *z_field*.\n"
4694 "The altitude limit is then set to the end point of *p_grid*.\n"),
4696 OUT(
"cloudbox_on",
"cloudbox_limits"),
4700 IN(
"atmosphere_dim",
"z_field",
"lat_grid",
"lon_grid"),
4701 GIN(
"z1",
"z2",
"lat1",
"lat2",
"lon1",
"lon2"),
4703 "Numeric",
"Numeric",
"Numeric",
"Numeric",
"Numeric",
"Numeric"),
4706 "Upper altitude point.",
4707 "Lower latitude point.",
4708 "Upper latitude point.",
4709 "Lower longitude point.",
4710 "Upper longitude point.")));
4713 NAME(
"cloudbox_checkedCalc"),
4715 "Checks consistency and validity of the cloudbox governing variables.\n"
4717 "The following WSVs are treated: *cloudbox_on*, *cloudbox_limits*,\n"
4718 "*pnd_field*, *scat_data*, *scat_species*, *abs_species*, *particle_masses*\n"
4719 "*particle_bulkprop_field*, *particle_bulkprop_names* and wind_u/v/w_field.\n"
4721 "If any of these variables is changed, then this method shall be\n"
4722 "called again (no automatic check that this is fulfilled!).\n"
4724 "The main checks are if the cloudbox limits are OK with respect to\n"
4725 "the atmospheric dimensionality and the limits of the atmosphere,\n"
4726 "and that the scattering element variables *pnd_field* and\n"
4727 "*scat_data* match in size.\n"
4729 "Default is to demand that there is a margin between the cloudbox\n"
4730 "and the ends of latitide and longitude grids. Such margins are\n"
4731 "required by MC and DOIT/3D, but are not needed for e.g. IBA.\n"
4732 "If the margins not are a demand, set GIN demand_latlon_margin to 0.\n"
4734 "Further checks on *scat_data* are performed in *scat_data_checkedCalc*\n"
4736 "*scat_species* and *particle_masses* must either be empty or have a\n"
4737 "size that matches the other data. If non-empty, some check of these\n"
4738 "variables are performed.\n"
4740 "If any test fails, there is an error. Otherwise, *cloudbox_checked*\n"
4742 AUTHORS(
"Patrick Eriksson, Jana Mendrok"),
4743 OUT(
"cloudbox_checked"),
4747 IN(
"atmfields_checked",
4761 "jacobian_quantities",
4766 GIN(
"demand_latlon_margin",
"negative_pnd_ok"),
4769 GIN_DESC(
"Flag to demand margin or not w.r.t. to ends of lat/lon grids.",
4770 "Flag whether to accept pnd_field < 0.")));
4773 NAME(
"cloudbox_field_monoIterate"),
4775 "Iterative solution of the VRTE (DOIT method).\n"
4777 "A solution for the RTE with scattering is found using the\n"
4779 " 1. Calculate scattering integral using *doit_scat_field_agenda*.\n"
4780 " 2. Calculate RT with fixed scattered field using\n"
4781 " *doit_rte_agenda*.\n"
4782 " 3. Convergence test using *doit_conv_test_agenda*.\n"
4784 "Note: The atmospheric dimensionality *atmosphere_dim* can be\n"
4785 " either 1 or 3. To these dimensions the method adapts\n"
4786 " automatically. 2D scattering calculations are not\n"
4788 AUTHORS(
"Claudia Emde, Jakob Doerr"),
4789 OUT(
"cloudbox_field_mono"),
4793 IN(
"cloudbox_field_mono",
4794 "doit_scat_field_agenda",
4796 "doit_conv_test_agenda"),
4801 "Index wether to accelerate only the intensity (1) or the whole Stokes Vector (4)")));
4804 NAME(
"cloudbox_fieldCrop"),
4806 "Extracts a part of an existing *cloudbox_field*.\n"
4808 "The cropping is defined by defining new cloudbox limits. Note that\n"
4809 "*new_limit0* is an index with respect to *p_grid*, etc.\n"
4811 "The following must be valid:\n"
4812 " new_limit0 >= cloudbox_limits[0]\n"
4813 " new_limit1 <= cloudbox_limits[1]\n"
4814 " new_limit2 >= cloudbox_limits[2]\n"
4815 " new_limit3 <= cloudbox_limits[3]\n"
4816 " new_limit4 >= cloudbox_limits[4]\n"
4817 " new_limit5 <= cloudbox_limits[5]\n"
4819 "Indexes for dimensions not used are ignored.\n"),
4821 OUT(
"cloudbox_field",
"cloudbox_limits"),
4825 IN(
"atmosphere_dim",
"cloudbox_on",
"cloudbox_limits",
"cloudbox_field"),
4832 GIN_TYPE(
"Index",
"Index",
"Index",
"Index",
"Index",
"Index"),
4834 GIN_DESC(
"New value for cloudbox_limits[0].",
4835 "New value for cloudbox_limits[1].",
4836 "New value for cloudbox_limits[2].",
4837 "New value for cloudbox_limits[3].",
4838 "New value for cloudbox_limits[4].",
4839 "New value for cloudbox_limits[5].")));
4842 NAME(
"cloudbox_fieldSetFromPrecalc"),
4844 "Sets the initial cloudbox intensity field *cloudbox_field* from a\n"
4845 "precalculated field.\n"
4847 "This method sets the (monochromatic) first guess radiation field\n"
4848 "inside the cloudbox from a precalculated *cloudbox_field_precalc*,\n"
4849 "e.g., from the solution of a similar atmospheric scenario. The\n"
4850 "dimensions of *cloudbox_field_precalc* have to be consistent with\n"
4851 "the DOIT setup in terms of frequencies, pressure levels inside the\n"
4852 "cloudbox, polar angles used as well as the stokes dimension.\n"
4853 "Incoming field on the cloudbox boundaries is adapted to the actual\n"
4854 "clearsky incoming field as, e.g., calculated by *DoitGetIncoming*.\n"),
4856 OUT(
"cloudbox_field"),
4860 IN(
"cloudbox_field",
4866 "doit_is_initialized"),
4867 GIN(
"cloudbox_field_precalc"),
4870 GIN_DESC(
"Precalculated radiation field (of type *cloudbox_field*)")));
4873 NAME(
"cloudbox_fieldSetClearsky"),
4875 "Interpolate clearsky field on all gridpoints in cloudbox.\n"
4877 "This method uses a linear 1D/3D interpolation scheme to obtain the\n"
4878 "radiation field on all grid points inside the cloud box from the\n"
4879 "clear sky field on the cloudbox boundary. This radiation field\n"
4880 "is taken as the first guess radiation field in the DOIT module.\n"
4882 "Set the *all_frequencies* to 1 if the clearsky field shall be used\n"
4883 "as initial field for all frequencies. Set it to 0 if the clear sky\n"
4884 "field shall be used only for the first frequency in *f_grid*. For\n"
4885 "later frequencies, *cloudbox_field* of the previous frequency is then\n"
4887 AUTHORS(
"Sreerekha T.R. and Claudia Emde"),
4888 OUT(
"cloudbox_field"),
4892 IN(
"cloudbox_field",
4899 "doit_is_initialized"),
4900 GIN(
"all_frequencies"),
4906 NAME(
"cloudbox_field_monoSetConst"),
4908 "This method sets the initial field inside the cloudbox to a\n"
4909 "constant value. The method works only for monochromatic\n"
4910 "calculations (number of elements in f_grid=1).\n"
4912 "The user can specify a value for each Stokes dimension in the\n"
4913 "control file by *value*.\n"),
4915 OUT(
"cloudbox_field_mono"),
4919 IN(
"cloudbox_field_mono",
4929 GIN_DESC(
"A vector containing 4 elements with the value of the "
4930 "initial field for each Stokes dimension.")));
4933 NAME(
"cloudbox_fieldSetConst"),
4935 "This method sets the initial field inside the cloudbox to a\n"
4938 "The user has to specify a value for each Stokes dimension in the\n"
4939 "control file by *value*.\n"),