Source code for piel.models.frequency.photonic.directional_coupler_length

"""
Translated from https://github.com/flaport/sax or https://github.com/flaport/photontorch/tree/master
"""
import jax.numpy as jnp
import sax

__all__ = ["directional_coupler_with_length"]


[docs]def directional_coupler_with_length( length=1e-5, coupling=0.5, loss=0, neff=2.34, wl0=1.55e-6, ng=3.40, phase=0 ): kappa = coupling**0.5 tau = (1 - coupling) ** 0.5 loss = 10 ** (-loss * length / 20) # factor 20 bc amplitudes, not intensities. cos_phase = jnp.cos(phase) sin_phase = jnp.sin(phase) sdict = sax.reciprocal( { ("port0", "port1"): tau * loss * cos_phase, ("port0", "port2"): -kappa * loss * sin_phase, ("port1", "port3"): -kappa * loss * sin_phase, ("port2", "port3"): tau * loss * cos_phase, } ) return sdict