A fully vectorial finite difference waveguide mode solver. Based on the algorithm of Zhu and Brown
Project description
philsol
Modes for the Masses (Massless?)
Fed up with relying on expensive proprietary software for your electromagnetic waveguide research? philsol might just be the package for you. In a world where high performance hardware is cheaper than specialist software, philsol throws elegence and sophistication out of the window and replaces it with brute force.
This is a fully vectorial finite difference waveguide mode solver and a direct Python implimentation of the algorithm found in the paper: 'Full-vectorial finite-difference analysis of microstructured optical fibres', by Zhu and Brown.
Warning: I haven't thoroughly tested so be wary and check the results are sensible...
New Warning: Original paper by Zhu and Brown is in gaussian not S. I. units. To correct use conversion table here.
Installation
- Install using pip with command 'pip install philsol'
- If you can't be bothered, the important part is the function eigenbuild in core.py.
Examples
- Commented example projects can be found in the examples directory.
- To run the examples, first install philsol to your Python environment (see above)
Features
Solver
- Solves vector Maxwell(Helmholtz) equations in 2D for arbitary refractive index profile.
- Return x and y componants of electric field.
- philsol can handle anisotropic refractive indices with diagonal tensor.
- Currently hard coded with conductive boundary.
- Choice of solving routines: the default scipy.sparse solver or Slepc (slepc4py and petsc4py) this libraries can be fiddly to set up but are very heavily featured including some limited GPU support.
- Extra field componants Ez, Hx, Hy, Hz can be calculated from construct module
- Periodic boundary conditions
Geometry building
- The quickest way of importing geometry is with a bitmap image
- See examples/example_image.py for an example in loading .bpm images
- See examples/example_build.py for an example in building geometry using PIL/Pillow
To do
- More intelligent geometry aproximation (e.g pixel interpolation on curved boundaries)
- More boundry condition options Bloch, PML...
- GPU eigensolving
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file philsol-0.25.tar.gz
.
File metadata
- Download URL: philsol-0.25.tar.gz
- Upload date:
- Size: 6.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.6 CPython/3.9.2 Linux/4.19.180-1-MANJARO
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | be1d5e4f588f87aaf1f1c59dde9203cf0df5565af3e700ff0fddf5242021a8bb |
|
MD5 | 50c930d5f35583a7feaf305f3996db66 |
|
BLAKE2b-256 | b77cb7db2d306b48bd58fee5a0b17f6706084a06e182d24ffa08ea3e6d92bd95 |
File details
Details for the file philsol-0.25-py3-none-any.whl
.
File metadata
- Download URL: philsol-0.25-py3-none-any.whl
- Upload date:
- Size: 6.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.6 CPython/3.9.2 Linux/4.19.180-1-MANJARO
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 057224653fb872b82bfdb24d1856afcef58636e6e47d5aed82c6ed6b5e3b3be5 |
|
MD5 | d42ca101ea8a0d7675389444b4972ed4 |
|
BLAKE2b-256 | 22dbd6e8e6aa58cbe4d9f5008087c650f30eb44308af74773b199fe26e2d86ef |