7.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

7.4.1. XY

[17]:
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
[18]:
x0=np.linspace(-200*um, 200*um, 512)
y0=np.linspace(-200*um, 200*um, 512)
wavelength=532*nm
[19]:
u0=Scalar_source_XY(x0,y0,wavelength)
u0.gauss_beam(r0=(0,0), w0=130*um, z0=0, A=1, theta=0.0)
[20]:
obstacle=Scalar_mask_XY(x0,y0,wavelength)
obstacle.circle(r0=(0,0), radius=50*um)
obstacle.inverse_amplitude()
[21]:
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_arago_point_6_0.png
[22]:
arago_point=u1.RS(z=2*mm)
[23]:
arago_point.draw(logarithm=True);
../../_images/source_examples_arago_point_8_0.png
[24]:
arago_point.draw_profile([-150,0], [150,0], npixels=2048, order=2);
../../_images/source_examples_arago_point_9_0.png

7.4.2. XYZ

[25]:
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
[26]:
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
[27]:
u0=Scalar_source_XY(x0,y0,wavelength)
u0.gauss_beam(r0=(0,0), w0=130*um, z0=0, A=1, theta=0.0)
[28]:
obstacle=Scalar_mask_XY(x0,y0,wavelength)
obstacle.circle(r0=(0,0), radius=50*um)
obstacle.inverse_amplitude()

u1=u0*obstacle
[29]:
u_xyz=Scalar_field_XYZ(x0,y0,z0,wavelength)
[30]:
u_xyz.incident_field(u1)
[31]:
u_xyz.RS()
time in RS= 32.20965385437012. num proc= 6
[ ]:
# u_xyz.draw_XYZ(kind='intensity', logarithm=False)

57d41c26d91b4ef7b5b39fd949e17bc5

[32]:
u_xyz.draw_XZ(y0=0)
fig=plt.gcf()
fig.set_size_inches(8,3)
<Figure size 432x288 with 0 Axes>
../../_images/source_examples_arago_point_21_1.png

7.4.3. XZ

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

[33]:
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
[34]:
x0=np.linspace(-200*um, 200*um, 1024)
z0=np.linspace(1*mm, 2*mm, 512)
wavelength=532*nm
[35]:
source_x=Scalar_source_X(x0,wavelength)
source_x.gauss_beam(x0=0, w0=130*um, z0=0, A=1, theta=0.0)
[36]:
mask_x=Scalar_mask_X(x0,wavelength)
mask_x.slit(x0=0, size=100 * um);
mask_x.u=1-mask_x.u
[37]:
u1=source_x*mask_x
[38]:
arago_xz=Scalar_mask_XZ(x0,z0,wavelength)
arago_xz.incident_field(u1)
[39]:
arago_xz.RS();
[40]:
arago_xz.draw()
fig=plt.gcf()
fig.set_size_inches(8,3);
../../_images/source_examples_arago_point_30_0.png