1 #ifndef teca_arakawa_c_grid_h
2 #define teca_arakawa_c_grid_h
5 #include "teca_shared_object.h"
6 #include "teca_variant_array.h"
7 #include "teca_array_collection.h"
68 TECA_DATASET_NEW_INSTANCE()
69 TECA_DATASET_NEW_COPY()
74 TECA_DATASET_METADATA(whole_extent,
unsigned long, 6)
75 TECA_DATASET_METADATA(extent,
unsigned long, 6)
76 TECA_DATASET_METADATA(bounds,
double, 6)
79 TECA_DATASET_METADATA(periodic_in_x,
int, 1)
80 TECA_DATASET_METADATA(periodic_in_y,
int, 1)
81 TECA_DATASET_METADATA(periodic_in_z,
int, 1)
85 TECA_DATASET_METADATA(m_x_coordinate_variable, std::string, 1)
86 TECA_DATASET_METADATA(m_y_coordinate_variable, std::string, 1)
87 TECA_DATASET_METADATA(u_x_coordinate_variable, std::string, 1)
88 TECA_DATASET_METADATA(u_y_coordinate_variable, std::string, 1)
89 TECA_DATASET_METADATA(v_x_coordinate_variable, std::string, 1)
90 TECA_DATASET_METADATA(v_y_coordinate_variable, std::string, 1)
94 TECA_DATASET_METADATA(m_z_coordinate_variable, std::string, 1)
95 TECA_DATASET_METADATA(w_z_coordinate_variable, std::string, 1)
99 TECA_DATASET_METADATA(t_coordinate_variable, std::string, 1)
102 p_teca_variant_array get_m_x_coordinates();
103 p_teca_variant_array get_m_y_coordinates();
104 const_p_teca_variant_array get_m_x_coordinates()
const;
105 const_p_teca_variant_array get_m_y_coordinates()
const;
107 p_teca_variant_array get_u_x_coordinates();
108 p_teca_variant_array get_u_y_coordinates();
109 const_p_teca_variant_array get_u_x_coordinates()
const;
110 const_p_teca_variant_array get_u_y_coordinates()
const;
112 p_teca_variant_array get_v_x_coordinates();
113 p_teca_variant_array get_v_y_coordinates();
114 const_p_teca_variant_array get_v_x_coordinates()
const;
115 const_p_teca_variant_array get_v_y_coordinates()
const;
118 p_teca_variant_array get_m_z_coordinates();
119 const_p_teca_variant_array get_m_z_coordinates()
const;
121 p_teca_variant_array get_w_z_coordinates();
122 const_p_teca_variant_array get_w_z_coordinates()
const;
125 p_teca_variant_array get_t_coordinates();
126 const_p_teca_variant_array get_t_coordinates()
const;
129 void set_m_x_coordinates(
const std::string &name,
130 const p_teca_variant_array &a);
132 void set_m_y_coordinates(
const std::string &name,
133 const p_teca_variant_array &a);
135 void set_u_x_coordinates(
const std::string &name,
136 const p_teca_variant_array &a);
138 void set_u_y_coordinates(
const std::string &name,
139 const p_teca_variant_array &a);
141 void set_v_x_coordinates(
const std::string &name,
142 const p_teca_variant_array &a);
144 void set_v_y_coordinates(
const std::string &name,
145 const p_teca_variant_array &a);
148 void set_m_z_coordinates(
const std::string &name,
149 const p_teca_variant_array &a);
151 void set_w_z_coordinates(
const std::string &name,
152 const p_teca_variant_array &a);
155 void set_t_coordinates(
const std::string &name,
156 const p_teca_variant_array &a);
159 std::string get_class_name()
const override
160 {
return "teca_arakawa_c_grid"; }
163 int get_type_code()
const override;
167 void copy(
const const_p_teca_dataset &)
override;
168 void shallow_copy(
const p_teca_dataset &)
override;
171 void copy_metadata(
const const_p_teca_dataset &other)
override;
174 void swap(p_teca_dataset &)
override;
177 bool empty()
const noexcept
override;
185 int to_stream(std::ostream &)
const override;
195 p_teca_variant_array m_x_coordinates;
196 p_teca_variant_array m_y_coordinates;
197 p_teca_variant_array u_x_coordinates;
198 p_teca_variant_array u_y_coordinates;
199 p_teca_variant_array v_x_coordinates;
200 p_teca_variant_array v_y_coordinates;
201 p_teca_variant_array m_z_coordinates;
202 p_teca_variant_array w_z_coordinates;
203 p_teca_variant_array t_coordinates;
205 std::shared_ptr<impl_t> m_impl;