chombo-discharge
Loading...
Searching...
No Matches
CD_ItoKMCStepper.H
Go to the documentation of this file.
1/* chombo-discharge
2 * Copyright © 2021 SINTEF Energy Research.
3 * Please refer to Copyright.txt and LICENSE in the chombo-discharge root directory.
4 */
5
12#ifndef CD_ItoKMCStepper_H
13#define CD_ItoKMCStepper_H
14
15// Std includes
16#include <functional>
17
18// Our includes
19#include <CD_TimeStepper.H>
20#include <CD_ItoKMCPhysics.H>
21#include <CD_ItoLayout.H>
22#include <CD_CdrLayout.H>
23#include <CD_PointParticle.H>
24#include <CD_RtLayout.H>
25#include <CD_McPhoto.H>
26#include <CD_FieldSolver.H>
27#include <CD_ItoSolver.H>
28#include <CD_CdrCTU.H>
29#include <CD_FieldSolverGMG.H>
30#include <CD_SurfaceODESolver.H>
31#include <CD_NamespaceHeader.H>
32
33namespace Physics {
34 namespace ItoKMC {
35
39 enum class SpeciesSubset
40 {
41 All,
42 AllMobile,
43 AllDiffusive,
44 AllMobileOrDiffusive,
45 AllMobileAndDiffusive,
46 Charged,
47 ChargedMobile,
48 ChargedDiffusive,
49 ChargedMobileOrDiffusive,
50 ChargedMobileAndDiffusive,
51 Stationary,
52 };
53
58 template <typename I = ItoSolver, typename C = CdrCTU, typename R = McPhoto, typename F = FieldSolverGMG>
60 {
61 public:
62 static_assert(std::is_base_of<ItoSolver, I>::value, "I must derive from ItoSolver");
63 static_assert(std::is_base_of<CdrSolver, C>::value, "C must derive from CdrSolver");
64 static_assert(std::is_base_of<McPhoto, R>::value, "R must derive from McPhoto");
65 static_assert(std::is_base_of<FieldSolver, FieldSolverGMG>::value, "F must derive from FieldSolver");
66
70 ItoKMCStepper() noexcept;
71
77
81 virtual ~ItoKMCStepper() noexcept;
82
86 virtual void
87 parseOptions() noexcept;
88
92 virtual void
93 parseRuntimeOptions() noexcept override;
94
98 virtual void
99 allocate() noexcept override;
100
104 virtual void
105 setupSolvers() noexcept override;
106
110 virtual void
111 initialData() noexcept override;
112
117 virtual void
118 postCheckpointSetup() noexcept override;
119
123 virtual void
124 postInitialize() noexcept override;
125
126#ifdef CH_USE_HDF5
131 virtual void
132 writeCheckpointHeader(HDF5HeaderData& a_header) const noexcept override;
133#endif
134
135#ifdef CH_USE_HDF5
140 virtual void
141 readCheckpointHeader(HDF5HeaderData& a_header) noexcept override;
142#endif
143
144#ifdef CH_USE_HDF5
150 virtual void
151 writeCheckpointData(HDF5Handle& a_handle, const int a_lvl) const noexcept override;
152#endif
153
154#ifdef CH_USE_HDF5
160 virtual void
161 readCheckpointData(HDF5Handle& a_handle, const int a_lvl) noexcept override;
162#endif
163
167 virtual int
168 getNumberOfPlotVariables() const noexcept override;
169
173 virtual Vector<std::string>
174 getPlotVariableNames() const noexcept override;
175
183 virtual void
185 int& a_icomp,
187 const int a_level) const noexcept override;
188
198 virtual Vector<long int>
199 getCheckpointLoads(const std::string a_realm, const int a_level) const override;
200
206 virtual Real
207 advance(const Real a_dt) override = 0;
208
212 virtual Real
213 computeDt() override;
214
221 virtual void
222 synchronizeSolverTimes(const int a_step, const Real a_time, const Real a_dt) noexcept override;
223
227 virtual void
229
233 virtual void
235
239 virtual void
241
245 virtual void
247
251 virtual void
253
259 virtual void
261
268 virtual void
270
274 virtual void
276
281 virtual bool
283
297 virtual void
300 const std::string a_realm,
302 const int a_lmin,
304
310 virtual void
312
319
325 virtual void
327
328 protected:
333 {
334 AdvectionIto,
335 DiffusionIto,
336 AdvectionDiffusionIto,
337 AdvectionDiffusionCDR,
338 RelaxationTime,
339 Hardcap,
340 Physics
341 };
342
347
352
358
363
368
373 phase::which_phase m_plasmaPhase;
374
380
385
390
395
400
405
412
419
426
431
436
441
446
451
456
461
466
471
476
481
486
491
497
502
507
512
517
524
529
534
539
544
549
554
559
564
570
575
580
585
590
595
600
605
610
615
620
626
632
638
643
650
655
661
666
671
677
683
689
695
701
707
713
719
725
731
737
742
747
754
760
765
770
775
780
785
790
795
799 virtual void
801
805 virtual void
807
811 virtual void
813
817 virtual void
819
823 virtual void
825
829 virtual void
831
841 virtual void
844 const bool a_delete,
846 return;
847 }) noexcept;
848
859 virtual void
865 const bool a_delete,
866 const std::function<void(ItoParticle&)> a_nonDeletionModifier = [](ItoParticle&) -> void {
867 return;
868 }) noexcept;
869
877 virtual void
880 const Real a_tolerance) noexcept;
881
890 virtual void
894 const Real a_tolerance) noexcept;
895
903 virtual void
906 const Real a_tolerance) noexcept;
907
917 virtual void
922 const Real a_tolerance) noexcept;
923
934 virtual void
936 int& a_comp,
937 const EBAMRCellData& a_data,
939 const int a_level,
940 const bool a_interpToCentroids,
941 const bool a_interpGhost) const noexcept;
942
950 virtual void
952 int& a_icomp,
954 const int a_level) const noexcept;
955
963 virtual void
967 std::string& a_minSolver) const noexcept;
968
976 virtual void
980 std::string& a_minSolver) const noexcept;
981
991 virtual void
993 Real& a_sigma,
996 int& a_minRank,
997 int& a_maxRank);
998
1008 virtual void
1011 const std::string a_realm,
1013 const int a_lmin,
1014 const int a_finestLevel) noexcept;
1015
1025 virtual void
1028 const std::string a_realm,
1030 const int a_lmin,
1031 const int a_finestLevel) noexcept;
1032
1039
1044 virtual void
1046
1053
1058 virtual void
1060
1067 virtual void
1071
1077 virtual void
1079
1086 virtual void
1089
1095 virtual void
1097
1102 virtual void
1104
1110
1117 virtual bool
1119
1124 virtual void
1126
1132 virtual void
1134
1140 virtual void
1142
1148 virtual void
1150
1155 virtual void
1157
1162 virtual void
1164
1169 virtual void
1171
1175 virtual void
1177
1183 virtual void
1185
1193 virtual void
1198
1207 virtual void
1211 const int a_level,
1213
1224 virtual void
1228 const int a_level,
1232
1237 virtual void
1239
1247 virtual void
1252
1261 virtual void
1265 const int a_level,
1267
1280 virtual void
1284 const int a_level,
1286 const Box a_box,
1288
1292 virtual void
1294
1299 virtual void
1301
1307 virtual void
1309
1316 virtual void
1318
1328 virtual void
1330 const int a_level,
1332 const Box a_box,
1334
1341 virtual void
1343
1350 virtual void
1352
1362 virtual void
1364 const int a_level,
1366 const Box a_box,
1368
1374 virtual void
1376
1383 virtual void
1385
1395 virtual void
1397 const int a_level,
1399 const Box a_box,
1401
1407 virtual void
1409
1416 virtual void
1418
1429 inline void
1433 const int a_level,
1435
1449 inline void
1453 const int a_level,
1455 const Box a_box,
1456 const Real a_dx,
1458
1467 inline void
1472
1482 inline void
1488
1501 inline void
1506 const int a_level,
1508 const Box a_box,
1510
1517 virtual void
1519
1527 virtual void
1531
1540 virtual void
1543 const int a_level,
1545
1557 virtual void
1560 const int a_level,
1562 const Box a_box,
1563 const Real a_dx,
1565
1569 virtual void
1571
1577 virtual void
1579
1592 virtual void
1601
1607 virtual void
1609
1622 virtual void
1628
1637 virtual void
1639
1645 virtual void
1647
1653
1659
1665
1671
1676 virtual void
1678
1683 virtual void
1685
1690 virtual void
1692
1697 virtual void
1699
1705 virtual void
1707
1711 virtual void
1713
1718 virtual void
1720
1724 virtual void
1726
1730 virtual void
1732
1737 virtual void
1739
1744 virtual void
1746
1750 virtual void
1752
1756 virtual void
1758
1762 virtual void
1764
1768 virtual void
1770
1775 virtual void
1777 };
1778 } // namespace ItoKMC
1779} // namespace Physics
1780
1781#include <CD_NamespaceFooter.H>
1782
1783#include <CD_ItoKMCStepperImplem.H>
1784
1785#endif
BoxSorting
Enum for sorting boxes.
Definition CD_BoxSorting.H:21
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:22
Declaration of FieldSolverGMG.
Contains declaration of a base electrostatics solver class.
Main file for describing Ito-based plasma physics.
Implementation of CD_ItoKMCStepper.H.
SpeciesSubset
Enum for differentiating between types of particles.
Definition CD_ItoKMCStepper.H:40
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:40
Base class for Ito diffusion particle models.
Definition CD_ItoSolver.H:35
WhichContainer
Enum class for distinguishing various types of particle containers.
Definition CD_ItoSolver.H:49
Radiative tranfer equation solver using Monte-Carlo simulation.
Definition CD_McPhoto.H:39
Templated class for holding particles on an AMR hierarchy with particle remapping.
Definition CD_ParticleContainer.H:51
Particle class for usage with Monte Carlo radiative transfer.
Definition CD_Photon.H:29
Base time stepper class that advances the Ito-KMC-Poisson system of equations. If you want a differen...
Definition CD_ItoKMCStepper.H:60
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:2444
Real m_relaxationTime
The relaxation time eps0/sigma.
Definition CD_ItoKMCStepper.H:604
virtual void setupCdr() noexcept
Set up the CDR solvers.
Definition CD_ItoKMCStepperImplem.H:444
Real m_maxReducedField
Storage for the maximum field strength that was computed.
Definition CD_ItoKMCStepper.H:501
bool m_abortOnFailure
Flag for abandoning simulation of Poisson solver fails.
Definition CD_ItoKMCStepper.H:440
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:1389
RefCountedPtr< SurfaceODESolver< 1 > > m_sigmaSolver
Surface charge solver.
Definition CD_ItoKMCStepper.H:404
virtual void computePhysicsPlotVariables(EBAMRCellData &a_physicsPlotVars) noexcept
Compute physics plot variables.
Definition CD_ItoKMCStepperImplem.H:5993
Vector< EBAMRCellData > m_fluidPhiIto
For holding the Ito species densities on the fluid realm.
Definition CD_ItoKMCStepper.H:642
virtual void computePhysicsDt() noexcept
Compute a physics-based maximum time step.
Definition CD_ItoKMCStepperImplem.H:5218
virtual void computeReactiveMeanEnergiesPerCell(EBAMRCellData &a_meanEnergies) noexcept
Compute the mean particle energy in all grid cells.
Definition CD_ItoKMCStepperImplem.H:3712
EBAMRCellData m_conductivityCell
Cell-centered conductivity.
Definition CD_ItoKMCStepper.H:676
EBAMRCellData m_particleOldItoPPC
For holding the previous number of particles per cell for all species.
Definition CD_ItoKMCStepper.H:712
Real m_particleAdvectionDt
The particle advective time step.
Definition CD_ItoKMCStepper.H:584
Real m_minParticleAdvectionCFL
Minimum CFL-like time step for particle advection.
Definition CD_ItoKMCStepper.H:533
Vector< EBAMRIVData > m_cdrFluxes
CDR fluxes for CDR BCs.
Definition CD_ItoKMCStepper.H:425
virtual void parseRuntimeOptions() noexcept override
Parse runtime configurable options.
Definition CD_ItoKMCStepperImplem.H:109
std::string m_name
Time stepper name.
Definition CD_ItoKMCStepper.H:367
phase::which_phase m_plasmaPhase
Phase where we solve for the plasma.
Definition CD_ItoKMCStepper.H:373
bool m_profile
Profile kernels or not.
Definition CD_ItoKMCStepper.H:455
EBAMRCellData m_neutralDensity
Storage for the neutral density.
Definition CD_ItoKMCStepper.H:670
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:1849
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:2325
Vector< ParticleContainer< PointParticle > > m_cdrPhotoiProducts
Photoionization products to be put in the CDR equations.
Definition CD_ItoKMCStepper.H:649
BoxSorting m_boxSort
Box sorting method when using dual-grid with particle load balancing.
Definition CD_ItoKMCStepper.H:346
Real m_fluidAdvectionDiffusionCFL
CFL-like time step for fluid advection-diffusion.
Definition CD_ItoKMCStepper.H:563
virtual void setupRadiativeTransfer() noexcept
Set up the radiative transfer solver.
Definition CD_ItoKMCStepperImplem.H:463
Real m_physicsDt
The physics-based time step.
Definition CD_ItoKMCStepper.H:609
EBAMRCellData m_electricFieldParticle
Storage for holding the plasma phase electric field on the particle realm.
Definition CD_ItoKMCStepper.H:746
virtual void registerRealms() noexcept override
Register realms used for the simulation.
Definition CD_ItoKMCStepperImplem.H:1536
Real m_particleAdvectionDiffusionDt
The advection-diffusion time step.
Definition CD_ItoKMCStepper.H:594
virtual Vector< RefCountedPtr< ItoSolver > > getLoadBalanceSolvers() const noexcept
Get the solvers used for load balancing.
Definition CD_ItoKMCStepperImplem.H:5491
virtual void computeSpaceChargeDensity() noexcept
Compute the space charge. Calls the other version.
Definition CD_ItoKMCStepperImplem.H:1876
bool m_plotCurrentDensity
Plot conductivity or not.
Definition CD_ItoKMCStepper.H:480
Real m_maxShrinkDt
Maximum permissible time step shrinkage.
Definition CD_ItoKMCStepper.H:516
virtual void fillNeutralDensity() noexcept
Compute the neutral density on the mesh.
Definition CD_ItoKMCStepperImplem.H:1765
virtual void setVoltage(const std::function< Real(const Real a_time)> &a_voltage) noexcept
Set voltage used for the simulation.
Definition CD_ItoKMCStepperImplem.H:1753
virtual void advanceReactionNetwork(const Real a_dt) noexcept
Chemistry advance over time a_dt.
Definition CD_ItoKMCStepperImplem.H:3847
virtual Real getTime() const noexcept
Get current simulation time.
Definition CD_ItoKMCStepperImplem.H:1864
virtual void computeDummyPhysicsDt() noexcept
Special routine which performs a dummy KMC advance over a zero time step.
Definition CD_ItoKMCStepperImplem.H:5235
virtual int getNumberOfPlotVariables() const noexcept override
Get number of plot variables for the output file.
Definition CD_ItoKMCStepperImplem.H:886
Vector< ParticleContainer< Photon > > m_secondaryPhotons
List of secondary photons injected through the EB.
Definition CD_ItoKMCStepper.H:418
Real m_loadPerCell
The "background" load per cell when using particle load balancing.
Definition CD_ItoKMCStepper.H:523
EBAMRCellData m_physicsPlotVariables
Storage for physics plot variables.
Definition CD_ItoKMCStepper.H:665
virtual void remapParticles(const SpeciesSubset a_speciesSubset) noexcept
Remap a subset of ItoSolver particles.
Definition CD_ItoKMCStepperImplem.H:2568
Real m_physicsDtFactor
Relative factor for controlling.
Definition CD_ItoKMCStepper.H:614
bool m_redistributeCDR
Flag for abandoning simulation of Poisson solver fails.
Definition CD_ItoKMCStepper.H:445
virtual void parseVerbosity() noexcept
Parse chattiness.
Definition CD_ItoKMCStepperImplem.H:136
virtual void computeReactiveCdrParticlesPerCell(EBAMRCellData &a_ppc) noexcept
Compute the number of reactive particles per cell for the CDR solvers.
Definition CD_ItoKMCStepperImplem.H:3607
RefCountedPtr< FieldSolver > m_fieldSolver
Field solver.
Definition CD_ItoKMCStepper.H:399
virtual void registerOperators() noexcept override
Register operators used for the simulation.
Definition CD_ItoKMCStepperImplem.H:1550
EBAMRCellData m_particleScratch1
Scratch storage on the particle realm with 1 component.
Definition CD_ItoKMCStepper.H:779
EBAMRCellData m_EdotJ
Storage for holdnig E*J on the fluid realm. 1 component.
Definition CD_ItoKMCStepper.H:764
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:5569
virtual void averageDiffusionCoefficientsCellToFace() noexcept
Average cell-centered diffusion coefficient to faces.
Definition CD_ItoKMCStepperImplem.H:3423
virtual void parsePlotVariables() noexcept
Parse plot variables.
Definition CD_ItoKMCStepperImplem.H:179
virtual void parseSuperParticles() noexcept
Parse the desired number of particles per cell.
Definition CD_ItoKMCStepperImplem.H:215
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:1044
Vector< ParticleContainer< ItoParticle > > m_secondaryParticles
List of secondary particles injected through the EB.
Definition CD_ItoKMCStepper.H:411
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:2011
virtual void computeEdotJSource(const Real a_dt) noexcept
Compute the energy source term for the various plasma species.
Definition CD_ItoKMCStepperImplem.H:5819
EBAMRCellData m_particleItoPPC
For holding the number of physical particles per cell for all Ito species.
Definition CD_ItoKMCStepper.H:694
virtual bool solvePoisson() noexcept
Solve the electrostatic problem.
Definition CD_ItoKMCStepperImplem.H:2103
virtual Real computeQminu() const noexcept
Compute negative charge.
Definition CD_ItoKMCStepperImplem.H:5356
virtual void multiplyCdrVelocitiesByMobilities() noexcept
Multiply CDR solver velocities by mobilities.
Definition CD_ItoKMCStepperImplem.H:2863
virtual void parseRedistributeCDR() noexcept
Parse CDR mass redistribution when assigning reactive products.
Definition CD_ItoKMCStepperImplem.H:165
virtual void computeCurrentDensity(EBAMRCellData &a_J) noexcept
Compute the current density.
Definition CD_ItoKMCStepperImplem.H:2051
TimeCode
An enum for encapsulating how time steps were restricted.
Definition CD_ItoKMCStepper.H:333
Vector< int > m_particlesPerCell
Target number of particles per cell when squishing ItoParticle's into superparticles.
Definition CD_ItoKMCStepper.H:490
Real m_toleranceEB
Accepted tolerance (relative to dx) for EB intersection.
Definition CD_ItoKMCStepper.H:528
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:1111
EBAMRCellData m_fluidScratchD
Scratch storage on the fluid realm with SpaceDim components.
Definition CD_ItoKMCStepper.H:774
bool m_loadBalanceFluid
Load balance fluid realm or not.
Definition CD_ItoKMCStepper.H:470
virtual void parseTimeStepRestrictions() noexcept
Parse time step restrictions.
Definition CD_ItoKMCStepperImplem.H:315
EBAMRIVData m_particleScratchEB
Scratch storage for EB-only data on the particle realm. One component.
Definition CD_ItoKMCStepper.H:794
virtual void fillSecondaryEmissionEB(const Real a_dt) noexcept
Resolve particle injection at EBs.
Definition CD_ItoKMCStepperImplem.H:4794
EBAMRCellData m_particleYPC
For holding the number of generated photons per cell.
Definition CD_ItoKMCStepper.H:700
virtual void initialSigma() noexcept
Fill surface charge solver with initial data taken from the physics interface.
Definition CD_ItoKMCStepperImplem.H:701
ItoKMCStepper() noexcept
Default constructor. Sets default options.
Definition CD_ItoKMCStepperImplem.H:35
EBAMRCellData m_currentDensity
Storage for current density.
Definition CD_ItoKMCStepper.H:660
virtual void printStepReport() noexcept override
Print a step report. Used by Driver for user monitoring of simulation.
Definition CD_ItoKMCStepperImplem.H:1176
virtual void depositParticles(const SpeciesSubset a_speciesSubset) noexcept
Deposit a subset of the ItoSolver particles on the mesh.
Definition CD_ItoKMCStepperImplem.H:2683
Vector< EBAMRCellData > m_cdrMobilities
For holding the mobilities for the CDR species.
Definition CD_ItoKMCStepper.H:625
bool m_regridSuperparticles
Do or do not superparticle merging/splitting on regrids.
Definition CD_ItoKMCStepper.H:460
virtual void setupSigma() noexcept
Set up the surface charge solver.
Definition CD_ItoKMCStepperImplem.H:500
Vector< EBAMRCellData > m_loadBalancePPC
For holding the number of computational particles per cell when load balancing.
Definition CD_ItoKMCStepper.H:619
virtual void setupSolvers() noexcept override
Set up solvers.
Definition CD_ItoKMCStepperImplem.H:409
EBAMRCellData m_fluidPPC
For holding the number of particles per cell for all species.
Definition CD_ItoKMCStepper.H:730
virtual void parseOptions() noexcept
Parse options.
Definition CD_ItoKMCStepperImplem.H:89
virtual void advancePhotons(const Real a_dt) noexcept
Photon advancement routine.
Definition CD_ItoKMCStepperImplem.H:5412
Real m_minDt
Minimum permitted time step.
Definition CD_ItoKMCStepper.H:574
int m_mergeInterval
How often to merge superparticles.
Definition CD_ItoKMCStepper.H:496
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:1598
EBAMRIVData m_fluidScratchEB
Scratch storage for EB-only data on the fluid realm. One component.
Definition CD_ItoKMCStepper.H:789
virtual void parseDualGrid() noexcept
Parse dual or single realm calculations.
Definition CD_ItoKMCStepperImplem.H:239
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:5547
virtual void reconcilePhotoionization() noexcept
Reconcile the results from photoionization reactions.
Definition CD_ItoKMCStepperImplem.H:4569
EBAMRCellData m_fluidScratch1
Scratch storage on the fluid realm having 1 component.
Definition CD_ItoKMCStepper.H:769
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:5722
EBAMRCellData m_fluidOldCdrPPC
For holding the previous number of physical particles per cell for all CDR species.
Definition CD_ItoKMCStepper.H:724
EBAMRCellData m_kmcDt
Storage for the non-critical time step computed by ItoKMCPhysics.
Definition CD_ItoKMCStepper.H:753
virtual Vector< std::string > getPlotVariableNames() const noexcept override
Get plot variable names.
Definition CD_ItoKMCStepperImplem.H:939
std::string m_fluidRealm
Realm used for the fluid part (i.e., electrostatic) part of the simulation.
Definition CD_ItoKMCStepper.H:357
virtual void sortPhotonsByCell(const McPhoto::WhichContainer a_which) noexcept
Sort photons by cells.
Definition CD_ItoKMCStepperImplem.H:5463
virtual Real computeQplus() const noexcept
Compute positive charge.
Definition CD_ItoKMCStepperImplem.H:5312
virtual void parseLoadBalance() noexcept
Parse load balancing.
Definition CD_ItoKMCStepperImplem.H:262
virtual void computeDriftVelocities() noexcept
Compute ItoSolver velocities.
Definition CD_ItoKMCStepperImplem.H:2889
EBAMRCellData m_electricFieldFluid
Storage for holding the plasma phase electric field on the fluid realm.
Definition CD_ItoKMCStepper.H:741
Real m_prevDt
Previous time step.
Definition CD_ItoKMCStepper.H:506
std::string m_particleRealm
Realm used for the particle part of the simulation.
Definition CD_ItoKMCStepper.H:362
EBAMRCellData m_particleScratchD
Scratch storage on the particle realm with SpaceDim components.
Definition CD_ItoKMCStepper.H:784
Real m_fluidAdvectionDiffusionDt
The advection-diffusion time step for the CDR equations.
Definition CD_ItoKMCStepper.H:599
Vector< EBAMRCellData > m_fluidGradPhiCDR
For holding the gradient of all CDR species densities.
Definition CD_ItoKMCStepper.H:631
virtual void setupPoisson() noexcept
Set up the electrostatic field solver.
Definition CD_ItoKMCStepperImplem.H:483
Real m_relaxTimeFactor
Factor proportional to the dielectric relaxation time dtRelax = eps0/sigma.
Definition CD_ItoKMCStepper.H:569
RefCountedPtr< CdrLayout< CdrSolver > > m_cdr
CDR solvers.
Definition CD_ItoKMCStepper.H:389
virtual void setupIto() noexcept
Set up the Ito particle solvers.
Definition CD_ItoKMCStepperImplem.H:425
virtual Real computeQsurf() const noexcept
Compute surface charge.
Definition CD_ItoKMCStepperImplem.H:5400
virtual Real computeDt() override
Compute a time step used for the advance method.
Definition CD_ItoKMCStepperImplem.H:1421
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:1157
virtual Real computeTotalCharge() const noexcept
Compute total charge.
Definition CD_ItoKMCStepperImplem.H:5292
virtual void resolveSecondaryEmissionEB(const Real a_dt) noexcept
Resolve secondary emission at the EB.
Definition CD_ItoKMCStepperImplem.H:5067
Real m_maxDt
Maximum permitted time step.
Definition CD_ItoKMCStepper.H:579
TimeCode m_timeCode
Time code for understanding how the time step was restricted.
Definition CD_ItoKMCStepper.H:351
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:1696
Real m_minParticleAdvectionDiffusionCFL
Maximum CFL-like time step for particle advection-diffusion.
Definition CD_ItoKMCStepper.H:553
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:5770
EBAMRCellData m_fluidCdrPPC
For holding the number of physical particles per cell for all CDR species.
Definition CD_ItoKMCStepper.H:718
EBAMRFluxData m_conductivityFace
Face-centered conductivity.
Definition CD_ItoKMCStepper.H:682
virtual void computeDiffusionCoefficients() noexcept
Compute mesh-based diffusion coefficients for LFA coupling.
Definition CD_ItoKMCStepperImplem.H:3139
virtual void allocateInternals() noexcept
Allocate "internal" storage.
Definition CD_ItoKMCStepperImplem.H:535
bool m_plotParticlesPerPatch
Plot number of particles per patch or not.
Definition CD_ItoKMCStepper.H:485
virtual Real computeMaxReducedElectricField(const phase::which_phase a_phase) const noexcept
Compute the maximum electric field (norm)
Definition CD_ItoKMCStepperImplem.H:1820
EBAMRIVData m_conductivityEB
EB-centered conductivity.
Definition CD_ItoKMCStepper.H:688
Vector< EBAMRIVData > m_cdrFluxesExtrap
Extrapolated CDR fluxes.
Definition CD_ItoKMCStepper.H:430
Real m_maxParticleAdvectionCFL
Maximum CFL-like time step for particle advection.
Definition CD_ItoKMCStepper.H:538
virtual void setCdrVelocityFunctions() noexcept
Set the Cdr velocities to be sgn(charge) * E.
Definition CD_ItoKMCStepperImplem.H:2829
virtual void postRegrid() noexcept override
Perform post-regrid operations.
Definition CD_ItoKMCStepperImplem.H:1740
virtual Real computeRelaxationTime() noexcept
Compute the dielectric relaxation time.
Definition CD_ItoKMCStepperImplem.H:2071
virtual void parseParametersEB() noexcept
Parse parameters related to how we treat particle-EB interaction.
Definition CD_ItoKMCStepperImplem.H:393
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:663
Real m_maxParticleDiffusionCFL
Maximum CFL-like time step for particle diffusion.
Definition CD_ItoKMCStepper.H:548
virtual void postPlot() noexcept override
Perform post-plot operations.
Definition CD_ItoKMCStepperImplem.H:1586
virtual ~ItoKMCStepper() noexcept
Destructor.
Definition CD_ItoKMCStepperImplem.H:82
RefCountedPtr< ItoKMCPhysics > m_physics
Implementation of ItoKMCPhysics.
Definition CD_ItoKMCStepper.H:379
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:1293
virtual void computeReactiveItoParticlesPerCell(EBAMRCellData &a_ppc) noexcept
Compute the number of reactive particles per cell.
Definition CD_ItoKMCStepperImplem.H:3487
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:990
bool m_dualGrid
Using dual grid or not.
Definition CD_ItoKMCStepper.H:450
EBAMRCellData m_fluidYPC
For holding the number of generated photons per cell.
Definition CD_ItoKMCStepper.H:736
virtual void allocate() noexcept override
Allocate storage for solvers.
Definition CD_ItoKMCStepperImplem.H:517
RefCountedPtr< RtLayout< McPhoto > > m_rte
Radiative transfer solvers.
Definition CD_ItoKMCStepper.H:394
bool m_plotConductivity
Plot conductivity or not.
Definition CD_ItoKMCStepper.H:475
virtual void parseExitOnFailure() noexcept
Parse exit on failure.
Definition CD_ItoKMCStepperImplem.H:151
RefCountedPtr< ItoLayout< ItoSolver > > m_ito
Ito solvers.
Definition CD_ItoKMCStepper.H:384
Vector< int > m_loadBalanceIndices
Solver indices used when load-balancing the particle solvers.
Definition CD_ItoKMCStepper.H:654
EBAMRCellData m_particleEPS
For holding the mean particle energy.
Definition CD_ItoKMCStepper.H:706
std::function< Real(const Real a_time)> m_voltage
Voltage curve on the electrodes used in the simulation.
Definition CD_ItoKMCStepper.H:435
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:4619
virtual void computeConductivityCell(EBAMRCellData &a_conductivity) noexcept
Compute the cell-centered conductiivty.
Definition CD_ItoKMCStepperImplem.H:1943
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:4218
Real m_minParticleDiffusionCFL
Minium CFL-like time step for particle diffusion.
Definition CD_ItoKMCStepper.H:543
virtual void postCheckpointPoisson() noexcept
Do some post-checkpoint operations for the electrostatic part.
Definition CD_ItoKMCStepperImplem.H:769
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:5526
virtual void prePlot() noexcept override
Perform pre-plot operations.
Definition CD_ItoKMCStepperImplem.H:1566
virtual void postInitialize() noexcept override
Post-initialization operations. Default does nothing.
Definition CD_ItoKMCStepperImplem.H:653
Real m_maxParticleAdvectionDiffusionCFL
Maximum CFL-like time step for particle advection-diffusion.
Definition CD_ItoKMCStepper.H:558
virtual void coarsenCDRSolvers() noexcept
Coarsen data for CDR solvers.
Definition CD_ItoKMCStepperImplem.H:4768
virtual void postCheckpointSetup() noexcept override
Perform post-checkpoint operations.
Definition CD_ItoKMCStepperImplem.H:750
Real m_particleDiffusionDt
The particle diffusive time step.
Definition CD_ItoKMCStepper.H:589
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:1342
Vector< EBAMRCellData > m_energySources
Storage for holding the energy sources for each species.
Definition CD_ItoKMCStepper.H:759
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:2142
Real m_maxGrowthDt
Maximum permissible time step growth.
Definition CD_ItoKMCStepper.H:511
virtual void computeMobilities() noexcept
Compute mesh-based mobilities for LFA coupling.
Definition CD_ItoKMCStepperImplem.H:2914
virtual void setItoVelocityFunctions() noexcept
Set the Ito velocity functions. This is sgn(charge) * E.
Definition CD_ItoKMCStepperImplem.H:2798
Vector< EBAMRCellData > m_fluidGradPhiIto
For holding the gradient of all Ito species densities.
Definition CD_ItoKMCStepper.H:637
bool m_loadBalanceParticles
Load balance particle realm or not.
Definition CD_ItoKMCStepper.H:465
virtual void sortPhotonsByPatch(const McPhoto::WhichContainer a_which) noexcept
Sort photons by patch.
Definition CD_ItoKMCStepperImplem.H:5477
virtual void getPhysicalParticlesPerCell(EBAMRCellData &a_ppc) const noexcept
Get the physical number of particles per cell.
Definition CD_ItoKMCStepperImplem.H:3465
Base class for advancing equations.
Definition CD_TimeStepper.H:30
Base class for a tracer particle solver. This solver can advance particles in a pre-defined velocity ...
Definition CD_TracerParticleSolver.H:37
TracerParticleSolver()
Default constructor.
Definition CD_TracerParticleSolverImplem.H:25
Name containing various physics models for running chombo-discharge code.
Definition CD_AdvectionDiffusion.H:15
phase names
Definition CD_MultiFluidIndexSpace.H:27