randdenssrc
This particle source is an emitter, which uses bit-reversal with a standard pseudo-random number generator. While this source was originally designed for Cartesian simulations, it may also be used in a ZR cylindrical coordinate system.
This particle source is available with a VSimMD or VSimPD license.
STFunc Block (optional block):
macroDensFunc (default = 1)
The value for <STFunc macroDensFunc>
should be a number between
0
and 1
, inclusive.
A uniform random number is selected for each particle load
attempt, and if the random number is less than the value of
macroDensFunc
, then it is loaded, otherwise it is not
loaded. Use this to create a non-uniform loading density.
NAFunc Block (optional block):
velocitySequence_0
The <NAFunc velocitySequence_0>
block defines sequences of numbers to represent the physical characteristics of
particles defined by a ParticleSource. Initial particle velocities, for example, can be
defined using an NAFunc
which samples values from an analytic velocity
distribution. An NAFunc
block can be named one of:
- velocitySequence_0
- velocitySequence_1
- velocitySequence_2
- velocitySequence_3
- velocitySequence_4
- velocitySequence_5
The velocitySequence_0
, velocitySequence_1
, and
velocitySequence_2
blocks always
define the initial 3-component velocities of individual particles in
the particle velocity space.
The velocitySequence_3
block defines the next particle component,
which will vary from one species kind to another.
See Velocities and Internal Variables of Particles for a table of
internal variables by species kind.
For example, it may set initial values for particle weights.
For fixed-weight particles these NAFunc
blocks can be set to a
constant value using
kind=constNAFunc
. For variable-weight particles more general
distributions can be specified, as outlined in the NAFunc Block
documentation.
density (double)
Positive value describing the density of the particles. This value is typically equivalent to the specified nominal density, however sometimes a scaling factor is used to load the particles more slowly, and prevent high frequency oscillations.
applyPeriod (integer)
Positive value n, directing the simulation to apply the source at every nth time step.
applyTimes (double vector)
Bracketed times for when the source/emitter will generate particles.
lowerBounds (double vector)
Lower bound (expressed in physical units, not grid units) of the physical extent of the source.
upperBounds (double vector)
Upper bound (expressed in physical units, not grid units) of the physical extent of the source.
vbar (double vector)
Average velocity of the particles in the x, y, and z directions.
vsig (double vector)
Positive value denoting the thermal velocity in the x, y, and z directions.
<ParticleSource InitElecDeposition>
kind = randDensSrc
lowerBounds = [$XSTART+DX$ YSTART]
upperBounds = [$XEND-DX$ YEND]
density = $NOMDEN/100.$ # used to prevent high frequency oscillations when loading particles
applyTimes = [0. LOADTIME]
# Unit probability
<STFunc macroDensFunc>
kind = constantFunc
amplitude = 1.
</STFunc>
</ParticleSource>
# Species kind = relBorisVWTagged, which has components x,y,z,ux,uy,uz,tag,weight
<ParticleSource gridSrc>
kind = gridDenSrc
density = PTCL_DENSITY
numPerDir = [1 1 1]
lowerBounds = [XSTART YSTART ZSTART]
upperBounds = [XEND YEND ZEND]
# Particle distribution uniform over initial phase space
<NAFunc velocitySequence_0> # ux
kind = bitRevNAFunc
</NAFunc>
<NAFunc velocitySequence_1> # uy
kind = randGamma
mean = MEAN_VEL
sigma = SIGMA_VEL
</NAFunc>
<NAFunc velocitySequence_2> # uz
kind = randKappa
sigmas = [$0.8*SIGMA_VEL$ SIGMA_VEL $1.2*SIGMA_VEL$]
</NAFunc>
<NAFunc velocitySequence_3> # tag
kind = randGaussLimit
mean = MEAN_VEL
sigma = SIGMA_VEL
lowerLimit = $2.*MEAN_VEL/3.$
upperLimit = $4.*MEAN_VEL/3.$
</NAFunc>
<NAFunc velocitySequence_4> # weight
kind = sysRandom
</NAFunc>
</ParticleSource>