Git Product home page Git Product logo

gaussian-beamlets's Introduction

Aloha kākou, I'm Jaren

I'm a NASA Hubble Fellow at UC Santa Barbara working in Dr. Max Millar-Blanchaer's lab studying polarization and high-contrast imaging. I got my Ph.D. in Optical Sciences at the University of Arizona working with Dr. Ewan Douglas, Dr. Daewook Kim, and Dr. A.J. Riggs on a NSTGRO Fellowship.

My primary research interests are in integrated physical optics modeling for high-contrast imaging, with a particular emphasis on linking ray traces with wave propagation, and polarization.

Software

  • Poke: An open-source ray-based physical optics platform that uses ray-tracing API's (Zemax, CODE V) to democratize ray data and add more physics to the optical modeling pipeline. (lead developer)
  • Katsu: An open-source polarimetry package with support for full Stokes and Mueller polarimeters that employ rotating retarders. (lead developer)
  • prysm: An open-source numerical optics package by Brandon Dube. (contributor)

Places I've Worked Before

  • Visiting Technologist @ NASA Goddard
  • Visiting Scholar @ W.M. Keck Observatory
  • Visiting Technologist @ NASA JPL
  • Visiting Technologist @ Subaru Telescope
  • NASA JPL Summer Internship Program
  • UH Hilo IfA REU
  • Akamai Workforce Initiative Intern (UC Santa Cruz, UH IfA Maui)
  • University of Rochester (UR Nano, Integrated Photonic Systems Lab, Thomas Brown's lab)

gaussian-beamlets's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

gaussian-beamlets's Issues

Aberrations of HST

image

mean focus value is -2.5um

image

mean 0deg Astig is -0.005 microns rms mean 45deg Astig is -0.001 microns rms mean horz Coma is -0.003 microns rms mean vert Coma is -0.001 microns rms

Need a way of doing the conversion to Zernike Coefficients in POPPY, report below

Real Ray Tracing with Beamlets

The real ray tracing has been trouble to implement because of the conversion of what a "real ray" is to the paraxial convention with ABCD matrices. Since the beamlet code runs on ABCD matrices we can compute the matrix to determine the beamlet propagation.

A real ray is specified by 6 dimensions: Their positions in three orthogonal directions and the associated direction cosines. However, ray transfer matrices don't operate on the z-axis, so we need to convert the direction cosines into slopes in the xz and yz plane.

The method I had derived for this conversion is shown below

Perhaps 4 rays?

In the event that the paraxial assumption is wrong we need to use 4 rays to constrain all degrees of freedom in the nonorthogonal ABCD matrix. The neat thing is that this is 4 systems of 4 separate equations, so it's easier to make a symbolic math tool solve it.

Ray / ABCD alignment

the rays may not be well matched to the ABCD matrix - must check that they map to the same points. Here shows that the MATLAB default ordering is not the same as the numpy.ravel ordering
image

Through Focus Comparison

Through focus comparison

System Specifications:

  • EFL = 50e-4m
  • EPD = 5e-4m
  • Numbeamlets = 3500
  • Beam Waist = 5wl (11um)

At the aperture

image

10% of focus

image

20% of focus

image

30% of focus

image

40% of focus

image

50% of focus

image

60% of focus

image

70% of focus

image

80% of focus

image

90% of focus

image

100% of focus

image

110% of focus

image

120% of focus

image

130% of focus

image

140% of focus

image

150% of focus

image

160% of focus

image

170% of focus

image

180% of focus

image

190% of focus

image

200% of focus

image

How are Coronagraphs Designed?

All coronagraph designs are some approach to the problem of "maximize planet light, minimize starlight" but not all algorithms are created equal. This is where I will be collecting information about the different approaches.

Paper Outline

  • Introduction
    • Astrophysical Motivation
    • Survey of the state of the art of High-contrast imaging design
      • Ray Tracers: What they are used for and how they work
      • Propagators: What they are used for and how they work
      • Discrepancy in Diffraction Calculations (OpticStudio FFT / Huygens & POPPY)
    • The Need for better modeling in High-contrast imaging instrument design
      • Unifying ray model and diffraction model
      • Design & Tolerancing w/ Physical Optics
      • Simplify the design process
    • Hybrid Propagation Physics Implementation Review
      • Gaussian Beamlet Decomposition
      • Fresnel Diffraction (POPPY)
    • Previous Work (Ashcraft and Douglas 2020)
  • Methods
    • Gaussian Beam Parameters
    • Spatial Decomposition of Entrance Pupil (Even - maybe comment on other sampling schemes)
    • The Fiducial Observatory & Coronagraph
    • Paraxial Model w/ WFE
      • Ray Transfer Matrix for Arbitrary WFE
      • Tests for Optical Surface Errors (?)
    • DESCOPE: Real Model w/ WFE
    • Accelerated Computing
      • FIG: Compare multi-threading options on CPUs v.s. numcores for numpy FFT and GBD
      • FIG: DESCOPE - GPUs?
  • Results
    • Paraxial Model
      • FIG: Observatory PSF w/o WFE v.s. Fresnel PSF
      • FIG: Observatory PSF w/ WFE v.s. Fresnel PSF
      • FIG: Lyot Coronagraph PSF w/o WFE v.s. Fresnel PSF
      • FIG: Lyot Coronagraph PSF w/ WFE v.s. Fresnel PSF
    • DESCOPE: Real Model
      • FIG: Observatory PSF w/o WFE v.s. Fresnel PSF
      • FIG: Observatory PSF w/ WFE v.s. Fresnel PSF
      • FIG: Lyot Coronagraph PSF w/o WFE v.s. Fresnel PSF
      • FIG: Lyot Coronagraph PSF w/ WFE v.s. Fresnel PSF
  • Conclusion

Real Ray Tracing with Beamlets

The real ray tracing has been trouble to implement because of the conversion of what a "real ray" is to the paraxial convention with ABCD matrices. Since the beamlet code runs on ABCD matrices we can compute the matrix to determine the beamlet propagation.

A real ray is specified by 6 dimensions: Their positions in three orthogonal directions and the associated direction cosines. However, ray transfer matrices don't operate on the z-axis, so we need to convert the direction cosines into slopes in the xz and yz plane.

The method I had derived for this conversion is shown below

Is the field oversized during the decomposition?

So far I've been filtering out the rays outside the pupil radius in order to create a circular aperture - but Ewan pointed out this might produce a slightly oversized pupil since the 1/e radius exists outside of the pupil. This would result in a tighter PSF, which we were observing here

image

Fixed OS = 2, Variable OF.

Test variable overlap factors to see if there is one that is better at recovering high spatial frequencies. We use this phase screen.
image

Running 512 x 512 beamlets on a 256x256 array of Kolmogorov Phase Error and propagating to focus, then Fresnel Propagating through a coronagraph.

Investigating Erroneous Rays

So I'm trying to figure out how to recreate a thin lens at focus, the best possible comparison for a reflector is a Parabolic Mirror. So I created an optical system with the following specifications

  • EPD = 2400mm
  • Wavelength = 1 um
  • FOV = 0 deg
  • RoC = -11040 mm
  • EFL = 5520 mm
  • F/# = 2.3
  • Conic = -1

I'm using the ZOS-API to trace rays from a collimated entrance pupil to focus. I need to trace two resets with some differential value applied to the angle and translation in order to parse the ABCD information from the ray data. Unfortunately the plots aren't looking like what I expect. A ray transfer matrix for a lens followed by free space is
image

So we should expect a zero for all of the A elements, a distance for the on-diagonal B elements and zero for the off-diagonal B elements, the negative inverse of the B distance for the on-diagonal C elements and zero for the off-diagonal C elements, and an Identity matrix for the D elements.

Unfortunately that is not currently the case
image

I can say that the A & D elements look approximately like they should (the diagonal on the A's is questionable), but the B and C elements don't look like what is expected. To understand what might be going on I plotted the raw ray data.

imageimage
imageimage

A couple notes

  1. The giant jump in the x dimension is SUPER concerning, what is causing this?
  2. The collection of rays going to zero in Y and B are also concerning, what is causing this?
  3. Why do we have angle in a and b? I suspect that these rays are after the primary mirror.

HST Real Ray Trace w/ GBD

I think I flipped the coordinate system sending the ray transfer matrix over to Python, test this matrix with GBD and see the results. Need to intelligently filter NaN values.

image

Huygens Wavelets

From the Zemax docs

The only disadvantage of the Huygens PSF is speed. Direct integration is slow when compared to the FFT method (see the previous section for details). The computation time depends upon the pupil grid size squared times the image grid size squared, times the number of wavelengths. OpticStudio accounts for any symmetry the system has. The Huygens PSF automatically uses all available processors for maximum speed on multiple CPU computers.

Add pupil decomposition

I think I finally understand Worku's amplitude decomposition.

image

For a given field to be decomposed - if you already have determined the positions and sizes of the gaussian beamlets, you can solve this matrix equation with the moore-penrose pseudo-inverse. Maybe doing a test implementation for the 1D case would be useful.

The Fiducial Coronagraph

Let's start with a Hubble-based design w/ an unobscured aperture and an annular field stop - we can switch to a band limited occulter if necessary but the Lyot is the simplest solution. A $lambda; / D is 0.18048"

Spec Value
D 2.4m
FoV 2.2 x 2.2 '
λ 2.1 um
Coronagraph Lyot
IWA 0.40 " or 2.2 λ/D @ 2.1um
OWA 0.80 " or 12 λ/D @ 2.1um

I wonder if Eps Eri would be a decent case motivating some FoV calculations. It apparently has two debris disks at 3 AU and 20 AU, and it's about 3.2 parsecs from the Sun.

Apparently 1 AU is 206265 parsecs, how neat

3/(3.2206265) * 206265= 0.93 arcsec or ~ 5λ/D
20/(3.2
206265) * 206265 = 6.25 arcsec or ~ 34λ/D

HST Real Ray Trace w/ 0.1 degree tilt on secondary

Here's the Zemax FFT PSF
image

Here are the first 11 Noll Zernikes, note that the decomposition claims there are coefficients of higher order!

Z 1 -0.01843507 : 1
Z 2 0.00000000 : 4^(1/2) (p) * COS (A)
Z 3 -0.42899450 : 4^(1/2) (p) * SIN (A)
Z 4 -0.01063694 : 3^(1/2) (2p^2 - 1)
Z 5 0.00000000 : 6^(1/2) (p^2) * SIN (2A)
Z 6 0.00389342 : 6^(1/2) (p^2) * COS (2A)
Z 7 -0.15086501 : 8^(1/2) (3p^3 - 2p) * SIN (A)
Z 8 0.00000000 : 8^(1/2) (3p^3 - 2p) * COS (A)
Z 9 0.00000038 : 8^(1/2) (p^3) * SIN (3A)
Z 10 0.00000000 : 8^(1/2) (p^3) * COS (3A)
Z 11 0.00000480 : 5^(1/2) (6p^4 - 6p^2 + 1)

Ray conversion may be buggy

using the ray projection method

image

Just feeding it the direction cosines directly

image

Looks like the biggest differences are in the C submatrix, which is interesting. The patterns are more elliptical than directly astigmatic, which is less intuitive to me. Might be worth trying the aberrated case for a comparison.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.