Skip to main content

Calculate mm-wave transmittance and reflectance of materials

Project description

Build Status codecov PyPI PyPI - License

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:

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

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

armmwave-0.1.0.tar.gz (17.0 kB view details)

Uploaded Source

Built Distribution

armmwave-0.1.0-py3.7.egg (23.4 kB view details)

Uploaded Source

File details

Details for the file armmwave-0.1.0.tar.gz.

File metadata

  • Download URL: armmwave-0.1.0.tar.gz
  • Upload date:
  • Size: 17.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.28.1 CPython/3.7.4

File hashes

Hashes for armmwave-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0ba143e04dd3f51193711fc15e162d924428553792494052328b60c762cef973
MD5 3671cf6ef5764023b18cbfbfe8bbb5d3
BLAKE2b-256 f3faa0feeb24ba4618d6024e7f7ed5dc9f8d519fc2184b3fbffefd610c3c931d

See more details on using hashes here.

File details

Details for the file armmwave-0.1.0-py3.7.egg.

File metadata

  • Download URL: armmwave-0.1.0-py3.7.egg
  • Upload date:
  • Size: 23.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.28.1 CPython/3.7.4

File hashes

Hashes for armmwave-0.1.0-py3.7.egg
Algorithm Hash digest
SHA256 c4380bc6448c81bfc88f6b87139a34fe43c5fe15577eb259a1428f43cdc8adb7
MD5 2f49e5ece56be7edcc14fd23372dca05
BLAKE2b-256 c30135b70e853a6725656591c0268203f3a7fa263f2b27f567f80cb5d9f71a55

See more details on using hashes here.

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