class ExtrapFillPatch

fills outer ghost cells by copying from inner ghost cells.

Inheritance:

ExtrapFillPatch


public members:

ExtrapFillPatch()
~ExtrapFillPatch()
ExtrapFillPatch( const DisjointBoxLayout & a_level_domain, const Box& a_problem_domain, const Interval& a_extrap_interval )
ExtrapFillPatch( const DisjointBoxLayout & a_level_domain, const ProblemDomain & a_problem_domain, const Interval& a_extrap_interval )
void define( const DisjointBoxLayout & a_level_domain, const Box& a_problem_domain, const Interval& a_extrap_interval )
void define( const DisjointBoxLayout & a_level_domain, const ProblemDomain & a_problem_domain, const Interval& a_extrap_interval )
bool isDefined() const
void fillExtrap( LevelData< FArrayBox >& a_data, int a_dir, int a_dest_comp, int a_num_comp )

Documentation

The picture below shows existing ghost cell data in a border around the valid region (including corners). These values are extrapolated to the ghost cells in the outer "flaps." The coordinate direction of extrapolation is a parameter (in this example, it is 0).

                  +-----+---------------------------------+-----+
                  |     | +-----------------------------+ |     |
                  |     | |                             | |     |
                  |     | |                             | |     |
                  |     | |                             | |     |
                  |     | |    InteriorBox              | |     |
                  |     | |                             |%| x   |
                  |     | |                             | |/    |
                  |  x  |%|                             | /     |
                  | /   | |                             |/|     |
                  |/    | |                             / |     |
                  /     | |                 -----------/| |     |
                 /|     | |                /            | |     |
                / |     | |               /             | |     |
               /  |     | |              /              | |     |
              /   |     | +-------------/---------------+x|     |
             /    +-----+--------------/----------------/-+-----+
            /                         /                /           
           /                         /                /             
          /                         /                /              
         /                         /                /
  ------/------------------------ /                /
  | Ghost cells in outer flaps  |/                /
  | (locations x) are filled by |                /
  | extrapolating from existing |   ------------/------------------------
  | ghost cells (location %).   |   | Border of exisiting ghost cells.  |
  |-----------------------------|   | Assumed to be filled correctly    |
                                    | on input.                         |
                                    |-----------------------------------| 

Limitation on grid configuration

The picture below shows the ghost cells of grid 1 for extrapolation in direction 0. The cells marked X were filled before extrapolation. The cells marked > are extrapolated to from the first X to their right. The cells marked ? want to be filled from an X to the right, but there isn't any. This algorithm is not defined for such a grid configuration, in which the outline of the level has a "step" of width (in this case 2) less than the extrapolation radius (in this case 4). Using this algorithm with grids that violate this condition may result in undefined behavior.

            + - - - - - - - - - - - +                    
             > > > X X X X X X < < <                              
            |       +-------+       |        
             > > > X|       |X < < <      
            |       |       |       |
             > > > X|       |X < < < 
            |       | grid 1|       |
             > > > X|       |X < < < 
            |       |       |       |
             > > > X|       |X < < < 
            |   +---+-------+       |         
             ? ?|^ ^ ^ ^ ^ ^|X < < <          
            + - - - - - - - - - - - +          
                |           |
                |           |  
                |  grid 0   |  
                |           |  
                |           |  
                +-----------+
ExtrapFillPatch ()
Default constructor. User must subsequently call define().

~ExtrapFillPatch ()
Destructor.

ExtrapFillPatch ( const DisjointBoxLayout & a_level_domain, const Box& a_problem_domain, const Interval& a_extrap_interval )
Defining constructor. Constructs a valid ExtrapFillPatch object. Equivalent to default construction followed by define(). It is a fatal error if any grid in a_level_domain has any dimension less than a_extrap_interval.end().

There is also a restriction on grids with "jagged steps" which is described in "Limitation on grid configuration" in the class documentation above (with the ASCII art). It is not checked whether the input domain complies with this restriction. Using this algorithm with grids that violate this condition may result in undefined behavior.

Arguments:
a_level_domain (not modified): domain of the level.
a_problem_domain (not modified): problem domain at this level.
a_extrap_interval (not modified): the interval of ghost cells to fill by extrapolation.

ExtrapFillPatch ( const DisjointBoxLayout & a_level_domain, const ProblemDomain & a_problem_domain, const Interval& a_extrap_interval )
Defining constructor. Constructs a valid ExtrapFillPatch object. Equivalent to default construction followed by define(). It is a fatal error if any grid in a_level_domain has any dimension less than a_extrap_interval.end().

There is also a restriction on grids with "jagged steps" which is described in "Limitation on grid configuration" in the class documentation above (with the ASCII art). It is not checked whether the input domain complies with this restriction. Using this algorithm with grids that violate this condition may result in undefined behavior.

Arguments:
a_level_domain (not modified): domain of the level.
a_problem_domain (not modified): problem domain at this level.
a_extrap_interval (not modified): the interval of ghost cells to fill by extrapolation.

void define ( const DisjointBoxLayout & a_level_domain, const Box& a_problem_domain, const Interval& a_extrap_interval )
Defines this ExtrapFillPatch. Existing definition is overridden. The user may call define() once and call fillInterp() multiple times with different valid data sets.

It is a fatal error if any grid in a_level_domain has any dimension less than a_extrap_interval.end().

There is also a restriction on grids with "jagged steps" which is described in "Limitation on grid configuration" in the class documentation above (with the ASCII art). It is not checked whether the input domain complies with this restriction. Using this algorithm with grids that violate this condition may result in undefined behavior.

Arguments:
a_level_domain (not modified): domain of the level.
a_problem_domain (not modified): problem domain at this level.
a_extrap_interval (not modified): the interval of ghost cells to fill by extrapolation.

This:
---This object is modified.---

void define ( const DisjointBoxLayout & a_level_domain, const ProblemDomain & a_problem_domain, const Interval& a_extrap_interval )
Defines this ExtrapFillPatch. Existing definition is overridden. The user may call define() once and call fillInterp() multiple times with different valid data sets.

It is a fatal error if any grid in a_level_domain has any dimension less than a_extrap_interval.end().

There is also a restriction on grids with "jagged steps" which is described in "Limitation on grid configuration" in the class documentation above (with the ASCII art). It is not checked whether the input domain complies with this restriction. Using this algorithm with grids that violate this condition may result in undefined behavior.

Arguments:
a_level_domain (not modified): domain of the level.
a_problem_domain (not modified): problem domain at this level.
a_extrap_interval (not modified): the interval of ghost cells to fill by extrapolation.

This:
---This object is modified.---

bool isDefined () const
Returns true if this object was created with the defining constructor or if define() has called.

This:
This object is not modified.

void fillExtrap ( LevelData< FArrayBox >& a_data, int a_dir, int a_dest_comp, int a_num_comp )
Fills ghost cells in the outer flaps, by interpolation from data in the inner ghost cells. It is an error to call if not this->isDefined().

Arguments:
a_data (modified): data at this level, both the source and destination for extrapolation.
a_dir (not modified): zero-based coordinate direction of extrapolation.
a_dest_comp (not modified): the first component for extrapolation.
a_num_comp (not modified): the number of components to extrapolate.

This:
This object is not modified.


this class has no child classes.

alphabetic index hierarchy of classes


Chombo

Copyright Notice

This software is copyright (C) by the Lawrence Berkeley National Laboratory. Permission is granted to reproduce this software for non-commercial purposes provided that this notice is left intact.

It is acknowledged that the U.S. Government has rights to this software under Contract DE-AC03-765F00098 between the U.S. Department of Energy and the University of California.

This software is provided as a professional and academic contribution for joint exchange. Thus it is experimental, is provided ``as is'', with no warranties of any kind whatsoever, no support, no promise of updates, or printed documentation. By using this software, you acknowledge that the Lawrence Berkeley National Laboratory and Regents of the University of California shall have no liability with respect to the infringement of other copyrights by any part of this software.