Main Page | Namespace List | Class Hierarchy | Alphabetical List | Compound List | File List | Compound Members | File Members

DisjointBoxLayout Class Reference

A BoxLayout that has a concept of disjointedness. More...

#include <DisjointBoxLayout.H>

Inheritance diagram for DisjointBoxLayout:

Inheritance graph
[legend]
Collaboration diagram for DisjointBoxLayout:

Collaboration graph
[legend]
List of all members.

Modification functions

virtual void close ()
virtual void deepCopy (const DisjointBoxLayout &a_source)
virtual void deepCopy (const BoxLayout &a_source)
virtual void deepCopy (const BoxLayout &a_source, const ProblemDomain &a_physDomain)
void coarsen (DisjointBoxLayout &output, const DisjointBoxLayout &input, int refinement)
void refine (DisjointBoxLayout &output, const DisjointBoxLayout &input, int refinement)

Public Member Functions

Constructors, destructors, defines
 DisjointBoxLayout ()
 DisjointBoxLayout (const Vector< Box > &a_boxes, const Vector< int > &a_procIDs)
 DisjointBoxLayout (const Vector< Box > &a_boxes, const Vector< int > &a_procIDs, const ProblemDomain &a_physDomain)
virtual ~DisjointBoxLayout ()
virtual void define (const Vector< Box > &a_boxes, const Vector< int > &a_procIDs)
void define (BoxLayout &a_layout)
void define (BoxLayout &a_layout, const ProblemDomain &a_physDomain)
virtual void define (const Vector< Box > &a_boxes, const Vector< int > &a_procIDs, const ProblemDomain &a_physDomain)
virtual void define_pd (const Vector< Box > &a_boxes, const Vector< int > &a_procIDs, const ProblemDomain &a_physDomain)
Checks
bool isDisjoint () const
bool checkPeriodic (const ProblemDomain &a_domain) const
bool checkDomains (const DisjointBoxLayout &a_dbl) const

Protected Member Functions

const ProblemDomainphysDomain () const

Friends

class Copier
Neighbor functions
void adjCellLo (DisjointBoxLayout &a_output, const DisjointBoxLayout &a_input, int a_dir, int a_len=1)
void adjCellHi (DisjointBoxLayout &a_output, const DisjointBoxLayout &a_input, int a_dir, int a_len=1)

Detailed Description

A BoxLayout that has a concept of disjointedness.

DisjointBoxLayout is-a BoxLayout that has a concept of disjointedness of the boxes. DisjointBoxLayout is only different from BoxLayout in that it has a method isDisjoint(). DisjointBoxLayouts also have a ProblemDomain member to ensure disjointness in the case of periodic boundary conditions, among other things.


Constructor & Destructor Documentation

DisjointBoxLayout::DisjointBoxLayout  ) 
 

Construct BoxLayout with no boxes.

DisjointBoxLayout::DisjointBoxLayout const Vector< Box > &  a_boxes,
const Vector< int > &  a_procIDs
 

Construct from a Vector of Boxes and optionally a Vector of processor assignments. If the processor assignment Vector is present, it must be either zero-length or the same length as the Box Vector. On exit, the DisjointBoxLayout will be closed.

DisjointBoxLayout::DisjointBoxLayout const Vector< Box > &  a_boxes,
const Vector< int > &  a_procIDs,
const ProblemDomain a_physDomain
 

Construct from a Vector of Boxes and optionally a Vector of processor assignments. If the processor assignment Vector is present, it must be either zero-length or the same length as the Box Vector. On exit, the DisjointBoxLayout will be closed.

virtual DisjointBoxLayout::~DisjointBoxLayout  )  [inline, virtual]
 

Ref-counted destruction. Once the last reference to the implementation of this class is destroyed, the data members are cleaned up.


Member Function Documentation

bool DisjointBoxLayout::checkDomains const DisjointBoxLayout a_dbl  )  const
 

Performs problem domain check when we don't have direct access to a problemDomain.

Returns true if this and a_dbl have compatible ProblemDomains.

bool DisjointBoxLayout::checkPeriodic const ProblemDomain a_domain  )  const
 

Checks to see that problem domains are compatible. To be compatible:

  • a_domain and the ProblemDomain in this DisjointBoxLayout must have the same periodicity.
  • The ProblemDomains must be periodic in the same dimensions.
  • In all periodic directions, the period must be the same.

There are no checks in non-periodic directions, since DisjointBoxLayouts don't care about physical domains except in the periodic case.

virtual void DisjointBoxLayout::close  )  [virtual]
 

Mark this DisjointBoxLayout as complete and unchangeable.

Reimplemented from BoxLayout.

virtual void DisjointBoxLayout::deepCopy const BoxLayout a_source,
const ProblemDomain a_physDomain
[virtual]
 

Create new open DisjointBoxLayout with copied data.

Checks that the source BoxLayout isDisjoint, throws an error if it is not. Otherwise, same as BoxLayout::deepCopy.

virtual void DisjointBoxLayout::deepCopy const BoxLayout a_source  )  [virtual]
 

Create new open DisjointBoxLayout with copied data.

Checks that the source BoxLayout isDisjoint, throws an error if it is not. Otherwise, same as BoxLayout::deepCopy.

Reimplemented from BoxLayout.

virtual void DisjointBoxLayout::deepCopy const DisjointBoxLayout a_source  )  [virtual]
 

Create new open DisjointBoxLayout with copied data.

Doesn't check for disjointness, since a_source is already guaranteed to be disjoint. Also copies problem domain info.

virtual void DisjointBoxLayout::define const Vector< Box > &  a_boxes,
const Vector< int > &  a_procIDs,
const ProblemDomain a_physDomain
[virtual]
 

Define this DisjointBoxLayout from a Vector of Boxes. This is a wrapper for a call to BoxLayout::define, required because DisjointBoxLayout::define is overloaded and the compiler will not look into the base class for name resolution.

void DisjointBoxLayout::define BoxLayout a_layout,
const ProblemDomain a_physDomain
 

Shallow define. Only way to promote a BoxLayout. If BoxLayout has been closed, then this method checks isDisjoint and throws an error if not disjoint. If a_layout is disjoint, then this object becomes a closed DisjointBoxLayout object.

void DisjointBoxLayout::define BoxLayout a_layout  ) 
 

Shallow define. Only way to promote a BoxLayout. If BoxLayout has been closed, then this method checks isDisjoint and throws an error if not disjoint. If a_layout is disjoint, then this object becomes a closed DisjointBoxLayout object.

virtual void DisjointBoxLayout::define const Vector< Box > &  a_boxes,
const Vector< int > &  a_procIDs
[virtual]
 

Define this DisjointBoxLayout from a Vector of Boxes. This is a wrapper for a call to BoxLayout::define, required because DisjointBoxLayout::define is overloaded and the compiler will not look into the base class for name resolution.

Reimplemented from BoxLayout.

virtual void DisjointBoxLayout::define_pd const Vector< Box > &  a_boxes,
const Vector< int > &  a_procIDs,
const ProblemDomain a_physDomain
[inline, virtual]
 

Define this DisjointBoxLayout from a Vector of Boxes. Same as define.

bool DisjointBoxLayout::isDisjoint  )  const
 

Returns true if this object contains a disjoint union of Boxes.

The Disjoint testing algorithm assumes that the boxes are CELL-Centered boxes. We can expand the algorithm when someone needs it. bvs

const ProblemDomain& DisjointBoxLayout::physDomain  )  const [protected]
 


Friends And Related Function Documentation

void adjCellHi DisjointBoxLayout a_output,
const DisjointBoxLayout a_input,
int  a_dir,
int  a_len = 1
[friend]
 

Returns the set of boxes which result from calling Box::adjCellHi on each box in input. Output must be open, will be closed upon exiting this function.

void adjCellLo DisjointBoxLayout a_output,
const DisjointBoxLayout a_input,
int  a_dir,
int  a_len = 1
[friend]
 

Returns the set of boxes which you get from calling Box::adjCellLo on each box in input. Output must be open, is closed upon exit from this function.

void coarsen DisjointBoxLayout output,
const DisjointBoxLayout input,
int  refinement
[friend]
 

Coarsen a DisjointBoxLayout:

  • output must be open
  • input must be closed
  • refinement must be a positive non-zero integer
  • output and input do not share an implementation.

output is first deepCopy'ed from input, then coarsen(refinement) is called on each box of output.

output returns from this function closed.

LayoutIterators from input and output can perform interchangeably.

friend class Copier [friend]
 

void refine DisjointBoxLayout output,
const DisjointBoxLayout input,
int  refinement
[friend]
 

Refine a DisjointBoxLayout:

  • output must be open
  • input must be closed
  • refinement must be a positive non-zero integer
  • output and input do not share an implementation.

output is first deepCopy'ed from input, then refine(refinement) is called on each box of output.

output returns from this function closed.

LayoutIterators from input and output can perform interchangeably.


The documentation for this class was generated from the following file:
Generated on Wed Jun 2 13:58:32 2004 for Chombo&INSwithParticles by doxygen 1.3.2