A generic, flexible particle source designed to provide a wide variety of options for creating particles either by density-loading in a volume and/or flux-emitting from a surface. This particle source requires the specification of at least two sub-blocks; a position generator and a velocity generator.
This is the most commonly used particle source in VSim.
This particle source is available with any VSim license.
PositionGenerator (block)
Is used to generate physical positions of particles when they are loaded or emitted.
VelocityGenerator (block)
Is used to generate velocities of a particle when loaded or emitted.
In addition to defining the PositionGenerator and VelocityGenerator blocks, you can also define Space-Time functions to specify a non-Cartesian shape for loading and emission, respectively.
STFunc Block (optional block)
- <STFunc relMacroDenFunc> (default =
1
):- The value for relMacroDenFunc should be a number between
0
and1
, inclusive. A uniform random number is selected for each particle load attempt, and if the random number is less than the value of relMacroDenFunc, then it is loaded, otherwise it is not loaded. Use this to create a non-uniform loading density. This function is ignored when only flux-emitting (load = false).- <STFunc relMacroFluxFunc> (default =
1
):- The value for relMacroFluxFunc should be a number between
0
and1
, inclusive. A uniform random number is selected for each particle emission attempt, and if the random number is less than the value of relMacroFluxFunc, then it is emitted, otherwise it is not emitted. Use this to create a non-uniform emission density. This function is ignored when only density-loading (emit = false).- <STFunc currentDensityFunc>:
This STFunc block determines the weight of variable weight particles when emitting. Causes an exception if used with fixed-weight particles. If this STFunc is omitted in variable-weight particles emission, then a default constant currentDensityFunc is set up inside Vorpal based on the emission parameters, where the current density amplitude is calculated as below:
\(J_0 = charge * numPtlcsInMacro * nomMacroPtclsPerAreaStep / dt\)
Here charge is the charge value specified by the user in the
Species
block, nomMacroPtclsPerAreaStep is the nominal macro particles emitter per time step per emission area. For zero charge neutral species type, equivalent charge value is used in above calculation. The nomMacroPtclsPerAreaStep is calculated in Vorpal based on the user emission parameter such assweepRate
ornomMacroPtclsPerStep
. SeePositionGenerator
for details. This ensures that the emitted particle has a weight value of 1.0.
true
):true
):false
):true
or false
, used in shifting window
simulations to insure that particles are loaded into the new cells added
when the simulation shifts. loadOnShift should be set to true
if a moving window is used in the simulation. If true, then must also
have load = true
.false
):load = true
.default
):corner
to specify corner move dynamics on the initial step,
when emitting from cut cells. If not specified, or default
,
uses the parallel move from 1 cell deep. Set to stairstep
if moving particles from exactly on the emission surface.false
):true
in order to prevent emission when the local electric
field has sign such that the force returns particles to the surface.Allows Vorpal to simulate a thermal, constant density plasma in a
finite domain, without using periodic boundary conditions. To invoke the
loader on the left boundary of the x-axis, within a
ParticleSource block of kind = xvLoaderEmitter
, specify the
desired load region (e.g. the left-most layer of cells) and set the
flag thermalLoadXLeft = true
. The other five flags are used in
an analogous way, each within a separate ParticleSource
block. The thermalLoad flags are automatically consistent with
any spatial or velocity distribution that is supported by kind =
xvLoaderEmitter
. At the beginning of any time step that falls within
the applyTimes = […] limits, particles will be loaded into
the specified region as though they had actually been loaded in the
corresponding region that is one cell to the left (or right) along the x
(or y or z) axis, and then drifted into the simulation domain. Use
restricted to electrostatic PIC simulations. Flags include:
thermalLoadXLeft
thermalLoadXRight
thermalLoadYLeft
thermalLoadYRight
thermalLoadZLeft
thermalLoadZRight
1
, cylindrical volume scaling and normalization is handled internally
by Vorpal, allowing the user to write cleaner expressions for relMacroDensFunc
and relMacroFluxFunc for simulations in cylindrical coordinates.See ParticleSink