13#ifndef CD_CDRPLASMASTEPPER_H
14#define CD_CDRPLASMASTEPPER_H
29#include <CD_NamespaceHeader.H>
125 writeCheckpointData(HDF5Handle& a_handle,
const int a_lvl)
const override;
135 readCheckpointData(HDF5Handle& a_handle,
const int a_lvl)
override;
150 virtual Vector<std::string>
163 const std::string& a_outputRealm,
164 const int a_level)
const override;
205 preRegrid(
const int a_lmin,
const int a_oldFinestLevel)
override;
222 regrid(
const int a_lmin,
const int a_oldFinestLevel,
const int a_newFinestLevel)
override;
244 computeElectricField(MFAMRCellData& a_electricFieldCell,
const MFAMRCellData& a_potential)
const;
273 const EBAMRCellData& a_electricFieldCell)
const;
284 const EBAMRCellData& a_electricFieldCell)
const;
365 EBAMRIVData& a_conductivityEB,
366 const EBAMRCellData& a_conductivityCell)
const;
390 const EBAMRIVData& a_conductivityEB,
391 const Real a_factor);
413 MFAMRCellData& a_rho,
414 const Vector<EBAMRCellData*>& a_cdrDensities,
415 const EBAMRIVData& a_sigma);
439 Vector<EBAMRCellData*>& a_rteSources,
440 const Vector<EBAMRCellData*>& a_cdrDensities,
441 const Vector<EBAMRCellData*>& a_rteDensities,
442 const EBAMRCellData& a_E,
459 Vector<EBAMRCellData*>& a_rteSources,
460 const Vector<EBAMRCellData*>& a_cdrDensities,
461 const Vector<EBAMRCellData*>& a_cdrGradients,
462 const Vector<EBAMRCellData*>& a_rteDensities,
463 const EBAMRCellData& a_E,
481 Vector<LevelData<EBCellFAB>*>& a_rteSources,
482 const Vector<LevelData<EBCellFAB>*>& a_cdrDensities,
483 const Vector<LevelData<EBCellFAB>*>& a_cdrGradients,
484 const Vector<LevelData<EBCellFAB>*>& a_rteDensities,
485 const LevelData<EBCellFAB>& a_E,
504 Vector<FArrayBox*>& a_rteSources,
505 const Vector<FArrayBox*>& a_cdrDensities,
506 const Vector<FArrayBox*>& a_cdrGradients,
507 const Vector<FArrayBox*>& a_rteDensities,
508 const FArrayBox& a_E,
512 const Box& a_cellBox);
533 Vector<EBCellFAB*>& a_rteSources,
534 const Vector<EBCellFAB*>& a_cdrDensities,
535 const Vector<EBCellFAB*>& a_cdrGradients,
536 const Vector<EBCellFAB*>& a_cdrVelocities,
537 const Vector<EBCellFAB*>& a_rteDensities,
538 const EBCellFAB& a_E,
542 const Box& a_cellBox,
544 const DataIndex& a_dit);
565 Vector<EBCellFAB*>& a_rteSources,
566 const Vector<EBCellFAB*>& a_cdrDensities,
567 const Vector<EBCellFAB*>& a_cdrGradients,
568 const Vector<EBCellFAB*>& a_cdrVelocities,
569 const Vector<EBCellFAB*>& a_rteDensities,
570 const EBCellFAB& a_E,
574 const Box& a_cellBox,
576 const DataIndex& a_dit);
599 Vector<EBCellFAB*>& a_rteSources,
600 const Vector<EBCellFAB*>& a_cdrDensities,
601 const Vector<EBCellFAB*>& a_cdrGradients,
602 const Vector<EBCellFAB*>& a_cdrVelocities,
603 const Vector<EBCellFAB*>& a_rteDensities,
604 const EBCellFAB& a_E,
610 const DataIndex& a_dit);
626 computeCdrDiffusion(
const EBAMRCellData& a_electricFieldCell,
const EBAMRIVData& a_electricFieldEB);
637 const Vector<EBAMRCellData*>& a_cdrDensities,
638 const EBAMRCellData& a_electricFieldCell,
651 const Vector<LevelData<EBCellFAB>*>& a_cdrDensities,
652 const LevelData<EBCellFAB>& a_electricFieldCell,
667 const Vector<FArrayBox*>& a_cdrDensities,
668 const FArrayBox& a_electricFieldCell,
685 const Vector<EBCellFAB*>& a_cdrDensities,
686 const EBCellFAB& a_electricFieldCell,
690 const DataIndex& a_dit);
703 const Vector<EBAMRCellData*>& a_cdrDensities,
704 const EBAMRCellData& a_electricFieldCell,
716 const Vector<EBAMRIVData*>& a_cdrDensitiesEB,
717 const EBAMRIVData& a_electricFieldEB,
730 const Vector<LevelData<BaseIVFAB<Real>>*>& a_cdrDensitiesEB,
731 const LevelData<BaseIVFAB<Real>>& a_electricFieldEB,
751 const Vector<EBAMRCellData*>& a_cdrDensities,
752 const EBAMRCellData& a_E,
766 const Vector<LevelData<EBCellFAB>*>& a_cdrDensities,
767 const LevelData<EBCellFAB>& a_electricField,
783 const Vector<FArrayBox*>& a_cdrDensities,
784 const FArrayBox& a_electricField,
785 const Box& a_cellBox,
802 const Vector<EBCellFAB*>& a_cdrDensities,
803 const EBCellFAB& a_electricField,
807 const DataIndex& a_dit);
823 const Vector<EBAMRIVData*>& a_extrapCdrFluxes,
824 const Vector<EBAMRIVData*>& a_extrapCdrDensities,
825 const Vector<EBAMRIVData*>& a_extrapCdrVelocities,
826 const Vector<EBAMRIVData*>& a_extrapCdrGradients,
827 const Vector<EBAMRIVData*>& a_extrapRteFluxes,
828 const EBAMRIVData& a_electricField,
847 const Vector<LevelData<BaseIVFAB<Real>>*>& a_extrapCdrFluxes,
848 const Vector<LevelData<BaseIVFAB<Real>>*>& a_extrapCdrDensities,
849 const Vector<LevelData<BaseIVFAB<Real>>*>& a_extrapCdrVelocities,
850 const Vector<LevelData<BaseIVFAB<Real>>*>& a_extrapCdrGradients,
851 const Vector<LevelData<BaseIVFAB<Real>>*>& a_extrapRteFluxes,
852 const LevelData<BaseIVFAB<Real>>& a_electricField,
869 const Vector<EBAMRIFData*>& a_extrapCdrFluxes,
870 const Vector<EBAMRIFData*>& a_extrapCdrDensities,
871 const Vector<EBAMRIFData*>& a_extrapCdrVelocities,
872 const Vector<EBAMRIFData*>& a_extrapCdrGradients,
873 const Vector<EBAMRIFData*>& a_extrapRteFluxes,
874 const EBAMRIFData& a_electricField,
892 const Vector<LevelData<DomainFluxIFFAB>*>& a_extrapCdrFluxes,
893 const Vector<LevelData<DomainFluxIFFAB>*>& a_extrapCdrDensities,
894 const Vector<LevelData<DomainFluxIFFAB>*>& a_extrapCdrVelocities,
895 const Vector<LevelData<DomainFluxIFFAB>*>& a_extrapCdrGradients,
896 const Vector<LevelData<DomainFluxIFFAB>*>& a_extrapRteFluxes,
897 const LevelData<DomainFluxIFFAB>& a_electricField,
910 const Vector<EBAMRCellData*>& a_cdrDensities,
911 const Vector<EBAMRCellData*>& a_cdrVelocities,
924 const Vector<EBAMRCellData*>& a_cdrDensities,
925 const Vector<EBAMRCellData*>& a_cdrVelocities,
938 const Vector<EBAMRCellData*>& a_cdrVelocitiesCell,
956 const Vector<EBAMRCellData*>& a_cellData);
977 const LevelData<EBCellFAB>& a_cellData,
989 const Vector<EBAMRCellData*>& a_cellData);
1000 const EBAMRCellData& a_cellData);
1012 const LevelData<EBCellFAB>& a_cellData,
1025 const Vector<EBAMRCellData*>& a_cellData);
1037 const EBAMRCellData& a_cellData);
1049 const Vector<EBAMRCellData*>& a_cellVelocities);
1057 getCdrMax(Real& a_cdrMax, std::string& a_solverName)
const;
1071 projectFlux(EBAMRIVData& a_projectedFlux,
const EBAMRIVData& a_flux);
1080 projectFlux(LevelData<BaseIVFAB<Real>>& a_projectedFlux,
const LevelData<BaseIVFAB<Real>>& a_flux,
const int a_lvl);
1088 projectDomain(EBAMRIFData& a_projectedFlux,
const EBAMRIFData& a_flux);
1097 regridInternals(
const int a_lmin,
const int a_oldFinestLevel,
const int a_newFinestLevel) = 0;
1106 regridSolvers(
const int a_lmin,
const int a_oldFinestLevel,
const int a_newFinestLevel);
1163 setVoltage(std::function<Real(
const Real a_time)> a_voltage);
1303 RefCountedPtr<CdrLayout<CdrSolver>>
m_cdr;
1308 RefCountedPtr<RtLayout<RtSolver>>
m_rte;
1458 writeJ(LevelData<EBCellFAB>& a_output,
int& a_icomp,
const std::string& a_outputRealm,
const int a_level)
const;
1479 writeData(LevelData<EBCellFAB>& a_output,
1481 const EBAMRCellData& a_data,
1482 const std::string& a_outputRealm,
1484 const bool a_interpToCentroids,
1485 const bool a_interpGhost)
const noexcept;
1490#include <CD_NamespaceFooter.H>
Declaration of core class for handling AMR-related operations (with embedded boundaries)
Declaration of a class that holds a set of CdrSolvers (to cut down on typing).
Declaration of the Physics::CdrPlasma::CdrPlasmaPhysics interface class.
Declaration of base class for defining geometries.
Contains declaration of a base electrostatics solver class.
Declaration of a class that holds a set of RtSolvers.
Declaration of a cut-cell ODE solver.
Declaration of main (abstract) time stepper class.
Class for holding a set of CdrSolvers.
Definition CD_CdrLayout.H:40
Abstract base class for advancing the coupled CDR plasma equations in time.
Definition CD_CdrPlasmaStepper.H:46
virtual Real getTime() const
Return the current simulation time.
Definition CD_CdrPlasmaStepper.cpp:4322
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.
Definition CD_CdrPlasmaStepper.cpp:2577
virtual void setupSigma()
Set up the surface charge solver.
Definition CD_CdrPlasmaStepper.cpp:3901
virtual void computeFaceConductivity(EBAMRFluxData &a_conductivityFace, EBAMRIVData &a_conductivityEB, const EBAMRCellData &a_conductivityCell) const
Compute the face-centered conductivity from a cell-centered conductivity.
Definition CD_CdrPlasmaStepper.cpp:234
virtual void setFieldSolver(RefCountedPtr< FieldSolver > &a_fieldSolver)
Set the field solver.
Definition CD_CdrPlasmaStepper.cpp:3286
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.
Definition CD_CdrPlasmaStepper.cpp:2643
virtual void printStepReport() override
Print a step report.
Definition CD_CdrPlasmaStepper.cpp:4811
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.
Definition CD_CdrPlasmaStepper.cpp:3072
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.
Definition CD_CdrPlasmaStepper.cpp:3123
SourceTermComputation m_whichSourceTermComputation
Which source term computation.
Definition CD_CdrPlasmaStepper.H:1288
virtual void projectFlux(EBAMRIVData &a_projectedFlux, const EBAMRIVData &a_flux)
Project a flux onto the EB normal. This is the AMR version.
Definition CD_CdrPlasmaStepper.cpp:3412
Real m_dtCFL
Computed CFL time step.
Definition CD_CdrPlasmaStepper.H:1368
virtual void setSolverVerbosity()
Set solver verbosity.
Definition CD_CdrPlasmaStepper.cpp:3838
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.
Definition CD_CdrPlasmaStepper.cpp:2152
int m_solverVerbosity
Verbosity for solvers.
Definition CD_CdrPlasmaStepper.H:1378
virtual void computeJ(EBAMRCellData &a_J) const
Compute the current density.
Definition CD_CdrPlasmaStepper.cpp:2834
std::string m_className
Time stepper class name.
Definition CD_CdrPlasmaStepper.H:1278
Real m_relaxTime
Scaling factor for the dielectric relaxation time step restriction.
Definition CD_CdrPlasmaStepper.H:1353
virtual void parseFastPoisson()
Parse the "fast poisson" method, i.e. how often we solve the Poisson equation.
Definition CD_CdrPlasmaStepper.cpp:3764
virtual Real computeOhmicInductionCurrent()
Compute induced current in external circuit due to ohmic conduction.
Definition CD_CdrPlasmaStepper.cpp:4238
RefCountedPtr< SurfaceODESolver< 1 > > m_sigma
Surface charge solver.
Definition CD_CdrPlasmaStepper.H:1318
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.
Definition CD_CdrPlasmaStepper.cpp:800
virtual void allocate() override
Allocate data for the time stepper and solvers.
Definition CD_CdrPlasmaStepper.cpp:3824
RefCountedPtr< CdrLayout< CdrSolver > > m_cdr
CDR solvers.
Definition CD_CdrPlasmaStepper.H:1303
virtual void parseMinDt()
Parse the minimum allowed time step.
Definition CD_CdrPlasmaStepper.cpp:3716
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.
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_electricField, const Real &a_time)
Compute CDR fluxes on domain faces for usage in boundary conditions. This is the AMR version.
Definition CD_CdrPlasmaStepper.cpp:2385
virtual void parseRuntimeOptions() override=0
Parse runtime options. Subclasses must implement this.
RefCountedPtr< MultiFluidIndexSpace > m_multifluidIndexSpace
Index space.
Definition CD_CdrPlasmaStepper.H:1293
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.
Definition CD_CdrPlasmaStepper.cpp:3246
virtual void deallocate()
Deallocation function. This will deallocate internal storage in the subclasses as well as the solvers...
Definition CD_CdrPlasmaStepper.cpp:4334
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.
Definition CD_CdrPlasmaStepper.cpp:2777
virtual void sanityCheck() const
Do a sanity check. Only works when DEBUG=TRUE.
Definition CD_CdrPlasmaStepper.cpp:3636
virtual Real advance(const Real a_dt) override=0
Advance method, advances equations.
virtual void parseVerbosity()
Parse class verbosity.
Definition CD_CdrPlasmaStepper.cpp:3660
TimeCode m_timeCode
Time code for step restriction.
Definition CD_CdrPlasmaStepper.H:1373
virtual Real computeRelaxationTime()
Compute the relaxation time as dt = eps0/conductivity.
Definition CD_CdrPlasmaStepper.cpp:4283
virtual void deallocateInternals()=0
Deallocate internals. Must be implemented by subclasses.
Definition CD_CdrPlasmaStepper.cpp:418
virtual void initialSigma()
Initialize the surface charge.
Definition CD_CdrPlasmaStepper.cpp:3353
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.
Definition CD_CdrPlasmaStepper.cpp:1987
virtual void setupCdr()
Setup the CDR solvers.
Definition CD_CdrPlasmaStepper.cpp:3852
virtual Real computeDomainCurrent()
Compute the ohmic current through the domain faces.
Definition CD_CdrPlasmaStepper.cpp:4153
virtual bool solvePoisson()
Solve the electrostatic Poisson equation.
Definition CD_CdrPlasmaStepper.cpp:355
virtual void parseRelaxationTime()
Parse the relaxation time restriction.
Definition CD_CdrPlasmaStepper.cpp:3700
Real m_dt
Previous time step size.
Definition CD_CdrPlasmaStepper.H:1363
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 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 version interpolates everything to the centroid and runs with ...
Definition CD_CdrPlasmaStepper.cpp:997
virtual Real computeElectrodeCurrent()
Compute the ohmic current on electrodes.
Definition CD_CdrPlasmaStepper.cpp:3968
~CdrPlasmaStepper()
Destructor.
Definition CD_CdrPlasmaStepper.cpp:93
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 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.
Definition CD_CdrPlasmaStepper.cpp:1109
virtual Real getDt()
Get dt.
Definition CD_CdrPlasmaStepper.cpp:4328
CdrPlasmaStepper()
Empty constructor.
Definition CD_CdrPlasmaStepper.cpp:30
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 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.
Definition CD_CdrPlasmaStepper.cpp:931
virtual void solverDump()
All solvers writes plot files. These are not the same as the plot files written by Driver.
Definition CD_CdrPlasmaStepper.cpp:3918
virtual void parseFastRadiativeTransfer()
Parse the "fast rte" method, i.e. how often we solve the Poisson equation.
Definition CD_CdrPlasmaStepper.cpp:3748
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.
Definition CD_CdrPlasmaStepper.cpp:1326
Real m_maxDt
Maximum allowed time step.
Definition CD_CdrPlasmaStepper.H:1343
virtual Real computeDt() override=0
Compute the time step.
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 cal...
Definition CD_CdrPlasmaStepper.cpp:429
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.
Definition CD_CdrPlasmaStepper.cpp:4507
EBAMRCellData m_physicsPlotVars
Storage for physics-observables.
Definition CD_CdrPlasmaStepper.H:1328
int m_upwindFactor
Upwind factor.
Definition CD_CdrPlasmaStepper.H:1393
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.
Definition CD_CdrPlasmaStepper.cpp:4468
virtual void setupPoisson()
Setup the field solver.
Definition CD_CdrPlasmaStepper.cpp:3868
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.
Definition CD_CdrPlasmaStepper.cpp:1450
int m_fastRTE
Solve RTE every m_fastRTE steps instead of every step. 0 or 1 means every step.
Definition CD_CdrPlasmaStepper.H:1383
EBAMRCellData m_currentDensity
Storage for the current.
Definition CD_CdrPlasmaStepper.H:1323
virtual void parseSourceComputation()
Parse how we compute the source terms.
Definition CD_CdrPlasmaStepper.cpp:3780
virtual void setRadiativeTransferSolvers(RefCountedPtr< RtLayout< RtSolver > > &a_rte)
Set the RTE solvers.
Definition CD_CdrPlasmaStepper.cpp:3297
virtual void computeCdrDriftVelocitiesIrregular(Vector< EBCellFAB * > &a_cdrVelocities, 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.
Definition CD_CdrPlasmaStepper.cpp:2056
virtual void parseMaxDt()
Parse the maximum allowed time step.
Definition CD_CdrPlasmaStepper.cpp:3732
virtual void initialData() override
Fill all solvers with initial data.
Definition CD_CdrPlasmaStepper.cpp:3330
std::string m_realm
Realm where the time stepper is registered.
Definition CD_CdrPlasmaStepper.H:1273
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.
Definition CD_CdrPlasmaStepper.cpp:1624
Real m_cfl
CFL number.
Definition CD_CdrPlasmaStepper.H:1348
virtual void computeElectricField(MFAMRCellData &a_electricFieldCell, const MFAMRCellData &a_potential) const
Compute the cell-centered electric field on both phases.
Definition CD_CdrPlasmaStepper.cpp:2912
virtual void computeCdrDiffusion()
Compute diffusion things using whatever is available in the solvers.
Definition CD_CdrPlasmaStepper.cpp:1241
virtual void preRegrid(const int a_lmin, const int a_oldFinestLevel) override
Pre-regrid function – this is the one called by Driver.
Definition CD_CdrPlasmaStepper.cpp:2807
virtual void postInitialize() override
Post-initialize operations to be performed after filling solvers with initialData.
Definition CD_CdrPlasmaStepper.cpp:48
RefCountedPtr< FieldSolver > m_fieldSolver
Poisson solver.
Definition CD_CdrPlasmaStepper.H:1313
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.
Definition CD_CdrPlasmaStepper.cpp:2695
virtual void parseSolverVerbosity()
Parse solver verbosities.
Definition CD_CdrPlasmaStepper.cpp:3672
virtual Real computeDielectricCurrent()
Compute the ohmic current on dielectrics.
Definition CD_CdrPlasmaStepper.cpp:4061
virtual void computeMaxElectricField(Real &a_maximumElectricField, const phase::which_phase a_phase)
Compute the maximum of the electric field.
Definition CD_CdrPlasmaStepper.cpp:3034
RefCountedPtr< CdrPlasmaPhysics > m_physics
Plasma kinetics.
Definition CD_CdrPlasmaStepper.H:1298
virtual void setupSolvers() override
Instantiate solvers.
Definition CD_CdrPlasmaStepper.cpp:3308
virtual bool stationaryRTE()
Check if RTE solvers are stationary.
Definition CD_CdrPlasmaStepper.cpp:102
virtual void resetDielectricCells(EBAMRIVData &a_data) const
Set data defined over dielectric cells to zero.
Definition CD_CdrPlasmaStepper.cpp:3589
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.
Definition CD_CdrPlasmaStepper.cpp:1530
Real m_minDt
Minimum allowed time step.
Definition CD_CdrPlasmaStepper.H:1338
virtual void projectDomain(EBAMRIFData &a_projectedFlux, const EBAMRIFData &a_flux)
Project flux onto domain edges/faces.
Definition CD_CdrPlasmaStepper.cpp:3475
RefCountedPtr< RtLayout< RtSolver > > m_rte
Radiative transfer solvers.
Definition CD_CdrPlasmaStepper.H:1308
virtual void setVoltage(std::function< Real(const Real a_time)> a_voltage)
Set voltage curve.
Definition CD_CdrPlasmaStepper.cpp:3649
SourceTermComputation
Enum for switching between source term computations. 'Interpolated' interpolates the cell-centered da...
Definition CD_CdrPlasmaStepper.H:1248
virtual void postRegrid() override
Perform post-regrid operations.
Definition CD_CdrPlasmaStepper.cpp:70
virtual void setupRadiativeTransfer()
Setup the RTE solvers.
Definition CD_CdrPlasmaStepper.cpp:3884
phase::which_phase m_phase
Plasma phase.
Definition CD_CdrPlasmaStepper.H:1283
virtual void computeSpaceChargeDensity()
Compute the centroid-centered space charge density by using the data inside the CDR solvers.
Definition CD_CdrPlasmaStepper.cpp:113
virtual void computePhysicsPlotVars(EBAMRCellData &a_plotVars) const noexcept
Calculate the user-supplied plot variables.
Definition CD_CdrPlasmaStepper.cpp:4610
virtual void synchronizeSolverTimes(const int a_step, const Real a_time, const Real a_dt) override
Synchronize solver times.
Definition CD_CdrPlasmaStepper.cpp:3950
virtual void registerOperators() override
Register operators to be used for the simulation.
Definition CD_CdrPlasmaStepper.cpp:79
virtual void writeJ(LevelData< EBCellFAB > &a_output, int &a_icomp, const std::string &a_outputRealm, const int a_level) const
Compute and put the current density in output data holder.
Definition CD_CdrPlasmaStepper.cpp:4569
std::function< Real(const Real a_time)> m_voltage
Applied voltage as a function of time. Used to set the Poisson solver boundary condition.
Definition CD_CdrPlasmaStepper.H:1333
virtual void postCheckpointSetup() override
Post-initialize operations to be performed after filling solvers with data read from checkpoint files...
Definition CD_CdrPlasmaStepper.cpp:4783
virtual void registerRealms() override
Register realms to be used for the simulation.
Definition CD_CdrPlasmaStepper.cpp:57
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.
Definition CD_CdrPlasmaStepper.cpp:2734
int m_fastPoisson
Solve Poisson every m_fastPoisson steps instead of every step. 0 or 1 means every step.
Definition CD_CdrPlasmaStepper.H:1388
virtual void computeCdrDriftVelocities()
Compute the CDR drift velocities.
Definition CD_CdrPlasmaStepper.cpp:1837
virtual void parseOptions()=0
Parse TimeStepper class options. Must be implemented by subclasses.
virtual void prePlot() override
Pre-plot hook. Computes current density and physics plot variables for output.
Definition CD_CdrPlasmaStepper.cpp:4600
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.
Definition CD_CdrPlasmaStepper.cpp:1702
virtual void allocateInternals()=0
Allocate internal storage. Must be implemented by subclasses.
Definition CD_CdrPlasmaStepper.cpp:395
virtual void setCdrSolvers(RefCountedPtr< CdrLayout< CdrSolver > > &a_cdr)
Set the CDR layout.
Definition CD_CdrPlasmaStepper.cpp:3276
virtual void regridSolvers(const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel)
Regrid all of our solvers.
Definition CD_CdrPlasmaStepper.cpp:3575
virtual void deallocateSolverInternals()
Deallocate internal solver storages.
Definition CD_CdrPlasmaStepper.cpp:3058
virtual void computeCellConductivity(EBAMRCellData &a_cellConductivity) const
Compute the cell-centered conductivity.
Definition CD_CdrPlasmaStepper.cpp:165
Real m_time
Current simulation time in seconds.
Definition CD_CdrPlasmaStepper.H:1358
virtual void solveRadiativeTransfer(const Real a_dt)
Solve the radiative transfer problem.
Definition CD_CdrPlasmaStepper.cpp:3931
virtual int getNumberOfPlotVariables() const override
Get the number of plot variables for this time stepper.
Definition CD_CdrPlasmaStepper.cpp:4398
virtual void preRegridInternals(const int a_lmin, const int a_oldFinestLevel)
Do a preRegrid operation for internal storage (if needed).
Definition CD_CdrPlasmaStepper.cpp:2825
TimeCode
An enum for encapsulating how time steps were restricted.
Definition CD_CdrPlasmaStepper.H:1257
virtual void setupSemiImplicitPoisson(const Real a_dt)
Set up a semi-implicit Poisson solver.
Definition CD_CdrPlasmaStepper.cpp:281
virtual Vector< std::string > getPlotVariableNames() const override
Get plot variable names.
Definition CD_CdrPlasmaStepper.cpp:4433
virtual void regrid(const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel) override
Regrid method.
Definition CD_CdrPlasmaStepper.cpp:3534
virtual void parseCFL()
Parse the CFL number.
Definition CD_CdrPlasmaStepper.cpp:3684
Class for holding a set of RtSolvers. T must derive from RtSolver.
Definition CD_RtLayout.H:28
Base class for advancing equations.
Definition CD_TimeStepper.H:32
Namespace containing physics models for use with chombo-discharge.
Definition CD_AdvectionDiffusion.H:16
which_phase
Enumeration of supported phases.
Definition CD_MultiFluidIndexSpace.H:38