Re: [Meep-discuss] question about dispersive complex epsilon for gain

2020-07-25 Thread Alexander Cerjan
as best i can tell, you've set the dimension of your structure to 3, but
the size in the x and y directions to be a single pixel. This is, depending
on what you're trying to do, a somewhat odd situation, because you have no
absorbing boundary condition in the x-y plane, only for waves which are
propagating in the + or - z direction. As such, there will always be
"infinite-Q" modes in your system, which correspond to waves propagating
below the light line in the x-y plane. Even if the slab is the same
dielectric as the surrounding vacuum, the pml in the z-direction won't
absorb waves travelling entirely in the x or y directions. So, these states
will see the gain, and grow exponentially, as there is nothing to absorb
them. So yes, if I understand what you've set up correctly, any gain > 0
will yield divergent behavior.

how to fix this? depends on what you want to do. If you're not trying to
simulate a 3D system, you should change the dimensionality of your system.
If you are trying to simulate a 3D system, which has bound modes below the
light line, then you're always going to see lasing for any gain > 0,
because that is what is physically expected.

On Sat, Jul 25, 2020 at 11:40 PM 裴延波  wrote:

>
> 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,
>> 

Re: [Meep-discuss] question about dispersive complex epsilon for gain

2020-07-25 Thread 裴延波


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=pml_layers,
 

Re: [Meep-discuss] question about dispersive complex epsilon for gain

2020-07-25 Thread 裴延波
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

Re: [Meep-discuss] question about dispersive complex epsilon for gain

2020-07-25 Thread 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