1 #ifndef teca_cartesian_mesh_source_h
2 #define teca_cartesian_mesh_source_h
4 #include "teca_algorithm.h"
5 #include "teca_metadata.h"
15 using field_generator_callback = std::function<p_teca_variant_array(
16 const const_p_teca_variant_array &,
const const_p_teca_variant_array &,
17 const const_p_teca_variant_array &,
double)>;
23 field_generator_callback generator;
29 return l.name == r.name;
35 return l.name != r.name;
54 TECA_GET_ALGORITHM_PROPERTIES_DESCRIPTION()
55 TECA_SET_ALGORITHM_PROPERTIES()
61 TECA_ALGORITHM_PROPERTY(
unsigned int, coordinate_type_code)
62 TECA_ALGORITHM_PROPERTY(
unsigned int, field_type_code)
68 TECA_ALGORITHM_VECTOR_PROPERTY(
unsigned long, whole_extent)
74 TECA_ALGORITHM_VECTOR_PROPERTY(
double, bound)
79 TECA_ALGORITHM_PROPERTY(std::string, x_axis_variable)
80 TECA_ALGORITHM_PROPERTY(std::string, y_axis_variable)
81 TECA_ALGORITHM_PROPERTY(std::string, z_axis_variable)
82 TECA_ALGORITHM_PROPERTY(std::string, t_axis_variable)
86 TECA_ALGORITHM_PROPERTY(std::string, x_axis_units)
87 TECA_ALGORITHM_PROPERTY(std::string, y_axis_units)
88 TECA_ALGORITHM_PROPERTY(std::string, z_axis_units)
91 TECA_ALGORITHM_PROPERTY(std::string, calendar)
92 TECA_ALGORITHM_PROPERTY(std::string, time_units)
101 void append_field_generator(
const std::string &name,
102 const teca_metadata &atts, field_generator_callback &callback);
109 const std::vector<teca_metadata> &input_md)
override;
111 const_p_teca_dataset execute(
unsigned int port,
112 const std::vector<const_p_teca_dataset> &input_data,
115 void set_modified()
override;
116 void clear_cached_metadata();
119 unsigned int coordinate_type_code;
120 unsigned int field_type_code;
121 std::string x_axis_variable;
122 std::string y_axis_variable;
123 std::string z_axis_variable;
124 std::string t_axis_variable;
125 std::string x_axis_units;
126 std::string y_axis_units;
127 std::string z_axis_units;
128 std::string calendar;
129 std::string time_units;
130 std::vector<unsigned long> whole_extents;
131 std::vector<double> bounds;
133 std::vector<field_generator_t> field_generators;