stk::search Namespace Reference


Classes

struct  FactoryOrder
struct  SetInsertBuffer
class  ProximitySearch

Namespaces

namespace  bih
namespace  box
namespace  ident

Functions

template<class DomainBoundingBox, class RangeBoundingBox>
bool oct_tree_bih_tree_proximity_search (ParallelMachine arg_comm, const float *const arg_global_box, const size_t arg_domain_boxes_number, const DomainBoundingBox *const arg_domain_boxes, const size_t arg_range_boxes_number, const RangeBoundingBox *const arg_range_boxes, const OctTreeKey *const arg_cuts, std::vector< std::pair< typename DomainBoundingBox::Key, typename RangeBoundingBox::Key > > &arg_relation, unsigned *const arg_search_tree_stats=NULL)
template<class RangeBoundingVolume, class DomainBoundingVolume>
bool parallel_bihtree_search (std::vector< std::pair< typename DomainBoundingVolume::Key, typename RangeBoundingVolume::Key > > &domain_to_range_keys, const std::vector< RangeBoundingVolume > &range, const std::vector< DomainBoundingVolume > &domain, const FactoryOrder &order)
template<class RangeBoundingVolume, class DomainBoundingVolume>
bool coarse_search_bihtree (std::vector< std::pair< typename DomainBoundingVolume::Key, typename RangeBoundingVolume::Key > > &domain_to_range_keys, const std::vector< RangeBoundingVolume > &range, const std::vector< DomainBoundingVolume > &domain, const FactoryOrder &order)
template<class RangeBoundingVolume, class DomainBoundingVolume>
bool coarse_search_octree (std::vector< std::pair< typename DomainBoundingVolume::Key, typename RangeBoundingVolume::Key > > &domain_to_range_keys, const std::vector< RangeBoundingVolume > &range, const std::vector< DomainBoundingVolume > &domain, const FactoryOrder &order)
template<class RangeBoundingVolume, class DomainBoundingVolume>
bool coarse_search (std::vector< std::pair< typename DomainBoundingVolume::Key, typename RangeBoundingVolume::Key > > &domain_to_range_keys, const std::vector< RangeBoundingVolume > &range, const std::vector< DomainBoundingVolume > &domain, const FactoryOrder &order)
unsigned int log2 (unsigned int x)
bool hsfc_box_covering (const float *const global_box, const float *const small_box, OctTreeKey *const covering, unsigned &number, double scale)
 Generate an oct-tree covering of a small box within a global box.
void accumulate_weights (const stk::OctTreeKey &k_node_p, const stk::OctTreeKey &k_first_p, const unsigned ord_end, const unsigned depth, float *const weights)
void oct_key_split (const stk::OctTreeKey &key, const unsigned upper_ord, stk::OctTreeKey &key_upper)
void partition (const stk::OctTreeKey &k_first, const unsigned i_end, const stk::OctTreeKey &key, const unsigned depth, const float *weights, const double tolerance, const double target_ratio, double w_lower, double w_upper, stk::OctTreeKey &k_upper)
unsigned processor (const stk::OctTreeKey *const cuts_b, const stk::OctTreeKey *const cuts_e, const stk::OctTreeKey &key)
void oct_tree_partition_private (const unsigned p_first, const unsigned p_end, const unsigned depth, const double tolerance, float *const weights, const unsigned cuts_length, OctTreeKey *const cuts)
 A recursive kernel used within the oct_tree_partitioning algorithms.
template<class DomainBoundingBox, class RangeBoundingBox>
void search_tree_statistics (stk::ParallelMachine arg_comm, const std::map< stk::OctTreeKey, std::pair< std::list< DomainBoundingBox >, std::list< RangeBoundingBox > > > &s, unsigned *const data)
template<class DomainBoundingBox, class RangeBoundingBox>
void box_global_bounds (ParallelMachine arg_comm, const size_t arg_domain_boxes_number, const DomainBoundingBox *const arg_domain_boxes, const size_t arg_range_boxes_number, const RangeBoundingBox *const arg_range_boxes, float *const arg_global_box)
 Global bounds for a set of boxes.
template<class DomainBoundingBox, class RangeBoundingBox>
void proximity_search_asymmetric (const typename std::map< stk::OctTreeKey, std::pair< std::list< DomainBoundingBox >, std::list< RangeBoundingBox > > >::const_iterator i_beg, const typename std::map< stk::OctTreeKey, std::pair< std::list< DomainBoundingBox >, std::list< RangeBoundingBox > > >::const_iterator i_end, SetInsertBuffer< std::set< std::pair< typename DomainBoundingBox::Key, typename RangeBoundingBox::Key > > > &arg_out)
template<class DomainBoundingBox, class RangeBoundingBox>
void pack (CommAll &comm_all, const stk::OctTreeKey *const cuts_b, const std::map< stk::OctTreeKey, std::pair< std::list< DomainBoundingBox >, std::list< RangeBoundingBox > > > &send_tree, std::map< stk::OctTreeKey, std::pair< std::list< DomainBoundingBox >, std::list< RangeBoundingBox > > > *recv_tree)
template<class DomainBoundingBox, class RangeBoundingBox>
void unpack (CommAll &comm_all, std::map< stk::OctTreeKey, std::pair< std::list< DomainBoundingBox >, std::list< RangeBoundingBox > > > &tree)
template<class DomainBoundingBox, class RangeBoundingBox>
bool communicate (stk::ParallelMachine arg_comm, const stk::OctTreeKey *const arg_cuts, const std::map< stk::OctTreeKey, std::pair< std::list< DomainBoundingBox >, std::list< RangeBoundingBox > > > &send_tree, std::map< stk::OctTreeKey, std::pair< std::list< DomainBoundingBox >, std::list< RangeBoundingBox > > > &recv_tree, const bool local_flag)
template<class DomainBoundingBox, class RangeBoundingBox>
void communicate (stk::ParallelMachine arg_comm, const std::set< std::pair< typename DomainBoundingBox::Key, typename RangeBoundingBox::Key > > &send_relation, std::set< std::pair< typename DomainBoundingBox::Key, typename RangeBoundingBox::Key > > &recv_relation)
template<class DomainBoundingBox, class RangeBoundingBox>
void oct_tree_partition (stk::ParallelMachine arg_comm, const std::map< stk::OctTreeKey, std::pair< std::list< DomainBoundingBox >, std::list< RangeBoundingBox > > > &arg_tree, const double arg_tolerance, std::vector< stk::OctTreeKey > &arg_cuts)
template<class DomainBoundingBox, class RangeBoundingBox>
void proximity_search_work (TPI_Work *work)
template<class DomainBoundingBox, class RangeBoundingBox>
bool oct_tree_proximity_search (ParallelMachine arg_comm, const float *const arg_global_box, const size_t arg_domain_boxes_number, const DomainBoundingBox *const arg_domain_boxes, const size_t arg_range_boxes_number, const RangeBoundingBox *const arg_range_boxes, const OctTreeKey *const arg_cuts, std::vector< std::pair< typename DomainBoundingBox::Key, typename RangeBoundingBox::Key > > &arg_relation, unsigned *const arg_search_tree_stats=NULL)
 Search for intersection of domain boxes with range boxes within a given global bounding box.


Function Documentation

bool stk::search::hsfc_box_covering ( const float *const   global_box,
const float *const   small_box,
OctTreeKey *const   covering,
unsigned &  number,
double  scale 
)

Generate an oct-tree covering of a small box within a global box.

The cartesian space is mapped to an oct-tree via Hilbert space filling curve. The covering consists of 1..8 oct-tree cells, the 'covering' array must be dimensioned to at least eight. Returns true for a "good" small box: it a non-negative volume and is fully contained within the global box.

Definition at line 66 of file OctTreeOps.cpp.

void stk::search::oct_tree_partition_private ( const unsigned  p_first,
const unsigned  p_end,
const unsigned  depth,
const double  tolerance,
float *const   weights,
const unsigned  cuts_length,
OctTreeKey *const   cuts 
)

A recursive kernel used within the oct_tree_partitioning algorithms.

Exposed to support unit testing.

Definition at line 449 of file OctTreeOps.cpp.

template<class DomainBoundingBox, class RangeBoundingBox>
void stk::search::box_global_bounds ( ParallelMachine  arg_comm,
const size_t  arg_domain_boxes_number,
const DomainBoundingBox *const   arg_domain_boxes,
const size_t  arg_range_boxes_number,
const RangeBoundingBox *const   arg_range_boxes,
float *const   arg_global_box 
)

Global bounds for a set of boxes.

The lower bound is the minimum of all boxes, decreased by epsilon. The upper bound is the maximum of all boxes, increased by epsilon. Thus all input boxes are fully contained within the global box.

Definition at line 138 of file OctTreeOps.hpp.

template<class DomainBoundingBox, class RangeBoundingBox>
bool stk::search::oct_tree_proximity_search ( ParallelMachine  arg_comm,
const float *const   arg_global_box,
const size_t  arg_domain_boxes_number,
const DomainBoundingBox *const   arg_domain_boxes,
const size_t  arg_range_boxes_number,
const RangeBoundingBox *const   arg_range_boxes,
const OctTreeKey *const   arg_cuts,
std::vector< std::pair< typename DomainBoundingBox::Key, typename RangeBoundingBox::Key > > &  arg_relation,
unsigned *const   arg_search_tree_stats = NULL 
)

Search for intersection of domain boxes with range boxes within a given global bounding box.

Output vector of matches with a domain or range box on the local processor.

If 'arg_cuts' is given it will be used for the parallel search. If 'arg_cuts == NULL' then a balanced internal partitioning will be generated.

The search_tree_stats are for the local search: [0] = minimum search tree domain cell size [1] = maximum search tree domain cell size [2] = average search tree domain cell size [3] = minimum search tree range cell size [4] = maximum search tree range cell size [5] = average search tree range cell size These statistics require an extra communication to gather.

Returns 'true' if all small boxes on all processors had non-negative volumes and were fully contained within the global box.

Definition at line 856 of file OctTreeOps.hpp.


Generated on Wed Jul 14 14:32:59 2010 for Sierra Toolkit by  doxygen 1.4.7