计算化学公社

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

[CP2K] CP2K-2025.2中ninja库和dftd4库的离线补丁版

[复制链接 Copy URL]

132

帖子

0

威望

2866

eV
积分
2998

Level 5 (御坂)

本帖最后由 gsbear 于 2025-9-8 16:02 编辑

ninjia-v1.13.1打入googletest-1.16.0离线代码
dftd4-3.7.0打入mctc-lib-0.3.2、mstore-0.3.0、multicharge-0.3.0三个离线库代码


因为我的cp2k-2025.2toolchain的第三方库还没下载完,所以以上两个包是否有问题还没测试过,如果使用有问题的同学请留言。



(测试发现dftd4-3.7.0打补丁时候有个小bug,已修正,现已在CP2K-2025.2的toolchain下编译通过)

ninja-v1.13.1.tar.gz

1.11 MB, 下载次数 Times of downloads: 105

dftd4-3.7.0.tar.gz

944.8 KB, 下载次数 Times of downloads: 127

已更新bug

评分 Rate

参与人数
Participants 3
eV +12 收起 理由
Reason
以玉名诗 + 4 好物!
ysc4004 + 5 谢谢
南北多歧路 + 3 好物!

查看全部评分 View all ratings

132

帖子

0

威望

2866

eV
积分
2998

Level 5 (御坂)

2#
 楼主 Author| 发表于 Post on 2025-9-8 16:22:36 | 只看该作者 Only view this author
补丁记录:记录一下补丁过程,以后新版本需要自己打补丁的可以参考一下

ninjia的补丁相对简单,只需要把googletest包解压到ninjia目录下,然后修改ninja-1.13.1\CMakeLists.txt文件
找到GTest一段,如下修改即可:
  find_package(GTest)
  if(NOT GTest_FOUND)
    include(FetchContent)
    FetchContent_Declare(
      googletest
      SOURCE_DIR ../googletest-1.16.0
      # GoogleTest v1.17.0 requires at least C++17 and cmake 3.16 which are above ninja project minimum requirements.
      # GoogleTest v1.16.0 requires at least C++14 and cmake 3.13 which are within the ninja project minimum requirements.
      #URL https://github.com/google/google ... etest-1.16.0.tar.gz
      #URL_HASH SHA256=78c676fc63881529bf97bf9d45948d905a66833fbfa5318ea2cd7478cb98f399
    )
    FetchContent_MakeAvailable(googletest)
  endif()

dftd4-3.7.0的补丁相对比较麻烦,需要先下载mctc-lib-0.3.2、mstore-0.3.0、multicharge-0.3.0三个包,解压到dftd4-3.7.0\subprojects\dftd4\subprojects目录下
然后修改dftd4-3.7.0\subprojects\dftd4\config\cmake目录下的4个cmake配置文件

dftd4-utils.cmake修改86行fetch方法一段,使其不从GIT仓库下载,而是直接使用补丁的本地代码
    if("${method}" STREQUAL "fetch")
      message(STATUS "Retrieving ${package} revision ${revision} from ${url}")
      include(FetchContent)
      FetchContent_Declare(
        "${_pkg_lc}"
        SOURCE_DIR "${url}"
        #GIT_REPOSITORY "${url}"
        #GIT_TAG "${revision}"

另外,三个库的查找脚本替换url为本地路径:
Findmctc-lib.cmake第17行开始
set(_lib "mctc-lib")
set(_pkg "MCTCLIB")
set(_url "https://github.com/grimme-lab/mctc-lib")
set(_url "../subprojects/mctc-lib-0.3.2")
set(_revision "v0.3.2")

Findmstore.cmake第17行开始
set(_lib "mstore")
set(_pkg "MSTORE")
set(_url "https://github.com/grimme-lab/mstore")
set(_url "../subprojects/mstore-0.3.0")
set(_revision "v0.3.0")

Findmulticharge.cmake第17行开始
set(_lib "multicharge")
set(_pkg "MULTICHARGE")
set(_url "https://github.com/grimme-lab/multicharge")
set(_url "../subprojects/multicharge-0.3.0")
set(_revision "v0.3.0")

135

帖子

0

威望

1343

eV
积分
1478

Level 4 (黑子)

3#
发表于 Post on 2025-9-10 00:08:37 | 只看该作者 Only view this author
gsbear 发表于 2025-9-8 16:22
补丁记录:记录一下补丁过程,以后新版本需要自己打补丁的可以参考一下

ninjia的补丁相对简单,只需要把 ...

牛!  楼主费心了

10

帖子

0

威望

1142

eV
积分
1152

Level 4 (黑子)

4#
发表于 Post on 2025-11-2 01:51:58 | 只看该作者 Only view this author
已测试 库有问题

30

帖子

0

威望

178

eV
积分
208

Level 3 能力者

5#
发表于 Post on 2026-1-6 10:39:50 | 只看该作者 Only view this author
测试了dft4-3.7.0包,好用!帮大忙了!感谢!

76

帖子

0

威望

414

eV
积分
490

Level 3 能力者

6#
发表于 Post on 2026-1-6 13:12:24 | 只看该作者 Only view this author
直接用DFT-D4的GitHub仓库里提供的.tar.xz文件即可,甭用.tar.gz,前者自己包含了子程序的代码包,无需单另下载。ninja我觉得用系统自带的(dnf install ninja-build)就毫无问题。
顺带一提,开发者现在更推荐使用tblite而非dftd4包,因为tblite不仅支持gfn2-xtb还顺带支持dftd4;而且虽然tblite也存在类似问题,但该问题在目前的开发分支中已经得到解决。

132

帖子

0

威望

2866

eV
积分
2998

Level 5 (御坂)

7#
 楼主 Author| 发表于 Post on 2026-1-7 22:40:28 | 只看该作者 Only view this author
UW_0728. 发表于 2026-1-6 13:12
直接用DFT-D4的GitHub仓库里提供的.tar.xz文件即可,甭用.tar.gz,前者自己包含了子程序的代码包,无需单另 ...

这里打补丁的ninja和DFT-D4是给CP2K2025.2离线安装用的,主要目的不是单独安装
感谢tar.xz的建议,我后面有时间测试一下,如果能用,可以省不少事,DFT-D4打补丁是最麻烦的

本版积分规则 Credits rule

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

GMT+8, 2026-1-23 18:53 , Processed in 0.185795 second(s), 24 queries , Gzip On.

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