计算化学公社

 找回密码 Forget password
 注册 Register
Views: 15171|回复 Reply: 45
打印 Print 上一主题 Last thread 下一主题 Next thread

[CP2K] CP2K结构优化监控小脚本

  [复制链接 Copy URL]

39

帖子

3

威望

527

eV
积分
626

Level 4 (黑子)

本帖最后由 ma455173220 于 2025-3-3 10:34 编辑

去年由Multiwfn入门CP2K,目前还是个菜鸟一枚。被CP2K的速度和超多功能所惊艳,但是发现GEO_OPT和CELL_OPT不太容易监控,所以参考VASP的grad脚本,自写了个Python脚本,欢迎大家使用。PS:本人也是个Python菜鸟,脚本肯定会有很多不足之处,大佬们可自行优化使用。
脚本使用方法: python3 cp2k-output-analyse.py cp2k.out (注意这里不一定非是cp2k.out,也可以是你的自命名,只要是*.out结尾即可)。脚本输出结果:在当前目录下生成cp2k__data.csv文件。
输出文件说明:第一列为当前结构优化步数(若该行前方有"xx"字样,则表示该结构优化能量上升而非下降,如图一),第二列为结构能量,第三列为结构优化所用SCF步数(若该列前方有"!"符号,则表示该结构优化已达所设最大SCF步数但是SCF并没有达到收敛标准,如图二),第四到第七列为结构优化收敛参数(若为四个"YES",则表示结构优化达到收敛标准),最后一列为结构优化用时。
脚本附加功能:也可画出能量vs.步数图,便于监控能量收敛情况,如图三(Again:Python菜鸟一枚,大家自行优化)。
=================================================================
28/07/2023小小更新一下,可以获取GEOMETRY OPTIMIZATION COMPLETED的最终能量,虽说和最后一步结构优化的能量相差不多,但是还是用这个最好了






=================================================================
12/04/2024:小小更新一下,加了一列Delta E能量差的数据,并改了一下输出格式,现在输出格式大概是这个样子(注:STEP 3前面的"x"是我手动改的cp2k.out仅仅为了展示下功能,正常来讲带"x"是说明这一步的能量升高了而非降低了):

=================================================================
25/11/2024:经提示,发现最新版的cp2k输出格式和之前变化较大,导致脚本无法正常运行,因此借这个机会全面重写了一下脚本,目前应该适配最新版cp2k了。这次并没有统计每步结构优化(离子步)中所消耗的SCF步数,因为不同的SCF算法以及不同的结构优化算法导致SCF的输出格式多种多样,统计起来蛮麻烦而且也没特别大的必要。所以这次只是用YES和NO来分别代表当前离子步中SCF是否收敛,若为『!NO』,则表示SCF达到了最大步数MAX_SCF而并未收敛到EPS_SCF。若连续多次出现未收敛情况则需要引起注意,因为优化的结构可能是错的。精力有限,只对BFGS和L-BFGS做了测试,CG我用的不多,所以并未测试,如果有发现脚本运行出错的情况可以连带着输出文件发给我,我有时间可以对脚本进一步优化。新版输出文件样式如下:

=================================================================
03/03/2025:小小更新了一下,cp2k v2025.1又改输出格式了...不过是小改,但是我没做全面测试,如果使用时有问题在帖子里留言即可。



cp2k-output-analyse.py

18.21 KB, 下载次数 Times of downloads: 388

评分 Rate

参与人数
Participants 14
威望 +1 eV +50 收起 理由
Reason
xcgotk + 5 赞!
南北多歧路 + 3 谢谢分享
winwinhhh + 5 谢谢
Peng_ + 4
爱听相声 + 1 赞!
devilove + 5
tao11 + 1 谢谢
honest + 1 好物!
wangyiwen + 5
萧瑟 + 5 好物!
Jack + 5 好物!
sobereva + 1
newple + 5 赞!
丁越 + 5 赞!

查看全部评分 View all ratings

39

帖子

3

威望

527

eV
积分
626

Level 4 (黑子)

46#
 楼主 Author| 发表于 Post on 2024-11-25 11:28:49 | 只看该作者 Only view this author
阿宁 发表于 2024-11-17 11:09
老师您好,感谢分享!我对结构优化完成后输出的cp2k.out使用脚本时出现以下报错,求教该如何解决。
[qxn@M ...

我更新了下脚本,现在应该可以正常使用了

39

帖子

3

威望

527

eV
积分
626

Level 4 (黑子)

45#
 楼主 Author| 发表于 Post on 2024-11-18 06:46:43 | 只看该作者 Only view this author
阿宁 发表于 2024-11-17 11:09
老师您好,感谢分享!我对结构优化完成后输出的cp2k.out使用脚本时出现以下报错,求教该如何解决。
[qxn@M ...

看着好像是最新版的CP2K的输出格式改了?我还没有用过2024.3,有时间我修改一下。之前的版本都是通过'Informations at step'来定位每步的优化信息的,我看了一下你的输出文件格式完全不一样了,我有时间优化一下。如果你自己会python的话,建议你可以自己优化一下82-117行的内容。

2

帖子

0

威望

113

eV
积分
115

Level 2 能力者

44#
发表于 Post on 2024-11-17 11:09:34 | 只看该作者 Only view this author
老师您好,感谢分享!我对结构优化完成后输出的cp2k.out使用脚本时出现以下报错,求教该如何解决。
[qxn@Master 1.5]$ python3.9 cp2k-output-analyse.py cp2k.out
=======================================
In process...
...
=======================================
Do you want to plot cycle vs. energy?
(y/n)
y
Traceback (most recent call last):
  File "/home/qxn/cp001/interval/1.5/cp2k-output-analyse.py", line 248, in <module>
    main()
  File "/home/qxn/cp001/interval/1.5/cp2k-output-analyse.py", line 241, in main
    plot_cycle_vs_energy(output_file.split('.out')[0] + "__data.csv")
  File "/home/qxn/cp001/interval/1.5/cp2k-output-analyse.py", line 207, in plot_cycle_vs_energy
    x.append(x[-1] + 1)
IndexError: list index out of range

cp2k.rar

55.96 KB, 下载次数 Times of downloads: 3

29

帖子

0

威望

144

eV
积分
173

Level 3 能力者

43#
发表于 Post on 2024-11-9 16:59:19 | 只看该作者 Only view this author
大佬您好,我使用了这个脚本,但是输出的csv文件没有具体的收敛步数信息,是怎么回事?我用的OT,开启了outer scf,目前Optimization step 为25.
# Job Starting Date: 2024-11-09 13:51:50.798
# Total used time: 0:00:00
# Directory: /root/CP2K calculation/Meiyuanlin/RuCu-cluster
# RUN_TYPE: GEO_OPT
# EPS_SCF: 2.00E-05
# MAX_SCF: 50
# SCF_OPTIMIZER: OT
# OUTER_SCF: TRUE
# GEO_OPTIMIZER: BFGS
# STEP | SCF |    E [a.u.]    |  Delta E  | M_D(0.003) | R_D(0.0015) | M_F(0.00045) | R_F(0.0003) | TIME [s]
# Done!

3

帖子

0

威望

31

eV
积分
34

Level 2 能力者

42#
发表于 Post on 2024-6-18 13:35:34 | 只看该作者 Only view this author
支持,点赞

14

帖子

0

威望

133

eV
积分
147

Level 2 能力者

41#
发表于 Post on 2024-6-17 09:47:41 | 只看该作者 Only view this author
ma455173220 发表于 2024-6-11 16:59
分享你一个我自己改写过的吧

好滴好滴,谢谢大侠

39

帖子

3

威望

527

eV
积分
626

Level 4 (黑子)

40#
 楼主 Author| 发表于 Post on 2024-6-11 16:59:58 | 只看该作者 Only view this author
936039846 发表于 2024-6-11 15:01
我也没找到,如果大侠找到啦可不可以发我一份

分享你一个我自己改写过的吧

grad.py

7.57 KB, 下载次数 Times of downloads: 8

14

帖子

0

威望

133

eV
积分
147

Level 2 能力者

39#
发表于 Post on 2024-6-11 15:01:32 | 只看该作者 Only view this author
ma455173220 发表于 2024-6-8 19:05
VASP有个grad脚本吧,我当初就是参照那个的,但是找不到了...

我也没找到,如果大侠找到啦可不可以发我一份

39

帖子

3

威望

527

eV
积分
626

Level 4 (黑子)

38#
 楼主 Author| 发表于 Post on 2024-6-8 19:05:00 | 只看该作者 Only view this author

VASP有个grad脚本吧,我当初就是参照那个的,但是找不到了...

14

帖子

0

威望

133

eV
积分
147

Level 2 能力者

37#
发表于 Post on 2024-6-4 10:30:26 | 只看该作者 Only view this author
有没有vasp的

103

帖子

0

威望

3831

eV
积分
3934

Level 5 (御坂)

36#
发表于 Post on 2024-5-21 23:09:09 | 只看该作者 Only view this author
本帖最后由 LittlePupil 于 2024-5-21 23:28 编辑
ma455173220 发表于 2024-5-14 08:10
小小更新了一下,感觉之前的lines.index(line)好像应该是个BUG,虽然我不清楚为啥没出错,但是以防万一加了 ...

不算bug, 但这么写逻辑确实有问题,如果中断后重跑的输出重定向到了和中断前相同的文件中,则由于index方法会返回第一个找到的索引,最后读到的还是中断前的“step x”的结果,现在改过后就不会有这个问题了。
「狩りってのは先に焦せった方の負けだ、ハンターも獲物もな」

15

帖子

0

威望

79

eV
积分
94

Level 2 能力者

35#
发表于 Post on 2024-5-19 10:08:25 | 只看该作者 Only view this author
ma455173220 发表于 2024-5-16 16:39
错误的原因是你的这个out文件还没有完成一步结构优化的收敛,MAX_D这个变量是在CP2K完成了一步结构优化收 ...

可以了,非常感谢老师指导!感谢

39

帖子

3

威望

527

eV
积分
626

Level 4 (黑子)

34#
 楼主 Author| 发表于 Post on 2024-5-16 16:39:32 | 只看该作者 Only view this author
fuzanhui 发表于 2024-5-15 09:43
上面为.out文件,不知道为什么不能上传,所以改了一下后缀
运行报错
In process...

错误的原因是你的这个out文件还没有完成一步结构优化的收敛,MAX_D这个变量是在CP2K完成了一步结构优化收敛后在Information那部分由『Conv. limit for step size』定义的。所以当你的output的SCF还没有收敛成功,结构优化还没有开始运行前,是无法获取MAX_D这个变量,我在cp2k.out前面找了找没找到相应的参数,所以只能在这里才定义了。不过我更新了一下脚本,在脚本遍历文件前先给MAX_D定义了一个默认参数,这样不至于报错了。你可以下载下新脚本试试。

15

帖子

0

威望

79

eV
积分
94

Level 2 能力者

33#
发表于 Post on 2024-5-15 09:43:50 | 只看该作者 Only view this author
ma455173220 发表于 2024-5-14 08:10
小小更新了一下,感觉之前的lines.index(line)好像应该是个BUG,虽然我不清楚为啥没出错,但是以防万一加了 ...

1.ou (2.39 MB, 下载次数 Times of downloads: 1)
上面为.out文件,不知道为什么不能上传,所以改了一下后缀
运行报错
In process...
...
Traceback (most recent call last):
  File "cp2k-output-analyse.py", line 244, in <module>
    main()
  File "cp2k-output-analyse.py", line 228, in main
    process_output_file(output_file)
  File "cp2k-output-analyse.py", line 182, in process_output_file
    + "\n" + contents)
UnboundLocalError: local variable 'MAX_D' referenced before assignment

能否请老师帮忙看一下是什么问题?谢谢

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2025-8-15 00:02 , Processed in 0.217647 second(s), 31 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list