Hatree_Fock自洽过程尽可能向量化优化

import numpy as np
from numpy import exp, pi
from numpy.linalg import eigh
import matplotlib.pylab as plt
from numba import njit@njit
def Fermi(E, mu, T):return 1/(np.exp((E - mu)/T) + 1)@njit
def tridiag_block_matrix(H, c, u, d):# c, u, d are center, upper and lower blocksN, _ = H.shapen, _ = c.shapeH[0:n, 0:n] = cfor i in range(n, N, n):H[i:i+n, i:i+n] = cH[i-n:i, i:i+n] = dH[i:i+n, i-n:i] = ureturn H@njit
def H0_Graphene(H, k, t = -1):A = np.array([[0, t*(1+exp(-1j* k))], [t*(1+ exp(1j*k)), 0]])B = np.array([[0, 0], [t, 0]])return tridiag_block_matrix(H, A, B, B.T)# Hatree_Fork 自洽计算过程
def Hatree_Fock(H, ks, Nup_avg, Ndown_avg, U, T = 0.001, mu = 0,  ncc = 20):m, _ = Nup_avg.shapenk = ks.sizefor ic in range(ncc):Nup_avg_tmp = np.zeros((m,m), dtype='double')Ndown_avg_tmp = np.zeros((m,m), dtype='double')for i in range(nk):Hk0 = H0_Graphene(H, ks[i])Hk_up = Hk0 + U * (Ndown_avg - 0.5 * np.eye(m))Hk_down = Hk0 + U * (Nup_avg - 0.5 * np.eye(m))Ek_up, Ak_up = eigh(Hk_up)Ek_down, Ak_down = eigh(Hk_down)fermi_up = Fermi(Ek_up,mu,T).reshape(1,m)fermi_down = Fermi(Ek_down,mu,T).reshape(1,m)Nk_up = (Ak_up*Ak_up.conj()*fermi_up).sum(axis=1,dtype='double')Nk_down = (Ak_down*Ak_down.conj()*fermi_down).sum(axis=1,dtype='double')Nup_avg_tmp += np.diag(Nk_up)Ndown_avg_tmp += np.diag(Nk_down)Nup_avg = Nup_avg_tmp/nkNdown_avg = Ndown_avg_tmp/nkif ic % 5==0:print(f"已经完成{ic}次迭代")return Nup_avg, Ndown_avgdef calculated_band():N = 128m = 2 * NH = np.zeros((m, m), dtype = np.complex64)nk = 128ks = np.linspace(0, 2*pi, nk)U = 1.5Nup_avg = 0.5 * np.eye(m)Ndown_avg = 0.5 * np.eye(m)Nup_avg[0, 0] = 0.7Ndown_avg[0, 0] = 0.3Nup_avg[-1, -1] = 0.3Ndown_avg[-1, -1] = 0.7Nup_avg, Ndown_avg = Hatree_Fock(H, ks, Nup_avg, Ndown_avg, U)bandUp = np.zeros((nk, m))bandDown = np.zeros((nk, m))for i in range(nk):Hk0 = H0_Graphene(H, ks[i])Hk_up = Hk0 + U * (Ndown_avg - 0.5 * np.eye(m)) Hk_down = Hk0 + U * (Nup_avg - 0.5 * np.eye(m))Ek_up, _ = eigh(Hk_up)Ek_down, _ = eigh(Hk_down)bandUp[i, :] = Ek_upbandDown[i, :] = Ek_downplt.plot(bandUp, color = "red")plt.plot(bandDown, color = "blue")plt.show()plt.plot(Nup_avg - Ndown_avg)plt.show()# print(Nup_avg[0, 0], Nup_avg[-1, -1])# print(Ndown_avg[0, 0], Nup_avg[-1, -1])if __name__ == '__main__':calculated_band()

Python 石墨烯边缘磁性Hatree_Fock计算相关推荐

  1. 对端边缘云网络计算模式:透明计算、移动边缘计算、雾计算和Cloudlet

    对端边缘云网络计算模式:透明计算.移动边缘计算.雾计算和Cloudlet 概要 将数据发送到云端进行分析是过去几十年的一个突出趋势,推动了云计算成为主流计算范式.然而,物联网时代设备数量和数据流量的急 ...

  2. python 科学计算基础教程电子版-自学Python 编程基础、科学计算及数据分析

    自学Python 编程基础.科学计算及数据分析 epub pdf mobi txt 下载 自学Python 编程基础.科学计算及数据分析 epub pdf mobi txt 下载 ☆☆☆☆☆ 李金 著 ...

  3. 全面对比 MATLAB、Julia、Python,谁在科学计算中更胜一筹?

    数百种编程语言,各有优劣,各自也都有自己最为适用的场景.那么就科学计算领域而言,主流的 MATLAB.Julia.Python 会有哪些最为独特的优势呢?又存在哪些让开发者无力的缺陷?在本文中,我们将 ...

  4. 梯度、梯度法、python实现神经网络的梯度计算

    [机器学习]梯度.梯度法.python实现神经网络的梯度计算 一.python实现求导的代码: 二.what is 梯度 三.使用梯度法寻找神经网络的最优参数 四.神经网络的梯度计算 一.python ...

  5. Python数据分析学习笔记:计算向量夹角

    Python数据分析学习笔记:计算向量夹角 通过计算两个向量夹角了解两个向量之间的相关性. # 计算向量夹角import numpy as npdef included_angle(a, b):a_n ...

  6. Python数据分析学习笔记:计算相关系数

    Python数据分析学习笔记:计算相关系数 1.相关系数概念 相关系数,或称线性相关系数.皮氏积矩相关系数(Pearson product-moment correlation coefficient ...

  7. python怎么算积分_python计算积分

    python有多个方法计算积分,下面介绍其中三个,以下式为例: 方法一:直接用numpy计算 start = 1 stop = 2 length = 101 x = np.linspace(start ...

  8. python修改ABAQUS的inp计算文件

    python修改ABAQUS的inp计算文件 这里的函数可以与上一个博客Matlab-python-ABAQUS数据交互及联合使用的函数接口相互配合和集成,实现matlab与Abaqus进行联合仿真计 ...

  9. python编程入门与案例详解-自学Python 编程基础、科学计算及数据分析

    自学Python 编程基础.科学计算及数据分析 epub pdf mobi txt 下载 自学Python 编程基础.科学计算及数据分析 epub pdf mobi txt 下载 ☆☆☆☆☆ 李金 著 ...

最新文章

  1. SQL Server 2008基于策略的管理
  2. Data Mining Tools
  3. mysql union 用法 update_mysql---union的用法
  4. 基本功:超全面 IO 流教程,小白也能看懂
  5. jmeter 跨线程执行变量
  6. uboot 之环境变量
  7. [一定要看完]住在隔壁的刚毕业的大学生小夫妻
  8. 搭建自己的聊天室平台、公司内部聊天平台,Rocket.Chat搭建及使用
  9. 固态和机械硬盘组raid_相同大小的固态硬盘和机械硬盘组RAID1会不会影响固态硬盘的速度?...
  10. JavaScript基本语法
  11. 蒙特卡洛之布丰投针(python实现)
  12. python习题_Python练习题-for循环练习
  13. 台湾成功大学起诉苹果Siri专利侵权 库克哥凌乱了
  14. [2018.11.05 T1] 喝牛奶
  15. 大数据行业前景_大数据未来展望
  16. 如何选择合适的统计学方法
  17. C语言字符串使用指南
  18. 罗马数字转换成阿拉伯数字
  19. 解决“手机能胜场使用校园网 笔记本电脑连接不上校园网或者连接上不可用”的问题
  20. xss平台模块代码分析--默认模块

热门文章

  1. HDU 6595 Everything Is Generated In Equal Probability (期望dp,线性推导)
  2. 图的遍历(BFS、DFS)
  3. 网络安全实验室|网络信息安全(基础关)
  4. 苹果6plus几核处理器_全是回忆!苹果12年进化史:21部iPhone你用过哪一款?
  5. 赋值运算符重载和拷贝构造函数
  6. QTP中的Action有什么作用?有几种?
  7. System.Diagnostics.Process.Start的妙用
  8. 警惕股票连续涨停后的跌停情况,需再三注意!(实例)
  9. JS: || 和 ??
  10. VRRP和DHCP的设置