chombo-discharge
|
Abstract class for evolving the minimal plasma model in time. More...
#include <CD_CdrPlasmaStepper.H>
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< MultiFluidIndexSpace > | m_multifluidIndexSpace |
Index space. | |
RefCountedPtr< CdrPlasmaPhysics > | m_physics |
Plasma kinetics. | |
RefCountedPtr< CdrLayout< CdrSolver > > | m_cdr |
CDR solvers. | |
RefCountedPtr< RtLayout< RtSolver > > | m_rte |
Radiative transfer solvers. | |
RefCountedPtr< FieldSolver > | m_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< AmrMesh > | m_amr |
AmrMesh. | |
RefCountedPtr< ComputationalGeometry > | m_computationalGeometry |
Computational geometry. | |
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.
CdrPlasmaStepper::CdrPlasmaStepper | ( | RefCountedPtr< CdrPlasmaPhysics > & | a_physics | ) |
Full constructor.
[in] | a_physics | CDR plasma physics. |
|
overridepure virtual |
Advance method, advances equations.
[in] | a_dt | Time step |
Implements TimeStepper.
Implemented in Physics::CdrPlasma::CdrPlasmaImExSdcStepper, and Physics::CdrPlasma::CdrPlasmaGodunovStepper.
|
virtual |
Advance the reaction network. This will compute the electric field (on the appropriate phase) and call the other version.
[in] | a_time | Time |
[in] | a_dt | Time step |
|
virtual |
Compute reaction network source terms. This is the AMR version that does all levels.
[out] | a_cdrSources | Source terms for the CDR solvers. |
[out] | a_rteSources | Source terms for the radiative transfer solvers. |
[in] | a_cdrDensities | Cell-centered densities for the plasma species (i.e., CDR solvers). |
[in] | a_cdrGradients | Cell-centered gradients for the plasma species (i.e., CDR solvers). |
[in] | a_rteDensities | Cell-centered densities for the radiative transfer equations (i.e., RTE solvers). |
[in] | a_E | Cell-centered electric field. |
[in] | a_time | Time |
[in] | a_dt | Time step. |
|
virtual |
Compute reaction network source terms.
This will call the other version but will first compute the gradients of the plasma densities.
[out] | a_cdrSources | Source terms for the CDR solvers. |
[out] | a_rteSources | Source terms for the radiative transfer solvers. |
[in] | a_cdrDensities | Cell-centered densities for the plasma species (i.e., CDR solvers). |
[in] | a_rteDensities | Cell-centered densities for the radiative transfer equations (i.e., RTE solvers). |
[in] | a_E | Cell-centered electric field. |
[in] | a_time | Time |
[in] | a_dt | Time step. |
|
virtual |
Compute reaction network source terms. This is the level version.
[out] | a_cdrSources | Source terms for the CDR solvers. |
[out] | a_rteSources | Source terms for the radiative transfer solvers. |
[in] | a_cdrDensities | Cell-centered densities for the plasma species (i.e., CDR solvers). |
[in] | a_cdrGradients | Cell-centered gradients for the plasma species (i.e., CDR solvers). |
[in] | a_rteDensities | Cell-centered densities for the radiative transfer equations (i.e., RTE solvers). |
[in] | a_E | Cell-centered electric field. |
[in] | a_time | Time |
[in] | a_dt | Time step. |
[in] | a_level | Grid level. |
|
virtual |
Compute reaction network sources. This is the irregular version which only does the cut-cells.
[out] | a_cdrSources | Source terms for the CDR solvers. |
[out] | a_rteSources | Source terms for the radiative transfer solvers. |
[in] | a_cdrDensities | Cell-centered densities for the plasma species (i.e., CDR solvers). |
[in] | a_cdrGradients | Cell-centered gradients for the plasma species (i.e., CDR solvers). |
[in] | a_cdrVelocities | Cell-centered velocities for the CDR solvers. |
[in] | a_rteDensities | Cell-centered densities for the radiative transfer equations (i.e., RTE solvers). |
[in] | a_interpStencils | Interpolation stencils for putting cell-centered data on the centroid. |
[in] | a_E | Cell-centered electric field. |
[in] | a_time | Time |
[in] | a_dt | Time step. |
[in] | a_dx | Grid resolution. |
[in] | a_cellBox | Cell-centered computational region. |
[in] | a_lvl | Grid level |
[in] | a_dit | Grid patch index |
|
virtual |
Compute reaction network sources. This version interpolates everything to the centroid and runs with that data.
[out] | a_cdrSources | Source terms for the CDR solvers. |
[out] | a_rteSources | Source terms for the radiative transfer solvers. |
[in] | a_cdrDensities | Cell-centered densities for the plasma species (i.e., CDR solvers). |
[in] | a_cdrGradients | Cell-centered gradients for the plasma species (i.e., CDR solvers). |
[in] | a_cdrVelocities | Cell-centered velocities for the CDR solvers. |
[in] | a_rteDensities | Cell-centered densities for the radiative transfer equations (i.e., RTE solvers). |
[in] | a_interpStencils | Interpolation stencils for putting cell-centered data on the centroid. |
[in] | a_E | Cell-centered electric field. |
[in] | a_time | Time |
[in] | a_dt | Time step. |
[in] | a_dx | Grid resolution. |
[in] | a_cellBox | Cell-centered computational region. |
[in] | a_lvl | Grid level |
[in] | a_dit | Grid patch index |
|
virtual |
Compute reaction network sources. This version assumes that some of the inputs are on the centroid.
[out] | a_cdrSources | Source terms for the CDR solvers. |
[out] | a_rteSources | Source terms for the radiative transfer solvers. |
[in] | a_cdrDensities | Centroid-centered densities for the plasma species (i.e., CDR solvers). |
[in] | a_cdrGradients | Cell-centered gradients for the plasma species (i.e., CDR solvers). |
[in] | a_rteDensities | Centroid-centered densities for the radiative transfer equations (i.e., RTE solvers). |
[in] | a_interpStencils | Interpolation stencils for putting cell-centered data on the centroid. |
[in] | a_E | Cell-centered electric field. |
[in] | a_time | Time |
[in] | a_dt | Time step. |
[in] | a_dx | Grid resolution. |
[in] | a_cellBox | Cell-centered computational region. |
[in] | a_lvl | Grid level |
[in] | a_dit | Grid patch index |
|
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.
[out] | a_cdrSources | Source terms for the CDR solvers. |
[out] | a_rteSources | Source terms for the radiative transfer solvers. |
[in] | a_cdrDensities | Cell-centered densities for the plasma species (i.e., CDR solvers). |
[in] | a_cdrGradients | Cell-centered gradients for the plasma species (i.e., CDR solvers). |
[in] | a_cdrVelocities | Cell-centered velocities for the CDR solvers. |
[in] | a_rteDensities | Cell-centered densities for the radiative transfer equations (i.e., RTE solvers). |
[in] | a_interpStencils | Interpolation stencils for putting cell-centered data on the centroid. |
[in] | a_E | Cell-centered electric field. |
[in] | a_time | Time |
[in] | a_dt | Time step. |
[in] | a_dx | Grid resolution. |
[in] | a_cellBox | Cell-centered computational region. |
[in] | a_lvl | Grid level |
[in] | a_dit | Grid patch index |
|
virtual |
Compute reaction network sources. This is the regular version which does not do the cut-cells.
[out] | a_cdrSources | Source terms for the CDR solvers. |
[out] | a_rteSources | Source terms for the radiative transfer solvers. |
[in] | a_cdrDensities | Cell-centered densities for the plasma species (i.e., CDR solvers). |
[in] | a_cdrGradients | Cell-centered gradients for the plasma species (i.e., CDR solvers). |
[in] | a_rteDensities | Cell-centered densities for the radiative transfer equations (i.e., RTE solvers). |
[in] | a_E | Cell-centered electric field. |
[in] | a_time | Time |
[in] | a_dt | Time step. |
[in] | a_dx | Grid resolution. |
[in] | a_cellBox | Cell-centered computational region. |
|
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.
|
virtual |
Compute diffusion things using whatever is available in the solvers. This version uses the input electric fields.
[in] | a_electricFieldCell | Electric field on cell centers. |
[in] | a_electricFieldEB | Electric field on EB centroids |
|
virtual |
Compute CDR diffusion coefficients on cell centers. This will call the level version.
[out] | a_cdrDcoCell | CDR diffusion coefficients on cell centers. |
[in] | a_cdrDensities | Cell-centered CDR densities |
[in] | a_electricFieldCell | Cell-centered electric field |
[in] | a_time | Time |
|
virtual |
Compute diffusion coefficients. This is the level version and it will iterate through grid patches.
[out] | a_cdrDcoCell | CDR diffusion coefficients on cell centers. |
[in] | a_cdrDensities | Cell-centered CDR densities |
[in] | a_electricFieldCell | Cell-centered electric field |
[in] | a_lvl | Grid level |
[in] | a_time | Time |
|
virtual |
Compute diffusion coefficients on cell centers. This version does the irregular cells.
[out] | a_cdrDcoCell | CDR diffusion coefficients on cell centers. |
[in] | a_cdrDensities | Cell-centered CDR densities |
[in] | a_electricFieldCell | Cell-centered electric field |
[in] | a_dx | Grid resolution |
[in] | a_time | Time |
[in] | a_lvl | Grid level |
[in] | a_dit | Grid patch index |
|
virtual |
Compute diffusion coefficients on cell centers. This does all the regular cells.
[out] | a_cdrDcoCell | CDR diffusion coefficients on cell centers. |
[in] | a_cdrDensities | Cell-centered CDR densities |
[in] | a_electricFieldCell | Cell-centered electric field |
[in] | a_cellBox | Kernel region |
[in] | a_dx | Grid resolution |
[in] | a_time | Time |
|
virtual |
Compute diffusion coefficients on the EB. This is the AMR version – it will call the level version.
[out] | a_cdrDcoEB | EB-centered_CDR diffusion coefficients |
[in] | a_cdrDensitiesEB | EB-centered CDR densities |
[in] | a_electricFieldEB | EB-centered electric field |
[in] | a_time | Time |
|
virtual |
Compute diffusion coefficients on the EB. This is a level version but it will go through all patches.
[out] | a_cdrDcoEB | EB-centered_CDR diffusion coefficients |
[in] | a_cdrDensitiesEB | EB-centered CDR densities |
[in] | a_electricFieldEB | EB-centered electric field |
[in] | a_time | Time |
[in] | a_lvl | Grid level. |
|
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.
[out] | a_cdrDcoCell | CDR diffusion coefficients on cell centers. |
[in] | a_cdrDensities | Cell-centered CDR densities |
[in] | a_electricFieldCell | Cell-centered electric field |
[in] | a_time | Time |
|
virtual |
Compute CDR fluxes on domain faces for usage in boundary conditions. This is the AMR version.
[out] | a_cdrFluxes | CDR domain bounadry fluxes for solvers. |
[in] | a_extrapCdrFluxes | CDR fluxes extrapolated to the domain faces. |
[in] | a_extrapCdrDensities | CDR densities extrapolated to the domain faces. |
[in] | a_extrapCdrVelocities | CDR velocities extrapolated to the domain faces. |
[in] | a_extrapCdrGradients | CDR gradients extrapolated to the domain faces. |
[in] | a_extrapRteFluxes | RTE fluxes on the domain faces. |
[in] | a_electricField | Electric field on the domain faces. |
[in] | a_time | Time. |
|
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.
[out] | a_cdrFluxes | CDR domain bounadry fluxes for solvers. |
[in] | a_extrapCdrFluxes | CDR fluxes extrapolated to the domain faces. |
[in] | a_extrapCdrDensities | CDR densities extrapolated to the domain faces. |
[in] | a_extrapCdrVelocities | CDR velocities extrapolated to the domain faces. |
[in] | a_extrapCdrGradients | CDR gradients extrapolated to the domain faces. |
[in] | a_extrapRteFluxes | RTE fluxes on the domain faces. |
[in] | a_electricField | Electric field on the domain faces. |
[in] | a_time | Time. |
[in] | a_lvl | Grid level |
|
virtual |
Compute the CDR drift velocities.
This will compute the cell-centered electric field and then call the other version.
|
virtual |
Compute the cell-centered CDR velocities. This will call the level version.
[out] | a_cdrVelocities | Cell-centered CDR drift velocities |
[out] | a_cdrDensities | Cell-centered CDR densities |
[in] | a_electricField | The cell-centered electric field |
[in] | a_time | 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.
[out] | a_cdrVelocities | Cell-centered CDR drift velocities |
[out] | a_cdrDensities | Cell-centered CDR densities |
[in] | a_electricField | The cell-centered electric field |
[in] | a_lvl | Grid level |
[in] | a_time | Time |
|
virtual |
Compute the cell-centered CDR velocities.
This is patch version for irregular grid cells.
[out] | a_cdrVelocities | Cell-centered CDR drift velocities |
[out] | a_cdrDensities | Cell-centered CDR densities |
[in] | a_electricField | The cell-centered electric field |
[in] | a_time | Time |
[in] | a_dx | Grid resolution |
[in] | a_lvl | Grid level |
[in] | a_dit | Grid index |
|
virtual |
Compute the cell-centered CDR velocities.
This is patch version for regular grid cells.
[out] | a_cdrVelocities | Cell-centered CDR drift velocities |
[out] | a_cdrDensities | Cell-centered CDR densities |
[in] | a_electricField | The cell-centered electric field |
[in] | a_cellBox | Computational region. |
[in] | a_time | Time |
[in] | a_dx | Grid resolution |
|
virtual |
Compute CDR fluxes on the EB. This is the AMR version – it will call the level version.
[out] | a_cdrFluxesEB | CDR fluxes to be put in CDR solvers as a BC on the EBs. |
[in] | a_extrapCdrFluxes | CDR fluxes extrapolated from the inside. Can be used to construct inflow/outflow BCs. |
[in] | a_extrapCdrDensities | CDR densities extrapolated from the inside. |
[in] | a_extrapCdrVelocities | CDR velocities on the EB, extrapolated from the inside. |
[in] | a_extrapCdrGradients | CDR gradients on the EB, extrapolated from the inside. |
[in] | a_electricField | Electric field on the EB. |
[in] | a_time | Time. |
|
virtual |
Compute CDR fluxes on the EB. This is the level version which will fill EB fluxes on both electrode and dielectric cells.
[out] | a_cdrFluxesEB | CDR fluxes to be put in CDR solvers as a BC on the EBs. |
[in] | a_extrapCdrFluxes | CDR fluxes extrapolated from the inside. Can be used to construct inflow/outflow BCs. |
[in] | a_extrapCdrDensities | CDR densities extrapolated from the inside. |
[in] | a_extrapCdrVelocities | CDR velocities on the EB, extrapolated from the inside. |
[in] | a_extrapCdrGradients | CDR gradients on the EB, extrapolated from the inside. |
[in] | a_electricField | Electric field on the EB. |
[in] | a_time | Time. |
[in] | a_lvl | Grid level. |
|
virtual |
Compute the cell-centered conductivity.
[out] | a_cellConductivity | Cell-centered conductivity. |
|
virtual |
Compute the ohmic current on dielectrics.
This will compute the total charge flux through dielectric surfaces and return it.
|
virtual |
Compute the ohmic current through the domain faces.
This will compute the total current through domain faces and return it.
|
overridepure virtual |
Compute the time step.
Subclasses must implement this one.
Implements TimeStepper.
Implemented in Physics::CdrPlasma::CdrPlasmaImExSdcStepper, and Physics::CdrPlasma::CdrPlasmaGodunovStepper.
|
virtual |
Compute the cell-centered electric field on a specific phase.
[out] | a_electricFieldCell | Cell-centered electric field |
[in] | a_phase | Phase |
[in] | a_potential | Electrostatic potential (cell-centered) |
|
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.
[out] | a_electricFieldCell | Cell-centered electric field |
[in] | a_phase | Phase |
|
virtual |
Compute the face-centered electric field. This will only do the normal component.
[out] | a_electricFieldFace | Face-centered electric field |
[in] | a_phase | Phase |
[in] | a_electricFieldCell | Cell-centered electric field (all components). |
|
virtual |
Compute the EB-centered electric field.
[out] | a_electricFieldEB | EB-centered electric field. |
[in] | a_phase | Phase |
[in] | a_electricFieldCell | Cell-centered electric field (all components). |
|
virtual |
Compute the cell-centered electric field on both phases.
[out] | a_electricFieldCell | Cell-centered electric field |
[in] | a_potential | Cell-centered electrostatic potential |
|
virtual |
Compute the ohmic current on electrodes.
This will compute the total charge flux through electrode surfaces and return it.
|
virtual |
Extrapolate drift fluxes to domain faces.
Note that this projects the flux on the domain face vectors.
[out] | a_cdrDomainFluxes | CDR fluxes extrapolated and projected onto the domain face. |
[in] | a_cdrDensities | Cell-centered CDR solver densities. |
[in] | a_cdrVelocities | Cell-centered CDR solver velocities. |
[in] | a_phase | Phase |
|
virtual |
Extrapolate cell-centered fluxes to the EB centroid.
[out] | a_extrapCdrFluxesEB | CDR fluxes extrapolated to the EB. |
[in] | a_cdrDensities | CDR densities on the cell center |
[in] | a_cdrVelocities | CDR velocities on the cell center |
[in] | a_phase | 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.
[out] | a_cdrVelocitiesEB | EB-centered velocities |
[in] | a_cdrVelocitiesCell | Cell-centered velocities |
[in] | a_phase | Phase |
|
virtual |
Compute the face-centered conductivity from a cell-centered conductivity.
[out] | a_conductivityFace | Face-centered conductivity. |
[out] | a_conductivityEB | EB-centered conductivity. |
[in] | a_conductivityCell | Cell-centered conductivity. |
|
virtual |
Compute the current density.
[out] | a_J | Current density |
|
virtual |
Compute the maximum of the electric field.
[out] | a_maxElectricField | Maximum electric field magnitude evaluated over the input phase |
[in] | a_phase | Input phase |
|
virtual |
Compute induced current in external circuit due to ohmic conduction.
This will return int(E*J dV) over the entire domain.
|
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.
|
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.
[out] | a_rho | Centroid centered space charge density. |
[in] | a_cdrDensities | Cell-centered plasma species densities. Must be in the same order as the densities in m_cdr. |
|
pure virtual |
Deallocate internals. Must be implemented by subclasses.
Do nothing
Implemented in Physics::CdrPlasma::CdrPlasmaImExSdcStepper, and Physics::CdrPlasma::CdrPlasmaGodunovStepper.
|
virtual |
Extrapolate cell-centered data to domain faces. This is the AMR version.
[out] | a_domainData | Domain-centered data |
[in] | a_phase | Phase |
[in] | a_cellData | Cell-centered data. |
|
virtual |
Extrapolate cell-centered data to domain faces. This is the AMR version.
[out] | a_domainData | Domain-centered data |
[in] | a_phase | Phase |
[in] | a_cellData | Cell-centered data. |
[in] | a_lvl | Grid level |
|
virtual |
Extrapolate cell-centered data to domain faces. This is the AMR version that does all species.
[out] | a_domainData | Domain-centered data |
[in] | a_phase | Phase |
[in] | a_cellData | Cell-centered data. |
|
virtual |
Extrapolated cell-centered data to the EB. This is the AMR version.
[out] | a_ebData | EB-centered data |
[in] | a_phase | Phase |
[in] | a_cellData | Cell-centered data |
|
virtual |
Extrapolated cell-centered data to the EB. This is the level version.
[out] | a_ebData | EB-centered data |
[in] | a_phase | Phase |
[in] | a_cellData | Cell-centered data |
[in] | a_lvl | Grid level |
|
virtual |
Extrapolated cell-centered data to the EB. This is the AMR version for all species.
[out] | a_ebData | EB-centered data |
[in] | a_phase | Phase |
[in] | a_cellData | Cell-centered data |
|
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.
[out] | a_domainData | Domain-centered data. Must have one component. |
[in] | a_phase | Phase |
[in] | a_cellData | Cell-centered data. Must have SpaceDim components. |
|
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.
[out] | a_domainData | Domain-centered data. Must have one component. |
[in] | a_phase | Phase |
[in] | a_cellData | Cell-centered data. Must have SpaceDim components. |
|
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.
[out] | a_domainVelocities | Domain-centered velocities. Must have SpaceDim components. |
[in] | a_phase | Phase |
[in] | a_cellData | Cell-centered velocities. Must have SpaceDim components. |
|
virtual |
Get maximum density in the CDR species. This will fetch both the value and the solver name.
[out] | a_cdrMax | Maximum density found in one of the CDR solvers |
[out] | a_solverName | The solver name |
|
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.
Implements TimeStepper.
|
virtual |
Return time.
|
protectedvirtual |
Parse how we compute the source terms.
This is for modifications near the EB.
|
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.
|
overridevirtual |
Pre-regrid function – this is the one called by Driver.
[in] | a_lmin | The coarsest level that changes |
[in] | a_oldFinestLevel | The finest level before the regrid. |
Implements TimeStepper.
Reimplemented in Physics::CdrPlasma::CdrPlasmaGodunovStepper.
|
virtual |
Do a preRegrid operation for internal storage (if needed).
[in] | a_lmin | The coarsest level that changes |
[in] | a_oldFinestLevel | The finest level before the regrid. |
|
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.
|
virtual |
Project flux onto domain edges/faces.
[out] | a_projectedFlux | Projected flux – must have one component. |
[in] | a_flux | Vector flux – must have SpaceDim components. |
|
virtual |
Project a flux onto the EB normal. This is the AMR version.
[out] | a_projectedFlux | Projected flux – must have one component. |
[in] | a_flux | Vector flux – must have SpaceDim components. |
|
virtual |
Project a flux onto the EB normal. This is the level version.
[out] | a_projectedFlux | Projected flux – must have one component. |
[in] | a_flux | Vector flux – must have SpaceDim components. |
|
overridevirtual |
Regrid method.
[in] | a_lmin | The coarsest level that changed. |
[in] | a_oldFinestLevel | The finest level before the regrid. |
[in] | a_newFinestLevel | The finest level after the regrid. |
Implements TimeStepper.
Reimplemented in Physics::CdrPlasma::CdrPlasmaGodunovStepper.
|
pure virtual |
Regrid internal storage. This MUST be overwritten by implementations.
[in] | a_lmin | The coarsest level that changed. |
[in] | a_oldFinestLevel | The finest level before the regrid. |
[in] | a_newFinestLevel | The finest level after the regrid. |
Implemented in Physics::CdrPlasma::CdrPlasmaImExSdcStepper, and Physics::CdrPlasma::CdrPlasmaGodunovStepper.
|
virtual |
Regrid all of our solvers.
[in] | a_lmin | The coarsest level that changed. |
[in] | a_oldFinestLevel | The finest level before the regrid. |
[in] | a_newFinestLevel | The finest level after the regrid. |
|
virtual |
Set data defined over dielectric cells to zero.
[in] | a_data | EB-centered data. |
Set the CDR layout.
[in] | a_cdr | CDR solvers. |
|
virtual |
Set the field solver.
[in] | a_fieldSolver | Field solver |
|
virtual |
Set the RTE solvers.
[in] | a_rte | RTE solvers |
|
virtual |
Set solver verbosity.
This will set the solver verbosity to m_solverVerbosity.
|
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.
[in] | a_conductivityFace | Face-centered conductivities (the Poisson solver will interpolate them to face centroids in the multigrid solve). |
[in] | a_conductivityEB | EB-centered conductivities. |
[in] | a_factor | Factor to multiply conductivities with (they could be pre-scaled by dt/eps0 in which case a_factor = 1). |
|
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.
[in] | a_dt | Time step. |
|
virtual |
Set voltage curve.
[in] | a_voltage | Voltage curve |
|
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.
|
virtual |
General electrostatic Poisson solver routine.
This will compute the space charge density onto a_rho and then solve for the potential.
[in,out] | a_potential | Electrostatic potential |
[out] | a_rho | Centroid-centered space charge density. |
[in] | a_cdrDensities | Plasma species densities. |
[in] | a_sigma | Surface charge density on dielectric EBs. |
|
virtual |
Solve the radiative transfer problem.
This will call the other version with states taken from the solvers.
[in] | a_dt | Time step. |
|
virtual |
Check if RTE solvers are stationary.
|
overridevirtual |
Synchronize solver times.
[in] | a_step | Time step |
[in] | a_time | Time (in seconds) |
[in] | a_dt | Time step that was used. |
Implements TimeStepper.
|
protectedvirtualnoexcept |
Write data to output. Convenience function.
[in,out] | a_output | Output data holder. |
[in,out] | a_icomp | Starting component where this solver begins writing the output. |
[in] | a_data | Data to write. |
[in] | a_outputRealm | Realm where a_output lives |
[in] | a_level | Grid level |
[in] | a_interpToCentroids | If true, a_data will be interpolated to cell centroids before writing to a_output. |
[in] | a_interpGhost | If true, interpolate ghost cells |
|
protectedvirtual |
Compute and put the current density in output data holder.
[in,out] | a_output | Output data holder. |
[in,out] | a_icomp | Starting component in a_output to begin at. On output this is incremented by SpaceDim. |
[in] | a_outputRealm | Realm where a_output lives |
[in] | a_level | Grid level |
|
overridevirtual |
Write plot data to output holder.
[in,out] | a_output | Output data holder. |
[in,out] | a_icomp | Starting component in a_output to begin at. |
[in] | a_outputRealm | Realm where a_output belongs |
[in] | a_level | Grid level |
Implements TimeStepper.
|
protected |