BPM / README.md
jwt625's picture
fix readme
abd5ca8

A newer version of the Gradio SDK is available: 6.3.0

Upgrade
metadata
title: BPM
emoji: 📈
colorFrom: green
colorTo: pink
sdk: gradio
sdk_version: 5.28.0
app_file: app.py
pinned: false
short_description: beam go brrrr

BPM

Beam Propagation Method

BPM is a Python library for simulating beam propagation in integrated photonics using the Beam Propagation Method (BPM). The package provides functions to generate refractive index distributions for various structures (e.g., lenses, waveguides, and MMI splitters), a mode solver for slab waveguides, and BPM propagation routines with support for Perfectly Matched Layers (PML) for absorbing boundary conditions.

Currently it is 2D only, and use analytic solutions to launch slab modes. Propagation direction is upward and is called z. Transverse direction is x.

Features

  • Generate refractive index distributions:
    • Spherical lens
    • S-bend waveguide
    • MMI-based splitter
  • Solve for guided slab waveguide modes (even/odd modes)
  • BPM propagation using a Runge-Kutta integrator
  • PML boundary absorption
  • [] Import from GDSII

Installation

Clone the repository and install using pip:

git clone https://github.com/jwt625/bpm.git
cd bpm
pip install -e .

Examples

Slab mode solver and launcher:

image

Refractive index distribution of an MMI:

image

Simulated example MMI:

image

Simulated example S bend. The waveguide is multimode:

image

References

Optical tomographic reconstruction based on multi-slice wave propagation method

Light propagation through microlenses: a new simulation method

Light propagation in graded-index optical fibers

Numerical Simulation of Optical Wave Propagation with Examples in MATLAB

Photonic Devices for Telecommunications

Papers cited in chapter 2.2.1 of the book: