Additional Attributes for Particle Simulations
In some types of particle simulations, a user may want to add one or two additional Grid block attributes, both of which affect the number of guard cells.
maxIntDepHalfWidth
In particle simulations in which you use higher-order
particle depositors or interpolators, you should invoke the
maxIntDepHalfWidth
parameter with a value no less than
(int)(particleOrder/2)+1
. This is because higher order
particle depositors will spread a particle’s charge over more
than just the nearest neighbor grid nodes.
maxCellXings/maxcellxings
It is not recommended to allow particles to move more than a cell in a single time step. By skipping over more than a single cell, particles will not be accelerated in a completely self-consistent way (since they will experience slightly non-local fields), which will introduce inaccuracies in the simulation.
However, if there are a few fast-moving particles at the top end of a speed distribution which are unimportant to the overall physics of the simulation, it would be inconvenient to have to set a time step short enough to keep these fast particles from crossing more than a cell per time step.
The maxCellXings
attribute in the grid block combined with the
maxcellxings
(note the difference in case) attribute in the
species block can be used in such a situation. Both of these attributes
should be set to the same value. These two attributes must be set
appropriately if particles are able to travel more than a cell in a time
step.
The maxCellXings
attribute in the grid block will (along with the
maxIntDepHalfWidth
attribute, see Guard Cell Calculation and Setting Overlap in Fields below) sets
the number of “guard cells” around the simulation domain which absorb particles
leaving the simulation. By default, there is one guard cell surrounding
the simulation domain. If particles can travel more than a cell per time
step, they can skip over this absorber and cause a segmentation fault
when they ask for the field values from outside the simulation domain.
For example, a setting of maxCellXings = 3
will set a layer of
three guard cells around the simulation grid.
The maxcellxings
attribute in the species block will impose a speed
limit on each component of the velocity, independently. So, if
maxcellxings = 3
in a simulation, then the speed limit for the
x-component of velocity will be \(3*DX/DT\), the speed limit for the
y-component will be \(3*DY/DT\), and the speed limit in z will be
\(3*DZ/DT\). Any particles with a velocity component larger than the
limits will have the speed reduced to the speed limit for each velocity
component in violation of it’s respective speed limit. This will likely
result in the modification of both the magnitude and direction of the
velocity of particles in an unphysical way. For simulations in which a
significant number of particles have their speeds limited, you should
lower the time step for the simulation.
To see the effect of the speed limit, set the verbosity level to “NOTICE.” This will print out the numbers of particles with limited speeds in the run log. Additionally, the phase space plot can be checked. If there are a significant number of particles piled up along a vertical or horizontal line in the plot, reduce the time step.
Guard Cell Calculation and Setting Overlap in Fields
The number of guard cells is determined based on the
preceding parameters. Each field in the multiField
block should
include a two-component vector attribute, overlap
, which is set
according to the following.
For a non-dep field:
overlap[0]=maxIntDepHalfWidth + (maxCellXings - 1)
overlap[1]=maxIntDepHalfWidth + (maxCellXings - 1)
This defaults to overlap = [1 1]
For a dep field:
overlap[0]=maxIntDepHalfWidth + (maxCellXings - 1)
overlap[1]=maxIntDepHalfWidth + (maxCellXings - 1) + 1
This defaults to overlap = [1 2]
Please see Field for more details on manually overriding the number of guard cells for an individual field.