13#ifndef CD_ITOKMCSTEPPER_H
14#define CD_ITOKMCSTEPPER_H
34#include <CD_NamespaceHeader.H>
64template <
typename I = ItoSolver,
typename C = CdrCTU,
typename R = McPhoto,
typename F = FieldSolverGMG>
68 static_assert(std::is_base_of<ItoSolver, I>::value,
"I must derive from ItoSolver");
69 static_assert(std::is_base_of<CdrSolver, C>::value,
"C must derive from CdrSolver");
70 static_assert(std::is_base_of<McPhoto, R>::value,
"R must derive from McPhoto");
71 static_assert(std::is_base_of<FieldSolver, FieldSolverGMG>::value,
"F must derive from FieldSolver");
82 ItoKMCStepper(RefCountedPtr<ItoKMCPhysics>& a_physics)
noexcept;
139 writeCheckpointHeader(HDF5HeaderData& a_header)
const noexcept override;
148 readCheckpointHeader(HDF5HeaderData& a_header)
noexcept override;
158 writeCheckpointData(HDF5Handle& a_handle,
const int a_lvl)
const noexcept override;
168 readCheckpointData(HDF5Handle& a_handle,
const int a_lvl)
noexcept override;
182 virtual Vector<std::string>
195 const std::string& a_outputRealm,
196 const int a_level)
const noexcept override;
207 virtual Vector<long int>
270 preRegrid(const
int a_lmin, const
int a_oldFinestLevel) noexcept override;
279 regrid(const
int a_lmin, const
int a_oldFinestLevel, const
int a_newFinestLevel) noexcept override;
312 Vector<Vector<Box>>& a_boxes,
313 const std::
string& a_realm,
314 const Vector<DisjointBoxLayout>& a_grids,
316 const
int a_finestLevel) override;
324 setVoltage(const std::function<Real(const Real a_time)>& a_voltage) noexcept;
349 AdvectionDiffusionIto,
350 AdvectionDiffusionCDR,
419 RefCountedPtr<ItoLayout<ItoSolver>>
m_ito;
424 RefCountedPtr<CdrLayout<CdrSolver>>
m_cdr;
429 RefCountedPtr<RtLayout<McPhoto>>
m_rte;
939 const Real a_tolerance)
noexcept;
953 const Real a_tolerance)
noexcept;
966 const Real a_tolerance)
noexcept;
983 const Real a_tolerance)
noexcept;
997 writeData(LevelData<EBCellFAB>& a_output,
999 const EBAMRCellData& a_data,
1000 const std::string a_outputRealm,
1002 const bool a_interpToCentroids,
1003 const bool a_interpGhost)
const noexcept;
1015 const std::string a_outputRealm,
1016 const int a_level)
const noexcept;
1028 std::string& a_maxSolver,
1029 std::string& a_minSolver)
const noexcept;
1041 std::string& a_maxSolver,
1042 std::string& a_minSolver)
const noexcept;
1056 Real& a_minParticles,
1057 Real& a_maxParticles,
1072 Vector<Vector<Box>>& a_boxes,
1073 const std::string a_realm,
1074 const Vector<DisjointBoxLayout>& a_grids,
1076 const int a_finestLevel)
noexcept;
1089 Vector<Vector<Box>>& a_boxes,
1090 const std::string a_realm,
1091 const Vector<DisjointBoxLayout>& a_grids,
1093 const int a_finestLevel)
noexcept;
1100 virtual Vector<RefCountedPtr<ItoSolver>>
1137 const Vector<EBAMRCellData*>& a_itoDensities,
1138 const Vector<EBAMRCellData*>& a_cdrDensities) noexcept;
1268 Vector<EBAMRCellData>& a_cdrMobilities,
1269 const EBAMRCellData& a_electricField,
1270 const Real a_time) noexcept;
1282 Vector<LevelData<EBCellFAB>*>& a_cdrMobilities,
1283 const LevelData<EBCellFAB>& a_E,
1285 const Real a_time) noexcept;
1299 Vector<EBCellFAB*>& a_cdrMobilities,
1300 const EBCellFAB& a_electricField,
1302 const DataIndex a_din,
1303 const Box a_cellBox,
1304 const Real a_time) noexcept;
1324 Vector<EBAMRCellData*>& a_cdrDiffusionCoefficients,
1325 const EBAMRCellData& a_electricField,
1326 const Real a_time) noexcept;
1340 Vector<LevelData<EBCellFAB>*>& a_cdrDiffusionCoefficients,
1341 const LevelData<EBCellFAB>& a_electricField,
1343 const Real a_time) noexcept;
1359 Vector<EBCellFAB*>& a_cdrDiffusionCoefficients,
1360 const EBCellFAB& a_E,
1362 const DataIndex a_din,
1364 const Real a_time) noexcept;
1411 const DataIndex a_din,
1413 const EBISBox& a_ebisbox) noexcept;
1448 const DataIndex a_din,
1450 const EBISBox& a_ebisbox) noexcept;
1484 const DataIndex a_din,
1486 const EBISBox& a_ebisbox) noexcept;
1519 LevelData<EBCellFAB>& a_newPhotonsPerCell,
1520 const LevelData<EBCellFAB>& a_electricField,
1522 const Real a_dt) const noexcept;
1539 EBCellFAB& a_newPhotonsPerCell,
1540 const EBCellFAB& a_electricField,
1542 const DataIndex a_din,
1545 const Real a_dt) const noexcept;
1558 const EBAMRCellData& a_oldParticlesPerCell,
1559 const EBAMRCellData& a_newPhotonsPerCell,
1560 const EBAMRCellData& a_cdrProduction,
1561 const EBAMRCellData& a_electricField) const noexcept;
1575 const LevelData<EBCellFAB>& a_oldParticlesPerCell,
1576 const LevelData<EBCellFAB>& a_newPhotonsPerCell,
1577 const LevelData<EBCellFAB>& a_cdrProduction,
1578 const LevelData<EBCellFAB>& a_electricField,
1579 const
int a_level) const noexcept;
1596 const EBCellFAB& a_oldParticlesPerCell,
1597 const EBCellFAB& a_newPhotonsPerCell,
1598 const EBCellFAB& a_cdrProduction,
1599 const EBCellFAB& a_electricField,
1601 const DataIndex a_din,
1603 const Real a_dx) const noexcept;
1643 reconcileCdrDensities(const LevelData<EBCellFAB>& a_cdrChange, const
int a_level, const Real a_dt) noexcept;
1658 const DataIndex a_din,
1661 const Real a_dt) noexcept;
1718 Vector<EBAMRIVData>& a_cdrFluxes,
1721 Vector<EBAMRIVData>& a_cdrFluxesExtrap,
1723 const EBAMRCellData& a_electricField,
1724 const Real a_dt) noexcept;
1749 Vector<EBAMRIVData*>& a_cdrFluxes,
1750 EBAMRIVData& a_surfaceChargeDensity,
1751 const Real a_dt) noexcept;
1918#include <CD_NamespaceFooter.H>
BoxSorting
Enum for sorting boxes.
Definition CD_BoxSorting.H:22
Declaration of a class which implements CdrMultigrid using MUSCL for advection.
Declaration of a class that holds a set of CdrSolvers (to cut down on typing).
EBRepresentation
Enum for putting some logic into how we think about EBs. This is just a simply supporting class for v...
Definition CD_EBRepresentation.H:23
Declaration of FieldSolverGMG.
Contains declaration of a base electrostatics solver class.
Declaration of the Physics::ItoKMC::ItoKMCPhysics abstract base class.
Implementation of CD_ItoKMCStepper.H.
SpeciesSubset
Enum for selecting a subset of plasma species by mobility/diffusion/charge properties.
Definition CD_ItoKMCStepper.H:43
@ ChargedDiffusive
All charged, diffusive species.
@ AllMobileOrDiffusive
All species that are mobile or diffusive.
@ ChargedMobileAndDiffusive
All charged species that are both mobile and diffusive.
@ AllMobileAndDiffusive
All species that are both mobile and diffusive.
@ AllDiffusive
All species with nonzero diffusion coefficient.
@ AllMobile
All species with nonzero mobility.
@ Charged
All charged species (any mobility/diffusion).
@ ChargedMobile
All charged, mobile species.
@ ChargedMobileOrDiffusive
All charged species that are mobile or diffusive.
Declaration of a class that holds a set of ItoSolvers.
Declaration of solver class for Ito diffusion.
Declaration of a radiative transfer solver which uses Monte Carlo sampling of computational or real p...
Declaration of an AMR-hierarchy container that owns per-patch ParticleSoA leaves.
Namespace containing various particle management utilities.
Declaration of a class that holds a set of RtSolvers.
Declaration of a cut-cell ODE solver.
Declaration of main (abstract) time stepper class.
Base class for Ito diffusion particle models.
Definition CD_ItoSolver.H:41
WhichContainer
Enum class for distinguishing various types of particle containers.
Definition CD_ItoSolver.H:52
Radiative transfer equation solver using Monte-Carlo simulation.
Definition CD_McPhoto.H:37
AMR-hierarchy container of computational particles, stored per patch in Struct-of-Arrays form.
Definition CD_ParticleContainer.H:123
Arena-backed Struct-of-Arrays particle container for a single grid patch.
Definition CD_ParticleSoA.H:655
Abstract TimeStepper for the Ito-KMC-Poisson system of equations.
Definition CD_ItoKMCStepper.H:66
virtual void transferCoveredParticles(const SpeciesSubset a_speciesSubset, const EBRepresentation a_representation, const Real a_tolerance) noexcept
Transfer covered particles (i.e., particles inside the EB) from the ItoSolver bulk container to EB co...
Definition CD_ItoKMCStepperImplem.H:2596
Real m_relaxationTime
The relaxation time eps0/sigma.
Definition CD_ItoKMCStepper.H:639
virtual void setupCdr() noexcept
Set up the CDR solvers.
Definition CD_ItoKMCStepperImplem.H:530
EBAMRCellData m_particleCdrProduction
Per-cell CDR production from the reaction network, on the particle realm.
Definition CD_ItoKMCStepper.H:694
Vector< RefCountedPtr< ParticleContainer< NoPayload > > > m_cdrProducts
Reaction products to be put in the CDR equations, as particles.
Definition CD_ItoKMCStepper.H:686
Real m_maxReducedField
Storage for the maximum field strength that was computed.
Definition CD_ItoKMCStepper.H:536
bool m_abortOnFailure
Flag for aborting the simulation if the Poisson solver fails to converge.
Definition CD_ItoKMCStepper.H:475
virtual void getParticleStatistics(Real &a_avgParticles, Real &a_sigma, Real &a_minParticles, Real &a_maxParticles, int &a_minRank, int &a_maxRank)
Compute some particle statistics.
Definition CD_ItoKMCStepperImplem.H:1487
RefCountedPtr< SurfaceODESolver< 1 > > m_sigmaSolver
Surface charge solver.
Definition CD_ItoKMCStepper.H:439
virtual void computePhysicsPlotVariables(EBAMRCellData &a_physicsPlotVars) noexcept
Compute physics plot variables.
Definition CD_ItoKMCStepperImplem.H:6414
Vector< EBAMRCellData > m_fluidPhiIto
For holding the Ito species densities on the fluid realm.
Definition CD_ItoKMCStepper.H:677
virtual void computePhysicsDt() noexcept
Compute a physics-based maximum time step.
Definition CD_ItoKMCStepperImplem.H:5616
virtual void computeReactiveMeanEnergiesPerCell(EBAMRCellData &a_meanEnergies) noexcept
Compute the mean particle energy in all grid cells.
Definition CD_ItoKMCStepperImplem.H:3879
EBAMRCellData m_conductivityCell
Cell-centered conductivity.
Definition CD_ItoKMCStepper.H:721
EBAMRCellData m_particleOldItoPPC
For holding the previous number of particles per cell for all species.
Definition CD_ItoKMCStepper.H:757
Real m_particleAdvectionDt
The particle advective time step.
Definition CD_ItoKMCStepper.H:619
Real m_minParticleAdvectionCFL
Minimum CFL-like time step for particle advection.
Definition CD_ItoKMCStepper.H:568
Vector< EBAMRIVData > m_cdrFluxes
CDR fluxes for CDR BCs.
Definition CD_ItoKMCStepper.H:460
virtual void parseRuntimeOptions() noexcept override
Parse runtime configurable options.
Definition CD_ItoKMCStepperImplem.H:173
std::string m_name
Time stepper name.
Definition CD_ItoKMCStepper.H:402
phase::which_phase m_plasmaPhase
Phase where we solve for the plasma.
Definition CD_ItoKMCStepper.H:408
bool m_profile
Profile kernels or not.
Definition CD_ItoKMCStepper.H:500
EBAMRCellData m_neutralDensity
Storage for the neutral density.
Definition CD_ItoKMCStepper.H:715
virtual void computeElectricField(EBAMRCellData &a_electricField, const phase::which_phase a_phase) const noexcept
Recompute the electric field onto the specified data holder.
Definition CD_ItoKMCStepperImplem.H:1970
virtual void removeCoveredParticles(const SpeciesSubset a_which, const EBRepresentation a_representation, const Real a_tolerance) noexcept
Remove covered particles (i.e., particles inside the EB)
Definition CD_ItoKMCStepperImplem.H:2477
BoxSorting m_boxSort
Box sorting method when using dual-grid with particle load balancing.
Definition CD_ItoKMCStepper.H:381
Real m_fluidAdvectionDiffusionCFL
CFL-like time step for fluid advection-diffusion.
Definition CD_ItoKMCStepper.H:598
virtual void setupRadiativeTransfer() noexcept
Set up the radiative transfer solver.
Definition CD_ItoKMCStepperImplem.H:549
Real m_physicsDt
The physics-based time step.
Definition CD_ItoKMCStepper.H:644
EBAMRCellData m_electricFieldParticle
Storage for holding the plasma phase electric field on the particle realm.
Definition CD_ItoKMCStepper.H:791
virtual void registerRealms() noexcept override
Register realms used for the simulation.
Definition CD_ItoKMCStepperImplem.H:1634
Real m_particleAdvectionDiffusionDt
The advection-diffusion time step.
Definition CD_ItoKMCStepper.H:629
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) override
Load balance grid boxes for a specified realm.
Definition CD_ItoKMCStepperImplem.H:5945
virtual Vector< RefCountedPtr< ItoSolver > > getLoadBalanceSolvers() const noexcept
Get the solvers used for load balancing.
Definition CD_ItoKMCStepperImplem.H:5889
virtual void computeSpaceChargeDensity() noexcept
Compute the space charge. Calls the other version.
Definition CD_ItoKMCStepperImplem.H:1997
bool m_plotCurrentDensity
Plot current density or not.
Definition CD_ItoKMCStepper.H:520
Real m_maxShrinkDt
Maximum permissible time step shrinkage.
Definition CD_ItoKMCStepper.H:551
virtual void fillNeutralDensity() noexcept
Compute the neutral density on the mesh.
Definition CD_ItoKMCStepperImplem.H:1877
virtual void setVoltage(const std::function< Real(const Real a_time)> &a_voltage) noexcept
Set voltage used for the simulation.
Definition CD_ItoKMCStepperImplem.H:1865
virtual void advanceReactionNetwork(const Real a_dt) noexcept
Chemistry advance over time a_dt.
Definition CD_ItoKMCStepperImplem.H:4020
virtual Real getTime() const noexcept
Get current simulation time.
Definition CD_ItoKMCStepperImplem.H:1985
virtual Vector< long int > getCheckpointLoads(const std::string &a_realm, const int a_level) const override
Get computational loads to be checkpointed.
Definition CD_ItoKMCStepperImplem.H:6171
virtual void computeDummyPhysicsDt() noexcept
Special routine which performs a dummy KMC advance over a zero time step.
Definition CD_ItoKMCStepperImplem.H:5633
void reconcileParticles(const EBAMRCellData &a_newParticlesPerCell, const EBAMRCellData &a_oldParticlesPerCell, const EBAMRCellData &a_newPhotonsPerCell, const EBAMRCellData &a_cdrProduction, const EBAMRCellData &a_electricField) const noexcept
Reconcile particles. At the bottom, this will call the physics interface for particle reconciliation.
Definition CD_ItoKMCStepperImplem.H:4489
virtual int getNumberOfPlotVariables() const noexcept override
Get number of plot variables for the output file.
Definition CD_ItoKMCStepperImplem.H:985
Real m_loadPerCell
The "background" load per cell when using particle load balancing.
Definition CD_ItoKMCStepper.H:558
EBAMRCellData m_physicsPlotVariables
Storage for physics plot variables.
Definition CD_ItoKMCStepper.H:710
virtual void remapParticles(const SpeciesSubset a_speciesSubset) noexcept
Remap a subset of ItoSolver particles.
Definition CD_ItoKMCStepperImplem.H:2720
Real m_physicsDtFactor
Scaling factor applied to the physics-based time step estimate.
Definition CD_ItoKMCStepper.H:649
bool m_redistributeCDR
Flag for redistributing CDR mass when particles cross the EB.
Definition CD_ItoKMCStepper.H:482
virtual void parseVerbosity() noexcept
Parse chattiness.
Definition CD_ItoKMCStepperImplem.H:201
virtual void computeReactiveCdrParticlesPerCell(EBAMRCellData &a_ppc) noexcept
Compute the number of reactive particles per cell for the CDR solvers.
Definition CD_ItoKMCStepperImplem.H:3772
RefCountedPtr< FieldSolver > m_fieldSolver
Field solver.
Definition CD_ItoKMCStepper.H:434
virtual void registerOperators() noexcept override
Register operators used for the simulation.
Definition CD_ItoKMCStepperImplem.H:1648
EBAMRCellData m_particleScratch1
Scratch storage on the particle realm with 1 component.
Definition CD_ItoKMCStepper.H:824
EBAMRCellData m_EdotJ
Storage for E·J (Ohmic heating) on the fluid realm. 1 component.
Definition CD_ItoKMCStepper.H:809
virtual void loadBalanceParticleRealm(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) noexcept
Routine called by loadBalanceBoxes and used for particle-based load balancing.
Definition CD_ItoKMCStepperImplem.H:5967
Vector< RefCountedPtr< ParticleContainer< ItoParticle > > > m_secondaryParticles
List of secondary particles injected through the EB.
Definition CD_ItoKMCStepper.H:446
virtual void averageDiffusionCoefficientsCellToFace() noexcept
Average cell-centered diffusion coefficient to faces.
Definition CD_ItoKMCStepperImplem.H:3582
virtual void parsePlotVariables() noexcept
Parse plot variables.
Definition CD_ItoKMCStepperImplem.H:272
virtual void parseSuperParticles() noexcept
Parse the super-particle merge cadence.
Definition CD_ItoKMCStepperImplem.H:308
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_ItoKMCStepperImplem.H:1143
virtual void computeDensityGradients() noexcept
Compute grad(phi) and phi for both CDR and Ito species and put the result on the fluid realm.
Definition CD_ItoKMCStepperImplem.H:2136
virtual void computeEdotJSource(const Real a_dt) noexcept
Compute the energy source term for the various plasma species.
Definition CD_ItoKMCStepperImplem.H:6220
virtual void parseCdrProducts() noexcept
Parse how the reaction network's CDR production reaches the mesh.
Definition CD_ItoKMCStepperImplem.H:244
EBAMRCellData m_particleItoPPC
For holding the number of physical particles per cell for all Ito species.
Definition CD_ItoKMCStepper.H:739
virtual bool solvePoisson() noexcept
Solve the electrostatic problem.
Definition CD_ItoKMCStepperImplem.H:2253
virtual Real computeQminu() const noexcept
Compute negative charge.
Definition CD_ItoKMCStepperImplem.H:5754
virtual void multiplyCdrVelocitiesByMobilities() noexcept
Multiply CDR solver velocities by mobilities.
Definition CD_ItoKMCStepperImplem.H:3015
virtual void parseRedistributeCDR() noexcept
Parse CDR mass redistribution when assigning reactive products.
Definition CD_ItoKMCStepperImplem.H:230
virtual void computeCurrentDensity(EBAMRCellData &a_J) noexcept
Compute the current density.
Definition CD_ItoKMCStepperImplem.H:2199
TimeCode
An enum for encapsulating how time steps were restricted.
Definition CD_ItoKMCStepper.H:346
Real m_toleranceEB
Accepted tolerance (relative to dx) for EB intersection.
Definition CD_ItoKMCStepper.H:563
virtual void writeNumberOfParticlesPerPatch(LevelData< EBCellFAB > &a_output, int &a_icomp, const std::string a_outputRealm, const int a_level) const noexcept
Write number of particles per patch to output holder.
Definition CD_ItoKMCStepperImplem.H:1210
EBAMRCellData m_fluidScratchD
Scratch storage on the fluid realm with SpaceDim components.
Definition CD_ItoKMCStepper.H:819
bool m_loadBalanceFluid
Load balance fluid realm or not.
Definition CD_ItoKMCStepper.H:510
virtual void parseTimeStepRestrictions() noexcept
Parse time step restrictions.
Definition CD_ItoKMCStepperImplem.H:401
EBAMRIVData m_particleScratchEB
Scratch storage for EB-only data on the particle realm. One component.
Definition CD_ItoKMCStepper.H:839
virtual void fillSecondaryEmissionEB(const Real a_dt) noexcept
Resolve particle injection at EBs.
Definition CD_ItoKMCStepperImplem.H:5157
EBAMRCellData m_particleYPC
For holding the number of generated photons per cell.
Definition CD_ItoKMCStepper.H:745
virtual void initialSigma() noexcept
Fill surface charge solver with initial data taken from the physics interface.
Definition CD_ItoKMCStepperImplem.H:800
virtual void intersectParticles(const SpeciesSubset a_speciesSubset, const bool a_delete, const std::function< void(ParticleSoA< ItoParticle > &, std::size_t)> a_nonDeletionModifier=[](ParticleSoA< ItoParticle > &, std::size_t) -> void { return;}) noexcept
Intersect a subset of the particles with the domain and embedded boundary.
Definition CD_ItoKMCStepperImplem.H:2292
ItoKMCStepper() noexcept
Default constructor. Sets default options.
Definition CD_ItoKMCStepperImplem.H:98
EBAMRCellData m_currentDensity
Storage for current density.
Definition CD_ItoKMCStepper.H:705
virtual void printStepReport() noexcept override
Print a step report. Used by Driver for user monitoring of simulation.
Definition CD_ItoKMCStepperImplem.H:1275
virtual void depositParticles(const SpeciesSubset a_speciesSubset) noexcept
Deposit a subset of the ItoSolver particles on the mesh.
Definition CD_ItoKMCStepperImplem.H:2835
Vector< EBAMRCellData > m_cdrMobilities
For holding the mobilities for the CDR species.
Definition CD_ItoKMCStepper.H:660
virtual void setupSigma() noexcept
Set up the surface charge solver.
Definition CD_ItoKMCStepperImplem.H:586
Vector< EBAMRCellData > m_loadBalancePPC
For holding the number of computational particles per cell when load balancing.
Definition CD_ItoKMCStepper.H:654
CdrProductInjection m_cdrProductInjection
How the reaction network's CDR production is put onto the mesh.
Definition CD_ItoKMCStepper.H:490
virtual void setupSolvers() noexcept override
Set up solvers.
Definition CD_ItoKMCStepperImplem.H:495
EBAMRCellData m_fluidPPC
For holding the number of particles per cell for all species.
Definition CD_ItoKMCStepper.H:775
virtual void parseOptions() noexcept
Parse options.
Definition CD_ItoKMCStepperImplem.H:152
virtual void advancePhotons(const Real a_dt) noexcept
Photon advancement routine.
Definition CD_ItoKMCStepperImplem.H:5810
Real m_minDt
Minimum permitted time step.
Definition CD_ItoKMCStepper.H:609
int m_mergeInterval
How often to merge superparticles.
Definition CD_ItoKMCStepper.H:531
virtual void preRegrid(const int a_lmin, const int a_oldFinestLevel) noexcept override
Perform pre-regrid operations - storing relevant data from the old grids.
Definition CD_ItoKMCStepperImplem.H:1700
virtual void depositCdrProducts(EBAMRCellData &a_cdrChange) noexcept
Deposit the CDR reaction products in m_cdrProducts and add the result to a per-cell change.
Definition CD_ItoKMCStepperImplem.H:4165
EBAMRIVData m_fluidScratchEB
Scratch storage for EB-only data on the fluid realm. One component.
Definition CD_ItoKMCStepper.H:834
virtual void parseDualGrid() noexcept
Parse dual or single realm calculations.
Definition CD_ItoKMCStepperImplem.H:325
Vector< EBAMRCellData > m_fluidScratchIto
Per-Ito-species scratch storage on the fluid realm, one component each.
Definition CD_ItoKMCStepper.H:849
virtual void reconcilePhotoionization() noexcept
Reconcile the results from photoionization reactions.
Definition CD_ItoKMCStepperImplem.H:4895
EBAMRCellData m_fluidScratch1
Scratch storage on the fluid realm having 1 component.
Definition CD_ItoKMCStepper.H:814
virtual void loadBalanceFluidRealm(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) noexcept
Routine called by loadBalanceBoxes and used for particle-based load balancing.
Definition CD_ItoKMCStepperImplem.H:6120
EBAMRCellData m_fluidOldCdrPPC
For holding the previous number of physical particles per cell for all CDR species.
Definition CD_ItoKMCStepper.H:769
EBAMRCellData m_kmcDt
Storage for the non-critical time step computed by ItoKMCPhysics.
Definition CD_ItoKMCStepper.H:798
virtual Vector< std::string > getPlotVariableNames() const noexcept override
Get plot variable names.
Definition CD_ItoKMCStepperImplem.H:1038
std::string m_fluidRealm
Realm used for the fluid part (i.e., electrostatic) part of the simulation.
Definition CD_ItoKMCStepper.H:392
virtual void sortPhotonsByCell(const McPhoto::WhichContainer a_which) noexcept
Sort photons by cells.
Definition CD_ItoKMCStepperImplem.H:5861
virtual Real computeQplus() const noexcept
Compute positive charge.
Definition CD_ItoKMCStepperImplem.H:5710
virtual void parseLoadBalance() noexcept
Parse load balancing.
Definition CD_ItoKMCStepperImplem.H:348
virtual void computeDriftVelocities() noexcept
Compute ItoSolver velocities.
Definition CD_ItoKMCStepperImplem.H:3041
EBAMRCellData m_electricFieldFluid
Storage for holding the plasma phase electric field on the fluid realm.
Definition CD_ItoKMCStepper.H:786
Real m_prevDt
Previous time step.
Definition CD_ItoKMCStepper.H:541
std::string m_particleRealm
Realm used for the particle part of the simulation.
Definition CD_ItoKMCStepper.H:397
EBAMRCellData m_particleScratchD
Scratch storage on the particle realm with SpaceDim components.
Definition CD_ItoKMCStepper.H:829
Real m_fluidAdvectionDiffusionDt
The advection-diffusion time step for the CDR equations.
Definition CD_ItoKMCStepper.H:634
Vector< EBAMRCellData > m_fluidGradPhiCDR
For holding the gradient of all CDR species densities.
Definition CD_ItoKMCStepper.H:666
virtual void setupPoisson() noexcept
Set up the electrostatic field solver.
Definition CD_ItoKMCStepperImplem.H:569
Real m_relaxTimeFactor
Factor proportional to the dielectric relaxation time dtRelax = eps0/sigma.
Definition CD_ItoKMCStepper.H:604
RefCountedPtr< CdrLayout< CdrSolver > > m_cdr
CDR solvers.
Definition CD_ItoKMCStepper.H:424
virtual void setupIto() noexcept
Set up the Ito particle solvers.
Definition CD_ItoKMCStepperImplem.H:511
virtual Real computeQsurf() const noexcept
Compute surface charge.
Definition CD_ItoKMCStepperImplem.H:5798
virtual Real computeDt() override
Compute a time step used for the advance method.
Definition CD_ItoKMCStepperImplem.H:1519
virtual void synchronizeSolverTimes(const int a_step, const Real a_time, const Real a_dt) noexcept override
Synchronize solver times for all the solvers.
Definition CD_ItoKMCStepperImplem.H:1256
virtual Real computeTotalCharge() const noexcept
Compute total charge.
Definition CD_ItoKMCStepperImplem.H:5690
virtual void resolveSecondaryEmissionEB(const Real a_dt) noexcept
Resolve secondary emission at the EB.
Definition CD_ItoKMCStepperImplem.H:5461
Real m_maxDt
Maximum permitted time step.
Definition CD_ItoKMCStepper.H:614
TimeCode m_timeCode
Time code for understanding how the time step was restricted.
Definition CD_ItoKMCStepper.H:386
virtual void regrid(const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel) noexcept override
Regrid methods – puts all data on the new mesh.
Definition CD_ItoKMCStepperImplem.H:1810
virtual void coarsenCDRSolvers(const bool a_interpGhosts) noexcept
Coarsen data for CDR solvers.
Definition CD_ItoKMCStepperImplem.H:5096
Real m_minParticleAdvectionDiffusionCFL
Maximum CFL-like time step for particle advection-diffusion.
Definition CD_ItoKMCStepper.H:588
EBAMRCellData m_fluidCdrPPC
For holding the number of physical particles per cell for all CDR species.
Definition CD_ItoKMCStepper.H:763
EBAMRFluxData m_conductivityFace
Face-centered conductivity.
Definition CD_ItoKMCStepper.H:727
virtual void computeDiffusionCoefficients() noexcept
Compute mesh-based diffusion coefficients for LFA coupling.
Definition CD_ItoKMCStepperImplem.H:3299
virtual void allocateInternals() noexcept
Allocate "internal" storage.
Definition CD_ItoKMCStepperImplem.H:621
virtual bool loadBalanceThisRealm(const std::string &a_realm) const override
Load balancing query for a specified realm. If this returns true for a_realm, load balancing routines...
Definition CD_ItoKMCStepperImplem.H:5924
bool m_plotParticlesPerPatch
Plot number of particles per patch or not.
Definition CD_ItoKMCStepper.H:525
virtual Real computeMaxReducedElectricField(const phase::which_phase a_phase) const noexcept
Compute the maximum electric field (norm)
Definition CD_ItoKMCStepperImplem.H:1934
EBAMRIVData m_conductivityEB
EB-centered conductivity.
Definition CD_ItoKMCStepper.H:733
Vector< EBAMRIVData > m_cdrFluxesExtrap
Extrapolated CDR fluxes.
Definition CD_ItoKMCStepper.H:465
Real m_maxParticleAdvectionCFL
Maximum CFL-like time step for particle advection.
Definition CD_ItoKMCStepper.H:573
virtual void setCdrVelocityFunctions() noexcept
Set the Cdr velocities to be sgn(charge) * E.
Definition CD_ItoKMCStepperImplem.H:2981
virtual void postRegrid() noexcept override
Perform post-regrid operations.
Definition CD_ItoKMCStepperImplem.H:1852
virtual Real computeRelaxationTime() noexcept
Compute the dielectric relaxation time.
Definition CD_ItoKMCStepperImplem.H:2218
virtual void parseParametersEB() noexcept
Parse parameters related to how we treat particle-EB interaction.
Definition CD_ItoKMCStepperImplem.H:479
virtual Real advance(const Real a_dt) override=0
Advancement method. Needs to be implemented by subclasses.
virtual void initialData() noexcept override
Fill solvers with initial data.
Definition CD_ItoKMCStepperImplem.H:763
Real m_maxParticleDiffusionCFL
Maximum CFL-like time step for particle diffusion.
Definition CD_ItoKMCStepper.H:583
virtual void postPlot() noexcept override
Perform post-plot operations.
Definition CD_ItoKMCStepperImplem.H:1688
virtual ~ItoKMCStepper() noexcept
Destructor.
Definition CD_ItoKMCStepperImplem.H:145
RefCountedPtr< ItoKMCPhysics > m_physics
Implementation of ItoKMCPhysics.
Definition CD_ItoKMCStepper.H:414
virtual void getMaxMinRelativeItoDensity(Real &a_maxDensity, Real &a_minDensity, std::string &a_maxSolver, std::string &a_minSolver) const noexcept
Get maximum density of the Ito species (only for charged species)
Definition CD_ItoKMCStepperImplem.H:1392
virtual void computeReactiveItoParticlesPerCell(EBAMRCellData &a_ppc) noexcept
Compute the number of reactive particles per cell.
Definition CD_ItoKMCStepperImplem.H:3648
virtual bool needSecondaryEmissionEB() const noexcept
Whether anything can be emitted from the EB this step, answered globally.
Definition CD_ItoKMCStepperImplem.H:5126
bool m_dualGrid
Using dual grid or not.
Definition CD_ItoKMCStepper.H:495
EBAMRCellData m_fluidYPC
For holding the number of generated photons per cell.
Definition CD_ItoKMCStepper.H:781
virtual void allocate() noexcept override
Allocate storage for solvers.
Definition CD_ItoKMCStepperImplem.H:603
RefCountedPtr< RtLayout< McPhoto > > m_rte
Radiative transfer solvers.
Definition CD_ItoKMCStepper.H:429
bool m_plotConductivity
Plot conductivity or not.
Definition CD_ItoKMCStepper.H:515
virtual void parseExitOnFailure() noexcept
Parse exit on failure.
Definition CD_ItoKMCStepperImplem.H:216
RefCountedPtr< ItoLayout< ItoSolver > > m_ito
Ito solvers.
Definition CD_ItoKMCStepper.H:419
Vector< int > m_loadBalanceIndices
Solver indices used when load-balancing the particle solvers.
Definition CD_ItoKMCStepper.H:699
EBAMRCellData m_particleEPS
For holding the mean particle energy.
Definition CD_ItoKMCStepper.H:751
std::function< Real(const Real a_time)> m_voltage
Voltage curve on the electrodes used in the simulation.
Definition CD_ItoKMCStepper.H:470
virtual void computeConductivityCell(EBAMRCellData &a_conductivity) noexcept
Compute the cell-centered conductiivty.
Definition CD_ItoKMCStepperImplem.H:2068
Real m_minParticleDiffusionCFL
Minimum CFL-like time step for particle diffusion.
Definition CD_ItoKMCStepper.H:578
virtual void postCheckpointPoisson() noexcept
Do some post-checkpoint operations for the electrostatic part.
Definition CD_ItoKMCStepperImplem.H:868
virtual void reconcileCdrDensities(const EBAMRCellData &a_cdrChange, const Real a_dt) noexcept
Reconcile the CDR densities after the reaction network.
Definition CD_ItoKMCStepperImplem.H:4953
virtual void prePlot() noexcept override
Perform pre-plot operations.
Definition CD_ItoKMCStepperImplem.H:1667
virtual void postInitialize() noexcept override
Post-initialization operations. Default does nothing.
Definition CD_ItoKMCStepperImplem.H:753
CdrProductInjection
How the reaction network's CDR production is put onto the mesh.
Definition CD_ItoKMCStepper.H:362
@ Particle
Emit the production as particles and deposit it with the Ito solvers' deposition.
@ Mesh
Add the production directly into the cell that produced it.
Real m_maxParticleAdvectionDiffusionCFL
Maximum CFL-like time step for particle advection-diffusion.
Definition CD_ItoKMCStepper.H:593
virtual void postCheckpointSetup() noexcept override
Perform post-checkpoint operations.
Definition CD_ItoKMCStepperImplem.H:849
Vector< RefCountedPtr< ParticleContainer< Photon > > > m_secondaryPhotons
List of secondary photons injected through the EB.
Definition CD_ItoKMCStepper.H:453
Real m_particleDiffusionDt
The particle diffusive time step.
Definition CD_ItoKMCStepper.H:624
virtual void getMaxMinRelativeCDRDensity(Real &a_maxDensity, Real &a_minDensity, std::string &a_maxSolver, std::string &a_minSolver) const noexcept
Get maximum density of the CDR species (only for charged species)
Definition CD_ItoKMCStepperImplem.H:1440
Vector< EBAMRCellData > m_energySources
Storage for holding the energy sources for each species.
Definition CD_ItoKMCStepper.H:804
virtual void writePlotData(LevelData< EBCellFAB > &a_output, int &a_icomp, const std::string &a_outputRealm, const int a_level) const noexcept override
Write plot data to output holder.
Definition CD_ItoKMCStepperImplem.H:1089
Real m_maxGrowthDt
Maximum permissible time step growth.
Definition CD_ItoKMCStepper.H:546
virtual void computeMobilities() noexcept
Compute mesh-based mobilities for LFA coupling.
Definition CD_ItoKMCStepperImplem.H:3066
virtual void setItoVelocityFunctions() noexcept
Set the Ito velocity functions. This is sgn(charge) * E.
Definition CD_ItoKMCStepperImplem.H:2950
Vector< EBAMRCellData > m_fluidGradPhiIto
For holding the gradient of all Ito species densities.
Definition CD_ItoKMCStepper.H:672
bool m_loadBalanceParticles
Load balance particle realm or not.
Definition CD_ItoKMCStepper.H:505
virtual void sortPhotonsByPatch(const McPhoto::WhichContainer a_which) noexcept
Sort photons by patch.
Definition CD_ItoKMCStepperImplem.H:5875
virtual void getPhysicalParticlesPerCell(EBAMRCellData &a_ppc) const noexcept
Get the physical number of particles per cell.
Definition CD_ItoKMCStepperImplem.H:3626
Base class for advancing equations.
Definition CD_TimeStepper.H:32
Namespace containing physics models for use with chombo-discharge.
Definition CD_AdvectionDiffusion.H:16
Phase names namespace.
Definition CD_MultiFluidIndexSpace.H:28
which_phase
Enumeration of supported phases.
Definition CD_MultiFluidIndexSpace.H:38
SoA payload for ItoSolver particles, i.e. drifting Brownian walkers.
Definition CD_ItoParticle.H:31
SoA payload for Monte Carlo radiative-transfer photons.
Definition CD_Photon.H:29