chombo-discharge
|
Base time stepper class that advances the Ito-KMC-Poisson system of equations. If you want a different underlying solver, change the template arguments. More...
#include <CD_ItoKMCStepper.H>
Public Member Functions | |
ItoKMCStepper () noexcept | |
Default constructor. Sets default options. | |
ItoKMCStepper (RefCountedPtr< ItoKMCPhysics > &a_physics) noexcept | |
Full constructor. Calls the other constructor. More... | |
virtual | ~ItoKMCStepper () noexcept |
Destructor. | |
virtual void | parseOptions () noexcept |
Parse options. | |
virtual void | parseRuntimeOptions () noexcept override |
Parse runtime configurable options. | |
virtual void | allocate () noexcept override |
Allocate storage for solvers. | |
virtual void | setupSolvers () noexcept override |
Set up solvers. | |
virtual void | initialData () noexcept override |
Fill solvers with initial data. | |
virtual void | postCheckpointSetup () noexcept override |
Perform post-checkpoint operations. More... | |
virtual void | postInitialize () noexcept override |
Post-initialization operations. Default does nothing. | |
virtual int | getNumberOfPlotVariables () const noexcept override |
Get number of plot variables for the output file. | |
virtual Vector< std::string > | getPlotVariableNames () const noexcept 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 noexcept override |
Write plot data to output holder. More... | |
virtual Vector< long int > | getCheckpointLoads (const std::string a_realm, const int a_level) const override |
Get computational loads to be checkpointed. More... | |
virtual Real | advance (const Real a_dt) override=0 |
Advancement method. Needs to be implemented by subclasses. More... | |
virtual Real | computeDt () override |
Compute a time step used for the advance method. | |
virtual void | synchronizeSolverTimes (const int a_step, const Real a_time, const Real a_dt) noexcept override |
Synchronize solver times for all the solvers. More... | |
virtual void | printStepReport () noexcept override |
Print a step report. Used by Driver for user monitoring of simulation. | |
virtual void | registerRealms () noexcept override |
Register realms used for the simulation. | |
virtual void | registerOperators () noexcept override |
Register operators used for the simulation. | |
virtual void | prePlot () noexcept override |
Perform pre-plot operations. | |
virtual void | postPlot () noexcept override |
Perform post-plot operations. | |
virtual void | preRegrid (const int a_lmin, const int a_oldFinestLevel) noexcept override |
Perform pre-regrid operations - storing relevant data from the old grids. More... | |
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. More... | |
virtual void | postRegrid () noexcept override |
Perform post-regrid operations. | |
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 will be called during regrids for the input realm. 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) override |
Load balance grid boxes for a specified realm. More... | |
virtual void | setVoltage (const std::function< Real(const Real a_time)> &a_voltage) noexcept |
Set voltage used for the simulation. More... | |
virtual Real | getTime () const noexcept |
Get current simulation time. More... | |
virtual void | computeElectricField (EBAMRCellData &a_electricField, const phase::which_phase a_phase) const noexcept |
Recompute the electric field onto the specified data holder. More... | |
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 bool | needToRegrid () |
Fuction which can have Driver do regrids at arbitrary points in the simulation. More... | |
Protected Types | |
enum class | TimeCode { AdvectionIto , DiffusionIto , AdvectionDiffusionIto , AdvectionDiffusionCDR , RelaxationTime , Hardcap , Physics } |
An enum for encapsulating how time steps were restricted. | |
Protected Member Functions | |
virtual void | allocateInternals () noexcept |
Allocate "internal" storage. | |
virtual void | setupIto () noexcept |
Set up the Ito particle solvers. | |
virtual void | setupCdr () noexcept |
Set up the CDR solvers. | |
virtual void | setupRadiativeTransfer () noexcept |
Set up the radiative transfer solver. | |
virtual void | setupPoisson () noexcept |
Set up the electrostatic field solver. | |
virtual void | setupSigma () noexcept |
Set up the surface charge solver. | |
virtual void | intersectParticles (const SpeciesSubset a_speciesSubset, const bool a_delete, const std::function< void(ItoParticle &)> a_nonDeletionModifier=[](ItoParticle &) -> void { return;}) noexcept |
Intersect a subset of the particles with the domain and embedded boundary. More... | |
virtual void | intersectParticles (const SpeciesSubset a_speciesSubset, const ItoSolver::WhichContainer a_containerBulk, const ItoSolver::WhichContainer a_containerEB, const ItoSolver::WhichContainer a_containerDomain, const bool a_delete, const std::function< void(ItoParticle &)> a_nonDeletionModifier=[](ItoParticle &) -> void { return;}) noexcept |
Intersect a subset of the particles with the domain and embedded boundary. More... | |
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) More... | |
virtual void | removeCoveredParticles (const SpeciesSubset a_which, const ItoSolver::WhichContainer a_container, const EBRepresentation a_representation, const Real a_tolerance) noexcept |
Remove covered particles (i.e., particles inside the EB) More... | |
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 container. More... | |
virtual void | transferCoveredParticles (const SpeciesSubset a_speciesSubset, const ItoSolver::WhichContainer a_containerFrom, const ItoSolver::WhichContainer a_containerTo, 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 container. More... | |
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... | |
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. More... | |
virtual void | getMaxMinItoDensity (Real &a_maxDensity, Real &a_minDensity, std::string &a_maxSolver, std::string &a_minSolver) const noexcept |
Get maximum density of the Ito species. More... | |
virtual void | getMaxMinCDRDensity (Real &a_maxDensity, Real &a_minDensity, std::string &a_maxSolver, std::string &a_minSolver) const noexcept |
Get maximum density of the CDr species. More... | |
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. More... | |
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. More... | |
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. More... | |
virtual Vector< RefCountedPtr< ItoSolver > > | getLoadBalanceSolvers () const noexcept |
Get the solvers used for load balancing. More... | |
virtual Real | computeMaxElectricField (const phase::which_phase a_phase) const noexcept |
Compute the maximum electric field (norm) More... | |
virtual void | computeSpaceChargeDensity () noexcept |
Compute the space charge. Calls the other version. More... | |
virtual void | computeSpaceChargeDensity (MFAMRCellData &a_rho, const Vector< EBAMRCellData * > &a_itoDensities, const Vector< EBAMRCellData * > &a_cdrDensities) noexcept |
Compute the space charge density. More... | |
virtual void | computeConductivityCell (EBAMRCellData &a_conductivity) noexcept |
Compute the cell-centered conductiivty. More... | |
virtual void | computeConductivityCell (EBAMRCellData &a_conductivity, const Vector< ParticleContainer< ItoParticle > * > &a_particles) noexcept |
Compute the cell-centered conductiivty. More... | |
virtual void | computeDensityGradients () noexcept |
Compute grad(phi) and phi for both CDR and Ito species and put the result on the fluid realm. More... | |
virtual void | computeCurrentDensity (EBAMRCellData &a_J) noexcept |
Compute the current density. More... | |
virtual Real | computeRelaxationTime () noexcept |
Compute the dielectric relaxation time. | |
virtual bool | solvePoisson () noexcept |
Solve the electrostatic problem. More... | |
virtual void | depositParticles (const SpeciesSubset a_speciesSubset) noexcept |
Deposit a subset of the ItoSolver particles on the mesh. More... | |
virtual void | depositParticles (const SpeciesSubset a_speciesSubset, const ItoSolver::WhichContainer a_container) noexcept |
Deposit a subset of the ItoSolver particles on the mesh. More... | |
virtual void | remapParticles (const SpeciesSubset a_speciesSubset) noexcept |
Remap a subset of ItoSolver particles. More... | |
virtual void | remapParticles (const SpeciesSubset a_speciesSubset, const ItoSolver::WhichContainer a_container) noexcept |
Remap a subset of ItoSolver particles. More... | |
virtual void | computeDriftVelocities () noexcept |
Compute ItoSolver velocities. More... | |
virtual void | setItoVelocityFunctions () noexcept |
Set the Ito velocity functions. This is sgn(charge) * E. More... | |
virtual void | setCdrVelocityFunctions () noexcept |
Set the Cdr velocities to be sgn(charge) * E. More... | |
virtual void | multiplyCdrVelocitiesByMobilities () noexcept |
Multiply CDR solver velocities by mobilities. | |
virtual void | computeMobilities () noexcept |
Compute mesh-based mobilities for LFA coupling. More... | |
virtual void | computeMobilities (Vector< EBAMRCellData * > &a_itoMobilities, Vector< EBAMRCellData > &a_cdrMobilities, const EBAMRCellData &a_electricField, const Real a_time) noexcept |
Compute mesh-based mobilities for LFA coupling. More... | |
virtual void | computeMobilities (Vector< LevelData< EBCellFAB > * > &a_itoMobilities, Vector< LevelData< EBCellFAB > * > &a_cdrMobilities, const LevelData< EBCellFAB > &a_E, const int a_level, const Real a_time) noexcept |
Level-routine when computing mesh-based mobilities for LFA coupling. More... | |
virtual void | computeMobilities (Vector< EBCellFAB * > &a_itoMobilities, Vector< EBCellFAB * > &a_cdrMobilities, const EBCellFAB &a_electricField, const int a_level, const DataIndex a_dit, const Box a_cellBox, const Real a_time) noexcept |
Patch-routine when computing mesh-based mobilities for LFA coupling. More... | |
virtual void | computeDiffusionCoefficients () noexcept |
Compute mesh-based diffusion coefficients for LFA coupling. More... | |
virtual void | computeDiffusionCoefficients (Vector< EBAMRCellData * > &a_itoDiffusionCoefficients, Vector< EBAMRCellData * > &a_cdrDiffusionCoefficients, const EBAMRCellData &a_electricField, const Real a_time) noexcept |
Compute mesh-based diffusion coefficients for LFA coupling. More... | |
virtual void | computeDiffusionCoefficients (Vector< LevelData< EBCellFAB > * > &a_itoDiffusionCoefficients, Vector< LevelData< EBCellFAB > * > &a_cdrDiffusionCoefficients, const LevelData< EBCellFAB > &a_electricField, const int a_level, const Real a_time) noexcept |
Level-routine when computing mesh-based mobilities for LFA coupling. More... | |
virtual void | computeDiffusionCoefficients (Vector< EBCellFAB * > &a_itoDiffusionCoefficients, Vector< EBCellFAB * > &a_cdrDiffusionCoefficients, const EBCellFAB &a_E, const int a_level, const DataIndex a_dit, const Box a_box, const Real a_time) noexcept |
Patch-routine when computing mesh-based diffusion coefficients in the LFA coupling. More... | |
virtual void | averageDiffusionCoefficientsCellToFace () noexcept |
Average cell-centered diffusion coefficient to faces. | |
virtual void | getPhysicalParticlesPerCell (EBAMRCellData &a_ppc) const noexcept |
Get the physical number of particles per cell. More... | |
virtual void | computeReactiveItoParticlesPerCell (EBAMRCellData &a_ppc) noexcept |
Compute the number of reactive particles per cell. More... | |
virtual void | computeReactiveItoParticlesPerCell (LevelData< EBCellFAB > &a_ppc, const int a_level) noexcept |
Compute the number of reactive particles per cell. More... | |
virtual void | computeReactiveItoParticlesPerCell (EBCellFAB &a_ppc, const int a_level, const DataIndex a_dit, const Box a_box, const EBISBox &a_ebisbox) noexcept |
Compute the number of reactive particles per cell. More... | |
virtual void | computeReactiveCdrParticlesPerCell (EBAMRCellData &a_ppc) noexcept |
Compute the number of reactive particles per cell for the CDR solvers. More... | |
virtual void | computeReactiveCdrParticlesPerCell (LevelData< EBCellFAB > &a_ppc, const int a_level) noexcept |
Compute the number of reactive particles per cell for the CDR solvers. More... | |
virtual void | computeReactiveCdrParticlesPerCell (EBCellFAB &a_ppc, const int a_level, const DataIndex a_dit, const Box a_box, const EBISBox &a_ebisbox) noexcept |
Compute the number of reactive particles per cell for the CDR solvers. More... | |
virtual void | computeReactiveMeanEnergiesPerCell (EBAMRCellData &a_meanEnergies) noexcept |
Compute the mean particle energy in all grid cells. More... | |
virtual void | computeReactiveMeanEnergiesPerCell (LevelData< EBCellFAB > &a_meanEnergies, const int a_level) noexcept |
Compute the mean particle energy in all grid cells. Level version. More... | |
virtual void | computeReactiveMeanEnergiesPerCell (EBCellFAB &a_meanEnergies, const int a_level, const DataIndex a_dit, const Box a_box, const EBISBox &a_ebisbox) noexcept |
Compute the mean particle energy in all grid cells. Patch version. More... | |
virtual void | advanceReactionNetwork (const Real a_dt) noexcept |
Chemistry advance over time a_dt. More... | |
virtual void | advanceReactionNetwork (const EBAMRCellData &a_E, const Real a_dt) noexcept |
Chemistry advance over time a_dt. AMR version. More... | |
void | advanceReactionNetwork (LevelData< EBCellFAB > &a_particlesPerCell, LevelData< EBCellFAB > &a_newPhotonsPerCell, const LevelData< EBCellFAB > &a_electricField, const int a_level, const Real a_dt) const noexcept |
Chemistry advance over time a_dt. Level version. More... | |
void | advanceReactionNetwork (EBCellFAB &a_particlesPerCell, EBCellFAB &a_newPhotonsPerCell, const EBCellFAB &a_electricField, const int a_level, const DataIndex a_dit, const Box a_box, const Real a_dx, const Real a_dt) const noexcept |
Chemistry advance over time a_dt. Patch version. More... | |
void | reconcileParticles (const EBAMRCellData &a_newParticlesPerCell, const EBAMRCellData &a_oldParticlesPerCell, const EBAMRCellData &a_newPhotonsPerCell) const noexcept |
Reconcile particles. At the bottom, this will call the physics interface for particle reconciliation. More... | |
void | reconcileParticles (const LevelData< EBCellFAB > &a_newParticlesPerCell, const LevelData< EBCellFAB > &a_oldParticlesPerCell, const LevelData< EBCellFAB > &a_newPhotonsPerCell, const int a_level) const noexcept |
Reconcile particles. At the bottom, this will call the physics interface for particle reconciliation. More... | |
void | reconcileParticles (const EBCellFAB &a_newParticlesPerCell, const EBCellFAB &a_oldParticlesPerCell, const EBCellFAB &a_newPhotonsPerCell, const int a_level, const DataIndex a_dit, const Box a_box, const Real a_dx) const noexcept |
Reconcile particles. At the bottom, this will call the physics interface for particle reconciliation. More... | |
virtual void | reconcilePhotoionization () noexcept |
Reconcile the results from photoionization reactions. More... | |
virtual void | reconcileCdrDensities (const EBAMRCellData &a_newParticlesPerCell, const EBAMRCellData &a_oldParticlesPerCell, const Real a_dt) noexcept |
Reconcile the CDR densities after the reaction network. More... | |
virtual void | reconcileCdrDensities (const LevelData< EBCellFAB > &a_newParticlesPerCell, const LevelData< EBCellFAB > &a_oldParticlesPerCell, const int a_level, const Real a_dt) noexcept |
Reconcile the CDR densities after the reaction network. More... | |
virtual void | reconcileCdrDensities (const EBCellFAB &a_newParticlesPerCell, const EBCellFAB &a_oldParticlesPerCell, const int a_level, const DataIndex a_dit, const Box a_box, const Real a_dx, const Real a_dt) noexcept |
Reconcile the CDR densities after the reaction network. More... | |
virtual void | coarsenCDRSolvers () noexcept |
Coarsen data for CDR solvers. | |
virtual void | fillSecondaryEmissionEB (const Real a_dt) noexcept |
Resolve particle injection at EBs. More... | |
virtual void | fillSecondaryEmissionEB (Vector< ParticleContainer< ItoParticle >> &a_secondaryParticles, Vector< EBAMRIVData > &a_cdrFluxes, Vector< ParticleContainer< Photon >> &a_secondaryPhotons, Vector< ParticleContainer< ItoParticle > * > &a_primaryParticles, Vector< EBAMRIVData > &a_cdrFluxesExtrap, Vector< ParticleContainer< Photon > * > &a_primaryPhotons, const EBAMRCellData &a_electricField, const Real a_dt) noexcept |
Compute secondary emission at the EB. More... | |
virtual void | resolveSecondaryEmissionEB (const Real a_dt) noexcept |
Resolve secondary emission at the EB. More... | |
virtual void | resolveSecondaryEmissionEB (Vector< ParticleContainer< ItoParticle > * > &a_secondaryParticles, Vector< ParticleContainer< ItoParticle > * > &a_primaryParticles, Vector< EBAMRIVData * > &a_cdrFluxes, EBAMRIVData &a_surfaceChargeDensity, const Real a_dt) noexcept |
Resolve secondary emission at the EB. More... | |
virtual Real | computePhysicsDt () noexcept |
Compute a maximum time step from the physics interface. More... | |
virtual Real | computePhysicsDt (const EBAMRCellData &a_electricField) noexcept |
Compute a maximum time step from the physics interface. More... | |
virtual Real | computePhysicsDt (const LevelData< EBCellFAB > &a_electricField, const LevelData< EBCellFAB > &a_particlesPerCell, const int a_level) noexcept |
Compute a maximum time step from the physics interface. More... | |
virtual Real | computePhysicsDt (const EBCellFAB &a_electricField, const EBCellFAB &a_particlesPercCell, const int a_level, const DataIndex a_dit, const Box a_box) noexcept |
Compute a maximum time step from the physics interface. More... | |
virtual Real | computeTotalCharge () const noexcept |
Compute total charge. | |
virtual Real | computeQplus () const noexcept |
Compute positive charge. | |
virtual Real | computeQminu () const noexcept |
Compute negative charge. | |
virtual Real | computeQsurf () const noexcept |
Compute surface charge. | |
virtual void | advancePhotons (const Real a_dt) noexcept |
Photon advancement routine. More... | |
virtual void | sortPhotonsByCell (const McPhoto::WhichContainer a_which) noexcept |
Sort photons by cells. More... | |
virtual void | sortPhotonsByPatch (const McPhoto::WhichContainer a_which) noexcept |
Sort photons by patch. More... | |
virtual void | postCheckpointPoisson () noexcept |
Do some post-checkpoint operations for the electrostatic part. More... | |
virtual void | computeEdotJSource (const Real a_dt) noexcept |
Compute the energy source term for the various plasma species. More... | |
virtual void | initialSigma () noexcept |
Fill surface charge solver with initial data taken from the physics interface. | |
virtual void | parseVerbosity () noexcept |
Parse chattiness. More... | |
virtual void | parseExitOnFailure () noexcept |
Parse exit on failure. | |
virtual void | parseRedistributeCDR () noexcept |
Parse CDR mass redistribution when assigning reactive products. | |
virtual void | parseSuperParticles () noexcept |
Parse the desired number of particles per cell. More... | |
virtual void | parseDualGrid () noexcept |
Parse dual or single realm calculations. More... | |
virtual void | parseLoadBalance () noexcept |
Parse load balancing. | |
virtual void | parseTimeStepRestrictions () noexcept |
Parse time step restrictions. | |
virtual void | parseParametersEB () noexcept |
Parse parameters related to how we treat particle-EB interaction. | |
virtual void | parsePlotVariables () noexcept |
Parse plot variables. | |
virtual void | computePhysicsPlotVariables (EBAMRCellData &a_physicsPlotVars) noexcept |
Compute physics plot variables. More... | |
Protected Attributes | |
BoxSorting | m_boxSort |
Box sorting method when using dual-grid with particle load balancing. | |
TimeCode | m_timeCode |
Time code for understanding how the time step was restricted. | |
std::string | m_fluidRealm |
Realm used for the fluid part (i.e., electrostatic) part of the simulation. More... | |
std::string | m_particleRealm |
Realm used for the particle part of the simulation. | |
std::string | m_name |
Time stepper name. | |
phase::which_phase | m_plasmaPhase |
Phase where we solve for the plasma. More... | |
RefCountedPtr< ItoKMCPhysics > | m_physics |
Implementation of ItoKMCPhysics. More... | |
RefCountedPtr< ItoLayout< ItoSolver > > | m_ito |
Ito solvers. | |
RefCountedPtr< CdrLayout< CdrSolver > > | m_cdr |
CDR solvers. | |
RefCountedPtr< RtLayout< McPhoto > > | m_rte |
Radiative transfer solvers. | |
RefCountedPtr< FieldSolver > | m_fieldSolver |
Field solver. | |
RefCountedPtr< SurfaceODESolver< 1 > > | m_sigmaSolver |
Surface charge solver. | |
Vector< ParticleContainer< ItoParticle > > | m_secondaryParticles |
List of secondary particles injected through the EB. More... | |
Vector< ParticleContainer< Photon > > | m_secondaryPhotons |
List of secondary photons injected through the EB. More... | |
Vector< EBAMRIVData > | m_cdrFluxes |
CDR fluxes for CDR BCs. More... | |
Vector< EBAMRIVData > | m_cdrFluxesExtrap |
Extrapolated CDR fluxes. | |
std::function< Real(const Real a_time)> | m_voltage |
Voltage curve on the electrodes used in the simulation. | |
bool | m_abortOnFailure |
Flag for abandoning simulation of Poisson solver fails. | |
bool | m_redistributeCDR |
Flag for abandoning simulation of Poisson solver fails. | |
bool | m_dualGrid |
Using dual grid or not. | |
bool | m_profile |
Profile kernels or not. | |
bool | m_regridSuperparticles |
Do or do not superparticle merging/splitting on regrids. | |
bool | m_loadBalanceParticles |
Load balance particle realm or not. | |
bool | m_loadBalanceFluid |
Load balance fluid realm or not. | |
bool | m_plotConductivity |
Plot conductivity or not. | |
bool | m_plotCurrentDensity |
Plot conductivity or not. | |
bool | m_plotParticlesPerPatch |
Plot number of particles per patch or not. | |
Vector< int > | m_particlesPerCell |
Target number of particles per cell when squishing ItoParticle's into superparticles. | |
int | m_mergeInterval |
How often to merge superparticles. More... | |
Real | m_prevDt |
Previous time step. | |
Real | m_maxGrowthDt |
Maximum permissible time step growth. | |
Real | m_maxShrinkDt |
Maximum permissible time step shrinkage. | |
Real | m_loadPerCell |
The "background" load per cell when using particle load balancing. More... | |
Real | m_toleranceEB |
Accepted tolerance (relative to dx) for EB intersection. | |
Real | m_minParticleAdvectionCFL |
Minimum CFL-like time step for particle advection. | |
Real | m_maxParticleAdvectionCFL |
Maximum CFL-like time step for particle advection. | |
Real | m_minParticleDiffusionCFL |
Minium CFL-like time step for particle diffusion. | |
Real | m_maxParticleDiffusionCFL |
Maximum CFL-like time step for particle diffusion. | |
Real | m_minParticleAdvectionDiffusionCFL |
Maximum CFL-like time step for particle advection-diffusion. | |
Real | m_maxParticleAdvectionDiffusionCFL |
Maximum CFL-like time step for particle advection-diffusion. | |
Real | m_fluidAdvectionDiffusionCFL |
CFL-like time step for fluid advection-diffusion. | |
Real | m_relaxTimeFactor |
Factor proportional to the dielectric relaxation time dtRelax = eps0/sigma. More... | |
Real | m_minDt |
Minimum permitted time step. | |
Real | m_maxDt |
Maximum permitted time step. | |
Real | m_particleAdvectionDt |
The particle advective time step. | |
Real | m_particleDiffusionDt |
The particle diffusive time step. | |
Real | m_particleAdvectionDiffusionDt |
The advection-diffusion time step. | |
Real | m_fluidAdvectionDiffusionDt |
The advection-diffusion time step for the CDR equations. | |
Real | m_relaxationTime |
The relaxation time eps0/sigma. | |
Real | m_physicsDt |
The physics-based time step. | |
Vector< EBAMRCellData > | m_loadBalancePPC |
For holding the number of computational particles per cell when load balancing. | |
Vector< EBAMRCellData > | m_cdrMobilities |
For holding the mobilities for the CDR species. More... | |
Vector< EBAMRCellData > | m_fluidGradPhiCDR |
For holding the gradient of all CDR species densities. More... | |
Vector< EBAMRCellData > | m_fluidGradPhiIto |
For holding the gradient of all Ito species densities. More... | |
Vector< EBAMRCellData > | m_fluidPhiIto |
For holding the Ito species densities on the fluid realm. | |
Vector< ParticleContainer< PointParticle > > | m_cdrPhotoiProducts |
Photoionization products to be put in the CDR equations. More... | |
Vector< int > | m_loadBalanceIndices |
Solver indices used when load-balancing the particle solvers. | |
EBAMRCellData | m_currentDensity |
Storage for current density. More... | |
EBAMRCellData | m_physicsPlotVariables |
Storage for physics plot variables. | |
EBAMRCellData | m_conductivityCell |
Cell-centered conductivity. More... | |
EBAMRFluxData | m_conductivityFace |
Face-centered conductivity. More... | |
EBAMRIVData | m_conductivityEB |
EB-centered conductivity. More... | |
EBAMRCellData | m_particleItoPPC |
For holding the number of physical particles per cell for all Ito species. More... | |
EBAMRCellData | m_particleYPC |
For holding the number of generated photons per cell. More... | |
EBAMRCellData | m_particleEPS |
For holding the mean particle energy. More... | |
EBAMRCellData | m_particleOldItoPPC |
For holding the previous number of particles per cell for all species. More... | |
EBAMRCellData | m_fluidCdrPPC |
For holding the number of physical particles per cell for all CDR species. More... | |
EBAMRCellData | m_fluidOldCdrPPC |
For holding the previous number of physical particles per cell for all CDR species. More... | |
EBAMRCellData | m_fluidPPC |
For holding the number of particles per cell for all species. More... | |
EBAMRCellData | m_fluidYPC |
For holding the number of generated photons per cell. More... | |
EBAMRCellData | m_electricFieldFluid |
Storage for holding the plasma phase electric field on the fluid realm. | |
EBAMRCellData | m_electricFieldParticle |
Storage for holding the plasma phase electric field on the particle realm. | |
Vector< EBAMRCellData > | m_energySources |
Storage for holding the energy sources for each species. More... | |
EBAMRCellData | m_EdotJ |
Storage for holdnig E*J on the fluid realm. 1 component. | |
EBAMRCellData | m_fluidScratch1 |
Scratch storage on the fluid realm having 1 component. | |
EBAMRCellData | m_fluidScratchD |
Scratch storage on the fluid realm with SpaceDim components. | |
EBAMRCellData | m_particleScratch1 |
Scratch storage on the particle realm with 1 component. | |
EBAMRCellData | m_particleScratchD |
Scratch storage on the particle realm with SpaceDim components. | |
EBAMRIVData | m_fluidScratchEB |
Scratch storage for EB-only data on the fluid realm. One component. | |
EBAMRIVData | m_particleScratchEB |
Scratch storage for EB-only data on the particle realm. One component. | |
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. | |
Base time stepper class that advances the Ito-KMC-Poisson system of equations. If you want a different underlying solver, change the template arguments.
|
noexcept |
Full constructor. Calls the other constructor.
[in] | a_physics | Implementation of the Ito plasma physics model. |
|
overridepure virtual |
Advancement method. Needs to be implemented by subclasses.
[in] | a_dt | Time step to be used for advancement |
Implements TimeStepper.
Implemented in Physics::ItoKMC::ItoKMCGodunovStepper< I, C, R, F >.
|
protectedvirtualnoexcept |
Photon advancement routine.
[in] | a_dt | Time step |
|
protectedvirtualnoexcept |
Chemistry advance over time a_dt. AMR version.
[in] | a_electricField | Electric field. Must be defined on the fluid realm. |
[in] | a_dt | Time step |
|
protectedvirtualnoexcept |
Chemistry advance over time a_dt.
[in] | a_dt | Time step |
|
inlineprotectednoexcept |
Chemistry advance over time a_dt. Patch version.
[in,out] | a_particlesPerCell | Number of particles per cell for each plasma species |
[in,out] | a_newPhotonsPerCell | Number of physical photons to be generated for each photon species |
[in] | a_electricField | Electric field. |
[in] | a_level | Grid level |
[in] | a_dit | Grid index. |
[in] | a_box | Grid box |
[in] | a_dx | Grid resolution. |
[in] | a_dt | Time increment |
|
inlineprotectednoexcept |
Chemistry advance over time a_dt. Level version.
[in,out] | a_particlesPerCell | Number of particles per cell for each plasma species |
[in,out] | a_newPhotonsPerCell | Number of physical photons to be generated for each photon species |
[in] | a_electricField | Electric field. |
[in] | a_level | Grid level |
[in] | a_dt | Time increment |
|
protectedvirtualnoexcept |
Compute the cell-centered conductiivty.
[out] | a_conductivity | Cell-centered conductivity |
|
protectedvirtualnoexcept |
Compute the cell-centered conductiivty.
[out] | a_conductivity | Cell-centered conductivity |
[in] | a_particles | Ito particles. |
|
protectedvirtualnoexcept |
Compute the current density.
|
protectedvirtualnoexcept |
Compute grad(phi) and phi for both CDR and Ito species and put the result on the fluid realm.
This will compute the gradients using the results in the solvers. The user should make sure he/she deposits the Ito particles before calling this routine. The results are put in m_fluidGradPhiCDR and and m_fluidGradPhiito
|
protectedvirtualnoexcept |
Compute mesh-based diffusion coefficients for LFA coupling.
|
protectedvirtualnoexcept |
Compute mesh-based diffusion coefficients for LFA coupling.
[out] | a_itoDiffusionCoefficients | Mesh-based diffusion coefficients for Ito solvers. Must be defined on the particle realm. |
[out] | a_cdrDiffusionCoefficients | Mesh-based diffusion coefficients for CDR solvers. Must be defined on the fluid realm. |
[in] | a_electricField | Electric field. Must be defined on the fluid realm. |
[in] | a_time | Time |
|
protectedvirtualnoexcept |
Patch-routine when computing mesh-based diffusion coefficients in the LFA coupling.
[out] | a_itoDiffusionCoefficients | Mesh-based diffusion coefficients for Ito solvers. Must be defined on the fluid realm. |
[out] | a_cdrDiffusionCoefficients | Mesh-based diffusion coefficients for CDR solvers. Must be defined on the fluid realm. |
[in] | a_electricField | Electric field. Must be defined on the fluid realm. |
[in] | a_level | Grid level |
[in] | a_time | Time |
[in] | a_level | Grid level |
[in] | a_dit | Grid index |
[in] | a_cellBox | Computation box |
[in] | a_time | Time |
|
protectedvirtualnoexcept |
Level-routine when computing mesh-based mobilities for LFA coupling.
[out] | a_itoDiffusionCoefficients | Mesh-based diffusion coefficients for Ito solvers. Must be defined on the fluid realm. |
[out] | a_cdrDiffusionCoefficients | Mesh-based diffusion coefficients for CDR solvers. Must be defined on the fluid realm. |
[in] | a_electricField | Electric field. Must be defined on the fluid realm. |
[in] | a_level | Grid level |
[in] | a_time | Time |
|
protectedvirtualnoexcept |
Compute ItoSolver velocities.
This will compute the mobilities and then interpolate mu*E to particle positions.
|
protectedvirtualnoexcept |
Compute the energy source term for the various plasma species.
[in] | a_dt | Time step during which the particles move. |
|
virtualnoexcept |
Recompute the electric field onto the specified data holder.
[out] | a_electricField | Electric field on cell centroid (defined on the fluid realm). |
[in] | a_phase | Phase where we compute the electric field. |
|
protectedvirtualnoexcept |
Compute the maximum electric field (norm)
[in] | a_phase | Phase where we compute the field. |
|
protectedvirtualnoexcept |
Compute mesh-based mobilities for LFA coupling.
This updates the mobilities in the Ito particle solvers AND m_cdrMobilities (not owned by solvers)
|
protectedvirtualnoexcept |
Compute mesh-based mobilities for LFA coupling.
[out] | a_itoMobilities | Mesh-based mobilities for Ito solvers. Must be defined on the particle realm. |
[out] | a_cdrMobilities | Mesh-based mobilities for CDR solvers. Must be defined on the fluid realm. |
[in] | a_electricField | Electric field. Must be defined on the fluid realm. |
[in] | a_time | Time |
|
protectedvirtualnoexcept |
Patch-routine when computing mesh-based mobilities for LFA coupling.
[out] | a_itoMobilities | Mesh-based mobilities for Ito solvers. Must be defined on the particle realm. |
[out] | a_cdrMobilities | Mesh-based mobilities for CDR solvers. Must be defined on the fluid realm. |
[in] | a_electricField | Electric field. Must be defined on the fluid realm. |
[in] | a_level | Grid level |
[in] | a_dit | Grid index |
[in] | a_cellBox | Computation box |
[in] | a_time | Time |
|
protectedvirtualnoexcept |
Level-routine when computing mesh-based mobilities for LFA coupling.
[out] | a_itoMobilities | Mesh-based mobilities for Ito solvers. Must be defined on the particle realm. |
[out] | a_cdrMobilities | Mesh-based mobilities for CDR solvers. Must be defined on the fluid realm. |
[in] | a_electricField | Electric field. Must be defined on the fluid realm. |
[in] | a_level | Grid level |
[in] | a_time | Time |
|
protectedvirtualnoexcept |
Compute a maximum time step from the physics interface.
|
protectedvirtualnoexcept |
Compute a maximum time step from the physics interface.
[in] | a_electricField | Electric field. |
[in] | a_densities | ItoSolver mesh densities. |
|
protectedvirtualnoexcept |
Compute a maximum time step from the physics interface.
[in] | a_electricField | Electric field. |
[in] | a_particlesPerCell | Number of particles per grid cell |
[in] | a_level | Grid level |
[in] | a_dit | Grid index |
[in] | a_box | Grid box |
|
protectedvirtualnoexcept |
Compute a maximum time step from the physics interface.
[in] | a_electricField | Electric field. |
[in] | a_particlesPerCell | Number of particles per grid cell |
[in] | a_level | Grid level |
|
protectedvirtualnoexcept |
Compute physics plot variables.
[out] | a_physicsPlotVars | Plot variables from physics implementation |
|
protectedvirtualnoexcept |
Compute the number of reactive particles per cell for the CDR solvers.
This truncates the number of particles in the cell.
[out] | a_ppc | Number of physical particles per grid cell for all CDR species |
|
protectedvirtualnoexcept |
Compute the number of reactive particles per cell for the CDR solvers.
[out] | a_ppc | Number of physical particles per grid cell for all CDR species |
[in] | a_level | Grid level |
[in] | a_dit | Grid index |
[in] | a_box | Grid box |
[in] | a_ebisbox | EB grid box |
|
protectedvirtualnoexcept |
Compute the number of reactive particles per cell for the CDR solvers.
[out] | a_ppc | Number of physical particles per grid cell for all CDR species |
[in] | a_level | Grid level |
|
protectedvirtualnoexcept |
Compute the number of reactive particles per cell.
[out] | a_ppc | Number of physical particles per grid cell for all species |
|
protectedvirtualnoexcept |
Compute the number of reactive particles per cell.
[out] | a_ppc | Number of physical particles per grid cell for all species |
[in] | a_level | Grid level |
[in] | a_dit | Grid index |
[in] | a_box | Grid box |
[in] | a_ebisbox | EB grid box |
|
protectedvirtualnoexcept |
Compute the number of reactive particles per cell.
[out] | a_ppc | Number of physical particles per grid cell for all species |
[in] | a_level | Grid level |
|
protectedvirtualnoexcept |
Compute the mean particle energy in all grid cells.
[out] | a_meanEnergies | Mean particle energies = sum(w * E)/sum(w) for all species. |
|
protectedvirtualnoexcept |
Compute the mean particle energy in all grid cells. Patch version.
[out] | a_meanEnergies | Number of physical particles per grid cell for all species |
[in] | a_level | Grid level |
[in] | a_dit | Grid index |
[in] | a_box | Grid box |
[in] | a_ebisbox | EB grid box |
|
protectedvirtualnoexcept |
Compute the mean particle energy in all grid cells. Level version.
[out] | a_meanEnergies | Mean particle energies = sum(w * E)/sum(w) for all species. |
[in] | a_level | Grid level |
|
protectedvirtualnoexcept |
|
protectedvirtualnoexcept |
Compute the space charge density.
[out] | a_rho | Space charge density |
[in] | a_itoDensities | List of Ito solver species densities |
[in] | a_cdrDensities | List of Cdr solver species densities |
|
protectedvirtualnoexcept |
Deposit a subset of the ItoSolver particles on the mesh.
|
protectedvirtualnoexcept |
|
protectedvirtualnoexcept |
Resolve particle injection at EBs.
[in] | a_dt | Time step. |
|
protectedvirtualnoexcept |
Compute secondary emission at the EB.
This routine fills the input data holders using physics framework. It does NOT fill solvers.
[out] | a_secondaryParticles | Secondary emitted (gained) particles at the EB |
[out] | a_cdrFluxes | CDR fluxes for BCs. |
[out] | a_secondaryPhotons | Secondary emitted photons at the EB |
[in] | a_primaryParticles | Primary (lost) particles at the EB |
[in] | a_cdrFluxesExtrap | Extrapolated CDR fluxes at the EB |
[in] | a_primaryPhotons | Primary (lost) photons at the EB |
[in] | a_electricField | Electric field at the EB. |
[in] | a_dt | Time step. |
|
overridevirtual |
Get computational loads to be checkpointed.
This is used by Driver both for setting up load-balanced restarts AND for plotting the computational loads to a file. This routine is disjoint from loadBalanceBoxes because this routine is not part of a regrid. This means that we are not operating with temporarily load balanced grids, and all operators etc. are already in place.
[in] | a_realm | Realm |
[in] | a_level | Grid level |
Reimplemented from TimeStepper.
|
protectedvirtualnoexcept |
Get the solvers used for load balancing.
This depends on m_loadBalanceIndex – if it's < 0 we use ALL plasma species for load balancing.
|
protectedvirtualnoexcept |
Get maximum density of the CDr species.
[in,out] | a_maxDensity | Maximum mesh density |
[in,out] | a_minDensity | Minium mesh density |
[in,out] | a_maxSolver | Solver with highest density |
[in,out] | a_minSolver | Solver with lowest density |
|
protectedvirtualnoexcept |
Get maximum density of the Ito species.
[in,out] | a_maxDensity | Maximum mesh density |
[in,out] | a_minDensity | Minium mesh density |
[in,out] | a_maxSolver | Solver with highest density |
[in,out] | a_minSolver | Solver with lowest density |
|
protectedvirtual |
Compute some particle statistics.
[out] | a_avgParticles | Average numer of particles |
[out] | a_sigma | Particle standard deviation (across MPI ranks) |
[out] | a_minParticles | Minimum number of particles |
[out] | a_maxParticles | Maximum number of particles |
[out] | a_minRank | MPI rank with lowest number of particles |
[out] | a_maxRank | MPI rank with highest number of particles |
|
protectedvirtualnoexcept |
Get the physical number of particles per cell.
[out] | a_ppc | Number of physical particles per cell. Must be defined over the fluid realm. |
|
virtualnoexcept |
Get current simulation time.
|
protectedvirtualnoexcept |
Intersect a subset of the particles with the domain and embedded boundary.
This calls the other version, intersecting the Ito bulk particles with the EB and placing the collided particles in the appropriate particle containers (ItoSolver::WhichContainer::EB, for example).
[in] | a_speciesSubset | Subset of particles to intersect. Can be charged, mobile, diffusive, etc. |
[in] | a_intersectionAlg | Representation of the EB – basically an algorithmic selection. |
[in] | a_delete | Delete original particles. If this is left to false, the particles are copied into the other containers. |
[in] | a_nonDeletionModifier | Optional input argument for letting the user manipulate particles that were intersected but not deleted |
|
protectedvirtualnoexcept |
Intersect a subset of the particles with the domain and embedded boundary.
[in] | a_speciesSubset | Subset of particles to intersect. Can be charged, mobile, diffusive, etc. |
[in] | a_containerBulk | ItoSolver container for "bulk" particles, i.e. particles that will be intersected. |
[in] | a_containerEB | ItoSolver container for EB particles. |
[in] | a_containerDomain | ItoSolver container for domain particles. |
[in] | a_intersectionAlg | EB intersection algorithm |
[in] | a_delete | Delete original particles. If this is left to false, the particles are copied into the other containers. |
[in] | a_nonDeletionModifier | Optional input argument for letting the user manipulate particles that were intersected but not deleted |
|
overridevirtual |
Load balance grid boxes for a specified realm.
[out] | a_procs | MPI ranks owning the various grid boxes. |
[out] | a_boxes | Grid boxes on every level (obtain them with a_grids[lvl].boxArray()) |
[in] | a_realm | Realm identifier |
[in] | a_grids | Original grids |
[in] | a_lmin | Coarsest grid level that changed |
[in] | a_finestLevel | New finest grid level |
This is only called by Driver if TimeStepper::loadBalanceThisRealm(a_realm) returned true. The default implementation uses volume-based loads for the grid patches. If the user wants to load balance boxes on a realm, this routine must be overwritten and he should compute loads for the various patches in a_grids and call LoadBalancing::makeBalance on each level. It is up to the user/programmer to decide if load balancing should be done independently on each level, or if loads per MPI rank are accumulated across levels.
Reimplemented from TimeStepper.
|
protectedvirtualnoexcept |
Routine called by loadBalanceBoxes and used for particle-based load balancing.
[out] | a_procs | MPI ranks owning the various grid boxes. |
[out] | a_boxes | Grid boxes on every level (obtain them with a_grids[lvl].boxArray()) |
[in] | a_realm | Realm identifier |
[in] | a_grids | Original grids |
[in] | a_lmin | Coarsest grid level to load balance. |
[in] | a_finestLevel | Finest grid level |
|
protectedvirtualnoexcept |
Routine called by loadBalanceBoxes and used for particle-based load balancing.
[out] | a_procs | MPI ranks owning the various grid boxes. |
[out] | a_boxes | Grid boxes on every level (obtain them with a_grids[lvl].boxArray()) |
[in] | a_realm | Realm identifier |
[in] | a_grids | Original grids |
[in] | a_lmin | Coarsest grid level to load balance. |
[in] | a_finestLevel | Finest grid level |
|
overridevirtual |
Load balancing query for a specified realm. If this returns true for a_realm, load balancing routines will be called during regrids for the input realm.
[in] | a_realm | Realm name |
Reimplemented from TimeStepper.
|
protectedvirtualnoexcept |
Parse dual or single realm calculations.
Sets m_particleRealm = "ParticleRealm" if 'dual_grid' is true.
|
protectedvirtualnoexcept |
Parse the desired number of particles per cell.
Sets m_particlesPerCell from input script.
|
protectedvirtualnoexcept |
Parse chattiness.
Sets m_verbosity from input script.
|
protectedvirtualnoexcept |
Do some post-checkpoint operations for the electrostatic part.
This computes the electric field from the checkpointed potential and populates m_electricFieldFluid and m_electricFieldParticle.
|
overridevirtualnoexcept |
Perform post-checkpoint operations.
This allocates the internal storage, recomputes the electric field and recomputes the velocity and diffusion coefficients.
Implements TimeStepper.
|
overridevirtualnoexcept |
Perform pre-regrid operations - storing relevant data from the old grids.
[in] | a_lmin | The coarsest level that changes |
[in] | a_oldFinestLevel | The finest level before the regrid. |
Implements TimeStepper.
Reimplemented in Physics::ItoKMC::ItoKMCGodunovStepper< I, C, R, F >.
|
protectedvirtualnoexcept |
Reconcile the CDR densities after the reaction network.
This adds the a_newPPC - a_oldPPC to the densities and sets the source term to (a_newPPC - a_oldPPC)/(vol * dt)
[in] | a_newParticlesPerCell | Particles per cell after the chemistry advance. |
[in] | a_oldParticlesPerCell | Particles per cell before the chemistry advance. |
[in] | a_dt | Time step |
|
protectedvirtualnoexcept |
Reconcile the CDR densities after the reaction network.
This adds the a_newPPC - a_oldPPC to the densities and sets the source term to (a_newPPC - a_oldPPC)/(vol * dt)
[in] | a_newParticlesPerCell | Particles per cell after the chemistry advance. |
[in] | a_oldParticlesPerCell | Particles per cell before the chemistry advance. |
[in] | a_level | Grid level |
[in] | a_dit | Grid index |
[in] | a_box | Grid box |
[in] | a_dx | Grid resolution. |
[in] | a_dt | Time step |
|
protectedvirtualnoexcept |
Reconcile the CDR densities after the reaction network.
This adds the a_newPPC - a_oldPPC to the densities and sets the source term to (a_newPPC - a_oldPPC)/(vol * dt)
[in] | a_newParticlesPerCell | Particles per cell after the chemistry advance. |
[in] | a_oldParticlesPerCell | Particles per cell before the chemistry advance. |
[in] | a_level | Grid level |
[in] | a_dt | Time step |
|
inlineprotectednoexcept |
Reconcile particles. At the bottom, this will call the physics interface for particle reconciliation.
[in] | a_newParticlesPerCell | Particles per cell after the chemistry advance. |
[in] | a_oldParticlesPerCell | Particles per cell before the chemistry advance. |
[in] | a_newPhotonsPerCell | Newly generated photons per cell after the chemistry avance. |
|
inlineprotectednoexcept |
Reconcile particles. At the bottom, this will call the physics interface for particle reconciliation.
[in] | a_newParticlesPerCell | Particles per cell after the chemistry advance. |
[in] | a_oldParticlesPerCell | Particles per cell before the chemistry advance. |
[in] | a_newPhotonsPerCell | Newly generated photons per cell after the chemistry avance. |
[in] | a_level | Grid level |
[in] | a_dit | Grid index |
[in] | a_box | Grid box |
[in] | a_dx | Grid resolution. |
|
inlineprotectednoexcept |
Reconcile particles. At the bottom, this will call the physics interface for particle reconciliation.
[in] | a_newParticlesPerCell | Particles per cell after the chemistry advance. |
[in] | a_oldParticlesPerCell | Particles per cell before the chemistry advance. |
[in] | a_newPhotonsPerCell | Newly generated photons per cell after the chemistry avance. |
[in] | a_level | Grid level |
|
protectedvirtualnoexcept |
Reconcile the results from photoionization reactions.
|
overridevirtualnoexcept |
Regrid methods – puts all data on the new mesh.
[in] | a_lmin | The coarsest level that changed. |
[in] | a_oldFinestLevel | The finest level before the regrid. |
[in] | a_newFinestLevel | The finest level after the regrid. |
Implements TimeStepper.
Reimplemented in Physics::ItoKMC::ItoKMCGodunovStepper< I, C, R, F >.
|
protectedvirtualnoexcept |
Remap a subset of ItoSolver particles.
[in] | a_speciesSubset | Subset of species to remap |
|
protectedvirtualnoexcept |
|
protectedvirtualnoexcept |
Remove covered particles (i.e., particles inside the EB)
[in] | a_speciesSubset | Subset of particles to intersect. Can be charged, mobile, diffusive, etc. |
[in] | a_representation | Representation of the EB. |
[in] | a_tolerance | Tolerance for removal. Removes up to distance a_tolerance from the EB. |
|
protectedvirtualnoexcept |
Remove covered particles (i.e., particles inside the EB)
[in] | a_speciesSubset | Subset of particles to intersect. Can be charged, mobile, diffusive, etc. |
[in] | a_container | Which of the containers in ItoSolver to remove from. |
[in] | a_representation | Representation of the EB. |
[in] | a_tolerance | Tolerance for removal. Removes up to distance a_tolerance from the EB. |
|
protectedvirtualnoexcept |
Resolve secondary emission at the EB.
[in] | a_dt | Time step. |
|
protectedvirtualnoexcept |
Resolve secondary emission at the EB.
This does three things: 1) It deposits the primary and second particles on the mesh and update the surface charge density. 2) It removes the primary particles and adds the secondary particles to the Ito solvers. 3) It adds the CDR fluxes to the CDR solvers, and updates the surface charge density.
[out] | a_secondaryParticles | Secondary emitted (gained) particles at the EB. |
[out] | a_cdrFluxes | CDR fluxes for BCs. |
[in] | a_primaryParticles | Primary (lost) particles at the EB. |
[in] | a_surfaceChargeDensity | Surface charge density. |
[in] | a_dt | Time step. |
|
protectedvirtualnoexcept |
Set the Cdr velocities to be sgn(charge) * E.
To set the final drift velocity, mobilities should be computed and multiplied in with the drift velocities.
|
protectedvirtualnoexcept |
Set the Ito velocity functions. This is sgn(charge) * E.
|
virtualnoexcept |
Set voltage used for the simulation.
[in] | a_voltage | Voltage |
|
protectedvirtualnoexcept |
Solve the electrostatic problem.
This calls the other version with all lhs/rhs taken from the field solver. Space charge density is computed in this routine.
|
protectedvirtualnoexcept |
Sort photons by cells.
[in] | a_which | Which container to sort by cell |
|
protectedvirtualnoexcept |
Sort photons by patch.
[in] | a_which | Which container to sort by patch |
|
overridevirtualnoexcept |
Synchronize solver times for all the solvers.
[in] | a_step | Time step |
[in] | a_time | Simulation time |
[in] | a_dt | Last time step used. |
Implements TimeStepper.
|
protectedvirtualnoexcept |
Transfer covered particles (i.e., particles inside the EB) from the ItoSolver bulk container to EB container.
[in] | a_speciesSubset | Subset of particles to intersect. Can be charged, mobile, diffusive, etc. |
[in] | a_representation | Representation of the EB. |
[in] | a_tolerance | Tolerance for transfer. Transfers up to distance a_tolerance from the EB. |
|
protectedvirtualnoexcept |
Transfer covered particles (i.e., particles inside the EB) from the ItoSolver bulk container to EB container.
[in] | a_speciesSubset | Subset of particles to intersect. Can be charged, mobile, diffusive, etc. |
[in] | a_containerFrom | Particle container (in ItoSolver) to transfer from |
[in] | a_containerTo | Particle container (in ItoSolver) to transfer to |
[in] | a_representation | Representation of the EB. |
[in] | a_tolerance | Tolerance for transfer. Transfers up to distance a_tolerance from the EB. |
|
protectedvirtualnoexcept |
Write data to output. Convenience function.
[in,out] | a_output | Output data holder. |
[in,out] | a_icomp | Starting component where this solver begins writing the output. |
[in] | a_data | Data to write. |
[in] | a_outputRealm | Realm where a_output belogns |
[in] | a_level | Grid level |
[in] | a_interpToCentroids | If true, a_data will be interpolated to cell centroids before writing to a_output. |
[in] | a_interpGhost | If true, interpolate ghost cells |
|
protectedvirtualnoexcept |
Write number of particles per patch to output holder.
[in,out] | a_output | Output data holder. |
[in,out] | a_icomp | Starting component in a_output to begin at. |
[in] | a_outputRealm | Realm where a_output belogns |
[in] | a_level | Grid level |
|
overridevirtualnoexcept |
Write plot data to output holder.
[in,out] | a_output | Output data holder. |
[in,out] | a_icomp | Starting component in a_output to begin at. |
[in] | a_outputRealm | Realm where a_output belongs |
[in] | a_level | Grid level |
Implements TimeStepper.
|
protected |
CDR fluxes for CDR BCs.
There's a version of this inside the solvers, but we need this one because the EB coupling takes place on the particle realm.
|
protected |
For holding the mobilities for the CDR species.
|
mutableprotected |
Photoionization products to be put in the CDR equations.
|
protected |
Cell-centered conductivity.
|
protected |
EB-centered conductivity.
|
protected |
Face-centered conductivity.
|
protected |
Storage for current density.
|
protected |
Storage for holding the energy sources for each species.
|
protected |
For holding the number of physical particles per cell for all CDR species.
|
protected |
For holding the gradient of all CDR species densities.
|
protected |
For holding the gradient of all Ito species densities.
|
protected |
For holding the previous number of physical particles per cell for all CDR species.
|
protected |
For holding the number of particles per cell for all species.
|
protected |
Realm used for the fluid part (i.e., electrostatic) part of the simulation.
|
protected |
For holding the number of generated photons per cell.
|
protected |
The "background" load per cell when using particle load balancing.
|
protected |
How often to merge superparticles.
If <= 1 we merge every time step.
|
protected |
For holding the mean particle energy.
|
protected |
For holding the number of physical particles per cell for all Ito species.
|
protected |
For holding the previous number of particles per cell for all species.
|
protected |
For holding the number of generated photons per cell.
|
protected |
Implementation of ItoKMCPhysics.
All solver coupling occurs through the implementation of this class
|
protected |
Phase where we solve for the plasma.
|
protected |
Factor proportional to the dielectric relaxation time dtRelax = eps0/sigma.
Used for restricting dt < m_relaxTimeFactor * eps0/sigma
|
protected |
List of secondary particles injected through the EB.
This is used when injecting secondary particles through the EB.
|
protected |
List of secondary photons injected through the EB.
This is used when injecting secondary photons through the EB.