chombo-discharge
Classes | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Physics::CdrPlasma::CdrPlasmaImExSdcStepper Class Reference

Class for evolving plasma equations using implicit-explicit spectral deferred corrections. More...

#include <CD_CdrPlasmaImExSdcStepper.H>

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

Classes

class  CdrStorage
 
class  FieldStorage
 
class  RtStorage
 
class  SigmaStorage
 

Public Member Functions

 CdrPlasmaImExSdcStepper ()=delete
 Disallowed constructor – use the full constructor.
 
 CdrPlasmaImExSdcStepper (RefCountedPtr< CdrPlasmaPhysics > &a_physics)
 Full constructor. More...
 
virtual ~CdrPlasmaImExSdcStepper ()
 Destructor.
 
Real advance (const Real a_dt) override
 Advance method. Implements the ImEx SDC algorithm. More...
 
void allocateInternals () override
 Allocation method for setting up internal storage. More...
 
void deallocateInternals () override
 De-allocation method for deleting run-time storage.
 
void regridInternals (const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel) override
 For regridding internal storage. Does nothing. More...
 
void parseOptions () override
 Parse startup options.
 
void parseRuntimeOptions () override
 Parse run-time options.
 
- Public Member Functions inherited from Physics::CdrPlasma::CdrPlasmaStepper
 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 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 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 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 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 Member Functions

RefCountedPtr< CdrStorage > & getCdrStorage (const CdrIterator< CdrSolver > &a_solverit)
 
RefCountedPtr< RtStorage > & getRtStorage (const RtIterator< RtSolver > &a_solverit)
 
void allocateCdrStorage ()
 
void allocateFieldStorage ()
 
void allocateRtStorage ()
 
void allocateSigmaStorage ()
 
Vector< EBAMRCellData * > getCdrSolversPhiK (const int a_m)
 
EBAMRIVDatagetSigmaSolverK (const int a_m)
 
void setupQuadratureNodes (const int a_p)
 
void setupUniformNodes (const int a_p)
 
void setupLobattoNodes (const int a_p)
 
void setupChebyshevNodes (const int a_p)
 
void setupQmj (const int a_p)
 
void setupSubintervals (const Real a_time, const Real a_dt)
 
void quad (EBAMRCellData &a_quad, const Vector< EBAMRCellData > &a_integrand, const int a_m)
 
void quad (EBAMRIVData &a_quad, const Vector< EBAMRIVData > &a_integrand, const int a_m)
 
void copyCdrToPhiM0 ()
 
void copySigmaToM0 ()
 
void copyPhiPToCdr ()
 
void copySigmaPToSigma ()
 
void integrateRtTransient (const Real a_dt)
 
void integrateRtStationary ()
 
void integrate (const Real a_dt, const Real a_time, const bool a_lagged_terms)
 
void integrateAdvectionReaction (const Real a_dt, const int a_m, const bool a_lagged_terms)
 
void integrateAdvection (const Real a_dt, const int a_m, const bool a_lagged_terms)
 
void integrateDiffusion (const Real a_dt, const int a_m, const bool a_lagged_terms)
 
Vector< EBAMRCellData * > getCdrErrors ()
 Get errors for CDR equations.
 
void reconcileIntegrands ()
 
void computeFD0 ()
 
void initializeErrors ()
 
void finalizeErrors ()
 
void computeNewDt (bool &a_accept_step, const Real a_dt, const int a_num_corrections)
 
void adaptiveReport (const Real a_first_dt, const Real a_dt, const Real a_new_dt, const int a_corr, const int a_rej, const Real a_max_err)
 
void updateField ()
 
void updateField (const Vector< EBAMRCellData * > &a_densities, const EBAMRIVData &a_sigma)
 
void updateDiffusionCoefficients ()
 
void storeSolvers ()
 
void restoreSolvers ()
 
void computeReactionNetwork (const int a_m, const Real a_time, const Real a_dt)
 
void computeElectricFieldIntoScratch ()
 
void computeCdrEbStates ()
 
void computeCdrEbStates (const Vector< EBAMRCellData * > &a_phis)
 
void computeCdrDomainStates ()
 
void computeCdrDomainStates (const Vector< EBAMRCellData * > &a_phis)
 
void computeCdrGradients ()
 
void computeCdrGradients (const Vector< EBAMRCellData * > &a_phis)
 
void computeCdrFluxes (const Real a_time)
 
void computeCdrFluxes (const Vector< EBAMRCellData * > &a_phis, const Real a_time)
 
void computeCdrDomainFluxes (const Real a_time)
 
void computeCdrDomainFluxes (const Vector< EBAMRCellData * > &a_phis, const Real a_time)
 
void computeCdrVelo (const Real a_time)
 
void computeCdrVelo (const Vector< EBAMRCellData * > &a_phis, const Real a_time)
 
Real computeDt () override
 Compute the time step. More...
 
void computeSigmaFlux ()
 
Real getMaxError ()
 
Real getMaxNodeDistance ()
 
void writeStepProfile (const Real a_dt, const Real a_error, const int a_substeps, const int a_corrections, const int a_rejections)
 
void parseNodes ()
 
void parseDiffusionCoupling ()
 
void parseAdaptiveOptions ()
 
void parseDebugOptions ()
 
void parseAdvectionOptions ()
 
- Protected Member Functions inherited from Physics::CdrPlasma::CdrPlasmaStepper
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

Vector< RefCountedPtr< CdrStorage > > m_cdrScratch
 Scratch storage for the CDR solvers.
 
Vector< RefCountedPtr< RtStorage > > m_rteScratch
 Scratch storage for the radiative transfer solvers.
 
RefCountedPtr< FieldStoragem_fieldScratch
 Scratch storage for the field solver.
 
RefCountedPtr< SigmaStoragem_sigmaScratch
 Scratch storage for the surface charge solver.
 
int m_maxRetries
 Maximum number of retries when using adaptive time steps.
 
int m_p
 Number of subintervals in the SDC discretization.
 
int m_k
 Number of correction for the SDC discretization.
 
int m_errorNorm
 Error norm to use when using adaptive time steps.
 
int m_minCorr
 Minimum number of SDC corrections.
 
int m_errorIdx
 The species error index – allows us to restrict error evaluation and adaptive times stepping to a specified species. More...
 
Real m_maxDtGrowth
 Maximum growth factor for the time step when using adaptive stepping.
 
Real m_minCFL
 
Real m_maxCFL
 
Real m_errThresh
 
Real m_safety
 
Real m_decreaseSafety
 
Real m_newDt
 
Real m_extrapDt
 
bool m_extrapAdvect
 
bool m_adaptiveDt
 
bool m_printReport
 
bool m_haveError
 
bool m_useTGA
 
bool m_doAdvectionSource
 
bool m_doDiffusion
 
bool m_doPoisson
 
bool m_doRTE
 
bool m_computeD
 
bool m_computeV
 
bool m_computeS
 
bool m_consistentE
 
bool m_consistentRTE
 
bool m_haveDtErr
 
bool m_profileSteps
 
Vector< Real > m_cdrError
 
Real m_sigmaError
 
Real m_maxError
 
Real m_preError
 
Vector< Vector< Real > > m_qmj
 
Vector< Vector< Real > > m_vandermonde
 
Vector< Real > m_nodes
 
Vector< Real > m_tm
 
Vector< Real > m_dtm
 
std::string m_whichNodes
 
- Protected Attributes inherited from Physics::CdrPlasma::CdrPlasmaStepper
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.
 

Additional Inherited Members

- Protected Types inherited from Physics::CdrPlasma::CdrPlasmaStepper
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.
 

Detailed Description

Class for evolving plasma equations using implicit-explicit spectral deferred corrections.

Constructor & Destructor Documentation

◆ CdrPlasmaImExSdcStepper()

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

Full constructor.

Parameters
[in]a_physicsReference to plasma physics object

Member Function Documentation

◆ advance()

Real CdrPlasmaImExSdcStepper::advance ( const Real  a_dt)
overridevirtual

Advance method. Implements the ImEx SDC algorithm.

Parameters
[in]a_dtTried time step
Returns
Time step used (can be different from a_dt if using adaptive stepping).

Implements Physics::CdrPlasma::CdrPlasmaStepper.

◆ allocateInternals()

void CdrPlasmaImExSdcStepper::allocateInternals ( )
overridevirtual

Allocation method for setting up internal storage.

This will set up the various storages for the SDC terms.

Implements Physics::CdrPlasma::CdrPlasmaStepper.

◆ computeDt()

Real CdrPlasmaImExSdcStepper::computeDt ( )
overrideprotectedvirtual

Compute the time step.

Subclasses must implement this one.

Implements Physics::CdrPlasma::CdrPlasmaStepper.

◆ regridInternals()

void CdrPlasmaImExSdcStepper::regridInternals ( const int  a_lmin,
const int  a_oldFinestLevel,
const int  a_newFinestLevel 
)
overridevirtual

For regridding internal storage. Does nothing.

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 Physics::CdrPlasma::CdrPlasmaStepper.

Member Data Documentation

◆ m_errorIdx

int Physics::CdrPlasma::CdrPlasmaImExSdcStepper::m_errorIdx
protected

The species error index – allows us to restrict error evaluation and adaptive times stepping to a specified species.

If m_errorIdx < 0 we do all species.


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