1 #ifndef teca_algorithm_h
2 #define teca_algorithm_h
4 #include "teca_config.h"
7 #include "teca_dataset_fwd.h"
8 #include "teca_algorithm_fwd.h"
9 #include "teca_algorithm_executive_fwd.h"
13 #include "teca_metadata.h"
14 #include "teca_algorithm_output_port.h"
15 #include "teca_program_options.h"
33 virtual const char *get_class_name()
const = 0;
43 void set_communicator(MPI_Comm comm);
44 MPI_Comm get_communicator();
46 #if defined(TECA_HAS_BOOST)
49 virtual void get_properties_description(
const std::string &, options_description &)
54 virtual void set_properties(
const std::string &, variables_map &)
61 teca_algorithm_output_port get_output_port(
unsigned int port = 0);
64 void set_input_connection(
const teca_algorithm_output_port &port)
65 { this->set_input_connection(0, port); }
68 void set_input_connection(
unsigned int id,
69 const teca_algorithm_output_port &port);
73 void remove_input_connection(
unsigned int id);
76 void clear_input_connections();
83 const_p_teca_dataset get_output_data(
unsigned int port = 0);
89 void pop_cache(
unsigned int port = 0,
int top = 0);
92 void set_cache_size(
unsigned int n);
96 virtual int update(
unsigned int port);
102 void set_executive(p_teca_algorithm_executive exe);
103 p_teca_algorithm_executive get_executive();
108 virtual void to_stream(std::ostream &s)
const;
109 virtual void from_stream(std::istream &s);
117 void set_number_of_input_connections(
unsigned int n);
118 void set_number_of_output_ports(
unsigned int n);
123 virtual void set_modified();
124 void set_modified(
unsigned int port);
140 const std::vector<teca_metadata> &input_md);
149 std::vector<teca_metadata> get_upstream_request(
150 unsigned int port,
const std::vector<teca_metadata> &input_md,
163 const_p_teca_dataset execute(
unsigned int port,
164 const std::vector<const_p_teca_dataset> &input_data,
186 teca_algorithm_output_port ¤t);
191 const_p_teca_dataset request_data(
192 teca_algorithm_output_port &port,
199 int validate_cache(teca_algorithm_output_port ¤t);
204 void clear_modified(teca_algorithm_output_port current);
211 const_p_teca_dataset get_output_data(
unsigned int port,
216 int cache_output_data(
unsigned int port,
220 void clear_cache(
unsigned int port);
223 unsigned int get_number_of_input_connections();
227 teca_algorithm_output_port &get_input_connection(
unsigned int i);
230 void clear_modified(
unsigned int port);
233 int get_modified(
unsigned int port)
const;