15 #ifndef _LEVELDATAOPS_H_ 16 #define _LEVELDATAOPS_H_ 26 #include "NamespaceHeader.H" 105 a_rhs.
copyTo(interv, a_lhs, interv);
114 #pragma omp parallel for reduction (+:val) 115 for(
int i=0; i<ompsize; i++)
118 val += a_1[d].dotProduct(a_2[d], dbl.
get(d));
124 int result = MPI_Allreduce(&val, &recv, 1,
MPI_CH_REAL,
125 MPI_SUM, Chombo_MPI::comm);
128 std::ostringstream msg;
129 msg <<
"LevelDataOps::dotProduct() called MPI_Allreduce() which returned error code " << result ;
144 for (
int ii=0;ii<a_sz;ii++)
149 #pragma omp parallel for reduction (+:val) 150 for(
int i=0; i<ompsize; i++)
153 val += a_1[d].dotProduct(a_2[d], dbl.
get(d));
161 int result = MPI_Allreduce(a_mdots, recv, a_sz,
MPI_CH_REAL,
162 MPI_SUM, Chombo_MPI::comm);
165 std::ostringstream msg;
166 msg <<
"LevelDataOps::mDotProduct() called MPI_Allreduce() which returned error code " << result ;
169 for (
int ii=0;ii<a_sz;ii++)
171 a_mdots[ii] = recv[ii];
182 int numcomp = a_lhs.
nComp();
185 #pragma omp parallel for 186 for(
int i=0; i<count; i++)
190 a_lhs[d].plus(a_rhs[d], subbox, subbox, a_scale, startcomp, startcomp, numcomp);
199 #pragma omp parallel for 200 for(
int i=0; i<count; i++)
203 a_lhs[d] *= a_rhs[d];
211 #pragma omp parallel for 212 for(
int i=0; i<count; i++)
215 a_lhs[d].setVal(0.0);
222 #pragma omp parallel for 223 for(
int i=0; i<count; i++)
226 a_lhs[d].setVal(a_val);
233 int nComp = a_lhs.
nComp();
239 #pragma omp for nowait 240 for (
int i=0; i<ccount; i++)
245 #pragma omp for nowait 246 for (
int i=0; i<tcount; i++)
259 #pragma omp parallel for 260 for(
int i=0; i<count; i++)
266 data.plus(a_y[d], b);
274 #pragma omp parallel for 275 for(
int i=0; i<count; i++)
287 #pragma omp parallel for 288 for(
int i=0; i<count; i++)
298 #include "NamespaceFooter.H"
LevelDataOps()
Definition: LevelDataOps.H:34
A reference-counting handle class.
Definition: RefCountedPtr.H:173
Definition: LevelDataOps.H:31
virtual void mult(LevelData< T > &a_lhs, const LevelData< T > &a_x)
Definition: LevelDataOps.H:195
virtual void axby(LevelData< T > &a_lhs, const LevelData< T > &a_x, const LevelData< T > &a_y, Real a_a, Real a_b)
Definition: LevelDataOps.H:255
A strange but true thing to make copying from one boxlayoutdata to another fast.
Definition: Copier.H:145
virtual void setVal(LevelData< T > &a_lhs, const Real &a_val)
Definition: LevelDataOps.H:219
DataIterator dataIterator() const
Definition: LayoutDataI.H:78
Definition: DataIterator.H:190
size_t size()
Definition: Copier.H:417
LevelDataOps(RefCountedPtr< DataFactory< T > > a_factoryPtr)
Definition: LevelDataOps.H:39
#define MPI_CH_REAL
Definition: REAL.H:34
Factory object to data members of a BoxLayoutData container.
Definition: BoxLayoutData.H:70
DataIndex toIndex
Definition: Copier.H:39
int size() const
Definition: DataIterator.H:218
Structure for passing component ranges in code.
Definition: Interval.H:23
new code
Definition: BoxLayoutData.H:170
virtual ~LevelDataOps()
Definition: LevelDataOps.H:44
virtual void setToZero(LevelData< T > &a_lhs)
Definition: LevelDataOps.H:208
double Real
Definition: REAL.H:33
virtual void scale(LevelData< T > &a_lhs, const Real &a_scale)
Definition: LevelDataOps.H:271
virtual void assign(LevelData< T > &a_lhs, const LevelData< T > &a_rhs)
Definition: LevelDataOps.H:102
virtual void define(const DisjointBoxLayout &dp, int comps, const IntVect &ghost=IntVect::Zero, const DataFactory< T > &a_factory=DefaultDataFactory< T >())
Definition: LevelDataI.H:93
virtual void copyTo(const Interval &srcComps, BoxLayoutData< T > &dest, const Interval &destComps) const
Definition: LevelDataI.H:221
A BoxLayout that has a concept of disjointedness.
Definition: DisjointBoxLayout.H:30
Box get(const LayoutIndex &it) const
Definition: BoxLayout.H:716
Box toRegion
Definition: Copier.H:41
const IntVect & ghostVect() const
Definition: LevelData.H:186
virtual void copyToZero(LevelData< T > &a_lhs, const Copier &a_copier)
Definition: LevelDataOps.H:231
virtual void plus(LevelData< T > &a_lhs, const Real &a_inc)
Definition: LevelDataOps.H:284
virtual void define(DataFactory< T > *a_rawPointer)
Definition: LevelDataOps.H:53
static void Warning(const char *const a_msg=m_nullString)
Print out message to cerr and continue.
virtual void mDotProduct(const LevelData< T > &a_1, const int a_sz, const LevelData< T > a_2arr[], Real a_mdots[])
Definition: LevelDataOps.H:140
A Rectangular Domain on an Integer Lattice.
Definition: Box.H:465
int nComp() const
Definition: BoxLayoutData.H:306
Definition: DataIndex.H:112
const DisjointBoxLayout & disjointBoxLayout() const
Definition: LevelData.H:225
Factory object to data members of a BoxLayoutData container.
Definition: BoxLayoutData.H:30
virtual void define(const RefCountedPtr< DataFactory< T > > &a_factoryPtr)
Definition: LevelDataOps.H:48
DataIterator dataIterator() const
Parallel iterator.
RefCountedPtr< DataFactory< T > > m_levelFactory
Definition: LevelDataOps.H:85
virtual Real dotProduct(const LevelData< T > &a_1, const LevelData< T > &a_2)
Definition: LevelDataOps.H:109
virtual void create(LevelData< T > &a_lhs, const LevelData< T > &a_rhs)
Definition: LevelDataOps.H:94
virtual void incr(LevelData< T > &a_lhs, const LevelData< T > &a_x, Real a_scale)
Definition: LevelDataOps.H:179