axiprop 0.5.2

Last updated:

0 purchases

axiprop 0.5.2 Image
axiprop 0.5.2 Images
Add to Cart

Description:

axiprop 0.5.2

Axiprop
A simple tool to compute optical propagation, based on the discrete Hankel and
Fourier transforms
Contents
This library contains methods and convenience tools to model propagation of the 3D optical
field. Computations can be done using a number of backends:

NumPy (CPU) optionally enhanced via mkl_fft or
pyfftw
CuPy for GPU calculations via Nvidia CUDA API
ArrayFire for GPU calculations via CUDA or OpenCL APIs
PyOpenCL for GPU calculations via OpenCL API

Currently methods include:

PropagatorSymmetric: cylindical axisymmetric propagator with the symmetric DHT proposed in
[M. Guizar-Sicairos, J.C. GutiƩrrez-Vega, JOSAA 21, 53 (2004)]
PropagatorResampling: cylindical axisymmetric propagator with a more generic DHT which allows for arbitrary
sampling of radial axis [K. Oubrerie, I.A. Andriyash et al, J. Opt. 24, 045503 (2022)]
PropagatorFFT2: fully 3D FFT-based propagator

Usage
Consider a laser,
k0 = 2 * np.pi / 0.8e-6 # 800 nm wavelength
tau = 35e-15/ (2*np.log(2))**0.5 # 35 fs FWHM duration
R_las = 10e-3 # 10 mm radius

def fu_laser(kz, r):
"""
Gaussian spot with the Gaussian temporal profile
"""
profile_r = np.exp( -(r/R_las)**2 )
profile_kz = np.exp( -( (kz-k0) * c * tau / 2 )**2 )
return profile_r * profile_kz

and some focusing optics,
f_N = 40 # f-number f/40
f0 = 2 * R_las * f_N # focal length

Define the propagator,
prop = PropagatorSymmetric((Rmax, Nr), (k0, L_kz, Nkz), Nr_end)

and setup the laser reflected from the focusing mirror
A0 = laser_from_fu( fu_laser, prop.kz, prop.r )
A0 = A0 * mirror_parabolic( f0, prop.kz, prop.r )

Use AXIPROP to compute the field after propagation of dz distance
(e.g. dz=f0 for field at focus):
A0 = prop.step(A0, f0)

or evaluate it at Nsteps along some Distance around the focus,
dz = Distance / Nsteps
zsteps = Nsteps * [dz,]
zsteps[0] = f0 - Distance/2
A_multi = prop.steps(A0, zsteps)

Plot the results using your favorite tools

For more info checkout the example notebooks for radial and cartesian cases, and also look for methods documentation.
Installation
Install axiprop by cloning the source
git clone https://github.com/hightower8083/axiprop.git
cd axiprop
python setup.py install

or directly via PiPy
pip install git+https://github.com/hightower8083/axiprop.git

Additional requirements
Note that, while base backend NP requires only NumPy and SciPy, other
backends have specific dependencies:

NP_MKL: mkl_fft
NP_FFTW: pyfftw
CU: cupy
CL: pyopencl and reikna
AF: ArrayFire and arrayfire-python

Optional enhancements of utilities are achieved if Numba is installed.

License:

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.