DirectionalCouplerCircuitModel

class photonforge.DirectionalCouplerCircuitModel(*, coupling_region_model=_coupler_model, arms_model=_arms_model, circuit_model=_circuit_model)[source]

Model for directional couplers based on circuit decomposition.

The coupler is subdivided into 5 parts: the 4 arms and the coupling region. Each is simulated separately, and the final S parameters are computed by a CircuitModel.

The component geometry is expected to be composed of at least 2 paths connecting 2 ports each. The paths must start far apart, come close together in the coupling region, and separate again. The distance between paths is used to determine the extents of the arms and coupling region.

Parameters:
  • coupling_region_model (Model) – Model used to compute the S parameters in the coupling region.

  • arms_model (Model | dict[str, Model]) – Model used for the arms. A dictionary mapping port names to models can be used to set a specific models for each arm.

  • circuit_model (Model) – Model used to merge all component parts.

Methods

estimate_cost(*args, **kwargs)

Estimate the cost for S matrix computation.

get_circuit(component[, classification])

Build the circuit equivalent for a component.

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_function

Function used to update the model.

parametric_kwargs

Keyword arguments used to update the model.

properties

Object properties.

random_variables

Random variables associated to the model's parameters.

time_stepper

Time stepper associated with this model.

get_circuit(component, classification='optical')[source]

Build the circuit equivalent for a component.

Parameters:
  • component (Component) – Component to subdivide into arms and coupling region.

  • classification (Literal['optical', 'electrical']) – Frequency classification to use.

Returns:

Subdivided component.

Return type:

Component

start(component, frequencies, **kwargs)[source]

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 (Any) – Keyword arguments passed to sub-models.

Returns:

Result object with attributes status and s_matrix.