`batch_duration` Stability and Steady Value
This section organizes the theoretical relationship between sim.batch_duration in the BEACH batch loop, or the one-batch physical time determined from sim.batch_duration_step, and the validity and stability of the converged wall-charge distribution.
In the current implementation, when batch_duration_step is used, sim.batch_duration = sim.dt * sim.batch_duration_step; in reservoir_face injection, the physical inflow per batch determines the macro-particle count or weight.
Implementation entry points:
- Batch procedure: BEACH Algorithm Overview and Particle Tracking and Charge Accumulation
- Parameter definitions: Parameters for
sim.batch_duration/sim.batch_duration_step - Injection usage:
src/particles/bem_injection.f90(reservoir_face/photo_raycast) - Batch generation and weight resolution:
src/config/bem_app_config_runtime.f90
Practical Guide
Section titled “Practical Guide”For first runs, choose batch_duration empirically before relying on the theory below.
- Start with a conservative, small
sim.batch_duration_step. - Inspect
charge_history.csv,last_rel_changeinsummary.txt, and absorbed / escaped counts. - Run 2x and 1/2x
batch_duration_stepcomparisons and compare final charge distributions and history shapes. - If the final charge and history are nearly unchanged and no oscillation or divergence appears, keep that value.
- If fluctuations dominate, tune
target_macro_particles_per_batch,w_particle,batch_count, andhistory_stridein addition tobatch_duration.
| Symptom | Check | Typical response |
|---|---|---|
| Charge history oscillates strongly by batch | charge_history.csv | Lower batch_duration_step |
| Final charge changes strongly with step size | 1/2x and 2x comparison | Recompute with smaller batch_duration_step |
| History is too noisy to read | target_macro_particles_per_batch, w_particle | Adjust macro-particle count or weight |
| Run stops before settling | batches in summary.txt | Increase batch_count |
Treat batch_duration as the deterministic explicit-update time step, and particle count / weight as the Monte Carlo noise controls.
1. Reduction to a continuous-time model
Section titled “1. Reduction to a continuous-time model”Let be the accumulated charge of insulator wall element j, and let be the incident charge flux per unit wall area at that charge state.
The absorption-only model becomes:
where is the element area. Since depends on the field created by wall charge, it is generally nonlinear.
One BEACH batch can be viewed as an explicit update that freezes the field at the start of the batch. In expectation:
where:
-
sim.batch_duration - is the element-area vector
- is Monte Carlo sampling error within the batch
The implementation follows this picture: particles in a batch see the same field , and the charge delta is applied to the wall at the end of the batch.
Thus batch_duration is the time step of this explicit update.
2. Validity of the steady value
Section titled “2. Validity of the steady value”Write the mean update map as:
Its fixed point satisfies:
Therefore, the fixed point of the mean model itself does not depend on .
In this sense, if the iteration converges stably and Monte Carlo error is sufficiently averaged, changing batch_duration does not change the targeted continuous-time steady solution.
However, this statement applies only to the fixed point of the mean model. Actual runs include:
- finite-sample error per batch
- fluctuation in monitoring quantities used to judge convergence
- residual error from stopping at a finite batch count
So the observed converged value can retain weak batch_duration dependence. The safe statement is:
The mean fixed point of the iteration is independent of
batch_duration, but finite-sample and finite-time calculations can show small step-size dependence.
3. Linear stability
Section titled “3. Linear stability”Near a fixed point , define perturbations . The linearized mean update is:
The stability condition for a general multi-degree-of-freedom system is the spectral-radius condition:
For each eigenvalue :
This is the essential BEACH stability condition.
As an insulator wall accumulates charge, it tends to attract fewer particles of the same sign, so the dominant eigenvalues of are expected to be real negative, . Only under this real-negative dominant mode assumption, using response time scale , the fastest mode avoids divergence when:
and converges monotonically, or overdamped, when:
Practical interpretation:
- : non-divergence under the real-negative dominant mode assumption
- : monotone convergence under the same assumption
- in a general coupled system, the precise condition is
Thus the / rule is better described as an explicit-Euler stability guide under a real-negative dominant mode assumption, not as a strict BEACH CFL condition.
4. Relation to Monte Carlo noise
Section titled “4. Relation to Monte Carlo noise”For a one-mode approximation with noise:
the steady variance depends on the variance of .
The key point is that the dependence of depends on injection normalization.
BEACH reservoir_face has two modes.
4.1 Fixed w_particle
Section titled “4.1 Fixed w_particle”When w_particle is specified directly, the physical inflow count changes in proportion to , so the expected macro-particle count per batch follows:
The shot-noise variance of the batch charge increment can be regarded roughly as proportional to :
In the limit , the steady variance does not depend strongly on batch_duration.
4.2 Fixed target_macro_particles_per_batch
Section titled “4.2 Fixed target_macro_particles_per_batch”When w_particle is solved from target_macro_particles_per_batch, the weight is determined as in src/config/bem_app_config_runtime.f90:644:
so the noise dependence on differs from the simple of §4.1. The macro-particle count is fixed, while the contribution per particle is proportional to .
4.3 Practical interpretation
Section titled “4.3 Practical interpretation”The useful separation is:
batch_durationmainly controls deterministic stability- the main knobs for statistical noise are
w_particleortarget_macro_particles_per_batch
In particular, neither of these is generally true:
Making
batch_durationsmaller always lowers noise. Makingbatch_durationlarger leaves noise almost unchanged.
The answer depends on injection normalization.
5. Physical estimate of
Section titled “5. Physical estimate of τmin\tau_{\min}τmin”is the fastest effective response time that controls numerical stability. It is hard to express with one general physical formula because it depends on geometry, potential distribution, upstream distribution function, and injection model. In practice, estimate two different quantities.
5.1 Charging / sheath relaxation time
Section titled “5.1 Charging / sheath relaxation time”A natural estimate uses an effective capacitance and effective conductance :
or a typical potential change and effective current :
This is a relatively slow charging timescale affected by geometry and shielding.
5.2 Inverse plasma frequency
Section titled “5.2 Inverse plasma frequency”Another fast reference is:
This is the microscopic fast timescale of an electron plasma and is useful as a reference for how sharply the system can respond.
However, treating directly as an upper bound on is too strong.
It is better viewed as a fast-side physical reference. The effective time constant that limits batch_duration often comes from $\tau_\text{charge}`, including geometry and incoming-flux limits.
5.3 Practical choice
Section titled “5.3 Practical choice”For , estimate:
- : microscopic fast reference
- : system-specific charging / sheath relaxation timescale
Then refine with numerical experiments.
is only a fast reference; the actual stability limit is set by an effective response time that often includes .
6. Practical usage
Section titled “6. Practical usage”- Estimate both and as physical scales.
- Start with a conservative, smaller
batch_durationif oscillation should be avoided. - Compare charge history and monitoring quantities with
batch_durationmultiplied by 1/2 and 2, as a step-size sensitivity check. - If the converged values nearly agree and no oscillation or divergence is visible, the
batch_durationis practically adequate. - If noise is large, first adjust
w_particleortarget_macro_particles_per_batch. Do not try to solve noise only by changingbatch_duration. - Oscillation in
charge_history.csvlast_rel_change, or jitter in element charge time series, is a useful diagnostic. This is better called a step-size sensitivity check than strict Richardson extrapolation, because it does not assume a power law of the error.
7. Summary
Section titled “7. Summary”| Item | Conclusion |
|---|---|
| Validity of steady value | The fixed point of the mean update does not depend on batch_duration |
| Exact stability condition | |
| , rules | Explicit-Euler approximate guide under real-negative dominant modes |
| Role of | Microscopic fast reference, not generally a direct stability upper bound |
Noise and batch_duration | Dependence is set by injection normalization |
| Main noise-reduction knobs | Adjust w_particle or target_macro_particles_per_batch |
| Practical check | Step-size sensitivity check by varying batch_duration |
It is theoretically clean to say that the steady value of the mean model does not depend on how batch_duration is chosen.
The general stability condition follows directly from classical stability analysis.
The remaining uncertainty is the value of itself, which must be narrowed down with both case-specific physical estimates and numerical experiments.
Related documents
Section titled “Related documents”- Fortran parameter file specification — how to set
sim.batch_duration/sim.batch_duration_step - Fortran-centered workflow — batch-loop execution control
- BEACH Algorithm Overview — one-batch computation procedure and stop conditions
- Particle Tracking and Charge Accumulation — particle generation, tracking, and charge commit details