Source code for piel.models.frequency.defaults
from typing import Literal
from .photonic.straight_waveguide import (
waveguide,
lossless_straight,
active_waveguide,
ideal_lossless_active_waveguide,
)
from .photonic.mmi2x2 import mmi2x2_50_50
from .photonic.crossing_simple import crossing_simple
__all__ = [
"get_default_models",
]
# Default model dictionary library that can be overwritten for specific modelling applications.
__default_models_dictionary__ = {
"bend_euler": waveguide,
"crossing45": crossing_simple,
"mmi2x2": mmi2x2_50_50,
"straight": waveguide,
"straight_heater_metal_simple": active_waveguide,
"straight_heater_metal_undercut": active_waveguide,
}
__default_quantum_models_dictionary__ = {
"bend_euler": lossless_straight,
"crossing45": crossing_simple,
"mmi2x2": mmi2x2_50_50,
"straight": lossless_straight,
"straight_heater_metal_simple": active_waveguide,
"straight_heater_metal_undercut": active_waveguide,
}
__default_classical_optical_function_verification_dictionary = {
"bend_euler": lossless_straight,
"crossing45": crossing_simple,
"mmi2x2": mmi2x2_50_50,
"straight": lossless_straight,
"straight_heater_metal_simple": ideal_lossless_active_waveguide,
"straight_heater_metal_undercut": ideal_lossless_active_waveguide,
}
[docs]
def get_default_models(
custom_defaults: dict | None = None,
type: Literal["classical", "quantum", "optical_logic_verification"] = "classical",
) -> dict:
"""
Returns the default measurement dictionary.
Args:
custom_defaults (dict): Custom defaults dictionary.
type (Literal["default", "quantum"]): Type of default measurement dictionary to return.
Returns:
dict: Default measurement dictionary.
"""
if custom_defaults is not None:
return custom_defaults
else:
if type == "classical":
return __default_models_dictionary__
elif type == "quantum":
return __default_quantum_models_dictionary__ #
elif type == "optical_logic_verification":
return __default_classical_optical_function_verification_dictionary
else:
raise ValueError(f"Type {type} not recognised.")