Meta | |||
Testing | |||
PyPI | |||
Anaconda |
This project aims to develop an useful tool design and optimize fiber optic tapered component. SuPyMode is a Python library linked to a c++ core allowing for a flexible interface and fast computing core. The library also aims to offer the end-user a great vizual tools for data analysis. To this day, SuPyMode as been proven a useful tool to develop very-short 2x1 and 3x1 modally specific photonic lantern with very low loss and cross-talk.
- Fast and efficient simulation of fiber optic tapered components.
- User-friendly interface for easy integration into existing workflows.
- Comprehensive visualization tools for data analysis and interpretation.
SuPyMode is available on PyPI and Anaconda. Install it with:
pip install SuPyMode
conda install SuPyMode
See the online documentation for detailed usage and additional examples.
Below is a short example computing the mode propgation in a simple fiber.
from SuPyMode.workflow import Workflow, fiber_loader, Boundaries, BoundaryValue, DomainAlignment
wavelength = 1550e-9
fiber = fiber_loader.load_fiber('SMF28', clad_refractive_index=1.4444, remove_cladding=False)
boundaries = [
Boundaries(right=BoundaryValue.SYMMETRIC, top=BoundaryValue.SYMMETRIC),
Boundaries(right=BoundaryValue.SYMMETRIC, top=BoundaryValue.ANTI_SYMMETRIC)
]
workflow = Workflow(
fiber_list=[fiber], # List of fiber to be added in the mesh, the order matters.
wavelength=wavelength, # Wavelength used for the mode computation.
resolution=80, # Number of point in the x and y axis [is divided by half if symmetric or anti-symmetric boundaries].
x_bounds=DomainAlignment.LEFT, # Mesh x-boundary structure.
y_bounds=DomainAlignment.BOTTOM,# Mesh y-boundary structure.
boundaries=boundaries, # Set of symmetries to be evaluated, each symmetry add a round of simulation
n_sorted_mode=3, # Total computed and sorted mode.
n_added_mode=2, # Additional computed mode that are not considered later except for field comparison [the higher the better but the slower].
plot_geometry=True, # Plot the geometry mesh before computation.
auto_label=True, # Auto labeling the mode. Label are not always correct and should be verified afterwards.
itr_final=0.05, # Final value of inverse taper ratio to simulate
index_scrambling=0 # Scrambling of refractive index value in order to lift mode degeneracy [useful for some analysis]
)
workflow.superset.plot(plot_type='field', itr_list=[1.0, 0.1])
workflow.superset.plot(plot_type='index')
workflow.superset.plot(plot_type='normalized-coupling')
workflow.superset.plot(plot_type='adiabatic')
For development or manual compilation, clone the repository and run:
git submodule update --init
mkdir build && cd build
cmake ../ -G"Unix Makefiles"
sudo make install
cd ..
python -m pip install .
Run the unit tests with:
pip install SuPyMode[testing]
pytest
If you use SuPyMode in academic work, please cite:
@article{de2024supymode,
title={SuPyMode: an open-source library for design and optimization of fiber optic components},
author={de Sivry-Houle, Martin Poinsinet and Becerra Deana, Rodrigo Itzamna and Virally, St{\'e}phane and Godbout, Nicolas and Boudoux, Caroline},
journal={Optics Continuum},
volume={3},
number={2},
pages={242--255},
year={2024},
publisher={Optica Publishing Group}
}
For questions or contributions, contact martin.poinsinet.de.sivry@gmail.com.