1 #ifndef teca_index_reduce_h
2 #define teca_index_reduce_h
4 #include "teca_dataset.h"
5 #include "teca_metadata.h"
7 #include "teca_threaded_algorithm.h"
46 TECA_GET_ALGORITHM_PROPERTIES_DESCRIPTION()
47 TECA_SET_ALGORITHM_PROPERTIES()
53 TECA_ALGORITHM_PROPERTY(
long, start_index)
54 TECA_ALGORITHM_PROPERTY(
long, end_index)
62 virtual p_teca_dataset reduce(const const_p_teca_dataset &
left,
63 const const_p_teca_dataset &right) = 0;
67 virtual p_teca_dataset finalize(const const_p_teca_dataset &ds)
69 return std::const_pointer_cast<teca_dataset>(ds);
77 virtual std::vector<teca_metadata> initialize_upstream_request(
78 unsigned int port,
const std::vector<teca_metadata> &input_md,
84 virtual teca_metadata initialize_output_metadata(
unsigned int port,
85 const std::vector<teca_metadata> &input_md) = 0;
94 std::vector<teca_metadata> get_upstream_request(
95 unsigned int port,
const std::vector<teca_metadata> &input_md,
103 const_p_teca_dataset execute(
unsigned int port,
104 const std::vector<const_p_teca_dataset> &input_data,
110 const std::vector<teca_metadata> &input_md)
override;
115 const_p_teca_dataset reduce_local(
116 std::vector<const_p_teca_dataset> local_data);
118 const_p_teca_dataset reduce_remote(const_p_teca_dataset local_data);