Class prob_dens_mdim_amr (o2scl)¶
-
template<class
vec_t
= std::vector<double>, classmat_t
= const_matrix_view_table<vec_t>>
classo2scl
::
prob_dens_mdim_amr
: public o2scl::prob_dens_mdim<std::vector<double>>¶ Probability distribution from an adaptive mesh created using a matrix of points.
- Idea for Future:
The storage required by the mesh is larger than necessary, and could be replaced by a tree-like structure which uses less storage, but that might demand longer lookup times.
- Note
This class is experimental.
Dimension choice setting
-
int
dim_choice
¶ Method for choosing dimension to slice.
-
bool
allow_resampling
¶ Desc.
-
size_t
n_dim
¶ Number of dimensions.
-
int
verbose
¶ Verbosity parameter.
-
const int
max_variance
= 1¶ Choose dimension with maximum variance.
-
const int
user_scale
= 2¶ Choose dimension with maximum variance with user-specified scale.
-
const int
random
= 3¶ Choose randomly.
-
void
two_indices_to_density
(size_t i, size_t j, table3d &t3d, std::string slice)¶ Convert two indices to a density in a o2scl::table3d object.
This function presumes that the o2scl::table3d grid has already been created and uses it to create the density. Note that this function will not warn you if the grid refers to points outside the limits of the o2scl::prob_dens_mdim_amr object, instead it will just give zero for those points.
-
void
clear
()¶ Clear everything and set the dimensionality to zero.
-
void
clear_mesh
()¶ Clear the mesh, leaving the lower and upper limits and the scales unchanged.
-
void
copy_to_vectors
(size_t &nd, size_t &dc, size_t &ms, std::vector<double> &data, std::vector<size_t> &insides)¶ Copy the object data to three size_t numbers and two vectors.
- Note
This function is used for HDF5 I/O
-
void
set_from_vectors
(size_t &nd, size_t &dc, size_t &ms, const std::vector<double> &data, const std::vector<size_t> &insides)¶ Set the object from data specified as three size_t numbers and a set of two vectors.
- Note
This function is used for HDF5 I/O
-
void
set
(vec_t &l, vec_t &h)¶ Set the mesh limits.
This function is called by the constructor.
- Note
Calling this function automatically clears the mesh and the scales.
-
void
insert
(size_t ir, mat_t &m, bool log_mode = false)¶ Insert point at row
ir
, creating a new hypercube for the new point.
-
void
initial_parse
(mat_t &m, bool log_mode = false)¶ Parse the matrix
m
, creating a new hypercube for every point.
-
void
initial_parse_new
(mat_t &m)¶ Parse the matrix
m
, creating a new hypercube for every point, ensuring hypercubes are more optimally arranged.This algorithm is slower, but may result in more balanced meshes, particularly when dim_choice is not equal to
random
.- Idea for Future:
This method computes distances twice, once here and once in the insert() function. There is likely a faster approach.
-
void
weight_is_inv_volume
()¶ Set the weight in each hypercube equal to the inverse of the volume (the density)
-
double
total_volume
()¶ Check the total volume by adding up the fractional part of the volume in each hypercube.
-
double
total_weighted_volume
()¶ Check the total volume by adding up the fractional part of the volume in each hypercube.
-
const hypercube &
find_hc
(const vec_t &x) const¶ Return a reference to the hypercube containing the specified point.
-
double
max_weight
() const¶ Desc.
-
double
max_frac_vol
() const¶ Desc.
-
double
max_weighted_vol
() const¶ Desc.
Public Functions
-
prob_dens_mdim_amr
()¶ Create an empty probability distribution.
-
class
hypercube
¶ A hypercube class for o2scl::prob_dens_mdim_amr.