Skip to main content

Welcome to the Imodulator's repository

Imodulator is an all-in-one tool for the simulation of electro-optic phase modulators.
Simply define your geometry and materials, and then send the information to the various solvers available — including optical mode solver, RF mode solver with small-signal analysis, charge transport simulations, and electro-optic interaction simulations.

Check out the docs to see how to install and use this package.


Current Limitations

For the moment, the full functionality of the Imodulator package is limited to InGaAsP alloys lattice-matched to InP. However, when we consider the different parts of the simulator, we have various limitations that may or may not be relevant.

  • OpticalSimulatorFEMWELL:
    There is virtually no limitation here. As long as you provide a refractive index for each polygon, you're good to go.

  • OpticalSimulatorMODE:
    There is virtually no limitation here. As long as you provide a refractive index for each polygon, you're good to go.

  • RFSimulatorFEMWELL:
    There is also no limitation in this solver. You need only to input the material properties and it will work.

  • ChargeSimulatorSolcore:
    Solcore has been developed with solar cells in mind, and we have found that the internal library of material parameters was limiting for the purpose of this package.
    Therefore, we have made a connection between Solcore and openbandparams so that we can use arbitrary III–V alloys (excluding strain effects) in solving the Poisson–drift–diffusion equations.
    The limitation here is that we must work with III–V alloys only.
    Furthermore, the mobility values are calculated through Solcore via mobility_solcore, and we are therefore limited to:

    • InGaAs
    • InGaP
    • AlGaAs
    • InAlAs
    • InGaAsP
  • ChargeSimulatorNN:
    There isn’t really a limitation here. We only need to provide materials supported by NextNano.

  • ElectroOpticalModels:
    We have only included a model compatible with electro-optical effects that take place in InGaAsP alloys lattice-matched to InP. However, the software has been written to allow for any model, as long as we provide a

    formula

    function.


Where You Can Contribute

  • Generalization of openbandparams to include other semiconductor compounds such as Si and SiGe.
  • Generalization of mobility_solcore to include other mobility models explored in Sotoodeh et al., 2000.
    Alternatively, one could explore the inclusion of those models directly in openbandparams.
  • Include more electro-optic models.
  • Include surface impedance boundary conditions in the RF mode solver.
  • Include a 2D PDD solver based on sesame integrated with openbandparams
  • Improve the documentation (help wanted!).

If you have any questions please reach out to the Discussions tab and we can brainstorm some ideas.

Acknowledgements

This work was funded by the European Union through the QuGANTIC project and the Dutch National Growth Fund and PhotonDelta. Views and opinions expressed are however those of the author(s) only and do not necessarily reflect those of the European Union or the European Innovation Council. Neither the European Union nor the granting authority can be held responsible for them.

Contributors

  • Duarte Silva (Eindhoven University of Technology)
  • Ali Kaan Sünnetçioğlu (Eindhoven University of Technology)

Was this package useful for your work?

The DOI tracking for this project is handled by Zenodo, and a single DOI shall be generated per official release.

Version DOI
v1.0.1 DOI

When translating to a bibtex entry, please consider using the following formatting to display the author names properly:

@MISC{,
  title     = "Imodulator: Initial release",
  author    = "{Duarte J.F. da Silva, Ali Kaan Sünnetçioğlu}",
  abstract  = "Full Changelog:
               https://github.com/duarte-jfs/Imodulator/compare/v1.0.0...v1.0.1",
  publisher = "Zenodo",
  year      =  2025,
  url       = {https://github.com/duarte-jfs/Imodulator/releases/tag/v1.0.1},
  doi       = {https://doi.org/10.5281/zenodo.17633733}
}

In case you are using code stemming from a development branch, we advise to use the same DOI as the most recent release, but with the altered bibtex entry:

@MISC{,
  title     = "Imodulator: development",
  author    = "{Duarte J.F. da Silva, Ali Kaan Sünnetçioğlu}",
  abstract  = "Full Changelog:
               https://github.com/duarte-jfs/Imodulator/compare/v1.0.0...v1.0.1",
  publisher = "Zenodo",
  year      =  2025,
  url       = {https://github.com/duarte-jfs/Imodulator/tree/development},
  doi       = {https://doi.org/10.5281/zenodo.17633733}
}

Metadata

Release files for imodulator 1.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for imodulator 1.0.2
File Size Uploaded Provenance Actions
imodulator-1.0.2.tar.gz 92.8 kB Without provenance Details for imodulator-1.0.2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for imodulator 1.0.2
File Interpreter ABI Platform Actions
imodulator-1.0.2-py3-none-any.whl Python 3 none any Details for imodulator-1.0.2-py3-none-any.whl

Total release size: 189.4 kB

Release files / imodulator-1.0.2.tar.gz

Download URL imodulator-1.0.2.tar.gz
Size 92.8 kB
Tags Source
SHA-256 checksum
How to use checksums
dcd5804f16d51d4d5086cf8ee8b772380d9c4fdd88b3f88209120520b6839fe3
BLAKE2b-256 checksum
How to use checksums
ec0d0fc6d852375f6ddd9f3b441629e3ee8e01224aec6fb7582ab7ffe35943f2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.16

Release files / imodulator-1.0.2-py3-none-any.whl

Download URL imodulator-1.0.2-py3-none-any.whl
Size 96.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a1b24563f48be681bf5467dc63a3771548dffadfa833b2aa2270276d6cededcd
BLAKE2b-256 checksum
How to use checksums
5b38b51deebf710490f84fd23539f2ada461a52ac0459e25663ef632e314ef41
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.16

Security for imodulator 1.0.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page