Welcome to Python Lumercial Costructor Script’s documentation!

To isntall the library please clone the git repo https://github.com/MartinMiroslavovMihaylov/Python_Lumerical.git to a empty folder. The you can install the Costructor lib with the setup.py file. Type in open Terminal:

pip install -e .

How to use the script

First you need to locate your Lumerical installation folder and find the lumpi.py file. For example under Windows you can find the file under “C:Program FilesLumericalv221apipythonlumapi.py”.

Once located yoy will need to add to Lumerical an Material File. The file will have an ending “Material_File_Example.mdf”. If you dont have an Material file you can skip this part.

Finaly go to your Python IDLE and import the Constructor lib that you just installed:

import os
import os.path
import sys
# Import Constructor
import Constructor as Constructor
# Import Help Menu
from Constructor import Help
#Import Loading Bar
from Constructor import loadingBar
# Import Logfile function extractor
from Constructor import Logfile

# Give the lumpi.py files paths
Path = "C:/Program Files/Lumerical/v221/api/python/lumapi.py"

# Start the Lumerical FDTD API
obj = Constructor.Constructor(file, "FDTD")



# If you have an Material Library you wanna import you can use
MaterialPath = "C:/.../Materials.mdf"
obj = Constructor.Constructor(file, "FDTD", MaterialPath )

How to use the Help Menu

If you need Help with the functions you can use the build in Help guide. Just type:

Help()

# After the object Constructor is called you can use the obj.Help() Menu
obj.Help()

How to define Materials and Parameters

The Materials are taken from the Lumerical build in or imported Materials database. The user can give Materials by them names as an python list of str. For Example:

Material = ["SiO2 (Glass) - Palik", 'LiNbO3_20deg_X cut', "SU-8"]

The parameters are given as dictionary to the Costructor. For example to create an 1x2_MMI you can use this code snip:

#Create empty dictionary
Parameters = {}

Parameters['Substrate Height'] = 1.05e-6
Parameters['MMI Width'] = 3.6e-6
Parameters['MMI Length'] = 18e-6
Parameters['angle'] = 20
Parameters['WG Height'] = 0.3e-6
Parameters ['WG Width'] = 0.5e-6
Parameters['WG Length'] = 5e-6
Parameters['Offset Input'] = 0
Parameters['Position Offset'] = 1.49e-6
Parameters['Slab Height'] = 0.6e-6 - Parameters['WG Height']
Parameters['Material'] = Material
Parameters['Taper Length'] = 10e-6
Parameters['Taper Width'] =  4e-6
Parameters['Taper'] = False

# Create the MMI
obj.MMI2x1(Parameters)

How to use the Logfile function

The Logfile function can be used after each simulation to generate an .txt file with all the parameters used for this specific simulation and the time stemp of the simulation. To use the function simply type:

# Save solver info to an variable
solver = obj.ReturnLogInfo()
# create an list of solver info and parameters used for this simulation
data = [solver, Parameters]
# Write the information to an .txt file in the given location
path_for_logFile = "C:/..../Simulation_Data/"
Logfile(data, path_for_logFile)

How to use the loadingBar function

The laoding bar function will create an loading bar in your python terminal whitch will give you more information about the current status of the simulation (if you are doing an sweep over couple of parameters). To show you how to use the function an for loop will be used :

import time as t
Lenght = np.arange(20e-6,30e-6,2e-6)
for i in range(len(Lenght)):
        #Set the loading bar function
    loadingBar(i, len(Lenght))
    Parameters['Taper Length'] = Lenght[i]
    obj.StraightWaveguide(Parameters)
    t.sleep(5)
        obj.removeObject()

Constructor package

Submodules

Constructor.Constructor module

Created on Fri Feb 10 08:31:42 2023

@author: Martin.Mihaylov

class Constructor.Constructor.Charge(file, Mode, MaterialLib=None)[source]

Bases: Constructor

CHARGE()[source]

Calls the CHARGE Solver.

Return type:

None.

Close()[source]
Return type:

Close Lumerical GUI

MZM(Parameters)[source]
Parameters:

Parameters (dictionary) –

Dictionary with all the parameters needt for the MZM creation Parameters[‘Substrate Height’] : int/float

Substrate Height

Parameters[“Optical”]dictionary of str

Optical Materials Dataset

Parameters[“Electrical”]dictionary of str

Electrical Materials Dataset

Parameters[‘angle’]int/float

Side angle of the Waveguife

Parameters[‘Slab Height’]Slab Height

Height of the Material slab. It can be set to 0 if no Slab is presented

Parameters[‘WG Height’]int/float

Waveguide Height

Parameters[‘WG Width’]int/float

Waveguide Width. Here the Top Waveguide width is considered

Parameters[‘WG Length’]int/float

Waveguide lenght. This determin the structure length as well

Parameters[“GND Electrodes Width”]int/float

Ground Electrode width

Parameters[“Signal Electrodes Width”]int/float

Signal electrode Width

Parameters[“Electrodes Height”]int/float

Height of the Metal electrodes

Parameters[“Gap”]int/float

Gap between the waveguide and the electrodes. The Gab is set from bottom Wg corner to electrodes.

Return type:

None.

MZM_ChargeSolver(Parameters)[source]

This function will create the CHARGE solver putting all the needed parameters and setting the simulation region monitor.

Args: Parameters: dict

Dictionary with all the parameters needt for the MZM FEEM Solver region. The Simulation region is define only on the halft of the structure since the FEEM region is the simulation region too.

Parameters[‘Substrate Height’]: int/float

Height of the Substrate

Parameters[‘Slab Height’]: int/float

Slab Height

Parameters[‘WG Height’]: int/float

Waveguide hight. You need to give this value but for the moment it will not effect anything

Parameters[‘WG Width’]: int/float

Width of the Waveguide

Parameters[“GND Electrodes Width”]: int/float

Ground Electrode width

Parameters[“Signal Electrodes Width”]: int/float

Signal Electrode width

Parameters[“Electrodes Height”]: int/float

Height of the Ground and Singla electrodes

Parameters[“Gap”]: int/float

Gap between the electrode and Waveguide.

Return type:

None.

MZM_FEEMSolver(Parameters)[source]
Parameters:

Parameters (dict) –

Dictionary with all the parameters needt for the MZM FEEM Solver region. The Simulation region is define only on the halft of the structure since the FEEM region is the simulation region too. Parameters[‘Substrate Height’] : int/float

Substrate Heigh

Parameters[‘Slab Height’]Slab Height

Height of the Material slab. It can be set to 0 if no Slab is presented

Parameters[‘WG Height’]int/float

Waveguide Height

Parameters[‘WG Width’]int/float

Waveguide Width. Here the Top Waveguide width is considered

Parameters[“GND Electrodes Width”]int/float

Ground Electrode width

Parameters[“Signal Electrodes Width”]int/float

Signal electrode Width

Parameters[“Electrodes Height”]int/float

Height of the Metal electrodes

Parameters[“Gap”]int/float

Gap between the waveguide and the electrodes. The Gab is set from bottom Wg corner to electrodes.

Parameters[“Wavelength”]int/float

Simulation wavelength

Return type:

None.

Material(Material_Data)[source]
Parameters:

Material_Data (dictionary) – Material Optical or Electrical data. Separate Materials into Electrical and Optical in List Material_Data[“Electrical”] = [“mat1”, “mat2”..] and optical Material_Data[“Optical”] = [“omat1”, “omat2”, …]

Returns:

Materials_Added – List of added materials to the simulation.

Return type:

list

ResultsCHARGE(Parameters_CHARGE)[source]
Parameters:

Parameters (dict) –

Dictionary with all the parameters needt for the MZM CHARGE Results analysis. This function will plot the changes in the n_EO so that the user can see it.

Parameters_CHARGE[‘min Polarization Fraction’]: int/float

This is the minimal Polarisation Fraction of the mode that need to be tracked in the waveguide. The user can first performe an FDE Analysis and extract the Polarisation Fraction and then give it in this function, so that in case of multimodal waveguide the right mode will be tracked and analysed.

Returns:

electro – Simulation results from the monitor of CHARGE. This function will create an Lumerical window into Charge solver. The user can use the window to see tha changes in EO index depending on the voltage apply on the electrodes. The function will return the monitor Data, so that the user can use it for some post precessing.

Return type:

dict

ResultsFEEM(CHARGE_Data)[source]

This function will performe an FEEM sweep simulation to extract the neff changes from the waveguide. The changing neff is due to the changing voltage and electric field power over the waveguide.

Parameters:
  • Parameters (dict) –

    Dictionary with all the parameters needt for the MZM FEEM Results analysis. This function will plot the L_pi vs Volt, L_pi*Volt vs Volt, and delta_neff vs Volt

    CHARGE_Data is an dictionary that can be taken directly from the function ResultsCHARGE()

    and give to this function. All the needed Parameters for the FEEM solver are there.

    If the user wanna give the Parameters manuel you can:
    CHARGE_Data[“V_Signal”]: int/float array

    Array of the sweep voltage from the CHARGE Solver

    CHARGE_Data[‘min Polarization Fraction’]: int/float

    This is the minimal Polarisation Fraction of the mode that need to be tracked in the waveguide. The user can first performe an FDE Analysis and extract the Polarisation Fraction and then give it in this function, so that in case of multimodal waveguide the right mode will be tracked and analysed.

  • Returns

    FeemResults: dictionary with all the results from the FEEM solver to plot them or use them in other function FeemResults[“lambda”]: int/float

    Operation Wavelength

    FeemResults[“Volt”]: int/float

    Array of voltages used in CHARGE solver and FEEM for the analysis

    FeemResults[“L_pi”]: int/float

    Array with L_pi values

    FeemResults[“neff_TE”]: int/float

    Array with neff TE Mode values from the FEEM solver

    FeemResults[“neff”]: int/float

    Array with neff values from the FEEM solver

    FeemResults[“dneff”]: int/float

    Array of delta_neff Values for the L_Pi Calculation: L_pi = lambda/ (2*RE{neff[No Voltage over Electrodes]] - neff[Voltage over Electrodes]})

Set_SimulationRegion(Parameters)[source]
Parameters:

Parameters (Dictionary of Parameters) –

Dictionary with all the parameters needt for the MZM simulation region. The Simulation region is define only on the halft of the structure sice the MZM is symetrical component. Parameters[‘Substrate Height’] : int/float

Substrate Heigh

Parameters[‘Slab Height’]Slab Height

Height of the Material slab. It can be set to 0 if no Slab is presented

Parameters[‘WG Width’]int/float

Waveguide Width. Here the Top Waveguide width is considered

Parameters[“GND Electrodes Width”]int/float

Ground Electrode width

Parameters[“Signal Electrodes Width”]int/float

Signal electrode Width

Parameters[“Electrodes Height”]int/float

Height of the Metal electrodes

Parameters[“Gap”]int/float

Gap between the waveguide and the electrodes. The Gab is set from bottom Wg corner to electrodes.

Return type:

None.

StartCHARGESolver()[source]

This function will first save the simulation into the folder where the this script is saved. After saving the script an Mesh of the structure will be performed and the mesh will be locked for further simulation. After this the CHARGE solver will be started.

Return type:

None.

StartFEEMSolver()[source]

This function will first save the simulation into the folder where the this script is saved. After saving the script an Mesh of the structure will be performed and the mesh will be locked for further simulation. After this the FEEM solver will be started.

Return type:

None.

removeObject()[source]

Switch from simulation to layout mode. Remove all objects.

Return type:

None.

class Constructor.Constructor.Constructor(file, Mode, MaterialLib=None)[source]

Bases: object

ArcWaveguide(Parameters)[source]
Parameters:

Parameters (Dictionary) –

Dictionary with all the data needet for the Arc Wavaguide.

Parameters[‘Substrate Height’]int/float

Substrate height

Parameters[‘WG Height’]int/float

Waveguide height

Parameters[‘WG Width’]int/float

Waveguide width

Parameters[‘angle’]int/float

Angle of the Waveguide Walls. it is calculated WG_angle = 90 - angle. For anfle = 90 we get a perfect rect!

Parameters[‘Slab Height’]int/float

Slab height

Parameters[‘Material’]list

List of Materials. The list should be with names (str) of a valid Lumerical materials. Check the names in Lumerical Materials viewer. The List of materials must contain at least 2 materials! Parameters[‘Material’] = [‘Cladding/Substrat’, ‘Object Material’]. For Example: Parameters[‘Material’] = [“SiO2 (Glass) - Palik”, ‘LiNbO3_20deg_X cut’].

Parameters[“Wavelength”]int/float

Wavelength

Parameters[“S_Band Radius”]int/float

Radius of the Circle in um

Parameters[‘Arc deg’]int

Can be 90 or 180 for 1/4 of a cirle or 1/2 of a circle.

Parameters[“Cladding”]anything, optional

This function will check if you have set Parameters[“Cladding”] to anaything, for example “Parameters[“Cladding”]=1” and if so it will put cladding over your structure. If the user didnt give the “Cladding” as dictionary key no cladding will be set.

Raises:

ValueError – Value Error

Return type:

None.

BendWaveguide(Parameters)[source]
Parameters:

Parameters (Dictionary) –

Dictionary with all the data needet for the Bend Wavaguide.

Parameters[‘Substrate Height’]int/float

Substrate Height

Parameters[‘WG Height’]int/float

Waveguide Height

Parameters[‘WG Width’]int/float

Waveguide width

Parameters[‘angle’]int/float

Angle of the Waveguide Walls. it is calculated WG_angle = 90 - angle. For anfle = 90 we get a perfect rect!

Parameters[‘Slab Height’]int/float

Slab height

Parameters[‘Material’]list

List of Materials. The list should be with names (str) of a valid Lumerical materials. Check the names in Lumerical Materials viewer. The List of materials must contain at least 2 materials! Parameters[‘Material’] = [‘Cladding/Substrat’, ‘Object Material’]. For Example: Parameters[‘Material’] = [“SiO2 (Glass) - Palik”, ‘LiNbO3_20deg_X cut’].

Parameters[“x span”]int/float

Length of the S Curve. Span of the object.

Parameters[“y span”]int/float

Height of the curve. Difference between the input and output of the S-curve.

Parameters[“poles”]boolen

If Parameters[“poles”] = True an Bezier Curbe will be made. if Parameters[“poles”] = False an Cosinus Curve = y_span*(cos((pi/(2*x_span))*t)^2) will be made. Where t is in the range of 0 - y_span

Parameters[“Cladding”]anything, optional

This function will check if you have set Parameters[“Cladding”] to anaything, for example “Parameters[“Cladding”]=1” and if so it will put cladding over your structure. If the user didnt give the “Cladding” as dictionary key no cladding will be set.

Raises:

ValueError – Value Error Massage.

Return type:

None.

CascadetMMI(Parameters, SpaceX, SpaceY)[source]
Parameters:

Parameters (TYPE) – DESCRIPTION.

Return type:

None.

Close()[source]
Return type:

Close Lumerical GUI

CoppyDcard(modeTE, modeTM)[source]
Parameters:
  • modeTE (str) – The TE mode that will be copy to dCard to do the overlap analysis.

  • modeTM (str) – The TM mode that will be copy to dCard to do the overlap analysis.

Return type:

None.

DirectionalCoupler(Parameters)[source]
Parameters:

Parameters (Dictionary) –

Dictionary with all the data needet for the Directional Coupler. Parameters[‘Material’] : list of str

List of Materials. The list should be with names (str) of a valid Lumerical materials. Check the names in Lumerical Materials viewer. The List of materials must contain at least 2 materials! Parameters[‘Material’] = [‘Cladding/Substrat’, ‘Object Material’]. For Example: Parameters[‘Material’] = [“SiO2 (Glass) - Palik”, ‘LiNbO3_20deg_X cut’].

Parameters[‘Substrate Height’]int/float

Substrate height.

Parameters[‘Substrate Width’]int/float

Substrate Width.

Parameters[‘DC Length’]int/float

Length of the directional coupler

Parameters[‘angle’]int/float

Angle of the Waveguide Walls. it is calculated WG_angle = 90 - angle. For anfle = 90 we get a perfect rect!

Parameters[‘WG Height’]int/float

Waveguide hight. Also the height of the MMI section

Parameters[‘WG Width’]int/float

Waveguide width.

Parameters[‘Position Offset’]int/float

Offset between the waveguides. The minimum distance between Waveguides is 1 um becouse of manufactering restrictions in the University.

Parameters[‘Slab Height’]int/float

Height of the slab.

Parameters[‘Wavelength’]int/float

Wavelength

Parameters[“Cladding”]anything, optional

This function will check if you have set Parameters[“Cladding”] to anaything, for example “Parameters[“Cladding”]=1” and if so it will put cladding over your structure. If the user didnt give the “Cladding” as dictionary key no cladding will be set.

Raises:

ValueError – DESCRIPTION.

Return type:

None.

EME()[source]

Calls the EME solver.

Return type:

None.

EME_Solver(Structure, Parameters)[source]
Parameters:
  • Structure (str) – Structure to be simulated.

  • Parameters (dict) – Dictionary with solver parameters.

Raises:

ValueError – Error when wrong structure was selected.

Return type:

None.

ExtractEMEResults(MonitorName, EMEName)[source]
Parameters:
  • MonitorName (str) – The name of the monitor. By defoult the name will be ‘monitor’. So MonitorName = ‘monitor’ can be used. In case of change in the name the new name of the monitor should be given.

  • EMEName (str) – The name of the solver. In this case per defoult will be EMEName = ‘EME’. In case of change in the name, the new name should be given.

Returns:

  • OptionsMonitor (dict) –

    Dictionary with:

    ’lambda’ ‘f’ ‘x’ ‘y’ ‘z’ ‘E’ ‘H’ ‘Lumerical_dataset’

  • EME_Data (dict) –

    Dictionary with:

    ’user s matrix’ ‘internal s matrix’ ‘local diagnostics’ ‘coefficients’ ‘global diagnostics’

ExtractFDEModes(EffIndexValue)[source]
Parameters:

EffIndexValue (float/int) – Effective index value. All modes with effective index smaller then the Effective will be deleted. Effective is usualy the smalles effective index from the hole construction (usualy the cladding).

Returns:

dictData – Dictionary with the modes polarization numbers

Return type:

dict

ExtractFDEResultsExtendet(EffIndexValue)[source]
Parameters:

EffIndexValue (float/int) – Effective index value. All modes with effective index smaller then the Effective will be deleted. Effective is usualy the smalles effective index from the hole construction (usualy the cladding).

Returns:

  • dictModes (dict) –

    Dictionary with:

    ’TE polarization fraction num’ ‘effective area’ ‘effective index num’ ‘group index num’ ‘Ex’ ‘Ey’ ‘Ez’

  • dictData (dict) –

    Dictionary with:

    ’E’

ExtractFDTDResults(Ports, Sparam)[source]

This fuction will add an S-Parameter Sweep to the FDTD simulation. This will allowed to sweep the S-parameter Matrix like it is done in EMe solver. Additionally will extract the Power on each port according to the time monitors that ware set in the solver functions.

ExtrtactData(Type, Parameters)[source]
Parameters:
  • Type (str) – Solver Type.

  • Parameters (boolen) – Need to be set True if S-Parameter analysis in FDTD solver is wanted. Otherwise False.

Raises:

ValueError – DESCRIPTION.

Returns:

Error when wrong structure was selected.

Return type:

TYPE

FDE_Solver(Structure, Parameters)[source]
Parameters:
  • Structure (str) – Structure to be simulated.

  • Parameters (dict) – Dictionary with solver parameters.

Raises:

ValueError – Error when wrong structure was selected.

Return type:

None

FDTD()[source]

Calls the FDTD Solver.

Return type:

None.

FDTD_Solver(Structure, Parameters)[source]
Parameters:
  • Structure (str) – Structure to be simulated.

  • Parameters (dict) – Dictionary with solver parameters.

Raises:

ValueError – Error when wrong structure was selected.

Return type:

None.

GratingCoupler(Parameters)[source]
Parameters:

Parameters (Dictionary) –

Dictionary with all the data needet for the GratingCoupler. Parameters[‘Material GC’] : list of str

List of Materials. the list should be with names (str) of a valid Lumerical materials. Check the names in Lumerical Materials viewer. For Example “Parameters[‘Material GC’] = [“SiO2 (Glass) - Palik”, “Si (Silicon) - Palik”]”

Parameters[‘Substrate Height’]int/float

Substrate height.

Parameters[“Length GC”]: int/float

Lenght of the Grating Coupler Area

Parameters[“Width GC”]: int/float

Widht of the Grating Coupler Area

Parameters[“Hight GC”]: int/float

Hight of the Grating Coupler Material

Parameters[“Etch Depth GC”]: int/float

How deep, taken from the Parameters[“Hight GC”] will be the etchin depth of the gratings

Parameters[“Duty Cycle”]: int/float

Duty cycle of the gratings. For example Parameters[“Duty Cycle”] = 0.39 will result in 39% Duty Cycle

Parameters[“Pitch GC”]: int/float

Pitch of the Grating Coupler. For Example Parameters[“Pitch GC”] = 0.6e-6 will result in 6um Etch Space + Rib Space = 0.6um.

Parameters[“Input Length GC”]: int/float

An squere Waveguide with the same WG Height as the Grating coupler place before the Grating Coupler region will start.

Parameters[“Output Length GC”]: int/float

An squere Waveguide with the same WG Height as the Grating coupler place after the Grating Coupler region to finish the structure.

Parameters[‘angle’]int/float

Angle of the Waveguide Walls. it is calculated WG_angle = 90 - angle. For anfle = 90 we get a perfect rect! In this case is used only when Parameters[“Taper”] = True

Parameters[“Taper”]boolen

You can create an input Taper to your Grating Coupler structure

Parameters[‘WG Height’]int/float

Waveguide hight. Also the height of the MMI section

Parameters[‘WG Width’]int/float

Waveguide width. Also in this function and ONLY in this function this will be the ibverse Taper width!!!

Parameters[‘Slab Height’]int/float

Slab height

Parameters[‘Taper Length’]int/float

Taper Length

Parameters[“SMF Core Diameter”]int/float

Single Mode Fiber core Diameter

Parameters[“SMF Cladding Diameter”]int/float

Single Mode Fiber Cladding Diameter

Parameters[“SMF Core Index”]

Single Mode Fiber Core Index

Parameters[“SMF Cladding Index”]

Single Mode Fiber Cladding Index

Parameters[“SMF Theta”]: int/float

Tilting Angle of the Single Mode Fiber to the Grating Coupler. Normaly we choose Parameters[“SMF Theta”] = 15

Parameters[“SMF Z Span”]: int/float

Lenght/Span of the Single Mode Fiber

Return type:

None.

GratingCouplerNeff(Parameters)[source]
Help(Subject=None)[source]
InverseTaper(Parameters)[source]
Parameters:

Parameters (Dictionary) –

Dictionary with all the data needet for the InverseTaper. Parameters[‘Material’] : list of str

List of Materials. The list should be with names (str) of a valid Lumerical materials. Check the names in Lumerical Materials viewer. The List of materials must contain at least 2 materials! For this structure 3 Material will be needed Parameters[‘Material’] = [‘Cladding/Substrat’, ‘Object Material’]. For Example: Parameters[‘Material’] = [“SiO2 (Glass) - Palik”, ‘LiNbO3_20deg_X cut’].

Parameters[‘Substrate Height’]int/float

Substrate height.

Parameters[‘angle’]int/float

Angle of the Waveguide Walls. it is calculated WG_angle = 90 - angle. For anfle = 90 we get a perfect rect!

Parameters[‘WG Height’]int/float

Waveguide hight. Also the height of the MMI section

Parameters[‘WG Width’]int/float

Waveguide width. Also in this function and ONLY in this function this will be the ibverse Taper width!!!

Parameters[‘Slab Height’]int/float

Slab height

Parameters[‘Taper Length’]int/float

Inverse Taper Length

Parameters[‘Taper Width’]int/float

Front Width of the inverse Taper!! In this Function and ONLY in this function, the Parameters[‘Taper Width’] is the frond width of the inverse Taper!

Parameters[‘PWB Taper Width Back’]int/float

Photonic Wirebonding (PWB) Width back side (to the Photonic Wire Bonding)

Parameters[‘PWB Taper Hight Back’]int/float

Photonic Wire Bonding Height back side (to the Photonic Wire Bonding)

Parameters[‘PWB Taper Width Front’]int/float

Photonic Wirebonding (PWB) Width front side (to the photonic waveguide)

Parameters[‘PWB Taper Hight Front’]int/float

Photonic Wire Bonding Height front side (to the photonic waveguide)

Parameters[‘PWB Taper Length’]int/float

Length of the Photonic Wire Bonding Taper

Parameters[“SMF Core Diameter”]int/float

Single Mode Fiber core Diameter

Parameters[“SMF Cladding Diameter”]int/float

Single Mode Fiber Cladding Diameter

Parameters[“SMF Core Index”]

Single Mode Fiber Core Index

Parameters[“SMF Cladding Index”]

Single Mode Fiber Cladding Index

Raises:

ValueError – DESCRIPTION.

Return type:

None.

LenseFiber(Parameters)[source]
Parameters:

Parameters (Dictionary) –

Dictionary with all the data needet for the GratingCoupler. Take care since this object will create his own FDTD simulation object. No extra Solvers needed! Parameters[‘Material’] : list of str

List of Materials. the list should be with names (str) of a valid Lumerical materials. Check the names in Lumerical Materials viewer. For Example “Parameters[‘Material’] = [“SiO2 (Glass) - Palik”, “Si (Silicon) - Palik”]”

Parameters[“Lense Diameter”]int/float

Lense diameter.

Parameters[“Lense Thickness”]: int/float

Lens thickness

Parameters[“SMF Core Diameter”]int/float

Single Mode Fiber core Diameter

Parameters[“SMF Cladding Diameter”]int/float

Single Mode Fiber Cladding Diameter

Parameters[“SMF Core Index”]

Single Mode Fiber Core Index

Parameters[“SMF Cladding Index”]

Single Mode Fiber Cladding Index

Parameters[‘Support Cylunder Hight’]: int/float

Hight of the Cylinder holding the Lense. This is needed so that the Lense can have flat fine serface to be printed on.

Parameters[‘Hexagon Hight’]: optional int/float

Hight of the Hexagon holding the Cylinder. If the Parameter is not set the Hexagon will be made with 4 um thickness. Where 2 um will go into the fiber array and 2 um will be above to print the cylinder on it. This is how is done in NanoPrintX.

Parameters[‘x res’]int/float

Mesh step size

Parameters[‘Wavelength’]: int/float

Simulation Wavelenght

Return type:

None.

LenseModeSystem(Parameters)[source]
MMI2x1(Parameters)[source]
Parameters:

Parameters (Dictionary) –

Dictionary with all the data needet for the 2x1 MMI.

Parameters[‘Material’]list of str

List of Materials. The list should be with names (str) of a valid Lumerical materials. Check the names in Lumerical Materials viewer. The List of materials must contain at least 2 materials! Parameters[‘Material’] = [‘Cladding/Substrat’, ‘Object Material’]. For Example: Parameters[‘Material’] = [“SiO2 (Glass) - Palik”, ‘LiNbO3_20deg_X cut’].

Parameters[‘Substrate Height’]int/float

Substrate height.

Parameters[‘MMI Width’]int/float

Width of the MMI.

Parameters[‘MMI Length’]int/float

Length of the MMI.

Parameters[‘angle’]int/float

Angle of the Waveguide Walls. it is calculated WG_angle = 90 - angle. For anfle = 90 we get a perfect rect!

Parameters[‘WG Height’]int/float

Waveguide hight. Also the height of the MMI section

Parameters[‘WG Width’]int/float

Waveguide width.

Parameters[‘WG Length’]int/float

Waveguide length.

Parameters[‘Position Offset’]int/float

Offset between the waveguides. If Taper == True then this become the offset betweent he tapers wider sides. Waveguide and Tapers cannot be placed ourside the MMI structure. The minimum distance between Taper and Waveguide is 1 um becouse of manufactering restrictions in the University.

Parameters[‘Offset Input’]int/float

Offset of the input waveguide.

Parameters[‘Slab Height’]int/float

Height of the slab.

Parameters[‘Taper’]boolen

Taper can be set to be True ot False. if Taper == False - No Taper used if Taper == True - Taper placed

Parameters[‘Taper Length’]int/float

If Taper == True, then this will set the Tapers length. If Taper == False this will be ignored and some random value can be given.

Parameters[‘Taper Width’]int/float

If Taper == True, then this will set the Tapers width. If Taper == False this will be ignored and some random value can be given.

Parameters[“Cladding”]anything, optional

This function will check if you have set Parameters[“Cladding”] to anaything, for example “Parameters[“Cladding”]=1” and if so it will put cladding over your structure. If the user didnt give the “Cladding” as dictionary key no cladding will be set.

Parameters[“Offset Output”]anything, optional

This function will allow the user to move the outputs in oposite direction. Please dont use it since is there only becouse the maschine of our physic departmant had some proiblems with the LNOI objects design.

Raises:

ValueError – DESCRIPTION.

Return type:

None.

MMI2x2(Parameters)[source]
Parameters:

Parameters (Dictionary) –

Dictionary with all the data needet for the 2x2 MMI.

Parameters[‘Material’]list of str

List of Materials. The list should be with names (str) of a valid Lumerical materials. Check the names in Lumerical Materials viewer. The List of materials must contain at least 2 materials! Parameters[‘Material’] = [‘Cladding/Substrat’, ‘Object Material’]. For Example: Parameters[‘Material’] = [“SiO2 (Glass) - Palik”, ‘LiNbO3_20deg_X cut’].

Parameters[‘Substrate Height’]int/float

Substrate height.

Parameters[‘MMI Width’]int/float

Width of the MMI.

Parameters[‘MMI Length’]int/float

Length of the MMI.

Parameters[‘angle’]int/float

Angle of the Waveguide Walls. it is calculated WG_angle = 90 - angle. For anfle = 90 we get a perfect rect!

Parameters[‘WG Height’]int/float

Waveguide hight. Also the height of the MMI section

Parameters[‘WG Width’]int/float

Waveguide width.

Parameters[‘WG Length’]int/float

Waveguide length.

Parameters[‘Position Offset’]int/float

Offset between the waveguides. If Taper == True then this become the offset betweent he tapers wider sides. Waveguide and Tapers cannot be placed ourside the MMI structure. The minimum distance between Taper and Waveguide is 1 um becouse of manufactering restrictions in the University.

Parameters[‘Slab Height’]int/float

Height of the slab.

Parameters[‘Taper’]boolen

Taper can be set to be True ot False. if Taper == False - No Taper used if Taper == True - Taper placed

Parameters[‘Taper Length’]int/float

If Taper == True, then this will set the Tapers length. If Taper == False this will be ignored and some random value can be given.

Parameters[‘Taper Width’]int/float

If Taper == True, then this will set the Tapers width. If Taper == False this will be ignored and some random value can be given.

Parameters[“Cladding”]anything, optional

This function will check if you have set Parameters[“Cladding”] to anaything, for example “Parameters[“Cladding”]=1” and if so it will put cladding over your structure. If the user didnt give the “Cladding” as dictionary key no cladding will be set.

Raises:

ValueError – Value Error.

Return type:

None.

Overlap()[source]
Returns:

  • TEModes (dict) – Dictionary of TE - Modes.

  • dictDataTE (dict) – Dictionary of TE - Modes E field values

  • SweepDictTE (dict) –

    Dictionary of TE - Modes:
    1. overlap Procentage

    2. TE polarization fraction number

    3. TE polarization fraction

    4. loss

    5. Ex

    6. Ey

    7. Ez

  • TMModes (dict) – Dictionary of TM - Modes..

  • dictDataTM (dict) – Dictionary of TM - Modes E field values.

  • SweepDictTM (dict) –

    Dictionary of TM - Modes:
    1. overlap Procentage

    2. TE polarization fraction number

    3. TE polarization fraction

    4. loss

    5. Ex

    6. Ey

    7. Ez

OverlapFDEModes(Parameters)[source]
Parameters:

Parameters (dict) – Dictionary with parameters needed for the FDE analysis.

Return type:

None.

Plot3DFDE(Parameters)[source]
Plot3DFDTD(Parameters)[source]
ReturnLogInfo()[source]
Returns:

Solver log information from last simulation.

Return type:

TYPE

RingGratingCoupler(Parameters)[source]
Parameters:

Parameters (Dictionary) –

Dictionary with all the data needet for the GratingCoupler. Parameters[‘Material GC’] : list of str

List of Materials. the list should be with names (str) of a valid Lumerical materials. Check the names in Lumerical Materials viewer. For Example “Parameters[‘Material GC’] = [“SiO2 (Glass) - Palik”, “Si (Silicon) - Palik”]”

Parameters[‘Substrate Height’]int/float

Substrate height.

Parameters[“Length GC”]: int/float

Lenght of the Grating Coupler Area

Parameters[“Width GC”]: int/float

Widht of the Grating Coupler Area

Parameters[“Hight GC”]: int/float

Hight of the Grating Coupler Material

Parameters[“GC Radius”]: int/float

Radius of the Ring Grating Coupler in um. For Example “Parameters[“GC Radius”] = 25e-6”

Parameters[“Etch Depth GC”]: int/float

How deep, taken from the Parameters[“Hight GC”] will be the etchin depth of the gratings

Parameters[“Duty Cycle”]: int/float

Duty cycle of the gratings. For example Parameters[“Duty Cycle”] = 0.39 will result in 39% Duty Cycle

Parameters[“Pitch GC”]: int/float

Pitch of the Grating Coupler. For Example Parameters[“Pitch GC”] = 0.6e-6 will result in 6um Etch Space + Rib Space = 0.6um.

Parameters[“Input LengthGC”]: int/float

An squere Waveguide with the same WG Height as the Grating coupler place before the Grating Coupler region will start.

Parameters[“Output Length GC”]: int/float

An squere Waveguide with the same WG Height as the Grating coupler place after the Grating Coupler region to finish the structure.

Parameters[‘angle’]int/float

Angle of the Waveguide Walls. it is calculated WG_angle = 90 - angle. For anfle = 90 we get a perfect rect!

Parameters[‘WG Height’]int/float

Waveguide hight. Also the height of the MMI section

Parameters[‘WG Width’]int/float

Waveguide width.

Parameters[‘Slab Height’]int/float

Slab height

Parameters[“SMF Core Diameter”]int/float

Single Mode Fiber core Diameter

Parameters[“SMF Cladding Diameter”]int/float

Single Mode Fiber Cladding Diameter

Parameters[“SMF Core Index”]

Single Mode Fiber Core Index

Parameters[“SMF Cladding Index”]

Single Mode Fiber Cladding Index

Parameters[“SMF Theta”]: int/float

Tilting Angle of the Single Mode Fiber to the Grating Coupler. Normaly we choose Parameters[“SMF Theta”] = 15

Parameters[“SMF Z Span”]: int/float

Lenght/Span of the Single Mode Fiber

Return type:

None.

Script()[source]
Returns:

myscript – small script syntax for creating Tapers tooken from Lumerical . It is used only for check comperisons.

Return type:

str

Solver(Structure, Type, Parameters)[source]
Parameters:
  • Structure (str) – Object that will be simulated.

  • Type (str) – Solver Type.

  • Parameters (dict) – Dictionary of solver parameters.

Raises:

ValueError – Error when wrong solver type selected.

Return type:

None.

StartEMESimulation()[source]

This Function will save a the construted object under the name “SimRun1” then will run the simulation. The simulation cannot be done without first saving the object. On the end the ‘emepropagation’ of the mode 1 port 1 will be done.

Return type:

None.

StartFDESimulation()[source]

This Function will save a the construted object under the name “SimRun1” then will run the simulation. The simulation cannot be done without first saving the object. On the end the ‘findmodes’ will simulate all 20 modes that are set by defoult to be calculated.

Return type:

None.

StartFDTDOptimizerRingGratingCoupler(Tranmission_on_Port, pos)[source]
StartFDTDSimulation()[source]

This Function will save a the construted object under the name “SimRun1” then will run the simulation. The simulation cannot be done without first saving the object. On the end the ‘emepropagation’ of the mode 1 port 1 will be done.

Return type:

None.

StartSimFunction(Type)[source]
Parameters:

Type (str) – Solver Type.

Raises:

ValueError – Error when wrong solver type selected.

Return type:

None.

StraightWaveguide(Parameters)[source]
Parameters:

Parameters (Dictionary) –

Dictionary with all the data needet for the Straight Wavaguide.

Parameters[‘Substrate Height’]int float

Substrate Height

Parameters[‘WG Height’]int/float

Height of the Waveguide

Parameters[‘WG Width’]int/float

Width of the Waveguide

Parameters[‘WG Length’]int/float

Length of the Waveguide

Parameters[‘Taper’]boolen

If Taper == False, only Waveguiedes will be constructed. If Taper == True, only an single Taper will be constructed

Parameters[‘Taper Length’]int/float

Taper Length

Parameters[‘Taper Width’]int/float

Taper backside width, the frontside width is the waveguide width

Parameters[‘angle’]int

Angle of the Waveguide Walls. it is calculated WG_angle = 90 - angle. For anfle = 90 we get a perfect rect!

Parameters[‘Slab Height’]int/float

Slab height.

Parameters[‘Material’]list

List of Materials. The list should be with names (str) of a valid Lumerical materials. Check the names in Lumerical Materials viewer. The List of materials must contain at least 2 materials! Parameters[‘Material’] = [‘Cladding/Substrat’, ‘Object Material’]. For Example: Parameters[‘Material’] = [“SiO2 (Glass) - Palik”, ‘LiNbO3_20deg_X cut’].

Parameters[“Wavelength”]int/float

Wavelength

Parameters[“Waveguide Angle”]int/float

Bending angle of the Waveguide. Set it to 0 to simulate the straight waveguide. If Waveguide Angle is different then 0, then the straight waveguide will be tilted at the choosen degrees.

Parameters[“Cladding”]anything, optional

This function will check if you have set Parameters[“Cladding”] to anaything, for example “Parameters[“Cladding”]=1” and if so it will put cladding over your structure. If the user didnt give the “Cladding” as dictionary key no cladding will be set.

Parameters[“Taper Type”]anything, optional

This function will check if you have set Parameters[“Taper Type”] to anaything, for example “Parameters[“Taper Type”]=1” and if so it will design an Inverse Taper Structure with no Cladding. Here the option “Cladding” is not active and will be ignored. If the user didnt give the “Taper Type” as dictionary key, then an normal taper structure will be simulated. If Taper Type is selected the user need to provide additional information:

TaperWidthF = Parameters[‘PWB Taper Width Front’] TaperWidthB = Parameters[‘PWB Taper Width Back’] TaperHightB = Parameters[‘PWB Taper Hight Back’] TaperHightF = Parameters[‘PWB Taper Hight Front’] TaperLength_PWB = Parameters[‘PWB Taper Length’]

Raises:

ValueError – Value Error

Return type:

None.

WDM(Parameters)[source]
Parameters:

Parameters (Dictionary) –

Dictionary with all the data needet for the WDM. Parameters[‘Material’] : list of str

List of Materials. The list should be with names (str) of a valid Lumerical materials. Check the names in Lumerical Materials viewer. The List of materials must contain at least 2 materials! Parameters[‘Material’] = [‘Cladding/Substrat’, ‘Object Material’]. For Example: Parameters[‘Material’] = [“SiO2 (Glass) - Palik”, ‘LiNbO3_20deg_X cut’].

Parameters[‘Substrate Height’]int/float

Substrate height.

Parameters[‘MMI Width’]int/float

Width of the MMI.

Parameters[‘MMI Length’]int/float

Length of the MMI.

Parameters[‘angle’]int/float

Angle of the Waveguide Walls. it is calculated WG_angle = 90 - angle. For anfle = 90 we get a perfect rect!

Parameters[‘WG Height’]int/float

Waveguide hight. Also the height of the MMI section

Parameters[‘WG Width’]int/float

Waveguide width.

Parameters[‘Wavelength’]int/float

Wavelength.

Parameters[‘WG Length’]int/float

Waveguide length.

Parameters[‘Slab Height’]int/float

Height of the slab.

Parameters[‘Angle Thetha’] :

Input and output angle of the waveguide. This is only temporally

Parameters[‘Taper Width’]int/float

Backside width of the Taper, frontside width is the waveguide width

Parameters[‘Taper Length’]int/float

Length of the Taper.

Parameters[‘Taper’]boolen

If Taper == False, no Taper will be placed with the Waveguides. If Taper == True, tapers will be placed with the waveguides

Parameters[“Cladding”]anything, optional

This function will check if you have set Parameters[“Cladding”] to anaything, for example “Parameters[“Cladding”]=1” and if so it will put cladding over your structure. If the user didnt give the “Cladding” as dictionary key no cladding will be set.

Raises:

ValueError – DESCRIPTION.

Return type:

None.

Waveguide(Parameters)[source]
Parameters:

Parameters (Dictionary) –

Dictionary with all the data needet for the Wavaguide.

Parameters[‘Substrate Height’]int7float

Height of the substrate.

Parameters[‘WG Length’]: int/float

Length of the Waveguide.

Parameters[‘WG Height’]int/float

Height of the Waveguide

Parameters[‘WG Width’]int/float

Width of the Waveguide

Parameters[‘angle’]int

Angle of the Waveguide Walls. it is calculated WG_angle = 90 - angle. For anfle = 90 we get a perfect rect!

Parameters[‘Slab Height’]int/float

Slab height.

Parameters[‘Material’]list of str

List of Materials. The list should be with names (str) of a valid Lumerical materials. Check the names in Lumerical Materials viewer. The List of materials must contain at least 2 materials! Parameters[‘Material’] = [‘Cladding/Substrat’, ‘Object Material’]. For Example: Parameters[‘Material’] = [“SiO2 (Glass) - Palik”, ‘LiNbO3_20deg_X cut’].

Raises:

ValueError – Value Error

Return type:

None.

removeObject()[source]

Switch from simulation to layout mode. Remove all objects.

Return type:

None.

setArcWaveguideFDTDSolver(Parameters)[source]
Parameters:

Parameters (Dictionary) –

Dictionary with all the data needet for the ArcWaveguideFDTDSolver. Parameters[‘Substrate Height’] : int/float

Substrate height.

Parameters[‘WG Height’]int/float

Waveguide hight. Also the height of the MMI section

Parameters[‘WG Width’]int/float

Waveguide width.

Parameters[‘x res’]int/float

EME Mesh resolutio,

Parameters[‘Slab Height’]int/float

Height of the slab.

Parameters[‘Wavelength’]int/float

Wavelength

Parameters[“S_Band Radius”]int/float

S-Bend Radius in um.

Parameters[‘Arc deg’]int/float

Arc define the Arc of the curve. It can be 90 or 180 degrees only. This two will define an 1/4 of a circle or 1/2 of a circle.

Parameters[“Mode”]str

Mode to choose from (“fundamental TE mode”, “fundamental TM mode”, “fundamental mode”)

Parameters[“Port Span”]: list of int/floats

Parameters[“Port Span”] = [Span of Port in x direction, Span of Port in y direction, Span of Port in z direction]

Return type:

None.

setBendWaveguideFDTDSolver(Parameters)[source]
Parameters:

Parameters (Dictionary) –

Dictionary with all the data needet for the BendWaveguideFDTDSolver. Parameters[‘Substrate Height’] : int/float

Substrate height.

Parameters[‘WG Height’]int/float

Waveguide hight. Also the height of the MMI section

Parameters[‘x res’]int/float

EME Mesh resolutio,

Parameters[‘Slab Height’]int/float

Height of the slab.

Parameters[‘Wavelength’]int/float

Wavelength

Parameters[“x span”]int/float

Length of the S-Bend Waveguide

Parameters[“y span”]int/float

Width of the S-Bend Waveguide

Parameters[“Mode”]str

Mode to choose from (“fundamental TE mode”, “fundamental TM mode”, “fundamental mode”)

Parameters[“Port Span”]: list of int/floats

Parameters[“Port Span”] = [Span of Port in x direction, Span of Port in y direction, Span of Port in z direction]

Return type:

None.

setCascadetMMIFDTDSolver(Parameters, SpaceX, SpaceY)[source]
setDCEMESolver(Parameters)[source]
Parameters:

Parameters (Dictionary) –

Dictionary with all the data needet for the DCEMESolver. Parameters[‘Substrate Height’] : float/int

Height of the Substrate

Parameters[‘Substrate Width’]float/int

Width of the MMI

Parameters[‘DC Length’]float/int

Length of the Directional coupler

Parameters[‘WG Height’]float/int

Height of the Waveguide

Parameters[‘WG Width’]float/int

Waveguide Width

Parameters[‘Position Offset’]float/int

Positional offser of the waveguides. If posOffset the two Waveguides will be offset of the middle position (y = 0) by the half of there Width. In this case they will not overlap if the Offset is 0.

Parameters[‘y res’]float/int

Mesh resolution for the y-Axis

Parameters[‘z res’]float/int

Mesh resolution for the z Axis

Parameters[‘Slab Height’]float/int

Slab height.

Parameters[‘Wavelength’]float/int

Wavelength

Parameters[“Port Span”]: list of int/floats

Parameters[“Port Span”] = [Span of Port in x direction, Span of Port in y direction, Span of Port in z direction]

Parameters[“Mode”]str

Mode to choose from (“fundamental TE mode”, “fundamental TM mode”, “fundamental mode”)

Return type:

None.

setDCFDTDSolver(Parameters)[source]
Parameters:

Parameters (Dictionary) –

Dictionary with all the data needet for the DCFDTDSolver. Parameters[‘Substrate Height’] : float/int

Height of the Substrate

Parameters[‘Substrate Width’]float/int

Width of the MMI

Parameters[‘DC Length’]float/int

Length of the Directional coupler

Parameters[‘WG Height’]float/int

Height of the Waveguide

Parameters[‘WG Width’]float/int

Waveguide Width

Parameters[‘Position Offset’]float/int

Positional offser of the waveguides. If posOffset the two Waveguides will be offset of the middle position (y = 0) by the half of there Width. In this case they will not overlap if the Offset is 0.

Parameters[‘x res’]float/int

Mesh resolution for the x-Axis

Parameters[‘Slab Height’]float/int

Slab height.

Parameters[‘Wavelength’]float/int

Wavelength

Parameters[“Port Span”]: list of int/floats

Parameters[“Port Span”] = [Span of Port in x direction, Span of Port in y direction, Span of Port in z direction]

Parameters[“Mode”]str

Mode to choose from (“fundamental TE mode”, “fundamental TM mode”, “fundamental mode”)

Return type:

None.

setGratingCouplerFDTDSolver(Parameters)[source]
Parameters:

Parameters (Dictionary) –

Dictionary with all the data needet for the GratingCouplerFDTDSolver. Parameters[‘Substrate Height’] : int/float

Substrate height.

Parameters[“Length GC”]: int/float

Lenght of the Grating Coupler Area

Parameters[“Input Length GC”]: int/float

An squere Waveguide with the same WG Height as the Grating coupler place before the Grating Coupler region will start.

Parameters[“Output Length GC”]: int/float

An squere Waveguide with the same WG Height as the Grating coupler place after the Grating Coupler region to finish the structure.

Parameters[“Width GC”]: int/float

Widht of the Grating Coupler Area

Parameters[“Hight GC”]: int/float

Hight of the Grating Coupler Material

Parameters[‘Taper’]boolen

Add Taper to structure

Parameters[‘Taper Length’]int/float

Length of the Taper

Parameters[‘Wavelength’]int/float

Wavelength

Parameters[‘x res’]int/float

Mesh x-Axis

Parameters[“Mode”]str

Mode to choose from (“fundamental TE mode”, “fundamental TM mode”, “fundamental mode”)

Parameters[“Port Span”]list of floats/ints

List of x,y and z span of the Ports. For this simulation only y and z parametes will be taken.

Parameters[“GC Radius”]: int/float

Radius of the Ring Grating Coupler in um. For Example “Parameters[“GC Radius”] = 25e-6”

Return type:

None.

setGratingCouplerNeffFDE(Parameters)[source]
setInverseTaperEMESolver(Parameters)[source]
ParametersDictionary

Dictionary with all the data needet for the InverseTaperEMESolver. Parameters[‘Substrate Height’] : int/float

Substrate height.

Parameters[‘WG Height’int/float

Waveguide hight. Also the height of the MMI section

Parameters[‘WG Width’]int/float

Waveguide width.

Parameters[‘Slab Height’]int/float

Slab height

Parameters[‘PWB Taper Width Back’]int/float

Photonic Wirebonding (PWB) Width back side (to the Photonic Wire Bonding)

Parameters[‘PWB Taper Hight Back’]int/float

Photonic Wire Bonding Height back side (to the Photonic Wire Bonding)

Parameters[‘PWB Taper Length’]int/float

Length of the Photonic Wire Bonding Taper

Parameters[“SMF Core Diameter”]int/float

Single Mode Fiber core Diameter

Parameters[“SMF Cladding Diameter”]int/float

Single Mode Fiber Cladding Diameter

Parameters[‘y res’]int/float

Mesh y-Axis

Parameters[‘z res’]int/float

Mesh z-Axis

Parameters[‘Wavelength’]int/float

Wavelength

Parameters[“Mode”]str

Mode to choose from (“fundamental TE mode”, “fundamental TM mode”, “fundamental mode”)

Parameters[“Port Span”]list of floats/ints

List of x,y and z span of the Ports. For this simulation only y and z parametes will be taken.

Return type:

None.

setInverseTaperFDTDSolver(Parameters)[source]
ParametersDictionary

Dictionary with all the data needet for the InverseTaperFDTDSolver. Parameters[‘Substrate Height’] : int/float

Substrate height.

Parameters[‘WG Height’int/float

Waveguide hight. Also the height of the MMI section

Parameters[‘WG Width’]int/float

Waveguide width.

Parameters[‘Slab Height’]int/float

Slab height

Parameters[‘PWB Taper Width Back’]int/float

Photonic Wirebonding (PWB) Width back side (to the Photonic Wire Bonding)

Parameters[‘PWB Taper Hight Back’]int/float

Photonic Wire Bonding Height back side (to the Photonic Wire Bonding)

Parameters[‘PWB Taper Length’]int/float

Length of the Photonic Wire Bonding Taper

Parameters[“SMF Core Diameter”]int/float

Single Mode Fiber core Diameter

Parameters[“SMF Cladding Diameter”]int/float

Single Mode Fiber Cladding Diameter

Parameters[‘x res’]int/float

Mesh x-Axis

Parameters[‘Wavelength’]int/float

Wavelength

Parameters[“Mode”]str

Mode to choose from (“fundamental TE mode”, “fundamental TM mode”, “fundamental mode”)

Parameters[“Port Span”]list of floats/ints

List of x,y and z span of the Ports. For this simulation only y and z parametes will be taken.

Return type:

None.

setLenseFiberFDTD(Parameters)[source]
setMMI2x1EMESolver(Parameters)[source]
Parameters:

Parameters (Dictionary) –

Dictionary with all the data needet for the MMI2x1EMESolver. Parameters[‘Substrate Height’] : int/float

Height of the slab.

Parameters[‘MMI Width’]int/float

Width of MMI

Parameters[‘MMI Length’]int/float

Length of MMI

Parameters[‘angle’]int/float

Angle of the Waveguide Walls. it is calculated WG_angle = 90 - angle. For anfle = 90 we get a perfect rect!

Parameters[‘WG Height’]int/float

Heigth of waveguide

Parameters[‘WG Width’]int/float

Width og waveguide

Parameters[‘WG Length’]int/float

Length of waveguide

Parameters[‘Position Offset’]int/float

Offset between the waveguides. If Taper == True then this become the offset betweent he tapers wider sides. Waveguide and Tapers cannot be placed ourside the MMI structure. The minimum distance between Taper and Waveguide is 1 um becouse of manufactering restrictions in the University.

Parameters[‘Offset Input’]int/float

Input waveguide/taper offset.

Parameters[“Taper”]: boolen

Add Taper to the structure on the input and output waveguids

Parameters[‘Taper Length’]: int/float

Lenght of the Taper in Parameters[“Taper”] = True

Parameters[‘y res’]int/float

Mesh cell sizes.

Parameters[‘z res’]int/float

Mesh cell sizes.

Parameters[‘Slab Height’]int/float

Height of the slab.

Parameters[‘Wavelength’]int/float

Wavelength.

Parameters[“Mode”]str

Mode to choose from (“fundamental TE mode”, “fundamental TM mode”, “fundamental mode”)

Parameters[“Port Span”]: list of int/floats

Parameters[“Port Span”] = [Span of Port in x direction, Span of Port in y direction, Span of Port in z direction]

Parameters[“Offset Output”]anything, optional

This function will allow the user to move the outputs in oposite direction. Please dont use it since is there only becouse the maschine of our physic departmant had some proiblems with the LNOI objects design.

Return type:

None.

setMMI2x1FDTDSolver(Parameters)[source]
Parameters:

Parameters (Dictionary) –

Dictionary with all the data needet for the MMI2x1FDTDSolver. Parameters[‘Substrate Height’] : int/float

Height of the slab.

Parameters[‘MMI Width’]int/float

Width of MMI

Parameters[‘MMI Length’]int/float

Length of MMI

Parameters[‘WG Height’]int/float

Heigth of waveguide

Parameters[‘WG Width’]int/float

Width og waveguide

Parameters[‘WG Length’]int/float

Length of waveguide

Parameters[‘Position Offset’]int/float

Offset between the waveguides. If Taper == True then this become the offset betweent he tapers wider sides. Waveguide and Tapers cannot be placed ourside the MMI structure. The minimum distance between Taper and Waveguide is 1 um becouse of manufactering restrictions in the University.

Parameters[‘Offset Input’]int/float

Input waveguide/taper offset.

Parameters[“Taper”]: boolen

Add Taper to the structure on the input and output waveguids

Parameters[‘Taper Length’]: int/float

Lenght of the Taper in Parameters[“Taper”] = True

Parameters[‘x res’]int/float

Mesh cell sizes.

Parameters[‘Slab Height’]int/float

Height of the slab.

Parameters[‘Wavelength’]int/float

Wavelength.

Parameters[“Mode”]str

Mode to choose from (“fundamental TE mode”, “fundamental TM mode”, “fundamental mode”)

Parameters[“Port Span”]: list of int/floats

Parameters[“Port Span”] = [Span of Port in x direction, Span of Port in y direction, Span of Port in z direction]

Parameters[“Offset Output”]anything, optional

This function will allow the user to move the outputs in oposite direction. Please dont use it since is there only becouse the maschine of our physic departmant had some proiblems with the LNOI objects design.

Return type:

None.

setMMI2x2EMESolver(Parameters)[source]
Parameters:

Parameters (Dictionary) –

Dictionary with all the data needet for the MMI2x2EMESolver. Parameters[‘Substrate Height’] : int/float

Height of the slab.

Parameters[‘MMI Width’]int/float

Width of MMI

Parameters[‘MMI Length’]int/float

Length of MMI

Parameters[‘WG Height’]int/float

Heigth of waveguide

Parameters[‘WG Width’]int/float

Width og waveguide

Parameters[‘WG Length’]int/float

Length of waveguide

Parameters[‘Position Offset’]int/float

Offset between the waveguides. If Taper == True then this become the offset betweent he tapers wider sides. Waveguide and Tapers cannot be placed ourside the MMI structure. The minimum distance between Taper and Waveguide is 1 um becouse of manufactering restrictions in the University.

Parameters[“Taper”]: boolen

Add Taper to the structure on the input and output waveguids

Parameters[‘Taper Length’]: int/float

Lenght of the Taper in Parameters[“Taper”] = True

Parameters[‘Slab Height’]int/float

Height of the slab.

Parameters[‘y res’]int/float

Mesh cell sizes.

Parameters[‘z res’]int/float

Mesh cell size.

Parameters[‘Wavelength’]int/float

Wavelength.

Parameters[“Mode”]str

Mode to choose from (“fundamental TE mode”, “fundamental TM mode”, “fundamental mode”)

Parameters[“Port Span”]: list of int/floats

Parameters[“Port Span”] = [Span of Port in x direction, Span of Port in y direction, Span of Port in z direction]

Return type:

None.

setMMI2x2FDTDSolver(Parameters)[source]
Parameters:

Parameters (Dictionary) –

Dictionary with all the data needet for the MMI2x2FDTDSolver. Parameters[‘Substrate Height’] : int/float

Height of the slab.

Parameters[‘MMI Width’]int/float

Width of MMI

Parameters[‘MMI Length’]int/float

Length of MMI

Parameters[‘WG Height’]int/float

Heigth of waveguide

Parameters[‘WG Width’]int/float

Width og waveguide

Parameters[‘WG Length’]int/float

Length of waveguide

Parameters[‘Position Offset’]int/float

Offset between the waveguides. If Taper == True then this become the offset betweent he tapers wider sides. Waveguide and Tapers cannot be placed ourside the MMI structure. The minimum distance between Taper and Waveguide is 1 um becouse of manufactering restrictions in the University.

Parameters[“Taper”]: boolen

Add Taper to the structure on the input and output waveguids

Parameters[‘Taper Length’]: int/float

Lenght of the Taper in Parameters[“Taper”] = True

Parameters[‘x res’]int/float

Mesh cell sizes.

Parameters[‘Slab Height’]int/float

Height of the slab.

Parameters[‘Wavelength’]int/float

Wavelength.

Parameters[“Mode”]str

Mode to choose from (“fundamental TE mode”, “fundamental TM mode”, “fundamental mode”)

Parameters[“Port Span”]: list of int/floats

Parameters[“Port Span”] = [Span of Port in x direction, Span of Port in y direction, Span of Port in z direction]

Return type:

None.

setRingGratingCouplerFDTDSolver(Parameters)[source]
Parameters:

Parameters (Dictionary) –

Dictionary with all the data needet for the RingGratingCouplerFDTDSolver. Parameters[‘Substrate Height’] : int/float

Substrate height.

Parameters[“Length GC”]: int/float

Lenght of the Grating Coupler Area

Parameters[“Input Length GC”]: int/float

An squere Waveguide with the same WG Height as the Grating coupler place before the Grating Coupler region will start.

Parameters[“Output Length GC”]: int/float

An squere Waveguide with the same WG Height as the Grating coupler place after the Grating Coupler region to finish the structure.

Parameters[“Width GC”]: int/float

Widht of the Grating Coupler Area

Parameters[“Hight GC”]: int/float

Hight of the Grating Coupler Material

Parameters[“GC Radius”]: int/float

Radius of the Ring Grating Coupler in um. For Example “Parameters[“GC Radius”] = 25e-6”

Parameters[‘Taper Length’]int/float

Length of the input Taper

Parameters[‘Wavelength’]int/float

Wavelength

Parameters[‘x res’]int/float

Mesh x-Axis

Parameters[“Mode”]str

Mode to choose from (“fundamental TE mode”, “fundamental TM mode”, “fundamental mode”)

Parameters[“Port Span”]list of floats/ints

List of x,y and z span of the Ports. For this simulation only y and z parametes will be taken.

Return type:

None.

setStraightWaveguideEMESolver(Parameters)[source]
Parameters:

Parameters (Dictionary) –

Dictionary with all the data needet for the StraightWaveguideEMESolver. Parameters[‘Substrate Height’] : int/float

Substrate height.

Parameters[‘WG Length’]int/float

Waveguide Length

Parameters[‘WG Height’]int/float

Waveguide hight. Also the height of the MMI section

Parameters[‘WG Width’]int/float

Waveguide width.

Parameters[“Taper”]boolen

If Taper == False, only straight Waveguide will be simulated, If Taper == True an Taper will be simulated

Parameters[‘Taper Width’]int/float

Taper backside Width. Taper Fronside width is the width of the Waveguide

Parameters[‘Taper Length’]int/float

Taper Length

Parameters[‘y res’]: int/float

EME Mesh resolutio,

Parameters[‘z res’]: int/float

EME Mesh resolutio,

Parameters[‘Slab Height’]int/float

Height of the slab.

Parameters[‘Wavelength’]int/float

Wavelength

Parameters[“Waveguide Angle”]int/float

This Parameter will set the theta ratation angle of the port. It can be 90 or 180.

Parameters[“Port Span”]list of floats/ints

List of x,y and z span of the Ports. For this simulation only y and z parametes will be taken.

Parameters[“Mode”]str

Mode to choose from (“fundamental TE mode”, “fundamental TM mode”, “fundamental mode”)

Parameters[“Taper Type”]anything, optional

This function will check if you have set Parameters[“Taper Type”] to anaything, for example “Parameters[“Taper Type”]=1” and if so it will design an Inverse Taper Structure with no Cladding. Here the option “Cladding” is not active and will be ignored. If the user didnt give the “Taper Type” as dictionary key, then an normal taper structure will be simulated.

If Parameters[“Taper Type”] is given, themn the user need to set couple more parameters:
Parameters[‘PWB Taper Width Back’]int/float

Photonic Wirebonding (PWB) Width back side (to the Photonic Wire Bonding)

Parameters[‘PWB Taper Hight Back’]int/float

Photonic Wire Bonding Height back side (to the Photonic Wire Bonding)

Parameters[‘PWB Taper Width Front’]int/float

Photonic Wirebonding (PWB) Width front side (to the photonic waveguide)

Parameters[‘PWB Taper Hight Front’]int/float

Photonic Wire Bonding Height front side (to the photonic waveguide)

Parameters[‘PWB Taper Length’]int/float

Length of the Photonic Wire Bonding Taper

Return type:

None.

setStraightWaveguideFDTDSolver(Parameters)[source]
Parameters:

Parameters (Dictionary) –

Dictionary with all the data needet for the StraightWaveguideFDTDSolver. Parameters : Dictionary

Dictionary with all the data needet for the Bend Wavaguide. Data needet:

Parameters[‘Substrate Height’]int/float

Substrate height.

Parameters[‘WG Length’]int/float

Waveguide Length

Parameters[‘WG Height’]int/float

Waveguide hight. Also the height of the MMI section

Parameters[‘WG Width’]int/float

Waveguide width.

Parameters[“Taper”]boolen

If Taper == False, only straight Waveguide will be simulated, If Taper == True an Taper will be simulated

Parameters[‘Taper Width’]int/float

Taper backside Width. Taper Fronside width is the width of the Waveguide

Parameters[‘Taper Length’]int/float

Taper Length

Parameters[‘x res’]int/float

EME Mesh resolutio,

Parameters[‘Slab Height’]int/float

Height of the slab.

Parameters[‘Wavelength’]int/float

Wavelength

Parameters[“Waveguide Angle”]int/float

This Parameter will set the theta ratation angle of the port. It can be 90 or 180.

Parameters[“Port Span”]list of floats/ints

List of x,y and z span of the Ports. For this simulation only y and z parametes will be taken.

Parameters[“Mode”]str

Mode to choose from (“fundamental TE mode”, “fundamental TM mode”, “fundamental mode”)

Parameters[“Taper Type”]anything, optional

This function will check if you have set Parameters[“Taper Type”] to anaything, for example “Parameters[“Taper Type”]=1” and if so it will design an Inverse Taper Structure with no Cladding. Here the option “Cladding” is not active and will be ignored. If the user didnt give the “Taper Type” as dictionary key, then an normal taper structure will be simulated.

If Parameters[“Taper Type”] is given, themn the user need to set couple more parameters:
Parameters[‘PWB Taper Width Back’]int/float

Photonic Wirebonding (PWB) Width back side (to the Photonic Wire Bonding)

Parameters[‘PWB Taper Hight Back’]int/float

Photonic Wire Bonding Height back side (to the Photonic Wire Bonding)

Parameters[‘PWB Taper Width Front’]int/float

Photonic Wirebonding (PWB) Width front side (to the photonic waveguide)

Parameters[‘PWB Taper Hight Front’]int/float

Photonic Wire Bonding Height front side (to the photonic waveguide)

Parameters[‘PWB Taper Length’]int/float

Length of the Photonic Wire Bonding Taper

Return type:

None.

setWDMEMESolver(Parameters)[source]
Parameters:

Parameters (Dictionary) –

Dictionary with all the data needet for the WDMEMESolver. Parameters[‘Substrate Height’] : int/float

Substrate height.

Parameters[‘MMI Width’]int/float

Width of the MMI.

Parameters[‘MMI Length’]int/float

Length of the MMI.

Parameters[‘WG Height’int/float

Waveguide hight. Also the height of the MMI section

Parameters[‘WG Length’]int/float

Waveguide length.

Parameters[‘WG Width’]int/float

Waveguide width.

Parameters[‘Taper Width’]int/float

Taper backside width, frontside width is the waveguide width.

Parameters[‘Taper Length’]int/float

Taper Length

Parameters[‘y res’]int/float

Mesh y-Axis

Parameters[‘z res’]int/float

Mesh z-Axis

Parameters[‘Slab Height’]int/float

Slab Height.

Parameters[‘Wavelength’]int/float

Wavelength

Parameters[‘Angle Thetha’]boolen

Angle for the input and output waveguides

Parameters[“Mode”]str

Mode to choose from (“fundamental TE mode”, “fundamental TM mode”, “fundamental mode”)

Parameters[“Port Span”]: list of int/floats

Parameters[“Port Span”] = [Span of Port in x direction, Span of Port in y direction, Span of Port in z direction]

raises ValueError:

DESCRIPTION.

rtype:

None.

setWaveguideFDESolver(Parameters)[source]
Parameters:

Parameters (Dictionary) –

Dictionary with all the data needet for the WaveguideFDESolver. Parameters : Dictionary

Dictionary with all the data needet for the Bend Wavaguide. Data needet:

Parameters[‘Substrate Height’]: int/float

Substrate height

Parameters[‘WG Height’]int/float

Heigth of waveguide

Parameters[‘y res’]int/float

Mesh cell sizes.

Parameters[‘z res’]int/float

Mesh cell sizes.

Parameters[‘Slab Height’]int/float

Height of the slab.

Parameters[‘Wavelength’]int/float

Wavelength.

Return type:

None.

Constructor.Constructor.Help()[source]
class Constructor.Constructor.HelpSubject[source]

Bases: object

Help_LoadingBar()[source]
Help_LogFile()[source]
classmethod Help_Objects()[source]
Help_RemoveObject()[source]
Help_Results()[source]
Help_Solvers()[source]
Help_StartSimulation()[source]
Result_extraction(NumberResults)[source]
Solvers(NumberSolver)[source]
StartSolver(NumberStart)[source]
Structures(Number)[source]
Constructor.Constructor.Logfile(data, path)[source]
Parameters:

data (list) – List of dictionarys with all the data for the simulation (obj.ReturnLogInfo()) and the parameters (Parameters dictionary) given to the simulation.

Return type:

None.

Constructor.Constructor.arange(start, stop, step=1, endpoint=True)[source]
Constructor.Constructor.loadingBar(count, total, size=1)[source]
Parameters:
  • count (int) – count is the loop iteration variable. For example count = i in case “for i in range(…):” is used.

  • total (int) – Total number of bars that must be loaded for the respective process. For example total = 10 in case “for i in range(10):”

  • size (int, optional) – Defines how many “=” signs are used when the loading bar is printed in the console. The default is 1.

Return type:

None.

Module contents

Indices and tables