chombo-discharge
Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | List of all members
Physics::ItoPlasma::ItoPlasmaGodunovStepper Class Reference

Implementation of ItoPlasmaStepper that uses a semi-implicit split-step formalism for advancing the Ito-Poisson-KMC system. More...

#include <CD_ItoPlasmaGodunovStepper.H>

Inheritance diagram for Physics::ItoPlasma::ItoPlasmaGodunovStepper:
Inheritance graph
[legend]
Collaboration diagram for Physics::ItoPlasma::ItoPlasmaGodunovStepper:
Collaboration graph
[legend]

Public Member Functions

 ItoPlasmaGodunovStepper ()=delete
 Disallowed default constructor. Use the full constructor.
 
 ItoPlasmaGodunovStepper (RefCountedPtr< ItoPlasmaPhysics > &a_physics)
 Full constructor. More...
 
virtual ~ItoPlasmaGodunovStepper ()
 Destructor. Does nothing.
 
virtual Real advance (const Real a_dt) override
 Advance the Ito-Poisson-KMC system over a_dt. More...
 
virtual void allocate () override
 Allocate storage required for advancing the equations.
 
virtual void parseOptions () override
 Parse options.
 
virtual void parseRuntimeOptions () override
 Parse run-time options.
 
virtual void preRegrid (const int a_lmin, const int a_oldFinestLevel) override
 Perform pre-regrid operations. More...
 
virtual void regrid (const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel) override
 Regrid methods – puts all data on the new mesh. More...
 
- Public Member Functions inherited from Physics::ItoPlasma::ItoPlasmaStepper
 ItoPlasmaStepper ()
 Default constructor. Sets default options.
 
 ItoPlasmaStepper (RefCountedPtr< ItoPlasmaPhysics > &a_physics)
 Full constructor. Calls the other constructor. More...
 
virtual ~ItoPlasmaStepper ()
 Destructor.
 
virtual void allocateInternals ()
 Allocate "internal" storage.
 
virtual void setupSolvers () override
 Set up solvers.
 
virtual void initialData () override
 Fill solvers with initial data.
 
virtual void postCheckpointSetup () override
 Perform post-checkpoint operations. More...
 
virtual void postCheckpointPoisson ()
 Do some post-checkpoint operations for the electrostatic part. More...
 
virtual void postInitialize () override
 Post-initialization operations. Default does nothing.
 
virtual void writePlotData (EBAMRCellData &a_output, Vector< std::string > &a_plotVariableNames, int &a_icomp) const override
 Write plot data to output holder. More...
 
virtual int getNumberOfPlotVariables () const override
 Get number of plot variables for the output file.
 
virtual Vector< long int > getCheckpointLoads (const std::string a_realm, const int a_level) const override
 Get computational loads to be checkpointed. More...
 
virtual Real computeDt () override
 Compute a time step used for the advance method.
 
virtual void synchronizeSolverTimes (const int a_step, const Real a_time, const Real a_dt) override
 Synchronize solver times for all the solvers. More...
 
virtual void printStepReport () override
 Print a step report. Used by Driver for user monitoring of simulation.
 
virtual void registerRealms () override
 Register realms used for the simulation.
 
virtual void registerOperators () override
 Register operators used for the simulation.
 
virtual void postRegrid () override
 Perform post-regrid operations – default implementation does nothing.
 
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 will be called during regrids for the input realm. More...
 
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. More...
 
virtual void setIto (RefCountedPtr< ItoLayout< ItoSolver >> &a_itoLayout) noexcept
 Set the Ito layout. More...
 
virtual void setFieldSolver (RefCountedPtr< FieldSolver > &a_fieldSolver) noexcept
 Set the field solver. More...
 
virtual void setRadiativeTransferSolvers (RefCountedPtr< RtLayout< McPhoto >> &a_rteLayout) noexcept
 Set the radiative transfer solvers. More...
 
virtual void setVoltage (const std::function< Real(const Real a_time)> &a_voltage) noexcept
 Set voltage used for the simulation. More...
 
virtual Real getTime () const noexcept
 Get current simulation time. More...
 
virtual void computeElectricField (EBAMRCellData &a_electricField, const phase::which_phase a_phase) const noexcept
 Recompute the electric field onto the specified data holder. More...
 
- Public Member Functions inherited from TimeStepper
 TimeStepper ()
 Default constructor (does nothing)
 
virtual ~TimeStepper ()
 Default destructor (does nothing)
 
void setAmr (const RefCountedPtr< AmrMesh > &a_amr)
 Set AmrMesh. More...
 
void setComputationalGeometry (const RefCountedPtr< ComputationalGeometry > &a_computationalGeometry)
 Set the computational geometry. More...
 
virtual bool needToRegrid ()
 Fuction which can have Driver do regrids at arbitrary points in the simulation. More...
 

Protected Types

enum class  WhichAlgorithm { EulerMaruyama }
 Simple enum for distinguishing between algorithms.
 
- Protected Types inherited from Physics::ItoPlasma::ItoPlasmaStepper
enum class  TimeCode {
  Advection , Diffusion , AdvectionDiffusion , RelaxationTime ,
  Hardcap , Physics
}
 An enum for encapsulating how time steps were restricted.
 

Protected Member Functions

virtual void parseAlgorithm () noexcept
 Parse advancement algorithm.
 
virtual void parseCheckpointParticles () noexcept
 Parse checkpoint-restart functionality.
 
virtual void setOldPositions () noexcept
 Set the starting positions for the ItoSolver particles.
 
virtual void barrier () const noexcept
 Set an MPI barrier if using debug mode. More...
 
virtual void remapPointParticles (Vector< RefCountedPtr< ParticleContainer< PointParticle >>> &a_particles, const SpeciesSubset a_subset) noexcept
 Remap the input point particles. More...
 
virtual void depositPointParticles (const Vector< RefCountedPtr< ParticleContainer< PointParticle >>> &a_particles, const SpeciesSubset a_subset) noexcept
 Deposit the input point particles on the mesh. More...
 
virtual void clearPointParticles (const Vector< RefCountedPtr< ParticleContainer< PointParticle >>> &a_particles, const SpeciesSubset a_subset) noexcept
 Clear the input particle data holders. More...
 
virtual void computeConductivities (const Vector< RefCountedPtr< ParticleContainer< PointParticle >>> &a_particles) noexcept
 Compute all conductivities (cell, face, and EB) from the input point particles. More...
 
virtual void computeCellConductivity (EBAMRCellData &a_conductivityCell, const Vector< RefCountedPtr< ParticleContainer< PointParticle >>> &a_particles) noexcept
 Compute the cell-centered conductivity. More...
 
virtual void computeFaceConductivity () noexcept
 Compute the cell-centered conductivity. More...
 
virtual void setupSemiImplicitPoisson (const Real a_dt) noexcept
 Set up the semi-implicit Poisson solver.
 
virtual void removeCoveredPointParticles (Vector< RefCountedPtr< ParticleContainer< PointParticle >>> &a_particles, const EBRepresentation a_representation, const Real a_tolerance) const noexcept
 Remove covered particles. More...
 
virtual void copyConductivityParticles (Vector< RefCountedPtr< ParticleContainer< PointParticle >>> &a_conductivityParticles) noexcept
 Copy particles from the ItoSolver into PointParticles whose weight are ItoParticle::m_weight * ItoParticle::m_mobility. More...
 
virtual void advanceParticlesEulerMaruyama (const Real a_dt) noexcept
 Advance the particles using the Euler-Maruyama scheme. More...
 
virtual void diffuseParticlesEulerMaruyama (Vector< RefCountedPtr< ParticleContainer< PointParticle >>> &a_rhoDaggerParticles, const Real a_dt) noexcept
 Perform the diffusive advance in the Euler-Maruyama step. More...
 
virtual void stepEulerMaruyama (const Real a_dt) noexcept
 Step the particles according to the regular Euler-Maruyama scheme. More...
 
- Protected Member Functions inherited from Physics::ItoPlasma::ItoPlasmaStepper
virtual void setupIto ()
 Set up the Ito particle solvers.
 
virtual void setupPoisson ()
 Set up the electrostatic field solver.
 
virtual void setupRadiativeTransfer ()
 Set up the radiative transfer solver.
 
virtual void setupSigma ()
 Set up the surface charge solver.
 
virtual void intersectParticles (const SpeciesSubset a_speciesSubset, const EBIntersection a_interactionAlg, const bool a_delete) noexcept
 Intersect a subset of the particles with the domain and embedded boundary. More...
 
virtual void intersectParticles (const SpeciesSubset a_speciesSubset, const ItoSolver::WhichContainer a_containerBulk, const ItoSolver::WhichContainer a_containerEB, const ItoSolver::WhichContainer a_containerDomain, const EBIntersection a_intersectionAlg, const bool a_delete) noexcept
 Intersect a subset of the particles with the domain and embedded boundary. More...
 
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) More...
 
virtual void removeCoveredParticles (const SpeciesSubset a_which, const ItoSolver::WhichContainer a_container, const EBRepresentation a_representation, const Real a_tolerance) noexcept
 Remove covered particles (i.e., particles inside the EB) More...
 
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 container. More...
 
virtual void transferCoveredParticles (const SpeciesSubset a_speciesSubset, const ItoSolver::WhichContainer a_containerFrom, const ItoSolver::WhichContainer a_containerTo, 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 container. More...
 
virtual void writeNumParticlesPerPatch (EBAMRCellData &a_output, int &a_icomp) const
 Write number of particles per patch to output holder. More...
 
virtual void getMaxMinItoDensity (Real &a_maxDensity, Real &a_minDensity, std::string &a_maxSolver, std::string &a_minSolver) const noexcept
 Get maximum density of the Ito species. More...
 
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. More...
 
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. More...
 
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. More...
 
virtual Vector< RefCountedPtr< ItoSolver > > getLoadBalanceSolvers () const noexcept
 Get the solvers used for load balancing. More...
 
virtual Real computeMaxElectricField (const phase::which_phase a_phase) noexcept
 Compute the maximum electric field (norm) More...
 
virtual void computeSpaceChargeDensity () noexcept
 Compute the space charge. Calls the other version. More...
 
virtual void computeSpaceChargeDensity (MFAMRCellData &a_rho, const Vector< EBAMRCellData * > &a_densities) noexcept
 Compute the space charge density (both phases) More...
 
virtual void computeConductivityCell (EBAMRCellData &a_conductivity) noexcept
 Compute the cell-centered conductiivty. More...
 
virtual void computeConductivityCell (EBAMRCellData &a_conductivity, const Vector< ParticleContainer< ItoParticle > * > &a_particles) noexcept
 Compute the cell-centered conductiivty. More...
 
virtual void computeCurrentDensity (EBAMRCellData &a_J) noexcept
 Compute the current density. More...
 
virtual Real computeRelaxationTime () noexcept
 Compute the dielectric relaxation time.
 
virtual bool solvePoisson () noexcept
 Solve the electrostatic problem. More...
 
virtual void depositParticles (const SpeciesSubset a_speciesSubset) noexcept
 Deposit a subset of the ItoSolver particles on the mesh. More...
 
virtual void depositParticles (const SpeciesSubset a_speciesSubset, const ItoSolver::WhichContainer a_container) noexcept
 Deposit a subset of the ItoSolver particles on the mesh. More...
 
virtual void remapParticles (const SpeciesSubset a_speciesSubset) noexcept
 Remap a subset of ItoSolver particles. More...
 
virtual void remapParticles (const SpeciesSubset a_speciesSubset, const ItoSolver::WhichContainer a_container) noexcept
 Remap a subset of ItoSolver particles. More...
 
virtual void setItoVelocityFunctions () noexcept
 Set the Ito velocity functions. This is sgn(charge) * E. More...
 
virtual void computeItoVelocities () noexcept
 Compute ItoSolver velocities. More...
 
virtual void computeItoDiffusion () noexcept
 Compute ItoSolver velocities. More...
 
virtual void computeItoMobilitiesLFA () noexcept
 Compute mesh-based mobilities for LFA coupling. More...
 
virtual void computeItoMobilitiesLFA (Vector< EBAMRCellData * > &a_meshMobilities, const EBAMRCellData &a_electricField, const Real a_time) noexcept
 Compute mesh-based mobilities for LFA coupling. More...
 
virtual void computeItoMobilitiesLFA (Vector< LevelData< EBCellFAB > * > &a_meshMobilities, const LevelData< EBCellFAB > &a_E, const int a_level, const Real a_time) noexcept
 Level-routine when computing mesh-based mobilities for LFA coupling. More...
 
virtual void computeItoMobilitiesLFA (Vector< EBCellFAB * > &a_meshMobilities, const EBCellFAB &a_electricField, const int a_level, const DataIndex a_dit, const Box a_cellBox, const Real a_time) noexcept
 Patch-routine when computing mesh-based mobilities for LFA coupling. More...
 
virtual void computeItoMobilitiesLEA () noexcept
 Compute the IonSolver particle mobilities in the LEA coupling regime. More...
 
virtual void computeItoDiffusionLFA () noexcept
 Compute mesh-based diffusion coefficients for LFA coupling. More...
 
virtual void computeItoDiffusionLFA (Vector< EBAMRCellData * > &a_diffusionCoefficient, const EBAMRCellData &a_electricField, const Real a_time) noexcept
 Compute mesh-based diffusion coefficients for LFA coupling. More...
 
virtual void computeItoDiffusionLFA (Vector< LevelData< EBCellFAB > * > &a_diffusionCoefficient, const LevelData< EBCellFAB > &a_electricField, const int a_level, const Real a_time) noexcept
 Level-routine when computing mesh-based mobilities for LFA coupling. More...
 
virtual void computeItoDiffusionLFA (Vector< EBCellFAB * > &a_diffusionCoefficient, const EBCellFAB &a_E, const int a_level, const DataIndex a_dit, const Box a_box, const Real a_time) noexcept
 Patch-routine when computing mesh-based diffusion coefficients in the LFA coupling. More...
 
virtual void computeItoDiffusionLEA () noexcept
 Compute the IonSolver particle diffusion coefficients in the LEA coupling regime. More...
 
virtual void getPhysicalParticlesPerCell (EBAMRCellData &a_ppc) const noexcept
 Get the physical number of particles per cell. More...
 
virtual void computeReactiveParticlesPerCell (EBAMRCellData &a_ppc) noexcept
 Compute the number of reactive particles per cell. More...
 
virtual void computeReactiveParticlesPerCell (LevelData< EBCellFAB > &a_ppc, const int a_level) noexcept
 Compute the number of reactive particles per cell. More...
 
virtual void computeReactiveParticlesPerCell (EBCellFAB &a_ppc, const int a_level, const DataIndex a_dit, const Box a_box, const EBISBox &a_ebisbox) noexcept
 Compute the number of reactive particles per cell. More...
 
virtual void computeReactiveMeanEnergiesPerCell (EBAMRCellData &a_meanEnergies) noexcept
 Compute the mean particle energy in all grid cells. More...
 
virtual void computeReactiveMeanEnergiesPerCell (LevelData< EBCellFAB > &a_meanEnergies, const int a_level) noexcept
 Compute the mean particle energy in all grid cells. Level version. More...
 
virtual void computeReactiveMeanEnergiesPerCell (EBCellFAB &a_meanEnergies, const int a_level, const DataIndex a_dit, const Box a_box, const EBISBox &a_ebisbox) noexcept
 Compute the mean particle energy in all grid cells. Patch version. More...
 
virtual void advanceReactionNetwork (const Real a_dt) noexcept
 Chemistry advance over time a_dt. More...
 
virtual void advanceReactionNetwork (const EBAMRCellData &a_E, const EBAMRCellData &a_EdotJ, const Real a_dt) noexcept
 Chemistry advance over time a_dt. AMR version. More...
 
virtual void advanceReactionNetwork (LevelData< EBCellFAB > &a_particlesPerCell, LevelData< EBCellFAB > &a_newPhotonsPerCell, LevelData< EBCellFAB > &a_meanParticleEnergies, const LevelData< EBCellFAB > &a_electricField, const LevelData< EBCellFAB > &a_EdotJ, const int a_level, const Real a_dt) noexcept
 Chemistry advance over time a_dt. Level version. More...
 
virtual void advanceReactionNetwork (EBCellFAB &a_particlesPerCell, EBCellFAB &a_newPhotonsPerCell, EBCellFAB &a_meanParticleEnergies, const EBCellFAB &a_electricField, const EBCellFAB &a_EdotJ, const int a_level, const DataIndex a_dit, const Box a_box, const Real a_dx, const Real a_dt) noexcept
 Chemistry advance over time a_dt. Patch version. More...
 
virtual void reconcileParticles (const EBAMRCellData &a_newParticlesPerCell, const EBAMRCellData &a_oldParticlesPerCell, const EBAMRCellData &a_meanParticleEnergies, const EBAMRCellData &a_newPhotonsPerCell) noexcept
 Reconcile particles. At the bottom, this will call the physics interface for particle reconciliation. More...
 
virtual void reconcileParticles (const LevelData< EBCellFAB > &a_newParticlesPerCell, const LevelData< EBCellFAB > &a_oldParticlesPerCell, const LevelData< EBCellFAB > &a_meanParticleEnergies, const LevelData< EBCellFAB > &a_newPhotonsPerCell, const int a_level) noexcept
 Reconcile particles. At the bottom, this will call the physics interface for particle reconciliation. More...
 
virtual void reconcileParticles (const EBCellFAB &a_newParticlesPerCell, const EBCellFAB &a_oldParticlesPerCell, const EBCellFAB &a_meanParticleEnergies, const EBCellFAB &a_newPhotonsPerCell, const int a_level, const DataIndex a_dit, const Box a_box, const Real a_dx) noexcept
 Reconcile particles. At the bottom, this will call the physics interface for particle reconciliation. More...
 
virtual void resolveParticlesEB (const Real a_dt) noexcept
 Resolve particle injection at EBs. More...
 
virtual void resolveParticlesEB (Vector< ParticleContainer< ItoParticle > * > &a_inOutParticles, Vector< ParticleContainer< Photon > * > &a_inOutPhotons, const EBAMRCellData &a_electricField, const Real a_dt) noexcept
 Resolve particle injection at EBs. More...
 
virtual void injectParticlesEB () noexcept
 Inject particles through the EB. More...
 
virtual void injectParticlesEB (Vector< ParticleContainer< ItoParticle > * > a_bulkParticles, Vector< ParticleContainer< ItoParticle > * > a_injectedParticles) noexcept
 Inject particles through the EB.
 
virtual Real computePhysicsDt () noexcept
 Compute a maximum time step from the physics interface. More...
 
virtual Real computePhysicsDt (const EBAMRCellData &a_electricField) noexcept
 Compute a maximum time step from the physics interface. More...
 
virtual Real computePhysicsDt (const LevelData< EBCellFAB > &a_electricField, const LevelData< EBCellFAB > &a_particlesPerCell, const int a_level) noexcept
 Compute a maximum time step from the physics interface. More...
 
virtual Real computePhysicsDt (const EBCellFAB &a_electricField, const EBCellFAB &a_particlesPercCell, const int a_level, const DataIndex a_dit, const Box a_box) noexcept
 Compute a maximum time step from the physics interface. More...
 
virtual void advancePhotons (const Real a_dt) noexcept
 Photon advancement routine. More...
 
virtual void sortPhotonsByCell (const McPhoto::WhichContainer a_which) noexcept
 Sort photons by cells. More...
 
virtual void sortPhotonsByPatch (const McPhoto::WhichContainer a_which) noexcept
 Sort photons by patch. More...
 
virtual void computeEdotJSource (const Real a_dt) noexcept
 Compute the energy source term for the various plasma species. More...
 
virtual void initialSigma ()
 Fill surface charge solver with initial data.
 
virtual void parseVerbosity () noexcept
 Parse chattiness. More...
 
virtual void parseAbort () noexcept
 Parse abort on failure.
 
virtual void parseSuperParticles () noexcept
 Parse the desired number of particles per cell. More...
 
virtual void parseDualGrid () noexcept
 Parse dual or single realm calculations. More...
 
virtual void parseLoadBalance () noexcept
 Parse load balancing.
 
virtual void parseTimeStepRestrictions () noexcept
 Parse time step restrictions.
 
virtual void parseParametersEB () noexcept
 Parse things related to the EB.
 
virtual void parsePlotVariables () noexcept
 Parse plot variables.
 

Protected Attributes

bool m_writeCheckpointParticles
 If true, then the particles are checkpointed so we can regrid on checkpoint-restart.
 
bool m_readCheckpointParticles
 If true, then the HDF5 checkpoint file contained particles that we can read.
 
bool m_canRegridOnRestart
 If true, then the class supports regrid-on-restart. More...
 
bool m_gradientFix
 
Real m_prevDt
 Previous time step.
 
WhichAlgorithm m_algorithm
 Which advancement algorithm to use.
 
Timer m_timer
 Timer used for run-time logging of routines.
 
Vector< RefCountedPtr< ParticleContainer< PointParticle > > > m_conductivityParticles
 Storage for simplified particles that gave us sigma^k.
 
Vector< RefCountedPtr< ParticleContainer< PointParticle > > > m_rhoDaggerParticles
 Storage for particles that gave rho^dagger.
 
- Protected Attributes inherited from Physics::ItoPlasma::ItoPlasmaStepper
BoxSorting m_boxSort
 Box sorting method when using dual-grid with particle load balancing.
 
TimeCode m_timeCode
 Time code for understanding how the time step was restricted.
 
std::string m_fluidRealm
 Realm used for the fluid part (i.e., electrostatic) part of the simulation. More...
 
std::string m_particleRealm
 Realm used for the particle part of the simulation.
 
std::string m_name
 Time stepper name.
 
phase::which_phase m_plasmaPhase
 Phase where we solve for the plasma. More...
 
RefCountedPtr< ItoPlasmaPhysicsm_physics
 Implementation of ItoPlasmaPhysics. More...
 
RefCountedPtr< ItoLayout< ItoSolver > > m_ito
 Ito solvers.
 
RefCountedPtr< RtLayout< McPhoto > > m_rte
 Radiative transfer solvers.
 
RefCountedPtr< FieldSolverm_fieldSolver
 Field solver.
 
RefCountedPtr< SurfaceODESolver< 1 > > m_sigmaSolver
 Surface charge solver.
 
std::function< Real(const Real a_time)> m_voltage
 Voltage curve on the electrodes used in the simulation.
 
bool m_abortOnFailure
 Flag for abandoning simulation of Poisson solver fails.
 
bool m_dualGrid
 Using dual grid or not.
 
bool m_profile
 Profile kernels or not.
 
bool m_regridSuperparticles
 Do or do not superparticle merging/splitting on regrids.
 
bool m_loadBalanceParticles
 Load balance particle realm or not.
 
bool m_loadBalanceFluid
 Load balance fluid realm or not.
 
bool m_useNewReactionAlgorithm
 For switching between the old and new reaction algorithms.
 
bool m_plotConductivity
 Plot conductivity or not.
 
bool m_plotCurrentDensity
 Plot conductivity or not.
 
bool m_plotParticlesPerPatch
 Plot number of particles per patch or not.
 
Vector< int > m_particlesPerCell
 Target number of particles per cell when squishing ItoParticle's into superparticles.
 
int m_mergeInterval
 How often to merge superparticles. More...
 
Real m_loadPerCell
 The "background" load per cell when using particle load balancing. More...
 
Real m_toleranceEB
 Accepted tolerance (relative to dx) for EB intersection.
 
Real m_advectionCFL
 CFL-like time step for advection.
 
Real m_diffusionCFL
 CFL-like time step for diffusion.
 
Real m_advectionDiffusionCFL
 CFL-like time step for advection-diffusion.
 
Real m_relaxTimeFactor
 Factor proportional to the dielectric relaxation time dtRelax = eps0/sigma. More...
 
Real m_minDt
 Minimum permitted time step.
 
Real m_maxDt
 Maximum permitted time step.
 
Real m_advectionDt
 The advective time step (not multiplied by m_advectionCFL)
 
Real m_diffusionDt
 The diffusive time step (not multiplied by m_diffusionCFL)
 
Real m_advectionDiffusionDt
 The advection-diffusion time step (not multiplied by m_advectionDiffusionCFL)
 
Real m_relaxationTime
 The relaxation time eps0/sigma.
 
Real m_physicsDt
 The physics-based time step.
 
Vector< EBAMRCellDatam_loadBalancePPC
 For holding the number of computational particles per cell when load balancing.
 
Vector< int > m_loadBalanceIndices
 Solver indices used when load-balancing the particle solvers.
 
EBAMRCellData m_currentDensity
 Storage for current density. More...
 
EBAMRCellData m_conductivityCell
 Cell-centered conductivity. More...
 
EBAMRFluxData m_conductivityFace
 Face-centered conductivity. More...
 
EBAMRIVData m_conductivityEB
 EB-centered conductivity. More...
 
EBAMRCellData m_oldPPC
 For holding the number of physical particles per cell. More...
 
EBAMRCellData m_newPPC
 For holding the number of physical particles per cell. More...
 
EBAMRCellData m_particlePPC
 For holding the number of physical particles per cell for all species. More...
 
EBAMRCellData m_particleYPC
 For holding the number of generated photons per cell. More...
 
EBAMRCellData m_particleEPS
 For holding the mean particle energy. More...
 
EBAMRCellData m_particleOldPPC
 For holding the previous number of particles per cell for all species. More...
 
EBAMRCellData m_fluidPPC
 For holding the number of particles per cell for all species. More...
 
EBAMRCellData m_fluidYPC
 For holding the number of generated photons per cell. More...
 
EBAMRCellData m_fluidEPS
 For holding the mean particle energy. More...
 
EBAMRCellData m_electricFieldFluid
 Storage for holding the plasma phase electric field on the fluid realm.
 
EBAMRCellData m_electricFieldParticle
 Storage for holding the plasma phase electric field on the particle realm.
 
Vector< EBAMRCellDatam_energySources
 Storage for holding the energy sources for each species. More...
 
EBAMRCellData m_EdotJ
 Storage for holdnig E*J on the fluid realm. 1 component.
 
EBAMRCellData m_fluidScratch1
 Scratch storage on the fluid realm having 1 component.
 
EBAMRCellData m_fluidScratchD
 Scratch storage on the fluid realm with SpaceDim components.
 
EBAMRCellData m_particleScratch1
 Scratch storage on the particle realm with 1 component.
 
EBAMRCellData m_particleScratchD
 Scratch storage on the particle realm with SpaceDim components.
 
- Protected Attributes inherited from TimeStepper
int m_verbosity
 Class verbosity.
 
int m_timeStep
 Time step.
 
Real m_time
 TIme.
 
Real m_dt
 Previous time step size.
 
RefCountedPtr< AmrMeshm_amr
 AmrMesh.
 
RefCountedPtr< ComputationalGeometrym_computationalGeometry
 Computational geometry.
 

Detailed Description

Implementation of ItoPlasmaStepper that uses a semi-implicit split-step formalism for advancing the Ito-Poisson-KMC system.

Constructor & Destructor Documentation

◆ ItoPlasmaGodunovStepper()

ItoPlasmaGodunovStepper::ItoPlasmaGodunovStepper ( RefCountedPtr< ItoPlasmaPhysics > &  a_physics)

Full constructor.

Parameters
[in]a_phyicsPhysics implementation.

Member Function Documentation

◆ advance()

Real ItoPlasmaGodunovStepper::advance ( const Real  a_dt)
overridevirtual

Advance the Ito-Poisson-KMC system over a_dt.

Parameters
[in]a_dtTime step

Implements Physics::ItoPlasma::ItoPlasmaStepper.

◆ advanceParticlesEulerMaruyama()

void ItoPlasmaGodunovStepper::advanceParticlesEulerMaruyama ( const Real  a_dt)
protectedvirtualnoexcept

Advance the particles using the Euler-Maruyama scheme.

Parameters
[in]a_dtTime step

◆ barrier()

void ItoPlasmaGodunovStepper::barrier ( ) const
protectedvirtualnoexcept

Set an MPI barrier if using debug mode.

This defaults to ParallelOps::barrier() if m_debug=true

◆ clearPointParticles()

void ItoPlasmaGodunovStepper::clearPointParticles ( const Vector< RefCountedPtr< ParticleContainer< PointParticle >>> &  a_particles,
const SpeciesSubset  a_subset 
)
protectedvirtualnoexcept

Clear the input particle data holders.

Parameters
[in,out]a_particlesList of particle containers to remap. Indices must correspond to indices in the ItoSolvers
[in]a_subsetParticle subset to remap.

◆ computeCellConductivity()

void ItoPlasmaGodunovStepper::computeCellConductivity ( EBAMRCellData a_conductivityCell,
const Vector< RefCountedPtr< ParticleContainer< PointParticle >>> &  a_particles 
)
protectedvirtualnoexcept

Compute the cell-centered conductivity.

Parameters
[out]a_conductivityCellCell-centered conductivity
[in]a_particlesParticles to deposit. Particle weights must hold the mobility*weight

◆ computeConductivities()

void ItoPlasmaGodunovStepper::computeConductivities ( const Vector< RefCountedPtr< ParticleContainer< PointParticle >>> &  a_particles)
protectedvirtualnoexcept

Compute all conductivities (cell, face, and EB) from the input point particles.

Parameters
[in]a_particlesParticles to deposit. Particle weights must hold the mobility*weight
Note
This deposits the input particle weights onto m_conductivityCell, m_conductivityFace etc.

◆ computeFaceConductivity()

void ItoPlasmaGodunovStepper::computeFaceConductivity ( )
protectedvirtualnoexcept

Compute the cell-centered conductivity.

Note
Interpolates m_conductivityCell to m_conductivityFace

◆ copyConductivityParticles()

void ItoPlasmaGodunovStepper::copyConductivityParticles ( Vector< RefCountedPtr< ParticleContainer< PointParticle >>> &  a_conductivityParticles)
protectedvirtualnoexcept

Copy particles from the ItoSolver into PointParticles whose weight are ItoParticle::m_weight * ItoParticle::m_mobility.

Parameters
[out]a_conductivityParticlesPoint-particles holding the mobility * weight

◆ depositPointParticles()

void ItoPlasmaGodunovStepper::depositPointParticles ( const Vector< RefCountedPtr< ParticleContainer< PointParticle >>> &  a_particles,
const SpeciesSubset  a_subset 
)
protectedvirtualnoexcept

Deposit the input point particles on the mesh.

Parameters
[in,out]a_particlesList of particle containers to remap. Indices must correspond to indices in the ItoSolvers
[in]a_subsetParticle subset to remap.
Note
This deposits into the ItoSolver m_phi data.

◆ diffuseParticlesEulerMaruyama()

void ItoPlasmaGodunovStepper::diffuseParticlesEulerMaruyama ( Vector< RefCountedPtr< ParticleContainer< PointParticle >>> &  a_rhoDaggerParticles,
const Real  a_dt 
)
protectedvirtualnoexcept

Perform the diffusive advance in the Euler-Maruyama step.

This computes the diffusion hop onto run-time enabled storage on the ItoParticles. We also store the "rho dagger" particles which correspond to the position of the charged particles after the diffusionhop.

◆ preRegrid()

void ItoPlasmaGodunovStepper::preRegrid ( const int  a_lmin,
const int  a_oldFinestLevel 
)
overridevirtual

Perform pre-regrid operations.

This stores the particles and mesh data on the old grids.

Parameters
[in]a_lminThe coarsest level that changes
[in]a_oldFinestLevelThe finest level before the regrid.
Note
This will store the "conductivity" and "rho dagger" particles.

Reimplemented from Physics::ItoPlasma::ItoPlasmaStepper.

◆ regrid()

void ItoPlasmaGodunovStepper::regrid ( const int  a_lmin,
const int  a_oldFinestLevel,
const int  a_newFinestLevel 
)
overridevirtual

Regrid methods – puts all data on the new mesh.

Parameters
[in]a_lminThe coarsest level that changed.
[in]a_oldFinestLevelThe finest level before the regrid.
[in]a_newFinestLevelThe finest level after the regrid.

Reimplemented from Physics::ItoPlasma::ItoPlasmaStepper.

◆ remapPointParticles()

void ItoPlasmaGodunovStepper::remapPointParticles ( Vector< RefCountedPtr< ParticleContainer< PointParticle >>> &  a_particles,
const SpeciesSubset  a_subset 
)
protectedvirtualnoexcept

Remap the input point particles.

Parameters
[in,out]a_particlesList of particle containers to remap. Indices must correspond to indices in the ItoSolvers
[in]a_subsetParticle subset to remap.

◆ removeCoveredPointParticles()

void ItoPlasmaGodunovStepper::removeCoveredPointParticles ( Vector< RefCountedPtr< ParticleContainer< PointParticle >>> &  a_particles,
const EBRepresentation  a_representation,
const Real  a_tolerance 
) const
protectedvirtualnoexcept

Remove covered particles.

Parameters
[in,out]a_particlesParticles to remove
[in]a_representationRepresentation of the EB
[in]a_toleranceEB tolerance

◆ stepEulerMaruyama()

void ItoPlasmaGodunovStepper::stepEulerMaruyama ( const Real  a_dt)
protectedvirtualnoexcept

Step the particles according to the regular Euler-Maruyama scheme.

Parameters
[in]a_dtTime step.

This sets X^(k+1) = X^k + a_dt * V + sqrt(2*D*a_dt) * W

Note
The hop MUST have been stored on the particle run-time storage

Member Data Documentation

◆ m_canRegridOnRestart

bool Physics::ItoPlasma::ItoPlasmaGodunovStepper::m_canRegridOnRestart
protected

If true, then the class supports regrid-on-restart.

This is populated in the constructor or when reading the checkpoint file.


The documentation for this class was generated from the following files: