Asynchronous Berger-Rigoutsos implementation. This class is derived from the abstract base class mesh::BoxGeneratorStrategy<DIM>. Thus, it serves as a concrete implementation of the box generator Strategy pattern interface.
More...
#include <AsyncBergerRigoutsos.h>
template<int DIM>
class SAMRAI::mesh::AsyncBergerRigoutsos< DIM >
This class uses the mesh::AsyncBergerRigoutsosNode class to carry out the Berger-Rigoutsos algorithm in parallel. It handles aspects not related that algorithm. It:
- Implements the box generator Strategy pattern interface.
- Provides an interface with the input database for setting parameters influencing the implementation.
- Converts output data into the format required by mesh::BoxGeneratorStrategy<DIM>. For more details on the parallel implementation, see mesh::AsyncBergerRigoutsosNode.
User inputs (default):
- bool use_private_communicator (true): Whether to create and cache a private MPI communicator. A private communicator helps to ensure that the complex communications used by the asynchronous algorithm is isolated from other communications. If a private communicator is used, it is duplicated from SAMRAI_MPI::getCommunicator() at construction time. If a private communicator is not used, the current value of SAMRAI_MPI::getCommunicator() is used when a communicator is needed. The private communicator is freed when the object goes out of scope. Disabling the use of a private communicator is not recommended unless you are absolutely sure unintended message reception will be avoided.
- bool use_level_boxes (false): Whether to use and compute the local copy of all boxes on the patch level.
- string algo_advance_mode ("ADVANCE_SOME"): Asynchronous algorithm advance mode. The default has been empirically determined to scale best to higher numbers of processors and work adequately for lower numbers of processors.
- string owner_mode ("MOST_OVERLAP"): How to chose the owner from a dendogram node group. This string is used in AsyncBergerRigoutsosNode::setOwnerMode().
- IntVector max_gcw (1): Max ghost width for overlap checks. It should be set tho the max ghost cell width used in the problem in order to compute correct edges. This can be zero for now, as SAMRAI does not use the edge data.
Debugging inputs (default):
- bool log_node_history (false): Whether to log what certain actions of nodes in the dendogram. This degrades the performance but is a very useful debugging tool.
- bool log_cluster_summary (false): Whether to log the results of the clustering.
◆ AsyncBergerRigoutsos()
◆ ~AsyncBergerRigoutsos()
Deallocate internal data.
◆ findBoxesContainingTags()
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 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.
This function is actually a switch for selecting one of several variations of the computational implementation of the algorithm.
See the discussion above for a desription of the different options. All implementations should generate identical results, but the performance may vary on different systems. By default, the ORIGINAL algorithm is used when running on a single processor, and BINARY_TREE is used when running on multiple processors. The user may reset these options through input. See the discussion above for more information.
Implements SAMRAI::mesh::BoxGeneratorStrategy< DIM >.
◆ assertNoMessageForPrivateCommunicator()
◆ freeTimers()
Free static timers.
To be called by shutdown registry to make sure memory for timers does not leak.
◆ d_mpi_communicator
◆ d_log_node_history
◆ d_log_cluster_summary
◆ d_owner_mode
◆ d_use_level_boxes
◆ d_algo_advance_mode
◆ d_max_gcw
◆ t_run_abr
◆ t_globalize_boxes
The documentation for this class was generated from the following file: