Tutorial
In this tutorial, we will present some basic knowledge of dispersion diagrams and use an example to show how ClosedWaveguideDispersion.jl works.
Problem
Let $\Omega = \mathbb{R} \times (0, 1) \subset \mathbb{R}^{2}$ be a closed waveguide with the boundary
\[\partial \Omega = \{x = (x_{1}, x_{2}) \in \mathbb{R}^{2} : x_{2} = 0 \text{ or } x_{2} = 1\}.\]
Suppose $\Omega$ is filled by periodic medium with period $p$ in $x_{1}$ direction. The medium can be characterized by the real-valued refactive index $q(x_{1}, x_{2})$ satisfying
\[q(x_{1} + p, x_{2}) = q(x_{1}, x_{2}),\ q \geqslant c > 0,\ \forall (x_{1}, x_{2}) \in \Omega.\]
Moreover, we assume that $q(x_{1}, x_{2}) \in L^{\infty}(\Omega)$.
The wave propagation in the periodic closed waveguide is modeled by the following boundary value problem
\[\begin{equation*} \begin{cases} \Delta u + k^{2}q(x_{1}, x_{2})u = f &\text{ in } \Omega, \\ \frac{\partial u}{\partial x_{2}} = 0 &\text{ on } \partial \Omega, \end{cases} \end{equation*}\]
where $f$ is a function in $L^{2}(\Omega)$ with compact support, and $k > 0$ is the real wavenumber. Here we take the Neumann boundary condition as an example. We can also use other boundary conditions as soon as they are consistent with the periodicity.
Periodicity
Let $A \in \mathbb{R}^{n \times n}$ be an invertible matrix whose columns $a_{1}, \ldots, a_{n}$ are linearly independent. A (Bravias) lattice $\Gamma$ in $\mathbb{R}^{n}$ is defined by
\[\begin{equation*} \Gamma = \{ \gamma \in \mathbb{R}^{n} : \gamma = Az = \sum_{j = 1}^{n} a_{j} z_{j},\ z \in \mathbb{Z}^{n} \}. \end{equation*}\]
We introduce the fundamental cell $W$, so-called Wigner-Seitz cell,
\[\begin{equation*} W = \{ \gamma \in \mathbb{R}^{n} : \gamma = Az,\ z \in \mathbb{Z}^{n},\ -1/2 < z_{j} < 1/2 \}. \end{equation*}\]
Let $B \in \mathbb{R}^{n \times n}$ denote $2\pi(A^{\mathrm{T}})^{-1}$ whose columns are $b_{1}, \ldots, b_{n}$. Then we have the lattice generated by $B$,
\[\begin{equation*} K = \{ k \in \mathbb{R}^{n} : k = Bz = 2\pi(A^{\mathrm{T}})^{-1}z = \sum_{j = 1}^{n} b_{j} z_{j},\ z \in \mathbb{Z}^{n} \}. \end{equation*}\]
We call $K$ the reciprocal lattice of $\Gamma$. The Brillouin zone $B$ is defined by
\[\begin{equation*} B = \{ k \in \mathbb{R}^{n} : k = Bz,\ z \in \mathbb{Z}^{n},\ -1/2 < z_{j} < 1/2 \}. \end{equation*}\]
Since we consider 2D closed waveguides which are periodic in $x_{1}$ direction. Then our discussion above reduces to the scalar case. If our period is $p$, then the Wigner-Seitz cell is $(-p/2, p/2)$ and the Brillouin zone is $(-\pi/p, \pi/p)$.
Floquet-Bloch theory
For simplicity, we only present necessary notions for computation. For more theoretical details, we refer to [1] and [2]. The Floquet-Bloch transform is given by
\[(Tu)(x_{1}, x_{2}; \alpha) = \sum_{n \in \mathbb{Z}} u(x_{1} + 2\pi n, x_{2}) e^{-i\alpha (x_{1} + 2\pi n)}.\]
Actually, it is a partial Floquet-Bloch tranform which is only applied on $x_{1}$ variable. The parameter $\alpha$ is introduced by the Floquet-Bloch transform. And we always consider $\alpha$ in the Brillouin zone $(-\pi/p, \pi/p)$.
Transfering the dependence on $\alpha$ from the function space to the PDE by using the (partial) Floquet-Bloch transform, we have the following boundary value problem
\[\begin{equation*} \begin{cases} \Delta v + 2i\alpha \partial_{1}v + (k^{2}q(x_{1}, x_{2}) - \alpha^{2}) v = 0 &\text{ in } \Omega_{0}, \\ \frac{\partial v}{\partial x_{2}} = 0 &\text{ on } \partial \Omega_{0}, \\ v \text{ is periodic with respect to } x_{1}. &\phantom{on} \end{cases} \end{equation*}\]
Variational formulation
In this section, we present the variational formulation of the periodic boundary value problem introduced in the preceding section: Find $v \in H_{per}^{1}(\Omega_{0})$ satisfying
\[\int_{\Omega_{0}} \nabla v \cdot \nabla \bar{\phi} - 2i\alpha \partial_{1} v \bar{\phi} - (k^{2}q(x_{1}, x_{2}) - \alpha^{2}) v \bar{\phi} dx = 0.\]
After finite element discretization, we can obtain a generalized linear eigenvalue problem
\[\mathbf{A}_{\alpha} \mathbf{v} = k^{2} \mathbf{B} \mathbf{v},\]
where $\mathbf{A}_{\alpha}$ comes from
\[\int_{\Omega_{0}} \nabla v \cdot \nabla \bar{\phi} - 2i\alpha \partial_{1} v \bar{\phi} + \alpha^{2} v \bar{\phi} dx \]
and $\mathbf{B}$ comes from
\[\int_{\Omega_{0}} q(x_{1}, x_{2}) v \bar{\phi} dx.\]
- We use the Finite element method to discretize the variational formulation. All Finite element codes are implemented by Ferrite.jl
- After the Finite element discretization, we obtain a generalized linear eigenvalue problem parametered by $\alpha$. We utilize Arpack.jl to solve the generalized linear eigenvalue problems with fixed $\alpha$.