|
IBAMR
IBAMR version 0.19.
|
#include <ArrayDataMiscellaneousOpsReal.h>

Public Member Functions | |
| ArrayDataMiscellaneousOpsReal () | |
| ~ArrayDataMiscellaneousOpsReal () | |
| int | computeConstrProdPosWithControlVolume (const pdat::ArrayData< DIM, TYPE > &data1, const pdat::ArrayData< DIM, TYPE > &data2, const pdat::ArrayData< DIM, double > &cvol, const hier::Box< DIM > &box) const |
| int | computeConstrProdPos (const pdat::ArrayData< DIM, TYPE > &data1, const pdat::ArrayData< DIM, TYPE > &data2, const hier::Box< DIM > &box) const |
| void | compareToScalarWithControlVolume (pdat::ArrayData< DIM, TYPE > &dst, const pdat::ArrayData< DIM, TYPE > &src, const TYPE &alpha, const pdat::ArrayData< DIM, double > &cvol, const hier::Box< DIM > &box) const |
| void | compareToScalar (pdat::ArrayData< DIM, TYPE > &dst, const pdat::ArrayData< DIM, TYPE > &src, const TYPE &alpha, const hier::Box< DIM > &box) const |
| int | testReciprocalWithControlVolume (pdat::ArrayData< DIM, TYPE > &dst, const pdat::ArrayData< DIM, TYPE > &src, const pdat::ArrayData< DIM, double > &cvol, const hier::Box< DIM > &box) const |
| int | testReciprocal (pdat::ArrayData< DIM, TYPE > &dst, const pdat::ArrayData< DIM, TYPE > &src, const hier::Box< DIM > &box) const |
| TYPE | maxPointwiseDivide (const pdat::ArrayData< DIM, TYPE > &numer, const pdat::ArrayData< DIM, TYPE > &denom, const hier::Box< DIM > &box) const |
| Compute max of "conditional" quotients of two arrays. More... | |
| TYPE | minPointwiseDivide (const pdat::ArrayData< DIM, TYPE > &numer, const pdat::ArrayData< DIM, TYPE > &denom, const hier::Box< DIM > &box) const |
| Compute min of quotients of two arrays. More... | |
Private Member Functions | |
| ArrayDataMiscellaneousOpsReal (const ArrayDataMiscellaneousOpsReal< DIM, TYPE > &) | |
| void | operator= (const ArrayDataMiscellaneousOpsReal< DIM, TYPE > &) |
Class ArrayDataMiscellaneousOpsReal<DIM> provides various operations that may be applied to arrays of real (double and float) numerical data values maintained using pdat::ArrayData<DIM> objects. These operations are sufficiently different from basic arithmetic and norm operations that we chose to implement them in a separate class. However, as in the case of the * more common operations, the intent of this class is to provide a single implementation of the operations as they are needed by objects that manipulate standard array-based patch data types (i.e., cell-centered, face-centered, node-centered). Each operation is implemented in two different ways. The choice of operation is based on whether control volume information is to be used to weight the contribution of each data entry to the calculation. The use of control volumes is important when these operations are used in vector kernels where the data resides over multiple levels of spatial resolution in an AMR hierarchy. The actual index region on which each operation occurs is the intersection of this box and the boxes of all the pdat::ArrayData<DIM> objects involved.
Since these operations are used only by the vector kernels for the KINSOL and CVODE solver packages at this time, they are intended to be instantiated for the standard built-in types double and float (since those solvers only treat double and float data). To extend this class to other data types or to include other operations, the member functions must be specialized or the * new operations must be added.
| SAMRAI::math::ArrayDataMiscellaneousOpsReal< DIM, TYPE >::ArrayDataMiscellaneousOpsReal | ( | ) |
Empty constructor and destructor.
| SAMRAI::math::ArrayDataMiscellaneousOpsReal< DIM, TYPE >::~ArrayDataMiscellaneousOpsReal | ( | ) |
|
private |
| int SAMRAI::math::ArrayDataMiscellaneousOpsReal< DIM, TYPE >::computeConstrProdPosWithControlVolume | ( | const pdat::ArrayData< DIM, TYPE > & | data1, |
| const pdat::ArrayData< DIM, TYPE > & | data2, | ||
| const pdat::ArrayData< DIM, double > & | cvol, | ||
| const hier::Box< DIM > & | box | ||
| ) | const |
Return 1 if \(\|data2_i\| > 0\) and \(data1_i * data2_i \leq 0\), for any \(i\) in the index region, where \(cvol_i > 0\). Otherwise return 0.
| int SAMRAI::math::ArrayDataMiscellaneousOpsReal< DIM, TYPE >::computeConstrProdPos | ( | const pdat::ArrayData< DIM, TYPE > & | data1, |
| const pdat::ArrayData< DIM, TYPE > & | data2, | ||
| const hier::Box< DIM > & | box | ||
| ) | const |
Return 1 if \(\|data2_i\| > 0\) and \(data1_i * data2_i \leq 0\), for any \(i\) in the index region. Otherwise return 0.
| void SAMRAI::math::ArrayDataMiscellaneousOpsReal< DIM, TYPE >::compareToScalarWithControlVolume | ( | pdat::ArrayData< DIM, TYPE > & | dst, |
| const pdat::ArrayData< DIM, TYPE > & | src, | ||
| const TYPE & | alpha, | ||
| const pdat::ArrayData< DIM, double > & | cvol, | ||
| const hier::Box< DIM > & | box | ||
| ) | const |
Wherever \(cvol_i > 0\) in the index region, set \(dst_i = 1\) if \(\|src_i\| > \alpha\), and \(dst_i = 0\) otherwise.
| void SAMRAI::math::ArrayDataMiscellaneousOpsReal< DIM, TYPE >::compareToScalar | ( | pdat::ArrayData< DIM, TYPE > & | dst, |
| const pdat::ArrayData< DIM, TYPE > & | src, | ||
| const TYPE & | alpha, | ||
| const hier::Box< DIM > & | box | ||
| ) | const |
Set \(dst_i = 1\) if \(\|src_i\| > \alpha\), and \(dst_i = 0\) otherwise.
| int SAMRAI::math::ArrayDataMiscellaneousOpsReal< DIM, TYPE >::testReciprocalWithControlVolume | ( | pdat::ArrayData< DIM, TYPE > & | dst, |
| const pdat::ArrayData< DIM, TYPE > & | src, | ||
| const pdat::ArrayData< DIM, double > & | cvol, | ||
| const hier::Box< DIM > & | box | ||
| ) | const |
Wherever \(cvol_i > 0\) in the index region, set \(dst_i = 1/src_i\) if \(src_i \neq 0\), and \(dst_i = 0\) otherwise. If \(dst_i = 0\) anywhere, 0 is the return value. Otherwise 1 is returned.
| int SAMRAI::math::ArrayDataMiscellaneousOpsReal< DIM, TYPE >::testReciprocal | ( | pdat::ArrayData< DIM, TYPE > & | dst, |
| const pdat::ArrayData< DIM, TYPE > & | src, | ||
| const hier::Box< DIM > & | box | ||
| ) | const |
Set \(dst_i = 1/src_i\) if \(src_i \neq 0\), and \(dst_i = 0\) otherwise.
If \(dst_i = 0\) anywhere, 0 is the return value. Otherwise 1 is returned.
| TYPE SAMRAI::math::ArrayDataMiscellaneousOpsReal< DIM, TYPE >::maxPointwiseDivide | ( | const pdat::ArrayData< DIM, TYPE > & | numer, |
| const pdat::ArrayData< DIM, TYPE > & | denom, | ||
| const hier::Box< DIM > & | box | ||
| ) | const |
Return the maximum of pointwise "conditional" quotients of the numerator and denominator.
The "conditional" quotient is defined as |numerator/denominator| where the denominator is nonzero. Otherwise, it is defined as |numerator|.
Note: This method is currently intended to support the PETSc-2.1.6 vector wrapper only. Please do not use it!
| TYPE SAMRAI::math::ArrayDataMiscellaneousOpsReal< DIM, TYPE >::minPointwiseDivide | ( | const pdat::ArrayData< DIM, TYPE > & | numer, |
| const pdat::ArrayData< DIM, TYPE > & | denom, | ||
| const hier::Box< DIM > & | box | ||
| ) | const |
Return the minimum of pointwise quotients of the numerator and denominator.
The quotient is defined as (numerator/denominator) where the denominator is nonzero. When the denominator is zero, the entry is skipped. If the denominator is always zero, the value of tbox::IEEE::getDBL_MAX() is returned (see SAMRAI::tbox::IEEE).
Note: This method is currently intended to support the SUNDIALS vector wrapper only. Please do not use it!
|
private |
1.8.17