chombo-discharge
Loading...
Searching...
No Matches
CD_ItoSolver.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_ItoSolver_H
13#define CD_ItoSolver_H
14
15// Our includes
16#include <CD_AmrMesh.H>
18#include <CD_ItoSpecies.H>
19#include <CD_ItoParticle.H>
20#include <CD_EBParticleMesh.H>
22#include <CD_EBRepresentation.H>
23#include <CD_EBIntersection.H>
24#include <CD_CellInfo.H>
26#include <CD_NamespaceHeader.H>
27
35{
36public:
48 enum class WhichContainer
49 {
50 Bulk,
51 EB,
52 Domain,
53 Source,
54 Covered,
55 Scratch
56 };
57
61 ItoSolver();
62
66 virtual ~ItoSolver();
67
72 virtual void
74
79 virtual std::string
80 getName() const;
81
86 virtual const std::string
87 getRealm() const;
88
93 virtual void
95
99 virtual void
100 parseOptions();
101
105 virtual void
107
111 virtual EBIntersection
113
118 virtual void
119 initialData();
120
127 virtual void
131
138 virtual void
140
146 virtual void
147 allocate();
148
153 virtual void
155
160 virtual void
162
167 virtual void
169
176 virtual void
178
187 virtual void
192
200 virtual void
202
211 virtual void
216
224 virtual void
226
235 virtual void
240
247 virtual void
249
256 virtual void
258
265 virtual void
267
273 virtual void
275
282 virtual void
284
292 void
296
305 void
307
318 void
323
330 virtual void
332
340 virtual void
342
349 virtual void
353
360 virtual void
362
370 virtual void
375
383 virtual void
388
398 virtual void
403 return;
404 });
405
418 virtual void
424 const bool a_deleteParticles,
425 const std::function<void(ItoParticle&)> a_nonDeletionModifier = [](ItoParticle&) -> void {
426 return;
427 });
428
440 virtual void
446 const bool a_deleteParticles,
447 const std::function<void(ItoParticle&)> a_nonDeletionModifier = [](ItoParticle&) -> void {
448 return;
449 });
450
457 virtual void
459
464 virtual int
466
471 virtual Vector<std::string>
472 getPlotVariableNames() const;
473
482 virtual void
484 int& a_comp,
486 const int a_level) const noexcept;
487
493 virtual unsigned long long
494 getNumParticles(const WhichContainer a_container, const bool a_localOnly) const;
495
500 virtual void
501 registerOperators() const;
502
507 virtual void
509
514 virtual void
516
521 virtual void
522 setPhase(const phase::which_phase a_phase);
523
528 virtual void
529 setVerbosity(const int a_verbosity);
530
538 virtual void
539 setTime(const int a_step, const Real a_time, const Real a_dt);
540
541#ifdef CH_USE_HDF5
549 virtual void
551#endif
552
553#ifdef CH_USE_HDF5
560 virtual void
562#endif
563
568 virtual void
570
577 virtual void
578 preRegrid(const int a_lbase, const int a_oldFinestLevel);
579
587 template <ItoSolver::WhichContainer C = WhichContainer::Bulk>
588 void
590 const int a_lvl,
591 const DataIndex a_dit,
592 const bool a_destructive);
593
598 virtual bool
599 isMobile() const;
600
605 virtual bool
606 isDiffusive() const;
607
614
619 virtual const ParticleContainer<ItoParticle>&
621
626 virtual const RefCountedPtr<ItoSpecies>&
627 getSpecies() const;
628
633 virtual EBAMRCellData&
634 getPhi();
635
640 virtual EBAMRCellData&
642
647 virtual const EBAMRCellData&
648 getVelocityFunction() const;
649
654 virtual EBAMRCellData&
656
661 virtual const EBAMRCellData&
662 getDiffusionFunction() const;
663
668 virtual EBAMRCellData&
670
675 virtual const EBAMRCellData&
676 getMobilityFunction() const;
677
682 virtual void
684
689 virtual void
691
696 virtual void
698
703 virtual void
705
711 virtual void
713
721 virtual void
722 interpolateVelocities(const int a_level, const DataIndex& a_dit);
723
728 virtual void
730
735 virtual void
737
742 virtual void
744
749 virtual void
751
756 virtual void
758
763 virtual void
765
771 virtual void
773
779 virtual void
781
788 virtual void
790
798 virtual void
800 const int a_particlesPerCell,
801 const int a_level,
802 const DataIndex a_dit);
803
810 virtual void
812 const CellInfo& a_cellInfo,
813 const int a_particlesPerCell) const noexcept;
814
821 virtual void
823 const CellInfo& a_cellInfo,
824 const int a_particlesPerCell) const noexcept;
825
832 virtual void
834 const CellInfo& a_cellInfo,
835 const int a_particlesPerCell) const noexcept;
836
843 virtual void
845 const CellInfo& a_cellInfo,
846 const int a_particlesPerCell) const noexcept;
847
851 virtual void
852 remap();
853
858 virtual void
860
864 virtual void
865 remapAll();
866
871 inline RealVect
872 randomGaussian() const;
873
878 inline RealVect
880
889 virtual Real
890 computeDt() const;
891
901 virtual Real
902 computeDt(const int a_lvl) const;
903
914 virtual Real
915 computeDt(const int a_lvl, const DataIndex& a_dit) const;
916
928 virtual Real
930
943 virtual Real
944 computeHopDt(const Real a_maxCellsToMove, const int a_lvl) const;
945
959 virtual Real
960 computeHopDt(const Real a_maxCellsToMove, const int a_lvl, const DataIndex& a_dit) const;
961
965 virtual Real
966 computeAdvectiveDt() const;
967
972 virtual Real
973 computeAdvectiveDt(const int a_lvl) const;
974
980 virtual Real
981 computeAdvectiveDt(const int a_lvl, const DataIndex& a_dit) const;
982
986 virtual Real
987 computeDiffusiveDt() const;
988
993 virtual Real
994 computeDiffusiveDt(const int a_lvl) const;
995
1001 virtual Real
1002 computeDiffusiveDt(const int a_lvl, const DataIndex& a_dit) const;
1003
1009 getDeposition() const;
1010
1016
1021 phase::which_phase
1022 getPhase() const;
1023
1024protected:
1028 static constexpr int m_comp = 0;
1029
1033 static constexpr int m_nComp = 1;
1034
1040 {
1041 Particles,
1042 Numbers
1043 };
1044
1051 {
1052 Direct,
1053 Velocity
1054 };
1055
1060
1065
1070
1075
1080
1085
1090
1095
1099 phase::which_phase m_phase;
1100
1105
1111
1117
1122
1127
1132
1137
1142
1147
1152
1157
1162
1167
1172
1177
1182
1187
1192
1197
1202
1207
1212
1217
1222
1227
1232
1237
1242
1247
1252
1257
1262
1267
1272
1277
1282
1286 void
1287 parseRNG();
1288
1292 void
1294
1298 void
1300
1304 void
1306
1310 void
1312
1316 void
1318
1322 void
1324
1328 void
1330
1334 void
1336
1340 void
1342
1346 void
1348
1349#ifdef CH_USE_HDF5
1358 virtual void
1360#endif
1361
1362#ifdef CH_USE_HDF5
1370 virtual void
1372#endif
1373
1374#ifdef CH_USE_HDF5
1381 virtual void
1383#endif
1384
1385#ifdef CH_USE_HDF5
1392 virtual void
1394#endif
1395
1403 void
1405
1415 template <class P, class Ret, Ret (P ::*MemberFunc)() const>
1416 void
1421
1431 virtual void
1433
1439 virtual void
1441
1448 virtual void
1450
1457 virtual void
1458 interpolateMobilities(const int a_level, const DataIndex& a_dit, const EBCellFAB& a_velocityMagnitude) noexcept;
1459
1465 virtual void
1466 interpolateMobilitiesDirect(const int a_level, const DataIndex& a_dit) noexcept;
1467
1474 virtual void
1476 const DataIndex& a_dit,
1477 const EBCellFAB& a_velocityMagnitude) noexcept;
1478
1485 virtual void
1486 updateMobilities(const int a_level, const DataIndex a_dit);
1487
1494 virtual void
1495 interpolateDiffusion(const int a_level, const DataIndex& a_dit);
1496
1503 virtual void
1504 updateDiffusion(const int a_level, const DataIndex a_dit);
1505
1516 virtual void
1518 int& a_comp,
1519 const EBAMRCellData& a_data,
1521 const int a_level,
1522 const bool a_interpToCentroids,
1523 const bool a_interpGhost) const noexcept;
1524};
1525
1526#include <CD_NamespaceFooter.H>
1527
1528#include <CD_ItoSolverImplem.H>
1529
1530#endif
Declaration of core class for handling AMR-related operations (with embedded boundaries)
Simple class for holding some quantities relevant in a grid cell.
CoarseFineDeposition
Coarse-fine deposition types (see CD_EBAMRParticleMesh for how these are handled).
Definition CD_CoarseFineDeposition.H:26
Declaration of base class for defining geometries.
DepositionType
Deposition types.
Definition CD_DepositionType.H:23
Enum for putting some logic into EB intersection tests.
EBIntersection
Enum for putting some logic into how we think about intersection between particles and EBs.
Definition CD_EBIntersection.H:21
Declaration of a class for handling particle-mesh interpolation and deposition.
Enum for putting some logic into EB intersection tests.
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 a particle class for Ito diffusion.
Implementation of CD_ItoSolver.H.
Declaration of an ItoSpecies class that passes in names and initial data to ItoSolvers.
Declaration of a class for holding particles on an AMR hierarchy.
Namespace containing various particle management utilities.
Class for the cell-information that is often queried when merging particles inside a cell.
Definition CD_CellInfo.H:25
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
virtual void computeAverageEnergy(EBAMRCellData &a_phi, ParticleContainer< ItoParticle > &a_particles) const
Compute average particle energy..
Definition CD_ItoSolver.cpp:1793
RealVect randomDirection() const
Draw a random direction in N-dimensional space.
virtual void makeSuperparticlesEqualWeightKD(List< ItoParticle > &a_particles, const CellInfo &a_cellInfo, const int a_particlesPerCell) const noexcept
Superparticle merging with KD/BVH trees.
Definition CD_ItoSolver.cpp:3178
virtual void interpolateMobilities()
Interpolate mobilities.
Definition CD_ItoSolver.cpp:2208
WhichContainer
Enum class for distinguishing various types of particle containers.
Definition CD_ItoSolver.H:49
phase::which_phase getPhase() const
Return phase.
Definition CD_ItoSolver.cpp:3023
void parseDiffusionHop()
Parse diffusion hop.
CoarseFineDeposition m_coarseFineDeposition
Coarse-fine deposition strategy.
Definition CD_ItoSolver.H:1236
bool m_plotPhi
Flag for outputting m_phi to plot files.
Definition CD_ItoSolver.H:1181
virtual void organizeParticlesByCell(const WhichContainer a_container)
Sort the input particle container by cell.
Definition CD_ItoSolver.cpp:3029
virtual Vector< std::string > getPlotVariableNames() const
Get output plot names.
Definition CD_ItoSolver.cpp:1398
virtual void transferCoveredParticles(const EBRepresentation a_representation, const Real a_tol)
Transfer particles that are covered (within a_tol distance from EB) to another container.
Definition CD_ItoSolver.cpp:777
virtual void setSpecies(const RefCountedPtr< ItoSpecies > &a_species)
Set the species.
Definition CD_ItoSolver.cpp:981
virtual void makeSuperparticlesBVHReinitialize(List< ItoParticle > &a_particles, const CellInfo &a_cellInfo, const int a_particlesPerCell) const noexcept
Superparticle merging with BVH trees. This reinitializes particles within each BVH node.
Definition CD_ItoSolver.cpp:3256
EBAMRCellData m_diffusionFunction
Diffusion-centerer field used for interpolating diffusion coefficients.
Definition CD_ItoSolver.H:1261
virtual void registerOperators() const
Register operators.
Definition CD_ItoSolver.cpp:494
virtual void depositParticles()
Deposit particles onto mesh.
Definition CD_ItoSolver.cpp:1825
CoarseFineDeposition getCoarseFineDeposition() const
Get the coarse-fine deposition strategy.
Definition CD_ItoSolver.cpp:3017
bool m_plotEnergyDensity
Flag for plotting the energy density on the mesh.
Definition CD_ItoSolver.H:1221
virtual void depositNonConservative(EBAMRIVData &a_depositionNC, const EBAMRCellData &a_depositionKappaC) const
Make the "non-conservative" kappa deposition – computing depositionNC = sum(kappa*depositionC)/sum(ka...
Definition CD_ItoSolver.cpp:1893
virtual void setTime(const int a_step, const Real a_time, const Real a_dt)
Set the time for this solver.
Definition CD_ItoSolver.cpp:540
virtual void intersectParticles(const EBIntersection a_ebIntersection, const bool a_deleteParticles, const std::function< void(ItoParticle &)> a_nonDeletionModifier=[](ItoParticle &) -> void { return;})
Do boundary intersection tests.
Definition CD_ItoSolver.cpp:841
Real m_bisectionStep
Bisection step size to use for particle intersection tests with EBs.
Definition CD_ItoSolver.H:1121
virtual void regrid(const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel)
Regrid this solver.
Definition CD_ItoSolver.cpp:934
int m_restartPPC
Number of particles used when restarting a simulation – this is relevant only when restarting from a ...
Definition CD_ItoSolver.H:1074
virtual void preRegrid(const int a_lbase, const int a_oldFinestLevel)
Perform pre-regrid operations.
Definition CD_ItoSolver.cpp:1974
virtual void setComputationalGeometry(const RefCountedPtr< ComputationalGeometry > &a_computationalGeometry)
Set computational geometry.
Definition CD_ItoSolver.cpp:468
void parseIntersectionEB()
Parse EB intersection algorithms.
Definition CD_ItoSolver.cpp:320
virtual void generateParticlesFromDensity(ParticleContainer< ItoParticle > &a_particles, const std::function< Real(const RealVect x)> &a_densityFunc, const int a_maxParticlesPerCell) const noexcept
Fill a particle container randomly with particles such that we obtain the target uniform density.
Definition CD_ItoSolver.cpp:591
virtual void setAmr(const RefCountedPtr< AmrMesh > &a_amr)
Set the AmrMesh object.
Definition CD_ItoSolver.cpp:481
bool m_forceHaloNGP
Force usage of NGP when depositing "halo" particles.
Definition CD_ItoSolver.H:1156
static constexpr int m_nComp
Default number of component in data holders (do not touch).
Definition CD_ItoSolver.H:1033
virtual void organizeParticlesByPatch(const WhichContainer a_container)
Sort the input particle container by patch.
Definition CD_ItoSolver.cpp:3042
void parseRedistribution()
Parse whether or not to use redistribution.
Definition CD_ItoSolver.cpp:346
virtual Real computeHopDt(const Real a_maxCellsToMove) const
Compute the largest possible time step such that the particles does not move more than a specified nu...
Definition CD_ItoSolver.cpp:2640
virtual void setParticleMobility(const Real a_mobility)
Sets mobility coefficient for all particles.
Definition CD_ItoSolver.cpp:2121
bool m_forceIrregInterpolationNGP
NGP interpolation in cut cells or not.
Definition CD_ItoSolver.H:1151
EBAMRIVData m_depositionNC
Scratch storage for holding the non-conservative deposition.
Definition CD_ItoSolver.H:1266
virtual Real computeDiffusiveDt() const
Compute the diffusive dt. This computes dt = dx*dx/(2*SpaceDim*D) for all particles.
Definition CD_ItoSolver.cpp:2887
void parseParticleMerger()
Parse the super-particle merger.
Definition CD_ItoSolver.cpp:396
std::string m_className
Class name.
Definition CD_ItoSolver.H:1110
virtual void updateDiffusion()
Update mobilities parametrically from the particle energy.
Definition CD_ItoSolver.cpp:2467
bool m_plotParticles
Flag for depositing and plotting the bulk particles on the mesh.
Definition CD_ItoSolver.H:1196
int m_timeStep
Time step.
Definition CD_ItoSolver.H:1131
virtual EBAMRCellData & getVelocityFunction()
Get cell-centered velocity mesh data.
Definition CD_ItoSolver.cpp:2031
virtual void mergeParticles(List< ItoParticle > &a_particles, const CellInfo &a_cellInfo, const int a_particlesPerCell) const noexcept
General superparticle merging with underlying algorithm through m_particleMerger.
Definition CD_ItoSolver.cpp:3170
bool m_forceIrregDepositionNGP
NGP deposition in cut cells or not.
Definition CD_ItoSolver.H:1146
std::string m_realm
Realm where this solve lives.
Definition CD_ItoSolver.H:1079
virtual void depositConductivity(EBAMRCellData &a_phi, ParticleContainer< ItoParticle > &a_particles) const
Deposit conductivities (i.e. mass*mobility / volume)
Definition CD_ItoSolver.cpp:1633
virtual void interpolateVelocities()
Interpolate the particle velocities.
Definition CD_ItoSolver.cpp:2147
virtual void interpolateMobilitiesDirect(const int a_level, const DataIndex &a_dit) noexcept
Directly interpolate mobilities. Interpolates for all particles in the specified grid patch.
Definition CD_ItoSolver.cpp:2281
virtual void parseOptions()
Parse class options.
Definition CD_ItoSolver.cpp:109
bool m_plotParticlesSource
Flag for depositing and plotting the source particles on the mesh.
Definition CD_ItoSolver.H:1211
virtual Real computeDt() const
Compute a time step for the advance – this calls the level function.
Definition CD_ItoSolver.cpp:2516
RefCountedPtr< ItoSpecies > m_species
Species that this solver solves for.
Definition CD_ItoSolver.H:1094
DepositionType m_deposition
Deposition method when depositing particles to the mesh.
Definition CD_ItoSolver.H:1231
virtual void interpolateDiffusion()
Interpolate the diffusion field to the particle positions.
Definition CD_ItoSolver.cpp:2412
virtual void computeAverageMobility(EBAMRCellData &a_phi, ParticleContainer< ItoParticle > &a_particles) const
Compute average mobility.
Definition CD_ItoSolver.cpp:1731
Real m_dt
Time step.
Definition CD_ItoSolver.H:1141
ItoSolver()
Constructor – user must subsequently set the realm and, parse class options, set the species etc.
Definition CD_ItoSolver.cpp:36
std::string m_name
Solver name.
Definition CD_ItoSolver.H:1104
virtual std::string getName() const
Get this solver's name.
Definition CD_ItoSolver.cpp:64
EBAMRCellData m_velocityFunction
Cell-centered field used for interpolating velocities.
Definition CD_ItoSolver.H:1256
WhichCheckpoint m_checkpointing
How to checkpoint files. particles => write particles to HDF5. numbers => write numbers to HDF5.
Definition CD_ItoSolver.H:1059
virtual ~ItoSolver()
Destructor (does nothing).
Definition CD_ItoSolver.cpp:58
void parseCheckpointing()
Parse checkpointing method.
Definition CD_ItoSolver.cpp:372
bool m_isDiffusive
If true, solver is diffusive.
Definition CD_ItoSolver.H:1171
virtual ParticleContainer< ItoParticle > & getParticles(const WhichContainer a_container)
Get a general particle container.
Definition CD_ItoSolver.cpp:1998
bool m_plotAverageEnergy
Flag for plotting the average particle energy on the mesh.
Definition CD_ItoSolver.H:1226
DepositionType m_plotDeposition
Deposition method when depositing particles to mesh during plotting.
Definition CD_ItoSolver.H:1241
RealVect randomGaussian() const
Draw a random N-dimensional Gaussian number from a normal distribution with zero with and unit standa...
Definition CD_ItoSolverImplem.H:30
virtual void setParticleDiffusion(const Real a_diffusion)
Sets diffusion coefficient for all particles.
Definition CD_ItoSolver.cpp:2134
virtual void remap()
Remap the bulk particle container.
Definition CD_ItoSolver.cpp:2987
void drawNewParticles(const LevelData< EBCellFAB > &a_particlesPerCell, const int a_level, const int a_newPPC)
Restart particles from a specified number of particles in the grid cell.
Definition CD_ItoSolver.cpp:1250
bool m_useRedistribution
Use mass redistribution or not.
Definition CD_ItoSolver.H:1161
EBAMRCellData m_mobilityFunction
Mobility function – used when interpolating particle mobilities.
Definition CD_ItoSolver.H:1251
virtual void updateMobilities()
Update mobilities parametrically from the particle energy.
Definition CD_ItoSolver.cpp:2365
std::map< WhichContainer, ParticleContainer< ItoParticle > > m_particleContainers
Various particle containers with identifiers.
Definition CD_ItoSolver.H:1276
virtual bool isMobile() const
Check if solver is mobile.
Definition CD_ItoSolver.cpp:1958
virtual EBAMRCellData & getDiffusionFunction()
Get the diffusion function.
Definition CD_ItoSolver.cpp:2053
virtual void setPhase(const phase::which_phase a_phase)
Set phase where the particles will live.
Definition CD_ItoSolver.cpp:517
int m_verbosity
Verbosity level for this solver.
Definition CD_ItoSolver.H:1126
virtual void makeSuperparticles(const WhichContainer a_container, const int a_particlesPerCell)
Make superparticles for a full container – this is the AMR version that users will usually call.
Definition CD_ItoSolver.cpp:3055
virtual void depositDiffusivity(EBAMRCellData &a_phi, ParticleContainer< ItoParticle > &a_particles) const
Deposit diffusivity (i.e. mass*D/volume)
Definition CD_ItoSolver.cpp:1669
WhichCheckpoint
How to checkpoint files.
Definition CD_ItoSolver.H:1040
virtual void setRealm(const std::string a_realm)
Set the realm where this solver will live.
Definition CD_ItoSolver.cpp:80
void addParticles(ListBox< ItoParticle > &a_inputParticles, const int a_lvl, const DataIndex a_dit, const bool a_destructive)
Add particles to a contain. This adds into a specific grid level and patch. The user can delete the i...
Definition CD_ItoSolverImplem.H:50
void depositKappaConservative(EBAMRCellData &a_phi, ParticleContainer< P > &a_particles, const DepositionType a_deposition, const CoarseFineDeposition a_coarseFineDeposition) const
Compute the cell-centered deposition – this is the main deposition function.
Definition CD_ItoSolverImplem.H:153
Real m_normalDistributionTruncation
Truncation value for normal distribution.
Definition CD_ItoSolver.H:1116
bool m_plotParticlesEB
Flag for depositing and plotting the EB particles on the mesh.
Definition CD_ItoSolver.H:1201
bool m_blendConservation
Flag for blending the deposition clouds with the "non-conservative" divergence.
Definition CD_ItoSolver.H:1166
virtual const std::string getRealm() const
Get the realm where this solver is registered.
Definition CD_ItoSolver.cpp:72
virtual EBAMRCellData & getPhi()
Get the mesh data.
Definition CD_ItoSolver.cpp:2020
virtual void allocate()
Allocate internal storage.
Definition CD_ItoSolver.cpp:995
WhichMobilityInterpolation m_mobilityInterp
Switch for deciding how to interpolate mobilities, i.e. interpolating either mu*E or just mu (to the ...
Definition CD_ItoSolver.H:1064
void parseVerbosity()
Parse class verbosity.
Definition CD_ItoSolver.cpp:148
static constexpr int m_comp
Default component in data holders (do not touch).
Definition CD_ItoSolver.H:1028
virtual void setVerbosity(const int a_verbosity)
Set verbosity level for this solver.
Definition CD_ItoSolver.cpp:528
virtual void depositHybrid(EBAMRCellData &a_depositionH, EBAMRIVData &a_massDifference, const EBAMRIVData &a_depositionNC) const
Make the "hybrid" deposition phiH = kappa*phiC + (1-kappa)*phiNC. On input, a_depositionH should cont...
Definition CD_ItoSolver.cpp:1909
void parseDivergenceComputation()
Parse whether or not to compute a "non-conservative" divergence when redistributing mass.
Definition CD_ItoSolver.cpp:359
RefCountedPtr< AmrMesh > m_amr
AMR; needed for grid stuff.
Definition CD_ItoSolver.H:1089
virtual void depositEnergyDensity(EBAMRCellData &a_phi, ParticleContainer< ItoParticle > &a_particles) const
Deposit energy densities (i.e. mass*energy/volume => total energy per unit volume)
Definition CD_ItoSolver.cpp:1700
void parseRNG()
Parse RNG options – this parses the RNG seed and instantiates the distributions.
Definition CD_ItoSolver.cpp:161
virtual void setDiffusionFunction(const Real a_diffusionCoefficient)
Utility function – set a constant diffusion coefficient.
Definition CD_ItoSolver.cpp:2097
DepositionType getDeposition() const
Get deposition method.
Definition CD_ItoSolver.cpp:3011
void parseTruncation()
Parse the normal distribution truncation level.
Definition CD_ItoSolver.cpp:175
EBAMRIVData m_massDiff
Scratch storage for holding the mass difference when using hybrid deposition.
Definition CD_ItoSolver.H:1271
EBAMRCellData m_phi
Storage for particle mesh data.
Definition CD_ItoSolver.H:1246
virtual void initialData()
Set the initial data.
Definition CD_ItoSolver.cpp:553
virtual void computeAverageDiffusion(EBAMRCellData &a_phi, ParticleContainer< ItoParticle > &a_particles) const
Compute average diffusion coefficient.
Definition CD_ItoSolver.cpp:1762
virtual void parseRuntimeOptions()
Parse class runtime configurable options.
Definition CD_ItoSolver.cpp:129
bool m_plotDiffCo
Flag for outputting m_diffusionFunction to plot files.
Definition CD_ItoSolver.H:1191
virtual void computeLoads(Vector< long int > &a_loads, const DisjointBoxLayout &a_dbl, const int a_level)
Compute particle load on a specific grid level – this will compute the number of particles in each bo...
Definition CD_ItoSolver.cpp:688
virtual void remapAll()
Remap all particle containers.
Definition CD_ItoSolver.cpp:2974
WhichMobilityInterpolation
Enum for deciding how to interpolate particle mobilities.
Definition CD_ItoSolver.H:1051
virtual void reinitializeParticles(List< ItoParticle > &a_particles, const CellInfo &a_cellInfo, const int a_particlesPerCell) const noexcept
Particle re-initialization algorithm.
Definition CD_ItoSolver.cpp:3368
virtual const RefCountedPtr< ItoSpecies > & getSpecies() const
Get the species.
Definition CD_ItoSolver.cpp:96
bool m_isMobile
If true, solver is mobile, i.e. advection is turned on.
Definition CD_ItoSolver.H:1176
virtual unsigned long long getNumParticles(const WhichContainer a_container, const bool a_localOnly) const
Get number of particles in a specified particle container.
Definition CD_ItoSolver.cpp:447
virtual int getNumberOfPlotVariables() const
Get number of plot variables.
Definition CD_ItoSolver.cpp:1354
virtual void clear(const WhichContainer a_container)
Clear a particle container – this will delete all the particles in the input container.
Definition CD_ItoSolver.cpp:3415
virtual void redistributeAMR(EBAMRCellData &a_phi) const
Redistribute mass in an AMR context.
Definition CD_ItoSolver.cpp:1850
bool m_plotParticlesCovered
Flag for depositing and plotting the covered particles on the mesh.
Definition CD_ItoSolver.H:1216
EBIntersection m_intersectionAlg
Algorithm for EB intersection.
Definition CD_ItoSolver.H:1281
Real m_time
Current time.
Definition CD_ItoSolver.H:1136
ParticleManagement::ParticleMerger< ItoParticle > m_particleMerger
Particle merger.
Definition CD_ItoSolver.H:1069
virtual void setParticleMerger(const ParticleManagement::ParticleMerger< ItoParticle > &a_particleMerger) noexcept
Set the particle merger. This will get called when merging particles using makeSuperparticles.
Definition CD_ItoSolver.cpp:88
virtual void removeCoveredParticles(const EBRepresentation a_representation, const Real a_tol)
Remove particles that are inside the EB.
Definition CD_ItoSolver.cpp:717
phase::which_phase m_phase
Phase where this solver lives.
Definition CD_ItoSolver.H:1099
virtual bool isDiffusive() const
Check if solver is diffusive.
Definition CD_ItoSolver.cpp:1966
virtual EBIntersection getIntersectionAlgorithm() const noexcept
Get the EB-particle intersection algorithm.
Definition CD_ItoSolver.cpp:436
virtual EBAMRCellData & getMobilityFunction()
Get mobility function.
Definition CD_ItoSolver.cpp:2075
virtual void setVelocityFunction(const RealVect a_velocity)
Utility function – set a constant velocity.
Definition CD_ItoSolver.cpp:2108
void parseDeposition()
Parse particle deposition methods.
Definition CD_ItoSolver.cpp:247
RefCountedPtr< ComputationalGeometry > m_computationalGeometry
Computational geometry.
Definition CD_ItoSolver.H:1084
void depositParticlesNGP(LevelData< EBCellFAB > &a_output, const ParticleContainer< P > &a_particles, const int a_level) const noexcept
Do an NGP deposit on a specific grid level. Used for IO.
Definition CD_ItoSolverImplem.H:85
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_ItoSolver.cpp:1567
virtual void interpolateMobilitiesVelocity(const int a_level, const DataIndex &a_dit, const EBCellFAB &a_velocityMagnitude) noexcept
Interpolate mobilities through the velocity. Interpolates for all particles in the specified grid pat...
Definition CD_ItoSolver.cpp:2314
virtual Real computeAdvectiveDt() const
Compute advection time step dt = dx/vMax where vMax is the largest velocity component of the particle...
Definition CD_ItoSolver.cpp:2799
void parsePlotVariables()
Parse plot variables.
Definition CD_ItoSolver.cpp:188
bool m_plotParticlesDomain
Flag for depositing and plotting the domain particles on the mesh.
Definition CD_ItoSolver.H:1206
bool m_plotVelocity
Flag for outputting m_velocityFunction to plot files.
Definition CD_ItoSolver.H:1186
virtual void writePlotData(LevelData< EBCellFAB > &a_output, int &a_comp, const std::string a_outputRealm, const int a_level) const noexcept
Write plot data.
Definition CD_ItoSolver.cpp:1446
Templated class for holding particles on an AMR hierarchy with particle remapping.
Definition CD_ParticleContainer.H:51
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
std::function< void(List< P > &a_particles, const CellInfo &a_cellInfo, const int a_numTargetParticles)> ParticleMerger
Concept for splitting/merging particles.
Definition CD_ParticleManagement.H:41