Skip to content

It's a simulator of optical waveguides on frequency domain. Focused on rectangular geometries for photonics integrated applications.

Notifications You must be signed in to change notification settings

rennelou/optical-waveguide

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

optical-waveguide

It's a simulator of optical waveguides on frequency domain. Focused on rectangular geometries for photonics integrated applications.

Optical Waveguides

Waveguides are devices builded to conduct a wave through itself. Common examples are antennas, optical fibers, transmission lines and etc. They are important devices for semiconductor industries because the current frequencies which microchips operate are high enough for the nets to became electrical waveguides.

Specially for optical applications, optical waveguides are light conductors which have the property to guide the light for long distances. The most famous device of this family is the optical fiber who is largely used on communication industry. However, the interest for optical waveguide is growing on semiconductor industry because transfering from electronic integrated devices (electrical domain) to photonic integrated devices (light domain) decreases the energy consumption and heat generation, these are the main recent difficulties for the semiconductor industry scale up the performance of the new microchips.

Given this context, this project is a simulator for rectangular optical waveguides. The rectangular geometry is an important characteristic because it’s the form used to construct the current electronic integrated devices, increasing the compatibility with the current manufacturing methods.

Getting Started

💻 Prerequisites

🚀 Installation

To install the optical_waveguide simulator, follow up:

Linux:

git clone https://github.com/rennelou/optical-waveguide.git
cd optical-waveguide
python -m venv .env
source .env/bin/activate
maturin develop

☕ Running a python example

On examples folder has some examples of using, to run one of them follow up:

python examples/bidimensional.py

alt text

☕ Enabling command line interface

The optical-waveguide simulator has a command line interface too, to enable it follow up:

cargo install --path .
PATH="$PATH:$HOME/.cargo/bin"

Now, we have a program called optical_waveguide on the $HOME/.cargo/bin folder and we inserted this folder on the PATH enviroment variable so the OS can find the simulator. If you want to make this change persistent, add PATH="$PATH:$HOME/.cargo/bin" on ~/.bashrc file.

Running a Cli Example

The simulator cli takes two arguments. The first is a filename for the simulation description on json format, the second is the result filename which will be generated.

Create the my_bidimensional_simulation.json file:

{
  "x_axis": {
    "width": 40,
    "delta": 0.02  
  },
  "z_axis": {
    "width": 750,
    "delta": 0.5
  },
  "core": {
    "n0": 3.377,
    "n": 3.38,

    "width"
    "x": 20
  },
  "beam": {
    "k": 5.4636,
    "alpha": 0.0,
    "x": 20,
    "width": 4
  }
}

Then, run:

optical_waveguide my_bidimensional_simulation.json my_output_file.h5

The result will be a HDF5 file called my_output_file.h5 which is formed from the hierarchy below:

/               root
/deltas         discretization steps of the simulation grid
/core           refractive index distribution of the device simulated
/eletric_field  electrical field distribution of the simulation
/intensity      light intensity distribution of the simulation

📫 To contribute

To contribute with this project, follow up:

  1. Fork this repository.
  2. Create a branch: git checkout -b <new_branch>.
  3. Make your changes and commit them: git commit -m '<new_commit>'
  4. Push your branch to original: git push origin optical-waveguide / rennelou
  5. Create a pull request.

For more information how to create a pull request creating a pull request.

To do

This project still on the beta fase.

The next features:

  • parallelize the algorithm
  • optimize dephts_cartesian_product function
  • create a composition of cores
  • create a composition of beams

unfortunately this project doesn't have a total unit test cover. Some cases which the unit needs to be tested:

  • test the panic conditions
  • gaussian beam with geometry larger than the simulation grid

🤝 Contributors

Thank you:

Foto do rennelou no GitHub
Rennê Lou

😄 Be a contributor

Do you want to be a contributor? Click here and discover how to become one.

📝 License

This project is under the MIT license. See the license file for more details.

⬆ Back to top

About

It's a simulator of optical waveguides on frequency domain. Focused on rectangular geometries for photonics integrated applications.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published