Skip to content

Multislice codes for simulating xray propogation. Uses pyFFTW and numexpr for efficinecy

License

Notifications You must be signed in to change notification settings

s-sajid-ali/multislice

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

81 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Multislice

Multislice wave propagation in Python.

Contents

  • 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

Installation :

Clone the directory via git clone and run pip install .. Note that this project uses flit as it's build system.

Testing

The tests folder has ipython notebooks which compare the results with this test case. Additional tests evaluate the performance of ffts.

Credits

This work is based on Multislice does it all : calculating the performance of nanofocusing x-ray optics, Optics Express, vol. 25, 2017 .