PyWolf is an open-source software capable of performing numerical simulations of partially coherent light propagation from two-dimensional light sources using parallel computation. In the original version of PyWolf, the graphical user interface (GUI) would only show free-space propagation as the only option for propagating partially coherent light, even though users could add their own source models and other objects such as lenses and apertures, which was recognized by PyWolf's GUI. We introduce here the new version of PyWolf, PyWolf 2.0, which among other improvements, enables users to easily add their own propagation medium, which can be used throughout the simulation in different propagation planes. New version program summaryProgram Title: PyWolfCPC Library link to program files:https://doi.org/10.17632/frjscxypkd.2Developer's repository link:https://github.com/tiagoecmagalhaes/PyWolfLicensing provisions: GPLv3Programming language: PythonSupplementary material: Detailed description of the main changes with an example.Journal reference of previous version: Comput. Phys. Commun. 276 (2022) 108336.Reasons for the new version: In the previous paper [1] describing the original version of PyWolf, the propagation kernel was limited to free space, even though optical elements such as lenses and apertures could be added. For propagation in other media (e.g., turbulent medium), users had to substitute the free space propagation by the desired propagation medium since PyWolf always uses the same propagator, which is present in a single Python script.Summary of revisions: Propagation model selection was added to PyWolf's graphical user interface (GUI), enabling users to select the propagation medium of interest. It also enables input parameters (e.g., refractive index) for each propagation model. PyWolf checks for the Python scripts present in the “propagation models” folder at startup and displays them in the GUI, similar to what is done, for instance, for the source models. Then, during the simulation, instead of using the same free space propagators, PyWolf will use the ones that are defined in the selected propagation model. Four examples of propagation models are present in the current version, namely, free space, constant refractive index (besides 1), Kolmogorov, and Tatarskii models [2,3]. Depending on the model used, some propagation quantities may not be valid. For instance, in the current implementation for free space propagation, both the spectral density and degree of coherence are valid, however, that is not the case for the current implementations of the Kolmogorov and Tatarskii models, where only the spectral density is valid. Besides this main feature added to PyWolf, other small issues have been improved and corrected, namely: (i) PyWolf now initiates without needing PyOpenCl platforms or devices; (ii) some errors associated with the importation of packages have been corrected; and (iii) phase correction in the FFT algorithm for odd arrays which can affect the propagation image.Nature of problem: Numerical simulations of the propagation of partially coherent light from planar sources in the Fresnel or far field approximations. Computation time can be improved by using optimized versions of the fast Fourier transform algorithm, but the computation time of other tasks can also be improved through parallel computation. PyWolf aims at using parallel computation to perform time-consuming calculations in the propagation of the cross-spectral density function [4,5].Solution method: The open-source toolkit PyOpenCL is used to perform parallel computation on time-consuming calculations. The user can easily modify and add more features to the software, such as source and propagation models. A graphical user interface is also built using PyQt5 which enables the user to set input parameters, including the user's custom models, view the simulation results, export data, and save and load sessions.
Read full abstract