平行四边形区域均匀取样方法

对于六角形布里渊区,在计算的时候,通常会将他平移成平行四边形,如下所示

一般的,给定平行四边形的两条矢量G1,G2,我们要在平行四边形内生成均匀的点。采样如下算法,这其实就是利用平面向量斜坐标离散基矢构造出来的

import numpy as np
import matplotlib.pyplot as plt

G1 = np.array([0  ,-1.7321])        # Reciprocal Lattice 1
G2 = np.array([1.5,-0.8660])        # Reciprocal Lattice 2


n1 = 200                            # Reciprocal Lattice 1 上的格点数
n2 = 200                            # Reciprocal Lattice 2 上的格点数
n = n1*n2                           # 总的格点数

e1 = G1/n1
e2 = G2/n2

KPOS = np.zeros((n1,n2,2))

for i in range(n1):
    for j in range(n2):
        KPOS[i][j][:] = i*e1 + j*e2

KPOS = KPOS.reshape(n,2)

output = open('KPOINTS.txt','w')
for i in range(n):
    #plt.scatter(KPOS[i][0],KPOS[i][1])
    output.write("%f %f %f\n" %(KPOS[i][0],KPOS[i][1],0.0))
#plt.show()

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值