Table of Contents
You will now relax the geometry using a non-self-consistent tight-binding method. This is a very fast method that gives reasonably accurate results for this system. Furthermore, it is a convenient method to find out a good setting of the different accuracy parameters.
Select the geometry file created in the previous chapter, and drop it onto the
Script Generator icon
on the VNL toolbar.
Add a New Calculator
block.
Add 2 OptimizeGeometry
blocks.
Add one more New Calculator
block.
Add an additional OptimizeGeometry
block.
Change the output filename to si_nw_tb.nc.
The Script Generator should now appears as in the figure below.

The idea is now to change the parameters for each relaxation, and check how sensitive the results are to the parameters.
For the first calculator, setup a non-self-consistent tight-binding method with the following settings.
Select the ATK-SE: Slater-Koster calculator.
Set the k-point sampling to (1,1,2).
Under Slater-Koster basis set, make sure that DFTB (CP2K, non-self-consistent) is selected.

| Note | |
|---|---|
The CP2K tight-binding parameters are generated by the CP2K consortium. |
Next open the first OptimizeGeometry block
Set the Maximum force to 0.02.
Set the Maximum stress to 0.005.
Remove the tick from the z-direction under Constrain cell.

The second OptimizeGeometry block will be used to check the effect of increasing the accuracy of the optimization.
Set the Maximum force to 0.01.
Set the Maximum stress to 0.001.
Again remove the tick from cell constraint in the z-direction.
The purpose of the last set of script blocks is to check if an increased k-point sampling will modify the relaxed geometry.
Open the last New calculator block and make the following settings.Select the ATK-SE: Slater-Koster calculator.
Set the k-point sampling to (1,1,8).
Again, under Slater-Koster basis set, make sure that DFTB (CP2K, non-self-consistent) is selected.
Repeat the settings of the first OptimizeGeometry block, i.e.
Set the Maximum force to 0.01.
Set the Maximum stress to 0.0005.
Remove the constraint of the cell in the z-direction.
It is a good idea to save the script, for future reference.
Now transfer the calculation to the Job Manager using the "Send to"
button, and start the calculation.
When the job finishes (it will only take a few minutes), save the log into a file
si_nw_tb.log.
On inspection of the log file, several important observations can be made.
The lowering of the total energy due to the increased threshold for the optimized geometry is in the meV range.
The error due to having as few as 2 k-points in the C-direction is negligible.
The strain on the cell is very small, already in the intial configuration.
Thus, for the more expensive relaxations with the DFT model, you do not need to check the accuracy of k-point sampling and force tolerance, but can stick to the choice used for the first optimization. Moreover, it is not necessary to relax the strain.
In the following you will relax the nanowire using a DFT model in order to check the accuracy of the tight-binding model.
The GGA.PBE exchange-correlation functional in DFT is known to give accurate results for the structure of geometries, also for semiconductors. To understand the accuracy of different basis sets, as well as the tight-binding calculation, the first task is to compare the forces and stress obtained with different basis sets.
In the VNL file browser locate the file si_nw45.py from before and drop it
onto the Script Generator icon
in the VNL toolbar.
In the Script Generator, add a calculator and a Forces block from Analysis. Repeat this 3 times, so in total you have 8 blocks.
Change the output file name to si_nw_gga_forces.nc.
The Next step is to modify the calculators. Open the first New Calculator
block, and
Select the ATK-SE: Slater-Koster calculator,
set the k-point sampling to (1,1,2),
and finally make sure that the DFTB (CP2K, non-self-consistent) basis set is selected.
Open the second calculator block and
Select the ATK-DFT calculator,
set the k-points to (1,1,2),
select the GGA exchange correlation functional,
and finally select the SingleZeta basis set for both Si and H.
Use the same DFT settings for the third calculator block, except
change the basis set to DoubleZeta for both Si and H.
Finally, open the last calculator and again use the same DFT settings, exceot
set the basis set to DoubleZetaPolarized (this is actually the default).
Transfer the script to the Job Manager and start the calculation.
The calculation will take 5-10 minutes. To analyze the forces, use the following small script.
#Read in list of forces objects
forces_objects = nlread('si_nw_gga_forces.nc', Forces)
#Comparing forces of the different basis sets
n = len(forces_objects)
norm_correlation = numpy.zeros(n*n).reshape(n,n)
for i, forces1 in enumerate(forces_objects):
f1 = forces1.evaluate().inUnitsOf(eV/Ang)
for j, forces2 in enumerate(forces_objects):
f2 = forces2.evaluate().inUnitsOf(eV/Ang)
if i == j:
norm_correlation[i,j] = numpy.linalg.norm(f1)
else:
norm_correlation[i,j] = numpy.linalg.norm(f1-f2)
print 'Correlation between forces for the 4 methods (eV/Ang)'
print norm_correlation
Download the script and drop it onto the Job Manager.
The script should produce the following output
Correlation between forces for the 4 methods (eV/Ang) [[ 2.72062794 10.7460243 2.72913784 2.27927259] [ 10.7460243 9.07135942 9.99861685 10.25109059] [ 2.72913784 9.99861685 1.34064065 0.78942207] [ 2.27927259 10.25109059 0.78942207 1.24008081]]
The off-diagonal elements show the correlation between the forces in the different methods, while the diagonal shows the magnitude of the largest force component for each method.
DFT with the DoubleZetaPolarized (DZP) basis set is the most accurate method − but also the most time-consuming one. So, it would be nice if a pre-optimization with a simpler method could provide a better starting guess for the DZP calculation, such that the calculation time is reduced substantially.
The last line in the output above gives the correlation of the
DZP forces with the other methods. The value 1.24 is the magnude of the
DZP forces in the original (un-optimized) si_nw45.py geometry. To get any benefit
of pre-optimizing the geometry with a faster method, the correlation of the forces in the
two methods must be smaller than this value. Only the DFT calculation with
the DoubleZeta basis set fulfills this criterion, but the reduction of the
computational cost by pre-optimizing with this method is marginal.
|
|
Note |
|---|---|
|
Optimizing the geometry with the tight-binding method first has no noticeable effect on the results presented above. |
In order to relax the geometry with DFT-GGA-DZP reopen the Script Generator.
|
|
Tip |
|---|---|
|
The |
Remove all Forces blocks, and keep only the last calculator block.
Add an OptimizeGeometry block.
Change the output file to si_nw_gga.nc.
Transfer the calculation to the Job Manager and start the calculation.
The job will take around an hour to finish.
|
|
Note |
|---|---|
|
In relation to the discussion above about pre-optimization, it is interesting to note that the relaxation goes through 17 optimization steps. If we start the relaxation from a geometry optimized with the tight-binding method, this number increases to 23. Thus, indeed there is no gain in pre-optimizing this particular system. This is not to say this approach is never useful; if the initial geometry is very far away from equillibrium, the tight-binding method can be used to quickly get a better starting guess. |