27#include <CD_NamespaceHeader.H>
1227#include <CD_NamespaceFooter.H>
Declaration of core class for handling AMR-related operations (with embedded boundaries)
Declaration of domain boundary condition types for CdrSolver.
Declaration of a class that passes information into CdrSolver (e.g., initial conditions).
Declaration of base class for defining geometries.
Class for handling spatial operations.
Definition CD_AmrMesh.H:43
Class for encapsulating possible domain boundary conditions for CdrSolver.
Definition CD_CdrDomainBC.H:32
std::function< Real(const RealVect a_position, const Real a_time)> FluxFunction
Function which maps f(R^3,t) : R. Used for setting the associated value and boundary condition type.
Definition CD_CdrDomainBC.H:52
std::pair< int, Side::LoHiSide > DomainSide
Alias for mapping a direction and side. The first element in pair is the coordinate direction and the...
Definition CD_CdrDomainBC.H:57
BcType
Boundary condition types for the CDR solvers.
Definition CD_CdrDomainBC.H:38
Base class for solving convection-diffusion-reaction equations.
Definition CD_CdrSolver.H:35
virtual void gwnDiffusionSource(EBAMRCellData &a_noiseSource, const EBAMRCellData &a_cellPhi)
Compute a random gaussian white noise source term.
Definition CD_CdrSolver.cpp:2976
virtual void parseOptions()=0
Parse class options.
virtual void computeDivF(EBAMRCellData &a_divF, EBAMRCellData &a_phi, const Real a_extrapDt, const bool a_conservativeOnly, const bool a_ebFlux, const bool a_domainFlux)=0
Compute div(v*phi) explicitly.
bool m_isDiffusive
Is the solver diffusive or not.
Definition CD_CdrSolver.H:888
virtual void computeAdvectionDiffusionFlux(EBAMRFluxData &a_flux, const EBAMRCellData &a_cellStates, const EBAMRFluxData &a_faceStates, const EBAMRFluxData &a_faceVelocities, const EBAMRFluxData &a_faceDiffCo, const bool a_addDomainFlux)
Compute the full advection-diffusion flux. This assumes that the solver is mobile and diffusive.
Definition CD_CdrSolver.cpp:681
virtual void nonConservativeDivergence(EBAMRIVData &a_nonConservativeDivergence, const EBAMRCellData &a_divG)
Compute the non-conservative divergence.
Definition CD_CdrSolver.cpp:1463
virtual RefCountedPtr< CdrSpecies > & getSpecies() noexcept
Get the CDR species.
Definition CD_CdrSolver.cpp:42
bool m_plotPhi
If true, m_phi is added to plot files.
Definition CD_CdrSolver.H:898
virtual EBAMRIVData & getEbCenteredDiffusionCoefficient()
Get the EB-centered diffusion coefficient.
Definition CD_CdrSolver.cpp:2721
virtual void parseRuntimeOptions()=0
Parse runtime options.
virtual EBAMRIVData & getEbCenteredVelocity()
Get the eb-centered velocities.
Definition CD_CdrSolver.cpp:2688
int m_timeStep
Time step.
Definition CD_CdrSolver.H:863
EBAMRCellData m_source
Source term.
Definition CD_CdrSolver.H:770
virtual EBAMRCellData & getSource()
Get the source term.
Definition CD_CdrSolver.cpp:2655
CdrSolver(const CdrSolver &&a_other)=delete
Disallowed move constructor.
void setDomainBcFunction(const CdrDomainBC::DomainSide a_domainSide, const CdrDomainBC::FluxFunction &a_fluxFunction)
Set domain bc function on particular domain side.
Definition CD_CdrSolver.cpp:100
virtual void parsePlotVariables()
Parses plot variables.
Definition CD_CdrSolver.cpp:2933
CdrSolver()
Default constructor.
Definition CD_CdrSolver.cpp:30
virtual void parsePlotMode()
Parse plot mode.
Definition CD_CdrSolver.cpp:3229
EBAMRFluxData m_faceCenteredDiffusionCoefficient
Diffusion coefficients on face centers.
Definition CD_CdrSolver.H:840
virtual int getNumberOfPlotVariables() const
Get number of output fields.
Definition CD_CdrSolver.cpp:183
virtual bool isMobile()
Return true if the solver is mobile and false otherwise.
Definition CD_CdrSolver.cpp:2633
virtual EBAMRFluxData & getFaceCenteredVelocity()
Get the face-centered velocities.
Definition CD_CdrSolver.cpp:2677
bool m_plotDiffusionCoefficient
Output diffusion coefficients.
Definition CD_CdrSolver.H:908
EBAMRIVData m_massDifference
Scratch storage for the mass difference.
Definition CD_CdrSolver.H:798
CdrSolver(const CdrSolver &a_other)=delete
Disallowed copy constructor.
static constexpr int m_nComp
Number of components that this solver solves for.
Definition CD_CdrSolver.H:714
virtual void allocate()
Allocate internal storage.
Definition CD_CdrSolver.cpp:265
virtual void setPhase(phase::which_phase a_phase)
Set phase.
Definition CD_CdrSolver.cpp:1778
Real m_dt
Last time step increment.
Definition CD_CdrSolver.H:873
CdrSolver & operator=(const CdrSolver &&a_other)=delete
Disallowed move assignment operator.
virtual void hybridDivergence(EBAMRCellData &a_hybridDivergence, EBAMRIVData &a_massDifference, const EBAMRIVData &a_nonConservativeDivergence)
Use the non-conservative divergence to make the conservative divergence hold the hybrid divergence.
Definition CD_CdrSolver.cpp:1311
Redistribution m_whichRedistribution
Which type of redistribution to use.
Definition CD_CdrSolver.H:878
virtual Real computeAdvectionDt()
Compute the largest possible diffusive time step (for explicit methods)
Definition CD_CdrSolver.cpp:2017
bool m_plotVelocity
Output velocities.
Definition CD_CdrSolver.H:903
virtual EBAMRFluxData & getFaceCenteredDiffusionCoefficient()
Get the face-centered diffusion coefficient.
Definition CD_CdrSolver.cpp:2710
RefCountedPtr< AmrMesh > m_amr
AMR; needed for grid stuff.
Definition CD_CdrSolver.H:729
RefCountedPtr< CdrSpecies > m_species
Species through which e.g. mobility/diffusion and initial conditions is passed.
Definition CD_CdrSolver.H:719
virtual void registerOperators()
Register operators for AMR operations.
Definition CD_CdrSolver.cpp:1529
virtual void fillGwn(EBAMRFluxData &a_noise, const Real a_sigma)
Gaussian noise field.
Definition CD_CdrSolver.cpp:3167
virtual void setEbFlux(const EBAMRIVData &a_ebFlux)
Data-based version of setting the EB flux.
Definition CD_CdrSolver.cpp:1627
virtual void writePlotData(LevelData< EBCellFAB > &a_output, int &a_icomp, const std::string &a_outputRealm, const int a_level) const noexcept
Write output data to a_output.
Definition CD_CdrSolver.cpp:1854
virtual void redistribute(EBAMRCellData &a_phi, const EBAMRIVData &a_delta) const noexcept
Add data through redistribution into cell-centered holders.
Definition CD_CdrSolver.cpp:470
Vector< RefCountedPtr< LayoutData< BaseIFFAB< FaceStencil > > > > m_interpStencils[SpaceDim]
Stencils for interpolating face-centered fluxes to face centroids.
Definition CD_CdrSolver.H:734
virtual void setComputationalGeometry(const RefCountedPtr< ComputationalGeometry > &a_computationalGeometry)
Set computational geometry.
Definition CD_CdrSolver.cpp:1547
std::string m_realm
Realm where this solver is registered.
Definition CD_CdrSolver.H:755
virtual void computeDivJ(EBAMRCellData &a_divJ, EBAMRCellData &a_phi, const Real a_extrapDt, const bool a_conservativeOnly, const bool a_ebFlux, const bool a_domainFlux)=0
Compute div(J) explicitly, where J = nV - D*grad(n)
EBAMRIVData m_nonConservativeDivG
Scratch storage for the non-conservative divergence.
Definition CD_CdrSolver.H:793
virtual EBAMRCellData & getPhi()
Get the cell-centered phi.
Definition CD_CdrSolver.cpp:2644
virtual void initialDataDistribution()
Fill initial data from a distribution function.
Definition CD_CdrSolver.cpp:1220
EBAMRCellData m_phi
Cell-centered data (i.e. the advected-diffused quantity)
Definition CD_CdrSolver.H:765
virtual Real computeAdvectionDiffusionDt()
Compute the largest possible diffusive time step (for explicit methods).
Definition CD_CdrSolver.cpp:2181
virtual void advanceEuler(EBAMRCellData &a_newPhi, const EBAMRCellData &a_oldPhi, const Real a_dt)
Implicit diffusion Euler advance without source term.
Definition CD_CdrSolver.cpp:215
virtual bool isDiffusive()
Return true if the solver is diffusive and false otherwise.
Definition CD_CdrSolver.cpp:2622
RefCountedPtr< ComputationalGeometry > m_computationalGeometry
Computational geometry.
Definition CD_CdrSolver.H:724
virtual void resetDomainFlux(EBAMRFluxData &a_flux)
Set flux to zero on domain boundaries.
Definition CD_CdrSolver.cpp:784
virtual void computeDivG(EBAMRCellData &a_divG, EBAMRFluxData &a_G, const EBAMRIVData &a_ebFlux, const bool a_conservativeOnly)
Compute div(G) where G is a general face-centered flux on face centers and EB centers....
Definition CD_CdrSolver.cpp:410
virtual EBAMRIFData & getDomainFlux()
Get the domain flux data holder.
Definition CD_CdrSolver.cpp:2743
EBAMRIVData m_ebCenteredDiffusionCoefficient
Diffusion coefficients on EB faces.
Definition CD_CdrSolver.H:846
bool m_plotEbFlux
Output EB fluxes.
Definition CD_CdrSolver.H:913
EBAMRFluxData m_faceStates
Holder for face centered states.
Definition CD_CdrSolver.H:782
Redistribution
Redistribution method.
Definition CD_CdrSolver.H:701
EBAMRCellData m_cellVelocity
Cell-centered velocities.
Definition CD_CdrSolver.H:776
virtual void initialData()
Fill m_phi state with initial data from m_species.
Definition CD_CdrSolver.cpp:1195
virtual void smoothHeavisideFaces(EBAMRFluxData &a_facePhi, const EBAMRCellData &a_cellPhi)
Use Heaviside smoothing for computing face-centered states.
Definition CD_CdrSolver.cpp:3035
std::map< CdrDomainBC::DomainSide, CdrDomainBC::FluxFunction > m_domainFluxFunctions
Domain flux functions.
Definition CD_CdrSolver.H:852
bool m_regridSlopes
Use slopes when regridding.
Definition CD_CdrSolver.H:928
virtual void parseDomainBc()
Parses domain BC options.
Definition CD_CdrSolver.cpp:2861
virtual std::string getName() const
Get solver name.
Definition CD_CdrSolver.cpp:112
virtual void conservativeDivergenceNoKappaDivision(EBAMRCellData &a_conservativeDivergence, EBAMRFluxData &a_flux, const EBAMRIVData &a_ebFlux)
Compute conservative divergence from fluxes.
Definition CD_CdrSolver.cpp:980
void setDefaultDomainBC()
This sets default boundary conditions (wall type).
Definition CD_CdrSolver.cpp:64
virtual void setVerbosity(const int a_verbosity)
Set verbosity.
Definition CD_CdrSolver.cpp:1789
virtual Real computeCharge()
Compute the total charge in m_phi.
Definition CD_CdrSolver.cpp:2607
virtual void parseRegridSlopes()
Parse slope regrid.
Definition CD_CdrSolver.cpp:3253
std::string m_className
Class name.
Definition CD_CdrSolver.H:750
virtual ~CdrSolver()
Constructor.
virtual void averageVelocityToFaces()
Average velocities to faces.
Definition CD_CdrSolver.cpp:355
EBAMRIVData m_ebFlux
Flux through the embedded boundary.
Definition CD_CdrSolver.H:823
EBAMRCellData m_cellCenteredDiffusionCoefficient
Diffusion coefficients on cell centers.
Definition CD_CdrSolver.H:834
virtual void deallocate()
Deallocate internal storage.
Definition CD_CdrSolver.cpp:336
virtual void setTime(const int a_step, const Real a_time, const Real a_dt)
Set the time for this solver.
Definition CD_CdrSolver.cpp:1716
virtual std::string getRealm() const
Get the realm where this solver is registered.
Definition CD_CdrSolver.cpp:123
int m_seed
RNG seed.
Definition CD_CdrSolver.H:933
virtual Real computeDiffusionDt()
Compute the largest possible diffusive time step (for explicit methods)
Definition CD_CdrSolver.cpp:2087
virtual void weightedUpwind(EBAMRCellData &a_weightedUpwindPhi, const int a_pow)
Compute an upwind-weighted version of phi.
Definition CD_CdrSolver.cpp:2367
virtual void computeAdvectionFlux(EBAMRFluxData &a_flux, const EBAMRFluxData &a_facePhi, const EBAMRFluxData &a_faceVelocity, const bool a_addDomainFlux=true)
Set up face-centered advection flux.
Definition CD_CdrSolver.cpp:504
virtual void writeData(LevelData< EBCellFAB > &a_output, int &a_comp, const EBAMRCellData &a_data, const std::string &a_outputRealm, const int a_level, const bool a_interpToCentroids, const bool a_interpGhost) const noexcept
Write data to output. Convenience function.
Definition CD_CdrSolver.cpp:1928
EBAMRCellData m_cachePhi
Cached state vector for regrid.
Definition CD_CdrSolver.H:808
virtual void advanceEuler(EBAMRCellData &a_newPhi, const EBAMRCellData &a_oldPhi, const EBAMRCellData &a_source, const Real a_dt)=0
Implicit diffusion Euler advance with source term.
virtual void fillDomainFlux(EBAMRFluxData &a_flux)
Set domain in data holder. This sets the flux on the boundary to either zero or to m_domainFlux.
Definition CD_CdrSolver.cpp:848
bool m_plotNumbers
Plot numbers or densities.
Definition CD_CdrSolver.H:923
virtual Real computeMass()
Compute the "physical mass" in m_phi.
Definition CD_CdrSolver.cpp:2536
virtual void parseDivergenceComputation()
Parse the conservation.
Definition CD_CdrSolver.cpp:2905
virtual void preRegrid(const int a_lbase, const int a_oldFinestLevel)
Perform pre-regrid operations.
Definition CD_CdrSolver.cpp:393
virtual void setRealm(const std::string &a_realm)
Set the realm for this solver.
Definition CD_CdrSolver.cpp:134
virtual void advanceCrankNicholson(EBAMRCellData &a_newPhi, const EBAMRCellData &a_oldPhi, const EBAMRCellData &a_source, const Real a_dt)=0
Implicit diffusion Crank-Nicholson advance with source term.
virtual void defineInterpolationStencils()
Define stencils for doing face-centered to face-centroid-centered states.
Definition CD_CdrSolver.cpp:1145
Real m_time
Current time.
Definition CD_CdrSolver.H:868
EBAMRIVData m_ebZero
Scratch storage for the EB flux.
Definition CD_CdrSolver.H:803
bool m_blendConservation
Flag for blending the hybrid divergence.
Definition CD_CdrSolver.H:883
bool m_isMobile
Solve for advection/convection or not.
Definition CD_CdrSolver.H:893
virtual void interpolateFluxToFaceCentroids(EBAMRFluxData &a_flux)
Interpolate flux to centroids.
Definition CD_CdrSolver.cpp:1385
EBAMRIVData m_ebVelocity
EB-centered velocities.
Definition CD_CdrSolver.H:818
virtual void advectToFaces(EBAMRFluxData &a_facePhi, const EBAMRCellData &a_phi, const Real a_extrapDt)=0
Advection-only extrapolation to faces.
virtual void advanceCrankNicholson(EBAMRCellData &a_newPhi, const EBAMRCellData &a_oldPhi, const Real a_dt)
Implicit diffusion Crank-Nicholson advance without source term.
Definition CD_CdrSolver.cpp:240
static constexpr int m_comp
Component number in data holder.
Definition CD_CdrSolver.H:709
virtual void regrid(const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel)
Regrid this solver.
Definition CD_CdrSolver.cpp:1485
EBAMRFluxData m_faceVelocity
Face-centered velocities (only normal components)
Definition CD_CdrSolver.H:788
virtual void setDiffusionCoefficient(const EBAMRFluxData &a_diffusionCoefficient, const EBAMRIVData &a_ebDiffusionCoefficient)
Data-based version of setting diffusion coefficients (which are stored on faces)
Definition CD_CdrSolver.cpp:1562
EBAMRCellData m_cacheSource
Cached source term for regrids.
Definition CD_CdrSolver.H:813
EBAMRIFData m_domainFlux
Domain flux.
Definition CD_CdrSolver.H:828
virtual void setAmr(const RefCountedPtr< AmrMesh > &a_amr)
Set the amr object.
Definition CD_CdrSolver.cpp:1516
virtual void setSpecies(const RefCountedPtr< CdrSpecies > &a_species)
Set species.
Definition CD_CdrSolver.cpp:1651
virtual EBAMRCellData & getCellCenteredVelocity()
Get the cell-centered velocity.
Definition CD_CdrSolver.cpp:2666
virtual EBAMRIVData & getEbFlux()
Get the eb flux data holder.
Definition CD_CdrSolver.cpp:2732
virtual Real computeSourceDt(const Real a_max, const Real a_tolerance)
Compute the largest possible source time step (for explicit methods.
Definition CD_CdrSolver.cpp:2302
int m_verbosity
Solver verbosity.
Definition CD_CdrSolver.H:858
virtual void setSource(const EBAMRCellData &a_source)
Data based version of setting source terms.
Definition CD_CdrSolver.cpp:1667
virtual void setVelocity(const EBAMRCellData &a_velocity)
Set velocity from data holder.
Definition CD_CdrSolver.cpp:1729
virtual void writePlotFile()
Write plot file.
Definition CD_CdrSolver.cpp:1800
virtual void conservativeDivergenceRegular(LevelData< EBCellFAB > &a_divJ, const LevelData< EBFluxFAB > &a_flux, const int a_lvl)
Compute the conservative divergence over regular cells.
Definition CD_CdrSolver.cpp:1084
virtual void initialDataParticles()
Fill initial data from particles.
Definition CD_CdrSolver.cpp:1251
virtual void computeDiffusionFlux(EBAMRFluxData &a_flux, const EBAMRCellData &a_phi, const bool a_addDomainFlux)
Compute the face-centered diffusion flux.
Definition CD_CdrSolver.cpp:569
virtual void computeDivergenceIrregular(LevelData< EBCellFAB > &a_divG, const LevelData< EBFluxFAB > &a_centroidFluxes, const LevelData< BaseIVFAB< Real > > &a_ebFlux, const int a_lvl)
Compute conservative divergence on irregular cells (not kappa divided)
Definition CD_CdrSolver.cpp:1016
virtual void extrapolateAdvectiveFluxToEB() noexcept
Extrapolate advective flux to EB.
Definition CD_CdrSolver.cpp:2754
virtual Vector< std::string > getPlotVariableNames() const
Get output plot names.
Definition CD_CdrSolver.cpp:145
bool m_plotSource
Output source term.
Definition CD_CdrSolver.H:918
virtual EBAMRCellData & getCellCenteredDiffusionCoefficient()
Get the cell-centered diffusion coefficient.
Definition CD_CdrSolver.cpp:2699
CdrSolver & operator=(const CdrSolver &a_other)=delete
Disallowed assignment operator.
std::string m_name
Solver name.
Definition CD_CdrSolver.H:744
virtual std::string makeBcString(const int a_dir, const Side::LoHiSide a_side) const
Shortcut for making a boundary condition string.
Definition CD_CdrSolver.cpp:2828
phase::which_phase m_phase
Phase.
Definition CD_CdrSolver.H:739
virtual void computeDivD(EBAMRCellData &a_divD, EBAMRCellData &a_phi, const bool a_conservativeOnly, const bool a_ebFlux, const bool a_domainFlux)=0
Compute div(D*grad(phi)) explicitly.
CdrDomainBC m_domainBC
Domain BCs.
Definition CD_CdrSolver.H:760
void setDomainBcType(const CdrDomainBC::DomainSide a_domainSide, const CdrDomainBC::BcType a_bcType)
Set domain bc type on domain side.
Definition CD_CdrSolver.cpp:89
Abstract class that describes the scalar quantity that is advected in CdrSolver.
Definition CD_CdrSpecies.H:31
Abstract base class for geometries.
Definition CD_ComputationalGeometry.H:37
Base class for a tracer particle solver. This solver can advance particles in a pre-defined velocity ...
Definition CD_TracerParticleSolver.H:38
TracerParticleSolver()
Default constructor.
Definition CD_TracerParticleSolverImplem.H:26
Phase names namespace.
Definition CD_MultiFluidIndexSpace.H:28
which_phase
Enumeration of supported phases.
Definition CD_MultiFluidIndexSpace.H:38