chombo-discharge
Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | List of all members
Physics::CdrPlasma::CdrPlasmaStepper Class Referenceabstract

Abstract class for evolving the minimal plasma model in time. More...

#include <CD_CdrPlasmaStepper.H>

Inheritance diagram for Physics::CdrPlasma::CdrPlasmaStepper:
Inheritance graph
[legend]
Collaboration diagram for Physics::CdrPlasma::CdrPlasmaStepper:
Collaboration graph
[legend]

Public Member Functions

 CdrPlasmaStepper ()
 Empty constructor.
 
 CdrPlasmaStepper (RefCountedPtr< CdrPlasmaPhysics > &a_physics)
 Full constructor. More...
 
 ~CdrPlasmaStepper ()
 Destructor.
 
virtual void setupSolvers () override
 Instantiate solvers.
 
virtual void allocate () override
 Allocate data for the time stepper and solvers.
 
virtual void initialData () override
 Fill all solvers with initial data.
 
virtual void postInitialize () override
 Post-initialize operations to be performed after filling solvers with initialData.
 
virtual void postCheckpointSetup () override
 Post-initialize operations to be performed after filling solvers with data read from checkpoint files.
 
virtual void registerRealms () override
 Register realms to be used for the simulation.
 
virtual void registerOperators () override
 Register operators to be used for the simulation.
 
virtual void parseRuntimeOptions () override=0
 Parse runtime options. Subclasses must implement this.
 
virtual void prePlot () override
 Compute some thing that go into plot files.
 
virtual int getNumberOfPlotVariables () const override
 Get the number of plot variables for this time stepper. More...
 
virtual Vector< std::string > getPlotVariableNames () const override
 Get plot variable names.
 
virtual void writePlotData (LevelData< EBCellFAB > &a_output, int &a_icomp, const std::string a_outputRealm, const int a_level) const override
 Write plot data to output holder. More...
 
virtual Real computeDt () override=0
 Compute the time step. More...
 
virtual Real advance (const Real a_dt) override=0
 Advance method, advances equations. More...
 
virtual void synchronizeSolverTimes (const int a_step, const Real a_time, const Real a_dt) override
 Synchronize solver times. More...
 
virtual void printStepReport () override
 Print a step report. More...
 
virtual void preRegrid (const int a_lmin, const int a_oldFinestLevel) override
 Pre-regrid function – this is the one called by Driver. More...
 
virtual void preRegridInternals (const int a_lmin, const int a_oldFinestLevel)
 Do a preRegrid operation for internal storage (if needed). More...
 
virtual void regrid (const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel) override
 Regrid method. More...
 
virtual void postRegrid () override
 Perform post-regrid operations. More...
 
virtual void computeJ (EBAMRCellData &a_J) const
 Compute the current density. More...
 
virtual void computeElectricField (MFAMRCellData &a_electricFieldCell, const MFAMRCellData &a_potential) const
 Compute the cell-centered electric field on both phases. More...
 
virtual void computeElectricField (EBAMRCellData &a_electricFieldCell, const phase::which_phase a_phase) const
 Compute the cell-centered electric field on a specific phase using whatever is available in m_fieldSolver. More...
 
virtual void computeElectricField (EBAMRCellData &a_E, const phase::which_phase a_phase, const MFAMRCellData &a_potential) const
 Compute the cell-centered electric field on a specific phase. More...
 
virtual void computeElectricField (EBAMRFluxData &a_electricFieldFace, const phase::which_phase a_phase, const EBAMRCellData &a_electricFieldCell) const
 Compute the face-centered electric field. This will only do the normal component. More...
 
virtual void computeElectricField (EBAMRIVData &a_electricFieldEB, const phase::which_phase a_phase, const EBAMRCellData &a_electricFieldCell) const
 Compute the EB-centered electric field. More...
 
virtual void computeMaxElectricField (Real &a_maxElectricField, const phase::which_phase a_phase)
 Compute the maximum of the electric field. More...
 
virtual Real getTime () const
 Return time. More...
 
virtual bool stationaryRTE ()
 Check if RTE solvers are stationary. More...
 
virtual void allocateInternals ()=0
 Allocate internal storage. Must be implemented by subclasses.
 
virtual void deallocateInternals ()=0
 Deallocate internals. Must be implemented by subclasses. More...
 
virtual void parseOptions ()=0
 Parse TimeStepper class options. Must be implemented by subclasses.
 
virtual void deallocate ()
 Deallocation function. This will deallocate internal storage in the subclasses as well as the solvers.
 
virtual void computeSpaceChargeDensity ()
 Compute the centroid-centered space charge density by using the data inside the CDR solvers. More...
 
virtual void computeSpaceChargeDensity (MFAMRCellData &a_rho, const Vector< EBAMRCellData * > &a_cdrDensities)
 Compute the centroid-centered space charge density. More...
 
virtual void computeCellConductivity (EBAMRCellData &a_cellConductivity) const
 Compute the cell-centered conductivity. More...
 
virtual void computeFaceConductivity (EBAMRFluxData &a_conductivityFace, EBAMRIVData &a_conductivityEB, const EBAMRCellData &a_conductivityCell) const
 Compute the face-centered conductivity from a cell-centered conductivity. More...
 
virtual void setupSemiImplicitPoisson (const Real a_dt)
 Set up a semi-implicit Poisson solver. More...
 
virtual void setupSemiImplicitPoisson (const EBAMRFluxData &a_conductivityFace, const EBAMRIVData &a_conductivityEB, const Real a_factor)
 Set up a semi-implicit Poisson solver. More...
 
virtual bool solvePoisson ()
 Solve the electrostatic Poisson equation. More...
 
virtual bool solvePoisson (MFAMRCellData &a_potential, MFAMRCellData &a_rho, const Vector< EBAMRCellData * > a_cdrDensities, const EBAMRIVData &a_sigma)
 General electrostatic Poisson solver routine. More...
 
virtual void advanceReactionNetwork (const Real a_time, const Real a_dt)
 Advance the reaction network. This will compute the electric field (on the appropriate phase) and call the other version. More...
 
virtual void advanceReactionNetwork (Vector< EBAMRCellData * > &a_cdrSources, Vector< EBAMRCellData * > &a_rteSources, const Vector< EBAMRCellData * > &a_cdrDensities, const Vector< EBAMRCellData * > &a_rteDensities, const EBAMRCellData &a_E, const Real &a_time, const Real &a_dt)
 Compute reaction network source terms. More...
 
virtual void advanceReactionNetwork (Vector< EBAMRCellData * > &a_cdrSources, Vector< EBAMRCellData * > &a_rteSources, const Vector< EBAMRCellData * > &a_cdrDensities, const Vector< EBAMRCellData * > &a_cdrGradients, const Vector< EBAMRCellData * > &a_rteDensities, const EBAMRCellData &a_E, const Real &a_time, const Real &a_dt)
 Compute reaction network source terms. This is the AMR version that does all levels. More...
 
virtual void advanceReactionNetwork (Vector< LevelData< EBCellFAB > * > &a_cdrSources, Vector< LevelData< EBCellFAB > * > &a_rteSources, const Vector< LevelData< EBCellFAB > * > &a_cdrDensities, const Vector< LevelData< EBCellFAB > * > &a_cdrGradients, const Vector< LevelData< EBCellFAB > * > &a_rteDensities, const LevelData< EBCellFAB > &a_E, const Real &a_time, const Real &a_dt, const int a_level)
 Compute reaction network source terms. This is the level version. More...
 
virtual void advanceReactionNetworkRegularCells (Vector< FArrayBox * > &a_cdrSources, Vector< FArrayBox * > &a_rteSources, const Vector< FArrayBox * > &a_cdrDensities, const Vector< FArrayBox * > &a_cdrGradients, const Vector< FArrayBox * > &a_rteDensities, const FArrayBox &a_E, const Real &a_time, const Real &a_dt, const Real &a_dx, const Box &a_cellBox)
 Compute reaction network sources. This is the regular version which does not do the cut-cells. More...
 
virtual void advanceReactionNetworkIrreg (Vector< EBCellFAB * > &a_cdrSources, Vector< EBCellFAB * > &a_rteSources, const Vector< EBCellFAB * > &a_cdrDensities, const Vector< EBCellFAB * > &a_cdrGradients, const Vector< EBCellFAB * > &a_cdrVelocities, const Vector< EBCellFAB * > &a_rteDensities, const BaseIVFAB< VoFStencil > &a_interpStencils, const EBCellFAB &a_E, const Real &a_time, const Real &a_dt, const Real &a_dx, const Box &a_cellBox, const int a_lvl, const DataIndex &a_dit)
 Compute reaction network sources. This is the irregular version which only does the cut-cells. More...
 
virtual void advanceReactionNetworkIrregInterp (Vector< EBCellFAB * > &a_cdrSources, Vector< EBCellFAB * > &a_rteSources, const Vector< EBCellFAB * > &a_cdrDensities, const Vector< EBCellFAB * > &a_cdrGradients, const Vector< EBCellFAB * > &a_cdrVelocities, const Vector< EBCellFAB * > &a_rteDensities, const BaseIVFAB< VoFStencil > &a_interpStencils, const EBCellFAB &a_E, const Real &a_time, const Real &a_dt, const Real &a_dx, const Box &a_box, const int a_lvl, const DataIndex &a_dit)
 Compute reaction network sources. This version interpolates everything to the centroid and runs with that data. More...
 
virtual void advanceReactionNetworkIrregKappa (Vector< EBCellFAB * > &a_cdrSources, Vector< EBCellFAB * > &a_rteSources, const Vector< EBCellFAB * > &a_cdrDensities, const Vector< EBCellFAB * > &a_cdrGradients, const Vector< EBCellFAB * > &a_rteDensities, const BaseIVFAB< VoFStencil > &a_interpStencils, const EBCellFAB &a_E, const Real &a_time, const Real &a_dt, const Real &a_dx, const Box &a_box, const int a_lvl, const DataIndex &a_dit)
 Compute reaction network sources. This version assumes that some of the inputs are on the centroid. More...
 
virtual void advanceReactionNetworkIrregUpwind (Vector< EBCellFAB * > &a_cdrSources, Vector< EBCellFAB * > &a_rteSources, const Vector< EBCellFAB * > &a_cdrDensities, const Vector< EBCellFAB * > &a_cdrGradients, const Vector< EBCellFAB * > &a_cdrVelocities, const Vector< EBCellFAB * > &a_rteDensities, const BaseIVFAB< VoFStencil > &a_interpStencils, const EBCellFAB &a_E, const Real &a_time, const Real &a_dt, const Real &a_dx, const Box &a_box, const int a_lvl, const DataIndex &a_dit)
 Compute reaction network sources. More...
 
virtual void computeCdrDiffusion ()
 Compute diffusion things using whatever is available in the solvers. More...
 
virtual void computeCdrDiffusion (const EBAMRCellData &a_electricFieldCell, const EBAMRIVData &a_electricFieldEB)
 Compute diffusion things using whatever is available in the solvers. This version uses the input electric fields. More...
 
virtual void computeCdrDiffusionCell (Vector< EBAMRCellData > &a_cdrDcoCell, const Vector< EBAMRCellData * > &a_cdrDensities, const EBAMRCellData &a_electricFieldCell, const Real &a_time)
 Compute CDR diffusion coefficients on cell centers. This will call the level version. More...
 
virtual void computeCdrDiffusionCell (Vector< LevelData< EBCellFAB > * > &a_cdrDcoCell, const Vector< LevelData< EBCellFAB > * > &a_cdrDensities, const LevelData< EBCellFAB > &a_electricFieldCell, const int a_lvl, const Real &a_time)
 Compute diffusion coefficients. This is the level version and it will iterate through grid patches. More...
 
virtual void computeCdrDiffusionCellRegular (Vector< FArrayBox * > &a_cdrDcoCell, const Vector< FArrayBox * > &a_cdrDensities, const FArrayBox &a_electricFieldCell, const Box a_cellBox, const Real a_dx, const Real a_time)
 Compute diffusion coefficients on cell centers. This does all the regular cells. More...
 
virtual void computeCdrDiffusionCellIrregular (Vector< EBCellFAB * > &a_cdrDcoCell, const Vector< EBCellFAB * > &a_cdrDensities, const EBCellFAB &a_electricFieldCell, const Real a_dx, const Real &a_time, const int a_lvl, const DataIndex &a_dit)
 Compute diffusion coefficients on cell centers. This version does the irregular cells. More...
 
virtual void computeCdrDiffusionFace (Vector< EBAMRFluxData * > &a_cdrDcoFace, const Vector< EBAMRCellData * > &a_cdrDensities, const EBAMRCellData &a_electricFieldCell, const Real &a_time)
 Compute diffusion coefficients on face centers. More...
 
virtual void computeCdrDiffusionEb (Vector< EBAMRIVData * > &a_cdrDcoEB, const Vector< EBAMRIVData * > &a_cdrDensitiesEB, const EBAMRIVData &a_electricFieldEB, const Real &a_time)
 Compute diffusion coefficients on the EB. This is the AMR version – it will call the level version. More...
 
virtual void computeCdrDiffusionEb (Vector< LevelData< BaseIVFAB< Real >> * > &a_cdrDcoEB, const Vector< LevelData< BaseIVFAB< Real >> * > &a_cdrDensitiesEB, const LevelData< BaseIVFAB< Real >> &a_electricFieldEB, const Real &a_time, const int a_lvl)
 Compute diffusion coefficients on the EB. This is a level version but it will go through all patches. More...
 
virtual void computeCdrDriftVelocities ()
 Compute the CDR drift velocities. More...
 
virtual void computeCdrDriftVelocities (Vector< EBAMRCellData * > &a_velocities, const Vector< EBAMRCellData * > &a_cdrDensities, const EBAMRCellData &a_E, const Real &a_time)
 Compute the cell-centered CDR velocities. This will call the level version. More...
 
virtual void computeCdrDriftVelocities (Vector< LevelData< EBCellFAB > * > &a_cdrVelocities, const Vector< LevelData< EBCellFAB > * > &a_cdrDensities, const LevelData< EBCellFAB > &a_electricField, const int a_lvl, const Real &a_time)
 Compute the cell-centered CDR velocities. More...
 
virtual void computeCdrDriftVelocitiesRegular (Vector< FArrayBox * > &a_cdrVelocities, const Vector< FArrayBox * > &a_cdrDensities, const FArrayBox &a_electricField, const Box &a_cellBox, const Real &a_time, const Real &a_dx)
 Compute the cell-centered CDR velocities. More...
 
virtual void computeCdrDriftVelocitiesIrregular (Vector< EBCellFAB * > &a_velocities, const Vector< EBCellFAB * > &a_cdrDensities, const EBCellFAB &a_electricField, const Real &a_time, const Real &a_dx, const int a_lvl, const DataIndex &a_dit)
 Compute the cell-centered CDR velocities. More...
 
virtual void computeCdrFluxes (Vector< EBAMRIVData * > &a_cdrFluxesEB, const Vector< EBAMRIVData * > &a_extrapCdrFluxes, const Vector< EBAMRIVData * > &a_extrapCdrDensities, const Vector< EBAMRIVData * > &a_extrapCdrVelocities, const Vector< EBAMRIVData * > &a_extrapCdrGradients, const Vector< EBAMRIVData * > &a_extrapRteFluxes, const EBAMRIVData &a_electricField, const Real &a_time)
 Compute CDR fluxes on the EB. This is the AMR version – it will call the level version. More...
 
virtual void computeCdrFluxes (Vector< LevelData< BaseIVFAB< Real >> * > &a_cdrFluxesEB, const Vector< LevelData< BaseIVFAB< Real >> * > &a_extrapCdrFluxes, const Vector< LevelData< BaseIVFAB< Real >> * > &a_extrapCdrDensities, const Vector< LevelData< BaseIVFAB< Real >> * > &a_extrapCdrVelocities, const Vector< LevelData< BaseIVFAB< Real >> * > &a_extrapCdrGradients, const Vector< LevelData< BaseIVFAB< Real >> * > &a_extrapRteFluxes, const LevelData< BaseIVFAB< Real >> &a_electricField, const Real &a_time, const int a_lvl)
 Compute CDR fluxes on the EB. This is the level version which will fill EB fluxes on both electrode and dielectric cells. More...
 
virtual void computeCdrDomainFluxes (Vector< EBAMRIFData * > &a_cdrFluxes, const Vector< EBAMRIFData * > &a_extrapCdrFluxes, const Vector< EBAMRIFData * > &a_extrapCdrDensities, const Vector< EBAMRIFData * > &a_extrapCdrVelocities, const Vector< EBAMRIFData * > &a_extrapCdrGradients, const Vector< EBAMRIFData * > &a_extrapRteFluxes, const EBAMRIFData &a_field, const Real &a_time)
 Compute CDR fluxes on domain faces for usage in boundary conditions. This is the AMR version. More...
 
virtual void computeCdrDomainFluxes (Vector< LevelData< DomainFluxIFFAB > * > a_cdrFluxes, const Vector< LevelData< DomainFluxIFFAB > * > &a_extrapCdrFluxes, const Vector< LevelData< DomainFluxIFFAB > * > &a_extrapCdrDensities, const Vector< LevelData< DomainFluxIFFAB > * > &a_extrapCdrVelocities, const Vector< LevelData< DomainFluxIFFAB > * > &a_extrapCdrGradients, const Vector< LevelData< DomainFluxIFFAB > * > &a_extrapRteFluxes, const LevelData< DomainFluxIFFAB > &a_electricField, const Real &a_time, const int a_lvl)
 Compute CDR fluxes on domain faces for usage in boundary conditions. This is the level version. More...
 
virtual void computeExtrapolatedFluxes (Vector< EBAMRIVData * > &a_extrapCdrFluxesEB, const Vector< EBAMRCellData * > a_cdrDensities, const Vector< EBAMRCellData * > a_cdrVelocities, const phase::which_phase a_phase)
 Extrapolate cell-centered fluxes to the EB centroid. More...
 
virtual void computeExtrapolatedDomainFluxes (Vector< EBAMRIFData * > &a_cdrDomainFluxes, const Vector< EBAMRCellData * > a_cdrDensities, const Vector< EBAMRCellData * > a_cdrVelocities, const phase::which_phase a_phase)
 Extrapolate drift fluxes to domain faces. More...
 
virtual void computeExtrapolatedVelocities (Vector< EBAMRIVData * > &a_cdrVelocitiesEB, const Vector< EBAMRCellData * > a_cdrVelocitiesCell, const phase::which_phase a_phase)
 Extrapolated cell-centered velocities to the EB. More...
 
virtual void deallocateSolverInternals ()
 Deallocate internal solver storages.
 
virtual void extrapolateToEb (Vector< EBAMRIVData * > &a_ebData, const phase::which_phase a_phase, const Vector< EBAMRCellData * > &a_cellData)
 Extrapolated cell-centered data to the EB. This is the AMR version for all species. More...
 
virtual void extrapolateToEb (EBAMRIVData &a_ebData, const phase::which_phase a_phase, const EBAMRCellData &a_cellData)
 Extrapolated cell-centered data to the EB. This is the AMR version. More...
 
virtual void extrapolateToEb (LevelData< BaseIVFAB< Real >> &a_ebData, const phase::which_phase a_phase, const LevelData< EBCellFAB > &a_cellData, const int a_lvl)
 Extrapolated cell-centered data to the EB. This is the level version. More...
 
virtual void extrapolateToDomainFaces (Vector< EBAMRIFData * > &a_domainData, const phase::which_phase a_phase, const Vector< EBAMRCellData * > &a_cellData)
 Extrapolate cell-centered data to domain faces. This is the AMR version that does all species. More...
 
virtual void extrapolateToDomainFaces (EBAMRIFData &a_domainData, const phase::which_phase a_phase, const EBAMRCellData &a_cellData)
 Extrapolate cell-centered data to domain faces. This is the AMR version. More...
 
virtual void extrapolateToDomainFaces (LevelData< DomainFluxIFFAB > &a_domainData, const phase::which_phase a_phase, const LevelData< EBCellFAB > &a_cellData, const int a_lvl)
 Extrapolate cell-centered data to domain faces. This is the AMR version. More...
 
virtual void extrapolateVectorToDomainFaces (Vector< EBAMRIFData * > &a_domainData, const phase::which_phase a_phase, const Vector< EBAMRCellData * > &a_cellData)
 Extrapolate vector data to domain faces. This is the AMR version that does all species. More...
 
virtual void extrapolateVectorToDomainFaces (EBAMRIFData &a_domainData, const phase::which_phase a_phase, const EBAMRCellData &a_cellData)
 Extrapolate vector data to domain faces. This is the AMR version. More...
 
virtual void extrapolateVelocitiesToDomainFaces (Vector< EBAMRIFData * > &a_domainVelocities, const phase::which_phase a_phase, const Vector< EBAMRCellData * > &a_cellVelocities)
 Extrapolate velocities data to domain faces. This is the AMR version that does all species. More...
 
virtual void getCdrMax (Real &a_cdrMax, std::string &a_solverName) const
 Get maximum density in the CDR species. This will fetch both the value and the solver name. More...
 
virtual void initialSigma ()
 Initialize the surface charge.
 
virtual void projectFlux (EBAMRIVData &a_projectedFlux, const EBAMRIVData &a_flux)
 Project a flux onto the EB normal. This is the AMR version. More...
 
virtual void projectFlux (LevelData< BaseIVFAB< Real >> &a_projectedFlux, const LevelData< BaseIVFAB< Real >> &a_flux, const int a_lvl)
 Project a flux onto the EB normal. This is the level version. More...
 
virtual void projectDomain (EBAMRIFData &a_projectedFlux, const EBAMRIFData &a_flux)
 Project flux onto domain edges/faces. More...
 
virtual void regridInternals (const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel)=0
 Regrid internal storage. This MUST be overwritten by implementations. More...
 
virtual void regridSolvers (const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel)
 Regrid all of our solvers. More...
 
virtual void resetDielectricCells (EBAMRIVData &a_data) const
 Set data defined over dielectric cells to zero. More...
 
virtual void sanityCheck () const
 Do a sanity check. Only works when DEBUG=TRUE.
 
virtual void setupCdr ()
 Setup the CDR solvers.
 
virtual void setupPoisson ()
 Setup the field solver.
 
virtual void setupRadiativeTransfer ()
 Setup the RTE solvers.
 
virtual void setupSigma ()
 Set up the surface charge solver.
 
virtual void setSolverVerbosity ()
 Set solver verbosity. More...
 
virtual void solverDump ()
 All solvers writes plot files. These are not the same as the plot files written by Driver.
 
virtual void setVoltage (std::function< Real(const Real a_time)> a_voltage)
 Set voltage curve. More...
 
virtual void solveRadiativeTransfer (const Real a_dt)
 Solve the radiative transfer problem. More...
 
virtual void setCdrSolvers (RefCountedPtr< CdrLayout< CdrSolver >> &a_cdr)
 Set the CDR layout. More...
 
virtual void setFieldSolver (RefCountedPtr< FieldSolver > &a_fieldSolver)
 Set the field solver. More...
 
virtual void setRadiativeTransferSolvers (RefCountedPtr< RtLayout< RtSolver >> &a_rte)
 Set the RTE solvers. More...
 
virtual Real computeElectrodeCurrent ()
 Compute the ohmic current on electrodes. More...
 
virtual Real computeDielectricCurrent ()
 Compute the ohmic current on dielectrics. More...
 
virtual Real computeDomainCurrent ()
 Compute the ohmic current through the domain faces. More...
 
virtual Real computeOhmicInductionCurrent ()
 Compute induced current in external circuit due to ohmic conduction. More...
 
virtual Real computeRelaxationTime ()
 Compute the relaxation time as dt = eps0/conductivity.
 
virtual Real getDt ()
 Get dt.
 
- Public Member Functions inherited from TimeStepper
 TimeStepper ()
 Default constructor (does nothing)
 
virtual ~TimeStepper ()
 Default destructor (does nothing)
 
void setAmr (const RefCountedPtr< AmrMesh > &a_amr)
 Set AmrMesh. More...
 
void setComputationalGeometry (const RefCountedPtr< ComputationalGeometry > &a_computationalGeometry)
 Set the computational geometry. More...
 
virtual void postPlot ()
 An option for calling special functions prior to plotting data. Called by Driver in the IMMEDIATELY after writing the plot file.
 
virtual Vector< long int > getCheckpointLoads (const std::string a_realm, const int a_level) const
 Get computational loads to be checkpointed. More...
 
virtual bool needToRegrid ()
 Fuction which can have Driver do regrids at arbitrary points in the simulation. More...
 
virtual bool loadBalanceThisRealm (const std::string a_realm) const
 Load balancing query for a specified realm. If this returns true for a_realm, load balancing routines will be called during regrids. More...
 
virtual void loadBalanceBoxes (Vector< Vector< int >> &a_procs, Vector< Vector< Box >> &a_boxes, const std::string a_realm, const Vector< DisjointBoxLayout > &a_grids, const int a_lmin, const int a_finestLevel)
 Load balance grid boxes for a specified realm. More...
 

Protected Types

enum class  SourceTermComputation { Interpolated , InterpolatedStable , CellAverage , Upwind }
 Enum for switching between source term computations. 'Interpolated' interpolates the cell-centered data to cell centroids. InterpolatedStable is the same as Interpolated but with a stability fix near inflow EBs. CellAverage assumes centroid-centered data, and Upwind uses the upwind formulation in Villa et. al.
 
enum class  TimeCode {
  Advection , Diffusion , AdvectionDiffusion , Source ,
  RelaxationTime , Restricted , Hardcap , Error ,
  Physics
}
 An enum for encapsulating how time steps were restricted.
 

Protected Member Functions

virtual void parseVerbosity ()
 Parse class verbosity.
 
virtual void parseSolverVerbosity ()
 Parse solver verbosities.
 
virtual void parseCFL ()
 Parse the CFL number.
 
virtual void parseRelaxationTime ()
 Parse the relaxation time restriction.
 
virtual void parseMinDt ()
 Parse the minimum allowed time step.
 
virtual void parseMaxDt ()
 Parse the maximum allowed time step.
 
virtual void parseFastPoisson ()
 Parse the "fast poisson" method, i.e. how often we solve the Poisson equation.
 
virtual void parseFastRadiativeTransfer ()
 Parse the "fast rte" method, i.e. how often we solve the Poisson equation.
 
virtual void parseSourceComputation ()
 Parse how we compute the source terms. More...
 
virtual void writeJ (LevelData< EBCellFAB > &a_output, int &a_comp, const std::string a_outputRealm, const int a_level) const
 Compute and put the current density in output data holder. More...
 
virtual void computePhysicsPlotVars (EBAMRCellData &a_physicsPlotVars) const noexcept
 Calculate the user-supplied plot variables.
 
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. More...
 

Protected Attributes

std::string m_realm
 Realm where the time stepper is registered. More...
 
std::string m_className
 Time stepper class name.
 
phase::which_phase m_phase
 Plasma phase.
 
SourceTermComputation m_whichSourceTermComputation
 Which source term computation.
 
RefCountedPtr< MultiFluidIndexSpacem_multifluidIndexSpace
 Index space.
 
RefCountedPtr< CdrPlasmaPhysicsm_physics
 Plasma kinetics.
 
RefCountedPtr< CdrLayout< CdrSolver > > m_cdr
 CDR solvers.
 
RefCountedPtr< RtLayout< RtSolver > > m_rte
 Radiative transfer solvers.
 
RefCountedPtr< FieldSolverm_fieldSolver
 Poisson solver.
 
RefCountedPtr< SurfaceODESolver< 1 > > m_sigma
 Surface charge solver.
 
EBAMRCellData m_currentDensity
 Storage for the current.
 
EBAMRCellData m_physicsPlotVars
 Storage for physics-observables.
 
std::function< Real(const Real a_time)> m_voltage
 Set the potential.
 
Real m_minDt
 Minimum allowed time step.
 
Real m_maxDt
 Maximum allowed time step.
 
Real m_cfl
 CFL number.
 
Real m_relaxTime
 Fudge factor for relaxation time.
 
Real m_time
 TIme.
 
Real m_dt
 Previous time step size.
 
Real m_dtCFL
 Computed CFL time step.
 
TimeCode m_timeCode
 Time code for step restriction.
 
int m_solverVerbosity
 Verbosity for solvers.
 
int m_fastRTE
 Fast RTE solver.
 
int m_fastPoisson
 Fast RTE solver.
 
int m_upwindFactor
 Upwind factor.
 
- Protected Attributes inherited from TimeStepper
int m_verbosity
 Class verbosity.
 
int m_timeStep
 Time step.
 
Real m_time
 TIme.
 
Real m_dt
 Previous time step size.
 
RefCountedPtr< AmrMeshm_amr
 AmrMesh.
 
RefCountedPtr< ComputationalGeometrym_computationalGeometry
 Computational geometry.
 

Detailed Description

Abstract class for evolving the minimal plasma model in time.

This class implements all the required coupling functions for more easily constructing algorithms. Subclasses must implement the advance method. This class handles all I/O.

Constructor & Destructor Documentation

◆ CdrPlasmaStepper()

CdrPlasmaStepper::CdrPlasmaStepper ( RefCountedPtr< CdrPlasmaPhysics > &  a_physics)

Full constructor.

Parameters
[in]a_physicsCDR plasma physics.

Member Function Documentation

◆ advance()

virtual Real Physics::CdrPlasma::CdrPlasmaStepper::advance ( const Real  a_dt)
overridepure virtual

Advance method, advances equations.

Parameters
[in]a_dtTime step
Returns
Actual time step used (can be different from a_dt for adaptive methods)

Implements TimeStepper.

Implemented in Physics::CdrPlasma::CdrPlasmaImExSdcStepper, and Physics::CdrPlasma::CdrPlasmaGodunovStepper.

◆ advanceReactionNetwork() [1/4]

void CdrPlasmaStepper::advanceReactionNetwork ( const Real  a_time,
const Real  a_dt 
)
virtual

Advance the reaction network. This will compute the electric field (on the appropriate phase) and call the other version.

Parameters
[in]a_timeTime
[in]a_dtTime step

◆ advanceReactionNetwork() [2/4]

void CdrPlasmaStepper::advanceReactionNetwork ( Vector< EBAMRCellData * > &  a_cdrSources,
Vector< EBAMRCellData * > &  a_rteSources,
const Vector< EBAMRCellData * > &  a_cdrDensities,
const Vector< EBAMRCellData * > &  a_cdrGradients,
const Vector< EBAMRCellData * > &  a_rteDensities,
const EBAMRCellData a_E,
const Real &  a_time,
const Real &  a_dt 
)
virtual

Compute reaction network source terms. This is the AMR version that does all levels.

Parameters
[out]a_cdrSourcesSource terms for the CDR solvers.
[out]a_rteSourcesSource terms for the radiative transfer solvers.
[in]a_cdrDensitiesCell-centered densities for the plasma species (i.e., CDR solvers).
[in]a_cdrGradientsCell-centered gradients for the plasma species (i.e., CDR solvers).
[in]a_rteDensitiesCell-centered densities for the radiative transfer equations (i.e., RTE solvers).
[in]a_ECell-centered electric field.
[in]a_timeTime
[in]a_dtTime step.

◆ advanceReactionNetwork() [3/4]

void CdrPlasmaStepper::advanceReactionNetwork ( Vector< EBAMRCellData * > &  a_cdrSources,
Vector< EBAMRCellData * > &  a_rteSources,
const Vector< EBAMRCellData * > &  a_cdrDensities,
const Vector< EBAMRCellData * > &  a_rteDensities,
const EBAMRCellData a_E,
const Real &  a_time,
const Real &  a_dt 
)
virtual

Compute reaction network source terms.

This will call the other version but will first compute the gradients of the plasma densities.

Parameters
[out]a_cdrSourcesSource terms for the CDR solvers.
[out]a_rteSourcesSource terms for the radiative transfer solvers.
[in]a_cdrDensitiesCell-centered densities for the plasma species (i.e., CDR solvers).
[in]a_rteDensitiesCell-centered densities for the radiative transfer equations (i.e., RTE solvers).
[in]a_ECell-centered electric field.
[in]a_timeTime
[in]a_dtTime step.

◆ advanceReactionNetwork() [4/4]

void CdrPlasmaStepper::advanceReactionNetwork ( Vector< LevelData< EBCellFAB > * > &  a_cdrSources,
Vector< LevelData< EBCellFAB > * > &  a_rteSources,
const Vector< LevelData< EBCellFAB > * > &  a_cdrDensities,
const Vector< LevelData< EBCellFAB > * > &  a_cdrGradients,
const Vector< LevelData< EBCellFAB > * > &  a_rteDensities,
const LevelData< EBCellFAB > &  a_E,
const Real &  a_time,
const Real &  a_dt,
const int  a_level 
)
virtual

Compute reaction network source terms. This is the level version.

Parameters
[out]a_cdrSourcesSource terms for the CDR solvers.
[out]a_rteSourcesSource terms for the radiative transfer solvers.
[in]a_cdrDensitiesCell-centered densities for the plasma species (i.e., CDR solvers).
[in]a_cdrGradientsCell-centered gradients for the plasma species (i.e., CDR solvers).
[in]a_rteDensitiesCell-centered densities for the radiative transfer equations (i.e., RTE solvers).
[in]a_ECell-centered electric field.
[in]a_timeTime
[in]a_dtTime step.
[in]a_levelGrid level.

◆ advanceReactionNetworkIrreg()

void CdrPlasmaStepper::advanceReactionNetworkIrreg ( Vector< EBCellFAB * > &  a_cdrSources,
Vector< EBCellFAB * > &  a_rteSources,
const Vector< EBCellFAB * > &  a_cdrDensities,
const Vector< EBCellFAB * > &  a_cdrGradients,
const Vector< EBCellFAB * > &  a_cdrVelocities,
const Vector< EBCellFAB * > &  a_rteDensities,
const BaseIVFAB< VoFStencil > &  a_interpStencils,
const EBCellFAB &  a_E,
const Real &  a_time,
const Real &  a_dt,
const Real &  a_dx,
const Box &  a_cellBox,
const int  a_lvl,
const DataIndex &  a_dit 
)
virtual

Compute reaction network sources. This is the irregular version which only does the cut-cells.

Parameters
[out]a_cdrSourcesSource terms for the CDR solvers.
[out]a_rteSourcesSource terms for the radiative transfer solvers.
[in]a_cdrDensitiesCell-centered densities for the plasma species (i.e., CDR solvers).
[in]a_cdrGradientsCell-centered gradients for the plasma species (i.e., CDR solvers).
[in]a_cdrVelocitiesCell-centered velocities for the CDR solvers.
[in]a_rteDensitiesCell-centered densities for the radiative transfer equations (i.e., RTE solvers).
[in]a_interpStencilsInterpolation stencils for putting cell-centered data on the centroid.
[in]a_ECell-centered electric field.
[in]a_timeTime
[in]a_dtTime step.
[in]a_dxGrid resolution.
[in]a_cellBoxCell-centered computational region.
[in]a_lvlGrid level
[in]a_ditGrid patch index
Note
This will call one of the other versions.

◆ advanceReactionNetworkIrregInterp()

void CdrPlasmaStepper::advanceReactionNetworkIrregInterp ( Vector< EBCellFAB * > &  a_cdrSources,
Vector< EBCellFAB * > &  a_rteSources,
const Vector< EBCellFAB * > &  a_cdrDensities,
const Vector< EBCellFAB * > &  a_cdrGradients,
const Vector< EBCellFAB * > &  a_cdrVelocities,
const Vector< EBCellFAB * > &  a_rteDensities,
const BaseIVFAB< VoFStencil > &  a_interpStencils,
const EBCellFAB &  a_E,
const Real &  a_time,
const Real &  a_dt,
const Real &  a_dx,
const Box &  a_box,
const int  a_lvl,
const DataIndex &  a_dit 
)
virtual

Compute reaction network sources. This version interpolates everything to the centroid and runs with that data.

Parameters
[out]a_cdrSourcesSource terms for the CDR solvers.
[out]a_rteSourcesSource terms for the radiative transfer solvers.
[in]a_cdrDensitiesCell-centered densities for the plasma species (i.e., CDR solvers).
[in]a_cdrGradientsCell-centered gradients for the plasma species (i.e., CDR solvers).
[in]a_cdrVelocitiesCell-centered velocities for the CDR solvers.
[in]a_rteDensitiesCell-centered densities for the radiative transfer equations (i.e., RTE solvers).
[in]a_interpStencilsInterpolation stencils for putting cell-centered data on the centroid.
[in]a_ECell-centered electric field.
[in]a_timeTime
[in]a_dtTime step.
[in]a_dxGrid resolution.
[in]a_cellBoxCell-centered computational region.
[in]a_lvlGrid level
[in]a_ditGrid patch index

◆ advanceReactionNetworkIrregKappa()

void CdrPlasmaStepper::advanceReactionNetworkIrregKappa ( Vector< EBCellFAB * > &  a_cdrSources,
Vector< EBCellFAB * > &  a_rteSources,
const Vector< EBCellFAB * > &  a_cdrDensities,
const Vector< EBCellFAB * > &  a_cdrGradients,
const Vector< EBCellFAB * > &  a_rteDensities,
const BaseIVFAB< VoFStencil > &  a_interpStencils,
const EBCellFAB &  a_E,
const Real &  a_time,
const Real &  a_dt,
const Real &  a_dx,
const Box &  a_box,
const int  a_lvl,
const DataIndex &  a_dit 
)
virtual

Compute reaction network sources. This version assumes that some of the inputs are on the centroid.

Parameters
[out]a_cdrSourcesSource terms for the CDR solvers.
[out]a_rteSourcesSource terms for the radiative transfer solvers.
[in]a_cdrDensitiesCentroid-centered densities for the plasma species (i.e., CDR solvers).
[in]a_cdrGradientsCell-centered gradients for the plasma species (i.e., CDR solvers).
[in]a_rteDensitiesCentroid-centered densities for the radiative transfer equations (i.e., RTE solvers).
[in]a_interpStencilsInterpolation stencils for putting cell-centered data on the centroid.
[in]a_ECell-centered electric field.
[in]a_timeTime
[in]a_dtTime step.
[in]a_dxGrid resolution.
[in]a_cellBoxCell-centered computational region.
[in]a_lvlGrid level
[in]a_ditGrid patch index

◆ advanceReactionNetworkIrregUpwind()

void CdrPlasmaStepper::advanceReactionNetworkIrregUpwind ( Vector< EBCellFAB * > &  a_cdrSources,
Vector< EBCellFAB * > &  a_rteSources,
const Vector< EBCellFAB * > &  a_cdrDensities,
const Vector< EBCellFAB * > &  a_cdrGradients,
const Vector< EBCellFAB * > &  a_cdrVelocities,
const Vector< EBCellFAB * > &  a_rteDensities,
const BaseIVFAB< VoFStencil > &  a_interpStencils,
const EBCellFAB &  a_E,
const Real &  a_time,
const Real &  a_dt,
const Real &  a_dx,
const Box &  a_box,
const int  a_lvl,
const DataIndex &  a_dit 
)
virtual

Compute reaction network sources.

This version is called with the Villa et. al upwind correction. It can also be used with regularly interpolated data, in which case it will turn off reactions in EB cells where the mass flows into the domain. This function assumes that all input is on the cell center.

Parameters
[out]a_cdrSourcesSource terms for the CDR solvers.
[out]a_rteSourcesSource terms for the radiative transfer solvers.
[in]a_cdrDensitiesCell-centered densities for the plasma species (i.e., CDR solvers).
[in]a_cdrGradientsCell-centered gradients for the plasma species (i.e., CDR solvers).
[in]a_cdrVelocitiesCell-centered velocities for the CDR solvers.
[in]a_rteDensitiesCell-centered densities for the radiative transfer equations (i.e., RTE solvers).
[in]a_interpStencilsInterpolation stencils for putting cell-centered data on the centroid.
[in]a_ECell-centered electric field.
[in]a_timeTime
[in]a_dtTime step.
[in]a_dxGrid resolution.
[in]a_cellBoxCell-centered computational region.
[in]a_lvlGrid level
[in]a_ditGrid patch index

◆ advanceReactionNetworkRegularCells()

void CdrPlasmaStepper::advanceReactionNetworkRegularCells ( Vector< FArrayBox * > &  a_cdrSources,
Vector< FArrayBox * > &  a_rteSources,
const Vector< FArrayBox * > &  a_cdrDensities,
const Vector< FArrayBox * > &  a_cdrGradients,
const Vector< FArrayBox * > &  a_rteDensities,
const FArrayBox &  a_E,
const Real &  a_time,
const Real &  a_dt,
const Real &  a_dx,
const Box &  a_cellBox 
)
virtual

Compute reaction network sources. This is the regular version which does not do the cut-cells.

Parameters
[out]a_cdrSourcesSource terms for the CDR solvers.
[out]a_rteSourcesSource terms for the radiative transfer solvers.
[in]a_cdrDensitiesCell-centered densities for the plasma species (i.e., CDR solvers).
[in]a_cdrGradientsCell-centered gradients for the plasma species (i.e., CDR solvers).
[in]a_rteDensitiesCell-centered densities for the radiative transfer equations (i.e., RTE solvers).
[in]a_ECell-centered electric field.
[in]a_timeTime
[in]a_dtTime step.
[in]a_dxGrid resolution.
[in]a_cellBoxCell-centered computational region.

◆ computeCdrDiffusion() [1/2]

void CdrPlasmaStepper::computeCdrDiffusion ( )
virtual

Compute diffusion things using whatever is available in the solvers.

This will compute the electric field on the cell center and EB, and then call the other version.

◆ computeCdrDiffusion() [2/2]

void CdrPlasmaStepper::computeCdrDiffusion ( const EBAMRCellData a_electricFieldCell,
const EBAMRIVData a_electricFieldEB 
)
virtual

Compute diffusion things using whatever is available in the solvers. This version uses the input electric fields.

Parameters
[in]a_electricFieldCellElectric field on cell centers.
[in]a_electricFieldEBElectric field on EB centroids

◆ computeCdrDiffusionCell() [1/2]

void CdrPlasmaStepper::computeCdrDiffusionCell ( Vector< EBAMRCellData > &  a_cdrDcoCell,
const Vector< EBAMRCellData * > &  a_cdrDensities,
const EBAMRCellData a_electricFieldCell,
const Real &  a_time 
)
virtual

Compute CDR diffusion coefficients on cell centers. This will call the level version.

Parameters
[out]a_cdrDcoCellCDR diffusion coefficients on cell centers.
[in]a_cdrDensitiesCell-centered CDR densities
[in]a_electricFieldCellCell-centered electric field
[in]a_timeTime

◆ computeCdrDiffusionCell() [2/2]

void CdrPlasmaStepper::computeCdrDiffusionCell ( Vector< LevelData< EBCellFAB > * > &  a_cdrDcoCell,
const Vector< LevelData< EBCellFAB > * > &  a_cdrDensities,
const LevelData< EBCellFAB > &  a_electricFieldCell,
const int  a_lvl,
const Real &  a_time 
)
virtual

Compute diffusion coefficients. This is the level version and it will iterate through grid patches.

Parameters
[out]a_cdrDcoCellCDR diffusion coefficients on cell centers.
[in]a_cdrDensitiesCell-centered CDR densities
[in]a_electricFieldCellCell-centered electric field
[in]a_lvlGrid level
[in]a_timeTime

◆ computeCdrDiffusionCellIrregular()

void CdrPlasmaStepper::computeCdrDiffusionCellIrregular ( Vector< EBCellFAB * > &  a_cdrDcoCell,
const Vector< EBCellFAB * > &  a_cdrDensities,
const EBCellFAB &  a_electricFieldCell,
const Real  a_dx,
const Real &  a_time,
const int  a_lvl,
const DataIndex &  a_dit 
)
virtual

Compute diffusion coefficients on cell centers. This version does the irregular cells.

Parameters
[out]a_cdrDcoCellCDR diffusion coefficients on cell centers.
[in]a_cdrDensitiesCell-centered CDR densities
[in]a_electricFieldCellCell-centered electric field
[in]a_dxGrid resolution
[in]a_timeTime
[in]a_lvlGrid level
[in]a_ditGrid patch index

◆ computeCdrDiffusionCellRegular()

void CdrPlasmaStepper::computeCdrDiffusionCellRegular ( Vector< FArrayBox * > &  a_cdrDcoCell,
const Vector< FArrayBox * > &  a_cdrDensities,
const FArrayBox &  a_electricFieldCell,
const Box  a_cellBox,
const Real  a_dx,
const Real  a_time 
)
virtual

Compute diffusion coefficients on cell centers. This does all the regular cells.

Parameters
[out]a_cdrDcoCellCDR diffusion coefficients on cell centers.
[in]a_cdrDensitiesCell-centered CDR densities
[in]a_electricFieldCellCell-centered electric field
[in]a_cellBoxKernel region
[in]a_dxGrid resolution
[in]a_timeTime

◆ computeCdrDiffusionEb() [1/2]

void CdrPlasmaStepper::computeCdrDiffusionEb ( Vector< EBAMRIVData * > &  a_cdrDcoEB,
const Vector< EBAMRIVData * > &  a_cdrDensitiesEB,
const EBAMRIVData a_electricFieldEB,
const Real &  a_time 
)
virtual

Compute diffusion coefficients on the EB. This is the AMR version – it will call the level version.

Parameters
[out]a_cdrDcoEBEB-centered_CDR diffusion coefficients
[in]a_cdrDensitiesEBEB-centered CDR densities
[in]a_electricFieldEBEB-centered electric field
[in]a_timeTime

◆ computeCdrDiffusionEb() [2/2]

void CdrPlasmaStepper::computeCdrDiffusionEb ( Vector< LevelData< BaseIVFAB< Real >> * > &  a_cdrDcoEB,
const Vector< LevelData< BaseIVFAB< Real >> * > &  a_cdrDensitiesEB,
const LevelData< BaseIVFAB< Real >> &  a_electricFieldEB,
const Real &  a_time,
const int  a_lvl 
)
virtual

Compute diffusion coefficients on the EB. This is a level version but it will go through all patches.

Parameters
[out]a_cdrDcoEBEB-centered_CDR diffusion coefficients
[in]a_cdrDensitiesEBEB-centered CDR densities
[in]a_electricFieldEBEB-centered electric field
[in]a_timeTime
[in]a_lvlGrid level.

◆ computeCdrDiffusionFace()

void CdrPlasmaStepper::computeCdrDiffusionFace ( Vector< EBAMRFluxData * > &  a_cdrDcoFace,
const Vector< EBAMRCellData * > &  a_cdrDensities,
const EBAMRCellData a_electricFieldCell,
const Real &  a_time 
)
virtual

Compute diffusion coefficients on face centers.

This will first compute the diffusion coefficients on cell centers, and then interpolate the result to face centers.

Parameters
[out]a_cdrDcoCellCDR diffusion coefficients on cell centers.
[in]a_cdrDensitiesCell-centered CDR densities
[in]a_electricFieldCellCell-centered electric field
[in]a_timeTime

◆ computeCdrDomainFluxes() [1/2]

void CdrPlasmaStepper::computeCdrDomainFluxes ( Vector< EBAMRIFData * > &  a_cdrFluxes,
const Vector< EBAMRIFData * > &  a_extrapCdrFluxes,
const Vector< EBAMRIFData * > &  a_extrapCdrDensities,
const Vector< EBAMRIFData * > &  a_extrapCdrVelocities,
const Vector< EBAMRIFData * > &  a_extrapCdrGradients,
const Vector< EBAMRIFData * > &  a_extrapRteFluxes,
const EBAMRIFData a_field,
const Real &  a_time 
)
virtual

Compute CDR fluxes on domain faces for usage in boundary conditions. This is the AMR version.

Parameters
[out]a_cdrFluxesCDR domain bounadry fluxes for solvers.
[in]a_extrapCdrFluxesCDR fluxes extrapolated to the domain faces.
[in]a_extrapCdrDensitiesCDR densities extrapolated to the domain faces.
[in]a_extrapCdrVelocitiesCDR velocities extrapolated to the domain faces.
[in]a_extrapCdrGradientsCDR gradients extrapolated to the domain faces.
[in]a_extrapRteFluxesRTE fluxes on the domain faces.
[in]a_electricFieldElectric field on the domain faces.
[in]a_timeTime.

◆ computeCdrDomainFluxes() [2/2]

void CdrPlasmaStepper::computeCdrDomainFluxes ( Vector< LevelData< DomainFluxIFFAB > * >  a_cdrFluxes,
const Vector< LevelData< DomainFluxIFFAB > * > &  a_extrapCdrFluxes,
const Vector< LevelData< DomainFluxIFFAB > * > &  a_extrapCdrDensities,
const Vector< LevelData< DomainFluxIFFAB > * > &  a_extrapCdrVelocities,
const Vector< LevelData< DomainFluxIFFAB > * > &  a_extrapCdrGradients,
const Vector< LevelData< DomainFluxIFFAB > * > &  a_extrapRteFluxes,
const LevelData< DomainFluxIFFAB > &  a_electricField,
const Real &  a_time,
const int  a_lvl 
)
virtual

Compute CDR fluxes on domain faces for usage in boundary conditions. This is the level version.

This will iterate over the patches on each level and compute the domain fluxes.

Parameters
[out]a_cdrFluxesCDR domain bounadry fluxes for solvers.
[in]a_extrapCdrFluxesCDR fluxes extrapolated to the domain faces.
[in]a_extrapCdrDensitiesCDR densities extrapolated to the domain faces.
[in]a_extrapCdrVelocitiesCDR velocities extrapolated to the domain faces.
[in]a_extrapCdrGradientsCDR gradients extrapolated to the domain faces.
[in]a_extrapRteFluxesRTE fluxes on the domain faces.
[in]a_electricFieldElectric field on the domain faces.
[in]a_timeTime.
[in]a_lvlGrid level

◆ computeCdrDriftVelocities() [1/3]

void CdrPlasmaStepper::computeCdrDriftVelocities ( )
virtual

Compute the CDR drift velocities.

This will compute the cell-centered electric field and then call the other version.

◆ computeCdrDriftVelocities() [2/3]

void CdrPlasmaStepper::computeCdrDriftVelocities ( Vector< EBAMRCellData * > &  a_velocities,
const Vector< EBAMRCellData * > &  a_cdrDensities,
const EBAMRCellData a_E,
const Real &  a_time 
)
virtual

Compute the cell-centered CDR velocities. This will call the level version.

Parameters
[out]a_cdrVelocitiesCell-centered CDR drift velocities
[out]a_cdrDensitiesCell-centered CDR densities
[in]a_electricFieldThe cell-centered electric field
[in]a_timeTime

◆ computeCdrDriftVelocities() [3/3]

void CdrPlasmaStepper::computeCdrDriftVelocities ( Vector< LevelData< EBCellFAB > * > &  a_cdrVelocities,
const Vector< LevelData< EBCellFAB > * > &  a_cdrDensities,
const LevelData< EBCellFAB > &  a_electricField,
const int  a_lvl,
const Real &  a_time 
)
virtual

Compute the cell-centered CDR velocities.

This is the level version – it will call the patch version for each patch in the grid.

Parameters
[out]a_cdrVelocitiesCell-centered CDR drift velocities
[out]a_cdrDensitiesCell-centered CDR densities
[in]a_electricFieldThe cell-centered electric field
[in]a_lvlGrid level
[in]a_timeTime

◆ computeCdrDriftVelocitiesIrregular()

void CdrPlasmaStepper::computeCdrDriftVelocitiesIrregular ( Vector< EBCellFAB * > &  a_velocities,
const Vector< EBCellFAB * > &  a_cdrDensities,
const EBCellFAB &  a_electricField,
const Real &  a_time,
const Real &  a_dx,
const int  a_lvl,
const DataIndex &  a_dit 
)
virtual

Compute the cell-centered CDR velocities.

This is patch version for irregular grid cells.

Parameters
[out]a_cdrVelocitiesCell-centered CDR drift velocities
[out]a_cdrDensitiesCell-centered CDR densities
[in]a_electricFieldThe cell-centered electric field
[in]a_timeTime
[in]a_dxGrid resolution
[in]a_lvlGrid level
[in]a_ditGrid index

◆ computeCdrDriftVelocitiesRegular()

void CdrPlasmaStepper::computeCdrDriftVelocitiesRegular ( Vector< FArrayBox * > &  a_cdrVelocities,
const Vector< FArrayBox * > &  a_cdrDensities,
const FArrayBox &  a_electricField,
const Box &  a_cellBox,
const Real &  a_time,
const Real &  a_dx 
)
virtual

Compute the cell-centered CDR velocities.

This is patch version for regular grid cells.

Parameters
[out]a_cdrVelocitiesCell-centered CDR drift velocities
[out]a_cdrDensitiesCell-centered CDR densities
[in]a_electricFieldThe cell-centered electric field
[in]a_cellBoxComputational region.
[in]a_timeTime
[in]a_dxGrid resolution

◆ computeCdrFluxes() [1/2]

void CdrPlasmaStepper::computeCdrFluxes ( Vector< EBAMRIVData * > &  a_cdrFluxesEB,
const Vector< EBAMRIVData * > &  a_extrapCdrFluxes,
const Vector< EBAMRIVData * > &  a_extrapCdrDensities,
const Vector< EBAMRIVData * > &  a_extrapCdrVelocities,
const Vector< EBAMRIVData * > &  a_extrapCdrGradients,
const Vector< EBAMRIVData * > &  a_extrapRteFluxes,
const EBAMRIVData a_electricField,
const Real &  a_time 
)
virtual

Compute CDR fluxes on the EB. This is the AMR version – it will call the level version.

Parameters
[out]a_cdrFluxesEBCDR fluxes to be put in CDR solvers as a BC on the EBs.
[in]a_extrapCdrFluxesCDR fluxes extrapolated from the inside. Can be used to construct inflow/outflow BCs.
[in]a_extrapCdrDensitiesCDR densities extrapolated from the inside.
[in]a_extrapCdrVelocitiesCDR velocities on the EB, extrapolated from the inside.
[in]a_extrapCdrGradientsCDR gradients on the EB, extrapolated from the inside.
[in]a_electricFieldElectric field on the EB.
[in]a_timeTime.

◆ computeCdrFluxes() [2/2]

void CdrPlasmaStepper::computeCdrFluxes ( Vector< LevelData< BaseIVFAB< Real >> * > &  a_cdrFluxesEB,
const Vector< LevelData< BaseIVFAB< Real >> * > &  a_extrapCdrFluxes,
const Vector< LevelData< BaseIVFAB< Real >> * > &  a_extrapCdrDensities,
const Vector< LevelData< BaseIVFAB< Real >> * > &  a_extrapCdrVelocities,
const Vector< LevelData< BaseIVFAB< Real >> * > &  a_extrapCdrGradients,
const Vector< LevelData< BaseIVFAB< Real >> * > &  a_extrapRteFluxes,
const LevelData< BaseIVFAB< Real >> &  a_electricField,
const Real &  a_time,
const int  a_lvl 
)
virtual

Compute CDR fluxes on the EB. This is the level version which will fill EB fluxes on both electrode and dielectric cells.

Parameters
[out]a_cdrFluxesEBCDR fluxes to be put in CDR solvers as a BC on the EBs.
[in]a_extrapCdrFluxesCDR fluxes extrapolated from the inside. Can be used to construct inflow/outflow BCs.
[in]a_extrapCdrDensitiesCDR densities extrapolated from the inside.
[in]a_extrapCdrVelocitiesCDR velocities on the EB, extrapolated from the inside.
[in]a_extrapCdrGradientsCDR gradients on the EB, extrapolated from the inside.
[in]a_electricFieldElectric field on the EB.
[in]a_timeTime.
[in]a_lvlGrid level.

◆ computeCellConductivity()

void CdrPlasmaStepper::computeCellConductivity ( EBAMRCellData a_cellConductivity) const
virtual

Compute the cell-centered conductivity.

Parameters
[out]a_cellConductivityCell-centered conductivity.

◆ computeDielectricCurrent()

Real CdrPlasmaStepper::computeDielectricCurrent ( )
virtual

Compute the ohmic current on dielectrics.

This will compute the total charge flux through dielectric surfaces and return it.

◆ computeDomainCurrent()

Real CdrPlasmaStepper::computeDomainCurrent ( )
virtual

Compute the ohmic current through the domain faces.

This will compute the total current through domain faces and return it.

◆ computeDt()

virtual Real Physics::CdrPlasma::CdrPlasmaStepper::computeDt ( )
overridepure virtual

Compute the time step.

Subclasses must implement this one.

Implements TimeStepper.

Implemented in Physics::CdrPlasma::CdrPlasmaImExSdcStepper, and Physics::CdrPlasma::CdrPlasmaGodunovStepper.

◆ computeElectricField() [1/5]

void CdrPlasmaStepper::computeElectricField ( EBAMRCellData a_E,
const phase::which_phase  a_phase,
const MFAMRCellData a_potential 
) const
virtual

Compute the cell-centered electric field on a specific phase.

Parameters
[out]a_electricFieldCellCell-centered electric field
[in]a_phasePhase
[in]a_potentialElectrostatic potential (cell-centered)

◆ computeElectricField() [2/5]

void CdrPlasmaStepper::computeElectricField ( EBAMRCellData a_electricFieldCell,
const phase::which_phase  a_phase 
) const
virtual

Compute the cell-centered electric field on a specific phase using whatever is available in m_fieldSolver.

This will use the potential from m_fieldSolver.

Parameters
[out]a_electricFieldCellCell-centered electric field
[in]a_phasePhase

◆ computeElectricField() [3/5]

void CdrPlasmaStepper::computeElectricField ( EBAMRFluxData a_electricFieldFace,
const phase::which_phase  a_phase,
const EBAMRCellData a_electricFieldCell 
) const
virtual

Compute the face-centered electric field. This will only do the normal component.

Parameters
[out]a_electricFieldFaceFace-centered electric field
[in]a_phasePhase
[in]a_electricFieldCellCell-centered electric field (all components).

◆ computeElectricField() [4/5]

void CdrPlasmaStepper::computeElectricField ( EBAMRIVData a_electricFieldEB,
const phase::which_phase  a_phase,
const EBAMRCellData a_electricFieldCell 
) const
virtual

Compute the EB-centered electric field.

Parameters
[out]a_electricFieldEBEB-centered electric field.
[in]a_phasePhase
[in]a_electricFieldCellCell-centered electric field (all components).

◆ computeElectricField() [5/5]

void CdrPlasmaStepper::computeElectricField ( MFAMRCellData a_electricFieldCell,
const MFAMRCellData a_potential 
) const
virtual

Compute the cell-centered electric field on both phases.

Parameters
[out]a_electricFieldCellCell-centered electric field
[in]a_potentialCell-centered electrostatic potential

◆ computeElectrodeCurrent()

Real CdrPlasmaStepper::computeElectrodeCurrent ( )
virtual

Compute the ohmic current on electrodes.

This will compute the total charge flux through electrode surfaces and return it.

Note
In 2D this will yield the current per unit length into the domain.

◆ computeExtrapolatedDomainFluxes()

void CdrPlasmaStepper::computeExtrapolatedDomainFluxes ( Vector< EBAMRIFData * > &  a_cdrDomainFluxes,
const Vector< EBAMRCellData * >  a_cdrDensities,
const Vector< EBAMRCellData * >  a_cdrVelocities,
const phase::which_phase  a_phase 
)
virtual

Extrapolate drift fluxes to domain faces.

Note that this projects the flux on the domain face vectors.

Parameters
[out]a_cdrDomainFluxesCDR fluxes extrapolated and projected onto the domain face.
[in]a_cdrDensitiesCell-centered CDR solver densities.
[in]a_cdrVelocitiesCell-centered CDR solver velocities.
[in]a_phasePhase

◆ computeExtrapolatedFluxes()

void CdrPlasmaStepper::computeExtrapolatedFluxes ( Vector< EBAMRIVData * > &  a_extrapCdrFluxesEB,
const Vector< EBAMRCellData * >  a_cdrDensities,
const Vector< EBAMRCellData * >  a_cdrVelocities,
const phase::which_phase  a_phase 
)
virtual

Extrapolate cell-centered fluxes to the EB centroid.

Parameters
[out]a_extrapCdrFluxesEBCDR fluxes extrapolated to the EB.
[in]a_cdrDensitiesCDR densities on the cell center
[in]a_cdrVelocitiesCDR velocities on the cell center
[in]a_phasePhase

◆ computeExtrapolatedVelocities()

void CdrPlasmaStepper::computeExtrapolatedVelocities ( Vector< EBAMRIVData * > &  a_cdrVelocitiesEB,
const Vector< EBAMRCellData * >  a_cdrVelocitiesCell,
const phase::which_phase  a_phase 
)
virtual

Extrapolated cell-centered velocities to the EB.

This only computes the normal velocity on the EB, i.e. the output is the extrapolated velocity projected along the EB normal.

Parameters
[out]a_cdrVelocitiesEBEB-centered velocities
[in]a_cdrVelocitiesCellCell-centered velocities
[in]a_phasePhase

◆ computeFaceConductivity()

void CdrPlasmaStepper::computeFaceConductivity ( EBAMRFluxData a_conductivityFace,
EBAMRIVData a_conductivityEB,
const EBAMRCellData a_conductivityCell 
) const
virtual

Compute the face-centered conductivity from a cell-centered conductivity.

Parameters
[out]a_conductivityFaceFace-centered conductivity.
[out]a_conductivityEBEB-centered conductivity.
[in]a_conductivityCellCell-centered conductivity.

◆ computeJ()

void CdrPlasmaStepper::computeJ ( EBAMRCellData a_J) const
virtual

Compute the current density.

Parameters
[out]a_JCurrent density

◆ computeMaxElectricField()

void CdrPlasmaStepper::computeMaxElectricField ( Real &  a_maxElectricField,
const phase::which_phase  a_phase 
)
virtual

Compute the maximum of the electric field.

Parameters
[out]a_maxElectricFieldMaximum electric field magnitude evaluated over the input phase
[in]a_phaseInput phase

◆ computeOhmicInductionCurrent()

Real CdrPlasmaStepper::computeOhmicInductionCurrent ( )
virtual

Compute induced current in external circuit due to ohmic conduction.

This will return int(E*J dV) over the entire domain.

◆ computeSpaceChargeDensity() [1/2]

void CdrPlasmaStepper::computeSpaceChargeDensity ( )
virtual

Compute the centroid-centered space charge density by using the data inside the CDR solvers.

This will call the other version with the storage holders being the space charge density data holder in m_fieldSolver and the cell-centered densities in the CDR solvers.

◆ computeSpaceChargeDensity() [2/2]

void CdrPlasmaStepper::computeSpaceChargeDensity ( MFAMRCellData a_rho,
const Vector< EBAMRCellData * > &  a_cdrDensities 
)
virtual

Compute the centroid-centered space charge density.

This will first compute the cell-centered space charge density and then interpolate that to the centroid.

Parameters
[out]a_rhoCentroid centered space charge density.
[in]a_cdrDensitiesCell-centered plasma species densities. Must be in the same order as the densities in m_cdr.

◆ deallocateInternals()

void CdrPlasmaStepper::deallocateInternals ( )
pure virtual

Deallocate internals. Must be implemented by subclasses.

Do nothing

Implemented in Physics::CdrPlasma::CdrPlasmaImExSdcStepper, and Physics::CdrPlasma::CdrPlasmaGodunovStepper.

◆ extrapolateToDomainFaces() [1/3]

void CdrPlasmaStepper::extrapolateToDomainFaces ( EBAMRIFData a_domainData,
const phase::which_phase  a_phase,
const EBAMRCellData a_cellData 
)
virtual

Extrapolate cell-centered data to domain faces. This is the AMR version.

Parameters
[out]a_domainDataDomain-centered data
[in]a_phasePhase
[in]a_cellDataCell-centered data.

◆ extrapolateToDomainFaces() [2/3]

void CdrPlasmaStepper::extrapolateToDomainFaces ( LevelData< DomainFluxIFFAB > &  a_domainData,
const phase::which_phase  a_phase,
const LevelData< EBCellFAB > &  a_cellData,
const int  a_lvl 
)
virtual

Extrapolate cell-centered data to domain faces. This is the AMR version.

Parameters
[out]a_domainDataDomain-centered data
[in]a_phasePhase
[in]a_cellDataCell-centered data.
[in]a_lvlGrid level

◆ extrapolateToDomainFaces() [3/3]

void CdrPlasmaStepper::extrapolateToDomainFaces ( Vector< EBAMRIFData * > &  a_domainData,
const phase::which_phase  a_phase,
const Vector< EBAMRCellData * > &  a_cellData 
)
virtual

Extrapolate cell-centered data to domain faces. This is the AMR version that does all species.

Parameters
[out]a_domainDataDomain-centered data
[in]a_phasePhase
[in]a_cellDataCell-centered data.

◆ extrapolateToEb() [1/3]

void CdrPlasmaStepper::extrapolateToEb ( EBAMRIVData a_ebData,
const phase::which_phase  a_phase,
const EBAMRCellData a_cellData 
)
virtual

Extrapolated cell-centered data to the EB. This is the AMR version.

Parameters
[out]a_ebDataEB-centered data
[in]a_phasePhase
[in]a_cellDataCell-centered data

◆ extrapolateToEb() [2/3]

void CdrPlasmaStepper::extrapolateToEb ( LevelData< BaseIVFAB< Real >> &  a_ebData,
const phase::which_phase  a_phase,
const LevelData< EBCellFAB > &  a_cellData,
const int  a_lvl 
)
virtual

Extrapolated cell-centered data to the EB. This is the level version.

Parameters
[out]a_ebDataEB-centered data
[in]a_phasePhase
[in]a_cellDataCell-centered data
[in]a_lvlGrid level

◆ extrapolateToEb() [3/3]

void CdrPlasmaStepper::extrapolateToEb ( Vector< EBAMRIVData * > &  a_ebData,
const phase::which_phase  a_phase,
const Vector< EBAMRCellData * > &  a_cellData 
)
virtual

Extrapolated cell-centered data to the EB. This is the AMR version for all species.

Parameters
[out]a_ebDataEB-centered data
[in]a_phasePhase
[in]a_cellDataCell-centered data

◆ extrapolateVectorToDomainFaces() [1/2]

void CdrPlasmaStepper::extrapolateVectorToDomainFaces ( EBAMRIFData a_domainData,
const phase::which_phase  a_phase,
const EBAMRCellData a_cellData 
)
virtual

Extrapolate vector data to domain faces. This is the AMR version.

This will extrapolate the vector data to domain faces and project it along the domain normal.

Parameters
[out]a_domainDataDomain-centered data. Must have one component.
[in]a_phasePhase
[in]a_cellDataCell-centered data. Must have SpaceDim components.

◆ extrapolateVectorToDomainFaces() [2/2]

void CdrPlasmaStepper::extrapolateVectorToDomainFaces ( Vector< EBAMRIFData * > &  a_domainData,
const phase::which_phase  a_phase,
const Vector< EBAMRCellData * > &  a_cellData 
)
virtual

Extrapolate vector data to domain faces. This is the AMR version that does all species.

This will extrapolate the vector data to domain faces and project it along the domain normal.

Parameters
[out]a_domainDataDomain-centered data. Must have one component.
[in]a_phasePhase
[in]a_cellDataCell-centered data. Must have SpaceDim components.

◆ extrapolateVelocitiesToDomainFaces()

void CdrPlasmaStepper::extrapolateVelocitiesToDomainFaces ( Vector< EBAMRIFData * > &  a_domainVelocities,
const phase::which_phase  a_phase,
const Vector< EBAMRCellData * > &  a_cellVelocities 
)
virtual

Extrapolate velocities data to domain faces. This is the AMR version that does all species.

This will extrapolate the velocities data to domain faces.

Parameters
[out]a_domainVelocitiesDomain-centered velocities. Must have SpaceDim components.
[in]a_phasePhase
[in]a_cellDataCell-centered velocities. Must have SpaceDim components.

◆ getCdrMax()

void CdrPlasmaStepper::getCdrMax ( Real &  a_cdrMax,
std::string &  a_solverName 
) const
virtual

Get maximum density in the CDR species. This will fetch both the value and the solver name.

Parameters
[out]a_cdrMaxMaximum density found in one of the CDR solvers
[out]a_solverNameThe solver name

◆ getNumberOfPlotVariables()

int CdrPlasmaStepper::getNumberOfPlotVariables ( ) const
overridevirtual

Get the number of plot variables for this time stepper.

This is necessary because Driver, not TimeStepper, is responsible for allocating the necessary memory.

Returns
Returns number of plot variables that will be written during writePlotData

Implements TimeStepper.

◆ getTime()

Real CdrPlasmaStepper::getTime ( ) const
virtual

Return time.

Returns
m_time.

◆ parseSourceComputation()

void CdrPlasmaStepper::parseSourceComputation ( )
protectedvirtual

Parse how we compute the source terms.

This is for modifications near the EB.

◆ postRegrid()

void CdrPlasmaStepper::postRegrid ( )
overridevirtual

Perform post-regrid operations.

This includes all operations to be done AFTER interpolating data to new grids.

Implements TimeStepper.

Reimplemented in Physics::CdrPlasma::CdrPlasmaGodunovStepper.

◆ preRegrid()

void CdrPlasmaStepper::preRegrid ( const int  a_lmin,
const int  a_oldFinestLevel 
)
overridevirtual

Pre-regrid function – this is the one called by Driver.

Parameters
[in]a_lminThe coarsest level that changes
[in]a_oldFinestLevelThe finest level before the regrid.

Implements TimeStepper.

Reimplemented in Physics::CdrPlasma::CdrPlasmaGodunovStepper.

◆ preRegridInternals()

void CdrPlasmaStepper::preRegridInternals ( const int  a_lmin,
const int  a_oldFinestLevel 
)
virtual

Do a preRegrid operation for internal storage (if needed).

Parameters
[in]a_lminThe coarsest level that changes
[in]a_oldFinestLevelThe finest level before the regrid.

◆ printStepReport()

void CdrPlasmaStepper::printStepReport ( )
overridevirtual

Print a step report.

This is called by Driver after time step. The routine can be used to display use information about the simulation progress.

Implements TimeStepper.

◆ projectDomain()

void CdrPlasmaStepper::projectDomain ( EBAMRIFData a_projectedFlux,
const EBAMRIFData a_flux 
)
virtual

Project flux onto domain edges/faces.

Parameters
[out]a_projectedFluxProjected flux – must have one component.
[in]a_fluxVector flux – must have SpaceDim components.

◆ projectFlux() [1/2]

void CdrPlasmaStepper::projectFlux ( EBAMRIVData a_projectedFlux,
const EBAMRIVData a_flux 
)
virtual

Project a flux onto the EB normal. This is the AMR version.

Parameters
[out]a_projectedFluxProjected flux – must have one component.
[in]a_fluxVector flux – must have SpaceDim components.

◆ projectFlux() [2/2]

void CdrPlasmaStepper::projectFlux ( LevelData< BaseIVFAB< Real >> &  a_projectedFlux,
const LevelData< BaseIVFAB< Real >> &  a_flux,
const int  a_lvl 
)
virtual

Project a flux onto the EB normal. This is the level version.

Parameters
[out]a_projectedFluxProjected flux – must have one component.
[in]a_fluxVector flux – must have SpaceDim components.

◆ regrid()

void CdrPlasmaStepper::regrid ( const int  a_lmin,
const int  a_oldFinestLevel,
const int  a_newFinestLevel 
)
overridevirtual

Regrid method.

Parameters
[in]a_lminThe coarsest level that changed.
[in]a_oldFinestLevelThe finest level before the regrid.
[in]a_newFinestLevelThe finest level after the regrid.

Implements TimeStepper.

Reimplemented in Physics::CdrPlasma::CdrPlasmaGodunovStepper.

◆ regridInternals()

virtual void Physics::CdrPlasma::CdrPlasmaStepper::regridInternals ( const int  a_lmin,
const int  a_oldFinestLevel,
const int  a_newFinestLevel 
)
pure virtual

Regrid internal storage. This MUST be overwritten by implementations.

Parameters
[in]a_lminThe coarsest level that changed.
[in]a_oldFinestLevelThe finest level before the regrid.
[in]a_newFinestLevelThe finest level after the regrid.

Implemented in Physics::CdrPlasma::CdrPlasmaImExSdcStepper, and Physics::CdrPlasma::CdrPlasmaGodunovStepper.

◆ regridSolvers()

void CdrPlasmaStepper::regridSolvers ( const int  a_lmin,
const int  a_oldFinestLevel,
const int  a_newFinestLevel 
)
virtual

Regrid all of our solvers.

Parameters
[in]a_lminThe coarsest level that changed.
[in]a_oldFinestLevelThe finest level before the regrid.
[in]a_newFinestLevelThe finest level after the regrid.

◆ resetDielectricCells()

void CdrPlasmaStepper::resetDielectricCells ( EBAMRIVData a_data) const
virtual

Set data defined over dielectric cells to zero.

Parameters
[in]a_dataEB-centered data.

◆ setCdrSolvers()

void CdrPlasmaStepper::setCdrSolvers ( RefCountedPtr< CdrLayout< CdrSolver >> &  a_cdr)
virtual

Set the CDR layout.

Parameters
[in]a_cdrCDR solvers.

◆ setFieldSolver()

void CdrPlasmaStepper::setFieldSolver ( RefCountedPtr< FieldSolver > &  a_fieldSolver)
virtual

Set the field solver.

Parameters
[in]a_fieldSolverField solver

◆ setRadiativeTransferSolvers()

void CdrPlasmaStepper::setRadiativeTransferSolvers ( RefCountedPtr< RtLayout< RtSolver >> &  a_rte)
virtual

Set the RTE solvers.

Parameters
[in]a_rteRTE solvers

◆ setSolverVerbosity()

void CdrPlasmaStepper::setSolverVerbosity ( )
virtual

Set solver verbosity.

This will set the solver verbosity to m_solverVerbosity.

◆ setupSemiImplicitPoisson() [1/2]

void CdrPlasmaStepper::setupSemiImplicitPoisson ( const EBAMRFluxData a_conductivityFace,
const EBAMRIVData a_conductivityEB,
const Real  a_factor 
)
virtual

Set up a semi-implicit Poisson solver.

This is the version that uses pre-existing conductivities in a_conductivity. The factor dictates the multiplication factor f in the expression div((epsilonr + f*sigma) grad(phi)) where sigma is the conductivity and f is a scaling factor.

Parameters
[in]a_conductivityFaceFace-centered conductivities (the Poisson solver will interpolate them to face centroids in the multigrid solve).
[in]a_conductivityEBEB-centered conductivities.
[in]a_factorFactor to multiply conductivities with (they could be pre-scaled by dt/eps0 in which case a_factor = 1).

◆ setupSemiImplicitPoisson() [2/2]

void CdrPlasmaStepper::setupSemiImplicitPoisson ( const Real  a_dt)
virtual

Set up a semi-implicit Poisson solver.

This will compute the required conductivities first, using data already present in the CDR solvers. After that, it will set up the Poisson equation with spatially varying conductivities.

Parameters
[in]a_dtTime step.

◆ setVoltage()

void CdrPlasmaStepper::setVoltage ( std::function< Real(const Real a_time)>  a_voltage)
virtual

Set voltage curve.

Parameters
[in]a_voltageVoltage curve

◆ solvePoisson() [1/2]

bool CdrPlasmaStepper::solvePoisson ( )
virtual

Solve the electrostatic Poisson equation.

This will first compute the centroid-centered space charge density (using the cell-centered data in the CDR solvers) and then ask the field solver to solve.

◆ solvePoisson() [2/2]

bool CdrPlasmaStepper::solvePoisson ( MFAMRCellData a_potential,
MFAMRCellData a_rho,
const Vector< EBAMRCellData * >  a_cdrDensities,
const EBAMRIVData a_sigma 
)
virtual

General electrostatic Poisson solver routine.

This will compute the space charge density onto a_rho and then solve for the potential.

Parameters
[in,out]a_potentialElectrostatic potential
[out]a_rhoCentroid-centered space charge density.
[in]a_cdrDensitiesPlasma species densities.
[in]a_sigmaSurface charge density on dielectric EBs.

◆ solveRadiativeTransfer()

void CdrPlasmaStepper::solveRadiativeTransfer ( const Real  a_dt)
virtual

Solve the radiative transfer problem.

This will call the other version with states taken from the solvers.

Parameters
[in]a_dtTime step.

◆ stationaryRTE()

bool CdrPlasmaStepper::stationaryRTE ( )
virtual

Check if RTE solvers are stationary.

Returns
True if the RTE solvers are stationary.

◆ synchronizeSolverTimes()

void CdrPlasmaStepper::synchronizeSolverTimes ( const int  a_step,
const Real  a_time,
const Real  a_dt 
)
overridevirtual

Synchronize solver times.

Parameters
[in]a_stepTime step
[in]a_timeTime (in seconds)
[in]a_dtTime step that was used.

Implements TimeStepper.

◆ writeData()

void CdrPlasmaStepper::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
protectedvirtualnoexcept

Write data to output. Convenience function.

Parameters
[in,out]a_outputOutput data holder.
[in,out]a_icompStarting component where this solver begins writing the output.
[in]a_dataData to write.
[in]a_outputRealmRealm where a_output lives
[in]a_levelGrid level
[in]a_interpToCentroidsIf true, a_data will be interpolated to cell centroids before writing to a_output.
[in]a_interpGhostIf true, interpolate ghost cells

◆ writeJ()

void CdrPlasmaStepper::writeJ ( LevelData< EBCellFAB > &  a_output,
int &  a_comp,
const std::string  a_outputRealm,
const int  a_level 
) const
protectedvirtual

Compute and put the current density in output data holder.

Parameters
[in,out]a_outputOutput data holder.
[in,out]a_icompStarting component in a_output to begin at. On output this is incremented by SpaceDim.
[in]a_outputRealmRealm where a_output lives
[in]a_levelGrid level

◆ writePlotData()

void CdrPlasmaStepper::writePlotData ( LevelData< EBCellFAB > &  a_output,
int &  a_icomp,
const std::string  a_outputRealm,
const int  a_level 
) const
overridevirtual

Write plot data to output holder.

Parameters
[in,out]a_outputOutput data holder.
[in,out]a_icompStarting component in a_output to begin at.
[in]a_outputRealmRealm where a_output belongs
[in]a_levelGrid level

Implements TimeStepper.

Member Data Documentation

◆ m_realm

std::string Physics::CdrPlasma::CdrPlasmaStepper::m_realm
protected

Realm where the time stepper is registered.

This will always be the primal realm because CdrPlasma has no dual-grid functionality.


The documentation for this class was generated from the following files: