NanoComp / meep

free finite-difference time-domain (FDTD) software for electromagnetic simulations
GNU General Public License v2.0
1.17k stars 598 forks source link

RuntimeError: meep: simulation fields are NaN or Inf #2642

Closed niubiworker closed 10 months ago

niubiworker commented 10 months ago

I want to calculate the reflectivity, refractive index, and transmittance of a photonic crystal waveguide, but I don't know why there was an error like the title. My code is as follows:

import numpy as np
import meep as mp
import matplotlib.pyplot as plt
from meep.materials import LiNbO3
resolution = 30 # pixels/a

a = 0.775         # units of um
r = 0.315*a         # units of um
h = 0.3       # units of um

period_num = 50
wave_length = 1.55
fcen = 1/wave_length
df = 0.1
pml_height = 0.5*wave_length
y_num = 6

geometry_up_boundary = y_num*np.sqrt(3)*a
geometry_left_boundary = period_num*a+2*pml_height
size = mp.Vector3(geometry_left_boundary,h+2*pml_height,geometry_up_boundary)
w = np.sqrt(3)

geometry = [mp.Block(center=mp.Vector3(0,0,0),size=mp.Vector3(mp.inf,h,w), material=LiNbO3)]

pml_layers = [mp.PML(pml_height)]

sources = [mp.Source(mp.GaussianSource(frequency=fcen,fwidth=df),
                     component=mp.Ex,
                     center=mp.Vector3(-geometry_left_boundary/2+pml_height,0,0),
                     size=mp.Vector3(0,h,w))]

sim = mp.Simulation(resolution=resolution,
                    cell_size=size,
                    geometry=geometry,
                    boundary_layers=pml_layers,
                    sources=sources)

nfreq = 100
ref1_local = -period_num/2*a+pml_height+0.5*a

ref1_fr = mp.FluxRegion(center=mp.Vector3(ref1_local,0,0),
                        size=mp.Vector3(0,2*h,2*w),
                        direction=mp.X)
ref1 = sim.add_flux(fcen,df,nfreq,ref1_fr)

tran_fr = mp.FluxRegion(center=mp.Vector3(ref1_local+period_num*a,0,0),
                        size=mp.Vector3(0,2*h,2*w),
                        direction=mp.X)
tran = sim.add_flux(fcen,df,nfreq,tran_fr)

# 运行仿真
pt = mp.Vector3(ref1_local+period_num*a-0.5*a,0,0)
sim.run(until_after_sources=mp.stop_when_fields_decayed(50, mp.Ex, pt, 1e-3))
straight_ref1_data = sim.get_flux_data(ref1)
straight_tran_flux = mp.get_fluxes(tran)

sim.reset_meep()

geometry = [mp.Block(center=mp.Vector3(0,0,0),axis=mp.Vector3(y=1),size=mp.Vector3(mp.inf,h,geometry_up_boundary), material=LiNbO3)]
for i in np.linspace(-geometry_left_boundary,geometry_left_boundary,period_num*2+1):
    for j in np.linspace(-geometry_up_boundary,geometry_up_boundary,2*y_num+1):
        if j != 0:
            geometry += [mp.Cylinder(center=mp.Vector3(i, 0, j, ), height=mp.inf, material=mp.air, radius=r,axis=mp.Vector3(y=1))]
            geometry += [mp.Cylinder(center=mp.Vector3(i + 0.5 * a, 0, np.sqrt(3) / 2 * a + j, ), height=mp.inf, material=mp.air,radius=r,axis=mp.Vector3(y=1))]
            geometry += [mp.Cylinder(center=mp.Vector3(i + 0.5 * a, 0, -np.sqrt(3) / 2 * a + j, ), height=mp.inf, material=mp.air,radius=r,axis=mp.Vector3(y=1))]

sim = mp.Simulation(resolution=resolution,
                    cell_size=size,
                    geometry=geometry,
                    boundary_layers=pml_layers,
                    sources=sources)

ref1 = sim.add_flux(fcen,df,nfreq,ref1_fr)
tran = sim.add_flux(fcen,df,nfreq,tran_fr)
sim.load_minus_flux_data(ref1,straight_ref1_data)
sim.run(until_after_sources=mp.stop_when_fields_decayed(50, mp.Ex, pt, 1e-3))

pc_ref1_flux = mp.get_fluxes(ref1)
pc_tran_flux = mp.get_fluxes(tran)

flux_freqs = mp.get_flux_freqs(ref1)

wl = []
Rs = []
Ts = []
for i in range(nfreq):
    wl = np.append(wl, 1 / flux_freqs[i])
    Rs = np.append(Rs, -pc_ref1_flux[i] / straight_tran_flux[i])
    Ts = np.append(Ts, pc_tran_flux[i] / straight_tran_flux[i])

plt.plot(wl, Rs, "bo-", label="reflectance")
plt.plot(wl, Ts, "ro-", label="transmittance")
plt.plot(wl, 1 - Rs - Ts, "go-", label="loss")
plt.xlim(min(wl),max(wl))
plt.xlabel("wavelength (μm)")
plt.legend(loc="upper right")
plt.show()

However, once run, the error shown in the title will appear, and the specific error and simulation process are as follows:

Initializing structure... time for choose_chunkdivision = 0.000597 s Working in 3D dimensions. Computational cell is 40.3 x 1.86667 x 8.06667 with resolution 30 block, center = (0,0,0) size (1e+20,0.3,1.73205) axes (1,0,0), (0,1,0), (0,0,1) dielectric constant epsilon diagonal = (1,1,1) Warning: grid volume is not an integer number of pixels; cell size will be rounded to nearest pixel. time for set_epsilon = 14.4656 s lorentzian susceptibility: frequency=0.0490243, gamma=0 lorentzian susceptibility: frequency=3.87492, gamma=0 lorentzian susceptibility: frequency=6.98942, gamma=0 lorentzian susceptibility: frequency=0.0459025, gamma=0 lorentzian susceptibility: frequency=4.11206, gamma=0 lorentzian susceptibility: frequency=7.52923, gamma=0

on time step 1 (time=0.0166667), 22.8549 s/step on time step 8 (time=0.133333), 0.604817 s/step on time step 15 (time=0.25), 0.626245 s/step on time step 22 (time=0.366667), 0.614 s/step on time step 29 (time=0.483333), 0.615067 s/step on time step 36 (time=0.6), 0.61398 s/step on time step 43 (time=0.716667), 0.626642 s/step on time step 48 (time=0.8), 1.02203 s/step on time step 51 (time=0.85), 2.03051 s/step on time step 53 (time=0.883333), 2.14144 s/step on time step 56 (time=0.933333), 1.98597 s/step on time step 58 (time=0.966667), 2.03453 s/step on time step 60 (time=1), 2.00088 s/step on time step 63 (time=1.05), 1.90624 s/step on time step 66 (time=1.1), 1.92417 s/step on time step 69 (time=1.15), 1.88141 s/step on time step 72 (time=1.2), 1.93343 s/step on time step 75 (time=1.25), 1.93431 s/step on time step 78 (time=1.3), 1.99931 s/step on time step 80 (time=1.33333), 2.00422 s/step on time step 85 (time=1.41667), 0.814694 s/step on time step 92 (time=1.53333), 0.637423 s/step on time step 99 (time=1.65), 0.626297 s/step on time step 106 (time=1.76667), 0.610201 s/step on time step 113 (time=1.88333), 0.61902 s/step on time step 120 (time=2), 0.621419 s/step on time step 127 (time=2.11667), 0.604494 s/step on time step 134 (time=2.23333), 0.616622 s/step on time step 141 (time=2.35), 0.614138 s/step on time step 148 (time=2.46667), 0.60537 s/step on time step 155 (time=2.58333), 0.615597 s/step on time step 162 (time=2.7), 0.611367 s/step on time step 169 (time=2.81667), 0.634687 s/step on time step 176 (time=2.93333), 0.649754 s/step on time step 183 (time=3.05), 0.622887 s/step on time step 190 (time=3.16667), 0.621464 s/step on time step 197 (time=3.28333), 0.632365 s/step on time step 204 (time=3.4), 0.650583 s/step on time step 211 (time=3.51667), 0.635098 s/step on time step 218 (time=3.63333), 0.610763 s/step on time step 225 (time=3.75), 0.614155 s/step on time step 232 (time=3.86667), 0.622954 s/step on time step 239 (time=3.98333), 0.612168 s/step on time step 246 (time=4.1), 0.619603 s/step on time step 253 (time=4.21667), 0.620951 s/step on time step 260 (time=4.33333), 0.624882 s/step on time step 267 (time=4.45), 0.645817 s/step on time step 274 (time=4.56667), 0.636539 s/step on time step 281 (time=4.68333), 0.638238 s/step on time step 288 (time=4.8), 0.653095 s/step on time step 295 (time=4.91667), 0.63594 s/step on time step 302 (time=5.03333), 0.626313 s/step on time step 309 (time=5.15), 0.629259 s/step on time step 316 (time=5.26667), 0.617677 s/step on time step 323 (time=5.38333), 0.629001 s/step on time step 330 (time=5.5), 0.645157 s/step on time step 337 (time=5.61667), 0.622169 s/step on time step 344 (time=5.73333), 0.638939 s/step on time step 351 (time=5.85), 0.625236 s/step on time step 358 (time=5.96667), 0.64465 s/step on time step 365 (time=6.08333), 0.650929 s/step on time step 372 (time=6.2), 0.644038 s/step on time step 379 (time=6.31667), 0.649843 s/step on time step 386 (time=6.43333), 0.648836 s/step on time step 393 (time=6.55), 0.631284 s/step on time step 400 (time=6.66667), 0.63875 s/step on time step 407 (time=6.78333), 0.630869 s/step on time step 414 (time=6.9), 0.626096 s/step on time step 421 (time=7.01667), 0.651884 s/step on time step 428 (time=7.13333), 0.656138 s/step on time step 435 (time=7.25), 0.646762 s/step on time step 442 (time=7.36667), 0.647793 s/step on time step 449 (time=7.48333), 0.661101 s/step on time step 456 (time=7.6), 0.659582 s/step on time step 463 (time=7.71667), 0.638901 s/step on time step 470 (time=7.83333), 0.633204 s/step on time step 477 (time=7.95), 0.655886 s/step on time step 484 (time=8.06667), 0.634033 s/step on time step 491 (time=8.18333), 0.642904 s/step on time step 498 (time=8.3), 0.630999 s/step on time step 505 (time=8.41667), 0.619946 s/step on time step 512 (time=8.53333), 0.654929 s/step on time step 519 (time=8.65), 0.636282 s/step on time step 525 (time=8.75), 0.695853 s/step on time step 532 (time=8.86667), 0.654309 s/step on time step 539 (time=8.98333), 0.654207 s/step on time step 545 (time=9.08333), 0.678959 s/step on time step 551 (time=9.18333), 0.673076 s/step on time step 558 (time=9.3), 0.662913 s/step on time step 565 (time=9.41667), 0.667029 s/step on time step 571 (time=9.51667), 0.67494 s/step on time step 578 (time=9.63333), 0.668644 s/step on time step 585 (time=9.75), 0.656211 s/step on time step 592 (time=9.86667), 0.643185 s/step on time step 599 (time=9.98333), 0.624451 s/step on time step 606 (time=10.1), 0.624211 s/step on time step 613 (time=10.2167), 0.630093 s/step on time step 620 (time=10.3333), 0.628231 s/step on time step 627 (time=10.45), 0.623446 s/step on time step 634 (time=10.5667), 0.622409 s/step on time step 641 (time=10.6833), 0.621329 s/step on time step 648 (time=10.8), 0.626491 s/step on time step 654 (time=10.9), 0.685371 s/step on time step 661 (time=11.0167), 0.648521 s/step on time step 668 (time=11.1333), 0.662043 s/step on time step 675 (time=11.25), 0.651349 s/step on time step 682 (time=11.3667), 0.620413 s/step on time step 687 (time=11.45), 1.07707 s/step on time step 690 (time=11.5), 1.91254 s/step on time step 692 (time=11.5333), 2.05304 s/step on time step 695 (time=11.5833), 1.93196 s/step on time step 698 (time=11.6333), 1.94346 s/step on time step 700 (time=11.6667), 2.01851 s/step on time step 703 (time=11.7167), 1.90374 s/step on time step 706 (time=11.7667), 1.84225 s/step on time step 709 (time=11.8167), 1.66632 s/step on time step 713 (time=11.8833), 1.30759 s/step on time step 716 (time=11.9333), 1.84918 s/step on time step 721 (time=12.0167), 0.806277 s/step on time step 728 (time=12.1333), 0.625607 s/step on time step 735 (time=12.25), 0.621484 s/step on time step 742 (time=12.3667), 0.628592 s/step on time step 749 (time=12.4833), 0.624753 s/step on time step 756 (time=12.6), 0.625309 s/step on time step 763 (time=12.7167), 0.618739 s/step on time step 770 (time=12.8333), 0.648177 s/step on time step 777 (time=12.95), 0.656505 s/step on time step 784 (time=13.0667), 0.658027 s/step on time step 791 (time=13.1833), 0.638748 s/step on time step 798 (time=13.3), 0.610444 s/step on time step 805 (time=13.4167), 0.639166 s/step on time step 812 (time=13.5333), 0.637795 s/step on time step 819 (time=13.65), 0.617986 s/step on time step 826 (time=13.7667), 0.636869 s/step on time step 833 (time=13.8833), 0.630152 s/step on time step 840 (time=14), 0.628761 s/step on time step 847 (time=14.1167), 0.640548 s/step on time step 854 (time=14.2333), 0.646076 s/step on time step 861 (time=14.35), 0.642396 s/step on time step 868 (time=14.4667), 0.634067 s/step on time step 875 (time=14.5833), 0.637989 s/step on time step 882 (time=14.7), 0.659715 s/step on time step 889 (time=14.8167), 0.657812 s/step on time step 896 (time=14.9333), 0.658112 s/step on time step 903 (time=15.05), 0.640776 s/step on time step 910 (time=15.1667), 0.615886 s/step on time step 917 (time=15.2833), 0.617782 s/step on time step 924 (time=15.4), 0.616411 s/step on time step 931 (time=15.5167), 0.618014 s/step on time step 938 (time=15.6333), 0.620544 s/step on time step 945 (time=15.75), 0.624011 s/step on time step 952 (time=15.8667), 0.643808 s/step on time step 959 (time=15.9833), 0.652131 s/step on time step 966 (time=16.1), 0.635835 s/step on time step 973 (time=16.2167), 0.651368 s/step on time step 980 (time=16.3333), 0.635637 s/step on time step 987 (time=16.45), 0.638766 s/step on time step 994 (time=16.5667), 0.647672 s/step on time step 1001 (time=16.6833), 0.621667 s/step on time step 1008 (time=16.8), 0.637328 s/step on time step 1015 (time=16.9167), 0.621818 s/step on time step 1022 (time=17.0333), 0.621448 s/step on time step 1029 (time=17.15), 0.640883 s/step on time step 1036 (time=17.2667), 0.620066 s/step on time step 1043 (time=17.3833), 0.621004 s/step on time step 1050 (time=17.5), 0.63431 s/step on time step 1057 (time=17.6167), 0.627028 s/step on time step 1064 (time=17.7333), 0.628937 s/step on time step 1071 (time=17.85), 0.621987 s/step on time step 1078 (time=17.9667), 0.63114 s/step on time step 1085 (time=18.0833), 0.633152 s/step on time step 1092 (time=18.2), 0.629924 s/step Traceback (most recent call last): File "/home/linux1234/PycharmProjects/pythonProject/缺陷/123.py", line 55, in sim.run(until_after_sources=mp.stop_when_fields_decayed(50, mp.Ex, pt, 1e-3)) File "/home/linux1234/desired_prefix/envs/mp/lib/python3.11/site-packages/meep/simulation.py", line 4526, in run self._run_sources_until(until_after_sources, step_funcs) File "/home/linux1234/desired_prefix/envs/mp/lib/python3.11/site-packages/meep/simulation.py", line 2867, in _run_sources_until self._run_until(new_conds, step_funcs) File "/home/linux1234/desired_prefix/envs/mp/lib/python3.11/site-packages/meep/simulation.py", line 2825, in _run_until self.fields.step() File "/home/linux1234/desired_prefix/envs/mp/lib/python3.11/site-packages/meep/init.py", line 3040, in step return _meep.fields_step(self) ^^^^^^^^^^^^^^^^^^^^^^^ RuntimeError: meep: simulation fields are NaN or Inf I hope my problem can be resolved here. Thank you very much