Multislice wave propagation in Python.
prop.py
- propogation routines including Transfer Function, Single Fourer Transform, Fraunhofer, Impulse Response
- propTF - Transfer function propogator
- prop1FT - Single fourier transform propogator
- propFF - Fraunhofer propogator
- propIR - Impulse Response propogator
prop_utils.py
- utilities for multilsice propogation
- modify - modify the wavefront by the material
- modify_two_materials_case_1, modify_two_materials_case_2 - mixing two materials
- decide - Decide which propogator to use
- number_of_steps - Compute the number of steps to be used for propogation within an object.
- plot_2d_complex - Plot the wavefront
- optic_illumination - Utility function that takes an input wavefront and optic and produces the focal spot.
fft_utils.py
- pyfftw wrapper (numpy.fft can be used as well)
- FFT2 - 2D fft
- IFFT2 - 2D ifft
wisdom.pickle
- file containing pre planned wisdom to elimnate the need for planning at runtime
Clone the directory via git clone and run pip install .
. Note that this project uses flit as it's build system.
The tests folder has ipython notebooks which compare the results with this test case. Additional tests evaluate the performance of ffts.
This work is based on Multislice does it all : calculating the performance of nanofocusing x-ray optics, Optics Express, vol. 25, 2017
.