chombo-discharge
Loading...
Searching...
No Matches
CD_CdrPlasmaStepper.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_CdrPlasmaStepper_H
13#define CD_CdrPlasmaStepper_H
14
15// Std includes
16#include <functional>
17
18// Our includes
20#include <CD_CdrPlasmaPhysics.H>
21#include <CD_AmrMesh.H>
23#include <CD_CdrLayout.H>
24#include <CD_RtLayout.H>
25#include <CD_FieldSolver.H>
26#include <CD_SurfaceODESolver.H>
27#include <CD_TimeStepper.H>
28#include <CD_NamespaceHeader.H>
29
30namespace Physics {
31 namespace CdrPlasma {
32
39 {
40 public:
45
50 CdrPlasmaStepper(RefCountedPtr<CdrPlasmaPhysics>& a_physics);
51
56
60 virtual void
61 setupSolvers() override;
62
66 virtual void
67 allocate() override;
68
72 virtual void
73 initialData() override;
74
78 virtual void
79 postInitialize() override;
80
84 virtual void
85 postCheckpointSetup() override;
86
90 virtual void
91 registerRealms() override;
92
96 virtual void
97 registerOperators() override;
98
102 virtual void
103 parseRuntimeOptions() override = 0;
104
108 virtual void
109 prePlot() override;
110
111#ifdef CH_USE_HDF5
117 virtual void
118 writeCheckpointData(HDF5Handle& a_handle, const int a_lvl) const override;
119#endif
120
121#ifdef CH_USE_HDF5
127 virtual void
128 readCheckpointData(HDF5Handle& a_handle, const int a_lvl) override;
129#endif
130
136 virtual int
137 getNumberOfPlotVariables() const override;
138
142 virtual Vector<std::string>
143 getPlotVariableNames() const override;
144
152 virtual void
153 writePlotData(LevelData<EBCellFAB>& a_output,
154 int& a_icomp,
155 const std::string a_outputRealm,
156 const int a_level) const override;
157
162 virtual Real
163 computeDt() override = 0;
164
170 virtual Real
171 advance(const Real a_dt) override = 0;
172
179 virtual void
180 synchronizeSolverTimes(const int a_step, const Real a_time, const Real a_dt) override;
181
186 virtual void
187 printStepReport() override;
188
194 virtual void
195 preRegrid(const int a_lmin, const int a_oldFinestLevel) override;
196
202 virtual void
203 preRegridInternals(const int a_lmin, const int a_oldFinestLevel);
204
211 virtual void
212 regrid(const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel) override;
213
218 virtual void
219 postRegrid() override;
220
225 virtual void
226 computeJ(EBAMRCellData& a_J) const;
227
233 virtual void
234 computeElectricField(MFAMRCellData& a_electricFieldCell, const MFAMRCellData& a_potential) const;
235
242 virtual void
243 computeElectricField(EBAMRCellData& a_electricFieldCell, const phase::which_phase a_phase) const;
244
251 virtual void
253 const phase::which_phase a_phase,
254 const MFAMRCellData& a_potential) const;
255
262 virtual void
263 computeElectricField(EBAMRFluxData& a_electricFieldFace,
264 const phase::which_phase a_phase,
265 const EBAMRCellData& a_electricFieldCell) const;
266
273 virtual void
274 computeElectricField(EBAMRIVData& a_electricFieldEB,
275 const phase::which_phase a_phase,
276 const EBAMRCellData& a_electricFieldCell) const;
277
283 virtual void
284 computeMaxElectricField(Real& a_maxElectricField, const phase::which_phase a_phase);
285
290 virtual Real
291 getTime() const;
292
297 virtual bool
299
303 virtual void
304 allocateInternals() = 0;
305
309 virtual void
311
315 virtual void
317
321 virtual void
322 deallocate();
323
329 virtual void
331
338 virtual void
339 computeSpaceChargeDensity(MFAMRCellData& a_rho, const Vector<EBAMRCellData*>& a_cdrDensities);
340
345 virtual void
346 computeCellConductivity(EBAMRCellData& a_cellConductivity) const;
347
354 virtual void
355 computeFaceConductivity(EBAMRFluxData& a_conductivityFace,
356 EBAMRIVData& a_conductivityEB,
357 const EBAMRCellData& a_conductivityCell) const;
358
365 virtual void
366 setupSemiImplicitPoisson(const Real a_dt);
367
376 virtual void
377 setupSemiImplicitPoisson(const EBAMRFluxData& a_conductivityFace,
378 const EBAMRIVData& a_conductivityEB,
379 const Real a_factor);
380
386 virtual bool
387 solvePoisson();
388
397 virtual bool
398 solvePoisson(MFAMRCellData& a_potential,
399 MFAMRCellData& a_rho,
400 const Vector<EBAMRCellData*> a_cdrDensities,
401 const EBAMRIVData& a_sigma);
402
408 virtual void
409 advanceReactionNetwork(const Real a_time, const Real a_dt);
410
422 virtual void
423 advanceReactionNetwork(Vector<EBAMRCellData*>& a_cdrSources,
424 Vector<EBAMRCellData*>& a_rteSources,
425 const Vector<EBAMRCellData*>& a_cdrDensities,
426 const Vector<EBAMRCellData*>& a_rteDensities,
427 const EBAMRCellData& a_E,
428 const Real& a_time,
429 const Real& a_dt);
430
442 virtual void
443 advanceReactionNetwork(Vector<EBAMRCellData*>& a_cdrSources,
444 Vector<EBAMRCellData*>& a_rteSources,
445 const Vector<EBAMRCellData*>& a_cdrDensities,
446 const Vector<EBAMRCellData*>& a_cdrGradients,
447 const Vector<EBAMRCellData*>& a_rteDensities,
448 const EBAMRCellData& a_E,
449 const Real& a_time,
450 const Real& a_dt);
451
464 virtual void
465 advanceReactionNetwork(Vector<LevelData<EBCellFAB>*>& a_cdrSources,
466 Vector<LevelData<EBCellFAB>*>& a_rteSources,
467 const Vector<LevelData<EBCellFAB>*>& a_cdrDensities,
468 const Vector<LevelData<EBCellFAB>*>& a_cdrGradients,
469 const Vector<LevelData<EBCellFAB>*>& a_rteDensities,
470 const LevelData<EBCellFAB>& a_E,
471 const Real& a_time,
472 const Real& a_dt,
473 const int a_level);
487 virtual void
488 advanceReactionNetworkRegularCells(Vector<FArrayBox*>& a_cdrSources,
489 Vector<FArrayBox*>& a_rteSources,
490 const Vector<FArrayBox*>& a_cdrDensities,
491 const Vector<FArrayBox*>& a_cdrGradients,
492 const Vector<FArrayBox*>& a_rteDensities,
493 const FArrayBox& a_E,
494 const Real& a_time,
495 const Real& a_dt,
496 const Real& a_dx,
497 const Box& a_cellBox);
498
516 virtual void
517 advanceReactionNetworkIrreg(Vector<EBCellFAB*>& a_cdrSources,
518 Vector<EBCellFAB*>& a_rteSources,
519 const Vector<EBCellFAB*>& a_cdrDensities,
520 const Vector<EBCellFAB*>& a_cdrGradients,
521 const Vector<EBCellFAB*>& a_cdrVelocities,
522 const Vector<EBCellFAB*>& a_rteDensities,
523 const EBCellFAB& a_E,
524 const Real& a_time,
525 const Real& a_dt,
526 const Real& a_dx,
527 const Box& a_cellBox,
528 const int a_lvl,
529 const DataIndex& a_dit);
530
547 virtual void
548 advanceReactionNetworkIrregInterp(Vector<EBCellFAB*>& a_cdrSources,
549 Vector<EBCellFAB*>& a_rteSources,
550 const Vector<EBCellFAB*>& a_cdrDensities,
551 const Vector<EBCellFAB*>& a_cdrGradients,
552 const Vector<EBCellFAB*>& a_cdrVelocities,
553 const Vector<EBCellFAB*>& a_rteDensities,
554 const EBCellFAB& a_E,
555 const Real& a_time,
556 const Real& a_dt,
557 const Real& a_dx,
558 const Box& a_box,
559 const int a_lvl,
560 const DataIndex& a_dit);
561
580 virtual void
581 advanceReactionNetworkIrregUpwind(Vector<EBCellFAB*>& a_cdrSources,
582 Vector<EBCellFAB*>& a_rteSources,
583 const Vector<EBCellFAB*>& a_cdrDensities,
584 const Vector<EBCellFAB*>& a_cdrGradients,
585 const Vector<EBCellFAB*>& a_cdrVelocities,
586 const Vector<EBCellFAB*>& a_rteDensities,
587 const EBCellFAB& a_E,
588 const Real& a_time,
589 const Real& a_dt,
590 const Real& a_dx,
591 const Box& a_box,
592 const int a_lvl,
593 const DataIndex& a_dit);
594
599 virtual void
601
607 virtual void
608 computeCdrDiffusion(const EBAMRCellData& a_electricFieldCell, const EBAMRIVData& a_electricFieldEB);
609
617 virtual void
618 computeCdrDiffusionCell(Vector<EBAMRCellData>& a_cdrDcoCell,
619 const Vector<EBAMRCellData*>& a_cdrDensities,
620 const EBAMRCellData& a_electricFieldCell,
621 const Real& a_time);
622
631 virtual void
632 computeCdrDiffusionCell(Vector<LevelData<EBCellFAB>*>& a_cdrDcoCell,
633 const Vector<LevelData<EBCellFAB>*>& a_cdrDensities,
634 const LevelData<EBCellFAB>& a_electricFieldCell,
635 const int a_lvl,
636 const Real& a_time);
637
647 virtual void
648 computeCdrDiffusionCellRegular(Vector<FArrayBox*>& a_cdrDcoCell,
649 const Vector<FArrayBox*>& a_cdrDensities,
650 const FArrayBox& a_electricFieldCell,
651 const Box a_cellBox,
652 const Real a_dx,
653 const Real a_time);
654
665 virtual void
666 computeCdrDiffusionCellIrregular(Vector<EBCellFAB*>& a_cdrDcoCell,
667 const Vector<EBCellFAB*>& a_cdrDensities,
668 const EBCellFAB& a_electricFieldCell,
669 const Real a_dx,
670 const Real& a_time,
671 const int a_lvl,
672 const DataIndex& a_dit);
673
682 virtual void
683 computeCdrDiffusionFace(Vector<EBAMRFluxData*>& a_cdrDcoFace,
684 const Vector<EBAMRCellData*>& a_cdrDensities,
685 const EBAMRCellData& a_electricFieldCell,
686 const Real& a_time);
687
695 virtual void
696 computeCdrDiffusionEb(Vector<EBAMRIVData*>& a_cdrDcoEB,
697 const Vector<EBAMRIVData*>& a_cdrDensitiesEB,
698 const EBAMRIVData& a_electricFieldEB,
699 const Real& a_time);
700
709 virtual void
710 computeCdrDiffusionEb(Vector<LevelData<BaseIVFAB<Real>>*>& a_cdrDcoEB,
711 const Vector<LevelData<BaseIVFAB<Real>>*>& a_cdrDensitiesEB,
712 const LevelData<BaseIVFAB<Real>>& a_electricFieldEB,
713 const Real& a_time,
714 const int a_lvl);
715
720 virtual void
722
730 virtual void
731 computeCdrDriftVelocities(Vector<EBAMRCellData*>& a_velocities,
732 const Vector<EBAMRCellData*>& a_cdrDensities,
733 const EBAMRCellData& a_E,
734 const Real& a_time);
735
745 virtual void
746 computeCdrDriftVelocities(Vector<LevelData<EBCellFAB>*>& a_cdrVelocities,
747 const Vector<LevelData<EBCellFAB>*>& a_cdrDensities,
748 const LevelData<EBCellFAB>& a_electricField,
749 const int a_lvl,
750 const Real& a_time);
751
762 virtual void
763 computeCdrDriftVelocitiesRegular(Vector<FArrayBox*>& a_cdrVelocities,
764 const Vector<FArrayBox*>& a_cdrDensities,
765 const FArrayBox& a_electricField,
766 const Box& a_cellBox,
767 const Real& a_time,
768 const Real& a_dx);
769
781 virtual void
782 computeCdrDriftVelocitiesIrregular(Vector<EBCellFAB*>& a_velocities,
783 const Vector<EBCellFAB*>& a_cdrDensities,
784 const EBCellFAB& a_electricField,
785 const Real& a_time,
786 const Real& a_dx,
787 const int a_lvl,
788 const DataIndex& a_dit);
789
800 virtual void
801 computeCdrFluxes(Vector<EBAMRIVData*>& a_cdrFluxesEB,
802 const Vector<EBAMRIVData*>& a_extrapCdrFluxes,
803 const Vector<EBAMRIVData*>& a_extrapCdrDensities,
804 const Vector<EBAMRIVData*>& a_extrapCdrVelocities,
805 const Vector<EBAMRIVData*>& a_extrapCdrGradients,
806 const Vector<EBAMRIVData*>& a_extrapRteFluxes,
807 const EBAMRIVData& a_electricField,
808 const Real& a_time);
809
821 virtual void
822 computeCdrFluxes(Vector<LevelData<BaseIVFAB<Real>>*>& a_cdrFluxesEB,
823 const Vector<LevelData<BaseIVFAB<Real>>*>& a_extrapCdrFluxes,
824 const Vector<LevelData<BaseIVFAB<Real>>*>& a_extrapCdrDensities,
825 const Vector<LevelData<BaseIVFAB<Real>>*>& a_extrapCdrVelocities,
826 const Vector<LevelData<BaseIVFAB<Real>>*>& a_extrapCdrGradients,
827 const Vector<LevelData<BaseIVFAB<Real>>*>& a_extrapRteFluxes,
828 const LevelData<BaseIVFAB<Real>>& a_electricField,
829 const Real& a_time,
830 const int a_lvl);
831
843 virtual void
844 computeCdrDomainFluxes(Vector<EBAMRIFData*>& a_cdrFluxes,
845 const Vector<EBAMRIFData*>& a_extrapCdrFluxes,
846 const Vector<EBAMRIFData*>& a_extrapCdrDensities,
847 const Vector<EBAMRIFData*>& a_extrapCdrVelocities,
848 const Vector<EBAMRIFData*>& a_extrapCdrGradients,
849 const Vector<EBAMRIFData*>& a_extrapRteFluxes,
850 const EBAMRIFData& a_field,
851 const Real& a_time);
852
866 virtual void
867 computeCdrDomainFluxes(Vector<LevelData<DomainFluxIFFAB>*> a_cdrFluxes,
868 const Vector<LevelData<DomainFluxIFFAB>*>& a_extrapCdrFluxes,
869 const Vector<LevelData<DomainFluxIFFAB>*>& a_extrapCdrDensities,
870 const Vector<LevelData<DomainFluxIFFAB>*>& a_extrapCdrVelocities,
871 const Vector<LevelData<DomainFluxIFFAB>*>& a_extrapCdrGradients,
872 const Vector<LevelData<DomainFluxIFFAB>*>& a_extrapRteFluxes,
873 const LevelData<DomainFluxIFFAB>& a_electricField,
874 const Real& a_time,
875 const int a_lvl);
876
884 virtual void
885 computeExtrapolatedFluxes(Vector<EBAMRIVData*>& a_extrapCdrFluxesEB,
886 const Vector<EBAMRCellData*> a_cdrDensities,
887 const Vector<EBAMRCellData*> a_cdrVelocities,
888 const phase::which_phase a_phase);
889
898 virtual void
899 computeExtrapolatedDomainFluxes(Vector<EBAMRIFData*>& a_cdrDomainFluxes,
900 const Vector<EBAMRCellData*> a_cdrDensities,
901 const Vector<EBAMRCellData*> a_cdrVelocities,
902 const phase::which_phase a_phase);
903
911 virtual void
912 computeExtrapolatedVelocities(Vector<EBAMRIVData*>& a_cdrVelocitiesEB,
913 const Vector<EBAMRCellData*> a_cdrVelocitiesCell,
914 const phase::which_phase a_phase);
915
919 virtual void
921
928 virtual void
929 extrapolateToEb(Vector<EBAMRIVData*>& a_ebData,
930 const phase::which_phase a_phase,
931 const Vector<EBAMRCellData*>& a_cellData);
932
939 virtual void
940 extrapolateToEb(EBAMRIVData& a_ebData, const phase::which_phase a_phase, const EBAMRCellData& a_cellData);
941
949 virtual void
950 extrapolateToEb(LevelData<BaseIVFAB<Real>>& a_ebData,
951 const phase::which_phase a_phase,
952 const LevelData<EBCellFAB>& a_cellData,
953 const int a_lvl);
954
961 virtual void
962 extrapolateToDomainFaces(Vector<EBAMRIFData*>& a_domainData,
963 const phase::which_phase a_phase,
964 const Vector<EBAMRCellData*>& a_cellData);
965
972 virtual void
974 const phase::which_phase a_phase,
975 const EBAMRCellData& a_cellData);
976
984 virtual void
985 extrapolateToDomainFaces(LevelData<DomainFluxIFFAB>& a_domainData,
986 const phase::which_phase a_phase,
987 const LevelData<EBCellFAB>& a_cellData,
988 const int a_lvl);
989
997 virtual void
998 extrapolateVectorToDomainFaces(Vector<EBAMRIFData*>& a_domainData,
999 const phase::which_phase a_phase,
1000 const Vector<EBAMRCellData*>& a_cellData);
1001
1009 virtual void
1011 const phase::which_phase a_phase,
1012 const EBAMRCellData& a_cellData);
1013
1021 virtual void
1022 extrapolateVelocitiesToDomainFaces(Vector<EBAMRIFData*>& a_domainVelocities,
1023 const phase::which_phase a_phase,
1024 const Vector<EBAMRCellData*>& a_cellVelocities);
1025
1031 virtual void
1032 getCdrMax(Real& a_cdrMax, std::string& a_solverName) const;
1033
1037 virtual void
1038 initialSigma();
1039
1045 virtual void
1046 projectFlux(EBAMRIVData& a_projectedFlux, const EBAMRIVData& a_flux);
1047
1053 virtual void
1054 projectFlux(LevelData<BaseIVFAB<Real>>& a_projectedFlux,
1055 const LevelData<BaseIVFAB<Real>>& a_flux,
1056 const int a_lvl);
1057
1063 virtual void
1064 projectDomain(EBAMRIFData& a_projectedFlux, const EBAMRIFData& a_flux);
1065
1072 virtual void
1073 regridInternals(const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel) = 0;
1074
1081 virtual void
1082 regridSolvers(const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel);
1083
1088 virtual void
1089 resetDielectricCells(EBAMRIVData& a_data) const;
1090
1094 virtual void
1095 sanityCheck() const;
1096
1100 virtual void
1101 setupCdr();
1102
1106 virtual void
1107 setupPoisson();
1108
1112 virtual void
1114
1118 virtual void
1119 setupSigma();
1120
1125 virtual void
1127
1131 virtual void
1132 solverDump();
1133
1138 virtual void
1139 setVoltage(std::function<Real(const Real a_time)> a_voltage);
1140
1146 virtual void
1147 solveRadiativeTransfer(const Real a_dt);
1148
1153 virtual void
1154 setCdrSolvers(RefCountedPtr<CdrLayout<CdrSolver>>& a_cdr);
1155
1160 virtual void
1161 setFieldSolver(RefCountedPtr<FieldSolver>& a_fieldSolver);
1162
1167 virtual void
1168 setRadiativeTransferSolvers(RefCountedPtr<RtLayout<RtSolver>>& a_rte);
1169
1175 virtual Real
1177
1182 virtual Real
1184
1189 virtual Real
1191
1196 virtual Real
1198
1202 virtual Real
1204
1208 virtual Real
1209 getDt();
1210
1211 protected:
1218 {
1219 Interpolated,
1220 Upwind
1221 };
1222
1226 enum class TimeCode
1227 {
1228 Advection,
1229 Diffusion,
1230 AdvectionDiffusion,
1231 Source,
1232 RelaxationTime,
1233 Restricted,
1234 Hardcap,
1235 Error,
1236 Physics
1237 };
1238
1243 std::string m_realm;
1244
1248 std::string m_className;
1249
1253 phase::which_phase m_phase;
1254
1259
1263 RefCountedPtr<MultiFluidIndexSpace> m_multifluidIndexSpace;
1264
1268 RefCountedPtr<CdrPlasmaPhysics> m_physics;
1269
1273 RefCountedPtr<CdrLayout<CdrSolver>> m_cdr;
1274
1278 RefCountedPtr<RtLayout<RtSolver>> m_rte;
1279
1283 RefCountedPtr<FieldSolver> m_fieldSolver;
1284
1288 RefCountedPtr<SurfaceODESolver<1>> m_sigma;
1289
1294
1299
1303 std::function<Real(const Real a_time)> m_voltage;
1304
1309
1314
1318 Real m_cfl;
1319
1324
1329
1333 Real m_dt;
1334
1339
1344
1349
1354
1359
1364
1368 virtual void
1370
1374 virtual void
1376
1380 virtual void
1381 parseCFL();
1382
1386 virtual void
1388
1392 virtual void
1393 parseMinDt();
1394
1398 virtual void
1399 parseMaxDt();
1400
1404 virtual void
1406
1410 virtual void
1412
1417 virtual void
1419
1427 virtual void
1428 writeJ(LevelData<EBCellFAB>& a_output, int& a_comp, const std::string a_outputRealm, const int a_level) const;
1429
1433 virtual void
1434 computePhysicsPlotVars(EBAMRCellData& a_physicsPlotVars) const noexcept;
1435
1446 virtual void
1447 writeData(LevelData<EBCellFAB>& a_output,
1448 int& a_comp,
1449 const EBAMRCellData& a_data,
1450 const std::string a_outputRealm,
1451 const int a_level,
1452 const bool a_interpToCentroids,
1453 const bool a_interpGhost) const noexcept;
1454 };
1455 } // namespace CdrPlasma
1456} // namespace Physics
1457
1458#include <CD_NamespaceFooter.H>
1459
1460#endif
Declaration of core class for handling AMR-related operations (with embedded boundaries)
Declaration of a class that holds a set of CdrSolvers (to cut down on typing).
Declaration of basic physics coupling functions for Physics/CdrPlasma.
Declaration of base class for defining geometries.
Contains declaration of a base electrostatics solver class.
Multi-fluid index space.
Declaration of a class that holds a set of RtSolvers.
Declaration of a cut-cell ODE solver.
Declaration of main (abstract) time stepper class.
Class for holding a set of CdrSolvers.
Definition CD_CdrLayout.H:37
Abstract class for evolving the minimal plasma model in time.
Definition CD_CdrPlasmaStepper.H:39
virtual Real getTime() const
Return time.
Definition CD_CdrPlasmaStepper.cpp:4278
virtual void setupSigma()
Set up the surface charge solver.
Definition CD_CdrPlasmaStepper.cpp:3871
virtual void computeFaceConductivity(EBAMRFluxData &a_conductivityFace, EBAMRIVData &a_conductivityEB, const EBAMRCellData &a_conductivityCell) const
Compute the face-centered conductivity from a cell-centered conductivity.
Definition CD_CdrPlasmaStepper.cpp:229
virtual void setFieldSolver(RefCountedPtr< FieldSolver > &a_fieldSolver)
Set the field solver.
Definition CD_CdrPlasmaStepper.cpp:3256
virtual void printStepReport() override
Print a step report.
Definition CD_CdrPlasmaStepper.cpp:4766
virtual void extrapolateToEb(Vector< EBAMRIVData * > &a_ebData, const phase::which_phase a_phase, const Vector< EBAMRCellData * > &a_cellData)
Extrapolated cell-centered data to the EB. This is the AMR version for all species.
Definition CD_CdrPlasmaStepper.cpp:3043
virtual void extrapolateToDomainFaces(Vector< EBAMRIFData * > &a_domainData, const phase::which_phase a_phase, const Vector< EBAMRCellData * > &a_cellData)
Extrapolate cell-centered data to domain faces. This is the AMR version that does all species.
Definition CD_CdrPlasmaStepper.cpp:3094
SourceTermComputation m_whichSourceTermComputation
Which source term computation.
Definition CD_CdrPlasmaStepper.H:1258
virtual void projectFlux(EBAMRIVData &a_projectedFlux, const EBAMRIVData &a_flux)
Project a flux onto the EB normal. This is the AMR version.
Definition CD_CdrPlasmaStepper.cpp:3382
Real m_dtCFL
Computed CFL time step.
Definition CD_CdrPlasmaStepper.H:1338
virtual void computePhysicsPlotVars(EBAMRCellData &a_physicsPlotVars) const noexcept
Calculate the user-supplied plot variables.
Definition CD_CdrPlasmaStepper.cpp:4566
virtual void setSolverVerbosity()
Set solver verbosity.
Definition CD_CdrPlasmaStepper.cpp:3808
virtual void computeCdrFluxes(Vector< EBAMRIVData * > &a_cdrFluxesEB, const Vector< EBAMRIVData * > &a_extrapCdrFluxes, const Vector< EBAMRIVData * > &a_extrapCdrDensities, const Vector< EBAMRIVData * > &a_extrapCdrVelocities, const Vector< EBAMRIVData * > &a_extrapCdrGradients, const Vector< EBAMRIVData * > &a_extrapRteFluxes, const EBAMRIVData &a_electricField, const Real &a_time)
Compute CDR fluxes on the EB. This is the AMR version – it will call the level version.
Definition CD_CdrPlasmaStepper.cpp:2123
int m_solverVerbosity
Verbosity for solvers.
Definition CD_CdrPlasmaStepper.H:1348
virtual void computeJ(EBAMRCellData &a_J) const
Compute the current density.
Definition CD_CdrPlasmaStepper.cpp:2802
std::string m_className
Time stepper class name.
Definition CD_CdrPlasmaStepper.H:1248
Real m_relaxTime
Fudge factor for relaxation time.
Definition CD_CdrPlasmaStepper.H:1323
virtual void parseFastPoisson()
Parse the "fast poisson" method, i.e. how often we solve the Poisson equation.
Definition CD_CdrPlasmaStepper.cpp:3734
virtual Real computeOhmicInductionCurrent()
Compute induced current in external circuit due to ohmic conduction.
Definition CD_CdrPlasmaStepper.cpp:4198
RefCountedPtr< SurfaceODESolver< 1 > > m_sigma
Surface charge solver.
Definition CD_CdrPlasmaStepper.H:1288
virtual void advanceReactionNetworkRegularCells(Vector< FArrayBox * > &a_cdrSources, Vector< FArrayBox * > &a_rteSources, const Vector< FArrayBox * > &a_cdrDensities, const Vector< FArrayBox * > &a_cdrGradients, const Vector< FArrayBox * > &a_rteDensities, const FArrayBox &a_E, const Real &a_time, const Real &a_dt, const Real &a_dx, const Box &a_cellBox)
Compute reaction network sources. This is the regular version which does not do the cut-cells.
Definition CD_CdrPlasmaStepper.cpp:790
virtual void allocate() override
Allocate data for the time stepper and solvers.
Definition CD_CdrPlasmaStepper.cpp:3794
RefCountedPtr< CdrLayout< CdrSolver > > m_cdr
CDR solvers.
Definition CD_CdrPlasmaStepper.H:1273
virtual void parseMinDt()
Parse the minimum allowed time step.
Definition CD_CdrPlasmaStepper.cpp:3686
virtual void regridInternals(const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel)=0
Regrid internal storage. This MUST be overwritten by implementations.
virtual void parseRuntimeOptions() override=0
Parse runtime options. Subclasses must implement this.
RefCountedPtr< MultiFluidIndexSpace > m_multifluidIndexSpace
Index space.
Definition CD_CdrPlasmaStepper.H:1263
virtual void getCdrMax(Real &a_cdrMax, std::string &a_solverName) const
Get maximum density in the CDR species. This will fetch both the value and the solver name.
Definition CD_CdrPlasmaStepper.cpp:3216
virtual void deallocate()
Deallocation function. This will deallocate internal storage in the subclasses as well as the solvers...
Definition CD_CdrPlasmaStepper.cpp:4290
virtual void extrapolateVelocitiesToDomainFaces(Vector< EBAMRIFData * > &a_domainVelocities, const phase::which_phase a_phase, const Vector< EBAMRCellData * > &a_cellVelocities)
Extrapolate velocities data to domain faces. This is the AMR version that does all species.
Definition CD_CdrPlasmaStepper.cpp:2745
virtual void sanityCheck() const
Do a sanity check. Only works when DEBUG=TRUE.
Definition CD_CdrPlasmaStepper.cpp:3606
virtual Real advance(const Real a_dt) override=0
Advance method, advances equations.
virtual void parseVerbosity()
Parse class verbosity.
Definition CD_CdrPlasmaStepper.cpp:3630
TimeCode m_timeCode
Time code for step restriction.
Definition CD_CdrPlasmaStepper.H:1343
virtual Real computeRelaxationTime()
Compute the relaxation time as dt = eps0/conductivity.
Definition CD_CdrPlasmaStepper.cpp:4239
virtual void deallocateInternals()=0
Deallocate internals. Must be implemented by subclasses.
Definition CD_CdrPlasmaStepper.cpp:411
virtual void initialSigma()
Initialize the surface charge.
Definition CD_CdrPlasmaStepper.cpp:3323
virtual void computeCdrDriftVelocitiesRegular(Vector< FArrayBox * > &a_cdrVelocities, const Vector< FArrayBox * > &a_cdrDensities, const FArrayBox &a_electricField, const Box &a_cellBox, const Real &a_time, const Real &a_dx)
Compute the cell-centered CDR velocities.
Definition CD_CdrPlasmaStepper.cpp:1961
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_CdrPlasmaStepper.cpp:4463
virtual void setupCdr()
Setup the CDR solvers.
Definition CD_CdrPlasmaStepper.cpp:3822
virtual Real computeDomainCurrent()
Compute the ohmic current through the domain faces.
Definition CD_CdrPlasmaStepper.cpp:4113
virtual bool solvePoisson()
Solve the electrostatic Poisson equation.
Definition CD_CdrPlasmaStepper.cpp:348
virtual void parseRelaxationTime()
Parse the relaxation time restriction.
Definition CD_CdrPlasmaStepper.cpp:3670
Real m_dt
Previous time step size.
Definition CD_CdrPlasmaStepper.H:1333
virtual Real computeElectrodeCurrent()
Compute the ohmic current on electrodes.
Definition CD_CdrPlasmaStepper.cpp:3938
~CdrPlasmaStepper()
Destructor.
Definition CD_CdrPlasmaStepper.cpp:94
virtual void advanceReactionNetworkIrregUpwind(Vector< EBCellFAB * > &a_cdrSources, Vector< EBCellFAB * > &a_rteSources, const Vector< EBCellFAB * > &a_cdrDensities, const Vector< EBCellFAB * > &a_cdrGradients, const Vector< EBCellFAB * > &a_cdrVelocities, const Vector< EBCellFAB * > &a_rteDensities, const EBCellFAB &a_E, const Real &a_time, const Real &a_dt, const Real &a_dx, const Box &a_box, const int a_lvl, const DataIndex &a_dit)
Compute reaction network sources.
Definition CD_CdrPlasmaStepper.cpp:1099
virtual Real getDt()
Get dt.
Definition CD_CdrPlasmaStepper.cpp:4284
virtual void computeExtrapolatedFluxes(Vector< EBAMRIVData * > &a_extrapCdrFluxesEB, const Vector< EBAMRCellData * > a_cdrDensities, const Vector< EBAMRCellData * > a_cdrVelocities, const phase::which_phase a_phase)
Extrapolate cell-centered fluxes to the EB centroid.
Definition CD_CdrPlasmaStepper.cpp:2546
CdrPlasmaStepper()
Empty constructor.
Definition CD_CdrPlasmaStepper.cpp:29
virtual void advanceReactionNetworkIrreg(Vector< EBCellFAB * > &a_cdrSources, Vector< EBCellFAB * > &a_rteSources, const Vector< EBCellFAB * > &a_cdrDensities, const Vector< EBCellFAB * > &a_cdrGradients, const Vector< EBCellFAB * > &a_cdrVelocities, const Vector< EBCellFAB * > &a_rteDensities, const EBCellFAB &a_E, const Real &a_time, const Real &a_dt, const Real &a_dx, const Box &a_cellBox, const int a_lvl, const DataIndex &a_dit)
Compute reaction network sources. This is the irregular version which only does the cut-cells.
Definition CD_CdrPlasmaStepper.cpp:919
virtual void solverDump()
All solvers writes plot files. These are not the same as the plot files written by Driver.
Definition CD_CdrPlasmaStepper.cpp:3888
virtual void parseFastRadiativeTransfer()
Parse the "fast rte" method, i.e. how often we solve the Poisson equation.
Definition CD_CdrPlasmaStepper.cpp:3718
virtual void computeCdrDiffusionCell(Vector< EBAMRCellData > &a_cdrDcoCell, const Vector< EBAMRCellData * > &a_cdrDensities, const EBAMRCellData &a_electricFieldCell, const Real &a_time)
Compute CDR diffusion coefficients on cell centers. This will call the level version.
Definition CD_CdrPlasmaStepper.cpp:1312
Real m_maxDt
Maximum allowed time step.
Definition CD_CdrPlasmaStepper.H:1313
virtual Real computeDt() override=0
Compute the time step.
virtual void advanceReactionNetwork(const Real a_time, const Real a_dt)
Advance the reaction network. This will compute the electric field (on the appropriate phase) and cal...
Definition CD_CdrPlasmaStepper.cpp:422
EBAMRCellData m_physicsPlotVars
Storage for physics-observables.
Definition CD_CdrPlasmaStepper.H:1298
int m_upwindFactor
Upwind factor.
Definition CD_CdrPlasmaStepper.H:1363
virtual void writeJ(LevelData< EBCellFAB > &a_output, int &a_comp, const std::string a_outputRealm, const int a_level) const
Compute and put the current density in output data holder.
Definition CD_CdrPlasmaStepper.cpp:4525
virtual void setupPoisson()
Setup the field solver.
Definition CD_CdrPlasmaStepper.cpp:3838
virtual void computeCdrDiffusionCellRegular(Vector< FArrayBox * > &a_cdrDcoCell, const Vector< FArrayBox * > &a_cdrDensities, const FArrayBox &a_electricFieldCell, const Box a_cellBox, const Real a_dx, const Real a_time)
Compute diffusion coefficients on cell centers. This does all the regular cells.
Definition CD_CdrPlasmaStepper.cpp:1436
int m_fastRTE
Fast RTE solver.
Definition CD_CdrPlasmaStepper.H:1353
EBAMRCellData m_currentDensity
Storage for the current.
Definition CD_CdrPlasmaStepper.H:1293
virtual void parseSourceComputation()
Parse how we compute the source terms.
Definition CD_CdrPlasmaStepper.cpp:3750
virtual void setRadiativeTransferSolvers(RefCountedPtr< RtLayout< RtSolver > > &a_rte)
Set the RTE solvers.
Definition CD_CdrPlasmaStepper.cpp:3267
virtual void parseMaxDt()
Parse the maximum allowed time step.
Definition CD_CdrPlasmaStepper.cpp:3702
virtual void initialData() override
Fill all solvers with initial data.
Definition CD_CdrPlasmaStepper.cpp:3300
std::string m_realm
Realm where the time stepper is registered.
Definition CD_CdrPlasmaStepper.H:1243
virtual void computeCdrDiffusionFace(Vector< EBAMRFluxData * > &a_cdrDcoFace, const Vector< EBAMRCellData * > &a_cdrDensities, const EBAMRCellData &a_electricFieldCell, const Real &a_time)
Compute diffusion coefficients on face centers.
Definition CD_CdrPlasmaStepper.cpp:1607
Real m_cfl
CFL number.
Definition CD_CdrPlasmaStepper.H:1318
virtual void computeElectricField(MFAMRCellData &a_electricFieldCell, const MFAMRCellData &a_potential) const
Compute the cell-centered electric field on both phases.
Definition CD_CdrPlasmaStepper.cpp:2876
virtual void advanceReactionNetworkIrregInterp(Vector< EBCellFAB * > &a_cdrSources, Vector< EBCellFAB * > &a_rteSources, const Vector< EBCellFAB * > &a_cdrDensities, const Vector< EBCellFAB * > &a_cdrGradients, const Vector< EBCellFAB * > &a_cdrVelocities, const Vector< EBCellFAB * > &a_rteDensities, const EBCellFAB &a_E, const Real &a_time, const Real &a_dt, const Real &a_dx, const Box &a_box, const int a_lvl, const DataIndex &a_dit)
Compute reaction network sources. This version interpolates everything to the centroid and runs with ...
Definition CD_CdrPlasmaStepper.cpp:985
virtual void computeCdrDiffusion()
Compute diffusion things using whatever is available in the solvers.
Definition CD_CdrPlasmaStepper.cpp:1231
virtual void preRegrid(const int a_lmin, const int a_oldFinestLevel) override
Pre-regrid function – this is the one called by Driver.
Definition CD_CdrPlasmaStepper.cpp:2775
virtual void computeExtrapolatedVelocities(Vector< EBAMRIVData * > &a_cdrVelocitiesEB, const Vector< EBAMRCellData * > a_cdrVelocitiesCell, const phase::which_phase a_phase)
Extrapolated cell-centered velocities to the EB.
Definition CD_CdrPlasmaStepper.cpp:2663
virtual void postInitialize() override
Post-initialize operations to be performed after filling solvers with initialData.
Definition CD_CdrPlasmaStepper.cpp:49
RefCountedPtr< FieldSolver > m_fieldSolver
Poisson solver.
Definition CD_CdrPlasmaStepper.H:1283
virtual void parseSolverVerbosity()
Parse solver verbosities.
Definition CD_CdrPlasmaStepper.cpp:3642
virtual Real computeDielectricCurrent()
Compute the ohmic current on dielectrics.
Definition CD_CdrPlasmaStepper.cpp:4026
virtual void computeCdrDomainFluxes(Vector< EBAMRIFData * > &a_cdrFluxes, const Vector< EBAMRIFData * > &a_extrapCdrFluxes, const Vector< EBAMRIFData * > &a_extrapCdrDensities, const Vector< EBAMRIFData * > &a_extrapCdrVelocities, const Vector< EBAMRIFData * > &a_extrapCdrGradients, const Vector< EBAMRIFData * > &a_extrapRteFluxes, const EBAMRIFData &a_field, const Real &a_time)
Compute CDR fluxes on domain faces for usage in boundary conditions. This is the AMR version.
Definition CD_CdrPlasmaStepper.cpp:2356
virtual void computeExtrapolatedDomainFluxes(Vector< EBAMRIFData * > &a_cdrDomainFluxes, const Vector< EBAMRCellData * > a_cdrDensities, const Vector< EBAMRCellData * > a_cdrVelocities, const phase::which_phase a_phase)
Extrapolate drift fluxes to domain faces.
Definition CD_CdrPlasmaStepper.cpp:2611
RefCountedPtr< CdrPlasmaPhysics > m_physics
Plasma kinetics.
Definition CD_CdrPlasmaStepper.H:1268
virtual void setupSolvers() override
Instantiate solvers.
Definition CD_CdrPlasmaStepper.cpp:3278
virtual bool stationaryRTE()
Check if RTE solvers are stationary.
Definition CD_CdrPlasmaStepper.cpp:103
virtual void resetDielectricCells(EBAMRIVData &a_data) const
Set data defined over dielectric cells to zero.
Definition CD_CdrPlasmaStepper.cpp:3559
virtual void computeCdrDiffusionCellIrregular(Vector< EBCellFAB * > &a_cdrDcoCell, const Vector< EBCellFAB * > &a_cdrDensities, const EBCellFAB &a_electricFieldCell, const Real a_dx, const Real &a_time, const int a_lvl, const DataIndex &a_dit)
Compute diffusion coefficients on cell centers. This version does the irregular cells.
Definition CD_CdrPlasmaStepper.cpp:1513
Real m_minDt
Minimum allowed time step.
Definition CD_CdrPlasmaStepper.H:1308
virtual void projectDomain(EBAMRIFData &a_projectedFlux, const EBAMRIFData &a_flux)
Project flux onto domain edges/faces.
Definition CD_CdrPlasmaStepper.cpp:3445
RefCountedPtr< RtLayout< RtSolver > > m_rte
Radiative transfer solvers.
Definition CD_CdrPlasmaStepper.H:1278
virtual void setVoltage(std::function< Real(const Real a_time)> a_voltage)
Set voltage curve.
Definition CD_CdrPlasmaStepper.cpp:3619
SourceTermComputation
Enum for switching between source term computations. 'Interpolated' interpolates the cell-centered da...
Definition CD_CdrPlasmaStepper.H:1218
virtual void postRegrid() override
Perform post-regrid operations.
Definition CD_CdrPlasmaStepper.cpp:71
virtual void setupRadiativeTransfer()
Setup the RTE solvers.
Definition CD_CdrPlasmaStepper.cpp:3854
phase::which_phase m_phase
Plasma phase.
Definition CD_CdrPlasmaStepper.H:1253
virtual void computeSpaceChargeDensity()
Compute the centroid-centered space charge density by using the data inside the CDR solvers.
Definition CD_CdrPlasmaStepper.cpp:114
virtual void synchronizeSolverTimes(const int a_step, const Real a_time, const Real a_dt) override
Synchronize solver times.
Definition CD_CdrPlasmaStepper.cpp:3920
virtual void registerOperators() override
Register operators to be used for the simulation.
Definition CD_CdrPlasmaStepper.cpp:80
std::function< Real(const Real a_time)> m_voltage
Set the potential.
Definition CD_CdrPlasmaStepper.H:1303
virtual void postCheckpointSetup() override
Post-initialize operations to be performed after filling solvers with data read from checkpoint files...
Definition CD_CdrPlasmaStepper.cpp:4738
virtual void registerRealms() override
Register realms to be used for the simulation.
Definition CD_CdrPlasmaStepper.cpp:58
virtual void extrapolateVectorToDomainFaces(Vector< EBAMRIFData * > &a_domainData, const phase::which_phase a_phase, const Vector< EBAMRCellData * > &a_cellData)
Extrapolate vector data to domain faces. This is the AMR version that does all species.
Definition CD_CdrPlasmaStepper.cpp:2702
int m_fastPoisson
Fast RTE solver.
Definition CD_CdrPlasmaStepper.H:1358
virtual void computeCdrDriftVelocities()
Compute the CDR drift velocities.
Definition CD_CdrPlasmaStepper.cpp:1812
virtual void computeCdrDriftVelocitiesIrregular(Vector< EBCellFAB * > &a_velocities, const Vector< EBCellFAB * > &a_cdrDensities, const EBCellFAB &a_electricField, const Real &a_time, const Real &a_dx, const int a_lvl, const DataIndex &a_dit)
Compute the cell-centered CDR velocities.
Definition CD_CdrPlasmaStepper.cpp:2028
virtual void parseOptions()=0
Parse TimeStepper class options. Must be implemented by subclasses.
virtual void prePlot() override
Compute some thing that go into plot files.
Definition CD_CdrPlasmaStepper.cpp:4556
virtual void computeCdrDiffusionEb(Vector< EBAMRIVData * > &a_cdrDcoEB, const Vector< EBAMRIVData * > &a_cdrDensitiesEB, const EBAMRIVData &a_electricFieldEB, const Real &a_time)
Compute diffusion coefficients on the EB. This is the AMR version – it will call the level version.
Definition CD_CdrPlasmaStepper.cpp:1681
virtual void allocateInternals()=0
Allocate internal storage. Must be implemented by subclasses.
Definition CD_CdrPlasmaStepper.cpp:388
virtual void setCdrSolvers(RefCountedPtr< CdrLayout< CdrSolver > > &a_cdr)
Set the CDR layout.
Definition CD_CdrPlasmaStepper.cpp:3246
virtual void computeMaxElectricField(Real &a_maxElectricField, const phase::which_phase a_phase)
Compute the maximum of the electric field.
Definition CD_CdrPlasmaStepper.cpp:3005
virtual void regridSolvers(const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel)
Regrid all of our solvers.
Definition CD_CdrPlasmaStepper.cpp:3545
virtual void deallocateSolverInternals()
Deallocate internal solver storages.
Definition CD_CdrPlasmaStepper.cpp:3029
virtual void computeCellConductivity(EBAMRCellData &a_cellConductivity) const
Compute the cell-centered conductivity.
Definition CD_CdrPlasmaStepper.cpp:166
Real m_time
TIme.
Definition CD_CdrPlasmaStepper.H:1328
virtual void solveRadiativeTransfer(const Real a_dt)
Solve the radiative transfer problem.
Definition CD_CdrPlasmaStepper.cpp:3901
virtual int getNumberOfPlotVariables() const override
Get the number of plot variables for this time stepper.
Definition CD_CdrPlasmaStepper.cpp:4354
virtual void preRegridInternals(const int a_lmin, const int a_oldFinestLevel)
Do a preRegrid operation for internal storage (if needed).
Definition CD_CdrPlasmaStepper.cpp:2793
TimeCode
An enum for encapsulating how time steps were restricted.
Definition CD_CdrPlasmaStepper.H:1227
virtual void writePlotData(LevelData< EBCellFAB > &a_output, int &a_icomp, const std::string a_outputRealm, const int a_level) const override
Write plot data to output holder.
Definition CD_CdrPlasmaStepper.cpp:4424
virtual void setupSemiImplicitPoisson(const Real a_dt)
Set up a semi-implicit Poisson solver.
Definition CD_CdrPlasmaStepper.cpp:275
virtual Vector< std::string > getPlotVariableNames() const override
Get plot variable names.
Definition CD_CdrPlasmaStepper.cpp:4389
virtual void regrid(const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel) override
Regrid method.
Definition CD_CdrPlasmaStepper.cpp:3504
virtual void parseCFL()
Parse the CFL number.
Definition CD_CdrPlasmaStepper.cpp:3654
Class for holding a set of RtSolvers. T must derive from RtSolver.
Definition CD_RtLayout.H:27
Base class for advancing equations.
Definition CD_TimeStepper.H:30
Name containing various physics models for running chombo-discharge code.
Definition CD_AdvectionDiffusion.H:15