00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011 #ifndef _EBPATCHGODUNOV_H_
00012 #define _EBPATCHGODUNOV_H_
00013
00014 #include "Box.H"
00015 #include "IntVectSet.H"
00016 #include "Vector.H"
00017 #include "CH_HDF5.H"
00018 #include "EBCellFAB.H"
00019 #include "EBFluxFAB.H"
00020 #include "EBISBox.H"
00021 #include "BaseIVFAB.H"
00022 #include "EBPhysIBC.H"
00023 #include "EBPhysIBCFactory.H"
00024 #include "Stencils.H"
00025 #include "NamespaceHeader.H"
00026
00028
00030 class EBPatchGodunov
00031 {
00032 public:
00034
00036 EBPatchGodunov();
00037
00039 void
00040 incrementWithSource(EBCellFAB& a_primState,
00041 const EBCellFAB& a_source,
00042 const Real& a_scale,
00043 const Box& a_box) ;
00044
00046 virtual void
00047 extrapToCoveredFaces(BaseIVFAB<Real>& a_extendedPrim,
00048 const EBCellFAB& a_primMinu,
00049 const EBCellFAB& a_primPlus,
00050 const EBCellFAB& a_primState,
00051 const Vector<VolIndex>& a_coveredFaces,
00052 const int& a_faceDir,
00053 const Side::LoHiSide& a_sd,
00054 const Box& a_box);
00055
00057 virtual void
00058 pointExtrapToCovered2D(Vector<Real>& a_extrapVal,
00059 const EBCellFAB& a_primMinu,
00060 const EBCellFAB& a_primPlus,
00061 const EBCellFAB& a_primState,
00062 const int& a_faceDir,
00063 const VolIndex& a_vof,
00064 const RealVect& a_normal,
00065 const Side::LoHiSide& a_sd,
00066 const int& a_numPrim);
00067
00069 virtual void
00070 pointExtrapToCovered3D(Vector<Real>& a_extrapVal,
00071 const EBCellFAB& a_primMinu,
00072 const EBCellFAB& a_primPlus,
00073 const EBCellFAB& a_primState,
00074 const int& a_faceDir,
00075 const VolIndex& a_vof,
00076 const RealVect& a_normal,
00077 const Side::LoHiSide& a_sd,
00078 const int& a_numPrim);
00079
00081 void
00082 computeCoveredFaces(Vector<VolIndex>& a_coveredFace,
00083 IntVectSet& a_coveredIVS,
00084 IntVectSet& a_irregIVS,
00085 const int& a_idir,
00086 const Side::LoHiSide& a_sd,
00087 const Box& a_region);
00089
00091 const EBPhysIBC* getEBPhysIBC() const;
00092
00094
00096 Real
00097 pointLimiter(const Real& a_deltaW1,
00098 const Real& a_deltaW2);
00099
00101
00103 void
00104 setEBPhysIBC(const EBPhysIBCFactory& a_bc);
00105
00107
00109 void setSlopeParameters(bool a_fourthOrderSlopes,
00110 bool a_flattening,
00111 bool a_useLimiting);
00112
00114
00120 void
00121 applyLimiter(EBCellFAB& a_slopePrim,
00122 const EBCellFAB& a_slopePrimLeft,
00123 const EBCellFAB& a_slopePrimRigh,
00124 const int& a_dir,
00125 const Box& a_box);
00126
00127 virtual void
00128 doSecondOrderSlopes(EBCellFAB& a_delta2W,
00129 EBCellFAB& a_deltaWL,
00130 EBCellFAB& a_deltaWR,
00131 EBCellFAB& a_deltaWC,
00132 const EBCellFAB& a_primState,
00133 const int& a_dir,
00134 const Box& a_box);
00135 void
00136 doFourthOrderSlopes(EBCellFAB& a_delta4W,
00137 EBCellFAB& a_deltaWC,
00138 const EBCellFAB& a_delta2W,
00139 const EBCellFAB& a_deltaWL,
00140 const EBCellFAB& a_deltaWR,
00141 const EBCellFAB& a_primState,
00142 const int& a_dir,
00143 const Box& a_box);
00144 void
00145 pointGetSlopes(Real& a_dql,
00146 Real& a_dqr,
00147 Real& a_dqc,
00148 bool& a_hasFacesLeft,
00149 bool& a_hasFacesRigh,
00150 const VolIndex& a_vof,
00151 const EBCellFAB& a_primState,
00152 const int& a_dir,
00153 const int& a_ivar,
00154 const bool& a_verbose);
00155
00156 void
00157 coveredExtrapSlopes(Real& a_dqc,
00158 const VolIndex& a_vof,
00159 const EBCellFAB& a_primState,
00160 const int& a_dir,
00161 const int& a_ivar);
00162
00164
00166 void
00167 computeFluxes(EBFluxFAB& a_flux,
00168 BaseIVFAB<Real> a_coveredFluxLo[SpaceDim],
00169 BaseIVFAB<Real> a_coveredFluxHi[SpaceDim],
00170 Vector<VolIndex> a_coveredFaceLo[SpaceDim],
00171 Vector<VolIndex> a_coveredFaceHi[SpaceDim],
00172 EBCellFAB& a_primState,
00173 EBCellFAB a_slopesPrim[SpaceDim],
00174 EBCellFAB a_slopesSeco[SpaceDim],
00175 const EBCellFAB& a_flattening,
00176 const EBCellFAB& a_consState,
00177 const EBCellFAB& a_source,
00178 const Box& a_box,
00179 const DataIndex& a_dit,
00180 bool a_verbose);
00181
00183
00185 virtual void
00186 extrapolatePrim2D(EBCellFAB a_primMinu[SpaceDim],
00187 EBCellFAB a_primPlus[SpaceDim],
00188 EBCellFAB& a_primState,
00189 EBCellFAB a_slopesPrim[SpaceDim],
00190 EBCellFAB a_slopesSeco[SpaceDim],
00191 const EBCellFAB& a_flattening,
00192 const EBCellFAB& a_consState,
00193 const EBCellFAB& a_source,
00194 const Box& a_box,
00195 const DataIndex& a_dit,
00196 bool a_verbose);
00197
00199
00201 void
00202 extrapolatePrim3D(EBCellFAB a_primMinu[SpaceDim],
00203 EBCellFAB a_primPlus[SpaceDim],
00204 EBCellFAB& a_primState,
00205 EBCellFAB a_slopesPrim[SpaceDim],
00206 EBCellFAB a_slopesSeco[SpaceDim],
00207 const EBCellFAB& a_flattening,
00208 const EBCellFAB& a_consState,
00209 const EBCellFAB& a_source,
00210 const Box& a_box,
00211 const DataIndex& a_dit,
00212 bool a_verbose);
00213
00215
00221 virtual void
00222 regularUpdate(EBCellFAB& a_consState,
00223 EBFluxFAB& a_flux,
00224 BaseIVFAB<Real>& a_ebIrregFlux,
00225 BaseIVFAB<Real>& a_nonConservativeDivergence,
00226 const EBCellFAB& a_flattening,
00227 const EBCellFAB& a_source,
00228 const Box& a_box,
00229 const IntVectSet& a_ivs,
00230 const DataIndex& a_dit,
00231 bool a_verbose);
00232
00233 virtual void
00234 regularDivergences(EBCellFAB& a_nonconsdiv,
00235 EBCellFAB& a_consState,
00236 EBFluxFAB& a_flux,
00237 BaseIVFAB<Real>& a_ebIrregFlux,
00238 BaseIVFAB<Real>& a_nonConservativeDivergence,
00239 const EBCellFAB& a_flattening,
00240 const EBCellFAB& a_source,
00241 const Box& a_box,
00242 const IntVectSet& a_ivs,
00243 const DataIndex& a_dit,
00244 bool a_verbose);
00245
00246 virtual void
00247 hybridDivergence(EBCellFAB& a_hybridDiv,
00248 EBCellFAB& a_consState,
00249 BaseIVFAB<Real>& a_massDiff,
00250 const BaseIFFAB<Real> a_centroidFlux[SpaceDim],
00251 const BaseIVFAB<Real>& a_ebIrregFlux,
00252 const BaseIVFAB<Real>& a_nonConservativeDivergence,
00253 const Box& a_box,
00254 const IntVectSet& a_ivs);
00256
00261 virtual void
00262 irregularUpdate(EBCellFAB& a_consState,
00263 Real& a_maxWaveSpeed,
00264 BaseIVFAB<Real>& a_massDiff,
00265 const BaseIFFAB<Real> a_centroidFlux[SpaceDim],
00266 const BaseIVFAB<Real>& a_ebIrregFlux,
00267 const BaseIVFAB<Real>& a_nonConservativeDivergence,
00268 const Box& a_box,
00269 const IntVectSet& a_ivs);
00270
00272
00274 virtual void
00275 doNormalDerivativeExtr2D(EBCellFAB a_primMinu[SpaceDim],
00276 EBCellFAB a_primPlus[SpaceDim],
00277 EBFaceFAB a_fluxOne[SpaceDim],
00278 BaseIVFAB<Real> a_coveredFluxNormMinu[SpaceDim],
00279 BaseIVFAB<Real> a_coveredFluxNormPlus[SpaceDim],
00280 Vector<VolIndex> a_coveredFaceNormMinu[SpaceDim],
00281 Vector<VolIndex> a_coveredFaceNormPlus[SpaceDim],
00282 EBCellFAB a_slopesPrim[SpaceDim],
00283 EBCellFAB a_slopesSeco[SpaceDim],
00284 const EBCellFAB& a_flattening,
00285 const EBCellFAB& a_primState,
00286 const EBCellFAB& a_source,
00287 const DataIndex& a_dit,
00288 const Box& a_box);
00289
00291
00293 void
00294 doNormalDerivativeExtr3D(EBCellFAB a_primMinu[SpaceDim],
00295 EBCellFAB a_primPlus[SpaceDim],
00296 EBFaceFAB a_fluxOne[SpaceDim],
00297 BaseIVFAB<Real> a_coveredFluxNormMinu[SpaceDim],
00298 BaseIVFAB<Real> a_coveredFluxNormPlus[SpaceDim],
00299 Vector<VolIndex> a_coveredFaceNormMinu[SpaceDim],
00300 Vector<VolIndex> a_coveredFaceNormPlus[SpaceDim],
00301 EBCellFAB a_slopesPrim[SpaceDim],
00302 EBCellFAB a_slopesSeco[SpaceDim],
00303 const EBCellFAB& a_flattening,
00304 const EBCellFAB& a_primState,
00305 const EBCellFAB& a_source,
00306 const DataIndex& a_dit,
00307 const Box& a_box);
00308
00310
00312 virtual void
00313 finalExtrap2D(EBCellFAB a_primMinu[SpaceDim],
00314 EBCellFAB a_primPlus[SpaceDim],
00315 const BaseIVFAB<Real> a_coveredFluxNormMinu[SpaceDim],
00316 const BaseIVFAB<Real> a_coveredFluxNormPlus[SpaceDim],
00317 const Vector<VolIndex> a_coveredFaceNormMinu[SpaceDim],
00318 const Vector<VolIndex> a_coveredFaceNormPlus[SpaceDim],
00319 const EBFaceFAB a_fluxOne[SpaceDim],
00320 const EBCellFAB& a_primState,
00321 const EBCellFAB a_slopesPrim[SpaceDim],
00322 const EBCellFAB a_slopesSeco[SpaceDim],
00323 const Box& a_box);
00324
00326
00328 void
00329 finalExtrap3D(EBCellFAB a_primMinu[SpaceDim],
00330 EBCellFAB a_primPlus[SpaceDim],
00331 const BaseIVFAB<Real> a_coveredFlux3DMinu[SpaceDim][SpaceDim],
00332 const BaseIVFAB<Real> a_coveredFlux3DPlus[SpaceDim][SpaceDim],
00333 const EBFaceFAB a_fluxTwoVec[SpaceDim][SpaceDim],
00334 const EBCellFAB& a_primState,
00335 const EBCellFAB a_slopesPrim[SpaceDim],
00336 const EBCellFAB a_slopesSeco[SpaceDim],
00337 const Box& a_box);
00338
00340
00342 void
00343 do111coupling(EBFaceFAB a_fluxTwoVec[SpaceDim][SpaceDim],
00344 BaseIVFAB<Real> a_coveredFlux3DMinu[SpaceDim][SpaceDim],
00345 BaseIVFAB<Real> a_coveredFlux3DPlus[SpaceDim][SpaceDim],
00346 const EBCellFAB a_primMinu[SpaceDim],
00347 const EBCellFAB a_primPlus[SpaceDim],
00348 const BaseIVFAB<Real> a_coveredFluxNormMinu[SpaceDim],
00349 const BaseIVFAB<Real> a_coveredFluxNormPlus[SpaceDim],
00350 const Vector<VolIndex> a_coveredFaceNormMinu[SpaceDim],
00351 const Vector<VolIndex> a_coveredFaceNormPlus[SpaceDim],
00352 const EBFaceFAB a_fluxOne[SpaceDim],
00353 const EBCellFAB& a_primState,
00354 const EBCellFAB a_slopesPrim[SpaceDim],
00355 const EBCellFAB a_slopesSeco[SpaceDim],
00356 const DataIndex& a_dit,
00357 const Box& a_box);
00358
00360
00362 void
00363 interpolateFluxToCentroids(BaseIFFAB<Real> a_centroidFlux[SpaceDim],
00364 const BaseIFFAB<Real>* const a_fluxInterpolant[SpaceDim],
00365 const IntVectSet& a_irregIVS);
00366
00368
00370 virtual void
00371 finalUpdate(EBCellFAB& a_consState,
00372 BaseIVFAB<Real>& a_massDiff,
00373 const BaseIVFAB<Real>& a_nonConsDivF,
00374 const BaseIVFAB<Real>& a_conservDivF,
00375 const IntVectSet& a_ivs);
00376
00378 void
00379 getFaceDivergence(EBFluxFAB& a_openDivU,
00380 const EBCellFAB& a_primState,
00381 const EBCellFAB a_slopePrim[SpaceDim],
00382 const Box& a_box,
00383 const IntVectSet& a_ivsIrreg);
00384
00386 void artificialViscosity(bool a_useArtificialVisc);
00387
00389 void
00390 applyArtificialViscosity(EBFluxFAB& a_openFlux,
00391 BaseIVFAB<Real> a_coveredFluxMinu[SpaceDim],
00392 BaseIVFAB<Real> a_coveredFluxPlus[SpaceDim],
00393 const Vector<VolIndex> a_coveredFaceMinu[SpaceDim],
00394 const Vector<VolIndex> a_coveredFacePlus[SpaceDim],
00395 const EBCellFAB& a_consState,
00396 const EBFluxFAB& a_divVel,
00397 const Box& a_box,
00398 const IntVectSet& a_ivsIrreg);
00399
00400 Real bilinearFunc(const Real a_WVal[2][2],
00401 const Real& a_xd1,
00402 const Real& a_xd2);
00403
00404 Real maxFunction(const Real a_WVal[2][2],
00405 const Real& a_xd1,
00406 const Real& a_xd2);
00407
00409
00411 void
00412 define(const ProblemDomain& a_domain,
00413 const RealVect& a_dx);
00414
00415
00417 void
00418 define(const ProblemDomain& a_domain,
00419 const Real& a_dx)
00420 {
00421 RealVect dxVect = a_dx*RealVect::Unit;
00422 define(a_domain, dxVect);
00423 }
00424
00426
00430 virtual void
00431 setValidBox(const Box& a_validBox,
00432 const EBISBox& a_ebisBox,
00433 const IntVectSet& a_coarseFineIVS,
00434 const Real& a_time,
00435 const Real& a_dt);
00436
00437 void
00438 computeFlattening(EBCellFAB& a_flattening,
00439 const EBCellFAB& a_primState,
00440 const Box& a_box);
00441
00443
00448 virtual void
00449 slope(EBCellFAB& a_slopePrim,
00450 EBCellFAB& a_slopeNLim,
00451 const EBCellFAB& a_primState,
00452 const EBCellFAB& a_flattening,
00453 const int& a_dir,
00454 const Box& a_box);
00455
00457 virtual void
00458 nonconservativeDivergence(EBCellFAB& a_divF,
00459 const EBFluxFAB& a_flux,
00460 const BaseIVFAB<Real> a_coveredFluxMinu[SpaceDim],
00461 const BaseIVFAB<Real> a_coveredFluxPlus[SpaceDim],
00462 const Vector<VolIndex> a_coveredFaceMinu[SpaceDim],
00463 const Vector<VolIndex> a_coveredFacePlus[SpaceDim],
00464 const Box& a_box);
00465
00467 virtual void
00468 updatePrim(EBCellFAB& a_primMinu,
00469 EBCellFAB& a_primPlus,
00470 const EBFaceFAB& a_flux,
00471 const BaseIVFAB<Real>& a_coveredFluxMinu,
00472 const BaseIVFAB<Real>& a_coveredFluxPlus,
00473 const Vector<VolIndex>& a_coveredFaceMinu,
00474 const Vector<VolIndex>& a_coveredFacePlus,
00475 const int& a_dir,
00476 const Box& a_box,
00477 const Real& a_scale) ;
00478
00480 virtual void
00481 updateCons(EBCellFAB& a_consState,
00482 const EBFaceFAB& a_flux,
00483 const BaseIVFAB<Real>& a_coveredFluxMinu,
00484 const BaseIVFAB<Real>& a_coveredFluxPlus,
00485 const Vector<VolIndex>& a_coveredFaceMinu,
00486 const Vector<VolIndex>& a_coveredFacePlus,
00487 const int& a_dir,
00488 const Box& a_box,
00489 const Real& a_scale);
00491
00495 virtual Interval velocityInterval() const = 0;
00496
00498
00500 virtual void
00501 consUndividedDivergence(BaseIVFAB<Real>& a_divF,
00502 const BaseIFFAB<Real> a_centroidFlux[SpaceDim],
00503 const BaseIVFAB<Real>& a_ebIrregFlux,
00504 const IntVectSet& a_ivs);
00505
00507
00509 virtual void
00510 computeEBIrregFlux(BaseIVFAB<Real>& a_ebIrregFlux,
00511 const EBCellFAB& a_primState,
00512 const EBCellFAB a_slopePrim[SpaceDim],
00513 const IntVectSet& a_irregIVS,
00514 const EBCellFAB& a_source) = 0;
00515
00517
00520 virtual int pressureIndex() const = 0;
00521
00523
00528 virtual int bulkModulusIndex() const = 0;
00529
00531
00533 virtual ~EBPatchGodunov();
00534
00536
00538 virtual void
00539 setCoveredConsVals(EBCellFAB& a_consState)= 0;
00540
00542
00544 virtual Real
00545 getMaxWaveSpeed(const EBCellFAB& a_consState,
00546 const Box& a_box) = 0;
00547
00549 virtual void
00550 floorConserved(EBCellFAB& a_consState,
00551 const Box& a_box) = 0;
00552
00554 virtual void
00555 floorPrimitives(EBCellFAB& a_primState,
00556 const Box& a_box) = 0;
00557
00559 virtual void
00560 floorConserved(BaseIVFAB<Real>& a_consState,
00561 const IntVectSet& a_ivs) = 0;
00562
00564 virtual void
00565 floorPrimitives(BaseIVFAB<Real>& a_primState,
00566 const IntVectSet& a_ivs) = 0;
00567
00569 virtual void getCoveredValuesPrim(Vector<Real>& a_covValues)=0;
00570
00572 virtual void getCoveredValuesCons(Vector<Real>& a_covValues)=0;
00573
00574 virtual int densityIndex() const = 0;
00575
00577
00580 virtual int numPrimitives() const = 0;
00581
00583
00586 virtual int numFluxes() const = 0;
00587
00589
00592 virtual int numSlopes() const = 0;
00593
00595
00598 virtual int numConserved() const = 0;
00599
00601
00605 virtual Vector<string> stateNames()=0;
00606
00608
00612 virtual Vector<string> primNames()=0;
00613
00614 virtual void
00615 normalPred(EBCellFAB& a_primLo,
00616 EBCellFAB& a_primHi,
00617 const EBCellFAB& a_primState,
00618 const EBCellFAB& a_slopePrim,
00619 const Real& a_scale,
00620 const int& a_dir,
00621 const Box& a_box) = 0;
00622
00624
00628 virtual void
00629 riemann(EBFaceFAB& a_flux,
00630 const EBCellFAB& a_primLeft,
00631 const EBCellFAB& a_primRight,
00632 const int& a_dir,
00633 const Box& a_box) = 0;
00634
00636
00640 virtual void
00641 riemann(BaseIVFAB<Real>& a_coveredFlux,
00642 const BaseIVFAB<Real>& a_extendedState,
00643 const EBCellFAB& a_primState,
00644 const Vector<VolIndex>& a_region,
00645 const int& a_dir,
00646 const Side::LoHiSide& a_sd,
00647 const Box& a_box)= 0;
00648
00650 virtual void
00651 setSource(EBCellFAB& a_source,
00652 const EBCellFAB& a_consState,
00653 const Box& a_box)
00654 {;}
00655
00657 virtual void
00658 assembleFluxReg(EBFaceFAB& a_fluxRegFlux,
00659 const EBFaceFAB& a_godunovFlux,
00660 const int& a_idir,
00661 const Box& a_cellBox)
00662 {;}
00663
00665 virtual void
00666 assembleFluxIrr(BaseIFFAB<Real>& a_fluxRegFlux,
00667 const BaseIFFAB<Real>& a_godunovFlux,
00668 const int& a_idir,
00669 const Box& a_cellBox,
00670 const IntVectSet& a_set)
00671 {;}
00672
00674 virtual void
00675 consToPrim(EBCellFAB& a_primState,
00676 const EBCellFAB& a_conState,
00677 const Box& a_box,
00678 int a_logflag,
00679 bool a_verbose = false)=0;
00680
00681 #ifdef CH_USE_HDF5
00682 virtual void
00683 expressions(HDF5HeaderData& a_holder)
00684 {;}
00685 #endif
00686
00688 virtual void
00689 consToPrim(BaseIVFAB<Real>& a_primState,
00690 const BaseIVFAB<Real>& a_conState,
00691 const IntVectSet& a_ivs) =0;
00692
00694
00696 virtual void
00697 primToCons(EBCellFAB& a_primState,
00698 const EBCellFAB& a_conState,
00699 const Box& a_box) = 0;
00700
00702
00704 virtual void
00705 primToCons(BaseIVFAB<Real>& a_primState,
00706 const BaseIVFAB<Real>& a_conState,
00707 const IntVectSet& a_ivs) = 0;
00708
00710
00713 virtual bool usesFlattening() const = 0;
00714
00716
00719 virtual bool usesArtificialViscosity() const = 0;
00720
00722
00726 virtual bool usesFourthOrderSlopes() const = 0;
00727
00729
00733 virtual Real artificialViscosityCoefficient() const = 0;
00734
00736
00738 virtual bool isDefined() const;
00739
00740
00741 static void setVerbose(bool a_verbose);
00742 static void setCurLevel(int a_curLevel);
00743 static void setCurComp(int a_curComp);
00744 static void setDoingVel(int a_yesorno);
00745 static void setDoingAdvVel(int a_yesorno);
00746 static int getDoingAdvVel();
00747 static int getDoingVel();
00748 static int getCurLevel();
00749 static int getCurComp();
00750 static bool getVerbose();
00751 static Real getMaxWaveSpeed();
00752 static void setMaxWaveSpeed(Real a_maxWaveSpeedIV);
00753 static IntVect getMaxWaveSpeedIV();
00754 static void setMaxWaveSpeedIV(const IntVect& a_maxWaveSpeedIV);
00755
00756 EBCellFAB& getPrimState()
00757 {
00758 return m_primState;
00759 }
00760 BaseIVFAB<Real>* getCoveredFluxPlus()
00761 {
00762 return m_coveredFluxPlusG4;
00763 }
00764 BaseIVFAB<Real>* getCoveredFluxMinu()
00765 {
00766 return m_coveredFluxMinuG4;
00767 }
00768
00769 Vector<VolIndex>* getCoveredFaceMinu()
00770 {
00771 return m_coveredFaceMinuG4;
00772 }
00773
00774 Vector<VolIndex>* getCoveredFacePlus()
00775 {
00776 return m_coveredFacePlusG4;
00777 }
00778 static IntVect s_debugIV;
00779 static int s_whichLev;
00780
00782
00786 static void useConservativeSource(bool a_conservativeSource)
00787 {
00788 s_conservativeSource = a_conservativeSource;
00789 }
00790
00791
00792 struct
00793 {
00794 int m_offset;
00795 bool m_multiValued;
00796 } typedef pointerOffset_t;
00797
00798 struct
00799 {
00800 pointerOffset_t m_vofOffset;
00801 } typedef updateStencil_t;
00802
00803
00804 void fillUpdateStencil(EBPatchGodunov::updateStencil_t& a_sten,
00805 const VolIndex& a_vof);
00806
00807
00808 void cacheEBCF(Vector<Vector<Real> >& a_cache,
00809 const EBCellFAB& a_input);
00810
00811
00812 void uncacheEBCF(EBCellFAB& a_output,
00813 const Vector<Vector<Real> >& a_cache);
00814 protected:
00815
00816 static bool s_conservativeSource;
00817
00818 static int s_curLevel;
00819 static int s_curComp;
00820 static int s_doingVel;
00821 static int s_doingAdvVel;
00822 static bool s_verbose;
00823 static Real s_maxWaveSpeed;
00824 static IntVect s_maxWaveSpeedIV;
00825
00826 ProblemDomain m_domain;
00827 RealVect m_dx;
00828 Real m_dxScale;
00829
00830 BaseIFFAB<FaceStencil> m_interpStencils[SpaceDim];
00831 Box m_validBox;
00832
00833 EBISBox m_ebisBox;
00834 Real m_time;
00835 Real m_dt;
00836 bool m_isDefined;
00837 bool m_isBCSet;
00838 bool m_isBoxSet;
00839 bool m_isSlopeSet;
00840 bool m_isArtViscSet;
00841 bool m_useFourthOrderSlopes;
00842 bool m_useFlattening;
00843 bool m_useLimiting;
00844 bool m_useArtificialVisc;
00845 Vector<VolIndex> m_irregVoFs;
00846
00847 Vector<updateStencil_t> m_updateStencil;
00848
00849 EBPhysIBC* m_bc;
00850
00851
00852
00853 Box m_validBoxG4;
00854 IntVectSet m_coveredSetsPlusG4[SpaceDim];
00855 IntVectSet m_coveredSetsMinuG4[SpaceDim];
00856 Vector<VolIndex> m_coveredFacePlusG4[SpaceDim];
00857 Vector<VolIndex> m_coveredFaceMinuG4[SpaceDim];
00858
00859 BaseIVFAB<Real> m_extendStatePlusG4[SpaceDim];
00860 BaseIVFAB<Real> m_extendStateMinuG4[SpaceDim];
00861 BaseIVFAB<Real> m_coveredFluxPlusG4[SpaceDim];
00862 BaseIVFAB<Real> m_coveredFluxMinuG4[SpaceDim];
00863
00864 BaseIVFAB<Real> m_extendStatePlus3D[SpaceDim][SpaceDim];
00865 BaseIVFAB<Real> m_extendStateMinu3D[SpaceDim][SpaceDim];
00866 BaseIVFAB<Real> m_coveredFluxPlus3D[SpaceDim][SpaceDim];
00867 BaseIVFAB<Real> m_coveredFluxMinu3D[SpaceDim][SpaceDim];
00868
00869 EBCellFAB m_primPlus[SpaceDim];
00870 EBCellFAB m_primMinu[SpaceDim];
00871 EBCellFAB m_primState;
00872 EBCellFAB m_primMinuTemp;
00873 EBCellFAB m_primPlusTemp;
00874
00875 EBFluxFAB m_primGdnv;
00876 EBFaceFAB m_fluxOne[SpaceDim];
00877 EBFaceFAB m_fluxTwo[SpaceDim][SpaceDim];
00878
00879 BaseIVFAB<Real> m_coveredFluxNormMinu[SpaceDim];
00880 BaseIVFAB<Real> m_coveredFluxNormPlus[SpaceDim];
00881 BaseIVFAB<Real> m_extendStateNormMinu[SpaceDim];
00882 BaseIVFAB<Real> m_extendStateNormPlus[SpaceDim];
00883
00884 };
00885 #include "NamespaceFooter.H"
00886 #endif