FieldUpdater
Field updaters are defined between the tags:
<FieldUpdater *nameOfThisUpdater*>
</FieldUpdater>
kind (required string)
Type of updater; one of the CPU updaters:
lowerBounds (integer vector, required)
Lower bounds of updater region.
upperBounds (integer vector, required)
Upper bounds of updater region.
There are a number of parameters that modify the global region to be
updated (as specified in lowerBounds
and
upperBounds
) based on the component of the field being
updated. These are available for the following updaters, which all
update a single vector field:
The global region modification parameters are:
expandToTopInComponentDir (optional integer, default = 0 (false))
When true: if the region upper bound in the direction of the component (mod 3) is the upper bound of the simulation, and that direction is not periodic, then the upper bound is increased by one so that the region includes the top of the simulation.
contractFromBottomInComponentDir (optional integer, default = 0 (false))
When true: if the region lower bound in the direction of the component (mod 3) is the lower bound of the simulation, and that direction is not periodic, then the lower bound is increased by one so that the region excludes the bottom of the simulation.
expandToTopInNonComponentDir (optional integer, default = 0 (false))
When true: if the region upper bound in a direction perpendicular to the component (mod 3) is the upper bound of the simulation, and that direction is not periodic, then the upper bound is increased by one so that the region includes the top of the simulation.
contractFromBottomInNonComponentDir (optional integer, default = 0 (false))
When true: if the region lower bound in a direction perpendicular to the component (mod 3) is the lower bound of the simulation, and that direction is not periodic, then the lower bound is increased by one so that the region excludes the bottom of the simulation.
expandAboveTopInComponentDir (optional integer, default = 0)
If the region upper bound in the direction of the component (mod 3) is the upper bound of the simulation or higher, and that direction is not periodic, then the upper bound is increased by this value.
expandBelowBottomInComponentDir (optional integer, default = 0)
When true: if the region lower bound in the direction of the component (mod 3) is the lower bound of the simulation or below, and that direction is not periodic, then the lower bound is decreased by this value.
expandAboveTopInNonComponentDir (optional integer, default = 0)
When true: if the region upper bound in a direction perpendicular to the component (mod 3) is the upper bound of the simulation or higher, and that direction is not periodic, then the upper bound is increased by this value.
expandBelowBottomInNonComponentDir (optional integer, default = 0)
When true: if the region lower bound perpendicular to the direction of the component (mod 3) is the lower bound of the simulation or below, and that direction is not periodic, then the lower bound is decreased by this value.
Note
If both expandToTopInComponentDir
and
expandAboveTopInComponentDir
are specified, and the
conditions for expansion described above are met, the upper bound
in the component direction is first increased by one, and then
increased again by the value of
expandAboveTopInComponentDir
. If both
contractFromBottomInComponentDir
and
expandBelowBottomInComponentDir
are specified, and the
conditions for contraction are met, the lower bound is first
increased by one, and then decreased by the value of
expandBelowBottomInComponentDir
. Similar behavior occurs
for the corresponding non-component direction parameters.
There are two parameters available to expand the local update region beyond the local domain, into the guard cells. This can in certain cases be useful in simulations with periodic boundaries, to allow updaters to overwrite the values imposed by the periodic boundary conditions. It can also be used to make parallel algorithms more efficient, by updating the local guard cells directly rather than getting values messages from other domains. These are available for the following updaters:
The local region modification parameters are:
cellsToUpdateBelowDomain (optional integer vector, default = [0 0 0])
The number of cells (in each direction, x, y, and z) the updater updates below the local domain.
cellsToUpdateAboveDomain (optional integer vector, default = [0 0 0])
The number of cells (in each direction, x, y, and z) the updater updates above the local domain.