User Tools

Site Tools


qcl:input_file

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
qcl:input_file [2020/06/23 11:03]
thomas.grange [Simulation parameters]
qcl:input_file [2023/01/05 10:07] (current)
thomas.grange [Scattering processes]
Line 3: Line 3:
  
 The structure to be simulated as well as all simulation parameters have to be specified in an XML file which can be edited by the users. The structure to be simulated as well as all simulation parameters have to be specified in an XML file which can be edited by the users.
-The contents of such a file, e.g. ''​THz_QCL_GaAs_AlGaAs_Fathololoumi_OptExpress2012_10K.xml'', ​are described in the following.+The contents of such a file are described in the following
 +More advanced and optional features are also described in the [[qcl:​advanced_settings]] page.
  
 ==== General syntax ==== ==== General syntax ====
Line 104: Line 105:
  
    <​y_axis>​    <​y_axis>​
-        <​h>​0</​u> <!-- (hkl) are the Miller indices of the plane perpendicular to the y direction. --> +        <​h>​0</​h> <!-- (hkl) are the Miller indices of the plane perpendicular to the y direction. --> 
- <​k>​1</​v+ <​k>​1</​k
- <​l>​0</​w+ <​l>​0</​l
-   <​y_axis>​+   </y_axis>
   </​Orientation>​   </​Orientation>​
  
Line 168: Line 169:
 </​code>​ </​code>​
  
-For each material (binary, ternary alloy, quaternary alloy), any parameter from the database can be overwritten in the input file by using the ''<​Overwrite>''​ command.+For each material (binary, ternary alloy, quaternary alloy), any parameter ​calculated ​from the database can be overwritten in the input file by using the ''<​Overwrite>''​ command.
 In the example below, conduction band offsets and effective electron masses are overwritten for each of the two materials: In the example below, conduction band offsets and effective electron masses are overwritten for each of the two materials:
  
Line 194: Line 195:
 </​code>​ </​code>​
  
-Note that ''<​Overwrite>''​ has higher priority than ''<​Overwrite_Material_Database>''​ (see below).+Note that ''<​Overwrite>''​ has higher priority than ''<​Overwrite_Material_Database>''​ (see below).  
 +Also note that ''<​Overwrite>''​ will overwrite directly the material parameters of an alloy for the composition specified in the input file, while ''<​Overwrite_Material_Database>''​ will overwrite the bowing parameters.
  
 === Conduction or valence band offsets === === Conduction or valence band offsets ===
Line 386: Line 388:
  <​Amplitude_in_Z unit="​nm">​ 0 </​Amplitude_in_Z>​  <​Amplitude_in_Z unit="​nm">​ 0 </​Amplitude_in_Z>​
 </​code>​ </​code>​
 +
 +=== Diffuse interfaces ===
 +
 +The interfacial width, as defined in our paper [[https://​doi.org/​10.1103/​PhysRevApplied.13.044062|Phys. Rev. Applied 13, 044062 (2020)]], can be specified in the following way:
 +
 +<​code>​
 +   <​Interface_Roughness>​
 +      <​InterfaceWidth unit="​nm">​0.8</​InterfaceWidth>​
 +      <​Amplitude_in_Z unit="​nm">​0.12</​Amplitude_in_Z>​
 +      <​InterfaceAutoCorrelationType>​1</​InterfaceAutoCorrelationType>​ <!-- Correlation type: 0=Exponential,​ 1=Gaussian, 2 = Generalized expression with Hurst parameter -->
 +      <​Correlation_Length_in_XY unit="​nm">​8.0</​Correlation_Length_in_XY>​
 +      <​AxialCorrelationLength>​0.4</​AxialCorrelationLength>​
 +   </​Interface_Roughness>​
 +</​code>​
 +
 +Note that in this case, the axial correlation length is needed to fully specified the interface rouhgness. Otherwise, if not specified or set to zero, the standard approach for calculating interface roughness scattering is used.
 +
 +=== Threading dislocations ===
 +To be documented
  
 === Acoustic phonons === === Acoustic phonons ===
Line 396: Line 417:
  
 === Optical phonons === === Optical phonons ===
-(optional) Sometimes it might be useful to investigate the influence of the longitudinal-optical (LO) phonon interaction ​in more detail+(optional) Sometimes it might be useful to investigate the influence of the longitudinal-optical (LO) phonon interaction ​on the full NEGF simulation
-Then one can artificially tune the coupling ​strength due to LO phonons. +Then one can artificially tune the LO-phonon scattering rates (self-energies in practice, or equivalently the square of  ​the coupling to LO-phonons)
-The microscopic value of the LO phonon ​coupling strength ​is then multiplied by the scaling factor ''<​LO_Phonon_Coupling_Strength>''​.+The microscopic value of the square ​of the LO phonon ​matrix element ​is then multiplied by the scaling factor ''<​LO_Phonon_Coupling_Strength>''​.
 <​code>​ <​code>​
    <​Tune_LO_Phonon_Scattering>​yes</​Tune_LO_Phonon_Scattering>​    <​Tune_LO_Phonon_Scattering>​yes</​Tune_LO_Phonon_Scattering>​
Line 407: Line 428:
                            <​!-- 1.0 is the value of the normal calculation -->                            <​!-- 1.0 is the value of the normal calculation -->
 </​code>​ </​code>​
 +A value of 1.0 will have no effect, while larger (smaller) values will increase (decrease) the LO-phonon self-energy proportionally respectively.
  
 === Charged impurities === === Charged impurities ===
Line 435: Line 457:
   <!-- (model #3 only) -->   <!-- (model #3 only) -->
  
-  <​Phenomenological_Electron_Temperature>​ no </​Phenomenological_Electron_Temperature>​ 
- 
-  <​Self_consistent_Electron_Temperature>​ no </​Self_consistent_Electron_Temperature>​ 
 </​code>​ </​code>​
 <​code>​ <​code>​
Line 449: Line 468:
 Alloy scattering can be considered using the following command. Alloy scattering can be considered using the following command.
 <​code>​ <​code>​
-  <​Alloy_scattering>​ yes </​Alloy_scattering>​+  <​Alloy_scattering>​yes</​Alloy_scattering>​
 </​code>​ </​code>​
 Note that alloy scattering is only considered for the material specified by <​Material_for_scattering_parameters>​.  ​ Note that alloy scattering is only considered for the material specified by <​Material_for_scattering_parameters>​.  ​
Line 455: Line 474:
 By default the following alloy squared matrix element for a zinc-blende ternary $A_{x}B_{1-x}C$ is considered: By default the following alloy squared matrix element for a zinc-blende ternary $A_{x}B_{1-x}C$ is considered:
 $$  $$ 
-\vert \langle \alpha,k_0 \vert H_{\text{alloy}} \vert \beta,k_0+k \rangle\vert^2 = \int dz \frac{x(1-x) a^3 \Delta E_c}{4} \vert \phi_{\alpha}(z) \phi_{\beta}(z) \vert^2+\vert \langle \alpha,k_0 \vert H_{\text{alloy}} \vert \beta,k_0+k \rangle\vert^2 = \int dz \frac{x(1-x) a^3 (\Delta E_c)^2}{4} \vert \phi_{\alpha}(z) \phi_{\beta}(z) \vert^2
 $$  $$ 
-where $\Delta E_c$ is the conduction band offset between the binaries ​$AC$ and $BC$.+where $\Delta E_c$ is the conduction band offset between the binary compounds ​$AC$ and $BC$: $\Delta E_c = E_c(AB) - E_c(BC)$.
  
 This squared matrix element can be tuned with respect to the above formula by using the following command (tuning the squared matrix element is equivalent of tuning the scattering rate): This squared matrix element can be tuned with respect to the above formula by using the following command (tuning the squared matrix element is equivalent of tuning the scattering rate):
 <​code>​ <​code>​
-  <​Alloy_scattering>​ yes </​Alloy_scattering>​+  <​Alloy_scattering>​yes</​Alloy_scattering>​
   <​Tune_Alloy_scattering>​0.5</​Tune_Alloy_scattering>​   <​Tune_Alloy_scattering>​0.5</​Tune_Alloy_scattering>​
- </​Scattering>​ 
 </​code>​ </​code>​
  
Line 481: Line 499:
 </​code>​ </​code>​
 A value of 1.0 gives the normal calculation. A value of 1.0 gives the normal calculation.
 +
 +<​code>​
 + </​Scattering>​
 +</​code>​
 ==== Poisson equation ==== ==== Poisson equation ====
 The electrostatic mean-field interactions (electron-electron and electron-impurities interactions) can be switched on/off by using ''​yes''​ or ''​no''​ in the ''<​Poisson>''​ command. The electrostatic mean-field interactions (electron-electron and electron-impurities interactions) can be switched on/off by using ''​yes''​ or ''​no''​ in the ''<​Poisson>''​ command.
Line 490: Line 512:
  
  
-The parameters from the lateral motion (i.e. the two-dimensional ​free motion in the directions perpendicular to the growth axis) are assumed to be homogeneous along the structure. Hence the parameters for the lateral motion have to be taken from a fixed material. This material is indicated by ''​ <​Material_for_lateral_motion>''​.+The parameters from the lateral motion (i.e. the two-dimensional ​in-plane ​motion in the directions perpendicular to the growth axis) are assumed to be homogeneous along the structure. Hence the parameters for the lateral motion have to be taken from a fixed material. This material is indicated by ''​ <​Material_for_lateral_motion>''​.
  
 Then the discretization energy for this lateral motion has to be specified with ''<​Value unit="​meV">''​. Then the discretization energy for this lateral motion has to be specified with ''<​Value unit="​meV">''​.
  
 <​code>​ <​code>​
- <​Material_for_lateral_motion>​well</​Material_for_lateral_motion>​ 
  <​Lateral_motion>​  <​Lateral_motion>​
-  <Value unit="​meV">​ 5 </​Value>​+  ​<​Material_for_lateral_motion>​well</​Material_for_lateral_motion>​ 
 +  ​<Value unit="​meV">​5</​Value>​
  </​Lateral_motion>​  </​Lateral_motion>​
 </​code>​ </​code>​
- +This former command sets the energy spacing between the ground and first excited state for the in-plane motion. 
 +Note there is a further parameter for the in-plane motion ''<​Energy_Range_Lateral>'',​ in the ''<​Simulation_Parameter>''​ section described below, which sets the cut-off energy (i.e. the energy range) for the subband dispersion.
 ==== Simulation parameters ==== ==== Simulation parameters ====
  
Line 509: Line 531:
 </​code>​ </​code>​
 ''<​Coherence_length_in_Periods>''​ corresponds to the accounted coherence length of electrons in numbers of period. 1 should be enough for typical QCLs. ''<​Coherence_length_in_Periods>''​ corresponds to the accounted coherence length of electrons in numbers of period. 1 should be enough for typical QCLs.
-  * ''​1'' ​==> coherent transport from one period to the next +  * ''​1''​ => coherent transport from one period to the next 
-  * ''​N'' ​==> coherent transport between N+1 periods+  * ''​N''​ => coherent transport between N+1 periods
 In almost all existing QCL designs, 1 is enough. The user should not change this value. (Larger number are needed for superlattices. In almost all existing QCL designs, 1 is enough. The user should not change this value. (Larger number are needed for superlattices.
  
Line 543: Line 565:
  
 === Energy grid === === Energy grid ===
-The energy grid is critical for the calculation time. +The energy grid spacing (which ​is always ​a homogeneously spaced grid) is set using the following command:
-It is a homogeneously spaced grid+
-It holds for higher temperaturesMore broadening, i.e. less energy grid points are sufficient.+
 <​code>​ <​code>​
   <​Energy_grid_spacing unit="​meV">​ 2 </​Energy_grid_spacing>​   <​Energy_grid_spacing unit="​meV">​ 2 </​Energy_grid_spacing>​
 </​code>​ </​code>​
 +Note that this choice is critical for the NEGF calculation time: the energy grid needs to be fine enough to resolve the peaks of the Green'​s functions. However, a finer energy grid will increase the computation time.
  
-=== Adjusting the energy range of the Green'​s functions ​===+=== Cut-off energies ​=== 
 +Two different cut-off energies need to be defined in the input file. 
  
-(''<​Emin_shift>''​''<​Emax_shift>''​)+The axial cut-off energy is related to the motion along the heterostructure axis (i.e. $z$ directiongrowth direction). The command ​
 <​code>​ <​code>​
-  <Emin_shift ​unit="​meV"> ​</Emin_shift>+  <Energy_Range_Axial ​  unit="​meV"> ​500 </Energy_Range_Axial>
 </​code>​ </​code>​
-''​0'' ​is the default value - a negative value increases the energy ​range of the Green'​s functions towards low energies+sets a cut-off energy which determines how many states/​subbands are accounted. This cut-off energy ​is measured from the lowest ​energy ​state (i.e. the lowest miniband for periodic structures)
-This energy ​shift is with respect ​to $E_{\rm min}= Energy(lower Wannier-Stark state- ''​Energy_Range_Axial''​.+ 
 +The lateral (i.e. in-plane) ​energy ​cut-off ​is related ​to the description of the in-plane dispersion of the subbands (i.e. ($x$,$y$) directions)The command
 <​code>​ <​code>​
-  <Emax_shift ​unit="​meV"> ​</Emax_shift>+  <Energy_Range_Lateral ​unit="​meV"> ​300 </Energy_Range_Lateral>
 </​code>​ </​code>​
-''​0''​ is the default value - a positive ​ value increases the energy ​range of the Green'​s functions towards high energies. +sets the range of the subband dispersion which are accounted, measured from the bottom of each subband. This range has to be large enough to describe the elastic scattering processes. In a QCL, it has to be larger than the lasing transition energy.
-This energy shift is with respect ​to $E_{\rm max}$ = Energy(higher Wannier-Stark state) + Energy(higher lateral state).+
  
-The [[qcl:​faq|FAQ]] contains an example ​of different choices ​of ''<​Emin_shift>''​ and ''<​Emax_shift>''​.+The two cut-off energies are critical in both the accuracy ​of the results and in the computation time. 
 + 
 +=== Adjusting the energy range of the Green'​s functions === 
 +The energy range of the Green'​s functions are set automatically using the following default values: 
 +$$ 
 +E_{\text{min}} = E_{\text{(lowest electronic state)}} - E_{\text{cut-off}} 
 +$$ 
 +$$ 
 +E_{\text{max}} = E_{\text{(highest electronic state)}} + E_{\text{cut-off}} 
 +$$ 
 +where $E_{\text{cut-off}}$ is the maximum of axial and lateral energy cut-offs. 
 + 
 +However, if needed, this default energy range can be modified by using the commands ​''<​Emin_shift>''​ and/or ''<​Emax_shift>''​. 
 +To modify the miminum energy, the following command can be used
 <​code>​ <​code>​
-  <Energy_Range_Lateral ​unit="​meV"> ​300 </Energy_Range_Lateral>+  <Emin_shift ​unit="​meV"> ​</Emin_shift>
 </​code>​ </​code>​
-$xydirectionevaluated from lowest of one state+where ''​0''​ is the default value - a negative value increases the energy range of the Green'​s functions towards lower energies. 
 +This energy shift is made with respect to the value $E_{\text{min}}=>  $E_{\text{min}}$ ​ + ''<​Emin_shift unit="​meV">''​ 
 + 
 +For shifting the maximum energy limitthe following command can be used
 <​code>​ <​code>​
-  <Energy_Range_Axial ​  unit="​meV"> ​500 </Energy_Range_Axial>+  <Emax_shift ​unit="​meV"> ​</Emax_shift>
 </​code>​ </​code>​
-$zdirection, evaluated from lowest state/​miniband ​of one period.+where ''​0''​ is the default value - a positive ​ value increases the energy range of the Green'​s functions towards higher energies. 
 +This energy shift is made with respect to the value $E_{\text{max}}=>  $E_{\text{max}}$ ​ + ''<​Emax_shift unit="​meV">''​ 
 + 
 +To know whether changing the default setting ​of the energy range of the Green'​s functions can be done or is needed, ​one has to look at the output of the spectral functions (see the example in the [[qcl:​faq#​i_don_t_understand_the_meaning_of_emin_shift_and_e_max_shift_of_the_energy_grid_can_you_give_an_example|FAQ]])  
 + 
 +=== Convergence factors for the Green'​s functions ===
  
-The self-consistent loop ends successfully if the following 2 convergence factors are reached for the lesser Green'​s function (GF) and the current (relative difference between two consecutive iterations).+The NEGF self-consistent loop ends successfully if the following 2 convergence factors are reached for the lesser Green'​s function (GF) and the current (relative difference between two consecutive iterations).
 <​code>​ <​code>​
   <​Convergence_Value_GF> ​     1e-4 </​Convergence_Value_GF>​   <​Convergence_Value_GF> ​     1e-4 </​Convergence_Value_GF>​
Line 587: Line 630:
 Small values for the convergence values, together with sufficiently large value for the maximum number of iteration, will give the more accurate results. Small values for the convergence values, together with sufficiently large value for the maximum number of iteration, will give the more accurate results.
  
- 
- 
- 
-The number of threads used during the simulation can be limited by the following input. 
-For an automatic setting, use 0 or do not specify this command. 
-<​code>​ 
-  <​Maximum_Number_of_Threads>​8</​Maximum_Number_of_Threads>​ 
-</​code>​ 
  
 <​code>​ <​code>​
Line 652: Line 687:
  </​Gain>​  </​Gain>​
 </​code>​ </​code>​
 +
 +=== Threshold ===
 +Within this gain section, a threshold option is possible in the following way:
 +
 +<​code>​
 + <​Gain>​
 +...
 +<​Cavity_Losses unit="​cm^{-1}">​5</​Cavity_Losses>​
 +<​Threshold>​yes</​Threshold> ​
 +...
 + </​Gain>​
 +</​code>​
 +The cavity losses need to be specified by the ''<​Cavity_Losses>''​ command (unit cm$^{-1}$).
 +In this case, if the''<​Threshold>​yes</​Threshold>''​ option is activated, the voltage sweep is performed until the threshold condition is fulfilled (i.e. the maximum gain matches the cavity losses).
 +The threshold bias and threshold current are then interpolated based on the calculated bias points.
 +
 +In the case of a combined temperature-voltage sweep, the value of the last calculated bias value below threshold bias is used as a starting point of the following bias sweep at the next temperature.
  
  
qcl/input_file.1592910221.txt.gz · Last modified: 2020/06/23 11:03 by thomas.grange