17#ifndef CD_DISCHARGEINCEPTIONSTEPPER_H
18#define CD_DISCHARGEINCEPTIONSTEPPER_H
28#include <CD_NamespaceHeader.H>
31namespace DischargeInception {
93template <
typename P = Dis
chargeInceptionParticle,
typename F = FieldSolverGMG,
typename C = CdrCTU>
194 writeCheckpointData(HDF5Handle& a_handle,
const int a_lvl)
const override;
205 readCheckpointData(HDF5Handle& a_handle,
const int a_lvl)
override;
220 virtual Vector<std::string>
233 const std::string& a_outputRealm,
234 const int a_level)
const override;
240 virtual Vector<std::string>
247 virtual Vector<std::
string>
263 advance(const Real a_dt) override;
293 preRegrid(const
int a_lmin, const
int a_oldFinestLevel) override;
302 regrid(const
int a_lmin, const
int a_oldFinestLevel, const
int a_newFinestLevel) override;
316 setVoltageCurve(const std::function<Real(const Real& a_time)>& a_voltageCurve) noexcept;
323 setRho(const std::function<Real(const RealVect& x)>& a_rho) noexcept;
330 setSigma(const std::function<Real(const RealVect& x)>& a_sigma) noexcept;
337 setIonDensity(const std::function<Real(const RealVect x)>& a_density) noexcept;
344 setIonMobility(const std::function<Real(const Real E)>& a_mobility) noexcept;
351 setIonDiffusion(const std::function<Real(const Real E)>& a_diffCo) noexcept;
358 setAlpha(const std::function<Real(const Real& E, const RealVect& x)>& a_alpha) noexcept;
365 setEta(const std::function<Real(const Real& E, const RealVect& x)>& a_eta) noexcept;
371 virtual const std::function<Real(const Real& E, const RealVect& x)>&
378 virtual const std::function<Real(const Real& E, const RealVect& x)>&
386 setBackgroundRate(const std::function<Real(const Real& E, const RealVect& x)>& a_backgroundRate) noexcept;
394 setDetachmentRate(const std::function<Real(const Real& E, const RealVect& x)>& a_detachmentRate) noexcept;
401 setFieldEmission(const std::function<Real(const Real& E, const RealVect& x)>& a_currentDensity) noexcept;
408 setSecondaryEmission(const std::function<Real(const Real& E, const RealVect& x)>& a_coeff) noexcept;
421 virtual const EBAMRCellData*
652 std::vector<std::pair<Real, Real>>
m_maxK;
658 std::vector<std::pair<Real, Real>>
m_maxT;
713 std::vector<std::pair<Real, Real>>
m_Rdot;
939 std::function<Real(const RealVect& x)>
m_rho;
944 std::function<Real(const RealVect& x)>
m_sigma;
964 std::function<Real(const Real& E, const RealVect& x)>
m_alpha;
969 std::function<Real(const Real& E, const RealVect& x)>
m_eta;
1087 computeRdot(const Real& a_voltage) const noexcept;
1139 const Real& a_voltage,
1140 const std::function<Real(const Real E, const RealVect x)>& a_func) const noexcept;
1152 const Real& a_voltage,
1153 const std::function<Real(const Real E, const RealVect x)>& a_func,
1154 const
int a_level) const noexcept;
1168 virtual std::pair<Real, RealVect>
1241 const std::
string& a_outputRealm,
1242 const
int a_level) const noexcept;
1254 const std::
string& a_outputRealm,
1255 const
int a_level) const noexcept;
1265 particleOutsideGrid(const RealVect& a_pos, const RealVect& a_probLo, const RealVect& a_probHi) const noexcept;
1346 const MFAMRCellData& a_inhomogeneousField,
1347 const MFAMRCellData& a_homogeneousField,
1348 const Real a_voltage) const noexcept;
1356 superposition(EBAMRCellData& a_sumField, const Real a_voltage) const noexcept;
1370 writeData(LevelData<EBCellFAB>& a_output,
1372 const EBAMRCellData& a_data,
1373 const std::
string a_outputRealm,
1375 const
bool a_interpToCentroids,
1376 const
bool a_interpGhost) const noexcept;
1397#include <CD_NamespaceFooter.H>
Declaration of a class which implements CdrMultigrid using MUSCL for advection.
Declaration of an abstract class for solving scalar convection-diffusion-reaction problems.
SoA payload for the discharge-inception tracer particles.
Implementation of CD_DischargeInceptionStepper.H.
Mode
Solver mode: stationary (voltage sweep) or transient (time-dependent).
Definition CD_DischargeInceptionStepper.H:56
@ Stationary
Stationary mode: solve for inception voltage over a voltage sweep.
@ Transient
Transient mode: time-dependent simulation with a voltage curve.
TimeStepRestriction
Reason the time step was restricted in transient mode.
Definition CD_DischargeInceptionStepper.H:65
@ MinHardcap
Minimum hard-cap on the time step.
@ MaxHardcap
Maximum hard-cap on the time step.
@ Unknown
Restriction not yet determined.
@ VoltageCurve
Relative change in applied voltage.
TransportAlgorithm
Transport algorithm for advancing negative ions in transient mode.
Definition CD_DischargeInceptionStepper.H:46
@ Heun
Heun's method (explicit second-order Runge-Kutta).
@ ImExCTU
Implicit-explicit corner-transport-upwind scheme.
IntegrationAlgorithm
Integration algorithm for the streamer inception (K-value) integral.
Definition CD_DischargeInceptionStepper.H:37
@ Euler
Forward Euler integration along particle trajectories.
@ Trapezoidal
Trapezoidal (second-order) integration along particle trajectories.
Declaration of FieldSolverGMG.
Contains declaration of a base electrostatics solver class.
Declaration of main (abstract) time stepper class.
Declaration of a solver class that advances tracer particles.
Base class for solving convection-diffusion-reaction equations.
Definition CD_CdrSolver.H:36
Base class for electrostatic solvers.
Definition CD_FieldSolver.H:37
TimeStepper for evaluating the streamer inception criterion in static or transient electric fields.
Definition CD_DischargeInceptionStepper.H:95
virtual const std::function< Real(const Real &E, const RealVect &x)> & getAlpha() const noexcept
Get ionization coefficient.
Definition CD_DischargeInceptionStepperImplem.H:2064
void parseRuntimeOptions() override
Parse runtime options.
Definition CD_DischargeInceptionStepperImplem.H:389
Vector< EBAMRCellData > m_townsendCriterionPlus
Townsend criterion for starting positive ions.
Definition CD_DischargeInceptionStepper.H:551
RefCountedPtr< FieldSolver > m_fieldSolver
Field solver.
Definition CD_DischargeInceptionStepper.H:453
std::function< Real(const Real &E, const RealVect &x)> m_secondaryEmission
Secondary emission coefficient.
Definition CD_DischargeInceptionStepper.H:989
TimeStepRestriction m_timeStepRestriction
Time step restriction.
Definition CD_DischargeInceptionStepper.H:443
virtual const EBAMRCellData * getElectricField() const noexcept
Get the electric field.
Definition CD_DischargeInceptionStepperImplem.H:5564
RefCountedPtr< TracerParticleSolver< P > > m_tracerParticleSolver
Tracer particle solver.
Definition CD_DischargeInceptionStepper.H:448
void parseMode() noexcept
Parse simulation mode.
Definition CD_DischargeInceptionStepperImplem.H:419
EBAMRCellData m_townsendInceptionVoltageMinu
Computed Townsend inception voltage.
Definition CD_DischargeInceptionStepper.H:599
EBAMRCellData m_detachment
Detachment factor.
Definition CD_DischargeInceptionStepper.H:611
void computeIonVelocity(const Real &a_voltage) noexcept
Set the negative ion velocity. Note.
Definition CD_DischargeInceptionStepperImplem.H:5258
std::vector< std::tuple< Real, Real, RealVect > > m_TPlusValues
Max T value for every voltage.
Definition CD_DischargeInceptionStepper.H:640
virtual void setIonMobility(const std::function< Real(const Real E)> &a_mobility) noexcept
Set the negative ion mobility (field-dependent)
Definition CD_DischargeInceptionStepperImplem.H:2015
bool m_plotPoisson
Plot Poisson solver or not.
Definition CD_DischargeInceptionStepper.H:859
bool m_plotTownsend
Plot the Townsend-criterion for initiatory ions.
Definition CD_DischargeInceptionStepper.H:909
std::function< Real(const RealVect &x)> m_sigma
Surface charge distribution.
Definition CD_DischargeInceptionStepper.H:944
Real m_gradAlphaDx
Space step size relative to alpha/|grad(alpha)|.
Definition CD_DischargeInceptionStepper.H:819
MFAMRCellData m_potentialInho
Electric potential with charges.
Definition CD_DischargeInceptionStepper.H:473
virtual void writeReportStationary() const noexcept
Print report to the terminal.
Definition CD_DischargeInceptionStepperImplem.H:5027
MFAMRCellData m_electricField
Electric field.
Definition CD_DischargeInceptionStepper.H:488
virtual Real advance(const Real a_dt) override
Advancement method. Swaps between various kernels.
Definition CD_DischargeInceptionStepperImplem.H:1602
std::vector< std::pair< Real, Real > > m_criticalArea
Critical area at various time instances.
Definition CD_DischargeInceptionStepper.H:731
Vector< EBAMRCellData > m_inceptionIntegralPlus
Inception integral values.
Definition CD_DischargeInceptionStepper.H:515
virtual void townsendTrackTrapezoidal(const Real &a_voltage) noexcept
Track particles (positive ions) using a trapezoidal rule and check if the collide with a cathode.
Definition CD_DischargeInceptionStepperImplem.H:3426
virtual void seedUniformParticles() noexcept
Distribute particles in every grid cell.
Definition CD_DischargeInceptionStepperImplem.H:2137
virtual void resetTracerParticles() noexcept
Reset particles.
Definition CD_DischargeInceptionStepperImplem.H:3785
virtual void setIonDensity(const std::function< Real(const RealVect x)> &a_density) noexcept
Set the negative ion density.
Definition CD_DischargeInceptionStepperImplem.H:2003
virtual void computeCriticalVolumeStationary() noexcept
Compute the critical volume of the K values for each voltage.
Definition CD_DischargeInceptionStepperImplem.H:4569
virtual void writePlotDataStationary(LevelData< EBCellFAB > &a_output, int &a_icomp, const std::string &a_outputRealm, const int a_level) const noexcept
Write plot data for the 'stationary' mode.
Definition CD_DischargeInceptionStepperImplem.H:1118
virtual void postRegrid() override
Perform post-regrid operations.
Definition CD_DischargeInceptionStepperImplem.H:1954
std::function< Real(const Real &E)> m_ionMobility
Negative ion mobility.
Definition CD_DischargeInceptionStepper.H:954
virtual void inceptionIntegrateTrapezoidal(const Real &a_voltage) noexcept
K integral: Add integration parts after particles move.
Definition CD_DischargeInceptionStepperImplem.H:2822
virtual void setBackgroundRate(const std::function< Real(const Real &E, const RealVect &x)> &a_backgroundRate) noexcept
Set the background ionization rate (e.g. from cosmic radiation etc).
Definition CD_DischargeInceptionStepperImplem.H:2078
EBAMRCellData m_gradAlpha
Calculated version of alpha/(|grad(alpha)|) on the mesh.
Definition CD_DischargeInceptionStepper.H:622
Real m_maxKLimit
Maximum K-value that is calculated in stationary mode.
Definition CD_DischargeInceptionStepper.H:754
std::function< Real(const Real &E, const RealVect &x)> m_eta
Attachment coefficient.
Definition CD_DischargeInceptionStepper.H:969
void computeIonDiffusion(const Real &a_voltage) noexcept
Set the negative ion diffusion coefficient.
Definition CD_DischargeInceptionStepperImplem.H:5324
virtual std::pair< Real, RealVect > computeMinimumInceptionVoltage(const EBAMRCellData &a_Uinc) const noexcept
Compute the minimum inception voltage and the starting electron position.
Definition CD_DischargeInceptionStepperImplem.H:4494
Real m_alphaDx
Space step size relative to 1/alpha.
Definition CD_DischargeInceptionStepper.H:809
virtual void computeTownsendCriterionStationary() noexcept
Solve for the Townsend criterion for each particle in each voltage.
Definition CD_DischargeInceptionStepperImplem.H:3113
virtual void synchronizeSolverTimes(const int a_step, const Real a_time, const Real a_dt) override
Synchronize solver times and time steps.
Definition CD_DischargeInceptionStepperImplem.H:1800
virtual void inceptionIntegrateEuler(const Real &a_voltage) noexcept
Integrate the inception integral using the Euler rule.
Definition CD_DischargeInceptionStepperImplem.H:2632
std::function< Real(const RealVect &x)> m_rho
Space charge distribution.
Definition CD_DischargeInceptionStepper.H:939
std::vector< Real > m_ionizationVolume
Ionization volumes for each voltage.
Definition CD_DischargeInceptionStepper.H:688
std::function< Real(const RealVect &x)> m_initialIonDensity
Negative ion density.
Definition CD_DischargeInceptionStepper.H:949
virtual void computeInceptionVoltageVolume() noexcept
Interpolate between K values to find voltage giving K_inception and store values in m_inceptionVoltag...
Definition CD_DischargeInceptionStepperImplem.H:4233
Real m_epsVoltage
Permitted relative deviation in V(t) when computing voltage-curve based time steps.
Definition CD_DischargeInceptionStepper.H:779
EBAMRCellData m_homogeneousFieldGas
Gas-phase homogeneous field.
Definition CD_DischargeInceptionStepper.H:503
bool m_fullIntegration
Use full reconstruction of critical volume or not.
Definition CD_DischargeInceptionStepper.H:844
std::vector< std::pair< Real, Real > > m_maxK
Max K value for every time step.
Definition CD_DischargeInceptionStepper.H:652
std::string m_realm
Realm where the solver lives.
Definition CD_DischargeInceptionStepper.H:919
virtual Real computeIonizationVolumeTransient(const Real &a_voltage) const noexcept
Compute the ionization volume for each voltage.
Definition CD_DischargeInceptionStepperImplem.H:4945
virtual void computeFieldEmission(EBAMRCellData &a_emissionRate, const Real &a_voltage) const noexcept
Compute field emission rates.
Definition CD_DischargeInceptionStepperImplem.H:4087
std::vector< Real > m_criticalAreaPlus
Critical area of K values for each voltage.
Definition CD_DischargeInceptionStepper.H:676
DischargeInceptionStepper(const DischargeInceptionStepper &)=delete
Disallowed constructor.
virtual int getNumberOfPlotVariables() const override
Get the number of plot variables for this time stepper.
Definition CD_DischargeInceptionStepperImplem.H:672
DischargeInceptionStepper(const DischargeInceptionStepper &&)=delete
Disallowed constructor.
virtual Real computeCriticalVolumeTransient() const noexcept
Compute the critical volume of the K values for each voltage.
Definition CD_DischargeInceptionStepperImplem.H:4660
DischargeInceptionStepper & operator=(const DischargeInceptionStepper &&)=delete
Disallowed assignment.
Real m_maxPhysDx
Maximum spatial step (physical dimensions)
Definition CD_DischargeInceptionStepper.H:794
void registerOperators() override
Register operators.
Definition CD_DischargeInceptionStepperImplem.H:360
virtual void getMaxValueAndLocation(Real &a_maxVal, RealVect &a_maxPos, const EBAMRCellData &a_data) const noexcept
Get the maximum value and location corresponding to the maximum value in the input data holder.
Definition CD_DischargeInceptionStepperImplem.H:5434
EBAMRCellData m_townsendInceptionVoltagePlus
Computed Townsend inception voltage.
Definition CD_DischargeInceptionStepper.H:593
Vector< EBAMRCellData > m_inceptionIntegralMinu
Inception integral values.
Definition CD_DischargeInceptionStepper.H:521
virtual void evaluateFunction(EBAMRCellData &a_data, const Real &a_voltage, const std::function< Real(const Real E, const RealVect x)> &a_func) const noexcept
Evaluate a function f = f(E, x) in a volume.
Definition CD_DischargeInceptionStepperImplem.H:4146
std::vector< Real > m_voltageSweeps
Voltage sweeps.
Definition CD_DischargeInceptionStepper.H:706
MFAMRCellData m_scratchInho
Scratch storage used during regrids.
Definition CD_DischargeInceptionStepper.H:483
bool m_profile
Profile calculation or not.
Definition CD_DischargeInceptionStepper.H:829
std::function< Real(const Real &E)> m_ionDiffusion
Negative ion diffusion coefficient.
Definition CD_DischargeInceptionStepper.H:959
Real m_relativeDeltaU
Maximum relative voltage increase.
Definition CD_DischargeInceptionStepper.H:743
std::function< Real(const Real &E, const RealVect &x)> m_fieldEmission
Field emission current.
Definition CD_DischargeInceptionStepper.H:984
TransportAlgorithm m_transportAlgorithm
Transport algorithm for advancing negative ions in the transient mode.
Definition CD_DischargeInceptionStepper.H:438
void allocate() override
Allocate storage for solvers and time stepper.
Definition CD_DischargeInceptionStepperImplem.H:173
Real m_minPhysDx
Minimum spatial step (physical dimensions)
Definition CD_DischargeInceptionStepper.H:789
Vector< EBAMRCellData > m_detachmentStationary
Detachment rates.
Definition CD_DischargeInceptionStepper.H:533
EBAMRCellData m_emissionRate
Field emission rates.
Definition CD_DischargeInceptionStepper.H:563
virtual Vector< std::string > getTransientPlotVariableNames() const noexcept
Get plot variable names for transient mode.
Definition CD_DischargeInceptionStepperImplem.H:1010
virtual Mode getMode() const noexcept
Get the solver mode.
Definition CD_DischargeInceptionStepperImplem.H:2130
void parseInceptionAlgorithm() noexcept
Parse the inception algorithm.
Definition CD_DischargeInceptionStepperImplem.H:478
virtual ~DischargeInceptionStepper()
Destructor.
Definition CD_DischargeInceptionStepperImplem.H:113
Real m_firstDt
First time step.
Definition CD_DischargeInceptionStepper.H:764
void postCheckpointSetup() override
Post checkpoint operations.
Definition CD_DischargeInceptionStepper.H:158
bool m_plotInceptionIntegral
If true, plot the K-values.
Definition CD_DischargeInceptionStepper.H:874
void solvePoisson() noexcept
Solve the Poisson equation.
Definition CD_DischargeInceptionStepperImplem.H:251
virtual void setAlpha(const std::function< Real(const Real &E, const RealVect &x)> &a_alpha) noexcept
Set the ionization coefficient.
Definition CD_DischargeInceptionStepperImplem.H:2039
EBAMRCellData m_inceptionVoltageMinu
Computed inception voltage.
Definition CD_DischargeInceptionStepper.H:575
Vector< EBAMRCellData > m_emissionRatesPlus
Field emission rates.
Definition CD_DischargeInceptionStepper.H:539
MFAMRCellData m_potential
Electric potential.
Definition CD_DischargeInceptionStepper.H:463
bool m_plotDetachment
If true, plot electron detachment rate, i.e. done/dt due to detachment from negative ions.
Definition CD_DischargeInceptionStepper.H:889
Real m_minGridDx
Minimum spatial step (relative to grid resolution)
Definition CD_DischargeInceptionStepper.H:799
virtual void computeInceptionIntegral(EBAMRCellData &a_inceptionIntegral, const Real a_voltage) noexcept
Compute the inception integral for the input voltage.
Definition CD_DischargeInceptionStepperImplem.H:2438
Mode m_mode
Mode.
Definition CD_DischargeInceptionStepper.H:428
virtual void regrid(const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel) override
Time stepper regrid method.
Definition CD_DischargeInceptionStepperImplem.H:1891
DischargeInceptionStepper & operator=(const DischargeInceptionStepper &)=delete
Disallowed assignment.
MFAMRCellData m_electricFieldHomo
Electric field without space/surface charge and V = 1 on live electrodes.
Definition CD_DischargeInceptionStepper.H:493
bool m_plotTracer
Plot tracer particle solver or not.
Definition CD_DischargeInceptionStepper.H:864
Real m_deltaK
Maximum targeted increase in K-value.
Definition CD_DischargeInceptionStepper.H:749
bool particleOutsideGrid(const RealVect &a_pos, const RealVect &a_probLo, const RealVect &a_probHi) const noexcept
Check if particle is outside grid boundaries.
Definition CD_DischargeInceptionStepperImplem.H:5218
virtual void writeReportTransient() const noexcept
Print report to the terminal.
Definition CD_DischargeInceptionStepperImplem.H:5138
virtual void rewindTracerParticles() noexcept
Move particles back to their original position.
Definition CD_DischargeInceptionStepperImplem.H:3747
virtual void townsendTrackEuler(const Real &a_voltage) noexcept
Track particles (positive ions) using an Euler rule and check if the collide with a cathode.
Definition CD_DischargeInceptionStepperImplem.H:3303
std::vector< Real > m_RdotMinu
Rate of appearance of first electron (in critical volume)
Definition CD_DischargeInceptionStepper.H:700
EBAMRCellData m_streamerInceptionVoltageMinu
Computed streamer inception voltage.
Definition CD_DischargeInceptionStepper.H:587
void superposition(EBAMRCellData &a_sumField, const MFAMRCellData &a_inhomogeneousField, const MFAMRCellData &a_homogeneousField, const Real a_voltage) const noexcept
Calculate the total electric field = inhomogeneous + V * homogeneous.
Definition CD_DischargeInceptionStepperImplem.H:5404
std::vector< std::pair< Real, Real > > m_Rdot
Integral factor for cumulative integration.
Definition CD_DischargeInceptionStepper.H:713
void parseOptions()
Parse options.
Definition CD_DischargeInceptionStepperImplem.H:374
std::vector< std::pair< Real, Real > > m_ionizationVolumeTransient
Ionization volume at various time instances.
Definition CD_DischargeInceptionStepper.H:737
void setupSolvers() override
Instantiate the tracer particle solver.
Definition CD_DischargeInceptionStepperImplem.H:123
std::vector< Real > m_criticalVolumePlus
Critical volumes of K values for each voltage.
Definition CD_DischargeInceptionStepper.H:664
MFAMRCellData m_scratchHomo
Scratch storage used during regrids.
Definition CD_DischargeInceptionStepper.H:478
virtual void setEta(const std::function< Real(const Real &E, const RealVect &x)> &a_eta) noexcept
Set the attachment coefficient.
Definition CD_DischargeInceptionStepperImplem.H:2052
Vector< EBAMRCellData > m_backgroundIonizationStationary
Background ionization rates.
Definition CD_DischargeInceptionStepper.H:527
bool m_plotFieldEmission
If true, plot the field emission.
Definition CD_DischargeInceptionStepper.H:894
IntegrationAlgorithm m_inceptionAlgorithm
Integration algorithm for K-value.
Definition CD_DischargeInceptionStepper.H:433
std::function< Real(const Real &E, const RealVect &x)> m_backgroundRate
Background ionization rate expression.
Definition CD_DischargeInceptionStepper.H:979
EBAMRCellData m_streamerInceptionVoltagePlus
Computed streamer inception voltage.
Definition CD_DischargeInceptionStepper.H:581
virtual Vector< std::string > getStationaryPlotVariableNames() const noexcept
Get plot variable names for stationary mode.
Definition CD_DischargeInceptionStepperImplem.H:865
bool m_plotInceptionVoltage
If true, plot the inception voltage.
Definition CD_DischargeInceptionStepper.H:879
std::string m_outputFile
File name prefix for HDF5 plot output.
Definition CD_DischargeInceptionStepper.H:929
EBAMRCellData m_inceptionVoltagePlus
Computed inception voltage.
Definition CD_DischargeInceptionStepper.H:569
std::function< Real(const Real &E, const RealVect &x)> m_detachmentRate
Detachment probability for negative ion.
Definition CD_DischargeInceptionStepper.H:974
Real m_townsendGridDx
Space step size used for ion tracking.
Definition CD_DischargeInceptionStepper.H:814
virtual void setDetachmentRate(const std::function< Real(const Real &E, const RealVect &x)> &a_detachmentRate) noexcept
Set the detachment rate for negative ions.
Definition CD_DischargeInceptionStepperImplem.H:2091
virtual void computeTownsendCriterionTransient(const Real &a_voltage) noexcept
Solve for the Townsend criterion for each particle in each voltage.
Definition CD_DischargeInceptionStepperImplem.H:3247
virtual void computeIonizationVolumeStationary() noexcept
Compute the ionization volume for each voltage.
Definition CD_DischargeInceptionStepperImplem.H:4847
std::function< Real(const Real a_time)> m_voltageCurve
Time-dependent voltage.
Definition CD_DischargeInceptionStepper.H:914
Vector< EBAMRCellData > m_townsendCriterionMinu
Townsend criterion for starting negative ions (electrons arriving at anode).
Definition CD_DischargeInceptionStepper.H:557
virtual void writePlotDataTransient(LevelData< EBCellFAB > &a_output, int &a_icomp, const std::string &a_outputRealm, const int a_level) const noexcept
Write plot data for the 'transient' mode.
Definition CD_DischargeInceptionStepperImplem.H:1332
phase::which_phase m_phase
Phase (gas/solid) where the solver lives.
Definition CD_DischargeInceptionStepper.H:934
virtual void computeFieldEmissionStationary() noexcept
Compute field emission rates.
Definition CD_DischargeInceptionStepperImplem.H:3987
std::string m_dataOutputFile
File name for the tabular data output (inception voltages, K-values, etc.).
Definition CD_DischargeInceptionStepper.H:924
void parseOutput() noexcept
Parse output settings.
Definition CD_DischargeInceptionStepperImplem.H:464
std::function< Real(const Real &E, const RealVect &x)> m_alpha
Ionization coefficient.
Definition CD_DischargeInceptionStepper.H:964
MFAMRCellData m_potentialHomo
Electric potential without charges.
Definition CD_DischargeInceptionStepper.H:468
EBAMRCellData m_inceptionIntegral
Inception integral values.
Definition CD_DischargeInceptionStepper.H:509
bool m_plotEta
If true, plot eta.
Definition CD_DischargeInceptionStepper.H:904
Vector< EBAMRCellData > m_emissionRatesMinu
Field emission rates.
Definition CD_DischargeInceptionStepper.H:545
bool m_debug
Debug or not.
Definition CD_DischargeInceptionStepper.H:834
virtual void computeInceptionIntegralStationary() noexcept
Solve streamer inception integral for each particle in each voltage and store K values in m_inception...
Definition CD_DischargeInceptionStepperImplem.H:2493
virtual Real computeCriticalAreaTransient() const noexcept
Compute the critical area of the K values for each voltage.
Definition CD_DischargeInceptionStepperImplem.H:4796
Real m_maxGridDx
Maximum spatial step (relative to grid resolution)
Definition CD_DischargeInceptionStepper.H:804
virtual Real getCriticalField() const noexcept
Get the breakdown field.
Definition CD_DischargeInceptionStepperImplem.H:5573
virtual Vector< std::string > getPlotVariableNames() const override
Get plot variable names.
Definition CD_DischargeInceptionStepperImplem.H:809
Real m_maxDt
Maximum permitted time step.
Definition CD_DischargeInceptionStepper.H:769
virtual void computeDetachmentStationary() noexcept
Compute the detachment ionization rate for all voltages.
Definition CD_DischargeInceptionStepperImplem.H:3899
bool m_plotField
Plot field.
Definition CD_DischargeInceptionStepper.H:854
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 used for IO.
Definition CD_DischargeInceptionStepperImplem.H:5506
void parseVoltages() noexcept
Parse voltage levels.
Definition CD_DischargeInceptionStepperImplem.H:444
EBAMRCellData m_backgroundIonization
Background ionization.
Definition CD_DischargeInceptionStepper.H:617
virtual void interpolateGradAlphaToParticles() noexcept
Interpolate alpha/|grad(alpha)| onto some scratch particle storage.
Definition CD_DischargeInceptionStepperImplem.H:2420
std::vector< std::tuple< Real, Real, RealVect > > m_KPlusValues
Max K value for every voltage.
Definition CD_DischargeInceptionStepper.H:628
virtual void writePlotData(LevelData< EBCellFAB > &a_output, int &a_icomp, const std::string &a_outputRealm, const int a_level) const override
Write plot data to output holder.
Definition CD_DischargeInceptionStepperImplem.H:1075
std::vector< std::tuple< Real, Real, RealVect > > m_KMinuValues
Max K value for every voltage.
Definition CD_DischargeInceptionStepper.H:634
bool m_plotAlpha
If true, plot alpha.
Definition CD_DischargeInceptionStepper.H:899
virtual void setIonDiffusion(const std::function< Real(const Real E)> &a_diffCo) noexcept
Set the negative ion diffusion coefficient (field-dependent)
Definition CD_DischargeInceptionStepperImplem.H:2027
void postInitialize() override
Perform any post-initialization steps.
Definition CD_DischargeInceptionStepperImplem.H:2338
bool particleInsideEB(const RealVect &a_pos) const noexcept
Check if particle is inside electrode.
Definition CD_DischargeInceptionStepperImplem.H:5242
virtual void setSigma(const std::function< Real(const RealVect &x)> &a_sigma) noexcept
Set surface charge distribution.
Definition CD_DischargeInceptionStepperImplem.H:1991
EBAMRCellData m_townsendCriterion
Townsend criterion.
Definition CD_DischargeInceptionStepper.H:605
void parseTransportAlgorithm() noexcept
Parse the transport algorithm.
Definition CD_DischargeInceptionStepperImplem.H:535
bool m_ionTransport
Ion transport on/off.
Definition CD_DischargeInceptionStepper.H:849
virtual void seedIonizationParticles(const Real a_voltage) noexcept
Add particles to every cell where alpha - eta > 0.0.
Definition CD_DischargeInceptionStepperImplem.H:2210
DischargeInceptionStepper()
Default constructor.
Definition CD_DischargeInceptionStepperImplem.H:39
bool m_plotNegativeIons
Plot negative ions or not.
Definition CD_DischargeInceptionStepper.H:869
MFAMRCellData m_electricFieldInho
Electric field with space/surface charge and V = 0 on all electrodes.
Definition CD_DischargeInceptionStepper.H:498
Real m_cfl
CFL-step for negative ions.
Definition CD_DischargeInceptionStepper.H:759
std::vector< Real > m_criticalAreaMinu
Critical area of K values for each voltage.
Definition CD_DischargeInceptionStepper.H:682
void parsePlotVariables() noexcept
Parse plot variables.
Definition CD_DischargeInceptionStepperImplem.H:575
void initialData() override
Fill problem with initial data.
Definition CD_DischargeInceptionStepperImplem.H:239
virtual const std::function< Real(const Real &E, const RealVect &x)> & getEta() const noexcept
Get attachment coefficient.
Definition CD_DischargeInceptionStepperImplem.H:2071
RefCountedPtr< CdrSolver > m_ionSolver
Negative ion solver.
Definition CD_DischargeInceptionStepper.H:458
virtual void setSecondaryEmission(const std::function< Real(const Real &E, const RealVect &x)> &a_coeff) noexcept
Set the secondary emission coefficient.
Definition CD_DischargeInceptionStepperImplem.H:2117
virtual Real computeDt() override
Compute a time step to be used by Driver.
Definition CD_DischargeInceptionStepperImplem.H:1515
std::vector< std::pair< Real, Real > > m_criticalVolume
Critical volume at various time instances.
Definition CD_DischargeInceptionStepper.H:725
virtual void preRegrid(const int a_lmin, const int a_oldFinestLevel) override
Perform pre-regrid operations.
Definition CD_DischargeInceptionStepperImplem.H:1871
virtual void printStepReport() override
Print a step report. Used in transient simulations.
Definition CD_DischargeInceptionStepperImplem.H:1818
virtual void setRho(const std::function< Real(const RealVect &x)> &a_rho) noexcept
Set space charge distribution.
Definition CD_DischargeInceptionStepperImplem.H:1979
void parseVerbosity() noexcept
Parse class verbosity.
Definition CD_DischargeInceptionStepperImplem.H:404
bool m_evaluateTownsend
Evaluate secondary emission.
Definition CD_DischargeInceptionStepper.H:839
Real m_minDt
Minimum permitted time step.
Definition CD_DischargeInceptionStepper.H:774
bool m_plotBackgroundIonization
If true, plot the background ionization rates.
Definition CD_DischargeInceptionStepper.H:884
void registerRealms() override
Register realms. Primal is the only realm we need.
Definition CD_DischargeInceptionStepperImplem.H:348
Real m_inceptionK
Inception criteria (read from input)
Definition CD_DischargeInceptionStepper.H:824
virtual void computeBackgroundIonizationStationary() noexcept
Compute the background ionization rate for all voltages.
Definition CD_DischargeInceptionStepperImplem.H:3817
virtual void computeInceptionIntegralTransient(const Real &a_voltage) noexcept
Solve streamer inception integral.
Definition CD_DischargeInceptionStepperImplem.H:2597
virtual void setVoltageCurve(const std::function< Real(const Real &a_time)> &a_voltageCurve) noexcept
Set the voltage curve (used for transient mode)
Definition CD_DischargeInceptionStepperImplem.H:1967
virtual void computeCriticalAreaStationary() noexcept
Compute the critical area of the K values for each voltage.
Definition CD_DischargeInceptionStepperImplem.H:4724
std::vector< Real > m_RdotPlus
Rate of appearance of first electron (in critical volume)
Definition CD_DischargeInceptionStepper.H:694
virtual void advanceIons(const Real a_dt) noexcept
Advance negative ions.
Definition CD_DischargeInceptionStepperImplem.H:1714
std::vector< std::pair< Real, Real > > m_inceptionProbability
Cumulative probability of breakdown by time t.
Definition CD_DischargeInceptionStepper.H:719
std::vector< std::pair< Real, Real > > m_maxT
Max Townsend value for every time step.
Definition CD_DischargeInceptionStepper.H:658
virtual Real computeRdot(const Real &a_voltage) const noexcept
Compute integral_Vcr(done/dt * (1 - eta/alpha) dV)
Definition CD_DischargeInceptionStepperImplem.H:3643
virtual void setFieldEmission(const std::function< Real(const Real &E, const RealVect &x)> &a_currentDensity) noexcept
Set the field emission current.
Definition CD_DischargeInceptionStepperImplem.H:2104
std::vector< std::tuple< Real, Real, RealVect > > m_TMinuValues
Max T value for every voltage.
Definition CD_DischargeInceptionStepper.H:646
std::vector< Real > m_criticalVolumeMinu
Critical volumes of K values for each voltage.
Definition CD_DischargeInceptionStepper.H:670
Real m_maxDtGrowth
Maximum permitted time step growth.
Definition CD_DischargeInceptionStepper.H:784
Base class for advancing equations.
Definition CD_TimeStepper.H:32
Base class for a tracer particle solver. This solver can advance particles in a pre-defined velocity ...
Definition CD_TracerParticleSolver.H:39
Namespace containing physics models for use with chombo-discharge.
Definition CD_AdvectionDiffusion.H:16
Phase names namespace.
Definition CD_MultiFluidIndexSpace.H:28