Dr.Shi's Studio.

libcint基础使用

Word count: 502Reading time: 2 min
2023/03/30
loading

此文主要介绍积分库lbcint的使用方法

安装libcint

1.直接安装 如果需要使用libcint库直接安装的方式如下

libcint是使用cmake进行构建的,因此首先需要在github上下载libcint,然后根据其说明进行安装。

1
git clone https://github.com/sunqm/libcint
然后将其头文件和生成的动态库加入bashrc文件中。

如果想在自己的代码中使用libcint库的话,推荐使用cmake自动下载并进行构建。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# Overwrite CMAKE_C_CREATE_SHARED_LIBRARY in Modules/CMakeCInformation.cmake
# to remove the SONAME flag in the so file. The soname information causes
# dynamic link error when importing libcint library.
set(C_LINK_TEMPLATE "<CMAKE_C_COMPILER> <CMAKE_SHARED_LIBRARY_C_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>")
set(CXX_LINK_TEMPLATE "<CMAKE_CXX_COMPILER> <CMAKE_SHARED_LIBRARY_CXX_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>")

include(ExternalProject)
option(BUILD_LIBCINT "Using libcint for analytical gaussian integral" ON)
option(WITH_F12 "Compling F12 integrals" ON)
option(USE_QCINT "Using the qcint library (optimized for x86-64) for gaussian integral evaluation" OFF)

if(BUILD_LIBCINT)
set(LIBCINT_GIT https://github.com/sunqm/libcint.git) # libcint is a portable, cross-platform implementation
if (USE_QCINT)
set(LIBCINT_GIT https://github.com/sunqm/qcint.git) # qcint is an optimized implementation for x86-64 architecture
if(NOT BUILD_MARCH_NATIVE)
message(WARNING "The BUILD_MARCH_NATIVE option is not specified! qcint may not compile unless you explicitly pass compiler flags that turn on vectorization!")
endif()
endif()

ExternalProject_Add(libcint
GIT_REPOSITORY ${LIBCINT_GIT}
GIT_TAG v5.3.0
PREFIX ${CMAKE_BINARY_DIR}/libcint
INSTALL_DIR ${PROJECT_SOURCE_DIR}/libcint
CMAKE_CACHE_ARGS
-DWITH_F12:STRING=${WITH_F12}
-DWITH_RANGE_COULOMB:STRING=1
-DWITH_FORTRAN:STRING=0 # it is switch for fortran
-DWITH_CINT2_INTERFACE:STRING=0 #notice,it option is important for interface.
-DMIN_EXPCUTOFF:STRING=20
-DKEEP_GOING:STRING=1
-DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
-DCMAKE_INSTALL_LIBDIR:PATH=lib
-DCMAKE_C_COMPILER:STRING=${CMAKE_C_COMPILER}
-DBLAS_LIBRARIES:STRING=${BLAS_LIBRARIES}
-DCMAKE_C_CREATE_SHARED_LIBRARY:STRING=${C_LINK_TEMPLATE}
-DBUILD_MARCH_NATIVE:STRING=${BUILD_MARCH_NATIVE}
)
endif() # BUILD_LIBCINT

include_directories(${PROJECT_SOURCE_DIR}/libcint/include)
link_directories(${PROJECT_SOURCE_DIR}/libcint/lib )

使用上述方式会自动下载libcint,并安装在PROJECT_SOURCE_DIR/libcint目录中,其中lib和inculde是libcint库的动态库和头文件, 安装选项-DWITH_CINT2_INTERFACE是设置接口名称的,如果使用0,最后编译完成后的借口名称会删除c字符,例如cint2e_sph会变成int2e_sph,因此此选项需要小心处理。

使用

TO DO....

CATALOG
  1. 1. 安装libcint
  2. 2. 使用