- 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
STFuncexpressions, 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 jthreadFieldwill use the component specified in the jth element of this vector.
- writeComponents (required integer vector)
For each
writeField, a component; references to the jthwriteFieldwill 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
userFuncexpression that multiplies thewriteComponent, \(f_i(t)\).
- fieldCoeffMult (expression, optional)
A
userFuncexpression that multiplies thereadComponent, \(f_f(t)\).
- scalarCoeffMult (expression, optional)
A
userFuncexpression 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.