In this example, we simulate a grating with spatially varying refractive index due to strain. We first use an analytical formula to relate the bending of the structure to strain, and consequently to the refractive index changes. Then, we use Ansys Mechanical to calculate the strain distribution of the grating. The reflected diffraction results from both approaches are then compared for validation.
Overview
Understand the simulation workflow and key results
In this example, we used both methods to examine the change of diffraction efficiency of a fused silica grating. The analytical method is based on Hooke’s law equations described in detail at Appendix, where the refractive index is calculated from strain, due to bending.
The simulation method involves real strain data of a grating obtained by ANSYS Mechanical. We export and manipulate the strain data as XY map. The transpose from strain map to refractive index map takes place in python scripting language, where then is imported in Lumerical as varying index material. Finally, nanoscale light interaction with the bent grating with Lumerical’s FDTD solver will show how its reflected efficiency is affected.
Step 1: Analytical method – Lumerical.
We created a simulation file that contains a grating made from the bent glass which has been etched with a 50% duty cycle. A structure group contains a script that constructs the spatially varying refractive index based on the formulas and constants for glass, described at Analytical method equations. It allows the user to enable or disable the bending, and set the radius of curvature, R. For this example, we use R = 10 millimeters for bend test.
Step 2: Bending simulation with Ansys Mechanical.
We used ANSYS Mechanical to simulate the strain distribution of a single period grating under mechanical bend. The model consists of two structures, a grating (gray color) and a base (green color). The top surface of the base is designed with a 10 mm radius, where the grating will bend against to form the bending. The structures were divided with mesh grids of 0.6 um, where the equivalent strain values were calculated.
The local strain at every grid point can be expressed by a tensor as below:
$$ \text{Strain tensor}=\begin{bmatrix} \varepsilon_{xx}&\varepsilon_{xy}&\varepsilon_{xz} \\ \varepsilon_{yx}&\varepsilon_{yy}&\varepsilon_{yz} \\ \varepsilon_{zx}&\varepsilon_{zy}& \varepsilon_{zz}\end{bmatrix}$$
Mechanical displacement (-Y direction) was applied on the edges of the grating (blue arrows) until the bottom surface of the grating meets the top surface of the arc. After simulation’s completion, strain distribution XY surface map can be exported. Then, the surface map is imported into the python script for data interpolation.
Step 3: (n,k) import material - Interpolate XY Refractive index map.
In this step, we import the interpolated strain data in Lumerical structure group. In the latter group structure, a script calculates the refractive index from stress-strain Hook’s law equations. Mechanical strain data are used directly in these equations obtaining the refractive index profile of the grating structure under bend. Importnk2 script command is used to import the spatially varying refractive index structure. Then, a script is used to calculate the reflected order efficiency of the grating.
Run and Results
Instructions for running the model and discussion of key results
Step 1: Create a spatially varying index profile and calculate the reflected order efficiency.
- Open the simulation file “stress_strain.fsp”.
- Run script “stress_strain_analysis.lsf”.
The script file “stress_strain_analysis.lsf” activates the “Analytical” structure group and runs two simulations: one with no bending, using the nominal index of the glass (here 1.444), and a second simulation enables bending. We visualize the refractive index of the glass, which can be seen clearly by in the following pictures.
The script compares the reflected order efficiencies for both cases, while it also writes reflection data for no bend state, in "analytical_no-bend.txt" file. The latter data are used in 3rd step to co-plot them with the simulation data. We can see that the order efficiency for the 0th order of no bend status shares the same value with the R = 10 mm bending, showing a difference of less than 0.1% reflection.
Step 2: Create Grating structure and Run Mechanical Simulation.
- Open the Mechanical simulation file “Grating_single Period_10mm.wbpzj”.
- Click on “Model” to open Mechanical GUI.
- Press Solve to run the simulation.
- Export Y deformed location from “Solution(A6) <Deformed_Locat_Y_map” and save in “deformed_locY.txt” file.
- Export X deformed location from “Solution(A6) <Deformed_Locat_X_map” and save in “deformed_locX.txt” file.
- Export strain data from “Solution(A6) <Equivalent Elastic Strain <Equivalent Elastic Strain_map”.
- Save data in file “strainmapXYZ_R10mm.txt”.
We select the surface map of the grating omitting the edges of the surface, to exclude local edge effects due to displacement force. Figure below depicts the surface strain map of the grating under 10 mm bend radius.
Exported data of strain distribution includes X (m), Y (m), Z (m) locations and Strain values (m/m) of each surface mesh element. We omit the Z location in our calculations due to uniformity of strain along Z axis. Mechanical exports by default the XY node locations for the free of deformation grating structure (no displacement on X, Y locations), depicted in the following figure.
We used LOC_DEFX and LOC_DEFY script commands, to calculate the X, Y node locations after force displacement is applied. Both new node locations of the grating under bend, are calculated and saved in files “deformed_locX.txt” and “deformed_locY.txt”, respectively. Following that, we copied the new X, Y locations in “strainmapXYZ_R10mm.txt” to obtain the strain data of grating under bend deformation. The following picture shows how we introduce the deformed X and Y locations in file. Finally, we save the file and use it in python for interpolation.
Step 3: Export Strain XY surface raw data map and import in Python for interpolation.
- Open and Run file “interpolation.py”.
We used a Python script to interpolate the raw data of XY surface strain map. We import the raw strain data file, “strainmapXYZ_R10mm.txt” in “interpolation.py” python script and interpolate with 3000 data points to achieve a high resolution of strain data on grating’s surface. The figure below depicts the interpolated strain XY map of grating where color bar depicts the strain values.
Step 4: Import interpolated Strain data – Create refractive index profile – Calculate reflected order efficiency with FDTD solver.
- Open the simulation file “stress_strain.fsp.
- Run script “stress_strain_analysis_Lum_Mech.lsf”.
The script file “stress_strain_analysis_Lum_Mech.lsf” activates the “Simulation” structure group and runs the simulation. It returns the reflected order efficiency plot for the grating with spatially varied index. The refractive index distribution of the grating can be seen clearly by setting the color bar min and max, to 1.44394 and 1.444, respectively. Due to the large bend radius of the grating, the refractive index change is minimum, but exhibits a different distribution compared to analytical method.
In addition, the script reads the order efficiency data from analytical method, "analytical_no-bend.txt" file, and co-plots it with the reflection results from simulation method. The script compares the reflected order efficiencies for the analytical and simulation methods in the same plot. Both plots coincide, with a deviation of less than 0.1%.
Important model settings
Description of important objects and settings used in model.
Introducing spatially varying refractive index in Lumerical’s FDTD, it is important to distinguish situations which will result in diagonal anisotropy from non-diagonal anisotropy. Diagonal anisotropy, which is the subject of this example, can be solved easily using an (n,k) import material, available in both FDTD and MODE.
Grating’s dimensions
The user can alter the characteristics of the grating according to the needs of the application. Characteristics such as material, pitch size, etch depth, fill factor and thickness of the grating can be modified in ANSYS Mechanical and validate its performance. The following picture portrays the dimensions of the grating used in this example, as well as the strain distribution of a two-period grating.
Uniformity validation
We run a stress/strain simulation for multiple periods grating to compare it with a single period. The purpose of this analysis is to check the strain uniformity along z-axis for multiple period grating. Thus, a single period grating will be used to simulate the strain analysis of a uniform bending under constant radius. The picture below portrays the strain results of a 12-period grating under bend. Results indicate that each grating period is under the same XY strain distribution.
Taking the model further
Information and tips for users that want to further customize the model.
Short Bend Radius (R < 10 mm)
This application example could be extended, and calculate the reflected order efficiency, for bend radii shorter than 10 mm. Special care should be taken for the simulation method though, as the periodic BCs cannot be applied in Lumerical, due to the bended formation of the exported strain data. Instead, PML BCs could be used for the x direction of the grating. Additionally, the plane wave source should be replaced by a gaussian source with a beam waist that covers many bended gratings. A convergence test, for a large number of gratings under illumination, should be conducted to obtain accurate order efficiency results.
Additional resources
Additional documentation, examples, and training material
Related publications
- D. Lockwood, L. Pavesi, "Silicon Photonics II: Components and Integration", Springer, 2011
- W. Primak and D. Post, "Photoelastic constants of vitreous silica and its elastic coefficient of refractive index", J. Appl. Phys. 30, 779 –788 (1959).
- C. Shulze et al, "Mode resolved bend loss in few-mode optical fibers", Opt Express, 2013.
Appendix
Analytical method equations
In general, the change in permittivity due to a given strain is given by
$$ \Delta\left(\frac{1}{n^{2}}\right)_{i}=\Delta\left(\frac{1}{\varepsilon_{r}}\right)_{i}=p_{i j} \varepsilon_{j} $$
where n is the refractive index, εr is the relative permittivity, p is the photoelastic tensor and ε is the strain. We use the contracted tensor notation (1-xx, 2-yy, 3-zz, 4-zy, 5-zx, 6-xy) [1].
Note: If the stress or strain results in a permittivity tensor with off-diagonal elements, then it will be necessary to diagonalize that permittivity tensor and use a matrix transformation to introduce the effect of the strain. The setup of the matrix transform grid attribute is demonstrated in Matrix transformation. |
Generally, in isotropic media it is possible to simplify the above expression. Furthermore, in some circumstances, it is useful to relate the change in refractive index to the strain rather than the stress, which can be done using the stress-strain relations. For example, in fused silica the change in refractive index in the i-th direction can be related to the strain by
$$ \Delta n_{i}=n_{i}-n_{0}=-B_{2} \sigma_{i}-B_{1}\left(\sigma_{j}+\sigma_{k}\right) $$
where the indices (i,j,k) are cyclical permutations of (x,y,z) and the values of B1 = 4.22e-6 (MPa)-1 and B2 = 0.65e-6 (MPa)-1 [2].
For this example, we assume that we have a fused silica grating that has been bent over a radius, R, much larger than the pitch, a. The dominant elongation component is therefore along the x-axis, and we can neglect the other transverse components to the strain. We assume, therefore, that the stress has the form
$$ \sigma_{y}=\sigma_{z}=C_{12} \frac{y}{R} $$
$$ \sigma_{x}=C_{11} \frac{y}{R} $$
where y is the distance from the bending center, C11 and C12 are components of the elasticity tensor that relate σ (stress) and ε (strain) by Hooke’s law (σ=C*ε). This is similar to the effect of bending a fiber, as shown in [3] but can also be applied to a bent grating. The components are given by
$$ C_{11}=\frac{(1-n) E}{(1+n)(1-2 n)}$$
$$C_{12}=\frac{n E}{(1+n)(1-2 n)} $$
where n = 0.164 is the Poisson number and E = 76 GPa being the Young’s modulus for fused silica [2].