userFuncScalarUpdater
Works with VSimBase, VSimEM, VSimPD, VSimPA, and VSimMD licenses.
Sets scalar values to the result of a user-given function.
The Updater of kind = userFuncScalarUpdater
is a very
flexible updater on scalars based on the result of a user-given
<Expression> (see expression). The expression takes as
arguments scalars values, as well as time and time step. This
updater is basically the scalar version of the field updater
userFuncUpdater. See it for more details about
possible applications.
The userFuncScalarUpdater takes the following parameters:
readScalars (optional string vector, default = [])
The names of the scalars to read. A read scalar name can be used as
a variable in the definition of updateFunction
.
writeScalars (required string vector)
The names of the scalars to write.
updateFunction (required parameter block)
A parameter block of type Expression and name
updateFunction
is required to define the function used
to update the scalars. This block takes the same
parameters as a expression UserFunc,
except for input
blocks and the inputOrder
parameter. The input variables for the expression
are
defined by the above parameters, so they are not to be specified
in the updateFunction
block. In addition, the
expression can take the following input valiables:
t: The time to which the updater been told to update its writeFields; c.f. toDtFrac in a MultiField UpdateStep).
dt: The most recent time step (\(\Delta t\)).
n: The current simulation step (an integer).
(These names are reserved—they cannot be used as scalar names.)
The Expression must return a vector with the same length as the number of writeScalars—each write scalar value will be set to the corresponding component of the return vector.
Here is a userFuncUpdater to set two scalars A4 and A5
<Updater userfuncUp>
kind = userFuncScalarUpdater
readScalars = [A1 A2 A3]
writeScalars = [A4 A5]
<Expression updateFunction>
expression = vector(A1 + 3.0*A2 + A3/5.0 + t + n/10 + 2.0*dt, n)
</Expression>
</Updater>