Skip to main content

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

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)

Source distribution for pyEMLearn 0.2.0
File Size Uploaded
pyEMLearn-0.2.0.tar.gz 42.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyEMLearn 0.2.0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.0

2 release files

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