ARTS 2.5.11 (git: 6827797f)
Agenda Class Referencefinal

The Agenda class. More...

#include <agenda_class.h>

Public Member Functions

 Agenda ()=default
 
 Agenda (Workspace &workspace)
 
 Agenda (const Agenda &x)=default
 
void append (const String &methodname, const TokVal &keywordvalue)
 Appends methods to an agenda.
 
void check (Workspace &ws_in, const Verbosity &verbosity)
 Checks consistency of an agenda.
 
void push_back (const MRecord &n)
 Append a new method to end of list.
 
void execute (Workspace &ws_in) const
 Execute an agenda.
 
void resize (Index n)
 Resize the method list.
 
Index nelem () const
 Return the number of agenda elements.
 
Agendaoperator= (const Agenda &x)
 
const Array< MRecord > & Methods () const
 
bool has_method (const String &methodname) const
 Check if method is in Agenda.
 
void set_methods (const Array< MRecord > &ml)
 
void set_outputs_to_push_and_dup (const Verbosity &verbosity)
 Retrieve indexes of all input and output WSVs.
 
bool is_input (Workspace &ws_in, Index var) const
 Check if given variable is agenda input.
 
bool is_output (Index var) const
 Check if given variable is agenda output.
 
void set_name (const String &nname)
 Set agenda name.
 
String name () const
 Agenda name.
 
const ArrayOfIndexget_output2push () const
 
const ArrayOfIndexget_output2dup () const
 
void print (ostream &os, const String &indent) const
 Print an agenda.
 
void set_main_agenda ()
 
bool is_main_agenda () const
 
bool checked () const
 
bool has_same_origin (const Workspace &ws2) const
 
std::shared_ptr< Workspaceworkspace () const
 
void set_workspace (Workspace &x)
 
Agenda deepcopy_if (Workspace &) const
 Creates a deep copy of the agenda if necessary (i.e., different workspace)!
 
std::pair< ArrayOfIndex, ArrayOfIndexget_global_inout () const
 Get index lists of global input and output variables from agenda_data of this agenda.
 

Private Attributes

std::weak_ptr< Workspacews
 
String mname
 
Array< MRecordmml
 
ArrayOfIndex moutput_push
 
ArrayOfIndex moutput_dup
 
bool main_agenda {false}
 Is set to true if this is the main agenda.
 
bool mchecked {false}
 Flag indicating that the agenda was checked for consistency.
 

Friends

ostream & operator<< (ostream &os, const Agenda &a)
 Output operator for Agenda.
 

Detailed Description

The Agenda class.

An agenda is a list of workspace methods (including keyword data) to be executed. There are workspace variables of class agenda that can contain a list of methods to execute for a particular purpose, for example to compute the lineshape in an absorption calculation.

Definition at line 52 of file agenda_class.h.

Constructor & Destructor Documentation

◆ Agenda() [1/3]

Agenda::Agenda ( )
default

Referenced by append().

◆ Agenda() [2/3]

Agenda::Agenda ( Workspace workspace)
explicit

Definition at line 46 of file agenda_class.cc.

◆ Agenda() [3/3]

Agenda::Agenda ( const Agenda x)
default

Copies an agenda.

Member Function Documentation

◆ append()

void Agenda::append ( const String methodname,
const TokVal keywordvalue 
)

Appends methods to an agenda.

This function appends a workspace method to the agenda. It currently only supports appending WSMs which have no generic input or output, and which are defined as Set methods which take only one keyword.

The keyword value has to be a string, which for no value should be of length zero.

Parameters
methodnameThe name of the WSM
keywordvalueThe value of the keyword
Author
Mattias Ekstrom
Date
2005-01-05

Definition at line 68 of file agenda_class.cc.

References Agenda(), ARTS_ASSERT, mchecked, global_data::md_data, global_data::MdMap, mml, and workspace().

Referenced by jacobianAddAbsSpecies(), jacobianAddBasicCatalogParameter(), jacobianAddFreqShift(), jacobianAddFreqStretch(), jacobianAddMagField(), jacobianAddNLTE(), jacobianAddPointingZa(), jacobianAddPolyfit(), jacobianAddScatSpecies(), jacobianAddShapeCatalogParameter(), jacobianAddSinefit(), jacobianAddSpecialSpecies(), jacobianAddSurfaceQuantity(), jacobianAddTemperature(), and jacobianAddWind().

◆ check()

void Agenda::check ( Workspace ws_in,
const Verbosity verbosity 
)

Checks consistency of an agenda.

Checks that the input used by the agenda and the output produced by the actual methods corresponds to what is desired in the lookup data.

Definition at line 90 of file agenda_class.cc.

References global_data::agenda_data, global_data::AgendaMap, ARTS_USER_ERROR_IF, has_same_origin(), AgRecord::In(), is_input(), is_output(), mchecked, mname, nelem(), AgRecord::Out(), set_outputs_to_push_and_dup(), workspace(), and Workspace::wsv_data_ptr.

Referenced by AgendaAppend(), AgendaSet(), ArrayOfAgendaAppend(), Copy(), AgendaManip::AgendaCreator::finalize(), and jacobianClose().

◆ checked()

◆ deepcopy_if()

Agenda Agenda::deepcopy_if ( Workspace workspace) const

Creates a deep copy of the agenda if necessary (i.e., different workspace)!

Definition at line 933 of file agenda_class.cc.

References has_same_origin(), main_agenda, make_same_wsvs(), mchecked, mml, mname, moutput_dup, moutput_push, and workspace().

Referenced by Workspace::deepcopy(), and MRecord::deepcopy_if().

◆ execute()

void Agenda::execute ( Workspace ws_in) const

◆ get_global_inout()

std::pair< ArrayOfIndex, ArrayOfIndex > Agenda::get_global_inout ( ) const

Get index lists of global input and output variables from agenda_data of this agenda.

Definition at line 947 of file agenda_class.cc.

References global_data::agenda_data, global_data::AgendaMap, AgRecord::In(), name(), and AgRecord::Out().

Referenced by AgendaExecute(), and set_outputs_to_push_and_dup().

◆ get_output2dup()

const ArrayOfIndex & Agenda::get_output2dup ( ) const
inline

Definition at line 78 of file agenda_class.h.

References moutput_dup.

Referenced by AgendaExecute(), and auto_md_agenda_execute_helper().

◆ get_output2push()

const ArrayOfIndex & Agenda::get_output2push ( ) const
inline

Definition at line 77 of file agenda_class.h.

References moutput_push.

Referenced by AgendaExecute(), and auto_md_agenda_execute_helper().

◆ has_method()

bool Agenda::has_method ( const String methodname) const

Check if method is in Agenda.

This function checks if the method with the given name is called by this agenda.

Parameters
methodnameName of method to look for.
Returns
True if method is part of Agenda.
Author
Oliver Lemke
Date
2013-03-18

Definition at line 690 of file agenda_class.cc.

References global_data::md_data, and mml.

Referenced by abs_xsec_agenda_checkedCalc(), and propmat_clearsky_agenda_checkedCalc().

◆ has_same_origin()

bool Agenda::has_same_origin ( const Workspace ws2) const

Definition at line 762 of file agenda_class.cc.

References Workspace::original_workspace, and workspace().

Referenced by check(), deepcopy_if(), MRecord::deepcopy_if(), and execute().

◆ is_input()

bool Agenda::is_input ( Workspace ws_in,
Index  var 
) const

Check if given variable is agenda input.

A variable is agenda input if it is an input variable to any of the methods making up the agenda.

Parameters
[in]varThe workspace variable to check.
Returns
True if var is an input variable of this agenda.

Definition at line 516 of file agenda_class.cc.

References global_data::agenda_data, global_data::AgendaMap, ARTS_ASSERT, MRecord::Id(), MRecord::In(), global_data::md_data, global_data::MdMap, mml, nelem(), Array< base >::nelem(), MRecord::Out(), Workspace::wsv_data_ptr, and global_data::WsvGroupMap.

Referenced by check().

◆ is_main_agenda()

bool Agenda::is_main_agenda ( ) const
inline

Definition at line 84 of file agenda_class.h.

References main_agenda.

Referenced by execute().

◆ is_output()

bool Agenda::is_output ( Index  var) const

Check if given variable is agenda output.

A variable is agenda output if it is an output variable to any of the methods making up the agenda.

Parameters
varThe workspace variable to check.
Returns
True if var is an output variable of this agenda.

Definition at line 598 of file agenda_class.cc.

References global_data::agenda_data, global_data::AgendaMap, MRecord::Id(), MRecord::In(), global_data::md_data, global_data::MdMap, mml, nelem(), Array< base >::nelem(), MRecord::Out(), workspace(), and global_data::WsvGroupMap.

Referenced by check().

◆ Methods()

const Array< MRecord > & Agenda::Methods ( ) const
inline

Definition at line 69 of file agenda_class.h.

References mml.

Referenced by AgendaAppend(), and AgendaManip::AgendaCreator::finalize().

◆ name()

◆ nelem()

Index Agenda::nelem ( ) const

Return the number of agenda elements.

This is needed, so that we can find out the correct size for resize, befor we do a copy.

Returns
Number of agenda elements.

Definition at line 739 of file agenda_class.cc.

References mml, and Array< base >::nelem().

Referenced by check(), chk_not_empty(), is_input(), is_output(), MRecord::print(), and set_outputs_to_push_and_dup().

◆ operator=()

Agenda & Agenda::operator= ( const Agenda x)

Definition at line 752 of file agenda_class.cc.

References mchecked, mml, mname, moutput_dup, moutput_push, and ws.

◆ print()

void Agenda::print ( ostream &  os,
const String indent 
) const

Print an agenda.

This prints an agenda, by printing the individual methods, just as they would appear in the controlfile.

Parameters
osOutput stream.
indentHow many characters of indentation.
Author
Stefan Buehler
Date
2002-12-02

Definition at line 719 of file agenda_class.cc.

References mml, and Array< base >::nelem().

Referenced by MRecord::print(), and Print().

◆ push_back()

void Agenda::push_back ( const MRecord n)

Append a new method to end of list.

This is used by the parser to fill up the agenda.

Parameters
nNew method to add.

Definition at line 747 of file agenda_class.cc.

References mchecked, and mml.

Referenced by AgendaManip::AgendaCreator::finalize(), ArtsParser::parse_agenda(), AgendaManip::AgendaCreator::set(), and ArtsParser::tasklist_insert_set_delete().

◆ resize()

void Agenda::resize ( Index  n)

Resize the method list.

Resizes the agenda's method list to n elements

Definition at line 730 of file agenda_class.cc.

References mml.

Referenced by ArtsParser::parse_method().

◆ set_main_agenda()

void Agenda::set_main_agenda ( )
inline

Definition at line 80 of file agenda_class.h.

References main_agenda, and mchecked.

◆ set_methods()

void Agenda::set_methods ( const Array< MRecord > &  ml)

Definition at line 703 of file agenda_class.cc.

References mchecked, and mml.

Referenced by AgendaAppend().

◆ set_name()

void Agenda::set_name ( const String nname)

Set agenda name.

This sets the private member mname to the given string.

Parameters
nnameThe name for the agenda.

Definition at line 665 of file agenda_class.cc.

References mchecked, and mname.

Referenced by AgendaManip::AgendaCreator::AgendaCreator(), AgendaSet(), ArrayOfAgendaAppend(), cloudboxOff(), Copy(), gas_scatteringOff(), and jacobianInit().

◆ set_outputs_to_push_and_dup()

void Agenda::set_outputs_to_push_and_dup ( const Verbosity verbosity)

Retrieve indexes of all input and output WSVs.

Builds arrays of WSM output variables which need to be duplicated or pushed on the WSV stack before the agenda is executed.

Definition at line 291 of file agenda_class.cc.

References global_data::agenda_data, global_data::AgendaMap, CREATE_OUT3, get_global_inout(), global_data::md_data, global_data::MdMap, mml, moutput_dup, moutput_push, name(), nelem(), Array< base >::nelem(), PrintWsvNames(), workspace(), and global_data::WsvGroupMap.

Referenced by check().

◆ set_workspace()

void Agenda::set_workspace ( Workspace x)

Definition at line 961 of file agenda_class.cc.

References mml, and ws.

Referenced by Workspace::claim_agenda_ownership(), and MRecord::set_workspace().

◆ workspace()

std::shared_ptr< Workspace > Agenda::workspace ( ) const

Friends And Related Function Documentation

◆ operator<<

ostream & operator<< ( ostream &  os,
const Agenda a 
)
friend

Output operator for Agenda.

This is useful for debugging.

Parameters
osOutput stream.
aThe Agenda to write.
Returns
Output stream.
Author
Stefan Buehler
Date
2002-12-02

Definition at line 785 of file agenda_class.cc.

Member Data Documentation

◆ main_agenda

bool Agenda::main_agenda {false}
private

Is set to true if this is the main agenda.

Definition at line 111 of file agenda_class.h.

Referenced by deepcopy_if(), is_main_agenda(), and set_main_agenda().

◆ mchecked

bool Agenda::mchecked {false}
private

Flag indicating that the agenda was checked for consistency.

Definition at line 114 of file agenda_class.h.

Referenced by append(), check(), checked(), deepcopy_if(), execute(), operator=(), push_back(), set_main_agenda(), set_methods(), and set_name().

◆ mml

Array<MRecord> Agenda::mml
private

◆ mname

String Agenda::mname
private

Agenda name.

Definition at line 103 of file agenda_class.h.

Referenced by check(), deepcopy_if(), execute(), name(), operator=(), and set_name().

◆ moutput_dup

ArrayOfIndex Agenda::moutput_dup
private

◆ moutput_push

ArrayOfIndex Agenda::moutput_push
private

◆ ws

std::weak_ptr<Workspace> Agenda::ws
private

The workspace upon which this Agenda lives.

Definition at line 102 of file agenda_class.h.

Referenced by operator=(), set_workspace(), and workspace().


The documentation for this class was generated from the following files: