Build Status | Code Coverage | Docs stable | Docs main |
---|---|---|---|
Propagate waves efficiently, optically, physically, differentiably with Julia Lang. Those functions are fast and memory efficient implemented and hence are suited to be used in inverse problems.
Not registered yet, hence install with:
julia> using Pkg; Pkg.add("WaveOpticsPropagation")
See the rendered notebooks here. Otherwise, just look into the examples folder.
- Propagate (electrical) fields based on wave propagation
- Propagations
- Angular Spectrum Method of Plane Waves (AS)
- Fraunhofer Diffraction
- Scalable Angular Spectrum propagation
- Shifted Angular Spectrum propagation
- Fresnel Propagation with Scaling Behaviour (no priority yet, PR are welcome for that. In principle very similar to the other methods.)
- CUDA support
- Differentiable (mainly based on Zygote.jl and ChainRulesCore.jl)
Vectorial propagation in free space is just a propagation of each of the components. Right now, this is not a priority and is not implemented yet. But of course, each vectorial component can be propagated separately.
This package was created as part of scientific work. Please consider citing it :)
@misc{wechsler2024wave,
title={Wave optical model for tomographic volumetric additive manufacturing},
author={Felix Wechsler and Carlo Gigli and Jorge Madrid-Wolff and Christophe Moser},
year={2024},
eprint={2402.06283},
archivePrefix={arXiv},
primaryClass={physics.optics}
}
Contributions are very welcome! File an issue on GitHub if you encounter any problems. Also file an issue if you want to discuss or propose features.
There is the outdated PhysicalOptics.jl which provided similar methods. For geometrical ray tracing use OpticSim.jl.