epetraUpdater
Works 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:
cg
gmres
cgs
tfqmr
bicgstab
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:
none
Jacobi
row_sum
sym_diag
sym_row_sum
Please refer to the Trilinos documentation for further details on these scalers.
precond (optional string, default = dom_decomp_ilu)
One of:
ml
dom_decomp_ilu
dom_decomp_ilut
neumann
ls
jacobi
Please refer to the Trilinos documentation for further details on these preconditioners.
output (optional string, default = none)
Desired level of output messages; one of:
all
none
warnings
last
brieflast
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:
interior
cutcell
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>