1 #ifndef teca_multi_cf_reader_h
2 #define teca_multi_cf_reader_h
4 #include "teca_config.h"
5 #include "teca_algorithm.h"
6 #include "teca_metadata.h"
8 #include "teca_cf_reader.h"
16 class teca_multi_cf_reader_internals;
17 using p_teca_multi_cf_reader_internals = std::shared_ptr<teca_multi_cf_reader_internals>;
76 TECA_GET_ALGORITHM_PROPERTIES_DESCRIPTION()
77 TECA_SET_ALGORITHM_PROPERTIES()
83 int set_input_file(const std::
string &input_file);
84 std::
string get_input_file() {
return this->input_file; }
92 int add_reader(
const std::string ®ex,
93 const std::string &key,
int provides_time,
94 int provides_geometry,
95 const std::vector<std::string> &variables);
98 int set_time_reader(
const std::string &key);
101 int set_geometry_reader(
const std::string &key);
104 int add_variable_reader(
const std::string &key,
105 const std::string &variable);
108 int set_variable_reader(
const std::string &key,
109 const std::vector<std::string> &variable);
112 void get_variables(std::vector<std::string> &vars);
120 void set_periodic_in_x(
int flag);
121 int get_periodic_in_x()
const;
129 void set_x_axis_variable(
const std::string &var);
130 std::string get_x_axis_variable()
const;
138 void set_y_axis_variable(
const std::string &var);
139 std::string get_y_axis_variable()
const;
149 void set_z_axis_variable(
const std::string &var);
150 std::string get_z_axis_variable()
const;
160 void set_t_axis_variable(
const std::string &var);
161 std::string get_t_axis_variable()
const;
170 void set_calendar(
const std::string &calendar);
171 std::string get_calendar()
const;
180 void set_t_units(
const std::string &units);
181 std::string get_t_units()
const;
201 void set_filename_time_template(
const std::string &templ);
202 std::string get_filename_time_template()
const;
211 TECA_ALGORITHM_VECTOR_PROPERTY(
double, t_value)
220 TECA_ALGORITHM_PROPERTY(
int, max_metadata_ranks)
239 void set_clamp_dimensions_of_one(
int flag);
240 int get_clamp_dimensions_of_one() const;
251 void set_target_bounds(const std::vector<
double> &bounds);
252 const std::vector<
double> &get_target_bounds() const;
260 void set_target_x_axis_variable(const std::
string &flag);
261 std::
string get_target_x_axis_variable() const;
269 void set_target_y_axis_variable(const std::
string &flag);
270 std::
string get_target_y_axis_variable() const;
277 void set_target_z_axis_variable(const std::
string &flag);
278 std::
string get_target_z_axis_variable() const;
286 void set_target_x_axis_units(const std::
string &flag);
287 std::
string get_target_x_axis_units() const;
295 void set_target_y_axis_units(const std::
string &flag);
296 std::
string get_target_y_axis_units() const;
304 void set_target_z_axis_units(const std::
string &flag);
305 std::
string get_target_z_axis_units() const;
314 TECA_ALGORITHM_PROPERTY(
int, validate_time_axis)
323 TECA_ALGORITHM_PROPERTY(
int, validate_spatial_coordinates)
330 void clear_cached_metadata();
337 const_p_teca_dataset execute(
unsigned int port,
338 const std::vector<const_p_teca_dataset> &input_data,
341 void set_modified() override;
344 std::
string input_file;
345 std::
string x_axis_variable;
346 std::
string y_axis_variable;
347 std::
string z_axis_variable;
348 std::
string t_axis_variable;
349 std::
string calendar;
351 std::
string filename_time_template;
352 std::vector<
double> t_values;
353 std::vector<
double> target_bounds;
354 std::
string target_x_axis_variable;
355 std::
string target_y_axis_variable;
356 std::
string target_z_axis_variable;
357 std::
string target_x_axis_units;
358 std::
string target_y_axis_units;
359 std::
string target_z_axis_units;
361 int max_metadata_ranks;
363 int validate_time_axis;
364 int validate_spatial_coordinates;
366 p_teca_multi_cf_reader_internals internals;