linearApplyUpdaterWorks with VSimBase, VSimEM, VSimPD, VSimPA, and VSimMD licenses.
Multifield updater that works by defining a matrix relationship, \(Ax=b\), between two vectors, \(x\) and \(b\), and the matrix \(A\), e.g.,
The linearApplyUpdater takes the lowerBounds and
upperBounds parameters of FieldUpdater, as well as
the following parameters:
minDim (optional integer, default = 1)If the dimension of the simulation is less than minDim,
this updater will not be applied.
readFields (required string vector)A vector containing the names of fields to read. If multiple components of a field are read, then the field name must be repeated once for each component.
readComponents (required integer vector)For each readField, a component; references to the jth
readField will use the component specified in the jth element of
this vector.
writeFields (required string vector)A vector containing the names of fields to update. If multiple components of a field are written, then the field name must be repeated once for each component.
writeComponents (required integer vector)For each writeField, a component; references to the jth
writeField will use the component specified in the jth element of
this vector.
writeEquationToFile (optional integer, default = 0 (false))The matrix \(A\), left-hand side vector \(x\), and (after
solution) unknown vector \(b\), will be written out in
MatrixMarket format when set to true.
matrixfiller (required parameter block)To define the matrix A, you must use a MatrixFiller
block. At least one MatrixFiller block is required for the
linearApplyUpdater.
vectorwriter (required parameter block)To define the left-hand side vector x, you must use a
VectorWriter block. At least one VectorWriter block is required
for the linearApplyUpdater.
vectorreader (required parameter block)To access the unknown vector b, you must use a
VectorReader block. At least one VectorReader block is required
for the linearApplyUpdater.
<FieldUpdater eyUpdate>
kind = linearApplyUpdater
lowerBounds = [0 0 0]
upperBounds = [NX NY NZ]
readFields = [edgeElec faceMag faceMag]
readComponents = [1 2 0] # 0 = Ey, 1 = Bz, 2 = Bx
writeFields = [edgeElec]
writeComponents = [1]
<MatrixFiller eyupmat>
kind = interior
<StencilElement eyey>
value = 1.
minDim = 0
cellOffset = [0 0 0]
rowFieldIndex = 0
columnFieldIndex = 0
</StencilElement>
<StencilElement eybxup>
...
</StencilElement>
...
</MatrixFiller>
<VectorWriter eyuplhs>
kind = fieldVectorWriter
minDim = 0
readField = faceMag
readComponent = 2
lowerBounds = [0 0 0]
upperBounds = [NX NY NZ]
component = 1
</VectorWriter>
<VectorReader eyupunk>
kind = fieldVectorReader
minDim = 0
writeField = edgeElec
writeComponent = 1
lowerBounds = [0 0 0]
upperBounds = [NX NY NZ]
</VectorReader>
</FieldUpdater>