17#ifndef CD_DISCHARGEINCEPTIONSTEPPER_H
18#define CD_DISCHARGEINCEPTIONSTEPPER_H
28#include <CD_NamespaceHeader.H>
31 namespace DischargeInception {
92 template <
typename P = TracerParticle<2, 3>,
typename F = FieldSolverGMG,
typename C = CdrCTU>
193 writeCheckpointData(HDF5Handle& a_handle,
const int a_lvl)
const override;
204 readCheckpointData(HDF5Handle& a_handle,
const int a_lvl)
override;
219 virtual Vector<std::string>
232 const std::string& a_outputRealm,
233 const int a_level)
const override;
239 virtual Vector<std::string>
246 virtual Vector<std::
string>
262 advance(const Real a_dt) override;
292 preRegrid(const
int a_lmin, const
int a_oldFinestLevel) override;
301 regrid(const
int a_lmin, const
int a_oldFinestLevel, const
int a_newFinestLevel) override;
315 setVoltageCurve(const std::function<Real(const Real& a_time)>& a_voltageCurve) noexcept;
322 setRho(const std::function<Real(const RealVect& x)>& a_rho) noexcept;
329 setSigma(const std::function<Real(const RealVect& x)>& a_sigma) noexcept;
336 setIonDensity(const std::function<Real(const RealVect x)>& a_density) noexcept;
343 setIonMobility(const std::function<Real(const Real E)>& a_mobility) noexcept;
350 setIonDiffusion(const std::function<Real(const Real E)>& a_diffCo) noexcept;
357 setAlpha(const std::function<Real(const Real& E, const RealVect& x)>& a_alpha) noexcept;
364 setEta(const std::function<Real(const Real& E, const RealVect& x)>& a_eta) noexcept;
370 virtual const std::function<Real(const Real& E, const RealVect& x)>&
377 virtual const std::function<Real(const Real& E, const RealVect& x)>&
385 setBackgroundRate(const std::function<Real(const Real& E, const RealVect& x)>& a_backgroundRate) noexcept;
393 setDetachmentRate(const std::function<Real(const Real& E, const RealVect& x)>& a_detachmentRate) noexcept;
400 setFieldEmission(const std::function<Real(const Real& E, const RealVect& x)>& a_currentDensity) noexcept;
407 setSecondaryEmission(const std::function<Real(const Real& E, const RealVect& x)>& a_coeff) noexcept;
420 virtual const EBAMRCellData*
651 std::vector<std::pair<Real, Real>>
m_maxK;
657 std::vector<std::pair<Real, Real>>
m_maxT;
712 std::vector<std::pair<Real, Real>>
m_Rdot;
938 std::function<Real(const RealVect& x)>
m_rho;
943 std::function<Real(const RealVect& x)>
m_sigma;
963 std::function<Real(const Real& E, const RealVect& x)>
m_alpha;
968 std::function<Real(const Real& E, const RealVect& x)>
m_eta;
1085 computeRdot(const Real& a_voltage) const noexcept;
1137 const Real& a_voltage,
1138 const std::function<Real(const Real E, const RealVect x)>& a_func) const noexcept;
1150 const Real& a_voltage,
1151 const std::function<Real(const Real E, const RealVect x)>& a_func,
1152 const
int a_level) const noexcept;
1166 virtual std::pair<Real, RealVect>
1239 const std::
string& a_outputRealm,
1240 const
int a_level) const noexcept;
1252 const std::
string& a_outputRealm,
1253 const
int a_level) const noexcept;
1263 particleOutsideGrid(const RealVect& a_pos, const RealVect& a_probLo, const RealVect& a_probHi) const noexcept;
1344 const MFAMRCellData& a_inhomogeneousField,
1345 const MFAMRCellData& a_homogeneousField,
1346 const Real a_voltage) const noexcept;
1354 superposition(EBAMRCellData& a_sumField, const Real a_voltage) const noexcept;
1367 writeData(LevelData<EBCellFAB>& a_output,
1369 const EBAMRCellData& a_data,
1370 const std::
string a_outputRealm,
1372 const
bool a_interpToCentroids,
1373 const
bool a_interpGhost) const noexcept;
1394#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.
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.
Declaration of a tracer particle class.
Base class for solving convection-diffusion-reaction equations.
Definition CD_CdrSolver.H:35
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:94
virtual const std::function< Real(const Real &E, const RealVect &x)> & getAlpha() const noexcept
Get ionization coefficient.
Definition CD_DischargeInceptionStepperImplem.H:2063
void parseRuntimeOptions() override
Parse runtime options.
Definition CD_DischargeInceptionStepperImplem.H:388
Vector< EBAMRCellData > m_townsendCriterionPlus
Townsend criterion for starting positive ions.
Definition CD_DischargeInceptionStepper.H:550
RefCountedPtr< FieldSolver > m_fieldSolver
Field solver.
Definition CD_DischargeInceptionStepper.H:452
std::function< Real(const Real &E, const RealVect &x)> m_secondaryEmission
Secondary emission coefficient.
Definition CD_DischargeInceptionStepper.H:988
TimeStepRestriction m_timeStepRestriction
Time step restriction.
Definition CD_DischargeInceptionStepper.H:442
virtual const EBAMRCellData * getElectricField() const noexcept
Get the electric field.
Definition CD_DischargeInceptionStepperImplem.H:5473
RefCountedPtr< TracerParticleSolver< P > > m_tracerParticleSolver
Tracer particle solver.
Definition CD_DischargeInceptionStepper.H:447
void parseMode() noexcept
Parse simulation mode.
Definition CD_DischargeInceptionStepperImplem.H:418
EBAMRCellData m_townsendInceptionVoltageMinu
Computed Townsend inception voltage.
Definition CD_DischargeInceptionStepper.H:598
EBAMRCellData m_detachment
Detachment factor.
Definition CD_DischargeInceptionStepper.H:610
void computeIonVelocity(const Real &a_voltage) noexcept
Set the negative ion velocity. Note.
Definition CD_DischargeInceptionStepperImplem.H:5167
std::vector< std::tuple< Real, Real, RealVect > > m_TPlusValues
Max T value for every voltage.
Definition CD_DischargeInceptionStepper.H:639
virtual void setIonMobility(const std::function< Real(const Real E)> &a_mobility) noexcept
Set the negative ion mobility (field-dependent)
Definition CD_DischargeInceptionStepperImplem.H:2014
bool m_plotPoisson
Plot Poisson solver or not.
Definition CD_DischargeInceptionStepper.H:858
bool m_plotTownsend
Plot the Townsend-criterion for initiatory ions.
Definition CD_DischargeInceptionStepper.H:908
std::function< Real(const RealVect &x)> m_sigma
Surface charge distribution.
Definition CD_DischargeInceptionStepper.H:943
Real m_gradAlphaDx
Space step size relative to alpha/|grad(alpha)|.
Definition CD_DischargeInceptionStepper.H:818
MFAMRCellData m_potentialInho
Electric potential with charges.
Definition CD_DischargeInceptionStepper.H:472
virtual void writeReportStationary() const noexcept
Print report to the terminal.
Definition CD_DischargeInceptionStepperImplem.H:4936
MFAMRCellData m_electricField
Electric field.
Definition CD_DischargeInceptionStepper.H:487
virtual Real advance(const Real a_dt) override
Advancement method. Swaps between various kernels.
Definition CD_DischargeInceptionStepperImplem.H:1601
std::vector< std::pair< Real, Real > > m_criticalArea
Critical area at various time instances.
Definition CD_DischargeInceptionStepper.H:730
Vector< EBAMRCellData > m_inceptionIntegralPlus
Inception integral values.
Definition CD_DischargeInceptionStepper.H:514
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:3372
virtual void seedUniformParticles() noexcept
Distribute particles in every grid cell.
Definition CD_DischargeInceptionStepperImplem.H:2136
virtual void resetTracerParticles() noexcept
Reset particles.
Definition CD_DischargeInceptionStepperImplem.H:3696
virtual void setIonDensity(const std::function< Real(const RealVect x)> &a_density) noexcept
Set the negative ion density.
Definition CD_DischargeInceptionStepperImplem.H:2002
virtual void computeCriticalVolumeStationary() noexcept
Compute the critical volume of the K values for each voltage.
Definition CD_DischargeInceptionStepperImplem.H:4478
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:1117
virtual void postRegrid() override
Perform post-regrid operations.
Definition CD_DischargeInceptionStepperImplem.H:1953
std::function< Real(const Real &E)> m_ionMobility
Negative ion mobility.
Definition CD_DischargeInceptionStepper.H:953
virtual void inceptionIntegrateTrapezoidal(const Real &a_voltage) noexcept
K integral: Add integration parts after particles move.
Definition CD_DischargeInceptionStepperImplem.H:2812
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:2077
EBAMRCellData m_gradAlpha
Calculated version of alpha/(|grad(alpha)|) on the mesh.
Definition CD_DischargeInceptionStepper.H:621
Real m_maxKLimit
Maximum K-value that is calculated in stationary mode.
Definition CD_DischargeInceptionStepper.H:753
std::function< Real(const Real &E, const RealVect &x)> m_eta
Attachment coefficient.
Definition CD_DischargeInceptionStepper.H:968
void computeIonDiffusion(const Real &a_voltage) noexcept
Set the negative ion diffusion coefficient.
Definition CD_DischargeInceptionStepperImplem.H:5233
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:4403
Real m_alphaDx
Space step size relative to 1/alpha.
Definition CD_DischargeInceptionStepper.H:808
virtual void computeTownsendCriterionStationary() noexcept
Solve for the Townsend criterion for each particle in each voltage.
Definition CD_DischargeInceptionStepperImplem.H:3069
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:1799
virtual void inceptionIntegrateEuler(const Real &a_voltage) noexcept
Integrate the inception integral using the Euler rule.
Definition CD_DischargeInceptionStepperImplem.H:2640
std::function< Real(const RealVect &x)> m_rho
Space charge distribution.
Definition CD_DischargeInceptionStepper.H:938
std::vector< Real > m_ionizationVolume
Ionization volumes for each voltage.
Definition CD_DischargeInceptionStepper.H:687
std::function< Real(const RealVect &x)> m_initialIonDensity
Negative ion density.
Definition CD_DischargeInceptionStepper.H:948
virtual void computeInceptionVoltageVolume() noexcept
Interpolate between K values to find voltage giving K_inception and store values in m_inceptionVoltag...
Definition CD_DischargeInceptionStepperImplem.H:4142
Real m_epsVoltage
Permitted relative deviation in V(t) when computing voltage-curve based time steps.
Definition CD_DischargeInceptionStepper.H:778
EBAMRCellData m_homogeneousFieldGas
Gas-phase homogeneous field.
Definition CD_DischargeInceptionStepper.H:502
bool m_fullIntegration
Use full reconstruction of critical volume or not.
Definition CD_DischargeInceptionStepper.H:843
std::vector< std::pair< Real, Real > > m_maxK
Max K value for every time step.
Definition CD_DischargeInceptionStepper.H:651
std::string m_realm
Realm where the solver lives.
Definition CD_DischargeInceptionStepper.H:918
virtual Real computeIonizationVolumeTransient(const Real &a_voltage) const noexcept
Compute the ionization volume for each voltage.
Definition CD_DischargeInceptionStepperImplem.H:4854
virtual void computeFieldEmission(EBAMRCellData &a_emissionRate, const Real &a_voltage) const noexcept
Compute field emission rates.
Definition CD_DischargeInceptionStepperImplem.H:3996
std::vector< Real > m_criticalAreaPlus
Critical area of K values for each voltage.
Definition CD_DischargeInceptionStepper.H:675
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:671
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:4569
DischargeInceptionStepper & operator=(const DischargeInceptionStepper &&)=delete
Disallowed assignment.
Real m_maxPhysDx
Maximum spatial step (physical dimensions)
Definition CD_DischargeInceptionStepper.H:793
void registerOperators() override
Register operators.
Definition CD_DischargeInceptionStepperImplem.H:359
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:5343
EBAMRCellData m_townsendInceptionVoltagePlus
Computed Townsend inception voltage.
Definition CD_DischargeInceptionStepper.H:592
Vector< EBAMRCellData > m_inceptionIntegralMinu
Inception integral values.
Definition CD_DischargeInceptionStepper.H:520
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:4055
std::vector< Real > m_voltageSweeps
Voltage sweeps.
Definition CD_DischargeInceptionStepper.H:705
MFAMRCellData m_scratchInho
Scratch storage used during regrids.
Definition CD_DischargeInceptionStepper.H:482
bool m_profile
Profile calculation or not.
Definition CD_DischargeInceptionStepper.H:828
std::function< Real(const Real &E)> m_ionDiffusion
Negative ion diffusion coefficient.
Definition CD_DischargeInceptionStepper.H:958
Real m_relativeDeltaU
Maximum relative voltage increase.
Definition CD_DischargeInceptionStepper.H:742
std::function< Real(const Real &E, const RealVect &x)> m_fieldEmission
Field emission current.
Definition CD_DischargeInceptionStepper.H:983
TransportAlgorithm m_transportAlgorithm
Transport algorithm for advancing negative ions in the transient mode.
Definition CD_DischargeInceptionStepper.H:437
void allocate() override
Allocate storage for solvers and time stepper.
Definition CD_DischargeInceptionStepperImplem.H:172
Real m_minPhysDx
Minimum spatial step (physical dimensions)
Definition CD_DischargeInceptionStepper.H:788
Vector< EBAMRCellData > m_detachmentStationary
Detachment rates.
Definition CD_DischargeInceptionStepper.H:532
EBAMRCellData m_emissionRate
Field emission rates.
Definition CD_DischargeInceptionStepper.H:562
virtual Vector< std::string > getTransientPlotVariableNames() const noexcept
Get plot variable names for transient mode.
Definition CD_DischargeInceptionStepperImplem.H:1009
virtual Mode getMode() const noexcept
Get the solver mode.
Definition CD_DischargeInceptionStepperImplem.H:2129
void parseInceptionAlgorithm() noexcept
Parse the inception algorithm.
Definition CD_DischargeInceptionStepperImplem.H:477
virtual ~DischargeInceptionStepper()
Destructor.
Definition CD_DischargeInceptionStepperImplem.H:112
Real m_firstDt
First time step.
Definition CD_DischargeInceptionStepper.H:763
void postCheckpointSetup() override
Post checkpoint operations.
Definition CD_DischargeInceptionStepper.H:157
bool m_plotInceptionIntegral
If true, plot the K-values.
Definition CD_DischargeInceptionStepper.H:873
void solvePoisson() noexcept
Solve the Poisson equation.
Definition CD_DischargeInceptionStepperImplem.H:250
virtual void setAlpha(const std::function< Real(const Real &E, const RealVect &x)> &a_alpha) noexcept
Set the ionization coefficient.
Definition CD_DischargeInceptionStepperImplem.H:2038
EBAMRCellData m_inceptionVoltageMinu
Computed inception voltage.
Definition CD_DischargeInceptionStepper.H:574
Vector< EBAMRCellData > m_emissionRatesPlus
Field emission rates.
Definition CD_DischargeInceptionStepper.H:538
MFAMRCellData m_potential
Electric potential.
Definition CD_DischargeInceptionStepper.H:462
bool m_plotDetachment
If true, plot electron detachment rate, i.e. done/dt due to detachment from negative ions.
Definition CD_DischargeInceptionStepper.H:888
Real m_minGridDx
Minimum spatial step (relative to grid resolution)
Definition CD_DischargeInceptionStepper.H:798
virtual void computeInceptionIntegral(EBAMRCellData &a_inceptionIntegral, const Real a_voltage) noexcept
Compute the inception integral for the input voltage.
Definition CD_DischargeInceptionStepperImplem.H:2446
Mode m_mode
Mode.
Definition CD_DischargeInceptionStepper.H:427
virtual void regrid(const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel) override
Time stepper regrid method.
Definition CD_DischargeInceptionStepperImplem.H:1890
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:492
bool m_plotTracer
Plot tracer particle solver or not.
Definition CD_DischargeInceptionStepper.H:863
Real m_deltaK
Maximum targeted increase in K-value.
Definition CD_DischargeInceptionStepper.H:748
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:5127
virtual void writeReportTransient() const noexcept
Print report to the terminal.
Definition CD_DischargeInceptionStepperImplem.H:5047
virtual void rewindTracerParticles() noexcept
Move particles back to their original position.
Definition CD_DischargeInceptionStepperImplem.H:3664
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:3259
std::vector< Real > m_RdotMinu
Rate of appearance of first electron (in critical volume)
Definition CD_DischargeInceptionStepper.H:699
EBAMRCellData m_streamerInceptionVoltageMinu
Computed streamer inception voltage.
Definition CD_DischargeInceptionStepper.H:586
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:5313
std::vector< std::pair< Real, Real > > m_Rdot
Integral factor for cumulative integration.
Definition CD_DischargeInceptionStepper.H:712
void parseOptions()
Parse options.
Definition CD_DischargeInceptionStepperImplem.H:373
std::vector< std::pair< Real, Real > > m_ionizationVolumeTransient
Ionization volume at various time instances.
Definition CD_DischargeInceptionStepper.H:736
void setupSolvers() override
Instantiate the tracer particle solver.
Definition CD_DischargeInceptionStepperImplem.H:122
std::vector< Real > m_criticalVolumePlus
Critical volumes of K values for each voltage.
Definition CD_DischargeInceptionStepper.H:663
MFAMRCellData m_scratchHomo
Scratch storage used during regrids.
Definition CD_DischargeInceptionStepper.H:477
virtual void setEta(const std::function< Real(const Real &E, const RealVect &x)> &a_eta) noexcept
Set the attachment coefficient.
Definition CD_DischargeInceptionStepperImplem.H:2051
Vector< EBAMRCellData > m_backgroundIonizationStationary
Background ionization rates.
Definition CD_DischargeInceptionStepper.H:526
bool m_plotFieldEmission
If true, plot the field emission.
Definition CD_DischargeInceptionStepper.H:893
IntegrationAlgorithm m_inceptionAlgorithm
Integration algorithm for K-value.
Definition CD_DischargeInceptionStepper.H:432
std::function< Real(const Real &E, const RealVect &x)> m_backgroundRate
Background ionization rate expression.
Definition CD_DischargeInceptionStepper.H:978
EBAMRCellData m_streamerInceptionVoltagePlus
Computed streamer inception voltage.
Definition CD_DischargeInceptionStepper.H:580
virtual Vector< std::string > getStationaryPlotVariableNames() const noexcept
Get plot variable names for stationary mode.
Definition CD_DischargeInceptionStepperImplem.H:864
bool m_plotInceptionVoltage
If true, plot the inception voltage.
Definition CD_DischargeInceptionStepper.H:878
std::string m_outputFile
File name prefix for HDF5 plot output.
Definition CD_DischargeInceptionStepper.H:928
EBAMRCellData m_inceptionVoltagePlus
Computed inception voltage.
Definition CD_DischargeInceptionStepper.H:568
std::function< Real(const Real &E, const RealVect &x)> m_detachmentRate
Detachment probability for negative ion.
Definition CD_DischargeInceptionStepper.H:973
Real m_townsendGridDx
Space step size used for ion tracking.
Definition CD_DischargeInceptionStepper.H:813
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:2090
virtual void computeTownsendCriterionTransient(const Real &a_voltage) noexcept
Solve for the Townsend criterion for each particle in each voltage.
Definition CD_DischargeInceptionStepperImplem.H:3203
virtual void computeIonizationVolumeStationary() noexcept
Compute the ionization volume for each voltage.
Definition CD_DischargeInceptionStepperImplem.H:4756
std::function< Real(const Real a_time)> m_voltageCurve
Time-dependent voltage.
Definition CD_DischargeInceptionStepper.H:913
Vector< EBAMRCellData > m_townsendCriterionMinu
Townsend criterion for starting negative ions (electrons arriving at anode).
Definition CD_DischargeInceptionStepper.H:556
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:1331
phase::which_phase m_phase
Phase (gas/solid) where the solver lives.
Definition CD_DischargeInceptionStepper.H:933
virtual void computeFieldEmissionStationary() noexcept
Compute field emission rates.
Definition CD_DischargeInceptionStepperImplem.H:3896
std::string m_dataOutputFile
File name for the tabular data output (inception voltages, K-values, etc.).
Definition CD_DischargeInceptionStepper.H:923
void parseOutput() noexcept
Parse output settings.
Definition CD_DischargeInceptionStepperImplem.H:463
std::function< Real(const Real &E, const RealVect &x)> m_alpha
Ionization coefficient.
Definition CD_DischargeInceptionStepper.H:963
MFAMRCellData m_potentialHomo
Electric potential without charges.
Definition CD_DischargeInceptionStepper.H:467
EBAMRCellData m_inceptionIntegral
Inception integral values.
Definition CD_DischargeInceptionStepper.H:508
bool m_plotEta
If true, plot eta.
Definition CD_DischargeInceptionStepper.H:903
Vector< EBAMRCellData > m_emissionRatesMinu
Field emission rates.
Definition CD_DischargeInceptionStepper.H:544
bool m_debug
Debug or not.
Definition CD_DischargeInceptionStepper.H:833
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:2501
virtual Real computeCriticalAreaTransient() const noexcept
Compute the critical area of the K values for each voltage.
Definition CD_DischargeInceptionStepperImplem.H:4705
Real m_maxGridDx
Maximum spatial step (relative to grid resolution)
Definition CD_DischargeInceptionStepper.H:803
virtual Real getCriticalField() const noexcept
Get the breakdown field.
Definition CD_DischargeInceptionStepperImplem.H:5482
virtual Vector< std::string > getPlotVariableNames() const override
Get plot variable names.
Definition CD_DischargeInceptionStepperImplem.H:808
Real m_maxDt
Maximum permitted time step.
Definition CD_DischargeInceptionStepper.H:768
virtual void computeDetachmentStationary() noexcept
Compute the detachment ionization rate for all voltages.
Definition CD_DischargeInceptionStepperImplem.H:3808
bool m_plotField
Plot field.
Definition CD_DischargeInceptionStepper.H:853
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:5415
void parseVoltages() noexcept
Parse voltage levels.
Definition CD_DischargeInceptionStepperImplem.H:443
EBAMRCellData m_backgroundIonization
Background ionization.
Definition CD_DischargeInceptionStepper.H:616
virtual void interpolateGradAlphaToParticles() noexcept
Interpolate alpha/|grad(alpha)| onto some scratch particle storage.
Definition CD_DischargeInceptionStepperImplem.H:2428
std::vector< std::tuple< Real, Real, RealVect > > m_KPlusValues
Max K value for every voltage.
Definition CD_DischargeInceptionStepper.H:627
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:1074
std::vector< std::tuple< Real, Real, RealVect > > m_KMinuValues
Max K value for every voltage.
Definition CD_DischargeInceptionStepper.H:633
bool m_plotAlpha
If true, plot alpha.
Definition CD_DischargeInceptionStepper.H:898
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:2026
void postInitialize() override
Perform any post-initialization steps.
Definition CD_DischargeInceptionStepperImplem.H:2346
bool particleInsideEB(const RealVect &a_pos) const noexcept
Check if particle is inside electrode.
Definition CD_DischargeInceptionStepperImplem.H:5151
virtual void setSigma(const std::function< Real(const RealVect &x)> &a_sigma) noexcept
Set surface charge distribution.
Definition CD_DischargeInceptionStepperImplem.H:1990
EBAMRCellData m_townsendCriterion
Townsend criterion.
Definition CD_DischargeInceptionStepper.H:604
void parseTransportAlgorithm() noexcept
Parse the transport algorithm.
Definition CD_DischargeInceptionStepperImplem.H:534
bool m_ionTransport
Ion transport on/off.
Definition CD_DischargeInceptionStepper.H:848
virtual void seedIonizationParticles(const Real a_voltage) noexcept
Add particles to every cell where alpha - eta > 0.0.
Definition CD_DischargeInceptionStepperImplem.H:2214
DischargeInceptionStepper()
Default constructor.
Definition CD_DischargeInceptionStepperImplem.H:38
bool m_plotNegativeIons
Plot negative ions or not.
Definition CD_DischargeInceptionStepper.H:868
MFAMRCellData m_electricFieldInho
Electric field with space/surface charge and V = 0 on all electrodes.
Definition CD_DischargeInceptionStepper.H:497
Real m_cfl
CFL-step for negative ions.
Definition CD_DischargeInceptionStepper.H:758
std::vector< Real > m_criticalAreaMinu
Critical area of K values for each voltage.
Definition CD_DischargeInceptionStepper.H:681
void parsePlotVariables() noexcept
Parse plot variables.
Definition CD_DischargeInceptionStepperImplem.H:574
void initialData() override
Fill problem with initial data.
Definition CD_DischargeInceptionStepperImplem.H:238
virtual const std::function< Real(const Real &E, const RealVect &x)> & getEta() const noexcept
Get attachment coefficient.
Definition CD_DischargeInceptionStepperImplem.H:2070
RefCountedPtr< CdrSolver > m_ionSolver
Negative ion solver.
Definition CD_DischargeInceptionStepper.H:457
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:2116
virtual Real computeDt() override
Compute a time step to be used by Driver.
Definition CD_DischargeInceptionStepperImplem.H:1514
std::vector< std::pair< Real, Real > > m_criticalVolume
Critical volume at various time instances.
Definition CD_DischargeInceptionStepper.H:724
virtual void preRegrid(const int a_lmin, const int a_oldFinestLevel) override
Perform pre-regrid operations.
Definition CD_DischargeInceptionStepperImplem.H:1870
virtual void printStepReport() override
Print a step report. Used in transient simulations.
Definition CD_DischargeInceptionStepperImplem.H:1817
virtual void setRho(const std::function< Real(const RealVect &x)> &a_rho) noexcept
Set space charge distribution.
Definition CD_DischargeInceptionStepperImplem.H:1978
void parseVerbosity() noexcept
Parse class verbosity.
Definition CD_DischargeInceptionStepperImplem.H:403
bool m_evaluateTownsend
Evaluate secondary emission.
Definition CD_DischargeInceptionStepper.H:838
Real m_minDt
Minimum permitted time step.
Definition CD_DischargeInceptionStepper.H:773
bool m_plotBackgroundIonization
If true, plot the background ionization rates.
Definition CD_DischargeInceptionStepper.H:883
void registerRealms() override
Register realms. Primal is the only realm we need.
Definition CD_DischargeInceptionStepperImplem.H:347
Real m_inceptionK
Inception criteria (read from input)
Definition CD_DischargeInceptionStepper.H:823
virtual void computeBackgroundIonizationStationary() noexcept
Compute the background ionization rate for all voltages.
Definition CD_DischargeInceptionStepperImplem.H:3726
virtual void computeInceptionIntegralTransient(const Real &a_voltage) noexcept
Solve streamer inception integral.
Definition CD_DischargeInceptionStepperImplem.H:2605
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:1966
virtual void computeCriticalAreaStationary() noexcept
Compute the critical area of the K values for each voltage.
Definition CD_DischargeInceptionStepperImplem.H:4633
std::vector< Real > m_RdotPlus
Rate of appearance of first electron (in critical volume)
Definition CD_DischargeInceptionStepper.H:693
virtual void advanceIons(const Real a_dt) noexcept
Advance negative ions.
Definition CD_DischargeInceptionStepperImplem.H:1713
std::vector< std::pair< Real, Real > > m_inceptionProbability
Cumulative probability of breakdown by time t.
Definition CD_DischargeInceptionStepper.H:718
std::vector< std::pair< Real, Real > > m_maxT
Max Townsend value for every time step.
Definition CD_DischargeInceptionStepper.H:657
virtual Real computeRdot(const Real &a_voltage) const noexcept
Compute integral_Vcr(done/dt * (1 - eta/alpha) dV)
Definition CD_DischargeInceptionStepperImplem.H:3561
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:2103
std::vector< std::tuple< Real, Real, RealVect > > m_TMinuValues
Max T value for every voltage.
Definition CD_DischargeInceptionStepper.H:645
std::vector< Real > m_criticalVolumeMinu
Critical volumes of K values for each voltage.
Definition CD_DischargeInceptionStepper.H:669
Real m_maxDtGrowth
Maximum permitted time step growth.
Definition CD_DischargeInceptionStepper.H:783
Base class for advancing equations.
Definition CD_TimeStepper.H:31
Base class for a tracer particle solver. This solver can advance particles in a pre-defined velocity ...
Definition CD_TracerParticleSolver.H:38
Namespace containing physics models for use with chombo-discharge.
Definition CD_AdvectionDiffusion.H:16
Phase names namespace.
Definition CD_MultiFluidIndexSpace.H:28