DOI: 10.5061/dryad.kd51c5bg4
title: Broadband localization of light at the termination of a topological photonic waveguide

description: Localized optical field enhancement enables strong light-matter
 interactions necessary for efficient manipulation and sensing of light.
 Specifically, tunable broadband energy localization in nanoscale hotspots
 offers a wide range of applications in nanophotonics and quantum optics.
 We experimentally demonstrate a novel principle for the local enhancement
 of electromagnetic fields, based on strong suppression of backscattering.
 This is achieved at a designed termination of a topologically non-trivial
 waveguide that nearly preserves the valley degree of freedom. The symmetry
 origin of the valley degree of freedom prevents edge states to undergo
 intervalley scattering at waveguide discontinuities that obey the symmetry
 of the crystal. Using near-field microscopy, we reveal that this can lead
 to strong confinement of light at the termination of a topological
 photonic waveguide, even without breaking time-reversal symmetry. We
 emphasize the importance of symmetry conservation by comparing different
 waveguide termination geometries, confirming that the origin of suppressed
 backscattering lies with the near-conservation of the valley degree of
 freedom, and show the broad bandwidth of the effect.
description: The transversal electric-field components are collected by a
 near-field probe in a raster scan 20 nm above a photonic crystal. Two
 detectors pick up the Ex and Ey components and are read-out by two lock-in
 amplifers that retrieve the real and imaginary part. Custom software reads
 out all the electric-field components as a function of position of the
 probe and frequency of our laser in stores it separated files which are
 later combined in a multi-dimensional array using python.
description: # Broadband localization of light at the termination of a topological
 photonic waveguide
 [https://doi.org/10.5061/dryad.kd51c5bg4](https://doi.org/10.5061/dryad.kd51c5bg4) We provide all datasets and code that generate the figures of the paper "Broadband localization of light at the termination of a topological waveguide". Scripts are titled to the figures they refer to in the paper. Some scripts generate multiple panels. Parameter choices are included and should be adjusted accordingly. ## Description experimental datasets Experimental datasets are available as .npz files. These files contain data points of the electric field. Naming conventions: * \_*xy*_: Dependency on position (xy). * \_*f_vs_xy*_: Dependency on frequency (f) and position (xy). * \_*armchair*\_ or \_*zigzag*_: Type of termination. * \_*surface*_: Type of interface: between VPCs and trivial PhC. (Blank for VPC-VPC interface) * \_*s1.0*_: Scaling factor of the lattice constant a0. Scaling 1.0 refers to a0 = 449 nm. * \_*dl*_: Dislocation value. Defines the lattice shift between the VPCs and the trivial PhC. * \_*THz*_: Frequency of the scan for spatial distribution of the field. Use NumPy package in python and the following lines to unpack .npz files: *import numpy as np* *npzfile = np.load('path_to_file' + 'file.npz', allow_pickle=True)['data']* It will then return n arrays containing the field with n the number of scans/frequencies. The components can be called individually by: *[E, X, Y, wvl] = npzfile[0]* * The shape of the electric field array *[E]* is *[size_y/2, size_x, 1, 2]* with (*size_y, size_x*) the number of pixels measured with the near-field probe. While the probe scans *size_y* lines in total (forward and backward movement of the tip), we only consider the forward lines due to an otherwise existing offset, hence the number of *size_y/2* lines in *[E]*. The last element contains the fields *[Ex, Ey]*, which are complex. * *X* and *Y* contain positional data points (of the probe) and *wvl* stores the wavelength of the laser at corresponding measurement. ## Description of simulated datasets Simulated datasets are available as .mat files as generated by MATLAB. The calculated eigenmodes and field distributions are accompanied by arrays of wavevector, frequency or position. Naming conventions: * \_*eigfreqs_bykx*_: Eigenfrequencies as a function of wavevector for generating the dispersion relation. * \_*VPC_trivial(type_i)*_: Surface mode *i* at the interface between the VPCs and trivial PhC. * \_*fillet*_: Radius of curvature at corners of hole triangles. * \_*slab*_: Slab thickness. * \_*dlx*\_ and \_*dly*_: Dislocation value in x- and y-direction. Refers to the lattice shift between the VPCs and trivial PhC. * \_*armchair*\_ or \_*zigzag*_: Type of termination. * \_*slab*\_ or \_*surface*_: Region of material studied. * \_*grid*_: Arrays with x- or y-positions for plotting field distributions. * \_*grid_byxf*_: Arrays with x-positions or frequencies for plotting field versus frequency. * \_*3D_supercell*\_ or \_*eig2D*_: Type of simulation in COMSOL (3D or 2D) * \_*inverse_FT_*_: Inverse Fourier transform of type of mode (all, backward or forward) and normalized by the average intensity of only the forward mode. * \_*norm_E_inplane_*_: Normalized by field E. Field distribution at specific frequency *freq*. * \_*nx*_: Width of Fabry Perot cavity, by number of lattice constants. * \_*normEinplanesq_byxf_*: Lines of field intensity as function of position (x) and frequency (f), normalized by the average intensity average of only the forward mode. * \_*field_int_*: Field intensity. ## Description of code (uploaded to Zenodo) The scripts generating figures of the paper are available as .py files and use matplotlib for plotting. The code describes which data files are necessary to execute the script. ## Definitions of variables used in the code Abbreviations may slightly vary between scripts. * *dl*: Dislocation. The lattice shift (ls) between the VPC lattices and the trivial PhC lattice. * *term*: Termination. Zigzag or armchair type. * *freq*: Frequency of the laser. * *lattice_const*: Lattice constant of the VPCs and the trivial PhC. * *E*: Complex fields as a function of probe position. * *field*: Intensity of light in the waveuigde. * *X* and *Y*: Array of x- and y-positions of the probe [um] * *dispersion_i*: Array of intensity of Fourier Transform of the field as a function of wavector. For surface mode i or for the VPC-VPC edge mode. * *wvl*: Wavelenght of the laser. * *wvl_start* and *wvl_end*: Initial and final wavelength of the laser. * *start_index_i* and *end_index_i*: Used for width selection of a scan to obtain surface mode i. The total scan maps the entire VPC-trivial PhC interface, containing both surface modes. * *start_index_VPC* and *end_index_VPC*: Used for width selection of the VPC-VPC interface to obtain the edge mode. Cut off begin and end of waveguide which have strong scattering or localization. * *start_fourier* and *end_fourier*: For selection of well-defined part within the VPC-VPC interface to determine average intensity used for normalization. * *start_index_termination* and *end_index_termination*: For selecting intensity at the termination. * *num*: Number of scans. For each scan the laser is tuned to the next wavelength and the two-dimensional raster scan of the probe is repeated. * *reciprocity*: Conversion value to switch from unit [1/um] to unit [pi/a0]. * *frame*: Select a particular scan with certain frequency. * *slope*: Slope of VPC-VPC edge mode. Used for selection of k-intervals for the passing window to separate forward and backward modes. * *NSMBG_start* and *NSMBG_end*: Frequency boundaries of the surface mode gap, i.e. maximum frequency of lower surface mode band and minimum frequency of upper surface mode band. * *x_grid* and *y_grid*: Array of x- and y-positions of fields in simulation [um]. * *eigfreqs_bykx_i*: Array of calculated eigenfrequencies for surface mode i (defined a, c, b, d depending on zigzag/armchair termination) or for VPC-VPC edge mode. * *f_slab_modes* and *f_surface_modes*: Calculated eigenmodes for the armchair termination confined in the slab or on the surface. * *kx_slab* and *kx_surface*: Wavevectors corresponding to the calculated slab/surface eigenmodes of the armchair termination. * *f_grid*: Array of frequencies. * *cut_off_freq*: Maximum frequency to prevent plotting of high intensity lines that disturb normalization. ## Software versions Python version: 3.9.12\ Anaconda version: conda 4.14.0\ NumPy version: 1.21.5\ Matplotlib version: 3.5.1 ## Version changes **26-feb-2025:** Added additional simulation data and code that generates Fig. S5C. *field_int_freqs__zigzag_dl_y=0.06_forward_normed* *field_int_freqs__zigzag_dl_y=0.10_forward_normed* *field_int_freqs__zigzag_dl_y=0.14_forward_normed* *field_int_enhancement__zigzag_dl_y=0.06_forward_normed* *field_int_enhancement__zigzag_dl_y=0.10_forward_normed* *field_int_enhancement__zigzag_dl_y=0.14_forward_normed* **27-feb-2025:** Added additional datasets for Fig. 5C and updated the corresponding code. *field_int_freqs__zigzag_dl_y=0.00_forward_normed* *field_int_enhancement__zigzag_dl_y=0.00_forward_normed*