| 查看: 1648 | 回复: 3 | |||
| 【奖励】 本帖被评价2次,作者寒雨人生增加金币 1.6 个 | |||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | |||
[资源]
【原创首发】gfortran4.6+acml5.0.0 GAMESS2012(gmsnbo etc.) ubuntu 12.04 64bit
|
|||
|
gfortran4.6+acml5.0.0 GAMESS2012(gmsnbo tinker vb2000 neo) ubuntu 12.04 64bit 以前发过帖子讲述GAMESS2012在ubuntu11.XX 32bit上的编译(链接)。 当时用的是Intel Fortran(Professional)+ mkl,编译的各部分代码都一样。 gfortran安装——在联网状态下用sudo apt-get install gfortran命令即可。 acml数学库可以去AMD的官网下载——注意下载适合的版本,一般5.0.0以上的acml(最新版本是5.2.0)需要4.6以上的gfortran配合,此外请注意要下载acml-5-x-x-gfortran-64bit-int64.tgz;然后解压,进入解压后的文件夹,运行安装脚本,按提示安装。默认的安装路径是/opt/acml5.x.x。 其实这里编译的过程都差不多,有三点需要注意: 1.gmsnbo.src源码修改: 因为是与vb2000一起编译,所以就要多修改几个(共3个)相互冲突的函数名,具体修改如下(来自官网的Bug报告)—— In the nbo_59.src source code, use a text editor to globally replace "GETDM" by "NGETDM" throughout the code. (This avoids conflict with SR GETDM as introduced in the 25-Mar-2010 GAMESS version.) If both NBO and VB2000 are being compiled with GAMESS, you should also replace "REDUC1" by "NREDUC1" and "ANGLES" by "NANGLES" in the definitions and calls to SR REDUC1 and SR ANGLES. 2.以前网络上(国内的网页,针对那个泄露出来的09年?月的版本的,---下载链接---)流传的一个帖子报告的gmsnbo.src的两个Bug,其修改貌似是有问题的—— 以前的修改方式是这样的: 8427 行 IF(MORB.EQ.0.AND.NAMEAT(IATNO(NCTR.NE.'gh') THEN 改为 IF(MORB.EQ.0.AND.NAMEAT(IATNO(NCTR.NE.'gh'))) THEN 15421 行 IF(MORB.EQ.0.AND.NAMEAT(IATNO(NCTR).NE.'gh') THEN 改为 IF(MORB.EQ.0.AND.NAMEAT(IATNO(NCTR).NE.'gh')) THEN 发现这种修改存在问题的过程是这样的—— 按上述修改完成之后,使用gfortran编译。其他所有模块都能正常编译成功,而gmsnbo无法正常编译,给出的错误提示的大意如下: 8427行 .NE.运算错误,原因是INTEGER(8)/CHARACTER。(NCTR是整型变量!) 15421行 .NE.运算错误,原因是INTEGER(8)/CHARACTER。(IATNO函数返回的也是整型变量!) 查阅NBO5的用户手册,可知:NCTR应该是原子中心的编号;IATNO函数返回的是原子序数;NAMEAT函数返回的是Hollerith(一种符号标记方法)原子符号。 从逻辑上讲,程序员不会轻易将两个不同类型的变量进行比较运算。而以前流行的这种修改方式显然是犯了这种逻辑错误的。笔者猜想,之所以用Intel Fortran进行编译而没有出现报错,可能是因为Intel Fotran能自动将不同类型的变量转化成同一种类型之后再进行比较,同时它也应该还能自行将布尔型变量视作0和1进行处理。 搞清楚以上关系之后,笔者进行了如下修改: 8427 行 IF(MORB.EQ.0.AND.NAMEAT(IATNO(NCTR.NE.'gh') THEN 改为 IF(MORB.EQ.0.AND.NAMEAT(IATNO(NCTR)).NE.'gh') THEN 15421 行 IF(MORB.EQ.0.AND.NAMEAT(IATNO(NCTR).NE.'gh') THEN 改为 IF(MORB.EQ.0.AND.NAMEAT(IATNO(NCTR)).NE.'gh') THEN 按理说这样才是符合逻辑的。 笔者接着使用./comp gmsnbo >& gmsnbo.src &命令进行gmsnbo的编译。结果仍人在这两个地方出现同样的报错信息。 但是这次的提示是——NAMEAT处为INTEGER(8),不能与CHARACTER*2型的'gh'进行比较。 这次笔者觉得很困惑,照例说,NAMEAT应该是返回CHARACTER型结果的。于是找到了FUNCTION NAMEAT看看。 结果发现,其实NAMEAT函数中的NAME、IGHOST、BLANK变量预置的数据中根也本没有包含'gh'。 所以,笔者在gmsnbo.src中搜索了'gh'这个关键字,并发现了一个名为CHARAT的函数,返回的是字符串,其中有个变量IGHOST预置了字符串'gh'。 笔者再次查阅手册,发现函数CHARAT(IZ)返回的是对应于原子序数IZ的原子符号(比如CHARAT(2)返回的是字符串He)。 基于以上发现,笔者大胆地做了如下修改: IF(MORB.EQ.0.AND.NAMEAT(IATNO(NCTR.NE.'gh') THEN 改为 IF(MORB.EQ.0.AND.CHARAT(IATNO(NCTR)).NE.'gh') THEN 15421 行 IF(MORB.EQ.0.AND.NAMEAT(IATNO(NCTR).NE.'gh') THEN 改为 IF(MORB.EQ.0.AND.CHARAT(IATNO(NCTR)).NE.'gh') THEN 并各在这两行代码所在的子例程(SUBROUTINE)的变量申明部分加上如下内容(其实应该不用加的,因为声明函数时已经带上属性了,但是不加这两行貌似回报错): CHARACTER*2,EXTERNAL :: CHARAT 注意:关于GAMESS源码的一些修改可以参考以前的改法,但是可能就是行数对不上了。这些在我以前的帖子中有提到(见此文开头链接)。 3.tinker源码的修改: 以前tinker源码是不需要修改的。但是使用gfortran之后,如果不做修改,就会无法编译Libtad模块。这个错误出现在fortran的内置获取系统时间的函数idate的调用上,在tinker源码Libtad.f中,直接使用的是idate(year,month,day)。这样,gfortran就会提示你,idate函数的参数太多。 笔者查阅了gfortran的编程手册之后,发现gfortran中idate函数其实是把参数换成了一个含有3个成员的一维数组。知道这点就很容易修改了,具体修改方式如下: 另外申明一个变量:integer date(3) 然后将idate(year,month,day)换成idate(date) 再写几个赋值语句就可以了:year=date(1) month=date(2) day=date(3) 至此,所有新的修改都已经说明完毕。可以按以前的办法,编译,link,运行tests里边的算例了。 PS:没有测试过gmsnbo。笔者不是计算专业出身,现在也不做理论计算,纯属业余瞎捣鼓。其实发现gmsnbo的源码很多是要改的。但是不知道从哪里下手好。需要阅读手册,需要认真读源码,但是笔者时间不够,那些源码又写得有些杂乱,所以笔者也就不了了之了。以上是笔者花了4个晚上捣鼓的一点东西。也许根本就没用,但是大家可以试一试,看看会有什么结果。 [ 来自科研家族 木虫量化 ] [ Last edited by 寒雨人生 on 2012-10-12 at 09:43 ] |
» 收录本帖的淘帖专辑推荐
量化软件 |
» 猜你喜欢
汕头大学化学招调剂,相关内容如下。
已经有4人回复
大湾区大学(筹)刘天辉课题组招收博士生(与中山大学物理学院联合培养)
已经有16人回复
物理化学论文润色/翻译怎么收费?
已经有291人回复
PbS量子点如何确定浓度
已经有11人回复
细胞培养,这22个细节一定要注意!(一)
已经有0人回复
CSC访学博后项目获批,外方学校暂停合作该怎么办?
已经有51人回复
大湾区大学刘天辉课题组招收2026级博士生(与中山大学物理学院联合培养)
已经有22人回复
PbS量子点紫外吸收
已经有0人回复
比利时鲁汶大学与国家留学基金委共同资助博士研究生CSC-KU Leuven PhD Scholarship
已经有0人回复
半透性容器进行高湿或者低湿研究
已经有0人回复
伦敦大学学院Benjamin Moss博士招收人工智能、原位光谱、催化相关26年博士生
已经有11人回复
» 本主题相关价值贴推荐,对您同样有帮助:
安装贴:Ubuntu 12.04(64) 并行编译CPMD3.15.3
已经有4人回复
ubuntu12.04用gfortran调用Lapack95函数库出错。
已经有3人回复
Ubuntu 安装 下载 12.04LTS版
已经有8人回复
Ubuntu 12.04 下 FFTW 安装
已经有5人回复
4楼2013-05-23 18:02:36







回复此楼