A package for light propagation in fiber optics.
Project description
Meta |
|||
Testing |
|||
PyPI |
|||
Anaconda |
SuPyMode
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.
Features
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.
Installation
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.
Quick example
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')
Building from source
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 .
Testing
Run the unit tests with:
pip install SuPyMode[testing]
pytest
Citing SuPyMode
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}
}
Contact
For questions or contributions, contact martin.poinsinet.de.sivry@gmail.com.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file supymode-2.2.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.
File metadata
- Download URL: supymode-2.2.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
- Upload date:
- Size: 2.4 MB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.25
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cad0985470bec7c144037825a59441f29609dcfb9b44a7957db2a5930a6cdb64
|
|
| MD5 |
0fa0984dc8fa423b2ff24857b131f7a8
|
|
| BLAKE2b-256 |
182d3e6374f8cd8c804ee569703b43cefe047783f9d39a5a30b404e198d32f6f
|
File details
Details for the file supymode-2.2.0-cp312-cp312-macosx_15_0_arm64.whl.
File metadata
- Download URL: supymode-2.2.0-cp312-cp312-macosx_15_0_arm64.whl
- Upload date:
- Size: 3.2 MB
- Tags: CPython 3.12, macOS 15.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.25
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3ac69f728ec7bee7cfc0644408ca03527b6ee7c576983cf42886b0949269aeb1
|
|
| MD5 |
f64e42b4f0964f4ae5941564dbede1c5
|
|
| BLAKE2b-256 |
1b359a461dc04ddbf85dd24ac75ca44ec671c893e5bdf4459f570590886daf54
|
File details
Details for the file supymode-2.2.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.
File metadata
- Download URL: supymode-2.2.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
- Upload date:
- Size: 1.5 MB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.25
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5ed5853a911bacad2e1bf3d3c00b8e78d2878c458c918629e7181292988e1158
|
|
| MD5 |
5ac8100fb8c2dace53f33e1b87d9dd6f
|
|
| BLAKE2b-256 |
56be5325ae1082916a411ba08e1e8a1c00476eb77401f7eb727003843987c236
|
File details
Details for the file supymode-2.2.0-cp311-cp311-macosx_15_0_arm64.whl.
File metadata
- Download URL: supymode-2.2.0-cp311-cp311-macosx_15_0_arm64.whl
- Upload date:
- Size: 2.4 MB
- Tags: CPython 3.11, macOS 15.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.25
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
625c935220c86e37c2f703d261840547b5c690834322bc1df15776e6e704b99a
|
|
| MD5 |
0aa4103b9caa3c2b3123aa62c3477640
|
|
| BLAKE2b-256 |
aa8dda6e8e09920f6f5860d28da1cdaa01af82fd7dedd06827467ab739dd9568
|