计算化学公社

标题: 谁能写个量化编程学习历程啊 [打印本页]

作者
Author:
zyj19831206    时间: 2017-10-12 14:17
标题: 谁能写个量化编程学习历程啊
比如说,看什么fortran书得到什么经验,看什么量化书得到什么经验,希望高手能够说一说。

作者
Author:
niobium    时间: 2017-10-12 22:53
本人献丑回答一下,不是高手。
首先语言的话,因为我们本科学过C语言,所以学习Fortran还是比较容易上手的,我主要是看的彭国伦的那本书。
量化书的话主要是两本经典的,Levine的Quantum Chemistry和Szabo的Modern Quantum Chemistry。
关于写程序的经历,至今仍然记得我练习阶段写过的所有的程序:
(1) Levine教材里的第四章中的一个小例子,Computer program for the Numerov method。 书上有VB程序的答案,可以做对照。
(2) 最简单的HF程序,简单到什么程度呢,就是所有积分都是直接读的,主要是体会一下HF的迭代过程,和相关的量是如何计算的。
(3) 简单的CIS程序,这实际上是老板让我写的,我本来跟老板说我想写个HF程序,老板说CIS更简单,你可以写个CIS,于是我两个都写了,写CIS让我体会到了文献里的公式和实际编程的差距,尤其是自旋轨道和空间轨道的转化。
后面就基本确定了自己的研究方向,开始写一些比较正规的程序了,当然相比正式的课题,还只是练习程序:
(4) Wick定理及自动推导CCSD公式的程序。这两部分花费了我一学期的时间,当然中间也学习到了很多东西,比如二次量子化的知识,CC理论的深入理解。
后面本来应该接下去完成由公式到程序的转化,但由于时间的问题没有完成,很可惜。
再后来就开始正式开始做课题了。
我的过程并不适用于所有人。但如果有做方法发展的,我建议可以练习两个程序:一是HF,我当时写完HF之后才真正感觉到自己对HF方法完全理解了,我觉得这是练习写程序最大的收获。二是可以写一个MP2程序,HF到MP2实际就是一步积分变换,这里也可以体会到post-HF方法的计算量的增加是多么大了。
作者
Author:
bnulk    时间: 2017-10-13 12:01
二楼好强大,羡慕ing。
我这样的野路子是:
(1)抄写廖沐真、吴国是、刘洪霖三位老师“量子化学从头计算方法”那本书的Fortran代码。网上找得到电子版的,中文的一本讲自洽场的书,非常易懂。然后改编成其它语言,确保熟悉它。
(2)找一个课题,把所有能找到的文献都找到,抄写文献中的方法,对照文献中的结果。
(3)这时候也比较熟悉自己的课题了,可以找课题相关的应用数学书,抄写相关方法,一般来说,会有些改进的。有条件的话,请计算数学的博士吃饭,非常有帮助。

作者
Author:
zyj19831206    时间: 2017-10-14 21:19
niobium 发表于 2017-10-12 22:53
本人献丑回答一下,不是高手。
首先语言的话,因为我们本科学过C语言,所以学习Fortran还是比较容易上手的 ...

这些你讲的定理和公式以及其实现代码貌似没有成熟的书讲解吧,只能靠课题组嘴嘴相传,感觉有点手工作坊的感觉。
作者
Author:
zjxitcc    时间: 2017-10-14 21:57
zyj19831206 发表于 2017-10-14 21:19
这些你讲的定理和公式以及其实现代码貌似没有成熟的书讲解吧,只能靠课题组嘴嘴相传,感觉有点手工作坊的 ...

大部分书都有的。不过都比较小众,如果没有 有经验的前辈告诉自己,或者自己广泛搜索,是很难找到一本本严谨、清晰的入门书籍的。
假定给你单双电子积分,写RHF和UHF程序,看《Modern Quantum Chemistry》就足够了,但是如果要写ROHF,可能就要去看Roothaan当年的原始文献了。
如果单双电子积分都要自己写或者了解其算法,那就要看《Molecular Elecetronic-Structure Theory》的第8,9章。
假设往前一步做CC方法,我觉得Henry F.Schaefer III的《An intro to coupled cluster theory for computational chemists》是我见过简单与严谨同时很好兼顾的介绍。
如果还要追求算法和并行,量化界也有人写过《Parallel Computing in Quantum Chemistry》。
总之除非你做最新的电子结构方法,成型的方法都是有介绍的,只不过清晰易懂、最适合自己的那本入门书,要找很久。


作者
Author:
zyj19831206    时间: 2017-10-14 22:56
zjxitcc 发表于 2017-10-14 21:57
大部分书都有的。不过都比较小众,如果没有 有经验的前辈告诉自己,或者自己广泛搜索,是很难找到一本本 ...

感觉这些书都是长篇大论的公式,没有看到怎么将那些公式用代码实现啊。
作者
Author:
zjxitcc    时间: 2017-10-14 23:47
zyj19831206 发表于 2017-10-14 22:56
感觉这些书都是长篇大论的公式,没有看到怎么将那些公式用代码实现啊。

我觉得你看的书不是我说的那些。。。比如看个徐光宪三卷,显然是做不了科研的。公式多,说明已经很接近代码了,推完公式就是上编程了。至于想学编程,直接看编程的书就好了,有了公式,量化编程与普通编程,并无太多不同之处。如果想看看量化里的编程,建议看看《Parallel Computing in Quantum Chemistry》再“感觉”。
作者
Author:
zyj19831206    时间: 2017-10-14 23:52
zjxitcc 发表于 2017-10-14 23:47
我觉得你看的书不是我说的那些。。。比如看个徐光宪三卷,显然是做不了科研的。公式多,说明已经很接近代 ...

好的,谢谢,以前就是不知道怎么将复杂的公式转化为优美的代码。
作者
Author:
ggdh    时间: 2017-10-15 22:58
本帖最后由 ggdh 于 2017-10-15 23:12 编辑

照着张鋆(就是abcluster的作者)的从手算做一遍,然后督促他出第四版,第五版。。
刚看了下他在版权中说了可以自由转载,只要点名就行。。我就传这了。
另外可以照着这个C++ Programming Tutorial in Chemistry来做



作者
Author:
zyj19831206    时间: 2017-10-16 20:23
本帖最后由 zyj19831206 于 2017-10-16 20:34 编辑
ggdh 发表于 2017-10-15 22:58
照着张鋆(就是abcluster的作者)的从手算做一遍,然后督促他出第四版,第五版。。
刚看了下他在版权中说了 ...

这个文档的代码在哪里?能否上传下?注释貌似写的不错吧。这个网页可有系统性的介绍文档,感觉代码不容易保存啊。
作者
Author:
卡开发发    时间: 2017-10-16 21:40
zyj19831206 发表于 2017-10-16 20:23
这个文档的代码在哪里?能否上传下?注释貌似写的不错吧。这个网页可有系统性的介绍文档,感觉代码不容易 ...

《手算理解量子化学》的原贴在这http://muchong.com/t-4709293-1。另外推荐Cook的《Handbook of computational quantum chemistry》,虽然老掉牙,但是作为入门书籍有公式和些许代码还是值得参考,但若想做的更快则需要专门研究GTO分子积分的文献(如Gill等),甚至是一些其他数值计算方面的文献。

站内的资料早期由@Shannon @nagami 整理,前者是基于matlab做的,对于初学会比较方便;后者是C++写得的,不过后者的资料因网盘关闭可能找不到了。近期@Warm_Cloud 也发布了Amesp程序,以及对应的单、双电子积分库,也可以直接拿来使用。我赞同2楼的观点,入门其实直接用matlab读取积分就行,熟悉后可以尝试换底层一些的语言调用lapack来写,也可以尝试写一下积分,也可以调用现成的库。

从公式到离散形式,再到数据结构和编程,这并不是一下完成的,其实需要一些数值方法的书籍作为铺垫。Coolrainbow的《手算理解量子化学》确实给了不少好的参考书。至于要发展一些新颖的、效率的、可靠的数值技术,一般需要很强的应用数学方面的功底,或者和应用数学方面的人合作。
作者
Author:
zyj19831206    时间: 2017-10-16 22:29
卡开发发 发表于 2017-10-16 21:40
《手算理解量子化学》的原贴在这http://muchong.com/t-4709293-1。另外推荐Cook的《Handbook of computat ...

原帖中程序找不到了,你如果有能否上传下?
作者
Author:
卡开发发    时间: 2017-10-16 22:39
zyj19831206 发表于 2017-10-16 22:29
原帖中程序找不到了,你如果有能否上传下?

手里只有第一版的 (, 下载次数 Times of downloads: 83)
你可以问@coolrainbow 要一下看看。






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