|
TECA
The Toolkit for Extreme Climate Analysis
|
A representation of mesh based data on an Arkawa C Grid. More...
#include <teca_arakawa_c_grid.h>
Public Member Functions | |
| std::shared_ptr< teca_arakawa_c_grid > | shared_from_this () |
| std::shared_ptr< teca_arakawa_c_grid const > | shared_from_this () const |
| virtual p_teca_dataset | new_instance () const override |
| virtual constructor. return a new dataset of the same type. More... | |
| virtual p_teca_dataset | new_copy (allocator alloc=allocator::malloc) const override |
| virtual p_teca_dataset | new_shallow_copy () override |
| void | set_whole_extent (const std::vector< unsigned long > &vals) |
| int | get_whole_extent (std::vector< unsigned long > &vals) const |
| void | set_whole_extent (const p_teca_variant_array &vals) |
| int | get_whole_extent (p_teca_variant_array vals) const |
| void | set_whole_extent (const std::initializer_list< unsigned long > &l) |
| void | set_whole_extent (const unsigned long *vals) |
| int | get_whole_extent (unsigned long *vals) const |
| void | set_whole_extent (const unsigned long &val_1, const unsigned long &val_2, const unsigned long &val_3, const unsigned long &val_4, const unsigned long &val_5, const unsigned long &val_6) |
| void | set_extent (const std::vector< unsigned long > &vals) |
| int | get_extent (std::vector< unsigned long > &vals) const |
| void | set_extent (const p_teca_variant_array &vals) |
| int | get_extent (p_teca_variant_array vals) const |
| void | set_extent (const std::initializer_list< unsigned long > &l) |
| void | set_extent (const unsigned long *vals) |
| int | get_extent (unsigned long *vals) const |
| void | set_extent (const unsigned long &val_1, const unsigned long &val_2, const unsigned long &val_3, const unsigned long &val_4, const unsigned long &val_5, const unsigned long &val_6) |
| void | set_bounds (const std::vector< double > &vals) |
| int | get_bounds (std::vector< double > &vals) const |
| void | set_bounds (const p_teca_variant_array &vals) |
| int | get_bounds (p_teca_variant_array vals) const |
| void | set_bounds (const std::initializer_list< double > &l) |
| void | set_bounds (const double *vals) |
| int | get_bounds (double *vals) const |
| void | set_bounds (const double &val_1, const double &val_2, const double &val_3, const double &val_4, const double &val_5, const double &val_6) |
| void | set_periodic_in_x (const std::vector< int > &vals) |
| int | get_periodic_in_x (std::vector< int > &vals) const |
| void | set_periodic_in_x (const p_teca_variant_array &vals) |
| int | get_periodic_in_x (p_teca_variant_array vals) const |
| void | set_periodic_in_x (const std::initializer_list< int > &l) |
| void | set_periodic_in_x (const int *vals) |
| int | get_periodic_in_x (int *vals) const |
| void | set_periodic_in_x (const int &val_1) |
| int | get_periodic_in_x (int &val_1) const |
| void | set_periodic_in_y (const std::vector< int > &vals) |
| int | get_periodic_in_y (std::vector< int > &vals) const |
| void | set_periodic_in_y (const p_teca_variant_array &vals) |
| int | get_periodic_in_y (p_teca_variant_array vals) const |
| void | set_periodic_in_y (const std::initializer_list< int > &l) |
| void | set_periodic_in_y (const int *vals) |
| int | get_periodic_in_y (int *vals) const |
| void | set_periodic_in_y (const int &val_1) |
| int | get_periodic_in_y (int &val_1) const |
| void | set_periodic_in_z (const std::vector< int > &vals) |
| int | get_periodic_in_z (std::vector< int > &vals) const |
| void | set_periodic_in_z (const p_teca_variant_array &vals) |
| int | get_periodic_in_z (p_teca_variant_array vals) const |
| void | set_periodic_in_z (const std::initializer_list< int > &l) |
| void | set_periodic_in_z (const int *vals) |
| int | get_periodic_in_z (int *vals) const |
| void | set_periodic_in_z (const int &val_1) |
| int | get_periodic_in_z (int &val_1) const |
| unsigned long | get_number_of_points () const override |
| get the number of points in the mesh More... | |
| unsigned long | get_number_of_cells () const override |
| get the number of cells in the mesh More... | |
| void | set_m_x_coordinate_variable (const std::vector< std::string > &vals) |
| int | get_m_x_coordinate_variable (std::vector< std::string > &vals) const |
| void | set_m_x_coordinate_variable (const p_teca_variant_array &vals) |
| int | get_m_x_coordinate_variable (p_teca_variant_array vals) const |
| void | set_m_x_coordinate_variable (const std::initializer_list< std::string > &l) |
| void | set_m_x_coordinate_variable (const std::string *vals) |
| int | get_m_x_coordinate_variable (std::string *vals) const |
| void | set_m_x_coordinate_variable (const std::string &val_1) |
| int | get_m_x_coordinate_variable (std::string &val_1) const |
| void | set_m_y_coordinate_variable (const std::vector< std::string > &vals) |
| int | get_m_y_coordinate_variable (std::vector< std::string > &vals) const |
| void | set_m_y_coordinate_variable (const p_teca_variant_array &vals) |
| int | get_m_y_coordinate_variable (p_teca_variant_array vals) const |
| void | set_m_y_coordinate_variable (const std::initializer_list< std::string > &l) |
| void | set_m_y_coordinate_variable (const std::string *vals) |
| int | get_m_y_coordinate_variable (std::string *vals) const |
| void | set_m_y_coordinate_variable (const std::string &val_1) |
| int | get_m_y_coordinate_variable (std::string &val_1) const |
| void | set_u_x_coordinate_variable (const std::vector< std::string > &vals) |
| int | get_u_x_coordinate_variable (std::vector< std::string > &vals) const |
| void | set_u_x_coordinate_variable (const p_teca_variant_array &vals) |
| int | get_u_x_coordinate_variable (p_teca_variant_array vals) const |
| void | set_u_x_coordinate_variable (const std::initializer_list< std::string > &l) |
| void | set_u_x_coordinate_variable (const std::string *vals) |
| int | get_u_x_coordinate_variable (std::string *vals) const |
| void | set_u_x_coordinate_variable (const std::string &val_1) |
| int | get_u_x_coordinate_variable (std::string &val_1) const |
| void | set_u_y_coordinate_variable (const std::vector< std::string > &vals) |
| int | get_u_y_coordinate_variable (std::vector< std::string > &vals) const |
| void | set_u_y_coordinate_variable (const p_teca_variant_array &vals) |
| int | get_u_y_coordinate_variable (p_teca_variant_array vals) const |
| void | set_u_y_coordinate_variable (const std::initializer_list< std::string > &l) |
| void | set_u_y_coordinate_variable (const std::string *vals) |
| int | get_u_y_coordinate_variable (std::string *vals) const |
| void | set_u_y_coordinate_variable (const std::string &val_1) |
| int | get_u_y_coordinate_variable (std::string &val_1) const |
| void | set_v_x_coordinate_variable (const std::vector< std::string > &vals) |
| int | get_v_x_coordinate_variable (std::vector< std::string > &vals) const |
| void | set_v_x_coordinate_variable (const p_teca_variant_array &vals) |
| int | get_v_x_coordinate_variable (p_teca_variant_array vals) const |
| void | set_v_x_coordinate_variable (const std::initializer_list< std::string > &l) |
| void | set_v_x_coordinate_variable (const std::string *vals) |
| int | get_v_x_coordinate_variable (std::string *vals) const |
| void | set_v_x_coordinate_variable (const std::string &val_1) |
| int | get_v_x_coordinate_variable (std::string &val_1) const |
| void | set_v_y_coordinate_variable (const std::vector< std::string > &vals) |
| int | get_v_y_coordinate_variable (std::vector< std::string > &vals) const |
| void | set_v_y_coordinate_variable (const p_teca_variant_array &vals) |
| int | get_v_y_coordinate_variable (p_teca_variant_array vals) const |
| void | set_v_y_coordinate_variable (const std::initializer_list< std::string > &l) |
| void | set_v_y_coordinate_variable (const std::string *vals) |
| int | get_v_y_coordinate_variable (std::string *vals) const |
| void | set_v_y_coordinate_variable (const std::string &val_1) |
| int | get_v_y_coordinate_variable (std::string &val_1) const |
| void | set_m_z_coordinate_variable (const std::vector< std::string > &vals) |
| int | get_m_z_coordinate_variable (std::vector< std::string > &vals) const |
| void | set_m_z_coordinate_variable (const p_teca_variant_array &vals) |
| int | get_m_z_coordinate_variable (p_teca_variant_array vals) const |
| void | set_m_z_coordinate_variable (const std::initializer_list< std::string > &l) |
| void | set_m_z_coordinate_variable (const std::string *vals) |
| int | get_m_z_coordinate_variable (std::string *vals) const |
| void | set_m_z_coordinate_variable (const std::string &val_1) |
| int | get_m_z_coordinate_variable (std::string &val_1) const |
| void | set_w_z_coordinate_variable (const std::vector< std::string > &vals) |
| int | get_w_z_coordinate_variable (std::vector< std::string > &vals) const |
| void | set_w_z_coordinate_variable (const p_teca_variant_array &vals) |
| int | get_w_z_coordinate_variable (p_teca_variant_array vals) const |
| void | set_w_z_coordinate_variable (const std::initializer_list< std::string > &l) |
| void | set_w_z_coordinate_variable (const std::string *vals) |
| int | get_w_z_coordinate_variable (std::string *vals) const |
| void | set_w_z_coordinate_variable (const std::string &val_1) |
| int | get_w_z_coordinate_variable (std::string &val_1) const |
| void | set_t_coordinate_variable (const std::vector< std::string > &vals) |
| int | get_t_coordinate_variable (std::vector< std::string > &vals) const |
| void | set_t_coordinate_variable (const p_teca_variant_array &vals) |
| int | get_t_coordinate_variable (p_teca_variant_array vals) const |
| void | set_t_coordinate_variable (const std::initializer_list< std::string > &l) |
| void | set_t_coordinate_variable (const std::string *vals) |
| int | get_t_coordinate_variable (std::string *vals) const |
| void | set_t_coordinate_variable (const std::string &val_1) |
| int | get_t_coordinate_variable (std::string &val_1) const |
| p_teca_variant_array | get_m_x_coordinates () |
| p_teca_variant_array | get_m_y_coordinates () |
| const_p_teca_variant_array | get_m_x_coordinates () const |
| const_p_teca_variant_array | get_m_y_coordinates () const |
| p_teca_variant_array | get_u_x_coordinates () |
| p_teca_variant_array | get_u_y_coordinates () |
| const_p_teca_variant_array | get_u_x_coordinates () const |
| const_p_teca_variant_array | get_u_y_coordinates () const |
| p_teca_variant_array | get_v_x_coordinates () |
| p_teca_variant_array | get_v_y_coordinates () |
| const_p_teca_variant_array | get_v_x_coordinates () const |
| const_p_teca_variant_array | get_v_y_coordinates () const |
| p_teca_variant_array | get_m_z_coordinates () |
| const_p_teca_variant_array | get_m_z_coordinates () const |
| p_teca_variant_array | get_w_z_coordinates () |
| const_p_teca_variant_array | get_w_z_coordinates () const |
| p_teca_variant_array | get_t_coordinates () |
| const_p_teca_variant_array | get_t_coordinates () const |
| void | set_m_x_coordinates (const std::string &name, const p_teca_variant_array &a) |
| void | set_m_y_coordinates (const std::string &name, const p_teca_variant_array &a) |
| void | set_u_x_coordinates (const std::string &name, const p_teca_variant_array &a) |
| void | set_u_y_coordinates (const std::string &name, const p_teca_variant_array &a) |
| void | set_v_x_coordinates (const std::string &name, const p_teca_variant_array &a) |
| void | set_v_y_coordinates (const std::string &name, const p_teca_variant_array &a) |
| void | set_m_z_coordinates (const std::string &name, const p_teca_variant_array &a) |
| void | set_w_z_coordinates (const std::string &name, const p_teca_variant_array &a) |
| void | set_t_coordinates (const std::string &name, const p_teca_variant_array &a) |
| std::string | get_class_name () const override |
| int | get_type_code () const override |
| void | copy (const const_p_teca_dataset &other, allocator alloc=allocator::malloc) override |
| void | shallow_copy (const p_teca_dataset &other) override |
| void | copy_metadata (const const_p_teca_dataset &other) override |
| copy metadata. always a deep copy. More... | |
| void | swap (const p_teca_dataset &) override |
| swap internals of the two objects More... | |
| bool | empty () const noexcept override |
| int | to_stream (teca_binary_stream &) const override |
| serialize the dataset to the given stream for I/O or communication More... | |
| int | from_stream (teca_binary_stream &) override |
| deserialize the dataset from the given stream for I/O or communication More... | |
| int | to_stream (std::ostream &) const override |
| send to stream in a human readable representation More... | |
| virtual int | from_stream (teca_binary_stream &) |
| deserialize the dataset from the given stream for I/O or communication More... | |
| virtual int | from_stream (std::istream &) |
| read from stream in a human readable representation More... | |
Public Member Functions inherited from teca_mesh | |
| bool | empty () const noexcept override |
| return true if the dataset is empty. More... | |
| void | copy (const const_p_teca_dataset &other, allocator alloc=allocator::malloc) override |
| void | shallow_copy (const p_teca_dataset &other) override |
| void | append_arrays (const const_p_teca_mesh &) |
| void | shallow_append_arrays (const p_teca_mesh &) |
| void | swap (const p_teca_dataset &) override |
| swap internals of the two objects More... | |
| int | to_stream (teca_binary_stream &) const override |
| int | from_stream (teca_binary_stream &) override |
| deserialize the dataset from the given stream for I/O or communication More... | |
| int | to_stream (std::ostream &) const override |
| stream to/from human readable representation More... | |
| int | from_stream (std::istream &) override |
| read from stream in a human readable representation More... | |
| teca_mesh () | |
| void | set_temporal_bounds (const std::vector< double > &vals) |
| int | get_temporal_bounds (std::vector< double > &vals) const |
| void | set_temporal_bounds (const p_teca_variant_array &vals) |
| int | get_temporal_bounds (p_teca_variant_array vals) const |
| void | set_temporal_bounds (const std::initializer_list< double > &l) |
| void | set_temporal_bounds (const double *vals) |
| int | get_temporal_bounds (double *vals) const |
| void | set_temporal_bounds (const double &val_1, const double &val_2) |
| int | get_temporal_bounds (double &val_1, double &val_2) const |
| void | set_temporal_extent (const std::vector< unsigned long > &vals) |
| int | get_temporal_extent (std::vector< unsigned long > &vals) const |
| void | set_temporal_extent (const p_teca_variant_array &vals) |
| int | get_temporal_extent (p_teca_variant_array vals) const |
| void | set_temporal_extent (const std::initializer_list< unsigned long > &l) |
| void | set_temporal_extent (const unsigned long *vals) |
| int | get_temporal_extent (unsigned long *vals) const |
| void | set_temporal_extent (const unsigned long &val_1, const unsigned long &val_2) |
| int | get_temporal_extent (unsigned long &val_1, unsigned long &val_2) const |
| void | set_calendar (const std::vector< std::string > &vals) |
| int | get_calendar (std::vector< std::string > &vals) const |
| void | set_calendar (const p_teca_variant_array &vals) |
| int | get_calendar (p_teca_variant_array vals) const |
| void | set_calendar (const std::initializer_list< std::string > &l) |
| void | set_calendar (const std::string *vals) |
| int | get_calendar (std::string *vals) const |
| void | set_calendar (const std::string &val_1) |
| int | get_calendar (std::string &val_1) const |
| void | set_time_units (const std::vector< std::string > &vals) |
| int | get_time_units (std::vector< std::string > &vals) const |
| void | set_time_units (const p_teca_variant_array &vals) |
| int | get_time_units (p_teca_variant_array vals) const |
| void | set_time_units (const std::initializer_list< std::string > &l) |
| void | set_time_units (const std::string *vals) |
| int | get_time_units (std::string *vals) const |
| void | set_time_units (const std::string &val_1) |
| int | get_time_units (std::string &val_1) const |
| void | set_time_step (const unsigned long &val) |
| Set the temporal_extent to a single time step. More... | |
| int | get_time_step (unsigned long &val) const |
| void | set_time (const double &val) |
| Set the temporal bounds to a single time value. More... | |
| int | get_time (double &val) const |
| void | set_attributes (const std::vector< teca_metadata > &vals) |
| int | get_attributes (std::vector< teca_metadata > &vals) const |
| void | set_attributes (const p_teca_variant_array &vals) |
| int | get_attributes (p_teca_variant_array vals) const |
| void | set_attributes (const std::initializer_list< teca_metadata > &l) |
| void | set_attributes (const teca_metadata *vals) |
| int | get_attributes (teca_metadata *vals) const |
| void | set_attributes (const teca_metadata &val_1) |
| int | get_attributes (teca_metadata &val_1) const |
| p_teca_array_collection & | get_arrays (int centering) |
| const_p_teca_array_collection | get_arrays (int centering) const |
| p_teca_array_collection & | get_point_arrays () |
| const_p_teca_array_collection | get_point_arrays () const |
| p_teca_array_collection & | get_cell_arrays () |
| const_p_teca_array_collection | get_cell_arrays () const |
| p_teca_array_collection & | get_x_edge_arrays () |
| const_p_teca_array_collection | get_x_edge_arrays () const |
| p_teca_array_collection & | get_y_edge_arrays () |
| const_p_teca_array_collection | get_y_edge_arrays () const |
| p_teca_array_collection & | get_z_edge_arrays () |
| const_p_teca_array_collection | get_z_edge_arrays () const |
| p_teca_array_collection & | get_x_face_arrays () |
| const_p_teca_array_collection | get_x_face_arrays () const |
| p_teca_array_collection & | get_y_face_arrays () |
| const_p_teca_array_collection | get_y_face_arrays () const |
| p_teca_array_collection & | get_z_face_arrays () |
| const_p_teca_array_collection | get_z_face_arrays () const |
| p_teca_array_collection & | get_information_arrays () |
| const_p_teca_array_collection | get_information_arrays () const |
Public Member Functions inherited from teca_dataset | |
| virtual int | set_request_indices (const std::string &request_key, const unsigned long ids[2]) |
| virtual int | get_request_indices (unsigned long ids[2]) const |
| virtual int | get_request_index (unsigned long &index) const |
| virtual int | set_request_index (const std::string &request_key, unsigned long index) |
| operator bool () const noexcept | |
| virtual teca_metadata & | get_metadata () noexcept |
| get the dataset metadata More... | |
| virtual const teca_metadata & | get_metadata () const noexcept |
| get the dataset metadata More... | |
| virtual void | set_metadata (const teca_metadata &md) |
| set the dataset metadata More... | |
| void | set_index_request_key (const std::vector< std::string > &vals) |
| int | get_index_request_key (std::vector< std::string > &vals) const |
| void | set_index_request_key (const p_teca_variant_array &vals) |
| int | get_index_request_key (p_teca_variant_array vals) const |
| void | set_index_request_key (const std::initializer_list< std::string > &l) |
| void | set_index_request_key (const std::string *vals) |
| int | get_index_request_key (std::string *vals) const |
| void | set_index_request_key (const std::string &val_1) |
| int | get_index_request_key (std::string &val_1) const |
Static Public Member Functions | |
| static p_teca_arakawa_c_grid | New () |
Additional Inherited Members | |
Public Types inherited from teca_dataset | |
| using | allocator = teca_variant_array::allocator |
Public Attributes inherited from teca_mesh | |
| std::shared_ptr< impl_t > | m_impl |
Protected Member Functions inherited from teca_dataset | |
| teca_dataset (const teca_dataset &)=delete | |
| teca_dataset (const teca_dataset &&)=delete | |
| void | operator= (const p_teca_dataset &other)=delete |
| void | operator= (p_teca_dataset &&other)=delete |
Protected Attributes inherited from teca_dataset | |
| teca_metadata * | metadata |
A representation of mesh based data on an Arkawa C Grid.
The Arakawa C grid is defined by various combinations of horizontal and vertical centerings.
The horizontal centerings occur at so called mass or M points, U points, and V points. These centerings are depicted in the following diagram:
----—V----—
U M U
----—V----—
The horizontal coordinates are stored in 2d arrays. Assuming the mass coordinate arrays have dimension [nx, ny], then the U coordinate arrays have dimension [nx + 1, ny], and the V coordinate arrays have dimension [nx, ny + 1].
The vertical centerings occur at so called M points and W points. These centerings are depicted in the following diagram.
----—W----—
M ----—W----—
The vertical coordinates are stored in 1d arrays. Assuming the M vertical coordinate has the dimension [nz], then the W coordinate has dimension [nz + 1].
The 3d mesh dimensions can be obtained from mesh metadata, as well as coordinate array names, and array attributes describing the data type, units, etc.
Variables may exist on one of a number of permutations of horizontal and vertical centerings, array attributes contains the centering metadata.
See also: "A Description of the Advanced Research WRF Model Version 4", NCAR/TN-556+STR
"Grids in Numerical Weather and Climate Models" http://dx.doi.org/10.5772/55922
|
overridevirtual |
Deep copy data and metdata.
| [in] | other | The dataset to copy. |
| [in] | alloc | The allocator to use for alloctions of data structures to hold the copy. The default is a CPU based allocator. |
Reimplemented from teca_dataset.
|
overridevirtual |
copy metadata. always a deep copy.
Reimplemented from teca_dataset.
|
overridevirtualnoexcept |
Reimplemented from teca_dataset.
| virtual int teca_dataset::from_stream |
read from stream in a human readable representation
| virtual int teca_dataset::from_stream |
deserialize the dataset from the given stream for I/O or communication
|
overridevirtual |
deserialize the dataset from the given stream for I/O or communication
Reimplemented from teca_dataset.
|
overridevirtual |
get the number of cells in the mesh
Implements teca_mesh.
|
overridevirtual |
get the number of points in the mesh
Implements teca_mesh.
|
inlineoverridevirtual |
Implements teca_dataset.
|
inlineoverridevirtual |
virtual constructor. return a new dataset of the same type.
Implements teca_dataset.
|
inlineoverridevirtual |
Virtual shallow copy constructor. return a shallow copy of this dataset in a new instance. References to source data structures are taken, but metadata is always deep copied.
Implements teca_dataset.
|
overridevirtual |
Shallow copy data and metadata. The shallow copy takes references to the source data structures. Metadata is always deep copied.
| [in] | other | The dataset to copy. |
Reimplemented from teca_dataset.
|
overridevirtual |
swap internals of the two objects
Reimplemented from teca_dataset.
|
overridevirtual |
send to stream in a human readable representation
Reimplemented from teca_dataset.
|
overridevirtual |
serialize the dataset to the given stream for I/O or communication
Reimplemented from teca_dataset.