diffractio


Namediffractio JSON
Version 0.2.4 PyPI version JSON
download
home_pagehttps://bitbucket.org/optbrea/diffractio/src/master/
SummaryOptical Diffraction and Interference (scalar and vectorial)
upload_time2023-11-22 20:38:12
maintainer
docs_urlNone
authorLuis Miguel Sanchez Brea
requires_python
licenseMIT license
keywords diffractio optics diffraction interference bpm wpm czt rs vrs
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ================================================
Python Diffraction-Interference module
================================================


.. image:: https://img.shields.io/pypi/dm/diffractio
        :target: https://pypi.org/project/diffractio/

.. image:: https://img.shields.io/pypi/v/diffractio.svg
        :target: https://pypi.org/project/diffractio/

.. image:: https://readthedocs.org/projects/diffractio/badge/?version=latest
        :target: https://diffractio.readthedocs.io/en/latest/
        :alt: Documentation Status


* Free software: MIT license

* Documentation: https://diffractio.readthedocs.io/en/latest/


.. image:: logo.png
   :width: 75
   :align: right


Features
----------------------

Diffractio is a Python library for Diffraction and Interference Optics.

It implements Scalar and vector Optics. The main algorithms used are:

* Fast Fourier Transform (FFT).
* Rayleigh Sommerfeld (RS).
* Chirp z-transform (CZT).
* Plane Wave Descomposition (PWD).
* Beam Propagation Method (BPM).
* Wave Propagation Method (WPM).
* Vectorial Rayleigh-Sommerfeld (VRS).
* Vector Fast Fourier Tranform (VFFT).
* Vector Chirp z-transform (VCZT).

When possible, multiprocessing is implemented for a faster computation.


The **scalar** propagation schemes are implemented in modules:

* X - fields are defined in the x axis.
* Z - fields are defined in the z axis (for visualiztion and analysis).
* XZ - fields are defined in the xz plane, being z the propagation direction.
* XY - fields are defined in the xy transversal plane.
* XYZ - fields are defined in the xyz volume.

Each scheme present three modules:

* sources: Generation of light.
* masks: Masks and Diffractive Optical elements.
* fields:  Propagation techniques, parameters and general functions.

The **vector** propagation schemes are implemented in modules:

* vector_XY - Ex, Ey, and Ez electric field components are defined, which allows polarization analysis.

There are additional schemes used mainly for representation.

* vector_X - fields are defined in the z axis (for visualiztion and analysis).
* vector_Z - fields are defined in the z axis (for visualiztion and analysis).
* vector_XZ - fields are defined in the xz axis (for visualiztion and analysis).
* vector_XYZ - fields are defined in the xyz axis (for visualiztion and analysis).

For the vector analysis, we also use the py_pol module: https://pypi.org/project/py-pol/


Sources
========

One main part of this software is the generation of optical fields such as:

* Plane waves.
* Spherical waves.
* Gaussian beams.
* Bessel beams.
* Vortex beams.
* Laguerre beams.
* Hermite-Gauss beams.
* Zernike beams.

.. image:: readme1.png
   :width: 400


Masks
=============

Another important part of Diffractio is the generation of masks and Diffractive Optical Elements such as:

* Slits, double slits, circle, square, ring ...
* Lenses, diffractive lenses, aspherical lenses...
* Axicon, prisms, biprism, image, rough surface, gray scale ...
* Gratings: Ronchi, phase, radial, angular, sine, forked, blazed, 2D, chess...

.. image:: readme2.png
   :height: 400

In the XZ scheme there is also a number of masks:

* image, sphere, layer, lenses, wedge, prism, probe, gratings...
* Additionally, any X_mask can be extruded to the XZ scheme.
* Masks from functions
* Surfaces can be added to objects


.. image:: readme3.png
   :height: 400


Fields
=========

Several propagation algorithms for propagation of light are implemented in the *fields* modules:

* **Fast Fourier Transform (FFT)** which allows, in a single step, to determine the field at the far field.

* **Rayleigh-Sommerfeld (RS)** [Appl. Opt., 45(6) 1102–1110, (2006)] RS allows, in a single step, to propagate to a near or far observation plane, which allows fast computations. The fields and the masks must be defined in a plane.

* **Beam propagation method (BPM)** [Appl. Opt. 24, 3390-3998 (1978)] which allows to analyze the propation of light in volumetric elements, such as spheres, cylinders and other complex forms, provided that the spatial variations in the refraction index are small. It allows graded index structures. It presents a complexity of O(n) in the two-dimensional and O(n2) in the three-dimensional case. It is computed according to the split-step propagation scheme.

* **Wave Propagation Method (WPM)**. [Appl. Opt. 32, 4984 (1993)] WPM was introduced in order to overcome the major limitations of the beam propagation method (BPM). With the WPM, the range of application can be extended from the simulation of waveguides to simulation of other optical elements like lenses, prisms and gratings. WPM can accurately simulate scalar light propagation in inhomogeneous media at high numerical apertures, and provides valid results for propagation angles up to 85° and that it is not limited to small index variations in the axis of propagation. Fast implementation with discrete number of refraction indexes is also implemented.

* **Chirped Z-Transform (CZT)**.  [Light: Science and Applications, 9(1), (2020)] CZT allows, in a single step, to propagate to a near or far observation plane. It present advantages with respecto to RS algorithm, since the region of interest and the sampling numbers can be arbitrarily chosen, endowing the proposed method with superior flexibility. CZT algorithm allows to have a XY mask and compute in XY, Z, XZ, XYZ schemes, simply defining the output arrays.

* **Vector Rayleigh-Sommerfeld (VRS)**. The VRS method [Laser Phys. Lett. 10(6) 065004 (2013)] allows to propagate (Ex,Ey,Ez) fields offering the advantage of significant reduction in computation, from flat diffractive elements (Thin Element Approximation) with full control of polarization. It addresses simultaneously both longitudinal polarization. This approach offers the advantage of significant reduction in computation.

* **Vector Chirped Z-Transform (VCZT)**.  [Light: Science and Applications, 9(1), (2020)]. CZT is also implemented in vector fields.

    """

The fields, masks and sources can be stored in files.

Also drawings can be easily obtained, for intensity, phase, fields, etc.

In some modules, videos can be generated for a better analysis of optical fields.

.. image:: readme6.png
   :width: 600

.. image:: readme6.png
   :width: 600


Vector beams
==================================

Here, we implement new classes where the E_x, E_y, and E_z fields are generated and propagated using Rayleigh-Sommerfeld and Chirped z-transform algorithms.
Also, simple and complex polarizing masks can be created.

**Intensity of vector field**

.. image:: readme4.png
   :width: 700

**Polarization: Stokes parameters**

.. image:: readme5.png
   :width: 700


Other features
=================

* Intensity, MTF and other parameters are obtained from the optical fields.

* Fields can be added simply with the + signe, and interference is produced. Masks can be multiplied, added and substracted in order to make complex structures

* Resampling fields in order to analyze only areas of interest.

* Save and load data for future analysis.

* Rayleigh-Sommerfeld implementation is performed in multiprocessing for fast computation.

* Polychromatic and extended source problems can also be analyzed using multiprocessing.



Authors
---------------------------

* Luis Miguel Sanchez Brea <optbrea@ucm.es>


   **Universidad Complutense de Madrid**,
   Faculty of Physical Sciences,
   Department of Optics
   Plaza de las ciencias 1,
   ES-28040 Madrid (Spain)

.. image:: logoUCM.png
   :width: 125
   :align: right



Citing
---------------------------

L.M. Sanchez Brea, "Diffractio, python module for diffraction and interference optics", https://pypi.org/project/diffractio/ (2019)


References for algorithms
---------------------------

**RS**

* Shen, F. & Wang, A. "Fast-Fourier-transform based numerical integration method for the Rayleigh-Sommerfeld diffraction formula. Appl. Opt. 45, 1102–1110 (2006).

**WPM**

* K.-H. Brenner, W. Singer, “Light propagation through micro lenses: a new simulation method”, Appl. Opt., 32(6) 4984-4988 (1993).

* Schmidt, S. et al. "Wave-optical modeling beyond the thin-element-approximation" Opt. Express 24, 30188 (2016).

* Brenner, K.H. "A high-speed version of the wave propagation method applied to micro-optics."  16th Workshop on Information Optics (WIO). IEEE (2017)

* Schmidt, S., et al. "Rotationally symmetric formulation of the wave propagation method-application to the straylight analysis of diffractive lenses" Opt. Lett. 42, 1612 (2017).

**VRS**

* Ye, H. et al. "Creation of a longitudinally polarized subwavelength hotspot with an ultra-thin planar lens: Vectorial Rayleigh-Sommerfeld method" Laser Phys. Lett. 10, (2013).

**CZT**

* Bluestein, L., "A linear filtering approach to the computation of the discrete Fourier transform," Northeast Electronics Research and Engineering Meeting Record 10, 218-219 (1968).

* Hu Y. et al. "Efficient full-path optical calculation of scalar and vector diffraction using the Bluestein method" Light: Science & Applications  9(119) (2020)

**VCZT**

* Leutenegger M. et al. "Fast focus field calculations" Optics Express 14(23) 11277 (2006).

* Hu Y. et al. "Efficient full-path optical calculation of scalar and vector diffraction using the Bluestein method" Light: Science & Applications  9(119) (2020)

**VWPM** (not implemented yet)

* Fertig, M., Brenner, K.-H. "Vector wave propagation method". J. Opt. Soc. Am. A 27, 709 (2010).

* Fertig, M., Brenner, K.-H. "Vector wave propagation method". PhD thesis (Mannheim, 2010).


Other References
---------------------------

* J.W. Goodman, "Introduction to Fourier Optics" McGraw-Hill, 1996.

* B.E. Saleh y M. C. Teich, "Fundamentals of photonics" John Wiley & Sons, 2019.

* Z.Qiwen, "Vectorial optical fields: Fundamentals and applications" World scientific, 2013.

* "Numerical Methods in Photonics Lecture Notes".  http://ecee.colorado.edu/~mcleod/teaching/nmip/lecturenotes.html.


Credits
---------------------------

This package was created with Cookiecutter_ and the `audreyr/cookiecutter-pypackage`_ project template.

.. _Cookiecutter: https://github.com/audreyr/cookiecutter
.. _`audreyr/cookiecutter-pypackage`: https://github.com/audreyr/cookiecutter-pypackage


____

pytest --cov=diffractio tests/


            

Raw data

            {
    "_id": null,
    "home_page": "https://bitbucket.org/optbrea/diffractio/src/master/",
    "name": "diffractio",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "diffractio,optics,diffraction,interference,BPM,WPM,CZT,RS,VRS",
    "author": "Luis Miguel Sanchez Brea",
    "author_email": "optbrea@ucm.es",
    "download_url": "https://files.pythonhosted.org/packages/97/e1/31ad39ea48536fab0cefa08354c037e7de73792f9a170701644e308e17b8/diffractio-0.2.4.tar.gz",
    "platform": null,
    "description": "================================================\nPython Diffraction-Interference module\n================================================\n\n\n.. image:: https://img.shields.io/pypi/dm/diffractio\n        :target: https://pypi.org/project/diffractio/\n\n.. image:: https://img.shields.io/pypi/v/diffractio.svg\n        :target: https://pypi.org/project/diffractio/\n\n.. image:: https://readthedocs.org/projects/diffractio/badge/?version=latest\n        :target: https://diffractio.readthedocs.io/en/latest/\n        :alt: Documentation Status\n\n\n* Free software: MIT license\n\n* Documentation: https://diffractio.readthedocs.io/en/latest/\n\n\n.. image:: logo.png\n   :width: 75\n   :align: right\n\n\nFeatures\n----------------------\n\nDiffractio is a Python library for Diffraction and Interference Optics.\n\nIt implements Scalar and vector Optics. The main algorithms used are:\n\n* Fast Fourier Transform (FFT).\n* Rayleigh Sommerfeld (RS).\n* Chirp z-transform (CZT).\n* Plane Wave Descomposition (PWD).\n* Beam Propagation Method (BPM).\n* Wave Propagation Method (WPM).\n* Vectorial Rayleigh-Sommerfeld (VRS).\n* Vector Fast Fourier Tranform (VFFT).\n* Vector Chirp z-transform (VCZT).\n\nWhen possible, multiprocessing is implemented for a faster computation.\n\n\nThe **scalar** propagation schemes are implemented in modules:\n\n* X - fields are defined in the x axis.\n* Z - fields are defined in the z axis (for visualiztion and analysis).\n* XZ - fields are defined in the xz plane, being z the propagation direction.\n* XY - fields are defined in the xy transversal plane.\n* XYZ - fields are defined in the xyz volume.\n\nEach scheme present three modules:\n\n* sources: Generation of light.\n* masks: Masks and Diffractive Optical elements.\n* fields:  Propagation techniques, parameters and general functions.\n\nThe **vector** propagation schemes are implemented in modules:\n\n* vector_XY - Ex, Ey, and Ez electric field components are defined, which allows polarization analysis.\n\nThere are additional schemes used mainly for representation.\n\n* vector_X - fields are defined in the z axis (for visualiztion and analysis).\n* vector_Z - fields are defined in the z axis (for visualiztion and analysis).\n* vector_XZ - fields are defined in the xz axis (for visualiztion and analysis).\n* vector_XYZ - fields are defined in the xyz axis (for visualiztion and analysis).\n\nFor the vector analysis, we also use the py_pol module: https://pypi.org/project/py-pol/\n\n\nSources\n========\n\nOne main part of this software is the generation of optical fields such as:\n\n* Plane waves.\n* Spherical waves.\n* Gaussian beams.\n* Bessel beams.\n* Vortex beams.\n* Laguerre beams.\n* Hermite-Gauss beams.\n* Zernike beams.\n\n.. image:: readme1.png\n   :width: 400\n\n\nMasks\n=============\n\nAnother important part of Diffractio is the generation of masks and Diffractive Optical Elements such as:\n\n* Slits, double slits, circle, square, ring ...\n* Lenses, diffractive lenses, aspherical lenses...\n* Axicon, prisms, biprism, image, rough surface, gray scale ...\n* Gratings: Ronchi, phase, radial, angular, sine, forked, blazed, 2D, chess...\n\n.. image:: readme2.png\n   :height: 400\n\nIn the XZ scheme there is also a number of masks:\n\n* image, sphere, layer, lenses, wedge, prism, probe, gratings...\n* Additionally, any X_mask can be extruded to the XZ scheme.\n* Masks from functions\n* Surfaces can be added to objects\n\n\n.. image:: readme3.png\n   :height: 400\n\n\nFields\n=========\n\nSeveral propagation algorithms for propagation of light are implemented in the *fields* modules:\n\n* **Fast Fourier Transform (FFT)** which allows, in a single step, to determine the field at the far field.\n\n* **Rayleigh-Sommerfeld (RS)** [Appl. Opt., 45(6) 1102\u20131110, (2006)] RS allows, in a single step, to propagate to a near or far observation plane, which allows fast computations. The fields and the masks must be defined in a plane.\n\n* **Beam propagation method (BPM)** [Appl. Opt. 24, 3390-3998 (1978)] which allows to analyze the propation of light in volumetric elements, such as spheres, cylinders and other complex forms, provided that the spatial variations in the refraction index are small. It allows graded index structures. It presents a complexity of O(n) in the two-dimensional and O(n2) in the three-dimensional case. It is computed according to the split-step propagation scheme.\n\n* **Wave Propagation Method (WPM)**. [Appl. Opt. 32, 4984 (1993)] WPM was introduced in order to overcome the major limitations of the beam propagation method (BPM). With the WPM, the range of application can be extended from the simulation of waveguides to simulation of other optical elements like lenses, prisms and gratings. WPM can accurately simulate scalar light propagation in inhomogeneous media at high numerical apertures, and provides valid results for propagation angles up to 85\u00b0 and that it is not limited to small index variations in the axis of propagation. Fast implementation with discrete number of refraction indexes is also implemented.\n\n* **Chirped Z-Transform (CZT)**.  [Light: Science and Applications, 9(1), (2020)] CZT allows, in a single step, to propagate to a near or far observation plane. It present advantages with respecto to RS algorithm, since the region of interest and the sampling numbers can be arbitrarily chosen, endowing the proposed method with superior flexibility. CZT algorithm allows to have a XY mask and compute in XY, Z, XZ, XYZ schemes, simply defining the output arrays.\n\n* **Vector Rayleigh-Sommerfeld (VRS)**. The VRS method [Laser Phys. Lett. 10(6) 065004 (2013)] allows to propagate (Ex,Ey,Ez) fields offering the advantage of significant reduction in computation, from flat diffractive elements (Thin Element Approximation) with full control of polarization. It addresses simultaneously both longitudinal polarization. This approach offers the advantage of significant reduction in computation.\n\n* **Vector Chirped Z-Transform (VCZT)**.  [Light: Science and Applications, 9(1), (2020)]. CZT is also implemented in vector fields.\n\n    \"\"\"\n\nThe fields, masks and sources can be stored in files.\n\nAlso drawings can be easily obtained, for intensity, phase, fields, etc.\n\nIn some modules, videos can be generated for a better analysis of optical fields.\n\n.. image:: readme6.png\n   :width: 600\n\n.. image:: readme6.png\n   :width: 600\n\n\nVector beams\n==================================\n\nHere, we implement new classes where the E_x, E_y, and E_z fields are generated and propagated using Rayleigh-Sommerfeld and Chirped z-transform algorithms.\nAlso, simple and complex polarizing masks can be created.\n\n**Intensity of vector field**\n\n.. image:: readme4.png\n   :width: 700\n\n**Polarization: Stokes parameters**\n\n.. image:: readme5.png\n   :width: 700\n\n\nOther features\n=================\n\n* Intensity, MTF and other parameters are obtained from the optical fields.\n\n* Fields can be added simply with the + signe, and interference is produced. Masks can be multiplied, added and substracted in order to make complex structures\n\n* Resampling fields in order to analyze only areas of interest.\n\n* Save and load data for future analysis.\n\n* Rayleigh-Sommerfeld implementation is performed in multiprocessing for fast computation.\n\n* Polychromatic and extended source problems can also be analyzed using multiprocessing.\n\n\n\nAuthors\n---------------------------\n\n* Luis Miguel Sanchez Brea <optbrea@ucm.es>\n\n\n   **Universidad Complutense de Madrid**,\n   Faculty of Physical Sciences,\n   Department of Optics\n   Plaza de las ciencias 1,\n   ES-28040 Madrid (Spain)\n\n.. image:: logoUCM.png\n   :width: 125\n   :align: right\n\n\n\nCiting\n---------------------------\n\nL.M. Sanchez Brea, \"Diffractio, python module for diffraction and interference optics\", https://pypi.org/project/diffractio/ (2019)\n\n\nReferences for algorithms\n---------------------------\n\n**RS**\n\n* Shen, F. & Wang, A. \"Fast-Fourier-transform based numerical integration method for the Rayleigh-Sommerfeld diffraction formula. Appl. Opt. 45, 1102\u20131110 (2006).\n\n**WPM**\n\n* K.-H. Brenner, W. Singer, \u201cLight propagation through micro lenses: a new simulation method\u201d, Appl. Opt., 32(6) 4984-4988 (1993).\n\n* Schmidt, S. et al. \"Wave-optical modeling beyond the thin-element-approximation\" Opt. Express 24, 30188 (2016).\n\n* Brenner, K.H. \"A high-speed version of the wave propagation method applied to micro-optics.\"  16th Workshop on Information Optics (WIO). IEEE (2017)\n\n* Schmidt, S., et al. \"Rotationally symmetric formulation of the wave propagation method-application to the straylight analysis of diffractive lenses\" Opt. Lett. 42, 1612 (2017).\n\n**VRS**\n\n* Ye, H. et al. \"Creation of a longitudinally polarized subwavelength hotspot with an ultra-thin planar lens: Vectorial Rayleigh-Sommerfeld method\" Laser Phys. Lett. 10, (2013).\n\n**CZT**\n\n* Bluestein, L., \"A linear filtering approach to the computation of the discrete Fourier transform,\" Northeast Electronics Research and Engineering Meeting Record 10, 218-219 (1968).\n\n* Hu Y. et al. \"Efficient full-path optical calculation of scalar and vector diffraction using the Bluestein method\" Light: Science & Applications  9(119) (2020)\n\n**VCZT**\n\n* Leutenegger M. et al. \"Fast focus field calculations\" Optics Express 14(23) 11277 (2006).\n\n* Hu Y. et al. \"Efficient full-path optical calculation of scalar and vector diffraction using the Bluestein method\" Light: Science & Applications  9(119) (2020)\n\n**VWPM** (not implemented yet)\n\n* Fertig, M., Brenner, K.-H. \"Vector wave propagation method\". J. Opt. Soc. Am. A 27, 709 (2010).\n\n* Fertig, M., Brenner, K.-H. \"Vector wave propagation method\". PhD thesis (Mannheim, 2010).\n\n\nOther References\n---------------------------\n\n* J.W. Goodman, \"Introduction to Fourier Optics\" McGraw-Hill, 1996.\n\n* B.E. Saleh y M. C. Teich, \"Fundamentals of photonics\" John Wiley & Sons, 2019.\n\n* Z.Qiwen, \"Vectorial optical fields: Fundamentals and applications\" World scientific, 2013.\n\n* \"Numerical Methods in Photonics Lecture Notes\".  http://ecee.colorado.edu/~mcleod/teaching/nmip/lecturenotes.html.\n\n\nCredits\n---------------------------\n\nThis package was created with Cookiecutter_ and the `audreyr/cookiecutter-pypackage`_ project template.\n\n.. _Cookiecutter: https://github.com/audreyr/cookiecutter\n.. _`audreyr/cookiecutter-pypackage`: https://github.com/audreyr/cookiecutter-pypackage\n\n\n____\n\npytest --cov=diffractio tests/\n\n",
    "bugtrack_url": null,
    "license": "MIT license",
    "summary": "Optical Diffraction and Interference (scalar and vectorial)",
    "version": "0.2.4",
    "project_urls": {
        "Homepage": "https://bitbucket.org/optbrea/diffractio/src/master/"
    },
    "split_keywords": [
        "diffractio",
        "optics",
        "diffraction",
        "interference",
        "bpm",
        "wpm",
        "czt",
        "rs",
        "vrs"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "aa7060be8b87bf7b6953fee8fb733278d8d8d35b09c245401ea59aa9fbc6e392",
                "md5": "aa7321f64294a88fd442412aa3ae7835",
                "sha256": "9b99549fed9a45f121bde3e4fa50beba0ee7c3fe96f0a817500cf637150ec01e"
            },
            "downloads": -1,
            "filename": "diffractio-0.2.4-py2.py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "aa7321f64294a88fd442412aa3ae7835",
            "packagetype": "bdist_wheel",
            "python_version": "py2.py3",
            "requires_python": null,
            "size": 187279,
            "upload_time": "2023-11-22T20:38:00",
            "upload_time_iso_8601": "2023-11-22T20:38:00.681711Z",
            "url": "https://files.pythonhosted.org/packages/aa/70/60be8b87bf7b6953fee8fb733278d8d8d35b09c245401ea59aa9fbc6e392/diffractio-0.2.4-py2.py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "97e131ad39ea48536fab0cefa08354c037e7de73792f9a170701644e308e17b8",
                "md5": "97b1183532f99834c8a30ddb4a286379",
                "sha256": "5cd1307fd856a0bb0c03718e66ab840759e373c9ad21458f0ed40e4b44bdb078"
            },
            "downloads": -1,
            "filename": "diffractio-0.2.4.tar.gz",
            "has_sig": false,
            "md5_digest": "97b1183532f99834c8a30ddb4a286379",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 45630440,
            "upload_time": "2023-11-22T20:38:12",
            "upload_time_iso_8601": "2023-11-22T20:38:12.760661Z",
            "url": "https://files.pythonhosted.org/packages/97/e1/31ad39ea48536fab0cefa08354c037e7de73792f9a170701644e308e17b8/diffractio-0.2.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-11-22 20:38:12",
    "github": false,
    "gitlab": false,
    "bitbucket": true,
    "codeberg": false,
    "bitbucket_user": "optbrea",
    "bitbucket_project": "diffractio",
    "lcname": "diffractio"
}
        
Elapsed time: 0.22522s