Z2PackDev / Z2Pack

A tool for calculating topological invariants.
https://z2pack.greschd.ch
GNU General Public License v3.0
84 stars 51 forks source link

Surface Projection #114

Closed QuantumInformationGeneral closed 3 years ago

QuantumInformationGeneral commented 3 years ago

Hi,

I would like to project on the surface whose normal vector is [111] and calculate the HWC flow along either one direction of the plane as a function of k.

system = z2pack.tb.System(model) The tb model was obtained from wannier90_hr.dat(I defined pos, uc and occ properly based on my system)
E.g. uc=np.array([[a,0,0],[0,a,0],[0,0,c]])

I created the projection function, which defines the 2d k-surface, satisfying \vec{k} \dot \vec{D}=2\pi*n. (\vec{D}=1/2[a,a,c], n is the integer)

First-principles codes usually don’t allow for an arbitrary shape of the surface. For ABINIT for example, each line must be straight. VASP only allows for lines which are straight and parallel to one of the reciprocal lattice directions.

My projection function f(t_1, t_2), satisfies the f(t_1,0)=f(t_1,1)+G and I double-checked. However, I got this ValueError below, which is saying that the above equation, f(t1,0)=f(t1,1)+G is not satisfied.

ValueError: Start and end points of the line differ by [ 0. 1.86916016 -0.44664156], which is not an inverse lattice vector.

Here, [ 0. 1.86916016 -0.44664156] = [0, 2pi/a, -2pi/c], which is nothing but one of the reciprocal lattice vector, \vec{G}. Would you explain what is wrong with it?

greschd commented 3 years ago

Hi,

Z2Pack uses reduced reciprocal coordinates everywhere, so the reciprocal lattice vectors should have integer values.

If you are looking for a code that can do arbitrary shapes, it is possible with the interface to Quantum ESPRESSO.

QuantumInformationGeneral commented 3 years ago

Thanks!