ARTS 2.5.0 (git: 9ee3ac6c)
agendas.cc
Go to the documentation of this file.
1/* Copyright (C) 2002-2012 Stefan Buehler <sbuehler@ltu.se>
2
3 This program is free software; you can redistribute it and/or modify it
4 under the terms of the GNU General Public License as published by the
5 Free Software Foundation; either version 2, or (at your option) any
6 later version.
7
8 This program is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 GNU General Public License for more details.
12
13 You should have received a copy of the GNU General Public License
14 along with this program; if not, write to the Free Software
15 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
16 USA. */
17
29#include "agenda_record.h"
30
31// Some #defines and typedefs to make the records better readable:
32#define NAME(x) x
33#define DESCRIPTION(x) x
34#define OUTPUT(...) \
35 { __VA_ARGS__ }
36#define INPUT(...) \
37 { __VA_ARGS__ }
38
40namespace global_data {
42}
43
46
47 // Initialize to zero, just in case:
48 agenda_data.resize(0);
49
50 /*----------------------------------------------------------------------
51 Agendas must be put in in alphabetical order.
52 No distinction is made between uppercase and lowercase letters.
53 The sign "_" comes after all letters.
54 ----------------------------------------------------------------------*/
55
56 agenda_data.push_back(AgRecord(
57 NAME("propmat_clearsky_agenda"),
59 "Calculate the absorption coefficient matrix.\n"
60 "\n"
61 "This agenda calculates the absorption coefficient matrix for all\n"
62 "absorption species as a function of the given atmospheric state for\n"
63 "one point in the atmosphere. The result is returned in\n"
64 "*propmat_clearsky*. The atmospheric state has to be specified by\n"
65 "*rtp_pressure*, *rtp_temperature*, *rtp_mag*, and *rtp_vmr*.\n"
66 "\n"
67 "The methods inside this agenda may require a lot of additional\n"
68 "input variables, such as *abs_species*, etc.\n"
69 "\n"
70 "The include file 'agendas.arts' predefines some possible agendas\n"
71 "that can be used here.\n"),
72 OUTPUT("propmat_clearsky",
73 "nlte_source",
74 "dpropmat_clearsky_dx",
75 "dnlte_source_dx"),
76 INPUT("jacobian_quantities",
77 "f_grid",
78 "rtp_mag",
79 "rtp_los",
80 "rtp_pressure",
81 "rtp_temperature",
82 "rtp_nlte",
83 "rtp_vmr")));
84
85 agenda_data.push_back(AgRecord(
86 NAME("abs_xsec_agenda"),
88 "Calculate scalar gas absorption cross sections.\n"
89 "\n"
90 "Basically, this agenda calculates cross-sections for all the tags defined\n"
91 "in abs_species. It is used both in the calculation of an absorption\n"
92 "lookup table, and in on-the-fly calculations. Typical effects to\n"
93 "include here are:\n"
94 "\n"
95 "Continua and complete absorption models (*abs_xsec_per_speciesAddConts*), and\n"
96 "\n"
97 "HITRAN style CIA continua (*abs_xsec_per_speciesAddCIA*)\n"
98 "\n"
99 "The include file 'agendas.arts' predefines a number of agendas that\n"
100 "should be useful for most users.\n"),
101 OUTPUT("abs_xsec_per_species",
102 "dabs_xsec_per_species_dx"),
103 INPUT("abs_species",
104 "jacobian_quantities",
105 "abs_species_active",
106 "f_grid",
107 "abs_p",
108 "abs_t",
109 "abs_vmrs")));
110
111 agenda_data.push_back(
112 AgRecord(NAME("dobatch_calc_agenda"),
113 DESCRIPTION("Calculations to perform for each batch case.\n"
114 "\n"
115 "See further *DOBatchCalc*.\n"),
116 OUTPUT("spectral_radiance_field",
117 "radiance_field",
118 "irradiance_field",
119 "spectral_irradiance_field"),
120 INPUT("ybatch_index")));
121
122 agenda_data.push_back(AgRecord(
123 NAME("doit_conv_test_agenda"),
125 "Compute the convergence test.\n"
126 "\n"
127 "The method *cloudbox_field_monoIterate* solves the VRTE iteratively."
128 "This method requires \n"
129 "a convergence test. The user can choose different convergence tests\n"
130 "which are to be defined in this agenda.\n"
131 "\n"
132 "Possible workspace methods are:\n"
133 "*doit_conv_flagAbs*: Calculates the absolute differences \n"
134 " for each Stokes component separately.\n"
135 "*doit_conv_flagAbsBT*: Same as above, but the convergence limit\n"
136 " can be specified in Kelvin BT (Rayleigh Jeans).\n"
137 "*doit_conv_flagLsq*: Least square convergence test. Not recommended\n"
138 " because result can be inaccurate.\n"),
139 OUTPUT("doit_conv_flag", "doit_iteration_counter"),
140 INPUT("doit_conv_flag",
141 "doit_iteration_counter",
142 "cloudbox_field_mono",
143 "cloudbox_field_mono_old")));
144
145 agenda_data.push_back(AgRecord(
146 NAME("doit_mono_agenda"),
148 "Performs monochromatic DOIT calculation."
149 "\n"
150 "This agenda includes for example the following methods:\n"
151 " 1. *DoitScatteringDataPrepare* \n"
152 " 2. *cloudbox_field_monoIterate*\n"
153 "\n"
154 "The result of the agenda is the radiation field inside the \n"
155 "cloudbox and on the cloudbox boundary, which can be used \n"
156 "as radiative background for a clearsky radiative transfer \n"
157 "calculation. \n"
158 "\n"
159 "See the Arts online documentation\n"
160 "for more information about the methods.\n"),
161 OUTPUT("cloudbox_field_mono"),
162 INPUT("cloudbox_field_mono", "f_grid", "f_index")));
163
164 agenda_data.push_back(AgRecord(
165 NAME("doit_scat_field_agenda"),
167 "Calculation of the scattering integral field (DOIT). \n"
168 "\n"
169 "This agenda is called repeatedly in each DOIT iteration.\n"
170 "The following methods can be used for calculating the \n"
171 "scattering integral field: \n"
172 "\n"
173 "*doit_scat_fieldCalc*: This method calculates the scattering \n"
174 " integral field by using the angular grids *za_grid* \n"
175 " and *aa_grid*, which are also used in the update of the \n"
176 " radiation field (*doit_rte_agenda*).\n"
177 "\n"
178 "*doit_scat_fieldCalcLimb*: This method calculates the scattering \n"
179 " integral field. The difference to the previous method is that \n"
180 " the data is interpolated on equidistant angular grids. \n"
181 " Especially for limb, where a very fine zenith angle grid \n"
182 " resolution is required for the RT transfer part, this method \n"
183 " is much faster than *doit_scat_fieldCalc*. \n"),
184 OUTPUT("doit_scat_field"),
185 INPUT("doit_scat_field", "cloudbox_field_mono")));
186
187 agenda_data.push_back(AgRecord(
188 NAME("doit_rte_agenda"),
190 "Radiative transfer calculations in cloudbox.\n"
191 "\n"
192 "Agenda for radiative transfer step calculations with \n"
193 "fixed scattering integral term shoul be specified here.\n"
194 "Output is the updated radiation field in the cloudbox. \n"
195 "This agenda is called repeatedly in each DOIT iteration.\n"
196 "\n"
197 "Normally one should use\n"
198 "*cloudbox_fieldUpdateSeq1D* or *cloudbox_fieldUpdateSeq3D*:\n"
199 "Seqential update of the radiation field.\n"
200 " This method is the fastest and most accurate method.\n"
201 "\n"
202 "A very similar method in plane parallel approximation is\n"
203 "*cloudbox_fieldUpdateSeq1DPP*:\n"
204 " This method also includes the sequential update and is slightly\n"
205 " faster than the above one. The drawback is that it is less\n"
206 " accurate, especially for limb geometries and large off-nadir\n"
207 " viewing angles.\n"
208 "\n"
209 "The following method was used before the sequential update\n"
210 "was invented. It is very slow and should therefore only \n"
211 "be used for test cases.\n"
212 "*cloudbox_fieldUpdate1D*: Old method.\n"),
213 OUTPUT("cloudbox_field_mono"),
214 INPUT("cloudbox_field_mono", "doit_scat_field")));
215
216 agenda_data.push_back(AgRecord(
217 NAME("forloop_agenda"),
219 "The body for a for loop.\n"
220 "\n"
221 "This agenda contains the body of the for loop to be execute by the\n"
222 "method *ForLoop*.\n"),
223 OUTPUT(),
224 INPUT("forloop_index")));
225
226 /*
227 agenda_data.push_back
228 (AgRecord
229 ( NAME( "fos_y_agenda" ),
230 DESCRIPTION
231 (
232 "Calculation of incoming radiation field for FOS method.\n"
233 "\n"
234 "The direct task of the agenda is to determine the incoming radiation\n"
235 "field, to evaluate of the scattering integral, for each angle in\n"
236 "*fos_angle*. The data are packed into *fos_y*.\n"
237 "\n"
238 "The underlying purpose of this agenda is to allow different\n"
239 "shortcuts for estimating the incoming radiation field. For example,\n"
240 "calculations can be performed for a few directions and then an\n"
241 "interpolation is performed to obtain the intensity for other\n"
242 "directions. The data could also be taken from a pre-calculated\n"
243 "database.\n"
244 ),
245 OUTPUT( "fos_y" ),
246 INPUT( "rte_pos", "fos_angles", "fos_n", "fos_i" )));
247 */
248
249 agenda_data.push_back(
250 AgRecord(NAME("g0_agenda"),
251 DESCRIPTION("Calculation of the gravity at zero altitude.\n"
252 "\n"
253 "Returns *g0* for given geographical position.\n"),
254 OUTPUT("g0"),
255 INPUT("lat", "lon")));
256
257 agenda_data.push_back(AgRecord(
258 NAME("geo_pos_agenda"),
260 "Geo-positioning of a pencil beam calculation.\n"
261 "\n"
262 "The task of this agenda is to set *geo_pos*. The standard choices are\n"
263 "to set that WSV to be empty or select a position along the propagation\n"
264 "path (described by *ppath*).\n"),
265 OUTPUT("geo_pos"),
266 INPUT("ppath")));
267
268 agenda_data.push_back(AgRecord(
269 NAME("inversion_iterate_agenda"),
271 "Work in progress ...\n"
272 "\n"
273 "The WSV *jacobian* is both in- and output. As input variable, *jacobian*\n"
274 "is assumed to be valid for the previous iteration. For the first iteration\n"
275 "the input *jacobian* shall be set to have size zero, to flag that there\n"
276 "is not yet any calculated Jacobian.\n"),
277 OUTPUT("yf", "jacobian"),
278 INPUT("x", "jacobian_do", "inversion_iteration_counter")));
279
280 agenda_data.push_back(AgRecord(
281 NAME("iy_cloudbox_agenda"),
283 "Intensity at boundary or interior of the cloudbox.\n"
284 "\n"
285 "The task of the agenda is to determine the intensity at some point\n"
286 "at the boundary of or inside the cloudbox. The actual calculations\n"
287 "inside the agenda differ depending on scattering solution method.\n"
288 "If DOIT is used, an interpolating of the intensity field should be\n"
289 "performed. Another option is to start backward Monte Carlo \n"
290 "calculations from this point.\n"
291 "\n"
292 "A function calling this agenda shall set *rte_pos* and *rte_los* to\n"
293 "the position and line-of-sight for which the scattered radiation\n"
294 "shall be determined.\n"
295 "\n"
296 "The include-file 'agendas.arts' pre-defines some agendas that can\n"
297 "either be used directly, or serve as examples.\n"),
298 OUTPUT("iy"),
299 INPUT("f_grid", "rtp_pos", "rtp_los")));
300
301 agenda_data.push_back(AgRecord(
302 NAME("iy_independent_beam_approx_agenda"),
304 "Agenda dedicated to *iyIndependentBeamApproximation*.\n"
305 "\n"
306 "If *iyIndependentBeamApproximation* is used, this agenda basically\n"
307 "replaces *iy_main_agenda*. Accordingly, this agenda has exactly the\n"
308 "same output as *iy_main_agenda*.\n"),
309 OUTPUT("iy", "iy_aux", "ppath", "diy_dx"),
310 INPUT("diy_dx",
311 "iy_agenda_call1",
312 "iy_unit",
313 "iy_transmittance",
314 "iy_aux_vars",
315 "iy_id",
316 "atmosphere_dim",
317 "p_grid",
318 "lat_grid",
319 "lon_grid",
320 "lat_true",
321 "lon_true",
322 "t_field",
323 "z_field",
324 "vmr_field",
325 "z_surface",
326 "ppath_lmax",
327 "ppath_lraytrace",
328 "cloudbox_on",
329 "cloudbox_limits",
330 "pnd_field",
331 "jacobian_do",
332 "f_grid",
333 "rte_pos",
334 "rte_los",
335 "rte_pos2")));
336
337 agenda_data.push_back(AgRecord(
338 NAME("iy_loop_freqs_agenda"),
340 "Agenda dedicated to *iyLoopFrequencies*.\n"
341 "\n"
342 "If *iyLoopFrequencies* is used, this agenda basically replaces\n"
343 "*iy_main_agenda*.Accordingly, this agenda has exactly the same\n"
344 "output as *iy_main_agenda*.\n"),
345 OUTPUT("iy", "iy_aux", "ppath", "diy_dx"),
346 INPUT("diy_dx",
347 "iy_agenda_call1",
348 "iy_transmittance",
349 "iy_aux_vars",
350 "iy_id",
351 "f_grid",
352 "rte_pos",
353 "rte_los",
354 "rte_pos2")));
355
356 agenda_data.push_back(AgRecord(
357 NAME("iy_main_agenda"),
359 "Calculation of a single monochromatic pencil beam spectrum.\n"
360 "\n"
361 "The task of the agenda is to calculate the monochromatic pencil beam\n"
362 "spectrum for the position specified by *rte_pos* and the viewing\n"
363 "direction specified by *rte_los*.\n"
364 "\n"
365 "Methods for this agenda can either handle the complete calculation,\n"
366 "make use of e.g. *iy_cloudbox_agenda* or be restricted to special\n"
367 "cases. See the documentation for the different methods.\n"
368 "\n"
369 "The include-file 'agendas.arts' predefines some typical alternatives\n"
370 "that can be used directly, or adapted for specific applications.\n"),
371 OUTPUT("iy", "iy_aux", "ppath", "diy_dx"),
372 INPUT("diy_dx",
373 "iy_agenda_call1",
374 "iy_transmittance",
375 "iy_aux_vars",
376 "iy_id",
377 "iy_unit",
378 "cloudbox_on",
379 "jacobian_do",
380 "f_grid",
381 "nlte_field",
382 "rte_pos",
383 "rte_los",
384 "rte_pos2")));
385
386 agenda_data.push_back(AgRecord(
387 NAME("iy_radar_agenda"),
389 "Calculation of pointwise backscattering.\n"
390 "\n"
391 "This agenda has a similar role for *yRadar* as *iy_main_agenda*.\n"
392 "for *yCalc*.\n"),
393 OUTPUT("iy", "iy_aux", "ppath", "diy_dx"),
394 INPUT("iy_aux_vars",
395 "iy_id",
396 "cloudbox_on",
397 "jacobian_do",
398 "rte_pos",
399 "rte_los")));
400
401 agenda_data.push_back(AgRecord(
402 NAME("iy_space_agenda"),
404 "Downwelling radiation at the top of the atmosphere.\n"
405 "\n"
406 "Possible terms to include in this agenda include cosmic background\n"
407 "radiation and solar radiation.\n"
408 "\n"
409 "A function calling this agenda shall set *rtp_pos* and *rtp_los* to\n"
410 "the position and line-of-sight for which the entering radiation \n"
411 "shall be determined. The position and line-of-sight must be known, \n"
412 "for example, when radiation from the sun is considered.\n"
413 "\n"
414 "The include-file 'agendas.arts' predefines an agenda that can be\n"
415 "applied directly for most users.\n"),
416 OUTPUT("iy"),
417 INPUT("f_grid", "rtp_pos", "rtp_los")));
418
419 agenda_data.push_back(AgRecord(
420 NAME("iy_surface_agenda"),
422 "Upwelling radiation from the surface.\n"
423 "\n"
424 "The task of the agenda is to determine the upwelling intensity from\n"
425 "the surface, for given point and direction.\n"
426 "\n"
427 "The standard choice should be to make use of *surface_rtprop_agenda*\n"
428 "through the WSM *iySurfaceRtpropAgenda*.\n"
429 "\n"
430 "A function calling this agenda shall set *rtp_pos* and *rtp_los* to\n"
431 "the position and line-of-sight for which the upwelling radiation\n"
432 "shall be determined.\n"
433 "\n"
434 "See also the include-file 'agendas.arts' for a predefined agenda\n"
435 "suitable to be used in most applications.\n"),
436 OUTPUT("iy", "diy_dx", "dsurface_rmatrix_dx", "dsurface_emission_dx"),
437 INPUT("diy_dx",
438 "dsurface_rmatrix_dx",
439 "dsurface_emission_dx",
440 "iy_unit",
441 "iy_transmittance",
442 "iy_id",
443 "cloudbox_on",
444 "jacobian_do",
445 "iy_main_agenda",
446 "f_grid",
447 "nlte_field",
448 "rtp_pos",
449 "rtp_los",
450 "rte_pos2",
451 "surface_props_data",
452 "dsurface_names")));
453
454 agenda_data.push_back(AgRecord(
455 NAME("iy_surface_agenda_array"),
457 "Upwelling radiation from the surface, divided into surface types.\n"
458 "\n"
459 "Each agenda element shall treat the radiative properties of a surface\n"
460 "type. The task of these agendas match directly *iy_surface_agenda*.\n"
461 "This with one exception, these agendas have one additional input:\n"
462 "*surface_type_aux*.\n"
463 "\n"
464 "See *surface_type_mask* for comments on the surface type coding\n"
465 "scheme. Note the parallel agenda array: surface_rtprop_agenda_array.\n"),
466 OUTPUT("iy", "diy_dx"),
467 INPUT("agenda_array_index",
468 "diy_dx",
469 "iy_unit",
470 "iy_transmittance",
471 "iy_id",
472 "cloudbox_on",
473 "jacobian_do",
474 "iy_main_agenda",
475 "f_grid",
476 "rtp_pos",
477 "rtp_los",
478 "rte_pos2",
479 "surface_type_aux")));
480
481 agenda_data.push_back(AgRecord(
482 NAME("iy_transmitter_agenda"),
484 "Transmitter signal.\n"
485 "\n"
486 "This agenda describes the signal at the start of the propagation\n"
487 "path for calculations of transmission type. That is, the agenda\n"
488 "describes a transmitter, which either can be a natural source or\n"
489 "an artificial device.\n"
490 "\n"
491 "The include-file 'agendas.arts' defines an example agenda that\n"
492 "can be used for transmission calculations\n"),
493 OUTPUT("iy"),
494 INPUT("f_grid", "rtp_pos", "rtp_los")));
495
496 agenda_data.push_back(AgRecord(
497 NAME("jacobian_agenda"),
499 "Pure numerical Jacobian calculations.\n"
500 "\n"
501 "Parts of the Jacobian matrix can be determined by (semi-)analytical\n"
502 "expressions, while other parts are calculated in a pure numerical\n"
503 "manner (by perturbations). This agenda describes the calculations to\n"
504 "be performed in the later case.\n"
505 "\n"
506 "This agenda is normally not set directly by the user, but is created\n"
507 "by calling the the jacobianAdd set of methods.\n"),
508 OUTPUT("jacobian"),
509 INPUT("jacobian", "mblock_index", "iyb", "yb")));
510
511 agenda_data.push_back(AgRecord(
512 NAME("main_agenda"),
514 "The agenda corresponding to the entire controlfile. This is\n"
515 "executed when ARTS is run.\n"),
516 OUTPUT(),
517 INPUT()));
518
519 agenda_data.push_back(AgRecord(
520 NAME("met_profile_calc_agenda"),
522 "This agenda is used for metoffice profile calculations.\n"
523 "\n"
524 "This agenda is called inside the method *ybatchMetProfiles* which is\n"
525 "used to make a batch calculation for the metoffice profiles. \n"
526 "See the documentation of *ybatchMetProfiles* for more information.\n"
527 "\n"
528 "This agenda can be, for example, set up like this:\n"
529 "\n"
530 "*AtmFieldsCalc*\n"
531 "*abs_lookupAdapt*\n"
532 "*DoitInit*\n"
533 "*DoitGetIncoming*\n"
534 "*cloudbox_fieldSetClearsky*\n"
535 "*DoitCalc*\n"
536 "*yCalc*\n"),
537 OUTPUT("y"),
538 INPUT("t_field_raw",
539 "vmr_field_raw",
540 "z_field_raw",
541 "pnd_field_raw",
542 "p_grid",
543 "sensor_los",
544 "cloudbox_on",
545 "cloudbox_limits",
546 "z_surface")));
547
548 agenda_data.push_back(AgRecord(
549 NAME("pha_mat_spt_agenda"),
551 "Calculates the phase matrix for individual scattering elements.\n"
552 "\n"
553 "Different options are possible for the usage of this agenda: \n"
554 "*pha_mat_sptFromData* or *pha_mat_sptFromDataDOITOpt*. \n"),
555 OUTPUT("pha_mat_spt"),
556 INPUT("pha_mat_spt",
557 "za_index",
558 "scat_lat_index",
559 "scat_lon_index",
560 "scat_p_index",
561 "aa_index",
562 "rtp_temperature")));
563
564 agenda_data.push_back(AgRecord(
565 NAME("pnd_agenda_array"),
567 "Returns particle number density data for each scattering species.\n"
568 "\n"
569 "This variable is used when mapping data in *particle_bulkprop_field*\n"
570 "to *pnd_field*. The variable is also necessary when calculating\n"
571 "scattering species weighting functions.\n"
572 "\n"
573 "Note that content of this agenda array, *scat_species* and\n"
574 "*pnd_agenda_array_input_names* must be consistent.\n"),
575 OUTPUT("pnd_data", "dpnd_data_dx"),
576 INPUT("agenda_array_index",
577 "pnd_agenda_input_t",
578 "pnd_agenda_input",
579 "pnd_agenda_input_names",
580 "dpnd_data_dx_names")));
581
582 agenda_data.push_back(AgRecord(
583 NAME("ppath_agenda"),
585 "Calculation of complete propagation paths.\n"
586 "\n"
587 "In contrast to *ppath_step_agenda* that controls the ray tracing\n"
588 "inside each grid box, this agenda determines how complete paths are\n"
589 "determined. The standard choice is to do this in a step-by-step\n"
590 "manner using *ppath_step_agenda*, with this agenda set to call\n"
591 "*ppathStepByStep*.\n"
592 "\n"
593 "The WSV *rte_los* is both input and output as in some cases it is\n"
594 "determined as part of the propagation path calculations (such as\n"
595 "radio link calculations).\n"),
596 OUTPUT("ppath"),
597 INPUT("ppath_lmax",
598 "ppath_lraytrace",
599 "rte_pos",
600 "rte_los",
601 "rte_pos2",
602 "cloudbox_on",
603 "ppath_inside_cloudbox_do",
604 "f_grid")));
605
606 agenda_data.push_back(AgRecord(
607 NAME("ppath_step_agenda"),
609 "Calculation of a propagation path step.\n"
610 "\n"
611 "A propagation path step is defined as the path between some point \n"
612 "to a crossing with either the pressure, latitude or longitude grid,\n"
613 "and this agenda performs the calculations to determine such a \n"
614 "partial propagation path. The starting point is normally a grid \n"
615 "crossing point, but can also be an arbitrary point inside the \n"
616 "atmosphere, such as the sensor position. Only points inside the \n"
617 "model atmosphere are handled.\n"
618 "\n"
619 "The communication between this agenda and the calling method is \n"
620 "handled by *ppath_step*. That variable is used both as input and \n"
621 "output to *ppath_step_agenda*. The agenda gets back *ppath_step* \n"
622 "as returned to the calling method and the last path point hold by \n"
623 "the structure is accordingly the starting point for the new \n"
624 "calculations. If a total propagation path shall be determined, this\n"
625 "agenda is called repeatedly until the starting point of the \n"
626 "propagation path is found and *ppath_step* will hold all path \n"
627 "steps that together make up *ppath*. The starting point is included\n"
628 "in the returned structure. \n"
629 "\n"
630 "The path is determined by starting at the end point and moving \n"
631 "backwards to the starting point. The calculations are initiated by \n"
632 "filling *ppath_step* with the practical end point of the path. \n"
633 "This is either the position of the sensor (true or hypothetical), \n"
634 "or some point at the top of the atmosphere (determined by\n"
635 "geometrical calculations starting at the sensor). This \n"
636 "initialisation is not handled by *ppath_step_agenda* (but by \n"
637 "the internal function ppath_start_stepping). \n"
638 "\n"
639 "The *ppath_step_agenda* put in points along the propagation path \n"
640 "at all crossings with the grids, tangent points and points of \n"
641 "surface reflection. It is also allowed to make agendas that put in \n"
642 "additional points to fulfil some criterion, such as a maximum \n"
643 "distance along the path between the points. Accordingly, the \n"
644 "number of new points of each step can exceed one.\n"
645 "\n"
646 "The include file 'agendas.arts' defines some agendas that can be\n"
647 "used here."),
648 OUTPUT("ppath_step"),
649 INPUT("ppath_step", "ppath_lmax", "ppath_lraytrace", "f_grid")));
650
651 agenda_data.push_back(AgRecord(
652 NAME("refr_index_air_agenda"),
654 "Calculation of the refractive index of air.\n"
655 "\n"
656 "This agenda should calculate the summed refractive index for all\n"
657 "relevant atmospheric constituents, with respect to both phase and\n"
658 "group velocity.\n"
659 "\n"
660 "The include file 'agendas.arts' predefines several agendas that\n"
661 "may either be used directly, or serve as inspiration.\n"),
662 OUTPUT("refr_index_air", "refr_index_air_group"),
663 INPUT("rtp_pressure", "rtp_temperature", "rtp_vmr", "f_grid")));
664
665 agenda_data.push_back(AgRecord(
666 NAME("sensor_response_agenda"),
668 "This agenda shall provide *sensor_response* and associated variables.\n"
669 "\n"
670 "So far only required when doing inversions involving some sensor variables.\n"),
671 OUTPUT("sensor_response",
672 "sensor_response_f",
673 "sensor_response_f_grid",
674 "sensor_response_pol",
675 "sensor_response_pol_grid",
676 "sensor_response_dlos",
677 "sensor_response_dlos_grid",
678 "mblock_dlos_grid"),
679 INPUT("f_backend")));
680
681 agenda_data.push_back(AgRecord(
682 NAME("spt_calc_agenda"),
684 "Calculates single scattering properties for individual scattering\n"
685 "elements from the amplitude matrix.\n"
686 "\n"
687 "This agenda sets up the methods, which should be used to calculate \n"
688 "the single scattering properties, i.e. the extinction matrix and the \n"
689 "absorbtion vector.\n "
690 "\n"
691 "Normally you use:\n"
692 "*opt_prop_sptFromMonoData*\n"),
693 OUTPUT("ext_mat_spt", "abs_vec_spt"),
694 INPUT("ext_mat_spt",
695 "abs_vec_spt",
696 "scat_p_index",
697 "scat_lat_index",
698 "scat_lon_index",
699 "rtp_temperature",
700 "za_index",
701 "aa_index")));
702
703 agenda_data.push_back(AgRecord(
704 NAME("surface_rtprop_agenda"),
706 "Provides radiative properties of the surface. \n"
707 "\n"
708 "Provides surface emission and surface reflection coefficient matrix\n"
709 "(see user guide for closer definitions of the respective variables\n"
710 "*surface_emission*, *surface_los*, and *surface_rmatrix*) according\n"
711 "to the characteristics of the surface specified by the methods called\n"
712 "within the agenda. Typical methods include *surfaceBlackbody*,\n"
713 "*surfaceFlatScalarReflectivity*, *surfaceFlatReflectivity*,\n"
714 "*surfaceFlatRefractiveIndex*, and *surfaceLambertianSimple*.\n"),
715 OUTPUT("surface_skin_t",
716 "surface_emission",
717 "surface_los",
718 "surface_rmatrix"),
719 INPUT("f_grid", "rtp_pos", "rtp_los")));
720
721 agenda_data.push_back(AgRecord(
722 NAME("surface_rtprop_agenda_array"),
724 "Description of surface radiative properties, divided into surface types.\n"
725 "\n"
726 "Each of these agendas shall treat the radiative properties of a\n"
727 " surface type. The task of these agendas is equivalent to that of\n"
728 "*surface_rtprop_agenda*. This with one exception, these agendas\n"
729 "have one additional input: *surface_type_aux*.\n"
730 "\n"
731 "See *surface_type_mask* for comments on the surface type coding\n"
732 "scheme. Note the parallel agenda series: iy_surface_sub_agendaX.\n"),
733 OUTPUT("surface_skin_t",
734 "surface_emission",
735 "surface_los",
736 "surface_rmatrix"),
737 INPUT("agenda_array_index",
738 "f_grid",
739 "rtp_pos",
740 "rtp_los",
741 "surface_type_aux")));
742
743 agenda_data.push_back(AgRecord(
744 NAME("surface_rtprop_sub_agenda"),
746 "Has exact same functionality as *surface_rtprop_sub_agenda*.\n"
747 "\n"
748 "This agenda complements *surface_rtprop_sub_agenda*, to allow\n"
749 "specifying the surface properties using two levels of agendas.\n"
750 "For example, this agenda can describe the properties for pure specular\n"
751 "reflections, and *surface_rtprop_agenda* can call this agenda for several\n"
752 "angles to build up a more complex surface model.\n"),
753 OUTPUT("surface_skin_t",
754 "surface_emission",
755 "surface_los",
756 "surface_rmatrix"),
757 INPUT("f_grid", "rtp_pos", "rtp_los")));
758
759 agenda_data.push_back(
760 AgRecord(NAME("test_agenda"),
761 DESCRIPTION("Dummy agenda for testing purposes.\n"),
762 OUTPUT(),
763 INPUT()));
764
765 agenda_data.push_back(
766 AgRecord(NAME("test_agenda_array"),
767 DESCRIPTION("Agenda array for TestArrayOfAgenda test case.\n"),
768 OUTPUT(),
769 INPUT("agenda_array_index", "iy_unit")));
770
771 agenda_data.push_back(AgRecord(
772 NAME("water_p_eq_agenda"),
773 DESCRIPTION("Calculation of the saturation pressure of water.\n"),
774 OUTPUT("water_p_eq_field"),
775 INPUT("t_field")));
776
777 agenda_data.push_back(AgRecord(
778 NAME("ybatch_calc_agenda"),
780 "Calculations to perform for each batch case.\n"
781 "\n"
782 "Must produce a new spectrum vector (*y*) and Jacobi matrix (*jacobian*).\n"
783 "See further *ybatchCalc*.\n"),
784 OUTPUT("y", "y_aux", "jacobian"),
785 INPUT("ybatch_index")));
786}
Declarations for AgRecord, storing lookup information for one agenda.
#define NAME(x)
Definition: agendas.cc:32
#define DESCRIPTION(x)
Definition: agendas.cc:33
#define OUTPUT(...)
Definition: agendas.cc:34
#define INPUT(...)
Definition: agendas.cc:36
void define_agenda_data()
Definition: agendas.cc:44
Lookup information for one agenda.
Definition: agenda_record.h:43
This can be used to make arrays out of anything.
Definition: array.h:107
const Array< AgRecord > agenda_data
The lookup information for the agendas.
Definition: agendas.cc:41