Work in Progress
This document is still under development and may change frequently.
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 \(j\) of the device, the S-parameter \(S_{ji}\) 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}}_i\):
where the integral is taken over the plane surface \(\Gamma_j\) of the port \(j\). The index \(k\) in the Kronecker symbol \(\delta_{ik}\) runs over the indices of all modes injected from the port \(j\). Thus, the Kronecker symbol \(\delta_{ik}\) subtracts the radiation arriving through the port \(j\), which allows the corresponding S-parameter to be interpreted as a reflection coefficient in cases where 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. However, it may be interesting to know what the phase of a given S-parameter will be 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
where \(\beta_i\) is the propagation constant of the mode \(i\) and \(d=l_1-l_0\) is the shift distance with \(l_0\) and \(l_1\) being the original distance and the distance of interest.
To generate an S-parameters report, in addition to the report name, the user must specify the boundary condition corresponding to a given port \(j\), as well as the number of modes to consider at this port (this number will determine the range of the \(i\) 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,
)
from mufem.electromagnetics.timeharmonicmaxwell import SParametersReport
help(SParametersReport)
Help on class SParametersReport in module mufem.electromagnetics.timeharmonicmaxwell:
class SParametersReport(mufem.ReportTrait)
| Method resolution order:
| SParametersReport
| mufem.ReportTrait
| pybind11_builtins.pybind11_object
| builtins.object
|
| Methods defined here:
|
| __init__(...)
| __init__(*args, **kwargs)
| Overloaded function.
|
| 1. __init__(self: mufem.electromagnetics.timeharmonicmaxwell.SParametersReport, name: str, condition: mufem.electromagnetics.timeharmonicmaxwell.InputPortCondition, nmodes: int, shift_distance: float = 0.0) -> None
|
| Constructor with name, condition, number of modes and shift distance
|
| 2. __init__(self: mufem.electromagnetics.timeharmonicmaxwell.SParametersReport, name: str, condition: mufem.electromagnetics.timeharmonicmaxwell.OutputPortCondition, nmodes: int, shift_distance: float = 0.0) -> None
|
| Constructor with name, condition, and number of modes
|
| evaluate(...)
| evaluate(self: mufem.electromagnetics.timeharmonicmaxwell.SParametersReport) -> Value
|
| Evaluate the report
|
| get_name(...)
| get_name(self: mufem.electromagnetics.timeharmonicmaxwell.SParametersReport) -> str
|
| Get the name of the report
|
| ----------------------------------------------------------------------
| Static methods inherited from pybind11_builtins.pybind11_object:
|
| __new__(*args, **kwargs) class method of pybind11_builtins.pybind11_object
| Create and return a new object. See help(type) for accurate signature.