chombo-discharge
Loading...
Searching...
No Matches
CD_ItoKMCStepper.H
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2021-2026 SINTEF Energy Research
3 *
4 * SPDX-License-Identifier: GPL-3.0-or-later
5 */
6
13#ifndef CD_ITOKMCSTEPPER_H
14#define CD_ITOKMCSTEPPER_H
15
16// Std includes
17#include <functional>
18
19// Our includes
20#include <CD_TimeStepper.H>
21#include <CD_ItoKMCPhysics.H>
22#include <CD_ItoLayout.H>
23#include <CD_CdrLayout.H>
24#include <CD_PointParticle.H>
25#include <CD_RtLayout.H>
26#include <CD_McPhoto.H>
27#include <CD_FieldSolver.H>
28#include <CD_ItoSolver.H>
29#include <CD_CdrCTU.H>
30#include <CD_FieldSolverGMG.H>
31#include <CD_SurfaceODESolver.H>
32#include <CD_NamespaceHeader.H>
33
34namespace Physics {
35 namespace ItoKMC {
36
54
62 template <typename I = ItoSolver, typename C = CdrCTU, typename R = McPhoto, typename F = FieldSolverGMG>
64 {
65 public:
66 static_assert(std::is_base_of<ItoSolver, I>::value, "I must derive from ItoSolver");
67 static_assert(std::is_base_of<CdrSolver, C>::value, "C must derive from CdrSolver");
68 static_assert(std::is_base_of<McPhoto, R>::value, "R must derive from McPhoto");
69 static_assert(std::is_base_of<FieldSolver, FieldSolverGMG>::value, "F must derive from FieldSolver");
70
74 ItoKMCStepper() noexcept;
75
81
85 virtual ~ItoKMCStepper() noexcept;
86
90 virtual void
91 parseOptions() noexcept;
92
96 virtual void
97 parseRuntimeOptions() noexcept override;
98
102 virtual void
103 allocate() noexcept override;
104
108 virtual void
109 setupSolvers() noexcept override;
110
114 virtual void
115 initialData() noexcept override;
116
121 virtual void
122 postCheckpointSetup() noexcept override;
123
127 virtual void
128 postInitialize() noexcept override;
129
130#ifdef CH_USE_HDF5
135 virtual void
136 writeCheckpointHeader(HDF5HeaderData& a_header) const noexcept override;
137#endif
138
139#ifdef CH_USE_HDF5
144 virtual void
145 readCheckpointHeader(HDF5HeaderData& a_header) noexcept override;
146#endif
147
148#ifdef CH_USE_HDF5
154 virtual void
155 writeCheckpointData(HDF5Handle& a_handle, const int a_lvl) const noexcept override;
156#endif
157
158#ifdef CH_USE_HDF5
164 virtual void
165 readCheckpointData(HDF5Handle& a_handle, const int a_lvl) noexcept override;
166#endif
167
172 virtual int
173 getNumberOfPlotVariables() const noexcept override;
174
179 virtual Vector<std::string>
180 getPlotVariableNames() const noexcept override;
181
189 virtual void
191 int& a_icomp,
193 const int a_level) const noexcept override;
194
204 virtual Vector<long int>
205 getCheckpointLoads(const std::string& a_realm, const int a_level) const override;
206
212 virtual Real
213 advance(const Real a_dt) override = 0;
214
219 virtual Real
220 computeDt() override;
221
228 virtual void
229 synchronizeSolverTimes(const int a_step, const Real a_time, const Real a_dt) noexcept override;
230
234 virtual void
236
240 virtual void
242
246 virtual void
248
252 virtual void
254
258 virtual void
260
266 virtual void
268
275 virtual void
277
281 virtual void
283
289 virtual bool
291
305 virtual void
308 const std::string& a_realm,
310 const int a_lmin,
312
318 virtual void
320
327
333 virtual void
335
336 protected:
341 {
342 AdvectionIto,
343 DiffusionIto,
344 AdvectionDiffusionIto,
345 AdvectionDiffusionCDR,
346 RelaxationTime,
347 Hardcap,
348 Physics
349 };
350
355
360
366
371
376
382
388
393
398
403
408
413
420
427
434
439
444
449
454
459
464
469
474
479
484
489
494
499
505
510
515
520
525
532
537
542
547
552
557
562
567
572
578
583
588
593
598
603
608
613
618
623
628
634
640
646
651
658
663
669
674
679
685
691
697
703
709
715
721
727
733
739
745
750
755
762
768
773
778
783
788
793
798
803
807 virtual void
809
813 virtual void
815
819 virtual void
821
825 virtual void
827
831 virtual void
833
837 virtual void
839
848 virtual void
851 const bool a_delete,
853 return;
854 }) noexcept;
855
865 virtual void
871 const bool a_delete,
872 const std::function<void(ItoParticle&)> a_nonDeletionModifier = [](ItoParticle&) -> void {
873 return;
874 }) noexcept;
875
883 virtual void
886 const Real a_tolerance) noexcept;
887
896 virtual void
900 const Real a_tolerance) noexcept;
901
909 virtual void
912 const Real a_tolerance) noexcept;
913
923 virtual void
928 const Real a_tolerance) noexcept;
929
940 virtual void
942 int& a_comp,
943 const EBAMRCellData& a_data,
945 const int a_level,
946 const bool a_interpToCentroids,
947 const bool a_interpGhost) const noexcept;
948
956 virtual void
958 int& a_icomp,
960 const int a_level) const noexcept;
961
969 virtual void
973 std::string& a_minSolver) const noexcept;
974
982 virtual void
986 std::string& a_minSolver) const noexcept;
987
997 virtual void
999 Real& a_sigma,
1002 int& a_minRank,
1003 int& a_maxRank);
1004
1014 virtual void
1017 const std::string a_realm,
1019 const int a_lmin,
1020 const int a_finestLevel) noexcept;
1021
1031 virtual void
1034 const std::string a_realm,
1036 const int a_lmin,
1037 const int a_finestLevel) noexcept;
1038
1046
1051 virtual void
1053
1061
1066 virtual void
1068
1075 virtual void
1079
1085 virtual void
1087
1094 virtual void
1097
1103 virtual void
1105
1111 virtual void
1113
1120
1127 virtual bool
1129
1135 virtual void
1137
1143 virtual void
1145
1151 virtual void
1153
1159 virtual void
1161
1166 virtual void
1168
1173 virtual void
1175
1180 virtual void
1182
1186 virtual void
1188
1194 virtual void
1196
1204 virtual void
1209
1218 virtual void
1222 const int a_level,
1224
1235 virtual void
1239 const int a_level,
1243
1248 virtual void
1250
1258 virtual void
1263
1272 virtual void
1276 const int a_level,
1278
1289 virtual void
1293 const int a_level,
1295 const Box a_box,
1297
1301 virtual void
1303
1308 virtual void
1310
1316 virtual void
1318
1325 virtual void
1327
1337 virtual void
1339 const int a_level,
1341 const Box a_box,
1343
1350 virtual void
1352
1359 virtual void
1361
1371 virtual void
1373 const int a_level,
1375 const Box a_box,
1377
1383 virtual void
1385
1392 virtual void
1394
1404 virtual void
1406 const int a_level,
1408 const Box a_box,
1410
1416 virtual void
1418
1425 virtual void
1427
1438 inline void
1442 const int a_level,
1444
1458 inline void
1462 const int a_level,
1464 const Box a_box,
1465 const Real a_dx,
1467
1476 inline void
1481
1491 inline void
1497
1510 inline void
1515 const int a_level,
1517 const Box a_box,
1519
1526 virtual void
1528
1536 virtual void
1540
1549 virtual void
1552 const int a_level,
1554
1566 virtual void
1569 const int a_level,
1571 const Box a_box,
1572 const Real a_dx,
1574
1578 virtual void
1580
1586 virtual void
1588
1601 virtual void
1610
1616 virtual void
1618
1631 virtual void
1637
1646 virtual void
1648
1654 virtual void
1656
1663
1670
1677
1684
1689 virtual void
1691
1696 virtual void
1698
1703 virtual void
1705
1710 virtual void
1712
1718 virtual void
1720
1724 virtual void
1726
1731 virtual void
1733
1737 virtual void
1739
1743 virtual void
1745
1750 virtual void
1752
1757 virtual void
1759
1763 virtual void
1765
1769 virtual void
1771
1775 virtual void
1777
1781 virtual void
1783
1788 virtual void
1790 };
1791 } // namespace ItoKMC
1792} // namespace Physics
1793
1794#include <CD_NamespaceFooter.H>
1795
1796#include <CD_ItoKMCStepperImplem.H>
1797
1798#endif
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:41
@ 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).
@ All
All plasma species.
@ 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 a computational point particle.
Declaration of a class that holds a set of RtSolvers.
Declaration of a cut-cell ODE solver.
Declaration of main (abstract) time stepper class.
A particle class for use with ItoSolvers, i.e. drifting Brownian walkers.
Definition CD_ItoParticle.H:41
Base class for Ito diffusion particle models.
Definition CD_ItoSolver.H:36
WhichContainer
Enum class for distinguishing various types of particle containers.
Definition CD_ItoSolver.H:50
Radiative transfer equation solver using Monte-Carlo simulation.
Definition CD_McPhoto.H:40
Templated class for holding particles on an AMR hierarchy with particle remapping.
Definition CD_ParticleContainer.H:52
Particle class for usage with Monte Carlo radiative transfer.
Definition CD_Photon.H:30
Abstract TimeStepper for the Ito-KMC-Poisson system of equations.
Definition CD_ItoKMCStepper.H:64
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:2453
Real m_relaxationTime
The relaxation time eps0/sigma.
Definition CD_ItoKMCStepper.H:612
virtual void setupCdr() noexcept
Set up the CDR solvers.
Definition CD_ItoKMCStepperImplem.H:445
Real m_maxReducedField
Storage for the maximum field strength that was computed.
Definition CD_ItoKMCStepper.H:509
bool m_abortOnFailure
Flag for aborting the simulation if the Poisson solver fails to converge.
Definition CD_ItoKMCStepper.H:448
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:1390
RefCountedPtr< SurfaceODESolver< 1 > > m_sigmaSolver
Surface charge solver.
Definition CD_ItoKMCStepper.H:412
virtual void computePhysicsPlotVariables(EBAMRCellData &a_physicsPlotVars) noexcept
Compute physics plot variables.
Definition CD_ItoKMCStepperImplem.H:6017
Vector< EBAMRCellData > m_fluidPhiIto
For holding the Ito species densities on the fluid realm.
Definition CD_ItoKMCStepper.H:650
virtual void computePhysicsDt() noexcept
Compute a physics-based maximum time step.
Definition CD_ItoKMCStepperImplem.H:5242
virtual void computeReactiveMeanEnergiesPerCell(EBAMRCellData &a_meanEnergies) noexcept
Compute the mean particle energy in all grid cells.
Definition CD_ItoKMCStepperImplem.H:3725
EBAMRCellData m_conductivityCell
Cell-centered conductivity.
Definition CD_ItoKMCStepper.H:684
EBAMRCellData m_particleOldItoPPC
For holding the previous number of particles per cell for all species.
Definition CD_ItoKMCStepper.H:720
Real m_particleAdvectionDt
The particle advective time step.
Definition CD_ItoKMCStepper.H:592
Real m_minParticleAdvectionCFL
Minimum CFL-like time step for particle advection.
Definition CD_ItoKMCStepper.H:541
Vector< EBAMRIVData > m_cdrFluxes
CDR fluxes for CDR BCs.
Definition CD_ItoKMCStepper.H:433
virtual void parseRuntimeOptions() noexcept override
Parse runtime configurable options.
Definition CD_ItoKMCStepperImplem.H:110
std::string m_name
Time stepper name.
Definition CD_ItoKMCStepper.H:375
phase::which_phase m_plasmaPhase
Phase where we solve for the plasma.
Definition CD_ItoKMCStepper.H:381
bool m_profile
Profile kernels or not.
Definition CD_ItoKMCStepper.H:463
EBAMRCellData m_neutralDensity
Storage for the neutral density.
Definition CD_ItoKMCStepper.H:678
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:1856
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:2334
Vector< ParticleContainer< PointParticle > > m_cdrPhotoiProducts
Photoionization products to be put in the CDR equations.
Definition CD_ItoKMCStepper.H:657
BoxSorting m_boxSort
Box sorting method when using dual-grid with particle load balancing.
Definition CD_ItoKMCStepper.H:354
Real m_fluidAdvectionDiffusionCFL
CFL-like time step for fluid advection-diffusion.
Definition CD_ItoKMCStepper.H:571
virtual void setupRadiativeTransfer() noexcept
Set up the radiative transfer solver.
Definition CD_ItoKMCStepperImplem.H:464
Real m_physicsDt
The physics-based time step.
Definition CD_ItoKMCStepper.H:617
EBAMRCellData m_electricFieldParticle
Storage for holding the plasma phase electric field on the particle realm.
Definition CD_ItoKMCStepper.H:754
virtual void registerRealms() noexcept override
Register realms used for the simulation.
Definition CD_ItoKMCStepperImplem.H:1537
Real m_particleAdvectionDiffusionDt
The advection-diffusion time step.
Definition CD_ItoKMCStepper.H:602
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:5571
virtual Vector< RefCountedPtr< ItoSolver > > getLoadBalanceSolvers() const noexcept
Get the solvers used for load balancing.
Definition CD_ItoKMCStepperImplem.H:5515
virtual void computeSpaceChargeDensity() noexcept
Compute the space charge. Calls the other version.
Definition CD_ItoKMCStepperImplem.H:1883
bool m_plotCurrentDensity
Plot current density or not.
Definition CD_ItoKMCStepper.H:488
Real m_maxShrinkDt
Maximum permissible time step shrinkage.
Definition CD_ItoKMCStepper.H:524
virtual void fillNeutralDensity() noexcept
Compute the neutral density on the mesh.
Definition CD_ItoKMCStepperImplem.H:1767
virtual void setVoltage(const std::function< Real(const Real a_time)> &a_voltage) noexcept
Set voltage used for the simulation.
Definition CD_ItoKMCStepperImplem.H:1755
virtual void advanceReactionNetwork(const Real a_dt) noexcept
Chemistry advance over time a_dt.
Definition CD_ItoKMCStepperImplem.H:3860
virtual Real getTime() const noexcept
Get current simulation time.
Definition CD_ItoKMCStepperImplem.H:1871
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:5794
virtual void computeDummyPhysicsDt() noexcept
Special routine which performs a dummy KMC advance over a zero time step.
Definition CD_ItoKMCStepperImplem.H:5259
virtual int getNumberOfPlotVariables() const noexcept override
Get number of plot variables for the output file.
Definition CD_ItoKMCStepperImplem.H:887
Vector< ParticleContainer< Photon > > m_secondaryPhotons
List of secondary photons injected through the EB.
Definition CD_ItoKMCStepper.H:426
Real m_loadPerCell
The "background" load per cell when using particle load balancing.
Definition CD_ItoKMCStepper.H:531
EBAMRCellData m_physicsPlotVariables
Storage for physics plot variables.
Definition CD_ItoKMCStepper.H:673
virtual void remapParticles(const SpeciesSubset a_speciesSubset) noexcept
Remap a subset of ItoSolver particles.
Definition CD_ItoKMCStepperImplem.H:2577
Real m_physicsDtFactor
Scaling factor applied to the physics-based time step estimate.
Definition CD_ItoKMCStepper.H:622
bool m_redistributeCDR
Flag for redistributing CDR mass when particles cross the EB.
Definition CD_ItoKMCStepper.H:453
virtual void parseVerbosity() noexcept
Parse chattiness.
Definition CD_ItoKMCStepperImplem.H:137
virtual void computeReactiveCdrParticlesPerCell(EBAMRCellData &a_ppc) noexcept
Compute the number of reactive particles per cell for the CDR solvers.
Definition CD_ItoKMCStepperImplem.H:3618
RefCountedPtr< FieldSolver > m_fieldSolver
Field solver.
Definition CD_ItoKMCStepper.H:407
virtual void registerOperators() noexcept override
Register operators used for the simulation.
Definition CD_ItoKMCStepperImplem.H:1551
EBAMRCellData m_particleScratch1
Scratch storage on the particle realm with 1 component.
Definition CD_ItoKMCStepper.H:787
EBAMRCellData m_EdotJ
Storage for E·J (Ohmic heating) on the fluid realm. 1 component.
Definition CD_ItoKMCStepper.H:772
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:5593
virtual void averageDiffusionCoefficientsCellToFace() noexcept
Average cell-centered diffusion coefficient to faces.
Definition CD_ItoKMCStepperImplem.H:3433
virtual void parsePlotVariables() noexcept
Parse plot variables.
Definition CD_ItoKMCStepperImplem.H:180
virtual void parseSuperParticles() noexcept
Parse the desired number of particles per cell.
Definition CD_ItoKMCStepperImplem.H:216
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:1045
Vector< ParticleContainer< ItoParticle > > m_secondaryParticles
List of secondary particles injected through the EB.
Definition CD_ItoKMCStepper.H:419
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:2018
virtual void computeEdotJSource(const Real a_dt) noexcept
Compute the energy source term for the various plasma species.
Definition CD_ItoKMCStepperImplem.H:5843
EBAMRCellData m_particleItoPPC
For holding the number of physical particles per cell for all Ito species.
Definition CD_ItoKMCStepper.H:702
virtual bool solvePoisson() noexcept
Solve the electrostatic problem.
Definition CD_ItoKMCStepperImplem.H:2112
virtual Real computeQminu() const noexcept
Compute negative charge.
Definition CD_ItoKMCStepperImplem.H:5380
virtual void multiplyCdrVelocitiesByMobilities() noexcept
Multiply CDR solver velocities by mobilities.
Definition CD_ItoKMCStepperImplem.H:2872
virtual void parseRedistributeCDR() noexcept
Parse CDR mass redistribution when assigning reactive products.
Definition CD_ItoKMCStepperImplem.H:166
virtual void computeCurrentDensity(EBAMRCellData &a_J) noexcept
Compute the current density.
Definition CD_ItoKMCStepperImplem.H:2058
TimeCode
An enum for encapsulating how time steps were restricted.
Definition CD_ItoKMCStepper.H:341
Vector< int > m_particlesPerCell
Target number of particles per cell when squishing ItoParticle's into superparticles.
Definition CD_ItoKMCStepper.H:498
Real m_toleranceEB
Accepted tolerance (relative to dx) for EB intersection.
Definition CD_ItoKMCStepper.H:536
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:1112
EBAMRCellData m_fluidScratchD
Scratch storage on the fluid realm with SpaceDim components.
Definition CD_ItoKMCStepper.H:782
bool m_loadBalanceFluid
Load balance fluid realm or not.
Definition CD_ItoKMCStepper.H:478
virtual void parseTimeStepRestrictions() noexcept
Parse time step restrictions.
Definition CD_ItoKMCStepperImplem.H:316
EBAMRIVData m_particleScratchEB
Scratch storage for EB-only data on the particle realm. One component.
Definition CD_ItoKMCStepper.H:802
virtual void fillSecondaryEmissionEB(const Real a_dt) noexcept
Resolve particle injection at EBs.
Definition CD_ItoKMCStepperImplem.H:4809
EBAMRCellData m_particleYPC
For holding the number of generated photons per cell.
Definition CD_ItoKMCStepper.H:708
virtual void initialSigma() noexcept
Fill surface charge solver with initial data taken from the physics interface.
Definition CD_ItoKMCStepperImplem.H:702
ItoKMCStepper() noexcept
Default constructor. Sets default options.
Definition CD_ItoKMCStepperImplem.H:36
EBAMRCellData m_currentDensity
Storage for current density.
Definition CD_ItoKMCStepper.H:668
virtual void printStepReport() noexcept override
Print a step report. Used by Driver for user monitoring of simulation.
Definition CD_ItoKMCStepperImplem.H:1177
virtual void depositParticles(const SpeciesSubset a_speciesSubset) noexcept
Deposit a subset of the ItoSolver particles on the mesh.
Definition CD_ItoKMCStepperImplem.H:2692
Vector< EBAMRCellData > m_cdrMobilities
For holding the mobilities for the CDR species.
Definition CD_ItoKMCStepper.H:633
bool m_regridSuperparticles
Do or do not superparticle merging/splitting on regrids.
Definition CD_ItoKMCStepper.H:468
virtual void setupSigma() noexcept
Set up the surface charge solver.
Definition CD_ItoKMCStepperImplem.H:501
Vector< EBAMRCellData > m_loadBalancePPC
For holding the number of computational particles per cell when load balancing.
Definition CD_ItoKMCStepper.H:627
virtual void setupSolvers() noexcept override
Set up solvers.
Definition CD_ItoKMCStepperImplem.H:410
EBAMRCellData m_fluidPPC
For holding the number of particles per cell for all species.
Definition CD_ItoKMCStepper.H:738
virtual void parseOptions() noexcept
Parse options.
Definition CD_ItoKMCStepperImplem.H:90
virtual void advancePhotons(const Real a_dt) noexcept
Photon advancement routine.
Definition CD_ItoKMCStepperImplem.H:5436
Real m_minDt
Minimum permitted time step.
Definition CD_ItoKMCStepper.H:582
int m_mergeInterval
How often to merge superparticles.
Definition CD_ItoKMCStepper.H:504
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:1600
EBAMRIVData m_fluidScratchEB
Scratch storage for EB-only data on the fluid realm. One component.
Definition CD_ItoKMCStepper.H:797
virtual void parseDualGrid() noexcept
Parse dual or single realm calculations.
Definition CD_ItoKMCStepperImplem.H:240
virtual void reconcilePhotoionization() noexcept
Reconcile the results from photoionization reactions.
Definition CD_ItoKMCStepperImplem.H:4584
EBAMRCellData m_fluidScratch1
Scratch storage on the fluid realm having 1 component.
Definition CD_ItoKMCStepper.H:777
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:5746
EBAMRCellData m_fluidOldCdrPPC
For holding the previous number of physical particles per cell for all CDR species.
Definition CD_ItoKMCStepper.H:732
EBAMRCellData m_kmcDt
Storage for the non-critical time step computed by ItoKMCPhysics.
Definition CD_ItoKMCStepper.H:761
virtual Vector< std::string > getPlotVariableNames() const noexcept override
Get plot variable names.
Definition CD_ItoKMCStepperImplem.H:940
std::string m_fluidRealm
Realm used for the fluid part (i.e., electrostatic) part of the simulation.
Definition CD_ItoKMCStepper.H:365
virtual void sortPhotonsByCell(const McPhoto::WhichContainer a_which) noexcept
Sort photons by cells.
Definition CD_ItoKMCStepperImplem.H:5487
virtual Real computeQplus() const noexcept
Compute positive charge.
Definition CD_ItoKMCStepperImplem.H:5336
virtual void parseLoadBalance() noexcept
Parse load balancing.
Definition CD_ItoKMCStepperImplem.H:263
virtual void computeDriftVelocities() noexcept
Compute ItoSolver velocities.
Definition CD_ItoKMCStepperImplem.H:2898
EBAMRCellData m_electricFieldFluid
Storage for holding the plasma phase electric field on the fluid realm.
Definition CD_ItoKMCStepper.H:749
Real m_prevDt
Previous time step.
Definition CD_ItoKMCStepper.H:514
std::string m_particleRealm
Realm used for the particle part of the simulation.
Definition CD_ItoKMCStepper.H:370
EBAMRCellData m_particleScratchD
Scratch storage on the particle realm with SpaceDim components.
Definition CD_ItoKMCStepper.H:792
Real m_fluidAdvectionDiffusionDt
The advection-diffusion time step for the CDR equations.
Definition CD_ItoKMCStepper.H:607
Vector< EBAMRCellData > m_fluidGradPhiCDR
For holding the gradient of all CDR species densities.
Definition CD_ItoKMCStepper.H:639
virtual void setupPoisson() noexcept
Set up the electrostatic field solver.
Definition CD_ItoKMCStepperImplem.H:484
Real m_relaxTimeFactor
Factor proportional to the dielectric relaxation time dtRelax = eps0/sigma.
Definition CD_ItoKMCStepper.H:577
RefCountedPtr< CdrLayout< CdrSolver > > m_cdr
CDR solvers.
Definition CD_ItoKMCStepper.H:397
virtual void setupIto() noexcept
Set up the Ito particle solvers.
Definition CD_ItoKMCStepperImplem.H:426
virtual Real computeQsurf() const noexcept
Compute surface charge.
Definition CD_ItoKMCStepperImplem.H:5424
virtual Real computeDt() override
Compute a time step used for the advance method.
Definition CD_ItoKMCStepperImplem.H:1422
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:1158
virtual Real computeTotalCharge() const noexcept
Compute total charge.
Definition CD_ItoKMCStepperImplem.H:5316
virtual void resolveSecondaryEmissionEB(const Real a_dt) noexcept
Resolve secondary emission at the EB.
Definition CD_ItoKMCStepperImplem.H:5082
Real m_maxDt
Maximum permitted time step.
Definition CD_ItoKMCStepper.H:587
TimeCode m_timeCode
Time code for understanding how the time step was restricted.
Definition CD_ItoKMCStepper.H:359
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:1698
Real m_minParticleAdvectionDiffusionCFL
Maximum CFL-like time step for particle advection-diffusion.
Definition CD_ItoKMCStepper.H:561
EBAMRCellData m_fluidCdrPPC
For holding the number of physical particles per cell for all CDR species.
Definition CD_ItoKMCStepper.H:726
EBAMRFluxData m_conductivityFace
Face-centered conductivity.
Definition CD_ItoKMCStepper.H:690
virtual void computeDiffusionCoefficients() noexcept
Compute mesh-based diffusion coefficients for LFA coupling.
Definition CD_ItoKMCStepperImplem.H:3149
virtual void allocateInternals() noexcept
Allocate "internal" storage.
Definition CD_ItoKMCStepperImplem.H:536
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:5550
bool m_plotParticlesPerPatch
Plot number of particles per patch or not.
Definition CD_ItoKMCStepper.H:493
virtual Real computeMaxReducedElectricField(const phase::which_phase a_phase) const noexcept
Compute the maximum electric field (norm)
Definition CD_ItoKMCStepperImplem.H:1824
EBAMRIVData m_conductivityEB
EB-centered conductivity.
Definition CD_ItoKMCStepper.H:696
Vector< EBAMRIVData > m_cdrFluxesExtrap
Extrapolated CDR fluxes.
Definition CD_ItoKMCStepper.H:438
Real m_maxParticleAdvectionCFL
Maximum CFL-like time step for particle advection.
Definition CD_ItoKMCStepper.H:546
virtual void setCdrVelocityFunctions() noexcept
Set the Cdr velocities to be sgn(charge) * E.
Definition CD_ItoKMCStepperImplem.H:2838
virtual void postRegrid() noexcept override
Perform post-regrid operations.
Definition CD_ItoKMCStepperImplem.H:1742
virtual Real computeRelaxationTime() noexcept
Compute the dielectric relaxation time.
Definition CD_ItoKMCStepperImplem.H:2077
virtual void parseParametersEB() noexcept
Parse parameters related to how we treat particle-EB interaction.
Definition CD_ItoKMCStepperImplem.H:394
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:664
Real m_maxParticleDiffusionCFL
Maximum CFL-like time step for particle diffusion.
Definition CD_ItoKMCStepper.H:556
virtual void postPlot() noexcept override
Perform post-plot operations.
Definition CD_ItoKMCStepperImplem.H:1588
virtual ~ItoKMCStepper() noexcept
Destructor.
Definition CD_ItoKMCStepperImplem.H:83
RefCountedPtr< ItoKMCPhysics > m_physics
Implementation of ItoKMCPhysics.
Definition CD_ItoKMCStepper.H:387
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:1294
virtual void computeReactiveItoParticlesPerCell(EBAMRCellData &a_ppc) noexcept
Compute the number of reactive particles per cell.
Definition CD_ItoKMCStepperImplem.H:3498
bool m_dualGrid
Using dual grid or not.
Definition CD_ItoKMCStepper.H:458
EBAMRCellData m_fluidYPC
For holding the number of generated photons per cell.
Definition CD_ItoKMCStepper.H:744
virtual void allocate() noexcept override
Allocate storage for solvers.
Definition CD_ItoKMCStepperImplem.H:518
RefCountedPtr< RtLayout< McPhoto > > m_rte
Radiative transfer solvers.
Definition CD_ItoKMCStepper.H:402
bool m_plotConductivity
Plot conductivity or not.
Definition CD_ItoKMCStepper.H:483
virtual void parseExitOnFailure() noexcept
Parse exit on failure.
Definition CD_ItoKMCStepperImplem.H:152
RefCountedPtr< ItoLayout< ItoSolver > > m_ito
Ito solvers.
Definition CD_ItoKMCStepper.H:392
Vector< int > m_loadBalanceIndices
Solver indices used when load-balancing the particle solvers.
Definition CD_ItoKMCStepper.H:662
EBAMRCellData m_particleEPS
For holding the mean particle energy.
Definition CD_ItoKMCStepper.H:714
std::function< Real(const Real a_time)> m_voltage
Voltage curve on the electrodes used in the simulation.
Definition CD_ItoKMCStepper.H:443
virtual void reconcileCdrDensities(const EBAMRCellData &a_newParticlesPerCell, const EBAMRCellData &a_oldParticlesPerCell, const Real a_dt) noexcept
Reconcile the CDR densities after the reaction network.
Definition CD_ItoKMCStepperImplem.H:4634
virtual void computeConductivityCell(EBAMRCellData &a_conductivity) noexcept
Compute the cell-centered conductiivty.
Definition CD_ItoKMCStepperImplem.H:1950
void reconcileParticles(const EBAMRCellData &a_newParticlesPerCell, const EBAMRCellData &a_oldParticlesPerCell, const EBAMRCellData &a_newPhotonsPerCell, const EBAMRCellData &a_electricField) const noexcept
Reconcile particles. At the bottom, this will call the physics interface for particle reconciliation.
Definition CD_ItoKMCStepperImplem.H:4233
Real m_minParticleDiffusionCFL
Minimum CFL-like time step for particle diffusion.
Definition CD_ItoKMCStepper.H:551
virtual void postCheckpointPoisson() noexcept
Do some post-checkpoint operations for the electrostatic part.
Definition CD_ItoKMCStepperImplem.H:770
virtual void prePlot() noexcept override
Perform pre-plot operations.
Definition CD_ItoKMCStepperImplem.H:1567
virtual void postInitialize() noexcept override
Post-initialization operations. Default does nothing.
Definition CD_ItoKMCStepperImplem.H:654
Real m_maxParticleAdvectionDiffusionCFL
Maximum CFL-like time step for particle advection-diffusion.
Definition CD_ItoKMCStepper.H:566
virtual void coarsenCDRSolvers() noexcept
Coarsen data for CDR solvers.
Definition CD_ItoKMCStepperImplem.H:4783
virtual void postCheckpointSetup() noexcept override
Perform post-checkpoint operations.
Definition CD_ItoKMCStepperImplem.H:751
Real m_particleDiffusionDt
The particle diffusive time step.
Definition CD_ItoKMCStepper.H:597
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:1343
Vector< EBAMRCellData > m_energySources
Storage for holding the energy sources for each species.
Definition CD_ItoKMCStepper.H:767
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:991
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.
Definition CD_ItoKMCStepperImplem.H:2151
Real m_maxGrowthDt
Maximum permissible time step growth.
Definition CD_ItoKMCStepper.H:519
virtual void computeMobilities() noexcept
Compute mesh-based mobilities for LFA coupling.
Definition CD_ItoKMCStepperImplem.H:2923
virtual void setItoVelocityFunctions() noexcept
Set the Ito velocity functions. This is sgn(charge) * E.
Definition CD_ItoKMCStepperImplem.H:2807
Vector< EBAMRCellData > m_fluidGradPhiIto
For holding the gradient of all Ito species densities.
Definition CD_ItoKMCStepper.H:645
bool m_loadBalanceParticles
Load balance particle realm or not.
Definition CD_ItoKMCStepper.H:473
virtual void sortPhotonsByPatch(const McPhoto::WhichContainer a_which) noexcept
Sort photons by patch.
Definition CD_ItoKMCStepperImplem.H:5501
virtual void getPhysicalParticlesPerCell(EBAMRCellData &a_ppc) const noexcept
Get the physical number of particles per cell.
Definition CD_ItoKMCStepperImplem.H:3476
Base class for advancing equations.
Definition CD_TimeStepper.H:31
Base class for a tracer particle solver. This solver can advance particles in a pre-defined velocity ...
Definition CD_TracerParticleSolver.H:38
TracerParticleSolver()
Default constructor.
Definition CD_TracerParticleSolverImplem.H:26
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