Metadata-Version: 2.1
Name: armmwave
Version: 0.1.0
Summary: Calculate mm-wave transmittance and reflectance of materials
Home-page: https://github.com/anadolski/armmwave
Author: Andrew Nadolski
Author-email: andrew.nadolski@gmail.com
License: MIT
Description: [![Build 
        Status](https://travis-ci.org/anadolski/armmwave.svg?branch=master)](https://travis-ci.org/anadolski/armmwave)
        [![codecov](https://codecov.io/gh/anadolski/armmwave/branch/master/graph/badge.svg)](https://codecov.io/gh/anadolski/armmwave)
        ![PyPI](https://img.shields.io/pypi/v/armmwave.svg)
        ![PyPI - License](https://img.shields.io/pypi/l/armmwave.svg)
        # armmwave
        Code that calculates transmittace and reflectance of materials at millimeter 
        wavelengths.
        
        This software was developed to aid in development of anti-reflection coatings 
        for millimeter-wave optics---specifically, for optics used in Cosmic Microwave 
        Background (CMB) experiments. CMB experiments have begun to adopt 
        high-refractive index materials for their lenses. While there are many perks to 
        this optical design, there are also a few drawbacks. One of these is reflection.  
        High-refractive index materials---such as aluminum oxide and silicon, both of 
        which are used in CMB experiments---reflect a significant fraction of the light 
        that fall on them. To reduce that fraction we create anti-reflection coatings to 
        cover the lenses.
        
        One way to make a coating that operates over a wide range of frequencies 
        (wavelengths) is to stack layers of different dielectric materials. Working out 
        the transmittance and reflectance of a multilayer dielectric structure is a 
        problem that can be handled using the characteristic matrix method. Enter 
        `armmwave`.
        
        Please note: This code is under active development. While it has been verified 
        against experimental spectroscopic data (~25 to 500 GHz; examples will be 
        uploaded soon), make sure you understand the intricacies of your specific data 
        or model.
        
        # Examples
        `armmwave` provides a means to set up and evaluate models of multilayer 
        dielectric media. To do this, create one or more `Layer`'s (with associated 
        refractive index and thickness---and an optional loss term), create a `Source` 
        layer and `Terminator` layer (which are required for bookkeeping), and a 
        `Model`. By default, reflectance and transmittance is calculated between 500 MHz 
        and 500 GHz, but you can change this if you want. Here's an example model of a 
        sheet of ceramic material (in this case aluminum oxide) in a vacuum:
        
        ```python
        import armmwave.layer as awl
        import armmwave.model as awm
        
        # First create a list of layers (dielectrics) in the order
        # they should be evaluated
        layers = [awl.Source(),
                  awl.Layer(rind=3.1, thick=2e-3), # thickness in meters
                  awl.Terminator()]
        # Now create the model framework, feed it the layers, and run!
        model = awm.Model()
        model.set_up(layers)
        results = model.run()
        ```
        
        `model.run()` returns a dictionary with three keys: `frequency`, 
        `transmittance`, and `reflectance`.
        
        # Contribution guidelines
        This code is under active development. If you have an idea for a feature or use 
        case, please open an issue ticket. Let's talk! If you have an idea and you've 
        already written the code---that's great! Create a pull request and we can go 
        from there.
        
        ## Bugs
        Let's face it: there are probably bugs. If you find one, please open an issue 
        ticket. Include a description of the issue and, if possible, a minimal working 
        example. I appreciate your patience (and your help).
        
        # TODO
         * Figure out how to make TravisCI make wheels for me
         * Better docs
         * Examples
        
Platform: Linux
Platform: MacOS X
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: POSIX :: Linux
Classifier: Development Status :: 5 - Production/Stable
Requires-Python: >=3.5
Description-Content-Type: text/markdown
