Use this object to configure the Floquet ports of an infinite array's unit cell. Whenever unit cell boundaries are combined with open boundaries at Zmin or Zmax, the open boundary is realized by a Floquet mode waveguide port (this allows for instance to excite plane waves, which are the fundamental Floquet modes TE(0,0) and TM(0,0)). The FloquetPort object collects methods to manipulate the modes of all Floquet ports. The following information applies to the general purpose Frequency Domain solvers.
Reset
Resets all internal values to their default settings.
Port ( enum {"zmin", "zmax"} position )
This methods is called before any other method in order to specify the Floquet port to which subsequent calls refer. The argument is either "Zmin" or "Zmax".
AddMode ( enum type {"TE", "TM", "LCP", "RCP"}, int order_x, int order_yprime )
Adds a single Floquet mode to this port. The mode is specified by its type (TE for transversal electric field with respect to the port's plane, and TM for transversal magnetic field), and its signed integer order numbers along the unit cell lattice vectors. The order numbers need to be zero for LCP and RCP modes (also see SetUseCircularPolarization). Note that it is not necessary to specify all Floquet modes explicitly by calling this method unless a fully customized list of modes is required.
SetUseCircularPolarization ( bool flag )
If this flag is set to True, left and right circularly polarized waves (LCP, RCP) will be excited instead of the linearly polarized TE(0,0) and TM(0,0) modes.
SetDialogFrequency ( double value )
The sorting of the Floquet modes (e.g. by decreasing beta) depends on frequency as well as the scan angles theta and phi. As the modes should not change their order while a frequency sweep is performed, the frequency at which the modes are sorted needs to be fixed by calling this method. Pass an empty string to sort the modes at the uppermost frequency. Calling this method affects all Floquet ports.
SetDialogMediaFactor ( double value )
The preview calculation of alpha and beta can be adapted to a specific material by calling this method. Pass an empty string to perform the calculations in the current background material. For different materials, pass the square root of the relative permittivity times the square root of the relative permeability as the value. Calling this method affects the preview for all Floquet ports.
SetDialogTheta ( double value )
The sorting of the Floquet modes (e.g. by decreasing beta) depends on frequency as well as the scan angles theta and phi. As the modes should not change their order while a frequency sweep is performed, the theta at which the modes are sorted needs to be fixed by calling this method. Calling this method affects all Floquet ports.
SetDialogPhi ( double value )
The sorting of the Floquet modes (e.g. by decreasing beta) depends on frequency as well as the scan angles theta and phi. As the modes should not change their order while a frequency sweep is performed, the phi at which the modes are sorted needs to be fixed by calling this method. Calling this method affects all Floquet ports.
SetDialogMaxOrderX ( int value )
The number of Floquet modes which need to be considered depends on the size of the Floquet port in terms of wavelength. When the modes are not explicitly defined by calling AddMode, their maximum order needs to be specified. SetDialogMaxOrderX defines the range of the Floquet modes' first order number by means of its magnitude. For example, if "2" is passed as an argument, the Floquet modes (-2,*), (-1,*), (0,*), (1,*), and (2,*) will be considered. When an empty string is passed to this method, the maximum order is determined automatically from the size of the Floquet port in terms of the wavelength at the sorting frequency. Calling this method affects all Floquet ports.
SetDialogMaxOrderYPrime ( int value )
The number of Floquet modes which need to be considered depends on the size of the Floquet port in terms of wavelength. When the modes are not explicitly defined by calling AddMode, their maximum order needs to be specified. SetDialogMaxOrderYPrime defines the range of the Floquet modes' second order number by means of its magnitude. For example, if "2" is passed as an argument, the Floquet modes (*,-2), (*,-1), (*,0), (*,1), and (*,2) will be considered. When an empty string is passed to this method, the maximum order is determined automatically from the size of the Floquet port in terms of the wavelength at the sorting frequency. Calling this method affects all Floquet ports.
SetCustomizedListFlag ( bool flag )
The flag should be set to True whenever modes are explicitly defined by calling AddMode. Otherwise, the Floquet modes are assigned automatically based on the arguments passed to SetDialogMaxOrderX and SetDialogMaxOrderYPrime.
SetNumberOfModesConsidered ( int value )
As the number of Floquet modes specified for the given Floquet port might be much larger than the number of modes which are actually required for the given structure, this method defines how many modes to consider during the simulation. Note that the number of modes to consider is larger than or equal to the number of modes to excite.
SetSortCode ( enum {"+beta/pw", "+beta", "-beta", "+alpha", "-alpha", "+te", "-te", "+tm", "-tm", "+orderx", "-orderx", "+ordery", "-ordery"} code )
Specifies how to sort the list of Floquet modes (unless it has been customized). The modes can be sorted by their type, their propagation constants alpha and beta, or by their order numbers. A plus in front of the sort code refers to the default order (for instance sort by decreasing beta), while a minus indicates a reversal of the sorting (for instance sort by increasing beta). Calling this method affects all Floquet ports. The default sort code is "+beta/pw", which means sorting by decreasing beta, but with the fundamental Floquet modes, which are the regular plane waves (pw), at the first place, regardless of their beta.
SetDistanceToReferencePlane ( double value )
Defines the phase deembedding distance for the Floquet port. The Frequency Domain solver with tetrahedral mesh will then calculate the S-parameters as if the Floquet port were placed at the given distance to the reference plane. The value is negative if the new reference plane is inside the structure.
GetNumberOfModes int
Returns the number of modes specified for the currently selected port. This number is less than or equal to the number of modes to consider during the calculation, which is returned by GetNumberOfModesConsidered.
FirstMode bool
Initializes an iteration over all modes of the currently selected Floquet port. The method returns False if there are no modes associated with the port.
GetMode ( enum type, int order_x, int order_yprime ) bool
Use this method in combination with FirstMode and NextMode to get the parameters of the currently selected port's modes: their types (TE or TM, as well as RCP or LCP for circular polarized fundamental modes), and their order numbers.
NextMode bool
The method moves the port mode iteration to the next mode of the currently selected Floquet port, or returns False if there are no more modes.
GetNumberOfModesConsidered int
Returns the number of modes considered for the currently selected port.
IsPortAtZmin bool
IsPortAtZmax bool
Returns if the selected port is located at zmin or zmax, respectively.
GetModeNameByNumber ( string_ref name, int number ) bool
Use this method to get a mode's name by specifying its number, which refers to the currently active mode order, as defined by the current sorting mode. While the order of the modes may change with frequency and scan angle, their names naturally remain constant.
GetModeNumberByName ( int_ref number, string name ) bool
Use this method to get a mode's number, which corresponds to the currently active mode order, by specifying the mode's name.
Port ("Zmin")
SetUseCircularPolarization (False)
SetDialogFrequency ("")
SetDialogMediaFactor ("")
SetDialogTheta (0)
SetDialogPhi (0)
SetDialogMaxOrderX ("")
SetDialogMaxOrderYPrime ("")
SetCustomizedListFlag (False)
SetNumberOfModesConsidered (18)
SetSortCode ("+beta/pw")
SetDistanceToReferencePlane (0)
' Specify the modes for the Floquet port at Zmax
With FloquetPort
.SetDialogFrequency (5)
.SetDialogTheta (60)
.SetDialogPhi (0)
.SetDialogMaxOrderX (1)
.SetDialogMaxOrderYPrime (1)
.SetSortCode ("+beta")
.SetCustomizedListFlag (False)
.Port ("Zmax")
.SetNumberOfModesConsidered (2)
End With
' Get the mode number of the plane waves TE(0,0) and TM(0,0)
Dim iTE As Integer
Dim iTM As Integer
With FloquetPort
.Port ("Zmax")
.GetModeNumberByName (iTE, "TE(0,0)")
.GetModeNumberByName (iTM, "TM(0,0)")
End With
' Specify the phase deembedding distance for the Floquet ports at Zmin and Zmax
With FloquetPort
.Port ("Zmin")
.SetDistanceToReferencePlane (-10)
.Port ("Zmax")
.SetDistanceToReferencePlane (-10)
End With