Choosing k-point meshes

To create consistent k-meshes for different supercells tt is convinient to use spacing between k-points in reciprocal space - KSPACING

Typical values

  • for insulators: 0.3 A-1
  • for metals: 0.2 A-1
  • for DOS: 0.1-0.15 A-1

In [1]:
import sys
sys.path.append('/home/aksenov/Simulation_wrapper/siman')
from geo import calc_k_point_mesh

rprimd = [ 
[ 11.191118,   0.028037,   1.832131],
[ -0.506595,   9.927410,  -1.680211],
[  0.091572,   0.056075,  10.385107],
]

calc_k_point_mesh(rprimd, kspacing = 0.3)


-- I recommend k-point mesh: (2, 2, 2) with k-spacings: [ 0.28  0.32  0.31] 
-- Other options are: 
-- Mesh          |    k-spacings           
-- (1, 1, 1)     |    [ 0.56  0.63  0.62]        
-- (1, 1, 2)     |    [ 0.56  0.63  0.31]        
-- (1, 1, 3)     |    [ 0.56  0.63  0.21]        
-- (1, 2, 1)     |    [ 0.56  0.32  0.62]        
-- (1, 2, 2)     |    [ 0.56  0.32  0.31]        
-- (1, 2, 3)     |    [ 0.56  0.32  0.21]        
-- (1, 3, 1)     |    [ 0.56  0.21  0.62]        
-- (1, 3, 2)     |    [ 0.56  0.21  0.31]        
-- (1, 3, 3)     |    [ 0.56  0.21  0.21]        
-- (2, 1, 1)     |    [ 0.28  0.63  0.62]        
-- (2, 1, 2)     |    [ 0.28  0.63  0.31]        
-- (2, 1, 3)     |    [ 0.28  0.63  0.21]        
-- (2, 2, 1)     |    [ 0.28  0.32  0.62]        
-- (2, 2, 2)     |    [ 0.28  0.32  0.31]        
-- (2, 2, 3)     |    [ 0.28  0.32  0.21]        
-- (2, 3, 1)     |    [ 0.28  0.21  0.62]        
-- (2, 3, 2)     |    [ 0.28  0.21  0.31]        
-- (2, 3, 3)     |    [ 0.28  0.21  0.21]        
-- (3, 1, 1)     |    [ 0.19  0.63  0.62]        
-- (3, 1, 2)     |    [ 0.19  0.63  0.31]        
-- (3, 1, 3)     |    [ 0.19  0.63  0.21]        
-- (3, 2, 1)     |    [ 0.19  0.32  0.62]        
-- (3, 2, 2)     |    [ 0.19  0.32  0.31]        
-- (3, 2, 3)     |    [ 0.19  0.32  0.21]        
-- (3, 3, 1)     |    [ 0.19  0.21  0.62]        
-- (3, 3, 2)     |    [ 0.19  0.21  0.31]        
-- (3, 3, 3)     |    [ 0.19  0.21  0.21]        
Out[1]:
(2, 2, 2)

Run calculation with explicitly provided k-point mesh; parameter ngkpt


In [3]:
from calc_manage import add_loop
import header
header.varset['static'].potdir = {3:'Li'} # provide potential

add_loop('Li2', 'static', 1, input_geo_file = 'in/Li2.POSCAR', it_folder = 'Li', ngkpt = (12, 12, 12))


-- add_loop(), you provided *ngkpt*, I add (12, 12, 12) to description of Li2 for kspacing 0.235 

-- You provided the following geo file explicitly  in/Li2.POSCAR ; Version of file does not matter, I use *curver*= 1 as a new version 

-- check_kpoints(): Kpoint   mesh is:  (12, 12, 12) 

-- check_kpoints(): The actual k-spacings are  [ 0.17  0.17  0.17] 

-- Attention! ngkpt =  (12, 12, 12)  is adopted from struct_des which you provided for it  Li2  and kspacing =  0.235 


Calculation ('Li2', 'static', 1) successfully created

 

Out[3]:
'Li2'

In [ ]: