8. Drawing for vector fields

For vector fields, there are special drawings. Here we explain how to extract information from these drawings

[1]:
from diffractio import np, sp, plt
from diffractio import nm, um, mm, degrees
from diffractio.scalar_fields_XY import Scalar_field_XY
from diffractio.scalar_masks_XY import Scalar_mask_XY
from diffractio.scalar_sources_XY import Scalar_source_XY

from diffractio.vector_masks_XY import Vector_mask_XY
from diffractio.vector_sources_XY import Vector_source_XY

from diffractio.utils_drawing import concatenate_drawings, draw_several_fields
[2]:
length = 500 * um
num_data = 256
wavelength = 0.6328 * um

x0 = np.linspace(-200 * um, 200 * um, 512)
y0 = np.linspace(-200 * um, 200 * um, 512)

u0 = Scalar_source_XY(x0, y0, wavelength)
u0.gauss_beam(A=1, r0=(0, 0), w0=100 * um, z0=0)

EM = Vector_source_XY(x0, y0, wavelength)
EM.azimuthal_wave(u=u0, r0=(0, 0), radius=(200, 200))
EM.VRS(z=10 * mm, new_field=False)
EM.normalize()

Ex, Ey, _ = EM.get()

EM.reduce_matrix = ''

Draw intensity

[3]:
EM.draw(kind='intensity')

../../../_images/source_tutorial_vector_XY_tutorial_vector_XY_draw_5_0.png

Draw intensities

If the Ez field presents intensity, it is also shown

[4]:
EM.draw(kind='intensities')

../../../_images/source_tutorial_vector_XY_tutorial_vector_XY_draw_7_0.png

Draw phase

[5]:
EM.draw(kind='phases')

../../../_images/source_tutorial_vector_XY_tutorial_vector_XY_draw_9_0.png

Draw field

[6]:
EM.draw(kind='fields')
../../../_images/source_tutorial_vector_XY_tutorial_vector_XY_draw_11_0.png

Draw Stokes

[7]:
EM.draw(kind='stokes')

../../../_images/source_tutorial_vector_XY_tutorial_vector_XY_draw_13_0.png

Draw polarization ellipses parameters

[8]:
EM.draw(kind='param_ellipse')

../../../_images/source_tutorial_vector_XY_tutorial_vector_XY_draw_15_0.png

Draw intensity with polarization vectors

[9]:
EM.__draw_ellipses__(logarithm=False,
                     normalize=False,
                     cut_value=False,
                     num_ellipses=(30, 30),
                     amplification=0.75,
                     color_line='r',
                     line_width=.5,
                     draw_arrow=True,
                     head_width=2,
                     ax=False)

../../../_images/source_tutorial_vector_XY_tutorial_vector_XY_draw_17_0.png

This polarizaation ellipses can also be drawn at any other drawing, provided that we have the axis associated to this drawing

[11]:
h1, h2 = EM.draw(kind='intensities')
EM.__draw_ellipses__(logarithm=False,
                     normalize=False,
                     cut_value=False,
                     num_ellipses=(15, 15),
                     amplification=0.75,
                     color_line='w',
                     line_width=.5,
                     draw_arrow=True,
                     head_width=2,
                     ax=h1)

EM.__draw_ellipses__(logarithm=False,
                     normalize=False,
                     cut_value=False,
                     num_ellipses=(15, 15),
                     amplification=0.75,
                     color_line='y',
                     line_width=.5,
                     draw_arrow=True,
                     head_width=2,
                     ax=h2)
plt.tight_layout()
../../../_images/source_tutorial_vector_XY_tutorial_vector_XY_draw_19_0.png
[ ]: