corner_analysis_all_combinations

circuit_analyzer.all.corner_analysis_all_combinations(circuit_model, wavelengths, parallel=False)

Get the smatrix for all possible corner combinations.

To find which corners exist, this method looks through all the circuit models and collects all potential corners.

The resulting smatrices are stored in a dictionary, where the key refers to a combination of corners. For instance, with 3 corners ‘s’, ‘t’, and ‘w’. This will result in 3 × 3 × 3 = 27 unique simulations.

Parameters:
circuit_model: CircuitModel

IPKISS CircuitModel used in the simulation.

wavelengths: array-like

An array of wavelengths, for instance: np.linspace(1.54, 1.56, 1001).

parallel: bool, optional

Parallelize the calculations to potentially reduce the simulation time.

Returns:
dict[tuple, SMatrix1DSweep]

A dictionary with smatrices for each of the corner combinations.

See also

corner_analysis

Examples

>>> import circuit_analyzer.all as ca
>>> cell = MZI()
>>> cm = cell.CircuitModel()
>>>
>>> wavelengths = np.linspace(1.5, 1.6, 501)
>>> with ca.setup('/path/to/configuration'):
>>>     results = ca.corner_analysis_all_combinations(
>>>         circuit_model=cm,
>>>         wavelengths=wavelengths
>>> )

If the circuit uses three corner parameters — for example: ‘s’, ‘t’, and ‘w’ — and each of them has three defined values: ‘min’, ‘nominal’, and ‘max’, then a total of 3 × 3 × 3 = 27 combinations will be simulated. If you print the results, you’ll see a dictionary where: Each key is a tuple of (parameter_name, corner) pairs indicating the specific corner combination. Each value is an instance of SMatrix1DSweep, which contains the simulation results for that combination.

{
    # (27 in total)
    (
      ('s', 'min'),
      ('t', 'min')
      ('w', 'min'),
    ): <ipkiss3.simulation.circuit.results.SMatrix1DSweep>,
    ...
    (
      ('s', 'min'),
      ('t', 'nominal'),
      ('w', 'max'),
    ): <ipkiss3.simulation.circuit.results.SMatrix1DSweep>,
    ...
    (
      ('s', 'max'),
      ('t', 'max'),
      ('w', 'max'),
    ): <ipkiss3.simulation.circuit.results.SMatrix1DSweep>,

}