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();
[22]:
arago_point=u1.RS(z=2*mm)
[23]:
arago_point.draw(logarithm=True);
[24]:
arago_point.draw_profile([-150,0], [150,0], npixels=2048, order=2);
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
Warning: drawXYZ has been deprecated as I have not been able to re-install mayavi.
[ ]:
# u_xyz.draw_XYZ(kind='intensity', logarithm=False)
[32]:
u_xyz.draw_XZ(y0=0)
fig=plt.gcf()
fig.set_size_inches(8,3)
<Figure size 432x288 with 0 Axes>
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);