DFB laser simulation with user defined gain curves


I have a few questions regarding the gain fitting feature, that is described here.

  1. Do I need to use modal or material gain coefficients to feed to the mczfit function?
  2. Does the output .mcfdb file store values of carrier densities from original .txt file? Are they used later somehow, when I feed the .mcfdb file to TWLM model in INTERCONNECT? The reason I am asking, is that because I have experimental gain curves, but they are plotted for different current densities, not carrier densities. Do I need to recalculate current densities into carrier densities before running mczfit function on my file?
  3. In the example you suggest, I tried to apply some amplitude in the DC source and run the simulation in the .icp file, however the output power is 0… Is it supposed to be like this?
  4. What are the most important parameters of my own TWLM model to check when working with custom gain? I tried to generate the .mcfdb file and feed it to my own laser model, however so far the output does not look like a nice laser spectrum.

I attach my source gain file, the txt file I feed to the mczfit function (I made it manually from the source Excel file) and the .mcfdb file I generated with your script and tried to feed to my model. Could you please check if they make sense?

smart_gain_material.txt (157.8 KB)
Gain fitting.zip (1.2 MB)

Update: I’ve made it work, but now I get some fitting artifact in the low frequencies, which leads to excitation of additional mode in the spectrum. How can I get read of that boundary effect?
Fitted gain spectrum:
14 fitted gain spectrum

Measured gain spectrum (this one looks correct)
15 measured gain spectrum

Output laser spectrum:
16 spectrum

Updated files below:
dfbLaser_ver6_Smart_gain_correct_N.icp (384.8 KB)
smart_gain_material_ver3.dat (190.3 KB)

1 Like

Hi @a.zozulia,

Great to see you were able to import the correct gain profile. Sorry for a bit late reply.

I see you fixed some issues in your previous version (2) of the gain file, such as having some quotation marks in the first and third row and having carrier density in the units 1/cm^3 instead of 1/m^3. Just for future reference, here is the description of the structure of the gain file:

The fitted gain artifact near the simulation band edges is expected, since the fitting algorithm uses periodic boundary conditions, so it tries to make gain at the first and last frequency equal. This is usually not a problem in the laser simulation. But some tweaking can be done, such as reduce the rolloff input argument in the mczfit function, which specifies the percentage of simulation bandwidth over which this rolloff will happen. Another thing is to increase the simulation bandwidth (sample rate input argument to mczfit function and a similarly named option in INTERCONNECT root element). This will make gain curves more symmetric and there will be less artifical rolloff (but the simulation will take longer).

However, in this case you should probably also try to simulate for higher input powers, in which case this spurious mode may vanish (currently the power is around threshold).

I noticed that the average carrier density (measured by OSC_1) is more than 2e25 near threshold, which is the highest carrier density in the input gain profile, so simulation probably won’t work very well. It is best to check all other parameters and make sure they are reasonable (such as recombination rates). Once you get reasonable LI curve, hopefully the spurious mode will not be a problem anymore.

You can use both modal and material gain. The difference between them is just that the modal gain is material gain multiplied by the mode confinement factor. So if you use modal gain, you should set the mode confinement factor to 1 (since it is already included), while if you use material gain you should define the actual mode confinement factor.

Imported gain must be defined as a function of carrier density, so you have to be able to convert your experimental current into carrier density, if your measured gain is a function of current.

This is a selection of some other important laser parameters:

Nonradiative coefficient C (cubic) is Auger recommbination, nonradiative coefficient A (linear) is SRH (trap assisted) recombination, and radiative coefficient B is usually spontaneous recombination rate. Note that you need to have nonzero radiative recombination, otherwise there will be no lasing (there is no “spark” to cause lasing).

Thank you very much for the elaborated answer.

  1. Could you elaborate on this, what might go wrong?

Is there any rule of thumb to check the recombination rate? I actually think that the value of 2e+8 for the linear radiative coefficient is quite reasonable, it should give threshold current on the order of few mA, if I consider N transparency around 2e+24. However my LIV curve looks indeed suspicious, it’s like my threshold current is 40 mA, if looking to that curve

Do you mean, increasing the current from DC source? Well, I tried up to 100 mA, and I’m not sure if operating it higher is a good idea, I guess it’s better to aim for lower threshold current

I also tried to set the length to 1 mm, as we have experimental data for DFB lasers of this length. There are a few things that confuse me: 1) without gain compression I get at output several modes lasing, not even 2, but 4 modes at 100 mA current, while in experimental data it was single mode, and this is what it’s supposed to be with lambda/4 phase slip in the grating. 2) with gain compression the splitting is not so visible, though I have impression that the line is a bit broader than it should be, but more importantly, it’s lasing at 197.1 THz and output power is less than 1 mW, while in experiment it was 193.4 mW and around 10 mW at 100 mA injection current. I would expect the simulation to outperform the real experiment, so something feels wrong here. Maybe indeed I need more realistic recombination coefficients?

dfbLaser_ver6_Smart_gain_correct_N.icp (431.8 KB)

Hi @a.zozulia,

I managed to get simulation results much closer to measurement, after making a few modifications and improvements:

  • Increased sampling rate to 2e13. Now the bandwidth is 20 THz and this makes imported gain curves more symmetric, so that the artifacts due to enforcing periodic boundary conditions in the fitting algorithm are smaller. This makes the simulation time longer.
  • Made the gain fitting parameters more stringent (like in our MQW FP laser example):
  • Removed the lowest density column from the gain file. The gain profile for this density looked pretty noisy, which seemed to create some numerical instability issues at lower currents (e.g. 0A).
  • Set gain compression factor to zero. Your measured gain curves may already include some gain compression effects. In any case it seems value of 0 works well. You can play with it further if you want.
  • Set linewidth enhancement factor to 0. This factor causes index perturbation with carrier density, so the Bragg wavelength gets changed. I am not sure what would be the best value here, but value of zero works well in terms of the peak position compared to measurement.
  • Set mode confinement factor to 1. This confinement factor multiplies material gain, but since my guess is you imported modal gain, this already includes mode confinement (modal gain is a product of material gain and mode confinement factor).

This is the results of the LI sweep I am getting:
When you run the LI sweep it is best to do it in parallel using at least 4-5 processors (this can be set in Simulation menu/Resource Configuration by simply adding a few resources). One LI point may take around 10 minutes (because of the increased simulation bandwidth and increased simulation time from 10 ns to 15 ns, although I think 10 ns may also work in terms of ensuring reaching the steady state).

This is how the spectrum looks at highest current:

This is how the fitted gain curves look:

Here are the files I used:
dfbLaser_ver6_Smart_gain_correct_N.icp (443.8 KB) smart_gain_material_ver3_no_lowest_dens.dat (196.4 KB)

Please note that I loaded gain text file directly in TWLM instead of using the fit function. This will cause refitting every time, unless you switch the “load gain from file option” in Gain section to false after the first time you run and fit and save the project file (then it will reuse). I recommend you continue using the fit function with the changes mentioned above. You should be able to get the same answer. Although the fitting function also has to be rerun if you change, for example, center frequency or sample rate or fitting parameters and those should be the same as you set in INTERCONNECT icp file.

Thank you very much! I have a question: how realistic is it to set all recombination terms to 0 except from the first one? And how realistic is this number, 2.5e+8, can it vary significantly depending on the active layer design?

To me it seems that presence of additional terms, especially the cubic non-radiative, influences the simulation a lot. Larry Coldren’s handbook suggests the following model:

and A is defect nonradiative recombination, B is spontaneous emission and C is Auger recombination. However in most of your examples there’s only linear radiative term present, and I am wondering, if it’s a good idea to replace all coefficients by the linear one? Which physical mechanism of recombination does it actually represent?

The radiative recombination coefficients contribute to the change in carrier density in the same way as nonradiative in the TWLM model in INTERCONNECT (i.e. Rsp = Ar * N + Br * N^2 + Cr * N^3, Rnr = Anr * N + Bnr * N^2 + Cnr * N^3). Typically radiative is defined only as Rsp = Br * N^2 as in Coldren’s book, by setting Ar = Cr = 0. Although some references define it as Rsp = Ar * N. The radiative Rsp and nonradiative Rnr contributions are summed up. In addition, the radiative recombination determines the amount of spontaneous emission power in the total laser power when multiplied with spontaneous emission factor (this factor tells the solver how much of the total spontaneous recombination is coupled into the waveguide mode of the laser).

We do have some examples where only Ar is nonzero and the reason is that we based the examples on published references where such model is used. The reason this sometimes work is that the carrier density in lasers is pinned at threshold and above the threshold it does not change much. So the carrier density dependence of recombination rate is not as important if you fit Ar properly at the expected threshold density.

However, in the MQW FP laser example we define Br (for spontaneous emission) and Anr (for SRH recombination) and Cnr (for Auger recombination). The only difference is that in that example we defined recombination as a table instead of coefficients:

But feel free to use coefficients in your case since that may be easier.

These coefficients do depend on material and active layer design and the user has to define them. It is best to define some reasonable values for your design and then additionally tweak the values to fit the measurement (e.g. threshold current). You can find the values we used in the MQW FP example (InGaAsP) in the cited reference in that example.

Thank you. But in the table I just see 2 linear coefficients for each carrier density? How do they depend on Br, Anr and Cnr?

Approximately, the radiative column is 1/tau = Br * N and nonradiative is 1/tau = Anr + Cnr * N^2. But there are some additional details since a portion of the radiative contribution should be added to nonradiative. More details on that can be found here https://kx.lumerical.com/t/how-to-choose-the-factor-for-the-calculations-of-radrecombinationrate-and-nonradrecombinationrate/69180 and in the script file runTWLM.lsf (if you look for variables radRecombinationRate and nonradRecombinationRate).

You can also define them as coefficients instead of table and not worry about the detail mentioned above for now. Those details mainly affect the level of spontaneous emission noise in output power.

Thank you! It’s more clear now.

I have additional question which is not directly on topic, but maybe you can help with it as well. If you remember, I started with a question, that in my experimental data I have gain dependency on current density, while Lumerical needs gain curves vs carrier density. To do the recalculation, I used a simple polynomial fit with coefficients from Coldren, which I believe should give a good approximation for the stable state below threshold, when dN/dt = 0, and there is no stimulated emission, like the following paper says:


But I think that for cases above threshold this solution does not work anymore, because carrier density and gain become constant.

Does this mean, that when I feed several gain curves to Lumerical, the highest curve should correspond to threshold carrier density value?

Could you maybe recommend a more accurate approach which would help me to adjust carrier densities for my gain curves? I feel that another way is to go from definition of gain through quasi-Fermi levels separation, and relate it to the current density, but maybe you know a simpler approach?

It seems the approach from Coldren that you cited is reasonable, especially since there is not much stimulated emission in the usual methods of measuring modal gain through amplified spontaneous emission. If recombination coefficients are unknown you can find them using some reasonable starting values and then fitting the threshold current. You just have to recalculate the carrier density and refit gain curves vs carrier density in TWLM for every new set of coefficients.

The traveling wave laser model works by interpolating the imported gain curves at the density in the active layer. This density will depend on the internal balance between different recombination processes. The imported curves should just include enough different densities to cover the entire range of interest (from absorption at lower densities to above threshold gain) to ensure good interpolation.

You can check whether you included densities above threshold in the imported gain by plotting the carrier density when the simulation is done. You can plot the carrier density from the oscilloscope attached to the bottom port of TWLM. This is the spatially averaged density in the active layer. You can also plot 1D density profile by enabling the corresponding diagnostic output in TWLM options (in this case don’t forget to define downsampling factor to avoid saving at all time steps and create a huge file). This way you can also check whether your current vs carrier density assumption holds after the simulation, since you can plot carrier density as a function of current in sweep.

Thank you very much!

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.