Skip to content

S-parameters Report

This report calculates scattering parameters, or S-parameters, which describe the input-output relationships between various ports of a device.

Mathematically, for each port \(n\) of the device, the S-parameter \(S_{nm}\) is calculated as the overlap integral between the electric field amplitude \(\tilde{\mathbf{E}}\), obtained from simulation, and a specified waveguide mode \(\tilde{\mathbf{e}}_m\):

\[ S_{nm} = \frac{ \int_{\Gamma_n} \tilde{\mathbf{E}} \cdot \tilde{\mathbf{e}}_m\, d\Gamma }{ \int_{\Gamma_n} \tilde{\mathbf{e}}_m \cdot \tilde{\mathbf{e}}_m\, d\Gamma } - \delta_{mk}, \]

where the integral is taken over the plane surface \(\Gamma_n\) of the port \(n\). The index \(k\) in the Kronecker symbol \(\delta_{mk}\) runs over the indices of all modes injected from the port \(n\). So the Kronecker symbol \(\delta_{mk}\) subtracts the radiation that arrives through the port \(n\). You can then read the S-parameter as a reflection coefficient when the port of interest is also an input port.

In real simulations, the length of the waveguide with an input or output port is always fixed. But you may want to know the phase of an S-parameter at a different distance inside the waveguide. Since we assume that the field inside the waveguide propagates as a steady-state mode, its phase at different distances is known. We can use this information to calculate the S-parameter at any distance other than the one at which this parameter was originally calculated. The corresponding formula is

\[ S_{nm}(l) = S_{nm}(l_0)\, e^{-2j \beta_m d}, \]

where \(\beta_m\) is the propagation constant of the mode \(m\) and \(d=l-l_0\) is the shift distance with \(l_0\) and \(l\) being the original distance and the distance of interest.

To generate an S-parameters report, give the report name, the boundary condition for a given port \(n\), and the number of modes to consider at this port (this number determines the range of the \(m\) index):

my_report = SParametersReport(
   name = "My S-parameters Report",
   condition = my_port_condition,
   nmodes = 3,
)

As an optional parameter one can also specify the shift distance \(d\):

my_report = SParametersReport(
   name = "My S-parameters Report",
   condition = my_port_condition,
   nmodes = 3,
   shift_distance = 1e-2,
)

Usage Examples