Chombo + EB  3.2
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  virtual void setTimeAndDt(const Real& a_time, const Real& a_dt)
449  {
450  m_time = a_time;
451  m_dt = a_dt;
452  }
453  ///
454  /**
455  needs coarse-fine IVS to know where to drop order for interpolation
456  virtual in case you need to add anything to definition
457  */
458  virtual void
459  setValidBox(const Box& a_validBox,
460  const EBISBox& a_ebisBox,
461  const IntVectSet& a_coarseFineIVS,
462  const Real& a_time,
463  const Real& a_dt);
464 
465  void
466  computeFlattening(EBCellFAB& a_flattening,
467  const EBCellFAB& a_primState,
468  const Box& a_box);
469 
470  ///
471  /**
472  Compute the limited slope /a_dq/ of the primitive variables
473  /a_q/ for the components in the interval /a_interval/,
474  Calls user-supplied EBPatchGodunov::applyLimiter.
475  */
476  virtual void
477  slope(EBCellFAB& a_slopePrim,
478  EBCellFAB& a_slopeNLim,
479  const EBCellFAB& a_primState,
480  const EBCellFAB& a_flattening,
481  const int& a_dir,
482  const Box& a_box,
483  bool a_doAggregated = false);
484 
485  ///needs to be virtual because of RZ
486  virtual void
488  const EBFluxFAB& a_flux,
489  const BaseIVFAB<Real> a_coveredFluxMinu[SpaceDim],
490  const BaseIVFAB<Real> a_coveredFluxPlus[SpaceDim],
491  const Vector<VolIndex> a_coveredFaceMinu[SpaceDim],
492  const Vector<VolIndex> a_coveredFacePlus[SpaceDim],
493  const Box& a_box);
494 
495  ///virtual in case you want to do something faster than go through constoprim
496  virtual void
497  updatePrim(EBCellFAB& a_primMinu,
498  EBCellFAB& a_primPlus,
499  const EBFaceFAB& a_flux,
500  const BaseIVFAB<Real>& a_coveredFluxMinu,
501  const BaseIVFAB<Real>& a_coveredFluxPlus,
502  const Vector<VolIndex>& a_coveredFaceMinu,
503  const Vector<VolIndex>& a_coveredFacePlus,
504  const int& a_dir,
505  const Box& a_box,
506  const Real& a_scale) ;
507 
508  ///virtual because RZ changes this function
509  virtual void
510  updateCons(EBCellFAB& a_consState,
511  const EBFaceFAB& a_flux,
512  const BaseIVFAB<Real>& a_coveredFluxMinu,
513  const BaseIVFAB<Real>& a_coveredFluxPlus,
514  const Vector<VolIndex>& a_coveredFaceMinu,
515  const Vector<VolIndex>& a_coveredFacePlus,
516  const int& a_dir,
517  const Box& a_box,
518  const Real& a_scale);
519  ///
520  /**
521  Returns the interval of component indices in the primitive variable
522  EBCellFAB for the velocities. Only used for artificial visc and flattening
523  */
524  virtual Interval velocityInterval() const = 0;
525 
526  ///needs to be virtual because of RZ
527  /**
528  */
529  virtual void
531  const BaseIFFAB<Real> a_centroidFlux[SpaceDim],
532  const BaseIVFAB<Real>& a_ebIrregFlux,
533  const IntVectSet& a_ivs);
534 
535  ///
536  /**
537  */
538  virtual void
539  computeEBIrregFlux(BaseIVFAB<Real>& a_ebIrregFlux,
540  const EBCellFAB& a_primState,
541  const EBCellFAB a_slopePrim[SpaceDim],
542  const IntVectSet& a_irregIVS,
543  const EBCellFAB& a_source) = 0;
544 
545  ///
546  /**
547  Returns the component index for the pressure. Called only if flattening is used.
548  */
549  virtual int pressureIndex() const = 0;
550 
551  ///
552  /**
553  Returns the component index for the bulk modulus, used as a
554  normalization to measure shock strength in flattening.
555  Called only if flattening is used.
556  */
557  virtual int bulkModulusIndex() const = 0;
558 
559  ///
560  /**
561  */
562  virtual ~EBPatchGodunov();
563 
564  ///
565  /**
566  */
567  virtual void
568  setCoveredConsVals(EBCellFAB& a_consState)= 0;
569 
570  ///
571  /**
572  */
573  virtual Real
574  getMaxWaveSpeed(const EBCellFAB& a_consState,
575  const Box& a_box) = 0;
576 
577  ///
578  virtual void
579  floorConserved(EBCellFAB& a_consState,
580  const Box& a_box) = 0;
581 
582  ///
583  virtual void
584  floorPrimitives(EBCellFAB& a_primState,
585  const Box& a_box) = 0;
586 
587  ///
588  virtual void
589  floorConserved(BaseIVFAB<Real>& a_consState,
590  const IntVectSet& a_ivs) = 0;
591 
592  ///
593  virtual void
594  floorPrimitives(BaseIVFAB<Real>& a_primState,
595  const IntVectSet& a_ivs) = 0;
596 
597  ///
598  virtual void getCoveredValuesPrim(Vector<Real>& a_covValues)=0;
599 
600  ///
601  virtual void getCoveredValuesCons(Vector<Real>& a_covValues)=0;
602 
603  virtual int densityIndex() const = 0;
604 
605  ///
606  /**
607  Return number of components for primitive variables.
608  */
609  virtual int numPrimitives() const = 0;
610 
611  ///
612  /**
613  Returns number of components for flux variables.
614  */
615  virtual int numFluxes() const = 0;
616 
617  ///
618  /**
619  Returns number of components for flux variables.
620  */
621  virtual int numSlopes() const = 0;
622 
623  ///
624  /**
625  Returns number of components for conserved variables.
626  */
627  virtual int numConserved() const = 0;
628 
629  ///
630  /**
631  Return the names of the variables. A default
632  implementation is provided that puts in generic names.
633  */
634  virtual Vector<string> stateNames()=0;
635 
636  ///
637  /**
638  Return the names of the variables. A default
639  implementation is provided that puts in generic names.
640  */
641  virtual Vector<string> primNames()=0;
642 
643  virtual void
644  normalPred(EBCellFAB& a_primLo,
645  EBCellFAB& a_primHi,
646  const EBCellFAB& a_primState,
647  const EBCellFAB& a_slopePrim,
648  const Real& a_scale,
649  const int& a_dir,
650  const Box& a_box) = 0;
651 
652  ///
653  /**
654  Given input left and right states, compute a suitably-upwinded
655  flux (e.g. by solving a Riemann problem), as in
656  */
657  virtual void
658  riemann(EBFaceFAB& a_flux,
659  const EBCellFAB& a_primLeft,
660  const EBCellFAB& a_primRight,
661  const int& a_dir,
662  const Box& a_box) = 0;
663 
664  ///
665  /**
666  Given input left and right states, compute a suitably-upwinded
667  flux (e.g. by solving a Riemann problem).
668  */
669  virtual void
670  riemann(BaseIVFAB<Real>& a_coveredFlux,
671  const BaseIVFAB<Real>& a_extendedState,
672  const EBCellFAB& a_primState,
673  const Vector<VolIndex>& a_region,
674  const int& a_dir,
675  const Side::LoHiSide& a_sd,
676  const Box& a_box)= 0;
677 
678  ///rz func.
679  virtual void
680  setSource(EBCellFAB& a_source,
681  const EBCellFAB& a_consState,
682  const Box& a_box)
683  {;}
684 
685  ///rz func.
686  virtual void
687  assembleFluxReg(EBFaceFAB& a_fluxRegFlux,
688  const EBFaceFAB& a_godunovFlux,
689  const int& a_idir,
690  const Box& a_cellBox)
691  {;}
692 
693  ///rz func.
694  virtual void
696  const BaseIFFAB<Real>& a_godunovFlux,
697  const int& a_idir,
698  const Box& a_cellBox,
699  const IntVectSet& a_set)
700  {;}
701 
702  ///
703  virtual void
704  consToPrim(EBCellFAB& a_primState,
705  const EBCellFAB& a_conState,
706  const Box& a_box,
707  int a_logflag,
708  bool a_verbose = false)=0;
709 
710 #ifdef CH_USE_HDF5
711  virtual void
713  {;}
714 #endif
715 
716  ///
717  virtual void
718  consToPrim(BaseIVFAB<Real>& a_primState,
719  const BaseIVFAB<Real>& a_conState,
720  const IntVectSet& a_ivs) =0;
721 
722  ///
723  /**
724  */
725  virtual void
726  primToCons(EBCellFAB& a_primState,
727  const EBCellFAB& a_conState,
728  const Box& a_box) = 0;
729 
730  ///
731  /**
732  */
733  virtual void
734  primToCons(BaseIVFAB<Real>& a_primState,
735  const BaseIVFAB<Real>& a_conState,
736  const IntVectSet& a_ivs) = 0;
737 
738  ///
739  /**
740  Return true if the application is using flattening.
741  */
742  virtual bool usesFlattening() const = 0;
743 
744  ///
745  /**
746  Return true if the application is using artificial viscosity.
747  */
748  virtual bool usesArtificialViscosity() const = 0;
749 
750  ///
751  /**
752  Return true if you are using fourth-order slopes.
753  Return false if you are using second-order slopes.
754  */
755  virtual bool usesFourthOrderSlopes() const = 0;
756 
757  ///
758  /**
759  Returns value of artificial viscosity. Called only if artificial
760  viscosity is being used.
761  */
762  virtual Real artificialViscosityCoefficient() const = 0;
763 
764  ///
765  /**
766  */
767  virtual bool isDefined() const;
768 
769  //debugging hooks. not for the faint of heart
770  static void setVerbose(bool a_verbose);
771  static void setCurLevel(int a_curLevel);
772  static void setCurComp(int a_curComp);
773  static void setDoingVel(int a_yesorno);
774  static void setDoingAdvVel(int a_yesorno);
775  static int getDoingAdvVel();
776  static int getDoingVel();
777  static int getCurLevel();
778  static int getCurComp();
779  static bool getVerbose();
780  static Real getMaxWaveSpeed();
781  static void setMaxWaveSpeed(Real a_maxWaveSpeedIV);
782  static IntVect getMaxWaveSpeedIV();
783  static void setMaxWaveSpeedIV(const IntVect& a_maxWaveSpeedIV);
784 
786  {
787  return m_primState;
788  }
790  {
791  return m_coveredFluxPlusG4;
792  }
794  {
795  return m_coveredFluxMinuG4;
796  }
797 
799  {
800  return m_coveredFaceMinuG4;
801  }
802 
804  {
805  return m_coveredFacePlusG4;
806  }
808  static int s_whichLev;
809 
810  ///
811  /**
812  set to true if the source you will provide
813  is in conservative variables. Default is false
814  */
815  static void useConservativeSource(bool a_conservativeSource)
816  {
817  s_conservativeSource = a_conservativeSource;
818  }
819 
820  //these are the objects I need to make updatePrim less of a dog
821  struct
822  {
823  int m_offset;
825  } typedef pointerOffset_t;
826 
827  struct
828  {
829  pointerOffset_t m_vofOffset;
830  } typedef updateStencil_t;
831 
832  //gets offsets
834  const VolIndex& a_vof);
835 
836  //defines and fills cache
837  void cacheEBCF(Vector<Vector<Real> >& a_cache,
838  const EBCellFAB& a_input);
839 
840  //puts values of cache into output
841  void uncacheEBCF(EBCellFAB& a_output,
842  const Vector<Vector<Real> >& a_cache);
843 
844  //for testing
845  void getArgBox(Box a_argBox[SpaceDim]);
846  //for testing
847  void getEntireBox(Box a_entireBox[SpaceDim])
848  {
849  for (int idir = 0; idir < SpaceDim; idir++)
850  {
851  a_entireBox[idir] = m_entireBox[idir];
852  }
853  }
854 protected:
855 
856  //the wild variety of crap I need to stencilize slopes
858 
859  static bool s_conservativeSource;
860  //stuff for debugging output
861  static int s_curLevel;
862  static int s_curComp;
863  static int s_doingVel;
864  static int s_doingAdvVel;
865  static bool s_verbose;
868  //set in define()
872  bool m_useAgg;
875 
880  bool m_isBCSet;
889 
891  //set by factory
893 
894  //all stuff sent to UpdatePrim, etc needs to be built with this
895  //set of info if any of these stenciling optimizations are to have any hope
901 
906 
911 
917 
921 
926 
927  //stuff for aggregated slopes
928  void setSlopeStuff();
929 
933 
934  struct
935  {
936  size_t offset;
937  int dataID;
938  } typedef access_t;
939 
940  struct
941  {
942  //slopes have all the same box so they will have the same offset and type
943  access_t slop_access; //offsets for slopes
944  bool hasLo, hasHi;
945  } typedef slop_logic_t;
946 
948 
949 };
950 #include "NamespaceFooter.H"
951 #endif
static int s_whichLev
Definition: EBPatchGodunov.H:808
Definition: EBPatchGodunov.H:940
BaseIVFAB< Real > * getCoveredFluxPlus()
Definition: EBPatchGodunov.H:789
bool m_isBCSet
Definition: EBPatchGodunov.H:880
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:712
BaseIFFAB< FaceStencil > m_interpStencils[SpaceDim]
Definition: EBPatchGodunov.H:873
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:922
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:680
static int getDoingVel()
bool m_isDefined
Definition: EBPatchGodunov.H:879
Real m_dxScale
Definition: EBPatchGodunov.H:871
static bool s_verbose
Definition: EBPatchGodunov.H:865
void uncacheEBCF(EBCellFAB &a_output, const Vector< Vector< Real > > &a_cache)
EBISBox m_ebisBox
Definition: EBPatchGodunov.H:876
virtual Interval velocityInterval() const =0
A reference-counting handle class.
Definition: RefCountedPtr.H:173
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:141
data to be added to HDF5 files.
Definition: CH_HDF5.H:519
size_t offset
Definition: EBPatchGodunov.H:936
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:902
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:931
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:687
bool m_isArtViscSet
Definition: EBPatchGodunov.H:883
BaseIVFAB< Real > m_coveredFluxPlus3D[SpaceDim][SpaceDim]
Definition: EBPatchGodunov.H:909
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:913
bool m_isSlopeSet
Definition: EBPatchGodunov.H:882
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:910
Vector< VolIndex > * getCoveredFacePlus()
Definition: EBPatchGodunov.H:803
void define(const ProblemDomain &a_domain, const RealVect &a_dx, bool a_useAgg=false)
Box m_modBoxOpen[SpaceDim]
Definition: EBPatchGodunov.H:857
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:923
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:903
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:892
Vector< updateStencil_t > m_updateStencil
Definition: EBPatchGodunov.H:890
virtual Vector< string > stateNames()=0
virtual void floorPrimitives(EBCellFAB &a_primState, const Box &a_box)=0
const int SpaceDim
Definition: SPACE.H:38
virtual bool isDefined() const
static IntVect s_debugIV
Definition: EBPatchGodunov.H:807
BaseIVFAB< Real > m_extendStatePlus3D[SpaceDim][SpaceDim]
Definition: EBPatchGodunov.H:907
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:427
static int s_doingVel
Definition: EBPatchGodunov.H:863
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:896
Definition: EBPatchGodunov.H:31
int m_offset
Definition: EBPatchGodunov.H:823
Box m_entireBox[SpaceDim]
Definition: EBPatchGodunov.H:932
Vector< VolIndex > m_coveredFacePlusG4[SpaceDim]
Definition: EBPatchGodunov.H:899
void getArgBox(Box a_argBox[SpaceDim])
A EBFaceFAB-like container for edge-centered fluxes.
Definition: EBFluxFAB.H:25
bool m_useLimiting
Definition: EBPatchGodunov.H:886
static IntVect getMaxWaveSpeedIV()
static int s_curLevel
Definition: EBPatchGodunov.H:861
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:869
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:943
Real m_dt
Definition: EBPatchGodunov.H:878
void setSlopeStuff()
static void useConservativeSource(bool a_conservativeSource)
Definition: EBPatchGodunov.H:815
Structure for passing component ranges in code.
Definition: Interval.H:23
EBCellFAB & getPrimState()
Definition: EBPatchGodunov.H:785
static bool s_conservativeSource
Definition: EBPatchGodunov.H:859
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:925
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:930
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:798
static void setDoingAdvVel(int a_yesorno)
double Real
Definition: REAL.H:33
bool m_useFourthOrderSlopes
Definition: EBPatchGodunov.H:884
BaseIVFAB< Real > m_extendStateNormMinu[SpaceDim]
Definition: EBPatchGodunov.H:924
RealVect m_dx
Definition: EBPatchGodunov.H:870
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:920
LoHiSide
Definition: LoHiSide.H:27
IntVectSet m_coveredSetsPlusG4[SpaceDim]
Definition: EBPatchGodunov.H:897
bool m_useAgg
Definition: EBPatchGodunov.H:872
pointerOffset_t m_vofOffset
Definition: EBPatchGodunov.H:829
bool m_useArtificialVisc
Definition: EBPatchGodunov.H:887
static void setDoingVel(int a_yesorno)
bool m_multiValued
Definition: EBPatchGodunov.H:824
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:904
Definition: EBPatchGodunov.H:821
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:867
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:881
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:827
BaseIVFAB< Real > * getCoveredFluxMinu()
Definition: EBPatchGodunov.H:793
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:885
EBFluxFAB m_primGdnv
Definition: EBPatchGodunov.H:918
EBCellFAB m_primMinuTemp
Definition: EBPatchGodunov.H:915
void getEntireBox(Box a_entireBox[SpaceDim])
Definition: EBPatchGodunov.H:847
static void setMaxWaveSpeedIV(const IntVect &a_maxWaveSpeedIV)
BaseIVFAB< Real > m_coveredFluxMinuG4[SpaceDim]
Definition: EBPatchGodunov.H:905
Box m_validBox
Definition: EBPatchGodunov.H:874
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:888
Definition: EBPatchGodunov.H:934
BaseIVFAB< Real > m_extendStateMinu3D[SpaceDim][SpaceDim]
Definition: EBPatchGodunov.H:908
static int s_curComp
Definition: EBPatchGodunov.H:862
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:898
virtual void setTimeAndDt(const Real &a_time, const Real &a_dt)
Definition: EBPatchGodunov.H:448
Vector< slop_logic_t > m_slopVec[SpaceDim]
Definition: EBPatchGodunov.H:947
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:944
EBCellFAB m_primPlus[SpaceDim]
Definition: EBPatchGodunov.H:912
EBFaceFAB m_fluxOne[SpaceDim]
Definition: EBPatchGodunov.H:919
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:695
static void setVerbose(bool a_verbose)
static int getCurComp()
EBCellFAB m_primPlusTemp
Definition: EBPatchGodunov.H:916
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:914
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:937
static Real s_maxWaveSpeed
Definition: EBPatchGodunov.H:866
virtual int pressureIndex() const =0
static void setCurComp(int a_curComp)
virtual bool usesFlattening() const =0
Vector< VolIndex > m_coveredFaceMinuG4[SpaceDim]
Definition: EBPatchGodunov.H:900
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:877
static int s_doingAdvVel
Definition: EBPatchGodunov.H:864