没有合适的资源?快使用搜索试试~ 我知道了~
OO*SoftwareX 7(2018)107原始软件出版物Ergo:一个用于线性标度电子结构计算的开源程序Elias Rudberga,*,Emanuel H. Rubenssona,Pawestern Saigeekb,Anastasia Kruchininaaa瑞典乌普萨拉大学信息技术系科学计算部,邮编751 05B PS Consulting,ul. Zaporoska 8/4,30-389克拉科夫,波兰ar t i cl e i nf o文章历史记录:2017年12月29日收到收到修订版,2018年3月17日接受,2018年保留字:电子结构量子化学Kohn–Sham density functionala b st ra ctErgo是一个C++程序,用于使用高斯基组的全电子该程序使用的算法的计算成本与系统的大小线性增加的所有部分的计算,包括计算的Fock/自旋限制和非限制的计算,culations的支持,以及纯和混合密度泛函。该程序还支持最高占据分子轨道(HOMO)和最低未占据分子轨道(LUMO)矢量的线性标度计算。本文简要介绍了代码的组织方式,并提供了如何使用代码的示例版权所有©2018作者.由爱思唯尔公司出版这是CC BY许可下的开放获取文章(http://creativecommons.org/licenses/by/4.0/)中找到。代码元数据当前代码版本3.6用于此代码版本的代码/存储库的永久链接https://github.com/ElsevierSoftwareX/SOFTX-D-18-00001法律代码许可证GPL v3使用git的代码版本控制系统使用C++、C、BLAS、LAPACK、autoconf、automake的编译要求、操作环境依赖性Linux/MacOS/其他类Unix系统如果可用,链接到开发人员文档/手册http://ergoscf.org/问题支持电子邮件info@ergoscf.org1. 动机和意义电子结构计算在物理学、化学和材料科学等广泛的科学学科中具有重要意义。在这篇文章中,我们描述了Ergo,一个开源程序,可以 使 用 Hartree-Fock ( HF ) 或 Kohn-Sham 密 度 泛 函 理 论 ( KS-DFT)模型进行电子结构计算HF和KS-DFT模型的直接实现导致计算成本随系统大小的立方缩放,(N3),或者更糟,其中N是所研究系统中的原子数。许多研究致力于各种线性缩放的发展,(N),方法使该方法也适用于较大的分子系统[1]。Ergo计划通讯作者。电子邮件地址:elias. it.uu.se(E. it.uu.se(E.H. Rubensson),pawsa0@gmail.com(P. Sajerek),anastasia. it.uu.se(A. Kruchinina)。https://doi.org/10.1016/j.softx.2018.03.005使用高斯基集,在HF或KS-DFT计算中对所有部分使用这种线性缩放算法Ergo为计算的不同部分实现了许多线性缩放算法,包括库仑相互作用的多极方法[2],HF交换和KS-DFT交换相关矩阵直接以稀疏形式的线性缩放构造[3,4],以及具有严格误差控制的密度矩阵纯化[5]和自动停止标准[6]。稀疏矩阵使用分层块稀疏矩阵数据结构进行存储和操作[7]。除了作为与电子结构计算相关的方法开发研究的平台外,Ergo代码的先前版本已用于例如研究石墨烯纳米带的性质[8],用于计算在研究与应用于大型蛋白质类系统时不同种类的密度泛函相关的计算挑战时[11]。2352-7110/©2018作者。由爱思唯尔公司出版这是CC BY许可下的开放获取文章(http://creativecommons.org/licenses/by/4.0/)。可在ScienceDirect上获得目录列表SoftwareX期刊主页:www.elsevier.com/locate/softx108E. Rudberg等人/SoftwareX 7(2018)107−2. 软件描述Ergo主要用C++编写,不同KS-DFT泛函的部分代码用C编写该程序通常在类似Linux/Unix的环境中从命令行运行该执行生成具有诸如计算的总能量和偶极矩的结果的文本文件,以及包含计算的电子密度的二进制文件,该二进制文件可以用作稍后的其他计算的输入。2.1. 软件构架源代码分为一组模块,每个模块位于单独的子目录中。提供主要功能的模块如下:basisset:用于管理高斯型轨道基集的代码;在basis目录中可以找到一组通用基集的规范文本文件。densfromf:使用基于块稀疏的线性缩放方法从Fock矩阵构造密度矩阵的代码矩阵-矩阵乘法dft:KS-DFT泛函的实现,其中KS-DFT交换相关势矩阵和交换相关贡献直接以稀疏形式对线性响应计算进行了描述。积分:与电子排斥积分相关的代码,包括线性标度库仑(J)和Hartree-Fock交换(K)矩阵构造。matrix:hierarchical matrix library(HML)[7]用于块稀疏矩阵运算。scf :管理自洽字段(SCF)迭代的代码。虚拟基类SCF_general用于自旋受限和非受限计算所需的功能,具有SCF_restricted和SCF_restricted类中特定于这些情况的功能。test:单元测试,测试其他模块的功能。source/test目录中的每个文件都提供了一个单独的可执行程序,用于测试其他模块中的某些特定功能部分。实用程序:其他模块使用的实用程序,包括HML格式的转换。utilities_basic:其他模块使用的基本实用程序,不依赖于矩阵库。还有以下模块,对于主要的线性缩放功能不太重要:ci:实验组态相互作用(CI)实现,可在HF计算后使用。electron_dynamics:简单的电子动力学实现,到目前为止没有截断,因此不是线性缩放。ergo_scripted.cc中的主程序使用yacc/bison和flex进行输入解析。共享内存并行化在代码的某些部分使用Pthreads处理,在其他一 些 部 分 使 用 OpenMP 处 理 。 使 用 的 默 认 线 程 数 通 过 检 查OMP_NUM_THREADS环境变量来确定。线程的数量也可以使用输入文件中的参数为代码的各个部分指定,例如J_K.threads_J= 4。源代码注释是以与Doxygen兼容的格式编写的;运行doxygen命令会在documentation目录中生成HTML格式的文档。2.2. 配置、编译和测试套件Ergo 通 过 运 行configure 脚 本 进 行 配 置 正在运 行 “” 。/configure-h“”给出了可用配置选项的列表。在运行configure脚本之后,使用make构建程序,生成的主可执行文件ergo最终位于源目录中。然后可以使用“make check”运行测试套件。 每个测试都在一个单独的目录中运行,这样使用“makecheck-j”的并行make也可以工作。configure脚本和makefile是使用autoconf和automake工具生 成 的 , 并 由 config-ure.ac 和 Makefile.am 文 件 控 制 。bootstrap.sh脚本包含相关的autoconf和automake命令。有关Ergo如何为不同系统配置不同的编译器优化标志等的示例,请参见con-fig_examples. txt文件。代码覆盖率检查可以使用--enable-coverageconfigure选项打开然后,在运行测试套件之后,可以使用诸如gcov或lcov之类的工具来检查测试覆盖率。2.3. 软件功能Ergo程序的主要功能是使用线性标度技术进行大规模HF和KS-DFT计算的能力支持自旋限制和非限制计算该程序进行全电子计算,有效的核心潜力没有使用。稀疏矩阵和其他稀疏数据结构用于计算的所有部分,导致计算时间和内存使用与系统大小的线性缩放该程序使用量子化学程序中常见的高斯型轨道(GTO)基组,使其能够直接将结果与使用此类基组的其他量子化学程序进行比较。在每次SCF迭代中,电流密度矩阵被写入一个名为density.bin的文件,该文件还包括有关所用基集的信息。这样保存的密度文件可以作为另一个计算的开始猜测如果新的计算使用不同的基组,则在考虑所保存密度的基组信息的情况下执行基组投影Fock/Kohn-Sham矩阵的构造在KS-DFT计算中,交换线性缩放密度矩阵的构建是使用密度矩阵纯化和严格的误差控制[5],使用最近开发的自动停止标准[6]来实现的。实施的纯化方法还包括非单调扩展[12]。实现了一些常见的KS-DFT泛函,包括局域密度近似(LDA)和广义梯度近似(GGA)泛函,如BLYP和PBE。包括一部分HF交换的混合泛函如B3 LYP和PBE 0也是可用的,以及范围分离的混合泛函如CAM-B3 LYP。有关交换相关矩阵计算的详细信息,请参见[4]。注意,混合泛函可以帮助缓解纯泛函遇到的HOMO-LUMO间隙太小的问题[11 ]第10段。迭代子空间(DIIS)[13]方案中的直接反演用于SCF收敛加速。在DIIS不起作用的情况下,如果能量增加,则代码采用具有减小的步长的阻尼。当矩阵FDS SDF的最大幅度元素小于所选SCF收敛阈值时,SCF过程被认为是收敛的,参见[4]。最高占据分子轨道(HOMO)和最低未占分子轨道(LUMO)···········E. Rudberg等人/SoftwareX 7(2018)107109使用应用于密度矩阵纯化程序[14]中的中间矩阵的Lanczos方法来实现向量净化过程作为本征值滤波器工作,在感兴趣的本征值周围的本征谱中提供良好的分离。使用的浮点运算精度可以使用--with-precision配置选项进行设置默认值为双精度。当需要检查浮点舍入误差是否影响计算结果时,使用长双精度或四精度可能很有用。为了减少内存使用,矩阵可以在不使用时写入磁盘。此功能是使用mat.write_to_file输入选项启用的。使用tmpdir输入选项指定存储这些临时文件的目录。enable_memory_usage_output输入选项可用于在输出文件中获取计算的不同部分的内存使用信息在SCF计算之后,默认情况下,最终能量和偶极矩被写入输出文件如果需要,也可以计算Mulliken总体分析信息可以使用指定场的x、y和z分量的输入选项来考虑外部电磁场出于教育和测试目的,该程序还包括将矩阵写入矩阵市场(mtx)格式文件的功能,以及将双电子积分保存到m文件(matlab/octave格式)的功能。计算了固定电子密度下能量相对于原子核位置的梯度(然而,解释基函数随原子移动所需的所谓有关计算的电子密度和HOMO/LUMO轨道的信息可以保存到gcube和gab格式的文件中,以便使用Gabedit [15]可视化静电势和HOMO/LUMO轨道许多最常用的高斯基组的基组定义文件都可以在basis目录中找到可以从EMSL Basis Set Library [16]下载更多基组文件,并使用source/standalone/convert_basis_set_file.cc程序包含在Ergo源代码包中。如[17]中所述,在原子轨道基础上计算线性响应,允许用于自旋限制计算的极化能力和激发能的线性响应计算。然而,由于在线性响应实现的部分中仍然使用稠密矩阵,因此对于代码的该部分,不能实现完全的线性缩放Ergo代码还包括一些非线性缩放的附加功能,包括全组态相互作用(FCI)[18]和随时间变化的HF电子管动力学[19]的实验实现2.4. 如何运行和指定程序输入的示例当运行ergo可执行程序时,用户需要指定分子几何形状、要使用的基组和要执行的计算类型。如果在单个输入文件中指定了这些信息,则程序可以像这样运行./ source/ergo params/h2o_hf321g.ego或者,可以使用-m命令行选项在单独的文件中指定分子几何形状,如下所示:./来源/ergo-m mol/h2o_a.xyz params/hf321g.egoFig. 1. HF/3- 21 G计算直链烷烃链的最后一个SCF循环的计时。点和虚线参考线分别指示立方和线性缩放。使用-m选项很方便,例如,当同一组参数要应用于一组不同的分子文件时。上面使用的示例输入文件包含在Ergo源代码包中。-h命令行选项给出了所有可用输入选项及其默认值的列表,-d选项给出了给定输入参数的描述:./来源/ergo-h./源/场-d自旋极化./源/ergo-d SCF.收敛阈值计算完成后,结果将在文本文件ergoscf.out中找到,最终的电子密度将存储在二进制文件density.bin中,该文件稍后可用作其他计算的起点。3. 说明性实例3.1. Hartree–Fock图1显示了使用3- 21 G基组的Ergo进行的Hartree-Fock计算的 每 个 SCF 循 环 的 时 间用 于 计 算 的 参 数 可 在params/hf321g_for_tests.ego文件中找到,该文件对所有内容都使用默认设置,但scf.convergence_threshold值设置为大于默认值。计算是在一台配备4核Intel Core i5-6500 CPU和16GB内存的计算机上运行的,运行Fedora 27操作系统。Ergo是使用sim-ply以 默 认 方 式 配 置 和 编 译 的 。 / configure 后 接make。gcc编译器版本7.2.1已使用使用Ergo源代码包中包含的source/standalone/generate_alkane.cc最大的计算是为烷烃链与15 362个原子,对应于66 564个基函数。请注意,如果使用密集矩阵存储,这种计算量将是不可能的,因为即使是双精度的单个密集矩阵也需要超过16 GB的可用内存。3.2. HOMO和LUMO轨道的计算:水包埋蛋白质片段对经典点电荷表面效应的修正在这一节中,我们将说明分子系统与其周围真空之间的表面效应会影响分子系统110E. Rudberg等人/SoftwareX 7(2018)107(a) 周围没有点电荷。(b) 周围都是点电荷。图二. 在HF/6- 31 G ** 计算中得到的蛋白质-水体系的LUMO轨道。为了简化说明,未示出氢原子。轨道和它们在空间中的位置,我们试图通过将系统嵌入一组经典点电荷来解决这个问题[11,20]。我们通过在蛋白质片段1RVS周围添加水分子来创建分子系统,该蛋白质片段1RVS具有从蛋白质数据库获取的几何形状,对所获得的系统进行分子动力学模拟,并提取位于距离蛋白质14 μ m内的所有原子。补充材料中提供了包含蛋白质-水系统和用于包围距离蛋白质14至24 mm处的点电荷的额外水的文件我们使用高斯基组6- 31 G ** 对嵌入一组经典点电荷中的蛋白质-水系统进行./来源/ergo-m蛋白质_1RVS_and_h2o_14.xyz\-c surrounding_h2o_14_to_24.xyz \params_guess.ego#计算初始猜测密度./来源/ergo-m蛋白质_1RVS_and_h2o_14.xyz\-c surrounding_h2o_14_to_24.xyz params.ego其中params[_guess].ego文件包含Ergo程序的输入参数,特别是scf.output_homo_and_lumo_eigenvectors=1,要求在计算密度矩阵期间计算HOMO和LUMO本征向量[14]。这将生成一个文件“gabeditfile.gab ",可用于Gabedit程序中的轨道可视化[ 15 ]。图2显示了在周围有和没有经典点电荷的情况下获得的LUMO轨道。在没有周围点电荷的情况下,LUMO轨道位于水-真空束缚附近。这可以被看作是不期望的边界效应; LUMO预期位于蛋白质片段上。该图说明,将系统嵌入代表周围水的一组经典点电荷中确实解决了这与以前的研究结果一致[11,20]。在这个例子中,条件是如果有足够的存储器可用,则也可以处理较大的蛋白质片段和/或由于Ergo程序的线性缩放功能,对于足够大的系统,计算工作量与系统大小的缩放应该接近线性4. 影响正如第1节所讨论的,Ergo程序已经被证明在许多研究领域是有用的该计划也可以预期,以促进未来的研究,其中涉及大规模的电子结构计算。例如,在最近关于缩减比例的HF后方法的工作中,已经发现初始HF计算可能比随后的HF后处理更昂贵[21]。Ergo代码也可以作为与量子化学方法相关的持续研究的基本框架,因为它可以很容易地修改和扩展。关于例如单电子和双电子积分、多极近似、密度矩阵方法和分层稀疏矩阵运算的现有功能对于许多种类的方法开发可以是有用的。特别是,Ergo为进一步研究线性标度电子结构计算中的误差控制提供了坚实的基础,因为它已经包括了欧几里德矩阵范数截断[22]和具有严格误差控制的密度矩阵纯化[5]的实现结合用于自动选择Fock/Kohn-Sham矩阵计算[ 23 ]中使用的阈值的方法,这应该可以通过跟踪所占用的不变子空间的旋转[ 24 ]来实现整个SCF计算的在Bowler和Miyazaki [1]的综述第5节中,Ergo被列为具有线性缩放功能的八个代码之一。其他最近的综述论文[25,26]也指出了Ergo代码一份关于将纯密度泛函和混合密度泛函应用于大型蛋白质样系统时的挑战的报告[11]使用Ergo代码进行,导致其他研究人员进一步研究,其中发现得到证实[20]。Ergo也用于最近与密度矩阵微扰理 论相关的 方法开发 研究[27]。 在量子力 学/ 分子力 学(QM/MM)方法的背景下,可能需要大的QM区域[28],Ergo程序可以用于使更大的QM区域成为可能和/或提供整个系统的QM处理,以验证QM/MM结果。Ergo程序在GNU公共许可证(GPL)v3下可在ergoscf.org上公开获得。Ergo已包含在CentOS、Debian、Fedora和UbuntuLinux发行版中,软件包名称为“ergo”部分Ergo代码也被用于Libra库[29]。5. 结论除了用于进行大型HF和KS-DFT计算外,Ergo程序还为进一步发展电子结构方法奠定了有用的基础未来的开发将包括使用块和任务编程模型[30]的分布式内存并行化,其中矩阵操作使用动态分布式四叉树数据结构[31]进行管理确认计算资源由瑞典林雪平国家超级计算机中心(NSC)的瑞典国家计算基础设施(SNIC)提供。E. Rudberg等人/SoftwareX 7(2018)107111附录A. 补充数据与本文相关的补充材料可以在https://doi.org/10.1016/j.softx.2018.03.005上找到。引用[1] 作者 :BowlerDR, Miyazaki T.电子 结构 计算 中的O (N ) 方法 RepProgrPhys2012;75:036503.[2] Rudberg E,Sainteek P.快速多极子方法的有效实现。JChem Phys2006;125:084106.[3] Rudberg E,Rubensson EH,Sajerek P. Hartree-Fock计算与线性缩放内存使用。J Chem Phys2008;128:184106.[4] 鲁德伯格E,鲁本斯森EH,萨伊莱克P.科恩-沙姆密度泛函理论电子结构计算与线性缩放计算时间和内存使用。J Chem Theory Comput2011;7:340-50.[5] Rubensson EH ,Rudberg E ,Saintek P.严格 误差控制 的密度矩 阵纯化。JChem Phys2008;128:074106.[6] 杨志华,王志华,王志华.递归密度矩阵展开的无参数停止准则。J. ChemTheory Comput2016;12:5788 - 802.[7] Rubensson EH , Rudberg E , Sainteek P. A hierarchic sparse matrixdatastruct for large-scale Hartree-Fock/Kohn-Sham calculations. J ComputChem2007;28:2531-7.[8] 杨伟,王伟,王伟.非局域交换作用消除了石墨烯纳米带中的半金属性。NanoLett2007;7:2211-3.[9] 王文,王文,王文生,王文生.药物分子在水溶液中溶剂-溶质相互作用能的线性标度研究.北京:中国化学工业出版社,2001. J Phys Chem B2007;111 :10320-8.[10] 放大图片作者:John E.在线性标度电子结构计算中引入矩阵稀疏性。J ComputChem2011;32:1411-23.[11] 鲁德伯格将纯粹的Kohn-Sham密度泛函理论电子结构方法应用于蛋白质分子的困难。J Phys:Condens Matter2012;24:072202.[12] 鲁宾逊密度矩阵线性标度计算的非单调递归多项式展开式。J Chem TheoryComput2011;7:1233 - 6.[13] 普莱山口改进SCF收敛加速。 JComput Chem 1982;3:556 - 60.[14] 杨志华,王志华,王志华.密度矩阵展开中锋面轨道的实时计算。J ChemTheory Comput2018;14:139-153.[15] 阿卢什湾Gabedit-计算化学软件的图形用户界面。J Comput Chem2011;32:174-82.[16] Schuchardt KL,Didier BT,Elsethagen T,Sun L,Gurumoorthi V,ChaseJ , et al.BasisSet Exchange : A Community Database for ComputationalSciences. JChemInf Model2007;47:1045-52.[17] 放大图片Larsen H,Jørgensen P,Olsen J,Helgaker T. Hartree-Fock和Kohn-Sham基于原子轨道的时间相关响应理论。J Chem Phys2000;113:8908-8917.[18] Helgaker T , Jørgensen P , Olsen J. 分 子 电 子 结 构 理 论 。 Chichester :Wiley;2000.[19] Li X,Smith SM,Markevitch AN,Romanov DA,Levis RJ,Schlegel HB.用含时 Hartree-Fock方法研 究分子在强场中的电子 光学响应 。物理化 学物理2005;7:233-9.[20] 杠杆G,科尔DJ,海因NDM,海恩斯PD,佩恩MC。影响蛋白质分子HOMO-LUMO能隙计算值的静电双折射。J Phys:Condens Matter2013;25:152101.[21] 李国忠,李国忠,李国忠.稀疏映射-一个系统的基础设施,为减少规模的电子结构 方 法 。 二 . 基 于 线 性 标 度 域 的 对 自 然 轨 道 耦 合 团 簇 理 论 。 JChemPhys2016;144:024109.[22] Rubensson EH,Rudberg E,Sainteek P.基于阻塞数据结构的欧几里得范数的小矩阵元素的截断。J Comput Chem2009;30:974-7.[23] Rudberg E,Rubensson EH,Saintek P.通过库仑和交换矩阵构造中的外推自动选择积分阈值。 化学理论计算杂志2009;5:80-5.[24] Rubensson EH,Rudberg E,Saintek P.自洽场计算中占据不变子空间的旋转。数学物理杂志2008;49:032103.[25] Akimov AV,Prezhdo OV.化学中的大规模计算:一个充满活力的领域的鸟瞰图。Chem Rev2015;115:5797-890。[26] [10] 杨 文 , 李 文 . 大 规 模 量 子 力 学 计 算 的 挑 战 。 Wiley Interceptip. 版 本 :ComputMol Sci2017;7:e1290。[27] 杨文龙,李晓梅.正则密度矩阵微扰理论。Phys Rev E2015;92:063301。[28] HurdCA,Besley NA,Robinson D.质体蓝素吸能态性质的QM/MM研究。JComput Chem2017;38:1431-7.[29] AkimovAVLibra:一个用于量子和经典动力学模拟的开源“ 方 法 发 现 ” 库 。JComput Chem 2016;37:1626-49.[30] 放 大 图 片 作 者 : John E. Chunks and tasks : A programming model forparallelizationof dynamic algorithms. 并行计算2014;40:328-43.[31] 放大图片作者:John E.基于块和任务编程模型的局部感知并行块-稀疏矩阵-矩阵乘法。 并行计算2016;57:87-106.
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 共轴极紫外投影光刻物镜设计研究
- 基于GIS的通信管线管理系统构建与音视频编解码技术应用
- 单站被动目标跟踪算法:空频域信息下的深度研究与进展
- 构建通信企业工程项目的项目管理成熟度模型:理论与应用
- 基于控制理论的主动队列管理算法与稳定性分析
- 谷歌文件系统下的实用网络编码技术在分布式存储中的应用
- CMOS图像传感器快门特性与运动物体测量研究
- 深孔采矿研究:3D数据库在采场损失与稳定性控制中的应用
- 《洛神赋图》图像研究:明清以来的艺术价值与历史意义
- 故宫藏《洛神赋图》图像研究:明清艺术价值与审美的飞跃
- 分布式视频编码:无反馈通道算法与复杂运动场景优化
- 混沌信号的研究:产生、处理与通信系统应用
- 基于累加器的DSP数据通路内建自测试技术研究
- 跨国媒体对南亚农村社会的影响:以斯里兰卡案例的社会学分析
- 散单元法与CFD结合模拟气力输送研究
- 基于粒化机理的粗糙特征选择算法:海量数据高效处理研究
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功