mirror of
https://github.com/cp2k/cp2k.git
synced 2026-07-28 14:15:19 -04:00
Add v4.0.x API of DFT-D4 (#4964)
This commit is contained in:
parent
cce4b85ea5
commit
c6fc4eb94e
8 changed files with 170 additions and 56 deletions
|
|
@ -784,6 +784,13 @@ endif()
|
|||
|
||||
if(CP2K_USE_DFTD4)
|
||||
find_package(dftd4 REQUIRED)
|
||||
# Detect dftd4_VERSION from dftd4-config-version.cmake
|
||||
if(dftd4_VERSION VERSION_LESS "4.0.0")
|
||||
message(STATUS "DFTD4: found version ${dftd4_VERSION}, using v3.x API")
|
||||
set(CP2K_USE_DFTD4_V3 ON)
|
||||
else()
|
||||
set(CP2K_USE_DFTD4_V3 OFF)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(CP2K_USE_DEEPMD)
|
||||
|
|
@ -809,12 +816,20 @@ endif()
|
|||
if(CP2K_USE_TBLITE)
|
||||
find_package(mctc-lib REQUIRED)
|
||||
find_package(toml-f REQUIRED)
|
||||
find_package(dftd4 REQUIRED)
|
||||
find_package(s-dftd3 REQUIRED)
|
||||
find_package(tblite REQUIRED)
|
||||
add_library(cp2k::tblite INTERFACE IMPORTED)
|
||||
target_link_libraries(
|
||||
cp2k::tblite INTERFACE tblite::tblite mctc-lib::mctc-lib dftd4::dftd4
|
||||
toml-f::toml-f s-dftd3::s-dftd3)
|
||||
# Detect dftd4_VERSION from dftd4-config-version.cmake
|
||||
if(dftd4_VERSION VERSION_LESS "4.0.0")
|
||||
message(STATUS "DFTD4: found version ${dftd4_VERSION}, using v3.x API")
|
||||
set(CP2K_USE_DFTD4_V3 ON)
|
||||
else()
|
||||
set(CP2K_USE_DFTD4_V3 OFF)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# SIRIUS
|
||||
|
|
|
|||
|
|
@ -1789,6 +1789,7 @@ target_compile_definitions(
|
|||
$<$<BOOL:${CP2K_USE_TBLITE}>:__TBLITE>
|
||||
$<$<BOOL:${CP2K_USE_TBLITE}>:__DFTD4>
|
||||
$<$<BOOL:${CP2K_USE_DFTD4}>:__DFTD4>
|
||||
$<$<BOOL:${CP2K_USE_DFTD4_V3}>:__DFTD4_V3>
|
||||
$<$<BOOL:${CP2K_USE_DEEPMD}>:__DEEPMD>
|
||||
$<$<BOOL:${CP2K_USE_PEXSI}>:__PEXSI>
|
||||
$<$<BOOL:${CP2K_USE_ACE}>:__ACE>
|
||||
|
|
|
|||
|
|
@ -193,6 +193,9 @@ CONTAINS
|
|||
#if defined(__DFTD4)
|
||||
flags = TRIM(flags)//" libdftd4"
|
||||
#endif
|
||||
#if defined(__DFTD4_V3)
|
||||
flags = TRIM(flags)//" dftd4_v3"
|
||||
#endif
|
||||
#if defined(__TBLITE)
|
||||
flags = TRIM(flags)//" mctc-lib"
|
||||
flags = TRIM(flags)//" tblite"
|
||||
|
|
|
|||
|
|
@ -939,9 +939,12 @@ CONTAINS
|
|||
usage="POTENTIAL_TYPE (NONE|PAIR_POTENTIAL|NON_LOCAL)", &
|
||||
enum_c_vals=s2a("NONE", "PAIR_POTENTIAL", "NON_LOCAL"), &
|
||||
enum_i_vals=[xc_vdw_fun_none, xc_vdw_fun_pairpot, xc_vdw_fun_nonloc], &
|
||||
enum_desc=s2a("No dispersion/van der Waals functional", &
|
||||
"Pair potential van der Waals density functional", &
|
||||
"Nonlocal van der Waals density functional"), &
|
||||
enum_desc=s2a("No dispersion/van der Waals functional.", &
|
||||
"Pair potential van der Waals density functional, "// &
|
||||
"including Grimme's empirical DFT-D methods.", &
|
||||
"Nonlocal van der Waals density functional; more "// &
|
||||
"rigorous in principle, but significantly more "// &
|
||||
"time-consuming."), &
|
||||
default_i_val=xc_vdw_fun_none)
|
||||
CALL section_add_keyword(section, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
|
|
@ -981,7 +984,7 @@ CONTAINS
|
|||
"Grimme D3 method (zero damping)", &
|
||||
"Grimme D3 method (Becke-Johnson damping)", &
|
||||
"Grimme D4 method"), &
|
||||
default_i_val=vdw_pairpot_dftd3)
|
||||
default_i_val=vdw_pairpot_dftd3bj)
|
||||
CALL section_add_keyword(subsection, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
CALL keyword_create(keyword, __LOCATION__, name="PARAMETER_FILE_NAME", &
|
||||
|
|
@ -1001,7 +1004,11 @@ CONTAINS
|
|||
CALL section_add_keyword(subsection, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
CALL keyword_create(keyword, __LOCATION__, name="D4_REFERENCE_CODE", &
|
||||
description="Calculate D4 energy using external library.", &
|
||||
description="Calculate D4 energy using external library entirely. "// &
|
||||
"If set to F, CP2K will use its own codes to perform part of the "// &
|
||||
"DFT-D4 correction (including the calculation of EEQ charges) in "// &
|
||||
"parallel, which can significally save time if you use an MPI version "// &
|
||||
"of CP2K because DFT-D4 package does not support MPI parallelization.", &
|
||||
usage="D4_REFERENCE_CODE", default_l_val=.TRUE., &
|
||||
lone_keyword_l_val=.TRUE.)
|
||||
CALL section_add_keyword(subsection, keyword)
|
||||
|
|
|
|||
|
|
@ -55,7 +55,12 @@ MODULE qs_dispersion_d4
|
|||
rational_damping_param, &
|
||||
get_coordination_number, &
|
||||
get_lattice_points
|
||||
#if defined(__DFTD4_V3)
|
||||
USE dftd4_charge, ONLY: get_charges
|
||||
#else
|
||||
USE multicharge, ONLY: get_charges
|
||||
USE mctc_env, ONLY: error_type
|
||||
#endif
|
||||
!&>
|
||||
#endif
|
||||
#include "./base/base_uses.f90"
|
||||
|
|
@ -93,8 +98,12 @@ CONTAINS
|
|||
|
||||
CHARACTER(LEN=*), PARAMETER :: routineN = 'calculate_dispersion_d4_pairpot'
|
||||
|
||||
INTEGER :: atoma, cnfun, enshift, handle, i, iatom, &
|
||||
ikind, mref, natom, nghost
|
||||
INTEGER :: atoma, cnfun, enshift, handle, i, iatom
|
||||
#if defined(__DFTD4_V3)
|
||||
INTEGER :: ikind, mref, natom, nghost
|
||||
#else
|
||||
INTEGER :: ikind, mref, natom, ncoup, nghost
|
||||
#endif
|
||||
INTEGER, ALLOCATABLE, DIMENSION(:) :: atom_of_kind, atomtype, kind_of, &
|
||||
t_atomtype
|
||||
INTEGER, DIMENSION(3) :: periodic
|
||||
|
|
@ -106,9 +115,14 @@ CONTAINS
|
|||
ta, tb, tc, td, te, ts
|
||||
REAL(KIND=dp), ALLOCATABLE, DIMENSION(:) :: cn, cnd, dEdcn, dEdq, edcn, edq, enerd2, &
|
||||
enerd3, energies, energies3, q, qd
|
||||
REAL(KIND=dp), ALLOCATABLE, DIMENSION(:, :) :: ga, gradient, gwdcn, gwdq, gwvec, t_xyz, &
|
||||
tvec, xyz
|
||||
#if defined(__DFTD4_V3)
|
||||
REAL(KIND=dp), ALLOCATABLE, DIMENSION(:, :) :: ga, gradient, gwdcn, gwdq, gwvec, &
|
||||
t_xyz, tvec, xyz
|
||||
REAL(KIND=dp), ALLOCATABLE, DIMENSION(:, :, :) :: gdeb
|
||||
#else
|
||||
REAL(KIND=dp), ALLOCATABLE, DIMENSION(:, :) :: ga, gradient, t_xyz, tvec, xyz
|
||||
REAL(KIND=dp), ALLOCATABLE, DIMENSION(:, :, :) :: gdeb, gwdcn, gwdq, gwvec
|
||||
#endif
|
||||
REAL(KIND=dp), DIMENSION(3, 3) :: sigma, stress
|
||||
REAL(KIND=dp), DIMENSION(3, 3, 4) :: sdeb
|
||||
TYPE(atomic_kind_type), DIMENSION(:), POINTER :: atomic_kind_set
|
||||
|
|
@ -125,6 +139,10 @@ CONTAINS
|
|||
TYPE(structure_type) :: mol
|
||||
TYPE(realspace_cutoff) :: cutoff
|
||||
|
||||
#if !defined(__DFTD4_V3)
|
||||
TYPE(error_type), ALLOCATABLE :: error
|
||||
#endif
|
||||
|
||||
CALL timeset(routineN, handle)
|
||||
|
||||
debug = dispersion_env%d4_debug
|
||||
|
|
@ -170,7 +188,17 @@ CONTAINS
|
|||
|
||||
!prepare for the call to the dispersion function
|
||||
CALL new(mol, atomtype, xyz, lattice=cell%hmat, periodic=lperiod)
|
||||
#if defined(__DFTD4_V3)
|
||||
CALL new_d4_model(disp, mol)
|
||||
#else
|
||||
CALL new_d4_model(error, disp, mol)
|
||||
IF (ALLOCATED(error)) THEN
|
||||
CPABORT(error%message)
|
||||
END IF
|
||||
|
||||
! Number of coupling
|
||||
ncoup = disp%ncoup
|
||||
#endif
|
||||
|
||||
IF (dispersion_env%ref_functional == "none") THEN
|
||||
CALL get_rational_damping("pbe", param, s9=0.0_dp)
|
||||
|
|
@ -295,8 +323,13 @@ CONTAINS
|
|||
WRITE (iw, '(A,T71,F10.6)') " DEBUG D4| Charge differences (ave)", SUM(ABS(q - qd))/natom
|
||||
END IF
|
||||
! Weights for C6 calculation
|
||||
#if defined(__DFTD4_V3)
|
||||
ALLOCATE (gwvec(mref, natom))
|
||||
IF (grad) ALLOCATE (gwdcn(mref, natom), gwdq(mref, natom))
|
||||
#else
|
||||
ALLOCATE (gwvec(mref, natom, ncoup))
|
||||
IF (grad) ALLOCATE (gwdcn(mref, natom, ncoup), gwdq(mref, natom, ncoup))
|
||||
#endif
|
||||
CALL disp%weight_references(mol, cn, q, gwvec, gwdcn, gwdq)
|
||||
|
||||
ALLOCATE (energies(natom))
|
||||
|
|
@ -504,19 +537,32 @@ CONTAINS
|
|||
TYPE(d4_model) :: disp
|
||||
TYPE(structure_type) :: mol
|
||||
TYPE(realspace_cutoff) :: cutoff
|
||||
#if !defined(__DFTD4_V3)
|
||||
TYPE(error_type), ALLOCATABLE :: error
|
||||
#endif
|
||||
LOGICAL, INTENT(IN) :: grad, doabc
|
||||
REAL(KIND=dp), ALLOCATABLE, DIMENSION(:) :: enerd2, enerd3, cnd, qd, dEdcn, dEdq
|
||||
REAL(KIND=dp), ALLOCATABLE, DIMENSION(:, :, :) :: gradient
|
||||
REAL(KIND=dp), DIMENSION(3, 3, 4) :: stress
|
||||
|
||||
#if defined(__DFTD4_V3)
|
||||
INTEGER :: mref, natom, i
|
||||
REAL(KIND=dp), ALLOCATABLE, DIMENSION(:) :: q, qq
|
||||
REAL(KIND=dp), ALLOCATABLE, DIMENSION(:, :) :: lattr, gwdcn, gwdq, gwvec, &
|
||||
c6, dc6dcn, dc6dq
|
||||
REAL(KIND=dp), ALLOCATABLE, DIMENSION(:, :, :) :: cndr, cndL, qdr, qdL
|
||||
#else
|
||||
INTEGER :: mref, natom, i, ncoup
|
||||
REAL(KIND=dp), ALLOCATABLE, DIMENSION(:) :: q, qq
|
||||
REAL(KIND=dp), ALLOCATABLE, DIMENSION(:, :) :: lattr, c6, dc6dcn, dc6dq
|
||||
REAL(KIND=dp), ALLOCATABLE, DIMENSION(:, :, :) :: cndr, cndL, qdr, qdL, gwdcn, gwdq, gwvec
|
||||
#endif
|
||||
|
||||
mref = MAXVAL(disp%ref)
|
||||
natom = mol%nat
|
||||
#if !defined(__DFTD4_V3)
|
||||
ncoup = disp%ncoup
|
||||
#endif
|
||||
|
||||
! Coordination numbers
|
||||
ALLOCATE (cnd(natom))
|
||||
|
|
@ -527,10 +573,22 @@ CONTAINS
|
|||
! EEQ charges
|
||||
ALLOCATE (qd(natom))
|
||||
IF (grad) ALLOCATE (qdr(3, natom, natom), qdL(3, 3, natom))
|
||||
#if defined(__DFTD4_V3)
|
||||
CALL get_charges(mol, qd, qdr, qdL)
|
||||
#else
|
||||
CALL get_charges(disp%mchrg, mol, error, qd, qdr, qdL)
|
||||
IF (ALLOCATED(error)) THEN
|
||||
CPABORT(error%message)
|
||||
END IF
|
||||
#endif
|
||||
! C6 interpolation
|
||||
#if defined(__DFTD4_V3)
|
||||
ALLOCATE (gwvec(mref, natom))
|
||||
IF (grad) ALLOCATE (gwdcn(mref, natom), gwdq(mref, natom))
|
||||
#else
|
||||
ALLOCATE (gwvec(mref, natom, ncoup))
|
||||
IF (grad) ALLOCATE (gwdcn(mref, natom, ncoup), gwdq(mref, natom, ncoup))
|
||||
#endif
|
||||
CALL disp%weight_references(mol, cnd, qd, gwvec, gwdcn, gwdq)
|
||||
ALLOCATE (c6(natom, natom))
|
||||
IF (grad) ALLOCATE (dc6dcn(natom, natom), dc6dq(natom, natom))
|
||||
|
|
@ -636,7 +694,11 @@ CONTAINS
|
|||
TYPE(qs_dispersion_type), POINTER :: dispersion_env
|
||||
REAL(KIND=dp), INTENT(IN) :: cutoff
|
||||
REAL(KIND=dp), DIMENSION(:), INTENT(IN) :: r4r2
|
||||
#if defined(__DFTD4_V3)
|
||||
REAL(KIND=dp), DIMENSION(:, :), INTENT(IN) :: gwvec, gwdcn, gwdq
|
||||
#else
|
||||
REAL(KIND=dp), DIMENSION(:, :, :), INTENT(IN) :: gwvec, gwdcn, gwdq
|
||||
#endif
|
||||
REAL(KIND=dp), DIMENSION(:, :, :, :), INTENT(IN) :: c6ref
|
||||
INTEGER, DIMENSION(:), INTENT(IN) :: mrefs
|
||||
REAL(KIND=dp), DIMENSION(:), INTENT(INOUT) :: energies, dEdcn, dEdq
|
||||
|
|
@ -740,7 +802,11 @@ CONTAINS
|
|||
REAL(KIND=dp), DIMENSION(:, :), INTENT(IN) :: tvec
|
||||
REAL(KIND=dp), INTENT(IN) :: cutoff
|
||||
REAL(KIND=dp), DIMENSION(:), INTENT(IN) :: r4r2
|
||||
#if defined(__DFTD4_V3)
|
||||
REAL(KIND=dp), DIMENSION(:, :), INTENT(IN) :: gwvec, gwdcn, gwdq
|
||||
#else
|
||||
REAL(KIND=dp), DIMENSION(:, :, :), INTENT(IN) :: gwvec, gwdcn, gwdq
|
||||
#endif
|
||||
REAL(KIND=dp), DIMENSION(:, :, :, :), INTENT(IN) :: c6ref
|
||||
INTEGER, DIMENSION(:), INTENT(IN) :: mrefs
|
||||
REAL(KIND=dp), DIMENSION(:), INTENT(INOUT) :: energies, dEdcn, dEdq
|
||||
|
|
@ -1008,7 +1074,11 @@ CONTAINS
|
|||
SUBROUTINE get_c6value(c6ij, ia, ja, ik, jk, gwvec, c6ref, mrefs)
|
||||
REAL(KIND=dp), INTENT(OUT) :: c6ij
|
||||
INTEGER, INTENT(IN) :: ia, ja, ik, jk
|
||||
#if defined(__DFTD4_V3)
|
||||
REAL(KIND=dp), DIMENSION(:, :), INTENT(IN) :: gwvec
|
||||
#else
|
||||
REAL(KIND=dp), DIMENSION(:, :, :), INTENT(IN) :: gwvec
|
||||
#endif
|
||||
REAL(KIND=dp), DIMENSION(:, :, :, :), INTENT(IN) :: c6ref
|
||||
INTEGER, DIMENSION(:), INTENT(IN) :: mrefs
|
||||
|
||||
|
|
@ -1019,7 +1089,11 @@ CONTAINS
|
|||
DO jref = 1, mrefs(jk)
|
||||
DO iref = 1, mrefs(ik)
|
||||
refc6 = c6ref(iref, jref, ik, jk)
|
||||
#if defined(__DFTD4_V3)
|
||||
c6ij = c6ij + gwvec(iref, ia)*gwvec(jref, ja)*refc6
|
||||
#else
|
||||
c6ij = c6ij + gwvec(iref, ia, 1)*gwvec(jref, ja, 1)*refc6
|
||||
#endif
|
||||
END DO
|
||||
END DO
|
||||
|
||||
|
|
@ -1045,7 +1119,11 @@ CONTAINS
|
|||
REAL(KIND=dp), INTENT(OUT) :: c6ij
|
||||
REAL(KIND=dp), DIMENSION(2), INTENT(OUT) :: dc6dcn, dc6dq
|
||||
INTEGER, INTENT(IN) :: ia, ja, ik, jk
|
||||
#if defined(__DFTD4_V3)
|
||||
REAL(KIND=dp), DIMENSION(:, :), INTENT(IN) :: gwvec, gwdcn, gwdq
|
||||
#else
|
||||
REAL(KIND=dp), DIMENSION(:, :, :), INTENT(IN) :: gwvec, gwdcn, gwdq
|
||||
#endif
|
||||
REAL(KIND=dp), DIMENSION(:, :, :, :), INTENT(IN) :: c6ref
|
||||
INTEGER, DIMENSION(:), INTENT(IN) :: mrefs
|
||||
|
||||
|
|
@ -1058,11 +1136,19 @@ CONTAINS
|
|||
DO jref = 1, mrefs(jk)
|
||||
DO iref = 1, mrefs(ik)
|
||||
refc6 = c6ref(iref, jref, ik, jk)
|
||||
#if defined(__DFTD4_V3)
|
||||
c6ij = c6ij + gwvec(iref, ia)*gwvec(jref, ja)*refc6
|
||||
dc6dcn(1) = dc6dcn(1) + gwdcn(iref, ia)*gwvec(jref, ja)*refc6
|
||||
dc6dcn(2) = dc6dcn(2) + gwvec(iref, ia)*gwdcn(jref, ja)*refc6
|
||||
dc6dq(1) = dc6dq(1) + gwdq(iref, ia)*gwvec(jref, ja)*refc6
|
||||
dc6dq(2) = dc6dq(2) + gwvec(iref, ia)*gwdq(jref, ja)*refc6
|
||||
#else
|
||||
c6ij = c6ij + gwvec(iref, ia, 1)*gwvec(jref, ja, 1)*refc6
|
||||
dc6dcn(1) = dc6dcn(1) + gwdcn(iref, ia, 1)*gwvec(jref, ja, 1)*refc6
|
||||
dc6dcn(2) = dc6dcn(2) + gwvec(iref, ia, 1)*gwdcn(jref, ja, 1)*refc6
|
||||
dc6dq(1) = dc6dq(1) + gwdq(iref, ia, 1)*gwvec(jref, ja, 1)*refc6
|
||||
dc6dq(2) = dc6dq(2) + gwvec(iref, ia, 1)*gwdq(jref, ja, 1)*refc6
|
||||
#endif
|
||||
END DO
|
||||
END DO
|
||||
|
||||
|
|
|
|||
|
|
@ -311,7 +311,11 @@ CONTAINS
|
|||
END DO
|
||||
END IF
|
||||
ELSE IF (dispersion_env%pp_type == vdw_pairpot_dftd4) THEN
|
||||
WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'DFT-D4(Version 3.6.0)')")
|
||||
#if defined(__DFTD4_V3)
|
||||
WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'DFT-D4(Version 3.7)')")
|
||||
#else
|
||||
WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'DFT-D4(Version 4.0)')")
|
||||
#endif
|
||||
WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'see https://github.com/dftd4/dftd4')")
|
||||
WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'E. Caldeweyher et al, PCCP 22: 8499 (2020)')")
|
||||
WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'E. Caldeweyher et al, JCP 150: 154122 (2019)')")
|
||||
|
|
|
|||
|
|
@ -6,8 +6,8 @@
|
|||
[ "${BASH_SOURCE[0]}" ] && SCRIPT_NAME="${BASH_SOURCE[0]}" || SCRIPT_NAME=$0
|
||||
SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_NAME")/.." && pwd -P)"
|
||||
|
||||
dftd4_ver="3.7.0"
|
||||
dftd4_sha256="2e0d3504038358b8a82fdd21912b7765d416a58ebedbdd44f2ca8d2e88339ad7"
|
||||
dftd4_ver="4.0.2"
|
||||
dftd4_sha256="ed4a6a3ba0a89b8d6825bf11724dee647fd8ee6272e7822e0cbd9847994eb872"
|
||||
|
||||
source "${SCRIPT_DIR}"/common_vars.sh
|
||||
source "${SCRIPT_DIR}"/tool_kit.sh
|
||||
|
|
@ -32,18 +32,15 @@ case "$with_dftd4" in
|
|||
install_lock_file="${pkg_install_dir}/install_successful"
|
||||
|
||||
if verify_checksums "${install_lock_file}"; then
|
||||
echo "dftd4_dist-${dftd4_ver} is already installed, skipping it."
|
||||
echo "dftd4-${dftd4_ver} is already installed, skipping it."
|
||||
else
|
||||
retrieve_package "${dftd4_sha256}" "dftd4-${dftd4_ver}.tar.gz"
|
||||
retrieve_package "${dftd4_sha256}" "dftd4-${dftd4_ver}-source.tar.xz"
|
||||
echo "Installing from scratch into ${pkg_install_dir}"
|
||||
[ -d dftd4-${dftd4_ver} ] && rm -rf dftd4-${dftd4_ver}
|
||||
tar -xzf dftd4-${dftd4_ver}.tar.gz
|
||||
cd dftd4-${dftd4_ver}/subprojects/dftd4
|
||||
|
||||
rm -Rf build
|
||||
mkdir build
|
||||
cd build
|
||||
tar -xJf dftd4-${dftd4_ver}-source.tar.xz
|
||||
cd dftd4-${dftd4_ver}
|
||||
|
||||
mkdir build && cd build
|
||||
CMAKE_PREFIX_PATH="${CMAKE_PREFIX_PATH}:${OPENBLAS_ROOT}" cmake \
|
||||
-DCMAKE_INSTALL_PREFIX="${pkg_install_dir}" \
|
||||
-DCMAKE_INSTALL_LIBDIR=lib \
|
||||
|
|
@ -61,6 +58,7 @@ case "$with_dftd4" in
|
|||
echo "==================== Finding DFTD4 from system paths ===================="
|
||||
check_command pkg-config --modversion dftd4
|
||||
DFTD4_INCLUDE_PATH=$(pkg-config --cflags dftd4 | awk '{print $1}' | cut -dI -f2)
|
||||
pkg_install_dir=$(dirname ${DFTD4_INCLUDE_PATH})
|
||||
add_include_from_paths DFTD4_CFLAGS "dftd4.h" $DFTD4_INCLUDE_PATH
|
||||
add_include_from_paths DFTD4_CFLAGS "dftd4.mod" $DFTD4_INCLUDE_PATH
|
||||
add_include_from_paths DFTD4_CFLAGS "mctc_io.mod" $DFTD4_INCLUDE_PATH
|
||||
|
|
@ -86,22 +84,21 @@ if [ "$with_dftd4" != "__DONTUSE__" ]; then
|
|||
export DFTD4_VER="${dftd4_ver}"
|
||||
EOF
|
||||
|
||||
TEMP_LOC=$(find ${pkg_install_dir}/include -name "multicharge.mod")
|
||||
MCHARGE=${TEMP_LOC%/*}
|
||||
TEMP_LOC=$(find ${pkg_install_dir}/include -name "mstore.mod")
|
||||
MSTORE=${TEMP_LOC%/*}
|
||||
TEMP_LOC=$(find ${pkg_install_dir}/include -name "mctc_io.mod")
|
||||
MCTC=${TEMP_LOC%/*}
|
||||
TEMP_LOC=$(find ${pkg_install_dir}/include -name "dftd4.mod")
|
||||
DFTD4=${TEMP_LOC%/*}
|
||||
|
||||
DFTD4_INCLUDE_DIRS="$pkg_install_dir/include"
|
||||
DFTD4_LINK_LIBRARIES="${pkg_install_dir}/lib"
|
||||
DFTD4_CFLAGS="-I'${MCHARGE}' -I'${MCTC}' -I'${DFTD4}'"
|
||||
DFTD4_LDFLAGS="-L'${DFTD4_LINK_LIBRARIES}' -Wl,-rpath,'${DFTD4_LINK_LIBRARIES}'"
|
||||
|
||||
if [ "$with_dftd4" != "__SYSTEM__" ]; then
|
||||
TEMP_LOC=$(find ${pkg_install_dir}/include -name "multicharge.mod")
|
||||
MCHARGE=${TEMP_LOC%/*}
|
||||
TEMP_LOC=$(find ${pkg_install_dir}/include -name "mstore.mod")
|
||||
MSTORE=${TEMP_LOC%/*}
|
||||
TEMP_LOC=$(find ${pkg_install_dir}/include -name "mctc_io.mod")
|
||||
MCTC=${TEMP_LOC%/*}
|
||||
TEMP_LOC=$(find ${pkg_install_dir}/include -name "dftd4.mod")
|
||||
DFTD4=${TEMP_LOC%/*}
|
||||
|
||||
DFTD4_INCLUDE_DIRS="$pkg_install_dir/include"
|
||||
DFTD4_LINK_LIBRARIES="${pkg_install_dir}/lib"
|
||||
|
||||
DFTD4_CFLAGS="-I'${MCHARGE}' -I'${MCTC}' -I'${DFTD4}'"
|
||||
DFTD4_LDFLAGS="-L'${DFTD4_LINK_LIBRARIES}' -Wl,-rpath,'${DFTD4_LINK_LIBRARIES}'"
|
||||
|
||||
cat << EOF >> "${BUILDDIR}/setup_dftd4"
|
||||
prepend_path LD_LIBRARY_PATH "${DFTD4_LINK_LIBRARIES}"
|
||||
prepend_path LD_RUN_PATH "${DFTD4_LINK_LIBRARIES}"
|
||||
|
|
|
|||
|
|
@ -69,7 +69,8 @@ case "$with_tblite" in
|
|||
__SYSTEM__)
|
||||
echo "==================== Finding tblite from system paths ===================="
|
||||
check_command pkg-config --modversion tblite
|
||||
TBLITE_INCLUDE_PATH=$(pkg-config --cflags dftd4 | awk '{print $1}' | cut -dI -f2)
|
||||
TBLITE_INCLUDE_PATH=$(pkg-config --cflags tblite | awk '{print $1}' | cut -dI -f2)
|
||||
pkg_install_dir=$(dirname ${TBLITE_INCLUDE_PATH})
|
||||
add_include_from_paths TBLITE_CFLAGS "tblite.h" $TBLITE_INCLUDE_PATH
|
||||
add_include_from_paths TBLITE_CFLAGS "tblite.mod" $TBLITE_INCLUDE_PATH
|
||||
add_include_from_paths TBLITE_CFLAGS "dftd4.mod" $TBLITE_INCLUDE_PATH
|
||||
|
|
@ -96,27 +97,27 @@ if [ "$with_tblite" != "__DONTUSE__" ]; then
|
|||
export TBLITE_VER="${tblite_ver}"
|
||||
EOF
|
||||
|
||||
TEMP_LOC=$(find ${pkg_install_dir}/include -name "tomlf.mod")
|
||||
TOMLF=${TEMP_LOC%/*}
|
||||
TEMP_LOC=$(find ${pkg_install_dir}/include -name "multicharge.mod")
|
||||
MCHARGE=${TEMP_LOC%/*}
|
||||
TEMP_LOC=$(find ${pkg_install_dir}/include -name "mstore.mod")
|
||||
MSTORE=${TEMP_LOC%/*}
|
||||
TEMP_LOC=$(find ${pkg_install_dir}/include -name "mctc_io.mod")
|
||||
MCTC=${TEMP_LOC%/*}
|
||||
TEMP_LOC=$(find ${pkg_install_dir}/include -name "dftd3.mod")
|
||||
SDFTD3=${TEMP_LOC%/*}
|
||||
TEMP_LOC=$(find ${pkg_install_dir}/include -name "dftd4.mod")
|
||||
DFTD4=${TEMP_LOC%/*}
|
||||
TEMP_LOC=$(find ${pkg_install_dir}/include -name "tblite_xtb.mod")
|
||||
TBLITE=${TEMP_LOC%/*}
|
||||
|
||||
TBLITE_INCLUDE_DIRS="${pkg_install_dir}/include"
|
||||
TBLITE_LINK_LIBRARIES="${pkg_install_dir}/lib"
|
||||
TBLITE_CFLAGS="-I'${TOMLF}' -I'${MCTC}' -I'${SDFTD3}' -I'${DFTD4}' -I'${TBLITE}'"
|
||||
TBLITE_LDFLAGS="-L'${TBLITE_LINK_LIBRARIES}' -Wl,-rpath,'${TBLITE_LINK_LIBRARIES}'"
|
||||
|
||||
if [ "$with_tblite" != "__SYSTEM__" ]; then
|
||||
TEMP_LOC=$(find ${pkg_install_dir}/include -name "tomlf.mod")
|
||||
TOMLF=${TEMP_LOC%/*}
|
||||
TEMP_LOC=$(find ${pkg_install_dir}/include -name "multicharge.mod")
|
||||
MCHARGE=${TEMP_LOC%/*}
|
||||
TEMP_LOC=$(find ${pkg_install_dir}/include -name "mstore.mod")
|
||||
MSTORE=${TEMP_LOC%/*}
|
||||
TEMP_LOC=$(find ${pkg_install_dir}/include -name "mctc_io.mod")
|
||||
MCTC=${TEMP_LOC%/*}
|
||||
TEMP_LOC=$(find ${pkg_install_dir}/include -name "dftd3.mod")
|
||||
SDFTD3=${TEMP_LOC%/*}
|
||||
TEMP_LOC=$(find ${pkg_install_dir}/include -name "dftd4.mod")
|
||||
DFTD4=${TEMP_LOC%/*}
|
||||
TEMP_LOC=$(find ${pkg_install_dir}/include -name "tblite_xtb.mod")
|
||||
TBLITE=${TEMP_LOC%/*}
|
||||
|
||||
TBLITE_INCLUDE_DIRS="${pkg_install_dir}/include"
|
||||
TBLITE_LINK_LIBRARIES="${pkg_install_dir}/lib"
|
||||
TBLITE_CFLAGS="-I'${TOMLF}' -I'${MCTC}' -I'${SDFTD3}' -I'${DFTD4}' -I'${TBLITE}'"
|
||||
TBLITE_LDFLAGS="-L'${TBLITE_LINK_LIBRARIES}' -Wl,-rpath,'${TBLITE_LINK_LIBRARIES}'"
|
||||
|
||||
cat << EOF >> "${BUILDDIR}/setup_tblite"
|
||||
prepend_path PATH "${pkg_install_dir}/bin"
|
||||
prepend_path LD_LIBRARY_PATH "${TBLITE_LINK_LIBRARIES}"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue