All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Friends
o2scl::table3d Class Reference

A data structure containing many slices of two-dimensional data points defined on a grid. More...

Detailed Description

Idea for Future:

Improve interpolation and derivative caching

Make a 'const' version of the interpolation functions

Should there be a clear_grid() function separate from clear_data() and clear_table()?

Allow the user to more clearly probe 'size_set' vs. 'xy_set'?

Definition at line 76 of file table3d.h.

#include <table3d.h>

Public Types

typedef
boost::numeric::ublas::vector
< double > 
ubvector
 
typedef
boost::numeric::ublas::matrix
< double > 
ubmatrix
 
typedef
boost::numeric::ublas::matrix_row
< ubmatrix
ubmatrix_row
 
typedef
boost::numeric::ublas::matrix_column
< ubmatrix
ubmatrix_column
 

Public Member Functions

 table3d ()
 Create a new 3D table.
 
 table3d (o2scl::table_units<> &t, std::string colx, std::string coly)
 Create a table3d object from a table, assuming scolx and scoly store the x- and y-grid data, respectively.
 
bool is_size_set () const
 True if the size of the table has been set.
 
bool is_xy_set () const
 True if the grid has been set.
 
virtual const char * type ()
 Return the type, "table3d".
 
Initialization
template<class vec_t , class vec2_t >
void set_xy (std::string x_name, size_t nx, const vec_t &x, std::string y_name, size_t ny, const vec2_t &y)
 Initialize the x-y grid. More...
 
void set_xy (std::string x_name, uniform_grid< double > gx, std::string y_name, uniform_grid< double > gy)
 Initialize the x-y grid with uniform_grid objects. More...
 
void set_size (size_t nx, size_t ny)
 Initialize table size. More...
 
On-grid get and set methods
void set (size_t ix, size_t iy, std::string name, double val)
 Set element in slice name at location ix,iy to value val.
 
void set (size_t ix, size_t iy, size_t z, double val)
 Set element in slice of index z at location ix,iy to value val .
 
double & get (size_t ix, size_t iy, std::string name)
 Get element in slice name at location ix,iy
 
const double & get (size_t ix, size_t iy, std::string name) const
 Get element in slice name at location ix,iy (const version)
 
double & get (size_t ix, size_t iy, size_t z)
 Get element in slice of index z at location ix,iy
 
const double & get (size_t ix, size_t iy, size_t z) const
 Get element in slice of index z at location ix,iy (const version)
 
Off-grid get and set methods

These methods return the value of a slice on the grid point nearest to a user-specified location. For interpolation into a point off the grid, use table3d::interp().

void set_val (double x, double y, std::string name, double val)
 Set element in slice name at the nearest location to x,y to value val.
 
void set_val (double x, double y, size_t z, double val)
 Set element in slice of index z at the nearest location to x,y to value val.
 
double & get_val (double x, double y, std::string name)
 Get element in slice name at location closest to x,y
 
const double & get_val (double x, double y, std::string name) const
 Get element in slice name at location closest to x,y
 
double & get_val (double x, double y, size_t z)
 Get element in slice of index z at location closest to x,y
 
const double & get_val (double x, double y, size_t z) const
 Get element in slice of index z at location closest to x,y
 
template<class vec_t >
void set_slices (double x, double y, size_t nv, vec_t &vals)
 Set elements in the first nv slices at the nearest location to x,y to value val.
 
template<class vec_t >
void get_slices (double x, double y, size_t nv, vec_t &v)
 Get the data for every slice at the nearest location to x,y
 
Off-grid get and set methods returning nearest point
void set_val_ret (double &x, double &y, std::string name, double val)
 Set element in slice name at the nearest location to x,y to value val.
 
void set_val_ret (double &x, double &y, size_t z, double val)
 Set element in slice of index z at the nearest location to x,y to value val.
 
double & get_val_ret (double &x, double &y, std::string name)
 Get element in slice name at location closest to x,y, and also return the corresponding values of x and y.
 
const double & get_val_ret (double &x, double &y, std::string name) const
 Get element in slice name at location closest to x,y, and also return the corresponding values of x and y.
 
double & get_val_ret (double &x, double &y, size_t z)
 Get element in slice of index z at location closest to x,y, and also return the corresponding values of x and y.
 
const double & get_val_ret (double &x, double &y, size_t z) const
 Get element in slice of index z at location closest to x,y, and also return the corresponding values of x and y.
 
void add_slice_from_table (table3d &source, std::string slice, std::string dest_slice="")
 Desc.
 
template<class vec_t >
void set_slices_ret (double &x, double &y, size_t nv, vec_t &vals)
 Set elements in the first nv slices at the nearest location to x,y to values vals.
 
template<class vec_t >
void get_slices_ret (double &x, double &y, size_t nv, vec_t &vals)
 Get elements in the first nv slices at the nearest location to x,y to value val.
 
Grid information get and set methods
void set_grid_x (size_t ix, double val)
 Set x grid point at index ix.
 
void set_grid_y (size_t iy, double val)
 Set y grid point at index iy.
 
double get_grid_x (size_t ix)
 Get x grid point at index ix.
 
double get_grid_y (size_t iy)
 Get y grid point at index iy.
 
std::string get_x_name () const
 Get the name of the x grid variable.
 
std::string get_y_name () const
 Get the name of the y grid variable.
 
void set_x_name (std::string name)
 Set the name of the x grid variable.
 
void set_y_name (std::string name)
 Set the name of the y grid variable.
 
const ubvectorget_x_data () const
 Get a const reference to the full x grid.
 
const ubvectorget_y_data () const
 Get a const reference to the full y grid.
 
Size get methods
void get_size (size_t &nx, size_t &ny) const
 Get the size of the slices.
 
size_t get_nx () const
 Get the x size.
 
size_t get_ny () const
 Get the y size.
 
size_t get_nslices () const
 Get the number of slices.
 
Slice manipulation
void line_of_names (std::string names)
 Create a set of new slices specified in the string names.
 
std::string get_slice_name (size_t z) const
 Returns the name of slice with index z.
 
void new_slice (std::string name)
 Add a new slice.
 
void set_slice_all (std::string name, double val)
 Set all of the values in slice name to val.
 
size_t lookup_slice (std::string name) const
 Find the index for column named name.
 
bool is_slice (std::string name, size_t &ix) const
 Return true if slice is already present.
 
void rename_slice (std::string olds, std::string news)
 Rename slice named olds to news. More...
 
void copy_slice (std::string src, std::string dest)
 Make a new slice named dest which is a copy of the slice with name given in src.
 
void init_slice (std::string scol, double val)
 Initialize all values of slice named scol to val. More...
 
const ubmatrixget_slice (std::string scol) const
 Return a constant reference to a slice.
 
const ubmatrixget_slice (size_t iz) const
 Return a constant reference to a slice.
 
ubmatrixget_slice (std::string scol)
 Return a constant reference to a slice.
 
ubmatrixget_slice (size_t iz)
 Return a constant reference to a slice.
 
const std::vector< ubmatrix > & get_data ()
 Return a constant reference to all the slice data. More...
 
Lookup and search methods
void lookup_x (double val, size_t &ix) const
 Look for a value in the x grid.
 
void lookup_y (double val, size_t &iy) const
 Look for a value in the y grid.
 
void lookup (double val, std::string slice, size_t &ix, size_t &iy) const
 Look for a value in a specified slice.
 
Interpolation, differentiation, and integration
void set_interp_type (size_t interp_type)
 Specify the interpolation type.
 
size_t get_interp_type () const
 Get the interpolation type.
 
double interp (double x, double y, std::string name)
 Interpolate x and y in slice named name.
 
double deriv_x (double x, double y, std::string name)
 Interpolate the derivative of the data with respect to the x grid at point x and y in slice named name.
 
double deriv_y (double x, double y, std::string name)
 Interpolate the derivative of the data with respect to the y grid at point x and y in slice named name.
 
double deriv_xy (double x, double y, std::string name)
 Interpolate the mixed second derivative of the data at point x and y in slice named name.
 
double integ_x (double x1, double x2, double y, std::string name)
 Interpolate the integral of the data respect to the x grid.
 
double integ_y (double x, double y1, double y2, std::string name)
 Interpolate the integral of the data respect to the y grid.
 
template<class vec_t >
void interp_slices (double x, double y, size_t nv, vec_t &v)
 Fill a vector of interpolated values from each slice at the point x,y
 
Extract 2-dimensional tables
void extract_x (double x, table<> &t)
 Extract a table at a fixed x grid point. More...
 
void extract_y (double y, table<> &t)
 Extract a table at a fixed y grid point. More...
 
Clear methods
void zero_table ()
 Zero the data entries but keep the slice names and grid.
 
void clear_table ()
 Clear the table and the slice names.
 
void clear_data ()
 Remove all of the data by setting the number of lines to zero. More...
 
Summary method
void summary (std::ostream *out, int ncol=79) const
 Output a summary of the information stored. More...
 
Contour lines method
template<class vec_t >
void slice_contours (std::string name, size_t nlev, vec_t &levs, std::vector< contour_line > &clines)
 Create contour lines from the slice named name. More...
 
Manipulating constants
virtual void add_constant (std::string name, double val)
 Add a constant.
 
virtual void remove_constant (std::string name)
 Remove a constant.
 
virtual void set_constant (std::string name, double val)
 Add a constant.
 
virtual double get_constant (std::string name)
 Get a constant.
 
virtual void get_constant (size_t ix, std::string &name, double &val) const
 Get a constant by index.
 
virtual size_t get_nconsts () const
 Get the number of constants.
 
Parsing mathematical functions specified as strings
void function_slice (std::string formula, std::string col)
 Make a column from formula and add it to the table. More...
 

Protected Types

Iterator types
typedef std::map< std::string,
size_t, string_comp >
::iterator 
map_iter
 
typedef std::map< std::string,
size_t, string_comp >
::const_iterator 
map_const_iter
 

Protected Member Functions

void set_fp_consts (FunctionParser &fp) const
 Internal function to set function parser constants equal to internal constants.
 
Tree iterator boundaries
map_iter begin ()
 Return the beginning of the slice tree.
 
map_iter end ()
 Return the end of the slice tree.
 
map_const_iter const_begin () const
 Return the beginning of the slice tree.
 
map_const_iter const_end () const
 Return the end of the slice tree.
 

Protected Attributes

size_t itype
 
Interpolation data
interp_vec< ubvector > ** si
 The array of interp_sm pointers.
 
ubmatrix_column ** aci
 Matrices for interpolation.
 
Data storage
std::map< std::string, double > constants
 The list of constants.
 
size_t numx
 The size of the x grid.
 
size_t numy
 The size of the y grid.
 
std::map< std::string, size_t,
string_comp
tree
 A tree connecting column names to list indexes.
 
std::string xname
 The name for the x grid.
 
std::string yname
 The name for the y grid.
 
std::vector< ubmatrixlist
 The pointers to the matrices.
 
ubvector xval
 The x grid.
 
ubvector yval
 The y grid.
 
bool xy_set
 True if the grid has been set.
 
bool size_set
 True if the size of the grid has been set.
 
bool has_slice
 True if the table has at least one slice.
 

Friends

void o2scl_hdf::hdf_output (o2scl_hdf::hdf_file &hf, table3d &t, std::string name)
 
void o2scl_hdf::hdf_input (o2scl_hdf::hdf_file &hf, table3d &t, std::string name)
 

Member Function Documentation

void o2scl::table3d::clear_data ( )

This leaves the column names intact and does not remove the constants.

void o2scl::table3d::extract_x ( double  x,
table<> &  t 
)
Note
All of the information previously stored in t will be lost.
void o2scl::table3d::extract_y ( double  y,
table<> &  t 
)
Note
All of the information previously stored in t will be lost.
void o2scl::table3d::function_slice ( std::string  formula,
std::string  col 
)

If the column already exists, the data already present is overwritten with the result.

const std::vector<ubmatrix>& o2scl::table3d::get_data ( )
void o2scl::table3d::init_slice ( std::string  scol,
double  val 
)
Note
This will call the error handler if the value val is not finite (i.e. either Inf or NaN).
void o2scl::table3d::rename_slice ( std::string  olds,
std::string  news 
)

This is slow since we have to delete the column and re-insert it. This process in turn mangles all of the iterators in the list.

void o2scl::table3d::set_size ( size_t  nx,
size_t  ny 
)

This function will not allow you to resize the table if it already has data or if the size has already been set with the set_xy() function, unless you clear the data with clear_data() or the table with clear_table() first.

template<class vec_t , class vec2_t >
void o2scl::table3d::set_xy ( std::string  x_name,
size_t  nx,
const vec_t &  x,
std::string  y_name,
size_t  ny,
const vec2_t &  y 
)
inline

This function will not allow you to redefine the grid when there is data in the table if a grid of a different size was already set from a previous call to either set_xy() or set_size(). However, you may freely redefine the grid after a call to clear_data() or clear_table(). You may change individual grid points at any time with set_grid_x() and set_grid_y().

Definition at line 109 of file table3d.h.

void o2scl::table3d::set_xy ( std::string  x_name,
uniform_grid< double >  gx,
std::string  y_name,
uniform_grid< double >  gy 
)
inline

This function will not allow you to redefine the grid when there is data in the table if a grid of a different size was already set from a previous call to either set_xy() or set_size(). However, you may freely redefine the grid after a call to clear_data() or clear_table(). You may change individual grid points at any time with set_grid_x() and set_grid_y().

Definition at line 144 of file table3d.h.

template<class vec_t >
void o2scl::table3d::slice_contours ( std::string  name,
size_t  nlev,
vec_t &  levs,
std::vector< contour_line > &  clines 
)
inline

This uses contour to compute contour lines (stored in clines) from slice name given nlev contour levels in levs .

Definition at line 685 of file table3d.h.

void o2scl::table3d::summary ( std::ostream *  out,
int  ncol = 79 
) const

Outputs the number of constants, the grid information, and a list of the slice names


The documentation for this class was generated from the following file:

Documentation generated with Doxygen. Provided under the GNU Free Documentation License (see License Information).
Hosted at Get Object-oriented Scientific Computing
Lib at SourceForge.net. Fast, secure and Free Open Source software
downloads..