spacetelescope / poppy

Physical Optics Propagation in Python
https://poppy-optics.readthedocs.io
BSD 3-Clause "New" or "Revised" License
220 stars 72 forks source link

Fresnel propagation usage question #206

Closed mperrin closed 6 years ago

mperrin commented 6 years ago

Issue by mb2448 Friday Mar 10, 2017 at 01:28 GMT Originally opened as https://github.com/mperrin/poppy/issues/206


Hi Folks,

I'm doing some free-space propagation in a lab experiment, and have measured some of the aberrations in the optics in a Zygo interferometer. I'd like to include these phase errors in the Fresnel propagation wavefront in the model of the system I am building in Poppy. Something like:

    rad = 25.4
    wf  = poppy.FresnelWavefront(rad*u.m,wavelength=wavlen,npix=npix, oversample = 1)

    print("Applying a zernike WFE")
    wf *= poppy.ZernikeWFE(coefficients = np.append(np.repeat(0, 11), 100e-9)0, 11)), 
                           radius = rad)
    #then apply some my custom pupil stop etc

To apply 100 nm of the 12th Zernike aberration on the wave (spherical?). Is this functionality was available yet? It indicated in the documents that it was not, yet the lines above execute!

mperrin commented 6 years ago

Comment by mperrin Friday Mar 10, 2017 at 01:49 GMT


It's entirely possible that our documentation is out of date. :-) Can you point us towards where it says that? Yes, the ZernikeWFE does work.

mperrin commented 6 years ago

Comment by mb2448 Friday Mar 10, 2017 at 17:42 GMT


Great!

Here's the passage--and upon repeated readings, I think it's actually saying something different than I originally thought:

The parameters of a Gaussian beam may be modified (making it converging or diverging) by adding optical power. In poppy this is represented with the QuadraticLens class. This is so named because it applies a purely quadratic phase term, i.e. representative of a parabolic mirror or a lens considered in the paraxial approximation. Right now, only the Fresnel QuadraticLens class will actually cause the Gaussian beam parameters to change. You won’t get that effect by adding wavefront error with some other OpticalElement class.

from: https://pythonhosted.org/poppy/fresnel.html

Many thanks for the quick response!

mperrin commented 6 years ago

Comment by mperrin Friday Mar 10, 2017 at 17:48 GMT


Right, what that's saying is that if you want to change the properties of the Gaussian beam (for instance changing it from a collimated beam to a converging beam, by adding a LOT of optical power), then do that with the QuadraticLens class. That will affect what type of propagation calculation is used for the next free space propagation.

If you want to add a little bit of spherical aberration, then you can do that with the ZernikeWFE class. That wavefront will of course affect the values returned from the next free space propagation, but it won't change the calculation itself from e.g. a plane-to-plane calculation into a plane-to-waist calculation.

Does that clarify thing for you?

mperrin commented 6 years ago

Comment by mb2448 Friday Mar 10, 2017 at 17:52 GMT


Yes, thanks!