|
chombo-discharge
|
Base time stepper class that advances the Ito-Poisson system of equations. More...
#include <CD_ItoPlasmaStepper.H>


Public Member Functions | |
| ItoPlasmaStepper () | |
| Default constructor. Sets default options. | |
| ItoPlasmaStepper (RefCountedPtr< ItoPlasmaPhysics > &a_physics) | |
| Full constructor. Calls the other constructor. More... | |
| virtual | ~ItoPlasmaStepper () |
| Destructor. | |
| virtual void | parseOptions () |
| Parse options. | |
| virtual void | parseRuntimeOptions () override |
| Parse runtime configurable options. | |
| virtual void | allocate () override |
| Allocate storage for solvers. | |
| 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 | advance (const Real a_dt)=0 |
| Advancement method. Needs to be implemented by subclasses. 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 | 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... | |
| 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 | TimeCode { Advection , Diffusion , AdvectionDiffusion , RelaxationTime , Hardcap , Physics } |
| An enum for encapsulating how time steps were restricted. | |
Protected Member Functions | |
| 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 | |
| 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< ItoPlasmaPhysics > | m_physics |
| Implementation of ItoPlasmaPhysics. More... | |
| RefCountedPtr< ItoLayout< ItoSolver > > | m_ito |
| Ito solvers. | |
| RefCountedPtr< RtLayout< McPhoto > > | m_rte |
| Radiative transfer solvers. | |
| RefCountedPtr< FieldSolver > | m_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< EBAMRCellData > | m_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< EBAMRCellData > | m_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< AmrMesh > | m_amr |
| AmrMesh. | |
| RefCountedPtr< ComputationalGeometry > | m_computationalGeometry |
| Computational geometry. | |
Base time stepper class that advances the Ito-Poisson system of equations.
| ItoPlasmaStepper::ItoPlasmaStepper | ( | RefCountedPtr< ItoPlasmaPhysics > & | a_physics | ) |
Full constructor. Calls the other constructor.
| [in] | a_physics | Implementation of the Ito plasma physics model. |
|
pure virtual |
Advancement method. Needs to be implemented by subclasses.
| [in] | a_dt | Time step to be used for advancement |
Implements TimeStepper.
Implemented in Physics::ItoPlasma::ItoPlasmaGodunovStepper.
|
protectedvirtualnoexcept |
Photon advancement routine.
| [in] | a_dt | Time step |
|
protectedvirtualnoexcept |
Chemistry advance over time a_dt. AMR version.
| [in] | a_electricField | Electric field. Must be defined on the fluid realm. |
| [in] | a_EdotJ | Source term EdotJ for each species. Must have same number of components as Ito layout and be defined on the fluid realm. |
| [in] | a_dt | Time step |
|
protectedvirtualnoexcept |
Chemistry advance over time a_dt.
| [in] | a_dt | Time step |
|
protectedvirtualnoexcept |
Chemistry advance over time a_dt. Patch version.
| [in,out] | a_particlesPerCell | Number of particles per cell for each plasma species |
| [in,out] | a_newPhotonsPerCell | Number of physical photons to be generated for each photon species |
| [in,out] | a_meanParticleEnergies | Mean particle energies for each plasma species |
| [in] | a_electricField | Electric field. |
| [in] | a_EdotJ | EdotJ for each plasma species. |
| [in] | a_level | Grid level |
| [in] | a_dit | Grid index. |
| [in] | a_box | Grid box |
| [in] | a_dx | Grid resolution. |
| [in] | a_dt | Time increment |
|
protectedvirtualnoexcept |
Chemistry advance over time a_dt. Level version.
| [in,out] | a_particlesPerCell | Number of particles per cell for each plasma species |
| [in,out] | a_newPhotonsPerCell | Number of physical photons to be generated for each photon species |
| [in,out] | a_meanParticleEnergies | Mean particle energies for each plasma species |
| [in] | a_electricField | Electric field. |
| [in] | a_EdotJ | EdotJ for each plasma species. |
| [in] | a_level | Grid level |
| [in] | a_dt | Time increment |
|
protectedvirtualnoexcept |
Compute the cell-centered conductiivty.
| [out] | a_conductivity | Cell-centered conductivity |
|
protectedvirtualnoexcept |
Compute the cell-centered conductiivty.
| [out] | a_conductivity | Cell-centered conductivity |
| [in] | a_particles | Ito particles. |
|
protectedvirtualnoexcept |
Compute the current density.
|
protectedvirtualnoexcept |
Compute the energy source term for the various plasma species.
| [in] | a_dt | Time step during which the particles move. |
|
virtualnoexcept |
Recompute the electric field onto the specified data holder.
| [out] | a_electricField | Electric field on cell centroid (defined on the fluid realm). |
| [in] | a_phase | Phase where we compute the electric field. |
|
protectedvirtualnoexcept |
Compute ItoSolver velocities.
This will compute the diffusion coefficients (in the specified coupling regime)
|
protectedvirtualnoexcept |
Compute the IonSolver particle diffusion coefficients in the LEA coupling regime.
|
protectedvirtualnoexcept |
Compute mesh-based diffusion coefficients for LFA coupling.
|
protectedvirtualnoexcept |
Compute mesh-based diffusion coefficients for LFA coupling.
| [out] | a_diffusionCoefficients | Mesh-based diffusion coefficients. Must be defined on the particle realm. |
| [in] | a_electricField | Electric field. Must be defined on the fluid realm. |
| [in] | a_time | Time |
|
protectedvirtualnoexcept |
Patch-routine when computing mesh-based diffusion coefficients in the LFA coupling.
| [out] | a_diffusionCoefficients | Diffusion coefficients. Must be defined on the fluid realm. |
| [in] | a_electricField | Electric field. Must be defined on the fluid realm. |
| [in] | a_level | Grid level |
| [in] | a_time | Time |
| [in] | a_level | Grid level |
| [in] | a_dit | Grid index |
| [in] | a_cellBox | Computation box |
| [in] | a_time | Time |
|
protectedvirtualnoexcept |
Level-routine when computing mesh-based mobilities for LFA coupling.
| [out] | a_diffusionCoefficients | Diffusion coefficients. Must be defined on the fluid realm. |
| [in] | a_electricField | Electric field. Must be defined on the fluid realm. |
| [in] | a_level | Grid level |
| [in] | a_time | Time |
|
protectedvirtualnoexcept |
Compute the IonSolver particle mobilities in the LEA coupling regime.
|
protectedvirtualnoexcept |
Compute mesh-based mobilities for LFA coupling.
|
protectedvirtualnoexcept |
Compute mesh-based mobilities for LFA coupling.
| [out] | a_meshMobilities | Mesh-based mobilities. Must be defined on the particle realm. |
| [in] | a_electricField | Electric field. Must be defined on the fluid realm. |
| [in] | a_time | Time |
|
protectedvirtualnoexcept |
Patch-routine when computing mesh-based mobilities for LFA coupling.
| [out] | a_meshMobilities | Mesh-based mobilities. Must be defined on the fluid realm. |
| [in] | a_electricField | Electric field. Must be defined on the fluid realm. |
| [in] | a_level | Grid level |
| [in] | a_dit | Grid index |
| [in] | a_cellBox | Computation box |
| [in] | a_time | Time |
|
protectedvirtualnoexcept |
Level-routine when computing mesh-based mobilities for LFA coupling.
| [out] | a_meshMobilities | Mesh-based mobilities. Must be defined on the fluid realm. |
| [in] | a_electricField | Electric field. Must be defined on the fluid realm. |
| [in] | a_level | Grid level |
| [in] | a_time | Time |
|
protectedvirtualnoexcept |
Compute ItoSolver velocities.
This will compute the mobilities and then interpolate mu*E to particle positions.
|
protectedvirtualnoexcept |
Compute the maximum electric field (norm)
| [in] | a_phase | Phase where we compute the field. |
|
protectedvirtualnoexcept |
Compute a maximum time step from the physics interface.
|
protectedvirtualnoexcept |
Compute a maximum time step from the physics interface.
| [in] | a_electricField | Electric field. |
| [in] | a_densities | ItoSolver mesh densities. |
|
protectedvirtualnoexcept |
Compute a maximum time step from the physics interface.
| [in] | a_electricField | Electric field. |
| [in] | a_particlesPerCell | Number of particles per grid cell |
| [in] | a_level | Grid level |
| [in] | a_dit | Grid index |
| [in] | a_box | Grid box |
|
protectedvirtualnoexcept |
Compute a maximum time step from the physics interface.
| [in] | a_electricField | Electric field. |
| [in] | a_particlesPerCell | Number of particles per grid cell |
| [in] | a_level | Grid level |
|
protectedvirtualnoexcept |
Compute the mean particle energy in all grid cells.
| [out] | a_meanEnergies | Mean particle energies = sum(w * E)/sum(w) for all species. |
|
protectedvirtualnoexcept |
Compute the mean particle energy in all grid cells. Patch version.
| [out] | a_meanEnergies | Number of physical particles per grid cell for all species |
| [in] | a_level | Grid level |
| [in] | a_dit | Grid index |
| [in] | a_box | Grid box |
| [in] | a_ebisbox | EB grid box |
|
protectedvirtualnoexcept |
Compute the mean particle energy in all grid cells. Level version.
| [out] | a_meanEnergies | Mean particle energies = sum(w * E)/sum(w) for all species. |
| [in] | a_level | Grid level |
|
protectedvirtualnoexcept |
Compute the number of reactive particles per cell.
| [out] | a_ppc | Number of physical particles per grid cell for all species |
|
protectedvirtualnoexcept |
Compute the number of reactive particles per cell.
| [out] | a_ppc | Number of physical particles per grid cell for all species |
| [in] | a_level | Grid level |
| [in] | a_dit | Grid index |
| [in] | a_box | Grid box |
| [in] | a_ebisbox | EB grid box |
|
protectedvirtualnoexcept |
Compute the number of reactive particles per cell.
| [out] | a_ppc | Number of physical particles per grid cell for all species |
| [in] | a_level | Grid level |
|
protectedvirtualnoexcept |
Compute the space charge. Calls the other version.
|
protectedvirtualnoexcept |
Compute the space charge density (both phases)
| [out] | a_rho | Space cahrge density |
| [in] | a_phase | Phase where we compute the space charge density |
|
protectedvirtualnoexcept |
Deposit a subset of the ItoSolver particles on the mesh.
|
protectedvirtualnoexcept |
|
overridevirtual |
Get computational loads to be checkpointed.
This is used by Driver both for setting up load-balanced restarts AND for plotting the computational loads to a file. This routine is disjoint from loadBalanceBoxes because this routine is not part of a regrid. This means that we are not operating with temporarily load balanced grids, and all operators etc. are already in place.
| [in] | a_realm | Realm |
| [in] | a_level | Grid level |
Reimplemented from TimeStepper.
|
protectedvirtualnoexcept |
Get the solvers used for load balancing.
This depends on m_loadBalanceIndex – if it's < 0 we use ALL plasma species for load balancing.
|
protectedvirtualnoexcept |
Get maximum density of the Ito species.
| [out] | a_maxDensity | Maximum mesh density |
| [out] | a_minDensity | Minium mesh density |
| [out] | a_maxSolver | Solver with highest density |
| [out] | a_minSolver | Solver with lowest density |
|
protectedvirtual |
Compute some particle statistics.
| [out] | a_avgParticles | Average numer of particles |
| [out] | a_sigma | Particle standard deviation (across MPI ranks) |
| [out] | a_minParticles | Minimum number of particles |
| [out] | a_maxParticles | Maximum number of particles |
| [out] | a_minRank | MPI rank with lowest number of particles |
| [out] | a_maxRank | MPI rank with highest number of particles |
|
protectedvirtualnoexcept |
Get the physical number of particles per cell.
| [out] | a_ppc | Number of physical particles per cell. Must be defined over the fluid realm. |
|
virtualnoexcept |
Get current simulation time.
|
protectedvirtualnoexcept |
Inject particles through the EB.
|
protectedvirtualnoexcept |
Intersect a subset of the particles with the domain and embedded boundary.
This calls the other version, intersecting the Ito bulk particles with the EB and placing the collided particles in the appropriate particle containers (ItoSolver::WhichContainer::EB, for example).
| [in] | a_speciesSubset | Subset of particles to intersect. Can be charged, mobile, diffusive, etc. |
| [in] | a_intersectionAlg | Representation of the EB – basically an algorithmic selection. |
| [in] | a_delete | Delete original particles. If this is left to false, the particles are copied into the other containers. |
|
protectedvirtualnoexcept |
Intersect a subset of the particles with the domain and embedded boundary.
| [in] | a_speciesSubset | Subset of particles to intersect. Can be charged, mobile, diffusive, etc. |
| [in] | a_containerBulk | ItoSolver container for "bulk" particles, i.e. particles that will be intersected. |
| [in] | a_containerEB | ItoSolver container for EB particles. |
| [in] | a_containerDomain | ItoSolver container for domain particles. |
| [in] | a_intersectionAlg | EB intersection algorithm |
| [in] | a_delete | Delete original particles. If this is left to false, the particles are copied into the other containers. |
|
overridevirtual |
Load balance grid boxes for a specified realm.
| [out] | a_procs | MPI ranks owning the various grid boxes. |
| [out] | a_boxes | Grid boxes on every level (obtain them with a_grids[lvl].boxArray()) |
| [in] | a_realm | Realm identifier |
| [in] | a_grids | Original grids |
| [in] | a_lmin | Coarsest grid level that changed |
| [in] | a_finestLevel | New finest grid level |
This is only called by Driver if TimeStepper::loadBalanceThisRealm(a_realm) returned true. The default implementation uses volume-based loads for the grid patches. If the user wants to load balance boxes on a realm, this routine must be overwritten and he should compute loads for the various patches in a_grids and call LoadBalancing::makeBalance(Vector<int>, Vector<T>, Vector<Box>).
Reimplemented from TimeStepper.
|
protectedvirtualnoexcept |
Routine called by loadBalanceBoxes and used for particle-based load balancing.
| [out] | a_procs | MPI ranks owning the various grid boxes. |
| [out] | a_boxes | Grid boxes on every level (obtain them with a_grids[lvl].boxArray()) |
| [in] | a_realm | Realm identifier |
| [in] | a_grids | Original grids |
| [in] | a_lmin | Coarsest grid level to load balance. |
| [in] | a_finestLevel | Finest grid level |
|
protectedvirtualnoexcept |
Routine called by loadBalanceBoxes and used for particle-based load balancing.
| [out] | a_procs | MPI ranks owning the various grid boxes. |
| [out] | a_boxes | Grid boxes on every level (obtain them with a_grids[lvl].boxArray()) |
| [in] | a_realm | Realm identifier |
| [in] | a_grids | Original grids |
| [in] | a_lmin | Coarsest grid level to load balance. |
| [in] | a_finestLevel | Finest grid level |
|
overridevirtual |
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.
| [in] | a_realm | Realm name |
Reimplemented from TimeStepper.
|
protectedvirtualnoexcept |
Parse dual or single realm calculations.
Sets m_particleRealm = "ParticleRealm" if 'dual_grid' is true.
|
protectedvirtualnoexcept |
Parse the desired number of particles per cell.
Sets m_particlesPerCell from input script.
|
protectedvirtualnoexcept |
Parse chattiness.
Sets m_verbosity from input script.
|
virtual |
Do some post-checkpoint operations for the electrostatic part.
This computes the electric field from the checkpointed potential and populates m_electricFieldFluid and m_electricFieldParticle.
|
overridevirtual |
Perform post-checkpoint operations.
This allocates the internal storage, recomputes the electric field and recomputes the velocity and diffusion coefficients.
Implements TimeStepper.
|
overridevirtual |
Perform pre-regrid operations.
This stores the particles and mesh data on the old grids.
| [in] | a_lmin | The coarsest level that changes |
| [in] | a_oldFinestLevel | The finest level before the regrid. |
Implements TimeStepper.
Reimplemented in Physics::ItoPlasma::ItoPlasmaGodunovStepper.
|
protectedvirtualnoexcept |
Reconcile particles. At the bottom, this will call the physics interface for particle reconciliation.
| [in] | a_newParticlesPerCell | Particles per cell after the chemistry advance. |
| [in] | a_oldParticlesPerCell | Particles per cell before the chemistry advance. |
| [in] | a_meanParticleEnergies | Mean particle energies after the chemistry advance. |
| [in] | a_newPhotonsPerCell | Newly generated photons per cell after the chemistry avance. |
|
protectedvirtualnoexcept |
Reconcile particles. At the bottom, this will call the physics interface for particle reconciliation.
| [in] | a_newParticlesPerCell | Particles per cell after the chemistry advance. |
| [in] | a_oldParticlesPerCell | Particles per cell before the chemistry advance. |
| [in] | a_meanParticleEnergies | Mean particle energies after the chemistry advance. |
| [in] | a_newPhotonsPerCell | Newly generated photons per cell after the chemistry avance. |
| [in] | a_level | Grid level |
| [in] | a_dit | Grid index |
| [in] | a_box | Grid box |
| [in] | a_dx | Grid resolution. |
|
protectedvirtualnoexcept |
Reconcile particles. At the bottom, this will call the physics interface for particle reconciliation.
| [in] | a_newParticlesPerCell | Particles per cell after the chemistry advance. |
| [in] | a_oldParticlesPerCell | Particles per cell before the chemistry advance. |
| [in] | a_meanParticleEnergies | Mean particle energies after the chemistry advance. |
| [in] | a_newPhotonsPerCell | Newly generated photons per cell after the chemistry avance. |
| [in] | a_level | Grid level |
|
overridevirtual |
Regrid methods – puts all data on the new mesh.
| [in] | a_lmin | The coarsest level that changed. |
| [in] | a_oldFinestLevel | The finest level before the regrid. |
| [in] | a_newFinestLevel | The finest level after the regrid. |
Implements TimeStepper.
Reimplemented in Physics::ItoPlasma::ItoPlasmaGodunovStepper.
|
protectedvirtualnoexcept |
Remap a subset of ItoSolver particles.
| [in] | a_speciesSubset | Subset of species to remap |
|
protectedvirtualnoexcept |
|
protectedvirtualnoexcept |
Remove covered particles (i.e., particles inside the EB)
| [in] | a_speciesSubset | Subset of particles to intersect. Can be charged, mobile, diffusive, etc. |
| [in] | a_representation | Representation of the EB. |
| [in] | a_tolerance | Tolerance for removal. Removes up to distance a_tolerance from the EB. |
|
protectedvirtualnoexcept |
Remove covered particles (i.e., particles inside the EB)
| [in] | a_speciesSubset | Subset of particles to intersect. Can be charged, mobile, diffusive, etc. |
| [in] | a_container | Which of the containers in ItoSolver to remove from. |
| [in] | a_representation | Representation of the EB. |
| [in] | a_tolerance | Tolerance for removal. Removes up to distance a_tolerance from the EB. |
|
protectedvirtualnoexcept |
Resolve particle injection at EBs.
| [in] | a_dt | Time step. |
|
protectedvirtualnoexcept |
Resolve particle injection at EBs.
| [in] | a_dt | Time step |
|
virtualnoexcept |
Set the field solver.
| [in] | a_fieldSolver | Field solver |
|
virtualnoexcept |
Set the Ito layout.
| [in] | a_itoLayout | Set of ItoSolver solvers. |
|
protectedvirtualnoexcept |
Set the Ito velocity functions. This is sgn(charge) * E.
|
virtualnoexcept |
Set the radiative transfer solvers.
| [in] | a_rteLayout | Radiative transfer solvers |
|
virtualnoexcept |
Set voltage used for the simulation.
| [in] | a_voltage | Voltage |
|
protectedvirtualnoexcept |
Solve the electrostatic problem.
This calls the other version with all lhs/rhs taken from the field solver. Space charge density is computed in this routine.
|
protectedvirtualnoexcept |
Sort photons by cells.
| [in] | a_which | Which container to sort by cell |
|
protectedvirtualnoexcept |
Sort photons by patch.
| [in] | a_which | Which container to sort by patch |
|
overridevirtual |
Synchronize solver times for all the solvers.
| [in] | a_step | Time step |
| [in] | a_time | Simulation time |
| [in] | a_dt | Last time step used. |
Implements TimeStepper.
|
protectedvirtualnoexcept |
Transfer covered particles (i.e., particles inside the EB) from the ItoSolver bulk container to EB container.
| [in] | a_speciesSubset | Subset of particles to intersect. Can be charged, mobile, diffusive, etc. |
| [in] | a_representation | Representation of the EB. |
| [in] | a_tolerance | Tolerance for transfer. Transfers up to distance a_tolerance from the EB. |
|
protectedvirtualnoexcept |
Transfer covered particles (i.e., particles inside the EB) from the ItoSolver bulk container to EB container.
| [in] | a_speciesSubset | Subset of particles to intersect. Can be charged, mobile, diffusive, etc. |
| [in] | a_containerFrom | Particle container (in ItoSolver) to transfer from |
| [in] | a_containerTo | Particle container (in ItoSolver) to transfer to |
| [in] | a_representation | Representation of the EB. |
| [in] | a_tolerance | Tolerance for transfer. Transfers up to distance a_tolerance from the EB. |
|
protectedvirtual |
Write number of particles per patch to output holder.
| [in,out] | a_output | Output data holder. |
| [in,out] | a_icomp | Starting component in a_output to begin at. |
|
overridevirtual |
Write plot data to output holder.
| [in,out] | a_output | Output data holder. |
| [in] | a_plotVariableNames | Plot variable names. |
| [in,out] | a_icomp | Starting component in a_output to begin at. |
Implements TimeStepper.
|
protected |
Cell-centered conductivity.
|
protected |
EB-centered conductivity.
|
protected |
Face-centered conductivity.
|
protected |
Storage for current density.
|
protected |
Storage for holding the energy sources for each species.
|
protected |
For holding the mean particle energy.
|
protected |
For holding the number of particles per cell for all species.
|
protected |
Realm used for the fluid part (i.e., electrostatic) part of the simulation.
|
protected |
For holding the number of generated photons per cell.
|
protected |
The "background" load per cell when using particle load balancing.
|
protected |
How often to merge superparticles.
If <= 1 we merge every time step.
|
protected |
For holding the number of physical particles per cell.
|
protected |
For holding the number of physical particles per cell.
|
protected |
For holding the mean particle energy.
|
protected |
For holding the previous number of particles per cell for all species.
|
protected |
For holding the number of physical particles per cell for all species.
|
protected |
For holding the number of generated photons per cell.
|
protected |
Implementation of ItoPlasmaPhysics.
All solver coupling occurs through the implementation of this class
|
protected |
Phase where we solve for the plasma.
|
protected |
Factor proportional to the dielectric relaxation time dtRelax = eps0/sigma.
Used for restricting dt < m_relaxTimeFactor * eps0/sigma