Chombo + EB  3.0
EBPatchGodunov.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 _EBPATCHGODUNOV_H_
12 #define _EBPATCHGODUNOV_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 ///
29 /**
30  */
32 {
33 public:
34  ///
35  /**
36  */
38 
39  ///non-virtual stuff
40  void
41  incrementWithSource(EBCellFAB& a_primState,
42  const EBCellFAB& a_source,
43  const Real& a_scale,
44  const Box& a_box) ;
45 
46  ///
47  virtual void
48  extrapToCoveredFaces(BaseIVFAB<Real>& a_extendedPrim,
49  const EBCellFAB& a_primMinu,
50  const EBCellFAB& a_primPlus,
51  const EBCellFAB& a_primState,
52  const Vector<VolIndex>& a_coveredFaces,
53  const int& a_faceDir,
54  const Side::LoHiSide& a_sd,
55  const Box& a_box);
56 
57  ///
58  virtual void
60  const EBCellFAB& a_primMinu,
61  const EBCellFAB& a_primPlus,
62  const EBCellFAB& a_primState,
63  const int& a_faceDir,
64  const VolIndex& a_vof,
65  const RealVect& a_normal,
66  const Side::LoHiSide& a_sd,
67  const int& a_numPrim);
68 
69  ///
70  virtual void
72  const EBCellFAB& a_primMinu,
73  const EBCellFAB& a_primPlus,
74  const EBCellFAB& a_primState,
75  const int& a_faceDir,
76  const VolIndex& a_vof,
77  const RealVect& a_normal,
78  const Side::LoHiSide& a_sd,
79  const int& a_numPrim);
80 
81  ///
82  void
84  IntVectSet& a_coveredIVS,
85  IntVectSet& a_irregIVS,
86  const int& a_idir,
87  const Side::LoHiSide& a_sd,
88  const Box& a_region);
89  ///
90  /**
91  */
92  const EBPhysIBC* getEBPhysIBC() const;
93 
94  ///
95  /**
96  */
97  Real
98  pointLimiter(const Real& a_deltaW1,
99  const Real& a_deltaW2);
100 
101  ///
102  /**
103  */
104  void
105  setEBPhysIBC(const EBPhysIBCFactory& a_bc);
106 
107  /// Set parameters for slope computations
108  /**
109  */
110  void setSlopeParameters(bool a_fourthOrderSlopes,
111  bool a_flattening,
112  bool a_useLimiting);
113 
114  ///
115  /**
116  Given left and right one-sided undivided differences /a_dql,a_dqr/,
117  apply van Leer limiter $vL$ defined in section
118  to a_dq.
119  Called by the default implementation of PatchPolytropic::slope.
120  */
121  void
122  applyLimiter(EBCellFAB& a_slopePrim,
123  const EBCellFAB& a_slopePrimLeft,
124  const EBCellFAB& a_slopePrimRigh,
125  const int& a_dir,
126  const Box& a_box);
127 
128  virtual void
129  doSecondOrderSlopes(EBCellFAB& a_delta2W,
130  EBCellFAB& a_deltaWL,
131  EBCellFAB& a_deltaWR,
132  EBCellFAB& a_deltaWC,
133  const EBCellFAB& a_primState,
134  const int& a_dir,
135  const Box& a_box,
136  bool a_doAggregated = false);
137 
138  virtual void
140  EBCellFAB& a_deltaWL,
141  EBCellFAB& a_deltaWR,
142  EBCellFAB& a_deltaWC,
143  const EBCellFAB& a_primState,
144  const int& a_dir,
145  const Box& a_box);
146 
147 
148  virtual void
150  EBCellFAB& a_deltaWL,
151  EBCellFAB& a_deltaWR,
152  EBCellFAB& a_deltaWC,
153  const EBCellFAB& a_primState,
154  const int& a_dir,
155  const Box& a_box);
156 
157  void
158  doFourthOrderSlopes(EBCellFAB& a_delta4W,
159  EBCellFAB& a_deltaWC,
160  const EBCellFAB& a_delta2W,
161  const EBCellFAB& a_deltaWL,
162  const EBCellFAB& a_deltaWR,
163  const EBCellFAB& a_primState,
164  const int& a_dir,
165  const Box& a_box);
166  void
167  pointGetSlopes(Real& a_dql,
168  Real& a_dqr,
169  Real& a_dqc,
170  bool& a_hasFacesLeft,
171  bool& a_hasFacesRigh,
172  const VolIndex& a_vof,
173  const EBCellFAB& a_primState,
174  const int& a_dir,
175  const int& a_ivar,
176  const bool& a_verbose);
177 
178  virtual void
179  coveredExtrapSlopes(Real& a_dqc,
180  const VolIndex& a_vof,
181  const EBCellFAB& a_primState,
182  const int& a_dir,
183  const int& a_ivar);
184 
185  ///
186  /**
187  */
188  void
189  computeFluxes(EBFluxFAB& a_flux,
190  BaseIVFAB<Real> a_coveredFluxLo[SpaceDim],
191  BaseIVFAB<Real> a_coveredFluxHi[SpaceDim],
192  Vector<VolIndex> a_coveredFaceLo[SpaceDim],
193  Vector<VolIndex> a_coveredFaceHi[SpaceDim],
194  EBCellFAB& a_primState,
195  EBCellFAB a_slopesPrim[SpaceDim],
196  EBCellFAB a_slopesSeco[SpaceDim],
197  const EBCellFAB& a_flattening,
198  const EBCellFAB& a_consState,
199  const EBCellFAB& a_source,
200  const Box& a_box,
201  const DataIndex& a_dit,
202  bool a_verbose);
203 
204  ///
205  /**
206  */
207 virtual void
208  extrapolatePrim2D(EBCellFAB a_primMinu[SpaceDim],
209  EBCellFAB a_primPlus[SpaceDim],
210  EBCellFAB& a_primState,
211  EBCellFAB a_slopesPrim[SpaceDim],
212  EBCellFAB a_slopesSeco[SpaceDim],
213  const EBCellFAB& a_flattening,
214  const EBCellFAB& a_consState,
215  const EBCellFAB& a_source,
216  const Box& a_box,
217  const DataIndex& a_dit,
218  bool a_verbose);
219 
220  ///
221  /**
222  */
223  void
224  extrapolatePrim3D(EBCellFAB a_primMinu[SpaceDim],
225  EBCellFAB a_primPlus[SpaceDim],
226  EBCellFAB& a_primState,
227  EBCellFAB a_slopesPrim[SpaceDim],
228  EBCellFAB a_slopesSeco[SpaceDim],
229  const EBCellFAB& a_flattening,
230  const EBCellFAB& a_consState,
231  const EBCellFAB& a_source,
232  const Box& a_box,
233  const DataIndex& a_dit,
234  bool a_verbose);
235 
236  ///
237  /**
238  Update the state using flux difference that ignores EB.
239  Store fluxes used in this update.
240  Store non-conservative divergence.
241  Flux coming out of htis this should exist at cell face centers.
242  */
243  virtual void
244  regularUpdate(EBCellFAB& a_consState,
245  EBFluxFAB& a_flux,
246  BaseIVFAB<Real>& a_ebIrregFlux,
247  BaseIVFAB<Real>& a_nonConservativeDivergence,
248  const EBCellFAB& a_flattening,
249  const EBCellFAB& a_source,
250  const Box& a_box,
251  const IntVectSet& a_ivs,
252  const DataIndex& a_dit,
253  bool a_verbose);
254 
255  virtual void
256  regularDivergences(EBCellFAB& a_nonconsdiv,
257  EBCellFAB& a_consState,
258  EBFluxFAB& a_flux,
259  BaseIVFAB<Real>& a_ebIrregFlux,
260  BaseIVFAB<Real>& a_nonConservativeDivergence,
261  const EBCellFAB& a_flattening,
262  const EBCellFAB& a_source,
263  const Box& a_box,
264  const IntVectSet& a_ivs,
265  const DataIndex& a_dit,
266  bool a_verbose);
267 
268  virtual void
269  hybridDivergence(EBCellFAB& a_hybridDiv,
270  EBCellFAB& a_consState,
271  BaseIVFAB<Real>& a_massDiff,
272  const BaseIFFAB<Real> a_centroidFlux[SpaceDim],
273  const BaseIVFAB<Real>& a_ebIrregFlux,
274  const BaseIVFAB<Real>& a_nonConservativeDivergence,
275  const Box& a_box,
276  const IntVectSet& a_ivs);
277  ///
278  /**
279  Update the state at irregular VoFs and compute mass difference and
280  the maximum wave speed over the entire box. Flux going into this
281  should exist at VoF centroids.
282  */
283  virtual void
284  irregularUpdate(EBCellFAB& a_consState,
285  Real& a_maxWaveSpeed,
286  BaseIVFAB<Real>& a_massDiff,
287  const BaseIFFAB<Real> a_centroidFlux[SpaceDim],
288  const BaseIVFAB<Real>& a_ebIrregFlux,
289  const BaseIVFAB<Real>& a_nonConservativeDivergence,
290  const Box& a_box,
291  const IntVectSet& a_ivs);
292 
293  ///
294  /**
295  */
296  virtual void
297  doNormalDerivativeExtr2D(EBCellFAB a_primMinu[SpaceDim],
298  EBCellFAB a_primPlus[SpaceDim],
299  EBFaceFAB a_fluxOne[SpaceDim],
300  BaseIVFAB<Real> a_coveredFluxNormMinu[SpaceDim],
301  BaseIVFAB<Real> a_coveredFluxNormPlus[SpaceDim],
302  Vector<VolIndex> a_coveredFaceNormMinu[SpaceDim],
303  Vector<VolIndex> a_coveredFaceNormPlus[SpaceDim],
304  EBCellFAB a_slopesPrim[SpaceDim],
305  EBCellFAB a_slopesSeco[SpaceDim],
306  const EBCellFAB& a_flattening,
307  const EBCellFAB& a_primState,
308  const EBCellFAB& a_source,
309  const DataIndex& a_dit,
310  const Box& a_box);
311 
312  ///
313  /**
314  */
315  void
316  doNormalDerivativeExtr3D(EBCellFAB a_primMinu[SpaceDim],
317  EBCellFAB a_primPlus[SpaceDim],
318  EBFaceFAB a_fluxOne[SpaceDim],
319  BaseIVFAB<Real> a_coveredFluxNormMinu[SpaceDim],
320  BaseIVFAB<Real> a_coveredFluxNormPlus[SpaceDim],
321  Vector<VolIndex> a_coveredFaceNormMinu[SpaceDim],
322  Vector<VolIndex> a_coveredFaceNormPlus[SpaceDim],
323  EBCellFAB a_slopesPrim[SpaceDim],
324  EBCellFAB a_slopesSeco[SpaceDim],
325  const EBCellFAB& a_flattening,
326  const EBCellFAB& a_primState,
327  const EBCellFAB& a_source,
328  const DataIndex& a_dit,
329  const Box& a_box);
330 
331  ///
332  /**
333  */
334  virtual void
335  finalExtrap2D(EBCellFAB a_primMinu[SpaceDim],
336  EBCellFAB a_primPlus[SpaceDim],
337  const BaseIVFAB<Real> a_coveredFluxNormMinu[SpaceDim],
338  const BaseIVFAB<Real> a_coveredFluxNormPlus[SpaceDim],
339  const Vector<VolIndex> a_coveredFaceNormMinu[SpaceDim],
340  const Vector<VolIndex> a_coveredFaceNormPlus[SpaceDim],
341  const EBFaceFAB a_fluxOne[SpaceDim],
342  const EBCellFAB& a_primState,
343  const EBCellFAB a_slopesPrim[SpaceDim],
344  const EBCellFAB a_slopesSeco[SpaceDim],
345  const Box& a_box);
346 
347  ///
348  /**
349  */
350  void
351  finalExtrap3D(EBCellFAB a_primMinu[SpaceDim],
352  EBCellFAB a_primPlus[SpaceDim],
353  const BaseIVFAB<Real> a_coveredFlux3DMinu[SpaceDim][SpaceDim],
354  const BaseIVFAB<Real> a_coveredFlux3DPlus[SpaceDim][SpaceDim],
355  const EBFaceFAB a_fluxTwoVec[SpaceDim][SpaceDim],
356  const EBCellFAB& a_primState,
357  const EBCellFAB a_slopesPrim[SpaceDim],
358  const EBCellFAB a_slopesSeco[SpaceDim],
359  const Box& a_box);
360 
361  ///
362  /**
363  */
364  void
365  do111coupling(EBFaceFAB a_fluxTwoVec[SpaceDim][SpaceDim],
366  BaseIVFAB<Real> a_coveredFlux3DMinu[SpaceDim][SpaceDim],
367  BaseIVFAB<Real> a_coveredFlux3DPlus[SpaceDim][SpaceDim],
368  const EBCellFAB a_primMinu[SpaceDim],
369  const EBCellFAB a_primPlus[SpaceDim],
370  const BaseIVFAB<Real> a_coveredFluxNormMinu[SpaceDim],
371  const BaseIVFAB<Real> a_coveredFluxNormPlus[SpaceDim],
372  const Vector<VolIndex> a_coveredFaceNormMinu[SpaceDim],
373  const Vector<VolIndex> a_coveredFaceNormPlus[SpaceDim],
374  const EBFaceFAB a_fluxOne[SpaceDim],
375  const EBCellFAB& a_primState,
376  const EBCellFAB a_slopesPrim[SpaceDim],
377  const EBCellFAB a_slopesSeco[SpaceDim],
378  const DataIndex& a_dit,
379  const Box& a_box);
380 
381  ///
382  /**
383  */
384  virtual void
385  interpolateFluxToCentroids(BaseIFFAB<Real> a_centroidFlux[SpaceDim],
386  const BaseIFFAB<Real>* const a_fluxInterpolant[SpaceDim],
387  const IntVectSet& a_irregIVS);
388 
389  ///
390  /**
391  */
392  virtual void
393  finalUpdate(EBCellFAB& a_consState,
394  BaseIVFAB<Real>& a_massDiff,
395  const BaseIVFAB<Real>& a_nonConsDivF,
396  const BaseIVFAB<Real>& a_conservDivF,
397  const IntVectSet& a_ivs);
398 
399  ///
400  virtual void
401  getFaceDivergence(EBFluxFAB& a_openDivU,
402  const EBCellFAB& a_primState,
403  const EBCellFAB a_slopePrim[SpaceDim],
404  const Box& a_box,
405  const IntVectSet& a_ivsIrreg);
406 
407  ///
408  void artificialViscosity(bool a_useArtificialVisc);
409 
410  ///
411  void
413  BaseIVFAB<Real> a_coveredFluxMinu[SpaceDim],
414  BaseIVFAB<Real> a_coveredFluxPlus[SpaceDim],
415  const Vector<VolIndex> a_coveredFaceMinu[SpaceDim],
416  const Vector<VolIndex> a_coveredFacePlus[SpaceDim],
417  const EBCellFAB& a_consState,
418  const EBFluxFAB& a_divVel,
419  const Box& a_box,
420  const IntVectSet& a_ivsIrreg);
421 
422  Real bilinearFunc(const Real a_WVal[2][2],
423  const Real& a_xd1,
424  const Real& a_xd2);
425 
426  Real maxFunction(const Real a_WVal[2][2],
427  const Real& a_xd1,
428  const Real& a_xd2);
429 
430  ///
431  /**
432  */
433  void
434  define(const ProblemDomain& a_domain,
435  const RealVect& a_dx, bool a_useAgg = false);
436 
437 
438  ///deprecated interface
439  void
440  define(const ProblemDomain& a_domain,
441  const Real& a_dx)
442  {
443  m_useAgg = false;
444  RealVect dxVect = a_dx*RealVect::Unit;
445  define(a_domain, dxVect);
446  }
447 
448  ///
449  /**
450  needs coarse-fine IVS to know where to drop order for interpolation
451  virtual in case you need to add anything to definition
452  */
453  virtual void
454  setValidBox(const Box& a_validBox,
455  const EBISBox& a_ebisBox,
456  const IntVectSet& a_coarseFineIVS,
457  const Real& a_time,
458  const Real& a_dt);
459 
460  void
461  computeFlattening(EBCellFAB& a_flattening,
462  const EBCellFAB& a_primState,
463  const Box& a_box);
464 
465  ///
466  /**
467  Compute the limited slope /a_dq/ of the primitive variables
468  /a_q/ for the components in the interval /a_interval/,
469  Calls user-supplied EBPatchGodunov::applyLimiter.
470  */
471  virtual void
472  slope(EBCellFAB& a_slopePrim,
473  EBCellFAB& a_slopeNLim,
474  const EBCellFAB& a_primState,
475  const EBCellFAB& a_flattening,
476  const int& a_dir,
477  const Box& a_box,
478  bool a_doAggregated = false);
479 
480  ///needs to be virtual because of RZ
481  virtual void
483  const EBFluxFAB& a_flux,
484  const BaseIVFAB<Real> a_coveredFluxMinu[SpaceDim],
485  const BaseIVFAB<Real> a_coveredFluxPlus[SpaceDim],
486  const Vector<VolIndex> a_coveredFaceMinu[SpaceDim],
487  const Vector<VolIndex> a_coveredFacePlus[SpaceDim],
488  const Box& a_box);
489 
490  ///virtual in case you want to do something faster than go through constoprim
491  virtual void
492  updatePrim(EBCellFAB& a_primMinu,
493  EBCellFAB& a_primPlus,
494  const EBFaceFAB& a_flux,
495  const BaseIVFAB<Real>& a_coveredFluxMinu,
496  const BaseIVFAB<Real>& a_coveredFluxPlus,
497  const Vector<VolIndex>& a_coveredFaceMinu,
498  const Vector<VolIndex>& a_coveredFacePlus,
499  const int& a_dir,
500  const Box& a_box,
501  const Real& a_scale) ;
502 
503  ///virtual because RZ changes this function
504  virtual void
505  updateCons(EBCellFAB& a_consState,
506  const EBFaceFAB& a_flux,
507  const BaseIVFAB<Real>& a_coveredFluxMinu,
508  const BaseIVFAB<Real>& a_coveredFluxPlus,
509  const Vector<VolIndex>& a_coveredFaceMinu,
510  const Vector<VolIndex>& a_coveredFacePlus,
511  const int& a_dir,
512  const Box& a_box,
513  const Real& a_scale);
514  ///
515  /**
516  Returns the interval of component indices in the primitive variable
517  EBCellFAB for the velocities. Only used for artificial visc and flattening
518  */
519  virtual Interval velocityInterval() const = 0;
520 
521  ///needs to be virtual because of RZ
522  /**
523  */
524  virtual void
526  const BaseIFFAB<Real> a_centroidFlux[SpaceDim],
527  const BaseIVFAB<Real>& a_ebIrregFlux,
528  const IntVectSet& a_ivs);
529 
530  ///
531  /**
532  */
533  virtual void
534  computeEBIrregFlux(BaseIVFAB<Real>& a_ebIrregFlux,
535  const EBCellFAB& a_primState,
536  const EBCellFAB a_slopePrim[SpaceDim],
537  const IntVectSet& a_irregIVS,
538  const EBCellFAB& a_source) = 0;
539 
540  ///
541  /**
542  Returns the component index for the pressure. Called only if flattening is used.
543  */
544  virtual int pressureIndex() const = 0;
545 
546  ///
547  /**
548  Returns the component index for the bulk modulus, used as a
549  normalization to measure shock strength in flattening.
550  Called only if flattening is used.
551  */
552  virtual int bulkModulusIndex() const = 0;
553 
554  ///
555  /**
556  */
557  virtual ~EBPatchGodunov();
558 
559  ///
560  /**
561  */
562  virtual void
563  setCoveredConsVals(EBCellFAB& a_consState)= 0;
564 
565  ///
566  /**
567  */
568  virtual Real
569  getMaxWaveSpeed(const EBCellFAB& a_consState,
570  const Box& a_box) = 0;
571 
572  ///
573  virtual void
574  floorConserved(EBCellFAB& a_consState,
575  const Box& a_box) = 0;
576 
577  ///
578  virtual void
579  floorPrimitives(EBCellFAB& a_primState,
580  const Box& a_box) = 0;
581 
582  ///
583  virtual void
584  floorConserved(BaseIVFAB<Real>& a_consState,
585  const IntVectSet& a_ivs) = 0;
586 
587  ///
588  virtual void
589  floorPrimitives(BaseIVFAB<Real>& a_primState,
590  const IntVectSet& a_ivs) = 0;
591 
592  ///
593  virtual void getCoveredValuesPrim(Vector<Real>& a_covValues)=0;
594 
595  ///
596  virtual void getCoveredValuesCons(Vector<Real>& a_covValues)=0;
597 
598  virtual int densityIndex() const = 0;
599 
600  ///
601  /**
602  Return number of components for primitive variables.
603  */
604  virtual int numPrimitives() const = 0;
605 
606  ///
607  /**
608  Returns number of components for flux variables.
609  */
610  virtual int numFluxes() const = 0;
611 
612  ///
613  /**
614  Returns number of components for flux variables.
615  */
616  virtual int numSlopes() const = 0;
617 
618  ///
619  /**
620  Returns number of components for conserved variables.
621  */
622  virtual int numConserved() const = 0;
623 
624  ///
625  /**
626  Return the names of the variables. A default
627  implementation is provided that puts in generic names.
628  */
629  virtual Vector<string> stateNames()=0;
630 
631  ///
632  /**
633  Return the names of the variables. A default
634  implementation is provided that puts in generic names.
635  */
636  virtual Vector<string> primNames()=0;
637 
638  virtual void
639  normalPred(EBCellFAB& a_primLo,
640  EBCellFAB& a_primHi,
641  const EBCellFAB& a_primState,
642  const EBCellFAB& a_slopePrim,
643  const Real& a_scale,
644  const int& a_dir,
645  const Box& a_box) = 0;
646 
647  ///
648  /**
649  Given input left and right states, compute a suitably-upwinded
650  flux (e.g. by solving a Riemann problem), as in
651  */
652  virtual void
653  riemann(EBFaceFAB& a_flux,
654  const EBCellFAB& a_primLeft,
655  const EBCellFAB& a_primRight,
656  const int& a_dir,
657  const Box& a_box) = 0;
658 
659  ///
660  /**
661  Given input left and right states, compute a suitably-upwinded
662  flux (e.g. by solving a Riemann problem).
663  */
664  virtual void
665  riemann(BaseIVFAB<Real>& a_coveredFlux,
666  const BaseIVFAB<Real>& a_extendedState,
667  const EBCellFAB& a_primState,
668  const Vector<VolIndex>& a_region,
669  const int& a_dir,
670  const Side::LoHiSide& a_sd,
671  const Box& a_box)= 0;
672 
673  ///rz func.
674  virtual void
675  setSource(EBCellFAB& a_source,
676  const EBCellFAB& a_consState,
677  const Box& a_box)
678  {;}
679 
680  ///rz func.
681  virtual void
682  assembleFluxReg(EBFaceFAB& a_fluxRegFlux,
683  const EBFaceFAB& a_godunovFlux,
684  const int& a_idir,
685  const Box& a_cellBox)
686  {;}
687 
688  ///rz func.
689  virtual void
691  const BaseIFFAB<Real>& a_godunovFlux,
692  const int& a_idir,
693  const Box& a_cellBox,
694  const IntVectSet& a_set)
695  {;}
696 
697  ///
698  virtual void
699  consToPrim(EBCellFAB& a_primState,
700  const EBCellFAB& a_conState,
701  const Box& a_box,
702  int a_logflag,
703  bool a_verbose = false)=0;
704 
705 #ifdef CH_USE_HDF5
706  virtual void
708  {;}
709 #endif
710 
711  ///
712  virtual void
713  consToPrim(BaseIVFAB<Real>& a_primState,
714  const BaseIVFAB<Real>& a_conState,
715  const IntVectSet& a_ivs) =0;
716 
717  ///
718  /**
719  */
720  virtual void
721  primToCons(EBCellFAB& a_primState,
722  const EBCellFAB& a_conState,
723  const Box& a_box) = 0;
724 
725  ///
726  /**
727  */
728  virtual void
729  primToCons(BaseIVFAB<Real>& a_primState,
730  const BaseIVFAB<Real>& a_conState,
731  const IntVectSet& a_ivs) = 0;
732 
733  ///
734  /**
735  Return true if the application is using flattening.
736  */
737  virtual bool usesFlattening() const = 0;
738 
739  ///
740  /**
741  Return true if the application is using artificial viscosity.
742  */
743  virtual bool usesArtificialViscosity() const = 0;
744 
745  ///
746  /**
747  Return true if you are using fourth-order slopes.
748  Return false if you are using second-order slopes.
749  */
750  virtual bool usesFourthOrderSlopes() const = 0;
751 
752  ///
753  /**
754  Returns value of artificial viscosity. Called only if artificial
755  viscosity is being used.
756  */
757  virtual Real artificialViscosityCoefficient() const = 0;
758 
759  ///
760  /**
761  */
762  virtual bool isDefined() const;
763 
764  //debugging hooks. not for the faint of heart
765  static void setVerbose(bool a_verbose);
766  static void setCurLevel(int a_curLevel);
767  static void setCurComp(int a_curComp);
768  static void setDoingVel(int a_yesorno);
769  static void setDoingAdvVel(int a_yesorno);
770  static int getDoingAdvVel();
771  static int getDoingVel();
772  static int getCurLevel();
773  static int getCurComp();
774  static bool getVerbose();
775  static Real getMaxWaveSpeed();
776  static void setMaxWaveSpeed(Real a_maxWaveSpeedIV);
777  static IntVect getMaxWaveSpeedIV();
778  static void setMaxWaveSpeedIV(const IntVect& a_maxWaveSpeedIV);
779 
781  {
782  return m_primState;
783  }
785  {
786  return m_coveredFluxPlusG4;
787  }
789  {
790  return m_coveredFluxMinuG4;
791  }
792 
794  {
795  return m_coveredFaceMinuG4;
796  }
797 
799  {
800  return m_coveredFacePlusG4;
801  }
803  static int s_whichLev;
804 
805  ///
806  /**
807  set to true if the source you will provide
808  is in conservative variables. Default is false
809  */
810  static void useConservativeSource(bool a_conservativeSource)
811  {
812  s_conservativeSource = a_conservativeSource;
813  }
814 
815  //these are the objects I need to make updatePrim less of a dog
816  struct
817  {
818  int m_offset;
820  } typedef pointerOffset_t;
821 
822  struct
823  {
824  pointerOffset_t m_vofOffset;
825  } typedef updateStencil_t;
826 
827  //gets offsets
829  const VolIndex& a_vof);
830 
831  //defines and fills cache
832  void cacheEBCF(Vector<Vector<Real> >& a_cache,
833  const EBCellFAB& a_input);
834 
835  //puts values of cache into output
836  void uncacheEBCF(EBCellFAB& a_output,
837  const Vector<Vector<Real> >& a_cache);
838 
839  //for testing
840  void getArgBox(Box a_argBox[SpaceDim]);
841  //for testing
842  void getEntireBox(Box a_entireBox[SpaceDim])
843  {
844  for (int idir = 0; idir < SpaceDim; idir++)
845  {
846  a_entireBox[idir] = m_entireBox[idir];
847  }
848  }
849 protected:
850 
851  //the wild variety of crap I need to stencilize slopes
853 
854  static bool s_conservativeSource;
855  //stuff for debugging output
856  static int s_curLevel;
857  static int s_curComp;
858  static int s_doingVel;
859  static int s_doingAdvVel;
860  static bool s_verbose;
863  //set in define()
867  bool m_useAgg;
870 
875  bool m_isBCSet;
884 
886  //set by factory
888 
889  //all stuff sent to UpdatePrim, etc needs to be built with this
890  //set of info if any of these stenciling optimizations are to have any hope
896 
901 
906 
912 
916 
921 
922  //stuff for aggregated slopes
923  void setSlopeStuff();
924 
928 
929  struct
930  {
931  size_t offset;
932  int dataID;
933  } typedef access_t;
934 
935  struct
936  {
937  //slopes have all the same box so they will have the same offset and type
938  access_t slop_access; //offsets for slopes
939  bool hasLo, hasHi;
940  } typedef slop_logic_t;
941 
943 
944 };
945 #include "NamespaceFooter.H"
946 #endif
static int s_whichLev
Definition: EBPatchGodunov.H:803
Definition: EBPatchGodunov.H:935
BaseIVFAB< Real > * getCoveredFluxPlus()
Definition: EBPatchGodunov.H:784
bool m_isBCSet
Definition: EBPatchGodunov.H:875
virtual void updateCons(EBCellFAB &a_consState, const EBFaceFAB &a_flux, const BaseIVFAB< Real > &a_coveredFluxMinu, const BaseIVFAB< Real > &a_coveredFluxPlus, const Vector< VolIndex > &a_coveredFaceMinu, const Vector< VolIndex > &a_coveredFacePlus, const int &a_dir, const Box &a_box, const Real &a_scale)
virtual because RZ changes this function
Real maxFunction(const Real a_WVal[2][2], const Real &a_xd1, const Real &a_xd2)
virtual void expressions(HDF5HeaderData &a_holder)
Definition: EBPatchGodunov.H:707
BaseIFFAB< FaceStencil > m_interpStencils[SpaceDim]
Definition: EBPatchGodunov.H:868
virtual void hybridDivergence(EBCellFAB &a_hybridDiv, EBCellFAB &a_consState, BaseIVFAB< Real > &a_massDiff, const BaseIFFAB< Real > a_centroidFlux[SpaceDim], const BaseIVFAB< Real > &a_ebIrregFlux, const BaseIVFAB< Real > &a_nonConservativeDivergence, const Box &a_box, const IntVectSet &a_ivs)
void computeFlattening(EBCellFAB &a_flattening, const EBCellFAB &a_primState, const Box &a_box)
BaseIVFAB< Real > m_coveredFluxNormMinu[SpaceDim]
Definition: EBPatchGodunov.H:917
virtual int numSlopes() const =0
virtual void getFaceDivergence(EBFluxFAB &a_openDivU, const EBCellFAB &a_primState, const EBCellFAB a_slopePrim[SpaceDim], const Box &a_box, const IntVectSet &a_ivsIrreg)
virtual void setSource(EBCellFAB &a_source, const EBCellFAB &a_consState, const Box &a_box)
rz func.
Definition: EBPatchGodunov.H:675
static int getDoingVel()
bool m_isDefined
Definition: EBPatchGodunov.H:874
Real m_dxScale
Definition: EBPatchGodunov.H:866
static bool s_verbose
Definition: EBPatchGodunov.H:860
void uncacheEBCF(EBCellFAB &a_output, const Vector< Vector< Real > > &a_cache)
EBISBox m_ebisBox
Definition: EBPatchGodunov.H:871
virtual Interval velocityInterval() const =0
A reference-counting handle class.
Definition: RefCountedPtr.H:66
An irregular domain on an integer lattice.
Definition: IntVectSet.H:44
virtual void extrapToCoveredFaces(BaseIVFAB< Real > &a_extendedPrim, const EBCellFAB &a_primMinu, const EBCellFAB &a_primPlus, const EBCellFAB &a_primState, const Vector< VolIndex > &a_coveredFaces, const int &a_faceDir, const Side::LoHiSide &a_sd, const Box &a_box)
static int getDoingAdvVel()
virtual void nonconservativeDivergence(EBCellFAB &a_divF, const EBFluxFAB &a_flux, const BaseIVFAB< Real > a_coveredFluxMinu[SpaceDim], const BaseIVFAB< Real > a_coveredFluxPlus[SpaceDim], const Vector< VolIndex > a_coveredFaceMinu[SpaceDim], const Vector< VolIndex > a_coveredFacePlus[SpaceDim], const Box &a_box)
needs to be virtual because of RZ
A class to facilitate interaction with physical boundary conditions.
Definition: ProblemDomain.H:130
data to be added to HDF5 files.
Definition: CH_HDF5.H:490
size_t offset
Definition: EBPatchGodunov.H:931
void applyLimiter(EBCellFAB &a_slopePrim, const EBCellFAB &a_slopePrimLeft, const EBCellFAB &a_slopePrimRigh, const int &a_dir, const Box &a_box)
BaseIVFAB< Real > m_extendStatePlusG4[SpaceDim]
Definition: EBPatchGodunov.H:897
void applyArtificialViscosity(EBFluxFAB &a_openFlux, BaseIVFAB< Real > a_coveredFluxMinu[SpaceDim], BaseIVFAB< Real > a_coveredFluxPlus[SpaceDim], const Vector< VolIndex > a_coveredFaceMinu[SpaceDim], const Vector< VolIndex > a_coveredFacePlus[SpaceDim], const EBCellFAB &a_consState, const EBFluxFAB &a_divVel, const Box &a_box, const IntVectSet &a_ivsIrreg)
virtual void setValidBox(const Box &a_validBox, const EBISBox &a_ebisBox, const IntVectSet &a_coarseFineIVS, const Real &a_time, const Real &a_dt)
RefCountedPtr< AggStencil< EBCellFAB, EBCellFAB > > m_slopStenHi[SpaceDim]
Definition: EBPatchGodunov.H:926
virtual int numFluxes() const =0
virtual void assembleFluxReg(EBFaceFAB &a_fluxRegFlux, const EBFaceFAB &a_godunovFlux, const int &a_idir, const Box &a_cellBox)
rz func.
Definition: EBPatchGodunov.H:682
bool m_isArtViscSet
Definition: EBPatchGodunov.H:878
BaseIVFAB< Real > m_coveredFluxPlus3D[SpaceDim][SpaceDim]
Definition: EBPatchGodunov.H:904
virtual void finalUpdate(EBCellFAB &a_consState, BaseIVFAB< Real > &a_massDiff, const BaseIVFAB< Real > &a_nonConsDivF, const BaseIVFAB< Real > &a_conservDivF, const IntVectSet &a_ivs)
EBCellFAB m_primMinu[SpaceDim]
Definition: EBPatchGodunov.H:908
bool m_isSlopeSet
Definition: EBPatchGodunov.H:877
virtual void interpolateFluxToCentroids(BaseIFFAB< Real > a_centroidFlux[SpaceDim], const BaseIFFAB< Real > *const a_fluxInterpolant[SpaceDim], const IntVectSet &a_irregIVS)
BaseIVFAB< Real > m_coveredFluxMinu3D[SpaceDim][SpaceDim]
Definition: EBPatchGodunov.H:905
Vector< VolIndex > * getCoveredFacePlus()
Definition: EBPatchGodunov.H:798
void define(const ProblemDomain &a_domain, const RealVect &a_dx, bool a_useAgg=false)
Box m_modBoxOpen[SpaceDim]
Definition: EBPatchGodunov.H:852
virtual void extrapolatePrim2D(EBCellFAB a_primMinu[SpaceDim], EBCellFAB a_primPlus[SpaceDim], EBCellFAB &a_primState, EBCellFAB a_slopesPrim[SpaceDim], EBCellFAB a_slopesSeco[SpaceDim], const EBCellFAB &a_flattening, const EBCellFAB &a_consState, const EBCellFAB &a_source, const Box &a_box, const DataIndex &a_dit, bool a_verbose)
Definition: EBISBox.H:46
void computeCoveredFaces(Vector< VolIndex > &a_coveredFace, IntVectSet &a_coveredIVS, IntVectSet &a_irregIVS, const int &a_idir, const Side::LoHiSide &a_sd, const Box &a_region)
BaseIVFAB< Real > m_coveredFluxNormPlus[SpaceDim]
Definition: EBPatchGodunov.H:918
virtual 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 EBCellFAB a_slopesPrim[SpaceDim], const EBCellFAB a_slopesSeco[SpaceDim], const Box &a_box)
void fillUpdateStencil(EBPatchGodunov::updateStencil_t &a_sten, const VolIndex &a_vof)
BaseIVFAB< Real > m_extendStateMinuG4[SpaceDim]
Definition: EBPatchGodunov.H:898
virtual ~EBPatchGodunov()
Real pointLimiter(const Real &a_deltaW1, const Real &a_deltaW2)
virtual void regularUpdate(EBCellFAB &a_consState, EBFluxFAB &a_flux, BaseIVFAB< Real > &a_ebIrregFlux, BaseIVFAB< Real > &a_nonConservativeDivergence, const EBCellFAB &a_flattening, const EBCellFAB &a_source, const Box &a_box, const IntVectSet &a_ivs, const DataIndex &a_dit, bool a_verbose)
Definition: EBFaceFAB.H:28
static bool getVerbose()
virtual void consUndividedDivergence(BaseIVFAB< Real > &a_divF, const BaseIFFAB< Real > a_centroidFlux[SpaceDim], const BaseIVFAB< Real > &a_ebIrregFlux, const IntVectSet &a_ivs)
needs to be virtual because of RZ
EBPhysIBC * m_bc
Definition: EBPatchGodunov.H:887
Vector< updateStencil_t > m_updateStencil
Definition: EBPatchGodunov.H:885
virtual Vector< string > stateNames()=0
virtual void floorPrimitives(EBCellFAB &a_primState, const Box &a_box)=0
const int SpaceDim
Definition: SPACE.H:39
virtual bool isDefined() const
static IntVect s_debugIV
Definition: EBPatchGodunov.H:802
BaseIVFAB< Real > m_extendStatePlus3D[SpaceDim][SpaceDim]
Definition: EBPatchGodunov.H:902
virtual int numConserved() const =0
virtual void aggIrregSecondOrderSlopes(EBCellFAB &a_delta2W, EBCellFAB &a_deltaWL, EBCellFAB &a_deltaWR, EBCellFAB &a_deltaWC, const EBCellFAB &a_primState, const int &a_dir, const Box &a_box)
static const RealVect Unit
Definition: RealVect.H:422
static int s_doingVel
Definition: EBPatchGodunov.H:858
virtual void regularDivergences(EBCellFAB &a_nonconsdiv, EBCellFAB &a_consState, EBFluxFAB &a_flux, BaseIVFAB< Real > &a_ebIrregFlux, BaseIVFAB< Real > &a_nonConservativeDivergence, const EBCellFAB &a_flattening, const EBCellFAB &a_source, const Box &a_box, const IntVectSet &a_ivs, const DataIndex &a_dit, bool a_verbose)
void setSlopeParameters(bool a_fourthOrderSlopes, bool a_flattening, bool a_useLimiting)
Set parameters for slope computations.
Box m_validBoxG4
Definition: EBPatchGodunov.H:891
Definition: EBPatchGodunov.H:31
int m_offset
Definition: EBPatchGodunov.H:818
Box m_entireBox[SpaceDim]
Definition: EBPatchGodunov.H:927
Vector< VolIndex > m_coveredFacePlusG4[SpaceDim]
Definition: EBPatchGodunov.H:894
void getArgBox(Box a_argBox[SpaceDim])
A EBFaceFAB-like container for edge-centered fluxes.
Definition: EBFluxFAB.H:25
bool m_useLimiting
Definition: EBPatchGodunov.H:881
static IntVect getMaxWaveSpeedIV()
static int s_curLevel
Definition: EBPatchGodunov.H:856
virtual void updatePrim(EBCellFAB &a_primMinu, EBCellFAB &a_primPlus, const EBFaceFAB &a_flux, const BaseIVFAB< Real > &a_coveredFluxMinu, const BaseIVFAB< Real > &a_coveredFluxPlus, const Vector< VolIndex > &a_coveredFaceMinu, const Vector< VolIndex > &a_coveredFacePlus, const int &a_dir, const Box &a_box, const Real &a_scale)
virtual in case you want to do something faster than go through constoprim
ProblemDomain m_domain
Definition: EBPatchGodunov.H:864
void finalExtrap3D(EBCellFAB a_primMinu[SpaceDim], EBCellFAB a_primPlus[SpaceDim], const BaseIVFAB< Real > a_coveredFlux3DMinu[SpaceDim][SpaceDim], const BaseIVFAB< Real > a_coveredFlux3DPlus[SpaceDim][SpaceDim], const EBFaceFAB a_fluxTwoVec[SpaceDim][SpaceDim], const EBCellFAB &a_primState, const EBCellFAB a_slopesPrim[SpaceDim], const EBCellFAB a_slopesSeco[SpaceDim], const Box &a_box)
access_t slop_access
Definition: EBPatchGodunov.H:938
Real m_dt
Definition: EBPatchGodunov.H:873
void setSlopeStuff()
static void useConservativeSource(bool a_conservativeSource)
Definition: EBPatchGodunov.H:810
Structure for passing component ranges in code.
Definition: Interval.H:23
EBCellFAB & getPrimState()
Definition: EBPatchGodunov.H:780
static bool s_conservativeSource
Definition: EBPatchGodunov.H:854
virtual void pointExtrapToCovered3D(Vector< Real > &a_extrapVal, const EBCellFAB &a_primMinu, const EBCellFAB &a_primPlus, 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)
BaseIVFAB< Real > m_extendStateNormPlus[SpaceDim]
Definition: EBPatchGodunov.H:920
virtual void irregularUpdate(EBCellFAB &a_consState, Real &a_maxWaveSpeed, BaseIVFAB< Real > &a_massDiff, const BaseIFFAB< Real > a_centroidFlux[SpaceDim], const BaseIVFAB< Real > &a_ebIrregFlux, const BaseIVFAB< Real > &a_nonConservativeDivergence, const Box &a_box, const IntVectSet &a_ivs)
RefCountedPtr< AggStencil< EBCellFAB, EBCellFAB > > m_slopStenLo[SpaceDim]
Definition: EBPatchGodunov.H:925
virtual void doSecondOrderSlopes(EBCellFAB &a_delta2W, EBCellFAB &a_deltaWL, EBCellFAB &a_deltaWR, EBCellFAB &a_deltaWC, const EBCellFAB &a_primState, const int &a_dir, const Box &a_box, bool a_doAggregated=false)
Definition: EBCellFAB.H:29
virtual void setCoveredConsVals(EBCellFAB &a_consState)=0
virtual int bulkModulusIndex() const =0
void extrapolatePrim3D(EBCellFAB a_primMinu[SpaceDim], EBCellFAB a_primPlus[SpaceDim], EBCellFAB &a_primState, EBCellFAB a_slopesPrim[SpaceDim], EBCellFAB a_slopesSeco[SpaceDim], const EBCellFAB &a_flattening, const EBCellFAB &a_consState, const EBCellFAB &a_source, const Box &a_box, const DataIndex &a_dit, bool a_verbose)
Vector< VolIndex > * getCoveredFaceMinu()
Definition: EBPatchGodunov.H:793
static void setDoingAdvVel(int a_yesorno)
double Real
Definition: REAL.H:33
bool m_useFourthOrderSlopes
Definition: EBPatchGodunov.H:879
BaseIVFAB< Real > m_extendStateNormMinu[SpaceDim]
Definition: EBPatchGodunov.H:919
RealVect m_dx
Definition: EBPatchGodunov.H:865
virtual Real artificialViscosityCoefficient() const =0
virtual int numPrimitives() const =0
Real bilinearFunc(const Real a_WVal[2][2], const Real &a_xd1, const Real &a_xd2)
virtual void computeEBIrregFlux(BaseIVFAB< Real > &a_ebIrregFlux, const EBCellFAB &a_primState, const EBCellFAB a_slopePrim[SpaceDim], const IntVectSet &a_irregIVS, const EBCellFAB &a_source)=0
void cacheEBCF(Vector< Vector< Real > > &a_cache, const EBCellFAB &a_input)
void setEBPhysIBC(const EBPhysIBCFactory &a_bc)
EBFaceFAB m_fluxTwo[SpaceDim][SpaceDim]
Definition: EBPatchGodunov.H:915
LoHiSide
Definition: LoHiSide.H:27
IntVectSet m_coveredSetsPlusG4[SpaceDim]
Definition: EBPatchGodunov.H:892
bool m_useAgg
Definition: EBPatchGodunov.H:867
pointerOffset_t m_vofOffset
Definition: EBPatchGodunov.H:824
bool m_useArtificialVisc
Definition: EBPatchGodunov.H:882
static void setDoingVel(int a_yesorno)
bool m_multiValued
Definition: EBPatchGodunov.H:819
virtual int densityIndex() const =0
virtual Vector< string > primNames()=0
void doFourthOrderSlopes(EBCellFAB &a_delta4W, EBCellFAB &a_deltaWC, const EBCellFAB &a_delta2W, const EBCellFAB &a_deltaWL, const EBCellFAB &a_deltaWR, const EBCellFAB &a_primState, const int &a_dir, const Box &a_box)
BaseIVFAB< Real > m_coveredFluxPlusG4[SpaceDim]
Definition: EBPatchGodunov.H:899
Definition: EBPatchGodunov.H:816
static int getCurLevel()
virtual bool usesArtificialViscosity() const =0
Definition: EBPhysIBCFactory.H:25
void define(const ProblemDomain &a_domain, const Real &a_dx)
deprecated interface
Definition: EBPatchGodunov.H:440
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], EBCellFAB a_slopesPrim[SpaceDim], EBCellFAB a_slopesSeco[SpaceDim], const EBCellFAB &a_flattening, const EBCellFAB &a_primState, const EBCellFAB &a_source, const DataIndex &a_dit, const Box &a_box)
static IntVect s_maxWaveSpeedIV
Definition: EBPatchGodunov.H:862
A Rectangular Domain on an Integer Lattice.
Definition: Box.H:465
A Real vector in SpaceDim-dimensional space.
Definition: RealVect.H:41
Definition: EBPhysIBC.H:27
const EBPhysIBC * getEBPhysIBC() const
bool m_isBoxSet
Definition: EBPatchGodunov.H:876
static void setCurLevel(int a_curLevel)
virtual void irregSecondOrderSlopes(EBCellFAB &a_delta2W, EBCellFAB &a_deltaWL, EBCellFAB &a_deltaWR, EBCellFAB &a_deltaWC, const EBCellFAB &a_primState, const int &a_dir, const Box &a_box)
virtual 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)=0
Definition: DataIndex.H:112
Definition: BaseIFFAB.H:34
virtual void floorConserved(EBCellFAB &a_consState, const Box &a_box)=0
Definition: EBPatchGodunov.H:822
BaseIVFAB< Real > * getCoveredFluxMinu()
Definition: EBPatchGodunov.H:788
virtual void pointExtrapToCovered2D(Vector< Real > &a_extrapVal, const EBCellFAB &a_primMinu, const EBCellFAB &a_primPlus, 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)
void artificialViscosity(bool a_useArtificialVisc)
An integer Vector in SpaceDim-dimensional space.
Definition: CHArray.H:42
bool m_useFlattening
Definition: EBPatchGodunov.H:880
EBFluxFAB m_primGdnv
Definition: EBPatchGodunov.H:913
EBCellFAB m_primMinuTemp
Definition: EBPatchGodunov.H:910
void getEntireBox(Box a_entireBox[SpaceDim])
Definition: EBPatchGodunov.H:842
static void setMaxWaveSpeedIV(const IntVect &a_maxWaveSpeedIV)
BaseIVFAB< Real > m_coveredFluxMinuG4[SpaceDim]
Definition: EBPatchGodunov.H:900
Box m_validBox
Definition: EBPatchGodunov.H:869
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_irregVoFs
Definition: EBPatchGodunov.H:883
Definition: EBPatchGodunov.H:929
BaseIVFAB< Real > m_extendStateMinu3D[SpaceDim][SpaceDim]
Definition: EBPatchGodunov.H:903
static int s_curComp
Definition: EBPatchGodunov.H:857
Volume of Fluid Index.
Definition: VolIndex.H:31
void incrementWithSource(EBCellFAB &a_primState, const EBCellFAB &a_source, const Real &a_scale, const Box &a_box)
non-virtual stuff
virtual void coveredExtrapSlopes(Real &a_dqc, const VolIndex &a_vof, const EBCellFAB &a_primState, const int &a_dir, const int &a_ivar)
IntVectSet m_coveredSetsMinuG4[SpaceDim]
Definition: EBPatchGodunov.H:893
Vector< slop_logic_t > m_slopVec[SpaceDim]
Definition: EBPatchGodunov.H:942
virtual void getCoveredValuesCons(Vector< Real > &a_covValues)=0
virtual 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], EBCellFAB a_slopesPrim[SpaceDim], EBCellFAB a_slopesSeco[SpaceDim], const EBCellFAB &a_flattening, const EBCellFAB &a_primState, const EBCellFAB &a_source, const DataIndex &a_dit, const Box &a_box)
bool hasLo
Definition: EBPatchGodunov.H:939
EBCellFAB m_primPlus[SpaceDim]
Definition: EBPatchGodunov.H:907
EBFaceFAB m_fluxOne[SpaceDim]
Definition: EBPatchGodunov.H:914
virtual bool usesFourthOrderSlopes() const =0
virtual void slope(EBCellFAB &a_slopePrim, EBCellFAB &a_slopeNLim, const EBCellFAB &a_primState, const EBCellFAB &a_flattening, const int &a_dir, const Box &a_box, bool a_doAggregated=false)
virtual void consToPrim(EBCellFAB &a_primState, const EBCellFAB &a_conState, const Box &a_box, int a_logflag, bool a_verbose=false)=0
virtual void primToCons(EBCellFAB &a_primState, const EBCellFAB &a_conState, const Box &a_box)=0
virtual void assembleFluxIrr(BaseIFFAB< Real > &a_fluxRegFlux, const BaseIFFAB< Real > &a_godunovFlux, const int &a_idir, const Box &a_cellBox, const IntVectSet &a_set)
rz func.
Definition: EBPatchGodunov.H:690
static void setVerbose(bool a_verbose)
static int getCurComp()
EBCellFAB m_primPlusTemp
Definition: EBPatchGodunov.H:911
virtual void riemann(EBFaceFAB &a_flux, const EBCellFAB &a_primLeft, const EBCellFAB &a_primRight, const int &a_dir, const Box &a_box)=0
static Real getMaxWaveSpeed()
EBCellFAB m_primState
Definition: EBPatchGodunov.H:909
void computeFluxes(EBFluxFAB &a_flux, BaseIVFAB< Real > a_coveredFluxLo[SpaceDim], BaseIVFAB< Real > a_coveredFluxHi[SpaceDim], Vector< VolIndex > a_coveredFaceLo[SpaceDim], Vector< VolIndex > a_coveredFaceHi[SpaceDim], EBCellFAB &a_primState, EBCellFAB a_slopesPrim[SpaceDim], EBCellFAB a_slopesSeco[SpaceDim], const EBCellFAB &a_flattening, const EBCellFAB &a_consState, const EBCellFAB &a_source, const Box &a_box, const DataIndex &a_dit, bool a_verbose)
virtual void getCoveredValuesPrim(Vector< Real > &a_covValues)=0
int dataID
Definition: EBPatchGodunov.H:932
static Real s_maxWaveSpeed
Definition: EBPatchGodunov.H:861
virtual int pressureIndex() const =0
static void setCurComp(int a_curComp)
virtual bool usesFlattening() const =0
Vector< VolIndex > m_coveredFaceMinuG4[SpaceDim]
Definition: EBPatchGodunov.H:895
static void setMaxWaveSpeed(Real a_maxWaveSpeedIV)
void do111coupling(EBFaceFAB a_fluxTwoVec[SpaceDim][SpaceDim], BaseIVFAB< Real > a_coveredFlux3DMinu[SpaceDim][SpaceDim], BaseIVFAB< Real > a_coveredFlux3DPlus[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 EBCellFAB a_slopesPrim[SpaceDim], const EBCellFAB a_slopesSeco[SpaceDim], const DataIndex &a_dit, const Box &a_box)
Real m_time
Definition: EBPatchGodunov.H:872
static int s_doingAdvVel
Definition: EBPatchGodunov.H:859