Main Page | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

SAMRAI::mesh::BergerRigoutsos< DIM > Class Template Reference

BergerRigoutsos<DIM> provides operations that construct boxes to cover a collection of tagged cells on a single AMR hierarchy patch level. This class is derived from the abstract base class BoxGeneratorStrategy<DIM>. Thus, it serves as a concrete implementation of the box generator Strategy pattern interface. More...

#include <source/mesh/clustering/BergerRigoutsos.h>

Inheritance diagram for SAMRAI::mesh::BergerRigoutsos< DIM >:

Inheritance graph
[legend]
List of all members.

Public Member Functions

virtual ~BergerRigoutsos ()
 BergerRigoutsos ()
void findBoxesContainingTags (hier::BoxList< DIM > &boxes, const tbox::Pointer< hier::PatchLevel< DIM > > level, const int index, const int tag_val, const hier::Box< DIM > &bound_box, const hier::IntVector< DIM > &min_box, const double efficiency_tol, const double combine_tol) const

Static Public Member Functions

static void setClusteringOption (const string &method=string())

Detailed Description

template<int DIM>
class SAMRAI::mesh::BergerRigoutsos< DIM >

BergerRigoutsos<DIM> provides operations that construct boxes to cover a collection of tagged cells on a single AMR hierarchy patch level. This class is derived from the abstract base class BoxGeneratorStrategy<DIM>. Thus, it serves as a concrete implementation of the box generator Strategy pattern interface.

The box generation algorithm is described in Berger and Rigoutsos, tbox::IEEE Trans. on Sys, Man, and Cyber (21)5:1278-1286.

NOTE: Algorithmic variations which may affect performance are available by calling the the static method BergerRigoutsos<DIM>::setClusteringOption(), which sets the option for all instances of the class.

See also:
mesh::HistogramBox

mesh::BoxGeneratorStrategy


Constructor & Destructor Documentation

template<int DIM>
SAMRAI::mesh::BergerRigoutsos< DIM >::~BergerRigoutsos  )  [virtual]
 

Virtual destructor.

template<int DIM>
SAMRAI::mesh::BergerRigoutsos< DIM >::BergerRigoutsos  ) 
 

The constructor queries the tbox::InputManager to determine which of the various findBoxesContainingTags algorithms should be used.


Member Function Documentation

template<int DIM>
void SAMRAI::mesh::BergerRigoutsos< DIM >::setClusteringOption const string &  method = string()  )  [static]
 

Static function to set tag reduction option for clustering algorithm.

Parameters:
method string identifying box intersection method. Valid choices are: "ORIGINAL" (default case for single processor), "ORIG_FAST_REDUCE", "COMMUNICATOR", and "BINARY_TREE" (default case for multiple processors). The default empty string argument resets the method to the default case.
Each of these four options produces identical results but may result in different performance characteristics depending on the machine architecture on which the code is run. The defaults appear to be the most efficient choices for the tests we have performed. The options are:

  • ORIGINAL - original algorithm used in SAMRAI through v1.3.1; uses global reductions to collect tag information.
  • ORIG_FAST_REDUCE - original algorithm but with a faster reduce operation.
  • COMMUNICATOR - uses communicators to store data in each recursion of the algorithm.
  • BINARY_TREE - uses a binary tree communication scheme with hand-coded sends and receives.

If an invalid non-empty string is passed, an unrecoverable error will result.

template<int DIM>
void SAMRAI::mesh::BergerRigoutsos< DIM >::findBoxesContainingTags hier::BoxList< DIM > &  boxes,
const tbox::Pointer< hier::PatchLevel< DIM > >  level,
const int  index,
const int  tag_val,
const hier::Box< DIM > &  bound_box,
const hier::IntVector< DIM > &  min_box,
const double  efficiency_tol,
const double  combine_tol
const [virtual]
 

Create a list of boxes that covers all integer tags on the patch level that match the specified tag value. Each box will be at least as large as the given minimum size and the tolerances will be met. The

The efficiency tolerance is a threshold value for the percentage of tagged cells in each box. If this percentage is below the tolerance, the box will continue to be split into smaller boxes.

The combine tolerance is a threshold value for the sum of the volumes of two boxes into which a box may be potentially split. If ratio of that sum and the volume of the original box, the box will not be split.

Implements SAMRAI::mesh::BoxGeneratorStrategy< DIM >.


The documentation for this class was generated from the following files:
Generated on Fri Dec 2 11:28:36 2005 for SAMRAI by  doxygen 1.4.2