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:
Optional enhancements of utilities are achieved if Numba is installed.
Release files for axiprop 0.5.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| axiprop-0.5.7.tar.gz | 36.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| axiprop-0.5.7-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 76.1 kB
Release files / axiprop-0.5.7.tar.gz
| Download URL | axiprop-0.5.7.tar.gz |
|---|---|
| Size | 36.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
130437a7ad3fa66f7ca1675b030bb392368fccff5ea71c5cb371bd37ee2218e6
|
|
BLAKE2b-256 checksum How to use checksums |
c36ff0b85596164009b9032aa5f5f96f6ff1e0907d09974d044c2ad62c0cdc21
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 9, 2025.
Transparency logRelease files / axiprop-0.5.7-py3-none-any.whl
| Download URL | axiprop-0.5.7-py3-none-any.whl |
|---|---|
| Size | 39.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e6cb969817d71f0eac7de667f4ffe9a5cff77411fb98e328dadf52e43925d437
|
|
BLAKE2b-256 checksum How to use checksums |
abf21985c009335b6e019ffb821c66fa1e0012edfb35b75572452915efaa076f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 9, 2025.
Transparency log