计算化学公社

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

[其它量化程序] 用于处理巨大活性空间的Dice程序的安装过程

[复制链接 Copy URL]

451

帖子

9

威望

6035

eV
积分
6666

Level 6 (一方通行)

BSJ Institute

跳转到指定楼层 Go to specific reply
楼主
本帖最后由 Accelerator 于 2024-10-25 09:12 编辑

Centos下Dice的安装
在DOI: 10.1021/acs.jctc.7b00900中,J Smith等介绍了用于处理巨大活性空间的HCISCF方法,号称能够在极短的时间内做到(44, 44)大小的活性空间。它需要借助Dice程序和PySCF结合完成。Dice程序可在https://github.com/sanshar/Dice下载;以下安装过程全程使用Intel编译器。
安装hdf5https://www.hdfgroup.org/download-hdf5/source-code/#下载HDF5源码。
解压并进入后,执行:
  1. ./configure --prefix=/data/home/drwg/hdf5
  2. make -j
  3. make install
复制代码
安装boost
  1. cd /data/home/drwg/boost_1_71_0/
  2. ./bootstrap.sh
复制代码
vi project-config.jam,在最后加入using mpi ;
./b2 -j6 --target=shared,static
安装Dice
cd Dice-master/
vi Makefile,将开头改为:
  1. USE_INTEL = yes
  2. HAS_AVX2 = yes
  3. BOOST=/data/home/drwg/boost_1_71_0
  4. EIGEN=./eigen/
  5. HDF5=/data/home/drwg/hdf5
  6. MKL=/data/app/intel/oneapi/mkl/latest
  7. INCLUDE_MKL = -I$(MKL)/include
  8. #LIB_MKL = -lblas -llapack #-L$(MKL)/lib/intel64/ -lmkl_intel_ilp64 -lmkl_gnu_thread -lmkl_core
  9. LIB_MKL = -L$(MKL)/lib/intel64/ -lmkl_intel_ilp64 -lmkl_gnu_thread -lmkl_core
  10. #INCLUDE_BOOST = -I$(BOOST)/include -I$(BOOST)
  11. INCLUDE_BOOST = -I$(BOOST)/
  12. #LIB_BOOST = -L$(BOOST)/lib -L$(BOOST)/stage/lib
  13. LIB_BOOST = -L$(BOOST)/stage/lib
  14. INCLUDE_HDF5 = -I$(HDF5)/include
  15. LIB_HDF5 = -L$(HDF5)/lib -lhdf5
复制代码
运行:make -j
运行测试
  1. cd tests
  2. sed -i 's/python2/python3/g' *sh
  3. sed -i 's/np 4/np 28/g' *sh
  4. sh runTests.sh
复制代码
会发现FCIQMC文件不存在,也无法通过make FCIQMC -j编译出来。另外有两个测试结果不对,其余均通过:
  1. ...running hubbard_1x10 ghf
  2. test failed
  3. eRef =  -5.42482593
  4. eTest =  -5.43914066
  5. ...running hubbard_1x10 agp
  6. test failed
  7. eRef =  -3.83213158
  8. eTest =  -3.87729611
复制代码
由于主要用SHCI功能,似乎可以不管它。
SHCI单独测试:
  1. cd SHCI
  2. sed -i 's/python/python3/g' *sh
  3. sed -i 's/np 4/np 28/g' *sh
  4. sh runTests.sh
复制代码
测试通过。
安装PySCF
安装pyscf-shciscf
pip3 install git+https://github.com/pyscf/shciscf --user
进入安装位置:cd /data/home/drwg/.local/lib/python3.12/site-packages/pyscf/shciscf
vi settings.py(pip3安装的不会带着这个文件,需要新建):
  1. import os
  2. SHCIEXE = '/data/home/drwg/Dice-master/bin/Dice'
  3. SHCISCRATCHDIR = "."
  4. SHCIRUNTIMEDIR = '.'
  5. MPIPREFIX = 'mpirun -np 28' #'mpirun -np 2'  # change to srun for SLURM job system
复制代码
设置环境变量
  1. source /data/app/intel/oneapi/setvars.sh
  2. export PATH=$PATH:/data/home/drwg/boost_1_71_0
  3. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/home/drwg/boost_1_71_0/stage/lib
  4. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/home/drwg/hdf5/lib
复制代码
运行python3 test.py,这是一个C2分子的CASSCF计算,测试通过,用2核大概花了15 s.它是从Dice的documentation(https://sanshar.github.io/Dice/u ... l?highlight=shciscf)上扒下来的,但官方给的包名字不对,应该是pyscf.shciscf而不是pyscf.future.shciscf。
  1. from pyscf import gto, scf
  2. from pyscf.shciscf import shci


  3. # Initialize O2 molecule
  4. b =  1.243
  5. mol = gto.Mole()
  6. mol.build(
  7. verbose = 5,
  8. output = None,
  9. atom = [
  10.     ['C',(  0.000000,  0.000000, -b/2)],
  11.     ['C',(  0.000000,  0.000000,  b/2)], ],
  12. basis = {'C': 'ccpvdz', },
  13. symmetry = True,
  14. symmetry_subgroup = 'D2h',
  15. spin = 0
  16. )

  17. # Create HF molecule
  18. mf = scf.RHF( mol )
  19. mf.conv_tol = 1e-9
  20. mf.scf()

  21. # Number of orbital and electrons
  22. norb = 26
  23. nelec = 8

  24. # Create SHCI molecule for just variational opt.
  25. # Active spaces chosen to reflect valence active space.
  26. mch = shci.SHCISCF( mf, norb, nelec )
  27. mch.fcisolver.mpiprefix = 'mpirun -np 2'
  28. mch.fcisolver.stochastic = True
  29. mch.fcisolver.nPTiter = 0
  30. mch.fcisolver.sweep_iter = [ 0, 3 ]
  31. mch.fcisolver.DoRDM = True
  32. mch.fcisolver.sweep_epsilon = [ 5e-3, 1e-3 ]
  33. e_shci = mch.mc1step()[0]
复制代码







评分 Rate

参与人数
Participants 2
威望 +1 eV +5 收起 理由
Reason
sobereva + 1
zsu007 + 5 赞!

查看全部评分 View all ratings

188

帖子

0

威望

486

eV
积分
674

Level 4 (黑子)

2#
发表于 Post on 2024-10-25 09:00:10 | 只看该作者 Only view this author
可以做基于HCISCF的NEVPT2吗?

451

帖子

9

威望

6035

eV
积分
6666

Level 6 (一方通行)

BSJ Institute

3#
 楼主 Author| 发表于 Post on 2024-10-25 09:14:44 | 只看该作者 Only view this author
本帖最后由 Accelerator 于 2024-10-25 09:23 编辑
wjc404 发表于 2024-10-25 09:00
可以做基于HCISCF的NEVPT2吗?

文档没写,作者没发表与NEVPT2有关的新论文,简单试了一下在1 L的测试代码中写mprt.NEVPT(mch)会报错。不过HCISCF本身就是致力于实现FCI的方法,并经过了变分+微扰过程,我想在恰当选择一个很大的活性空间的情况下可能并不像传统CASSCF那样依赖于通过PT2引入动态相关。

688

帖子

21

威望

5017

eV
积分
6125

Level 6 (一方通行)

4#
发表于 Post on 2024-10-25 12:07:45 | 只看该作者 Only view this author
本帖最后由 beefly 于 2024-10-25 12:15 编辑
wjc404 发表于 2024-10-25 09:00
可以做基于HCISCF的NEVPT2吗?

bdf + xian-ci可以做ici + nevpt2或sdspt2计算。ici和hci本质上都是select ci方法。

目前同级别方法/程序中效率最高的是block的dmrg + nevpt2。或者openmolcas接block做dmrg-caspt2以及效率更高的dmrg-cu(4)-caspt2,不过随着活性空间增大,caspt2方法的入侵态问题会越来越严重,结果经常没法用。

831

帖子

1

威望

7180

eV
积分
8031

Level 6 (一方通行)

5#
发表于 Post on 2024-10-25 14:25:20 | 只看该作者 Only view this author

本版积分规则 Credits rule

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

GMT+8, 2024-11-23 10:17 , Processed in 0.167765 second(s), 23 queries , Gzip On.

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