In this example, we demonstrate a workflow for simulating the L-I curve of an InGaAsP-InP multiple-quantum-well (MQW) edge-emitting laser (EEL). Calculated L-I curves and lasing frequencies at different temperatures are compared to results reported in the literature. We recommend upgrading the software to version 2022 R1 or later when testing this example.
Overview
Understand the simulation workflow and key results
FDE (or FEEM), MQW, and INTERCONNECT (TWLM) are used to model a Fabry-Perot InGaAsP-InP MQW ridge laser using scripts. L-I curve and spectrum of the laser are calculated at different temperatures. The 1D TWLM laser model is suitable for simulating lasers with traveling-wave geometry, such as edge-emitting lasers. The MQW solver is suitable for simulating material gain in III-V semiconductors with the zincblende crystal structure. The simulations are isothermal, suitable for lower power or pulsed lasers without pronounced self-heating at high injection currents. Simulations can be performed at different temperatures. Links to laser examples with other types of cavities, such as DFB and DBR, are included as well as a list of other laser result types not shown here.
Step 1: Optical Mode Simulation
The first step is to calculate the optical mode profile and extract the effective index and group index of the fundamental (TE) mode as well as its confinement factor for the gain medium. These are all calculated in the vicinity of the nominal target lasing frequency and are expected to be weakly frequency-dependent. This calculation is done using the FDE solver in MODE (this workflow) or using FEEM (detailed in the appendix).
Step 2: Gain Medium Simulation
Using the MQW Gain Solver, a 4x4 k•p calculation of the electronic bandstructure in the MQW gain medium is performed and the electronic bandgap, stimulated, and spontaneous emission spectra are extracted as a function of carrier density and temperature. MQW is a part of the multiphysics package (along with CHARGE, FEEM, and other products) and can be run within the FE-IDE environment with a graphical user interface. MQW can also be used through script commands in which case it can be run from any product. In this case, it can be run either in FDE/FEEM (needed in the previous step) or INTERCONNECT (needed for the following step). The MQW GUI is included in the main workflow in this example, while the MQW script commands method is included in the Appendix.
Due to high barrier thickness, QWs can be considered uncoupled. In this case, calculations can be performed for a single QW to reduce simulation time. At the end of calculations, the results are scaled to represent the full number of QWs. The electric field is set to zero, which is a good approximation for the forward bias laser diode near and above the threshold.
Step 3: 1D Traveling-Wave Laser Simulation
Using the TWLM element running in INTERCONNECT a time-domain 1D laser simulation is performed using a sweep over different drive currents. The optical power emitted in steady-state may then be plotted as a function of drive current to generate the L-I curve. The spectrum can be plotted at different times.
Run and results
Instructions for running the model and discussion of key results
Step 1: Optical mode calculation
- Launch MODE and change the directory to where the application files are saved.
- Run the script [[input.lsf]]. This will initialize input data and simulation configuration parameters that are required for all three steps. This data will be saved in [[Piprek2000OQE]], which will be called later on by scripts in different steps when needed.
- Run the script [[runFDEmaterial.lsf]]. This will calculate the refractive index of the materials as a function of frequency and import it into the optical simulation.
- Run the script [[runFDE.lsf]]. This will calculate the effective index as a function of frequency, group index, and confinement factor. The script requires the safe-mode to be turned off.
The effective and group indices, as well as the confinement factor used in the subsequent steps are stored in wgSweep.neff, wgSweep.ng , and wgSweep.confinement_factor , respectively. These results will also be stored in the file [[Piprek2000OQE_opt.json]].
Step 2. Gain medium calculation
- Launch MQW solver, which will open a FE IDE with an MQW solver object in it, and change directory to where the application files are saved.
- (Optional step, if alloy composition is changed in input.lsf) Open template project file mqw.ldev in FE IDE. Delete the well and barrier material and create new materials for new alloy composition. This can be done by opening Electrical and Thermal database, selecting GaInAsP, selecting "create semi" in the lower left corner and setting the name and alloy composition x and y. Save the file and open runMQW.lsf. Set the names of new well and barrier materials (both global names and Ct names) in the variables at the top of runMQW.lsf file.
- Run the script [[runMQW.lsf]].
This script file will first open [[mqw.ldev]] template file that has InGaAsP material properties for wells and barriers and MQW solver object predefined. The layer stack is defined and visualized in the MQW solver object edit window. The MQW solver object does not require a separate geometry and simulation region definition, as everything can be defined within the MQW solver object edit window. The script file will then modify certain material and solver properties as defined by the user in file [[input.lsf]], save the project file under a new name (to avoid modifying the template file [[mqw.ldev]]), and run the gain simulation at the given temperature and for multiple carrier densities. At the end, it will plot spontaneous and stimulated emission (gain), as well as peak gain frequency as a function of carrier density as shown below. These results are also stored in the [[Piprek2000OQE_mqw.json]].
The following plots represent spontaneous emission and stimulated emission vs frequency at different carrier densities (at 293K).
Gain peak frequency as a function of carrier density will be determined by the band gap-filling effect and the bandgap shrinkage effect due to free carrier density. The band gap-filling effect causes an increase in peak frequency, while the bandgap shrinkage effect causes a decrease. Both of these effects are included in the simulation, where for the shrinkage effect the user should define a shrinkage constant as done in file runMQW.lsf. As a result of these two effects there is a net increase in gain peak frequency as shown in the figure below:
The temperature will also affect the peak position by modifying the material bandgap. This is taken into account by enabling the temperature model for the bandgap in material properties in the ldev project file and setting suitable temperature coefficients as done in file [[runMQW.lsf]].
Step 3. 1D Traveling-Wave Laser Simulation
- Launch INTERCONNECT and change the directory to where the application files are saved.
- Run the script [[runTWLM.lsf]].
- Right-click the sweep, select "power", and then visualize. This is the L-I curve for the laser operating at 293K (20C). The spectrum of the laser can also be plotted by visualizing "spectrum". For information on how to obtain results for other temperatures, please refer to update the model with your parameters section.
The [[runTWLM.lsf script]] loads the results from the previous two simulations as well as the INTERCONNECT template file. This script will calculate the radiative and non-radiative recombination rates, create recombination files and load those parameters into the TWLM. It will also populate the other required parameters for the TWLM element, root element and parameter sweep. This new configuration will then be saved under a new file name to avoid modifying the template file [[twlm.icp]]. It will then run a very short simulation in order to allow the TWLM element to perform the gain and spontaneous emission fitting. Once the fits are performed the results are stored in the TWLM to prevent refitting them in each iteration of the sweep. The diagnostic fit results are also saved as datasets in the file called [[Piprek2000OQE_293.ldf.]] Finally, the sweep is launched.
Since the sweep can be parallelized, in order to shorten the simulation time it is possible to configure resources in the Simulation menu to use multiple cores configuration. The easiest way is to simply add several resources (e.g. 3-4), depending on how many cores are available, with default options (localhost for your local machine, 1 process per resource, and capacity 1). Alternatively, only one resource can be added with a capacity equal to the number of parallel processes to be used. The number of threads per process is set to 1 in the root element properties in the INTERCONNECT project file, as this is most optimal.
The figure below shows the laser spectrum in steady-state at 293K with a driving current of 0.2 A.
The figure below shows a comparison between the simulated L-I curve at two temperatures and results reported in Reference 1. Also, the threshold currents, threshold carrier densities, slopes, and peak wavelengths from the simulation as well as those from Reference 1 are presented in the table below.
Simulation | Reference 1 | |
Threshold Current [A] at 293 K | 0.113 | 0.114 |
Slope [W/A] at 293K | 0.224 | 0.225 |
Peak Wavelength [nm] at 293K | 1536.6 | 1536 |
Threshold carrier density [1/m3] | 1.58e24 | 1.6e24 |
Threshold Current [A] at 333 K | 0.245 | 0.247 |
Slope [W/A] at 333K | 0.192 | 0.19 |
Peak Wavelength [nm] at 333K | 1558 | 1555 |
Threshold carrier density [1/m3] | 1.93e24 | 2e24 |
Important model settings
Description of important objects and settings used in this model
Below is a subset of important model settings. Information about other settings can be found in the comments in [[input.lsf]] script file.
Multi-quantum-well region in FDE
Because the overall FDE domain is much larger than the MQW thickness we include the MQW domain as a single chunk of material with a refractive index averaged over different quantum wells and barriers. This makes the simulation much faster at a reasonable accuracy since there is no need to create a fine mesh to resolve separate quantum wells.
Refractive indices in FDE
Values of refractive indices for InGaAsP layers are taken from [2] for InP lattice-matched material. This is a good approximation given the lack of data in the literature for specific molar fractions used in this example.
Frequency range in MQW
Since the spontaneous recombination rates are calculated based on the integral of the spontaneous emission spectra, the frequency range over which the MQW solver is run, given by mqw.lambdamin and mqw.lambdamax , must be wide enough to capture most of the region where spontaneous emission is significant. This ensures that we capture all the spontaneous emission in our estimate of the recombination rates. The number of frequency points is set with mqw.numfreq and the results are then upsampled using spline interpolation to produce smoother curves for easier fitting in TWLM in INTERCONNECT. To avoid introducing interpolation errors mqw.numfreq should be high enough.
Material properties for MQW
Since accurate ternary and quaternary semiconductor material properties are not always available and may be process dependent it is a good practice to tweak and fit some of the properties to match the measurement. In this example specifically, we override the default value of the band gap temperature dependence model (parameter mqw.dEg_dT) and include carrier density dependence of the band gap (band gap shrinkage parameter mqw.dEg_carrier) from reference [1]. This is implemented in runMQW.lsf file. The material assumed in the master input.lsf file is GaInAsP, which is set in mqw.ldev and hard coded in runMQW.lsf. Users can set layer thicknesses, molar fractions, strain, and some other parameters from input.lsf by setting the corresponding options in the mqw struct variable.
Transverse wave vector range in MQW
This wave vector is in the plane of the quantum wells and it is important to use a sufficiently large part of the Brillouin zone to get accurate carrier density in the quantum wells as a sum over the transverse wave vectors. The larger the transverse wave vector the larger the carrier energy in the quantum well and the smaller the probability of occupation of that energy level. With larger temperature higher transverse wave vectors should be included. The value of 40% of the Brillouin zone and 151 points is set in mqw.ldev template file.
Uncoupled well approximation in MQW
If the barriers in the MQW region are thick, for example more than 5 nm, it is a good approximation to consider quantum wells uncoupled by setting mqw.uncoupled_wells = true in input.lsf . In this case it is sufficient to solve a structure consisting of a single quantum well only, which speeds up the simulation significantly, while producing similar gain and spontaneous emission curves per quantum well.
Optical loss in TWLM
Optical loss in the laser model in INTERCONNECT consists of two components: constant part (e.g. scattering loss) and carrier density dependent part in the active layer (e.g. free carrier absorption). Both of these parts can be set in input.lsf through options twlm.mode_loss_constant and twlm.mode_loss_density_coefficient . At higher temperatures, the threshold carrier density increases due to smaller gain and larger non-radiative recombination. Parameter twlm.mode_loss_density_coefficient then causes higher optical loss at higher temperature.
Nonradiative recombination rates in TWLM
SRH, Auger, and spontaneous recombination rates are very important in the overall balance for the laser dynamics. SRH and Auger recombination rates are calculated analytically in script, using well known model equations, based on the average charge density in the MQW region. Since most of the density is in the quantum wells and only a small portion is in the barriers we scale the average input density to get the density in the quantum well and use that in the calculation of the recombination rates. There is a fitting factor mqw.qw_density_correction in input.lsf where users can adjust the ratio of the density in the wells to the density in the barriers to obtain a better agreement of the threshold current. Spontaneous recombination rate is obtained from mqwgain solver, while the parameters for the SRH and Auger recombination, such as lifetimes and Auger coefficients can be set through the twlm struct variable in input.lsf .
Leakage current in TWLM
The leakage current is that component of the input current that is not injected into the MQW region to contribute to lasing, but leaks through the device. The parameter twlm.current_injection_efficiency in input.lsf is used to include this effect . User should estimate the value of this parameter (more details on this can be found in taking the model further section).
Gain and spontaneous emission curve fitting in TWLM
TWLM uses a sophisticated fitting algorithm to include the frequency and density dependence of gain and spontaneous emission coefficients into the time-domain simulation. Users can check the result of fitting and adjust the fitting options if necessary to make sure there are no unphysical peaks in the fitted gain curves that can produce fake lasing thresholds at wrong frequencies. Specifically, the fitting algorithm assumes periodic boundaries, such that the first and the last frequency point have the same gain and spontaneous emission. The rolloff parameter twlm.fit_rolloff in input.lsf controls the percentage of the total frequency range on both ends and is used to accommodate these periodic boundary conditions. Increasing this value may help obtain a better match at the ends of the frequency range.
Updating the model with your parameters
Instructions for updating the model based on your device parameters
The parameters needed to update your model are made available in the input.lsf file.
Changing the number of MQW layers
The variable common.n_wells is used to change the number of quantum wells. All scripts need to be run afterwards.
Changing the gain region length
The variable common.active_region_length is used for this. input.lsf and runTWLM.lsf need to be run afterwards.
Changing the gain region width
This is changed through common.active_region_width. All scripts need to be run afterwards.
Changing the thickness of MQW layers
Thickness of the quantum wells and barriers can be set through common.well_thickness, common.barrier_thickness, common.edge1_barrier_thickness, and common.edge2_barrier_thickness, where common.edge1_barrier_thickness and common.edge2_barrier_thickness are the thicknesses of the bottom and top barrier.
When changing the thickness of quantum wells and barriers, the center frequency of the INTERCONNECT simulation and the center frequency of the FDE simulation may need to be modified to include the estimated lasing frequency. This is due to the quantization effects of energy levels in the quantum wells which depend on the thickness. The center frequency can be changed through parameter common.centre_frequency. Similarly, the frequency range for the mqw solver may need to be adjusted through parameters mqw.lambdamin and mqw.lambdamax.
After making these changes all steps need to be rerun.
Changing the alloy composition of MQW layers
Alloy composition of the quantum wells and barriers can be set through mqw.x_well, mqw.y_well, mqw.x_barrier, and mqw.y_barrier.
When changing the alloy composition of quantum wells and barriers the center frequency of the INTERCONNECT simulation and the center frequency of the FDE simulation may need to be modified to include the estimated lasing frequency. This is due to the change of band gap in the quantum wells and barriers. The center frequency can be changed through parameter common.centre_frequency. Similarly, the frequency range for the mqw solver may need to be adjusted through parameters mqw.lambdamin and mqw.lambdamax.
Strain in quantum wells and barriers also may need to be changed in input.lsf.
After making these changes all steps need to be rerun.
Changing the band gap dependence on temperature and carrier density
Band gap dependence on temperature and carrier density can be set through options mqw.dEg_dT and mqw.dEg_carrier. After this change MQW and TWLM steps should be rerun.
Changing temperature
First, change common.temperature. Then modify other temperature dependent input parameters in input.lsf according to your device behavior:
- common.centre_frequency
- twlm.li_current
- twlm.current_injection_efficiency
Input file input.lsf is set up for 293 K by default and it also has predefined values for 333 K (these are commented out). All scripts need to be run afterwards.
Changing the facet reflectivity of the laser cavity
The left and right facet reflectivity of the FP cavity are set through twlm.facet_reflectivity_left and twlm.facet_reflectivity_right. input.lsf and runTWLM.lsf need to be run afterwards.
Taking the model further
Information and tips for users that want to further customize the model
- Carrier-dependent loss due to free-carrier absorption can be calculated in MODE or FDTD. TWLM can then be updated with the calculated results.
- The spontaneous emission coupling factor is set to 0.01 in this example. Spontaneous emission coupling factor can be calculated either using FDTD or based on the numerical aperture of the waveguide. TWLM can then be updated with the calculated results.
- To take leakage current into account, laser leakage current at different drive currents can be calculated using 2D/3D CHARGE simulation.
- This Fabry-Perot laser example can be extended to a DFB laser , DBR laser or a Ring Vernier laser following instructions in the linked example.
- Additional laser metrics, not shown here, can be calculated either as a post-processing step on the laser spectrum, such as side mode suppression, or directly visualized from the TWLM solver, such as longitudinal position and time-dependent charge, photon density, gain, mode amplitude, and recombination rate profiles.
- To change the gain material all the scripts and project files need to be adjusted to include new materials and updates to parameters such as recombination coefficients, activation energy, and lasing frequency. If you need further assistance with these changes please contact Lumerical support.
Additional resources
Additional documentation, examples and training material
Related publications
- J. Piprek, P. Abraham, and J.E. Bowers,“Self-Consistent Analysis of High-Temperature Effects on Strained-Layer Multiquantum-Well InGaAsP–InP Lasers”, IEEE Journal Of Quantum Electronics, Vol. 36, No. 3, March 2000, pp. 366-374.
- S. Seifert and P. Runge, “Revised refractive index and absorption of In(1-x)Ga(x)As(y)P(1-y) lattice-matched to InP in transparent and absorption IR-region”, Optical Materials Express, Vol. 6, No. 2, February 2016, pp. 629-639.
See also
Related Ansys Innovation Courses
Appendix
Additional background information and theory
Optical Mode Simulation with FEEM
As an alternative option, the laser structure can be created in the Finite Element (FE) IDE for simulation using FEEM. FEEM solver can be used to calculate the optical mode profile and extract the effective index and group index of the fundamental (TE) mode as well as its confinement factor with respect to the gain medium. These are all calculated in the vicinity of the nominal target lasing frequency and are expected to be locally weakly frequency dependent. Once the mode calculation is done, the rest of the steps are identical. Hence, alternatively for step 1:
Step 1: Optical mode calculation
- Launch FEEM and change directory to where the application files are saved.
- Run the script file input.lsf.This will initialize input data and simulation configuration parameters that are required for all the three steps. This data will be saved in Piprek2000OQE.json which will be called later on by scripts in different steps when needed.
- Run the script runFEEMmaterial.lsf. This will calculate the refractive index of the materials as a function of frequency and import it into the optical simulation.
- Run the script runFEEM.lsf. This will calculate the effective index as a function of frequency, group index, and confinement factor.
The effective and group indices, as well as the confinement factor used in the subsequent steps are stored in wgSweep.neff, wgSweep.ng , and wgSweep.confinement_factor , respectively. These results will also be stored in the file Piprek2000OQE_eigenmode.json .
runMQW.lsf script in Step 2 can either run in FEEM or INTERCONNECT.
Gain medium simulation using mqwgain script command
It is also possible to use mqwgain script command instead of MQW GUI to perform the second step for obtaining stimulated and spontaneous emission spectra:
Gain medium calculation (replacement for step 2)
- While still in MODE, open and run the script file runMQW_mqwgain_script_command.lsf to calculate electronic bandgap, stimulated, and spontaneous emission spectra as a function of carrier density and temperature. Alternatively, this script can be run from INTERCONNECT.
This script first loads the results from the eigenmode simulation if necessary, as the effective index will be required for the ensuing calculations. It will then set up the layer structure, calculate the material properties for the MQW gain region using the buildmqwmaterial script command and customize some of the properties using the values from the reference, and then run the MQW solver's mqwgain script command to calculate the gain curves, spontaneous emission spectra, and bandgaps as a function of temperature and the average carrier density in the gain region. These results are also stored in a Lumerical json file Piprek2000OQE_mqw.json .
Spontaneous emission and stimulated emission vs frequency at different carrier densities are the same as the ones simulated with MQW GUI.