- oneFieldOpCrossDev
oneFieldOpCrossDev
Works with XSimBase license.
MultiField updater for Cross Devices that performs cell-by-cell operations on two regularCrossDev field. Denote the read components by R, and the write components by W. Further let \(f_i(t)\), \(f_f(t)\), and \(f_s(t)\) be
STFunc
expressions, and \(C_i, C_f\), and \(C_s\) be constants. This updater computes the writeField as \(W = C_i f_i(t)\cdot W + C_f f_f(t) \cdot R + C_s f_s(t)\).
oneFieldOpCrossDev Parameters
The oneFieldOpCrossDev
updater takes the lowerBounds
,
upperBounds
, lowerCoords
, upperCoords
,
gridBndry
, writeFields
, and readFields
parameters of Field Slab updaters, as well as the
following parameters:
- readComponents (required integer vector)
For each
readField
, a component; references to the jthreadField
will use the component specified in the jth element of this vector.
- writeComponents (required integer vector)
For each
writeField
, a component; references to the jthwriteField
will use the component specified in the jth element of this vector.
- incrementCoeff (float, required)
The constant \(C_i\).
- fieldCoeff (float, required)
The constant \(C_f\).
- scalarCoeff (float, required)
The constant \(C_s\).
- incrementCoeffMult (expression, optional)
A
userFunc
expression that multiplies thewriteComponent
, \(f_i(t)\).
- fieldCoeffMult (expression, optional)
A
userFunc
expression that multiplies thereadComponent
, \(f_f(t)\).
- scalarCoeffMult (expression, optional)
A
userFunc
expression that does not multiply any field components, \(f_s(t)\).
Example oneFieldOpCrossDev block
<FieldUpdater excUpdater>
kind = oneFieldOpCrossDev
lowerBounds = [0 1 0]
upperBounds = [1 NY NZ]
writeComponents = [2]
readFields = [Exc]
writeFields = [E]
incrementCoeff = 0.0
scalarCoeff = 0.0
fieldCoeff = 1.0
<Expression fieldCoeffMult>
expression = exp(-(PULSESTART+LIGHTSPEED*t)^2/$(PULSELEN)**2$)
</Expression>
</FieldUpdater>
Notes
oneFieldOpCrossDev is only available with text-based setup.
History
oneFieldOpCrossDev was introduced in XSim 1.