Skip to content

Commit

Permalink
Merge pull request #2572 from jtkrogel/nx_kspacing
Browse files Browse the repository at this point in the history
Nexus: enable setting kgrid via minimum k-point spacing
  • Loading branch information
ye-luo committed Jul 6, 2020
2 parents b57ab1a + a23bbb4 commit 38afc95
Showing 1 changed file with 29 additions and 3 deletions.
32 changes: 29 additions & 3 deletions nexus/lib/structure.py
Original file line number Diff line number Diff line change
Expand Up @@ -3382,7 +3382,7 @@ def tile_points(self,points,axes,tilemat,tilevec=None):
#end if
matrix_tiling = abs(tilemat-diag(diag(tilemat))).sum()>0.1
if not matrix_tiling:
return self.tile_points_simple(points,axes,diag(tilemat))
return self.tile_points_simple(points,axes,diag(abs(tilemat)))
else:
if not isinstance(axes,ndarray):
axes = array(axes)
Expand Down Expand Up @@ -3445,6 +3445,9 @@ def tile_points_simple(self,points,axes,tilevec):
else:
t = ti
#end if
if t.min()<0:
self.error('tiling vector cannot be negative\ntiling vector provided: {}'.format(t))
#end if
ntpoints = npoints*int(round( t.prod() ))
if ntpoints==0:
tpoints = array([])
Expand Down Expand Up @@ -3740,12 +3743,35 @@ def clear_kpoints(self):
#end def clear_kpoints


def add_kmesh(self,kgrid,kshift=None,unique=False):
def kgrid_from_kspacing(self,kspacing):
kgrid = []
for ka in self.kaxes:
km = np.linalg.norm(ka)
kg = int(np.ceil(km/kspacing))
kgrid.append(kg)
#end for
return tuple(kgrid)
#end def kgrid_from_kspacing


def add_kmesh(self,kgrid=None,kshift=None,unique=False,kspacing=None):
if kspacing is not None:
kgrid = self.kgrid_from_kspacing(kspacing)
elif kgrid is None:
self.error('kgrid input is required by add_kmesh')
#end if
self.add_kpoints(kmesh(self.kaxes,kgrid,kshift),unique=unique)
#end def add_kmesh


def add_symmetrized_kmesh(self,kgrid,kshift=(0,0,0)):
def add_symmetrized_kmesh(self,kgrid=None,kshift=(0,0,0),kspacing=None):
# find kgrid from kspacing, if requested
if kspacing is not None:
kgrid = self.kgrid_from_kspacing(kspacing)
elif kgrid is None:
self.error('kgrid input is required by add_kmesh')
#end if

# get spglib cell data structure
cell = self.spglib_cell()

Expand Down

0 comments on commit 38afc95

Please sign in to comment.