Our great sponsors
-
prysm
physical optics: integrated modeling, phase retrieval, segmented systems, polynomials and fitting, sequential raytracing... (by brandondube)
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
-
SympleyWavey
A collection of code and design related to a DIY shack-hartmann wavefront sensor. Very much WIP :)
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
Raypier - current front runner, I've managed to model both an RC telescope and a thorlabs microlens array here with results that seem quite reasonable. Also has a gui for sanity checking/interactivity. Unfortunately the performance really starts to tank as you increase the resolutions of the plane where the E-field is evaluated, increase number of rays or increase number of surfaces. (Something I would like to do to be able to model atmospheric disturbance + mirror misalignments +
Prysm Originally for diffraction type optics but seems to able to handle...everything? Performance as a priamary concern, GPU acceleration, proven JPL heritage :) Raytracing is however still experimental and without docs, generally whilst the library looks excellent if you're an optics person already I think I lack a bit of the base fundamental knowledge to really use it powerfully from just the API reference. I can see BDube has some raytracing example code in some of the issues I could probably adapt and muddle my way through at least. No guis is mildly annoying for a noob like myself, but I can work my way around matplotlib-ing just fine instead i'm sure.
Pyoptica Seems purely for diffractive effects, not relevant for my needs? Not sure why I would use it over Prysm too.
Out of these I've downloaded Raypier, Aether and Quadoa trial. Even then I've only gotten stuck into Raypier, code used to generate those above scenes is here if anyone is curious: https://github.com/AlistairSymonds/SympleyWavey/tree/main/simulations. If the performance didn't slow so much I'd just crank the rays counts and be happy with that, my inclination is to figure out prysm now too but was wondering if there's anything else obvious I've missed out there? Or am I approaching this all entirely incorrectly! Any and all comments on my rambling welcome :)
If you structure the program similar to this then you can get scaling that is basically proportional to the number of cores; and that continues all the way up to a 2x6248R 48 core system, which is ~44 times faster with all of the cores vs 1 core.
Related posts
- How to generate realistic PSFs for camera lenses?
- Prysm is a Python 3.6 library for numerical optics
- Exascale integrated modeling of low-order wavefront sensing and control for the Roman Coronagraph instrument
- Reccomended textbooks/reading for learning Thin Films
- Options for GPU accelerated python experiments?