Files
MPID/unit_cell/unit_cell_meep.ipynb
T

183 KiB

In [6]:
import meep as mp
import numpy as np
import numpy.matlib
import matplotlib.pyplot as plt

resolution = 50 # pixels/unit length

wvl_min = 1.5
wvl_max = 1.6
wvl_cen = 0.5*(wvl_min+wvl_max)
fmin = 1/wvl_max
fmax = 1/wvl_min
fcen = 0.5*(fmin+fmax)
df = fmax-fmin
nfreq = 10

dpml = 1.0 #PML thickness
dsub = 1.5 + wvl_cen #substrate thickness
dpad = dsub #padding between cell and PML

k_point = mp.Vector3(0,0,0) #used for PBC

n_si = 3.45 #silicon refractive index
si = mp.Medium(index=n_si)
n_sio2 = 1.45
sio2 = mp.Medium(index=n_sio2)
n_air = 1.0 #air refractive index
air = mp.Medium(index=n_air)
In [8]:
P = 0.7 #unit cell pitch
h = 0.8 #pillar height

def unitCell_paramsweep(D):
    sim_x_size = dpml + dsub + dpad + dpml
    sim_z_size = P
    sim_y_size = P

    cell_size = mp.Vector3(sim_x_size, sim_y_size, sim_z_size)

    source_position = mp.Vector3(-wvl_cen,0,0) #source position in the middle of the substrate
    source = mp.Source(
        mp.GaussianSource(fcen, fwidth=df),
        component = mp.Ez,
        center = source_position,
        size = mp.Vector3(0, sim_y_size, sim_z_size),
    )

    pml_layers = [mp.PML(dpml,direction=mp.X)]

    monitor_position = mp.Vector3(h + wvl_cen,0,0)
    obs_point = monitor_position
    stop_cond = mp.stop_when_fields_decayed(50, mp.Ez, obs_point, 1e-9)
    #stop_cond_time = 50
    sim = mp.Simulation(
        resolution = resolution,
        cell_size = cell_size,
        boundary_layers = pml_layers,
        k_point = k_point,
        default_material = sio2,
        sources = [source],
    )

    flux_mon = sim.add_flux(
        fcen, 
        df,
        nfreq, 
        mp.FluxRegion(center=monitor_position, size=mp.Vector3(0, sim_y_size, sim_z_size))
    )

    sim.run(until_after_sources=stop_cond)
    input_flux = mp.get_fluxes(flux_mon)

    sim.reset_meep()

    pillar_geo = mp.Cylinder(
        material = si,
        radius = D/2,
        height = h,
        center = mp.Vector3(h/2,0,0),
        axis=mp.Vector3(1,0,0),
    )

    substrate_geo = mp.Block(
        material = sio2,
        size = mp.Vector3(dsub+dpml, mp.inf, mp.inf),
        center = mp.Vector3(-(dsub+dpml)/2,0,0),
    )

    geometries = [substrate_geo, pillar_geo]

    sim = mp.Simulation(
        resolution = resolution,
        cell_size = cell_size,
        boundary_layers = pml_layers,
        geometry = geometries,
        k_point = k_point,
        sources = [source],
    )

    mode_mon = sim.add_flux(
        fcen, df, nfreq, mp.FluxRegion(center=monitor_position, size=mp.Vector3(0, sim_y_size, sim_z_size))
    )#this monitor accumulates fields 

    f, ax = plt.subplots(1,2,dpi=120)
    xy_plane = mp.Volume(center=mp.Vector3(0,0,h/2), size=mp.Vector3(sim_x_size,sim_y_size,0))
    sim.plot2D(ax=ax[1],output_plane=xy_plane,show_sources=True,show_monitors=True,show_epsilon=True)
    ax[1].set_xlim(-sim_x_size/2, sim_x_size/2)
    ax[1].set_ylim(-sim_y_size/2, sim_y_size/2)
    plt.show()

    sim.run(until_after_sources=stop_cond)

    freqs = mp.get_eigenmode_freqs(mode_mon)
    res = sim.get_eigenmode_coefficients(
        mode_mon, [1], eig_parity=mp.ODD_Z + mp.EVEN_Y
    )
    coeffs = res.alpha

    mode_wvl = [1/freqs[nf] for nf in range(nfreq)]
    mode_tran = [abs(coeffs[0,nf,0])**2 / input_flux[nf] for nf in range(nfreq)]
    mode_phase = [np.angle(coeffs[0,nf,0]) for nf in range(nfreq)]

    return mode_wvl, mode_tran, mode_phase

diameters = np.linspace(0.2, 0.6, 4)
mode_tran_arr = np.empty((len(diameters), nfreq))
mode_phase_arr = np.empty((len(diameters), nfreq))

for i, D in enumerate(diameters):
    mode_wvl, mode_tran, mode_phase = unitCell_paramsweep(D)
    mode_tran_arr[i,:] = mode_tran
    mode_phase_arr[i,:] = mode_phase
-----------
Initializing structure...
time for choose_chunkdivision = 6.38962e-05 s
Working in 3D dimensions.
Computational cell is 8.1 x 0.7 x 0.7 with resolution 50
time for set_epsilon = 0.787619 s
-----------
on time step 535 (time=5.35), 0.0074768 s/step
on time step 1171 (time=11.71), 0.00629888 s/step
on time step 1829 (time=18.29), 0.00608258 s/step
on time step 2488 (time=24.88), 0.00607308 s/step
on time step 3145 (time=31.45), 0.00609221 s/step
on time step 3807 (time=38.07), 0.00604308 s/step
on time step 4467 (time=44.67), 0.00606241 s/step
field decay(t = 50.01): 5.426741164771886e-06 / 5.426741164771886e-06 = 1.0
on time step 5127 (time=51.27), 0.00606334 s/step
on time step 5738 (time=57.38), 0.00655712 s/step
on time step 6373 (time=63.73), 0.00630479 s/step
on time step 7031 (time=70.31), 0.0060838 s/step
on time step 7662 (time=76.62), 0.00634715 s/step
on time step 8302 (time=83.02), 0.00625346 s/step
on time step 8959 (time=89.59), 0.00609081 s/step
on time step 9619 (time=96.19), 0.00606273 s/step
field decay(t = 100.01): 0.035570203188044235 / 0.035570203188044235 = 1.0
on time step 10261 (time=102.61), 0.00623869 s/step
on time step 10919 (time=109.19), 0.00608189 s/step
on time step 11566 (time=115.66), 0.00618257 s/step
on time step 12213 (time=122.13), 0.00618699 s/step
on time step 12863 (time=128.63), 0.00615897 s/step
on time step 13494 (time=134.94), 0.00634203 s/step
on time step 14147 (time=141.47), 0.00612982 s/step
on time step 14800 (time=148), 0.00612841 s/step
field decay(t = 150.02): 0.11846184324595802 / 0.11846184324595802 = 1.0
on time step 15422 (time=154.22), 0.00644085 s/step
on time step 16063 (time=160.63), 0.00624794 s/step
on time step 16675 (time=166.75), 0.00653603 s/step
on time step 17263 (time=172.63), 0.00681036 s/step
on time step 17872 (time=178.72), 0.00656959 s/step
on time step 18457 (time=184.57), 0.00684303 s/step
on time step 19107 (time=191.07), 0.00616221 s/step
on time step 19742 (time=197.42), 0.00630697 s/step
field decay(t = 200.03): 0.040856206457377704 / 0.11846184324595802 = 0.3448891671603442
on time step 20403 (time=204.03), 0.00605866 s/step
on time step 21048 (time=210.48), 0.00620925 s/step
on time step 21683 (time=216.83), 0.00630889 s/step
on time step 22327 (time=223.27), 0.00621678 s/step
on time step 22956 (time=229.56), 0.00636194 s/step
on time step 23606 (time=236.06), 0.00615597 s/step
on time step 24245 (time=242.45), 0.00626616 s/step
on time step 24856 (time=248.56), 0.0065549 s/step
field decay(t = 250.04): 7.321616676715807e-06 / 0.11846184324595802 = 6.180569604606101e-05
on time step 25501 (time=255.01), 0.00621073 s/step
on time step 26153 (time=261.53), 0.00614292 s/step
on time step 26804 (time=268.04), 0.00614698 s/step
on time step 27455 (time=274.55), 0.00614757 s/step
on time step 28100 (time=281), 0.0062026 s/step
on time step 28757 (time=287.57), 0.00609292 s/step
on time step 29419 (time=294.19), 0.00604787 s/step
field decay(t = 300.04): 2.0130821207087206e-16 / 0.11846184324595802 = 1.69935066477822e-15
run 0 finished at t = 300.04 (30004 timesteps)
-----------
Initializing structure...
time for choose_chunkdivision = 7.10487e-05 s
Working in 3D dimensions.
Computational cell is 8.1 x 0.7 x 0.7 with resolution 50
     block, center = (-2.025,0,0)
          size (4.05,1e+20,1e+20)
          axes (1,0,0), (0,1,0), (0,0,1)
          dielectric constant epsilon diagonal = (2.1025,2.1025,2.1025)
     cylinder, center = (0.4,0,0)
          radius 0.1, height 0.8, axis (1, 0, 0)
          dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)
time for set_epsilon = 47.9716 s
-----------
on time step 473 (time=4.73), 0.0084703 s/step
on time step 1034 (time=10.34), 0.00714037 s/step
on time step 1587 (time=15.87), 0.0072438 s/step
on time step 2154 (time=21.54), 0.0070595 s/step
on time step 2717 (time=27.17), 0.00711487 s/step
on time step 3274 (time=32.74), 0.00718785 s/step
on time step 3855 (time=38.55), 0.00689564 s/step
on time step 4403 (time=44.03), 0.00731156 s/step
on time step 4980 (time=49.8), 0.00693329 s/step
on time step 5522 (time=55.22), 0.00738428 s/step
on time step 6083 (time=60.83), 0.00714259 s/step
on time step 6656 (time=66.56), 0.00698555 s/step
on time step 7221 (time=72.21), 0.00708599 s/step
on time step 7791 (time=77.91), 0.00701823 s/step
on time step 8358 (time=83.58), 0.00705761 s/step
on time step 8942 (time=89.42), 0.00685129 s/step
on time step 9515 (time=95.15), 0.00698397 s/step
on time step 10092 (time=100.92), 0.00693597 s/step
on time step 10670 (time=106.7), 0.00693239 s/step
on time step 11242 (time=112.42), 0.00700489 s/step
on time step 11813 (time=118.13), 0.00701277 s/step
on time step 12375 (time=123.75), 0.0071282 s/step
on time step 12931 (time=129.31), 0.0072055 s/step
on time step 13505 (time=135.05), 0.0069798 s/step
on time step 14034 (time=140.34), 0.00757448 s/step
on time step 14598 (time=145.98), 0.00709762 s/step
on time step 15161 (time=151.61), 0.0071103 s/step
on time step 15721 (time=157.21), 0.00714891 s/step
on time step 16287 (time=162.87), 0.00707846 s/step
on time step 16838 (time=168.38), 0.00727186 s/step
on time step 17409 (time=174.09), 0.00701287 s/step
on time step 17955 (time=179.55), 0.00732891 s/step
on time step 18505 (time=185.05), 0.00727459 s/step
on time step 19043 (time=190.43), 0.00744715 s/step
on time step 19573 (time=195.73), 0.00755739 s/step
on time step 20106 (time=201.06), 0.00751135 s/step
on time step 20662 (time=206.62), 0.00720323 s/step
on time step 21222 (time=212.22), 0.00715362 s/step
on time step 21791 (time=217.91), 0.00703573 s/step
on time step 22324 (time=223.24), 0.00751711 s/step
on time step 22857 (time=228.57), 0.00751257 s/step
on time step 23407 (time=234.07), 0.00727724 s/step
on time step 23960 (time=239.6), 0.00724289 s/step
on time step 24518 (time=245.18), 0.00717636 s/step
on time step 25087 (time=250.87), 0.00703826 s/step
on time step 25662 (time=256.62), 0.00695667 s/step
on time step 26223 (time=262.23), 0.00713661 s/step
on time step 26769 (time=267.69), 0.00733718 s/step
on time step 27323 (time=273.23), 0.00723238 s/step
on time step 27885 (time=278.85), 0.00712397 s/step
on time step 28442 (time=284.42), 0.00718542 s/step
on time step 28997 (time=289.97), 0.00721054 s/step
on time step 29562 (time=295.62), 0.00708772 s/step
on time step 30132 (time=301.32), 0.00702608 s/step
on time step 30678 (time=306.78), 0.00733475 s/step
on time step 31252 (time=312.52), 0.00697776 s/step
on time step 31821 (time=318.21), 0.00703846 s/step
on time step 32379 (time=323.79), 0.00717254 s/step
on time step 32916 (time=329.16), 0.00745362 s/step
on time step 33465 (time=334.65), 0.00728729 s/step
on time step 34009 (time=340.09), 0.00735804 s/step
on time step 34564 (time=345.64), 0.0072098 s/step
field decay(t = 350.05): 0.16701829070837584 / 0.16701829070837584 = 1.0
on time step 35117 (time=351.17), 0.0072443 s/step
on time step 35664 (time=356.64), 0.00732527 s/step
on time step 36223 (time=362.23), 0.00715988 s/step
on time step 36781 (time=367.81), 0.00717286 s/step
on time step 37350 (time=373.5), 0.00703965 s/step
on time step 37895 (time=378.95), 0.00734196 s/step
on time step 38450 (time=384.5), 0.00721765 s/step
on time step 38956 (time=389.56), 0.00791335 s/step
on time step 39508 (time=395.08), 0.00724688 s/step
field decay(t = 400.06): 4.532666916542125e-17 / 0.16701829070837584 = 2.713874568658135e-16
run 0 finished at t = 400.06 (40006 timesteps)
MPB solved for frequency_1(0.625,0,0) = 0.625 after 7 iters
Dominant planewave for band 1: (0.625000,-0.000000,0.000000)
MPB solved for frequency_1(0.62963,0,0) = 0.62963 after 7 iters
Dominant planewave for band 1: (0.629630,-0.000000,0.000000)
MPB solved for frequency_1(0.634259,0,0) = 0.634259 after 7 iters
Dominant planewave for band 1: (0.634259,-0.000000,0.000000)
MPB solved for frequency_1(0.638889,0,0) = 0.638889 after 7 iters
Dominant planewave for band 1: (0.638889,-0.000000,0.000000)
MPB solved for frequency_1(0.643519,0,0) = 0.643519 after 7 iters
Dominant planewave for band 1: (0.643519,-0.000000,0.000000)
MPB solved for frequency_1(0.648148,0,0) = 0.648148 after 7 iters
Dominant planewave for band 1: (0.648148,-0.000000,0.000000)
MPB solved for frequency_1(0.652778,0,0) = 0.652778 after 7 iters
Dominant planewave for band 1: (0.652778,-0.000000,0.000000)
MPB solved for frequency_1(0.657407,0,0) = 0.657407 after 7 iters
Dominant planewave for band 1: (0.657407,-0.000000,0.000000)
MPB solved for frequency_1(0.662037,0,0) = 0.662037 after 7 iters
Dominant planewave for band 1: (0.662037,-0.000000,0.000000)
MPB solved for frequency_1(0.666667,0,0) = 0.666667 after 7 iters
Dominant planewave for band 1: (0.666667,-0.000000,0.000000)
-----------
Initializing structure...
time for choose_chunkdivision = 6.50883e-05 s
Working in 3D dimensions.
Computational cell is 8.1 x 0.7 x 0.7 with resolution 50
time for set_epsilon = 0.773665 s
-----------
on time step 543 (time=5.43), 0.00737383 s/step
on time step 1188 (time=11.88), 0.0062086 s/step
on time step 1828 (time=18.28), 0.00625388 s/step
on time step 2464 (time=24.64), 0.00629507 s/step
on time step 3125 (time=31.25), 0.00605655 s/step
on time step 3774 (time=37.74), 0.00616392 s/step
on time step 4424 (time=44.24), 0.0061585 s/step
field decay(t = 50.01): 5.426741164771886e-06 / 5.426741164771886e-06 = 1.0
on time step 5069 (time=50.69), 0.00620527 s/step
on time step 5718 (time=57.18), 0.00616512 s/step
on time step 6397 (time=63.97), 0.00589511 s/step
on time step 7053 (time=70.53), 0.0061039 s/step
on time step 7712 (time=77.12), 0.00607532 s/step
on time step 8321 (time=83.21), 0.00656928 s/step
on time step 8961 (time=89.61), 0.00625559 s/step
on time step 9618 (time=96.18), 0.00609708 s/step
field decay(t = 100.01): 0.035570203188044235 / 0.035570203188044235 = 1.0
on time step 10257 (time=102.57), 0.00626534 s/step
on time step 10908 (time=109.08), 0.00614839 s/step
on time step 11515 (time=115.15), 0.00659816 s/step
on time step 12153 (time=121.53), 0.00627378 s/step
on time step 12804 (time=128.04), 0.0061515 s/step
on time step 13454 (time=134.54), 0.0061539 s/step
on time step 14110 (time=141.1), 0.00610339 s/step
on time step 14765 (time=147.65), 0.00610949 s/step
field decay(t = 150.02): 0.11846184324595802 / 0.11846184324595802 = 1.0
on time step 15414 (time=154.14), 0.00616336 s/step
on time step 16069 (time=160.69), 0.0061144 s/step
on time step 16706 (time=167.06), 0.00628636 s/step
on time step 17360 (time=173.6), 0.00612495 s/step
on time step 17970 (time=179.7), 0.00655798 s/step
on time step 18617 (time=186.17), 0.00619117 s/step
on time step 19273 (time=192.73), 0.00610361 s/step
on time step 19914 (time=199.14), 0.0062457 s/step
field decay(t = 200.03): 0.040856206457377704 / 0.11846184324595802 = 0.3448891671603442
on time step 20568 (time=205.68), 0.00611863 s/step
on time step 21217 (time=212.17), 0.0061695 s/step
on time step 21864 (time=218.64), 0.00618518 s/step
on time step 22510 (time=225.1), 0.00619995 s/step
on time step 23154 (time=231.54), 0.00621246 s/step
on time step 23796 (time=237.96), 0.00623383 s/step
on time step 24448 (time=244.48), 0.00614213 s/step
field decay(t = 250.04): 7.321616676715807e-06 / 0.11846184324595802 = 6.180569604606101e-05
on time step 25105 (time=251.05), 0.00609109 s/step
on time step 25755 (time=257.55), 0.00615595 s/step
on time step 26414 (time=264.14), 0.00607499 s/step
on time step 27068 (time=270.68), 0.0061245 s/step
on time step 27695 (time=276.95), 0.00638164 s/step
on time step 28348 (time=283.48), 0.00612624 s/step
on time step 29001 (time=290.01), 0.0061314 s/step
on time step 29646 (time=296.46), 0.00621103 s/step
field decay(t = 300.04): 2.0130821207087206e-16 / 0.11846184324595802 = 1.69935066477822e-15
run 0 finished at t = 300.04 (30004 timesteps)
-----------
Initializing structure...
time for choose_chunkdivision = 5.19753e-05 s
Working in 3D dimensions.
Computational cell is 8.1 x 0.7 x 0.7 with resolution 50
     block, center = (-2.025,0,0)
          size (4.05,1e+20,1e+20)
          axes (1,0,0), (0,1,0), (0,0,1)
          dielectric constant epsilon diagonal = (2.1025,2.1025,2.1025)
     cylinder, center = (0.4,0,0)
          radius 0.166667, height 0.8, axis (1, 0, 0)
          dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)
time for set_epsilon = 74.4824 s
-----------
on time step 495 (time=4.95), 0.00808139 s/step
on time step 1085 (time=10.85), 0.00679064 s/step
on time step 1686 (time=16.86), 0.00666365 s/step
on time step 2269 (time=22.69), 0.0068679 s/step
on time step 2863 (time=28.63), 0.0067413 s/step
on time step 3456 (time=34.56), 0.00674908 s/step
on time step 4049 (time=40.49), 0.00675245 s/step
on time step 4603 (time=46.03), 0.00722666 s/step
on time step 5203 (time=52.03), 0.00667086 s/step
on time step 5813 (time=58.13), 0.00656403 s/step
on time step 6406 (time=64.06), 0.00674696 s/step
on time step 7014 (time=70.14), 0.00658418 s/step
on time step 7615 (time=76.15), 0.00665786 s/step
on time step 8208 (time=82.08), 0.00675389 s/step
on time step 8817 (time=88.17), 0.00657699 s/step
on time step 9401 (time=94.01), 0.00685931 s/step
on time step 10007 (time=100.07), 0.00660146 s/step
on time step 10621 (time=106.21), 0.00651862 s/step
on time step 11217 (time=112.17), 0.00671972 s/step
on time step 11806 (time=118.06), 0.00679701 s/step
on time step 12397 (time=123.97), 0.00677006 s/step
on time step 12993 (time=129.93), 0.00672224 s/step
on time step 13585 (time=135.85), 0.00675993 s/step
on time step 14182 (time=141.82), 0.00670681 s/step
on time step 14791 (time=147.91), 0.0065706 s/step
on time step 15381 (time=153.81), 0.00678941 s/step
on time step 15996 (time=159.96), 0.00651369 s/step
on time step 16613 (time=166.13), 0.00648599 s/step
on time step 17221 (time=172.21), 0.0065883 s/step
on time step 17837 (time=178.37), 0.00649681 s/step
on time step 18440 (time=184.4), 0.00664288 s/step
on time step 19028 (time=190.28), 0.00680606 s/step
on time step 19634 (time=196.34), 0.00661106 s/step
on time step 20244 (time=202.44), 0.00656444 s/step
on time step 20839 (time=208.39), 0.0067259 s/step
on time step 21435 (time=214.35), 0.006716 s/step
on time step 22032 (time=220.32), 0.00670198 s/step
on time step 22614 (time=226.14), 0.00687698 s/step
on time step 23213 (time=232.13), 0.00667914 s/step
on time step 23823 (time=238.23), 0.00655979 s/step
on time step 24423 (time=244.23), 0.00667331 s/step
on time step 25033 (time=250.33), 0.00656451 s/step
on time step 25633 (time=256.33), 0.00666867 s/step
on time step 26232 (time=262.32), 0.00668129 s/step
on time step 26826 (time=268.26), 0.00673952 s/step
on time step 27427 (time=274.27), 0.00666433 s/step
on time step 28017 (time=280.17), 0.00678967 s/step
on time step 28611 (time=286.11), 0.00674255 s/step
on time step 29189 (time=291.89), 0.00692797 s/step
on time step 29775 (time=297.75), 0.00683611 s/step
on time step 30380 (time=303.8), 0.00662227 s/step
on time step 30978 (time=309.78), 0.006701 s/step
on time step 31549 (time=315.49), 0.00700918 s/step
on time step 32136 (time=321.36), 0.00681911 s/step
on time step 32732 (time=327.32), 0.00672103 s/step
on time step 33319 (time=333.19), 0.0068153 s/step
on time step 33921 (time=339.21), 0.00664554 s/step
on time step 34512 (time=345.12), 0.00677625 s/step
field decay(t = 350.05): 0.16721358207535458 / 0.16721358207535458 = 1.0
on time step 35128 (time=351.28), 0.00650192 s/step
on time step 35733 (time=357.33), 0.00662063 s/step
on time step 36343 (time=363.43), 0.00656603 s/step
on time step 36945 (time=369.45), 0.00665239 s/step
on time step 37537 (time=375.37), 0.00676581 s/step
on time step 38133 (time=381.33), 0.00672222 s/step
on time step 38735 (time=387.35), 0.00665134 s/step
on time step 39324 (time=393.24), 0.00679166 s/step
on time step 39918 (time=399.18), 0.00673842 s/step
field decay(t = 400.06): 1.1965082725381128e-16 / 0.16721358207535458 = 7.155568690579859e-16
run 0 finished at t = 400.06 (40006 timesteps)
MPB solved for frequency_1(0.625,0,0) = 0.625 after 7 iters
Dominant planewave for band 1: (0.625000,-0.000000,0.000000)
MPB solved for frequency_1(0.62963,0,0) = 0.62963 after 7 iters
Dominant planewave for band 1: (0.629630,-0.000000,0.000000)
MPB solved for frequency_1(0.634259,0,0) = 0.634259 after 7 iters
Dominant planewave for band 1: (0.634259,-0.000000,0.000000)
MPB solved for frequency_1(0.638889,0,0) = 0.638889 after 7 iters
Dominant planewave for band 1: (0.638889,-0.000000,0.000000)
MPB solved for frequency_1(0.643519,0,0) = 0.643519 after 7 iters
Dominant planewave for band 1: (0.643519,-0.000000,0.000000)
MPB solved for frequency_1(0.648148,0,0) = 0.648148 after 7 iters
Dominant planewave for band 1: (0.648148,-0.000000,0.000000)
MPB solved for frequency_1(0.652778,0,0) = 0.652778 after 7 iters
Dominant planewave for band 1: (0.652778,-0.000000,0.000000)
MPB solved for frequency_1(0.657407,0,0) = 0.657407 after 7 iters
Dominant planewave for band 1: (0.657407,-0.000000,0.000000)
MPB solved for frequency_1(0.662037,0,0) = 0.662037 after 7 iters
Dominant planewave for band 1: (0.662037,-0.000000,0.000000)
MPB solved for frequency_1(0.666667,0,0) = 0.666667 after 7 iters
Dominant planewave for band 1: (0.666667,-0.000000,0.000000)
-----------
Initializing structure...
time for choose_chunkdivision = 6.29425e-05 s
Working in 3D dimensions.
Computational cell is 8.1 x 0.7 x 0.7 with resolution 50
time for set_epsilon = 0.791664 s
-----------
on time step 519 (time=5.19), 0.00771539 s/step
on time step 1175 (time=11.75), 0.00610057 s/step
on time step 1828 (time=18.28), 0.00613267 s/step
on time step 2472 (time=24.72), 0.00622066 s/step
on time step 3117 (time=31.17), 0.0062042 s/step
on time step 3762 (time=37.62), 0.0062109 s/step
on time step 4412 (time=44.12), 0.00615934 s/step
field decay(t = 50.01): 5.426741164771886e-06 / 5.426741164771886e-06 = 1.0
on time step 5055 (time=50.55), 0.00622507 s/step
on time step 5707 (time=57.07), 0.00613604 s/step
on time step 6353 (time=63.53), 0.00619805 s/step
on time step 6993 (time=69.93), 0.00625692 s/step
on time step 7630 (time=76.3), 0.00628907 s/step
on time step 8283 (time=82.83), 0.00612956 s/step
on time step 8917 (time=89.17), 0.00630966 s/step
on time step 9499 (time=94.99), 0.00688505 s/step
field decay(t = 100.01): 0.035570203188044235 / 0.035570203188044235 = 1.0
on time step 10101 (time=101.01), 0.00665091 s/step
on time step 10719 (time=107.19), 0.00647517 s/step
on time step 11343 (time=113.43), 0.00641158 s/step
on time step 11982 (time=119.82), 0.00626142 s/step
on time step 12629 (time=126.29), 0.00618784 s/step
on time step 13272 (time=132.72), 0.00622975 s/step
on time step 13923 (time=139.23), 0.00614737 s/step
on time step 14576 (time=145.76), 0.00612626 s/step
field decay(t = 150.02): 0.11846184324595802 / 0.11846184324595802 = 1.0
on time step 15213 (time=152.13), 0.00628418 s/step
on time step 15865 (time=158.65), 0.00614363 s/step
on time step 16526 (time=165.26), 0.00605562 s/step
on time step 17165 (time=171.65), 0.00626528 s/step
on time step 17814 (time=178.14), 0.00616657 s/step
on time step 18477 (time=184.77), 0.00604035 s/step
on time step 19110 (time=191.1), 0.00632727 s/step
on time step 19765 (time=197.65), 0.00611466 s/step
field decay(t = 200.03): 0.040856206457377704 / 0.11846184324595802 = 0.3448891671603442
on time step 20412 (time=204.12), 0.00618811 s/step
on time step 21068 (time=210.68), 0.00610492 s/step
on time step 21715 (time=217.15), 0.00618881 s/step
on time step 22375 (time=223.75), 0.00606571 s/step
on time step 23043 (time=230.43), 0.00599698 s/step
on time step 23711 (time=237.11), 0.00599475 s/step
on time step 24375 (time=243.75), 0.00602797 s/step
field decay(t = 250.04): 7.321616676715807e-06 / 0.11846184324595802 = 6.180569604606101e-05
on time step 25039 (time=250.39), 0.00602749 s/step
on time step 25687 (time=256.87), 0.00617486 s/step
on time step 26331 (time=263.31), 0.00621907 s/step
on time step 26984 (time=269.84), 0.00612766 s/step
on time step 27631 (time=276.31), 0.00618452 s/step
on time step 28280 (time=282.8), 0.00616904 s/step
on time step 28910 (time=289.1), 0.00635051 s/step
on time step 29547 (time=295.47), 0.00628384 s/step
field decay(t = 300.04): 2.0130821207087206e-16 / 0.11846184324595802 = 1.69935066477822e-15
run 0 finished at t = 300.04 (30004 timesteps)
-----------
Initializing structure...
time for choose_chunkdivision = 5.60284e-05 s
Working in 3D dimensions.
Computational cell is 8.1 x 0.7 x 0.7 with resolution 50
     block, center = (-2.025,0,0)
          size (4.05,1e+20,1e+20)
          axes (1,0,0), (0,1,0), (0,0,1)
          dielectric constant epsilon diagonal = (2.1025,2.1025,2.1025)
     cylinder, center = (0.4,0,0)
          radius 0.233333, height 0.8, axis (1, 0, 0)
          dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)
time for set_epsilon = 111.664 s
-----------
on time step 490 (time=4.9), 0.00816926 s/step
on time step 1087 (time=10.87), 0.0067107 s/step
on time step 1679 (time=16.79), 0.00676114 s/step
on time step 2283 (time=22.83), 0.00662823 s/step
on time step 2888 (time=28.88), 0.00661911 s/step
on time step 3488 (time=34.88), 0.00667222 s/step
on time step 4072 (time=40.72), 0.00685681 s/step
on time step 4666 (time=46.66), 0.0067412 s/step
on time step 5265 (time=52.65), 0.00668597 s/step
on time step 5863 (time=58.63), 0.00669887 s/step
on time step 6449 (time=64.49), 0.00682794 s/step
on time step 7040 (time=70.4), 0.0067765 s/step
on time step 7652 (time=76.52), 0.00654109 s/step
on time step 8263 (time=82.63), 0.0065542 s/step
on time step 8855 (time=88.55), 0.00676295 s/step
on time step 9407 (time=94.07), 0.00724843 s/step
on time step 10009 (time=100.09), 0.00665044 s/step
on time step 10616 (time=106.16), 0.0065973 s/step
on time step 11216 (time=112.16), 0.00667265 s/step
on time step 11812 (time=118.12), 0.00671279 s/step
on time step 12407 (time=124.07), 0.00672697 s/step
on time step 13009 (time=130.09), 0.00665021 s/step
on time step 13601 (time=136.01), 0.00676467 s/step
on time step 14200 (time=142), 0.00667941 s/step
on time step 14799 (time=147.99), 0.0066795 s/step
on time step 15388 (time=153.88), 0.00679397 s/step
on time step 15967 (time=159.67), 0.0069204 s/step
on time step 16516 (time=165.16), 0.00728701 s/step
on time step 17115 (time=171.15), 0.0066783 s/step
on time step 17730 (time=177.3), 0.00650957 s/step
on time step 18302 (time=183.02), 0.00700086 s/step
on time step 18911 (time=189.11), 0.00657568 s/step
on time step 19522 (time=195.22), 0.00655391 s/step
on time step 20114 (time=201.14), 0.00676642 s/step
on time step 20725 (time=207.25), 0.00655666 s/step
on time step 21325 (time=213.25), 0.00667417 s/step
on time step 21939 (time=219.39), 0.00652287 s/step
on time step 22559 (time=225.59), 0.00645762 s/step
on time step 23158 (time=231.58), 0.00668563 s/step
on time step 23767 (time=237.67), 0.00657393 s/step
on time step 24384 (time=243.84), 0.00649162 s/step
on time step 24986 (time=249.86), 0.00664588 s/step
on time step 25596 (time=255.96), 0.00656288 s/step
on time step 26216 (time=262.16), 0.00645253 s/step
on time step 26822 (time=268.22), 0.00660776 s/step
on time step 27421 (time=274.21), 0.00667996 s/step
on time step 28018 (time=280.18), 0.00671012 s/step
on time step 28630 (time=286.3), 0.0065457 s/step
on time step 29225 (time=292.25), 0.00673055 s/step
on time step 29821 (time=298.21), 0.00671857 s/step
on time step 30441 (time=304.41), 0.00645416 s/step
on time step 31052 (time=310.52), 0.00655298 s/step
on time step 31656 (time=316.56), 0.00662306 s/step
on time step 32257 (time=322.57), 0.00666524 s/step
on time step 32855 (time=328.55), 0.00669196 s/step
on time step 33447 (time=334.47), 0.00675835 s/step
on time step 34054 (time=340.54), 0.0066009 s/step
on time step 34653 (time=346.53), 0.00668701 s/step
field decay(t = 350.05): 0.14533155250113108 / 0.14533155250113108 = 1.0
on time step 35265 (time=352.65), 0.00653655 s/step
on time step 35855 (time=358.55), 0.00679268 s/step
on time step 36422 (time=364.22), 0.00706286 s/step
on time step 37016 (time=370.16), 0.00674342 s/step
on time step 37625 (time=376.25), 0.00657667 s/step
on time step 38207 (time=382.07), 0.00688101 s/step
on time step 38793 (time=387.93), 0.00683809 s/step
on time step 39387 (time=393.87), 0.00673525 s/step
on time step 39986 (time=399.86), 0.0066873 s/step
field decay(t = 400.06): 1.740064432387871e-11 / 0.14533155250113108 = 1.1973067117509314e-10
run 0 finished at t = 400.06 (40006 timesteps)
MPB solved for frequency_1(0.625,0,0) = 0.625 after 7 iters
Dominant planewave for band 1: (0.625000,-0.000000,0.000000)
MPB solved for frequency_1(0.62963,0,0) = 0.62963 after 7 iters
Dominant planewave for band 1: (0.629630,-0.000000,0.000000)
MPB solved for frequency_1(0.634259,0,0) = 0.634259 after 7 iters
Dominant planewave for band 1: (0.634259,-0.000000,0.000000)
MPB solved for frequency_1(0.638889,0,0) = 0.638889 after 7 iters
Dominant planewave for band 1: (0.638889,-0.000000,0.000000)
MPB solved for frequency_1(0.643519,0,0) = 0.643519 after 7 iters
Dominant planewave for band 1: (0.643519,-0.000000,0.000000)
MPB solved for frequency_1(0.648148,0,0) = 0.648148 after 7 iters
Dominant planewave for band 1: (0.648148,-0.000000,0.000000)
MPB solved for frequency_1(0.652778,0,0) = 0.652778 after 7 iters
Dominant planewave for band 1: (0.652778,-0.000000,0.000000)
MPB solved for frequency_1(0.657407,0,0) = 0.657407 after 7 iters
Dominant planewave for band 1: (0.657407,-0.000000,0.000000)
MPB solved for frequency_1(0.662037,0,0) = 0.662037 after 7 iters
Dominant planewave for band 1: (0.662037,-0.000000,0.000000)
MPB solved for frequency_1(0.666667,0,0) = 0.666667 after 7 iters
Dominant planewave for band 1: (0.666667,-0.000000,0.000000)
-----------
Initializing structure...
time for choose_chunkdivision = 6.69956e-05 s
Working in 3D dimensions.
Computational cell is 8.1 x 0.7 x 0.7 with resolution 50
time for set_epsilon = 0.80387 s
-----------
on time step 548 (time=5.48), 0.00730527 s/step
on time step 1190 (time=11.9), 0.00623872 s/step
on time step 1845 (time=18.45), 0.00611096 s/step
on time step 2527 (time=25.27), 0.00586759 s/step
on time step 3196 (time=31.96), 0.0059849 s/step
on time step 3831 (time=38.31), 0.00630408 s/step
on time step 4484 (time=44.84), 0.00613357 s/step
field decay(t = 50.01): 5.426741164771886e-06 / 5.426741164771886e-06 = 1.0
on time step 5114 (time=51.14), 0.00635817 s/step
on time step 5753 (time=57.53), 0.00626071 s/step
on time step 6405 (time=64.05), 0.00613555 s/step
on time step 7052 (time=70.52), 0.00618312 s/step
on time step 7712 (time=77.12), 0.00606276 s/step
on time step 8384 (time=83.84), 0.00595316 s/step
on time step 9029 (time=90.29), 0.00620189 s/step
on time step 9689 (time=96.89), 0.00607118 s/step
field decay(t = 100.01): 0.035570203188044235 / 0.035570203188044235 = 1.0
on time step 10344 (time=103.44), 0.00610808 s/step
on time step 10989 (time=109.89), 0.00620215 s/step
on time step 11631 (time=116.31), 0.00623073 s/step
on time step 12269 (time=122.69), 0.00627587 s/step
on time step 12903 (time=129.03), 0.00631806 s/step
on time step 13546 (time=135.46), 0.006229 s/step
on time step 14179 (time=141.79), 0.00632034 s/step
on time step 14785 (time=147.85), 0.00661135 s/step
field decay(t = 150.02): 0.11846184324595802 / 0.11846184324595802 = 1.0
on time step 15428 (time=154.28), 0.00623013 s/step
on time step 16052 (time=160.52), 0.00641477 s/step
on time step 16686 (time=166.86), 0.00630934 s/step
on time step 17331 (time=173.31), 0.00620647 s/step
on time step 17959 (time=179.59), 0.00637627 s/step
on time step 18610 (time=186.1), 0.006145 s/step
on time step 19261 (time=192.61), 0.00614484 s/step
on time step 19922 (time=199.22), 0.00605228 s/step
field decay(t = 200.03): 0.040856206457377704 / 0.11846184324595802 = 0.3448891671603442
on time step 20552 (time=205.52), 0.0063599 s/step
on time step 21175 (time=211.75), 0.00642603 s/step
on time step 21800 (time=218), 0.00640625 s/step
on time step 22450 (time=224.5), 0.00616006 s/step
on time step 23091 (time=230.91), 0.00624342 s/step
on time step 23727 (time=237.27), 0.00629158 s/step
on time step 24336 (time=243.36), 0.00657378 s/step
on time step 24976 (time=249.76), 0.0062545 s/step
field decay(t = 250.04): 7.321616676715807e-06 / 0.11846184324595802 = 6.180569604606101e-05
on time step 25621 (time=256.21), 0.0062098 s/step
on time step 26264 (time=262.64), 0.00622471 s/step
on time step 26909 (time=269.09), 0.00620622 s/step
on time step 27541 (time=275.41), 0.00633158 s/step
on time step 28185 (time=281.85), 0.00621162 s/step
on time step 28816 (time=288.16), 0.00634153 s/step
on time step 29475 (time=294.75), 0.00607585 s/step
field decay(t = 300.04): 2.0130821207087206e-16 / 0.11846184324595802 = 1.69935066477822e-15
run 0 finished at t = 300.04 (30004 timesteps)
-----------
Initializing structure...
time for choose_chunkdivision = 8.4877e-05 s
Working in 3D dimensions.
Computational cell is 8.1 x 0.7 x 0.7 with resolution 50
     block, center = (-2.025,0,0)
          size (4.05,1e+20,1e+20)
          axes (1,0,0), (0,1,0), (0,0,1)
          dielectric constant epsilon diagonal = (2.1025,2.1025,2.1025)
     cylinder, center = (0.4,0,0)
          radius 0.3, height 0.8, axis (1, 0, 0)
          dielectric constant epsilon diagonal = (11.9025,11.9025,11.9025)
time for set_epsilon = 131.917 s
-----------
on time step 516 (time=5.16), 0.00775214 s/step
on time step 1132 (time=11.32), 0.00649492 s/step
on time step 1710 (time=17.1), 0.00693608 s/step
on time step 2305 (time=23.05), 0.00673325 s/step
on time step 2908 (time=29.08), 0.0066383 s/step
on time step 3512 (time=35.12), 0.00662362 s/step
on time step 4116 (time=41.16), 0.0066338 s/step
on time step 4734 (time=47.34), 0.00648148 s/step
on time step 5345 (time=53.45), 0.00654778 s/step
on time step 5953 (time=59.53), 0.00658071 s/step
on time step 6545 (time=65.45), 0.00675819 s/step
on time step 7166 (time=71.66), 0.00644515 s/step
on time step 7786 (time=77.86), 0.0064575 s/step
on time step 8407 (time=84.07), 0.00645203 s/step
on time step 9021 (time=90.21), 0.00651867 s/step
on time step 9626 (time=96.26), 0.00661657 s/step
on time step 10248 (time=102.48), 0.00643916 s/step
on time step 10825 (time=108.25), 0.00694631 s/step
on time step 11406 (time=114.06), 0.00689218 s/step
on time step 11998 (time=119.98), 0.00676169 s/step
on time step 12612 (time=126.12), 0.00651705 s/step
on time step 13216 (time=132.16), 0.0066305 s/step
on time step 13826 (time=138.26), 0.00656524 s/step
on time step 14437 (time=144.37), 0.00655429 s/step
on time step 15046 (time=150.46), 0.00657743 s/step
on time step 15656 (time=156.56), 0.00656639 s/step
on time step 16256 (time=162.56), 0.00667171 s/step
on time step 16870 (time=168.7), 0.00652351 s/step
on time step 17489 (time=174.89), 0.00647183 s/step
on time step 18084 (time=180.84), 0.00672594 s/step
on time step 18679 (time=186.79), 0.00672316 s/step
on time step 19285 (time=192.85), 0.00660615 s/step
on time step 19885 (time=198.85), 0.00667117 s/step
on time step 20489 (time=204.89), 0.00662797 s/step
on time step 21104 (time=211.04), 0.0065097 s/step
on time step 21710 (time=217.1), 0.00660689 s/step
on time step 22329 (time=223.29), 0.00646226 s/step
on time step 22942 (time=229.42), 0.00652912 s/step
on time step 23555 (time=235.55), 0.00653024 s/step
on time step 24171 (time=241.71), 0.00649752 s/step
on time step 24778 (time=247.78), 0.00659123 s/step
on time step 25390 (time=253.9), 0.00654119 s/step
on time step 25987 (time=259.87), 0.00670381 s/step
on time step 26583 (time=265.83), 0.0067193 s/step
on time step 27197 (time=271.97), 0.00652167 s/step
on time step 27803 (time=278.03), 0.00660775 s/step
on time step 28413 (time=284.13), 0.00656554 s/step
on time step 29013 (time=290.13), 0.00666845 s/step
on time step 29604 (time=296.04), 0.00677457 s/step
on time step 30200 (time=302), 0.00671849 s/step
on time step 30811 (time=308.11), 0.00655369 s/step
on time step 31404 (time=314.04), 0.00675066 s/step
on time step 32019 (time=320.19), 0.0065148 s/step
on time step 32638 (time=326.38), 0.00646644 s/step
on time step 33249 (time=332.49), 0.00655209 s/step
on time step 33854 (time=338.54), 0.00661389 s/step
on time step 34452 (time=344.52), 0.00669173 s/step
field decay(t = 350.05): 0.16032430386920205 / 0.16032430386920205 = 1.0
on time step 35049 (time=350.49), 0.00670484 s/step
on time step 35645 (time=356.45), 0.00672067 s/step
on time step 36257 (time=362.57), 0.00654534 s/step
on time step 36872 (time=368.72), 0.00650921 s/step
on time step 37484 (time=374.84), 0.00654621 s/step
on time step 38065 (time=380.65), 0.00688614 s/step
on time step 38660 (time=386.6), 0.00672478 s/step
on time step 39279 (time=392.79), 0.0064637 s/step
on time step 39892 (time=398.92), 0.00653673 s/step
field decay(t = 400.06): 2.282200281523022e-12 / 0.16032430386920205 = 1.4234899054262652e-11
run 0 finished at t = 400.06 (40006 timesteps)
MPB solved for frequency_1(0.625,0,0) = 0.625 after 7 iters
Dominant planewave for band 1: (0.625000,-0.000000,0.000000)
MPB solved for frequency_1(0.62963,0,0) = 0.62963 after 7 iters
Dominant planewave for band 1: (0.629630,-0.000000,0.000000)
MPB solved for frequency_1(0.634259,0,0) = 0.634259 after 7 iters
Dominant planewave for band 1: (0.634259,-0.000000,0.000000)
MPB solved for frequency_1(0.638889,0,0) = 0.638889 after 7 iters
Dominant planewave for band 1: (0.638889,-0.000000,0.000000)
MPB solved for frequency_1(0.643519,0,0) = 0.643519 after 7 iters
Dominant planewave for band 1: (0.643519,-0.000000,0.000000)
MPB solved for frequency_1(0.648148,0,0) = 0.648148 after 7 iters
Dominant planewave for band 1: (0.648148,-0.000000,0.000000)
MPB solved for frequency_1(0.652778,0,0) = 0.652778 after 7 iters
Dominant planewave for band 1: (0.652778,-0.000000,0.000000)
MPB solved for frequency_1(0.657407,0,0) = 0.657407 after 7 iters
Dominant planewave for band 1: (0.657407,-0.000000,0.000000)
MPB solved for frequency_1(0.662037,0,0) = 0.662037 after 7 iters
Dominant planewave for band 1: (0.662037,-0.000000,0.000000)
MPB solved for frequency_1(0.666667,0,0) = 0.666667 after 7 iters
Dominant planewave for band 1: (0.666667,-0.000000,0.000000)
In [14]:
plt.figure()
plt.subplot(1,2,1)
plt.pcolormesh(
    mode_wvl,
    diameters,
    mode_tran_arr,
    cmap='hot_r',
    shading='gouraud',
    vmin=0,
    vmax=mode_tran_arr.max(),
)

plt.axis([wvl_min, wvl_max, diameters[0], diameters[-1]])
plt.xlabel("Wavelength (um)")
plt.xticks([t for t in np.linspace(wvl_min, wvl_max, 3)])
plt.ylabel("Pillar Diameter (um)")
plt.title("Transmission")
cbar=plt.colorbar()
cbar.set_ticks([t for t in np.arange(0, 1.2, 0.2)])
cbar.set_ticklabels(["{:.1f}".format(t) for t in np.linspace(0, 1, 6)])

plt.subplot(1,2,2)
plt.pcolormesh(
    mode_wvl,
    diameters,
    mode_phase_arr,
    cmap='RdBu',
    shading='gouraud',
    vmin=mode_phase_arr.min(),
    vmax=mode_phase_arr.max(),
)

plt.axis([wvl_min, wvl_max, diameters[0], diameters[-1]])
plt.xlabel("Wavelength (um)")
plt.xticks([t for t in np.linspace(wvl_min, wvl_max, 3)])
plt.ylabel("Pillar Diameter (um)")
plt.title("phase")
cbar=plt.colorbar()
cbar.set_ticks([t for t in range(-3, 4)])
cbar.set_ticklabels(["{:.1f}".format(t) for t in range(-3,4)])

plt.subplots_adjust(wspace=0.5)