IBAMR  IBAMR version 0.19.
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
IBTK::BoxPartitioner Class Reference

A libMesh partitioner that partitions a mesh based on PartitioningBox objects owned by each processor. More...

#include <ibtk/BoxPartitioner.h>

Inheritance diagram for IBTK::BoxPartitioner:
Inheritance graph
[legend]

Public Member Functions

 BoxPartitioner (const PartitioningBoxes &partitioning_boxes)
 Constructor from a PartitioningBoxes instance. More...
 
 BoxPartitioner (const PartitioningBoxes &partitioning_boxes, const libMesh::System &position_system)
 
void setLoggingEnabled (bool enable_logging=true)
 Enable or disable logging. More...
 
bool getLoggingEnabled () const
 Determine whether logging is enabled or disabled. More...
 
void writePartitioning (const std::string &file_name) const
 
virtual std::unique_ptr< libMesh::Partitioner > clone () const override
 

Protected Member Functions

virtual void _do_partition (libMesh::MeshBase &mesh, const unsigned int n) override
 The function used to actually do the partitioning. More...
 

Protected Attributes

bool d_enable_logging = false
 Logging configuration. More...
 
PartitioningBoxes d_partitioning_boxes
 
const libMesh::System *const d_position_system = nullptr
 Pointer, if relevant, to the libMesh mesh position system. More...
 

Detailed Description

IBAMR assumes that all Lagrangian structures exist on the finest level of the fluid mesh. This partitioner uses the data stored by the SAMRAI PatchHierarchy object (which is used, under most circumstances, to create the PartitioningBoxes object) to compute partitioning boxes corresponding to the locally owned fluid patches on the finest level: since these partition the part of the domain over which the structure exists, they can be used to partition the libMesh Mesh object across the MPI network. Put another way: this Partitioner uses Eulerian grid data to partition the structural meshes.

Constructor & Destructor Documentation

◆ BoxPartitioner() [1/2]

IBTK::BoxPartitioner::BoxPartitioner ( const PartitioningBoxes partitioning_boxes)

◆ BoxPartitioner() [2/2]

IBTK::BoxPartitioner::BoxPartitioner ( const PartitioningBoxes partitioning_boxes,
const libMesh::System &  position_system 
)

Constructor. This is like the other constructor that takes a PartitioningBoxes object, but it permits the use of a background mesh that is displaced by a vector finite element field.

Parameters
partitioning_boxesthe boxes comprising the partition.
position_systemthe libMesh::System object whose current solution is the position of the Mesh which will subsequently be partitioned.

Member Function Documentation

◆ setLoggingEnabled()

void IBTK::BoxPartitioner::setLoggingEnabled ( bool  enable_logging = true)

◆ getLoggingEnabled()

bool IBTK::BoxPartitioner::getLoggingEnabled ( ) const

◆ writePartitioning()

void IBTK::BoxPartitioner::writePartitioning ( const std::string &  file_name) const

Write the partitioning to a file in a simple point-based format: for each patch several points are printed to the specified file in the format

x,y,z,r

format.

◆ clone()

virtual std::unique_ptr<libMesh::Partitioner> IBTK::BoxPartitioner::clone ( ) const
overridevirtual

◆ _do_partition()

virtual void IBTK::BoxPartitioner::_do_partition ( libMesh::MeshBase &  mesh,
const unsigned int  n 
)
overrideprotectedvirtual

Member Data Documentation

◆ d_enable_logging

bool IBTK::BoxPartitioner::d_enable_logging = false
protected

◆ d_partitioning_boxes

PartitioningBoxes IBTK::BoxPartitioner::d_partitioning_boxes
protected

The PartitioningBoxes object used to establish whether or not an Elem (via its centroid) or Node is owned by the current processor.

◆ d_position_system

const libMesh::System* const IBTK::BoxPartitioner::d_position_system = nullptr
protected

The documentation for this class was generated from the following file: