Welcome to SiPANN’s documentation!¶
-
class
SiPANN.dc.
AngledRR
(width, thickness, radius, gap, theta, sw_angle=90)¶ -
clean_args
(wavelength)¶ Makes sure all attributes are the same size
-
gds
(self, extra=0, units='nm')¶ Writes the geometry to the gds file
Parameters: - (str) (units) –
- (int) (sbend_v) – (input with units same as units input)
- (str) –
- (bool) (view) –
- (int) – Sbends insert after extra. Only available in couplers with all horizontal ports (input with units same as units input)
- (int) –
-
predict
(ports, wavelength)¶ Predicts the output when light is put in the bottom left port (see diagram above)
Parameters: - (2-tuple) (ports) –
- wavelength (float or np.ndarray) – wavelength(s) to predict at
Returns: k/t (complex np.ndarray)
Return type: returns the value of the light coming through
-
update
(**kwargs)¶ Takes in any parameter defined by __init__ and changes it.
-
-
class
SiPANN.dc.
DC
(width, thickness, sw_angle=90)¶ Abstract Class that all directional couplers inherit from. Each DC will inherit from it and have initial arguments (in this order):
width, thickness, sw_angle=90
Also, each will have additional arguments as follows (in this order):
GapFuncSymmetric: gap (func), dgap (func), zmin, zmax RR: radius, gap Racetrack Resonator: radius, gap, length Straight: gap, length Standard: gap, length, H, V DoubleRR: radius, gap CurvedRR: radius, gap, theta
- Base Class for DC. All other DC classes should be based on this one, including same functions (so
- documentation should be the same). Ports are numbered as:
- 2— /—4
1—/ —3
-
clean_args
(wavelength)¶ Makes sure all attributes are the same size
-
gds
(filename=None, extra=0, units='microns', view=False, sbend_h=0, sbend_v=0)¶ Writes the geometry to the gds file
Parameters: - (str) (units) –
- (int) (sbend_v) – (input with units same as units input)
- (str) –
- (bool) (view) –
- (int) – Sbends insert after extra. Only available in couplers with all horizontal ports (input with units same as units input)
- (int) –
-
predict
(ports, wavelength)¶ Predicts the output when light is put in the bottom left port (see diagram above)
Parameters: - (2-tuple) (ports) –
- wavelength (float or np.ndarray) – wavelength(s) to predict at
Returns: k/t (complex np.ndarray)
Return type: returns the value of the light coming through
-
sparams
(wavelength)¶ Returns sparams :param wavelength: wavelengths to get sparams at :type wavelength: float or np.ndarray
Returns: - freq (np.ndarray) (frequency for s_matrix in Hz, size n (number of wavelength points))
- s_matrix (np.ndarray) (size (4,4,n) complex matrix of scattering parameters)
-
update
(**kwargs)¶ Takes in any parameter defined by __init__ and changes it.
-
class
SiPANN.dc.
DoubleRR
(width, thickness, radius, gap, sw_angle=90)¶ -
clean_args
(wavelength)¶ Makes sure all attributes are the same size
-
gds
(self, extra=0, units='nm')¶ Writes the geometry to the gds file
Parameters: - (str) (units) –
- (int) (sbend_v) – (input with units same as units input)
- (str) –
- (bool) (view) –
- (int) – Sbends insert after extra. Only available in couplers with all horizontal ports (input with units same as units input)
- (int) –
-
predict
(ports, wavelength)¶ Predicts the output when light is put in the bottom left port (see diagram above)
Parameters: - (2-tuple) (ports) –
- wavelength (float or np.ndarray) – wavelength(s) to predict at
Returns: k/t (complex np.ndarray)
Return type: returns the value of the light coming through
-
update
(**kwargs)¶ Takes in any parameter defined by __init__ and changes it.
-
-
class
SiPANN.dc.
GapFuncAntiSymmetric
(width, thickness, gap, zmin, zmax, arc1, arc2, arc3, arc4, sw_angle=90)¶ -
clean_args
(wavelength)¶ Makes sure all attributes are the same size
-
gds
(filename=None, extra=0, units='microns', view=False, sbend_h=0, sbend_v=0)¶ Writes the geometry to the gds file
Parameters: - (str) (units) –
- (int) (sbend_v) – (input with units same as units input)
- (str) –
- (bool) (view) –
- (int) – Sbends insert after extra. Only available in couplers with all horizontal ports (input with units same as units input)
- (int) –
-
predict
(ports, wavelength, extra_arc=0, part='both')¶ Has aditional ‘part’ parameter in case you only want magnitude (mag) or phase (ph)
-
update
(**kwargs)¶ Takes in any parameter defined by __init__ and changes it.
-
-
class
SiPANN.dc.
GapFuncSymmetric
(width, thickness, gap, dgap, zmin, zmax, sw_angle=90)¶ -
clean_args
(wavelength)¶ Makes sure all attributes are the same size
-
gds
(filename=None, extra=0, units='microns', view=False, sbend_h=0, sbend_v=0)¶ Writes the geometry to the gds file
Parameters: - (str) (units) –
- (int) (sbend_v) – (input with units same as units input)
- (str) –
- (bool) (view) –
- (int) – Sbends insert after extra. Only available in couplers with all horizontal ports (input with units same as units input)
- (int) –
-
predict
(ports, wavelength, extra_arc=0, part='both')¶ Has aditional ‘part’ parameter in case you only want magnitude (mag) or phase (ph)
-
update
(**kwargs)¶ Takes in any parameter defined by __init__ and changes it.
-
-
class
SiPANN.dc.
RR
(width, thickness, radius, gap, sw_angle=90)¶ -
clean_args
(wavelength)¶ Makes sure all attributes are the same size
-
gds
(filename=None, view=False, extra=0, units='nms')¶ Writes the geometry to the gds file
Parameters: - (str) (units) –
- (int) (sbend_v) – (input with units same as units input)
- (str) –
- (bool) (view) –
- (int) – Sbends insert after extra. Only available in couplers with all horizontal ports (input with units same as units input)
- (int) –
-
predict
(ports, wavelength)¶ Predicts the output when light is put in the bottom left port (see diagram above)
Parameters: - (2-tuple) (ports) –
- wavelength (float or np.ndarray) – wavelength(s) to predict at
Returns: k/t (complex np.ndarray)
Return type: returns the value of the light coming through
-
update
(**kwargs)¶ Takes in any parameter defined by __init__ and changes it.
-
-
class
SiPANN.dc.
Racetrack
(width, thickness, radius, gap, length, sw_angle=90)¶ -
clean_args
(wavelength)¶ Makes sure all attributes are the same size
-
gds
(filename=None, view=False, extra=0, units='nms')¶ Writes the geometry to the gds file
Parameters: - (str) (units) –
- (int) (sbend_v) – (input with units same as units input)
- (str) –
- (bool) (view) –
- (int) – Sbends insert after extra. Only available in couplers with all horizontal ports (input with units same as units input)
- (int) –
-
predict
(ports, wavelength)¶ Predicts the output when light is put in the bottom left port (see diagram above)
Parameters: - (2-tuple) (ports) –
- wavelength (float or np.ndarray) – wavelength(s) to predict at
Returns: k/t (complex np.ndarray)
Return type: returns the value of the light coming through
-
update
(**kwargs)¶ Takes in any parameter defined by __init__ and changes it.
-
-
class
SiPANN.dc.
Standard
(width, thickness, gap, length, H, V, sw_angle=90)¶ -
clean_args
(wavelength)¶ Makes sure all attributes are the same size
-
gds
(filename=None, view=False, extra=0, units='nms', sbend_h=0, sbend_v=0)¶ Writes the geometry to the gds file
Parameters: - (str) (units) –
- (int) (sbend_v) – (input with units same as units input)
- (str) –
- (bool) (view) –
- (int) – Sbends insert after extra. Only available in couplers with all horizontal ports (input with units same as units input)
- (int) –
-
predict
(ports, wavelength)¶ Predicts the output when light is put in the bottom left port (see diagram above)
Parameters: - (2-tuple) (ports) –
- wavelength (float or np.ndarray) – wavelength(s) to predict at
Returns: k/t (complex np.ndarray)
Return type: returns the value of the light coming through
-
update
(**kwargs)¶ Takes in any parameter defined by __init__ and changes it.
-
-
class
SiPANN.dc.
Straight
(width, thickness, gap, length, sw_angle=90)¶ -
clean_args
(wavelength)¶ Makes sure all attributes are the same size
-
gds
(filename=None, view=False, extra=0, units='nms', sbend_h=0, sbend_v=0)¶ Writes the geometry to the gds file
Parameters: - (str) (units) –
- (int) (sbend_v) – (input with units same as units input)
- (str) –
- (bool) (view) –
- (int) – Sbends insert after extra. Only available in couplers with all horizontal ports (input with units same as units input)
- (int) –
-
predict
(ports, wavelength)¶ Predicts the output when light is put in the bottom left port (see diagram above)
Parameters: - (2-tuple) (ports) –
- wavelength (float or np.ndarray) – wavelength(s) to predict at
Returns: k/t (complex np.ndarray)
Return type: returns the value of the light coming through
-
update
(**kwargs)¶ Takes in any parameter defined by __init__ and changes it.
-
-
class
SiPANN.dc.
Waveguide
(width, thickness, length, sw_angle=90)¶ Lossless model for a straight waveguide. Ports are numbered as:
1 ============== 2
-
clean_args
(wavelength)¶ Makes sure all attributes are the same size
-
gds
(filename=None, extra=0, units='microns', view=False)¶ Writes the geometry to the gds file
Parameters: - (str) (units) –
- (int) (extra) – (input with units same as units input)
- (str) –
-
predict
(wavelength, ports=(1, 2))¶ Predicts the output when light is put in the bottom left port (see diagram above)
Parameters: - wavelength (float or np.ndarray) – wavelength(s) to predict at
- (2-tuple) (ports) –
Returns: k/t (complex np.ndarray)
Return type: returns the value of the light coming through
-
sparams
(wavelength)¶ Returns sparams :param wavelength: wavelengths to get sparams at :type wavelength: float or np.ndarray
Returns: - freq (np.ndarray) (frequency for s_matrix in Hz, size n (number of wavelength points))
- s_matrix (np.ndarray) (size (4,4,n) complex matrix of scattering parameters)
-
update
(**kwargs)¶ Takes in any parameter defined by __init__ and changes it.
-
-
SiPANN.dc.
clean_inputs
(inputs)¶ Makes all inputs as the same shape to allow passing arrays through
Used to make sure all inputs have the same length - ie that it’s trying to run a specific number of simulations, not a varying amount
Parameters: (tuple) (inputs) – Returns: inputs (tuple) Return type: returns all inputs as same size np.ndarrays
-
SiPANN.dc.
get_closed_ans
(ae, ao, ge, go, neff, wavelength, gap, B, xe, xo, offset, trig, z_dist)¶ Return coupling as found in Columbia paper
Uses general form of closed form solutions as found in M. Bahadori et al., “Design Space Exploration of Microring Resonators in Silicon Photonic Interconnects: Impact of the Ring Curvature,” in Journal of Lightwave Technology, vol. 36, no. 13, pp. 2767-2782, 1 July1, 2018..
Parameters: - ae (float or np.ndarray) – used in even mode estimation in neff + ae exp(ge * g)
- ao (float or np.ndarray) – used in odd mode estimation in neff + ao exp(go * g)
- ge (float or np.ndarray) – used in even mode estimation in neff + ae exp(ge * g)
- go (float or np.ndarray) – used in odd mode estimation in neff + ao exp(go * g)
- neff (float or np.ndarray) – effective index of waveguide
- wavelength (float or np.ndarray) – wavelength
- gap (float or np.ndarray) – gap distance
- (function) (B) –
- xe (float or np.ndarray) – as found in paper
- xo (float or np.ndarray) – as found in paper
- offset (float or np.ndarray) – 0 or pi/2 depending on through/cross coupling
- trig (float or np.ndarray) – sin or cos depending on through/cross coupling
- z_dist (float or np.ndarray) – distance light will travel
Returns: k/t (complex np.ndarray)
Return type: coupling coefficient found
-
SiPANN.dc.
get_coeffs
(wavelength, width, thickness, sw_angle)¶ Return coefficients and neff for a given waveguide profile as used in SCEE
Leverages Multivariate Linear Regression that maps wavelength, width, thickness and sidewall angle to effective index and coefficients used in estimate of even and odd effective indices with silicon core and silicon dioxide cladding.
Parameters: - wavelength (float or np.ndarray) – wavelength
- width (float or np.ndarray) – width
- thickness (float or np.ndarray) – thickness
- sw_angle (float or np.ndarray) – sw_angle
Returns: - ae (float or np.ndarray) – used in even mode estimation in neff + ae exp(ge * g)
- ao (float or np.ndarray) – used in odd mode estimation in neff + ao exp(go * g)
- ge (float or np.ndarray) – used in even mode estimation in neff + ae exp(ge * g)
- go (float or np.ndarray) – used in odd mode estimation in neff + ao exp(go * g)
- neff (float or np.ndarray) – effective index of waveguide
-
SiPANN.dc.
get_neff
(wavelength, width, thickness, sw_angle=90)¶ Return neff for a given waveguide profile
Leverages Multivariate Linear Regression that maps wavelength, width, thickness and sidewall angle to effective index with silicon core and silicon dioxide cladding
Parameters: - wavelength (float or np.ndarray) – wavelength
- width (float or np.ndarray) – width
- thickness (float or np.ndarray) – thickness
- sw_angle (float or np.ndarray) – sw_angle
Returns: neff – effective index of waveguide
Return type: float or np.ndarray