|
|
|
@ -7,7 +7,8 @@ from typing import Sequence, Tuple
|
|
|
|
|
import numpy # type: ignore
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def triangular_lattice(dims: Tuple[int, int],
|
|
|
|
|
def triangular_lattice(
|
|
|
|
|
dims: Tuple[int, int],
|
|
|
|
|
asymmetric: bool = False,
|
|
|
|
|
origin: str = 'center',
|
|
|
|
|
) -> numpy.ndarray:
|
|
|
|
@ -71,7 +72,8 @@ def square_lattice(dims: Tuple[int, int]) -> numpy.ndarray:
|
|
|
|
|
# ### Photonic crystal functions ###
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def nanobeam_holes(a_defect: float,
|
|
|
|
|
def nanobeam_holes(
|
|
|
|
|
a_defect: float,
|
|
|
|
|
num_defect_holes: int,
|
|
|
|
|
num_mirror_holes: int
|
|
|
|
|
) -> numpy.ndarray:
|
|
|
|
@ -175,7 +177,8 @@ def y_splitter(num_mirror: int) -> numpy.ndarray:
|
|
|
|
|
return p
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def ln_defect(mirror_dims: Tuple[int, int],
|
|
|
|
|
def ln_defect(
|
|
|
|
|
mirror_dims: Tuple[int, int],
|
|
|
|
|
defect_length: int,
|
|
|
|
|
) -> numpy.ndarray:
|
|
|
|
|
"""
|
|
|
|
@ -198,7 +201,8 @@ def ln_defect(mirror_dims: Tuple[int, int],
|
|
|
|
|
return p[numpy.logical_or(holes_to_keep, p[:, 1] != 0), ]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def ln_shift_defect(mirror_dims: Tuple[int, int],
|
|
|
|
|
def ln_shift_defect(
|
|
|
|
|
mirror_dims: Tuple[int, int],
|
|
|
|
|
defect_length: int,
|
|
|
|
|
shifts_a: Sequence[float] = (0.15, 0, 0.075),
|
|
|
|
|
shifts_r: Sequence[float] = (1, 1, 1)
|
|
|
|
|