4. Arago point

Here, we analyze how Arago point (also called Poisson spot) is generated using in XY and XYZ framework.

More information: https://www.lighttrans.com/use-cases/application-use-cases/observation-of-the-poisson-spot.html

4.1. XY

[1]:
from diffractio import np, plt, um, mm, nm, degrees
from diffractio.scalar_masks_XY import Scalar_mask_XY
from diffractio.scalar_sources_XY import Scalar_source_XY
number of processors: 8
[2]:
from matplotlib import rcParams

rcParams['figure.dpi']=125
rcParams['font.size']=14
[3]:
x0=np.linspace(-200*um, 200*um, 512)
y0=np.linspace(-200*um, 200*um, 512)
wavelength=532*nm
[4]:
u0=Scalar_source_XY(x0,y0,wavelength)
u0.gauss_beam(r0=(0,0), w0=130*um, z0=0, A=1, theta=0.0)
[5]:
obstacle=Scalar_mask_XY(x0,y0,wavelength)
obstacle.circle(r0=(0,0), radius=50*um)
obstacle.inverse_amplitude()
[6]:
obstacle=Scalar_mask_XY(x0,y0,wavelength)
obstacle.circle(r0=(0,0), radius=50*um)
obstacle.inverse_amplitude()

u1=u0*obstacle

u1.draw();
../../../_images/source_examples_optics_arago_point_7_0.png
[7]:
arago_point=u1.RS(z=2*mm)
[8]:
arago_point.draw(logarithm=True);
../../../_images/source_examples_optics_arago_point_9_0.png
[9]:
arago_point.draw_profile([-150,0], [150,0], npixels=2048, order=2);
../../../_images/source_examples_optics_arago_point_10_0.png

4.2. XYZ

[10]:
from diffractio import np, plt, um, mm, nm, degrees
from diffractio.scalar_fields_XYZ import Scalar_field_XYZ
from diffractio.scalar_sources_XY import Scalar_source_XY
from diffractio.scalar_masks_XY import Scalar_mask_XY
[11]:
from diffractio.utils_math import ndgrid
from diffractio.utils_optics import field_parameters
from scipy.interpolate import RegularGridInterpolator
[12]:
from matplotlib import rcParams
rcParams['figure.dpi']=125
rcParams['font.size']=14
[13]:
x0=np.linspace(-200*um, 200*um, 512)
y0=np.linspace(-200*um, 200*um, 512)
z0=np.linspace(1*mm, 2*mm, 32)

wavelength=532*nm
[14]:
u0=Scalar_source_XY(x0,y0,wavelength)
u0.gauss_beam(r0=(0,0), w0=130*um, z0=0, A=1, theta=0.0)
[15]:
obstacle=Scalar_mask_XY(x0,y0,wavelength)
obstacle.circle(r0=(0,0), radius=50*um)
obstacle.inverse_amplitude()

u1=u0*obstacle
[16]:
u_xyz=Scalar_field_XYZ(x0,y0,z0,wavelength)
[17]:
u_xyz.incident_field(u1)
[18]:
u_xyz.RS()
time in RS= 19.484660625457764. num proc= 6
[18]:
19.484660625457764
[19]:
u_xyz.draw_XYZ(kind='intensity', logarithm=False)

14bcf0d4b3cf4e89877a4746e6cce4c3

[20]:
u_xyz.draw_XZ(y0=0)
fig=plt.gcf()
fig.set_size_inches(8,3)
../../../_images/source_examples_optics_arago_point_23_0.png

4.3. XZ

Warning: The XZ results are not valid since, as it is an interferential process, radial symmetry is required.

[21]:
from diffractio.scalar_masks_XZ import Scalar_mask_XZ
from diffractio.scalar_masks_X import Scalar_mask_X
from diffractio.scalar_sources_X import Scalar_source_X
[22]:
x0=np.linspace(-200*um, 200*um, 1024)
z0=np.linspace(1*mm, 2*mm, 512)
wavelength=532*nm
[23]:
source_x=Scalar_source_X(x0,wavelength)
source_x.gauss_beam(x0=0, w0=130*um, z0=0, A=1, theta=0.0)
[24]:
mask_x=Scalar_mask_X(x0,wavelength)
mask_x.slit(x0=0, size=100 * um);
mask_x.u=1-mask_x.u
[25]:
u1=source_x*mask_x
[26]:
arago_xz=Scalar_mask_XZ(x0,z0,wavelength)
arago_xz.incident_field(u1)
[27]:
arago_xz.RS();
[28]:
arago_xz.draw()
fig=plt.gcf()
fig.set_size_inches(8,3);
../../../_images/source_examples_optics_arago_point_32_0.png