Re: [Meep-discuss] question about dispersive complex epsilon for gain
Dear Cerjan, thank you for your kind help. Now let me summarize my tests. Firstly, I decreased sigma to 1e-100. However the electric field still grows fast to infinity. My test results show that sigma=1e-120 made the calculation converge. But why sigma is required so small. It does not make sense. Secondly, the interface reflections were removed. In my structure under calculation, uniform gain medium was sandwiched between air and the light was propagating along z direction. The reflections from the gain medium-air interfaces provided optical feedback for this Fabry-Perot like lasing. For test, the instantaneous dielectric constant of the gain medium was set the same as the air. But the field did not converge in this case also. Thirdly, gamma was set to positive and sigma was set to negative. In this case, the electric field converged finally. And I check the results, and found the spectrum was likely correct. I wonder if those are the correct parameters in using complex epsilon to calculate the lasing. That's all for my tests. After those tests, I am confused with modelling gain medium by complex dielectric function. Can you give me any clue to solve this problem? Bests, Pei At 2020-07-26 04:47:29, "Alexander Cerjan" wrote: - 隐藏引用文字 - This is likely the physically expected behavior. If your gain is coupling to a mode of your system whose loss rate is less than that of the rate of stimulated emission, your system will begin to lase, i.e. the field will begin to grow exponentially. In real, physical systems, this is then compensated by gain saturation, which prohibits the fields from growing exponentially forever. However, as the Lorentzian susceptibility model does not contain this physics, nothing prohibits the fields from continuing their exponential growth. On Sat, Jul 25, 2020 at 2:02 PM 裴延波 wrote: I am trying to use dispersive complex epsilon to describe gain in my calculation. The parameters for the epsilon is defined as follows. freq_32 = 2# emission frequency (units of 2\pi c/a) gamma_32 = 0.306# FWHM emission linewidth in sec^-1 (units of 2\pi c/a) sigma_32 = 1e-4 susceptibilities = [mp.LorentzianSusceptibility(frequency=freq_32, gamma=-gamma_32, sigma=sigma_32)] geometry = [mp.Block(center=mp.Vector3(z=0), size=mp.Vector3(mp.inf,mp.inf,dcell), material=mp.Medium(epsilon=2.25,E_susceptibilities=susceptibilities))] Here gamma is negative indicating the material has gain, just as that in the tutorial. However, when running the field increase to infinity even though sigma is very very small. I try to set gamma positive and sigma negative. In this case there is a result which looks normal. I don't know why and what is the problem in my code. Can anyone explain this. Thanks in advance. The following is my full python code. import meep as mp import math resolution = 100 dimensions = 3 ns = 1.0 nlead = ns dlead = 2.0 npad = ns dpad = 2.0 dpml = 2.0 Ncell = 20 dcell = 96 sz = dcell + dlead + dpad + 2*dpml cell_size = mp.Vector3(0,0,sz) pml_layers = [mp.PML(dpml)] freq_32 = 2# emission frequency (units of 2\pi c/a) gamma_32 = 0.306# FWHM emission linewidth in sec^-1 (units of 2\pi c/a) df1 = gamma_32/2/math.pi sigma_32 = 1e-4 # dipole coupling strength (hbar = 1) default_material = mp.Medium(index=ns) sources = [mp.Source(mp.GaussianSource(freq_32, fwidth=df1), component=mp.Ex, center=mp.Vector3(-dcell/2-dpad/2))] sim = mp.Simulation(cell_size=cell_size, sources=sources, resolution=resolution, boundary_layers=pml_layers, dimensions = dimensions, default_material=default_material) nfreq = 50 #number of frequencies at which to compute flux pt = mp.Vector3(0,0,dcell/2+dpad/2) flux_detection_point = mp.FluxRegion(center=pt) incidence = sim.add_flux(freq_32,df1,nfreq,flux_detection_point) sim.run(until_after_sources=mp.stop_when_fields_decayed(50,mp.Ex,pt,1e-3)) incident_flux = mp.get_fluxes(incidence) sim.reset_meep() susceptibilities = [mp.LorentzianSusceptibility(frequency=freq_32, gamma=-gamma_32, sigma=sigma_32)] geometry = [mp.Block(center=mp.Vector3(z=0), size=mp.Vector3(mp.inf,mp.inf,dcell), material=mp.Medium(epsilon=2.25,E_susceptibilities=susceptibilities))] geometry.append(mp.Block(center=mp.Vector3(z=-sz/2+(dpml+dlead)/2), size=mp.Vector3(mp.inf,mp.inf,dpml+dlead), material=mp.Medium(index=nlead))) geometry.append(mp.Block(center=mp.Vector3(z=sz/2-(dpml+dpad)/2), size=mp.Vector3(mp.inf,mp.inf,dpml+dpad), material=mp.Medium(index=npad))) sim = mp.Simulation(cell_size=cell_size, sources=sources, resolution=resolution, boundary_layers=
Re: [Meep-discuss] question about dispersive complex epsilon for gain
Thank you for your kind help. Actually, I have tried the strength parameter sigma as small as 1e-20. But the field rises to infinity rapidly. sigma can be used to tune the gain, can't it? -- 发自我的网易邮箱平板适配版 在 2020-07-26 04:47:29,"Alexander Cerjan" 写道: This is likely the physically expected behavior. If your gain is coupling to a mode of your system whose loss rate is less than that of the rate of stimulated emission, your system will begin to lase, i.e. the field will begin to grow exponentially. In real, physical systems, this is then compensated by gain saturation, which prohibits the fields from growing exponentially forever. However, as the Lorentzian susceptibility model does not contain this physics, nothing prohibits the fields from continuing their exponential growth. On Sat, Jul 25, 2020 at 2:02 PM 裴延波 wrote: I am trying to use dispersive complex epsilon to describe gain in my calculation. The parameters for the epsilon is defined as follows. freq_32 = 2# emission frequency (units of 2\pi c/a) gamma_32 = 0.306# FWHM emission linewidth in sec^-1 (units of 2\pi c/a) sigma_32 = 1e-4 susceptibilities = [mp.LorentzianSusceptibility(frequency=freq_32, gamma=-gamma_32, sigma=sigma_32)] geometry = [mp.Block(center=mp.Vector3(z=0), size=mp.Vector3(mp.inf,mp.inf,dcell), material=mp.Medium(epsilon=2.25,E_susceptibilities=susceptibilities))] Here gamma is negative indicating the material has gain, just as that in the tutorial. However, when running the field increase to infinity even though sigma is very very small. I try to set gamma positive and sigma negative. In this case there is a result which looks normal. I don't know why and what is the problem in my code. Can anyone explain this. Thanks in advance. The following is my full python code. import meep as mp import math resolution = 100 dimensions = 3 ns = 1.0 nlead = ns dlead = 2.0 npad = ns dpad = 2.0 dpml = 2.0 Ncell = 20 dcell = 96 sz = dcell + dlead + dpad + 2*dpml cell_size = mp.Vector3(0,0,sz) pml_layers = [mp.PML(dpml)] freq_32 = 2# emission frequency (units of 2\pi c/a) gamma_32 = 0.306# FWHM emission linewidth in sec^-1 (units of 2\pi c/a) df1 = gamma_32/2/math.pi sigma_32 = 1e-4 # dipole coupling strength (hbar = 1) default_material = mp.Medium(index=ns) sources = [mp.Source(mp.GaussianSource(freq_32, fwidth=df1), component=mp.Ex, center=mp.Vector3(-dcell/2-dpad/2))] sim = mp.Simulation(cell_size=cell_size, sources=sources, resolution=resolution, boundary_layers=pml_layers, dimensions = dimensions, default_material=default_material) nfreq = 50 #number of frequencies at which to compute flux pt = mp.Vector3(0,0,dcell/2+dpad/2) flux_detection_point = mp.FluxRegion(center=pt) incidence = sim.add_flux(freq_32,df1,nfreq,flux_detection_point) sim.run(until_after_sources=mp.stop_when_fields_decayed(50,mp.Ex,pt,1e-3)) incident_flux = mp.get_fluxes(incidence) sim.reset_meep() susceptibilities = [mp.LorentzianSusceptibility(frequency=freq_32, gamma=-gamma_32, sigma=sigma_32)] geometry = [mp.Block(center=mp.Vector3(z=0), size=mp.Vector3(mp.inf,mp.inf,dcell), material=mp.Medium(epsilon=2.25,E_susceptibilities=susceptibilities))] geometry.append(mp.Block(center=mp.Vector3(z=-sz/2+(dpml+dlead)/2), size=mp.Vector3(mp.inf,mp.inf,dpml+dlead), material=mp.Medium(index=nlead))) geometry.append(mp.Block(center=mp.Vector3(z=sz/2-(dpml+dpad)/2), size=mp.Vector3(mp.inf,mp.inf,dpml+dpad), material=mp.Medium(index=npad))) sim = mp.Simulation(cell_size=cell_size, sources=sources, resolution=resolution, boundary_layers=pml_layers, geometry=geometry, dimensions = dimensions, default_material=default_material) transmission = sim.add_flux(freq_32,df1,nfreq,flux_detection_point) sim.run(until_after_sources=mp.stop_when_fields_decayed(50,mp.Ex,pt,1e-3)) transmitted_flux = mp.get_fluxes(transmission) flux_freqs = mp.get_flux_freqs(transmission) data1 = open("lasing.dat",'w') for ii in range(0,nfreq): data1.write("%f %f %f%f\n" %(flux_freqs[ii],incident_flux[ii],transmitted_flux[ii],transmitted_flux[ii]/incident_flux[ii])) data1.close() ___ meep-discuss mailing list meep-discuss@ab-initio.mit.edu http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss___ meep-discuss mailing list meep-discuss@ab-initio.mit.edu http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss
[Meep-discuss] question about dispersive complex epsilon for gain
I am trying to use dispersive complex epsilon to describe gain in my calculation. The parameters for the epsilon is defined as follows. freq_32 = 2# emission frequency (units of 2\pi c/a) gamma_32 = 0.306# FWHM emission linewidth in sec^-1 (units of 2\pi c/a) sigma_32 = 1e-4 susceptibilities = [mp.LorentzianSusceptibility(frequency=freq_32, gamma=-gamma_32, sigma=sigma_32)] geometry = [mp.Block(center=mp.Vector3(z=0), size=mp.Vector3(mp.inf,mp.inf,dcell), material=mp.Medium(epsilon=2.25,E_susceptibilities=susceptibilities))] Here gamma is negative indicating the material has gain, just as that in the tutorial. However, when running the field increase to infinity even though sigma is very very small. I try to set gamma positive and sigma negative. In this case there is a result which looks normal. I don't know why and what is the problem in my code. Can anyone explain this. Thanks in advance. The following is my full python code. import meep as mp import math resolution = 100 dimensions = 3 ns = 1.0 nlead = ns dlead = 2.0 npad = ns dpad = 2.0 dpml = 2.0 Ncell = 20 dcell = 96 sz = dcell + dlead + dpad + 2*dpml cell_size = mp.Vector3(0,0,sz) pml_layers = [mp.PML(dpml)] freq_32 = 2# emission frequency (units of 2\pi c/a) gamma_32 = 0.306# FWHM emission linewidth in sec^-1 (units of 2\pi c/a) df1 = gamma_32/2/math.pi sigma_32 = 1e-4 # dipole coupling strength (hbar = 1) default_material = mp.Medium(index=ns) sources = [mp.Source(mp.GaussianSource(freq_32, fwidth=df1), component=mp.Ex, center=mp.Vector3(-dcell/2-dpad/2))] sim = mp.Simulation(cell_size=cell_size, sources=sources, resolution=resolution, boundary_layers=pml_layers, dimensions = dimensions, default_material=default_material) nfreq = 50 #number of frequencies at which to compute flux pt = mp.Vector3(0,0,dcell/2+dpad/2) flux_detection_point = mp.FluxRegion(center=pt) incidence = sim.add_flux(freq_32,df1,nfreq,flux_detection_point) sim.run(until_after_sources=mp.stop_when_fields_decayed(50,mp.Ex,pt,1e-3)) incident_flux = mp.get_fluxes(incidence) sim.reset_meep() susceptibilities = [mp.LorentzianSusceptibility(frequency=freq_32, gamma=-gamma_32, sigma=sigma_32)] geometry = [mp.Block(center=mp.Vector3(z=0), size=mp.Vector3(mp.inf,mp.inf,dcell), material=mp.Medium(epsilon=2.25,E_susceptibilities=susceptibilities))] geometry.append(mp.Block(center=mp.Vector3(z=-sz/2+(dpml+dlead)/2), size=mp.Vector3(mp.inf,mp.inf,dpml+dlead), material=mp.Medium(index=nlead))) geometry.append(mp.Block(center=mp.Vector3(z=sz/2-(dpml+dpad)/2), size=mp.Vector3(mp.inf,mp.inf,dpml+dpad), material=mp.Medium(index=npad))) sim = mp.Simulation(cell_size=cell_size, sources=sources, resolution=resolution, boundary_layers=pml_layers, geometry=geometry, dimensions = dimensions, default_material=default_material) transmission = sim.add_flux(freq_32,df1,nfreq,flux_detection_point) sim.run(until_after_sources=mp.stop_when_fields_decayed(50,mp.Ex,pt,1e-3)) transmitted_flux = mp.get_fluxes(transmission) flux_freqs = mp.get_flux_freqs(transmission) data1 = open("lasing.dat",'w') for ii in range(0,nfreq): data1.write("%f %f %f%f\n" %(flux_freqs[ii],incident_flux[ii],transmitted_flux[ii],transmitted_flux[ii]/incident_flux[ii])) data1.close() ___ meep-discuss mailing list meep-discuss@ab-initio.mit.edu http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss
[Meep-discuss] question about 'transform'
Dear Meep users and developers I have a question concerning the interface of Medium transform(M [ Matrix class ]). In my present work, I need to model the anisotropic dielectric constant of liquid crystals. Now, I calculate epsilon_diag=(a,b,c) and epsilon_offdiag=(u,v,w) for the particular orientational angle of liquid crystal director.Happily, I find there is a function 'transform', which seems that it can rotate the principal axis of dielectric constant of liquid crystal by the orientational angle of liquid crystal director. However I am not sure and there is no detailed explaination to tell me how to use it. Could anyone help me? Thanks in advance. Yanbo Pei ___ meep-discuss mailing list meep-discuss@ab-initio.mit.edu http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss
Re: [Meep-discuss] the unit of N0 and Rp in the multiLevel susceptibility
Dear Mr. Cerjan, I will do it along this way. Thank you very much. Yanbo At 2019-07-09 23:38:12, "Alexander Cerjan" wrote: 1 million increments of MEEP's internal dt is not a very long time necessarily. if i recall correctly, the tutorial example runs for 3.5 or 7 million time steps. Near the first lasing threshold (or subsequent thresholds) it can take quite a bit of runtime for the system to reach the steady state, as the system undergoes relaxation oscillations. if you are looking specifically for the first lasing threshold, it may be easier to look further above threshold, as you are doing, and then linearly interpolate based on the observed intensities back to where the first lasing threshold should be. On Mon, Jul 8, 2019 at 6:21 PM 裴延波 wrote: Yes. The problem of using the above parameters is that no lasing takes place after 1000 000 MEEP's time step. At that time I wondered whether I used correct units for those parameters and therefore I raised question about the units of N0 and Rp. I increased N0, Rp, or sigma and I saw the emergence of lasing in my system. But I want to reproduce some results in published work so that the transform of the values of parameters from the published work to MEEP's units is required. Actually, I feel I know MEEP's units of time, frequency, length, and maybe N0 (you just told me) well, however I am so confused with others, for example, electric field strength E, coupling strength sigma and so on. I will read more and try more. Thank you very much! Yanbo At 2019-07-08 23:57:02, "Alexander Cerjan" wrote: I'm not sure what problem you're having, maybe that you're not seeing lasing. One of the potential problems with using real units is that the rates you're entering might be quite long compared with MEEP's time step, so long simulation times may be required to see lasing as the gain medium is initialized with all of the atoms in the lower energy state, which are then slowly pumped to the upper energy state. On Sat, Jul 6, 2019 at 10:59 AM 裴延波 wrote: Dear Mr. Cerjan, Thanks for your kindly and detailed reply. I feel that I have understood what you said. However I am not sure I treated coupling strength sigma correctly. For example, there are parameters for four-level gain atoms adopted from the reference Phys. Rev. Lett. 2000, 85, 70 as follows. Transition rates: freq_21=6e14 Hz (omega_21=2*pi*6e14) rate_32=1e13 Hz rate_21=1e9 Hz (tao_21=1e-9 s) rate_10=1e11 Hz gamma_21=1/tao_21+2/tao_2=9e13 Hz (tao_2=2.18e-14 s) Pumping rate Rp=1e7 Density of gain atom N0=5.5*6.02e23 (per cubic meter) coupling strength sigma_21 gamma_r=1/tao_21 gamma_c=(e**2/m)*omega_21**2/(6*pi*epsilon0*c**3) sigma_21=(gamma_r/gamma_c)*e**2/m=6*pi*epsilon0*c**3/(omega_21**2*tao_21)=1e-7 here, e = magnitude of elementary charge m = mass of electron epsilon0 - dielectric constant of vacuum c = speed of light in vacuum In meep, I set length unit a=1 um. Then the above parameters are normalized as follows freq_21=6e14/(c/a)=6e14/(3e8/1e-6)=2 rate_32=1e13/(c/a)=0.033 rate_21=1e9/(c/a)=3.33e-6 rate_10=1e11/(c/a)=3.33e-4 gamma_21=9x13/(c/a)=0.3 Rp=1e7/(c/a)=3.33e-8 N0=5.5*6.02e23*(1e-9)**3=3.31e-3(because resolution=1000, the volume of each pixel is (1e-9)**3 cubic meter) As for the coupling strength, I did not normalize it and I used it as its value in SI unit(sigma_21=1e-7). I am not quite sure whether it is correct. And perhaps you may find other problems in the normalization for other parameters above. Anyway, your have helped me a lot. Thank you very much! ___ meep-discuss mailing list meep-discuss@ab-initio.mit.edu http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss ___ meep-discuss mailing list meep-discuss@ab-initio.mit.edu http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss
Re: [Meep-discuss] the unit of N0 and Rp in the multiLevel susceptibility
Yes. The problem of using the above parameters is that no lasing takes place after 1000 000 MEEP's time step. At that time I wondered whether I used correct units for those parameters and therefore I raised question about the units of N0 and Rp. I increased N0, Rp, or sigma and I saw the emergence of lasing in my system. But I want to reproduce some results in published work so that the transform of the values of parameters from the published work to MEEP's units is required. Actually, I feel I know MEEP's units of time, frequency, length, and maybe N0 (you just told me) well, however I am so confused with others, for example, electric field strength E, coupling strength sigma and so on. I will read more and try more. Thank you very much! Yanbo At 2019-07-08 23:57:02, "Alexander Cerjan" wrote: I'm not sure what problem you're having, maybe that you're not seeing lasing. One of the potential problems with using real units is that the rates you're entering might be quite long compared with MEEP's time step, so long simulation times may be required to see lasing as the gain medium is initialized with all of the atoms in the lower energy state, which are then slowly pumped to the upper energy state. On Sat, Jul 6, 2019 at 10:59 AM 裴延波 wrote: Dear Mr. Cerjan, Thanks for your kindly and detailed reply. I feel that I have understood what you said. However I am not sure I treated coupling strength sigma correctly. For example, there are parameters for four-level gain atoms adopted from the reference Phys. Rev. Lett. 2000, 85, 70 as follows. Transition rates: freq_21=6e14 Hz (omega_21=2*pi*6e14) rate_32=1e13 Hz rate_21=1e9 Hz (tao_21=1e-9 s) rate_10=1e11 Hz gamma_21=1/tao_21+2/tao_2=9e13 Hz (tao_2=2.18e-14 s) Pumping rate Rp=1e7 Density of gain atom N0=5.5*6.02e23 (per cubic meter) coupling strength sigma_21 gamma_r=1/tao_21 gamma_c=(e**2/m)*omega_21**2/(6*pi*epsilon0*c**3) sigma_21=(gamma_r/gamma_c)*e**2/m=6*pi*epsilon0*c**3/(omega_21**2*tao_21)=1e-7 here, e = magnitude of elementary charge m = mass of electron epsilon0 - dielectric constant of vacuum c = speed of light in vacuum In meep, I set length unit a=1 um. Then the above parameters are normalized as follows freq_21=6e14/(c/a)=6e14/(3e8/1e-6)=2 rate_32=1e13/(c/a)=0.033 rate_21=1e9/(c/a)=3.33e-6 rate_10=1e11/(c/a)=3.33e-4 gamma_21=9x13/(c/a)=0.3 Rp=1e7/(c/a)=3.33e-8 N0=5.5*6.02e23*(1e-9)**3=3.31e-3(because resolution=1000, the volume of each pixel is (1e-9)**3 cubic meter) As for the coupling strength, I did not normalize it and I used it as its value in SI unit(sigma_21=1e-7). I am not quite sure whether it is correct. And perhaps you may find other problems in the normalization for other parameters above. Anyway, your have helped me a lot. Thank you very much! ___ meep-discuss mailing list meep-discuss@ab-initio.mit.edu http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss___ meep-discuss mailing list meep-discuss@ab-initio.mit.edu http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss
Re: [Meep-discuss] the unit of N0 and Rp in the multiLevel susceptibility
Dear Mr. Cerjan, Thanks for your kindly and detailed reply. I feel that I have understood what you said. However I am not sure I treated coupling strength sigma correctly. For example, there are parameters for four-level gain atoms adopted from the reference Phys. Rev. Lett. 2000, 85, 70 as follows. Transition rates: freq_21=6e14 Hz (omega_21=2*pi*6e14) rate_32=1e13 Hz rate_21=1e9 Hz (tao_21=1e-9 s) rate_10=1e11 Hz gamma_21=1/tao_21+2/tao_2=9e13 Hz (tao_2=2.18e-14 s) Pumping rate Rp=1e7 Density of gain atom N0=5.5*6.02e23 (per cubic meter) coupling strength sigma_21 gamma_r=1/tao_21 gamma_c=(e**2/m)*omega_21**2/(6*pi*epsilon0*c**3) sigma_21=(gamma_r/gamma_c)*e**2/m=6*pi*epsilon0*c**3/(omega_21**2*tao_21)=1e-7 here, e = magnitude of elementary charge m = mass of electron epsilon0 - dielectric constant of vacuum c = speed of light in vacuum In meep, I set length unit a=1 um. Then the above parameters are normalized as follows freq_21=6e14/(c/a)=6e14/(3e8/1e-6)=2 rate_32=1e13/(c/a)=0.033 rate_21=1e9/(c/a)=3.33e-6 rate_10=1e11/(c/a)=3.33e-4 gamma_21=9x13/(c/a)=0.3 Rp=1e7/(c/a)=3.33e-8 N0=5.5*6.02e23*(1e-9)**3=3.31e-3(because resolution=1000, the volume of each pixel is (1e-9)**3 cubic meter) As for the coupling strength, I did not normalize it and I used it as its value in SI unit(sigma_21=1e-7). I am not quite sure whether it is correct. And perhaps you may find other problems in the normalization for other parameters above. Anyway, your have helped me a lot. Thank you very much! ___ meep-discuss mailing list meep-discuss@ab-initio.mit.edu http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss
[Meep-discuss] the unit of N0 and Rp in the multiLevel susceptibility
Dear Meep users and developers I am using multilevel-Atomic Susceptibility of MEEP to do some simulation. I wonder what is the unit of N0 - total number of gain atoms in the system and Rp - pumping rate. In the code of the tutorial documents(Multilevel_atomic Susceptibility), N0 is equal to 37 and Rp is equal to 0.0051. However the reference [Opt. Express 2011, 20,474] says that N0 is in in the order of magnitude of 1e23 /m3 and Rp is in the order of magnitude of 1e8 /s. According to above data, N0 seems to be normalized. But I cannot find the document that explains how to normalize. As for Rp, if we normalize Rp with (c/a=3e8/1e-6=3e14), the result is about 1e-6 which deviates a lot from the value in the tutorial document 0.0051. Thanks a lot in advance for any help and also meep developers for this excellent tool Yanbo Pei ___ meep-discuss mailing list meep-discuss@ab-initio.mit.edu http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss