codeblocks带编译器版本_PeriodicNBO and SSAdNDP在VASP5.4.1以上版本的编译方法

编者加:请阅读前先查阅刘锦程博士以下教程

http://blog.wangruixing.cn/2019/04/22/adndp/

http://blog.wangruixing.cn/2019/04/22/nbo/

2fe5f724fd30cb6f6e30a866e2e3b0d3.png

https://github.com/Chengcheng-Xiao/Periodic_NBO/tree/master/projection_VASP/VASP_patch

按照正常的逻辑,下载VASP对应版本的补丁文件,放在VASP的安装包中,用类似于:

patch -p0 < proj_VASP_5.4.patch

执行该命令即可修改VASP源代码,在将下载的projection_output.F放在VASP安装包中src/文件夹下,重新make编译生成新的vasp_std二进制文件,即可增加VASP与SSAdNDP的输出接口文件wavefunction.dat文件。

那么对于VASP6.1.1,没有相应的补丁文件,或在执行patch -p0 < proj_VASP_5.4.patch失败,无法成功打补丁,怎么办呢?

不要慌,静下心来打开proj_VASP_5.4.patch看看,你会发现打补丁实际上只是对VASP下的src/.object和src/main.F两个文件做修改罢了。

feae6a73a701963ec1e5cf87b226880f.png

仔细留意一下绿色圈出来的东西,也就是前面带“+”的字符串,就是你需要找到对应原文件的原字符串,然后加上SSAdNDP的字符串即可(有了方法实施起来就简单了)。

1、首先修改src/.object文件(注意object前面有个“.”代表隐藏文件,不要漏写)

vi src/.object打开这个文件,找到dmatrix.o字符,然后在其下方加入projection_output.o

18d233b3a9c692c9b1d80a8289d5e25d.png

注意点:首先在src/.object文件应该能发现两处dmatrix.o,前面是关于编译CPU版本的部分,后边是GPU,如果不放心就在两处都加上;其次会发现其后方字符不是vasp5.4.patch中的elphon.o字符,而是phonon.o,不用管,可能是VASP6加的新文件;

2、再修改src/main.F文件

同样的原理,照着patch文件修改main.F文件。

第一处,用vi src/main.F打开并找到src/main.F中的关键字USE main_gpu,在其后方加入USE projection_output

c42d54aea53bf300699ff751dc6c6e75.png

第二处找到INTEGER ::LDIMP,LMDIMP,LTRUNC=3,后面加入相应的关键字:

e641d379d23fc42be608ec698fef6f92.png

第三处找到

 CALLREDIS_PW_OVER_BANDS(WDES, W) ENDIF ENDIFwrtwave

添加patch中的关键字:

948e2a091aa9b8244dd926b8b9ba470f.png

总结:

1. 可以看到很多需要添加的字符之后的关键字和vasp5.4.patch中的字符并不一致,这是很正常的,因为VASP6修改了源码,增加了些许功能。通常去搜索需要添加字符之前的关键字,然后把SSAdNDP需要的字符放在这些关键字之后就可以了;

2. 如何用vi编辑器搜索关键字,自行百度,不论用任何方式,确定其位置就行;

3. 不要把patch文件中需要添加字符前的“+”粘贴进去了。“!”需要复制过去,表示注释这一行;

4. 此修改没有intel编译器的版本限制,通常2013之后的版本都可以。原则上需要在未修改的基础上能够编成功,确保没有问题,再去修改代码增加SSAdNDP的功能;

5. 很多文件静下心来,打开看一看,对一对,就知道思路了。

更多软件编译方法和教程,请参考:

https://app.cailiaoren.com/view/series/detail?id=168&vid=1492&from=timeline

编者加:请阅读前先查阅刘锦程博士以下教程

http://blog.wangruixing.cn/2019/04/22/adndp/

http://blog.wangruixing.cn/2019/04/22/nbo/

2fe5f724fd30cb6f6e30a866e2e3b0d3.png https://github.com/Chengcheng-Xiao/Periodic_NBO/tree/master/projection_VASP/VASP_patch

按照正常的逻辑,下载VASP对应版本的补丁文件,放在VASP的安装包中,用类似于:

patch -p0 < proj_VASP_5.4.patch

执行该命令即可修改VASP源代码,在将下载的projection_output.F放在VASP安装包中src/文件夹下,重新make编译生成新的vasp_std二进制文件,即可增加VASP与SSAdNDP的输出接口文件wavefunction.dat文件。

那么对于VASP6.1.1,没有相应的补丁文件,或在执行patch -p0 < proj_VASP_5.4.patch失败,无法成功打补丁,怎么办呢?

不要慌,静下心来打开proj_VASP_5.4.patch看看,你会发现打补丁实际上只是对VASP下的src/.object和src/main.F两个文件做修改罢了。

feae6a73a701963ec1e5cf87b226880f.png

仔细留意一下绿色圈出来的东西,也就是前面带“+”的字符串,就是你需要找到对应原文件的原字符串,然后加上SSAdNDP的字符串即可(有了方法实施起来就简单了)。

1、首先修改src/.object文件(注意object前面有个“.”代表隐藏文件,不要漏写)

vi src/.object打开这个文件,找到dmatrix.o字符,然后在其下方加入projection_output.o

18d233b3a9c692c9b1d80a8289d5e25d.png

注意点:首先在src/.object文件应该能发现两处dmatrix.o,前面是关于编译CPU版本的部分,后边是GPU,如果不放心就在两处都加上;其次会发现其后方字符不是vasp5.4.patch中的elphon.o字符,而是phonon.o,不用管,可能是VASP6加的新文件;

2、再修改src/main.F文件

同样的原理,照着patch文件修改main.F文件。

第一处,用vi src/main.F打开并找到src/main.F中的关键字USE main_gpu,在其后方加入USE projection_output

c42d54aea53bf300699ff751dc6c6e75.png

第二处找到INTEGER ::LDIMP,LMDIMP,LTRUNC=3,后面加入相应的关键字:

e641d379d23fc42be608ec698fef6f92.png

第三处找到
 CALLREDIS_PW_OVER_BANDS(WDES, W) ENDIF ENDIFwrtwave

添加patch中的关键字:

948e2a091aa9b8244dd926b8b9ba470f.png

总结:

1. 可以看到很多需要添加的字符之后的关键字和vasp5.4.patch中的字符并不一致,这是很正常的,因为VASP6修改了源码,增加了些许功能。通常去搜索需要添加字符之前的关键字,然后把SSAdNDP需要的字符放在这些关键字之后就可以了; 2. 如何用vi编辑器搜索关键字,自行百度,不论用任何方式,确定其位置就行; 3. 不要把patch文件中需要添加字符前的“+”粘贴进去了。“!”需要复制过去,表示注释这一行; 4. 此修改没有intel编译器的版本限制,通常2013之后的版本都可以。原则上需要在未修改的基础上能够编成功,确保没有问题,再去修改代码增加SSAdNDP的功能;

5. 很多文件静下心来,打开看一看,对一对,就知道思路了。

更多软件编译方法和教程,请参考:

https://app.cailiaoren.com/view/series/detail?id=168&vid=1492&from=timeline

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值