PA-Three

Problem

PA-Three is an example in [4]

  • $q(x_{1}, x_{2}) = 1 + 0.5 \cos(2\pi x_{1}) \sin(2\pi x_{2})$
  • Neumann boundary condition on $\partial \Omega$

Code

Load the necessary packages

using Ferrite: Lagrange, RefTriangle
using ClosedWaveguideDispersion

In this example, we only need to define a new refractive index.

function n(x)
    return 1.0 + 0.5 * cos(2π * x[1]) * sin(2π * x[2])
end;
p = 1.0;
h = 1.0;
N = 150;

# Set up the grid
grid = setup_grid(lc=0.05, period=p, height=h)

# Define the interpolation
ip = Lagrange{RefTriangle, 1}()

# Set up the FE values: CellValues
cv = setup_fevs(ip)

# Set up the DofHandler
dh = setup_dofs(grid, ip)

# Set the boundary conditions
cst = setup_bdcs(dh, period=p)

# Allocate the matrices
A = allocate_matries(dh, cst)
B = allocate_matries(dh, cst)

# Discretize the Brillouin zone
bz = collect(range(-π/p, 2π/p, N))

# Calculate the dispersion diagram
μ = calc_diagram(cv, dh, cst, A, B, n, bz, nevs=6)

# Plot the dispersion diagram
plot_diagram(bz, μ, period=p)
Example block output

This page was generated using Literate.jl.