table3d Class Reference

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

#include <table3d.h>


Detailed Description

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

Idea for future:
Improve interpolation and derivative caching
Idea for future:
Make a 'const' version of the interpolation functions

Definition at line 53 of file table3d.h.


Public Member Functions

 table3d ()
 Create a new 3D table .
virtual const char * type ()
 Return the type, "table3d".
Initialization
template<class vec2_t >
int set_xy (std::string x_name, size_t nx, const vec2_t &x, std::string y_name, size_t ny, const vec2_t &y)
 Initialize the x-y grid.
int set_size (size_t nx, size_t ny)
 Initialize table size.
On-grid get and set methods
int set (size_t ix, size_t iy, std::string name, double val)
 Set element in slice name at location ix,iy to value val.
int 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().

int 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.
int 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, and also return the corresponding values of x and y.
const double & get_val (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 (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 (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.
template<class vec_t >
int 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 , class alloc_t >
int get_point (double x, double y, vec_t &v)
 Get all the slice data from a point.
Off-grid get and set methods returning nearest point
int 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.
int 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.
template<class vec_t >
int 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 value val.
Grid information get and set methods
int set_grid_x (size_t ix, double val)
 Set x grid point at index ix.
int 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 ()
 Get the name of the x grid variable.
std::string get_y_name ()
 Get the name of the y grid variable.
int set_x_name (std::string name)
 Set the name of the x grid variable.
int set_y_name (std::string name)
 Set the name of the y grid variable.
const ovectorget_x_data () const
 Get a const reference to the full x grid.
const ovectorget_y_data () const
 Get a const reference to the full y grid.
Size get methods
int get_size (size_t &nx, size_t &ny) const
 Get the size of each slice.
int get_nx () const
 Get the x size.
int get_ny () const
 Get the y size.
int get_nslices () const
 Get the number of slices.
Slice manipulation
int line_of_names (std::string names)
 Create a set of new slices specified in the string names.
std::string get_slice_name (size_t col) const
 Returns the name of slice with index col.
int new_slice (std::string name)
 Add a new column owned by the table .
int lookup_slice (std::string name, size_t &ix) const
 Find the index for column named name.
bool is_slice (std::string name, int &ix)
 Return true if slice is already present.
int rename_slice (std::string olds, std::string news)
 Rename slice named olds to news.
int copy_slice (std::string src, std::string dest)
 Make a new column named dest equal to src.
int init_slice (std::string scol, double val)
 Initialize all values of slice named scol to val.
const omatrixget_slice (std::string scol) const
 Return a constant reference to a slice.
const omatrixget_slice (size_t iz) const
 Return a constant reference to a slice.
const std::vector< omatrix > & get_data () const
 Return a constant reference to all the slice data.
Lookup and search methods
int lookup_x (double val, size_t &ix) const
 Look for a value in the x grid.
int lookup_y (double val, size_t &iy) const
 Look for a value in the y grid.
int lookup (double val, std::string slice, size_t &ix, size_t &iy) const
 Look for a value in the grid.
Interpolation, differentiation, and integration
int set_interp (base_interp_mgr< ovector_const_view > &b1, base_interp_mgr< ovector_const_subvector > &b2)
 Specify the base interpolation objects to use.
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.
Extract 2-dimensional tables
int extract_x (double x, table &t)
 Extract a table at a fixed x grid point.
int extract_y (double y, table &t)
 Extract a table at a fixed y grid point.
Clear methods
int zero_table ()
 Zero the data entries but keep the column names and nlines fixed.
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.
Summary method
int summary (std::ostream *out, int ncol=79) const
 Output a summary of the information stored.
Manipulating constants
virtual int add_constant (std::string name, double val)
 Add a constant.
virtual int remove_constant (std::string name)
 Remove a constant.
virtual int set_constant (std::string name, double val)
 Add a constant.
virtual double get_constant (std::string name)
 Get a constant.

Data Fields

Default interpolation objects
def_interp_mgr
< ovector_const_view,
cspline_interp
dim1
def_interp_mgr
< ovector_const_subvector,
cspline_interp
dim2

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

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

Interpolation data
base_interp_mgr
< ovector_const_view > * 
bimp1
 The base interpolation object.
base_interp_mgr
< ovector_const_subvector > * 
bimp2
 The subvector base interpolation object.
sm_interp_vec ** si
 The array of sm_interp_vec pointers.
omatrix_col ** 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< omatrixlist
 The pointers to the matrices.
ovector xval
 The x grid.
ovector 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.

Member Function Documentation

void clear_data (  ) 

Remove all of the data by setting the number of lines to zero.

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

int init_slice ( std::string  scol,
double  val 
)

Initialize all values of slice named scol to val.

Note that this does not initialize elements beyond nlines so that if the number of rows is increased afterwards, the new rows will have uninitialized values.

int rename_slice ( std::string  olds,
std::string  news 
)

Rename slice named olds to 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.

int set_size ( size_t  nx,
size_t  ny 
)

Initialize table size.

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.

int set_xy ( std::string  x_name,
size_t  nx,
const vec2_t &  x,
std::string  y_name,
size_t  ny,
const vec2_t &  y 
) [inline]

Initialize the x-y grid.

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 77 of file table3d.h.

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

Output a summary of the information stored.

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 and provided under the GNU Free Documentation License. See License Information for details.

Project hosting provided by SourceForge.net Logo, O2scl Sourceforge Project Page