5.3.2. Tutorial 9b - Crystal properties of lithium niobate

Continuing the study of bulk material elastic properties from the previous tutorial, let’s take a look at the orientational dependence of lithium niobate, an increasingly important material in SBS.

The numerical values for the \(\mbox{LiNbO}_3\) material properties are taken from Rodrigues et al, JOSA B 40, D56 (2023).

[104]:
%load_ext autoreload
%autoreload 3

import sys
import numpy as np
from IPython.display import Image, display

sys.path.append("../backend")
import numbattools
import materials
The autoreload extension is already loaded. To reload it, use:
  %reload_ext autoreload

5.3.2.1. Stiffness tensor under crystal rotations

5.3.2.1.1. The default orientation: \(y\)-cut

To review, in NumBAT, the laboratory axes \(x\), \(y\) and \(z\) are fixed. Propagation occurs along the \(z\) direction and the vertical direction out of the substrate is along \(y\).

The crystal axes of a material, denoted \(X\), \(Y\) and \(Z\), or \(\hat{c}_x\), \(\hat{c}_y\), \(\hat{c}_z\) can be rotated.

The material is defined in the definition json files with the crystal and laboratory axes aligned, and is thus in \(y\)-cut form: the crystal \(Y\) axis points up out of the waveguide, with the crystal symmetry axis \(Z\) lying along the propagation direction \(z\).

[75]:
mat_LiNbO3 = materials.make_material("LiNbO3_2023_Rodrigues")

Here is the default orientation as just described.

[108]:
pref='tmp_LiNbO3_ycut'
mat_LiNbO3.make_crystal_axes_plot(pref+'-ycut')
display(Image(pref+'-ycut-crystal.png', width=300))
../_images/notebooks_jup_09b_linb_crystal_props_7_0.png

The crystal properties show that for this orientation the two shear modes for propagation along \(z\) are degenerate:

[109]:
print(mat_LiNbO3.elastic_properties())
Elastic properties of material LiNbO3_2023_Rodrigues
  Density:        4650.000 kg/m^3
  Ref. index:     2.2100+0.0000j
  Crystal class:  Trigonal
  Stiffness c_IJ:
Voigt tensor LiNbO3_2023_Rodrigues, stiffness c, unit: GPa.
[[198.83   54.64   68.23    7.83    0.      0.   ]
 [ 54.64  198.83   68.23   -7.83    0.      0.   ]
 [ 68.23   68.23  235.71    0.      0.      0.   ]
 [  7.83   -7.83    0.     59.86    0.      0.   ]
 [  0.      0.      0.      0.     59.86    7.83 ]
 [  0.      0.      0.      0.      7.83   72.095]]

  Wave mode 1: v_p=7.1197 km/s,  |v_g|=7.1197 km/s,  u_j=[ 0.0000  0.0000  1.0000],  v_g=[ 0.0000  0.0000  7.1197] km/s
  Wave mode 2: v_p=3.5879 km/s,  |v_g|=3.6185 km/s,  u_j=[ 1.0000  0.0000  0.0000],  v_g=[ 0.0000  0.4693  3.5879] km/s
  Wave mode 3: v_p=3.5879 km/s,  |v_g|=3.6185 km/s,  u_j=[ 0.0000  1.0000  0.0000],  v_g=[ 0.0000 -0.4693  3.5879] km/s

This is not true if the wave vector direction in the \(x\)-\(z\) plane is varied.

By solving the Christoffel equation as the wave vector rotates in the \(x\)-\(z\) plane we can map out curves of the phase velocity, inverse phase velocity (or “slowness”), and the magnitude of the group velocity \(|v_g(\kappa)|\).

The faint circular lines mark radial velocities at 1 km/s intervals.

[22]:
mat_LiNbO3.plot_bulk_dispersion(pref)
display(Image(pref+'-bulkdisp.png'))
../_images/notebooks_jup_09b_linb_crystal_props_11_0.png

For this material, it is quite hard to see the difference between the phase and group velocity plots. That is more obvious in some other materials.

These plots can also be generated without the polarisation state markers:

[23]:
mat_LiNbO3.plot_bulk_dispersion(pref, show_poln=False)
display(Image(pref+'-bulkdisp.png'))
../_images/notebooks_jup_09b_linb_crystal_props_13_0.png

5.3.2.1.2. The \(z\)-cut orientation

We now rotate the starting crystal so the primary symmetry axis \(Z\) points up along \(y\), with the \(-Y\) axis along \(z\). This corresponds to Fig. 2a in Rodrigues et al.

[24]:
pref='tmp_LiNbO3_zcut'
mat_LiNbO3_z = mat_LiNbO3.copy()
mat_LiNbO3_z.set_orientation('z-cut')
Applying rotation [1. 0. 0.] -1.5707963267948966
[25]:
mat_LiNbO3_z.make_crystal_axes_plot(pref+'-zcut')
display(Image(pref+'-zcut-crystal.png', width=300))
../_images/notebooks_jup_09b_linb_crystal_props_17_0.png

With the 6-fold symmetry axis \(Z\) pointing up along \(y\), the dispersion cuts in the \(x\)-\(z\) plane now display the full 6-fold symmetry.

[26]:
mat_LiNbO3_z.plot_bulk_dispersion(pref)
display(Image(pref+'-bulkdisp.png'))
../_images/notebooks_jup_09b_linb_crystal_props_19_0.png

5.3.2.1.3. The \(x\)-cut orientation

[27]:
pref='tmp_LiNbO3_xcut'

mat_LiNbO3_x =  mat_LiNbO3.copy()
mat_LiNbO3_x.set_orientation('x-cut')

print(mat_LiNbO3_x.elastic_properties())
Applying rotation [0. 0. 1.] 1.5707963267948966
Elastic properties of material LiNbO3_2023_Rodrigues
  Density:        4650.000 kg/m^3
  Ref. index:     2.2100+0.0000j
  Crystal class:  Trigonal
  Stiffness c_IJ:
Voigt tensor LiNbO3_2023_Rodrigues, stiffness c, unit: GPa.
[[ 1.9883e+02  5.4640e+01  6.8230e+01 -1.4383e-15  7.8300e+00  0.0000e+00]
 [ 5.4640e+01  1.9883e+02  6.8230e+01  1.4383e-15 -7.8300e+00 -1.6552e-47]
 [ 6.8230e+01  6.8230e+01  2.3571e+02  0.0000e+00  0.0000e+00  0.0000e+00]
 [-1.4383e-15  1.4383e-15  0.0000e+00  5.9860e+01  0.0000e+00 -7.8300e+00]
 [ 7.8300e+00 -7.8300e+00  0.0000e+00  0.0000e+00  5.9860e+01 -1.4383e-15]
 [ 0.0000e+00 -4.2352e-31  0.0000e+00 -7.8300e+00 -1.4383e-15  7.2095e+01]]

  Wave mode 1: v_p=7.1197 km/s,  |v_g|=7.1197 km/s,  u_j=[ 0.0000  0.0000  1.0000],  v_g=[ 0.0000  0.0000  7.1197] km/s
  Wave mode 2: v_p=3.5879 km/s,  |v_g|=3.6185 km/s,  u_j=[ 1.0000  0.0000  0.0000],  v_g=[ 0.4693 -0.0000  3.5879] km/s
  Wave mode 3: v_p=3.5879 km/s,  |v_g|=3.6185 km/s,  u_j=[ 0.0000  1.0000  0.0000],  v_g=[-0.4693  0.0000  3.5879] km/s
[28]:
mat_LiNbO3_x.make_crystal_axes_plot(pref+'-xcut')
display(Image(pref+'-xcut-crystal.png', width=300))
../_images/notebooks_jup_09b_linb_crystal_props_22_0.png
[29]:
mat_LiNbO3_x.plot_bulk_dispersion(pref, show_poln=False)
display(Image(pref+'-bulkdisp.png'))

../_images/notebooks_jup_09b_linb_crystal_props_23_0.png

5.3.2.2. Photoelastic response

Now let’s consider the influence of crystal orientation on the optoelastic coupling.

The photoelastic tensor elements also change in value as the crystal is rotated. Once again, we can plot the coefficients in the lab frame coordinates, as a crystal of given orientation is rotated around the \(y\) axis.

As with the results above, the \(Z\)-cut crystal exhibits the 3-fold trigonal symmetry, while the other two cuts have more complex behaviour.

[105]:
mat_LiNbO3.plot_photoelastic_IJ(pref, ("11","12", "13", "14", "15"))
../_images/notebooks_jup_09b_linb_crystal_props_26_0.png
[106]:
mat_LiNbO3_x.plot_photoelastic_IJ(pref, ("11","12", "13", "14", "15"))
../_images/notebooks_jup_09b_linb_crystal_props_27_0.png
[107]:
mat_LiNbO3_x.plot_photoelastic_IJ(pref, ("11","12", "13", "14", "15"))
../_images/notebooks_jup_09b_linb_crystal_props_28_0.png