.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "examples/point_source.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_examples_point_source.py: Point source ============ Basic example of computation of the field emitted by an isotropic point source. .. GENERATED FROM PYTHON SOURCE LINES 9-10 Import required libraries .. GENERATED FROM PYTHON SOURCE LINES 10-16 .. code-block:: default import matplotlib.pyplot as plt import numpy as np import pysrw as srw .. GENERATED FROM PYTHON SOURCE LINES 17-18 Ccreate the point emitter radiating 1 ph/(s mm^2) .. GENERATED FROM PYTHON SOURCE LINES 18-20 .. code-block:: default ptSrc = srw.emitters.PointSource(flux=1) .. GENERATED FROM PYTHON SOURCE LINES 21-23 Create a 10 mm x 10 mm observation mesh, with a resolution of 10 um, placed 10 cm downstream of the source .. GENERATED FROM PYTHON SOURCE LINES 23-29 .. code-block:: default observer = srw.wavefronts.Observer(centerCoord=[0, 0, .1], obsXextension=10e-3, obsYextension=10e-3, obsXres=10e-6, obsYres=10e-6) .. GENERATED FROM PYTHON SOURCE LINES 30-32 Compute the wavefront at the observation wavelength of 600 nm. The multiprocessing version is reported for comparison .. GENERATED FROM PYTHON SOURCE LINES 32-35 .. code-block:: default wfr = srw.computePtSrcWfr(ptSrc, observer, wavelength=600) wfr_mp = srw.computePtSrcWfrMultiProcess(4, ptSrc, observer, wavelength=600) .. GENERATED FROM PYTHON SOURCE LINES 36-37 Compute the corresponding optical intensity .. GENERATED FROM PYTHON SOURCE LINES 37-40 .. code-block:: default intensity = wfr.getWfrI() intensity_mp = wfr_mp.getWfrI() .. GENERATED FROM PYTHON SOURCE LINES 41-42 Plot the 2D intensity distribution .. GENERATED FROM PYTHON SOURCE LINES 42-45 .. code-block:: default srw.plotI(intensity) srw.plotI(intensity_mp) .. rst-class:: sphx-glr-horizontal * .. image-sg:: /examples/images/sphx_glr_point_source_001.png :alt: point source :srcset: /examples/images/sphx_glr_point_source_001.png :class: sphx-glr-multi-img * .. image-sg:: /examples/images/sphx_glr_point_source_002.png :alt: point source :srcset: /examples/images/sphx_glr_point_source_002.png :class: sphx-glr-multi-img .. GENERATED FROM PYTHON SOURCE LINES 46-47 Extract cross-cut using :py:func:`~pysrw.tools.extractCrossCuts` .. GENERATED FROM PYTHON SOURCE LINES 47-51 .. code-block:: default crosscuts = srw.extractCrossCuts(intensity) xax = crosscuts["xax"] xcut = crosscuts["xdata"] .. GENERATED FROM PYTHON SOURCE LINES 52-53 Compare with the intensity decay due to spherical attenuation .. GENERATED FROM PYTHON SOURCE LINES 53-56 .. code-block:: default theta = np.arctan(xax / observer.zPos) xcut_theo = 1/(4 * np.pi * observer.zPos**2) * np.cos(theta)**3 * 1e-6 # ph / (s mm^2) .. GENERATED FROM PYTHON SOURCE LINES 57-58 Plot the resulting cuts .. GENERATED FROM PYTHON SOURCE LINES 58-65 .. code-block:: default fig, ax = plt.subplots() ax.plot(xax * 1e3, xcut, label="sim") ax.plot(xax * 1e3, xcut_theo, linestyle="--", label="theo") ax.set_xlabel("x position [mm]") ax.set_ylabel("Intensity [ph/(s mm^2 0.1%BW)]") ax.legend() plt.show() .. image-sg:: /examples/images/sphx_glr_point_source_003.png :alt: point source :srcset: /examples/images/sphx_glr_point_source_003.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 2.931 seconds) **Estimated memory usage:** 80 MB .. _sphx_glr_download_examples_point_source.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: point_source.py ` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: point_source.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_