Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyEMLearn-0.2.0.tar.gz (42.4 kB view hashes)

Uploaded Source

Built Distribution

pyEMLearn-0.2.0-py3-none-any.whl (44.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page