In [2]:
import meep as mp
from meep import mpb
import math
import numpy as np
import matplotlib.pyplot as plt
from scipy.ndimage.filters import gaussian_filter
from solvers import triangular_with_defect, gaas
ms = triangular_with_defect()
ms.num_bands = 31
ms.k_points = [mp.Vector3(0., 0.5), ]
radii = np.linspace(0.2, 0.7, 40)
defect_freqs = np.zeros((6, radii.size))
for e, r in enumerate(radii):
j = 0
defect = mp.Cylinder(r, material=gaas)
ms.geometry.append(defect)
ms.run_tm()
for i, freq in enumerate(ms.get_freqs()):
if 0.229 < freq < 0.307:
defect_freqs[j, e] = freq
j += 1
print(defect_freqs)
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.13026714324951172
Outputting epsilon.h5...
elapsed time for k point: 16.155841827392578
total elapsed time for run: 16.3524272441864
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.17089390754699707
Outputting epsilon.h5...
elapsed time for k point: 19.923048734664917
total elapsed time for run: 20.16662096977234
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.16405224800109863
Outputting epsilon.h5...
elapsed time for k point: 15.560869216918945
total elapsed time for run: 15.793630838394165
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.14916110038757324
Outputting epsilon.h5...
elapsed time for k point: 21.03613018989563
total elapsed time for run: 21.245962619781494
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.15241122245788574
Outputting epsilon.h5...
elapsed time for k point: 25.040743589401245
total elapsed time for run: 25.234379053115845
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.1580517292022705
Outputting epsilon.h5...
elapsed time for k point: 23.23563313484192
total elapsed time for run: 23.466223001480103
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.1544194221496582
Outputting epsilon.h5...
elapsed time for k point: 22.389291286468506
total elapsed time for run: 22.597493410110474
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.15567851066589355
Outputting epsilon.h5...
elapsed time for k point: 21.080577850341797
total elapsed time for run: 21.303926467895508
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.16424989700317383
Outputting epsilon.h5...
elapsed time for k point: 20.68999934196472
total elapsed time for run: 20.910584688186646
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.1557321548461914
Outputting epsilon.h5...
elapsed time for k point: 20.42831540107727
total elapsed time for run: 20.649184942245483
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.154069185256958
Outputting epsilon.h5...
elapsed time for k point: 20.003819465637207
total elapsed time for run: 20.221304893493652
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.15737438201904297
Outputting epsilon.h5...
elapsed time for k point: 21.73705792427063
total elapsed time for run: 21.956512928009033
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.15467476844787598
Outputting epsilon.h5...
elapsed time for k point: 18.740029096603394
total elapsed time for run: 18.938467979431152
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.15863323211669922
Outputting epsilon.h5...
elapsed time for k point: 22.016167640686035
total elapsed time for run: 22.226097583770752
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.1547527313232422
Outputting epsilon.h5...
elapsed time for k point: 18.685274362564087
total elapsed time for run: 18.88448691368103
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.17080092430114746
Outputting epsilon.h5...
elapsed time for k point: 19.232659578323364
total elapsed time for run: 19.46967053413391
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.15382075309753418
Outputting epsilon.h5...
elapsed time for k point: 21.218587636947632
total elapsed time for run: 21.418822050094604
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.17654776573181152
Outputting epsilon.h5...
elapsed time for k point: 20.95947289466858
total elapsed time for run: 21.28088068962097
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.1553363800048828
Outputting epsilon.h5...
elapsed time for k point: 18.38874340057373
total elapsed time for run: 18.60894227027893
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.16715407371520996
Outputting epsilon.h5...
elapsed time for k point: 20.582502365112305
total elapsed time for run: 20.79851531982422
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.15633606910705566
Outputting epsilon.h5...
elapsed time for k point: 21.763492822647095
total elapsed time for run: 21.98670768737793
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.15838956832885742
Outputting epsilon.h5...
elapsed time for k point: 20.57816219329834
total elapsed time for run: 20.800408363342285
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.17210626602172852
Outputting epsilon.h5...
elapsed time for k point: 23.130728721618652
total elapsed time for run: 23.373607635498047
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.15971684455871582
Outputting epsilon.h5...
elapsed time for k point: 24.03497838973999
total elapsed time for run: 24.258052587509155
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.15726947784423828
Outputting epsilon.h5...
elapsed time for k point: 22.490320920944214
total elapsed time for run: 22.689774751663208
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.1636219024658203
Outputting epsilon.h5...
elapsed time for k point: 21.144087076187134
total elapsed time for run: 21.371193408966064
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.15818214416503906
Outputting epsilon.h5...
elapsed time for k point: 22.592880487442017
total elapsed time for run: 22.794596672058105
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.16106152534484863
Outputting epsilon.h5...
elapsed time for k point: 23.619876861572266
total elapsed time for run: 23.846030235290527
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.16297578811645508
Outputting epsilon.h5...
elapsed time for k point: 19.524177312850952
total elapsed time for run: 19.730113744735718
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.16129136085510254
Outputting epsilon.h5...
elapsed time for k point: 19.61389136314392
total elapsed time for run: 19.846376419067383
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.16917014122009277
Outputting epsilon.h5...
elapsed time for k point: 20.392453908920288
total elapsed time for run: 20.629499912261963
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.16308999061584473
Outputting epsilon.h5...
elapsed time for k point: 21.21413493156433
total elapsed time for run: 21.44129252433777
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.16240382194519043
Outputting epsilon.h5...
elapsed time for k point: 19.481719493865967
total elapsed time for run: 19.6875102519989
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.16494417190551758
Outputting epsilon.h5...
elapsed time for k point: 17.382079362869263
total elapsed time for run: 17.61299729347229
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.1626908779144287
Outputting epsilon.h5...
elapsed time for k point: 18.802629470825195
total elapsed time for run: 19.02789878845215
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.16517925262451172
Outputting epsilon.h5...
elapsed time for k point: 16.445711612701416
total elapsed time for run: 16.682722806930542
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.16454243659973145
Outputting epsilon.h5...
elapsed time for k point: 16.29456853866577
total elapsed time for run: 16.501540184020996
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.16713309288024902
Outputting epsilon.h5...
elapsed time for k point: 19.811365604400635
total elapsed time for run: 20.02498984336853
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.16658520698547363
Outputting epsilon.h5...
elapsed time for k point: 16.784562826156616
total elapsed time for run: 16.99437928199768
done
Initializing eigensolver data
Computing 31 bands with 1e-07 tolerance
1 k-points
Vector3<0.0, 0.5, 0.0>
elapsed time for initialization: 0.16682147979736328
Outputting epsilon.h5...
elapsed time for k point: 18.63161540031433
total elapsed time for run: 18.866493225097656
done
[[0.30662226 0.30662227 0.30662196 0.30665539 0.30658535 0.3061058
0.30532363 0.30400128 0.30184992 0.29866185 0.29463437 0.29001018
0.285198 0.28029679 0.27556903 0.27098419 0.26670068 0.26266586
0.25895662 0.25554649 0.25242797 0.24958829 0.24704707 0.24480837
0.24283967 0.24114609 0.23968487 0.23845971 0.23742357 0.23657738
0.23587631 0.23531929 0.23486855 0.23452159 0.23425003 0.23404931
0.23390056 0.23379627 0.23372472 0.23367626]
[0. 0. 0. 0. 0. 0.
0. 0. 0.3053761 0.30106862 0.29624709 0.29114628
0.28599572 0.28090528 0.27600894 0.27132935 0.26694191 0.26283927
0.25905552 0.2555833 0.25245326 0.24967309 0.24718179 0.24499463
0.24305983 0.2414007 0.23995214 0.23873965 0.23769557 0.23684369
0.23612237 0.23555093 0.23507852 0.2347181 0.23443164 0.2342237
0.23406955 0.23396484 0.23389533 0.23385097]
[0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0.
0. 0.30458487 0.30127249 0.29773919 0.29411879 0.2905751
0.28712702 0.28388064 0.28080162 0.27796858 0.27533047 0.27294171
0.27075673 0.26879931 0.2670397 0.26547395]
[0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0.
0. 0. 0.30448033 0.30041738 0.29642852 0.29264458
0.28902952 0.28567521 0.28252581 0.27965007 0.27699266 0.27459682
0.27241948 0.27047488 0.26873672 0.26719494]
[0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0.
0.3064578 0.30346789 0.30047875 0.29758794 0.2947922 0.29215794
0.28967034 0.28736752 0.28524204 0.28330647]
[0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0.
0.30659658 0.30576831 0.30468863 0.3033044 0.30156457 0.2994585
0.29698035 0.29418398 0.29110915 0.2878308 ]]
In [31]:
import matplotlib
matplotlib.rcParams['axes.labelsize'] = 18
matplotlib.rcParams['xtick.labelsize'] = 14
matplotlib.rcParams['ytick.labelsize'] = 14
matplotlib.rcParams['legend.fontsize'] = 13
new_freqs = defect_freqs.copy()
new_freqs[new_freqs == 0] = np.nan
fig, ax = plt.subplots(constrained_layout=True)
labels = ['dipole', 'quadrupole', 'monopole', 'hexapole']
for j, freq in enumerate([f for i, f in enumerate(new_freqs) if i not in (1,3)]):
ax.plot(radii, freq, label=labels[j])
bottom_limit = 0.225
top_limit = 0.31
ax.set_ylim(bottom=bottom_limit, top=top_limit)
ax.set_xlim([0.25, radii[-1]])
axy = ax.twinx()
axy.set_ylim(bottom=bottom_limit*3e8/4.4e-5*1e-12, top=top_limit*3e8/4.4e-5*1e-12)
axy.set_ylabel('frequency / THz')
ax.fill_between(radii, 0.307, 0.35, facecolor='blue', alpha=0.5)
ax.fill_between(radii, 0.2, 0.229, facecolor='blue', alpha=0.5)
ax.set_xlabel(r'defect radius / $R/a$')
ax.set_ylabel(r'frequency / $\omega a/2\pi c$')
ax.legend(loc=(0.01, 0.05))
fig.savefig('modes_vs_def_radius.pdf')
In [ ]:
Content source: alkamid/lab-scripts
Similar notebooks: