Jashcraf / poke

Poke (pronounced poh-keh) is a Polarization Ray Tracing and Gaussian Beamlet module for Python
BSD 3-Clause "New" or "Revised" License
32 stars 6 forks source link

Poke: Integrating Ray and Diffraction Models

image

DOI Documentation Status codecov Code style: black

Poke (pronounced /poʊˈkeɪ/ or po-kay) is a ray-based physical optics module for Python. It's named this because the name encodes the k-vector (which we are raytracing!) and the E-vector (which we are propagating!). Also I came up with the name before lunchtime, when I was craving fish from Suisan.

Poke is a package to interface with industry-standard raytracing engines to do physical optics calculations based on ray data. The goal is to open-source the ray-based propagation physics and only rely on the raytracers (Zemax OpticStudio, CODE V, etc.) to do raytracing. The development was inspired by the need to add more propagation physics modules for Coronagraphs to expand the design space, but Poke has been used to characterize existing observatories as well.

Presently Poke supports:

Disclaimer: Poke is currently in very early stages of development. Documentation, unit tests, and more features are being developed and added daily. If you'd like to contribute to Poke, please open an issue to start a discussion.

If you are interested in contributing / using Poke, feel free to open an issue or contact me at jashcraft@arizona.edu.

Installation

Poke is actively developing so we reccomend installation by cloning the repository and running setup.py

git clone https://github.com/Jashcraf/poke/
cd poke
pip install .

Raytracer Specifics

If you wish to use Poke with a commercial ray tracer, we require optional additional dependencies to run the raytrace via the API

Papers Published using Poke

Contributors:

Acknowledgements:

Thanks to Dr. Max Millar-Blanchaer for inspiring the Raybundle class, and Dr. Ramya Anchce for overall helpful discussions on polarization ray tracing. Thanks to Trent Brendel, Kevin Z. Derby, and Henry Quach for helpful discussions and testing during the initial development phase. Thanks to Brandon Dube for the sage Python advice. Thanks to Kian Milani for helping test poke on supercomputer GPUs. This work was supported by a NASA Space Technology Graduate Research Opportunity.

References

Other Acknowledgements