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.

Public Methods

 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)
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)
bool isDisjoint () const
bool checkPeriodic (const ProblemDomain &a_domain) const
bool checkDomains (const DisjointBoxLayout &a_dbl) const

Protected Methods

const ProblemDomainphysDomain () const

Friends

class Copier
void coarsen (DisjointBoxLayout &output, const DisjointBoxLayout &input, int refinement)
void refine (DisjointBoxLayout &output, const DisjointBoxLayout &input, int refinement)
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  
 

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]
 


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. They must be periodic in the same dimensions, and 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]
 

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]
 

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]
 

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]
 

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]
 

'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]
 

see 'coarsen ' and substitute the word "refine" for "coarsen"


The documentation for this class was generated from the following file:
Generated on Wed Apr 16 14:27:39 2003 for Chombo by doxygen1.2.16