#include "ProblemDomain.H"
#include "FArrayBox.H"
#include "LevelData.H"
#include "Tuple.H"
Include dependency graph for NodeFArrayBox.H:
This graph shows which files directly or indirectly include this file:
Go to the source code of this file.
Compounds | |
class | NodeFArrayBox |
A wrapper for an FArrayBox to contain NODE-centered data. More... | |
Functions | |
void | interiorNodes (IntVectSet &a_ivs, const ProblemDomain &a_base_domain, const DisjointBoxLayout &a_boxes, const Box &a_box) |
Finds interior nodes of a DisjointBoxLayout in a particular box. | |
void | interiorNodes (IntVectSet &a_ivs, const Box &a_base_domain, const DisjointBoxLayout &a_boxes, const Box &a_box) |
void | interiorBoundaryNodes (LayoutData< Vector< IntVectSet > > &a_IVSV, const DisjointBoxLayout &a_boxes, const ProblemDomain &a_domain) |
Finds interior boundary nodes of a DisjointBoxLayout. | |
void | interiorBoundaryNodes (LayoutData< Vector< IntVectSet > > &a_IVSV, const DisjointBoxLayout &a_boxes, const Box &a_domain) |
void | interiorBoundaryNodes (LayoutData< Vector< IntVectSet > > &a_IVSV, const DisjointBoxLayout &a_dest, const DisjointBoxLayout &a_src, const ProblemDomain &a_domain) |
Finds interior boundary nodes of a DisjointBoxLayout. | |
void | interiorBoundaryNodes (LayoutData< Vector< IntVectSet > > &a_IVSV, const DisjointBoxLayout &a_dest, const DisjointBoxLayout &a_src, const Box &a_domain) |
void | exteriorBoundaryNodes (LayoutData< Vector< IntVectSet > > &a_exterior, const LayoutData< Vector< IntVectSet > > &a_interior, const DisjointBoxLayout &a_boxes) |
Finds exterior boundary nodes of a DisjointBoxLayout. | |
void | copyInteriorNodesOld (BoxLayoutData< NodeFArrayBox > &a_dest, const LevelData< NodeFArrayBox > &a_src, const Box &a_domain) |
Copies data at interior nodes from one LevelData<NodeFArrayBox> to another. | |
void | zeroBoundaryNodes (BoxLayoutData< NodeFArrayBox > &a_dest, const LayoutData< Vector< IntVectSet > > &a_IVSV) |
Sets data to zero on specified boundary nodes. | |
void | copyInteriorNodes (LevelData< NodeFArrayBox > &a_dest, const LevelData< NodeFArrayBox > &a_src, const LayoutData< Vector< IntVectSet > > &a_IVSV) |
Copies data at interior nodes from one LevelData<NodeFArrayBox> to another. | |
Real | DotProductNodes (const BoxLayoutData< NodeFArrayBox > &a_dataOne, const BoxLayoutData< NodeFArrayBox > &a_dataTwo, const BoxLayoutData< BaseFab< int > > &a_mask, const BoxLayout &a_dblIn) |
Computes dot product of two sets of data on the same set of grids. | |
Real | DotProductNodes (const BoxLayoutData< NodeFArrayBox > &a_dataOne, const BoxLayoutData< NodeFArrayBox > &a_dataTwo, const BoxLayoutData< BaseFab< int > > &a_mask, const BoxLayout &a_dblIn, const Interval &a_comps) |
Computes dot product of two sets of data on the same set of grids. | |
Real | DotProductNodes (const LevelData< NodeFArrayBox > &a_dataOne, const LevelData< NodeFArrayBox > &a_dataTwo, const BoxLayoutData< BaseFab< int > > &a_mask, const ProblemDomain &a_domain, const LayoutData< Vector< IntVectSet > > &a_IVSVext, const Interval &a_comps) |
Computes dot product of two sets of data on the same set of grids. | |
Real | DotProductNodes (const LevelData< NodeFArrayBox > &a_dataOne, const LevelData< NodeFArrayBox > &a_dataTwo, const BoxLayoutData< BaseFab< int > > &a_mask, const Box &a_domain, const LayoutData< Vector< IntVectSet > > &a_IVSVext, const Interval &a_comps) |
Real | DotProductNodes (const LevelData< NodeFArrayBox > &a_dataOne, const LevelData< NodeFArrayBox > &a_dataTwo, const BoxLayoutData< BaseFab< int > > &a_mask, const ProblemDomain &a_domain, const Interval &a_comps) |
Computes dot product of two sets of data on the same set of grids. | |
Real | DotProductNodes (const LevelData< NodeFArrayBox > &a_dataOne, const LevelData< NodeFArrayBox > &a_dataTwo, const BoxLayoutData< BaseFab< int > > &a_mask, const Box &a_domain, const Interval &a_comps) |
|
Copies data at interior nodes from one LevelData<NodeFArrayBox> to another. Copies data from a_src to a_dest, over the interior nodes of a_src. They need not have the same layout. The argument a_IVSV is obtained from interiorBoundaryNodes(a_IVSV, a_dest.boxLayout(), a_src.boxLayout(), a_domain) where a_domain is the physical domain. \ If a_dest and a_src have the same layout, then we may obtain a_IVSV more efficiently from interiorBoundaryNodes(a_IVSV, a_src.boxLayout(), a_domain) . Do not use this shorter form if a_dest and a_src have different layouts. Example: if a_src has the four-grid layout on the left below, then the nodes from which data are copied to a_dest are marked with "X" and "O" on the right below. (The distinction between "X" and "O" is that nodes marked "O" are on interior boundaries of the layout.) +-----+ +-----+ | | |OOOOO| | | |OOOOO| | | |OOOOO| +---+--+--+---+ +---+XXXXX+---+ | | | |OOOOOOXOOOOOO| | | | |OOOOOOXOOOOOO| | | | |OOOOOOXOOOOOO| +---+------+------+ +---+XXXXXX+------+ | | |OOOOOOOOOO| | | |OOOOOOOOOO| | | |OOOOOOOOOO| +----------+ +----------+ Both pictures represent the layout of a_src. The layout of a_dest may be completely different from that of a_src. Data at nodes in a_dest that are not interior boundary nodes of a_src remain unchanged by this function. {\bf Arguments:}\ a_dest (modified): destination data.\ a_src (not modified): source data.\ a_IVSV (not modified): object containing interior boundary nodes of a_src that are also nodes of a_dest. |
|
Copies data at interior nodes from one LevelData<NodeFArrayBox> to another. Copies data from a_src to a_dest, over the interior nodes of a_src. \ a_domain is the CELL-centered physical domain containing both a_dest and a_src. This function sets up a complicated data structure every time it is called. If you'll be using this function multiple times on data over the same layouts, it is more efficient to use copyInteriorNodes() and retain the LayoutData< Vector<IntVectSet> > that it requires. |
|
|
|
Computes dot product of two sets of data on the same set of grids. Computes dot product of two sets of data on the same set of grids. This function computes exterior boundary nodes. It is more efficient to precompute these boundary-node objects and call the function above. {\bf Arguments:}\ a_dataOne (not modified): first set of data.\ a_dataTwo (not modified): second set of data.\ a_domain (not modified): physical domain.\ a_comps (not modified): components over which to take sum. The dot product computed by this function is the sum over the components in a_comps and over all VALID nodes of the product of a_dataOne and a_dataTwo. |
|
|
|
Computes dot product of two sets of data on the same set of grids. Computes dot product of two sets of data on the same set of grids. The a_IVSVext object is obtained from the calls: \ interiorBoundaryNodes(IVSVint, a_dataOne.getBoxes(), a_domain); \ exteriorBoundaryNodes(a_IVSVext, IVSVint, a_dataOne.getBoxes(); \ {\bf Arguments:}\ a_dataOne (not modified): first set of data.\ a_dataTwo (not modified): second set of data.\ a_domain (not modified): physical domain.\ a_IVSVext (not modified): external boundary nodes.\ a_comps (not modified): components over which to take sum. The dot product computed by this function is the sum over the components in a_comps and over all VALID nodes of the product of a_dataOne and a_dataTwo. |
|
Computes dot product of two sets of data on the same set of grids. Computes dot product of two sets of data on the same set of grids. {\bf Arguments:}\ a_dataOne (not modified): first set of data.\ a_dataTwo (not modified): second set of data.\ a_mask (not modified): mask array.\ a_dblIn (not modified): cell-centered layout, on the nodes of which we calculate the dot product. \ a_comps (not modified): components over which to take sum. The dot product computed by this function is the sum over the components in a_comps and over all points of the product of a_dataOne and a_dataTwo, weighted by trapezoidal integration rule weights. |
|
Computes dot product of two sets of data on the same set of grids. Computes dot product of two sets of data on the same set of grids. {\bf Arguments:}\ a_dataOne (not modified): first set of data.\ a_dataTwo (not modified): second set of data.\ a_mask (not modified): mask array.\ a_dblIn (not modified): cell-centered layout, on the nodes of which we calculate the dot product. The dot product computed by this function is the sum over all components and all points of the product of a_dataOne and a_dataTwo, weighted by trapezoidal integration rule weights. |
|
Finds exterior boundary nodes of a DisjointBoxLayout. Returns a LayoutData containing, for each box, the exterior boundary nodes of the box. The argument a_interior is obtained from interiorBoundaryNodes(a_interior, a_boxes, a_domain) where a_domain is the physical domain. {\bf Arguments:}\ a_exterior (modified): destination boxes.\ a_interior (not modified): object containing interior boundary nodes of a_src.\ a_boxes (not modified): CELL-centered boxes. |
|
|
|
Finds interior boundary nodes of a DisjointBoxLayout. Returns a LayoutData containing, for each destination box, a Vector of IntVectSets that together represent the nodes of the destination box that are also interior boundary nodes of the source boxes. Specifically, if IBN(a_src) is the set of interior boundary nodes of a_src, then the Vector<IntVectSet> a_IVSV[dit()] holds the intersection of IBN(a_src) and the nodes surrounding a_dest[dit()]. The result a_IVSV is used in copyInteriorNodes(). {\bf Arguments:}\ a_IVSV (modified): object containing interior boundary nodes of a_src.\ a_dest (not modified): CELL-centered destination boxes.\ a_src (not modified): CELL-centered source boxes.\ a_domain (not modified): CELL-centered physical domain. |
|
|
|
Finds interior boundary nodes of a DisjointBoxLayout. Returns a LayoutData containing, for each box in a_boxes, a Vector of IntVectSets that contain the indices of the nodes that lie on faces of the box but are not on the interface of a_boxes with the next coarser level. Example: for the box marked "me" in the four-grid layout below, the interior boundary nodes are those that are marked with "O". +-----+ | | | | | | +---+OOO--+---+ | O | | me O | | O | +---+OOOOOO+------+ | | | | | | +----------+ The result a_IVSV is needed by copyInteriorNodes(). Question: Why not simply store the indices of all interior boundary nodes of a_boxes in a single IntVectSet, rather than a LayoutData< Vector<IntVectSet> >? \ Answer: Because of the way IntVectSets are stored, this would be very slow. The different components of the Vector<IntVectSet> contain indices of nodes on different faces of the box. {\bf Arguments:}\ a_IVSV (modified): object containing interior boundary nodes of a_boxes.\ a_boxes (not modified): CELL-centered boxes.\ a_domain (not modified): CELL-centered physical domain. |
|
|
|
Finds interior nodes of a DisjointBoxLayout in a particular box. Returns nodes surrounding CELL-centered box a_box that are NOT on the interface of (CELL-centered) a_boxes with the next coarser level. \ a_ivs is initially undefined. \ a_box is one of the CELL-centered boxes in a_boxes. \ a_base_domain is the CELL-centered physical domain containing a_boxes. |
|
Sets data to zero on specified boundary nodes. Sets a_dest to zero on the nodes in a_IVSV. Specifically, a_dest[dit()] is set to zero on the nodes in a_IVSV[dit()]. We usually call this function with a_IVSV representing the exterior boundary nodes of a_dest. These are obtained with the sequence of calls: \ interiorBoundaryNodes(a_IVSVint, a_dest.boxLayout(), a_domain) where a_domain is the physical domain, and \ exteriorBoundaryNodes(a_IVSV, a_IVSVint, a_dest.boxLayout()) . {\bf Arguments:}\ a_dest (modified): the data.\ a_IVSV (not modified): object containing boundary nodes. |