chombo-discharge
|
Class for evolving plasma equations using implicit-explicit spectral deferred corrections. More...
#include <CD_CdrPlasmaImExSdcStepper.H>
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) |
EBAMRIVData & | getSigmaSolverK (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< FieldStorage > | m_fieldScratch |
Scratch storage for the field solver. | |
RefCountedPtr< SigmaStorage > | m_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< 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. | |
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. | |
Class for evolving plasma equations using implicit-explicit spectral deferred corrections.
CdrPlasmaImExSdcStepper::CdrPlasmaImExSdcStepper | ( | RefCountedPtr< CdrPlasmaPhysics > & | a_physics | ) |
Full constructor.
[in] | a_physics | Reference to plasma physics object |
|
overridevirtual |
Advance method. Implements the ImEx SDC algorithm.
[in] | a_dt | Tried time step |
Implements Physics::CdrPlasma::CdrPlasmaStepper.
|
overridevirtual |
Allocation method for setting up internal storage.
This will set up the various storages for the SDC terms.
Implements Physics::CdrPlasma::CdrPlasmaStepper.
|
overrideprotectedvirtual |
Compute the time step.
Subclasses must implement this one.
Implements Physics::CdrPlasma::CdrPlasmaStepper.
|
overridevirtual |
For regridding internal storage. Does nothing.
[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 Physics::CdrPlasma::CdrPlasmaStepper.
|
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.