Band structure - bad Brillouin zone


Just Got Here
Dear All,

I have been trying to calculate the band structure of tin for a while without success so far. I use version 6.1 on Linux, but I get the same error with 6.0 in serial and in parallel mode as well. The input is the following:






start Tin
title "White Tin Band Structure"

permanent_dir ./perm
scratch_dir ./scratch

geometry center noautosym noautoz print
 system crystal 
lat_a 5.80
lat_b 5.80
lat_c 3.15
alpha 90.0
beta 90.0
gamma 90.0
end
Sn 0.0 0.0 0.0
Sn 0.5 0.5 0.5
Sn 0.5 0.0 0.25
Sn 1.0 0.5 0.75
end

nwpw
 ewald_rcut 3.0
ewald_ncut 8
monkhorst-pack 3 3 3
end
task band energy

nwpw
 virtual 16
brillouin_zone
zone_name bctpath
path bct gamma x m gamma
end
zone_structure_name bctpath
end
task band structure





I get the band energy, so the first task seems to complete without a problem, but whatever I try, I cannot get the second part to produce anything meaningful. Instead, I get:






Total BAND energy   :  -0.1905413631E+02

Self-Consistent Potential Generated

output psi filename:./perm/Tin.movecs
band structure calculation


== Optimizing Brillouin Zone Point: 1 ==

Brillioun Zone Points do not match!
NB = 14 not equal 1

pseudopotential is not correctly formatted---bad brillioun zone:
Sn.cpp

Generated formatted_filename: ./perm/Sn.cpp
Brillioun Zone Vectors do not match!

pseudopotential is not correctly formatted---bad brillioun zone:
Sn.cpp

Generated formatted_filename: ./perm/Sn.cpp
Brillioun Zone Vectors do not match!




where the last four lines keep repeating in the output file until I kill the job. If I leave it, it produces thousands of the same error message. The same task is running fine with diamond which is an example in the documentation, but I could not figure out what non-trivial options I should change for white tin. BTW, the same error message appears in the case of diamond too, but just once for each Brillouin zone points, and then the calculation is going on until it finishes successfully. Does anyone have any idea how to interpret these error messages and what could be the solution or workaround? Tin is special for some reason, or is this a more general problem?

Also, there are a number of options, which I am quite uncertain about, because the documentation hardly mentions them. A few of these are:




set nwpw:kbpp_ray .true.
set nwpw:kbpp_filter .true.
# turn on pseudopotential filtering. ??? When is it relevant? What is it exactly doing?

smear fermi
scf anderson outer_iterations 0 kerker 2.0
# The documentation only says that these are the options "recommended for running fractional occupation" Some more reference?

np_dimensions -1 -1 4
# Why 4? Sometimes it is 6. Any description anywhere? In this forum, I could only find that "the third dimension refers to the distribution over k-space vectors (parallelization similar to VASP)." Apart from repeating this answer, I couldn't explain to anyone what is this number after all.




I really appreciate the lots of features that NWChem offers, but if they are not documented, they just appear in some examples, it is not easy to figure out whether you need them or not, with the same settings, or not, unless you need to do the exact same calculation that is in the the example. Apart from the documentation, so far I couldn't find any other source than this forum and Google, and I have lots of questions. Initially I was hoping for a somewhat more efficient way of setting up an input with optimal arguments, where you actually know what you are doing. Otherwise I like the software, but with all due respect, the documentation needs to be updated. I am reluctant to publish its output if I don't even fully understand the input. Until then any suggestions and hints regarding the above options are welcome.

Many thanks in advance!!!
Csaba

Gets Around
It looks like bct path is not implemented/working. You'll need to enter them by hand.

Gets Around
The following rtdb variables

set nwpw:kbpp_ray .true.
set nwpw:kbpp_filter .true.

are used to tell the code how to format the psps to the planewave grid. Setting nwpw:kbpp_ray tells the code to calculate the 1d Bessel transforms on to a 1d grid and then using interpolation to the planewave grid. The reason for doing this is that it's faster than the default. Setting nwpw:kbpp_filter causes the formatting to damp the psp Fourier coefficients near the Fermi sphere. This option is useful for optimizing unit cells where the plane-wave basis set changes from one geometry step to the next.

Gets Around
The nwpw module parallelizes over the FT grids, orbitals, and kpoints (for BAND). For the PSPW code, this parallelization is fully functional and the code automatically figures out how it distributes the cpus. For the BAND code, the orbital parallelization hasn't been turned on, and because of this I've just kept the default parallelization to be just over the FT grids.


Therefore for BAND it's reasonable to set the 3rd column in np_dimension to the number of kpoints, i.e.

np_dimensions -1 -1 nkpoints

Just Got Here
Thank you for your explanation and for the workaround you suggested.

Unfortunately it is still not working. I modified the relevant part of the input the following way just for the sake of a test:




nwpw
 virtual 16
brillouin_zone
zone_name bctpath
kvector 0.00 0.00 0.00
kvector 0.05 0.05 0.05
kvector 0.10 0.10 0.10
end
zone_structure_name bctpath
end
task band structure




This resulted in a similar error message, though this one does not repeat itself endlessly, but causes the code to crash as you see:




Total BAND energy  : -0.1905413631E+02

Self-Consistent Potential Generated

output psi filename:./perm/Tin.movecs
band structure calculation


== Optimizing Brillouin Zone Point: 1 ==

Brillioun Zone Points do not match!
NB = 14 not equal 1

pseudopotential is not correctly formatted---bad brillioun zone:
Sn.cpp

Generated formatted_filename: ./perm/Sn.cpp
random planewave guess, initial psi:
Tin.bmovecs
- spin, nalpha, nbeta: 1 24
0

input psi filename:./perm/Tin.bmovecs
Warning - Orthogonalization performed, spin,zone: 1 1
       - error(before)=  0.301336E+01 (  0.209866E+02)
- error(after)= 0.355271E-14 ( 0.240000E+02)
- 10 steepest descent iterations performed
0:Segmentation Violation error, status=: 11
(rank:0 hostname:comp263.private.dns.zone pid:1774):ARMCI DASSERT fail. ../../ga-5-1/armci/src/common/signaltrap.c:SigSegvHandler():310 cond:0
 0: ARMCI aborting 11 (0xb).




The same happens when I calculate the DoS right after the energy calculation with a block like this:




nwpw
 cg
virtual 16
dos-grid 3 3 3
end
task band dos


Forum >> NWChem's corner >> General Topics