phaseShiftVecUpdater
Works with VSimBase, VSimEM, VSimPD, VSimPA, and VSimMD licenses.
A phaseShiftVecUpdater
is a MultiField updater that
treats the two specified fields as the real and imaginary
components of a single complex field, and applies a phase shift.
Thus, if \(\mathbf{F}\) and \(\mathbf{G}\) are the fields
and \(\phi\) is the phase shift, the operation is
\[\begin{split}\begin{bmatrix}\mathbf{F} \\ \mathbf{G} \end{bmatrix} \mapsto \begin{bmatrix} \mathbf{F}\cos\phi - \mathbf{G}\sin\phi \\ \mathbf{F}\sin\phi + \mathbf{G}\cos\phi \end{bmatrix}.\end{split}\]Therefore, if \(\mathbf{E} = \mathbf{F} + i\mathbf{G}\), then the operation is \(\mathbf{E}\mapsto e^{i\phi}\mathbf{E}\).
This updater is useful for applying a phase shift across a periodic boundary to enforce a specific Bloch wavevector in a system with a periodic geometry.
The phaseShiftVecUpdater
takes the lowerBounds
and upperBounds
parameters of FieldUpdater, as well
as the local region modification parameters. In addition,
phaseShiftVecUpdater
takes the following parameters:
minDim (optional integer, default = 1)
If the dimension of the simulation is less than minDim
,
this updater will not be applied.
writeFields (required string vector)
The two fields to update. The first is the real part of the complex field (corresponding to \(\mathbf{F}\) above) and the second is the imaginary part (\(\mathbf{G}\)).
phase (required float)
The phase to use in the phase shift transformation, corresponding to \(\phi\) in the description above.
<FieldUpdater leftPhaseShift_E>
kind = phaseShiftVecUpdater
lowerBounds = [-1 0 0]
upperBounds = [ 0 NY NZ]
cellsToUpdateBelowDomain = [1 1 1]
cellsToUpdateAboveDomain = [1 1 1]
writeFields = [elecField elecFieldI]
phase = -X_PHASE
</FieldUpdater>