计算物理_哈密顿量对k点的导数
大家好,我是做计算物理研究的。我想向大家请教一个编程的问题。在第一布里渊区内采用Monkhorst方法建立起了k网格后,每个k点上都各自建立起了一个Hamiltonian Matrix,现在我想求每个k个点上的Hamiltonian对该k点的导数。我的想法是用离散化的方法直接计算,形式如下。
/(k-k')
其中k和k'为两个相邻的k个点坐标;k'为k点的下一个临近点。
我想请教的问题是:
1. 这种离散化的求导方法是否正确?
2. 在k网格边缘上的k点的Hamiltonian,如何对k点求导数呢?边缘上的k点的下一个临近的k点已经跑到第一布里渊区外了,而Monkhorst方法只计算了第一布里渊区内的k点,并没有计算第一布里渊区外的k点。这样一来,第一布里渊区外的k点上的Hamiltonian也就不被计入了。如果不被计入,那要如何计算位于k网格边缘上的k点的Hamiltonian对其的导数呢?
望大家不吝赐教,谢谢啦。
可以,这就是有限差分。了解一下不同差分格式,比如向前差分,向后差分,中心差分。 li913 发表于 2019-4-21 14:32
可以,这就是有限差分。了解一下不同差分格式,比如向前差分,向后差分,中心差分。 ...
非常感谢你的回复。
只是我还有个疑问。在边界上的k点的Hamiltonian如何对k点求导数呢?向前的话,邻近的k点已经跑到第一布里渊区外了,而第一布里渊区外的k点,Monkhorst根本没有计入,这个信息是缺失的。向后的话,以此类推,位于原点上的k点的Hamiltonian又如何对k点求导数呢?向后邻近的k点也跑到第一布里渊区外了。这与前者遇到的情况是一样的。
另外,与相场模拟不同(有周期性边界条件,原点处的信息与边界处的信息相同)。第一布里渊区原点处k点上的Hamiltonian与边界处Hamiltonian的信息是不同的。我无法把溢出第一布里渊区的k的上的Hamiltonian按周期性边界条件再等同于原点处k点上的Hamiltonian的。
不知要如何处理这个问题呢?谢谢啦,盼复。 左右边界用不同的差分格式。左边界:[(f(1)-f(0)]/h, 右边界:/h,其余地方用中心差分。
当然,差分格式很多,还有更高阶的,在边界附近需要退化至低阶。 li913 发表于 2019-4-21 21:32
左右边界用不同的差分格式。左边界:[(f(1)-f(0)]/h, 右边界:/h,其余地方用中心差分。
当然 ...
好的,非常感谢你的指点。
页:
[1]