absAndSav

AbsAndSav

Works with VSimBase, VSimEM, VSimPD, VSimPA, and VSimVE licenses.

This particle sink removes particles at boundary, but stores them for use by other code components such as History.

AbsAndSav Parameters

minDim (integer)

Minimum dimensionality for which this sink is applicable (1, 2, or 3).

lowerBounds (integer vector)

Gives lower bounds of the particle sink in cell indices.

upperBounds (integer vector)

Gives upper bounds of the particle sink in cell indices.

saveDuringPtclEmissionStage (bool, optional, default = false)

(This applies only if recordParticleData=true or recordParticleSumData=true.) Whether particles should be saved (i.e., recorded) if they are absorbed immediately after being emitted. If this option is true, a simulation may become mired in an infinite loop or possibly even crash if, e.g., secondary emission occurs for absorbed particles. This option should generally be false unless it is important to record every absorbed particle and absorbing particles has no effect on an species (e.g., such as causing secondary emission).

ptclNotSavedWarnMode (string, optional, default = never)

If saveDuringPtclEmissionStage is false, then particles absorbed/sunk during the emission stage will not be saved/recorded. Depending on this attribute, warnings can be issued when that happens. Detailed warnings can be emitted for individual events, as well as warning summaries that report the number of warnings issued. See also the attributes ptclNotSavedWarnPeriodicity and ptclNotSavedWarnMaxDetails. The following values are valid (in order from least to most verbose).

never: Never emit warnings.

final: Warn summarily at end of simulation.

periodic: Emit warning summaries periodically (usually periodic in the timestep). These summaries require communication among all global MPI ranks, so issuing them every timestep might hurt performance (though it’s unlikely in most simulations). Issuing them every tenth or hundredth timestep is very unlikely to impact performance.

firstThenPeriodic: Emit a warning summary at the first opportunity (usually after the first timestep), and thereafter periodically.

immediateThenPeriodic: Emit individual detailed warnings immediately as they occur (without synchronizing among MPI ranks), but cease doing so after ptclNotSavedWarnMaxDetails warnings are emitted (per rank). Warning summaries will be issued periodically.

immediate: Emit individual detailed warnings immediately as they occur (without synchronizing among MPI ranks); each rank will write warnings to its comms file, with only rank 0 outputting to the standard output. Warning summaries will be issued periodically. If there are many warnings, this option can degrade performance and result in significant disk usage (assuming the output is written to files). This option should be used only if it’s important to see every warning; it may especially useful if a simulation crashes before it has the opportunity to emit a warning summary.

immediateToStdout: All MPI ranks should emit individual warnings immediately to the standard output (if many ranks emit warnings, the output may be a mess). This should be used only in rare circumstances, and it should be with caution in large parallel simulations.

ptclNotSavedWarnPeriodicity (integer, optional, default = 10)

If ptclNotSavedWarnMode is set to issue warning summaries periodically, then this option specifies the period (usually in timesteps). If this is 0, then a summary will only be issued at the end of the simulation.

ptclNotSavedWarnMaxDetails (integer, optional, default = 1)

If ptclNotSavedWarnMode is set to issue warning summaries, this attribute specifies how many warnings to describe in detail (for each summary). Each MPI rank will always write details for warnings that occurred on that rank to its own comms file, with only rank 0 writing to the standard output. However, if rank 0 did not have any warnings (but other ranks did), details from other ranks will be written to the standard output.

AbsAndSav Example Block

 <ParticleSink keeperSideWallXeDblIons>
  kind = absAndSav
  lowerBounds = [CK2_ZMIN_INDX CK2_RMIN_INDX]
  upperBounds = [CK2_ZMAX_INDX CK2_RMAX_INDX]
</ParticleSink>