|
| | CdrSolver () |
| | Default constructor.
|
| |
| | CdrSolver (const CdrSolver &a_other)=delete |
| | Disallowed copy constructor.
|
| |
| | CdrSolver (const CdrSolver &&a_other)=delete |
| | Disallowed move constructor.
|
| |
| CdrSolver & | operator= (const CdrSolver &a_other)=delete |
| | Disallowed assignment operator.
|
| |
| CdrSolver & | operator= (const CdrSolver &&a_other)=delete |
| | Disallowed move assignement operator.
|
| |
|
virtual | ~CdrSolver () |
| | Constructor.
|
| |
| virtual void | parseOptions ()=0 |
| | Parse class options.
|
| |
| virtual void | parseRuntimeOptions ()=0 |
| | Parse runtime options.
|
| |
| void | setDefaultDomainBC () |
| | This sets default boundary conditions (wall type).
|
| |
| void | setDomainBcType (const CdrDomainBC::DomainSide a_domainSide, const CdrDomainBC::BcType a_bcType) |
| | Set domain bc type on domain side.
|
| |
| void | setDomainBcFunction (const CdrDomainBC::DomainSide a_domainSide, const CdrDomainBC::FluxFunction a_fluxFunction) |
| | Set domain bc function on particular domain side.
|
| |
| virtual void | advanceEuler (EBAMRCellData &a_newPhi, const EBAMRCellData &a_oldPhi, const Real a_dt) |
| | Implicit diffusion Euler advance without source term.
|
| |
| 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 | advanceCrankNicholson (EBAMRCellData &a_newPhi, const EBAMRCellData &a_oldPhi, const Real a_dt) |
| | Implicit diffusion Crank-Nicholson advance without source term.
|
| |
| 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 | 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)
|
| |
| 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.
|
| |
| 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.
|
| |
| 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. This can involve mass redistribution.
|
| |
| virtual void | gwnDiffusionSource (EBAMRCellData &a_noiseSource, const EBAMRCellData &a_cellPhi) |
| | Compute a random gaussian white noise source term.
|
| |
| virtual void | averageVelocityToFaces () |
| | Average velocities to faces.
|
| |
| virtual void | preRegrid (const int a_lbase, const int a_oldFinestLevel) |
| | Perform pre-regrid operations.
|
| |
| virtual void | deallocate () |
| | Deallocate internal storage.
|
| |
| virtual void | registerOperators () |
| | Register operators for AMR operations.
|
| |
| virtual void | setRealm (const std::string a_realm) |
| | Set the realm for this solver.
|
| |
|
virtual RefCountedPtr< CdrSpecies > & | getSpecies () noexcept |
| | Get the CDR species.
|
| |
|
virtual const RefCountedPtr< CdrSpecies > & | getSpecies () const noexcept |
| | Get the CDR species.
|
| |
| virtual void | setSpecies (const RefCountedPtr< CdrSpecies > &a_species) |
| | Set species.
|
| |
| virtual void | setComputationalGeometry (const RefCountedPtr< ComputationalGeometry > &a_computationalGeometry) |
| | Set computational geometry.
|
| |
| virtual void | setAmr (const RefCountedPtr< AmrMesh > &a_amr) |
| | Set the amr object.
|
| |
| virtual void | setPhase (phase::which_phase a_phase) |
| | Set phase.
|
| |
| virtual void | setVerbosity (const int a_verbosity) |
| | Set verbosity.
|
| |
| virtual void | setTime (const int a_step, const Real a_time, const Real a_dt) |
| | Set the time for this solver.
|
| |
| virtual void | setVelocity (const EBAMRCellData &a_velocity) |
| | Set velocity from data holder.
|
| |
| virtual void | setVelocity (const RealVect a_velocity) |
| | Set constant velocity.
|
| |
| virtual void | setVelocity (const std::function< RealVect(const RealVect a_pos)> &a_velocity) |
| | Set velocity using a polymorphic function.
|
| |
| virtual void | setDiffusionCoefficient (const EBAMRFluxData &a_diffusionCoefficient, const EBAMRIVData &a_ebDiffusionCoefficient) |
| | Data-based version of setting diffusion coefficients (which are stored on faces)
|
| |
| virtual void | setDiffusionCoefficient (const Real a_diffusionCoefficient) |
| | Set diffusion coefficient to be constant everywhere (they are stored on faces)
|
| |
| virtual void | setDiffusionCoefficient (const std::function< Real(const RealVect a_position)> &a_diffusionCoefficient) |
| | Polymorphic way of setting diffusion coefficients every.
|
| |
| virtual void | setSource (const EBAMRCellData &a_source) |
| | Data based version of setting source terms.
|
| |
| virtual void | setSource (const Real a_source) |
| | Set constant source terms everywhere.
|
| |
| virtual void | setSource (const std::function< Real(const RealVect a_position)> a_source) |
| | Polymorphic way of setting source terms.
|
| |
| virtual void | setEbFlux (const EBAMRIVData &a_ebFlux) |
| | Data-based version of setting the EB flux.
|
| |
| virtual void | setEbFlux (const Real a_ebFlux) |
| | Set the eb flux to a constant.
|
| |
| virtual void | initialData () |
| | Fill m_phi state with initial data from m_species.
|
| |
| virtual void | allocate () |
| | Allocate internal storage.
|
| |
| virtual void | writePlotFile () |
| | Write plot file.
|
| |
| 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.
|
| |
| virtual void | regrid (const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel) |
| | Write checkpoint data into HDF5 file. @paramo[out] a_handle HDF5 file.
|
| |
| virtual std::string | getRealm () const |
| | Get the realm where this solver is registered.
|
| |
| virtual std::string | getName () const |
| | Get solver name.
|
| |
| virtual Vector< std::string > | getPlotVariableNames () const |
| | Get output plot names.
|
| |
| virtual int | getNumberOfPlotVariables () const |
| | Get number of output fields.
|
| |
| virtual Real | computeAdvectionDt () |
| | Compute the largest possible diffusive time step (for explicit methods)
|
| |
| virtual Real | computeDiffusionDt () |
| | Compute the largest possible diffusive time step (for explicit methods)
|
| |
| virtual Real | computeAdvectionDiffusionDt () |
| | Compute the largest possible diffusive time step (for explicit methods)
|
| |
| virtual Real | computeSourceDt (const Real a_max, const Real a_tolerance) |
| | Compute the largest possible source time step (for explicit methods.
|
| |
| virtual void | weightedUpwind (EBAMRCellData &a_weightedUpwindPhi, const int a_pow) |
| | Compute an upwind-weighted version of phi.
|
| |
| virtual Real | computeMass () |
| | Compute the "physical mass" in m_phi.
|
| |
| virtual Real | computeMass (const EBAMRCellData &a_phi, const bool a_kappaScale=true) |
| | Compute the "physical mass" in the input argument.
|
| |
| virtual Real | computeCharge () |
| | Compute the total charge in m_phi.
|
| |
|
virtual bool | isDiffusive () |
| | Return true if the solver is diffusive and false otherwise.
|
| |
|
virtual bool | isMobile () |
| | Return true if the solver is mobile and false otherwise.
|
| |
| virtual EBAMRCellData & | getPhi () |
| | Get the cell-centered phi.
|
| |
| virtual EBAMRCellData & | getSource () |
| | Get the source term.
|
| |
| virtual EBAMRCellData & | getCellCenteredVelocity () |
| | Get the cell-centered velocity.
|
| |
| virtual EBAMRFluxData & | getFaceCenteredVelocity () |
| | Get the face-centered velocities.
|
| |
| virtual EBAMRIVData & | getEbCenteredVelocity () |
| | Get the eb-centered velocities.
|
| |
|
virtual EBAMRCellData & | getCellCenteredDiffusionCoefficient () |
| | Get the cell-centered diffusion coefficient.
|
| |
| virtual EBAMRFluxData & | getFaceCenteredDiffusionCoefficient () |
| | Get the face-centered diffusion coefficient.
|
| |
| virtual EBAMRIVData & | getEbCenteredDiffusionCoefficient () |
| | Get the EB-centered diffusion coefficient.
|
| |
| virtual EBAMRIVData & | getEbFlux () |
| | Get the eb flux data holder.
|
| |
| virtual EBAMRIFData & | getDomainFlux () |
| | Get the domain flux data holder.
|
| |
| virtual void | extrapolateAdvectiveFluxToEB () noexcept |
| | Extrapolate advective flux to EB.
|
| |
| virtual void | extrapolateAdvectiveFluxToEB (EBAMRIVData &a_ebFlux) const noexcept |
| | Extrapolate advective flux to EB.
|
| |
| virtual void | redistribute (EBAMRCellData &a_phi, const EBAMRIVData &a_delta) const noexcept |
| | Add data through redistribution into cell-centered holders.
|
| |
|
| virtual void | averageVelocityToFaces (EBAMRFluxData &a_faceVelocity, const EBAMRCellData &a_cellVelocity) |
| | Average cell-centered velocities to face centers.
|
| |
| virtual void | advectToFaces (EBAMRFluxData &a_facePhi, const EBAMRCellData &a_phi, const Real a_extrapDt)=0 |
| | Advection-only extrapolation to faces.
|
| |
| 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.
|
| |
| virtual void | computeAdvectionFlux (LevelData< EBFluxFAB > &a_flux, const LevelData< EBFluxFAB > &a_facePhi, const LevelData< EBFluxFAB > &a_faceVelocity, const int a_lvl) |
| | Set up face-centered advection flux on a grid level.
|
| |
| virtual void | computeDiffusionFlux (EBAMRFluxData &a_flux, const EBAMRCellData &a_phi, const bool a_addDomainFlux) |
| | Compute the face-centered diffusion flux.
|
| |
| virtual void | computeDiffusionFlux (LevelData< EBFluxFAB > &a_flux, const LevelData< EBCellFAB > &a_phi, const int a_lvl) |
| | Compute the face-centered diffusion flux.
|
| |
| 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.
|
| |
| virtual void | resetDomainFlux (EBAMRFluxData &a_flux) |
| | Set flux to zero on domain boundaries.
|
| |
| 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.
|
| |
| virtual void | fillDomainFlux (LevelData< EBFluxFAB > &a_flux, const int a_level) |
| | Set domain in data holder. This sets the flux on the boundary to either zero or to m_domainFlux.
|
| |
| virtual void | conservativeDivergenceNoKappaDivision (EBAMRCellData &a_conservativeDivergence, EBAMRFluxData &a_flux, const EBAMRIVData &a_ebFlux) |
| | Compute conservative divergence from fluxes.
|
| |
| virtual void | nonConservativeDivergence (EBAMRIVData &a_nonConservativeDivergence, const EBAMRCellData &a_divG) |
| | Compute the non-conservative divergence.
|
| |
| 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.
|
| |
| virtual void | hybridDivergence (LevelData< EBCellFAB > &a_hybridDivergence, LevelData< BaseIVFAB< Real > > &a_massDifference, const LevelData< BaseIVFAB< Real > > &a_nonConservativeDivergence, const int a_lvl) |
| | Make the hybrid divergence. On the way in, a_hybridDivergence must hold the conservative divergence.
|
| |
| virtual void | conservativeDivergenceRegular (LevelData< EBCellFAB > &a_divJ, const LevelData< EBFluxFAB > &a_flux, const int a_lvl) |
| | Compute the conservative divergence over regular cells.
|
| |
| virtual void | interpolateFluxToFaceCentroids (EBAMRFluxData &a_flux) |
| | Interpolate flux to centroids.
|
| |
| virtual void | interpolateFluxToFaceCentroids (LevelData< EBFluxFAB > &a_flux, const int a_lvl) |
| | Interpolate flux to centroids.
|
| |
| 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)
|
| |
| virtual void | initialDataDistribution () |
| | Fill initial data from a distribution function.
|
| |
| virtual void | initialDataParticles () |
| | Fill initial data from particles.
|
| |
| virtual void | defineInterpolationStencils () |
| | Define stencils for doing face-centered to face-centroid-centered states.
|
| |
|
virtual void | parseDomainBc () |
| | Parses domain BC options.
|
| |
|
virtual void | parsePlotVariables () |
| | Parses plot variables.
|
| |
|
virtual void | parsePlotMode () |
| | Parse plot mode.
|
| |
|
virtual void | parseDivergenceComputation () |
| | Parse the conservation.
|
| |
|
virtual void | parseRegridSlopes () |
| | Parse slope regrid.
|
| |
| virtual std::string | makeBcString (const int a_dir, const Side::LoHiSide a_side) const |
| | Shortcut for making a boundary condition string.
|
| |
| virtual void | fillGwn (EBAMRFluxData &a_noise, const Real a_sigma) |
| | Gaussian noise field.
|
| |
| virtual void | smoothHeavisideFaces (EBAMRFluxData &a_facePhi, const EBAMRCellData &a_cellPhi) |
| | Use Heaviside smoothing for computing face-centered states.
|
| |
| 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.
|
| |
Base class for solving convection-diffusion-reaction equations.
On embedded boundaries, users must always set the flux directly (but possibly via a function, if desired).
On domain edges/faces, the user can select between various ways of setting the domain boundary conditions (e.g. wall, data-based, function-based, outflow).