12 #ifndef CD_ItoPlasmaPhysics_H
13 #define CD_ItoPlasmaPhysics_H
21 #include <RefCountedPtr.H>
33 #include <CD_NamespaceHeader.H>
84 computeDt(
const RealVect a_E,
const RealVect a_pos,
const Vector<FPR> a_numParticles)
const noexcept;
98 const Vector<RefCountedPtr<ItoSpecies>>&
105 const Vector<RefCountedPtr<RtSpecies>>&
132 initialSigma(const Real a_time, const RealVect a_pos) const;
176 Vector<List<
Photon>>& a_outgoingPhotons,
177 const Vector<List<
ItoParticle>>& a_incomingParticles,
178 const Vector<List<
Photon>>& a_incomingPhotons,
179 const Vector<
FPR>& a_newNumParticles,
180 const Vector<
FPR>& a_oldNumParticles,
182 const RealVect& a_cellCenter,
183 const RealVect& a_cellCentroid,
184 const RealVect& a_bndryCentroid,
185 const RealVect& a_bndryNormal,
186 const Real a_bndryArea,
189 const
bool a_isDielectric,
190 const
int a_matIndex) const noexcept = 0;
203 Vector<
FPR>& a_numNewPhotons,
207 const Real a_kappa) const;
227 const Vector<
FPR>& a_newNumParticles,
228 const Vector<
FPR>& a_oldNumParticles,
229 const RealVect a_cellPos,
230 const RealVect a_centroidPos,
233 const RealVect a_bndryCentroid,
234 const RealVect a_bndryNormal,
236 const Real a_kappa) const noexcept;
255 const Vector<
FPR>& a_numNewPhotons,
256 const RealVect a_cellPos,
257 const RealVect a_centroidPos,
260 const RealVect a_bndryCentroid,
261 const RealVect a_bndryNormal,
263 const Real a_kappa) const noexcept;
273 const Vector<List<
Photon>*>& a_absorbedPhotons) const noexcept;
426 #include <CD_NamespaceFooter.H>
Declaration of a particle class for Ito diffusion.
Declaration of a class for holding photoionization reaction types in ito_plasma physics.
Implementation of CD_ItoPlasmaPhysics.H.
Real FPR
Numerical representation of the KMC state. Can be floating-point or integer type.
Definition: CD_ItoPlasmaPhysics.H:41
Declaration of an ItoSpecies class that passes in names and initial data to ItoSolvers.
Declaration of a simple plasma reaction type for Kinetic Monte Carlo.
Declaration of a simple state vector for running Kinetic Monte Carlo for plasma problems.
Class for running Kinetic Monte Carlo functionality.
Declaration of a photon class for particle methods.
Declaration of a class which supplies a user interface to radiative transfer code.
A particle class for use with ItoSolvers, i.e. drifting Brownian walkers.
Definition: CD_ItoParticle.H:40
Reaction type for advancing a KMCDualState for Kinetic Monte Carlo.
Definition: CD_KMCDualStateReaction.H:33
Particle class for usage with Monte Carlo radiative transfer.
Definition: CD_Photon.H:29
Base class for interaction between Kinetic Monte Carlo and Ito-based plasma solvers.
Definition: CD_ItoPlasmaPhysics.H:64
const Vector< RefCountedPtr< ItoSpecies > > & getItoSpecies() const
Get all particle species.
Definition: CD_ItoPlasmaPhysicsImplem.H:145
void defineKMC() noexcept
Define the KMC solver and state.
Definition: CD_ItoPlasmaPhysicsImplem.H:69
virtual Real computeDt(const RealVect a_E, const RealVect a_pos, const Vector< FPR > a_numParticles) const noexcept
Compute a time step to use.
Definition: CD_ItoPlasmaPhysicsImplem.H:61
KMCSolverType m_kmcSolver
Kinetic Monte Carlo solver.
Definition: CD_ItoPlasmaPhysics.H:324
std::string m_className
Class name. Used for options parsing.
Definition: CD_ItoPlasmaPhysics.H:309
void parseDebug() noexcept
Parse the maximum number of particles generated per cell.
Definition: CD_ItoPlasmaPhysicsImplem.H:106
ParticlePlacement
Enum for switching between various particle placement algorithms.
Definition: CD_ItoPlasmaPhysics.H:291
Real m_eps
Solver setting for the Cao et. al. algorithm.
Definition: CD_ItoPlasmaPhysics.H:378
Algorithm
Enum for switching between KMC algorithms.
Definition: CD_ItoPlasmaPhysics.H:281
bool m_debug
Turn on/off debugging.
Definition: CD_ItoPlasmaPhysics.H:314
virtual Vector< Real > computeItoMobilities(const Real a_time, const RealVect a_pos, const RealVect a_E) const noexcept=0
Compute the Ito solver mobilities.
void removeParticles(List< ItoParticle > &a_particles, const long long a_numToRemove) const
Remove particles from the input list.
Definition: CD_ItoPlasmaPhysicsImplem.H:299
virtual Vector< Real > computeItoDiffusion(const Real a_time, const RealVect a_pos, const RealVect a_E) const noexcept=0
Compute the Ito solver diffusion coefficients.
std::vector< std::shared_ptr< const KMCReaction > > m_kmcReactions
List of reactions for the KMC solver.
Definition: CD_ItoPlasmaPhysics.H:329
KMCState m_kmcState
Kinetic Monte Carlo state.
Definition: CD_ItoPlasmaPhysics.H:319
int getNumPlasmaSpecies() const
Return number of ion equations.
Definition: CD_ItoPlasmaPhysicsImplem.H:157
virtual ~ItoPlasmaPhysics()
Destructor. Does nothing.
Definition: CD_ItoPlasmaPhysicsImplem.H:58
ParticlePlacement m_particlePlacement
Particle placement algorithm.
Definition: CD_ItoPlasmaPhysics.H:304
const Vector< RefCountedPtr< RtSpecies > > & getRtSpecies() const
Get all photon species.
Definition: CD_ItoPlasmaPhysicsImplem.H:151
void reconcileParticles(Vector< List< ItoParticle > * > &a_particles, const Vector< FPR > &a_newNumParticles, const Vector< FPR > &a_oldNumParticles, const RealVect a_cellPos, const RealVect a_centroidPos, const RealVect a_lo, const RealVect a_hi, const RealVect a_bndryCentroid, const RealVect a_bndryNormal, const Real a_dx, const Real a_kappa) const noexcept
Reconcile the number of particles.
Definition: CD_ItoPlasmaPhysicsImplem.H:220
virtual void updateReactionRates(const RealVect a_E, const Real a_dx, const Real a_kappa) const noexcept=0
Update reaction rates.
void parsePPC() noexcept
Parse the maximum number of particles generated per cell.
Definition: CD_ItoPlasmaPhysicsImplem.H:95
int m_maxNewParticles
Maximum new number of particles generated by the chemistry advance.
Definition: CD_ItoPlasmaPhysics.H:349
Vector< RefCountedPtr< ItoSpecies > > m_plasmaSpecies
List of solver-tracked particle species.
Definition: CD_ItoPlasmaPhysics.H:339
Algorithm m_algorithm
Algorithm to use for KMC advance.
Definition: CD_ItoPlasmaPhysics.H:299
void parseAlgorithm() noexcept
Parse reaction algorithm.
Definition: CD_ItoPlasmaPhysicsImplem.H:116
virtual void injectParticlesEB(Vector< List< ItoParticle >> &a_outgoingParticles, Vector< List< Photon >> &a_outgoingPhotons, const Vector< List< ItoParticle >> &a_incomingParticles, const Vector< List< Photon >> &a_incomingPhotons, const Vector< FPR > &a_newNumParticles, const Vector< FPR > &a_oldNumParticles, const RealVect &a_E, const RealVect &a_cellCenter, const RealVect &a_cellCentroid, const RealVect &a_bndryCentroid, const RealVect &a_bndryNormal, const Real a_bndryArea, const Real a_dx, const Real a_dt, const bool a_isDielectric, const int a_matIndex) const noexcept=0
Resolve particle and photon injection at the EB.
virtual void parseRuntimeOptions() noexcept
Parse run-time options.
Definition: CD_ItoPlasmaPhysicsImplem.H:82
ItoPlasmaPhysics()
Constructor. Does nothing.
Definition: CD_ItoPlasmaPhysicsImplem.H:27
void reconcilePhotons(Vector< List< Photon > * > &a_newPhotons, const Vector< FPR > &a_numNewPhotons, const RealVect a_cellPos, const RealVect a_centroidPos, const RealVect a_lo, const RealVect a_hi, const RealVect a_bndryCentroid, const RealVect a_bndryNormal, const Real a_dx, const Real a_kappa) const noexcept
Generate new photons.
Definition: CD_ItoPlasmaPhysicsImplem.H:363
virtual Real initialSigma(const Real a_time, const RealVect a_pos) const
Set initial surface charge. Default is 0, override if you want.
Definition: CD_ItoPlasmaPhysicsImplem.H:169
void advanceKMC(Vector< FPR > &a_numParticles, Vector< FPR > &a_numNewPhotons, const Real a_dt, const RealVect a_E, const Real a_dx, const Real a_kappa) const
Advance particles.
Definition: CD_ItoPlasmaPhysicsImplem.H:175
virtual Real computeAlpha(const RealVect a_E) const =0
Compute Townsend ionization coefficient.
Vector< RefCountedPtr< RtSpecies > > m_rtSpecies
List of solver-tracked photon species.
Definition: CD_ItoPlasmaPhysics.H:344
int getNumPhotonSpecies() const
Return number of RTE equations.
Definition: CD_ItoPlasmaPhysicsImplem.H:163
int m_Ncrit
Solver setting for the Cao et. al algorithm.
Definition: CD_ItoPlasmaPhysics.H:360
void reconcilePhotoionization(Vector< List< ItoParticle > * > &a_particles, const Vector< List< Photon > * > &a_absorbedPhotons) const noexcept
Reconcile photoionization reactions.
Definition: CD_ItoPlasmaPhysicsImplem.H:393
int m_NSSA
Solver setting for the Cao et. al algorithm.
Definition: CD_ItoPlasmaPhysics.H:366
int m_maxNewPhotons
Maximum new number of photons generated by the chemistry advance.
Definition: CD_ItoPlasmaPhysics.H:354
std::vector< std::shared_ptr< const ItoPlasmaPhotoReaction > > m_photoReactions
List of photoionization reactions.
Definition: CD_ItoPlasmaPhysics.H:334
Real m_SSAlim
Solver setting for the Cao et. al. algorithm.
Definition: CD_ItoPlasmaPhysics.H:372
Class for encapsulating random number generation.
Definition: CD_Random.H:35
Name containing various physics models for running chombo-discharge code.
Definition: CD_AdvectionDiffusion.H:15