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#include <optional>
19
20// Our includes
21#include <CD_TimeStepper.H>
22#include <CD_ItoKMCPhysics.H>
23#include <CD_ItoLayout.H>
24#include <CD_CdrLayout.H>
27#include <CD_RtLayout.H>
28#include <CD_McPhoto.H>
29#include <CD_FieldSolver.H>
30#include <CD_ItoSolver.H>
31#include <CD_CdrCTU.H>
32#include <CD_FieldSolverGMG.H>
33#include <CD_SurfaceODESolver.H>
34#include <CD_NamespaceHeader.H>
35
36namespace Physics {
37namespace ItoKMC {
38
56
64template <typename I = ItoSolver, typename C = CdrCTU, typename R = McPhoto, typename F = FieldSolverGMG>
66{
67public:
68 static_assert(std::is_base_of<ItoSolver, I>::value, "I must derive from ItoSolver");
69 static_assert(std::is_base_of<CdrSolver, C>::value, "C must derive from CdrSolver");
70 static_assert(std::is_base_of<McPhoto, R>::value, "R must derive from McPhoto");
71 static_assert(std::is_base_of<FieldSolver, FieldSolverGMG>::value, "F must derive from FieldSolver");
72
76 ItoKMCStepper() noexcept;
77
82 ItoKMCStepper(RefCountedPtr<ItoKMCPhysics>& a_physics) noexcept;
83
87 virtual ~ItoKMCStepper() noexcept;
88
92 virtual void
93 parseOptions() noexcept;
94
98 virtual void
99 parseRuntimeOptions() noexcept override;
100
104 virtual void
105 allocate() noexcept override;
106
110 virtual void
111 setupSolvers() noexcept override;
112
116 virtual void
117 initialData() noexcept override;
118
124 virtual void
125 postCheckpointSetup() noexcept override;
126
130 virtual void
131 postInitialize() noexcept override;
132
133#ifdef CH_USE_HDF5
138 virtual void
139 writeCheckpointHeader(HDF5HeaderData& a_header) const noexcept override;
140#endif
141
142#ifdef CH_USE_HDF5
147 virtual void
148 readCheckpointHeader(HDF5HeaderData& a_header) noexcept override;
149#endif
150
151#ifdef CH_USE_HDF5
157 virtual void
158 writeCheckpointData(HDF5Handle& a_handle, const int a_lvl) const noexcept override;
159#endif
160
161#ifdef CH_USE_HDF5
167 virtual void
168 readCheckpointData(HDF5Handle& a_handle, const int a_lvl) noexcept override;
169#endif
170
175 virtual int
176 getNumberOfPlotVariables() const noexcept override;
177
182 virtual Vector<std::string>
183 getPlotVariableNames() const noexcept override;
184
192 virtual void
193 writePlotData(LevelData<EBCellFAB>& a_output,
194 int& a_icomp,
195 const std::string& a_outputRealm,
196 const int a_level) const noexcept override;
197
207 virtual Vector<long int>
208 getCheckpointLoads(const std::string& a_realm, const int a_level) const override;
209
215 virtual Real
216 advance(const Real a_dt) override = 0;
217
222 virtual Real
223 computeDt() override;
224
231 virtual void
232 synchronizeSolverTimes(const int a_step, const Real a_time, const Real a_dt) noexcept override;
233
237 virtual void
238 printStepReport() noexcept override;
239
243 virtual void
244 registerRealms() noexcept override;
245
249 virtual void
250 registerOperators() noexcept override;
251
255 virtual void
256 prePlot() noexcept override;
257
261 virtual void
262 postPlot() noexcept override;
263
269 virtual void
270 preRegrid(const int a_lmin, const int a_oldFinestLevel) noexcept override;
271
278 virtual void
279 regrid(const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel) noexcept override;
280
284 virtual void
285 postRegrid() noexcept override;
286
293 virtual bool
294 loadBalanceThisRealm(const std::string& a_realm) const override;
295
310 virtual void
311 loadBalanceBoxes(Vector<Vector<int>>& a_procs,
312 Vector<Vector<Box>>& a_boxes,
313 const std::string& a_realm,
314 const Vector<DisjointBoxLayout>& a_grids,
315 const int a_lmin,
316 const int a_finestLevel) override;
317
323 virtual void
324 setVoltage(const std::function<Real(const Real a_time)>& a_voltage) noexcept;
325
330 virtual Real
331 getTime() const noexcept;
332
338 virtual void
339 computeElectricField(EBAMRCellData& a_electricField, const phase::which_phase a_phase) const noexcept;
340
341protected:
345 enum class TimeCode
346 {
347 AdvectionIto,
348 DiffusionIto,
349 AdvectionDiffusionIto,
350 AdvectionDiffusionCDR,
351 RelaxationTime,
352 Hardcap,
353 Physics
354 };
355
360
365
370 std::string m_fluidRealm;
371
375 std::string m_particleRealm;
376
380 std::string m_name;
381
387
392 RefCountedPtr<ItoKMCPhysics> m_physics;
393
397 RefCountedPtr<ItoLayout<ItoSolver>> m_ito;
398
402 RefCountedPtr<CdrLayout<CdrSolver>> m_cdr;
403
407 RefCountedPtr<RtLayout<McPhoto>> m_rte;
408
412 RefCountedPtr<FieldSolver> m_fieldSolver;
413
417 RefCountedPtr<SurfaceODESolver<1>> m_sigmaSolver;
418
424 Vector<RefCountedPtr<ParticleContainer<ItoParticle>>> m_secondaryParticles;
425
431 Vector<RefCountedPtr<ParticleContainer<Photon>>> m_secondaryPhotons;
432
438 Vector<EBAMRIVData> m_cdrFluxes;
439
443 Vector<EBAMRIVData> m_cdrFluxesExtrap;
444
448 std::function<Real(const Real a_time)> m_voltage;
449
454
459
464
469
474
479
484
489
494
500
505
510
515
520
527
532
537
542
547
552
557
562
567
573
578
583
588
593
598
603
608
613
618
622 Vector<EBAMRCellData> m_loadBalancePPC;
623
628 Vector<EBAMRCellData> m_cdrMobilities;
629
634 Vector<EBAMRCellData> m_fluidGradPhiCDR;
635
640 Vector<EBAMRCellData> m_fluidGradPhiIto;
641
645 Vector<EBAMRCellData> m_fluidPhiIto;
646
652 mutable Vector<RefCountedPtr<ParticleContainer<NoPayload>>> m_cdrPhotoiProducts;
653
658
663 EBAMRCellData m_currentDensity;
664
669
673 EBAMRCellData m_neutralDensity;
674
679 EBAMRCellData m_conductivityCell;
680
685 EBAMRFluxData m_conductivityFace;
686
691 EBAMRIVData m_conductivityEB;
692
697 EBAMRCellData m_particleItoPPC;
698
703 EBAMRCellData m_particleYPC;
704
709 EBAMRCellData m_particleEPS;
710
715 EBAMRCellData m_particleOldItoPPC;
716
721 EBAMRCellData m_fluidCdrPPC;
722
727 EBAMRCellData m_fluidOldCdrPPC;
728
733 EBAMRCellData m_fluidPPC;
734
739 EBAMRCellData m_fluidYPC;
740
744 EBAMRCellData m_electricFieldFluid;
745
750
756 EBAMRCellData m_kmcDt;
757
762 Vector<EBAMRCellData> m_energySources;
763
767 EBAMRCellData m_EdotJ;
768
772 mutable EBAMRCellData m_fluidScratch1;
773
777 mutable EBAMRCellData m_fluidScratchD;
778
782 mutable EBAMRCellData m_particleScratch1;
783
787 mutable EBAMRCellData m_particleScratchD;
788
792 mutable EBAMRIVData m_fluidScratchEB;
793
797 mutable EBAMRIVData m_particleScratchEB;
798
802 virtual void
803 allocateInternals() noexcept;
804
808 virtual void
809 setupIto() noexcept;
810
814 virtual void
815 setupCdr() noexcept;
816
820 virtual void
821 setupRadiativeTransfer() noexcept;
822
826 virtual void
827 setupPoisson() noexcept;
828
832 virtual void
833 setupSigma() noexcept;
834
845 virtual void
847 const SpeciesSubset a_speciesSubset,
848 const bool a_delete,
849 const std::function<void(ParticleSoA<ItoParticle>&, std::size_t)> a_nonDeletionModifier =
850 [](ParticleSoA<ItoParticle>&, std::size_t) -> void {
851 return;
852 }) noexcept;
853
865 virtual void
867 const SpeciesSubset a_speciesSubset,
868 const ItoSolver::WhichContainer a_containerBulk,
869 const ItoSolver::WhichContainer a_containerEB,
870 const ItoSolver::WhichContainer a_containerDomain,
871 const bool a_delete,
872 const std::function<void(ParticleSoA<ItoParticle>&, std::size_t)> a_nonDeletionModifier =
873 [](ParticleSoA<ItoParticle>&, std::size_t) -> void {
874 return;
875 }) noexcept;
876
884 virtual void
886 const EBRepresentation a_representation,
887 const Real a_tolerance) noexcept;
888
897 virtual void
899 const ItoSolver::WhichContainer a_container,
900 const EBRepresentation a_representation,
901 const Real a_tolerance) noexcept;
902
911 virtual void
912 transferCoveredParticles(const SpeciesSubset a_speciesSubset,
913 const EBRepresentation a_representation,
914 const Real a_tolerance) noexcept;
915
926 virtual void
927 transferCoveredParticles(const SpeciesSubset a_speciesSubset,
928 const ItoSolver::WhichContainer a_containerFrom,
929 const ItoSolver::WhichContainer a_containerTo,
930 const EBRepresentation a_representation,
931 const Real a_tolerance) noexcept;
932
944 virtual void
945 writeData(LevelData<EBCellFAB>& a_output,
946 int& a_comp,
947 const EBAMRCellData& a_data,
948 const std::string a_outputRealm,
949 const int a_level,
950 const bool a_interpToCentroids,
951 const bool a_interpGhost) const noexcept;
952
960 virtual void
961 writeNumberOfParticlesPerPatch(LevelData<EBCellFAB>& a_output,
962 int& a_icomp,
963 const std::string a_outputRealm,
964 const int a_level) const noexcept;
965
973 virtual void
974 getMaxMinRelativeItoDensity(Real& a_maxDensity,
975 Real& a_minDensity,
976 std::string& a_maxSolver,
977 std::string& a_minSolver) const noexcept;
978
986 virtual void
987 getMaxMinRelativeCDRDensity(Real& a_maxDensity,
988 Real& a_minDensity,
989 std::string& a_maxSolver,
990 std::string& a_minSolver) const noexcept;
991
1001 virtual void
1002 getParticleStatistics(Real& a_avgParticles,
1003 Real& a_sigma,
1004 Real& a_minParticles,
1005 Real& a_maxParticles,
1006 int& a_minRank,
1007 int& a_maxRank);
1008
1018 virtual void
1019 loadBalanceParticleRealm(Vector<Vector<int>>& a_procs,
1020 Vector<Vector<Box>>& a_boxes,
1021 const std::string a_realm,
1022 const Vector<DisjointBoxLayout>& a_grids,
1023 const int a_lmin,
1024 const int a_finestLevel) noexcept;
1025
1035 virtual void
1036 loadBalanceFluidRealm(Vector<Vector<int>>& a_procs,
1037 Vector<Vector<Box>>& a_boxes,
1038 const std::string a_realm,
1039 const Vector<DisjointBoxLayout>& a_grids,
1040 const int a_lmin,
1041 const int a_finestLevel) noexcept;
1042
1048 virtual Vector<RefCountedPtr<ItoSolver>>
1049 getLoadBalanceSolvers() const noexcept;
1050
1055 virtual void
1056 fillNeutralDensity() noexcept;
1057
1063 virtual Real
1064 computeMaxReducedElectricField(const phase::which_phase a_phase) const noexcept;
1065
1071 virtual void
1072 computeSpaceChargeDensity() noexcept;
1073
1080 virtual void
1081 computeSpaceChargeDensity(MFAMRCellData& a_rho,
1082 const Vector<EBAMRCellData*>& a_itoDensities,
1083 const Vector<EBAMRCellData*>& a_cdrDensities) noexcept;
1084
1090 virtual void
1091 computeConductivityCell(EBAMRCellData& a_conductivity) noexcept;
1092
1099 virtual void
1100 computeConductivityCell(EBAMRCellData& a_conductivity,
1101 const Vector<ParticleContainer<ItoParticle>*>& a_particles) noexcept;
1102
1109 virtual void
1110 computeDensityGradients() noexcept;
1111
1117 virtual void
1118 computeCurrentDensity(EBAMRCellData& a_J) noexcept;
1119
1124 virtual Real
1125 computeRelaxationTime() noexcept;
1126
1133 virtual bool
1134 solvePoisson() noexcept;
1135
1141 virtual void
1142 depositParticles(const SpeciesSubset a_speciesSubset) noexcept;
1143
1149 virtual void
1150 depositParticles(const SpeciesSubset a_speciesSubset, const ItoSolver::WhichContainer a_container) noexcept;
1151
1157 virtual void
1158 remapParticles(const SpeciesSubset a_speciesSubset) noexcept;
1159
1165 virtual void
1166 remapParticles(const SpeciesSubset a_speciesSubset, const ItoSolver::WhichContainer a_container) noexcept;
1167
1172 virtual void
1173 computeDriftVelocities() noexcept;
1174
1179 virtual void
1180 setItoVelocityFunctions() noexcept;
1181
1187 virtual void
1188 setCdrVelocityFunctions() noexcept;
1189
1193 virtual void
1195
1201 virtual void
1202 computeMobilities() noexcept;
1203
1211 virtual void
1212 computeMobilities(Vector<EBAMRCellData*>& a_itoMobilities,
1213 Vector<EBAMRCellData>& a_cdrMobilities,
1214 const EBAMRCellData& a_electricField,
1215 const Real a_time) noexcept;
1216
1225 virtual void
1226 computeMobilities(Vector<LevelData<EBCellFAB>*>& a_itoMobilities,
1227 Vector<LevelData<EBCellFAB>*>& a_cdrMobilities,
1228 const LevelData<EBCellFAB>& a_E,
1229 const int a_level,
1230 const Real a_time) noexcept;
1231
1242 virtual void
1243 computeMobilities(Vector<EBCellFAB*>& a_itoMobilities,
1244 Vector<EBCellFAB*>& a_cdrMobilities,
1245 const EBCellFAB& a_electricField,
1246 const int a_level,
1247 const DataIndex a_din,
1248 const Box a_cellBox,
1249 const Real a_time) noexcept;
1250
1255 virtual void
1257
1267 virtual void
1268 computeDiffusionCoefficients(Vector<EBAMRCellData*>& a_itoDiffusionCoefficients,
1269 Vector<EBAMRCellData*>& a_cdrDiffusionCoefficients,
1270 const EBAMRCellData& a_electricField,
1271 const Real a_time) noexcept;
1272
1283 virtual void
1284 computeDiffusionCoefficients(Vector<LevelData<EBCellFAB>*>& a_itoDiffusionCoefficients,
1285 Vector<LevelData<EBCellFAB>*>& a_cdrDiffusionCoefficients,
1286 const LevelData<EBCellFAB>& a_electricField,
1287 const int a_level,
1288 const Real a_time) noexcept;
1289
1302 virtual void
1303 computeDiffusionCoefficients(Vector<EBCellFAB*>& a_itoDiffusionCoefficients,
1304 Vector<EBCellFAB*>& a_cdrDiffusionCoefficients,
1305 const EBCellFAB& a_E,
1306 const int a_level,
1307 const DataIndex a_din,
1308 const Box a_box,
1309 const Real a_time) noexcept;
1310
1314 virtual void
1316
1321 virtual void
1322 getPhysicalParticlesPerCell(EBAMRCellData& a_ppc) const noexcept;
1323
1330 virtual void
1331 computeReactiveItoParticlesPerCell(EBAMRCellData& a_ppc) noexcept;
1332
1340 virtual void
1341 computeReactiveItoParticlesPerCell(LevelData<EBCellFAB>& a_ppc, const int a_level) noexcept;
1342
1353 virtual void
1354 computeReactiveItoParticlesPerCell(EBCellFAB& a_ppc,
1355 const int a_level,
1356 const DataIndex a_din,
1357 const Box a_box,
1358 const EBISBox& a_ebisbox) noexcept;
1359
1367 virtual void
1368 computeReactiveCdrParticlesPerCell(EBAMRCellData& a_ppc) noexcept;
1369
1377 virtual void
1378 computeReactiveCdrParticlesPerCell(LevelData<EBCellFAB>& a_ppc, const int a_level) noexcept;
1379
1390 virtual void
1391 computeReactiveCdrParticlesPerCell(EBCellFAB& a_ppc,
1392 const int a_level,
1393 const DataIndex a_din,
1394 const Box a_box,
1395 const EBISBox& a_ebisbox) noexcept;
1396
1403 virtual void
1404 computeReactiveMeanEnergiesPerCell(EBAMRCellData& a_meanEnergies) noexcept;
1405
1413 virtual void
1414 computeReactiveMeanEnergiesPerCell(LevelData<EBCellFAB>& a_meanEnergies, const int a_level) noexcept;
1415
1426 virtual void
1427 computeReactiveMeanEnergiesPerCell(EBCellFAB& a_meanEnergies,
1428 const int a_level,
1429 const DataIndex a_din,
1430 const Box a_box,
1431 const EBISBox& a_ebisbox) noexcept;
1432
1439 virtual void
1440 advanceReactionNetwork(const Real a_dt) noexcept;
1441
1449 virtual void
1450 advanceReactionNetwork(const EBAMRCellData& a_E, const Real a_dt) noexcept;
1451
1462 inline void
1463 advanceReactionNetwork(LevelData<EBCellFAB>& a_particlesPerCell,
1464 LevelData<EBCellFAB>& a_newPhotonsPerCell,
1465 const LevelData<EBCellFAB>& a_electricField,
1466 const int a_level,
1467 const Real a_dt) const noexcept;
1468
1482 inline void
1483 advanceReactionNetwork(EBCellFAB& a_particlesPerCell,
1484 EBCellFAB& a_newPhotonsPerCell,
1485 const EBCellFAB& a_electricField,
1486 const int a_level,
1487 const DataIndex a_din,
1488 const Box a_box,
1489 const Real a_dx,
1490 const Real a_dt) const noexcept;
1491
1500 inline void
1501 reconcileParticles(const EBAMRCellData& a_newParticlesPerCell,
1502 const EBAMRCellData& a_oldParticlesPerCell,
1503 const EBAMRCellData& a_newPhotonsPerCell,
1504 const EBAMRCellData& a_electricField) const noexcept;
1505
1515 inline void
1516 reconcileParticles(const LevelData<EBCellFAB>& a_newParticlesPerCell,
1517 const LevelData<EBCellFAB>& a_oldParticlesPerCell,
1518 const LevelData<EBCellFAB>& a_newPhotonsPerCell,
1519 const LevelData<EBCellFAB>& a_electricField,
1520 const int a_level) const noexcept;
1521
1534 inline void
1535 reconcileParticles(const EBCellFAB& a_newParticlesPerCell,
1536 const EBCellFAB& a_oldParticlesPerCell,
1537 const EBCellFAB& a_newPhotonsPerCell,
1538 const EBCellFAB& a_electricField,
1539 const int a_level,
1540 const DataIndex a_din,
1541 const Box a_box,
1542 const Real a_dx) const noexcept;
1543
1550 virtual void
1551 reconcilePhotoionization() noexcept;
1552
1561 virtual void
1562 reconcileCdrDensities(const EBAMRCellData& a_newParticlesPerCell,
1563 const EBAMRCellData& a_oldParticlesPerCell,
1564 const Real a_dt) noexcept;
1565
1575 virtual void
1576 reconcileCdrDensities(const LevelData<EBCellFAB>& a_newParticlesPerCell,
1577 const LevelData<EBCellFAB>& a_oldParticlesPerCell,
1578 const int a_level,
1579 const Real a_dt) noexcept;
1580
1593 virtual void
1594 reconcileCdrDensities(const EBCellFAB& a_newParticlesPerCell,
1595 const EBCellFAB& a_oldParticlesPerCell,
1596 const int a_level,
1597 const DataIndex a_din,
1598 const Box a_box,
1599 const Real a_dx,
1600 const Real a_dt) noexcept;
1601
1605 virtual void
1606 coarsenCDRSolvers() noexcept;
1607
1613 virtual void
1614 fillSecondaryEmissionEB(const Real a_dt) noexcept;
1615
1628 virtual void
1629 fillSecondaryEmissionEB(Vector<RefCountedPtr<ParticleContainer<ItoParticle>>>& a_secondaryParticles,
1630 Vector<EBAMRIVData>& a_cdrFluxes,
1631 Vector<RefCountedPtr<ParticleContainer<Photon>>>& a_secondaryPhotons,
1632 Vector<ParticleContainer<ItoParticle>*>& a_primaryParticles,
1633 Vector<EBAMRIVData>& a_cdrFluxesExtrap,
1634 Vector<ParticleContainer<Photon>*>& a_primaryPhotons,
1635 const EBAMRCellData& a_electricField,
1636 const Real a_dt) noexcept;
1637
1643 virtual void
1644 resolveSecondaryEmissionEB(const Real a_dt) noexcept;
1645
1658 virtual void
1659 resolveSecondaryEmissionEB(Vector<ParticleContainer<ItoParticle>*>& a_secondaryParticles,
1660 Vector<ParticleContainer<ItoParticle>*>& a_primaryParticles,
1661 Vector<EBAMRIVData*>& a_cdrFluxes,
1662 EBAMRIVData& a_surfaceChargeDensity,
1663 const Real a_dt) noexcept;
1664
1673 virtual void
1674 computePhysicsDt() noexcept;
1675
1681 virtual void
1682 computeDummyPhysicsDt() noexcept;
1683
1688 virtual Real
1689 computeTotalCharge() const noexcept;
1690
1695 virtual Real
1696 computeQplus() const noexcept;
1697
1702 virtual Real
1703 computeQminu() const noexcept;
1704
1709 virtual Real
1710 computeQsurf() const noexcept;
1711
1716 virtual void
1717 advancePhotons(const Real a_dt) noexcept;
1718
1723 virtual void
1724 sortPhotonsByCell(const McPhoto::WhichContainer a_which) noexcept;
1725
1730 virtual void
1731 sortPhotonsByPatch(const McPhoto::WhichContainer a_which) noexcept;
1732
1738 virtual void
1739 postCheckpointPoisson() noexcept;
1740
1746 virtual void
1747 computeEdotJSource(const Real a_dt) noexcept;
1748
1752 virtual void
1753 initialSigma() noexcept;
1754
1759 virtual void
1760 parseVerbosity() noexcept;
1761
1765 virtual void
1766 parseExitOnFailure() noexcept;
1767
1771 virtual void
1772 parseRedistributeCDR() noexcept;
1773
1780 virtual void
1781 parseSuperParticles() noexcept;
1782
1787 virtual void
1788 parseDualGrid() noexcept;
1789
1793 virtual void
1794 parseLoadBalance() noexcept;
1795
1799 virtual void
1800 parseTimeStepRestrictions() noexcept;
1801
1805 virtual void
1806 parseParametersEB() noexcept;
1807
1811 virtual void
1812 parsePlotVariables() noexcept;
1813
1818 virtual void
1819 computePhysicsPlotVariables(EBAMRCellData& a_physicsPlotVars) noexcept;
1820};
1821} // namespace ItoKMC
1822} // namespace Physics
1823
1824#include <CD_NamespaceFooter.H>
1825
1826#include <CD_ItoKMCStepperImplem.H>
1827
1828#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:43
@ ChargedDiffusive
All charged, diffusive species.
@ AllMobileOrDiffusive
All species that are mobile or diffusive.
@ ChargedMobileAndDiffusive
All charged species that are both mobile and diffusive.
@ AllMobileAndDiffusive
All species that are both mobile and diffusive.
@ AllDiffusive
All species with nonzero diffusion coefficient.
@ AllMobile
All species with nonzero mobility.
@ Charged
All charged species (any mobility/diffusion).
@ 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 an AMR-hierarchy container that owns per-patch ParticleSoA leaves.
Namespace containing various particle management utilities.
Declaration of a class that holds a set of RtSolvers.
Declaration of a cut-cell ODE solver.
Declaration of main (abstract) time stepper class.
Base class for Ito diffusion particle models.
Definition CD_ItoSolver.H:40
WhichContainer
Enum class for distinguishing various types of particle containers.
Definition CD_ItoSolver.H:51
Radiative transfer equation solver using Monte-Carlo simulation.
Definition CD_McPhoto.H:36
AMR-hierarchy container of computational particles, stored per patch in Struct-of-Arrays form.
Definition CD_ParticleContainer.H:123
Arena-backed Struct-of-Arrays particle container for a single grid patch.
Definition CD_ParticleSoA.H:655
Abstract TimeStepper for the Ito-KMC-Poisson system of equations.
Definition CD_ItoKMCStepper.H:66
virtual void transferCoveredParticles(const SpeciesSubset a_speciesSubset, const EBRepresentation a_representation, const Real a_tolerance) noexcept
Transfer covered particles (i.e., particles inside the EB) from the ItoSolver bulk container to EB co...
Definition CD_ItoKMCStepperImplem.H:2511
Real m_relaxationTime
The relaxation time eps0/sigma.
Definition CD_ItoKMCStepper.H:607
virtual void setupCdr() noexcept
Set up the CDR solvers.
Definition CD_ItoKMCStepperImplem.H:488
Real m_maxReducedField
Storage for the maximum field strength that was computed.
Definition CD_ItoKMCStepper.H:504
bool m_abortOnFailure
Flag for aborting the simulation if the Poisson solver fails to converge.
Definition CD_ItoKMCStepper.H:453
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:1436
RefCountedPtr< SurfaceODESolver< 1 > > m_sigmaSolver
Surface charge solver.
Definition CD_ItoKMCStepper.H:417
virtual void computePhysicsPlotVariables(EBAMRCellData &a_physicsPlotVars) noexcept
Compute physics plot variables.
Definition CD_ItoKMCStepperImplem.H:6154
Vector< EBAMRCellData > m_fluidPhiIto
For holding the Ito species densities on the fluid realm.
Definition CD_ItoKMCStepper.H:645
virtual void computePhysicsDt() noexcept
Compute a physics-based maximum time step.
Definition CD_ItoKMCStepperImplem.H:5356
virtual void computeReactiveMeanEnergiesPerCell(EBAMRCellData &a_meanEnergies) noexcept
Compute the mean particle energy in all grid cells.
Definition CD_ItoKMCStepperImplem.H:3788
EBAMRCellData m_conductivityCell
Cell-centered conductivity.
Definition CD_ItoKMCStepper.H:679
EBAMRCellData m_particleOldItoPPC
For holding the previous number of particles per cell for all species.
Definition CD_ItoKMCStepper.H:715
Real m_particleAdvectionDt
The particle advective time step.
Definition CD_ItoKMCStepper.H:587
Real m_minParticleAdvectionCFL
Minimum CFL-like time step for particle advection.
Definition CD_ItoKMCStepper.H:536
Vector< EBAMRIVData > m_cdrFluxes
CDR fluxes for CDR BCs.
Definition CD_ItoKMCStepper.H:438
virtual void parseRuntimeOptions() noexcept override
Parse runtime configurable options.
Definition CD_ItoKMCStepperImplem.H:160
std::string m_name
Time stepper name.
Definition CD_ItoKMCStepper.H:380
phase::which_phase m_plasmaPhase
Phase where we solve for the plasma.
Definition CD_ItoKMCStepper.H:386
bool m_profile
Profile kernels or not.
Definition CD_ItoKMCStepper.H:468
EBAMRCellData m_neutralDensity
Storage for the neutral density.
Definition CD_ItoKMCStepper.H:673
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:1908
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:2392
BoxSorting m_boxSort
Box sorting method when using dual-grid with particle load balancing.
Definition CD_ItoKMCStepper.H:359
Real m_fluidAdvectionDiffusionCFL
CFL-like time step for fluid advection-diffusion.
Definition CD_ItoKMCStepper.H:566
virtual void setupRadiativeTransfer() noexcept
Set up the radiative transfer solver.
Definition CD_ItoKMCStepperImplem.H:507
Real m_physicsDt
The physics-based time step.
Definition CD_ItoKMCStepper.H:612
EBAMRCellData m_electricFieldParticle
Storage for holding the plasma phase electric field on the particle realm.
Definition CD_ItoKMCStepper.H:749
virtual void registerRealms() noexcept override
Register realms used for the simulation.
Definition CD_ItoKMCStepperImplem.H:1583
Real m_particleAdvectionDiffusionDt
The advection-diffusion time step.
Definition CD_ItoKMCStepper.H:597
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:5685
virtual Vector< RefCountedPtr< ItoSolver > > getLoadBalanceSolvers() const noexcept
Get the solvers used for load balancing.
Definition CD_ItoKMCStepperImplem.H:5629
virtual void computeSpaceChargeDensity() noexcept
Compute the space charge. Calls the other version.
Definition CD_ItoKMCStepperImplem.H:1935
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:519
virtual void fillNeutralDensity() noexcept
Compute the neutral density on the mesh.
Definition CD_ItoKMCStepperImplem.H:1819
virtual void setVoltage(const std::function< Real(const Real a_time)> &a_voltage) noexcept
Set voltage used for the simulation.
Definition CD_ItoKMCStepperImplem.H:1807
virtual void advanceReactionNetwork(const Real a_dt) noexcept
Chemistry advance over time a_dt.
Definition CD_ItoKMCStepperImplem.H:3929
virtual Real getTime() const noexcept
Get current simulation time.
Definition CD_ItoKMCStepperImplem.H:1923
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:5911
virtual void computeDummyPhysicsDt() noexcept
Special routine which performs a dummy KMC advance over a zero time step.
Definition CD_ItoKMCStepperImplem.H:5373
virtual int getNumberOfPlotVariables() const noexcept override
Get number of plot variables for the output file.
Definition CD_ItoKMCStepperImplem.H:933
Real m_loadPerCell
The "background" load per cell when using particle load balancing.
Definition CD_ItoKMCStepper.H:526
EBAMRCellData m_physicsPlotVariables
Storage for physics plot variables.
Definition CD_ItoKMCStepper.H:668
virtual void remapParticles(const SpeciesSubset a_speciesSubset) noexcept
Remap a subset of ItoSolver particles.
Definition CD_ItoKMCStepperImplem.H:2635
Real m_physicsDtFactor
Scaling factor applied to the physics-based time step estimate.
Definition CD_ItoKMCStepper.H:617
bool m_redistributeCDR
Flag for redistributing CDR mass when particles cross the EB.
Definition CD_ItoKMCStepper.H:458
virtual void parseVerbosity() noexcept
Parse chattiness.
Definition CD_ItoKMCStepperImplem.H:187
virtual void computeReactiveCdrParticlesPerCell(EBAMRCellData &a_ppc) noexcept
Compute the number of reactive particles per cell for the CDR solvers.
Definition CD_ItoKMCStepperImplem.H:3681
RefCountedPtr< FieldSolver > m_fieldSolver
Field solver.
Definition CD_ItoKMCStepper.H:412
virtual void registerOperators() noexcept override
Register operators used for the simulation.
Definition CD_ItoKMCStepperImplem.H:1597
EBAMRCellData m_particleScratch1
Scratch storage on the particle realm with 1 component.
Definition CD_ItoKMCStepper.H:782
EBAMRCellData m_EdotJ
Storage for E·J (Ohmic heating) on the fluid realm. 1 component.
Definition CD_ItoKMCStepper.H:767
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:5707
Vector< RefCountedPtr< ParticleContainer< ItoParticle > > > m_secondaryParticles
List of secondary particles injected through the EB.
Definition CD_ItoKMCStepper.H:424
virtual void averageDiffusionCoefficientsCellToFace() noexcept
Average cell-centered diffusion coefficient to faces.
Definition CD_ItoKMCStepperImplem.H:3491
virtual void parsePlotVariables() noexcept
Parse plot variables.
Definition CD_ItoKMCStepperImplem.H:230
virtual void parseSuperParticles() noexcept
Parse the super-particle merge cadence.
Definition CD_ItoKMCStepperImplem.H:266
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:1091
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:2074
virtual void computeEdotJSource(const Real a_dt) noexcept
Compute the energy source term for the various plasma species.
Definition CD_ItoKMCStepperImplem.H:5960
EBAMRCellData m_particleItoPPC
For holding the number of physical particles per cell for all Ito species.
Definition CD_ItoKMCStepper.H:697
virtual bool solvePoisson() noexcept
Solve the electrostatic problem.
Definition CD_ItoKMCStepperImplem.H:2168
virtual Real computeQminu() const noexcept
Compute negative charge.
Definition CD_ItoKMCStepperImplem.H:5494
virtual void multiplyCdrVelocitiesByMobilities() noexcept
Multiply CDR solver velocities by mobilities.
Definition CD_ItoKMCStepperImplem.H:2930
virtual void parseRedistributeCDR() noexcept
Parse CDR mass redistribution when assigning reactive products.
Definition CD_ItoKMCStepperImplem.H:216
virtual void computeCurrentDensity(EBAMRCellData &a_J) noexcept
Compute the current density.
Definition CD_ItoKMCStepperImplem.H:2114
TimeCode
An enum for encapsulating how time steps were restricted.
Definition CD_ItoKMCStepper.H:346
Real m_toleranceEB
Accepted tolerance (relative to dx) for EB intersection.
Definition CD_ItoKMCStepper.H:531
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:1158
EBAMRCellData m_fluidScratchD
Scratch storage on the fluid realm with SpaceDim components.
Definition CD_ItoKMCStepper.H:777
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:359
EBAMRIVData m_particleScratchEB
Scratch storage for EB-only data on the particle realm. One component.
Definition CD_ItoKMCStepper.H:797
virtual void fillSecondaryEmissionEB(const Real a_dt) noexcept
Resolve particle injection at EBs.
Definition CD_ItoKMCStepperImplem.H:4897
EBAMRCellData m_particleYPC
For holding the number of generated photons per cell.
Definition CD_ItoKMCStepper.H:703
virtual void initialSigma() noexcept
Fill surface charge solver with initial data taken from the physics interface.
Definition CD_ItoKMCStepperImplem.H:748
virtual void intersectParticles(const SpeciesSubset a_speciesSubset, const bool a_delete, const std::function< void(ParticleSoA< ItoParticle > &, std::size_t)> a_nonDeletionModifier=[](ParticleSoA< ItoParticle > &, std::size_t) -> void { return;}) noexcept
Intersect a subset of the particles with the domain and embedded boundary.
Definition CD_ItoKMCStepperImplem.H:2207
ItoKMCStepper() noexcept
Default constructor. Sets default options.
Definition CD_ItoKMCStepperImplem.H:87
EBAMRCellData m_currentDensity
Storage for current density.
Definition CD_ItoKMCStepper.H:663
virtual void printStepReport() noexcept override
Print a step report. Used by Driver for user monitoring of simulation.
Definition CD_ItoKMCStepperImplem.H:1223
virtual void depositParticles(const SpeciesSubset a_speciesSubset) noexcept
Deposit a subset of the ItoSolver particles on the mesh.
Definition CD_ItoKMCStepperImplem.H:2750
Vector< EBAMRCellData > m_cdrMobilities
For holding the mobilities for the CDR species.
Definition CD_ItoKMCStepper.H:628
virtual void setupSigma() noexcept
Set up the surface charge solver.
Definition CD_ItoKMCStepperImplem.H:544
Vector< EBAMRCellData > m_loadBalancePPC
For holding the number of computational particles per cell when load balancing.
Definition CD_ItoKMCStepper.H:622
virtual void setupSolvers() noexcept override
Set up solvers.
Definition CD_ItoKMCStepperImplem.H:453
Vector< RefCountedPtr< ParticleContainer< NoPayload > > > m_cdrPhotoiProducts
Photoionization products to be put in the CDR equations.
Definition CD_ItoKMCStepper.H:652
EBAMRCellData m_fluidPPC
For holding the number of particles per cell for all species.
Definition CD_ItoKMCStepper.H:733
virtual void parseOptions() noexcept
Parse options.
Definition CD_ItoKMCStepperImplem.H:140
virtual void advancePhotons(const Real a_dt) noexcept
Photon advancement routine.
Definition CD_ItoKMCStepperImplem.H:5550
Real m_minDt
Minimum permitted time step.
Definition CD_ItoKMCStepper.H:577
int m_mergeInterval
How often to merge superparticles.
Definition CD_ItoKMCStepper.H:499
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:1649
EBAMRIVData m_fluidScratchEB
Scratch storage for EB-only data on the fluid realm. One component.
Definition CD_ItoKMCStepper.H:792
virtual void parseDualGrid() noexcept
Parse dual or single realm calculations.
Definition CD_ItoKMCStepperImplem.H:283
virtual void reconcilePhotoionization() noexcept
Reconcile the results from photoionization reactions.
Definition CD_ItoKMCStepperImplem.H:4664
EBAMRCellData m_fluidScratch1
Scratch storage on the fluid realm having 1 component.
Definition CD_ItoKMCStepper.H:772
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:5860
EBAMRCellData m_fluidOldCdrPPC
For holding the previous number of physical particles per cell for all CDR species.
Definition CD_ItoKMCStepper.H:727
EBAMRCellData m_kmcDt
Storage for the non-critical time step computed by ItoKMCPhysics.
Definition CD_ItoKMCStepper.H:756
virtual Vector< std::string > getPlotVariableNames() const noexcept override
Get plot variable names.
Definition CD_ItoKMCStepperImplem.H:986
std::string m_fluidRealm
Realm used for the fluid part (i.e., electrostatic) part of the simulation.
Definition CD_ItoKMCStepper.H:370
virtual void sortPhotonsByCell(const McPhoto::WhichContainer a_which) noexcept
Sort photons by cells.
Definition CD_ItoKMCStepperImplem.H:5601
virtual Real computeQplus() const noexcept
Compute positive charge.
Definition CD_ItoKMCStepperImplem.H:5450
virtual void parseLoadBalance() noexcept
Parse load balancing.
Definition CD_ItoKMCStepperImplem.H:306
virtual void computeDriftVelocities() noexcept
Compute ItoSolver velocities.
Definition CD_ItoKMCStepperImplem.H:2956
EBAMRCellData m_electricFieldFluid
Storage for holding the plasma phase electric field on the fluid realm.
Definition CD_ItoKMCStepper.H:744
Real m_prevDt
Previous time step.
Definition CD_ItoKMCStepper.H:509
std::string m_particleRealm
Realm used for the particle part of the simulation.
Definition CD_ItoKMCStepper.H:375
EBAMRCellData m_particleScratchD
Scratch storage on the particle realm with SpaceDim components.
Definition CD_ItoKMCStepper.H:787
Real m_fluidAdvectionDiffusionDt
The advection-diffusion time step for the CDR equations.
Definition CD_ItoKMCStepper.H:602
Vector< EBAMRCellData > m_fluidGradPhiCDR
For holding the gradient of all CDR species densities.
Definition CD_ItoKMCStepper.H:634
virtual void setupPoisson() noexcept
Set up the electrostatic field solver.
Definition CD_ItoKMCStepperImplem.H:527
Real m_relaxTimeFactor
Factor proportional to the dielectric relaxation time dtRelax = eps0/sigma.
Definition CD_ItoKMCStepper.H:572
RefCountedPtr< CdrLayout< CdrSolver > > m_cdr
CDR solvers.
Definition CD_ItoKMCStepper.H:402
virtual void setupIto() noexcept
Set up the Ito particle solvers.
Definition CD_ItoKMCStepperImplem.H:469
virtual Real computeQsurf() const noexcept
Compute surface charge.
Definition CD_ItoKMCStepperImplem.H:5538
virtual Real computeDt() override
Compute a time step used for the advance method.
Definition CD_ItoKMCStepperImplem.H:1468
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:1204
virtual Real computeTotalCharge() const noexcept
Compute total charge.
Definition CD_ItoKMCStepperImplem.H:5430
virtual void resolveSecondaryEmissionEB(const Real a_dt) noexcept
Resolve secondary emission at the EB.
Definition CD_ItoKMCStepperImplem.H:5201
Real m_maxDt
Maximum permitted time step.
Definition CD_ItoKMCStepper.H:582
TimeCode m_timeCode
Time code for understanding how the time step was restricted.
Definition CD_ItoKMCStepper.H:364
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:1752
Real m_minParticleAdvectionDiffusionCFL
Maximum CFL-like time step for particle advection-diffusion.
Definition CD_ItoKMCStepper.H:556
EBAMRCellData m_fluidCdrPPC
For holding the number of physical particles per cell for all CDR species.
Definition CD_ItoKMCStepper.H:721
EBAMRFluxData m_conductivityFace
Face-centered conductivity.
Definition CD_ItoKMCStepper.H:685
virtual void computeDiffusionCoefficients() noexcept
Compute mesh-based diffusion coefficients for LFA coupling.
Definition CD_ItoKMCStepperImplem.H:3207
virtual void allocateInternals() noexcept
Allocate "internal" storage.
Definition CD_ItoKMCStepperImplem.H:579
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:5664
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:1876
EBAMRIVData m_conductivityEB
EB-centered conductivity.
Definition CD_ItoKMCStepper.H:691
Vector< EBAMRIVData > m_cdrFluxesExtrap
Extrapolated CDR fluxes.
Definition CD_ItoKMCStepper.H:443
Real m_maxParticleAdvectionCFL
Maximum CFL-like time step for particle advection.
Definition CD_ItoKMCStepper.H:541
virtual void setCdrVelocityFunctions() noexcept
Set the Cdr velocities to be sgn(charge) * E.
Definition CD_ItoKMCStepperImplem.H:2896
virtual void postRegrid() noexcept override
Perform post-regrid operations.
Definition CD_ItoKMCStepperImplem.H:1794
virtual Real computeRelaxationTime() noexcept
Compute the dielectric relaxation time.
Definition CD_ItoKMCStepperImplem.H:2133
virtual void parseParametersEB() noexcept
Parse parameters related to how we treat particle-EB interaction.
Definition CD_ItoKMCStepperImplem.H:437
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:711
Real m_maxParticleDiffusionCFL
Maximum CFL-like time step for particle diffusion.
Definition CD_ItoKMCStepper.H:551
virtual void postPlot() noexcept override
Perform post-plot operations.
Definition CD_ItoKMCStepperImplem.H:1637
virtual ~ItoKMCStepper() noexcept
Destructor.
Definition CD_ItoKMCStepperImplem.H:133
RefCountedPtr< ItoKMCPhysics > m_physics
Implementation of ItoKMCPhysics.
Definition CD_ItoKMCStepper.H:392
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:1340
virtual void computeReactiveItoParticlesPerCell(EBAMRCellData &a_ppc) noexcept
Compute the number of reactive particles per cell.
Definition CD_ItoKMCStepperImplem.H:3557
bool m_dualGrid
Using dual grid or not.
Definition CD_ItoKMCStepper.H:463
EBAMRCellData m_fluidYPC
For holding the number of generated photons per cell.
Definition CD_ItoKMCStepper.H:739
virtual void allocate() noexcept override
Allocate storage for solvers.
Definition CD_ItoKMCStepperImplem.H:561
RefCountedPtr< RtLayout< McPhoto > > m_rte
Radiative transfer solvers.
Definition CD_ItoKMCStepper.H:407
bool m_plotConductivity
Plot conductivity or not.
Definition CD_ItoKMCStepper.H:483
virtual void parseExitOnFailure() noexcept
Parse exit on failure.
Definition CD_ItoKMCStepperImplem.H:202
RefCountedPtr< ItoLayout< ItoSolver > > m_ito
Ito solvers.
Definition CD_ItoKMCStepper.H:397
Vector< int > m_loadBalanceIndices
Solver indices used when load-balancing the particle solvers.
Definition CD_ItoKMCStepper.H:657
EBAMRCellData m_particleEPS
For holding the mean particle energy.
Definition CD_ItoKMCStepper.H:709
std::function< Real(const Real a_time)> m_voltage
Voltage curve on the electrodes used in the simulation.
Definition CD_ItoKMCStepper.H:448
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:4722
virtual void computeConductivityCell(EBAMRCellData &a_conductivity) noexcept
Compute the cell-centered conductiivty.
Definition CD_ItoKMCStepperImplem.H:2006
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:4307
Real m_minParticleDiffusionCFL
Minimum CFL-like time step for particle diffusion.
Definition CD_ItoKMCStepper.H:546
virtual void postCheckpointPoisson() noexcept
Do some post-checkpoint operations for the electrostatic part.
Definition CD_ItoKMCStepperImplem.H:816
virtual void prePlot() noexcept override
Perform pre-plot operations.
Definition CD_ItoKMCStepperImplem.H:1616
virtual void postInitialize() noexcept override
Post-initialization operations. Default does nothing.
Definition CD_ItoKMCStepperImplem.H:701
Real m_maxParticleAdvectionDiffusionCFL
Maximum CFL-like time step for particle advection-diffusion.
Definition CD_ItoKMCStepper.H:561
virtual void coarsenCDRSolvers() noexcept
Coarsen data for CDR solvers.
Definition CD_ItoKMCStepperImplem.H:4871
virtual void postCheckpointSetup() noexcept override
Perform post-checkpoint operations.
Definition CD_ItoKMCStepperImplem.H:797
Vector< RefCountedPtr< ParticleContainer< Photon > > > m_secondaryPhotons
List of secondary photons injected through the EB.
Definition CD_ItoKMCStepper.H:431
Real m_particleDiffusionDt
The particle diffusive time step.
Definition CD_ItoKMCStepper.H:592
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:1389
Vector< EBAMRCellData > m_energySources
Storage for holding the energy sources for each species.
Definition CD_ItoKMCStepper.H:762
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:1037
Real m_maxGrowthDt
Maximum permissible time step growth.
Definition CD_ItoKMCStepper.H:514
virtual void computeMobilities() noexcept
Compute mesh-based mobilities for LFA coupling.
Definition CD_ItoKMCStepperImplem.H:2981
virtual void setItoVelocityFunctions() noexcept
Set the Ito velocity functions. This is sgn(charge) * E.
Definition CD_ItoKMCStepperImplem.H:2865
Vector< EBAMRCellData > m_fluidGradPhiIto
For holding the gradient of all Ito species densities.
Definition CD_ItoKMCStepper.H:640
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:5615
virtual void getPhysicalParticlesPerCell(EBAMRCellData &a_ppc) const noexcept
Get the physical number of particles per cell.
Definition CD_ItoKMCStepperImplem.H:3535
Base class for advancing equations.
Definition CD_TimeStepper.H:32
Namespace containing physics models for use with chombo-discharge.
Definition CD_AdvectionDiffusion.H:16
Phase names namespace.
Definition CD_MultiFluidIndexSpace.H:28
which_phase
Enumeration of supported phases.
Definition CD_MultiFluidIndexSpace.H:38
SoA payload for ItoSolver particles, i.e. drifting Brownian walkers.
Definition CD_ItoParticle.H:31
SoA payload for Monte Carlo radiative-transfer photons.
Definition CD_Photon.H:29