Difference between revisions of "How to choose the input parameters"
(→Convergence with the cutoff for reciprocal lattice vectors sums) 

Line 6:  Line 6:  
==Before starting==  ==Before starting==  
−  
−  
−  
* Have completed (or be familiar with their content of) the following tutorials:  * Have completed (or be familiar with their content of) the following tutorials:  
 [[First steps: a walk through from DFT to optical properties]]   [[First steps: a walk through from DFT to optical properties]]  
−  
 [[Calculating optical spectra including excitonic effects: a stepbystep guide]]   [[Calculating optical spectra including excitonic effects: a stepbystep guide]]  
Line 65:  Line 61:  
===Prepare the common databases===  ===Prepare the common databases===  
−  Enter the <code>  +  
+  Enter the <code>hBN</code> directory (containing a 6x6x2 kgrid SAVE) and run the initialization.  
+  
+  > cd YAMBO_TUTORIALS/hBN/YAMBO  
+  
For all the calculations in this sessions you can fix the screening parameters, and thus calculate the screening once for all.  For all the calculations in this sessions you can fix the screening parameters, and thus calculate the screening once for all.  
Following the scheme we learned in previous tutorial:  Following the scheme we learned in previous tutorial:  
Line 71:  Line 71:  
* Create the input for calculating the screening:  * Create the input for calculating the screening:  
−  +  > yambo F 02_screening.in b  
* Modify the input as follows  * Modify the input as follows  
Line 85:  Line 85:  
* Run the calculation for the screening  * Run the calculation for the screening  
−  +  > yambo F 02_screening.in  
As we do not specify a particular prefix, the screening databases <code>ndb.dip_iR_and_P, ndb.em1s</code> are saved in the <code>SAVE</code> folder and visible to all the subsequent jobs you will launch is this directory.  As we do not specify a particular prefix, the screening databases <code>ndb.dip_iR_and_P, ndb.em1s</code> are saved in the <code>SAVE</code> folder and visible to all the subsequent jobs you will launch is this directory.  
Line 91:  Line 91:  
===Convergence with the cutoff for reciprocal lattice vectors sums===  ===Convergence with the cutoff for reciprocal lattice vectors sums===  
As next step, create the input for calculating the macroscopic dielectric function:  As next step, create the input for calculating the macroscopic dielectric function:  
−  +  > yambo F 03_bse.in o b k sex y d V qp  
Which combines the BS kernel + BS solver (diagonalization) runlevels  Which combines the BS kernel + BS solver (diagonalization) runlevels  
* Modify the input as follows  * Modify the input as follows  
Line 113:  Line 113:  
%  %  
* Launch the calculation:  * Launch the calculation:  
−  +  > yambo F 03_bse.in J 3D_4Ry_GBlk  
This produces the file with the optical spectrum <code>o3D_4Ry_GBlk.eps_q1_diago_bse</code>.  This produces the file with the optical spectrum <code>o3D_4Ry_GBlk.eps_q1_diago_bse</code>.  
Line 120:  Line 120:  
while leaving the rest untouched.  while leaving the rest untouched.  
* Launch the calculation:  * Launch the calculation:  
−  +  > yambo F 03_bse.in J 3D_3Ry_GBlk  
This produces the file with the optical spectrum <code>o3D_3Ry_GBlk.eps_q1_diago_bse</code>.  This produces the file with the optical spectrum <code>o3D_3Ry_GBlk.eps_q1_diago_bse</code>.  
Line 127:  Line 127:  
* Finally plot the obtained optical spectra:  * Finally plot the obtained optical spectra:  
−  +  > gnuplot  
plot 'o3D_4Ry_GBlk.eps_q1_diago_bse' w l t '4 Ry','o3D_3Ry_GBlk.eps_q1_diago_bse' w l t '3 Ry', 'o3D_2Ry_GBlk.eps_q1_diago_bse' w l t '2 Ry', 'o3D_1Ry_GBlk.eps_q1_diago_bse' w l t '1 Ry'  plot 'o3D_4Ry_GBlk.eps_q1_diago_bse' w l t '4 Ry','o3D_3Ry_GBlk.eps_q1_diago_bse' w l t '3 Ry', 'o3D_2Ry_GBlk.eps_q1_diago_bse' w l t '2 Ry', 'o3D_1Ry_GBlk.eps_q1_diago_bse' w l t '1 Ry'  
Line 138:  Line 138:  
* Finally plot the obtained optical spectra:  * Finally plot the obtained optical spectra:  
−  +  > gnuplot  
plot 'o3D_4Ry_GBlk.eps_q1_diago_bse' w l t '30 Ry' ls 1,'o3D_20Ry_Gexx.eps_q1_diago_bse' w l t '20 Ry', 'o3D_10Ry_Gexx.eps_q1_diago_bse' w l t '10 Ry'  plot 'o3D_4Ry_GBlk.eps_q1_diago_bse' w l t '30 Ry' ls 1,'o3D_20Ry_Gexx.eps_q1_diago_bse' w l t '20 Ry', 'o3D_10Ry_Gexx.eps_q1_diago_bse' w l t '10 Ry'  
Line 158:  Line 158:  
* Plot the optical spectra obtained from the different runs:  * Plot the optical spectra obtained from the different runs:  
−  +  > gnuplot  
plot 'o3D_4Ry_GBlk.eps_q1_diago_bse' w l t '610 Bands','o3D_710_BND.eps_q1_diago_bse' w l t '710 Bands', 'o3D_810_BND.eps_q1_diago_bse' w l t '810 Bands'  plot 'o3D_4Ry_GBlk.eps_q1_diago_bse' w l t '610 Bands','o3D_710_BND.eps_q1_diago_bse' w l t '710 Bands', 'o3D_810_BND.eps_q1_diago_bse' w l t '810 Bands'  
plot 'o3D_4Ry_GBlk.eps_q1_diago_bse' w l t '610 Bands','o3D_69_BND.eps_q1_diago_bse' w l t '69 Bands', 'o3D_79_BND.eps_q1_diago_bse' w l t '79 Bands', 'o3D_89_BND.eps_q1_diago_bse' w l t '89 Bands'  plot 'o3D_4Ry_GBlk.eps_q1_diago_bse' w l t '610 Bands','o3D_69_BND.eps_q1_diago_bse' w l t '69 Bands', 'o3D_79_BND.eps_q1_diago_bse' w l t '79 Bands', 'o3D_89_BND.eps_q1_diago_bse' w l t '89 Bands'  
Line 168:  Line 168:  
For example you can prepare and run calculations with the following bands ranges: ''112'', ''412'', ''414'' and plot the results:  For example you can prepare and run calculations with the following bands ranges: ''112'', ''412'', ''414'' and plot the results:  
−  +  > gnuplot  
plot 'o3D_4Ry_GBlk.eps_q1_diago_bse' w l t '610 Bands','o3D_412_BND.eps_q1_diago_bse' w l t '412 Bands', 'o3D_414_BND.eps_q1_diago_bse' w l t '414 Bands', 'o3D_112_BND.eps_q1_diago_bse' w l t '112 Bands' ls 4  plot 'o3D_4Ry_GBlk.eps_q1_diago_bse' w l t '610 Bands','o3D_412_BND.eps_q1_diago_bse' w l t '412 Bands', 'o3D_414_BND.eps_q1_diago_bse' w l t '414 Bands', 'o3D_112_BND.eps_q1_diago_bse' w l t '112 Bands' ls 4  
Line 179:  Line 179:  
For this exercise the SAVE databases for different meshes were generated beforehand and are contained in the corresponding folders:  For this exercise the SAVE databases for different meshes were generated beforehand and are contained in the corresponding folders:  
+  > pwd  
+  YAMBO_TUTORIALS/hBN/YAMBO  
+  > cd ../BSE_Convergence/  
+  > ls  
9x9x3 12x12x4 15x15x5 18x18x6  9x9x3 12x12x4 15x15x5 18x18x6  
Line 186:  Line 190:  
* Run the initialization  * Run the initialization  
* Create the input for calculating the screening:  * Create the input for calculating the screening:  
−  +  > yambo F 02_screening.in J 3D_993 b  
* Modify the input as follows  * Modify the input as follows  
[[Variables#NGsBlkXsNGsBlkXs]] = 4 Ry  [[Variables#NGsBlkXsNGsBlkXs]] = 4 Ry  
Line 196:  Line 200:  
%  %  
* Run the calculation for the screening  * Run the calculation for the screening  
−  +  > yambo F 02_screening.in J 3D_993  
* Create the input for calculating the macroscopic dielectric function:  * Create the input for calculating the macroscopic dielectric function:  
−  +  > yambo F 03_bse.in J 3D_993 o b k sex y h V qp  
Which combines the BS kernel + BS solver (LanczosHaydock) runlevels  Which combines the BS kernel + BS solver (LanczosHaydock) runlevels  
* Modify the input as follows  * Modify the input as follows  
Line 221:  Line 225:  
[[Variables#BSHayTrsBSHayTrs]]= 0.02000  [[Variables#BSHayTrsBSHayTrs]]= 0.02000  
* Launch the calculation:  * Launch the calculation:  
−  +  > yambo F 03_bse.in J 3D_993  
* Repeat the procedure for the <code>12x12x4</code> (it will take few minutes) with the difference you will use a different prefix: <code>J 3D_12124</code>.  * Repeat the procedure for the <code>12x12x4</code> (it will take few minutes) with the difference you will use a different prefix: <code>J 3D_12124</code>.  
Line 228:  Line 232:  
Note that for those meshes the BS kernel database is becoming very/too large and you need to fragment it. To do that '''after''' you generated and modified the input invoke yambo again as:  Note that for those meshes the BS kernel database is becoming very/too large and you need to fragment it. To do that '''after''' you generated and modified the input invoke yambo again as:  
−  +  > yambo F 03_bse.in J 3D_15155 o b k sex y h '''V io'''  
and modify the variable  and modify the variable  
[[Variables#DBsFRAGpmDBsFRAGpm]]= "+BS"  [[Variables#DBsFRAGpmDBsFRAGpm]]= "+BS"  
Then launch the calculation  Then launch the calculation  
−  +  > yambo F 03_bse.in J 3D_15155  
If you correctly followed the above procedure you should have a file with the optical absorption spectrum for each mesh, e.g. <code>o3D_993.eps_q1_haydock_bse</code>.  If you correctly followed the above procedure you should have a file with the optical absorption spectrum for each mesh, e.g. <code>o3D_993.eps_q1_haydock_bse</code>.  
To see the effect of kpoints plot those files with <code>gnuplot</code>:  To see the effect of kpoints plot those files with <code>gnuplot</code>:  
−  +  > gnuplot  
plot '18x18x6/o3D_18186.eps_q1_haydock_bse' w l t '18x18x6, '15x15x5/o3D_15155.eps_q1_haydock_bse' w l t '15x15x5','12x12x4/o3D_12124.eps_q1_haydock_bse' w l t '12x12x4,  plot '18x18x6/o3D_18186.eps_q1_haydock_bse' w l t '18x18x6, '15x15x5/o3D_15155.eps_q1_haydock_bse' w l t '15x15x5','12x12x4/o3D_12124.eps_q1_haydock_bse' w l t '12x12x4,  
'9x9x3/o3D_993.eps_q1_haydock_bse' w l t '9x9x3', '6x6x2/o3D_662.eps_q1_haydock_bse' w l t '6x6x2'  '9x9x3/o3D_993.eps_q1_haydock_bse' w l t '9x9x3', '6x6x2/o3D_662.eps_q1_haydock_bse' w l t '6x6x2'  
Line 256:  Line 260:  
* <code>BSEBands '''from 6 to 10'''</code>  * <code>BSEBands '''from 6 to 10'''</code>  
* To converge the position and shape of the first exciton peak a 12x12x4 mesh is sufficient. For the second exciton peak a mesh larger than 18x18x6 would be needed (indeed Wirtz and coworkers found a kmesh 24x24x10 was needed.<ref>Ludger Wirtz, Andrea Marini, Myrta Gruning, Angel Rubio in arXiv:condmat/0508421 [condmat.mtrlsci]</ref>)  * To converge the position and shape of the first exciton peak a 12x12x4 mesh is sufficient. For the second exciton peak a mesh larger than 18x18x6 would be needed (indeed Wirtz and coworkers found a kmesh 24x24x10 was needed.<ref>Ludger Wirtz, Andrea Marini, Myrta Gruning, Angel Rubio in arXiv:condmat/0508421 [condmat.mtrlsci]</ref>)  
−  
− 
Latest revision as of 16:01, 6 November 2019
In the previous tutorial, you have been guided stepbystep through the calculations of the optical spectrum of bulk hBN by solving the BetheSalpeter equation. The values for the relevant input parameters have then been given to you.
In this tutorial you will learn how to choose these parameters which are related either to the truncation of infinite sums or to the approximations of infinitesimal with small, but finite quantities. A wrong choice of these parameters can lead to inaccurate or even physically wrong results. One needs to run a series of calculations by changing the parameters unitl the results are converged , meaning they are changing by a negligible amount. This is a tedious still essential part of determining the optical properties of a system.
Note that all the operations described below can be automated. A flexible pythonbased interface to yambo, yambopy, can be used for this purpose. It is worth however to go at least once through the pain of a 'byhand' convergence study so to better understand the automated process.
Contents
Before starting
 Have completed (or be familiar with their content of) the following tutorials:
 First steps: a walk through from DFT to optical properties  Calculating optical spectra including excitonic effects: a stepbystep guide
Background
Coming back to the scheme to calculate the macroscopic dielectric matrix within BetheSalpeter (BS), the list of the parameters that have to be determined by convergence studies are:
This provides as well a scheme for a full convergence study:
 first the parameters for the screening have to be determined,
 then the parameters for the BS kernel, and
 finally the convergence with respect to the choice of the kmesh needs to performed.
Convergence of the static screening
The parameters that need to be converged can be understood by looking at the equations:
where χ_{GG'} is given by

NGsBlkXs
: The dimension of the microscopic inverse matrix, related to Local fields 
BndsRnXs
: The sum on bands in the independent particle χ^{0}_{GG'}
Furthermore as shown in this tutorial one can reduce the value of
since generally, fewer Gvectors are needed than what are needed in DFT calculations. This can be critical for large calculations, or for supercells with a lot of vacuum.
Remember that the latter parameter appears only when the input is generated specifying the verbosity level V RL
The convergence for the static screening then is similar to the convergence of other response functions and for the plasmonpole in GW calculations and won't be covered here. Note in fact that you can reuse the database obtained (and converged) from a previous plasmon pole calculation as long as the same kpoints are used.
Convergence of the macroscopic dielectric function
In the expression for the macroscopic dielectric function
depends on the summation over the pair of quasiparticle states vck.

BSEBands
: defines the vc pairs.  the kpoint mesh of the DFT calculations defines the k
Basically we need a large enough basis of transitions (pair of quasiparticle states) to correctly describe the excitons (in the energy region of interest).
Furthermore, in the kernel components
the summations over G vectors appear. These corresponds to two parameters:

BSENGblk
: defines the screened interaction block size (double sum in W), related to the electronhole attraction. 
BSENGexx
: defines the components of Hartree potential (the sum in V), related to local fields.
In the following we will see how the spectrum depends on these parameters.
Prepare the common databases
Enter the hBN
directory (containing a 6x6x2 kgrid SAVE) and run the initialization.
> cd YAMBO_TUTORIALS/hBN/YAMBO
For all the calculations in this sessions you can fix the screening parameters, and thus calculate the screening once for all. Following the scheme we learned in previous tutorial:
 Create the input for calculating the screening:
> yambo F 02_screening.in b
 Modify the input as follows
NGsBlkXs = 4 Ry %BndsRnXs 1  40  % %LongDrXS 1.000  1.000  1.000 %
 Run the calculation for the screening
> yambo F 02_screening.in
As we do not specify a particular prefix, the screening databases ndb.dip_iR_and_P, ndb.em1s
are saved in the SAVE
folder and visible to all the subsequent jobs you will launch is this directory.
Convergence with the cutoff for reciprocal lattice vectors sums
As next step, create the input for calculating the macroscopic dielectric function:
> yambo F 03_bse.in o b k sex y d V qp
Which combines the BS kernel + BS solver (diagonalization) runlevels
 Modify the input as follows
BSENGexx = 30 Ry BSENGBlk = 4 Ry % BSEBands 6  10  % % BEnRange 2.00000  8.00000  eV % BEnSteps= 100 % BDmRange 0.10000  0.10000  eV % % BLongDir 1.000000  1.000000  0.000000  % % KfnQP_E 1.440000  1.000000  1.000000  %
 Launch the calculation:
> yambo F 03_bse.in J 3D_4Ry_GBlk
This produces the file with the optical spectrum o3D_4Ry_GBlk.eps_q1_diago_bse
.
 Open the
03_bse.in
in an editor and changes:
BSENGBlk = 3 Ry
while leaving the rest untouched.
 Launch the calculation:
> yambo F 03_bse.in J 3D_3Ry_GBlk
This produces the file with the optical spectrum o3D_3Ry_GBlk.eps_q1_diago_bse
.
 Repeat this operation for
BSENGBlk= 2 Ry
andBSENGBlk= 1 Ry
. Remember to change the prefix correspondingly so that you can later on identify the job, e.g.J
3D_2Ry_GBlk
for BSENGBlk= 2 Ry
. etc.
 Finally plot the obtained optical spectra:
> gnuplot plot 'o3D_4Ry_GBlk.eps_q1_diago_bse' w l t '4 Ry','o3D_3Ry_GBlk.eps_q1_diago_bse' w l t '3 Ry', 'o3D_2Ry_GBlk.eps_q1_diago_bse' w l t '2 Ry', 'o3D_1Ry_GBlk.eps_q1_diago_bse' w l t '1 Ry'
This shows that BSENGBlk= 2 Ry
gives already a results close to convergence and we can confidently lower BSENGBlk
to 2 or 3 Ry.
 Repeat now the same procedure with
BSENGexx
. Change the value to 10 Ry and 20 Ry. Remember to change the prefix correspondingly so that you can later on identify the job, e.g.J
3D_10Ry_Gexx
for BSENGexx= 10 Ry
. etc.
 Finally plot the obtained optical spectra:
> gnuplot plot 'o3D_4Ry_GBlk.eps_q1_diago_bse' w l t '30 Ry' ls 1,'o3D_20Ry_Gexx.eps_q1_diago_bse' w l t '20 Ry', 'o3D_10Ry_Gexx.eps_q1_diago_bse' w l t '10 Ry'
The plot shows that already with BSENGexx= 10 Ry
the spectrum is converged and the cutoff can be lowered to this value.
Convergence with the BS bands
You can now repeat the procedure above keeping fixed all parameters to their original values except for
% BSEBands 6  10  %
Typically only the bands which are close to the Fermi energies contributes to the spectrum. If the energy separation between two bands is much larger than the spectral energy range, you can assume the corresponding transitions are not contributing to the spectra.
 Repeat then the calculation for the optical spectrum using the following band ranges:
710, 810, 69, 79 and 89.
When launching the job remember to identify your job with a recognizable name, e.g. J 3D_79_BND
for the 79 range.
 Plot the optical spectra obtained from the different runs:
> gnuplot plot 'o3D_4Ry_GBlk.eps_q1_diago_bse' w l t '610 Bands','o3D_710_BND.eps_q1_diago_bse' w l t '710 Bands', 'o3D_810_BND.eps_q1_diago_bse' w l t '810 Bands' plot 'o3D_4Ry_GBlk.eps_q1_diago_bse' w l t '610 Bands','o3D_69_BND.eps_q1_diago_bse' w l t '69 Bands', 'o3D_79_BND.eps_q1_diago_bse' w l t '79 Bands', 'o3D_89_BND.eps_q1_diago_bse' w l t '89 Bands'
The plots show that we need to include valence bands from at least 67 (those bands are degenerate at several high symmetry points of the Brillouin zone) and conduction at least up to band 10. To see if this is sufficient you can try to include more bands.
For example you can prepare and run calculations with the following bands ranges: 112, 412, 414 and plot the results:
> gnuplot plot 'o3D_4Ry_GBlk.eps_q1_diago_bse' w l t '610 Bands','o3D_412_BND.eps_q1_diago_bse' w l t '412 Bands', 'o3D_414_BND.eps_q1_diago_bse' w l t '414 Bands', 'o3D_112_BND.eps_q1_diago_bse' w l t '112 Bands' ls 4
The plot is showing that the spectrum changes only marginally when adding those bands.
Convergence with the kpoint mesh
As final step you need to study the dependence on the k mesh. This parameter cannot be changed in yambo. For each k mesh you need to run a separate nonself consistent DFT calculation (on top of a converged selfconsistent one) and generate the corresponding SAVE folders. Be careful to change only the k mesh.
For this exercise the SAVE databases for different meshes were generated beforehand and are contained in the corresponding folders:
> pwd YAMBO_TUTORIALS/hBN/YAMBO > cd ../BSE_Convergence/ > ls 9x9x3 12x12x4 15x15x5 18x18x6
By now you should be familiar with the process:
 Enter the 9x9x3 directory
 Run the initialization
 Create the input for calculating the screening:
> yambo F 02_screening.in J 3D_993 b
 Modify the input as follows
NGsBlkXs = 4 Ry %BndsRnXs 1  40  % %LongDrXS 1.000  1.000  1.000 %
 Run the calculation for the screening
> yambo F 02_screening.in J 3D_993
 Create the input for calculating the macroscopic dielectric function:
> yambo F 03_bse.in J 3D_993 o b k sex y h V qp
Which combines the BS kernel + BS solver (LanczosHaydock) runlevels
 Modify the input as follows
BSENGexx = 30 Ry BSENGBlk = 4 Ry % BSEBands 6  10  % % BEnRange 2.00000  8.00000  eV % BEnSteps= 200 % BDmRange 0.10000  0.10000  eV % % BLongDir 1.000000  1.000000  0.000000  % % KfnQP_E 1.440000  1.000000  1.000000  % BSHayTrs= 0.02000
 Launch the calculation:
> yambo F 03_bse.in J 3D_993
 Repeat the procedure for the
12x12x4
(it will take few minutes) with the difference you will use a different prefix:J 3D_12124
.
The convergence on the kpoint is certainly the most tedious and expensive part. Note that for the two larger meshes the calculations of both the screening and kernel take about 10 to 30 minutes each.
If short of time/resources postpone these calculations. If you have the time and computational resources repeat the above procedure for 15x15x5
and 18x18x6
.
Note that for those meshes the BS kernel database is becoming very/too large and you need to fragment it. To do that after you generated and modified the input invoke yambo again as:
> yambo F 03_bse.in J 3D_15155 o b k sex y h V io
and modify the variable
DBsFRAGpm= "+BS"
Then launch the calculation
> yambo F 03_bse.in J 3D_15155
If you correctly followed the above procedure you should have a file with the optical absorption spectrum for each mesh, e.g. o3D_993.eps_q1_haydock_bse
.
To see the effect of kpoints plot those files with gnuplot
:
> gnuplot plot '18x18x6/o3D_18186.eps_q1_haydock_bse' w l t '18x18x6, '15x15x5/o3D_15155.eps_q1_haydock_bse' w l t '15x15x5','12x12x4/o3D_12124.eps_q1_haydock_bse' w l t '12x12x4, '9x9x3/o3D_993.eps_q1_haydock_bse' w l t '9x9x3', '6x6x2/o3D_662.eps_q1_haydock_bse' w l t '6x6x2'
From this plot you can notice that:
 results with the 6x6x2 mesh are clearly not converged: the first peak is too red shifted, the peak at 6 eV too sharp and intense and there is an 'extra' peak at 7 eV.
 both the position and shape of the first peak are practically converged with the 9x9x3 mesh.
 conversely the second peak is still not fully converged with the 18x18x6.
The different behavior in the convergence of the two features depends on the localization of the exciton. The sharp first peak suggests a localized exciton. The shape of the second peak a much more delocalized exciton. A finer k mesh, corresponds in direct space, to considering a larger amount of unit cells. Then when the excitation is delocalized over a large number of unit cells a very fine k mesh is needed. Typically a too coarse k mesh induces an artificial localization of the excitons which then correspond to artefacts in the spectrum (similar to what is observed for the 6x6x9). A nice, instructive discussion on wrong deductions from unconverged k mesh calculations can be found in the Appendix of MolinaSanchez et al. (2013).^{[1]}
Summary
To sumup the results from this tutorial you have found that for the system under study:

BSENGBlk= 3 Ry

BSENGexx= 10 Ry

BSEBands from 6 to 10
 To converge the position and shape of the first exciton peak a 12x12x4 mesh is sufficient. For the second exciton peak a mesh larger than 18x18x6 would be needed (indeed Wirtz and coworkers found a kmesh 24x24x10 was needed.^{[2]})