GithubHelp home page GithubHelp logo

rennelou / optical-waveguide Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 0.0 396.25 MB

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

Rust 97.94% Python 2.06%
integrated-circuits optical photonics pic simulation simulator optical-devices

optical-waveguide's Introduction

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

optical-waveguide's People

Contributors

rennelou avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.