A computational E&M package for learning the fundimentals
Project description
pyEMLearn
A computational E&M library written in python, intended for learning the fundamentals
Installation
pyEMLearn
is available through pip
:
$ pip3 install pyEMLearn
(or just pip
if you are on windows, or have aliased your python3
installation)
Development
To install toward developing this package: fork and download this repo from github, open a terminal in the head directory and run:
$ python3 -m venv venv
$ source venv/bin/activate
(venv) $ pip install -r requirements.txt
(venv) $ python setup.py install
This will create a virtual environment, activate it, install the required packages,
then install the current version of pyEMLearn
into your virtual environment.
After you have made changes to the source code, re-run the last line to install your modified version.
Creating source packages
$ python3 setup.py sdist bdist_wheel
Uploading to PyPI
$ python3 -m twine upload dist/*
Development Philosophy
This package is really intended as a learning tool, rather than a full computational workhorse. As a result, much of the core code is deliberately inefficient so as to be more closely connected with the theory of the scattering (transfer) matrix methods. There are plenty of other computational E&M libraries which are both more efficient and have more sophisticated features (like EMpy
, EMUstack
and Rigorous-Couple-Wave-Analysis
] to name a few). So, development in pyEMLearn
will always prioritize user-clarity over code-efficiency.
Acknowledgements
The authors would like to thank Dr. Raymond Rumpf (of UTEP) for his extensive educational resources, on which this project is principally based.
To Do
- Comment Everything . . .
- Add some descriptive examples
- Add some better examples
- Restructure the catalog
- Add more materials to the catalog
- Add transmittance matrix approach
- Create
source
object, which can produce k-vecs and polarization vecs - Create
field
object? which can track E? - Add Poynting vector functionality to
field
object - Begin thinking about RCWA
- Fix RCWA, its broke AF
V1 To Do, Obsolete
- Flesh out interface object with "t" matrix
- Add interface object to layers objects (and halfplane objects)
- Modify utils objects to be more general
- Change materials repr functions to NOT return parameters, put that in a "summary" function
- Finish Docstring-ing
- Restructure the materials catalog
- Add more asserts to System.init to make sure that transmission layers arn't actually injection layers, or gap layers arn't actually just thickness zero layers, etc.
- Improve computational efficiency for LHI materials? (using 2c.pdf)
- Spend some time making all the class variable names consistent in their case/-/_ usage
- Add config and license files
- Get Setup on PyPi
- Add anisotropy functionality
- Make some better examples (bragg reflectors)
- Add parallelization options for parameter sweep calculations
- Add ellipsometric variable support
- Add internal field support
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 Distribution
Built Distribution
Hashes for pyEMLearn-0.2.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7e59c1cca20c95fe7842f44c75aa8691c722cff95e2bd4e5613837d6f9fc7953 |
|
MD5 | 4807392b272bb2e517c6254d98819c96 |
|
BLAKE2b-256 | 07bbba8a44aa2e02805a1e0c481797d1be5ba54a7cb68ef34e2a39d13e5c3658 |