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:21]
thomas.grange [Parallelization]
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 33: Line 40:
  
 In this example, the total number of threads will be <​Threads>​* <​Maximum_Number_of_Threads>​ = 6*2 = 12. 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.1509963666.txt.gz · Last modified: 2017/11/06 10:21 by thomas.grange