A [start, stop, step] triple expands the call into a sweep and returns a list of BandResult objects, one per value (the endpoint is included). The radius is constrained to (0,0.5) in units of a so neighbouring rods cannot overlap. Watch how the lower bands stiffen as the rods grow: the filling fraction climbs and pulls the photonic gap up in frequency.
1import blaze
2
3# Sweep the rod radius from 0.2 to 0.4 in steps of 0.05.
4results = blaze.solve(
5 lattice_type="square",
6 epsilon_background=1.0,
7 epsilon_atoms=8.9,
8 radius_atom=[0.2, 0.4, 0.05],
9 polarization="TM",
10 n_bands=8,
11)
12
13for r in results:
14 print(f"r={r.radius_atom}: band1 max = {r.freqs[:, 0].max():.4f}")