El programa
import meep as mp ############## Omega NOm = 10 Omi = 0.01 Omf = 0.5 dOm = (Omf-Omi)/(NOm-1) OmV = np.zeros(NOm) QQxV = np.zeros(NOm) ############# Omega ############ FT i_0=80 i_I=160 I=i_I-i_0 Qx_i=0.0 Qx_f=1.0 NQx=100 dQx=(Qx_f-Qx_i)/NQx EQx=np.zeros(NQx) QxV=np.zeros(NQx) ############# FT ME = np.zeros((NOm,NQx)) for iOm in range(NOm): Om = Omi+iOm*dOm OmV[iOm] = Om print(Om,iOm) ###################################################################### -> meep cell = mp.Vector3(16, 8, 0) geometry = [mp.Block(mp.Vector3(mp.inf, 1, mp.inf),center=mp.Vector3(),material=mp.Medium(epsilon=4),)] sources = [mp.Source(mp.ContinuousSource(frequency=Om), component=mp.Ez, center=mp.Vector3(-7, 0))] pml_layers = [mp.PML(1.0)] resolution = 10 sim = mp.Simulation(cell_size=cell,boundary_layers=pml_layers,geometry=geometry,sources=sources,resolution=resolution,) sim.run(until=200) ez_data = sim.get_array(center=mp.Vector3(), size=cell, component=mp.Ez) plt.imshow(ez_data.transpose()) plt.show() plt.plot(ez_data[:,40]) plt.show() ######################################################################## <- meep ######################################################################## -> FT for ic in range(NQx): Qx = Qx_i+ic*dQx QxV[ic]=Qx Exr=0 Exi=0 for i in range(I): Exr=Exr+ez_data[i_0+i,40]*math.cos(2.0*math.pi*Qx*((i_0+i)/resolution)) Exi=Exi+ez_data[i_0+i,40]*math.sin(2.0*math.pi*Qx*((i_0+i)/resolution)) EQx[ic] = math.sqrt(Exr*Exr+Exi*Exi) ME[iOm,ic] = EQx[ic] ############################################################################ <- FT plt.plot(QxV,EQx,'-k') plt.grid() plt.show() # el_maximo = np.max(EQx) el_indice = np.argmax(EQx) QQxV[iOm] = QxV[el_indice] plt.imshow(ME) plt.show() plt.plot(QQxV,OmV,'-o') plt.show()
genera muchos datos de forma similar al caso anterior, pero arroja una forma de la relacion de dispersion

