Chombo + EB  3.2
EBAdvectPatchIntegrator.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 _EBADVECTPATCHINTEGRATOR_H_
12 #define _EBADVECTPATCHINTEGRATOR_H_
13 
14 #include "Box.H"
15 #include "IntVectSet.H"
16 #include "Vector.H"
17 #include "CH_HDF5.H"
18 #include "EBCellFAB.H"
19 #include "EBFluxFAB.H"
20 #include "EBISBox.H"
21 #include "BaseIVFAB.H"
22 #include "EBPhysIBC.H"
23 #include "EBPhysIBCFactory.H"
24 #include "Stencils.H"
25 #include "AggStencil.H"
26 #include "NamespaceHeader.H"
27 
28 #define EBAPI_TOL 1.e-12
29 
30 ///
31 /**
32  This does the same as EBPatchAdvect but presumably with less memory footprint.
33  and with a somewhat more sane interface.
34 
35  I have pared down the EBPatchGodunov interface and tried to optimize for minimal
36  memory without completely destroying performance.
37 */
39 {
40 public:
41 
42  ///boundary condions are set via setEBPhysIBC
43  EBAdvectPatchIntegrator(const Box& a_validBox,
44  const EBISBox& a_ebisBox,
45  const IntVectSet& a_coarseFineIVS,
46  const ProblemDomain& a_domain,
47  const RealVect& a_dx,
48  bool a_useSlopeLimiting);
49 
51  {;}
52 
53 
54  void
55  extrapolatePrim(EBFluxFAB& a_flux,
56  Vector<BaseIVFAB<Real> * >& a_coveredFluxMinu,
57  Vector<BaseIVFAB<Real> * >& a_coveredFluxPlus,
58  const Vector<IntVectSet >& a_coveredSetsMinu,
59  const Vector<IntVectSet >& a_coveredSetsPlus,
60  const Vector<Vector<VolIndex> >& a_coveredFaceMinu,
61  const Vector<Vector<VolIndex> >& a_coveredFacePlus,
62  const EBCellFAB& a_consState,
63  const EBCellFAB& a_source,
64  const DataIndex& a_dit,
65  const Real& a_time,
66  const Real& a_dt);
67 
68  ///
69  /**
70  */
71  void
72  advectiveDerivative(EBCellFAB& a_uDotDelRho,
73  const EBFluxFAB& a_faceRho,
74  const EBFluxFAB& a_faceVel,
75  const Vector<BaseIVFAB<Real>*> & a_coveredRhoLo,
76  const Vector<BaseIVFAB<Real>*> & a_coveredRhoHi,
77  const Vector<BaseIVFAB<Real>*> & a_coveredVelLo,
78  const Vector<BaseIVFAB<Real>*> & a_coveredVelHi,
79  const Vector<Vector<VolIndex> >& a_coveredFaceLo,
80  const Vector<Vector<VolIndex> >& a_coveredFaceHi,
81  const Box& a_box);
82 
83 
84  ///
85  /**
86  Version that leaves out the covered face stuff. This is wrong near the EB but
87  the codes that use it overwrite the EB stuff anyway.
88  */
89  void
90  advectiveDerivative(EBCellFAB& a_uDotDelRho,
91  const EBFluxFAB& a_faceRho,
92  const EBFluxFAB& a_faceVel,
93  const Box& a_box);
94  ///
95  /**
96  */
97  void
99  {
102  m_isBCSet = true;
103  }
104 
105  void setVelocities(const EBCellFAB& a_normalVel,
106  const EBFluxFAB& a_advectionVel)
107  {
108  m_normalVelPtr = &a_normalVel;
109  m_advectionVelPtr = &a_advectionVel;
110  m_isVelSet = true;
111  }
112 
113 
114  /**
115  For when EBFlux is always zero.
116  */
117  void
119  const BaseIFFAB<Real> a_centroidFlux[SpaceDim],
120  const IntVectSet& a_ivs);
121 
122 
123  void
125  const BaseIFFAB<Real> a_centroidFlux[SpaceDim],
126  const BaseIVFAB<Real>& a_ebIrregFlux,
127  const IntVectSet& a_ivs);
128 
129  void
131  const BaseIFFAB<Real>* const a_fluxInterpolant[SpaceDim],
132  const IntVectSet& a_irregIVS);
133 
134  void
135  averageVelToCC(EBCellFAB& a_normalVel,
136  const EBFluxFAB& a_advectionVel,
137  const Vector<BaseIVFAB<Real> * >& a_coveredVeloLo,
138  const Vector<BaseIVFAB<Real> * >& a_coveredVeloHi,
139  const Vector<Vector<VolIndex> >& a_coveredFaceLo,
140  const Vector<Vector<VolIndex> >& a_coveredFaceHi,
141  const Box& a_box) const;
142 
143 
144  void
145  extrapolateBCG(EBFluxFAB& a_flux,
146  const EBCellFAB& a_consState,
147  const EBCellFAB& a_source,
148  const DataIndex& a_dit,
149  const Real& a_time,
150  const Real& a_dt);
151 
152 
153  void
154  mvExtrapolateBCG(EBFluxFAB & a_flux,
155  const EBCellFAB & a_consState,
156  const EBFluxFAB & a_advectionVel,
157  const EBCellFAB & a_normalVel,
158  const EBCellFAB & a_source,
159  const Vector<RefCountedPtr<EBPhysIBCFactory> > & a_allAdvectBC,
160  const DataIndex & a_dit,
161  const Real & a_time,
162  const Real & a_dt,
163  const int & a_doingVel);
164 
165  ///here are a couple of awful hooks necessary to get the minutiae of the algorithm correct
166  static void setCurComp(int a_curComp)
167  {
168  s_curComp = a_curComp;
169  }
170  ///
171  static void setDoingVel(int a_yesorno)
172  {
173  s_doingVel = a_yesorno;
174  }
175 
176  static int getDoingVel()
177  {
178  return s_doingVel;
179  }
180  static int getCurComp()
181  {
182  return s_curComp;
183  }
184 
185  ///
186  /**
187  This is called by EBAMRNoSubCycle. The insane version that uses cell-centered
188  data holders for face data (the plus-minus stuff) is called internally.
189  */
190  void
191  extrapToCoveredFaces(BaseIVFAB<Real>& a_extendedPrim,
192  const EBFaceFAB& a_primFace,
193  const EBCellFAB& a_primState,
194  const Vector<VolIndex>& a_coveredFaces,
195  const int& a_faceDir,
196  const Side::LoHiSide& a_sd,
197  const Box& a_box);
198 
199  void setMaxMin(const Real& a_maxVal,
200  const Real& a_minVal)
201  {
202  m_isMaxMinSet = true;
203  m_maxVal = a_maxVal;
204  m_minVal = a_minVal;
205  }
206 private:
214 
216  bool m_isBCSet;
224 
229 
230  ///these exist because special things have to be done for velocity
231  static int s_curComp;
232  static int s_doingVel;
233 
234  /// weak construction is bad.
236 
237  /// internal functions (all the madness below probably needs to get cleaned up)
238 
239  ///
240  void extrapolatePrim3D(EBCellFAB a_primMinu[SpaceDim],
241  EBCellFAB a_primPlus[SpaceDim],
242  const EBCellFAB& a_consState,
243  const EBCellFAB& a_source,
244  const DataIndex& a_dit,
245  const Real& a_time,
246  const Real& a_dt);
247 
248  ///
249  void
250  extrapolateBCG(EBCellFAB a_primMinu[SpaceDim],
251  EBCellFAB a_primPlus[SpaceDim],
252  const EBCellFAB& a_consState,
253  const EBCellFAB& a_source,
254  const DataIndex& a_dit,
255  const Real& a_time,
256  const Real& a_dt);
257 
258  ///
259  void extrapolatePrim2D(EBCellFAB a_primMinu[SpaceDim],
260  EBCellFAB a_primPlus[SpaceDim],
261  const EBCellFAB& a_consState,
262  const EBCellFAB& a_source,
263  const DataIndex& a_dit,
264  const Real& a_time,
265  const Real& a_dt);
266 
267  ///
268  void
269  riemann(BaseIVFAB<Real>& a_coveredPrim,
270  const BaseIVFAB<Real>& a_exteState,
271  const EBCellFAB& a_primState,
272  const Vector<VolIndex>& a_vofset,
273  const int& a_faceDir,
274  const Side::LoHiSide& a_sd,
275  const Box& a_box);
276 
277  ///
278  void
279  riemann(EBFaceFAB& a_primGdnv,
280  const EBCellFAB& a_primLeft,
281  const EBCellFAB& a_primRigh,
282  const int& a_faceDir,
283  const Box& a_box);
284 
285  ///
286  FaceStencil getInterpStencil(const FaceIndex& a_face) const;
287 
288 
289  void
291  const EBFaceFAB& a_primFace,
292  const EBCellFAB& a_primState,
293  const int& a_faceDir,
294  const VolIndex& a_vof,
295  const RealVect& a_normal,
296  const Side::LoHiSide& a_sd,
297  const int& a_numPrim);
298 
299  void
301  const EBFaceFAB& a_primFace,
302  const EBCellFAB& a_primState,
303  const int& a_faceDir,
304  const VolIndex& a_vof,
305  const RealVect& a_normal,
306  const Side::LoHiSide& a_sd,
307  const int& a_numPrim);
308 
309  ///
310  /**
311  This insane version called internally. The primMinu and primPlus stuff
312  are really face centered data but because they *came* from cell-centered data
313  they are left there.
314  */
315  void
316  extrapToCoveredFaces(BaseIVFAB<Real>& a_extendedPrim,
317  const EBCellFAB& a_primMinu,
318  const EBCellFAB& a_primPlus,
319  const EBCellFAB& a_primState,
320  const Vector<VolIndex>& a_coveredFaces,
321  const int& a_faceDir,
322  const Side::LoHiSide& a_sd,
323  const Box& a_box);
324 
325  void
327  const EBCellFAB& a_primMinu,
328  const EBCellFAB& a_primPlus,
329  const EBCellFAB& a_primState,
330  const int& a_faceDir,
331  const VolIndex& a_vof,
332  const RealVect& a_normal,
333  const Side::LoHiSide& a_sd,
334  const int& a_numPrim);
335 
336  void
338  const EBCellFAB& a_primMinu,
339  const EBCellFAB& a_primPlus,
340  const EBCellFAB& a_primState,
341  const int& a_faceDir,
342  const VolIndex& a_vof,
343  const RealVect& a_normal,
344  const Side::LoHiSide& a_sd,
345  const int& a_numPrim);
346 
347 
348  /// floors if m_isMaxMinSet
349  void
350  floorPrimitives(EBCellFAB& a_primState,
351  const Box& a_box);
352 
353  /// floors if m_isMaxMinSet
354  void
355  floorPrimitives(BaseIVFAB<Real>& a_primState,
356  const IntVectSet& a_set);
357 
358  void
360  const VolIndex& a_vof,
361  const EBCellFAB& a_primState,
362  const int& a_dir,
363  const int& a_ivar);
364 
365  void
366  pointGetSlopes(Real& a_dql,
367  Real& a_dqr,
368  Real& a_dqc,
369  bool& a_hasFacesLeft,
370  bool& a_hasFacesRigh,
371  const VolIndex& a_vof,
372  const EBCellFAB& a_primState,
373  const int& a_dir,
374  const int& a_ivar,
375  const bool& a_verbose);
376 
377  Real
378  bilinearFunc(const Real a_WVal[2][2],
379  const Real& a_xd1,
380  const Real& a_xd2);
381 
382  void
383  pointGetSlopesUpwind(Real& a_dql,
384  Real& a_dqr,
385  Real& a_dqc,
386  bool& a_hasFacesLeft,
387  bool& a_hasFacesRigh,
388  const VolIndex& a_vof,
389  const EBCellFAB& a_primState,
390  const int& a_dir,
391  const int& a_ivar,
392  const bool& a_verbose);
393 
394  ///and this is the *simplified* version
395  void
397  EBCellFAB a_primPlus[SpaceDim],
398  EBFaceFAB a_fluxOne[SpaceDim],
399  BaseIVFAB<Real> a_coveredFluxNormMinu[SpaceDim],
400  BaseIVFAB<Real> a_coveredFluxNormPlus[SpaceDim],
401  Vector<VolIndex> a_coveredFaceNormMinu[SpaceDim],
402  Vector<VolIndex> a_coveredFaceNormPlus[SpaceDim],
403  const EBCellFAB& a_primState,
404  const EBCellFAB& a_source,
405  const DataIndex& a_dit,
406  const Real & a_time,
407  const Real & a_dt);
408 
409  ///options for 4th ordeer slopes and flattening removed
410  void
411  slope(EBCellFAB& a_slopePrim,
412  const EBCellFAB& a_primState,
413  const int& a_dir,
414  const Box& a_box);
415 
416 
417  void
418  finalExtrap2D(EBCellFAB a_primMinu[SpaceDim],
419  EBCellFAB a_primPlus[SpaceDim],
420  const BaseIVFAB<Real> a_coveredFluxNormMinu[SpaceDim],
421  const BaseIVFAB<Real> a_coveredFluxNormPlus[SpaceDim],
422  const Vector<VolIndex> a_coveredFaceNormMinu[SpaceDim],
423  const Vector<VolIndex> a_coveredFaceNormPlus[SpaceDim],
424  const EBFaceFAB a_fluxOne[SpaceDim],
425  const EBCellFAB& a_primState,
426  const Real & a_time,
427  const Real & a_dt);
428 
429  //and it goes on like this...
430  void
431  finalExtrap3D(EBCellFAB a_primMinu[SpaceDim],
432  EBCellFAB a_primPlus[SpaceDim],
433  const BaseIVFAB<Real> a_coveredFluxMinu3D[SpaceDim][SpaceDim],
434  const BaseIVFAB<Real> a_coveredFluxPlus3D[SpaceDim][SpaceDim],
435  const EBFaceFAB a_fluxTwo[SpaceDim][SpaceDim],
436  const EBCellFAB& a_primState,
437  const Real & a_time,
438  const Real & a_dt);
439 
440  void
442  BaseIVFAB<Real> a_coveredFluxMinu3D[SpaceDim][SpaceDim],
443  BaseIVFAB<Real> a_coveredFluxPlus3D[SpaceDim][SpaceDim],
444  const EBCellFAB a_primMinu[SpaceDim],
445  const EBCellFAB a_primPlus[SpaceDim],
446  const BaseIVFAB<Real> a_coveredFluxNormMinu[SpaceDim],
447  const BaseIVFAB<Real> a_coveredFluxNormPlus[SpaceDim],
448  const Vector<VolIndex> a_coveredFaceNormMinu[SpaceDim],
449  const Vector<VolIndex> a_coveredFaceNormPlus[SpaceDim],
450  const EBFaceFAB a_fluxOne[SpaceDim],
451  const EBCellFAB& a_primState,
452  const DataIndex& a_dit,
453  const Real & a_time,
454  const Real & a_dt);
455 
456  void
458  EBCellFAB a_primPlus[SpaceDim],
459  EBFaceFAB a_fluxOne[SpaceDim],
460  BaseIVFAB<Real> a_coveredFluxNormMinu[SpaceDim],
461  BaseIVFAB<Real> a_coveredFluxNormPlus[SpaceDim],
462  Vector<VolIndex> a_coveredFaceNormMinu[SpaceDim],
463  Vector<VolIndex> a_coveredFaceNormPlus[SpaceDim],
464  const EBCellFAB& a_primState,
465  const EBCellFAB& a_source,
466  const DataIndex& a_dit,
467  const Real & a_time,
468  const Real & a_dt);
469 
470 
471  void
472  normalPred(EBCellFAB& a_primLo,
473  EBCellFAB& a_primHi,
474  const EBCellFAB& a_primState,
475  const EBCellFAB& a_slopePrim,
476  const Real& a_scale,
477  const int& a_dir,
478  const Box& a_box);
479 
480  void
481  incrementWithSource(EBCellFAB& a_primState,
482  const EBCellFAB& a_source,
483  const Real& a_scale,
484  const Box& a_box) ;
485 
486  void
487  updatePrim(EBCellFAB& a_primMinu,
488  EBCellFAB& a_primPlus,
489  const EBFaceFAB& a_primFace,
490  const BaseIVFAB<Real>& a_coveredPrimMinu,
491  const BaseIVFAB<Real>& a_coveredPrimPlus,
492  const Vector<VolIndex>& a_coveredFaceMinu,
493  const Vector<VolIndex>& a_coveredFacePlus,
494  const int& a_faceDir,
495  const Box& a_box,
496  const Real& a_scale);
497 
498  void
499  upwindSlope(EBCellFAB& a_slopeUpWi,
500  const EBCellFAB& a_primState,
501  const int& a_dir,
502  const Box& a_box);
503 
504  void
505  transversePred(EBCellFAB& a_rhoLo,
506  EBCellFAB& a_rhoHi,
507  const EBCellFAB& a_rho,
508  const EBCellFAB& a_dRho,
509  const Real& a_dtbydx,
510  const int& a_dir,
511  const Box& a_box);
512 };
513 
514 #include "NamespaceFooter.H"
515 #endif
void mvExtrapolateBCG(EBFluxFAB &a_flux, const EBCellFAB &a_consState, const EBFluxFAB &a_advectionVel, const EBCellFAB &a_normalVel, const EBCellFAB &a_source, const Vector< RefCountedPtr< EBPhysIBCFactory > > &a_allAdvectBC, const DataIndex &a_dit, const Real &a_time, const Real &a_dt, const int &a_doingVel)
void pointExtrapToCovered2D(Vector< Real > &a_extrapVal, const EBFaceFAB &a_primFace, const EBCellFAB &a_primState, const int &a_faceDir, const VolIndex &a_vof, const RealVect &a_normal, const Side::LoHiSide &a_sd, const int &a_numPrim)
Definition: Stencils.H:181
An irregular domain on an integer lattice.
Definition: IntVectSet.H:44
A class to facilitate interaction with physical boundary conditions.
Definition: ProblemDomain.H:141
bool m_isMaxMinSet
Definition: EBAdvectPatchIntegrator.H:210
void consUndividedDivergence(BaseIVFAB< Real > &a_divF, const BaseIFFAB< Real > a_centroidFlux[SpaceDim], const IntVectSet &a_ivs)
const EBFluxFAB * m_advectionVelPtr
Definition: EBAdvectPatchIntegrator.H:207
virtual ~EBAdvectPatchIntegrator()
Definition: EBAdvectPatchIntegrator.H:50
one dimensional dynamic array
Definition: Vector.H:53
bool m_isVelSet
Definition: EBAdvectPatchIntegrator.H:209
Definition: FaceIndex.H:28
void extrapolateBCG(EBFluxFAB &a_flux, const EBCellFAB &a_consState, const EBCellFAB &a_source, const DataIndex &a_dit, const Real &a_time, const Real &a_dt)
void setMaxMin(const Real &a_maxVal, const Real &a_minVal)
Definition: EBAdvectPatchIntegrator.H:199
void doNormalDerivativeExtr2D(EBCellFAB a_primMinu[SpaceDim], EBCellFAB a_primPlus[SpaceDim], EBFaceFAB a_fluxOne[SpaceDim], BaseIVFAB< Real > a_coveredFluxNormMinu[SpaceDim], BaseIVFAB< Real > a_coveredFluxNormPlus[SpaceDim], Vector< VolIndex > a_coveredFaceNormMinu[SpaceDim], Vector< VolIndex > a_coveredFaceNormPlus[SpaceDim], const EBCellFAB &a_primState, const EBCellFAB &a_source, const DataIndex &a_dit, const Real &a_time, const Real &a_dt)
and this is the simplified version
void normalPred(EBCellFAB &a_primLo, EBCellFAB &a_primHi, const EBCellFAB &a_primState, const EBCellFAB &a_slopePrim, const Real &a_scale, const int &a_dir, const Box &a_box)
Definition: EBISBox.H:46
void slope(EBCellFAB &a_slopePrim, const EBCellFAB &a_primState, const int &a_dir, const Box &a_box)
options for 4th ordeer slopes and flattening removed
void extrapolatePrim2D(EBCellFAB a_primMinu[SpaceDim], EBCellFAB a_primPlus[SpaceDim], const EBCellFAB &a_consState, const EBCellFAB &a_source, const DataIndex &a_dit, const Real &a_time, const Real &a_dt)
void pointGetSlopesUpwind(Real &a_dql, Real &a_dqr, Real &a_dqc, bool &a_hasFacesLeft, bool &a_hasFacesRigh, const VolIndex &a_vof, const EBCellFAB &a_primState, const int &a_dir, const int &a_ivar, const bool &a_verbose)
void setVelocities(const EBCellFAB &a_normalVel, const EBFluxFAB &a_advectionVel)
Definition: EBAdvectPatchIntegrator.H:105
void interpolateFluxToCentroids(BaseIFFAB< Real > a_centroidFlux[SpaceDim], const BaseIFFAB< Real > *const a_fluxInterpolant[SpaceDim], const IntVectSet &a_irregIVS)
Definition: EBFaceFAB.H:28
Definition: EBAdvectPatchIntegrator.H:38
Real m_maxVal
Definition: EBAdvectPatchIntegrator.H:212
const int SpaceDim
Definition: SPACE.H:38
void finalExtrap2D(EBCellFAB a_primMinu[SpaceDim], EBCellFAB a_primPlus[SpaceDim], const BaseIVFAB< Real > a_coveredFluxNormMinu[SpaceDim], const BaseIVFAB< Real > a_coveredFluxNormPlus[SpaceDim], const Vector< VolIndex > a_coveredFaceNormMinu[SpaceDim], const Vector< VolIndex > a_coveredFaceNormPlus[SpaceDim], const EBFaceFAB a_fluxOne[SpaceDim], const EBCellFAB &a_primState, const Real &a_time, const Real &a_dt)
void pointGetSlopes(Real &a_dql, Real &a_dqr, Real &a_dqc, bool &a_hasFacesLeft, bool &a_hasFacesRigh, const VolIndex &a_vof, const EBCellFAB &a_primState, const int &a_dir, const int &a_ivar, const bool &a_verbose)
Vector< VolIndex > m_coveredFaceMinuG4[SpaceDim]
Definition: EBAdvectPatchIntegrator.H:228
A EBFaceFAB-like container for edge-centered fluxes.
Definition: EBFluxFAB.H:25
IntVectSet m_coveredSetsPlusG4[SpaceDim]
Definition: EBAdvectPatchIntegrator.H:225
RealVect m_dx
Definition: EBAdvectPatchIntegrator.H:220
void finalExtrap3D(EBCellFAB a_primMinu[SpaceDim], EBCellFAB a_primPlus[SpaceDim], const BaseIVFAB< Real > a_coveredFluxMinu3D[SpaceDim][SpaceDim], const BaseIVFAB< Real > a_coveredFluxPlus3D[SpaceDim][SpaceDim], const EBFaceFAB a_fluxTwo[SpaceDim][SpaceDim], const EBCellFAB &a_primState, const Real &a_time, const Real &a_dt)
Real m_minVal
Definition: EBAdvectPatchIntegrator.H:213
static int s_doingVel
Definition: EBAdvectPatchIntegrator.H:232
bool m_useLimiting
Definition: EBAdvectPatchIntegrator.H:211
void upwindSlope(EBCellFAB &a_slopeUpWi, const EBCellFAB &a_primState, const int &a_dir, const Box &a_box)
Definition: EBCellFAB.H:29
bool m_isBCSet
Definition: EBAdvectPatchIntegrator.H:216
double Real
Definition: REAL.H:33
void floorPrimitives(EBCellFAB &a_primState, const Box &a_box)
floors if m_isMaxMinSet
Box m_validBoxG4
Definition: EBAdvectPatchIntegrator.H:222
Vector< VolIndex > m_coveredFacePlusG4[SpaceDim]
Definition: EBAdvectPatchIntegrator.H:227
void updatePrim(EBCellFAB &a_primMinu, EBCellFAB &a_primPlus, const EBFaceFAB &a_primFace, const BaseIVFAB< Real > &a_coveredPrimMinu, const BaseIVFAB< Real > &a_coveredPrimPlus, const Vector< VolIndex > &a_coveredFaceMinu, const Vector< VolIndex > &a_coveredFacePlus, const int &a_faceDir, const Box &a_box, const Real &a_scale)
void doNormalDerivativeExtr3D(EBCellFAB a_primMinu[SpaceDim], EBCellFAB a_primPlus[SpaceDim], EBFaceFAB a_fluxOne[SpaceDim], BaseIVFAB< Real > a_coveredFluxNormMinu[SpaceDim], BaseIVFAB< Real > a_coveredFluxNormPlus[SpaceDim], Vector< VolIndex > a_coveredFaceNormMinu[SpaceDim], Vector< VolIndex > a_coveredFaceNormPlus[SpaceDim], const EBCellFAB &a_primState, const EBCellFAB &a_source, const DataIndex &a_dit, const Real &a_time, const Real &a_dt)
IntVectSet m_coveredSetsMinuG4[SpaceDim]
Definition: EBAdvectPatchIntegrator.H:226
LoHiSide
Definition: LoHiSide.H:27
void coveredExtrapSlopes(Real &a_dq, const VolIndex &a_vof, const EBCellFAB &a_primState, const int &a_dir, const int &a_ivar)
void incrementWithSource(EBCellFAB &a_primState, const EBCellFAB &a_source, const Real &a_scale, const Box &a_box)
void transversePred(EBCellFAB &a_rhoLo, EBCellFAB &a_rhoHi, const EBCellFAB &a_rho, const EBCellFAB &a_dRho, const Real &a_dtbydx, const int &a_dir, const Box &a_box)
ProblemDomain m_domain
Definition: EBAdvectPatchIntegrator.H:218
static int getDoingVel()
Definition: EBAdvectPatchIntegrator.H:176
Definition: EBPhysIBCFactory.H:25
IntVectSet m_cfivs
Definition: EBAdvectPatchIntegrator.H:221
void riemann(BaseIVFAB< Real > &a_coveredPrim, const BaseIVFAB< Real > &a_exteState, const EBCellFAB &a_primState, const Vector< VolIndex > &a_vofset, const int &a_faceDir, const Side::LoHiSide &a_sd, const Box &a_box)
virtual void define(const ProblemDomain &a_domain, const RealVect &a_dx)=0
A Rectangular Domain on an Integer Lattice.
Definition: Box.H:465
A Real vector in SpaceDim-dimensional space.
Definition: RealVect.H:41
Definition: DataIndex.H:112
Definition: BaseIFFAB.H:34
EBISBox m_ebisBox
Definition: EBAdvectPatchIntegrator.H:219
void extrapolatePrim3D(EBCellFAB a_primMinu[SpaceDim], EBCellFAB a_primPlus[SpaceDim], const EBCellFAB &a_consState, const EBCellFAB &a_source, const DataIndex &a_dit, const Real &a_time, const Real &a_dt)
internal functions (all the madness below probably needs to get cleaned up)
const EBCellFAB * m_normalVelPtr
Definition: EBAdvectPatchIntegrator.H:208
EBAdvectPatchIntegrator()
weak construction is bad.
void extrapToCoveredFaces(BaseIVFAB< Real > &a_extendedPrim, const EBFaceFAB &a_primFace, const EBCellFAB &a_primState, const Vector< VolIndex > &a_coveredFaces, const int &a_faceDir, const Side::LoHiSide &a_sd, const Box &a_box)
FaceStencil getInterpStencil(const FaceIndex &a_face) const
static int s_curComp
these exist because special things have to be done for velocity
Definition: EBAdvectPatchIntegrator.H:231
Box m_validBox
Definition: EBAdvectPatchIntegrator.H:217
RefCountedPtr< EBPhysIBC > m_bc
Definition: EBAdvectPatchIntegrator.H:215
Vector< VolIndex > m_irregVoFs
Definition: EBAdvectPatchIntegrator.H:223
Volume of Fluid Index.
Definition: VolIndex.H:31
void setEBPhysIBC(const EBPhysIBCFactory &a_bc)
Definition: EBAdvectPatchIntegrator.H:98
virtual EBPhysIBC * create() const =0
Real bilinearFunc(const Real a_WVal[2][2], const Real &a_xd1, const Real &a_xd2)
void extrapolatePrim(EBFluxFAB &a_flux, Vector< BaseIVFAB< Real > * > &a_coveredFluxMinu, Vector< BaseIVFAB< Real > * > &a_coveredFluxPlus, const Vector< IntVectSet > &a_coveredSetsMinu, const Vector< IntVectSet > &a_coveredSetsPlus, const Vector< Vector< VolIndex > > &a_coveredFaceMinu, const Vector< Vector< VolIndex > > &a_coveredFacePlus, const EBCellFAB &a_consState, const EBCellFAB &a_source, const DataIndex &a_dit, const Real &a_time, const Real &a_dt)
void do111coupling(EBFaceFAB a_fluxTwo[SpaceDim][SpaceDim], BaseIVFAB< Real > a_coveredFluxMinu3D[SpaceDim][SpaceDim], BaseIVFAB< Real > a_coveredFluxPlus3D[SpaceDim][SpaceDim], const EBCellFAB a_primMinu[SpaceDim], const EBCellFAB a_primPlus[SpaceDim], const BaseIVFAB< Real > a_coveredFluxNormMinu[SpaceDim], const BaseIVFAB< Real > a_coveredFluxNormPlus[SpaceDim], const Vector< VolIndex > a_coveredFaceNormMinu[SpaceDim], const Vector< VolIndex > a_coveredFaceNormPlus[SpaceDim], const EBFaceFAB a_fluxOne[SpaceDim], const EBCellFAB &a_primState, const DataIndex &a_dit, const Real &a_time, const Real &a_dt)
void pointExtrapToCovered3D(Vector< Real > &a_extrapVal, const EBFaceFAB &a_primFace, const EBCellFAB &a_primState, const int &a_faceDir, const VolIndex &a_vof, const RealVect &a_normal, const Side::LoHiSide &a_sd, const int &a_numPrim)
static int getCurComp()
Definition: EBAdvectPatchIntegrator.H:180
void averageVelToCC(EBCellFAB &a_normalVel, const EBFluxFAB &a_advectionVel, const Vector< BaseIVFAB< Real > * > &a_coveredVeloLo, const Vector< BaseIVFAB< Real > * > &a_coveredVeloHi, const Vector< Vector< VolIndex > > &a_coveredFaceLo, const Vector< Vector< VolIndex > > &a_coveredFaceHi, const Box &a_box) const
void advectiveDerivative(EBCellFAB &a_uDotDelRho, const EBFluxFAB &a_faceRho, const EBFluxFAB &a_faceVel, const Vector< BaseIVFAB< Real > * > &a_coveredRhoLo, const Vector< BaseIVFAB< Real > * > &a_coveredRhoHi, const Vector< BaseIVFAB< Real > * > &a_coveredVelLo, const Vector< BaseIVFAB< Real > * > &a_coveredVelHi, const Vector< Vector< VolIndex > > &a_coveredFaceLo, const Vector< Vector< VolIndex > > &a_coveredFaceHi, const Box &a_box)
static void setDoingVel(int a_yesorno)
Definition: EBAdvectPatchIntegrator.H:171
static void setCurComp(int a_curComp)
here are a couple of awful hooks necessary to get the minutiae of the algorithm correct ...
Definition: EBAdvectPatchIntegrator.H:166