I am simulating a waveguide using diffractio python library (https://diffractio.readthedocs.io/en/latest/readme.html). The idea is to create a single mode waveguide using wave propogation method. First I create a waveguide that has specific refractive index. Refractive index profile gives the distribution of refractive indexes on the structure. I create a structure that has a refractive index of a Silicon, for that I calculate the effective refractive index using a simple mode solver here: https://www.computational-photonics.eu/oms.html The results of the structure and index profile are shown in the pictures below:
Next is to defining the source, which will be a gaussian that will be propgated inside the waveguide. The width of the guassian is taken from the FWHM of the mode profile.
Now that the mask and the gaussian are defined I propogate the field inside the waveguide using the above mentioned library the code that does that is just u1.BPM(verbose=True, division=False)
. The wavelength of light is 1.55*um.
After the propogation I get the following image. And next I calculate the overlap integral between the source and the output to find the tranmission (where I normalize the output and the input fields). In the picture is the intensity inside the waveguide and the BPM picture (how the wave propogates inside the waveguide). The questions:
- How to decompose the wave to get the Ex, Ey, Ez components of the electric field.
- How to understand if the waveguide is indeed single mode?
I have compared the results with commercial software (e.g Lumerical FDTD) and it looks "correct" how can I find out that this method works for a simple waveguide simulations. The picture below are visual comparison between lumerical FDTD and python diffraction interface module.
enter image description here