epetraUpdaterWorks 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 epetraUpdater updater takes the lowerBounds and
upperBounds parameters of FieldUpdater, as well as
the following parameters:
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 readFields, a component; the jth component of this
vector is used for the jth readFields specified.
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 field in writeFields, a component; the jth component of this
vector is used for the jth writeFields specified.
problemType (optional string, default = multiply)One of either multiply or solve. The update is
either that one starts with \(x\) and gets \(b\)
(multiply) or one starts with \(b\) and gets \(x\)
(solve), with \(x\) and \(b\) as described above. If
multiply, the readFields should describe \(x\) and if solve,
the readFields should describe \(b\).
readFactors (optional float vector)Vector describing the factors by which to multiply the
readFields prior to any updating. The vector can be any
length; if the vector has fewer elements than the number of
readFields, or is not specified, the values of the
multiplicative factors default to 1.
writeFactors (optional float vector)Vector describing the factors by which to multiply the
writeFields prior to writing. The vector can be any
length; if the vector has fewer elements than the number of
writeFields, or is not specified, the values of the
multiplicative factors default to 1.
maxIters (optional integer, default = 100)maximum number of iterations to take for convergence to the desired residual.
solver (required string)One of:
cggmrescgstfqmrbicgstab
These are the iterative solvers (and one direct sovler) available in Aztec that can be used for solving a linear system of equations. Please refer to the Trilinos documentation for further details.
scaling (optional string, default = none)One of:
noneJacobirow_sumsym_diagsym_row_sum
Please refer to the Trilinos documentation for further details on these scalers.
precond (optional string, default = dom_decomp_ilu)One of:
mldom_decomp_iludom_decomp_ilutneumannlsjacobi
Please refer to the Trilinos documentation for further details on these preconditioners.
output (optional string, default = none)Desired level of output messages; one of:
allnonewarningslastbrieflast
desiredResid (optional float, default = 1.e-9)The desired residual.
diagFac (real, default = 1)This should be the value equivalent to the diagonal value on the matrix. diagFac is used to scale the equation.
mlThreshold (optional float, default = 0)Use only when pre-conditioner is ml: weight at which the
multi-level preconditioner considers two nodes to be
connected. Weight is important when the problem involves cells
with large aspect ratios.
boundaryAtBottomInComponentDir (optional integer vector, default = [])If true, the boundary is at the bottom in the component direction. E.g., do not put in a stencil for Vx along the IX=0 plane, as that will be filled in by boundary conditions.
boundaryAtBottomInNonComponentDir (optional integer vector, default = [])If true, the boundary is at the bottom in the non-component directions. E.g., do not put in a stencil for Vy and Vz along the IY=IZ=0 planes, as they will be filled in by boundary conditions.
boundaryAtTopInComponentDir (optional integer vector, default = [])If true, the boundary is at the top in the component direction. E.g., do not put in a stencil for Vx along the IX=0 plane, as that will be filled in by boundary conditions.
boundaryAtTopInNonComponentDir (optional integer vector, default = [])If true, the boundary is at the top in the non-component directions. E.g., do not put in a stencil for Vy and Vz along the IY=IZ=0 planes, as they will be filled in by boundary conditions.
MatrixFiller (required parameter block)To define the matrix \(A\), you must use a matrixFiller block. At least one matrixFiller block is required for the epetraUpdater. matrixFiller parameters include:
kind (required string) – one of:
interiorcutcell
StencilElement (required parameter block):<FieldUpdater eyUpdate>
kind = epetraUpdater
problemType = multiply
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]
boundaryAtBottomInComponentDir = [0]
boundaryAtBottomInNonComponentDir = [1]
boundaryAtTopInComponentDir = [1]
boundaryAtTopInNonComponentDir = [1]
<MatrixFiller eyupmat>
kind=interior
<StencilElement eyey>
value = 1.
minDim = 0
cellOffset = [0 0 0]
rowFieldIndex = 0
columnFieldIndex = 0
</StencilElement>
<StencilElement eybxup>
...
</StencilElement>
...
</MatrixFiller>
</FieldUpdater>