PowerSplitterModel¶
- class photonforge.PowerSplitterModel(t=2**-0.5, i=0, r0=0, r1=0, ports=None)[source]¶
Data model for a 3-port power splitter.
\[\begin{split}S = \begin{bmatrix} r_0 & t & t \\ t & r_1 & i \\ t & i & r_1 \\ \end{bmatrix}\end{split}\]- Parameters:
t (complex | Sequence[complex] | Sequence[Sequence[complex]]) – Transmission coefficient.
i (complex | Sequence[complex] | Sequence[Sequence[complex]]) – Leakage (isolation) coefficient.
r0 (complex | Sequence[complex] | Sequence[Sequence[complex]]) – Reflection coefficient for the first port.
r1 (complex | Sequence[complex] | Sequence[Sequence[complex]]) – Reflection coefficient for the remaining ports.
ports (Annotated[Sequence[str], maxItems=3, minItems=3] | None) – List of port names. If not set, the sorted list of port names from the component is used.
Notes
For multimode ports, a sequence of coefficients must be used, and mixed-mode coefficients are 0. 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
black_box_component([port_spec, technology, ...])Create a black-box component using this model for testing.
estimate_cost(*args, **kwargs)Estimate the cost for S matrix computation.
from_bytes(byte_repr)De-serialize this model.
s_matrix(component, frequencies[, ...])Compute the S matrix for a component using this model.
setup_time_stepper(component, time_step[, ...])Obtain a time stepper 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
parametric_functionFunction used to update a parametric component.
parametric_kwargsKeyword arguments used to update a parametric component.
propertiesObject properties.
random_variablesRandom variables associated to this modles's parameters.
time_stepperTime stepper associated with this model.
- black_box_component(port_spec=None, technology=None, name=None)[source]¶
Create a black-box component using this model for testing.
- Parameters:
port_spec (str | PortSpec | None) – Port specification used in the component. If
None, look for"port_spec"inconfig.default_kwargs.technology (Technology | None) – Component technology. If
None, the default technology is used.name (str | None) – Component name. If
Nonea default is used.
- Returns:
Component with ports and model.
- Return type:
- classmethod from_bytes(byte_repr)[source]¶
De-serialize this model.
- Parameters:
byte_repr (bytes)
- Return type: