计算化学公社

标题: libcint的使用求助 [打印本页]

作者
Author:
薛定谔的老猫    时间: 2019-7-16 20:31
标题: libcint的使用求助
各位走过路过的大佬好啊,本人新手,想尝试自己编写一些算法程序例如 (HF,MP2) 等,我不是专门做算法的,只是想深入的理解理论,所以计划直接采用现成的libcint电子积分库,奈何组里没有前辈,暂时也没找到好的资料,还请各位大佬指点一下如何使用该电子积分库,若有好的资料分享,感激不尽!

作者
Author:
Warm_Cloud    时间: 2019-7-16 20:53
没用过,都是自己写的。
作者
Author:
niobium    时间: 2019-7-16 21:59
安装包里自带了一个简单的说明,可以试着看看能不能看懂。积分库需要的是原子核坐标信息和相应的基函数信息,你要做的是根据这些信息准备atm,bas和env三个数组,传给相应的函数就可以了。我是用Fortran的,C的原理基本一样,我不知道你掌握到何种程度,不知道可以给你分享多少。
作者
Author:
sobereva    时间: 2019-7-17 02:13
有一定量化编程基础(比如能自己写出动能积分代码),看看libcint自带的例子文件和手册,有足够悟性就能调用libcint
作者
Author:
薛定谔的老猫    时间: 2019-7-17 10:06
sobereva 发表于 2019-7-17 02:13
有一定量化编程基础(比如能自己写出动能积分代码),看看libcint自带的例子文件和手册,有足够悟性就能调 ...

目前几乎没有量化编程基础,我是不是应该先看一下这方面的书籍呢?就看过彭的书,感谢
作者
Author:
薛定谔的老猫    时间: 2019-7-17 10:07
Warm_Cloud 发表于 2019-7-16 20:53
没用过,都是自己写的。

大师大法好
作者
Author:
薛定谔的老猫    时间: 2019-7-17 10:10
niobium 发表于 2019-7-16 21:59
安装包里自带了一个简单的说明,可以试着看看能不能看懂。积分库需要的是原子核坐标信息和相应的基函数信息 ...

你好,我也计划使用Fortran,但是目前量化编程基础几乎为0,尴尬。关键的问题就是,HF和DFT的理论还是了解的,不知道如何用程序来实现。
作者
Author:
zjxitcc    时间: 2019-7-17 10:19
薛定谔的老猫 发表于 2019-7-17 10:10
你好,我也计划使用Fortran,但是目前量化编程基础几乎为0,尴尬。关键的问题就是,HF和DFT的理论还是了 ...

(1)Szabo的Mordern Quantum Chemistry, 第三章RHF讲的很详细;
(2)论坛里有几个人都上传过自己的HF,MP2编程笔记等资料,值得一看。
(3)仔细阅读libint2,libcint等积分库的说明。
作者
Author:
薛定谔的老猫    时间: 2019-7-17 10:31
zjxitcc 发表于 2019-7-17 10:19
(1)Szabo的Mordern Quantum Chemistry, 第三章RHF讲的很详细;
(2)论坛里有几个人都上传过自己的HF ...

好的,我再琢磨琢磨,不会再来请教,可惜只能抽空弄啊!感谢
作者
Author:
niobium    时间: 2019-7-17 10:37
薛定谔的老猫 发表于 2019-7-17 10:10
你好,我也计划使用Fortran,但是目前量化编程基础几乎为0,尴尬。关键的问题就是,HF和DFT的理论还是了 ...

建议先写MP2,熟悉量化公式如何转为程序。可以从现成的程序读取HF结果。
直接写SCF可能会打消你的积极性,毕竟现在成熟程序的SCF都比较强大,你很难超越,加速技巧也比较多,会比较费时间。
当然,MP2要能写出算200个基函数和2000个基函数的程序也是要花不同的时间的,但相对容易很多。
作者
Author:
薛定谔的老猫    时间: 2019-7-17 10:52
niobium 发表于 2019-7-17 10:37
建议先写MP2,熟悉量化公式如何转为程序。可以从现成的程序读取HF结果。
直接写SCF可能会打消你的积极性 ...

好的,感谢建议
作者
Author:
sobereva    时间: 2019-7-18 21:49
薛定谔的老猫 发表于 2019-7-17 10:10
你好,我也计划使用Fortran,但是目前量化编程基础几乎为0,尴尬。关键的问题就是,HF和DFT的理论还是了 ...

其实自己写不写出来程序和对理论理解的深度没有必然关系
诸如双电子积分,就是那么个数学公式而已,写出来只是增强编程水平和对积分在数学、数值算法上的理解,但并不提升对理论方法的理解。
所以如果最终目的也不是写个有实用性的量化程序,考虑到你现在对编程也不通,花那么多精力自己编程写完整的DFT计算程序真没必要,这些时间还不如再多看理论方面的书籍和文献来增进对理论的理解,这更有实际意义。
作者
Author:
niobium    时间: 2019-7-22 08:25
写了个简单的使用教程,希望对你有用

https://mp.weixin.qq.com/s?__biz ... 5&lang=zh_CN#rd

作者
Author:
薛定谔的老猫    时间: 2019-7-25 22:05
niobium 发表于 2019-7-22 08:25
写了个简单的使用教程,希望对你有用

https://mp.weixin.qq.com/s?__biz=MzU5NjMxNjkzMw==&mid=22474845 ...

哇,非常感谢
作者
Author:
sobereva    时间: 2019-7-25 23:16
PS:过几个月,两年前写了一半的《量子化学程序编写入门》会写完然后发布在网上。里面的程序就是基于libcint作为双电子积分计算模块的,到时候会结合例子讲得很详细
作者
Author:
薛定谔的老猫    时间: 2019-7-25 23:21
sobereva 发表于 2019-7-25 23:16
PS:过几个月,两年前写了一半的《量子化学程序编写入门》会写完然后发布在网上。里面的程序就是基于libcin ...

哇咔咔,感觉运气很好啊,刚接触计算就上了初级班,基础班,想学量化程序编写,社长的大作就出来了,非常感谢!期待!!!
作者
Author:
niobium    时间: 2019-7-27 07:38
sobereva 发表于 2019-7-25 23:16
PS:过几个月,两年前写了一半的《量子化学程序编写入门》会写完然后发布在网上。里面的程序就是基于libcin ...

期待啊!
作者
Author:
薛定谔的老猫    时间: 2019-9-11 21:00
sobereva 发表于 2019-7-25 23:16
PS:过几个月,两年前写了一半的《量子化学程序编写入门》会写完然后发布在网上。里面的程序就是基于libcin ...

社长大人,请问您的书有着落了么,啥时候发布呀,期待
作者
Author:
sobereva    时间: 2019-9-12 11:06
薛定谔的老猫 发表于 2019-9-11 21:00
社长大人,请问您的书有着落了么,啥时候发布呀,期待

不知道,也许半年
作者
Author:
薛定谔的老猫    时间: 2019-9-12 17:53
好的,多谢
作者
Author:
ajz34    时间: 2019-9-22 21:27
本帖最后由 ajz34 于 2019-9-22 21:44 编辑

我现在在尝试用 Python 写后自洽场程序,以双杂化 hessian 为目标
我没试过 libcint,我猜用 libcint 的话还要处理 primitive 到 CGTO 的转换问题,这个挺烦的,特别角动量一高
只是代码的效率和内存优化我玩不来……
但是如果是为了学习后自洽场用,分子足够小的话,调 PySCF 的 gto 模块函数 (intor) 我认为足够了
我觉得一定程度上 PySCF 当成 libcint 的外包,想调什么积分问 PySCF 其实就行了,所以现在其实还完全不会 libcint……

以及重要的是活用 numpy.einsum(**kargs, optimize=True),这个真的很强
以及 numpy 的 Boardcasting 功能
如果打算写一个 RMP2 相关能的程序,电子积分全部存在内存里
核心的 ERI AO->MO 和 RMP2 相关能量计算可以在 5 行代码搞定

现在也有一些英文教程,我还没仔细看过,但质量应该都不差,是 Psi4 系列的教程
C++: https://github.com/CrawfordGroup/ProgrammingProjects
Python + Jupyter: https://github.com/psi4/psi4numpy
以后多半也会学一下
(但 Jupyter 调用 Psi4 的程序,代码写得不好很容易 kernel died,于是就放弃 Psi4 投入几乎纯 Python 的 PySCF 了……)


作者
Author:
ajz34    时间: 2019-9-22 21:58
说实话我自己最近也在尝试写教程文档,但现在处于未完成缓更状态233
https://py-xdh.readthedocs.io/zh_CN/latest/qcbasic/index.html
尽管现在的目标单纯地是用 Python 程序解决 Hessian 的计算,但写到现在为止的内容希望多少也能对大家有所帮助
作者
Author:
薛定谔的老猫    时间: 2019-9-24 16:00
ajz34 发表于 2019-9-22 21:58
说实话我自己最近也在尝试写教程文档,但现在处于未完成缓更状态233
https://py-xdh.readthedocs.io/zh_CN ...

好的,感谢
作者
Author:
wangxubo    时间: 2019-9-25 07:14
就用pyscf.gto.moleintor()就非常方便,对于写个教学程序足够了,而且还能和pyscf对照,非常方便。
作者
Author:
薛定谔的老猫    时间: 2019-9-25 11:09
wangxubo 发表于 2019-9-25 07:14
就用pyscf.gto.moleintor()就非常方便,对于写个教学程序足够了,而且还能和pyscf对照,非常方便。

感谢回复,好的
作者
Author:
海棠    时间: 2022-6-29 13:28
niobium 发表于 2019-7-22 08:25
写了个简单的使用教程,希望对你有用

https://mp.weixin.qq.com/s?__biz=MzU5NjMxNjkzMw==&mid=22474845 ...

你好,自己写的Fortran程序通过什么编译选项可以链接libcint的库?
作者
Author:
niobium    时间: 2022-6-29 15:16
海棠 发表于 2022-6-29 13:28
你好,自己写的Fortran程序通过什么编译选项可以链接libcint的库?

我是先把Libcint编译成了.so文件,然后在编译自己的程序的时候把这个库文件链接进来
作者
Author:
zjxitcc    时间: 2022-6-29 20:31
海棠 发表于 2022-6-29 13:28
你好,自己写的Fortran程序通过什么编译选项可以链接libcint的库?

示例:ifort -c a.f90 -o aaa -L/home/libcint/lib -lcint
作者
Author:
海棠    时间: 2022-7-2 12:41
zjxitcc 发表于 2022-6-29 20:31
示例:ifort -c a.f90 -o aaa -L/home/libcint/lib -lcint

谢谢。但我这边用-L选项不管用(我不太懂),只能把.so文件放到/usr/lib/里。




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3