Multifield-divUpdater
Works with VSimBase, VSimEM, VSimPD, VSimPA, and VSimMD licenses.
MultiField updater that takes the divergence of the of a field, and writes the result into another field.
The divUpdater kind takes the lowerBounds
and
upperBounds
parameters of FieldUpdater, as well as
the following parameters:
readFields (required string vector)
A vector containing a single element, the name of a vector field of which to take the divergence.
writeFields (required string vector)
A vector containing a single element, the name of a scalar field to update.
differencing (optional string, default = backward)
One of forward
or backward
, specifying the
direction in which to take the finite difference. The default,
backward
, is generally used for taking the divergence of
an edge field to update a node field; the forward
value is
used for the divergence of a face field to update a cell-centered
field.
skipFirst (optional integer, default = 0 (false))
Set this flag to 1
(true) to skip the first component of
the vector field, i.e. to use components 1–3 in the divergence
rather than 0–2. This should be used when taking the divergence
of \({\bf J}\) in a SumRhoJ charge-current field. A
SumRhoJ field has four components, the first of which
is \(\rho\); therefore the first component of this field must
be skipped to get to the \({\bf J}\) components.
factor (optional float, default = 1)
A factor that multiplies the end result after taking the divergence.
gridBoundary (optional string)
If provided, only components on the interior of the specified
GridBoundary will be updated. The method to define the interior
is given in the interiorness
parameters. If this
parameter is provided, then the field specified in
writeFields
must have offset = none
or
offset = center
.
interiorness (optional string, default = cellcenter)
If the gridBoundary
parameter is specified, this is the
method the used to determine whether a component is interior to
the boundary. The behavior depends on the offset
specified in the updated Field. One of:
cellcenter
:If offset = none
, then a cell is considered interior if
its node is adjacent to at least one cell with center inside
the boundary.
If offset = center
, then a cell is considered interior
if its center is inside the boundary.
deymittra
:If offset = none
, then a cell is considered interior if
all nodes adjacent to (i.e. displaced by a single edge from)
its node are inside the boundary.
This interiorness
option cannot be specified with
offset = center
.
<FieldUpdater divergence>
kind = divUpdater
lowerBounds = [ 0 0 0]
upperBounds = [NX NY NZ]
readFields = [ElecMultiField]
writeFields = [divE]
skipFirst = false
</FieldUpdater>