phaseShiftVecUpdaterWorks 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>