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
File details
Details for the file pyEMLearn-0.2.0.tar.gz
.
File metadata
- Download URL: pyEMLearn-0.2.0.tar.gz
- Upload date:
- Size: 42.4 kB
- Tags: Source
- Uploaded using 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
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b4953b8585fdf5455b43e00bd8363058c2b2b5a3d56b58d0100cb1d714074cae |
|
MD5 | fab393733d730917d69188f64b04461f |
|
BLAKE2b-256 | b183e7bfebc96aa590c0af9a0eae10a2db9983e31015ab7c699beadaec763740 |
File details
Details for the file pyEMLearn-0.2.0-py3-none-any.whl
.
File metadata
- Download URL: pyEMLearn-0.2.0-py3-none-any.whl
- Upload date:
- Size: 44.4 kB
- Tags: Python 3
- Uploaded using 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
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7e59c1cca20c95fe7842f44c75aa8691c722cff95e2bd4e5613837d6f9fc7953 |
|
MD5 | 4807392b272bb2e517c6254d98819c96 |
|
BLAKE2b-256 | 07bbba8a44aa2e02805a1e0c481797d1be5ba54a7cb68ef34e2a39d13e5c3658 |