User Tools

Site Tools


qcl:advanced_settings

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:advanced_settings [2017/11/06 10:18]
thomas.grange
qcl:advanced_settings [2022/03/30 16:36] (current)
thomas.grange [Definition of graded alloy and graded interfaces]
Line 1: Line 1:
-===== Advanced settings =====+====== Advanced settings ​======
  
 ==== Parallelization ==== ==== Parallelization ====
 +
 +=== Number of threads ===
 +
 +
 The number of threads can be controlled using the command <​Maximum_Number_of_Threads>​ The number of threads can be controlled using the command <​Maximum_Number_of_Threads>​
 <​code>​ <​code>​
Line 11: Line 15:
 </​code>​ </​code>​
  
 +For an automatic setting, use 0 or do not specify this command. In this case, the number of threads will be set to half of the number of physical cores.
  
-=== Parallization ​in case of combined Temperature-Voltage sweep ===+In any case, we recommended that <​Maximum_Number_of_Threads>​ does not exceed the number of **physical** cores (note that when hyperthreading is activated, the number of physical cores is half the one on logical processsors). 
 + 
 +=== Parallelization ​in case of combined Temperature-Voltage sweep ===
 In the case where a combined Temperature-Voltage sweep is used, there are two levels of parallelization. The first is at the level of the command <​Threads>​ in the <​SweepParameters>​ section. In the case where a combined Temperature-Voltage sweep is used, there are two levels of parallelization. The first is at the level of the command <​Threads>​ in the <​SweepParameters>​ section.
  
Line 19: Line 26:
   <​SweepType>​Temperature-Voltage</​SweepType>​   <​SweepType>​Temperature-Voltage</​SweepType>​
   ...   ...
- <​Threads>​12</​Threads>​ <!-- Parallelization for Temperature-Voltage sweep -->+ <​Threads>​6</​Threads>​ <!-- Parallelization for Temperature-Voltage sweep -->
  </​SweepParameters>​  </​SweepParameters>​
 </​code>​ </​code>​
  
-The second level of parallelization occurs+The second level of parallelization occurs ​in the <​Simulation_Parameter>​ section: 
 +<​code>​ 
 +<​Simulation_Parameter>​ 
 +  ... 
 +  <​Maximum_Number_of_Threads>​2</​Maximum_Number_of_Threads>​ 
 +  ... 
 +</​Simulation_Parameter>​ 
 +</​code>​ 
 + 
 +In this example, the total number of threads will be <​Threads>​* <​Maximum_Number_of_Threads>​ = 6*2 = 12. 
 + 
 + 
 +==== Definition of graded alloy and graded interfaces ==== 
 + 
 +There are two possibilities to define graded alloy profile.  
 + 
 +=== Linearly graded alloys === 
 +To define a linear graded alloy profile, two materials first need to be defined in the ''<​Material>''​ section 
 +For example, 
 +<​code>​ 
 +    <​Material>​ 
 +      <​Name>​GaAs</​Name> ​                          <​!-- Binary material --> 
 +      <​Alias>​mat1</​Alias>​ 
 +      <​Effective_mass_from_kp_parameters>​yes</​Effective_mass_from_kp_parameters>​ 
 +    </​Material>​ 
 + 
 +    <​Material>​ 
 +      <​Name>​Al(x)Ga(1-x)As</​Name> ​                <​!-- Ternary material --> 
 +      <​Alloy_Composition>​0.15</​Alloy_Composition>​ <!-- alloy composition x --> 
 +      <​Alias>​mat2</​Alias>​ 
 +      <​Effective_mass_from_kp_parameters>​yes</​Effective_mass_from_kp_parameters>​ 
 +    </​Material>​ 
 +</​code>​ 
 + 
 +Then, in the layer definition (named ''<​Superlattice>''​),​ the following can be used to define a layer with a linear alloy profile, with composition starting from the material "​mat1"​ and ending with the material "​mat2"​ composition. 
 +<​code>​ 
 +<​Layer>​ <!-- all the material parameters will be linearily interpolated between <​Material1>​ and <​Material2>​ --> 
 +    <​Material1>​mat1</​Material1>​ 
 +    <​Material2>​mat2</​Material2>​ 
 +    <​Thickness unit="​nm">​5.0</​Thickness>​ 
 +  </​Layer>​ 
 +</​code>​ 
 + 
 + 
 +=== Graded interfaces === 
 + 
 +To specify a grading for all the interfaces of the structure, the following command ''<​InterfaceWidth>''​ has to be included in the ''<​Interface_Roughness>''​ section. 
 +<​code>​ 
 +<​Interface_Roughness>​ 
 +      <​InterfaceWidth unit="​nm">​0.8</​InterfaceWidth>​ 
 +      ... 
 +   </​Interface_Roughness>​ 
 +</​code>​ 
 +In this case, the alloy profile of the all strucure is convoluted by a Gaussian. For a well defined interface, this results in an error function profile of the form: 
 +$$ 
 +c(z) = c_0 + d_0 \text{erf} \left[2 
 +\sqrt{ln(2)}(z − z_0)/L \right] 
 +$$  
 +where $L$ is the quantity specified in ''<​InterfaceWidth>''​. 
 + 
 +==== Scattering processes ==== 
 +=== Contributions of individual scattering processes === 
 +The following command allow to display self-energies and spectral functions for some specific mechanisms, like e.g. scattering due to optical phonons: 
 +<​code>​ 
 +<​Scattering>​ 
 +  ... 
 +  <​Separate_Scattering>​yes</​Separate_Scattering>​ 
 +  ... 
 +</​Scattering>​ 
 +</​code>​ 
 +This command is only for analysis purpose, and has no influence on the other calculated quantities. It only involves an additionnal calculation of self-energies and Green'​s functions. 
 +In each basis folder, a folder with the name of the scattering process will appear, containing the retarded self-energy and the spectral function arising only from the specific scattering mechanism. Hence this spectral function gives the contribution to broadening of an individual scattering process. 
 + 
 +=== Homogeneous Coulomb scattering === 
 +To speed up the calculation,​ it is possible to consider the assumption of homogeneously distributed Coulomb scatterers (ionized impurities and other charge carriers) using the following command: 
 +<​code>​ 
 +<​Scattering>​ 
 +  ... 
 +  <​Homogeneous_Coulomb>​yes</​Homogeneous_Coulomb>​ 
 +  ... 
 +</​Scattering>​ 
 +</​code>​ 
 + 
 + 
 +/*==== Asymetric interface roughness ==== 
 +It is possible to specify asymetric interface roughness using the following command (note: this feature is currently not working due to syntax changes). 
 +<​code>​ 
 +  <​Interface_Roughness>​ 
 + 
 +   <​InterfaceAutoCorrelationType>​ 0 </​InterfaceAutoCorrelationType>​ 
 +   <​Correlation_Length_in_XY unit="​nm">​ 8 </​Correlation_Length_in_XY>​ 
 + 
 +   <​Asymmetric_Interfaces>​ yes </​Asymmetric_Interfaces>​ 
 +   <​Amplitude_in_Z_Left> ​ 0.1 </​Amplitude_in_Z_Left>​ 
 +   <​Amplitude_in_Z_Right>​ 0.2 </​Amplitude_in_Z_Right>​ 
 + 
 +  </​Interface_Roughness>​ 
 +</​code>​*/​ 
 + 
 +==== Output format for 2D plots ==== 
 +By default, 2D plots are output in a [[http://​www.vtk.org|VTK format]] (.vtr extension). 
 + ​[[http://​www.gnuplot.info/​|Gnuplot]] files (.plt extension) are also generated (in a file explorer, double click on the file to generate the gnuplot figure). 
 + 
 +In addition, to output 2D plots in a [[http://​www.avs.com|AVS/​Express format]] (.fld extension), the following command "<​FLD_format>"​ can be added in the <​Output>​ section of the input file. 
 + 
 +The following commands can be used to control the output formats: 
 + 
 +<​code>​ 
 +<​Output>​ 
 +... 
 +<​VTK_format>​yes</​VTK_format>​ 
 +<​FLD_format>​yes</​FLD_format>​ 
 +<​Gnuplot_format>​yes</​Gnuplot_format>​ 
 +... 
 +</​Output>​ 
 +</​code>​ 
 + 
 + 
 + 
 +==== Scaling 1D wavefunctions ==== 
 +In order to scale the output of the square of the wavefunctions (1D plots), the following command can be used: 
 +<​code>​ 
 +<​Output>​ 
 +... 
 +<​ScaleWaveFunction>​0.1</​ScaleWaveFunction>​ 
 +... 
 +</​Output>​ 
 +</​code>​ 
 + 
qcl/advanced_settings.1509963481.txt.gz · Last modified: 2017/11/06 10:18 by thomas.grange