The package rpms/cp2k.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/cp2k.git/commit/?id=82b438eab0977....
Change:
+%ifarch x86_64
Thanks.
Full change:
============
commit 886ce35f766bfed31eecbea00e49ed2fb3352f5b
Author: Dominik 'Rathann' Mierzejewski <dominik(a)greysector.net>
Date: Thu Oct 1 11:13:58 2020 +0200
whitespace cosmetics: realign
diff --git a/cp2k.spec b/cp2k.spec
index d66e761..30bab9d 100644
--- a/cp2k.spec
+++ b/cp2k.spec
@@ -137,9 +137,9 @@ rm tools/build_utils/fypp
# Generate necessary symlinks
TARGET=Linux-%{_target_cpu}-gfortran
ln -s Linux-x86-64-gfortran.ssmp arch/${TARGET}.ssmp
- for m in mpich openmpi ; do
+for m in mpich openmpi ; do
ln -s Linux-x86-64-gfortran.psmp arch/${TARGET}-${m}.psmp
- done
+done
# fix crashes in fftw on i686. Need to run on original file, otherwise symlinks will be
replaced with copies.
%ifarch i686
@@ -161,12 +161,12 @@ export PYTHON=%{_bindir}/python3
TARGET=Linux-%{_target_cpu}-gfortran
OPTFLAGS_COMMON="%(echo %{optflags} | sed -e 's/
-Werror=format-security//g') -fPIC -I%{_fmoddir} -fallow-argument-mismatch"
make OPTFLAGS="${OPTFLAGS_COMMON}" DISTLDFLAGS="%{__global_ldflags}
-Wl,-rpath,%{_libdir}/cp2k" %{?_smp_mflags} ARCH="${TARGET}"
VERSION="ssmp"
- %{_openmpi_load}
+%{_openmpi_load}
make OPTFLAGS="${OPTFLAGS_COMMON} -I%{_fmoddir}/openmpi"
DISTLDFLAGS="%{__global_ldflags} -Wl,-rpath,${MPI_LIB}/cp2k" %{?_smp_mflags}
ARCH="${TARGET}-openmpi" VERSION="psmp"
- %{_openmpi_unload}
- %{_mpich_load}
+%{_openmpi_unload}
+%{_mpich_load}
make OPTFLAGS="${OPTFLAGS_COMMON} -I%{_fmoddir}/mpich"
DISTLDFLAGS="%{__global_ldflags} -Wl,-rpath,${MPI_LIB}/cp2k" %{?_smp_mflags}
ARCH="${TARGET}-mpich" VERSION="psmp"
- %{_mpich_unload}
+%{_mpich_unload}
%install
TARGET=Linux-%{_target_cpu}-gfortran
@@ -177,7 +177,7 @@ ln -s cp2k.ssmp %{buildroot}%{_bindir}/cp2k_shell.ssmp
install -pm755 lib/${TARGET}/ssmp/lib*.so %{buildroot}%{_libdir}/cp2k/
install -pm755 lib/${TARGET}/ssmp/exts/dbcsr/libdbcsr.so %{buildroot}%{_libdir}/cp2k/
%{_openmpi_load}
- mkdir -p %{buildroot}{${MPI_BIN},${MPI_LIB}/cp2k}
+mkdir -p %{buildroot}{${MPI_BIN},${MPI_LIB}/cp2k}
install -pm755 exe/${TARGET}-openmpi/cp2k.psmp %{buildroot}${MPI_BIN}/cp2k.psmp_openmpi
ln -s cp2k.psmp_openmpi %{buildroot}${MPI_BIN}/cp2k.popt_openmpi
ln -s cp2k.psmp_openmpi %{buildroot}${MPI_BIN}/cp2k_shell.psmp_openmpi
@@ -185,7 +185,7 @@ install -pm755 lib/${TARGET}-openmpi/psmp/lib*.so
%{buildroot}${MPI_LIB}/cp2k/
install -pm755 lib/${TARGET}-openmpi/psmp/exts/dbcsr/libdbcsr.so
%{buildroot}${MPI_LIB}/cp2k/
%{_openmpi_unload}
%{_mpich_load}
- mkdir -p %{buildroot}{${MPI_BIN},${MPI_LIB}/cp2k}
+mkdir -p %{buildroot}{${MPI_BIN},${MPI_LIB}/cp2k}
install -pm755 exe/${TARGET}-mpich/cp2k.psmp %{buildroot}${MPI_BIN}/cp2k.psmp_mpich
ln -s cp2k.psmp_mpich %{buildroot}${MPI_BIN}/cp2k.popt_mpich
ln -s cp2k.psmp_mpich %{buildroot}${MPI_BIN}/cp2k_shell.psmp_mpich
@@ -203,36 +203,36 @@ dir_base=%{_builddir}
__EOF__
. /etc/profile.d/modules.sh
export CP2K_DATA_DIR=%{buildroot}%{_datadir}/cp2k/
- for mpi in '' mpich openmpi ; do
- if [ -n "$mpi" ]; then
- module load mpi/${mpi}-%{_arch}
- libdir=${MPI_LIB}/cp2k
- mpiopts="-maxtasks 4 -mpiranks 2"
- par=p
- suf="-${mpi}"
- else
- libdir=%{_libdir}/cp2k
- mpiopts=""
- par=s
- suf=""
- fi
- export LD_LIBRARY_PATH=%{buildroot}${libdir}
- tools/regtesting/do_regtest \
- -arch Linux-%{_target_cpu}-gfortran${suf} \
- -config fedora.config \
+for mpi in '' mpich openmpi ; do
+ if [ -n "$mpi" ]; then
+ module load mpi/${mpi}-%{_arch}
+ libdir=${MPI_LIB}/cp2k
+ mpiopts="-maxtasks 4 -mpiranks 2"
+ par=p
+ suf="-${mpi}"
+ else
+ libdir=%{_libdir}/cp2k
+ mpiopts=""
+ par=s
+ suf=""
+ fi
+ export LD_LIBRARY_PATH=%{buildroot}${libdir}
+ tools/regtesting/do_regtest \
+ -arch Linux-%{_target_cpu}-gfortran${suf} \
+ -config fedora.config \
%if %{git}
-cp2kdir cp2k-%{commit} \
%else
- -cp2kdir cp2k-%{version} \
+ -cp2kdir cp2k-%{version} \
%endif
- ${mpiopts} \
- -nobuild \
+ ${mpiopts} \
+ -nobuild \
-version ${par}smp \
- if [ -n "$mpi" ]; then
- module unload mpi/${mpi}-%{_arch}
- fi
- done
+ if [ -n "$mpi" ]; then
+ module unload mpi/${mpi}-%{_arch}
+ fi
+done
%endif
%files common
commit 82b438eab0977a77a3fea388aba759b49779bcf1
Author: Dominik 'Rathann' Mierzejewski <dominik(a)greysector.net>
Date: Thu Oct 1 11:13:27 2020 +0200
update to post-7.1 snapshot for gcc-10 compatibility (#1786794)
[sp]opt variants are no longer built (use OMP_NUM_THREADS=1 instead)
diff --git a/.gitignore b/.gitignore
index eca32b0..74b7cca 100644
--- a/.gitignore
+++ b/.gitignore
@@ -19,3 +19,5 @@
/cp2k-4.1.tar.bz2
/cp2k-5.1.tar.bz2
/cp2k-6.1.tar.bz2
+/cp2k-dbf7a77.tar.gz
+/dbcsr-d2dfe6e.tar.gz
diff --git a/cp2k-32bit.patch b/cp2k-32bit.patch
deleted file mode 100644
index ab2b77a..0000000
--- a/cp2k-32bit.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up cp2k-6.1/src/pw/realspace_grid_cube.F.32bit
cp2k-6.1/src/pw/realspace_grid_cube.F
---- cp2k-6.1/src/pw/realspace_grid_cube.F.32bit 2018-07-16 21:14:29.579258026 +0200
-+++ cp2k-6.1/src/pw/realspace_grid_cube.F 2018-07-16 21:25:14.227137976 +0200
-@@ -645,7 +645,7 @@ CONTAINS
- INTEGER, DIMENSION(3) :: lbounds, lbounds_local,
ubounds, &
- ubounds_local
- INTEGER, ALLOCATABLE, DIMENSION(:), TARGET :: blocklengths
-- INTEGER(kind=file_offset), ALLOCATABLE, &
-+ INTEGER(kind=address_kind), ALLOCATABLE, &
- DIMENSION(:), TARGET :: displacements
- INTEGER(kind=file_offset) :: BOF
- INTEGER :: counter, gid, i, islice, j,
k, last_z, &
diff --git a/cp2k-libxc5.patch b/cp2k-libxc5.patch
new file mode 100644
index 0000000..2a99911
--- /dev/null
+++ b/cp2k-libxc5.patch
@@ -0,0 +1,1350 @@
+diff -up cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/INSTALL.md.xc5
cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/INSTALL.md
+--- cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/INSTALL.md.xc5 2020-09-29
09:07:52.022336509 +0200
++++ cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/INSTALL.md 2020-09-29
09:08:24.690193654 +0200
+@@ -196,7 +196,7 @@ version of CP2K (ssmp or psmp), the FFTW
+ - During the installation, the directories `$(LIBXC_DIR)/lib`
+ and `$(LIBXC_DIR)/include` are created.
+ - Add `-D__LIBXC` to DFLAGS, `-I$(LIBXC_DIR)/include` to FCFLAGS
+- and `-L$(LIBXC_DIR)/lib -lxcf03 -lxc` to LIBS.
++ and `-L$(LIBXC_DIR)/lib -lxcf90 -lxc` to LIBS.
+ - :warning: Note that the deprecated flags `-D__LIBXC2` and `-D__LIBXC3` are ignored.
+
+ ### 2l. ELPA (optional, improved performance for diagonalization)
+diff -up cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/src/atom_output.F.xc5
cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/src/atom_output.F
+--- cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/src/atom_output.F.xc5 2020-09-29
09:07:52.019336522 +0200
++++ cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/src/atom_output.F 2020-09-29
09:10:56.425495411 +0200
+@@ -477,7 +477,7 @@ CONTAINS
+ TYPE(atom_type) :: atom
+ INTEGER, INTENT(IN) :: iw
+
+- CHARACTER(len=10*default_string_length) :: reference
++ CHARACTER(len=200*default_string_length) :: reference
+ CHARACTER(len=160) :: shortform
+ CHARACTER(len=20) :: tmpStr
+ INTEGER :: i_rep, ifun, il, meth,
myfun, n_rep, &
+diff -up cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/src/xc_write_output.F.xc5
cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/src/xc_write_output.F
+--- cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/src/xc_write_output.F.xc5 2020-09-25
17:01:47.000000000 +0200
++++ cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/src/xc_write_output.F 2020-09-29
09:07:52.021336514 +0200
+@@ -48,7 +48,7 @@ CONTAINS
+
+ CHARACTER(LEN=2*default_string_length) :: shortform
+ CHARACTER(LEN=20) :: tmpStr
+- CHARACTER(LEN=20*default_string_length) :: reference
++ CHARACTER(LEN=200*default_string_length) :: reference
+ INTEGER :: i_rep, ifun, il, myfun,
n_rep
+ TYPE(section_vals_type), POINTER :: libxc_fun, xc_fun,
xc_fun_section
+
+diff -up cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/src/xc/xc_libxc.F.xc5
cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/src/xc/xc_libxc.F
+--- cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/src/xc/xc_libxc.F.xc5 2020-09-25
17:01:47.000000000 +0200
++++ cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/src/xc/xc_libxc.F 2020-09-29
09:07:52.022336509 +0200
+@@ -42,34 +42,36 @@ MODULE xc_libxc
+ USE xc_rho_set_types, ONLY: xc_rho_set_get, &
+ xc_rho_set_type
+ #if defined (__LIBXC)
+- USE xc_libxc_wrap, ONLY: xc_f03_func_t, &
+- xc_f03_func_init, &
+- xc_f03_func_end, &
+- xc_f03_func_info_t, &
+- xc_f03_func_get_info, &
+- xc_f03_func_info_get_family, &
+- xc_f03_func_info_get_kind, &
+- xc_f03_func_info_get_name, &
+- xc_f03_gga_exc, &
+- xc_f03_gga_exc_vxc, &
+- xc_f03_gga_fxc, &
+- xc_f03_gga_vxc, &
+- xc_f03_lda, &
+- xc_f03_lda_exc, &
+- xc_f03_lda_exc_vxc, &
+- xc_f03_lda_fxc, &
+- xc_f03_lda_kxc, &
+- xc_f03_lda_vxc, &
+- xc_f03_mgga, &
+- xc_f03_mgga_exc, &
+- xc_f03_mgga_exc_vxc, &
+- xc_f03_mgga_fxc, &
+- xc_f03_mgga_vxc, &
++ USE iso_c_binding, ONLY: C_SIZE_T
++ USE xc_libxc_wrap, ONLY: xc_f90_func_t, &
++ xc_f90_func_init, &
++ xc_f90_func_end, &
++ xc_f90_func_info_t, &
++ xc_f90_func_get_info, &
++ xc_f90_func_info_get_family, &
++ xc_f90_func_info_get_kind, &
++ xc_f90_func_info_get_name, &
++ xc_f90_gga_exc, &
++ xc_f90_gga_exc_vxc, &
++ xc_f90_gga_fxc, &
++ xc_f90_gga_vxc, &
++ xc_f90_lda_exc_vxc_fxc_kxc, &
++ xc_f90_lda_exc, &
++ xc_f90_lda_exc_vxc, &
++ xc_f90_lda_fxc, &
++ xc_f90_lda_kxc, &
++ xc_f90_lda_vxc, &
++ xc_f90_mgga_exc, &
++ xc_f90_mgga_exc_vxc, &
++ xc_f90_mgga_exc_vxc_fxc, &
++ xc_f90_mgga_fxc, &
++ xc_f90_mgga_vxc, &
+ XC_POLARIZED, &
+ XC_UNPOLARIZED, &
+ XC_FAMILY_LDA, &
+ XC_FAMILY_GGA, &
+ XC_FAMILY_MGGA, &
++ XC_FAMILY_HYB_LDA, &
+ XC_FAMILY_HYB_GGA, &
+ XC_FAMILY_HYB_MGGA, &
+ XC_CORRELATION, &
+@@ -91,6 +93,10 @@ MODULE xc_libxc
+
+ CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'xc_libxc'
+
++#if defined (__LIBXC)
++ INTEGER(C_SIZE_T), PARAMETER, PRIVATE :: one = 1
++#endif
++
+ PUBLIC :: libxc_lda_info, libxc_lda_eval, libxc_lsd_info, libxc_lsd_eval, &
+ libxc_version_info
+
+@@ -121,8 +127,8 @@ CONTAINS
+ CHARACTER(LEN=default_string_length) :: func_name
+ INTEGER :: func_id
+ REAL(KIND=dp) :: func_scale
+- TYPE(xc_f03_func_t) :: xc_func
+- TYPE(xc_f03_func_info_t) :: xc_info
++ TYPE(xc_f90_func_t) :: xc_func
++ TYPE(xc_f90_func_info_t) :: xc_info
+
+ CALL section_vals_val_get(libxc_params, "functional", c_val=func_name)
+ CALL section_vals_val_get(libxc_params, "scale", r_val=func_scale)
+@@ -134,13 +140,13 @@ CONTAINS
+
+ func_id = xc_libxc_wrap_functional_get_number(func_name)
+ !$OMP CRITICAL(libxc_init)
+- CALL xc_f03_func_init(xc_func, func_id, XC_UNPOLARIZED)
+- xc_info = xc_f03_func_get_info(xc_func)
++ CALL xc_f90_func_init(xc_func, func_id, XC_UNPOLARIZED)
++ xc_info = xc_f90_func_get_info(xc_func)
+ !$OMP END CRITICAL(libxc_init)
+ !$OMP BARRIER
+
+- s1 = xc_f03_func_info_get_name(xc_info)
+- SELECT CASE (xc_f03_func_info_get_kind(xc_info))
++ s1 = xc_f90_func_info_get_name(xc_info)
++ SELECT CASE (xc_f90_func_info_get_kind(xc_info))
+ CASE (XC_EXCHANGE); WRITE (s2, '(a)') "exchange"
+ CASE (XC_CORRELATION); WRITE (s2, '(a)') "correlation"
+ CASE (XC_EXCHANGE_CORRELATION); WRITE (s2, '(a)')
"exchange-correlation"
+@@ -155,8 +161,8 @@ CONTAINS
+ CALL xc_libxc_wrap_info_refs(xc_info, XC_UNPOLARIZED, func_scale, reference)
+ END IF
+ IF (PRESENT(needs)) THEN
+- SELECT CASE (xc_f03_func_info_get_family(xc_info))
+- CASE (XC_FAMILY_LDA)
++ SELECT CASE (xc_f90_func_info_get_family(xc_info))
++ CASE (XC_FAMILY_LDA, XC_FAMILY_HYB_LDA)
+ needs%rho = .TRUE.
+ CASE (XC_FAMILY_GGA, XC_FAMILY_HYB_GGA)
+ needs%rho = .TRUE.
+@@ -171,8 +177,8 @@ CONTAINS
+ END SELECT
+ END IF
+ IF (PRESENT(max_deriv)) THEN
+- SELECT CASE (xc_f03_func_info_get_family(xc_info))
+- CASE (XC_FAMILY_LDA)
++ SELECT CASE (xc_f90_func_info_get_family(xc_info))
++ CASE (XC_FAMILY_LDA, XC_FAMILY_HYB_LDA)
+ max_deriv = 3
+ CASE (XC_FAMILY_GGA, XC_FAMILY_HYB_GGA)
+ max_deriv = 2
+@@ -188,7 +194,7 @@ CONTAINS
+ END IF
+ END IF
+
+- CALL xc_f03_func_end(xc_func)
++ CALL xc_f90_func_end(xc_func)
+ #else
+ MARK_USED(libxc_params)
+ MARK_USED(reference)
+@@ -226,8 +232,8 @@ CONTAINS
+ CHARACTER(LEN=default_string_length) :: func_name
+ INTEGER :: func_id
+ REAL(KIND=dp) :: func_scale
+- TYPE(xc_f03_func_t) :: xc_func
+- TYPE(xc_f03_func_info_t) :: xc_info
++ TYPE(xc_f90_func_t) :: xc_func
++ TYPE(xc_f90_func_info_t) :: xc_info
+
+ CALL section_vals_val_get(libxc_params, "functional", c_val=func_name)
+ CALL section_vals_val_get(libxc_params, "scale", r_val=func_scale)
+@@ -239,13 +245,13 @@ CONTAINS
+
+ func_id = xc_libxc_wrap_functional_get_number(func_name)
+ !$OMP CRITICAL(libxc_init)
+- CALL xc_f03_func_init(xc_func, func_id, XC_POLARIZED)
+- xc_info = xc_f03_func_get_info(xc_func)
++ CALL xc_f90_func_init(xc_func, func_id, XC_POLARIZED)
++ xc_info = xc_f90_func_get_info(xc_func)
+ !$OMP END CRITICAL(libxc_init)
+ !$OMP BARRIER
+
+- s1 = xc_f03_func_info_get_name(xc_info)
+- SELECT CASE (xc_f03_func_info_get_kind(xc_info))
++ s1 = xc_f90_func_info_get_name(xc_info)
++ SELECT CASE (xc_f90_func_info_get_kind(xc_info))
+ CASE (XC_EXCHANGE); WRITE (s2, '(a)') "exchange"
+ CASE (XC_CORRELATION); WRITE (s2, '(a)') "correlation"
+ CASE (XC_EXCHANGE_CORRELATION); WRITE (s2, '(a)')
"exchange-correlation"
+@@ -260,8 +266,8 @@ CONTAINS
+ CALL xc_libxc_wrap_info_refs(xc_info, XC_POLARIZED, func_scale, reference)
+ END IF
+ IF (PRESENT(needs)) THEN
+- SELECT CASE (xc_f03_func_info_get_family(xc_info))
+- CASE (XC_FAMILY_LDA)
++ SELECT CASE (xc_f90_func_info_get_family(xc_info))
++ CASE (XC_FAMILY_LDA, XC_FAMILY_HYB_LDA)
+ needs%rho_spin = .TRUE.
+ CASE (XC_FAMILY_GGA, XC_FAMILY_HYB_GGA)
+ needs%rho_spin = .TRUE.
+@@ -278,8 +284,8 @@ CONTAINS
+ END SELECT
+ END IF
+ IF (PRESENT(max_deriv)) THEN
+- SELECT CASE (xc_f03_func_info_get_family(xc_info))
+- CASE (XC_FAMILY_LDA)
++ SELECT CASE (xc_f90_func_info_get_family(xc_info))
++ CASE (XC_FAMILY_LDA, XC_FAMILY_HYB_LDA)
+ max_deriv = 3
+ CASE (XC_FAMILY_GGA, XC_FAMILY_HYB_GGA)
+ max_deriv = 2
+@@ -295,7 +301,7 @@ CONTAINS
+ END IF
+ END IF
+
+- CALL xc_f03_func_end(xc_func)
++ CALL xc_f90_func_end(xc_func)
+ #else
+ MARK_USED(libxc_params)
+ MARK_USED(reference)
+@@ -358,8 +364,8 @@ CONTAINS
+ e_rho_laplace_rho, e_rho_rho,
e_rho_rho_rho, e_rho_tau, e_tau, &
+ e_tau_tau, laplace_rho, norm_drho,
rho, tau
+ TYPE(xc_derivative_type), POINTER :: deriv
+- TYPE(xc_f03_func_t) :: xc_func
+- TYPE(xc_f03_func_info_t) :: xc_info
++ TYPE(xc_f90_func_t) :: xc_func
++ TYPE(xc_f90_func_info_t) :: xc_info
+
+ CALL timeset(routineN, handle)
+
+@@ -380,8 +386,8 @@ CONTAINS
+
+ func_id = xc_libxc_wrap_functional_get_number(func_name)
+ !$OMP CRITICAL(libxc_init)
+- CALL xc_f03_func_init(xc_func, func_id, XC_UNPOLARIZED)
+- xc_info = xc_f03_func_get_info(xc_func)
++ CALL xc_f90_func_init(xc_func, func_id, XC_UNPOLARIZED)
++ xc_info = xc_f90_func_get_info(xc_func)
+ !$OMP END CRITICAL(libxc_init)
+ !$OMP BARRIER
+
+@@ -426,8 +432,8 @@ CONTAINS
+ CALL xc_derivative_get(deriv, deriv_data=e_0)
+ END IF
+ IF (grad_deriv >= 1 .OR. grad_deriv == -1) THEN
+- SELECT CASE (xc_f03_func_info_get_family(xc_info))
+- CASE (XC_FAMILY_LDA)
++ SELECT CASE (xc_f90_func_info_get_family(xc_info))
++ CASE (XC_FAMILY_LDA, XC_FAMILY_HYB_LDA)
+ deriv => xc_dset_get_derivative(deriv_set, "(rho)", &
+ allocate_deriv=.TRUE.)
+ CALL xc_derivative_get(deriv, deriv_data=e_rho)
+@@ -458,8 +464,8 @@ CONTAINS
+ END SELECT
+ END IF
+ IF (grad_deriv >= 2 .OR. grad_deriv == -2) THEN
+- SELECT CASE (xc_f03_func_info_get_family(xc_info))
+- CASE (XC_FAMILY_LDA)
++ SELECT CASE (xc_f90_func_info_get_family(xc_info))
++ CASE (XC_FAMILY_LDA, XC_FAMILY_HYB_LDA)
+ deriv => xc_dset_get_derivative(deriv_set, "(rho)(rho)", &
+ allocate_deriv=.TRUE.)
+ CALL xc_derivative_get(deriv, deriv_data=e_rho_rho)
+@@ -514,8 +520,8 @@ CONTAINS
+ END SELECT
+ END IF
+ IF (grad_deriv >= 3 .OR. grad_deriv == -3) THEN
+- SELECT CASE (xc_f03_func_info_get_family(xc_info))
+- CASE (XC_FAMILY_LDA)
++ SELECT CASE (xc_f90_func_info_get_family(xc_info))
++ CASE (XC_FAMILY_LDA, XC_FAMILY_HYB_LDA)
+ deriv => xc_dset_get_derivative(deriv_set, "(rho)(rho)(rho)",
&
+ allocate_deriv=.TRUE.)
+ CALL xc_derivative_get(deriv, deriv_data=e_rho_rho_rho)
+@@ -556,7 +562,7 @@ CONTAINS
+
+ NULLIFY (dummy)
+
+- CALL xc_f03_func_end(xc_func)
++ CALL xc_f90_func_end(xc_func)
+
+ CALL timestop(handle)
+ #else
+@@ -615,8 +621,8 @@ CONTAINS
+ e_tau_a_tau_b, e_tau_b,
e_tau_b_tau_b, laplace_rhoa, laplace_rhob, &
+ norm_drho, norm_drhoa, norm_drhob,
rhoa, rhob, tau_a, tau_b
+ TYPE(xc_derivative_type), POINTER :: deriv
+- TYPE(xc_f03_func_t) :: xc_func
+- TYPE(xc_f03_func_info_t) :: xc_info
++ TYPE(xc_f90_func_t) :: xc_func
++ TYPE(xc_f90_func_info_t) :: xc_info
+
+ CALL timeset(routineN, handle)
+
+@@ -638,8 +644,8 @@ CONTAINS
+
+ func_id = xc_libxc_wrap_functional_get_number(func_name)
+ !$OMP CRITICAL(libxc_init)
+- CALL xc_f03_func_init(xc_func, func_id, XC_POLARIZED)
+- xc_info = xc_f03_func_get_info(xc_func)
++ CALL xc_f90_func_init(xc_func, func_id, XC_POLARIZED)
++ xc_info = xc_f90_func_get_info(xc_func)
+ !$OMP END CRITICAL(libxc_init)
+ !$OMP BARRIER
+
+@@ -733,8 +739,8 @@ CONTAINS
+ CALL xc_derivative_get(deriv, deriv_data=e_0)
+ END IF
+ IF (grad_deriv >= 1 .OR. grad_deriv == -1) THEN
+- SELECT CASE (xc_f03_func_info_get_family(xc_info))
+- CASE (XC_FAMILY_LDA)
++ SELECT CASE (xc_f90_func_info_get_family(xc_info))
++ CASE (XC_FAMILY_LDA, XC_FAMILY_HYB_LDA)
+ deriv => xc_dset_get_derivative(deriv_set, "(rhoa)", &
+ allocate_deriv=.TRUE.)
+ CALL xc_derivative_get(deriv, deriv_data=e_rhoa)
+@@ -792,8 +798,8 @@ CONTAINS
+ END SELECT
+ END IF
+ IF (grad_deriv >= 2 .OR. grad_deriv == -2) THEN
+- SELECT CASE (xc_f03_func_info_get_family(xc_info))
+- CASE (XC_FAMILY_LDA)
++ SELECT CASE (xc_f90_func_info_get_family(xc_info))
++ CASE (XC_FAMILY_LDA, XC_FAMILY_HYB_LDA)
+ deriv => xc_dset_get_derivative(deriv_set, "(rhoa)(rhoa)",
&
+ allocate_deriv=.TRUE.)
+ CALL xc_derivative_get(deriv, deriv_data=e_rhoa_rhoa)
+@@ -995,8 +1001,8 @@ CONTAINS
+ END SELECT
+ END IF
+ IF (grad_deriv >= 3 .OR. grad_deriv == -3) THEN
+- SELECT CASE (xc_f03_func_info_get_family(xc_info))
+- CASE (XC_FAMILY_LDA)
++ SELECT CASE (xc_f90_func_info_get_family(xc_info))
++ CASE (XC_FAMILY_LDA, XC_FAMILY_HYB_LDA)
+ deriv => xc_dset_get_derivative(deriv_set,
"(rhoa)(rhoa)(rhoa)", &
+ allocate_deriv=.TRUE.)
+ CALL xc_derivative_get(deriv, deriv_data=e_rhoa_rhoa_rhoa)
+@@ -1094,7 +1100,7 @@ CONTAINS
+
+ NULLIFY (dummy)
+
+- CALL xc_f03_func_end(xc_func)
++ CALL xc_f90_func_end(xc_func)
+
+ CALL timestop(handle)
+ #else
+@@ -1163,26 +1169,26 @@ CONTAINS
+ REAL(KIND=dp), DIMENSION(1) :: exc, my_tau, sigma, v2lapl2, v2lapltau, v2rho2,
v2rholapl, &
+ v2rhosigma, v2rhotau, v2sigma2, v2sigmalapl, v2sigmatau, v2tau2, v3rho3, vlapl,
vrho, &
+ vsigma, vtau
+- TYPE(xc_f03_func_info_t) :: xc_info
+- TYPE(xc_f03_func_t) :: xc_func
++ TYPE(xc_f90_func_info_t) :: xc_info
++ TYPE(xc_f90_func_t) :: xc_func
+
+ ! init vlapl (prevent libxc-4.0.x bug)
+ vlapl = 0.0_dp
+
+ func_id = xc_libxc_wrap_functional_get_number(func_name)
+ !$OMP CRITICAL(libxc_init)
+- CALL xc_f03_func_init(xc_func, func_id, XC_UNPOLARIZED)
+- xc_info = xc_f03_func_get_info(xc_func)
++ CALL xc_f90_func_init(xc_func, func_id, XC_UNPOLARIZED)
++ xc_info = xc_f90_func_get_info(xc_func)
+ CALL xc_libxc_wrap_functional_set_params(xc_func, xc_info, params, no_exc)
+ !$OMP END CRITICAL(libxc_init)
+ !$OMP BARRIER
+- SELECT CASE (xc_f03_func_info_get_family(xc_info))
+- CASE (XC_FAMILY_LDA)
++ SELECT CASE (xc_f90_func_info_get_family(xc_info))
++ CASE (XC_FAMILY_LDA, XC_FAMILY_HYB_LDA)
+ IF (grad_deriv == 0) THEN
+ !$OMP DO
+ DO ii = 1, npoints
+ IF (rho(ii) > epsilon_rho) THEN
+- CALL xc_f03_lda_exc(xc_func, 1, rho(ii), exc)
++ CALL xc_f90_lda_exc(xc_func, one, rho(ii), exc)
+ e_0(ii) = e_0(ii) + sc*exc(1)*rho(ii)
+ END IF
+ END DO
+@@ -1191,7 +1197,7 @@ CONTAINS
+ !$OMP DO
+ DO ii = 1, npoints
+ IF (rho(ii) > epsilon_rho) THEN
+- CALL xc_f03_lda_vxc(xc_func, 1, rho(ii), vrho)
++ CALL xc_f90_lda_vxc(xc_func, one, rho(ii), vrho)
+ e_rho(ii) = e_rho(ii) + sc*vrho(1)
+ END IF
+ END DO
+@@ -1200,7 +1206,7 @@ CONTAINS
+ !$OMP DO
+ DO ii = 1, npoints
+ IF (rho(ii) > epsilon_rho) THEN
+- CALL xc_f03_lda_exc_vxc(xc_func, 1, rho(ii), exc, vrho)
++ CALL xc_f90_lda_exc_vxc(xc_func, one, rho(ii), exc, vrho)
+ e_0(ii) = e_0(ii) + sc*exc(1)*rho(ii)
+ e_rho(ii) = e_rho(ii) + sc*vrho(1)
+ END IF
+@@ -1210,7 +1216,7 @@ CONTAINS
+ !$OMP DO
+ DO ii = 1, npoints
+ IF (rho(ii) > epsilon_rho) THEN
+- CALL xc_f03_lda_fxc(xc_func, 1, rho(ii), v2rho2)
++ CALL xc_f90_lda_fxc(xc_func, one, rho(ii), v2rho2)
+ e_rho_rho(ii) = e_rho_rho(ii) + sc*v2rho2(1)
+ END IF
+ END DO
+@@ -1219,8 +1225,8 @@ CONTAINS
+ !$OMP DO
+ DO ii = 1, npoints
+ IF (rho(ii) > epsilon_rho) THEN
+- CALL xc_f03_lda_exc_vxc(xc_func, 1, rho(ii), exc, vrho)
+- CALL xc_f03_lda_fxc(xc_func, 1, rho(ii), v2rho2)
++ CALL xc_f90_lda_exc_vxc(xc_func, one, rho(ii), exc, vrho)
++ CALL xc_f90_lda_fxc(xc_func, one, rho(ii), v2rho2)
+ e_0(ii) = e_0(ii) + sc*exc(1)*rho(ii)
+ e_rho(ii) = e_rho(ii) + sc*vrho(1)
+ e_rho_rho(ii) = e_rho_rho(ii) + sc*v2rho2(1)
+@@ -1231,7 +1237,7 @@ CONTAINS
+ !$OMP DO
+ DO ii = 1, npoints
+ IF (rho(ii) > epsilon_rho) THEN
+- CALL xc_f03_lda_kxc(xc_func, 1, rho(ii), v3rho3)
++ CALL xc_f90_lda_kxc(xc_func, one, rho(ii), v3rho3)
+ e_rho_rho_rho(ii) = e_rho_rho_rho(ii) + sc*v3rho3(1)
+ END IF
+ END DO
+@@ -1240,7 +1246,7 @@ CONTAINS
+ !$OMP DO
+ DO ii = 1, npoints
+ IF (rho(ii) > epsilon_rho) THEN
+- CALL xc_f03_lda(xc_func, 1, rho(ii), exc, vrho, v2rho2, v3rho3)
++ CALL xc_f90_lda_exc_vxc_fxc_kxc(xc_func, one, rho(ii), exc, vrho,
v2rho2, v3rho3)
+ e_0(ii) = e_0(ii) + sc*exc(1)*rho(ii)
+ e_rho(ii) = e_rho(ii) + sc*vrho(1)
+ e_rho_rho(ii) = e_rho_rho(ii) + sc*v2rho2(1)
+@@ -1255,7 +1261,7 @@ CONTAINS
+ DO ii = 1, npoints
+ IF (rho(ii) > epsilon_rho) THEN
+ sigma = norm_drho(ii)**2
+- CALL xc_f03_gga_exc(xc_func, 1, rho(ii), sigma, exc)
++ CALL xc_f90_gga_exc(xc_func, one, rho(ii), sigma, exc)
+ e_0(ii) = e_0(ii) + sc*exc(1)*rho(ii)
+ END IF
+ END DO
+@@ -1265,7 +1271,7 @@ CONTAINS
+ DO ii = 1, npoints
+ IF (rho(ii) > epsilon_rho) THEN
+ sigma = norm_drho(ii)**2
+- CALL xc_f03_gga_vxc(xc_func, 1, rho(ii), sigma, vrho, vsigma)
++ CALL xc_f90_gga_vxc(xc_func, one, rho(ii), sigma, vrho, vsigma)
+ e_rho(ii) = e_rho(ii) + sc*vrho(1)
+ e_ndrho(ii) = e_ndrho(ii) + sc*2.0_dp*vsigma(1)*norm_drho(ii)
+ END IF
+@@ -1277,10 +1283,10 @@ CONTAINS
+ IF (rho(ii) > epsilon_rho) THEN
+ sigma = norm_drho(ii)**2
+ IF (no_exc) THEN
+- CALL xc_f03_gga_vxc(xc_func, 1, rho(ii), sigma, vrho, vsigma)
++ CALL xc_f90_gga_vxc(xc_func, one, rho(ii), sigma, vrho, vsigma)
+ exc = 0.0_dp
+ ELSE
+- CALL xc_f03_gga_exc_vxc(xc_func, 1, rho(ii), sigma, &
++ CALL xc_f90_gga_exc_vxc(xc_func, one, rho(ii), sigma, &
+ exc, vrho, vsigma)
+ END IF
+ e_0(ii) = e_0(ii) + sc*exc(1)*rho(ii)
+@@ -1295,13 +1301,13 @@ CONTAINS
+ IF (rho(ii) > epsilon_rho) THEN
+ sigma = norm_drho(ii)**2
+ IF (no_exc) THEN
+- CALL xc_f03_gga_vxc(xc_func, 1, rho(ii), sigma, vrho, vsigma)
+- CALL xc_f03_gga_fxc(xc_func, 1, rho(ii), sigma, &
++ CALL xc_f90_gga_vxc(xc_func, one, rho(ii), sigma, vrho, vsigma)
++ CALL xc_f90_gga_fxc(xc_func, one, rho(ii), sigma, &
+ v2rho2, v2rhosigma, v2sigma2)
+ ELSE
+- CALL xc_f03_gga_exc_vxc(xc_func, 1, rho(ii), sigma, &
++ CALL xc_f90_gga_exc_vxc(xc_func, one, rho(ii), sigma, &
+ exc, vrho, vsigma)
+- CALL xc_f03_gga_fxc(xc_func, 1, rho(ii), sigma, &
++ CALL xc_f90_gga_fxc(xc_func, one, rho(ii), sigma, &
+ v2rho2, v2rhosigma, v2sigma2)
+ END IF
+ e_rho_rho(ii) = e_rho_rho(ii) + sc*v2rho2(1)
+@@ -1317,14 +1323,14 @@ CONTAINS
+ IF (rho(ii) > epsilon_rho) THEN
+ sigma = norm_drho(ii)**2
+ IF (no_exc) THEN
+- CALL xc_f03_gga_vxc(xc_func, 1, rho(ii), sigma, vrho, vsigma)
+- CALL xc_f03_gga_fxc(xc_func, 1, rho(ii), sigma, &
++ CALL xc_f90_gga_vxc(xc_func, one, rho(ii), sigma, vrho, vsigma)
++ CALL xc_f90_gga_fxc(xc_func, one, rho(ii), sigma, &
+ v2rho2, v2rhosigma, v2sigma2)
+ exc = 0.0_dp
+ ELSE
+- CALL xc_f03_gga_exc_vxc(xc_func, 1, rho(ii), sigma, &
++ CALL xc_f90_gga_exc_vxc(xc_func, one, rho(ii), sigma, &
+ exc, vrho, vsigma)
+- CALL xc_f03_gga_fxc(xc_func, 1, rho(ii), sigma, &
++ CALL xc_f90_gga_fxc(xc_func, one, rho(ii), sigma, &
+ v2rho2, v2rhosigma, v2sigma2)
+ END IF
+ e_0(ii) = e_0(ii) + sc*exc(1)*rho(ii)
+@@ -1345,7 +1351,7 @@ CONTAINS
+ IF ((rho(ii) > epsilon_rho) .AND. (tau(ii) > epsilon_tau)) THEN
+ sigma = norm_drho(ii)**2
+ my_tau(1) = MAX(tau(ii), sigma(1)/(8.0_dp*rho(ii)))
+- CALL xc_f03_mgga_exc(xc_func, 1, rho(ii), sigma, &
++ CALL xc_f90_mgga_exc(xc_func, one, rho(ii), sigma, &
+ laplace_rho(ii), my_tau, exc)
+ e_0(ii) = e_0(ii) + sc*exc(1)*rho(ii)
+ END IF
+@@ -1357,7 +1363,7 @@ CONTAINS
+ IF ((rho(ii) > epsilon_rho) .AND. (tau(ii) > epsilon_tau)) THEN
+ sigma = norm_drho(ii)**2
+ my_tau(1) = MAX(tau(ii), sigma(1)/(8.0_dp*rho(ii)))
+- CALL xc_f03_mgga_vxc(xc_func, 1, rho(ii), sigma, &
++ CALL xc_f90_mgga_vxc(xc_func, one, rho(ii), sigma, &
+ laplace_rho(ii), my_tau, vrho, vsigma, vlapl,
vtau)
+ e_rho(ii) = e_rho(ii) + sc*vrho(1)
+ e_ndrho(ii) = e_ndrho(ii) + sc*2.0_dp*vsigma(1)*norm_drho(ii)
+@@ -1373,11 +1379,11 @@ CONTAINS
+ sigma(1) = norm_drho(ii)**2
+ my_tau(1) = MAX(tau(ii), sigma(1)/(8.0_dp*rho(ii)))
+ IF (no_exc) THEN
+- CALL xc_f03_mgga_vxc(xc_func, 1, rho(ii), sigma, &
++ CALL xc_f90_mgga_vxc(xc_func, one, rho(ii), sigma, &
+ laplace_rho(ii), my_tau, vrho, vsigma, vlapl,
vtau)
+ exc = 0.0_dp
+ ELSE
+- CALL xc_f03_mgga_exc_vxc(xc_func, 1, rho(ii), sigma, &
++ CALL xc_f90_mgga_exc_vxc(xc_func, one, rho(ii), sigma, &
+ laplace_rho(ii), my_tau, exc, vrho,
vsigma, vlapl, vtau)
+ END IF
+ e_0(ii) = e_0(ii) + sc*exc(1)*rho(ii)
+@@ -1395,17 +1401,17 @@ CONTAINS
+ sigma = norm_drho(ii)**2
+ my_tau(1) = MAX(tau(ii), sigma(1)/(8.0_dp*rho(ii)))
+ IF (no_exc) THEN
+- CALL xc_f03_mgga_vxc(xc_func, 1, rho(ii), sigma, &
++ CALL xc_f90_mgga_vxc(xc_func, one, rho(ii), sigma, &
+ laplace_rho(ii), my_tau, vrho, vsigma, vlapl,
vtau)
+- CALL xc_f03_mgga_fxc(xc_func, 1, rho(ii), sigma, &
++ CALL xc_f90_mgga_fxc(xc_func, one, rho(ii), sigma, &
+ laplace_rho(ii), my_tau, &
+ v2rho2, v2sigma2, v2lapl2, v2tau2, v2rhosigma,
v2rholapl, &
+ v2rhotau, v2sigmalapl, v2sigmatau, v2lapltau)
+ ELSE
+- CALL xc_f03_mgga(xc_func, 1, rho(ii), sigma, &
+- laplace_rho(ii), my_tau, exc, vrho, vsigma, vlapl,
vtau, &
+- v2rho2, v2sigma2, v2lapl2, v2tau2, v2rhosigma,
v2rholapl, &
+- v2rhotau, v2sigmalapl, v2sigmatau, v2lapltau)
++ CALL xc_f90_mgga_exc_vxc_fxc(xc_func, one, rho(ii), sigma, &
++ laplace_rho(ii), my_tau, exc, vrho,
vsigma, vlapl, vtau, &
++ v2rho2, v2sigma2, v2lapl2, v2tau2,
v2rhosigma, v2rholapl, &
++ v2rhotau, v2sigmalapl, v2sigmatau,
v2lapltau)
+ END IF
+ e_rho_rho(ii) = e_rho_rho(ii) + sc*v2rho2(1)
+ e_ndrho_rho(ii) = e_ndrho_rho(ii) +
sc*2.0_dp*v2rhosigma(1)*norm_drho(ii)
+@@ -1429,18 +1435,18 @@ CONTAINS
+ sigma = norm_drho(ii)**2
+ my_tau(1) = MAX(tau(ii), sigma(1)/(8.0_dp*rho(ii)))
+ IF (no_exc) THEN
+- CALL xc_f03_mgga_vxc(xc_func, 1, rho(ii), sigma, &
++ CALL xc_f90_mgga_vxc(xc_func, one, rho(ii), sigma, &
+ laplace_rho(ii), my_tau, vrho, vsigma, vlapl,
vtau)
+- CALL xc_f03_mgga_fxc(xc_func, 1, rho(ii), sigma, &
++ CALL xc_f90_mgga_fxc(xc_func, one, rho(ii), sigma, &
+ laplace_rho(ii), my_tau, &
+ v2rho2, v2sigma2, v2lapl2, v2tau2, v2rhosigma,
v2rholapl, &
+ v2rhotau, v2sigmalapl, v2sigmatau, v2lapltau)
+ exc = 0.0_dp
+ ELSE
+- CALL xc_f03_mgga(xc_func, 1, rho(ii), sigma, &
+- laplace_rho(ii), my_tau, exc, vrho, vsigma, vlapl,
vtau, &
+- v2rho2, v2sigma2, v2lapl2, v2tau2, v2rhosigma,
v2rholapl, &
+- v2rhotau, v2sigmalapl, v2sigmatau, v2lapltau)
++ CALL xc_f90_mgga_exc_vxc_fxc(xc_func, one, rho(ii), sigma, &
++ laplace_rho(ii), my_tau, exc, vrho,
vsigma, vlapl, vtau, &
++ v2rho2, v2sigma2, v2lapl2, v2tau2,
v2rhosigma, v2rholapl, &
++ v2rhotau, v2sigmalapl, v2sigmatau,
v2lapltau)
+ END IF
+ e_0(ii) = e_0(ii) + sc*exc(1)*rho(ii)
+ e_rho(ii) = e_rho(ii) + sc*vrho(1)
+@@ -1467,7 +1473,7 @@ CONTAINS
+ CPABORT(TRIM(func_name)//": this XC_FAMILY is currently not
supported.")
+ END SELECT
+
+- CALL xc_f03_func_end(xc_func)
++ CALL xc_f90_func_end(xc_func)
+
+ END SUBROUTINE libxc_lda_calc
+ #endif
+@@ -1617,22 +1623,22 @@ CONTAINS
+ REAL(KIND=dp), DIMENSION(4, 1) :: v2lapltau, v2rholapl,
v2rhotau, v3rho3
+ REAL(KIND=dp), DIMENSION(6, 1) :: v2rhosigma, v2sigma2,
v2sigmalapl, &
+ v2sigmatau
+- TYPE(xc_f03_func_info_t) :: xc_info
+- TYPE(xc_f03_func_t) :: xc_func
++ TYPE(xc_f90_func_info_t) :: xc_info
++ TYPE(xc_f90_func_t) :: xc_func
+
+ vlapl(1, 1) = 0.0_dp
+ vlapl(2, 1) = 0.0_dp
+
+ func_id = xc_libxc_wrap_functional_get_number(func_name)
+ !$OMP CRITICAL(libxc_init)
+- CALL xc_f03_func_init(xc_func, func_id, XC_POLARIZED)
+- xc_info = xc_f03_func_get_info(xc_func)
++ CALL xc_f90_func_init(xc_func, func_id, XC_POLARIZED)
++ xc_info = xc_f90_func_get_info(xc_func)
+ CALL xc_libxc_wrap_functional_set_params(xc_func, xc_info, params, no_exc)
+ !$OMP END CRITICAL(libxc_init)
+ !$OMP BARRIER
+
+- SELECT CASE (xc_f03_func_info_get_family(xc_info))
+- CASE (XC_FAMILY_LDA)
++ SELECT CASE (xc_f90_func_info_get_family(xc_info))
++ CASE (XC_FAMILY_LDA, XC_FAMILY_HYB_LDA)
+ IF (grad_deriv == 0) THEN
+ !$OMP DO
+ DO ii = 1, npoints
+@@ -1641,7 +1647,7 @@ CONTAINS
+ IF ((my_rhoa + my_rhob) > epsilon_rho) THEN
+ rhov(1, 1) = MAX(my_rhoa, EPSILON(0.0_dp)*1.e4_dp)
+ rhov(2, 1) = MAX(my_rhob, EPSILON(0.0_dp)*1.e4_dp)
+- CALL xc_f03_lda_exc(xc_func, 1, rhov(1, 1), exc)
++ CALL xc_f90_lda_exc(xc_func, one, rhov(1, 1), exc)
+ e_0(ii) = e_0(ii) + sc*exc(1)*(rhov(1, 1) + rhov(2, 1))
+ END IF
+ END DO
+@@ -1654,7 +1660,7 @@ CONTAINS
+ IF ((my_rhoa + my_rhob) > epsilon_rho) THEN
+ rhov(1, 1) = MAX(my_rhoa, EPSILON(0.0_dp)*1.e4_dp)
+ rhov(2, 1) = MAX(my_rhob, EPSILON(0.0_dp)*1.e4_dp)
+- CALL xc_f03_lda_vxc(xc_func, 1, rhov(1, 1), vrho(1, 1))
++ CALL xc_f90_lda_vxc(xc_func, one, rhov(1, 1), vrho(1, 1))
+ e_rhoa(ii) = e_rhoa(ii) + sc*vrho(1, 1)
+ e_rhob(ii) = e_rhob(ii) + sc*vrho(2, 1)
+ END IF
+@@ -1668,7 +1674,7 @@ CONTAINS
+ IF ((my_rhoa + my_rhob) > epsilon_rho) THEN
+ rhov(1, 1) = MAX(my_rhoa, EPSILON(0.0_dp)*1.e4_dp)
+ rhov(2, 1) = MAX(my_rhob, EPSILON(0.0_dp)*1.e4_dp)
+- CALL xc_f03_lda_exc_vxc(xc_func, 1, rhov(1, 1), exc, vrho(1, 1))
++ CALL xc_f90_lda_exc_vxc(xc_func, one, rhov(1, 1), exc, vrho(1, 1))
+ e_0(ii) = e_0(ii) + sc*exc(1)*(rhov(1, 1) + rhov(2, 1))
+ e_rhoa(ii) = e_rhoa(ii) + sc*vrho(1, 1)
+ e_rhob(ii) = e_rhob(ii) + sc*vrho(2, 1)
+@@ -1683,7 +1689,7 @@ CONTAINS
+ IF ((my_rhoa + my_rhob) > epsilon_rho) THEN
+ rhov(1, 1) = MAX(my_rhoa, EPSILON(0.0_dp)*1.e4_dp)
+ rhov(2, 1) = MAX(my_rhob, EPSILON(0.0_dp)*1.e4_dp)
+- CALL xc_f03_lda_fxc(xc_func, 1, rhov(1, 1), v2rho2(1, 1))
++ CALL xc_f90_lda_fxc(xc_func, one, rhov(1, 1), v2rho2(1, 1))
+ e_rhoa_rhoa(ii) = e_rhoa_rhoa(ii) + sc*v2rho2(1, 1)
+ e_rhoa_rhob(ii) = e_rhoa_rhob(ii) + sc*v2rho2(2, 1)
+ e_rhob_rhob(ii) = e_rhob_rhob(ii) + sc*v2rho2(3, 1)
+@@ -1698,8 +1704,8 @@ CONTAINS
+ IF ((my_rhoa + my_rhob) > epsilon_rho) THEN
+ rhov(1, 1) = MAX(my_rhoa, EPSILON(0.0_dp)*1.e4_dp)
+ rhov(2, 1) = MAX(my_rhob, EPSILON(0.0_dp)*1.e4_dp)
+- CALL xc_f03_lda_exc_vxc(xc_func, 1, rhov(1, 1), exc, vrho(1, 1))
+- CALL xc_f03_lda_fxc(xc_func, 1, rhov(1, 1), v2rho2(1, 1))
++ CALL xc_f90_lda_exc_vxc(xc_func, one, rhov(1, 1), exc, vrho(1, 1))
++ CALL xc_f90_lda_fxc(xc_func, one, rhov(1, 1), v2rho2(1, 1))
+ e_0(ii) = e_0(ii) + sc*exc(1)*(rhov(1, 1) + rhov(2, 1))
+ e_rhoa(ii) = e_rhoa(ii) + sc*vrho(1, 1)
+ e_rhob(ii) = e_rhob(ii) + sc*vrho(2, 1)
+@@ -1717,7 +1723,7 @@ CONTAINS
+ IF ((my_rhoa + my_rhob) > epsilon_rho) THEN
+ rhov(1, 1) = MAX(my_rhoa, EPSILON(0.0_dp)*1.e4_dp)
+ rhov(2, 1) = MAX(my_rhob, EPSILON(0.0_dp)*1.e4_dp)
+- CALL xc_f03_lda_kxc(xc_func, 1, rhov(1, 1), v3rho3(1, 1))
++ CALL xc_f90_lda_kxc(xc_func, one, rhov(1, 1), v3rho3(1, 1))
+ e_rhoa_rhoa_rhoa(ii) = e_rhoa_rhoa_rhoa(ii) + sc*v3rho3(1, 1)
+ e_rhoa_rhoa_rhob(ii) = e_rhoa_rhoa_rhob(ii) + sc*v3rho3(2, 1)
+ e_rhoa_rhob_rhob(ii) = e_rhoa_rhob_rhob(ii) + sc*v3rho3(3, 1)
+@@ -1733,7 +1739,7 @@ CONTAINS
+ IF ((my_rhoa + my_rhob) > epsilon_rho) THEN
+ rhov(1, 1) = MAX(my_rhoa, EPSILON(0.0_dp)*1.e4_dp)
+ rhov(2, 1) = MAX(my_rhob, EPSILON(0.0_dp)*1.e4_dp)
+- CALL xc_f03_lda(xc_func, 1, rhov(1, 1), exc, vrho(1, 1), v2rho2(1, 1),
v3rho3(1, 1))
++ CALL xc_f90_lda_exc_vxc_fxc_kxc(xc_func, one, rhov(1, 1), exc, vrho(1,
1), v2rho2(1, 1), v3rho3(1, 1))
+ e_0(ii) = e_0(ii) + sc*exc(1)*(rhov(1, 1) + rhov(2, 1))
+ e_rhoa(ii) = e_rhoa(ii) + sc*vrho(1, 1)
+ e_rhob(ii) = e_rhob(ii) + sc*vrho(2, 1)
+@@ -1763,7 +1769,7 @@ CONTAINS
+ sigmav(1, 1) = my_norm_drhoa**2
+ sigmav(3, 1) = my_norm_drhob**2
+ sigmav(2, 1) = 0.5_dp*(my_norm_drho**2 - sigmav(1, 1) - sigmav(3, 1))
+- CALL xc_f03_gga_exc(xc_func, 1, rhov(1, 1), sigmav(1, 1), exc)
++ CALL xc_f90_gga_exc(xc_func, one, rhov(1, 1), sigmav(1, 1), exc)
+ e_0(ii) = e_0(ii) + sc*exc(1)*(rhov(1, 1) + rhov(2, 1))
+ END IF
+ END DO
+@@ -1782,7 +1788,7 @@ CONTAINS
+ sigmav(1, 1) = my_norm_drhoa**2
+ sigmav(3, 1) = my_norm_drhob**2
+ sigmav(2, 1) = 0.5_dp*(my_norm_drho**2 - sigmav(1, 1) - sigmav(3, 1))
+- CALL xc_f03_gga_vxc(xc_func, 1, rhov(1, 1), sigmav(1, 1), vrho(1, 1),
vsigma(1, 1))
++ CALL xc_f90_gga_vxc(xc_func, one, rhov(1, 1), sigmav(1, 1), vrho(1,
1), vsigma(1, 1))
+ e_rhoa(ii) = e_rhoa(ii) + sc*vrho(1, 1)
+ e_rhob(ii) = e_rhob(ii) + sc*vrho(2, 1)
+ e_ndrho(ii) = e_ndrho(ii) + sc*vsigma(2, 1)*my_norm_drho
+@@ -1808,10 +1814,10 @@ CONTAINS
+ sigmav(3, 1) = my_norm_drhob**2
+ sigmav(2, 1) = 0.5_dp*(my_norm_drho**2 - sigmav(1, 1) - sigmav(3, 1))
+ IF (no_exc) THEN
+- CALL xc_f03_gga_vxc(xc_func, 1, rhov(1, 1), sigmav(1, 1), vrho(1,
1), vsigma(1, 1))
++ CALL xc_f90_gga_vxc(xc_func, one, rhov(1, 1), sigmav(1, 1), vrho(1,
1), vsigma(1, 1))
+ exc = 0.0_dp
+ ELSE
+- CALL xc_f03_gga_exc_vxc(xc_func, 1, rhov(1, 1), sigmav(1, 1), exc,
vrho(1, 1), vsigma(1, 1))
++ CALL xc_f90_gga_exc_vxc(xc_func, one, rhov(1, 1), sigmav(1, 1),
exc, vrho(1, 1), vsigma(1, 1))
+ END IF
+ e_0(ii) = e_0(ii) + sc*exc(1)*(rhov(1, 1) + rhov(2, 1))
+ e_rhoa(ii) = e_rhoa(ii) + sc*vrho(1, 1)
+@@ -1839,12 +1845,12 @@ CONTAINS
+ sigmav(3, 1) = my_norm_drhob**2
+ sigmav(2, 1) = 0.5_dp*(my_norm_drho**2 - sigmav(1, 1) - sigmav(3, 1))
+ IF (no_exc) THEN
+- CALL xc_f03_gga_vxc(xc_func, 1, rhov(1, 1), sigmav(1, 1), vrho(1,
1), vsigma(1, 1))
+- CALL xc_f03_gga_fxc(xc_func, 1, rhov(1, 1), sigmav(1, 1), &
++ CALL xc_f90_gga_vxc(xc_func, one, rhov(1, 1), sigmav(1, 1), vrho(1,
1), vsigma(1, 1))
++ CALL xc_f90_gga_fxc(xc_func, one, rhov(1, 1), sigmav(1, 1), &
+ v2rho2(1, 1), v2rhosigma(1, 1), v2sigma2(1,
1))
+ ELSE
+- CALL xc_f03_gga_exc_vxc(xc_func, 1, rhov(1, 1), sigmav(1, 1), exc,
vrho(1, 1), vsigma(1, 1))
+- CALL xc_f03_gga_fxc(xc_func, 1, rhov(1, 1), sigmav(1, 1), &
++ CALL xc_f90_gga_exc_vxc(xc_func, one, rhov(1, 1), sigmav(1, 1),
exc, vrho(1, 1), vsigma(1, 1))
++ CALL xc_f90_gga_fxc(xc_func, one, rhov(1, 1), sigmav(1, 1), &
+ v2rho2(1, 1), v2rhosigma(1, 1), v2sigma2(1,
1))
+ END IF
+ e_rhoa_rhoa(ii) = e_rhoa_rhoa(ii) + sc*v2rho2(1, 1)
+@@ -1893,13 +1899,13 @@ CONTAINS
+ sigmav(3, 1) = my_norm_drhob**2
+ sigmav(2, 1) = 0.5_dp*(my_norm_drho**2 - sigmav(1, 1) - sigmav(3, 1))
+ IF (no_exc) THEN
+- CALL xc_f03_gga_vxc(xc_func, 1, rhov(1, 1), sigmav(1, 1), vrho(1,
1), vsigma(1, 1))
+- CALL xc_f03_gga_fxc(xc_func, 1, rhov(1, 1), sigmav(1, 1), &
++ CALL xc_f90_gga_vxc(xc_func, one, rhov(1, 1), sigmav(1, 1), vrho(1,
1), vsigma(1, 1))
++ CALL xc_f90_gga_fxc(xc_func, one, rhov(1, 1), sigmav(1, 1), &
+ v2rho2(1, 1), v2rhosigma(1, 1), v2sigma2(1,
1))
+ exc = 0.0_dp
+ ELSE
+- CALL xc_f03_gga_exc_vxc(xc_func, 1, rhov(1, 1), sigmav(1, 1), exc,
vrho(1, 1), vsigma(1, 1))
+- CALL xc_f03_gga_fxc(xc_func, 1, rhov(1, 1), sigmav(1, 1), &
++ CALL xc_f90_gga_exc_vxc(xc_func, one, rhov(1, 1), sigmav(1, 1),
exc, vrho(1, 1), vsigma(1, 1))
++ CALL xc_f90_gga_fxc(xc_func, one, rhov(1, 1), sigmav(1, 1), &
+ v2rho2(1, 1), v2rhosigma(1, 1), v2sigma2(1,
1))
+ END IF
+ e_0(ii) = e_0(ii) + sc*exc(1)*(rhov(1, 1) + rhov(2, 1))
+@@ -1965,7 +1971,7 @@ CONTAINS
+ tauv(2, 1) = MAX(my_tau_b, EPSILON(0.0_dp)*1.e4_dp)
+ tauv(1, 1) = MAX(tauv(1, 1), sigmav(1, 1)/(8.0_dp*rhov(1, 1)))
+ tauv(2, 1) = MAX(tauv(2, 1), sigmav(3, 1)/(8.0_dp*rhov(2, 1)))
+- CALL xc_f03_mgga_exc(xc_func, 1, rhov(1, 1), sigmav(1, 1), &
++ CALL xc_f90_mgga_exc(xc_func, one, rhov(1, 1), sigmav(1, 1), &
+ laplace_rhov(1, 1), tauv(1, 1), exc)
+ e_0(ii) = e_0(ii) + sc*exc(1)*(rhov(1, 1) + rhov(2, 1))
+ END IF
+@@ -1993,7 +1999,7 @@ CONTAINS
+ tauv(2, 1) = MAX(my_tau_b, EPSILON(0.0_dp)*1.e4_dp)
+ tauv(1, 1) = MAX(tauv(1, 1), sigmav(1, 1)/(8.0_dp*rhov(1, 1)))
+ tauv(2, 1) = MAX(tauv(2, 1), sigmav(3, 1)/(8.0_dp*rhov(2, 1)))
+- CALL xc_f03_mgga_vxc(xc_func, 1, rhov(1, 1), sigmav(1, 1), &
++ CALL xc_f90_mgga_vxc(xc_func, one, rhov(1, 1), sigmav(1, 1), &
+ laplace_rhov(1, 1), tauv(1, 1), vrho(1, 1),
vsigma(1, 1), vlapl(1, 1), vtau(1, 1))
+ e_rhoa(ii) = e_rhoa(ii) + sc*vrho(1, 1)
+ e_rhob(ii) = e_rhob(ii) + sc*vrho(2, 1)
+@@ -2032,12 +2038,12 @@ CONTAINS
+ tauv(1, 1) = MAX(tauv(1, 1), sigmav(1, 1)/(8.0_dp*rhov(1, 1)))
+ tauv(2, 1) = MAX(tauv(2, 1), sigmav(3, 1)/(8.0_dp*rhov(2, 1)))
+ IF (no_exc) THEN
+- CALL xc_f03_mgga_vxc(xc_func, 1, rhov(1, 1), sigmav(1, 1), &
++ CALL xc_f90_mgga_vxc(xc_func, one, rhov(1, 1), sigmav(1, 1), &
+ laplace_rhov(1, 1), tauv(1, 1), vrho(1, 1),
vsigma(1, 1), &
+ vlapl(1, 1), vtau(1, 1))
+ exc = 0.0_dp
+ ELSE
+- CALL xc_f03_mgga_exc_vxc(xc_func, 1, rhov(1, 1), sigmav(1, 1),
&
++ CALL xc_f90_mgga_exc_vxc(xc_func, one, rhov(1, 1), sigmav(1, 1),
&
+ laplace_rhov(1, 1), tauv(1, 1), exc,
&
+ vrho(1, 1), vsigma(1, 1), vlapl(1, 1),
vtau(1, 1))
+ END IF
+@@ -2079,20 +2085,20 @@ CONTAINS
+ tauv(1, 1) = MAX(tauv(1, 1), sigmav(1, 1)/(8.0_dp*rhov(1, 1)))
+ tauv(2, 1) = MAX(tauv(2, 1), sigmav(3, 1)/(8.0_dp*rhov(2, 1)))
+ IF (no_exc) THEN
+- CALL xc_f03_mgga_vxc(xc_func, 1, rhov(1, 1), sigmav(1, 1), &
++ CALL xc_f90_mgga_vxc(xc_func, one, rhov(1, 1), sigmav(1, 1), &
+ laplace_rhov(1, 1), tauv(1, 1), vrho(1, 1),
vsigma(1, 1), &
+ vlapl(1, 1), vtau(1, 1))
+- CALL xc_f03_mgga_fxc(xc_func, 1, rhov(1, 1), sigmav(1, 1), &
++ CALL xc_f90_mgga_fxc(xc_func, one, rhov(1, 1), sigmav(1, 1), &
+ laplace_rhov(1, 1), tauv(1, 1), &
+ v2rho2(1, 1), v2sigma2(1, 1), v2lapl2(1, 1),
v2tau2(1, 1), &
+ v2rhosigma(1, 1), v2rholapl(1, 1), v2rhotau(1,
1), &
+ v2sigmalapl(1, 1), v2sigmatau(1, 1),
v2lapltau(1, 1))
+ ELSE
+- CALL xc_f03_mgga(xc_func, 1, rhov(1, 1), sigmav(1, 1), &
+- laplace_rhov(1, 1), tauv(1, 1), exc, vrho(1, 1),
vsigma(1, 1), &
+- vlapl(1, 1), vtau(1, 1), v2rho2(1, 1), v2sigma2(1,
1), &
+- v2lapl2(1, 1), v2tau2(1, 1), v2rhosigma(1, 1),
v2rholapl(1, 1), &
+- v2rhotau(1, 1), v2sigmalapl(1, 1), v2sigmatau(1,
1), v2lapltau(1, 1))
++ CALL xc_f90_mgga_exc_vxc_fxc(xc_func, one, rhov(1, 1), sigmav(1,
1), &
++ laplace_rhov(1, 1), tauv(1, 1), exc,
vrho(1, 1), vsigma(1, 1), &
++ vlapl(1, 1), vtau(1, 1), v2rho2(1, 1),
v2sigma2(1, 1), &
++ v2lapl2(1, 1), v2tau2(1, 1),
v2rhosigma(1, 1), v2rholapl(1, 1), &
++ v2rhotau(1, 1), v2sigmalapl(1, 1),
v2sigmatau(1, 1), v2lapltau(1, 1))
+ END IF
+ e_rhoa_rhoa(ii) = e_rhoa_rhoa(ii) + sc*v2rho2(1, 1)
+ e_rhoa_rhob(ii) = e_rhoa_rhob(ii) + sc*v2rho2(2, 1)
+@@ -2186,21 +2192,21 @@ CONTAINS
+ tauv(1, 1) = MAX(tauv(1, 1), sigmav(1, 1)/(8.0_dp*rhov(1, 1)))
+ tauv(2, 1) = MAX(tauv(2, 1), sigmav(3, 1)/(8.0_dp*rhov(2, 1)))
+ IF (no_exc) THEN
+- CALL xc_f03_mgga_vxc(xc_func, 1, rhov(1, 1), sigmav(1, 1), &
++ CALL xc_f90_mgga_vxc(xc_func, one, rhov(1, 1), sigmav(1, 1), &
+ laplace_rhov(1, 1), tauv(1, 1), vrho(1, 1),
vsigma(1, 1), &
+ vlapl(1, 1), vtau(1, 1))
+- CALL xc_f03_mgga_fxc(xc_func, 1, rhov(1, 1), sigmav(1, 1), &
++ CALL xc_f90_mgga_fxc(xc_func, one, rhov(1, 1), sigmav(1, 1), &
+ laplace_rhov(1, 1), tauv(1, 1), &
+ v2rho2(1, 1), v2sigma2(1, 1), v2lapl2(1, 1),
v2tau2(1, 1), &
+ v2rhosigma(1, 1), v2rholapl(1, 1), v2rhotau(1,
1), &
+ v2sigmalapl(1, 1), v2sigmatau(1, 1),
v2lapltau(1, 1))
+ exc = 0.0_dp
+ ELSE
+- CALL xc_f03_mgga(xc_func, 1, rhov(1, 1), sigmav(1, 1), &
+- laplace_rhov(1, 1), tauv(1, 1), exc, vrho(1, 1),
vsigma(1, 1), &
+- vlapl(1, 1), vtau(1, 1), v2rho2(1, 1), v2sigma2(1,
1), &
+- v2lapl2(1, 1), v2tau2(1, 1), v2rhosigma(1, 1),
v2rholapl(1, 1), &
+- v2rhotau(1, 1), v2sigmalapl(1, 1), v2sigmatau(1,
1), v2lapltau(1, 1))
++ CALL xc_f90_mgga_exc_vxc_fxc(xc_func, one, rhov(1, 1), sigmav(1,
1), &
++ laplace_rhov(1, 1), tauv(1, 1), exc,
vrho(1, 1), vsigma(1, 1), &
++ vlapl(1, 1), vtau(1, 1), v2rho2(1, 1),
v2sigma2(1, 1), &
++ v2lapl2(1, 1), v2tau2(1, 1),
v2rhosigma(1, 1), v2rholapl(1, 1), &
++ v2rhotau(1, 1), v2sigmalapl(1, 1),
v2sigmatau(1, 1), v2lapltau(1, 1))
+ END IF
+ e_0(ii) = e_0(ii) + sc*exc(1)*(rhov(1, 1) + rhov(2, 1))
+ e_rhoa(ii) = e_rhoa(ii) + sc*vrho(1, 1)
+@@ -2288,7 +2294,7 @@ CONTAINS
+ CPABORT(TRIM(func_name)//": this XC_FAMILY is currently not
supported.")
+ END SELECT
+
+- CALL xc_f03_func_end(xc_func)
++ CALL xc_f90_func_end(xc_func)
+
+ END SUBROUTINE libxc_lsd_calc
+ #endif
+diff -up cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/src/xc/xc_libxc_wrap.F.xc5
cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/src/xc/xc_libxc_wrap.F
+--- cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/src/xc/xc_libxc_wrap.F.xc5 2020-09-25
17:01:47.000000000 +0200
++++ cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/src/xc/xc_libxc_wrap.F 2020-09-29
09:12:02.935183992 +0200
+@@ -9,7 +9,7 @@
+ !> \brief Includes all necessary routines, functions and parameters from
+ !> libxc. Provides CP2K routines/functions where the LibXC calling list
+ !> is version dependent (>=4.0.3). The naming convention for such
+-!> routines/functions is xc_f03_XXX --> 'xc_libxc_wrap_XXX'. All
version
++!> routines/functions is xc_f90_XXX --> 'xc_libxc_wrap_XXX'. All
version
+ !> independent routines/functions are just bypassed to higher level
+ !> module file 'xc_libxc'.
+ !>
+@@ -31,48 +31,49 @@ MODULE xc_libxc_wrap
+ ! Functionals which require parameters
+ USE cp_log_handling, ONLY: cp_to_string
+ USE kinds, ONLY: dp
+- USE xc_f03_lib_m, ONLY: xc_f03_func_end, &
+- xc_f03_func_init, &
+- xc_f03_func_set_ext_params, &
+- xc_f03_functional_get_number, &
++ USE xc_f90_lib_m, ONLY: xc_f90_func_end, &
++ xc_f90_func_init, &
++ xc_f90_func_set_ext_params, &
++ xc_f90_functional_get_number, &
+ !
+- xc_f03_gga_exc, &
+- xc_f03_gga_exc_vxc, &
+- xc_f03_gga_fxc, &
+- xc_f03_gga_vxc, &
++ xc_f90_gga_exc, &
++ xc_f90_gga_exc_vxc, &
++ xc_f90_gga_fxc, &
++ xc_f90_gga_vxc, &
+ !
+- xc_f03_func_get_info, &
+- xc_f03_func_info_get_family, &
+- xc_f03_func_info_get_kind, &
+- xc_f03_func_info_get_name, &
+- xc_f03_func_info_get_references, &
+- xc_f03_func_info_get_flags, &
+- xc_f03_func_info_get_n_ext_params, &
+- xc_f03_func_info_get_ext_params_description, &
++ xc_f90_func_get_info, &
++ xc_f90_func_info_get_family, &
++ xc_f90_func_info_get_kind, &
++ xc_f90_func_info_get_name, &
++ xc_f90_func_info_get_references, &
++ xc_f90_func_info_get_flags, &
++ xc_f90_func_info_get_n_ext_params, &
++ xc_f90_func_info_get_ext_params_description, &
+ !
+- xc_f03_func_reference_get_ref, &
+- xc_f03_func_reference_get_doi, &
++ xc_f90_func_reference_get_ref, &
++ xc_f90_func_reference_get_doi, &
+ !
+- xc_f03_lda, &
+- xc_f03_lda_exc, &
+- xc_f03_lda_exc_vxc, &
+- xc_f03_lda_fxc, &
+- xc_f03_lda_kxc, &
+- xc_f03_lda_vxc, &
++ xc_f90_lda_exc, &
++ xc_f90_lda_exc_vxc, &
++ xc_f90_lda_fxc, &
++ xc_f90_lda_kxc, &
++ xc_f90_lda_vxc, &
++ xc_f90_lda_exc_vxc_fxc_kxc, &
+ !
+- xc_f03_mgga, &
+- xc_f03_mgga_exc, &
+- xc_f03_mgga_exc_vxc, &
+- xc_f03_mgga_fxc, &
+- xc_f03_mgga_vxc, &
++ xc_f90_mgga_exc, &
++ xc_f90_mgga_exc_vxc, &
++ xc_f90_mgga_exc_vxc_fxc, &
++ xc_f90_mgga_fxc, &
++ xc_f90_mgga_vxc, &
+ !
+- xc_f03_func_t, &
+- xc_f03_func_info_t, &
+- xc_f03_func_reference_t, &
++ xc_f90_func_t, &
++ xc_f90_func_info_t, &
++ xc_f90_func_reference_t, &
+ !
+ XC_FAMILY_LDA, &
+ XC_FAMILY_GGA, &
+ XC_FAMILY_MGGA, &
++ XC_FAMILY_HYB_LDA, &
+ XC_FAMILY_HYB_GGA, &
+ XC_FAMILY_HYB_MGGA, &
+ !
+@@ -97,20 +98,20 @@ MODULE xc_libxc_wrap
+
+ CHARACTER(LEN=*), PARAMETER, PUBLIC :: libxc_version = XC_VERSION
+
+- PUBLIC :: xc_f03_func_t, xc_f03_func_info_t
+- PUBLIC :: xc_f03_func_init, xc_f03_func_end
+- PUBLIC :: xc_f03_func_get_info, xc_f03_func_info_get_family,
xc_f03_func_info_get_kind, &
+- xc_f03_func_info_get_name
+- PUBLIC :: xc_f03_gga_exc, xc_f03_gga_exc_vxc, xc_f03_gga_fxc, &
+- xc_f03_gga_vxc
+- PUBLIC :: xc_f03_lda, &
+- xc_f03_lda_exc, xc_f03_lda_exc_vxc, &
+- xc_f03_lda_fxc, xc_f03_lda_kxc, xc_f03_lda_vxc
+- PUBLIC :: xc_f03_mgga, xc_f03_mgga_exc, xc_f03_mgga_exc_vxc, xc_f03_mgga_fxc, &
+- xc_f03_mgga_vxc
++ PUBLIC :: xc_f90_func_t, xc_f90_func_info_t
++ PUBLIC :: xc_f90_func_init, xc_f90_func_end
++ PUBLIC :: xc_f90_func_get_info, xc_f90_func_info_get_family,
xc_f90_func_info_get_kind, &
++ xc_f90_func_info_get_name
++ PUBLIC :: xc_f90_gga_exc, xc_f90_gga_exc_vxc, xc_f90_gga_fxc, &
++ xc_f90_gga_vxc
++ PUBLIC :: xc_f90_lda_exc_vxc_fxc_kxc, &
++ xc_f90_lda_exc, xc_f90_lda_exc_vxc, &
++ xc_f90_lda_fxc, xc_f90_lda_kxc, xc_f90_lda_vxc
++ PUBLIC :: xc_f90_mgga_exc, xc_f90_mgga_exc_vxc, xc_f90_mgga_fxc, &
++ xc_f90_mgga_vxc, xc_f90_mgga_exc_vxc_fxc
+
+ PUBLIC :: XC_FAMILY_LDA, XC_FAMILY_GGA, XC_FAMILY_MGGA, &
+- XC_FAMILY_HYB_GGA, XC_FAMILY_HYB_MGGA
++ XC_FAMILY_HYB_LDA, XC_FAMILY_HYB_GGA, XC_FAMILY_HYB_MGGA
+
+ PUBLIC :: XC_UNPOLARIZED, XC_POLARIZED
+
+@@ -136,7 +137,7 @@ CONTAINS
+ !> \author A. Gloess (agloess)
+ !
**************************************************************************************************
+ SUBROUTINE xc_libxc_wrap_info_refs(xc_info, polarized, sc, reference)
+- TYPE(xc_f03_func_info_t), INTENT(IN) :: xc_info
++ TYPE(xc_f90_func_info_t), INTENT(IN) :: xc_info
+ INTEGER, INTENT(IN) :: polarized
+ REAL(KIND=dp), INTENT(IN) :: sc
+ CHARACTER(LEN=*), INTENT(OUT) :: reference
+@@ -148,7 +149,7 @@ CONTAINS
+ CHARACTER(LEN=400) :: doi_string, ref_string,
tmp_string
+ INTEGER :: empty, first, handle, i,
i_ref, idx, &
+ last, n_params
+- TYPE(xc_f03_func_reference_t) :: xc_ref
++ TYPE(xc_f90_func_reference_t) :: xc_ref
+
+ CALL timeset(routineN, handle)
+
+@@ -157,9 +158,9 @@ CONTAINS
+ first = 1
+ DO WHILE (i_ref >= 0)
+ ! information about functional references
+- xc_ref = xc_f03_func_info_get_references(xc_info, i_ref)
+- ref_string = xc_f03_func_reference_get_ref(xc_ref)
+- doi_string = xc_f03_func_reference_get_doi(xc_ref)
++ xc_ref = xc_f90_func_info_get_references(xc_info, i_ref)
++ ref_string = xc_f90_func_reference_get_ref(xc_ref)
++ doi_string = xc_f90_func_reference_get_doi(xc_ref)
+ WRITE (tmp_string, '(a1,i1,a2,a,a7,a)') '[', idx, '] ',
&
+ TRIM(ref_string), ', doi: ', TRIM(doi_string)
+ last = first + LEN_TRIM(tmp_string) - 1
+@@ -172,13 +173,13 @@ CONTAINS
+ first = empty + 1
+ END IF
+ ! information about (optional) external parameters
+- n_params = xc_f03_func_info_get_n_ext_params(xc_info)
++ n_params = xc_f90_func_info_get_n_ext_params(xc_info)
+ IF (n_params > 0) THEN
+ reference(first:first + maxlen - 1) = 'Optional external
parameters:'//REPEAT(' ', maxlen - 28)
+ first = first + maxlen
+ END IF
+ DO i = 1, n_params
+- descr_string = xc_f03_func_info_get_ext_params_description(xc_info, i - 1)
++ descr_string = xc_f90_func_info_get_ext_params_description(xc_info, i - 1)
+ last = first + LEN_TRIM(descr_string) - 1 + 3
+ reference(first:last) = ' * '//TRIM(descr_string)
+ first = last + 1
+@@ -252,9 +253,9 @@ CONTAINS
+ CALL timeset(routineN, handle)
+
+ IF (func_string(1:3) == "XC_") THEN
+- func_id = xc_f03_functional_get_number(func_string(4:LEN_TRIM(func_string)))
++ func_id = xc_f90_functional_get_number(func_string(4:LEN_TRIM(func_string)))
+ ELSE
+- func_id = xc_f03_functional_get_number(func_string(1:LEN_TRIM(func_string)))
++ func_id = xc_f90_functional_get_number(func_string(1:LEN_TRIM(func_string)))
+ END IF
+ IF (func_id == -1) THEN
+ CPABORT(TRIM(func_string)//": wrong functional name")
+@@ -272,9 +273,9 @@ CONTAINS
+ !> \author F. Stein (fstein93)
+ !
**************************************************************************************************
+ LOGICAL FUNCTION xc_libxc_wrap_is_under_development(xc_info)
+- TYPE(xc_f03_func_info_t) :: xc_info
++ TYPE(xc_f90_func_info_t) :: xc_info
+
+- IF (IAND(xc_f03_func_info_get_flags(xc_info), XC_FLAGS_DEVELOPMENT) ==
XC_FLAGS_DEVELOPMENT) THEN
++ IF (IAND(xc_f90_func_info_get_flags(xc_info), XC_FLAGS_DEVELOPMENT) ==
XC_FLAGS_DEVELOPMENT) THEN
+ xc_libxc_wrap_is_under_development = .TRUE.
+ ELSE
+ xc_libxc_wrap_is_under_development = .FALSE.
+@@ -297,8 +298,8 @@ CONTAINS
+ CHARACTER(LEN=*), PARAMETER :: routineN = 'xc_libxc_wrap_needs_laplace'
+
+ INTEGER :: handle
+- TYPE(xc_f03_func_info_t) :: xc_info
+- TYPE(xc_f03_func_t) :: xc_func
++ TYPE(xc_f90_func_info_t) :: xc_info
++ TYPE(xc_f90_func_t) :: xc_func
+
+ CALL timeset(routineN, handle)
+
+@@ -312,17 +313,17 @@ CONTAINS
+ ! functional will be Laplace-dependent for XC_POLARIZED too.
+ !
+ !$OMP CRITICAL(libxc_init)
+- CALL xc_f03_func_init(xc_func, func_id, XC_UNPOLARIZED)
+- xc_info = xc_f03_func_get_info(xc_func)
++ CALL xc_f90_func_init(xc_func, func_id, XC_UNPOLARIZED)
++ xc_info = xc_f90_func_get_info(xc_func)
+ !$OMP END CRITICAL(libxc_init)
+ !$OMP BARRIER
+- IF (IAND(xc_f03_func_info_get_flags(xc_info), XC_FLAGS_NEEDS_LAPLACIAN) ==
XC_FLAGS_NEEDS_LAPLACIAN) THEN
++ IF (IAND(xc_f90_func_info_get_flags(xc_info), XC_FLAGS_NEEDS_LAPLACIAN) ==
XC_FLAGS_NEEDS_LAPLACIAN) THEN
+ xc_libxc_wrap_needs_laplace = .TRUE.
+ ELSE
+ xc_libxc_wrap_needs_laplace = .FALSE.
+ END IF
+
+- CALL xc_f03_func_end(xc_func)
++ CALL xc_f90_func_end(xc_func)
+
+ CALL timestop(handle)
+
+@@ -338,8 +339,8 @@ CONTAINS
+ !> \author A. Gloess (agloess)
+ !
**************************************************************************************************
+ SUBROUTINE xc_libxc_wrap_functional_set_params(xc_func, xc_info, params, no_exc)
+- TYPE(xc_f03_func_t), INTENT(INOUT) :: xc_func
+- TYPE(xc_f03_func_info_t), INTENT(IN) :: xc_info
++ TYPE(xc_f90_func_t), INTENT(INOUT) :: xc_func
++ TYPE(xc_f90_func_info_t), INTENT(IN) :: xc_info
+ REAL(KIND=dp), DIMENSION(:), INTENT(IN), POINTER :: params
+ LOGICAL, INTENT(INOUT) :: no_exc
+
+@@ -349,12 +350,12 @@ CONTAINS
+
+ CALL timeset(routineN, handle)
+
+- n_params = xc_f03_func_info_get_n_ext_params(xc_info)
++ n_params = xc_f90_func_info_get_n_ext_params(xc_info)
+ i_params = SIZE(params)
+
+ IF ((n_params > 0) .AND. (i_params > 0) .AND. (params(1) < HUGE(0.0_dp)))
THEN
+ IF (i_params == n_params) THEN
+- CALL xc_f03_func_set_ext_params(xc_func, params)
++ CALL xc_f90_func_set_ext_params(xc_func, params)
+ ELSE
+ CALL cp_abort(__LOCATION__, &
+ "LIBXC: Inconsistent number of optional external parameters.
(required: "&
+@@ -362,7 +363,7 @@ CONTAINS
+ END IF
+ END IF
+
+- IF (IAND(xc_f03_func_info_get_flags(xc_info), XC_FLAGS_HAVE_EXC) ==
XC_FLAGS_HAVE_EXC) THEN
++ IF (IAND(xc_f90_func_info_get_flags(xc_info), XC_FLAGS_HAVE_EXC) ==
XC_FLAGS_HAVE_EXC) THEN
+ no_exc = .FALSE.
+ ELSE
+ no_exc = .TRUE.
+diff -up
cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/tests/QS/regtest-libxc/H2O-hybrid-cam-lda0.inp.xc5
cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/tests/QS/regtest-libxc/H2O-hybrid-cam-lda0.inp
+---
cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/tests/QS/regtest-libxc/H2O-hybrid-cam-lda0.inp.xc5 2020-09-29
09:07:52.022336509 +0200
++++
cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/tests/QS/regtest-libxc/H2O-hybrid-cam-lda0.inp 2020-09-29
09:07:52.022336509 +0200
+@@ -0,0 +1,69 @@
++&FORCE_EVAL
++ METHOD Quickstep
++ &DFT
++ BASIS_SET_FILE_NAME EMSL_BASIS_SETS
++ POTENTIAL_FILE_NAME POTENTIAL
++ &MGRID
++ CUTOFF 250
++ REL_CUTOFF 50
++ &END MGRID
++ &QS
++ METHOD GAPW
++ &END QS
++ &POISSON
++ PERIODIC NONE
++ PSOLVER MT
++ &END
++ &SCF
++ EPS_SCF 1.0E-6
++ SCF_GUESS ATOMIC
++ MAX_SCF 2
++ &END SCF
++ &XC
++ &XC_FUNCTIONAL
++ &LIBXC
++ FUNCTIONAL XC_HYB_LDA_XC_CAM_LDA0
++ &END LIBXC
++ &END XC_FUNCTIONAL
++ &HF
++ &SCREENING
++ EPS_SCHWARZ 1.0E-10
++ &END
++ &INTERACTION_POTENTIAL
++ OMEGA 0.333333333333
++ POTENTIAL_TYPE MIX_CL
++ SCALE_LONGRANGE 0.5
++ SCALE_COULOMB 0.25
++ &END INTERACTION_POTENTIAL
++ &MEMORY
++ MAX_MEMORY 5
++ &END
++ FRACTION 1.0
++ &END
++ &END XC
++ &END DFT
++ &SUBSYS
++ &CELL
++ ABC 6.0 6.0 6.0
++ PERIODIC NONE
++ &END CELL
++ &COORD
++ O 0.000000 0.000000 -0.065587
++ H 0.000000 -0.757136 0.520545
++ H 0.000000 0.757136 0.520545
++ &END COORD
++ &KIND H
++ BASIS_SET 6-31Gxx
++ POTENTIAL ALL
++ &END KIND
++ &KIND O
++ BASIS_SET 6-31Gxx
++ POTENTIAL ALL
++ &END KIND
++ &END SUBSYS
++&END FORCE_EVAL
++&GLOBAL
++ PROJECT H2O-hybrid-cam-lda0
++# TRACE
++ PRINT_LEVEL MEDIUM
++&END GLOBAL
+diff -up
cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/tests/QS/regtest-libxc/H2O-hybrid-tpssh_libxc.inp.xc5
cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/tests/QS/regtest-libxc/H2O-hybrid-tpssh_libxc.inp
+diff -up
cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/tests/QS/regtest-libxc/H2O-hybrid-wb97mv_libxc.inp.xc5
cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/tests/QS/regtest-libxc/H2O-hybrid-wb97mv_libxc.inp
+---
cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/tests/QS/regtest-libxc/H2O-hybrid-wb97mv_libxc.inp.xc5 2020-09-29
09:07:52.023336505 +0200
++++
cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/tests/QS/regtest-libxc/H2O-hybrid-wb97mv_libxc.inp 2020-09-29
09:07:52.023336505 +0200
+@@ -0,0 +1,79 @@
++&FORCE_EVAL
++ METHOD Quickstep
++ &DFT
++ BASIS_SET_FILE_NAME EMSL_BASIS_SETS
++ POTENTIAL_FILE_NAME POTENTIAL
++ &MGRID
++ CUTOFF 250
++ REL_CUTOFF 50
++ &END MGRID
++ &QS
++ METHOD GAPW
++ &END QS
++ &POISSON
++ PERIODIC NONE
++ PSOLVER MT
++ &END
++ &SCF
++ EPS_SCF 1.0E-6
++ SCF_GUESS ATOMIC
++ MAX_SCF 100
++ &END SCF
++ &XC
++ &XC_FUNCTIONAL
++ &LIBXC
++ FUNCTIONAL HYB_MGGA_XC_WB97M_V
++ &END LIBXC
++ &END XC_FUNCTIONAL
++ &HF
++ FRACTION 1.000
++ &SCREENING
++ EPS_SCHWARZ 1.0E-6
++ &END
++ &INTERACTION_POTENTIAL
++ POTENTIAL_TYPE MIX_CL
++ SCALE_COULOMB 0.15
++ SCALE_LONGRANGE 0.85
++ OMEGA 0.30
++ &END
++ &MEMORY
++ MAX_MEMORY 10
++ &END
++ &END
++ &vdW_POTENTIAL
++ DISPERSION_FUNCTIONAL NON_LOCAL
++ &NON_LOCAL
++ TYPE RVV10
++ PARAMETERS 6.0 0.01
++ VERBOSE_OUTPUT
++ KERNEL_FILE_NAME rVV10_kernel_table.dat
++ CUTOFF 100
++ &END NON_LOCAL
++ &END vdW_POTENTIAL
++ &END XC
++ &END DFT
++ &SUBSYS
++ &CELL
++ ABC 6.0 6.0 6.0
++ PERIODIC NONE
++ &END CELL
++ &COORD
++ O 0.000000 0.000000 -0.065587
++ H 0.000000 -0.757136 0.520545
++ H 0.000000 0.757136 0.520545
++ &END COORD
++ &KIND H
++ BASIS_SET 6-31Gxx
++ POTENTIAL ALL
++ &END KIND
++ &KIND O
++ BASIS_SET 6-31Gxx
++ POTENTIAL ALL
++ &END KIND
++ &END SUBSYS
++&END FORCE_EVAL
++&GLOBAL
++ PROJECT H2O-hybrid-wb97mv_libxc
++# TRACE
++ PRINT_LEVEL MEDIUM
++&END GLOBAL
+diff -up
cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/tests/QS/regtest-libxc/TEST_FILES.xc5
cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/tests/QS/regtest-libxc/TEST_FILES
+---
cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/tests/QS/regtest-libxc/TEST_FILES.xc5 2020-09-29
09:07:52.023336505 +0200
++++
cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/tests/QS/regtest-libxc/TEST_FILES 2020-09-29
09:10:24.193646163 +0200
+@@ -8,7 +8,8 @@ H2O_pbe_libxc_tddfpt-s.inp
+ H2O_lda_libxc_tddfpt-s.inp 1 2e-14
-17.13289833455457
+ H2O_pbe_libxc_tddfpt-t_uks.inp 1 2e-14
-17.23116251474715
+ H2O-hybrid-b3lyp_libxc.inp 1 3e-14
-76.41035426581175
+-H2O-hybrid-tpssh_libxc.inp 1 3e-14
-76.40464600997517
++H2O-hybrid-wb97mv_libxc.inp 1 2e-14
-76.39577090943143
++H2O-hybrid-cam-lda0.inp 1 3e-14
-76.47215215216751
+ H2O_lda_libxc_tddfpt-t_uks.inp 1 1.0E-14
-17.13289833455847
+ H2O-tpssx_libxc.inp 1 3e-13
-33.88300963208589
+ diamond_br89_libxc_uks.inp 1 7e-14
-11.06581614908332
+diff -up
cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/tests/QS/regtest-xastdp/TEST_FILES.xc5
cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/tests/QS/regtest-xastdp/TEST_FILES
+---
cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/tests/QS/regtest-xastdp/TEST_FILES.xc5 2020-09-25
17:01:47.000000000 +0200
++++
cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/tests/QS/regtest-xastdp/TEST_FILES 2020-09-29
09:07:52.021336514 +0200
+@@ -17,9 +17,9 @@ H2O-32-ot_solver.inp
+ #as well as the use of RI metrics for screening
+ Ne-pbc-truncated.inp 88 1e-08
890.773794
+ Ne-pbc-truncated-tc_metric.inp 88 1e-06
890.780820
+-Ne-pbc-shortrange.inp 88 1e-08
890.494623
+-Ne-pbc-shortrange-sr_metric.inp 88 1e-08
890.495800
+-Ne-pbc-shortrange-ovlp_metric.inp 88 1e-08
890.501870
++Ne-pbc-shortrange.inp 88 1e-08
890.608044
++Ne-pbc-shortrange-sr_metric.inp 88 1e-08
890.609224
++Ne-pbc-shortrange-ovlp_metric.inp 88 1e-08
890.615305
+ #Checking the use of pseudo-potential and ADMM
+ SiH4-PBE0-admm-pseudo.inp 88 1e-08
146.185955
+ #Checking open-shell calculation with non-singlet ground state
+diff -up
cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/tools/toolchain/scripts/install_libxc.sh.xc5
cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/tools/toolchain/scripts/install_libxc.sh
+---
cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/tools/toolchain/scripts/install_libxc.sh.xc5 2020-09-25
17:01:47.000000000 +0200
++++
cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/tools/toolchain/scripts/install_libxc.sh 2020-09-29
09:07:52.023336505 +0200
+@@ -2,8 +2,8 @@
+ [ "${BASH_SOURCE[0]}" ] && SCRIPT_NAME="${BASH_SOURCE[0]}"
|| SCRIPT_NAME=$0
+ SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_NAME")" && pwd
-P)"
+
+-libxc_ver="4.3.4"
+-libxc_sha256="a8ee37ddc5079339854bd313272856c9d41a27802472ee9ae44b58ee9a298337"
++libxc_ver="5.0.0"
++libxc_sha256="1cdc57930f7b57da4eb9b2c55a50ba1c2c385936ddaf5582fee830994461a892"
+ source "${SCRIPT_DIR}"/common_vars.sh
+ source "${SCRIPT_DIR}"/tool_kit.sh
+ source "${SCRIPT_DIR}"/signal_trap.sh
+@@ -30,7 +30,8 @@ case "$with_libxc" in
+ echo "libxc-${libxc_ver}.tar.gz is found"
+ else
+ download_pkg ${DOWNLOADER_FLAGS} ${libxc_sha256} \
+-
https://www.cp2k.org/static/downloads/libxc-${libxc_ver}.tar.gz
++
http://www.tddft.org/programs/libxc/down.php?file=${libxc_ver}/libxc-${li...
\
++ -o libxc-${libxc_ver}.tar.gz
+ fi
+ echo "Installing from scratch into ${pkg_install_dir}"
+ [ -d libxc-${libxc_ver} ] && rm -rf libxc-${libxc_ver}
+@@ -64,7 +65,7 @@ case "$with_libxc" in
+ ;;
+ esac
+ if [ "$with_libxc" != "__DONTUSE__" ] ; then
+- LIBXC_LIBS="-lxcf03 -lxc"
++ LIBXC_LIBS="-lxcf90 -lxc"
+ if [ "$with_libxc" != "__SYSTEM__" ] ; then
+ cat <<EOF > "${BUILDDIR}/setup_libxc"
+ prepend_path LD_LIBRARY_PATH "$pkg_install_dir/lib"
diff --git a/cp2k-rpm.patch b/cp2k-rpm.patch
index 7dd42fa..e6c6fd2 100644
--- a/cp2k-rpm.patch
+++ b/cp2k-rpm.patch
@@ -1,291 +1,204 @@
-diff -up cp2k-6.1/arch/Linux-x86-64-gfortran.popt.r
cp2k-6.1/arch/Linux-x86-64-gfortran.popt
---- cp2k-6.1/arch/Linux-x86-64-gfortran.popt.r 2018-06-12 14:07:45.000000000 +0200
-+++ cp2k-6.1/arch/Linux-x86-64-gfortran.popt 2018-07-16 15:44:30.013193276 +0200
-@@ -2,8 +2,9 @@
- # Author: Matthias Krack (matthias.krack(a)psi.ch, PSI, June 2018)
- CC = gcc
- CPP =
--FC = mpif90
--LD = mpif90
-+FC = mpifort
-+LD = mpifort
-+LD_SHARED = mpifort -shared
+diff -up cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/arch/Linux-x86-64-gfortran.psmp.r
cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/arch/Linux-x86-64-gfortran.psmp
+---
cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/arch/Linux-x86-64-gfortran.psmp.r 2020-09-25
17:01:47.000000000 +0200
++++
cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/arch/Linux-x86-64-gfortran.psmp 2020-09-29
15:18:55.464317641 +0200
+@@ -5,64 +5,37 @@
+ CC = mpicc
+ FC = mpif90
+ LD = mpif90
++LD_SHARED = mpif90 -shared
AR = ar -r
- FFTW_INC = $(GCC_DIR)/fftw/3.3/include
- FFTW_LIB = $(GCC_DIR)/fftw/3.3/lib
-@@ -13,22 +14,26 @@ LIBXC_INC = $(GCC_DIR)/libxc/4.0.4/inc
- LIBXC_LIB = $(GCC_DIR)/libxc/4.0.4/lib
- LIBXSMM_INC = $(GCC_DIR)/libxsmm/1.9/include
- LIBXSMM_LIB = $(GCC_DIR)/libxsmm/1.9/lib
--DFLAGS = -D__F2008 -D__FFTW3 -D__LIBINT -D__LIBXC -D__LIBXSMM -D__MPI_VERSION=3\
-- -D__LIBINT_MAX_AM=7 -D__LIBDERIV_MAX_AM1=6 -D__MAX_CONTR=4\
-+DFLAGS = -D__F2008 -D__FFTW3 -D__LIBINT -D__LIBXC @LIBSMM_DEFS@ -D__MPI_VERSION=3\
-+ -D__LIBINT_MAX_AM=@LIBINT_MAX_AM@ -D__LIBDERIV_MAX_AM1=@LIBDERIV_MAX_AM@
-D__MAX_CONTR=4\
-+ -D__SCALAPACK2 -D__ELPA=201705 -D__HAS_IEEE_EXCEPTIONS\
- -D__parallel -D__SCALAPACK
- CPPFLAGS =
--FCFLAGS = $(DFLAGS) -O2 -ffast-math -ffree-form -ffree-line-length-none\
-- -ftree-vectorize -funroll-loops -mtune=native -std=f2008\
-+OPTFLAGS = -O2 -ffast-math\
-+ -ftree-vectorize -funroll-loops -mtune=native\
- -I$(FFTW_INC) -I$(LIBINT_INC) -I$(LIBXC_INC) -I$(LIBXSMM_INC)
--LDFLAGS = $(FCFLAGS) -static
--LIBS = $(MPI_LIBRARY_PATH)/libscalapack-gnu.a\
-- $(LIBPATH)/liblapack-gnu.a\
-- $(LIBPATH)/libblas-gnu.a\
-- $(FFTW_LIB)/libfftw3.a\
-- $(LIBXC_LIB)/libxcf03.a\
-- $(LIBXC_LIB)/libxc.a\
-- $(LIBINT_LIB)/libderiv.a\
-- $(LIBINT_LIB)/libint.a\
-- $(LIBXSMM_LIB)/libxsmmf.a\
-- $(LIBXSMM_LIB)/libxsmm.a\
-+CFLAGS = $(DFLAGS) $(OPTFLAGS)
-+CXXFLAGS = $(DFLAGS) $(OPTFLAGS)
-+FCFLAGS = $(DFLAGS) $(OPTFLAGS) -ffree-form -ffree-line-length-none -std=f2008
+
+-include $(MPI_PATH)/plumed/2.5.2/lib/plumed/src/lib/Plumed.inc.static
+-
+-ELPA_VER = 2019.05.001
+-ELPA_INC = $(MPI_PATH)/elpa/$(ELPA_VER)-openmp/include/elpa_openmp-$(ELPA_VER)
+-ELPA_LIB = $(MPI_PATH)/elpa/$(ELPA_VER)-openmp/lib
+-
+-FFTW_INC = $(GNU_PATH)/fftw/3.3/include
+-FFTW_LIB = $(GNU_PATH)/fftw/3.3/lib
+-
+-LIBINT_INC = $(GNU_PATH)/libint/2.6.0-lmax-6/include
+-LIBINT_LIB = $(GNU_PATH)/libint/2.6.0-lmax-6/lib
+-
+-LIBXC_INC = $(GNU_PATH)/libxc/4.3.4/include
+-LIBXC_LIB = $(GNU_PATH)/libxc/4.3.4/lib
+-
+-LIBXSMM_INC = $(GNU_PATH)/libxsmm/1.15/include
+-LIBXSMM_LIB = $(GNU_PATH)/libxsmm/1.15/lib
+-
+-SPGLIB_INC = $(GNU_PATH)/spglib/1.12.2/include
+-SPGLIB_LIB = $(GNU_PATH)/spglib/1.12.2/lib
+-
+-CFLAGS = -O2 -fopenmp -g -mtune=native
++OPTFLAGS = -O2 -g -mtune=native
++CFLAGS = $(OPTFLAGS) -fopenmp
+
+ DFLAGS = -D__ELPA
+ DFLAGS += -D__FFTW3
+ DFLAGS += -D__LIBINT
+ DFLAGS += -D__LIBXC
+-DFLAGS += -D__LIBXSMM
++DFLAGS += @LIBSMM_DEFS@
+ DFLAGS += -D__MPI_VERSION=3
+-DFLAGS += -D__PLUMED2
+-DFLAGS += -D__SPGLIB
++DFLAGS += -D__MAX_CONTR=4
++DFLAGS += -D__HAS_IEEE_EXCEPTIONS
+ DFLAGS += -D__parallel
+ DFLAGS += -D__SCALAPACK
+
+ FCFLAGS = $(CFLAGS) $(DFLAGS)
+ FCFLAGS += -ffree-form
+ FCFLAGS += -ffree-line-length-none
+-FCFLAGS += -ftree-vectorize
+-FCFLAGS += -funroll-loops
+ FCFLAGS += -std=f2008
+-FCFLAGS += -I$(ELPA_INC)/elpa -I$(ELPA_INC)/modules
+-FCFLAGS += -I$(FFTW_INC) -I$(LIBINT_INC) -I$(LIBXC_INC) -I$(LIBXSMM_INC)
+
+-LDFLAGS = $(FCFLAGS) -static-libgfortran
+LDFLAGS = $(FCFLAGS) $(DISTLDFLAGS)
-+LIBS = -lelpa\
-+ -lscalapack -lstdc++\
-+ -lflexiblas\
-+ -lfftw3\
-+ -lxcf03\
-+ -lxc\
-+ -lderiv\
-+ -lint\
-+ @LIBSMM_LIBS@\
- -ldl
-+DATA_DIR = /usr/share/cp2k
-diff -up cp2k-6.1/arch/Linux-x86-64-gfortran.psmp.r
cp2k-6.1/arch/Linux-x86-64-gfortran.psmp
---- cp2k-6.1/arch/Linux-x86-64-gfortran.psmp.r 2018-06-12 14:07:45.000000000 +0200
-+++ cp2k-6.1/arch/Linux-x86-64-gfortran.psmp 2018-07-16 15:44:20.853109669 +0200
-@@ -2,8 +2,9 @@
- # Author: Matthias Krack (matthias.krack(a)psi.ch, PSI, June 2018)
+
+-LIBS = $(PLUMED_DEPENDENCIES) -lgsl -lgslcblas -lz
+-LIBS += $(ELPA_LIB)/libelpa_openmp.a
+-LIBS += $(LIBXC_LIB)/libxcf03.a
+-LIBS += $(LIBXC_LIB)/libxc.a
+-LIBS += $(LIBINT_LIB)/libint2.a
+-LIBS += $(SPGLIB_LIB)/libsymspg.a
+-LIBS += $(FFTW_LIB)/libfftw3.a
+-LIBS += $(FFTW_LIB)/libfftw3_threads.a
+-LIBS += $(LIBXSMM_LIB)/libxsmmf.a
+-LIBS += $(LIBXSMM_LIB)/libxsmm.a
+-LIBS += $(MPI_LIBRARY_PATH)/libscalapack.a
+-LIBS += $(LIBPATH)/liblapack.a
+-LIBS += $(LIBPATH)/libblas.a
++LIBS = -lelpa_openmp
++LIBS += -lxcf90
++LIBS += -lxc
++LIBS += -lint2
++LIBS += -lfftw3
++LIBS += -lfftw3_omp
++LIBS += @LIBSMM_LIBS@
++LIBS += -lscalapack
++LIBS += -lflexiblas
+ LIBS += -ldl -lpthread -lstdc++
+diff -up cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/arch/Linux-x86-64-gfortran.ssmp.r
cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/arch/Linux-x86-64-gfortran.ssmp
+---
cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/arch/Linux-x86-64-gfortran.ssmp.r 2020-09-25
17:01:47.000000000 +0200
++++
cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/arch/Linux-x86-64-gfortran.ssmp 2020-09-29
15:19:10.681243626 +0200
+@@ -4,49 +4,31 @@
CC = gcc
- CPP =
--FC = mpif90
--LD = mpif90
-+FC = mpifort
-+LD = mpifort
-+LD_SHARED = mpifort -shared
- AR = ar -r
- FFTW_INC = $(GCC_DIR)/fftw/3.3/include
- FFTW_LIB = $(GCC_DIR)/fftw/3.3/lib
-@@ -13,22 +14,26 @@ LIBXC_INC = $(GCC_DIR)/libxc/4.0.4/inc
- LIBXC_LIB = $(GCC_DIR)/libxc/4.0.4/lib
- LIBXSMM_INC = $(GCC_DIR)/libxsmm/1.9/include
- LIBXSMM_LIB = $(GCC_DIR)/libxsmm/1.9/lib
--DFLAGS = -D__F2008 -D__FFTW3 -D__LIBINT -D__LIBXC -D__LIBXSMM -D__MPI_VERSION=3\
-- -D__LIBINT_MAX_AM=7 -D__LIBDERIV_MAX_AM1=6 -D__MAX_CONTR=4\
-+DFLAGS = -D__F2008 -D__FFTW3 -D__LIBINT -D__LIBXC @LIBSMM_DEFS@
-D__MPI_VERSION=3\
-+ -D__LIBINT_MAX_AM=@LIBINT_MAX_AM@ -D__LIBDERIV_MAX_AM1=@LIBDERIV_MAX_AM@
-D__MAX_CONTR=4\
-+ -D__SCALAPACK2 -D__ELPA=201705 -D__HAS_IEEE_EXCEPTIONS\
- -D__parallel -D__SCALAPACK
- CPPFLAGS =
--FCFLAGS = $(DFLAGS) -O2 -ffast-math -ffree-form -ffree-line-length-none\
-- -fopenmp -ftree-vectorize -funroll-loops -mtune=native -std=f2008\
-+OPTFLAGS = -O2 -ffast-math -ftree-vectorize -funroll-loops\
-+ -fopenmp -ftree-vectorize -funroll-loops -mtune=native\
- -I$(FFTW_INC) -I$(LIBINT_INC) -I$(LIBXC_INC) -I$(LIBXSMM_INC)
--LDFLAGS = $(FCFLAGS) -static
--LIBS = $(MPI_LIBRARY_PATH)/libscalapack-gnu.a\
-- $(LIBPATH)/liblapack-gnu.a\
-- $(LIBPATH)/libblas-gnu.a\
-- $(FFTW_LIB)/libfftw3.a\
-- $(FFTW_LIB)/libfftw3_threads.a\
-- $(LIBXC_LIB)/libxcf03.a\
-- $(LIBXC_LIB)/libxc.a\
-- $(LIBINT_LIB)/libderiv.a\
-- $(LIBINT_LIB)/libint.a\
-- $(LIBXSMM_LIB)/libxsmmf.a\
-- $(LIBXSMM_LIB)/libxsmm.a
-+CFLAGS = $(DFLAGS) $(OPTFLAGS)
-+CXXFLAGS = $(DFLAGS) $(OPTFLAGS)
-+FCFLAGS = $(DFLAGS) $(OPTFLAGS) -fopenmp -ffree-form -ffree-line-length-none
-std=f2008
-+LDFLAGS = $(FCFLAGS) $(DISTLDFLAGS)
-+LIBS = -lelpa\
-+ -lscalapack -lstdc++\
-+ -lflexiblas\
-+ -lfftw3\
-+ -lfftw3_omp\
-+ -lxcf03\
-+ -lxc\
-+ -lderiv\
-+ -lint\
-+ @LIBSMM_LIBS@
-+DATA_DIR = /usr/share/cp2k
-diff -up cp2k-6.1/arch/Linux-x86-64-gfortran.sopt.r
cp2k-6.1/arch/Linux-x86-64-gfortran.sopt
---- cp2k-6.1/arch/Linux-x86-64-gfortran.sopt.r 2018-06-12 14:07:45.000000000 +0200
-+++ cp2k-6.1/arch/Linux-x86-64-gfortran.sopt 2018-07-16 15:44:45.620335729 +0200
-@@ -4,6 +4,7 @@ CC = gcc
- CPP =
- FC = gfortran
- LD = gfortran
-+LD_SHARED = gfortran -shared
- AR = ar -r
- FFTW_INC = $(GCC_DIR)/fftw/3.3/include
- FFTW_LIB = $(GCC_DIR)/fftw/3.3/lib
-@@ -13,20 +14,24 @@ LIBXC_INC = $(GCC_DIR)/libxc/4.0.4/inc
- LIBXC_LIB = $(GCC_DIR)/libxc/4.0.4/lib
- LIBXSMM_INC = $(GCC_DIR)/libxsmm/1.9/include
- LIBXSMM_LIB = $(GCC_DIR)/libxsmm/1.9/lib
--DFLAGS = -D__F2008 -D__FFTW3 -D__LIBINT -D__LIBXC -D__LIBXSMM\
-- -D__LIBINT_MAX_AM=7 -D__LIBDERIV_MAX_AM1=6 -D__MAX_CONTR=4
-+DFLAGS = -D__F2008 -D__FFTW3 -D__LIBINT -D__LIBXC @LIBSMM_DEFS@\
-+ -D__HAS_IEEE_EXCEPTIONS\
-+ -D__LIBINT_MAX_AM=@LIBINT_MAX_AM@ -D__LIBDERIV_MAX_AM1=@LIBDERIV_MAX_AM@
-D__MAX_CONTR=4
- CPPFLAGS =
- FCFLAGS = $(DFLAGS) -O2 -ffast-math -ffree-form -ffree-line-length-none\
-- -ftree-vectorize -funroll-loops -mtune=native -std=f2008\
-+OPTFLAGS = -O2 -ffast-math\
-+ -ftree-vectorize -funroll-loops -mtune=native\
- -I$(FFTW_INC) -I$(LIBINT_INC) -I$(LIBXC_INC) -I$(LIBXSMM_INC)
--LDFLAGS = $(FCFLAGS) -static
--LIBS = $(LIBPATH)/liblapack-gnu.a\
-- $(LIBPATH)/libblas-gnu.a\
-- $(FFTW_LIB)/libfftw3.a\
-- $(LIBXC_LIB)/libxcf03.a\
-- $(LIBXC_LIB)/libxc.a\
-- $(LIBINT_LIB)/libderiv.a\
-- $(LIBINT_LIB)/libint.a\
-- $(LIBXSMM_LIB)/libxsmmf.a\
-- $(LIBXSMM_LIB)/libxsmm.a\
-+CFLAGS = $(DFLAGS) $(OPTFLAGS)
-+CXXFLAGS = $(DFLAGS) $(OPTFLAGS)
-+FCFLAGS = $(DFLAGS) $(OPTFLAGS) -ffree-form -ffree-line-length-none -std=f2008
-+LDFLAGS = $(FCFLAGS) $(DISTLDFLAGS)
-+LIBS = -lflexiblas\
-+ -lfftw3\
-+ -lxcf03\
-+ -lxc\
-+ -lderiv\
-+ -lint\
-+ @LIBSMM_LIBS@\
- -ldl -lpthread
-+DATA_DIR = /usr/share/cp2k
-diff -up cp2k-6.1/arch/Linux-x86-64-gfortran.ssmp.r
cp2k-6.1/arch/Linux-x86-64-gfortran.ssmp
---- cp2k-6.1/arch/Linux-x86-64-gfortran.ssmp.r 2018-06-12 14:07:45.000000000 +0200
-+++ cp2k-6.1/arch/Linux-x86-64-gfortran.ssmp 2018-07-16 15:44:55.628427076 +0200
-@@ -4,6 +4,7 @@ CC = gcc
- CPP =
FC = gfortran
LD = gfortran
+LD_SHARED = gfortran -shared
AR = ar -r
- FFTW_INC = $(GCC_DIR)/fftw/3.3/include
- FFTW_LIB = $(GCC_DIR)/fftw/3.3/lib
-@@ -13,21 +14,24 @@ LIBXC_INC = $(GCC_DIR)/libxc/4.0.4/inc
- LIBXC_LIB = $(GCC_DIR)/libxc/4.0.4/lib
- LIBXSMM_INC = $(GCC_DIR)/libxsmm/1.9/include
- LIBXSMM_LIB = $(GCC_DIR)/libxsmm/1.9/lib
--DFLAGS = -D__F2008 -D__FFTW3 -D__LIBINT -D__LIBXC -D__LIBXSMM\
-- -D__LIBINT_MAX_AM=7 -D__LIBDERIV_MAX_AM1=6 -D__MAX_CONTR=4
-+DFLAGS = -D__F2008 -D__FFTW3 -D__LIBINT -D__LIBXC @LIBSMM_DEFS@\
-+ -D__HAS_IEEE_EXCEPTIONS\
-+ -D__LIBINT_MAX_AM=@LIBINT_MAX_AM@ -D__LIBDERIV_MAX_AM1=@LIBDERIV_MAX_AM@
-D__MAX_CONTR=4
- CPPFLAGS =
--FCFLAGS = $(DFLAGS) -O2 -ffast-math -ffree-form -ffree-line-length-none\
-- -fopenmp -ftree-vectorize -funroll-loops -mtune=native -std=f2008\
-+OPTFLAGS = -O2 -ffast-math -ftree-vectorize\
-+ -fopenmp -ftree-vectorize -funroll-loops -mtune=native\
- -I$(FFTW_INC) -I$(LIBINT_INC) -I$(LIBXC_INC) -I$(LIBXSMM_INC)
+
+-FFTW_INC = $(GNU_PATH)/fftw/3.3/include
+-FFTW_LIB = $(GNU_PATH)/fftw/3.3/lib
+-
+-LIBINT_INC = $(GNU_PATH)/libint/2.6.0-lmax-6/include
+-LIBINT_LIB = $(GNU_PATH)/libint/2.6.0-lmax-6/lib
+-
+-LIBXC_INC = $(GNU_PATH)/libxc/4.3.4/include
+-LIBXC_LIB = $(GNU_PATH)/libxc/4.3.4/lib
+-
+-LIBXSMM_INC = $(GNU_PATH)/libxsmm/1.15/include
+-LIBXSMM_LIB = $(GNU_PATH)/libxsmm/1.15/lib
+-
+-SPGLIB_INC = $(GNU_PATH)/spglib/1.12.2/include
+-SPGLIB_LIB = $(GNU_PATH)/spglib/1.12.2/lib
+-
+-CFLAGS = -O2 -fopenmp -g -mtune=native
++OPTFLAGS = -O2 -g -mtune=native
++CFLAGS = $(OPTFLAGS) -fopenmp
+
+ DFLAGS = -D__FFTW3
+ DFLAGS += -D__LIBINT
+ DFLAGS += -D__LIBXC
+-DFLAGS += -D__LIBXSMM
+-DFLAGS += -D__SPGLIB
++DFLAGS += @LIBSMM_DEFS@
++DFLAGS += -D__HAS_IEEE_EXCEPTIONS
++DFLAGS += -D__MAX_CONTR=4
+
+ FCFLAGS = $(CFLAGS) $(DFLAGS)
+ FCFLAGS += -ffree-form
+ FCFLAGS += -ffree-line-length-none
+-FCFLAGS += -ftree-vectorize
+-FCFLAGS += -funroll-loops
+ FCFLAGS += -std=f2008
+-FCFLAGS += -I$(FFTW_INC) -I$(LIBINT_INC) -I$(LIBXC_INC) -I$(LIBXSMM_INC)
+
-LDFLAGS = $(FCFLAGS) -static
--LIBS = $(LIBPATH)/liblapack-gnu.a\
-- $(LIBPATH)/libblas-gnu.a\
-- $(FFTW_LIB)/libfftw3.a\
-- $(FFTW_LIB)/libfftw3_threads.a\
-- $(LIBXC_LIB)/libxcf03.a\
-- $(LIBXC_LIB)/libxc.a\
-- $(LIBINT_LIB)/libderiv.a\
-- $(LIBINT_LIB)/libint.a\
-- $(LIBXSMM_LIB)/libxsmmf.a\
-- $(LIBXSMM_LIB)/libxsmm.a\
-+CFLAGS = $(DFLAGS) $(OPTFLAGS)
-+CXXFLAGS = $(DFLAGS) $(OPTFLAGS)
-+FCFLAGS = $(DFLAGS) $(OPTFLAGS) -fopenmp -ffree-form -ffree-line-length-none
-std=f2008
+LDFLAGS = $(FCFLAGS) $(DISTLDFLAGS)
-+LIBS = -lflexiblas\
-+ -lfftw3\
-+ -lfftw3_omp\
-+ -lxcf03\
-+ -lxc\
-+ -lderiv\
-+ -lint\
-+ @LIBSMM_LIBS@\
- -ldl -lpthread
-+DATA_DIR = /usr/share/cp2k
-diff -up cp2k-6.1/makefiles/Makefile.r cp2k-6.1/makefiles/Makefile
---- cp2k-6.1/makefiles/Makefile.r 2018-05-24 19:16:02.000000000 +0200
-+++ cp2k-6.1/makefiles/Makefile 2018-07-16 15:43:39.888735771 +0200
-@@ -181,7 +181,7 @@ endif
- $(MAKE) --version
- @echo ""
- @echo "========= Python ($(ONEVERSION)) ========="
-- /usr/bin/env python --version
-+ /usr/bin/python3 --version
- else
+-LIBS = $(LIBXC_LIB)/libxcf03.a
+-LIBS += $(LIBXC_LIB)/libxc.a
+-LIBS += $(LIBINT_LIB)/libint2.a
+-LIBS += $(SPGLIB_LIB)/libsymspg.a
+-LIBS += $(FFTW_LIB)/libfftw3.a
+-LIBS += $(FFTW_LIB)/libfftw3_threads.a
+-LIBS += $(LIBXSMM_LIB)/libxsmmf.a
+-LIBS += $(LIBXSMM_LIB)/libxsmm.a
+-LIBS += $(LIBPATH)/liblapack.a
+-LIBS += $(LIBPATH)/libblas.a
++LIBS = -lxcf90
++LIBS += -lxc
++LIBS += -lint2
++LIBS += -lfftw3
++LIBS += -lfftw3_omp
++LIBS += @LIBSMM_LIBS@
++LIBS += -lflexiblas
+ LIBS += -ldl -lpthread -lstdc++
+diff -up cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/exts/dbcsr/.cp2k/Makefile.r
cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/exts/dbcsr/.cp2k/Makefile
+--- cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/exts/dbcsr/.cp2k/Makefile.r 2020-09-13
19:31:19.000000000 +0200
++++ cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/exts/dbcsr/.cp2k/Makefile 2020-09-29
11:58:26.238474915 +0200
+@@ -54,7 +54,7 @@ MAKEFILE := $(DBCSRCP2K)/Makefile
+ LIBDIR := $(DBCSRHOME)/lib
+ OBJDIR := $(DBCSRHOME)/obj
+ TOOLSDIR := $(DBCSRHOME)/tools
+-FYPPEXE := $(TOOLSDIR)/build_utils/fypp/bin/fypp
++FYPPEXE := fypp
+ SRCDIR := $(DBCSRHOME)/src
+ TESTSDIR := $(DBCSRHOME)/tests
+ INCLUDEMAKE :=
+diff -up cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/Makefile.r
cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/Makefile
+--- cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/Makefile.r 2020-09-25
17:01:47.000000000 +0200
++++ cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/Makefile 2020-09-29 11:58:26.243474891
+0200
+@@ -16,7 +16,7 @@ export VERSION=ssmp
-@@ -451,11 +451,11 @@ FYPPFLAGS ?= -n
+ MAKEFILE := $(CP2KHOME)/Makefile
+ ARCHDIR := $(CP2KHOME)/arch
+-DATA_DIR := $(CP2KHOME)/data
++DATA_DIR := /usr/share/cp2k/data
+ MAINEXEDIR := $(CP2KHOME)/exe
+ MAINLIBDIR := $(CP2KHOME)/lib
+ MAINOBJDIR := $(CP2KHOME)/obj
+@@ -501,7 +501,7 @@ FCFLAGS += -D__COMPILE_ARCH="\"$(ARCH)\"
+ FYPPFLAGS ?= -n
%.o: %.F
- ifneq ($(CPP),)
-- $(TOOLSRC)/build_utils/fypp $(FYPPFLAGS) $< $*.fypped
-+ fypp $(FYPPFLAGS) $< $*.fypped
- $(CPP) $(CPPFLAGS) -D__SHORT_FILE__="\"$(subst
$(SRCDIR)/,,$<)\"" -I'$(dir $<)' $*.fypped > $*.f90
- $(FC) -c $(FCFLAGS) $*.f90 $(FCLOGPIPE)
- else
- $(TOOLSRC)/build_utils/fypp $(FYPPFLAGS) $< $*.F90
+ fypp $(FYPPFLAGS) $< $*.F90
- $(FC) -c $(FCFLAGS) -D__SHORT_FILE__="\"$(subst
$(SRCDIR)/,,$<)\"" -I'$(dir $<)' $*.F90 $(FCLOGPIPE)
- endif
-
-diff -up cp2k-6.1/tools/build_utils/check_archives.py.r
cp2k-6.1/tools/build_utils/check_archives.py
---- cp2k-6.1/tools/build_utils/check_archives.py.r 2016-06-06 17:37:19.000000000 +0200
-+++ cp2k-6.1/tools/build_utils/check_archives.py 2018-07-16 15:43:39.872735625 +0200
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/python3
- # -*- coding: utf-8 -*-
+ $(FC) -c $(FCFLAGS) -D__SHORT_FILE__="\"$(subst
$(SRCDIR)/,,$<)\"" -I'$(dir $<)' $(OBJEXTSINCL) $*.F90
$(FCLOGPIPE)
- # author: Ole Schuett
-diff -up cp2k-6.1/tools/build_utils/discover_programs.py.r
cp2k-6.1/tools/build_utils/discover_programs.py
---- cp2k-6.1/tools/build_utils/discover_programs.py.r 2016-03-09 15:07:55.000000000
+0100
-+++ cp2k-6.1/tools/build_utils/discover_programs.py 2018-07-16 15:43:39.872735625 +0200
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/python3
- # -*- coding: utf-8 -*-
-
- import re, sys, os
-diff -up cp2k-6.1/tools/build_utils/makedep.py.r cp2k-6.1/tools/build_utils/makedep.py
---- cp2k-6.1/tools/build_utils/makedep.py.r 2018-04-05 12:22:05.000000000 +0200
-+++ cp2k-6.1/tools/build_utils/makedep.py 2018-07-16 15:43:39.873735634 +0200
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/python3
- # -*- coding: utf-8 -*-
-
- import re, sys
-diff -up cp2k-6.1/tools/regtesting/do_regtest.r cp2k-6.1/tools/regtesting/do_regtest
---- cp2k-6.1/tools/regtesting/do_regtest.r 2018-05-29 20:12:38.000000000 +0200
-+++ cp2k-6.1/tools/regtesting/do_regtest 2018-07-16 15:43:39.874735643 +0200
-@@ -263,9 +263,9 @@ cp2k_postfix=${cp2k_postfix:-"${cp2k_run
- #
- ###################################################################################
- test_types_file=${dir_base}/${cp2k_dir}/tests/TEST_TYPES
--dir_last=${dir_base}/LAST-${dir_triplet}-${cp2k_version}
-+dir_last=${dir_base}/${cp2k_dir}/LAST-${dir_triplet}-${cp2k_version}
- dirout=${dirout:-${dir_base}}
--dir_out=${dir_out}/TEST-${dir_triplet}-${cp2k_version}-${datum_short}
-+dir_out=${dir_base}/${cp2k_dir}/TEST-${dir_triplet}-${cp2k_version}-${datum_short}
- changelog=${dir_last}/ChangeLog
- changelog_diff=${changelog}.diff
- changelog_new=${changelog}.new
-@@ -424,6 +424,7 @@ function run_regtest_dir() {
- test_tolerance=`grep -v "#" TEST_FILES | ${awk} -v itest=$itest -v
def_err_tol=$default_err_tolerance '{c=c+1;if (c==itest) if (NF >= 3) { print $3 }
else { print def_err_tol } }'`
- test_ref_value=`grep -v "#" TEST_FILES | ${awk} -v itest=$itest
'{c=c+1;if (c==itest) if (NF == 4) { print $4 } }'`
+ %.o: %.c
+diff -up cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/tools/regtesting/do_regtest.r
cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/tools/regtesting/do_regtest
+---
cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/tools/regtesting/do_regtest.r 2020-09-25
17:01:47.000000000 +0200
++++ cp2k-dbf7a770d1541ba72a4652ee218de80c0484db2d/tools/regtesting/do_regtest 2020-09-29
13:59:45.419222477 +0200
+@@ -383,6 +383,7 @@ function run_regtest_dir() {
+ test_tolerance=`grep '^\s*\w' TEST_FILES | ${awk} -v itest=$itest -v
def_err_tol=$default_err_tolerance '{c=c+1;if (c==itest) if (NF >= 3) { print $3 }
else { print def_err_tol } }'`
+ test_ref_value=`grep '^\s*\w' TEST_FILES | ${awk} -v itest=$itest
'{c=c+1;if (c==itest) if (NF == 4) { print $4 } }'`
+ echo "Running ${input_file}"
- output_file=${dir_out}/${dir}/${input_file}.out
+ output_file=${dir_test}/${dir}/${input_file}.out
output_last=${dir_last}/${dir}/${input_file}.out
+@@ -1201,7 +1202,7 @@ EOF
+ if (( n_leaks > 0 )); then
+ REPORT_SUMMARY+=$(printf "; memleaks: %d" ${n_leaks})
+ fi
+- REPORT_SUMMARY+=$(python -c "print(';
%.0fmin'%(${full_timing_all}/60.0))")
++ REPORT_SUMMARY+=$(python3 -c "print(';
%.0fmin'%(${full_timing_all}/60.0))")
+ echo -e "\nSummary: ${REPORT_SUMMARY}"
+
+ if ((n_wrong_results > 0)) || ((n_runtime_error > 0)) || ((n_leaks > 0));
then
diff --git a/cp2k.spec b/cp2k.spec
index 5ab4baf..d66e761 100644
--- a/cp2k.spec
+++ b/cp2k.spec
@@ -1,5 +1,11 @@
-%global svn 0
-%global snapshot 20150911
+%global git 1
+%global snapshot 20200925
+%global commit dbf7a770d1541ba72a4652ee218de80c0484db2d
+%global shortcommit %(c=%{commit}; echo ${c:0:7})
+%global dbcsr_commit d2dfe6e25efde255f72ac27f542124b69c7af1c2
+%global dbcsr_shortcommit %(c=%{dbcsr_commit}; echo ${c:0:7})
+%global dbcsr_version 2.1.0-0.1.rc17
+
# TODO OpenCL support: -D__ACC -D__DBCSR_ACC -D__OPENCL
%global __provides_exclude_from ^%{_libdir}/(cp2k/lib|(mpich|openmpi)/lib/cp2k).*\\.so$
@@ -7,17 +13,21 @@
%bcond_with check
+%ifarch x86_64
+%global _lto_cflags %{nil}
+%endif
+
Name: cp2k
-Version: 6.1
-Release: 10%{?dist}
+Version: 7.1
+Release: 1.%{snapshot}git%{shortcommit}%{?dist}
Summary: Ab Initio Molecular Dynamics
License: GPLv2+
URL:
http://cp2k.org/
-%if %{svn}
-# run cp2k-snapshot.sh to produce this
-Source0: cp2k-%{version}-%{snapshot}.tar.xz
+%if %{git}
+Source0:
https://github.com/cp2k/cp2k/archive/%{commit}/%{name}-%{shortcommit}.tar.gz
+Source1:
https://github.com/cp2k/dbcsr/archive/%{dbcsr_commit}/dbcsr-%{dbcsr_short...
%else
-Source0:
https://downloads.sourceforge.net/project/cp2k/cp2k-%{version}.tar.bz2
+Source0:
https://github.com/cp2k/cp2k/releases/download/v%{version}.0/cp2k-%{versi...
%endif
Source4: cp2k-snapshot.sh
# Fedora patches
@@ -27,15 +37,17 @@ Source4: cp2k-snapshot.sh
# build with libint and libxc
# build shared libraries
Patch10: %{name}-rpm.patch
-# fix build failure on 32bit arches
-Patch11: %{name}-32bit.patch
+# port to libxc 5.x
+#
https://github.com/cp2k/cp2k/pull/914
+Patch12: %{name}-libxc5.patch
BuildRequires: flexiblas-devel
# for regtests
BuildRequires: bc
BuildRequires: fftw-devel
BuildRequires: gcc-c++
BuildRequires: gcc-gfortran
-BuildRequires: libint-devel
+BuildRequires: glibc-langpack-en
+BuildRequires: libint2-devel
BuildRequires: libxc-devel >= 4.0.3
%ifarch x86_64
# See
https://bugzilla.redhat.com/show_bug.cgi?id=1515404
@@ -43,9 +55,11 @@ BuildRequires: libxsmm-devel >= 1.8.1-3
%endif
BuildRequires: python3-fypp
BuildRequires: /usr/bin/hostname
+BuildRequires: /usr/bin/pathfix.py
+Provides: bundled(dbcsr) = %{dbcsr_version}
# Libint can break the API between releases
-Requires: libint(api)%{?_isa} = %{_libint_apiversion}
+Requires: libint2(api)%{?_isa} = %{_libint2_apiversion}
Requires: %{name}-common = %{version}-%{release}
@@ -68,11 +82,12 @@ This package contains the non-MPI single process and multi-threaded
versions.
Summary: Molecular simulations software - openmpi version
BuildRequires: openmpi-devel
BuildRequires: blacs-openmpi-devel
-BuildRequires: elpa-openmpi-devel >= 2017.05.002
+BuildRequires: elpa-openmpi-devel >= 2018.05.001
BuildRequires: scalapack-openmpi-devel
+Provides: bundled(dbcsr) = %{dbcsr_version}
Requires: %{name}-common = %{version}-%{release}
# Libint may have API breakage
-Requires: libint(api)%{?_isa} = %{_libint_apiversion}
+Requires: libint2(api)%{?_isa} = %{_libint2_apiversion}
%description openmpi
%{cp2k_desc_base}
@@ -84,11 +99,12 @@ using OpenMPI.
Summary: Molecular simulations software - mpich version
BuildRequires: mpich-devel
BuildRequires: blacs-mpich-devel
-BuildRequires: elpa-mpich-devel >= 2017.05.002
+BuildRequires: elpa-mpich-devel >= 2018.05.001
BuildRequires: scalapack-mpich-devel
+Provides: bundled(dbcsr) = %{dbcsr_version}
Requires: %{name}-common = %{version}-%{release}
# Libint may have API breakage
-Requires: libint(api)%{?_isa} = %{_libint_apiversion}
+Requires: libint2(api)%{?_isa} = %{_libint2_apiversion}
%description mpich
%{cp2k_desc_base}
@@ -105,73 +121,77 @@ Summary: Molecular simulations software - common files
This package contains the documentation and the manual.
%prep
+%if %{git}
+%setup -q -n %{name}-%{commit}
+tar xzf %{S:1} -C exts/dbcsr --strip-components=1
+echo git:%{shortcommit} > REVISION
+%else
%setup -q
+%endif
%patch10 -p1 -b .r
-%patch11 -p1 -b .32bit
-sed -i 's|@libdir@|%{_libdir}|' makefiles/Makefile
+#%%patch11 -p1 -b .32bit
+%patch12 -p1 -b .xc5
+sed -i 's|@libdir@|%{_libdir}|' Makefile
rm tools/build_utils/fypp
# Generate necessary symlinks
TARGET=Linux-%{_target_cpu}-gfortran
-for v in opt smp ; do
- ln -s Linux-x86-64-gfortran.s${v} arch/${TARGET}.s${v}
+ln -s Linux-x86-64-gfortran.ssmp arch/${TARGET}.ssmp
for m in mpich openmpi ; do
- ln -s Linux-x86-64-gfortran.p${v} arch/${TARGET}-${m}.p${v}
+ ln -s Linux-x86-64-gfortran.psmp arch/${TARGET}-${m}.psmp
done
-done
# fix crashes in fftw on i686. Need to run on original file, otherwise symlinks will be
replaced with copies.
%ifarch i686
sed -i 's/-D__FFTW3/-D__FFTW3 -D__FFTW3_UNALIGNED/g' arch/Linux-x86-64-gfortran*
%endif
-# See cp2k/tools/hfx_tools/libint_tools/README_LIBINT
-# Get libint and libderiv limits
-maxam=`awk '/LIBINT_MAX_AM / {print $3}' %{_includedir}/libint/libint.h`
-maxderiv=`awk '/LIBDERIV_MAX_AM1 / {print $3}'
%{_includedir}/libderiv/libderiv.h`
-# Plug them in the configuration
-for f in arch/Linux-x86-64-gfortran.{popt,psmp,sopt,ssmp}; do
- sed -i "s|@LIBINT_MAX_AM@|$maxam|g;s|@LIBDERIV_MAX_AM@|$maxderiv|g" $f
+for f in arch/Linux-x86-64-gfortran.{psmp,ssmp}; do
%ifarch x86_64
- sed -i 's|@LIBSMM_DEFS@|-D__LIBXSMM|;s|@LIBSMM_LIBS@|-lxsmmf -lxsmm -ldl|' $f
+ sed -i 's|@LIBSMM_DEFS@|-D__LIBXSMM|;s|@LIBSMM_LIBS@|-lxsmmf -lxsmm|' $f
%else
sed -i 's|@LIBSMM_DEFS@||;s|@LIBSMM_LIBS@||' $f
%endif
done
+pathfix.py -i "%{__python3} -Es" -p $(find . -type f -name *.py)
+
%build
+export PYTHON=%{_bindir}/python3
TARGET=Linux-%{_target_cpu}-gfortran
-OPTFLAGS_COMMON="%{optflags} -fPIC -I%{_fmoddir}"
-pushd makefiles
- make OPTFLAGS="${OPTFLAGS_COMMON}" DISTLDFLAGS="%{__global_ldflags}
-Wl,-rpath,%{_libdir}/cp2k" %{?_smp_mflags} ARCH="${TARGET}"
VERSION="sopt ssmp"
+OPTFLAGS_COMMON="%(echo %{optflags} | sed -e 's/
-Werror=format-security//g') -fPIC -I%{_fmoddir} -fallow-argument-mismatch"
+make OPTFLAGS="${OPTFLAGS_COMMON}" DISTLDFLAGS="%{__global_ldflags}
-Wl,-rpath,%{_libdir}/cp2k" %{?_smp_mflags} ARCH="${TARGET}"
VERSION="ssmp"
%{_openmpi_load}
- make OPTFLAGS="${OPTFLAGS_COMMON} -I%{_fmoddir}/openmpi"
DISTLDFLAGS="%{__global_ldflags} -Wl,-rpath,${MPI_LIB}/cp2k" %{?_smp_mflags}
ARCH="${TARGET}-openmpi" VERSION="popt psmp"
+make OPTFLAGS="${OPTFLAGS_COMMON} -I%{_fmoddir}/openmpi"
DISTLDFLAGS="%{__global_ldflags} -Wl,-rpath,${MPI_LIB}/cp2k" %{?_smp_mflags}
ARCH="${TARGET}-openmpi" VERSION="psmp"
%{_openmpi_unload}
%{_mpich_load}
- make OPTFLAGS="${OPTFLAGS_COMMON} -I%{_fmoddir}/mpich"
DISTLDFLAGS="%{__global_ldflags} -Wl,-rpath,${MPI_LIB}/cp2k" %{?_smp_mflags}
ARCH="${TARGET}-mpich" VERSION="popt psmp"
+make OPTFLAGS="${OPTFLAGS_COMMON} -I%{_fmoddir}/mpich"
DISTLDFLAGS="%{__global_ldflags} -Wl,-rpath,${MPI_LIB}/cp2k" %{?_smp_mflags}
ARCH="${TARGET}-mpich" VERSION="psmp"
%{_mpich_unload}
-popd
%install
TARGET=Linux-%{_target_cpu}-gfortran
mkdir -p %{buildroot}{%{_bindir},%{_libdir}/cp2k,%{_datadir}/cp2k}
-for v in opt smp ; do
-install -pm755 exe/${TARGET}/cp2k.s${v} %{buildroot}%{_bindir}
-install -pm755 exe/${TARGET}/cp2k_shell.s${v} %{buildroot}%{_bindir}
-install -pm755 lib/${TARGET}/s${v}/lib*.s${v}.so %{buildroot}%{_libdir}/cp2k/
+install -pm755 exe/${TARGET}/cp2k.ssmp %{buildroot}%{_bindir}
+ln -s cp2k.ssmp %{buildroot}%{_bindir}/cp2k.sopt
+ln -s cp2k.ssmp %{buildroot}%{_bindir}/cp2k_shell.ssmp
+install -pm755 lib/${TARGET}/ssmp/lib*.so %{buildroot}%{_libdir}/cp2k/
+install -pm755 lib/${TARGET}/ssmp/exts/dbcsr/libdbcsr.so %{buildroot}%{_libdir}/cp2k/
%{_openmpi_load}
mkdir -p %{buildroot}{${MPI_BIN},${MPI_LIB}/cp2k}
- install -pm755 exe/${TARGET}-openmpi/cp2k.p${v}
%{buildroot}${MPI_BIN}/cp2k.p${v}_openmpi
- install -pm755 exe/${TARGET}-openmpi/cp2k_shell.p${v}
%{buildroot}${MPI_BIN}/cp2k_shell.p${v}_openmpi
- install -pm755 lib/${TARGET}-openmpi/p${v}/lib*.p${v}.so
%{buildroot}${MPI_LIB}/cp2k/
+install -pm755 exe/${TARGET}-openmpi/cp2k.psmp %{buildroot}${MPI_BIN}/cp2k.psmp_openmpi
+ln -s cp2k.psmp_openmpi %{buildroot}${MPI_BIN}/cp2k.popt_openmpi
+ln -s cp2k.psmp_openmpi %{buildroot}${MPI_BIN}/cp2k_shell.psmp_openmpi
+install -pm755 lib/${TARGET}-openmpi/psmp/lib*.so %{buildroot}${MPI_LIB}/cp2k/
+install -pm755 lib/${TARGET}-openmpi/psmp/exts/dbcsr/libdbcsr.so
%{buildroot}${MPI_LIB}/cp2k/
%{_openmpi_unload}
%{_mpich_load}
mkdir -p %{buildroot}{${MPI_BIN},${MPI_LIB}/cp2k}
- install -pm755 exe/${TARGET}-mpich/cp2k.p${v}
%{buildroot}${MPI_BIN}/cp2k.p${v}_mpich
- install -pm755 exe/${TARGET}-mpich/cp2k_shell.p${v}
%{buildroot}${MPI_BIN}/cp2k_shell.p${v}_mpich
- install -pm755 lib/${TARGET}-mpich/p${v}/lib*.p${v}.so %{buildroot}${MPI_LIB}/cp2k/
+install -pm755 exe/${TARGET}-mpich/cp2k.psmp %{buildroot}${MPI_BIN}/cp2k.psmp_mpich
+ln -s cp2k.psmp_mpich %{buildroot}${MPI_BIN}/cp2k.popt_mpich
+ln -s cp2k.psmp_mpich %{buildroot}${MPI_BIN}/cp2k_shell.psmp_mpich
+install -pm755 lib/${TARGET}-mpich/psmp/lib*.so %{buildroot}${MPI_LIB}/cp2k/
+install -pm755 lib/${TARGET}-mpich/psmp/exts/dbcsr/libdbcsr.so
%{buildroot}${MPI_LIB}/cp2k/
%{_mpich_unload}
-done
cp -pr data/* %{buildroot}%{_datadir}/cp2k/
%if %{with check}
@@ -183,7 +203,6 @@ dir_base=%{_builddir}
__EOF__
. /etc/profile.d/modules.sh
export CP2K_DATA_DIR=%{buildroot}%{_datadir}/cp2k/
-for thr in opt smp ; do
for mpi in '' mpich openmpi ; do
if [ -n "$mpi" ]; then
module load mpi/${mpi}-%{_arch}
@@ -201,54 +220,52 @@ for thr in opt smp ; do
tools/regtesting/do_regtest \
-arch Linux-%{_target_cpu}-gfortran${suf} \
-config fedora.config \
+%if %{git}
+ -cp2kdir cp2k-%{commit} \
+%else
-cp2kdir cp2k-%{version} \
+%endif
${mpiopts} \
-nobuild \
- -noemptycheck \
- -noreset \
- -nosvn \
- -version ${par}${thr} \
+ -version ${par}smp \
if [ -n "$mpi" ]; then
module unload mpi/${mpi}-%{_arch}
fi
done
-done
%endif
%files common
%license COPYRIGHT
-%doc README
+%doc README.md
%{_datadir}/cp2k
%files
%{_bindir}/cp2k.sopt
%{_bindir}/cp2k.ssmp
-%{_bindir}/cp2k_shell.sopt
%{_bindir}/cp2k_shell.ssmp
%dir %{_libdir}/cp2k
-%{_libdir}/cp2k/lib*.sopt.so
-%{_libdir}/cp2k/lib*.ssmp.so
+%{_libdir}/cp2k/lib*.so
%files openmpi
%{_libdir}/openmpi/bin/cp2k.popt_openmpi
%{_libdir}/openmpi/bin/cp2k.psmp_openmpi
-%{_libdir}/openmpi/bin/cp2k_shell.popt_openmpi
%{_libdir}/openmpi/bin/cp2k_shell.psmp_openmpi
%dir %{_libdir}/openmpi/lib/cp2k
-%{_libdir}/openmpi/lib/cp2k/lib*.popt.so
-%{_libdir}/openmpi/lib/cp2k/lib*.psmp.so
+%{_libdir}/openmpi/lib/cp2k/lib*.so
%files mpich
%{_libdir}/mpich/bin/cp2k.popt_mpich
%{_libdir}/mpich/bin/cp2k.psmp_mpich
-%{_libdir}/mpich/bin/cp2k_shell.popt_mpich
%{_libdir}/mpich/bin/cp2k_shell.psmp_mpich
%dir %{_libdir}/mpich/lib/cp2k
-%{_libdir}/mpich/lib/cp2k/lib*.popt.so
-%{_libdir}/mpich/lib/cp2k/lib*.psmp.so
+%{_libdir}/mpich/lib/cp2k/lib*.so
%changelog
+* Fri Sep 25 2020 Dominik Mierzejewski <rpm(a)greysector.net> - 7.1-1
+- update to post-7.1 snapshot for gcc-10 compatibility (#1786794)
+- [sp]opt variants are no longer built (use OMP_NUM_THREADS=1 instead)
+
* Mon Aug 10 2020 Iñaki Úcar <iucar(a)fedoraproject.org> - 6.1-10
-
https://fedoraproject.org/wiki/Changes/FlexiBLAS_as_BLAS/LAPACK_manager
diff --git a/sources b/sources
index 5674cf5..663d9ad 100644
--- a/sources
+++ b/sources
@@ -1 +1,2 @@
-SHA512 (cp2k-6.1.tar.bz2) =
f18c55a074a32938572632c8cf00ff675386553d3fec9657f4629f0bdf16f54874de70bc81d48a2b58c1ef391b52e5852c355dc8d30c38363100009e33f965b5
+SHA512 (cp2k-dbf7a77.tar.gz) =
b5b0cdfa3e97930dfc13027942f94e3c234648efe01d966e08cbdf2904db0a7769a7d8f5cc960e07496e09e0212e381cdeec80eca800a67c25be4cccf6a6e52d
+SHA512 (dbcsr-d2dfe6e.tar.gz) =
45628103844c45f01c989acd76aef4b0e0beea9ffb4e23bce2af21719eac02e6c1b6eae7bbf3615fdbeda14c3cf65c743da59095b559b6a03102c65f75ea64ca