This package is in it's very early stage, hope for future growth but mostly for my personal fun.
This repository contains the implementation of Rigorous Coupled Wave Analysis (RCWA), a numerical method used to analyze the scattering and diffraction of electromagnetic waves by periodic structures. It includes a detailed formulation document, code, and examples.
Jumping straight into the topic: this is a one-dimensional binary dielectric grating with a period of 0.4 μm and a 50% fill factor, made of alternating regions with refractive indices 1.0 and 2.0. It is illuminated by TE-polarized light at a wavelength of 532 nm and an incidence angle of 10° in the x–z plane.
- Working on:
- Provide efficient algorithm that is flexible for:
- Simplify for homogeneous case
- Stable isotropic case
- Extended anisotropic case
- Provide advanced visualization capability
- Calculate and display electric field inside structures
- Provide efficient algorithm that is flexible for:
- Maybe:
- Li's factorization rule
- Normal vector method
formulation/
: (WIP)- Contains the (outdated) formulation document in both docx and pdf formats, providing a detailed explanation of the RCWA method.
rcwa
: main packagetest
: tests and examples
- Python 3.10
- Dependencies:
- NumPy (for numerical computations)
- Matplotlib (for plotting)
- SciPy (for solving eigenproblems)
The document available in the formulation/
directory provides derivations of the mathematical equations, and implementation details of the RCWA method.
The notebook/rcwa_v1.ipynb
Jupyter Notebook file contains the code implementation of the RCWA method.
The provided code achieves energy conservation (T+R=1).
The notebook also includes visualization capabilities to explore and visualize some of the modes obtained through RCWA calculations.
Feel free to modify the code according to your specific requirements, such as changing the incident angle, wavelength, or the number of harmonics. Experiment with different parameters and explore the visualization of various modes.
- Unstable, numerical error when using large harmonics, period=wavelength cases.
The following example is for V1 branch
results obtained from RSoft DiffractMOD and our implementation of the RCWA method.
The simulations were conducted under the following conditions: a wavelength of 530 nm, incidence angle of 30 degrees, grating period of 530 nm, groove depth ranges from 0 to 4 times the period (2120 nm), refractive index of 1.581 for both grating and substrate, symmetrical triangular groove shape, and TE polarization.
Error comparison, RMSE: 0.276%
The simulations were conducted under the following conditions: a wavelength of 530 nm, incidence angle ranges from -20 to 50 degrees, grating period of 583 nm, refractive index of 1.46 for both grating and substrate, triangular groove shape, and TE polarization.
Three grating shapes are simulated; in case a, the depth is 1.219 nm, with a slant angle of 23.289 degrees; in case b, the depth is 1.309 nm, with a slant angle of 12.55 degrees; in case c, the depth is 1.346 nm, with symmetric triangular groove.
RMSE: 0.262%
The simulations were conducted under a wavelength of 530 nm, incidence angle ranging from -30 to 30 degrees, grating period of 357nm, groove depth of 800 nm, refractive index of 2.0 for both grating and substrate, triangular groove with 35 degrees of slant angle, and bot TM and TE polarization.
RMSE: 1.279%
The future direction of this project includes the integration of TensorFlow to improve performance and the development of a more user-friendly package with enhanced visualization capabilities.
Collaboration and contributions from the community are highly encouraged. If you have ideas, suggestions, or would like to contribute to the project, please don't hesitate to reach out.
I am Hans, I love optics. I developed this RCWA implementation as part of my graduate research work. If you have any questions, suggestions, or would like to collaborate on optical research projects, feel free to contact me.
The RCWA formulation is based on the following references:
-
EMPossible: The website EMPossible provides a formulation document titled "Formulation of Rigorous Coupled-Wave Analysis (RCWA)" that offers insights into the theoretical foundations and mathematical equations of the RCWA method. You can find the document here.
-
R. C. Rumpf, "IMPROVED FORMULATION OF SCATTERING MATRICES FOR SEMI-ANALYTICAL METHODS THAT IS CONSISTENT WITH CONVENTION," PIER B, vol. 35, pp. 241–261, 2011. This research paper by R. C. Rumpf presents an improved formulation of scattering matrices for semi-analytical methods, including RCWA. The paper offers valuable insights into the consistent formulation of scattering matrices and can be accessed here.
-
EMPossible: The YouTube channel EMPossible provides educational videos on electromagnetic principles, including a lecture titled "Lecture 19 (CEM) -- Formulation of Rigorous Coupled-Wave Analysis." This lecture provides a visual explanation of the RCWA formulation and can be viewed here.
The software is licensed under the MIT License. See the LICENSE.txt file for details.