xvLoaderEmitter
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.
xvLoaderEmitter Sub-Blocks
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.
xvLoaderEmitter Parameters
- load (string, default =
true
): Used to invoke density-loading features.
- emit (string, default =
true
): Used to invoke flux-emitting features.
- applyTimes:
Interval over which particles are created.
- loadOnShift (string, default =
false
): A string,
true
orfalse
, 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 haveload = true
.- loadAfterInit (string, default =
false
): Used to continue loading particles after the initialization, for example a continuous bulk source ionization. loadAfterInit should be set to true only if more particles should be loaded into the loadSlab with each time step. If true, then must also have
load = true
.- entranceMove (string, default =
default
): Set to
corner
to specify corner move dynamics on the initial step, when emitting from cut cells. If not specified, ordefault
, uses the parallel move from 1 cell deep. Set tostairstep
if moving particles from exactly on the emission surface.- emitBasedOnLocalForce (string, default =
false
): Set to
true
in order to prevent emission when the local electric field has sign such that the force returns particles to the surface.- thermalLoad (string):
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 flagthermalLoadXLeft = 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 bykind = 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
- includeCylVolElem (integer, default = 0):
If
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.
Also See
See ParticleSink