Chombo + EB + MF  3.2
EBLevelDataOps.H
Go to the documentation of this file.
1 #ifdef CH_LANG_CC
2 /*
3  * _______ __
4  * / ___/ / ___ __ _ / / ___
5  * / /__/ _ \/ _ \/ V \/ _ \/ _ \
6  * \___/_//_/\___/_/_/_/_.__/\___/
7  * Please refer to Copyright.txt, in Chombo's root directory.
8  */
9 #endif
10 
11 #ifndef _EBLEVELDATAOPS_H_
12 #define _EBLEVELDATAOPS_H_
13 
14 #include "IntVect.H"
15 #include "LevelData.H"
16 #include "RefCountedPtr.H"
17 
18 #include "EBCellFAB.H"
19 #include "EBCellFactory.H"
20 #include "EBFluxFAB.H"
21 #include "EBFluxFactory.H"
22 #include "EBISLayout.H"
23 #include "NamespaceHeader.H"
24 
25 #define EBLEVELDATAOPS_INTERIORREGVOFS 0x1
26 #define EBLEVELDATAOPS_BOUNDARYREGVOFS 0x2
27 #define EBLEVELDATAOPS_INTERIORIRREGVOFS 0x4
28 #define EBLEVELDATAOPS_BOUNDARYIRREGVOFS 0x8
29 
30 #define EBLEVELDATAOPS_ALLVOFS (EBLEVELDATAOPS_INTERIORREGVOFS | \
31  EBLEVELDATAOPS_BOUNDARYREGVOFS | \
32  EBLEVELDATAOPS_INTERIORIRREGVOFS | \
33  EBLEVELDATAOPS_BOUNDARYIRREGVOFS )
34 
35 #define EBLEVELDATAOPS_REGULARVOFS (EBLEVELDATAOPS_INTERIORREGVOFS | \
36  EBLEVELDATAOPS_BOUNDARYREGVOFS )
37 
38 #define EBLEVELDATAOPS_IRREGULARVOFS (EBLEVELDATAOPS_INTERIORIRREGVOFS | \
39  EBLEVELDATAOPS_BOUNDARYIRREGVOFS )
40 
41 #define EBLEVELDATAOPS_BOUNDARYVOFS (EBLEVELDATAOPS_BOUNDARYREGVOFS | \
42  EBLEVELDATAOPS_IRREGULARVOFS )
43 
44 ///
45 /**
46  Repository of useful EB functions over a level. All functions are static so just
47  use EBLevelDataOps::blah(...);
48  */
50 {
51 public:
53  {
54  }
55 
57  {
58  }
59 
60  static bool checkForBogusNumbers(const LevelData<EBFluxFAB> & a_data);
61  static bool checkForBogusNumbers(const LevelData<EBCellFAB> & a_data);
62 
63  ///
64  /**
65  If a_interpolateToCentroid = true. first do cell centered average on grown box. then interpolate to centroids.
66  Otherwise just do cell centered averaging. This does not do anything special about components (the way mac averaging
67  does). Every component is treated as face centered value = average of adjacent cell values.
68  ***/
69  static void averageCellToFace(EBFaceFAB & a_fluxData,
70  const EBCellFAB & a_cellData,
71  const Box & a_grid,
72  const EBISBox & a_ebisl,
73  const ProblemDomain & a_domain,
74  int isrc, int idst, int inco,
75  bool a_interpolateToCentroid);
76 
77 
78  static void checkData(const LevelData<EBCellFAB>&a_data, const string& label);
79 
80  static void checkData(const LevelData<EBFluxFAB>&a_data, const string& label);
81 
82  ///
83  static void plus(LevelData<EBCellFAB> & a_dst,
84  const LevelData<EBCellFAB> & a_src,
85  int srccomp, int dstcomp, int numcomp);
86  ///
87  /**
88  straightforward average from cells to faces over components faceval = half(hival + loval).
89  at domain boundaries, just use cell centered value. nothing crazy
90  about ghost cells either.
91  */
92  static void faceCenteredAverageCellsToFaces(EBFaceFAB & a_faceData,
93  const EBCellFAB & a_cellData,
94  const Box & ccFluxBox,
95  const EBISBox & a_ebisBox,
96  const ProblemDomain & a_domain,
97  int isrc, int idst, int inco);
98  ///
99  /**
100  If a_interpolateToCentroid = true. first do cell centered average on grown box. then interpolate to centroids.
101  Otherwise just do cell centered averaging. This does not do anything special about components (the way mac averaging
102  does). Every component is treated as face centered value = average of adjacent cell values.
103  **/
104  static void averageCellToFace(LevelData<EBFluxFAB>& a_fluxData,
105  const LevelData<EBCellFAB>& a_cellData,
106  const DisjointBoxLayout& a_grids,
107  const EBISLayout& a_ebisl,
108  const ProblemDomain& a_domain,
109  int isrc, int idst, int inco,
110  bool a_interpolateToCentroid);
111  ///
112  /**
113  */
114  static void pruneCoveredBoxes(Vector<Box>& a_boxes,
115  const ProblemDomain& a_domain,
116  const EBIndexSpace* a_ebisPtr,
117  const int& a_ghosts = 0);
118 
119  ///
120  /**
121  */
122  static int parallelSum(const int& a_value);
123 
124  ///
125  /**
126  */
127  static long long parallelSum(const long long& a_value);
128 
129  ///
130  /**
131  */
132  static Real parallelSum(const Real& a_value);
133 
134  ///
135  /**
136  */
137  static int parallelMin(const int& a_value);
138 
139  ///
140  /**
141  */
142  static int parallelMax(const int& a_value);
143 
144  ///
145  /**
146  */
147  static Real parallelMin(const Real& a_value);
148 
149  ///
150  /**
151  */
152  static Real parallelMax(const Real& a_value);
153 
154 
155  ///
156  /**
157  */
158  static void
160  const LevelData<EBCellFAB>& a_cellData,
161  const DisjointBoxLayout& a_grids,
162  const EBISLayout& a_ebisl,
163  const ProblemDomain& a_domain,
164  const int& a_comp);
165 
166 
167  ///
168  /**
169  */
170  static void
172  const LevelData<EBCellFAB>& a_cellData,
173  const DisjointBoxLayout& a_grids,
174  const EBISLayout& a_ebisl,
175  const ProblemDomain& a_domain);
176 
177 
178  ///
179  /**
180  */
181  static void exchangeAll(LevelData<EBCellFAB>& a_phi);
182 
183  ///
184  /**
185  */
186  static void exchangeCorners(LevelData<EBCellFAB>& a_data,
187  const ProblemDomain& a_domain);
188 
189  ///
190  /**
191  */
192  static void exchangeComp(LevelData<EBCellFAB>& a_data,
193  const int& a_comp);
194 
195 
196  ///
197  /**
198  */
199  static void exchangeAll(LevelData<EBFluxFAB>& a_phi);
200 
201 
202  ///
203  /**
204  */
205  static void exchangeComp(LevelData<EBFluxFAB>& a_data,
206  const int& a_comp);
207 
208 
209  ///
210  /**
211  */
212  static void setIrregVal(LevelData<EBCellFAB>& a_data,
213  const DisjointBoxLayout& a_dbl,
214  const EBISLayout& a_ebisl,
215  const Real& a_value);
216 
217  ///
218  /**
219  */
220  static bool checkNANINF(const LevelData<EBCellFAB>&a_data,
221  const IntVect& a_iv1 = IntVect::Zero,
222  const IntVect& a_iv2 = IntVect::Zero,
223  const Real& a_shift = 0.0);
224 
225  ///
226  /**
227  */
228  static void getMaxMin(Real& a_maxVal,
229  Real& a_minVal,
230  const LevelData<EBCellFAB>& a_data,
231  const int& a_comp,
232  const bool& a_doAbs=false);
233 
234  ///
235  /**
236  If you also care where max and min live ON PROCESSOR.
237  max_vof and min_vof are for the locations of max and min
238  values ON PROCESSOR.
239  THERE IS NO PARALLEL COMNUNICATION HERE.
240  This is useful for debugging.
241  **/
242  static void getMaxMinOnProcessor(Real& a_max_val,
243  Real& a_min_val,
244  VolIndex& a_max_vof,
245  VolIndex& a_min_vof,
246  const LevelData<EBCellFAB>& a_data,
247  const int& a_comp,
248  const bool& a_doAbs=false);
249  ///
250  static void getMaxMin(Real& a_maxVal,
251  Real& a_minVal,
252  const LevelData<EBFluxFAB>& a_data,
253  const int& a_comp,
254  const int& a_idir,
255  const bool& a_doAbs=false);
256  ///
257  /**
258  */
259  static void setCoveredVal(LevelData<EBCellFAB>& a_lData,
260  const Real& a_value);
261 
262 
263  ///
264  /**
265  */
266  static void setCoveredVal(LevelData<EBCellFAB>& a_lData,
267  const int& a_comp,
268  const Real& a_value);
269 
270 
271  ///
272  /**
273  */
274  static void setCoveredVal(LevelData<EBFluxFAB>& a_lData,
275  const Real& a_value);
276 
277 
278  ///
279  /**
280  */
281  static void setCoveredVal(LevelData<EBFluxFAB>& a_lData,
282  const int& a_comp,
283  const Real& a_value);
284 
285  ///
286  /**
287  */
289  const DisjointBoxLayout& a_dbl,
290  const EBISLayout& a_ebisl);
291 
292 
293  ///
294  /**
295  */
297  const DisjointBoxLayout& a_dbl,
298  const EBISLayout& a_ebisl);
299 
300 
301  ///
302  /**
303  */
304  static void defineLevelData(LevelData<EBCellFAB>& a_levelData,
305  const EBISLayout& a_ebisl,
306  const DisjointBoxLayout& a_dbl,
307  const IntVect& a_ghosts,
308  const int& a_nComp);
309 
310 
311  ///
312  /**
313  */
314  static void defineLevelData(LevelData<EBFluxFAB>& a_levelData,
315  const EBISLayout& a_ebisl,
316  const DisjointBoxLayout& a_dbl,
317  const IntVect& a_ghosts,
318  const int& a_nComp);
319 
320 
321  ///
322  /**
323  */
324  static void setToZero(LevelData<EBCellFAB>& a_result);
325 
326 
327  ///
328  /**
329  */
330  static void setToZero(LevelData<EBFluxFAB>& a_result);
331 
332 
333  ///
334  /**
335  */
336  static void scale(LevelData<EBFluxFAB>& a_lhs,
337  const Real& a_scale) ;
338 
339  static void scale(LevelData<EBCellFAB>& a_lhs,
340  const LevelData<EBCellFAB>& a_scale) ;
341 
342 
343  ///
344  /**
345  */
346  static void scale(LevelData<EBCellFAB>& a_lhs,
347  const Real& a_scale) ;
348 
349 
350  ///
351  /**
352  */
353  static void scale(LevelData<EBCellFAB>& a_lhs,
354  const Real& a_scale,
355  const int& a_comp);
356 
357 
358  ///
359  /**
360  */
361  static void setVal(LevelData<EBCellFAB>& a_result,
362  const Real& a_value);
363 
364  ///
365  /**
366  */
367  static void setVal(LevelData<BaseIVFAB<Real> >& a_result,
368  const Real& a_value);
369 
370  ///
371  /**
372  */
373  static void setVal(LevelData<EBCellFAB>& a_result,
374  const Real& a_value,
375  const int& a_comp);
376 
377  ///
378  /**
379  */
380  static void setVal(LevelData<EBFluxFAB>& a_result,
381  const Real& a_value);
382 
383  ///
384  /**
385  */
386  static void assign(LevelData<EBCellFAB>& a_to,
387  const LevelData<EBCellFAB>& a_from,
388  const Interval& a_toInterva,
389  const Interval& a_fromInterval);
390 
391 
392  ///
393  /**
394  */
395  static void assign(LevelData<EBCellFAB>& a_lhs,
396  const LevelData<EBCellFAB>& a_rhs);
397 
398 
399  ///
400  /**
401  */
402  static void clone(LevelData<EBCellFAB>& a_lhs,
403  const LevelData<EBCellFAB>& a_rhs);
404 
405 
406  ///
407  /**
408  */
409  static void assign(LevelData<EBFluxFAB>& a_lhs,
410  const LevelData<EBFluxFAB>& a_rhs);
411 
412 
413  ///
414  /**
415  */
416  static void incr( LevelData<EBCellFAB>& a_lhs,
417  const LevelData<EBCellFAB>& a_rhs,
418  const Real& a_scale);
419 
420 
421  ///
422  /**
423  */
424  static void incr( LevelData<EBCellFAB>& a_lhs,
425  const Real& a_scale);
426 
427 
428  ///
429  /**
430  */
431  static void axby( LevelData<EBCellFAB>& a_lhs,
432  const LevelData<EBCellFAB>& a_x,
433  const LevelData<EBCellFAB>& a_y,
434  const Real& a,
435  const Real& b);
436 
437 
438  ///
439  /**
440 
441  static void axby( LevelData<EBCellFAB>& a_lhs,
442  const LevelData<EBCellFAB>& a_x,
443  const LevelData<EBCellFAB>& a_y,
444  const Real& a,
445  const Real& b,
446  const int& a_lhsComp,
447  const int& a_xComp,
448  const int& a_yComp);
449  */
450 
451 
452  ///
453  /**
454  */
455  static void sum(LevelData<EBCellFAB>& a_result,
456  const LevelData<EBCellFAB>& a_in1,
457  const LevelData<EBCellFAB>& a_in2);
458 
459 
460  ///
461  /**
462  */
463  static void addConstant(LevelData<EBCellFAB>& a_data,
464  const Real& a_constant);
465 
466 
467  ///
468  /**
469  */
470  static void power(LevelData<EBCellFAB>& a_result,
471  const Real& a_exponent,
472  const int& a_comp);
473 
474  ///
475  /**
476  */
477  static void product(LevelData<EBCellFAB>& a_result,
478  const LevelData<EBCellFAB>& a_in1,
479  const LevelData<EBCellFAB>& a_in2);
480 
481 
482  ///
483  /**
484  */
485  static void product(LevelData<EBFluxFAB>& a_result,
486  const LevelData<EBFluxFAB>& a_in1,
487  const LevelData<EBFluxFAB>& a_in2);
488 
489 
490  ///
491  /**
492  */
493  static void product(LevelData<EBCellFAB>& a_result,
494  const LevelData<EBCellFAB>& a_in1,
495  const LevelData<EBCellFAB>& a_in2,
496  const int& a_rComp,
497  const int& a_1Comp,
498  const int& a_2Comp);
499 
500 
501  ///
502  /**
503  */
504  static void invert(LevelData<EBCellFAB>& a_result,
505  const LevelData<EBCellFAB>& a_in1);
506 
507 
508  ///
509  /**
510  */
511  static void divideVectorByScalar(LevelData<EBCellFAB>& a_vectorOut,
512  const LevelData<EBCellFAB>& a_vectorIn,
513  const LevelData<EBCellFAB>& a_scalar);
514 
515  ///
516  /**
517  */
518  static void divide(LevelData<EBCellFAB>& a_result,
519  const LevelData<EBCellFAB>& a_in1,
520  const LevelData<EBCellFAB>& a_in2);
521 
522 
523  ///
524  /**
525  */
526  static void divide(LevelData<EBCellFAB>& a_result,
527  const LevelData<EBCellFAB>& a_in1,
528  const LevelData<EBCellFAB>& a_in2,
529  const int& a_rComp,
530  const int& a_1Comp,
531  const int& a_2Comp);
532 
533 
534  //! Multiply each datum in \a a_data by the largest area fraction
535  //! of the faces of the corresponding cell.
536  //! \param a_data The data to be multiplied by the maximum area
537  //! fraction.
538  static void areaFracScalingWeight(LevelData<EBCellFAB>& a_data);
539 
540  //! Multiply each datum in \a a_data by the area fraction scaling
541  //! of the corresponding cell.
542  //! \param a_data The data to be multiplied by the area fraction
543  //! scaling.
544  static void areaFracScalingWeight(EBCellFAB& a_data);
545 
546  //! Multiply each datum in \a a_data by the volume fraction of the
547  //! corresponding cell.
548  //! \param a_data The data to be multiplied by the volume fraction.
549  static void kappaWeight(LevelData<EBCellFAB>& a_data);
550 
551  //! Multiply each datum in \a a_data by the volume fraction of the
552  //! corresponding cell.
553  //! \param a_data The data to be multiplied by the volume fraction.
554  static void kappaWeight(EBCellFAB& a_data);
555 
556  //! Scale each datum in \a a_data by the product of \a a_scale with
557  //! the volume fraction of the corresponding cell.
558  //! \param a_data The data to be multiplied by the volume fraction.
559  //! \param a_scale The scale factor in the product.
560  static void kappaScale(LevelData<EBCellFAB>& a_data,
561  const Real& a_scale);
562 
563 
564  ///
565  /**
566  */
567  static Real kappaNorm(Real& a_volume,
568  const LevelData<EBCellFAB>& a_data,
569  int a_which,
570  const ProblemDomain& a_domain,
571  int a_p=2);
572 
573 
574  ///
575  /**
576  */
577  static Vector<Real> vectorKappaNorm(Real& a_volume,
578  const LevelData<EBCellFAB>& a_data,
579  int a_which,
580  const ProblemDomain& a_domain,
581  int a_p=2);
582 
583 
584  ///
585  /**
586  */
587  static Real noKappaNorm(Real& a_volume,
588  const LevelData<EBCellFAB>& a_data,
589  int a_which,
590  const ProblemDomain& a_domain,
591  int a_p=2);
592 
593 
594  ///
595  /**
596  */
597  static Real kappaDotProduct(Real& a_volume,
598  const LevelData<EBCellFAB>& a_data1,
599  const LevelData<EBCellFAB>& a_data2,
600  int a_which,
601  const ProblemDomain& a_domain);
602 
603 
604  ///
605  /**
606  */
607  static Real noKappaDotProduct(Real& a_volume,
608  const LevelData<EBCellFAB>& a_data1,
609  const LevelData<EBCellFAB>& a_data2,
610  int a_which,
611  const ProblemDomain& a_domain);
612 
613 
614  ///
615  /**
616  */
617  static Real kappaSumLevel(Real& a_volume,
618  const LevelData<EBCellFAB>& a_data,
619  int a_which,
620  const ProblemDomain& a_domain);
621 
622 
623  ///
624  /**
625  */
626  static Real noKappaSumLevel(Real& a_volume,
627  const LevelData<EBCellFAB>& a_data,
628  int a_which,
629  const ProblemDomain& a_domain);
630 
631 
632  ///
633  /**
634  */
635  static Vector<Real> vectorSumKappaPow(Real& a_volume,
636  const EBCellFAB& a_data, const Box& curBox,
637  int a_which,
638  const ProblemDomain& a_domain,
639  int a_p);
640 
641  ///
642  /**
643  */
644  static Real sumKappaPow(Real& a_volume,
645  const EBCellFAB& a_data, const Box& a_region,
646  int a_which,
647  const ProblemDomain& a_domain,
648  int a_p);
649 
650 
651  ///
652  /**
653  */
654  static Real sumNoKappaPow(Real& a_volume,
655  const EBCellFAB& a_data,const Box& a_region,
656  int a_which,
657  const ProblemDomain& a_domain,
658  int a_p);
659 
660 
661  ///
662  /**
663  */
664  static Real sumKappaDotProduct(Real& a_volume,
665  const EBCellFAB& a_data1,
666  const EBCellFAB& a_data2,
667  const Box& a_region,
668  int a_which,
669  const ProblemDomain& a_domain);
670 
671  ///
672  /**
673  */
674  static Real sumKappaDotProductAllCells(Real& a_volume,
675  const EBCellFAB& a_data1,
676  const EBCellFAB& a_data2,
677  const Box& a_region,
678  int a_which,
679  const ProblemDomain& a_domain);
680  ///
681  /**
682  */
683  static Real sumNoKappaDotProduct(Real& a_volume,
684  const EBCellFAB& a_data1,
685  const EBCellFAB& a_data2,const Box& a_region,
686  int a_which,
687  const ProblemDomain& a_domain);
688 
689 
690  ///
691  /**
692  */
693  static Real sumKappa(Real& a_volume,
694  const EBCellFAB& a_data,const Box& a_region,
695  int a_which,
696  const ProblemDomain& a_domain);
697 
698 
699  ///
700  /**
701  */
702  static Real sumNoKappa(Real& a_volume,
703  const EBCellFAB& a_data,const Box& a_region,
704  int a_which,
705  const ProblemDomain& a_domain);
706 
707  ///
708 
709  ///
710  /**
711  */
712  static void
713  averageCellToFace(EBFaceFAB& a_faceData,
714  const EBCellFAB& a_cellData,
715  const EBGraph& a_ebGraph,
716  const Box& a_dblBox,
717  const int& a_ghostFlux,
718  const int& a_idir,
719  const ProblemDomain& a_domain,
720  const int& a_cellComp,
721  const int& a_faceComp);
722 
723 
724  ///
725  /**
726  */
727  static void gatherBroadCast(Real& a_accum, Real& a_volume, const int& a_p);
728 
729  ///
730  /**
731  */
732  static void gatherBroadCast(Vector<Real>& a_accum, Real& a_volume, const int& a_p);
733 
734 
735  ///
736  /**
737  */
738  static Real sum(const LevelData<EBCellFAB> & a_data,
739  const DisjointBoxLayout & a_grids,
740  const EBISLayout & a_ebisl,
741  const IntVectSet & a_ivsExclude,
742  int a_comp,
743  bool a_mutiplyByKappa);
744 private:
745 
746 };
747 #include "NamespaceFooter.H"
748 #endif
static bool checkNANINF(const LevelData< EBCellFAB > &a_data, const IntVect &a_iv1=IntVect::Zero, const IntVect &a_iv2=IntVect::Zero, const Real &a_shift=0.0)
static void copyToMultiVofsFromRegFAB(LevelData< EBCellFAB > &a_data, const DisjointBoxLayout &a_dbl, const EBISLayout &a_ebisl)
static void checkData(const LevelData< EBCellFAB > &a_data, const string &label)
static void plus(LevelData< EBCellFAB > &a_dst, const LevelData< EBCellFAB > &a_src, int srccomp, int dstcomp, int numcomp)
static void averageCellToFaces(LevelData< EBFluxFAB > &a_fluxData, const LevelData< EBCellFAB > &a_cellData, const DisjointBoxLayout &a_grids, const EBISLayout &a_ebisl, const ProblemDomain &a_domain, const int &a_comp)
static void averageMultiVofsToRegFAB(LevelData< EBCellFAB > &a_data, const DisjointBoxLayout &a_dbl, const EBISLayout &a_ebisl)
static Vector< Real > vectorSumKappaPow(Real &a_volume, const EBCellFAB &a_data, const Box &curBox, int a_which, const ProblemDomain &a_domain, int a_p)
An irregular domain on an integer lattice.
Definition: IntVectSet.H:44
static Real sumNoKappa(Real &a_volume, const EBCellFAB &a_data, const Box &a_region, int a_which, const ProblemDomain &a_domain)
A class to facilitate interaction with physical boundary conditions.
Definition: ProblemDomain.H:141
Definition: EBIndexSpace.H:50
static void averageCellToFace(EBFaceFAB &a_fluxData, const EBCellFAB &a_cellData, const Box &a_grid, const EBISBox &a_ebisl, const ProblemDomain &a_domain, int isrc, int idst, int inco, bool a_interpolateToCentroid)
static void kappaWeight(LevelData< EBCellFAB > &a_data)
static Real kappaDotProduct(Real &a_volume, const LevelData< EBCellFAB > &a_data1, const LevelData< EBCellFAB > &a_data2, int a_which, const ProblemDomain &a_domain)
static void incr(LevelData< EBCellFAB > &a_lhs, const LevelData< EBCellFAB > &a_rhs, const Real &a_scale)
static void defineLevelData(LevelData< EBCellFAB > &a_levelData, const EBISLayout &a_ebisl, const DisjointBoxLayout &a_dbl, const IntVect &a_ghosts, const int &a_nComp)
static void kappaScale(LevelData< EBCellFAB > &a_data, const Real &a_scale)
static void divideVectorByScalar(LevelData< EBCellFAB > &a_vectorOut, const LevelData< EBCellFAB > &a_vectorIn, const LevelData< EBCellFAB > &a_scalar)
static void power(LevelData< EBCellFAB > &a_result, const Real &a_exponent, const int &a_comp)
Definition: EBISBox.H:46
static Real sumKappaDotProduct(Real &a_volume, const EBCellFAB &a_data1, const EBCellFAB &a_data2, const Box &a_region, int a_which, const ProblemDomain &a_domain)
static void faceCenteredAverageCellsToFaces(EBFaceFAB &a_faceData, const EBCellFAB &a_cellData, const Box &ccFluxBox, const EBISBox &a_ebisBox, const ProblemDomain &a_domain, int isrc, int idst, int inco)
static int parallelSum(const int &a_value)
static void pruneCoveredBoxes(Vector< Box > &a_boxes, const ProblemDomain &a_domain, const EBIndexSpace *a_ebisPtr, const int &a_ghosts=0)
Definition: EBFaceFAB.H:28
Geometric description within a box.
Definition: EBGraph.H:427
static void scale(LevelData< EBFluxFAB > &a_lhs, const Real &a_scale)
static void addConstant(LevelData< EBCellFAB > &a_data, const Real &a_constant)
static Real sumNoKappaDotProduct(Real &a_volume, const EBCellFAB &a_data1, const EBCellFAB &a_data2, const Box &a_region, int a_which, const ProblemDomain &a_domain)
static void averageCellToFacesMAC(LevelData< EBFluxFAB > &a_fluxData, const LevelData< EBCellFAB > &a_cellData, const DisjointBoxLayout &a_grids, const EBISLayout &a_ebisl, const ProblemDomain &a_domain)
static Real sumKappa(Real &a_volume, const EBCellFAB &a_data, const Box &a_region, int a_which, const ProblemDomain &a_domain)
static Real noKappaDotProduct(Real &a_volume, const LevelData< EBCellFAB > &a_data1, const LevelData< EBCellFAB > &a_data2, int a_which, const ProblemDomain &a_domain)
static void areaFracScalingWeight(LevelData< EBCellFAB > &a_data)
static Real sumKappaDotProductAllCells(Real &a_volume, const EBCellFAB &a_data1, const EBCellFAB &a_data2, const Box &a_region, int a_which, const ProblemDomain &a_domain)
static void exchangeComp(LevelData< EBCellFAB > &a_data, const int &a_comp)
static void sum(LevelData< EBCellFAB > &a_result, const LevelData< EBCellFAB > &a_in1, const LevelData< EBCellFAB > &a_in2)
Structure for passing component ranges in code.
Definition: Interval.H:23
static Real noKappaNorm(Real &a_volume, const LevelData< EBCellFAB > &a_data, int a_which, const ProblemDomain &a_domain, int a_p=2)
Definition: EBCellFAB.H:29
static void setToZero(LevelData< EBCellFAB > &a_result)
static Real sumNoKappaPow(Real &a_volume, const EBCellFAB &a_data, const Box &a_region, int a_which, const ProblemDomain &a_domain, int a_p)
double Real
Definition: REAL.H:33
static void clone(LevelData< EBCellFAB > &a_lhs, const LevelData< EBCellFAB > &a_rhs)
A BoxLayout that has a concept of disjointedness.
Definition: DisjointBoxLayout.H:30
static void getMaxMin(Real &a_maxVal, Real &a_minVal, const LevelData< EBCellFAB > &a_data, const int &a_comp, const bool &a_doAbs=false)
static void setCoveredVal(LevelData< EBCellFAB > &a_lData, const Real &a_value)
static void gatherBroadCast(Real &a_accum, Real &a_volume, const int &a_p)
static const IntVect Zero
Definition: IntVect.H:658
static void exchangeAll(LevelData< EBCellFAB > &a_phi)
static void exchangeCorners(LevelData< EBCellFAB > &a_data, const ProblemDomain &a_domain)
static Real kappaSumLevel(Real &a_volume, const LevelData< EBCellFAB > &a_data, int a_which, const ProblemDomain &a_domain)
A Rectangular Domain on an Integer Lattice.
Definition: Box.H:469
EBLevelDataOps()
Definition: EBLevelDataOps.H:52
~EBLevelDataOps()
Definition: EBLevelDataOps.H:56
static void product(LevelData< EBCellFAB > &a_result, const LevelData< EBCellFAB > &a_in1, const LevelData< EBCellFAB > &a_in2)
An integer Vector in SpaceDim-dimensional space.
Definition: CHArray.H:42
static Real kappaNorm(Real &a_volume, const LevelData< EBCellFAB > &a_data, int a_which, const ProblemDomain &a_domain, int a_p=2)
static int parallelMin(const int &a_value)
Volume of Fluid Index.
Definition: VolIndex.H:31
static void axby(LevelData< EBCellFAB > &a_lhs, const LevelData< EBCellFAB > &a_x, const LevelData< EBCellFAB > &a_y, const Real &a, const Real &b)
Definition: EBISLayout.H:39
static Vector< Real > vectorKappaNorm(Real &a_volume, const LevelData< EBCellFAB > &a_data, int a_which, const ProblemDomain &a_domain, int a_p=2)
Definition: EBLevelDataOps.H:49
static void assign(LevelData< EBCellFAB > &a_to, const LevelData< EBCellFAB > &a_from, const Interval &a_toInterva, const Interval &a_fromInterval)
static void setVal(LevelData< EBCellFAB > &a_result, const Real &a_value)
static Real noKappaSumLevel(Real &a_volume, const LevelData< EBCellFAB > &a_data, int a_which, const ProblemDomain &a_domain)
static Real sumKappaPow(Real &a_volume, const EBCellFAB &a_data, const Box &a_region, int a_which, const ProblemDomain &a_domain, int a_p)
static bool checkForBogusNumbers(const LevelData< EBFluxFAB > &a_data)
static void setIrregVal(LevelData< EBCellFAB > &a_data, const DisjointBoxLayout &a_dbl, const EBISLayout &a_ebisl, const Real &a_value)
static int parallelMax(const int &a_value)
static void getMaxMinOnProcessor(Real &a_max_val, Real &a_min_val, VolIndex &a_max_vof, VolIndex &a_min_vof, const LevelData< EBCellFAB > &a_data, const int &a_comp, const bool &a_doAbs=false)
static void divide(LevelData< EBCellFAB > &a_result, const LevelData< EBCellFAB > &a_in1, const LevelData< EBCellFAB > &a_in2)
static void invert(LevelData< EBCellFAB > &a_result, const LevelData< EBCellFAB > &a_in1)