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
sourceobject, which can produce k-vecs and polarization vecs - Create
fieldobject? which can track E? - Add Poynting vector functionality to
fieldobject - 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
Metadata
Release files for pyEMLearn 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pyEMLearn-0.2.0.tar.gz | 42.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pyEMLearn-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 86.8 kB
Release files / pyEMLearn-0.2.0.tar.gz
| Download URL | pyEMLearn-0.2.0.tar.gz |
|---|---|
| Size | 42.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b4953b8585fdf5455b43e00bd8363058c2b2b5a3d56b58d0100cb1d714074cae
|
|
BLAKE2b-256 checksum How to use checksums |
b183e7bfebc96aa590c0af9a0eae10a2db9983e31015ab7c699beadaec763740
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.2.0.post20200210 requests-toolbelt/0.9.1 tqdm/4.42.1 CPython/3.7.6
|
Release files / pyEMLearn-0.2.0-py3-none-any.whl
| Download URL | pyEMLearn-0.2.0-py3-none-any.whl |
|---|---|
| Size | 44.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7e59c1cca20c95fe7842f44c75aa8691c722cff95e2bd4e5613837d6f9fc7953
|
|
BLAKE2b-256 checksum How to use checksums |
07bbba8a44aa2e02805a1e0c481797d1be5ba54a7cb68ef34e2a39d13e5c3658
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.2.0.post20200210 requests-toolbelt/0.9.1 tqdm/4.42.1 CPython/3.7.6
|