DirectionalCouplerModel

class photonforge.DirectionalCouplerModel(t=2**-0.5, c=-1j * 2**-0.5, i=0, r=0, ports=None)

Analytic model for a 4-port directional coupler

\[\begin{split}S = \begin{bmatrix} r & i & t & c \\ i & r & c & t \\ t & c & r & i \\ c & t & i & r \\ \end{bmatrix}\end{split}\]
Parameters:
  • t (complex | Buffer | _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | bool | int | float | str | bytes | _NestedSequence[bool | int | float | complex | str | bytes]) – Transmission coefficient. For multimode ports, a sequence of coefficients must be provided.

  • c (complex | Buffer | _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | bool | int | float | str | bytes | _NestedSequence[bool | int | float | complex | str | bytes]) – Coupling coefficient. For multimode ports, a sequence of coefficients must be provided.

  • i (complex | Buffer | _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | bool | int | float | str | bytes | _NestedSequence[bool | int | float | complex | str | bytes]) – Isolation coefficient. For multimode ports, a sequence of coefficients must be provided.

  • r (complex | Buffer | _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | bool | int | float | str | bytes | _NestedSequence[bool | int | float | complex | str | bytes]) – Reflection coefficient. For multimode ports, a sequence of coefficients must be provided.

  • ports (Sequence[str] | None) – List of port names. If not set, the sorted list of port names from the component is used.

Notes

For multimode ports, mixed-mode coefficients are zero (not included in the result). Dispersion can be included in the model by setting the coefficients to a 2D array with shape (M, N), in which M is the number of modes, and N the length of the frequency sequence used in the S matrix computation.

Methods

from_bytes(byte_repr)

De-serialize this model.

s_matrix(component, frequencies[, ...])

Compute the S matrix for a component using this model.

start(component, frequencies, **kwargs)

Start computing the S matrix response from a component.

update(*args, **kwargs)

Update this model.

Attributes

as_bytes

Serialize this model.

parametric_function

Function used to update a parametric component.

parametric_kwargs

Keyword arguments used to update a parametric component.

random_variables

List of monte_carlo.RandomVariable associated to this component's parameters.

property as_bytes: bytes

Serialize this model.

classmethod from_bytes(byte_repr)

De-serialize this model.

Parameters:

byte_repr (bytes)

Return type:

DirectionalCouplerModel

start(component, frequencies, **kwargs)

Start computing the S matrix response from a component.

Parameters:
  • component (Component) – Component from which to compute the S matrix.

  • frequencies (Sequence[float]) – Sequence of frequencies at which to perform the computation.

  • **kwargs – Unused.

Returns:

Model result with attributes status and s_matrix.

Return type:

ModelResult