Metadata-Version: 2.1
Name: pyEMLearn
Version: 0.2.0
Summary: A computational E&M package for learning the fundimentals
Home-page: https://github.com/jonathanvanschenck/pyEMLearn
Author: Jonathan D B Van Schenck
Author-email: vanschej@oregonstate.edu
License: UNKNOWN
Description: # pyEMLearn
        A computational E&amp;M library written in python, intended for learning the fundamentals
        
        # Installation
        `pyEMLearn` is available through `pip`:
        ```bash
         $ 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:
        ```bash
         $ 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
        ```bash
         $ python3 setup.py sdist bdist_wheel
        ```
        
        ## Uploading to PyPI
        ```bash
         $ 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&amp;M libraries which are both more efficient and have more sophisticated features (like [`EMpy`](https://github.com/lbolla/EMpy), [`EMUstack`]( https://github.com/bjornsturmberg/EMUstack) and [`Rigorous-Couple-Wave-Analysis`](https://github.com/zhaonat/Rigorous-Coupled-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](https://empossible.net/academics/emp5337/), 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
         - [x] Add transmittance matrix approach
         - [x] Create `source` object, which can produce k-vecs and polarization vecs
         - [x] Create `field` object? which can track E?
         - [ ] Add Poynting vector functionality to `field` object
         - [x] Begin thinking about RCWA
         - [ ] Fix RCWA, its broke AF
        # V1 To Do, Obsolete
         - [x] Flesh out interface object with "t" matrix
         - [x] 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
         - [x] 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.
         - [x] Improve computational efficiency for LHI materials? (using 2c.pdf)
         - [ ] Spend some time making all the class variable names consistent in their case/-/_ usage
         - [x] Add config and license files
         - [x] Get Setup on PyPi
         - [ ] Add anisotropy functionality
         - [ ] Make some better examples (bragg reflectors)
         - [ ] Add parallelization options for parameter sweep calculations
         - [x] Add ellipsometric variable support
         - [x] Add internal field support
        
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.6
Description-Content-Type: text/markdown
