mirror of
https://github.com/TREX-CoE/qmckl.git
synced 2024-11-20 13:02:42 +01:00
Merge branch 'master' of github.com:TREX-CoE/qmckl
This commit is contained in:
commit
da8469eb38
2
.github/workflows/gh-pages.yml
vendored
2
.github/workflows/gh-pages.yml
vendored
@ -24,7 +24,7 @@ jobs:
|
||||
run: ./autogen.sh
|
||||
|
||||
- name: ./configure
|
||||
run: QMCKL_DEVEL=1 ./configure --enable-silent-rules --enable-maintainer-mode
|
||||
run: QMCKL_DEVEL=1 ./configure --enable-silent-rules --enable-maintainer-mode --without-trexio
|
||||
|
||||
- name: make
|
||||
run: make -j 8 html
|
||||
|
44
.github/workflows/test-build.yml
vendored
44
.github/workflows/test-build.yml
vendored
@ -14,29 +14,49 @@ jobs:
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: install dependencies
|
||||
|
||||
- name: Install dependencies
|
||||
run: sudo apt-get install emacs autoconf libhdf5-dev
|
||||
- name: install trexio
|
||||
|
||||
- name: Install trexio
|
||||
run: |
|
||||
wget https://github.com/TREX-CoE/trexio/releases/download/v1.0/trexio-1.0.0.tar.gz
|
||||
tar -zxf trexio-1.0.0.tar.gz
|
||||
cd trexio-1.0.0
|
||||
./configure
|
||||
export VERSION=1.1.0
|
||||
wget https://github.com/TREX-CoE/trexio/releases/download/v${VERSION}/trexio-${VERSION}.tar.gz
|
||||
tar -zxf trexio-${VERSION}.tar.gz
|
||||
cd trexio-${VERSION}
|
||||
./configure --prefix=/usr
|
||||
make -j 8
|
||||
sudo make install
|
||||
- name: Run test
|
||||
sudo make install
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
./autogen.sh
|
||||
QMCKL_DEVEL=1 ./configure --enable-silent-rules --enable-maintainer-mode --enable-debug
|
||||
make -j 8
|
||||
|
||||
- name: Run test
|
||||
run: |
|
||||
make -j check
|
||||
make distcheck
|
||||
|
||||
- name: Archive test log file
|
||||
if: failure()
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: test-suite.log
|
||||
name: test-report
|
||||
path: test-suite.log
|
||||
|
||||
- name: Dist test
|
||||
run: |
|
||||
make distcheck
|
||||
|
||||
- name: Archive test log file
|
||||
if: failure()
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: dist-report
|
||||
path: test-suite.log
|
||||
|
||||
|
||||
# x86_macos:
|
||||
#
|
||||
# runs-on: macos-latest
|
||||
@ -54,9 +74,9 @@ jobs:
|
||||
# wget https://github.com/TREX-CoE/trexio/releases/download/v1.0/trexio-1.0.0.tar.gz
|
||||
# tar -zxf trexio-1.0.0.tar.gz
|
||||
# cd trexio-1.0.0
|
||||
# ./configure
|
||||
# ./configure
|
||||
# make -j 8
|
||||
# sudo make install
|
||||
# sudo make install
|
||||
# - name: Run test
|
||||
# run: |
|
||||
# ./autogen.sh
|
||||
|
61
.github/workflows/vfc_test_workflow.yml
vendored
Normal file
61
.github/workflows/vfc_test_workflow.yml
vendored
Normal file
@ -0,0 +1,61 @@
|
||||
# This workflow will be executed when master is updated:
|
||||
# it will run the configured tests and upload the results on vfc_ci_master.
|
||||
|
||||
name: "Verificarlo CI (master)"
|
||||
|
||||
on:
|
||||
# Triggers the workflow when master is updated
|
||||
push:
|
||||
branches: [ master ]
|
||||
|
||||
workflow_dispatch:
|
||||
|
||||
|
||||
jobs:
|
||||
run_verificarlo_tests:
|
||||
runs-on: ubuntu-latest
|
||||
container: verificarlo/verificarlo
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
ln -s /usr/bin/python3 /usr/bin/python
|
||||
apt update
|
||||
apt -y install emacs pkg-config wget libhdf5-dev
|
||||
|
||||
- name: Install trexio
|
||||
run: |
|
||||
export VERSION=1.1.0
|
||||
wget https://github.com/TREX-CoE/trexio/releases/download/v${VERSION}/trexio-${VERSION}.tar.gz
|
||||
tar -zxf trexio-${VERSION}.tar.gz
|
||||
cd trexio-${VERSION}
|
||||
./configure --prefix=/usr
|
||||
make -j 8
|
||||
sudo make install
|
||||
|
||||
- name: Run tests
|
||||
run: vfc_ci test -g -r
|
||||
|
||||
- name: Commit test results
|
||||
run: |
|
||||
git_hash=$(git rev-parse --short "$GITHUB_SHA")
|
||||
|
||||
git config --local user.email "action@github.com"
|
||||
git config --local user.name "GitHub Action"
|
||||
|
||||
git checkout vfc_ci_master
|
||||
mkdir -p vfcruns
|
||||
mv *.vfcrun.h5 vfcruns
|
||||
git add vfcruns/*
|
||||
git commit -m "[auto] New test results for commit ${git_hash}"
|
||||
git push
|
||||
|
||||
- name: Upload raw results as artifacts
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: ${{github.sha}}.vfcraw
|
||||
path: ./*.vfcraw.h5
|
3
.gitignore
vendored
3
.gitignore
vendored
@ -13,6 +13,8 @@ config.status
|
||||
config.sub
|
||||
configure
|
||||
generated.mk
|
||||
.vfcwrapper.o
|
||||
libtool
|
||||
m4/libtool.m4
|
||||
m4/ltoptions.m4
|
||||
m4/ltsugar.m4
|
||||
@ -20,6 +22,7 @@ m4/ltversion.m4
|
||||
m4/lt~obsolete.m4
|
||||
qmckl-*.tar.gz
|
||||
qmckl.mod
|
||||
qmckl_probes_f.mod
|
||||
qmckl.pc
|
||||
stamp-h1
|
||||
tools/compile
|
||||
|
49
Makefile.am
49
Makefile.am
@ -30,7 +30,6 @@
|
||||
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
VERSION_MAJOR = @VERSION_MAJOR@
|
||||
@ -38,7 +37,7 @@ VERSION_MINOR = @VERSION_MINOR@
|
||||
VERSION_PATCH = @VERSION_PATCH@
|
||||
|
||||
SUBDIRS =
|
||||
CLEANFILES = qmckl.mod
|
||||
CLEANFILES = qmckl.mod qmckl_verificarlo_f.mod
|
||||
EXTRA_DIST =
|
||||
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
@ -54,19 +53,23 @@ src_qmckl_f = src/qmckl_f.f90
|
||||
src_qmckl_fo = src/qmckl_f.o
|
||||
header_tests = tests/chbrclf.h tests/n2.h
|
||||
|
||||
fortrandir = $(datadir)/$(PACKAGE_NAME)/fortran/
|
||||
|
||||
fortrandir = $(datadir)/qmckl/fortran/
|
||||
|
||||
dist_fortran_DATA = $(qmckl_f)
|
||||
|
||||
AM_CPPFLAGS = -I$(srcdir)/src -I$(srcdir)/include
|
||||
AM_CPPFLAGS = -I$(srcdir)/src -I$(srcdir)/include
|
||||
AM_CPPFLAGS += -DQMCKL_TEST_DIR="\"$(abs_srcdir)/share/qmckl/test_data/\""
|
||||
|
||||
|
||||
lib_LTLIBRARIES = src/libqmckl.la
|
||||
src_libqmckl_la_SOURCES = $(qmckl_h) $(src_qmckl_f) $(C_FILES) $(F_FILES) $(H_PRIVATE_FUNC_FILES) $(H_PRIVATE_TYPE_FILES) $(header_tests)
|
||||
|
||||
export qmckl_f qmckl_h srcdir
|
||||
|
||||
CLEANFILES+=$(test_qmckl_f) $(src_qmckl_f) $(test_qmckl_o) $(src_qmckl_o)
|
||||
CLEANFILES+=$(test_qmckl_f) $(src_qmckl_f) $(test_qmckl_o) $(src_qmckl_o)
|
||||
|
||||
htmlize_el=share/doc/qmckl/html/htmlize.el
|
||||
htmlize_el=$(srcdir)/share/doc/qmckl/html/htmlize.el
|
||||
|
||||
include generated.mk
|
||||
|
||||
@ -105,6 +108,11 @@ doc: html text
|
||||
|
||||
if QMCKL_DEVEL
|
||||
|
||||
|
||||
if VFC_CI
|
||||
AM_LDFLAGS=-lvfc_probes -lvfc_probes_f
|
||||
endif
|
||||
|
||||
dist_src_DATA = $(ORG_FILES) $(TANGLED_FILES) $(EXPORTED_FILES)
|
||||
|
||||
BUILT_SOURCES = $(C_FILES) $(F_FILES) $(FH_FUNC_FILES) $(FH_TYPE_FILES) $(H_FUNC_FILES) $(H_TYPE_FILES) $(H_PRIVATE_FUNC_FILES) $(H_PRIVATE_TYPE_FILES) $(qmckl_f) $(qmckl_h) $(header_tests)
|
||||
@ -112,17 +120,17 @@ BUILT_SOURCES = $(C_FILES) $(F_FILES) $(FH_FUNC_FILES) $(FH_TYPE_FILES) $(H_FUNC
|
||||
CLEANFILES += $(BUILT_SOURCES) $(C_TEST_FILES) $(F_TEST_FILES) $(TANGLED_FILES) $(C_TEST_FILES) $(F_TEST_FILES) $(qmckl_f) $(qmckl_h) $(HTML_FILES) $(TEXT_FILES) share/doc/qmckl/html/index.html $(EXPORTED_FILES) $(header_tests)
|
||||
|
||||
EXTRA_DIST += \
|
||||
tools/build_doc.sh \
|
||||
tools/build_makefile.py \
|
||||
tools/build_qmckl_f.sh \
|
||||
tools/build_qmckl_h.sh \
|
||||
tools/config_doc.el \
|
||||
tools/config_tangle.el \
|
||||
tools/init.el \
|
||||
tools/install_htmlize.sh \
|
||||
tools/lib.org \
|
||||
tools/tangle.sh \
|
||||
tools/theme.setup
|
||||
$(srcdir)/tools/build_doc.sh \
|
||||
$(srcdir)/tools/build_makefile.py \
|
||||
$(srcdir)/tools/build_qmckl_f.sh \
|
||||
$(srcdir)/tools/build_qmckl_h.sh \
|
||||
$(srcdir)/tools/config_doc.el \
|
||||
$(srcdir)/tools/config_tangle.el \
|
||||
$(srcdir)/tools/init.el \
|
||||
$(srcdir)/tools/install_htmlize.sh \
|
||||
$(srcdir)/tools/lib.org \
|
||||
$(srcdir)/tools/tangle.sh \
|
||||
$(srcdir)/tools/theme.setup
|
||||
|
||||
|
||||
## Silent
|
||||
@ -134,7 +142,7 @@ export_verbose_0 = @echo " DOC $@";
|
||||
|
||||
tangle_verbose = $(tangle_verbose_@AM_V@)
|
||||
tangle_verbose_ = $(tangle_verbose_@AM_DEFAULT_V@)
|
||||
tangle_verbose_0 = @echo " TANGLE $<";
|
||||
tangle_verbose_0 = @echo " ORG $<";
|
||||
|
||||
cat_h_verbose = $(cat_h_verbose_@AM_V@)
|
||||
cat_h_verbose_ = $(cat_h_verbose_@AM_DEFAULT_V@)
|
||||
@ -156,14 +164,14 @@ $(htmlize_el):
|
||||
$(srcdir)/tools/install_htmlize.sh $(htmlize_el)
|
||||
|
||||
tests/chbrclf.h: $(qmckl_h)
|
||||
|
||||
|
||||
tests/n2.h: $(qmckl_h)
|
||||
|
||||
generated.mk: $(ORG_FILES)
|
||||
$(PYTHON) $(srcdir)/tools/build_makefile.py
|
||||
|
||||
cppcheck: cppcheck.out
|
||||
|
||||
|
||||
cppcheck.out: $(qmckl_h)
|
||||
cd src/ && \
|
||||
cppcheck --addon=cert -q --error-exitcode=0 \
|
||||
@ -173,7 +181,6 @@ cppcheck.out: $(qmckl_h)
|
||||
--language=c --std=c99 -rp --platform=unix64 \
|
||||
-I../include *.c *.h 2>../$@
|
||||
|
||||
|
||||
.PHONY: cppcheck
|
||||
|
||||
endif
|
||||
|
17
README.md
17
README.md
@ -46,6 +46,23 @@ sudo make install
|
||||
sudo make installcheck
|
||||
```
|
||||
|
||||
## Verificarlo CI
|
||||
|
||||
Since Verificarlo should not be a dependency of QMCkl, all Verificarlo
|
||||
functions are called only when the support is explicitely enabled (and ignored
|
||||
by the preprocessor otherwise). To enable vfc_ci support, the library should be
|
||||
configured with the following command :
|
||||
|
||||
```
|
||||
QMCKL_DEVEL=1 ./configure --prefix=$PWD/_install \ --enable-silent-rules --enable-maintainer-mode --enable-vfc_ci --host=x86_64 \ CC="verificarlo-f" FC="verificarlo-f"
|
||||
```
|
||||
|
||||
where CC and FC are set to verificarlo-f, and support is explicitely enabled
|
||||
with the --enable-vfc_ci flag. Configuring the library with the "standard"
|
||||
command will cause all calls to Verificarlo related functions to be ignored,
|
||||
and the library will be built as usual.
|
||||
|
||||
|
||||
------------------------------
|
||||
|
||||
![European flag](https://trex-coe.eu/sites/default/files/inline-images/euflag.jpg)
|
||||
|
21
TODO.org
21
TODO.org
@ -1,21 +0,0 @@
|
||||
* Set up CI on Travis
|
||||
* Write tests
|
||||
|
||||
* malloc/free : Parameters for accelerators?
|
||||
We should define qmckl_malloc and qmckl_free just to give the
|
||||
possibility of the HPC implementations to define how they allocate the
|
||||
memory (on CPU or GPU, using alternatives to malloc/free, etc).
|
||||
A possibility could be to pass the id of a NUMA domain as a parameter of
|
||||
qmckl_malloc, where the domain id is something obtained from the
|
||||
context.
|
||||
|
||||
|
||||
* TRANSA, TRANSB
|
||||
* Performance info
|
||||
* Benchmark interpolation of basis functions
|
||||
* Complex numbers
|
||||
* Adjustable number for derivatives (1,2,3)
|
||||
|
||||
* Put pictures
|
||||
* Make the Makefile part of the documented code ?
|
||||
* Put the data-flow graph in the code.
|
69
configure.ac
69
configure.ac
@ -4,24 +4,24 @@
|
||||
# QMCkl - Quantum Monte Carlo kernel library
|
||||
#
|
||||
# BSD 3-Clause License
|
||||
#
|
||||
#
|
||||
# Copyright (c) 2020, TREX Center of Excellence
|
||||
# All rights reserved.
|
||||
#
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are met:
|
||||
#
|
||||
#
|
||||
# 1. Redistributions of source code must retain the above copyright notice, this
|
||||
# list of conditions and the following disclaimer.
|
||||
#
|
||||
#
|
||||
# 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the following disclaimer in the documentation
|
||||
# and/or other materials provided with the distribution.
|
||||
#
|
||||
#
|
||||
# 3. Neither the name of the copyright holder nor the names of its
|
||||
# contributors may be used to endorse or promote products derived from
|
||||
# this software without specific prior written permission.
|
||||
#
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
@ -49,9 +49,9 @@ AC_CONFIG_MACRO_DIR([m4])
|
||||
VERSION_MAJOR=`echo ${PACKAGE_VERSION} | cut -d. -f1`
|
||||
VERSION_MINOR=`echo ${PACKAGE_VERSION} | cut -d. -f2`
|
||||
VERSION_PATCH=`echo ${PACKAGE_VERSION} | cut -d. -f3 | cut -d- -f1`
|
||||
AC_DEFINE_UNQUOTED(QMCKL_VERSION_MAJOR, [$VERSION_MAJOR], [major version])
|
||||
AC_DEFINE_UNQUOTED(QMCKL_VERSION_MINOR, [$VERSION_MINOR], [minor version])
|
||||
AC_DEFINE_UNQUOTED(QMCKL_VERSION_PATCH, [$VERSION_PATCH], [patch version])
|
||||
AC_DEFINE_UNQUOTED([QMCKL_VERSION_MAJOR], [$VERSION_MAJOR], [major version])
|
||||
AC_DEFINE_UNQUOTED([QMCKL_VERSION_MINOR], [$VERSION_MINOR], [minor version])
|
||||
AC_DEFINE_UNQUOTED([QMCKL_VERSION_PATCH], [$VERSION_PATCH], [patch version])
|
||||
AC_SUBST([VERSION_MAJOR])
|
||||
AC_SUBST([VERSION_MINOR])
|
||||
AC_SUBST([VERSION_PATCH])
|
||||
@ -92,12 +92,30 @@ AC_CHECK_LIB([pthread], [pthread_create])
|
||||
# OpenMP
|
||||
#AC_ARG_WITH(openmp, [AC_HELP_STRING([--with-openmp],[enable OpenMP])], with_omp=$withval, with_omp=no)
|
||||
#if test "x$with_omp" = xyes; then
|
||||
# AC_DEFINE([USE_OPENMP], [1], [Define to use OpenMP threading.])
|
||||
# AC_DEFINE([HAVE_OPENMP], [1], [Define to use OpenMP threading.])
|
||||
# AX_OPENMP([],
|
||||
# [AC_MSG_ERROR([Could not find OpenMP flags; configure with --without-openmp])])
|
||||
# CFLAGS="${CFLAGS} ${OPENMP_CFLAGS}"
|
||||
#fi
|
||||
|
||||
# TREXIO
|
||||
|
||||
AC_ARG_WITH(trexio, [AC_HELP_STRING([--without-trexio],[disable support for TREXIO])],
|
||||
with_trexio=$withval, with_trexio=yes)
|
||||
|
||||
AS_IF([test "x$with_trexio" != xno], [
|
||||
AC_DEFINE([HAVE_TREXIO], [1], [Define if your have libtrexio])
|
||||
ARGS="${ARGS} trexio"
|
||||
AC_CHECK_LIB([trexio], [trexio_open],
|
||||
[],
|
||||
[AS_IF([test "x$with_trexio" != xcheck],
|
||||
[PKG_CHECK_MODULES([TREXIO], [trexio]) ])
|
||||
])
|
||||
])
|
||||
|
||||
PKG_CFLAGS="$PKG_CFLAGS $TREXIO_CFLAGS"
|
||||
PKG_LIBS="$PKG_LIBS $TREXIO_LIBS"
|
||||
|
||||
## BLAS
|
||||
#AX_BLAS([], [AC_MSG_ERROR([BLAS was not found.])])
|
||||
|
||||
@ -167,7 +185,7 @@ AC_TYPE_UINT64_T
|
||||
# Checks for library functions.
|
||||
|
||||
## qmckl
|
||||
AC_FUNC_MALLOC
|
||||
# AC_FUNC_MALLOC
|
||||
AC_CHECK_FUNCS([memset strerror])
|
||||
|
||||
# Development mode
|
||||
@ -196,11 +214,35 @@ if test "x${QMCKL_DEVEL}" != "x"; then
|
||||
|
||||
fi
|
||||
|
||||
# Enable Verificarlo tests
|
||||
AC_ARG_ENABLE([vfc_ci],
|
||||
[ --enable-vfc_ci Build the library with vfc_ci support],
|
||||
[case "${enableval}" in
|
||||
yes) vfc_ci=true && FCFLAGS="-D VFC_CI $FCFLAGS" && CFLAGS="-D VFC_CI $CFLAGS";;
|
||||
no) vfc_ci=false ;;
|
||||
*) AC_MSG_ERROR([bad value ${enableval} for --enable_vfc_ci]) ;;
|
||||
esac],[vfc_ci=false])
|
||||
AM_CONDITIONAL([VFC_CI], [test x$vfc_ci = xtrue])
|
||||
|
||||
# Enable Fortran preprocessor
|
||||
if test "$FC" = "gfortran"; then
|
||||
AC_MSG_NOTICE(gfortran detected)
|
||||
# Arguments order is important here
|
||||
FCFLAGS="-cpp $FCFLAGS"
|
||||
fi
|
||||
|
||||
if test "$FC" = "verificarlo-f"; then
|
||||
AC_MSG_NOTICE(verificarlo-f detected)
|
||||
# Arguments order is important here
|
||||
FCFLAGS="-Mpreprocess $FCFLAGS"
|
||||
fi
|
||||
|
||||
#PKG-CONFIG
|
||||
#mkl-dynamic-lp64-seq
|
||||
|
||||
LIBS="${LAPACK_LIBS} ${BLAS_LIBS} ${LIBS}"
|
||||
PKG_LIBS="${PKG_LIBS} ${LIBS}"
|
||||
PKG_LIBS="$PKG_LIBS $LIBS"
|
||||
LIBS="$LAPACK_LIBS $BLAS_LIBS $PKG_LIBS"
|
||||
CFLAGS="$CFLAGS $PKG_CFLAGS"
|
||||
AC_SUBST([PKG_LIBS])
|
||||
AC_SUBST([PKG_CFLAGS])
|
||||
AC_SUBST([HAS_CPPCHECK])
|
||||
@ -237,4 +279,3 @@ where the optional <target> is:
|
||||
check - run tests
|
||||
install - install ${PACKAGE_NAME}
|
||||
--------------------------------------------------"
|
||||
|
||||
|
@ -1,160 +0,0 @@
|
||||
/* include/config.h.in. Generated from configure.ac by autoheader. */
|
||||
|
||||
/* Define to turn on debugging checks */
|
||||
#undef DEBUG
|
||||
|
||||
/* Define when using the profiler tool */
|
||||
#undef ENABLE_PROF
|
||||
|
||||
/* Define to 1 if your Fortran compiler doesn't accept -c and -o together. */
|
||||
#undef FC_NO_MINUS_C_MINUS_O
|
||||
|
||||
/* Define to 1 if you have the <assert.h> header file. */
|
||||
#undef HAVE_ASSERT_H
|
||||
|
||||
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||
#undef HAVE_DLFCN_H
|
||||
|
||||
/* Define to 1 if you have the <errno.h> header file. */
|
||||
#undef HAVE_ERRNO_H
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#undef HAVE_INTTYPES_H
|
||||
|
||||
/* Define to 1 if you have the `efence' library (-lefence). */
|
||||
#undef HAVE_LIBEFENCE
|
||||
|
||||
/* Define to 1 if you have the `m' library (-lm). */
|
||||
#undef HAVE_LIBM
|
||||
|
||||
/* Define to 1 if you have the `pthread' library (-lpthread). */
|
||||
#undef HAVE_LIBPTHREAD
|
||||
|
||||
/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
|
||||
to 0 otherwise. */
|
||||
#undef HAVE_MALLOC
|
||||
|
||||
/* Define to 1 if you have the <malloc.h> header file. */
|
||||
#undef HAVE_MALLOC_H
|
||||
|
||||
/* Define to 1 if you have the <math.h> header file. */
|
||||
#undef HAVE_MATH_H
|
||||
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#undef HAVE_MEMORY_H
|
||||
|
||||
/* Define to 1 if you have the `memset' function. */
|
||||
#undef HAVE_MEMSET
|
||||
|
||||
/* Define to 1 if you have the <pthread.h> header file. */
|
||||
#undef HAVE_PTHREAD_H
|
||||
|
||||
/* Define to 1 if you have the <stdbool.h> header file. */
|
||||
#undef HAVE_STDBOOL_H
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#undef HAVE_STDINT_H
|
||||
|
||||
/* Define to 1 if you have the <stdio.h> header file. */
|
||||
#undef HAVE_STDIO_H
|
||||
|
||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||
#undef HAVE_STDLIB_H
|
||||
|
||||
/* Define to 1 if you have the `strerror' function. */
|
||||
#undef HAVE_STRERROR
|
||||
|
||||
/* Define to 1 if you have the <strings.h> header file. */
|
||||
#undef HAVE_STRINGS_H
|
||||
|
||||
/* Define to 1 if you have the <string.h> header file. */
|
||||
#undef HAVE_STRING_H
|
||||
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
#undef HAVE_SYS_STAT_H
|
||||
|
||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||
#undef HAVE_SYS_TYPES_H
|
||||
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#undef HAVE_UNISTD_H
|
||||
|
||||
/* Define to 1 if the system has the type `_Bool'. */
|
||||
#undef HAVE__BOOL
|
||||
|
||||
/* Define to the sub-directory where libtool stores uninstalled libraries. */
|
||||
#undef LT_OBJDIR
|
||||
|
||||
/* Define to use debugging malloc/free */
|
||||
#undef MALLOC_TRACE
|
||||
|
||||
/* Define to 1 if your C compiler doesn't accept -c and -o together. */
|
||||
#undef NO_MINUS_C_MINUS_O
|
||||
|
||||
/* Name of package */
|
||||
#undef PACKAGE
|
||||
|
||||
/* Define to the address where bug reports for this package should be sent. */
|
||||
#undef PACKAGE_BUGREPORT
|
||||
|
||||
/* Define to the full name of this package. */
|
||||
#undef PACKAGE_NAME
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#undef PACKAGE_STRING
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#undef PACKAGE_TARNAME
|
||||
|
||||
/* Define to the home page for this package. */
|
||||
#undef PACKAGE_URL
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#undef PACKAGE_VERSION
|
||||
|
||||
/* major version */
|
||||
#undef QMCKL_VERSION_MAJOR
|
||||
|
||||
/* minor version */
|
||||
#undef QMCKL_VERSION_MINOR
|
||||
|
||||
/* patch version */
|
||||
#undef QMCKL_VERSION_PATCH
|
||||
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
#undef STDC_HEADERS
|
||||
|
||||
/* Version number of package */
|
||||
#undef VERSION
|
||||
|
||||
/* Define for Solaris 2.5.1 so the uint32_t typedef from <sys/synch.h>,
|
||||
<pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
|
||||
#define below would cause a syntax error. */
|
||||
#undef _UINT32_T
|
||||
|
||||
/* Define for Solaris 2.5.1 so the uint64_t typedef from <sys/synch.h>,
|
||||
<pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
|
||||
#define below would cause a syntax error. */
|
||||
#undef _UINT64_T
|
||||
|
||||
/* Define to the type of a signed integer type of width exactly 32 bits if
|
||||
such a type exists and the standard includes do not define it. */
|
||||
#undef int32_t
|
||||
|
||||
/* Define to the type of a signed integer type of width exactly 64 bits if
|
||||
such a type exists and the standard includes do not define it. */
|
||||
#undef int64_t
|
||||
|
||||
/* Define to rpl_malloc if the replacement function should be used. */
|
||||
#undef malloc
|
||||
|
||||
/* Define to `unsigned int' if <sys/types.h> does not define. */
|
||||
#undef size_t
|
||||
|
||||
/* Define to the type of an unsigned integer type of width exactly 32 bits if
|
||||
such a type exists and the standard includes do not define it. */
|
||||
#undef uint32_t
|
||||
|
||||
/* Define to the type of an unsigned integer type of width exactly 64 bits if
|
||||
such a type exists and the standard includes do not define it. */
|
||||
#undef uint64_t
|
@ -16,14 +16,23 @@ grep TITLE $(cat table_of_contents) | tr ':' ' '
|
||||
#+end_src
|
||||
|
||||
#+RESULTS: toc
|
||||
| qmckl.org | #+TITLE | Introduction | |
|
||||
| qmckl_error.org | #+TITLE | Error | handling |
|
||||
| qmckl_context.org | #+TITLE | Context | |
|
||||
| qmckl_memory.org | #+TITLE | Memory | management |
|
||||
| qmckl_numprec.org | #+TITLE | Numerical | precision |
|
||||
| qmckl_electron.org | #+TITLE | Electrons | |
|
||||
| qmckl_ao.org | #+TITLE | Atomic | Orbitals |
|
||||
| qmckl_distance.org | #+TITLE | Inter-particle | distances |
|
||||
| qmckl.org | #+TITLE | Introduction | | |
|
||||
| qmckl_error.org | #+TITLE | Error | handling | |
|
||||
| qmckl_context.org | #+TITLE | Context | | |
|
||||
| qmckl_memory.org | #+TITLE | Memory | management | |
|
||||
| qmckl_numprec.org | #+TITLE | Numerical | precision | |
|
||||
| qmckl_distance.org | #+TITLE | Inter-particle | distances | |
|
||||
| qmckl_nucleus.org | #+TITLE | Nucleus | | |
|
||||
| qmckl_electron.org | #+TITLE | Electrons | | |
|
||||
| qmckl_ao.org | #+TITLE | Atomic | Orbitals | |
|
||||
| qmckl_mo.org | #+TITLE | Molecular | Orbitals | |
|
||||
| qmckl_jastrow.org | #+TITLE | Jastrow | Factor | |
|
||||
| qmckl_sherman_morrison_woodbury.org | #+TITLE | Sherman-Morrison-Woodbury | | |
|
||||
| qmckl_utils.org | #+TITLE | Utility | functions | |
|
||||
| qmckl_blas.org | #+TITLE | BLAS | functions | |
|
||||
| qmckl_trexio.org | #+TITLE | TREXIO | I/O | library |
|
||||
| qmckl_verificarlo.org | #+TITLE | Verificarlo | CI | |
|
||||
| qmckl_tests.org | #+TITLE | Data | for | Tests |
|
||||
|
||||
#+begin_src python :var data=toc :exports results :results raw
|
||||
result = []
|
||||
@ -40,20 +49,30 @@ return '\n'.join(result)
|
||||
- [[./qmckl_context.html][Context]]
|
||||
- [[./qmckl_memory.html][Memory management]]
|
||||
- [[./qmckl_numprec.html][Numerical precision]]
|
||||
- [[./qmckl_distance.html][Inter-particle distances]]
|
||||
- [[./qmckl_nucleus.html][Nucleus]]
|
||||
- [[./qmckl_electron.html][Electrons]]
|
||||
- [[./qmckl_ao.html][Atomic Orbitals]]
|
||||
- [[./qmckl_distance.html][Inter-particle distances]]
|
||||
- [[./qmckl_mo.html][Molecular Orbitals]]
|
||||
- [[./qmckl_jastrow.html][Jastrow Factor]]
|
||||
- [[./qmckl_sherman_morrison_woodbury.html][Sherman-Morrison-Woodbury]]
|
||||
- [[./qmckl_utils.html][Utility functions]]
|
||||
- [[./qmckl_blas.html][BLAS functions]]
|
||||
- [[./qmckl_trexio.html][TREXIO I/O library]]
|
||||
- [[./qmckl_verificarlo.html][Verificarlo CI]]
|
||||
- [[./qmckl_tests.html][Data for Tests]]
|
||||
|
||||
|
||||
--------------------------------
|
||||
|
||||
|
||||
The ultimate goal of the QMCkl library is to provide a high-performance
|
||||
implementation of the main kernels of QMC. In this particular
|
||||
implementation of the library, we focus on the definition of the API
|
||||
and the tests, and on a /pedagogical/ presentation of the
|
||||
algorithms. We expect the HPC experts to use this repository as a
|
||||
reference for re-writing optimized libraries.
|
||||
implementation of the main kernels of Quantum Monte Carlo
|
||||
methods.
|
||||
In this particular implementation of the library, we focus on the
|
||||
definition of the API and the tests, and on a /pedagogical/
|
||||
presentation of the algorithms. We expect the HPC experts to use
|
||||
this repository as a reference for re-writing optimized libraries.
|
||||
|
||||
The source code of the library is available at
|
||||
https://github.com/trex-coe/qmckl
|
||||
|
@ -256,6 +256,53 @@ cppcheck --addon=cert --enable=all *.c &> cppcheck.out
|
||||
functions will use the precision specified in the =context=
|
||||
variable.
|
||||
|
||||
In order to automatize numerical accuracy tests, QMCkl uses
|
||||
[[https://github.com/verificarlo/verificarlo][Verificarlo]] and
|
||||
its CI functionality. You can read Verificarlo CI's documentation
|
||||
at the [[https://github.com/verificarlo/verificarlo/blob/master/doc/06-Postprocessing.md#verificarlo-ci][following link]].
|
||||
Reading it is advised to understand the remainder of this section.
|
||||
|
||||
To enable support for Verificarlo CI tests when building the
|
||||
library, use the following configure command :
|
||||
|
||||
#+begin_src bash
|
||||
QMCKL_DEVEL=1 ./configure --prefix=$PWD/_install --enable-silent-rules --enable-maintainer-mode CC=verificarlo-f FC=verificarlo-f --host=x86_64 --enable-vfc_ci
|
||||
#+end_src
|
||||
|
||||
Note that this does require an install of Verificarlo *with
|
||||
Fortran support*. Enabling the support for CI will define the
|
||||
~VFC_CI~ preprocessor variable which use will be explained now.
|
||||
|
||||
As explained in the documentation, Verificarlo CI uses a probes
|
||||
system to export variables from test programs to the tools itself.
|
||||
To make tests easier to use, QMCkl has its own interface to the
|
||||
probes system. To make the system very easy to use, these functions
|
||||
are always defined, but will behave differently depending on the
|
||||
~VFC_CI~ preprocessor variable. There are 3 functions at your
|
||||
disposal. When the CI is enabled, they will place a ~vfc_ci~ probe
|
||||
as if calling ~vfc_probes~ directly. Otherwise, they will either do
|
||||
nothing or perform a check on the tested value and return its result
|
||||
as a boolean that you are free to use or ignore.
|
||||
Here are these 3 functions :
|
||||
|
||||
- ~qmckl_probe~ : place a normal probe witout any check. Won't do anything when ~vfc_ci~ is disabled (false is returned).
|
||||
- ~qmckl_probe_check~ : place a probe with an absolute check. If ~vfc_ci~ is disabled, this will return the result of an absolute check (|val - ref| < accuracy target ?). If the check fails, true is returned (false otherwise).
|
||||
- ~qmckl_probe_check_relative~ : place a probe with a relative check. If ~vfc_ci~ is disabled, this will return the result of a relative check (|val - ref| / ref < accuracy target?). If the check fails, true is returned (false otherwise).
|
||||
|
||||
|
||||
If you need more details on these functions or their Fortran
|
||||
interfaces, have a look at the ~tools/qmckl_probes~ files.
|
||||
|
||||
Finally, if you need to add a QMCkl kernel to the CI tests
|
||||
or modify an existing one, you should pay attention to the
|
||||
following points :
|
||||
|
||||
- you should add the new kernel to the ~vfc_tests_config.json~ file, which controls the backends and repetitions for each executable. More details can be found in the ~vfc_ci~ documentation.
|
||||
|
||||
- in order to call the ~qmckl_probes~ functions from Fortran, import the ~qmckl_probes_f~ module.
|
||||
|
||||
- if your tests include some asserts that rely on accurate FP values, you should probably wrap them inside a ~#ifndef VFC_CI~ statement, as the asserts would otherwise risk to fail when executed with the different Verificarlo backends.
|
||||
|
||||
** Algorithms
|
||||
|
||||
Reducing the scaling of an algorithm usually implies also reducing
|
||||
@ -264,4 +311,3 @@ cppcheck --addon=cert --enable=all *.c &> cppcheck.out
|
||||
algorithms are better adapted than linear scaling algorithms. As
|
||||
QMCkl is a general purpose library, multiple algorithms should be
|
||||
implemented adapted to different problem sizes.
|
||||
|
||||
|
923
org/qmckl_ao.org
923
org/qmckl_ao.org
File diff suppressed because it is too large
Load Diff
@ -23,7 +23,8 @@ int main() {
|
||||
|
||||
** ~qmckl_dgemm~
|
||||
|
||||
Matrix multiply l$C_{ij} = \beta C_{ij} + \alpha \sum_{k} A_{ik} \cdot B_{kj}$ using Fortran ~matmul~ function.
|
||||
Matrix multiply: $C_{ij} = \beta C_{ij} + \alpha \sum_{k} A_{ik} \cdot B_{kj}$ using Fortran ~matmul~ function.
|
||||
|
||||
TODO: Add description about the external library dependence.
|
||||
|
||||
#+NAME: qmckl_dgemm_args
|
||||
@ -41,7 +42,7 @@ int main() {
|
||||
| double | beta | in | Array containing the $n \times m$ matrix $B$ |
|
||||
| double | C[][ldc] | out | Array containing the $n \times m$ matrix $B$ |
|
||||
| int64_t | ldc | in | Leading dimension of array ~B~ |
|
||||
|
||||
|
||||
*** Requirements
|
||||
|
||||
- ~context~ is not ~QMCKL_NULL_CONTEXT~
|
||||
@ -75,7 +76,7 @@ int main() {
|
||||
const int64_t ldb,
|
||||
const double beta,
|
||||
double* const C,
|
||||
const int64_t ldc );
|
||||
const int64_t ldc );
|
||||
#+END_src
|
||||
|
||||
|
||||
@ -145,27 +146,39 @@ integer function qmckl_dgemm_f(context, TransA, TransB, m, n, k, alpha, A, LDA,
|
||||
return
|
||||
endif
|
||||
|
||||
if (LDA_2 .ne. m) then
|
||||
if (LDA_2 /= m) then
|
||||
info = QMCKL_INVALID_ARG_9
|
||||
return
|
||||
endif
|
||||
|
||||
if (LDB_2 .ne. k) then
|
||||
if (LDB_2 /= k) then
|
||||
info = QMCKL_INVALID_ARG_10
|
||||
return
|
||||
endif
|
||||
|
||||
if (LDC .ne. m) then
|
||||
if (LDC /= m) then
|
||||
info = QMCKL_INVALID_ARG_13
|
||||
return
|
||||
endif
|
||||
|
||||
if (TransA) then
|
||||
C = matmul(AT,B)
|
||||
if (alpha == 1.d0 .and. beta == 0.d0) then
|
||||
C = matmul(AT,B)
|
||||
else
|
||||
C = beta*C + alpha*matmul(AT,B)
|
||||
endif
|
||||
else if (TransB) then
|
||||
C = matmul(A,BT)
|
||||
if (alpha == 1.d0 .and. beta == 0.d0) then
|
||||
C = matmul(A,BT)
|
||||
else
|
||||
C = beta*C + alpha*matmul(A,BT)
|
||||
endif
|
||||
else
|
||||
C = matmul(A,B)
|
||||
if (alpha == 1.d0 .and. beta == 0.d0) then
|
||||
C = matmul(A,B)
|
||||
else
|
||||
C = beta*C + alpha*matmul(A,B)
|
||||
endif
|
||||
endif
|
||||
end function qmckl_dgemm_f
|
||||
#+end_src
|
||||
@ -251,7 +264,7 @@ integer(qmckl_exit_code) function test_qmckl_dgemm(context) bind(C)
|
||||
double precision :: x, alpha, beta
|
||||
|
||||
TransA = .False.
|
||||
TransB = .False.
|
||||
TransB = .False.
|
||||
m = 1_8
|
||||
k = 4_8
|
||||
n = 6_8
|
||||
@ -302,7 +315,7 @@ integer(qmckl_exit_code) function test_qmckl_dgemm(context) bind(C)
|
||||
deallocate(A,B,C,D)
|
||||
end function test_qmckl_dgemm
|
||||
#+end_src
|
||||
|
||||
|
||||
#+begin_src c :comments link :tangle (eval c_test)
|
||||
qmckl_exit_code test_qmckl_dgemm(qmckl_context context);
|
||||
assert(QMCKL_SUCCESS == test_qmckl_dgemm(context));
|
||||
|
@ -12,6 +12,7 @@ Functions for the computation of distances between particles.
|
||||
#+begin_src c :comments link :tangle (eval c_test) :noweb yes
|
||||
#include "qmckl.h"
|
||||
#include "assert.h"
|
||||
#include <stdio.h>
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
@ -19,6 +20,7 @@ int main() {
|
||||
qmckl_context context;
|
||||
context = qmckl_context_create();
|
||||
|
||||
|
||||
#+end_src
|
||||
|
||||
* Squared distance
|
||||
@ -282,10 +284,17 @@ end function qmckl_distance_sq_f
|
||||
|
||||
*** Test :noexport:
|
||||
#+begin_src f90 :tangle (eval f_test)
|
||||
|
||||
integer(qmckl_exit_code) function test_qmckl_distance_sq(context) bind(C)
|
||||
|
||||
use qmckl
|
||||
use qmckl_verificarlo_f
|
||||
use iso_c_binding
|
||||
|
||||
implicit none
|
||||
|
||||
integer(qmckl_context), intent(in), value :: context
|
||||
logical(C_BOOL) :: vfc_err
|
||||
|
||||
double precision, allocatable :: A(:,:), B(:,:), C(:,:)
|
||||
integer*8 :: m, n, LDA, LDB, LDC
|
||||
@ -299,7 +308,6 @@ integer(qmckl_exit_code) function test_qmckl_distance_sq(context) bind(C)
|
||||
LDC = 5
|
||||
|
||||
allocate( A(LDA,m), B(LDB,n), C(LDC,n) )
|
||||
|
||||
do j=1,m
|
||||
do i=1,m
|
||||
A(i,j) = -10.d0 + dble(i+j)
|
||||
@ -314,17 +322,26 @@ integer(qmckl_exit_code) function test_qmckl_distance_sq(context) bind(C)
|
||||
test_qmckl_distance_sq = &
|
||||
qmckl_distance_sq(context, 'X', 't', m, n, A, LDA, B, LDB, C, LDC)
|
||||
|
||||
vfc_err = qmckl_probe("distance"//C_NULL_CHAR, "distance_sq_Xt_2_2"//C_NULL_CHAR, DBLE(C(2,2)))
|
||||
|
||||
if (test_qmckl_distance_sq == 0) return
|
||||
|
||||
|
||||
test_qmckl_distance_sq = &
|
||||
qmckl_distance_sq(context, 't', 'X', m, n, A, LDA, B, LDB, C, LDC)
|
||||
|
||||
vfc_err = qmckl_probe("distance"//C_NULL_CHAR, "distance_sq_tX_2_2"//C_NULL_CHAR, DBLE(C(2,2)))
|
||||
|
||||
if (test_qmckl_distance_sq == 0) return
|
||||
|
||||
|
||||
test_qmckl_distance_sq = &
|
||||
qmckl_distance_sq(context, 'T', 't', m, n, A, LDA, B, LDB, C, LDC)
|
||||
|
||||
if (test_qmckl_distance_sq /= 0) return
|
||||
vfc_err = qmckl_probe_check("distance"//C_NULL_CHAR, "distance_sq_Tt_2_2"//C_NULL_CHAR, DBLE(C(2,2)), DBLE(0), DBLE(1.d-14))
|
||||
|
||||
if (test_qmckl_distance_sq == 0) return
|
||||
|
||||
|
||||
test_qmckl_distance_sq = QMCKL_FAILURE
|
||||
|
||||
@ -333,14 +350,17 @@ integer(qmckl_exit_code) function test_qmckl_distance_sq(context) bind(C)
|
||||
x = (A(i,1)-B(j,1))**2 + &
|
||||
(A(i,2)-B(j,2))**2 + &
|
||||
(A(i,3)-B(j,3))**2
|
||||
if ( dabs(1.d0 - C(i,j)/x) > 1.d-14 ) return
|
||||
#ifndef VFC_CI
|
||||
if ( dabs(1.d0 - C(i,j)/x) > 1.d-14) return
|
||||
#endif
|
||||
end do
|
||||
end do
|
||||
|
||||
test_qmckl_distance_sq = &
|
||||
qmckl_distance_sq(context, 'n', 'T', m, n, A, LDA, B, LDB, C, LDC)
|
||||
|
||||
if (test_qmckl_distance_sq /= 0) return
|
||||
vfc_err = qmckl_probe_check("distance"//C_NULL_CHAR, "distance_sq_nT_2_2"//C_NULL_CHAR, DBLE(C(2,2)), DBLE(0), DBLE(1.d-14))
|
||||
|
||||
|
||||
test_qmckl_distance_sq = QMCKL_FAILURE
|
||||
|
||||
@ -349,14 +369,18 @@ integer(qmckl_exit_code) function test_qmckl_distance_sq(context) bind(C)
|
||||
x = (A(1,i)-B(j,1))**2 + &
|
||||
(A(2,i)-B(j,2))**2 + &
|
||||
(A(3,i)-B(j,3))**2
|
||||
if ( dabs(1.d0 - C(i,j)/x) > 1.d-14 ) return
|
||||
#ifndef VFC_CI
|
||||
if ( dabs(1.d0 - C(i,j)/x) > 1.d-14) return
|
||||
#endif
|
||||
end do
|
||||
end do
|
||||
|
||||
test_qmckl_distance_sq = &
|
||||
qmckl_distance_sq(context, 'T', 'n', m, n, A, LDA, B, LDB, C, LDC)
|
||||
|
||||
if (test_qmckl_distance_sq /= 0) return
|
||||
vfc_err = qmckl_probe_check("distance"//C_NULL_CHAR, "distance_sq_Tn_2_2"//C_NULL_CHAR, DBLE(C(2,2)), DBLE(0), DBLE(1.d-14))
|
||||
|
||||
if (test_qmckl_distance_sq == 0) return
|
||||
|
||||
test_qmckl_distance_sq = QMCKL_FAILURE
|
||||
|
||||
@ -365,14 +389,16 @@ integer(qmckl_exit_code) function test_qmckl_distance_sq(context) bind(C)
|
||||
x = (A(i,1)-B(1,j))**2 + &
|
||||
(A(i,2)-B(2,j))**2 + &
|
||||
(A(i,3)-B(3,j))**2
|
||||
if ( dabs(1.d0 - C(i,j)/x) > 1.d-14 ) return
|
||||
#ifndef VFC_CI
|
||||
if ( dabs(1.d0 - C(i,j)/x) > 1.d-14) return
|
||||
#endif
|
||||
end do
|
||||
end do
|
||||
|
||||
test_qmckl_distance_sq = &
|
||||
qmckl_distance_sq(context, 'n', 'N', m, n, A, LDA, B, LDB, C, LDC)
|
||||
|
||||
if (test_qmckl_distance_sq /= 0) return
|
||||
vfc_err = qmckl_probe_check("distance"//C_NULL_CHAR, "distance_sq_nN_2_2"//C_NULL_CHAR, DBLE(C(2,2)), DBLE(0), DBLE(1.d-14))
|
||||
|
||||
test_qmckl_distance_sq = QMCKL_FAILURE
|
||||
|
||||
@ -392,8 +418,8 @@ end function test_qmckl_distance_sq
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :comments link :tangle (eval c_test)
|
||||
qmckl_exit_code test_qmckl_distance_sq(qmckl_context context);
|
||||
assert(test_qmckl_distance_sq(context) == QMCKL_SUCCESS);
|
||||
qmckl_exit_code test_qmckl_distance_sq(qmckl_context context);
|
||||
assert(test_qmckl_distance_sq(context) == QMCKL_SUCCESS);
|
||||
#+end_src
|
||||
* Distance
|
||||
|
||||
@ -690,10 +716,17 @@ end function qmckl_distance_f
|
||||
|
||||
*** Test :noexport:
|
||||
#+begin_src f90 :tangle (eval f_test)
|
||||
|
||||
integer(qmckl_exit_code) function test_qmckl_dist(context) bind(C)
|
||||
|
||||
use qmckl
|
||||
use qmckl_verificarlo_f
|
||||
use iso_c_binding
|
||||
|
||||
implicit none
|
||||
|
||||
integer(qmckl_context), intent(in), value :: context
|
||||
logical(C_BOOL) :: vfc_err
|
||||
|
||||
double precision, allocatable :: A(:,:), B(:,:), C(:,:)
|
||||
integer*8 :: m, n, LDA, LDB, LDC
|
||||
@ -722,17 +755,24 @@ integer(qmckl_exit_code) function test_qmckl_dist(context) bind(C)
|
||||
test_qmckl_dist = &
|
||||
qmckl_distance(context, 'X', 't', m, n, A, LDA, B, LDB, C, LDC)
|
||||
|
||||
vfc_err = qmckl_probe("distance"//C_NULL_CHAR, "distance_Xt_2_2"//C_NULL_CHAR, DBLE(C(2,2)))
|
||||
|
||||
if (test_qmckl_dist == 0) return
|
||||
|
||||
test_qmckl_dist = &
|
||||
qmckl_distance(context, 't', 'X', m, n, A, LDA, B, LDB, C, LDC)
|
||||
|
||||
vfc_err = qmckl_probe("distance"//C_NULL_CHAR, "distance_tX_2_2"//C_NULL_CHAR, DBLE(C(2,2)))
|
||||
|
||||
if (test_qmckl_dist == 0) return
|
||||
|
||||
test_qmckl_dist = &
|
||||
qmckl_distance(context, 'T', 't', m, n, A, LDA, B, LDB, C, LDC)
|
||||
|
||||
if (test_qmckl_dist /= 0) return
|
||||
vfc_err = qmckl_probe_check("distance"//C_NULL_CHAR, "distance_Tt_2_2"//C_NULL_CHAR, DBLE(C(2,2)), DBLE(0), DBLE(1.d-14))
|
||||
|
||||
if (test_qmckl_dist == 0) return
|
||||
|
||||
|
||||
test_qmckl_dist = QMCKL_FAILURE
|
||||
|
||||
@ -741,14 +781,19 @@ integer(qmckl_exit_code) function test_qmckl_dist(context) bind(C)
|
||||
x = dsqrt((A(i,1)-B(j,1))**2 + &
|
||||
(A(i,2)-B(j,2))**2 + &
|
||||
(A(i,3)-B(j,3))**2)
|
||||
if ( dabs(1.d0 - C(i,j)/x) > 1.d-14 ) return
|
||||
#ifndef VFC_CI
|
||||
if ( dabs(1.d0 - C(i,j)/x) > 1.d-14) return
|
||||
#endif
|
||||
end do
|
||||
end do
|
||||
|
||||
test_qmckl_dist = &
|
||||
qmckl_distance(context, 'n', 'T', m, n, A, LDA, B, LDB, C, LDC)
|
||||
|
||||
if (test_qmckl_dist /= 0) return
|
||||
vfc_err = qmckl_probe_check("distance"//C_NULL_CHAR, "distance_nT_2_2"//C_NULL_CHAR, DBLE(C(2,2)), DBLE(0), DBLE(1.d-14))
|
||||
|
||||
if (test_qmckl_dist == 0) return
|
||||
|
||||
|
||||
test_qmckl_dist = QMCKL_FAILURE
|
||||
|
||||
@ -757,14 +802,19 @@ integer(qmckl_exit_code) function test_qmckl_dist(context) bind(C)
|
||||
x = dsqrt((A(1,i)-B(j,1))**2 + &
|
||||
(A(2,i)-B(j,2))**2 + &
|
||||
(A(3,i)-B(j,3))**2)
|
||||
if ( dabs(1.d0 - C(i,j)/x) > 1.d-14 ) return
|
||||
#ifndef VFC_CI
|
||||
if ( dabs(1.d0 - C(i,j)/x) > 1.d-14) return
|
||||
#endif
|
||||
end do
|
||||
end do
|
||||
|
||||
test_qmckl_dist = &
|
||||
qmckl_distance(context, 'T', 'n', m, n, A, LDA, B, LDB, C, LDC)
|
||||
|
||||
if (test_qmckl_dist /= 0) return
|
||||
vfc_err = qmckl_probe_check("distance"//C_NULL_CHAR, "distance_Tn_2_2"//C_NULL_CHAR, DBLE(C(2,2)), DBLE(0), DBLE(1.d-14))
|
||||
|
||||
if (test_qmckl_dist == 0) return
|
||||
|
||||
|
||||
test_qmckl_dist = QMCKL_FAILURE
|
||||
|
||||
@ -773,14 +823,19 @@ integer(qmckl_exit_code) function test_qmckl_dist(context) bind(C)
|
||||
x = dsqrt((A(i,1)-B(1,j))**2 + &
|
||||
(A(i,2)-B(2,j))**2 + &
|
||||
(A(i,3)-B(3,j))**2)
|
||||
if ( dabs(1.d0 - C(i,j)/x) > 1.d-14 ) return
|
||||
#ifndef VFC_CI
|
||||
if ( dabs(1.d0 - C(i,j)/x) > 1.d-14) return
|
||||
#endif
|
||||
end do
|
||||
end do
|
||||
|
||||
test_qmckl_dist = &
|
||||
qmckl_distance(context, 'n', 'N', m, n, A, LDA, B, LDB, C, LDC)
|
||||
|
||||
if (test_qmckl_dist /= 0) return
|
||||
vfc_err = qmckl_probe_check("distance"//C_NULL_CHAR, "distance_nN_2_2"//C_NULL_CHAR, DBLE(C(2,2)), DBLE(0), DBLE(1.d-14))
|
||||
|
||||
if (test_qmckl_dist == 0) return
|
||||
|
||||
|
||||
test_qmckl_dist = QMCKL_FAILURE
|
||||
|
||||
@ -789,7 +844,9 @@ integer(qmckl_exit_code) function test_qmckl_dist(context) bind(C)
|
||||
x = dsqrt((A(1,i)-B(1,j))**2 + &
|
||||
(A(2,i)-B(2,j))**2 + &
|
||||
(A(3,i)-B(3,j))**2)
|
||||
if ( dabs(1.d0 - C(i,j)/x) > 1.d-14 ) return
|
||||
#ifndef VFC_CI
|
||||
if ( dabs(1.d0 - C(i,j)/x) > 1.d-14) return
|
||||
#endif
|
||||
end do
|
||||
end do
|
||||
|
||||
@ -800,8 +857,8 @@ end function test_qmckl_dist
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :comments link :tangle (eval c_test)
|
||||
qmckl_exit_code test_qmckl_dist(qmckl_context context);
|
||||
assert(test_qmckl_dist(context) == QMCKL_SUCCESS);
|
||||
qmckl_exit_code test_qmckl_dist(qmckl_context context);
|
||||
assert(test_qmckl_dist(context) == QMCKL_SUCCESS);
|
||||
#+end_src
|
||||
|
||||
* Rescaled Distance
|
||||
@ -1114,12 +1171,12 @@ end function qmckl_distance_rescaled_f
|
||||
:FRetType: qmckl_exit_code
|
||||
:END:
|
||||
|
||||
~qmckl_distance_rescaled_deriv_e~ computes the matrix of the gradient and laplacian of the
|
||||
~qmckl_distance_rescaled_deriv_e~ computes the matrix of the gradient and laplacian of the
|
||||
rescaled distance with respect to the electron coordinates. The derivative is a rank 3 tensor.
|
||||
The first dimension has a dimension of 4 of which the first three coordinates
|
||||
contains the gradient vector and the last index is the laplacian.
|
||||
|
||||
|
||||
|
||||
|
||||
\[
|
||||
C_{ij} = \left( 1 - \exp{-\kappa C_{ij}}\right)/\kappa
|
||||
\]
|
||||
@ -1130,12 +1187,12 @@ end function qmckl_distance_rescaled_f
|
||||
\nabla (C_{ij}(\mathbf{r}_{ee})) = \left(\frac{\delta C_{ij}(\mathbf{r}_{ee})}{\delta x},\frac{\delta C_{ij}(\mathbf{r}_{ee})}{\delta y},\frac{\delta C_{ij}(\mathbf{r}_{ee})}{\delta z} \right)
|
||||
\]
|
||||
and the laplacian is defined as follows:
|
||||
|
||||
|
||||
\[
|
||||
\triangle (C_{ij}(r_{ee})) = \frac{\delta^2}{\delta x^2} + \frac{\delta^2}{\delta y^2} + \frac{\delta^2}{\delta z^2}
|
||||
\]
|
||||
|
||||
Using the above three formulae, the expression for the gradient and laplacian is
|
||||
Using the above three formulae, the expression for the gradient and laplacian is
|
||||
as follows:
|
||||
|
||||
\[
|
||||
@ -1462,7 +1519,9 @@ end function qmckl_distance_rescaled_deriv_e_f
|
||||
* End of files :noexport:
|
||||
|
||||
#+begin_src c :comments link :tangle (eval c_test)
|
||||
|
||||
assert (qmckl_context_destroy(context) == QMCKL_SUCCESS);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -18,6 +18,11 @@ up-spin and down-spin electrons, and the electron coordinates.
|
||||
#include <stdbool.h>
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :tangle (eval h_private_func)
|
||||
#ifndef QMCKL_ELECTRON_HPF
|
||||
#define QMCKL_ELECTRON_HPF
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :tangle (eval c_test) :noweb yes
|
||||
#include "qmckl.h"
|
||||
#include <assert.h>
|
||||
@ -2408,6 +2413,10 @@ assert (rc == QMCKL_SUCCESS);
|
||||
#endif
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :tangle (eval h_private_func)
|
||||
#endif
|
||||
#+end_src
|
||||
|
||||
*** Test
|
||||
#+begin_src c :tangle (eval c_test)
|
||||
if (qmckl_context_destroy(context) != QMCKL_SUCCESS)
|
||||
|
@ -456,8 +456,19 @@ qmckl_get_error(qmckl_context context,
|
||||
qmckl_context_struct* const ctx = (qmckl_context_struct* const) context;
|
||||
assert (ctx != NULL); /* Impossible because the context is valid. */
|
||||
|
||||
/* Turn off annoying GCC warning */
|
||||
#ifdef __GNUC__
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wstringop-truncation"
|
||||
#endif
|
||||
|
||||
strncpy(function_name, ctx->error.function, QMCKL_MAX_FUN_LEN-1);
|
||||
strncpy(message , ctx->error.message , QMCKL_MAX_MSG_LEN-1);
|
||||
|
||||
#ifdef __GNUC__
|
||||
#pragma GCC diagnostic pop
|
||||
#endif
|
||||
|
||||
(*exit_code) = ctx->error.exit_code;
|
||||
}
|
||||
qmckl_unlock(context);
|
||||
|
@ -13,6 +13,11 @@ these factors along with their derivatives.
|
||||
#+end_src
|
||||
|
||||
|
||||
#+begin_src c :tangle (eval h_private_func)
|
||||
#ifndef QMCKL_JASTROW_HPF
|
||||
#define QMCKL_JASTROW_HPF
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :tangle (eval h_private_type)
|
||||
#ifndef QMCKL_JASTROW_HPT
|
||||
#define QMCKL_JASTROW_HPT
|
||||
@ -5469,6 +5474,10 @@ assert(fabs(factor_een_deriv_e[0][0] + 0.0005481671107226865) < 1e-12);
|
||||
#endif
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :tangle (eval h_private_func)
|
||||
#endif
|
||||
#+end_src
|
||||
|
||||
*** Test
|
||||
#+begin_src c :tangle (eval c_test)
|
||||
rc = qmckl_context_destroy(context);
|
||||
|
@ -41,6 +41,11 @@ int main() {
|
||||
#+end_src
|
||||
|
||||
|
||||
#+begin_src c :tangle (eval h_private_func) :noweb yes
|
||||
#ifndef QMCKL_MEMORY_HPF
|
||||
#define QMCKL_MEMORY_HPF
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :tangle (eval h_private_type) :noweb yes
|
||||
#ifndef QMCKL_MEMORY_HPT
|
||||
#define QMCKL_MEMORY_HPT
|
||||
@ -273,6 +278,11 @@ assert(rc == QMCKL_SUCCESS);
|
||||
|
||||
* End of files :noexport:
|
||||
|
||||
#+begin_src c :comments org :tangle (eval h_private_func)
|
||||
#endif
|
||||
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :comments org :tangle (eval h_private_type)
|
||||
#endif
|
||||
|
||||
|
228
org/qmckl_mo.org
228
org/qmckl_mo.org
@ -21,6 +21,11 @@ function to calculate the MOs.
|
||||
#+end_src
|
||||
|
||||
|
||||
#+begin_src c :tangle (eval h_private_func)
|
||||
#ifndef QMCKL_MO_HPF
|
||||
#define QMCKL_MO_HPF
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :tangle (eval h_private_type)
|
||||
#ifndef QMCKL_MO_HPT
|
||||
#define QMCKL_MO_HPT
|
||||
@ -78,18 +83,17 @@ int main() {
|
||||
|
||||
The following arrays are stored in the context:
|
||||
|
||||
|---------------------+--------------------+--------------------------------------------------------------|
|
||||
| ~type~ | | Gaussian (~'G'~) or Slater (~'S'~) |
|
||||
| ~mo_num~ | | Number of MOs |
|
||||
| ~coefficient~ | ~[mo_num, ao_num]~ | Orbital coefficients |
|
||||
|---------------+--------------------+----------------------|
|
||||
| ~mo_num~ | | Number of MOs |
|
||||
| ~coefficient~ | ~[mo_num][ao_num]~ | Orbital coefficients |
|
||||
|
||||
Computed data:
|
||||
|
||||
|---------------+-----------------------------------+----------------------------------------------------------------------------------------|
|
||||
|---------------+-----------------------------------+----------------------------------------------------------------------------------------|
|
||||
|---------------+-------------------------+----------------------------------------------------------------------------------------|
|
||||
|---------------+-------------------------+----------------------------------------------------------------------------------------|
|
||||
| ~mo_vgl~ | ~[5][elec_num][mo_num]~ | Value, gradients, Laplacian of the MOs at electron positions |
|
||||
| ~mo_vgl_date~ | ~uint64_t~ | Late modification date of Value, gradients, Laplacian of the MOs at electron positions |
|
||||
|---------------+-----------------------------------+----------------------------------------------------------------------------------------|
|
||||
| ~mo_vgl_date~ | ~uint64_t~ | Late modification date of Value, gradients, Laplacian of the MOs at electron positions |
|
||||
|---------------+-------------------------+----------------------------------------------------------------------------------------|
|
||||
|
||||
** Data structure
|
||||
|
||||
@ -103,7 +107,6 @@ typedef struct qmckl_mo_basis_struct {
|
||||
|
||||
int32_t uninitialized;
|
||||
bool provided;
|
||||
char type;
|
||||
} qmckl_mo_basis_struct;
|
||||
#+end_src
|
||||
|
||||
@ -115,33 +118,24 @@ typedef struct qmckl_mo_basis_struct {
|
||||
this mechanism.
|
||||
|
||||
** Access functions
|
||||
|
||||
#+begin_src c :comments org :tangle (eval h_private_func) :exports none
|
||||
char qmckl_get_mo_basis_type (const qmckl_context context);
|
||||
int64_t qmckl_get_mo_basis_mo_num (const qmckl_context context);
|
||||
double* qmckl_get_mo_basis_coefficient (const qmckl_context context);
|
||||
|
||||
#+begin_src c :comments org :tangle (eval h_func) :exports none
|
||||
qmckl_exit_code
|
||||
qmckl_get_mo_basis_mo_num (const qmckl_context context,
|
||||
int64_t* mo_num);
|
||||
#+end_src
|
||||
|
||||
When all the data for the AOs have been provided, the following
|
||||
function returns ~true~.
|
||||
|
||||
#+begin_src c :comments org :tangle (eval h_func)
|
||||
bool qmckl_mo_basis_provided (const qmckl_context context);
|
||||
#+end_src
|
||||
|
||||
#+NAME:post
|
||||
#+begin_src c :exports none
|
||||
if ( (ctx->mo_basis.uninitialized & mask) != 0) {
|
||||
return NULL;
|
||||
}
|
||||
#+end_src
|
||||
|
||||
|
||||
#+begin_src c :comments org :tangle (eval c) :noweb yes :exports none
|
||||
char qmckl_get_mo_basis_type (const qmckl_context context) {
|
||||
|
||||
if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) {
|
||||
return (char) 0;
|
||||
qmckl_exit_code
|
||||
qmckl_get_mo_basis_mo_num (const qmckl_context context,
|
||||
int64_t* mo_num)
|
||||
{
|
||||
if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) {
|
||||
return qmckl_failwith( context,
|
||||
QMCKL_INVALID_CONTEXT,
|
||||
"qmckl_get_mo_basis_mo_num",
|
||||
NULL);
|
||||
return (int64_t) 0;
|
||||
}
|
||||
|
||||
qmckl_context_struct* const ctx = (qmckl_context_struct* const) context;
|
||||
@ -150,16 +144,37 @@ char qmckl_get_mo_basis_type (const qmckl_context context) {
|
||||
int32_t mask = 1;
|
||||
|
||||
if ( (ctx->mo_basis.uninitialized & mask) != 0) {
|
||||
return (char) 0;
|
||||
return qmckl_failwith( context,
|
||||
QMCKL_NOT_PROVIDED,
|
||||
"qmckl_get_mo_basis_mo_num",
|
||||
NULL);
|
||||
}
|
||||
|
||||
assert (ctx->mo_basis.type != (char) 0);
|
||||
return ctx->mo_basis.type;
|
||||
assert (ctx->mo_basis.mo_num > (int64_t) 0);
|
||||
,*mo_num = ctx->mo_basis.mo_num;
|
||||
return QMCKL_SUCCESS;
|
||||
}
|
||||
|
||||
int64_t qmckl_get_mo_basis_mo_num (const qmckl_context context) {
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :comments org :tangle (eval h_func) :exports none
|
||||
qmckl_exit_code
|
||||
qmckl_get_mo_basis_coefficient (const qmckl_context context,
|
||||
double* const coefficient,
|
||||
const int64_t size_max);
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :comments org :tangle (eval c) :exports none
|
||||
qmckl_exit_code
|
||||
qmckl_get_mo_basis_coefficient (const qmckl_context context,
|
||||
double* const coefficient,
|
||||
const int64_t size_max)
|
||||
{
|
||||
if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) {
|
||||
return (int64_t) 0;
|
||||
return qmckl_failwith( context,
|
||||
QMCKL_INVALID_CONTEXT,
|
||||
"qmckl_get_mo_basis_coefficient",
|
||||
NULL);
|
||||
}
|
||||
|
||||
qmckl_context_struct* const ctx = (qmckl_context_struct* const) context;
|
||||
@ -167,14 +182,43 @@ int64_t qmckl_get_mo_basis_mo_num (const qmckl_context context) {
|
||||
|
||||
int32_t mask = 1 << 1;
|
||||
|
||||
if ( (ctx->mo_basis.uninitialized & mask) != 0) {
|
||||
return (int64_t) 0;
|
||||
if ( (ctx->ao_basis.uninitialized & mask) != 0) {
|
||||
return qmckl_failwith( context,
|
||||
QMCKL_NOT_PROVIDED,
|
||||
"qmckl_get_mo_basis_coefficient",
|
||||
NULL);
|
||||
}
|
||||
|
||||
assert (ctx->mo_basis.mo_num > (int64_t) 0);
|
||||
return ctx->mo_basis.mo_num;
|
||||
}
|
||||
if (coefficient == NULL) {
|
||||
return qmckl_failwith( context,
|
||||
QMCKL_INVALID_ARG_2,
|
||||
"qmckl_get_mo_basis_coefficient",
|
||||
"NULL pointer");
|
||||
}
|
||||
|
||||
if (size_max < ctx->ao_basis.ao_num * ctx->mo_basis.mo_num) {
|
||||
return qmckl_failwith( context,
|
||||
QMCKL_INVALID_ARG_3,
|
||||
"qmckl_get_mo_basis_coefficient",
|
||||
"Array too small. Expected mo_num * ao_num");
|
||||
}
|
||||
|
||||
assert (ctx->mo_basis.coefficient != NULL);
|
||||
memcpy(coefficient, ctx->mo_basis.coefficient,
|
||||
ctx->ao_basis.ao_num * ctx->mo_basis.mo_num * sizeof(int64_t));
|
||||
|
||||
return QMCKL_SUCCESS;
|
||||
}
|
||||
#+end_src
|
||||
|
||||
When all the data for the AOs have been provided, the following
|
||||
function returns ~true~.
|
||||
|
||||
#+begin_src c :comments org :tangle (eval h_func)
|
||||
bool qmckl_mo_basis_provided (const qmckl_context context);
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :comments org :tangle (eval c) :exports none
|
||||
bool qmckl_mo_basis_provided(const qmckl_context context) {
|
||||
|
||||
if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) {
|
||||
@ -196,12 +240,11 @@ bool qmckl_mo_basis_provided(const qmckl_context context) {
|
||||
called.
|
||||
|
||||
#+begin_src c :comments org :tangle (eval h_func)
|
||||
qmckl_exit_code qmckl_set_mo_basis_type (qmckl_context context, const char t);
|
||||
qmckl_exit_code qmckl_set_mo_basis_mo_num (qmckl_context context, const int64_t mo_num);
|
||||
qmckl_exit_code qmckl_set_mo_basis_coefficient (qmckl_context context, const double * coefficient);
|
||||
#+end_src
|
||||
|
||||
#+NAME:pre2
|
||||
#+NAME:pre
|
||||
#+begin_src c :exports none
|
||||
if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) {
|
||||
return QMCKL_NULL_CONTEXT;
|
||||
@ -210,7 +253,7 @@ if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) {
|
||||
qmckl_context_struct* const ctx = (qmckl_context_struct* const) context;
|
||||
#+end_src
|
||||
|
||||
#+NAME:post2
|
||||
#+NAME:post
|
||||
#+begin_src c :exports none
|
||||
ctx->mo_basis.uninitialized &= ~mask;
|
||||
ctx->mo_basis.provided = (ctx->mo_basis.uninitialized == 0);
|
||||
@ -223,24 +266,8 @@ return QMCKL_SUCCESS;
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :comments org :tangle (eval c) :noweb yes :exports none
|
||||
qmckl_exit_code qmckl_set_mo_basis_type(qmckl_context context, const char t) {
|
||||
<<pre2>>
|
||||
|
||||
if (t != 'G' && t != 'S') {
|
||||
return qmckl_failwith( context,
|
||||
QMCKL_INVALID_ARG_2,
|
||||
"qmckl_set_mo_basis_type",
|
||||
NULL);
|
||||
}
|
||||
|
||||
int32_t mask = 1;
|
||||
ctx->mo_basis.type = t;
|
||||
|
||||
<<post2>>
|
||||
}
|
||||
|
||||
qmckl_exit_code qmckl_set_mo_basis_mo_num(qmckl_context context, const int64_t mo_num) {
|
||||
<<pre2>>
|
||||
<<pre>>
|
||||
|
||||
if (mo_num <= 0) {
|
||||
return qmckl_failwith( context,
|
||||
@ -249,16 +276,16 @@ qmckl_exit_code qmckl_set_mo_basis_mo_num(qmckl_context context, const int64_t m
|
||||
"mo_num <= 0");
|
||||
}
|
||||
|
||||
int32_t mask = 1 << 1;
|
||||
int32_t mask = 1 ;
|
||||
ctx->mo_basis.mo_num = mo_num;
|
||||
|
||||
<<post2>>
|
||||
<<post>>
|
||||
}
|
||||
|
||||
qmckl_exit_code qmckl_set_mo_basis_coefficient(qmckl_context context, const double* coefficient) {
|
||||
<<pre2>>
|
||||
<<pre>>
|
||||
|
||||
int32_t mask = 1 << 2;
|
||||
int32_t mask = 1 << 1;
|
||||
|
||||
if (ctx->mo_basis.coefficient != NULL) {
|
||||
qmckl_exit_code rc = qmckl_free(context, ctx->mo_basis.coefficient);
|
||||
@ -283,7 +310,7 @@ qmckl_exit_code qmckl_set_mo_basis_coefficient(qmckl_context context, const dou
|
||||
|
||||
ctx->mo_basis.coefficient = new_array;
|
||||
|
||||
<<post2>>
|
||||
<<post>>
|
||||
}
|
||||
|
||||
#+end_src
|
||||
@ -398,20 +425,13 @@ qmckl_exit_code qmckl_provide_mo_vgl(qmckl_context context)
|
||||
}
|
||||
|
||||
qmckl_exit_code rc;
|
||||
if (ctx->mo_basis.type == 'G') {
|
||||
rc = qmckl_compute_mo_basis_gaussian_vgl(context,
|
||||
ctx->ao_basis.ao_num,
|
||||
ctx->mo_basis.mo_num,
|
||||
ctx->electron.num,
|
||||
ctx->mo_basis.coefficient,
|
||||
ctx->ao_basis.ao_vgl,
|
||||
ctx->mo_basis.mo_vgl);
|
||||
} else {
|
||||
return qmckl_failwith( context,
|
||||
QMCKL_FAILURE,
|
||||
"compute_mo_basis_vgl",
|
||||
"Not yet implemented");
|
||||
}
|
||||
rc = qmckl_compute_mo_basis_vgl(context,
|
||||
ctx->ao_basis.ao_num,
|
||||
ctx->mo_basis.mo_num,
|
||||
ctx->electron.num,
|
||||
ctx->mo_basis.coefficient,
|
||||
ctx->ao_basis.ao_vgl,
|
||||
ctx->mo_basis.mo_vgl);
|
||||
if (rc != QMCKL_SUCCESS) {
|
||||
return rc;
|
||||
}
|
||||
@ -425,22 +445,22 @@ qmckl_exit_code qmckl_provide_mo_vgl(qmckl_context context)
|
||||
|
||||
*** Compute
|
||||
:PROPERTIES:
|
||||
:Name: qmckl_compute_mo_basis_gaussian_vgl
|
||||
:Name: qmckl_compute_mo_basis_vgl
|
||||
:CRetType: qmckl_exit_code
|
||||
:FRetType: qmckl_exit_code
|
||||
:END:
|
||||
|
||||
#+NAME: qmckl_mo_basis_gaussian_vgl_args
|
||||
| ~qmckl_context~ | ~context~ | in | Global state |
|
||||
| ~int64_t~ | ~ao_num~ | in | Number of AOs |
|
||||
| ~int64_t~ | ~mo_num~ | in | Number of MOs |
|
||||
| ~int64_t~ | ~elec_num~ | in | Number of electrons |
|
||||
| ~double~ | ~coef_normalized[mo_num][ao_num]~ | in | AO to MO transformation matrix |
|
||||
| ~double~ | ~ao_vgl[5][elec_num][ao_num]~ | in | Value, gradients and Laplacian of the AOs |
|
||||
| ~double~ | ~mo_vgl[5][elec_num][mo_num]~ | out | Value, gradients and Laplacian of the MOs |
|
||||
| ~qmckl_context~ | ~context~ | in | Global state |
|
||||
| ~int64_t~ | ~ao_num~ | in | Number of AOs |
|
||||
| ~int64_t~ | ~mo_num~ | in | Number of MOs |
|
||||
| ~int64_t~ | ~elec_num~ | in | Number of electrons |
|
||||
| ~double~ | ~coef_normalized[mo_num][ao_num]~ | in | AO to MO transformation matrix |
|
||||
| ~double~ | ~ao_vgl[5][elec_num][ao_num]~ | in | Value, gradients and Laplacian of the AOs |
|
||||
| ~double~ | ~mo_vgl[5][elec_num][mo_num]~ | out | Value, gradients and Laplacian of the MOs |
|
||||
|
||||
#+begin_src f90 :comments org :tangle (eval f) :noweb yes
|
||||
integer function qmckl_compute_mo_basis_gaussian_vgl_f(context, &
|
||||
integer function qmckl_compute_mo_basis_vgl_f(context, &
|
||||
ao_num, mo_num, elec_num, &
|
||||
coef_normalized, ao_vgl, mo_vgl) &
|
||||
result(info)
|
||||
@ -528,14 +548,14 @@ integer function qmckl_compute_mo_basis_gaussian_vgl_f(context, &
|
||||
info = QMCKL_FAILURE
|
||||
end if
|
||||
|
||||
end function qmckl_compute_mo_basis_gaussian_vgl_f
|
||||
end function qmckl_compute_mo_basis_vgl_f
|
||||
#+end_src
|
||||
|
||||
#+CALL: generate_c_header(table=qmckl_mo_basis_gaussian_vgl_args,rettyp=get_value("CRetType"),fname="qmckl_compute_mo_basis_gaussian_vgl"))
|
||||
#+CALL: generate_c_header(table=qmckl_mo_basis_gaussian_vgl_args,rettyp=get_value("CRetType"),fname="qmckl_compute_mo_basis_vgl"))
|
||||
|
||||
#+RESULTS:
|
||||
#+begin_src c :tangle (eval h_func) :comments org
|
||||
qmckl_exit_code qmckl_compute_mo_basis_gaussian_vgl (
|
||||
qmckl_exit_code qmckl_compute_mo_basis_vgl (
|
||||
const qmckl_context context,
|
||||
const int64_t ao_num,
|
||||
const int64_t mo_num,
|
||||
@ -546,11 +566,11 @@ end function qmckl_compute_mo_basis_gaussian_vgl_f
|
||||
#+end_src
|
||||
|
||||
|
||||
#+CALL: generate_c_interface(table=qmckl_mo_basis_gaussian_vgl_args,rettyp=get_value("CRetType"),fname="qmckl_compute_mo_basis_gaussian_vgl"))
|
||||
#+CALL: generate_c_interface(table=qmckl_mo_basis_gaussian_vgl_args,rettyp=get_value("CRetType"),fname="qmckl_compute_mo_basis_vgl"))
|
||||
|
||||
#+RESULTS:
|
||||
#+begin_src f90 :tangle (eval f) :comments org :exports none
|
||||
integer(c_int32_t) function qmckl_compute_mo_basis_gaussian_vgl &
|
||||
integer(c_int32_t) function qmckl_compute_mo_basis_vgl &
|
||||
(context, ao_num, mo_num, elec_num, coef_normalized, ao_vgl, mo_vgl) &
|
||||
bind(C) result(info)
|
||||
|
||||
@ -565,15 +585,13 @@ end function qmckl_compute_mo_basis_gaussian_vgl_f
|
||||
real (c_double ) , intent(in) :: ao_vgl(ao_num,elec_num,5)
|
||||
real (c_double ) , intent(out) :: mo_vgl(mo_num,elec_num,5)
|
||||
|
||||
integer(c_int32_t), external :: qmckl_compute_mo_basis_gaussian_vgl_f
|
||||
info = qmckl_compute_mo_basis_gaussian_vgl_f &
|
||||
integer(c_int32_t), external :: qmckl_compute_mo_basis_vgl_f
|
||||
info = qmckl_compute_mo_basis_vgl_f &
|
||||
(context, ao_num, mo_num, elec_num, coef_normalized, ao_vgl, mo_vgl)
|
||||
|
||||
end function qmckl_compute_mo_basis_gaussian_vgl
|
||||
end function qmckl_compute_mo_basis_vgl
|
||||
#+end_src
|
||||
|
||||
|
||||
|
||||
*** Test
|
||||
|
||||
#+begin_src python :results output :exports none
|
||||
@ -751,9 +769,6 @@ rc = qmckl_get_ao_vgl(context, &(ao_vgl[0][0][0][0]));
|
||||
assert (rc == QMCKL_SUCCESS);
|
||||
|
||||
/* Set up MO data */
|
||||
rc = qmckl_set_mo_basis_type(context, typ);
|
||||
assert (rc == QMCKL_SUCCESS);
|
||||
|
||||
const int64_t mo_num = chbrclf_mo_num;
|
||||
rc = qmckl_set_mo_basis_mo_num(context, mo_num);
|
||||
assert (rc == QMCKL_SUCCESS);
|
||||
@ -827,13 +842,16 @@ printf("\n");
|
||||
|
||||
#+end_src
|
||||
|
||||
|
||||
* End of files :noexport:
|
||||
|
||||
#+begin_src c :tangle (eval h_private_type)
|
||||
#endif
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :tangle (eval h_private_func)
|
||||
#endif
|
||||
#+end_src
|
||||
|
||||
*** Test
|
||||
#+begin_src c :tangle (eval c_test)
|
||||
rc = qmckl_context_destroy(context);
|
||||
|
@ -10,6 +10,11 @@ All the data relative to the molecular geometry is described here.
|
||||
#+end_src
|
||||
|
||||
|
||||
#+begin_src c :tangle (eval h_private_func)
|
||||
#ifndef QMCKL_NUCLEUS_HPF
|
||||
#define QMCKL_NUCLEUS_HPF
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :tangle (eval h_private_type)
|
||||
#ifndef QMCKL_NUCLEUS_HPT
|
||||
#define QMCKL_NUCLEUS_HPT
|
||||
@ -1138,6 +1143,10 @@ assert(rep - 318.2309879436158 < 1.e-10);
|
||||
#endif
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :tangle (eval h_private_func)
|
||||
#endif
|
||||
#+end_src
|
||||
|
||||
*** Test
|
||||
#+begin_src c :tangle (eval c_test)
|
||||
if (qmckl_context_destroy(context) != QMCKL_SUCCESS)
|
||||
|
File diff suppressed because one or more lines are too long
@ -60058,8 +60058,8 @@ double chbrclf_elec_coord[chbrclf_walk_num][chbrclf_elec_num][3] = { {
|
||||
#+BEGIN_example
|
||||
2
|
||||
N2
|
||||
N 0.000000 0.000000 0.000000
|
||||
N 0.000000 0.000000 2.059801
|
||||
N 0.000000 0.000000 0.00
|
||||
N 0.000000 0.000000 1.09
|
||||
#+END_example
|
||||
|
||||
Nuclear coordinates are stored in atomic units in transposed format.
|
||||
|
1101
org/qmckl_trexio.org
Normal file
1101
org/qmckl_trexio.org
Normal file
File diff suppressed because it is too large
Load Diff
328
org/qmckl_verificarlo.org
Normal file
328
org/qmckl_verificarlo.org
Normal file
@ -0,0 +1,328 @@
|
||||
#+TITLE: Verificarlo CI
|
||||
#+SETUPFILE: ../tools/theme.setup
|
||||
#+INCLUDE: ../tools/lib.org
|
||||
|
||||
* Headers :noexport:
|
||||
|
||||
#+begin_src c :tangle (eval h_private_func)
|
||||
#ifndef QMCKL_VERIFICARLO_HPT
|
||||
#define QMCKL_VERIFICARLO_HPT
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
|
||||
#ifdef VFC_CI
|
||||
#include <vfc_probes.h>
|
||||
extern vfc_probes * probes;
|
||||
#endif
|
||||
|
||||
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :tangle (eval c)
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
|
||||
#ifdef VFC_CI
|
||||
#include <vfc_probes.h>
|
||||
vfc_probes probes;
|
||||
#else
|
||||
|
||||
/* Disable GCC warnings with unused variables */
|
||||
#ifdef __GNUC__
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wunused-parameter"
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#+end_src
|
||||
|
||||
* Verificarlo probes
|
||||
|
||||
This file contains utility functions to enable the Verificarlo
|
||||
Continuous Integration system (~VFC_CI~).
|
||||
|
||||
It is a wrapper to Verificarlo's ~vfc_probes~ system. The goal of QMCkl
|
||||
probes is to simplify the use of ~vfc_probes~, and to provide functions that
|
||||
can be called either with or without ~VFC_CI~ support by using ~#ifndef~
|
||||
statements :
|
||||
|
||||
- when ~VFC_CI~ is disabled, the functions will either return ~false~
|
||||
(no error) or perform a check based on a reference value
|
||||
|
||||
- when ~VFC_CI~ is enabled, the functions will simply encapsulate
|
||||
calls to ~vfc_probe~.
|
||||
|
||||
Moreover, one does not have to worry about the life cycle of the probes
|
||||
structure, as it is automatically created, dumped and freed by this wrapper.
|
||||
|
||||
~VFC_CI~ support can be enabled by using the following configure command :
|
||||
|
||||
#+begin_src bash
|
||||
QMCKL_DEVEL=1 ./configure --prefix=$PWD/_install --enable-silent-rules \
|
||||
--enable-maintainer-mode CC=verificarlo-f FC=verificarlo-f --host=x86_64
|
||||
#+end_src
|
||||
|
||||
Finally, this wrapper also comes with a Fortran interface (in its dedicated
|
||||
file).
|
||||
|
||||
To learn more about Verificarlo CI :
|
||||
https://github.com/verificarlo/verificarlo/blob/master/doc/06-Postprocessing.md#verificarlo-ci
|
||||
|
||||
|
||||
** Automatically initialize the ~vfc_probe~ object if ~VFC_CI~ is defined
|
||||
|
||||
#+begin_src c :tangle (eval h_private_func)
|
||||
#ifdef VFC_CI
|
||||
void qmckl_init_probes() __attribute__((constructor));
|
||||
#endif
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :tangle (eval c)
|
||||
#ifdef VFC_CI
|
||||
void __attribute__((constructor)) qmckl_init_probes(){
|
||||
probes = vfc_init_probes();
|
||||
}
|
||||
#endif
|
||||
#+end_src
|
||||
|
||||
** Standard probe, without check
|
||||
|
||||
- if ~VFC_CI~ is defined, place a standard probe
|
||||
- if ~VFC_CI~ is undefined, return ~false~ (no error)
|
||||
|
||||
#+begin_src c :tangle (eval h_private_func)
|
||||
bool qmckl_probe(
|
||||
char * testName,
|
||||
char * varName,
|
||||
double value
|
||||
);
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :tangle (eval c)
|
||||
bool qmckl_probe(
|
||||
char * testName,
|
||||
char * varName,
|
||||
double value)
|
||||
{
|
||||
#ifdef VFC_CI
|
||||
return vfc_probe(&probes, testName, varName, value);
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
#+end_src
|
||||
|
||||
** Probe with absolute check
|
||||
|
||||
- if ~VFC_CI~ is defined, place a probe with an absolute check
|
||||
- if ~VFC_CI~ is undefined, perform an absolute check based on target value
|
||||
and accuracy
|
||||
|
||||
#+begin_src c :tangle (eval h_private_func)
|
||||
bool qmckl_probe_check(
|
||||
char * testName,
|
||||
char * varName,
|
||||
double value,
|
||||
double expectedValue,
|
||||
double accuracyTarget
|
||||
);
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :tangle (eval c)
|
||||
bool qmckl_probe_check(
|
||||
char * testName,
|
||||
char * varName,
|
||||
double value,
|
||||
double expectedValue,
|
||||
double accuracyTarget)
|
||||
{
|
||||
#ifdef VFC_CI
|
||||
return vfc_probe_check(&probes, testName, varName, value, accuracyTarget);
|
||||
#else
|
||||
return !(fabs(value - expectedValue) < accuracyTarget);
|
||||
#endif
|
||||
}
|
||||
#+end_src
|
||||
|
||||
** Probe with relative check
|
||||
|
||||
- if ~VFC_CI~ is defined, place a probe with a relative check
|
||||
- if ~VFC_CI~ is undefined, perform a relative check based on target value
|
||||
and accuracy
|
||||
|
||||
#+begin_src c :tangle (eval h_private_func)
|
||||
bool qmckl_probe_check_relative(
|
||||
char * testName,
|
||||
char * varName,
|
||||
double value,
|
||||
double expectedValue,
|
||||
double accuracyTarget
|
||||
);
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :tangle (eval c)
|
||||
bool qmckl_probe_check_relative (
|
||||
char * testName,
|
||||
char * varName,
|
||||
double value,
|
||||
double expectedValue,
|
||||
double accuracyTarget)
|
||||
{
|
||||
#ifdef VFC_CI
|
||||
return vfc_probe_check_relative(&probes, testName, varName, value, accuracyTarget);
|
||||
#else
|
||||
return !(fabs(value - expectedValue) / fabs(expectedValue) < accuracyTarget);
|
||||
#endif
|
||||
}
|
||||
#+end_src
|
||||
|
||||
** Automatically delete and dump the vfc_probe object if ~VFC_CI~ is defined
|
||||
|
||||
#+begin_src c :tangle (eval h_private_func)
|
||||
#ifdef VFC_CI
|
||||
void qmckl_dump_probes() __attribute__((destructor));
|
||||
#endif
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :tangle (eval c)
|
||||
#ifdef VFC_CI
|
||||
void __attribute__((destructor)) qmckl_dump_probes(){
|
||||
vfc_dump_probes(&probes);
|
||||
}
|
||||
#endif
|
||||
#+end_src
|
||||
|
||||
* Fortran wrappers
|
||||
|
||||
#+begin_src c :tangle (eval h_private_func)
|
||||
bool qmckl_probe_f(
|
||||
char * testName,
|
||||
char * varName,
|
||||
double * value
|
||||
);
|
||||
|
||||
bool qmckl_probe_check_f(
|
||||
char * testName,
|
||||
char * varName,
|
||||
double * value,
|
||||
double * expectedValue,
|
||||
double * accuracyTarget
|
||||
);
|
||||
|
||||
|
||||
bool qmckl_probe_check_relative_f(
|
||||
char * testName,
|
||||
char * varName,
|
||||
double * value,
|
||||
double * expectedValue,
|
||||
double * accuracyTarget
|
||||
);
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :tangle (eval c)
|
||||
bool qmckl_probe_f(
|
||||
char * testName,
|
||||
char * varName,
|
||||
double * value)
|
||||
{
|
||||
return qmckl_probe(testName, varName, *value);
|
||||
}
|
||||
|
||||
|
||||
bool qmckl_probe_check_f(
|
||||
char * testName,
|
||||
char * varName,
|
||||
double * value,
|
||||
double * expectedValue,
|
||||
double * accuracyTarget)
|
||||
{
|
||||
return qmckl_probe_check(
|
||||
testName, varName,
|
||||
,*value, *expectedValue, *accuracyTarget
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
bool qmckl_probe_check_relative_f(
|
||||
char * testName,
|
||||
char * varName,
|
||||
double * value,
|
||||
double * expectedValue,
|
||||
double * accuracyTarget)
|
||||
{
|
||||
return qmckl_probe_check_relative(
|
||||
testName, varName,
|
||||
,*value, *expectedValue, *accuracyTarget
|
||||
);
|
||||
}
|
||||
#+end_src
|
||||
|
||||
#+begin_src f90 :tangle (eval f)
|
||||
module qmckl_verificarlo_f
|
||||
interface
|
||||
logical(c_bool) function qmckl_probe &
|
||||
(testName, varName, val) &
|
||||
bind(C, name="qmckl_probe_f")
|
||||
|
||||
use, intrinsic :: iso_c_binding
|
||||
import
|
||||
implicit none
|
||||
|
||||
character(C_CHAR), dimension(*) :: testName
|
||||
character(C_CHAR), dimension(*) :: varName
|
||||
|
||||
real(C_DOUBLE) :: val
|
||||
end function qmckl_probe
|
||||
|
||||
logical(c_bool) function qmckl_probe_check &
|
||||
(testName, varName, val, expectedValue, accuracyTarget) &
|
||||
bind(C, name="qmckl_probe_check_f")
|
||||
|
||||
use, intrinsic :: iso_c_binding
|
||||
import
|
||||
implicit none
|
||||
|
||||
character(C_CHAR), dimension(*) :: testName
|
||||
character(C_CHAR), dimension(*) :: varName
|
||||
|
||||
real(C_DOUBLE) :: val
|
||||
real(C_DOUBLE) :: expectedValue
|
||||
real(C_DOUBLE) :: accuracyTarget
|
||||
end function qmckl_probe_check
|
||||
|
||||
logical(c_bool) function qmckl_probe_check_relative &
|
||||
(testName, varName, val, expectedValue, accuracyTarget) &
|
||||
bind(C, name="qmckl_probe_check_relative_f")
|
||||
|
||||
use, intrinsic :: iso_c_binding
|
||||
import
|
||||
implicit none
|
||||
|
||||
character(C_CHAR), dimension(*) :: testName
|
||||
character(C_CHAR), dimension(*) :: varName
|
||||
|
||||
real(C_DOUBLE) :: val
|
||||
real(C_DOUBLE) :: expectedValue
|
||||
real(C_DOUBLE) :: accuracyTarget
|
||||
end function qmckl_probe_check_relative
|
||||
end interface
|
||||
end module qmckl_verificarlo_f
|
||||
#+end_src
|
||||
|
||||
* End of files :noexport:
|
||||
|
||||
#+begin_src c :tangle (eval c)
|
||||
#ifndef VFC_CI
|
||||
#ifdef __GNUC__
|
||||
#pragma GCC diagnostic pop
|
||||
#endif
|
||||
#endif
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :comments link :tangle (eval h_private_func)
|
||||
#endif
|
||||
#+end_src
|
@ -3,13 +3,15 @@ qmckl_error.org
|
||||
qmckl_context.org
|
||||
qmckl_memory.org
|
||||
qmckl_numprec.org
|
||||
qmckl_distance.org
|
||||
qmckl_nucleus.org
|
||||
qmckl_electron.org
|
||||
qmckl_ao.org
|
||||
qmckl_mo.org
|
||||
qmckl_jastrow.org
|
||||
qmckl_sherman_morrison_woodbury.org
|
||||
qmckl_distance.org
|
||||
qmckl_utils.org
|
||||
qmckl_blas.org
|
||||
qmckl_trexio.org
|
||||
qmckl_verificarlo.org
|
||||
qmckl_tests.org
|
||||
|
0
share/qmckl/test_data/be2/.lock
Normal file
0
share/qmckl/test_data/be2/.lock
Normal file
70
share/qmckl/test_data/be2/ao.txt
Normal file
70
share/qmckl/test_data/be2/ao.txt
Normal file
@ -0,0 +1,70 @@
|
||||
rank_ao_shell 1
|
||||
dims_ao_shell 0 30
|
||||
rank_ao_normalization 1
|
||||
dims_ao_normalization 0 30
|
||||
ao_cartesian_isSet 1
|
||||
ao_cartesian 1
|
||||
ao_num_isSet 1
|
||||
ao_num 30
|
||||
ao_shell
|
||||
0
|
||||
1
|
||||
2
|
||||
3
|
||||
3
|
||||
3
|
||||
4
|
||||
4
|
||||
4
|
||||
5
|
||||
5
|
||||
5
|
||||
5
|
||||
5
|
||||
5
|
||||
6
|
||||
7
|
||||
8
|
||||
9
|
||||
9
|
||||
9
|
||||
10
|
||||
10
|
||||
10
|
||||
11
|
||||
11
|
||||
11
|
||||
11
|
||||
11
|
||||
11
|
||||
ao_normalization
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000002e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.7320508075688772e+00
|
||||
1.7320508075688767e+00
|
||||
9.9999999999999978e-01
|
||||
1.7320508075688772e+00
|
||||
9.9999999999999978e-01
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000002e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.7320508075688776e+00
|
||||
1.7320508075688772e+00
|
||||
1.0000000000000000e+00
|
||||
1.7320508075688776e+00
|
||||
1.0000000000000000e+00
|
3620
share/qmckl/test_data/be2/ao_1e_int.txt
Normal file
3620
share/qmckl/test_data/be2/ao_1e_int.txt
Normal file
File diff suppressed because it is too large
Load Diff
236
share/qmckl/test_data/be2/basis.txt
Normal file
236
share/qmckl/test_data/be2/basis.txt
Normal file
@ -0,0 +1,236 @@
|
||||
rank_basis_nucleus_index 1
|
||||
dims_basis_nucleus_index 0 2
|
||||
rank_basis_nucleus_shell_num 1
|
||||
dims_basis_nucleus_shell_num 0 2
|
||||
rank_basis_shell_ang_mom 1
|
||||
dims_basis_shell_ang_mom 0 12
|
||||
rank_basis_shell_prim_num 1
|
||||
dims_basis_shell_prim_num 0 12
|
||||
rank_basis_shell_factor 1
|
||||
dims_basis_shell_factor 0 12
|
||||
rank_basis_shell_prim_index 1
|
||||
dims_basis_shell_prim_index 0 12
|
||||
rank_basis_exponent 1
|
||||
dims_basis_exponent 0 50
|
||||
rank_basis_coefficient 1
|
||||
dims_basis_coefficient 0 50
|
||||
rank_basis_prim_factor 1
|
||||
dims_basis_prim_factor 0 50
|
||||
basis_num_isSet 1
|
||||
basis_num 12
|
||||
basis_prim_num_isSet 1
|
||||
basis_prim_num 50
|
||||
len_basis_type 9
|
||||
basis_type
|
||||
Gaussian
|
||||
basis_nucleus_index
|
||||
0
|
||||
6
|
||||
basis_nucleus_shell_num
|
||||
6
|
||||
6
|
||||
basis_shell_ang_mom
|
||||
0
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
2
|
||||
0
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
2
|
||||
basis_shell_prim_num
|
||||
9
|
||||
9
|
||||
1
|
||||
4
|
||||
1
|
||||
1
|
||||
9
|
||||
9
|
||||
1
|
||||
4
|
||||
1
|
||||
1
|
||||
basis_shell_factor
|
||||
9.9999971897081508e-01
|
||||
9.9999963111699008e-01
|
||||
1.0000000000000000e+00
|
||||
1.0000002163655846e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000002e+00
|
||||
9.9999971897081508e-01
|
||||
9.9999963111699008e-01
|
||||
1.0000000000000000e+00
|
||||
1.0000002163655846e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000002e+00
|
||||
basis_shell_prim_index
|
||||
0
|
||||
9
|
||||
18
|
||||
19
|
||||
23
|
||||
24
|
||||
25
|
||||
34
|
||||
43
|
||||
44
|
||||
48
|
||||
49
|
||||
basis_exponent
|
||||
2.9400000000000000e+03
|
||||
4.4119999999999999e+02
|
||||
1.0050000000000000e+02
|
||||
2.8430000000000000e+01
|
||||
9.1690000000000005e+00
|
||||
3.1960000000000002e+00
|
||||
1.1590000000000000e+00
|
||||
1.8110000000000001e-01
|
||||
5.8900000000000001e-02
|
||||
2.9400000000000000e+03
|
||||
4.4119999999999999e+02
|
||||
1.0050000000000000e+02
|
||||
2.8430000000000000e+01
|
||||
9.1690000000000005e+00
|
||||
3.1960000000000002e+00
|
||||
1.1590000000000000e+00
|
||||
1.8110000000000001e-01
|
||||
5.8900000000000001e-02
|
||||
5.8900000000000001e-02
|
||||
3.6190000000000002e+00
|
||||
7.1099999999999997e-01
|
||||
1.9510000000000000e-01
|
||||
6.0179999999999997e-02
|
||||
6.0179999999999997e-02
|
||||
2.3540000000000000e-01
|
||||
2.9400000000000000e+03
|
||||
4.4119999999999999e+02
|
||||
1.0050000000000000e+02
|
||||
2.8430000000000000e+01
|
||||
9.1690000000000005e+00
|
||||
3.1960000000000002e+00
|
||||
1.1590000000000000e+00
|
||||
1.8110000000000001e-01
|
||||
5.8900000000000001e-02
|
||||
2.9400000000000000e+03
|
||||
4.4119999999999999e+02
|
||||
1.0050000000000000e+02
|
||||
2.8430000000000000e+01
|
||||
9.1690000000000005e+00
|
||||
3.1960000000000002e+00
|
||||
1.1590000000000000e+00
|
||||
1.8110000000000001e-01
|
||||
5.8900000000000001e-02
|
||||
5.8900000000000001e-02
|
||||
3.6190000000000002e+00
|
||||
7.1099999999999997e-01
|
||||
1.9510000000000000e-01
|
||||
6.0179999999999997e-02
|
||||
6.0179999999999997e-02
|
||||
2.3540000000000000e-01
|
||||
basis_coefficient
|
||||
6.8000000000000005e-04
|
||||
5.2360000000000002e-03
|
||||
2.6606000000000001e-02
|
||||
9.9992999999999999e-02
|
||||
2.6970200000000000e-01
|
||||
4.5146900000000001e-01
|
||||
2.9507400000000000e-01
|
||||
1.2586999999999999e-02
|
||||
-3.7559999999999998e-03
|
||||
-1.2300000000000001e-04
|
||||
-9.6599999999999995e-04
|
||||
-4.8310000000000002e-03
|
||||
-1.9314000000000001e-02
|
||||
-5.3280000000000001e-02
|
||||
-1.2072300000000000e-01
|
||||
-1.3343500000000000e-01
|
||||
5.3076699999999999e-01
|
||||
5.8011699999999999e-01
|
||||
1.0000000000000000e+00
|
||||
2.9111000000000001e-02
|
||||
1.6936499999999999e-01
|
||||
5.1345799999999997e-01
|
||||
4.7933799999999999e-01
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
6.8000000000000005e-04
|
||||
5.2360000000000002e-03
|
||||
2.6606000000000001e-02
|
||||
9.9992999999999999e-02
|
||||
2.6970200000000000e-01
|
||||
4.5146900000000001e-01
|
||||
2.9507400000000000e-01
|
||||
1.2586999999999999e-02
|
||||
-3.7559999999999998e-03
|
||||
-1.2300000000000001e-04
|
||||
-9.6599999999999995e-04
|
||||
-4.8310000000000002e-03
|
||||
-1.9314000000000001e-02
|
||||
-5.3280000000000001e-02
|
||||
-1.2072300000000000e-01
|
||||
-1.3343500000000000e-01
|
||||
5.3076699999999999e-01
|
||||
5.8011699999999999e-01
|
||||
1.0000000000000000e+00
|
||||
2.9111000000000001e-02
|
||||
1.6936499999999999e-01
|
||||
5.1345799999999997e-01
|
||||
4.7933799999999999e-01
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
basis_prim_factor
|
||||
2.8455786257606746e+02
|
||||
6.8609889528700521e+01
|
||||
2.2622189630797177e+01
|
||||
8.7749113372175405e+00
|
||||
3.7553599626065184e+00
|
||||
1.7035903455455901e+00
|
||||
7.9610924849766440e-01
|
||||
1.9785586566953522e-01
|
||||
8.5211176837619682e-02
|
||||
2.8455786257606746e+02
|
||||
6.8609889528700521e+01
|
||||
2.2622189630797177e+01
|
||||
8.7749113372175405e+00
|
||||
3.7553599626065184e+00
|
||||
1.7035903455455901e+00
|
||||
7.9610924849766440e-01
|
||||
1.9785586566953522e-01
|
||||
8.5211176837619682e-02
|
||||
8.5211176837619682e-02
|
||||
7.1150149470514927e+00
|
||||
9.3063008649662049e-01
|
||||
1.8482540845270204e-01
|
||||
4.2486926670212505e-02
|
||||
4.2486926670212505e-02
|
||||
1.3093952423233909e-01
|
||||
2.8455786257606746e+02
|
||||
6.8609889528700521e+01
|
||||
2.2622189630797177e+01
|
||||
8.7749113372175405e+00
|
||||
3.7553599626065184e+00
|
||||
1.7035903455455901e+00
|
||||
7.9610924849766440e-01
|
||||
1.9785586566953522e-01
|
||||
8.5211176837619682e-02
|
||||
2.8455786257606746e+02
|
||||
6.8609889528700521e+01
|
||||
2.2622189630797177e+01
|
||||
8.7749113372175405e+00
|
||||
3.7553599626065184e+00
|
||||
1.7035903455455901e+00
|
||||
7.9610924849766440e-01
|
||||
1.9785586566953522e-01
|
||||
8.5211176837619682e-02
|
||||
8.5211176837619682e-02
|
||||
7.1150149470514927e+00
|
||||
9.3063008649662049e-01
|
||||
1.8482540845270204e-01
|
||||
4.2486926670212505e-02
|
||||
4.2486926670212505e-02
|
||||
1.3093952423233909e-01
|
4
share/qmckl/test_data/be2/electron.txt
Normal file
4
share/qmckl/test_data/be2/electron.txt
Normal file
@ -0,0 +1,4 @@
|
||||
electron_up_num_isSet 1
|
||||
electron_up_num 4
|
||||
electron_dn_num_isSet 1
|
||||
electron_dn_num 4
|
11
share/qmckl/test_data/be2/metadata.txt
Normal file
11
share/qmckl/test_data/be2/metadata.txt
Normal file
@ -0,0 +1,11 @@
|
||||
rank_metadata_code 0
|
||||
rank_metadata_author 0
|
||||
metadata_code_num_isSet 0
|
||||
metadata_author_num_isSet 0
|
||||
len_metadata_package_version 6
|
||||
metadata_package_version
|
||||
1.1.0
|
||||
len_metadata_description 0
|
||||
metadata_description
|
||||
metadata_code
|
||||
metadata_author
|
854
share/qmckl/test_data/be2/mo.txt
Normal file
854
share/qmckl/test_data/be2/mo.txt
Normal file
@ -0,0 +1,854 @@
|
||||
rank_mo_coefficient 2
|
||||
dims_mo_coefficient 0 28
|
||||
dims_mo_coefficient 1 30
|
||||
rank_mo_occupation 0
|
||||
rank_mo_class 0
|
||||
rank_mo_symmetry 0
|
||||
mo_num_isSet 1
|
||||
mo_num 28
|
||||
len_mo_type 0
|
||||
mo_type
|
||||
mo_coefficient
|
||||
-7.0721075166082403e-01
|
||||
-8.4640142220538696e-04
|
||||
2.9398577074268899e-04
|
||||
2.4383493049404299e-10
|
||||
2.2224952220095200e-10
|
||||
2.7989678358100701e-04
|
||||
-2.6329911213756698e-10
|
||||
-2.2904776108994999e-10
|
||||
-4.1344564092538202e-04
|
||||
-5.7269518868910298e-05
|
||||
-1.4534593577561000e-18
|
||||
1.3575686263628201e-11
|
||||
-5.7269518868925802e-05
|
||||
9.2284264952617201e-12
|
||||
1.1453903773783699e-04
|
||||
-7.0721075166061498e-01
|
||||
-8.4640137486997598e-04
|
||||
2.9398147898855202e-04
|
||||
-1.5386527980984601e-10
|
||||
-5.7381766191219903e-11
|
||||
-2.7989467487437902e-04
|
||||
2.0567257857029200e-10
|
||||
1.0069577755683501e-10
|
||||
4.1344292069720498e-04
|
||||
-5.7269890490102097e-05
|
||||
9.4846217292739991e-19
|
||||
-3.1091800440165801e-12
|
||||
-5.7269890490100898e-05
|
||||
-1.8692448451225200e-12
|
||||
1.1453978098020499e-04
|
||||
7.0755922441833596e-01
|
||||
2.3295864170073300e-03
|
||||
-4.5739491884162096e-03
|
||||
1.6792264360620400e-10
|
||||
1.7374668227397101e-10
|
||||
-1.4548032295907600e-03
|
||||
-1.6381999029192999e-10
|
||||
-1.7763418845587500e-10
|
||||
2.4599715411151202e-03
|
||||
-2.7013636561849401e-04
|
||||
-8.6882900914044800e-17
|
||||
-6.5219039915486296e-12
|
||||
-2.7013636561821298e-04
|
||||
-3.3846199538894199e-12
|
||||
5.4027273123671198e-04
|
||||
-7.0755922403196403e-01
|
||||
-2.3295864726529500e-03
|
||||
4.5739492173190099e-03
|
||||
-7.4629646084024303e-11
|
||||
-1.3959225482197400e-10
|
||||
-1.4548034467005500e-03
|
||||
7.5727411712699505e-11
|
||||
1.4538554754373699e-10
|
||||
2.4599717569785502e-03
|
||||
2.7013634642488501e-04
|
||||
8.9010856268087394e-17
|
||||
4.3478623902606402e-13
|
||||
2.7013634642482598e-04
|
||||
-8.3946884468938404e-13
|
||||
-5.4027269284971505e-04
|
||||
1.8814332337444600e-03
|
||||
7.0971366351881204e-01
|
||||
-1.4511148101077900e-01
|
||||
4.8207867186895403e-10
|
||||
7.9122938106352503e-10
|
||||
-1.5746929814788699e-01
|
||||
-5.5078352728447900e-10
|
||||
-9.2179922719884896e-10
|
||||
6.1723070208405902e-02
|
||||
-8.7948100624307603e-03
|
||||
1.1525644357643800e-16
|
||||
8.6298754385290092e-12
|
||||
-8.7948100624306406e-03
|
||||
1.9541883824831700e-11
|
||||
1.7589620124861399e-02
|
||||
1.8814332463198500e-03
|
||||
7.0971366352465404e-01
|
||||
-1.4511148099536200e-01
|
||||
-3.5283627986359002e-10
|
||||
-7.1699840235555201e-10
|
||||
1.5746929821713601e-01
|
||||
4.3431941416993903e-10
|
||||
8.5728180996150101e-10
|
||||
-6.1723070244456300e-02
|
||||
-8.7948100729340600e-03
|
||||
-1.9032973973149101e-17
|
||||
1.3494647445894400e-11
|
||||
-8.7948100729343098e-03
|
||||
2.0302916883829999e-11
|
||||
1.7589620145868401e-02
|
||||
-2.7094045638340202e-03
|
||||
6.8362376295314298e-01
|
||||
1.5764087330816101e-01
|
||||
2.2956440424847301e-11
|
||||
2.1768179290555201e-10
|
||||
1.4403529789410299e-01
|
||||
-3.3895539553199502e-11
|
||||
-2.6244915057405802e-10
|
||||
-2.6279053302808001e-02
|
||||
6.9131665678477897e-03
|
||||
-4.4851569673813903e-17
|
||||
2.5807996521048300e-12
|
||||
6.9131665678479398e-03
|
||||
7.2465613130679097e-12
|
||||
-1.3826333135695699e-02
|
||||
2.7094066156690901e-03
|
||||
-6.8362376293454497e-01
|
||||
-1.5764087331776300e-01
|
||||
-3.9610655163515502e-11
|
||||
-2.2523636301667499e-10
|
||||
1.4403529793836400e-01
|
||||
4.9319263329388902e-11
|
||||
2.6928031034895902e-10
|
||||
-2.6279053347162001e-02
|
||||
-6.9131665638129001e-03
|
||||
6.8033103805249899e-18
|
||||
1.5976349822409799e-12
|
||||
-6.9131665638129400e-03
|
||||
6.9420854729237001e-12
|
||||
1.3826333127625800e-02
|
||||
2.6169223221624700e-02
|
||||
3.3928126066295097e-02
|
||||
-3.7131325682296401e-01
|
||||
-3.8054943571425903e-11
|
||||
-9.7219511495836006e-11
|
||||
-4.8414296655770400e-01
|
||||
3.6637887649198898e-11
|
||||
1.1042518972448299e-10
|
||||
-1.8915347847529701e-01
|
||||
-7.7446607959373703e-03
|
||||
5.8352709498152800e-16
|
||||
1.9206658837610000e-12
|
||||
-7.7446607959373703e-03
|
||||
-1.3625485197316100e-12
|
||||
1.5489321591874701e-02
|
||||
2.6169223260136699e-02
|
||||
3.3928126053263799e-02
|
||||
-3.7131325685442101e-01
|
||||
-2.1555478878464700e-11
|
||||
7.1826453231289794e-11
|
||||
4.8414296654170202e-01
|
||||
1.8909767099903602e-11
|
||||
-8.7187669194950602e-11
|
||||
1.8915347846135699e-01
|
||||
-7.7446607910455099e-03
|
||||
-4.3781226047057002e-18
|
||||
-1.8910007914556899e-12
|
||||
-7.7446607910465603e-03
|
||||
-2.6225886213881401e-12
|
||||
1.5489321582092101e-02
|
||||
1.5436838988382599e-10
|
||||
6.8441106343283396e-10
|
||||
-6.5032696723372503e-10
|
||||
-2.9395717785548697e-01
|
||||
-1.9340252842475100e-01
|
||||
-1.6245257273823701e-10
|
||||
-2.1973031423966000e-01
|
||||
-1.4456662924903399e-01
|
||||
2.5750172905065701e-10
|
||||
-1.6288544527154100e-11
|
||||
-4.1536972840299702e-18
|
||||
1.3763627299460800e-02
|
||||
-1.6288473027628201e-11
|
||||
9.0554697097865108e-03
|
||||
3.2577017554782297e-11
|
||||
1.5437714184527701e-10
|
||||
6.8618453792743297e-10
|
||||
-6.4581905028750498e-10
|
||||
-2.9395717785548697e-01
|
||||
-1.9340252842475000e-01
|
||||
1.7553866368799799e-10
|
||||
-2.1973031423966000e-01
|
||||
-1.4456662924903499e-01
|
||||
-2.6303964545136302e-10
|
||||
-1.8414402314252599e-11
|
||||
4.6419474571672102e-17
|
||||
-1.3763627299460700e-02
|
||||
-1.8414350219599801e-11
|
||||
-9.0554697097869601e-03
|
||||
3.6828752533852403e-11
|
||||
3.5405233911983103e-11
|
||||
1.5935657539442099e-10
|
||||
-1.5126520035363701e-10
|
||||
1.9340252842944800e-01
|
||||
-2.9395717785857800e-01
|
||||
-3.7911107547901000e-11
|
||||
1.4456662924521399e-01
|
||||
-2.1973031423714701e-01
|
||||
5.9907713049249294e-11
|
||||
-3.8167421437344899e-12
|
||||
-6.2092957790451899e-16
|
||||
-9.0554697096083808e-03
|
||||
-3.8164920727211203e-12
|
||||
1.3763627299345100e-02
|
||||
7.6332342164556207e-12
|
||||
3.5407034149459198e-11
|
||||
1.5972108841729900e-10
|
||||
-1.5033500951526601e-10
|
||||
1.9340252842944899e-01
|
||||
-2.9395717785857700e-01
|
||||
4.0610695347977600e-11
|
||||
1.4456662924521499e-01
|
||||
-2.1973031423714801e-01
|
||||
-6.1051179612880696e-11
|
||||
-4.2549068865860598e-12
|
||||
2.7731374944621400e-16
|
||||
9.0554697096091805e-03
|
||||
-4.2552184547439697e-12
|
||||
-1.3763627299342799e-02
|
||||
8.5101253413300400e-12
|
||||
9.7418392979351705e-11
|
||||
3.9142762782931900e-10
|
||||
-3.8904596633517501e-10
|
||||
2.5873597137038701e-01
|
||||
2.3457640234950300e-01
|
||||
-8.9040071713990102e-11
|
||||
4.7991586834189798e-01
|
||||
4.3510354292653503e-01
|
||||
1.5393068037422900e-10
|
||||
-8.6634539764106500e-12
|
||||
3.5283381913778500e-16
|
||||
3.1183292788531198e-03
|
||||
-8.6637979643128103e-12
|
||||
2.8271541049970802e-03
|
||||
1.7327251940723501e-11
|
||||
5.8168952994990298e-11
|
||||
4.0339224634320402e-10
|
||||
-3.6031660338831398e-10
|
||||
-2.5873597137038501e-01
|
||||
-2.3457640234950200e-01
|
||||
9.5683928876472000e-11
|
||||
-4.7991586834189898e-01
|
||||
-4.3510354292653602e-01
|
||||
-1.3563900822968601e-10
|
||||
-1.2077935726964100e-11
|
||||
-1.8742165367917301e-16
|
||||
3.1183292788532499e-03
|
||||
-1.2077878492649799e-11
|
||||
2.8271541049970901e-03
|
||||
2.4155814219613901e-11
|
||||
6.7284214528756196e-12
|
||||
2.9159091384607802e-11
|
||||
-2.8458572011697100e-11
|
||||
-2.3457640234507701e-01
|
||||
2.5873597136637000e-01
|
||||
-6.7812590869932097e-12
|
||||
-4.3510354293083198e-01
|
||||
4.7991586834579603e-01
|
||||
1.1271018818141100e-11
|
||||
-6.7531177632150998e-13
|
||||
2.0754716138464700e-16
|
||||
-2.8271541051292401e-03
|
||||
-6.7555279009878003e-13
|
||||
3.1183292789718200e-03
|
||||
1.3508645664202900e-12
|
||||
4.8050539944224999e-12
|
||||
2.9740881248678898e-11
|
||||
-2.7050139893577999e-11
|
||||
2.3457640234507601e-01
|
||||
-2.5873597136637400e-01
|
||||
7.0997996742925101e-12
|
||||
4.3510354293083098e-01
|
||||
-4.7991586834579297e-01
|
||||
-1.0372309818446899e-11
|
||||
-8.4225570578491804e-13
|
||||
-1.1301843461542301e-16
|
||||
-2.8271541051277599e-03
|
||||
-8.4205190976517805e-13
|
||||
3.1183292789727000e-03
|
||||
1.6843076155501000e-12
|
||||
-2.5176096446687900e-02
|
||||
3.2774465158704102e-01
|
||||
2.2724112596623400e+00
|
||||
-6.8613353667071494e-11
|
||||
-6.5077716028125494e-11
|
||||
-7.5326977570779205e-02
|
||||
6.6980134520377796e-11
|
||||
6.9850378741163298e-11
|
||||
-2.1073114917167000e+00
|
||||
-1.8684595323321600e-02
|
||||
-6.4094675263288804e-17
|
||||
3.7888042573808197e-12
|
||||
-1.8684595323321201e-02
|
||||
8.5745846931191503e-13
|
||||
3.7369190646642798e-02
|
||||
2.5176096778021101e-02
|
||||
-3.2774465158178201e-01
|
||||
-2.2724112596647998e+00
|
||||
-2.4710382631654201e-11
|
||||
3.1688598708784197e-11
|
||||
-7.5326977541818496e-02
|
||||
2.1302574147714999e-11
|
||||
-3.8163446525789200e-11
|
||||
-2.1073114917456000e+00
|
||||
1.8684595325887000e-02
|
||||
1.2104132960099100e-16
|
||||
-3.3089349417006402e-12
|
||||
1.8684595325886798e-02
|
||||
-1.7687455406517800e-12
|
||||
-3.7369190651773902e-02
|
||||
-4.0136890502691402e-01
|
||||
-2.0484865988120000e+00
|
||||
1.9290087660434900e+00
|
||||
-1.5255940559589300e-10
|
||||
-1.1534206411468899e-10
|
||||
4.9597491029698398e-01
|
||||
1.9691808455836300e-10
|
||||
1.4209490083669801e-10
|
||||
-7.6535834916269097e-01
|
||||
5.1442316980158699e-02
|
||||
5.6652899273718298e-17
|
||||
-1.1696674868144900e-11
|
||||
5.1442316980158997e-02
|
||||
-6.0194440436725501e-12
|
||||
-1.0288463396031799e-01
|
||||
-4.0136890506638001e-01
|
||||
-2.0484865988013401e+00
|
||||
1.9290087660688300e+00
|
||||
2.9330987178913700e-10
|
||||
1.6298981098252599e-10
|
||||
-4.9597491030052798e-01
|
||||
-6.1497325214211903e-10
|
||||
-4.8679973082333303e-10
|
||||
7.6535834918539902e-01
|
||||
5.1442316978386998e-02
|
||||
3.6085540934624898e-17
|
||||
-5.1287403356897098e-13
|
||||
5.1442316978387199e-02
|
||||
-1.7807743229235301e-12
|
||||
-1.0288463395677400e-01
|
||||
2.1033019289790500e-01
|
||||
1.2697223826999899e+00
|
||||
-1.3982628680377001e+00
|
||||
1.6310638156003901e-10
|
||||
1.6518658352552201e-10
|
||||
1.0299318537464099e+00
|
||||
-1.9865612998472701e-10
|
||||
-1.9418477121877900e-10
|
||||
-1.1695812534093799e+00
|
||||
1.3145488154253400e-02
|
||||
-6.8623569595889600e-17
|
||||
8.5776931755697107e-12
|
||||
1.3145488154253300e-02
|
||||
5.6577262870788797e-12
|
||||
-2.6290976308506801e-02
|
||||
2.1033019281597901e-01
|
||||
1.2697223827284201e+00
|
||||
-1.3982628679689899e+00
|
||||
-2.4099332848813998e-10
|
||||
-1.8412126289776701e-10
|
||||
-1.0299318537071900e+00
|
||||
2.7418568296147999e-10
|
||||
2.1404612248438301e-10
|
||||
1.1695812534368399e+00
|
||||
1.3145488143007601e-02
|
||||
1.2006077474994700e-17
|
||||
1.0707933973629400e-12
|
||||
1.3145488143007700e-02
|
||||
2.5488093316238801e-12
|
||||
-2.6290976286015299e-02
|
||||
2.8417453260683301e-11
|
||||
-5.1743791910840100e-10
|
||||
5.3443319244642402e-10
|
||||
-1.2008183484013000e+00
|
||||
-4.3943075156660699e-01
|
||||
6.0135257130292405e-11
|
||||
1.1339180949585901e+00
|
||||
4.1494908979973499e-01
|
||||
-6.9861216666258398e-11
|
||||
8.1255573499297103e-12
|
||||
1.1515029506405300e-17
|
||||
8.9577336989961800e-02
|
||||
8.1254652480849700e-12
|
||||
3.2780175761273199e-02
|
||||
-1.6251022598014700e-11
|
||||
2.8447325101490599e-11
|
||||
-1.9714929400320900e-10
|
||||
1.8680836737754399e-10
|
||||
-1.2008183484013000e+00
|
||||
-4.3943075156660699e-01
|
||||
-1.6089681509883299e-11
|
||||
1.1339180949585901e+00
|
||||
4.1494908979973499e-01
|
||||
5.1217852728328897e-11
|
||||
9.7032581961001093e-13
|
||||
-1.4060439976460400e-18
|
||||
-8.9577336989961995e-02
|
||||
9.7026640372573801e-13
|
||||
-3.2780175761273102e-02
|
||||
-1.9405922233357598e-12
|
||||
1.2148954296671199e-11
|
||||
-9.9601290906686698e-11
|
||||
8.4681303499652098e-11
|
||||
4.3943075158579997e-01
|
||||
-1.2008183484083199e+00
|
||||
2.9201470802937101e-11
|
||||
-4.1494908981533701e-01
|
||||
1.1339180949643000e+00
|
||||
-3.4416520707022900e-11
|
||||
3.9049691465164500e-12
|
||||
-5.2205896098171798e-18
|
||||
-3.2780175760547203e-02
|
||||
3.9050231122230100e-12
|
||||
8.9577336989695500e-02
|
||||
-7.8099922587394592e-12
|
||||
1.2164311859731400e-11
|
||||
-9.6828000378008601e-11
|
||||
9.1715700033760000e-11
|
||||
4.3943075158580103e-01
|
||||
-1.2008183484083199e+00
|
||||
-8.7575777878504696e-12
|
||||
-4.1494908981533901e-01
|
||||
1.1339180949643000e+00
|
||||
2.5761265644784199e-11
|
||||
5.8398627909893700e-13
|
||||
-2.5122924909986502e-16
|
||||
3.2780175760546697e-02
|
||||
5.8428623966483504e-13
|
||||
-8.9577336989696096e-02
|
||||
-1.1682725187637699e-12
|
||||
-5.2500856688062801e-11
|
||||
1.1528502754095500e-09
|
||||
-6.4105219038733602e-10
|
||||
-1.2317724801889900e+00
|
||||
-5.8354969513373200e-01
|
||||
-5.0452486787729097e-11
|
||||
1.4525209636677900e+00
|
||||
6.8812883803959302e-01
|
||||
1.7028794905949300e-11
|
||||
-7.3354377899700995e-12
|
||||
2.8641277385968997e-17
|
||||
-3.2418128002569102e-02
|
||||
-7.3355582474280407e-12
|
||||
-1.5358021888295400e-02
|
||||
1.4670996037398101e-11
|
||||
9.1930780776897502e-11
|
||||
1.1077218478980699e-09
|
||||
-9.9013250391666602e-10
|
||||
1.2317724801889900e+00
|
||||
5.8354969513373200e-01
|
||||
2.6010923535908501e-11
|
||||
-1.4525209636677900e+00
|
||||
-6.8812883803959202e-01
|
||||
-8.4348180219857700e-11
|
||||
5.2275172418678799e-12
|
||||
-5.3705789528586900e-17
|
||||
-3.2418128002569199e-02
|
||||
5.2274138818148398e-12
|
||||
-1.5358021888295499e-02
|
||||
-1.0454931123682700e-11
|
||||
1.8217497441579499e-11
|
||||
-4.2821771990202798e-10
|
||||
1.6456367054240899e-11
|
||||
-5.8354969511265598e-01
|
||||
1.2317724801790000e+00
|
||||
1.8672191492390200e-11
|
||||
6.8812883801913705e-01
|
||||
-1.4525209636581000e+00
|
||||
-7.0921513549728897e-12
|
||||
2.6876320253004498e-12
|
||||
2.6506717230254200e-17
|
||||
-1.5358021888920400e-02
|
||||
2.6875184953851499e-12
|
||||
3.2418128002865497e-02
|
||||
-5.3751505206856098e-12
|
||||
-3.3357457536767801e-11
|
||||
-4.1210975726592101e-10
|
||||
3.6916099446356498e-10
|
||||
5.8354969511265498e-01
|
||||
-1.2317724801790000e+00
|
||||
-9.9432650706912908e-12
|
||||
-6.8812883801913705e-01
|
||||
1.4525209636581000e+00
|
||||
3.1131825955132600e-11
|
||||
-1.7987553779928500e-12
|
||||
-3.2622741677602497e-17
|
||||
-1.5358021888920799e-02
|
||||
-1.7988219706279299e-12
|
||||
3.2418128002865101e-02
|
||||
3.5975773486207698e-12
|
||||
-3.5176039875256399e-01
|
||||
-1.6897995997401500e+00
|
||||
2.8500768016438802e+00
|
||||
5.6644264747632401e-11
|
||||
7.3623850162506597e-11
|
||||
-1.0530616397612900e+00
|
||||
-5.5048547890554003e-11
|
||||
-8.0641232360870602e-11
|
||||
1.4349684097286500e-01
|
||||
5.5222187307343802e-02
|
||||
1.8731492197637699e-16
|
||||
-2.1530699621449499e-12
|
||||
5.5222187307343303e-02
|
||||
6.8619297331144399e-13
|
||||
-1.1044437461468699e-01
|
||||
3.5176039885864002e-01
|
||||
1.6897995997057500e+00
|
||||
-2.8500768016232199e+00
|
||||
3.4955535482365698e-11
|
||||
-2.9432601922521700e-11
|
||||
-1.0530616397553001e+00
|
||||
-2.9237090644878498e-11
|
||||
4.1122331701673297e-11
|
||||
1.4349684096644100e-01
|
||||
-5.5222187306985401e-02
|
||||
-1.6425375108164399e-16
|
||||
2.7873138346219898e-12
|
||||
-5.5222187306985797e-02
|
||||
2.0902479638670100e-12
|
||||
1.1044437461397100e-01
|
||||
-5.2656249894019802e-01
|
||||
-2.6136337993155698e+00
|
||||
5.5852212742701504e+00
|
||||
4.0844571104151203e-11
|
||||
3.5505982171968500e-11
|
||||
8.6217787880040098e-01
|
||||
-4.0839122014388802e-11
|
||||
-4.0539124389347499e-11
|
||||
-2.6568652552973702e+00
|
||||
-1.0009706862156900e-01
|
||||
-6.2461771813812901e-16
|
||||
-3.1715851805511302e-12
|
||||
-1.0009706862156800e-01
|
||||
-7.3672870860297704e-13
|
||||
2.0019413724313700e-01
|
||||
5.2656249943361200e-01
|
||||
2.6136337993437202e+00
|
||||
-5.5852212742869600e+00
|
||||
2.5890399708038000e-11
|
||||
-1.9820484900284500e-11
|
||||
8.6217787879296903e-01
|
||||
-2.3987348571773002e-11
|
||||
2.3917950888970299e-11
|
||||
-2.6568652552897101e+00
|
||||
1.0009706862108000e-01
|
||||
3.7413768607055601e-16
|
||||
3.3551279956744199e-12
|
||||
1.0009706862107901e-01
|
||||
1.9822342238817400e-12
|
||||
-2.0019413724215801e-01
|
||||
-2.4661985576074501e-12
|
||||
3.4554206869590302e-12
|
||||
-2.3479700077720898e-12
|
||||
-1.8705246611175400e-01
|
||||
2.6263216205041501e-01
|
||||
-1.3415216966807200e-12
|
||||
1.1330987906367800e-01
|
||||
-1.5909343051552699e-01
|
||||
1.0126329723616200e-12
|
||||
-2.2663530673025501e-13
|
||||
-6.9155972793808798e-16
|
||||
-3.5668558671723899e-01
|
||||
-2.2595730169050101e-13
|
||||
5.0080658522999599e-01
|
||||
4.5259260842075602e-13
|
||||
-2.4673397099155001e-12
|
||||
3.1815097717512002e-12
|
||||
-3.0505620600711500e-12
|
||||
-1.8705246611175400e-01
|
||||
2.6263216205041501e-01
|
||||
-6.8804692398897802e-13
|
||||
1.1330987906367700e-01
|
||||
-1.5909343051552699e-01
|
||||
-1.5513758599267599e-13
|
||||
1.0364516884727900e-13
|
||||
-6.6362639016200102e-16
|
||||
3.5668558671723799e-01
|
||||
1.0412396486409400e-13
|
||||
-5.0080658522999499e-01
|
||||
-2.0776913371137301e-13
|
||||
1.4993481987238401e-11
|
||||
-1.8922695666285100e-11
|
||||
1.2439702202050899e-11
|
||||
-2.6263216204742601e-01
|
||||
-1.8705246610755699e-01
|
||||
7.5849192817525499e-12
|
||||
1.5909343051309899e-01
|
||||
1.1330987906026600e-01
|
||||
-5.4184815012616199e-12
|
||||
1.3041529782310100e-12
|
||||
1.3145996896999699e-16
|
||||
-5.0080658522988297e-01
|
||||
1.3041111456745700e-12
|
||||
-3.5668558671707901e-01
|
||||
-2.6082641239055702e-12
|
||||
1.5003803150870501e-11
|
||||
-1.7280060840338200e-11
|
||||
1.6586357115699799e-11
|
||||
-2.6263216204742601e-01
|
||||
-1.8705246610755799e-01
|
||||
4.4885786575922101e-12
|
||||
1.5909343051309599e-01
|
||||
1.1330987906026700e-01
|
||||
3.0554713649755500e-13
|
||||
-6.5705815006041404e-13
|
||||
1.9195023363100499e-16
|
||||
5.0080658522988197e-01
|
||||
-6.5732811617356697e-13
|
||||
3.5668558671708001e-01
|
||||
1.3143862662339800e-12
|
||||
1.9831004149326600e-16
|
||||
1.2173282744254400e-15
|
||||
-1.6957141051853300e-15
|
||||
1.0695022009804100e-16
|
||||
-1.9376694833227101e-17
|
||||
1.0853680180940700e-16
|
||||
8.9016205154306094e-17
|
||||
-7.8361329500674700e-17
|
||||
3.8680635306250199e-16
|
||||
5.1915289953861399e-01
|
||||
-3.2212065132208401e-01
|
||||
-1.9260375681964600e-16
|
||||
-5.1915289953861399e-01
|
||||
1.4701842130759499e-16
|
||||
-3.1682290617889499e-16
|
||||
6.0291695092213395e-17
|
||||
1.4814119322235001e-16
|
||||
5.1563629781359095e-16
|
||||
2.5798282570549500e-17
|
||||
-9.5394714762576903e-18
|
||||
1.6119171845786999e-16
|
||||
6.8661277831530796e-17
|
||||
-6.3472613018684202e-17
|
||||
8.2867114549150295e-17
|
||||
5.1915289953861499e-01
|
||||
-3.2212065132208600e-01
|
||||
-4.4082874815270500e-17
|
||||
-5.1915289953861399e-01
|
||||
8.8542903790048200e-17
|
||||
-1.3149886998078500e-16
|
||||
-1.7928758133518600e-16
|
||||
-8.8287028329936896e-16
|
||||
4.4678552721665499e-16
|
||||
-2.0063330061150699e-17
|
||||
-6.8994703085366104e-17
|
||||
-2.5487618105643599e-17
|
||||
-2.3495411327371601e-16
|
||||
2.6734243814771399e-16
|
||||
-7.7382964115043100e-17
|
||||
-2.7896466712851598e-01
|
||||
-5.9946613259838699e-01
|
||||
4.5863634879884100e-16
|
||||
2.7896466712851598e-01
|
||||
-3.5726394793376601e-16
|
||||
1.1415954041885800e-16
|
||||
-1.1358574425068199e-16
|
||||
-5.6961595552658695e-16
|
||||
6.7822833807832101e-16
|
||||
1.0740856551724000e-17
|
||||
-9.4748823554515400e-17
|
||||
-4.3245272356297598e-17
|
||||
-1.4161688442691101e-16
|
||||
2.2961418579579798e-16
|
||||
5.4441601365626598e-16
|
||||
-2.7896466712851498e-01
|
||||
-5.9946613259838899e-01
|
||||
-2.8514234636220901e-16
|
||||
2.7896466712851398e-01
|
||||
1.1397749340997400e-15
|
||||
5.3299051175046097e-16
|
||||
-2.1055442539976200e-16
|
||||
-9.2539006221329997e-16
|
||||
5.4312101796389101e-15
|
||||
-1.4254508684229199e-17
|
||||
7.7769514662586003e-17
|
||||
5.0083613545556301e-17
|
||||
-1.0523701012825000e-17
|
||||
-3.1061113529039299e-17
|
||||
-2.4776494717215099e-15
|
||||
-5.0466462465352901e-01
|
||||
4.5130732174816202e-01
|
||||
-1.6624562559764500e-16
|
||||
5.0466462465352802e-01
|
||||
-6.2362558175736501e-16
|
||||
5.9452825564852101e-16
|
||||
4.9503724342388397e-16
|
||||
2.2555605197955902e-15
|
||||
-6.2422984408117899e-15
|
||||
-5.6534969606865097e-18
|
||||
-4.8786995434470000e-18
|
||||
-1.1795127982608399e-16
|
||||
1.9809669565505800e-16
|
||||
-3.7810704045338300e-16
|
||||
-3.3167618203472301e-15
|
||||
5.0466462465352901e-01
|
||||
-4.5130732174816002e-01
|
||||
-1.2578886233921600e-16
|
||||
-5.0466462465352702e-01
|
||||
-5.1738574973077103e-16
|
||||
-1.5372784630585199e-15
|
||||
1.7138353209207099e-16
|
||||
7.6839284164587203e-16
|
||||
-4.2030112383783396e-15
|
||||
1.0409538678528000e-16
|
||||
-7.2257067639476599e-17
|
||||
1.9565221033825400e-16
|
||||
3.6601853302426798e-16
|
||||
-4.3492844732246999e-16
|
||||
2.0901638181633501e-15
|
||||
3.9084360554782399e-01
|
||||
5.8273651378839197e-01
|
||||
-7.4256397084404996e-16
|
||||
-3.9084360554782399e-01
|
||||
-5.4441790623460002e-16
|
||||
-6.7914176332330997e-16
|
||||
-2.1328882671189100e-16
|
||||
-8.5699378636103499e-16
|
||||
4.1496858620333897e-15
|
||||
-1.0929456517064800e-18
|
||||
-2.6419580815979800e-17
|
||||
9.3913135070493002e-17
|
||||
7.6345139005124505e-17
|
||||
-1.9617510106642300e-16
|
||||
2.4793195238279301e-15
|
||||
-3.9084360554782399e-01
|
||||
-5.8273651378839297e-01
|
||||
-1.8257339205039500e-16
|
||||
3.9084360554782299e-01
|
||||
-1.1176754262129201e-15
|
||||
8.9783377454185793e-16
|
||||
2.2273129721104401e-01
|
||||
1.0810634044288701e+00
|
||||
-8.7832745398611600e-01
|
||||
2.2662241796086099e-11
|
||||
2.3566555823513202e-11
|
||||
-6.1561349138910904e-01
|
||||
-2.9826084929026401e-11
|
||||
-2.9622199272019701e-11
|
||||
7.0193925384499400e-01
|
||||
3.5133925687712902e-01
|
||||
-6.7220341064391800e-16
|
||||
1.7515837617002400e-12
|
||||
3.5133925687712803e-01
|
||||
1.2294557786132601e-12
|
||||
-7.0267851375425705e-01
|
||||
2.2273129726002200e-01
|
||||
1.0810634044139300e+00
|
||||
-8.7832745402194801e-01
|
||||
-3.9720861757923797e-11
|
||||
-2.9809218957580201e-11
|
||||
6.1561349138082000e-01
|
||||
4.5934265595506099e-11
|
||||
3.5516477685242500e-11
|
||||
-7.0193925386781697e-01
|
||||
3.5133925688138801e-01
|
||||
-1.1465778507545800e-16
|
||||
4.7953907991553398e-13
|
||||
3.5133925688138901e-01
|
||||
7.6460561416077804e-13
|
||||
-7.0267851376277701e-01
|
||||
-3.2043318544166899e-13
|
||||
1.7534881088607200e-13
|
||||
1.8584306770662101e-13
|
||||
-8.8966251300795995e-02
|
||||
8.0520306698256203e-02
|
||||
-1.4126927998142599e-13
|
||||
-1.7889670570350000e-01
|
||||
1.6191328059768600e-01
|
||||
-6.6273590812468005e-14
|
||||
-2.4387516473889701e-14
|
||||
-6.2459884712229098e-16
|
||||
6.7665150748538805e-01
|
||||
-2.4467271496101999e-14
|
||||
-6.1241410213455005e-01
|
||||
4.8854787969991697e-14
|
||||
3.5130105504791798e-13
|
||||
-3.0610125623170597e-14
|
||||
-3.0664903182444902e-13
|
||||
8.8966251300795995e-02
|
||||
-8.0520306698257493e-02
|
||||
2.5325485363886301e-14
|
||||
1.7889670570350000e-01
|
||||
-1.6191328059768501e-01
|
||||
-2.4662316491051701e-13
|
||||
3.4344718966134603e-14
|
||||
1.6396621506589801e-16
|
||||
6.7665150748538905e-01
|
||||
3.4150203690015403e-14
|
||||
-6.1241410213455005e-01
|
||||
-6.8494922656150094e-14
|
||||
6.2199387510491202e-12
|
||||
-4.5940673682159397e-12
|
||||
-2.6992046198076099e-12
|
||||
8.0520306699779304e-02
|
||||
8.8966251302173296e-02
|
||||
3.0813650942880301e-12
|
||||
1.6191328059620799e-01
|
||||
1.7889670570216301e-01
|
||||
9.2377238544556606e-13
|
||||
5.1540194586667705e-13
|
||||
-1.1453305154261000e-15
|
||||
-6.1241410213459502e-01
|
||||
5.1644877384985098e-13
|
||||
-6.7665150748542802e-01
|
||||
-1.0318507197165300e-12
|
||||
-7.2645998690197898e-12
|
||||
-4.8251528097410603e-13
|
||||
7.1702470216735804e-12
|
||||
-8.0520306699778901e-02
|
||||
-8.8966251302173394e-02
|
||||
-7.9930168253168102e-13
|
||||
-1.6191328059620799e-01
|
||||
-1.7889670570216301e-01
|
||||
5.3610285788747998e-12
|
||||
-6.5702136793927197e-13
|
||||
6.8247448270587397e-16
|
||||
-6.1241410213459502e-01
|
||||
-6.5755124180901996e-13
|
||||
-6.7665150748542802e-01
|
||||
1.3145726097482900e-12
|
||||
-7.2439162925477502e-02
|
||||
2.1012513312147100e-02
|
||||
2.4533973049632900e+00
|
||||
-4.1317129812966003e-12
|
||||
5.9809803799819196e-13
|
||||
-1.1184360216680100e+00
|
||||
5.1604427313037998e-12
|
||||
-1.2338492226914499e-13
|
||||
-8.6031448401599597e-01
|
||||
-5.8157814334275004e-01
|
||||
-6.2796905313327397e-16
|
||||
8.6980208643988896e-13
|
||||
-5.8157814334274804e-01
|
||||
8.6813498818952896e-13
|
||||
1.1631562866855001e+00
|
||||
7.2439162549396405e-02
|
||||
-2.1012513343480699e-02
|
||||
-2.4533973049441302e+00
|
||||
1.8071516922317900e-11
|
||||
1.5836059015021800e-11
|
||||
-1.1184360216394300e+00
|
||||
-1.5976218913866899e-11
|
||||
-1.3047323312282999e-11
|
||||
-8.6031448404482502e-01
|
||||
5.8157814334507396e-01
|
||||
3.8643531451905200e-16
|
||||
-1.0033126668429899e-13
|
||||
5.8157814334507296e-01
|
||||
8.4526095928371105e-14
|
||||
-1.1631562866901499e+00
|
||||
mo_occupation
|
||||
mo_class
|
||||
mo_symmetry
|
2370
share/qmckl/test_data/be2/mo_1e_int.txt
Normal file
2370
share/qmckl/test_data/be2/mo_1e_int.txt
Normal file
File diff suppressed because it is too large
Load Diff
24
share/qmckl/test_data/be2/nucleus.txt
Normal file
24
share/qmckl/test_data/be2/nucleus.txt
Normal file
@ -0,0 +1,24 @@
|
||||
rank_nucleus_charge 1
|
||||
dims_nucleus_charge 0 2
|
||||
rank_nucleus_coord 2
|
||||
dims_nucleus_coord 0 2
|
||||
dims_nucleus_coord 1 3
|
||||
rank_nucleus_label 1
|
||||
dims_nucleus_label 0 2
|
||||
nucleus_num_isSet 1
|
||||
nucleus_num 2
|
||||
len_nucleus_point_group 0
|
||||
nucleus_point_group
|
||||
nucleus_charge
|
||||
4.0000000000000000e+00
|
||||
4.0000000000000000e+00
|
||||
nucleus_coord
|
||||
0.0000000000000000e+00
|
||||
0.0000000000000000e+00
|
||||
2.3183160107063618e+00
|
||||
0.0000000000000000e+00
|
||||
0.0000000000000000e+00
|
||||
-2.3183160107063618e+00
|
||||
nucleus_label
|
||||
Be
|
||||
Be
|
0
share/qmckl/test_data/chbrclf/.lock
Normal file
0
share/qmckl/test_data/chbrclf/.lock
Normal file
536
share/qmckl/test_data/chbrclf/ao.txt
Normal file
536
share/qmckl/test_data/chbrclf/ao.txt
Normal file
@ -0,0 +1,536 @@
|
||||
rank_ao_shell 1
|
||||
dims_ao_shell 0 263
|
||||
rank_ao_normalization 1
|
||||
dims_ao_normalization 0 263
|
||||
ao_cartesian_isSet 1
|
||||
ao_cartesian 1
|
||||
ao_num_isSet 1
|
||||
ao_num 263
|
||||
ao_shell
|
||||
0
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
5
|
||||
5
|
||||
6
|
||||
6
|
||||
6
|
||||
7
|
||||
7
|
||||
7
|
||||
8
|
||||
8
|
||||
8
|
||||
9
|
||||
9
|
||||
9
|
||||
9
|
||||
9
|
||||
9
|
||||
10
|
||||
10
|
||||
10
|
||||
10
|
||||
10
|
||||
10
|
||||
11
|
||||
11
|
||||
11
|
||||
11
|
||||
11
|
||||
11
|
||||
12
|
||||
12
|
||||
12
|
||||
12
|
||||
12
|
||||
12
|
||||
12
|
||||
12
|
||||
12
|
||||
12
|
||||
13
|
||||
13
|
||||
13
|
||||
13
|
||||
13
|
||||
13
|
||||
13
|
||||
13
|
||||
13
|
||||
13
|
||||
14
|
||||
15
|
||||
16
|
||||
17
|
||||
18
|
||||
18
|
||||
18
|
||||
19
|
||||
19
|
||||
19
|
||||
20
|
||||
20
|
||||
20
|
||||
21
|
||||
21
|
||||
21
|
||||
21
|
||||
21
|
||||
21
|
||||
22
|
||||
22
|
||||
22
|
||||
22
|
||||
22
|
||||
22
|
||||
23
|
||||
24
|
||||
25
|
||||
26
|
||||
27
|
||||
28
|
||||
28
|
||||
28
|
||||
29
|
||||
29
|
||||
29
|
||||
30
|
||||
30
|
||||
30
|
||||
31
|
||||
31
|
||||
31
|
||||
32
|
||||
32
|
||||
32
|
||||
32
|
||||
32
|
||||
32
|
||||
33
|
||||
33
|
||||
33
|
||||
33
|
||||
33
|
||||
33
|
||||
34
|
||||
34
|
||||
34
|
||||
34
|
||||
34
|
||||
34
|
||||
35
|
||||
35
|
||||
35
|
||||
35
|
||||
35
|
||||
35
|
||||
35
|
||||
35
|
||||
35
|
||||
35
|
||||
36
|
||||
36
|
||||
36
|
||||
36
|
||||
36
|
||||
36
|
||||
36
|
||||
36
|
||||
36
|
||||
36
|
||||
37
|
||||
38
|
||||
39
|
||||
40
|
||||
41
|
||||
42
|
||||
43
|
||||
43
|
||||
43
|
||||
44
|
||||
44
|
||||
44
|
||||
45
|
||||
45
|
||||
45
|
||||
46
|
||||
46
|
||||
46
|
||||
47
|
||||
47
|
||||
47
|
||||
48
|
||||
48
|
||||
48
|
||||
48
|
||||
48
|
||||
48
|
||||
49
|
||||
49
|
||||
49
|
||||
49
|
||||
49
|
||||
49
|
||||
50
|
||||
50
|
||||
50
|
||||
50
|
||||
50
|
||||
50
|
||||
51
|
||||
51
|
||||
51
|
||||
51
|
||||
51
|
||||
51
|
||||
51
|
||||
51
|
||||
51
|
||||
51
|
||||
52
|
||||
52
|
||||
52
|
||||
52
|
||||
52
|
||||
52
|
||||
52
|
||||
52
|
||||
52
|
||||
52
|
||||
53
|
||||
54
|
||||
55
|
||||
56
|
||||
57
|
||||
58
|
||||
59
|
||||
60
|
||||
60
|
||||
60
|
||||
61
|
||||
61
|
||||
61
|
||||
62
|
||||
62
|
||||
62
|
||||
63
|
||||
63
|
||||
63
|
||||
64
|
||||
64
|
||||
64
|
||||
65
|
||||
65
|
||||
65
|
||||
66
|
||||
66
|
||||
66
|
||||
66
|
||||
66
|
||||
66
|
||||
67
|
||||
67
|
||||
67
|
||||
67
|
||||
67
|
||||
67
|
||||
68
|
||||
68
|
||||
68
|
||||
68
|
||||
68
|
||||
68
|
||||
69
|
||||
69
|
||||
69
|
||||
69
|
||||
69
|
||||
69
|
||||
70
|
||||
70
|
||||
70
|
||||
70
|
||||
70
|
||||
70
|
||||
70
|
||||
70
|
||||
70
|
||||
70
|
||||
71
|
||||
71
|
||||
71
|
||||
71
|
||||
71
|
||||
71
|
||||
71
|
||||
71
|
||||
71
|
||||
71
|
||||
ao_normalization
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.7320508075688772e+00
|
||||
1.7320508075688772e+00
|
||||
9.9999999999999978e-01
|
||||
1.7320508075688772e+00
|
||||
9.9999999999999978e-01
|
||||
1.0000000000000000e+00
|
||||
1.7320508075688772e+00
|
||||
1.7320508075688772e+00
|
||||
1.0000000000000000e+00
|
||||
1.7320508075688772e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.7320508075688776e+00
|
||||
1.7320508075688776e+00
|
||||
1.0000000000000000e+00
|
||||
1.7320508075688776e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
2.2360679774997894e+00
|
||||
2.2360679774997894e+00
|
||||
2.2360679774997898e+00
|
||||
3.8729833462074166e+00
|
||||
2.2360679774997894e+00
|
||||
1.0000000000000000e+00
|
||||
2.2360679774997898e+00
|
||||
2.2360679774997894e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
2.2360679774997894e+00
|
||||
2.2360679774997894e+00
|
||||
2.2360679774997894e+00
|
||||
3.8729833462074157e+00
|
||||
2.2360679774997894e+00
|
||||
1.0000000000000000e+00
|
||||
2.2360679774997894e+00
|
||||
2.2360679774997894e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000002e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.7320508075688774e+00
|
||||
1.7320508075688772e+00
|
||||
1.0000000000000000e+00
|
||||
1.7320508075688774e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.7320508075688776e+00
|
||||
1.7320508075688776e+00
|
||||
1.0000000000000000e+00
|
||||
1.7320508075688776e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000002e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.7320508075688774e+00
|
||||
1.7320508075688774e+00
|
||||
1.0000000000000000e+00
|
||||
1.7320508075688774e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.7320508075688772e+00
|
||||
1.7320508075688772e+00
|
||||
1.0000000000000000e+00
|
||||
1.7320508075688772e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.7320508075688774e+00
|
||||
1.7320508075688774e+00
|
||||
1.0000000000000000e+00
|
||||
1.7320508075688774e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
2.2360679774997902e+00
|
||||
2.2360679774997902e+00
|
||||
2.2360679774997902e+00
|
||||
3.8729833462074170e+00
|
||||
2.2360679774997902e+00
|
||||
1.0000000000000000e+00
|
||||
2.2360679774997902e+00
|
||||
2.2360679774997902e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
2.2360679774997902e+00
|
||||
2.2360679774997902e+00
|
||||
2.2360679774997902e+00
|
||||
3.8729833462074170e+00
|
||||
2.2360679774997902e+00
|
||||
1.0000000000000000e+00
|
||||
2.2360679774997902e+00
|
||||
2.2360679774997902e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.7320508075688770e+00
|
||||
1.7320508075688770e+00
|
||||
1.0000000000000000e+00
|
||||
1.7320508075688770e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.7320508075688774e+00
|
||||
1.7320508075688774e+00
|
||||
1.0000000000000000e+00
|
||||
1.7320508075688774e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.7320508075688770e+00
|
||||
1.7320508075688770e+00
|
||||
1.0000000000000000e+00
|
||||
1.7320508075688770e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
2.2360679774997898e+00
|
||||
2.2360679774997898e+00
|
||||
2.2360679774997902e+00
|
||||
3.8729833462074170e+00
|
||||
2.2360679774997898e+00
|
||||
9.9999999999999989e-01
|
||||
2.2360679774997902e+00
|
||||
2.2360679774997898e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
2.2360679774997894e+00
|
||||
2.2360679774997894e+00
|
||||
2.2360679774997894e+00
|
||||
3.8729833462074175e+00
|
||||
2.2360679774997894e+00
|
||||
1.0000000000000000e+00
|
||||
2.2360679774997894e+00
|
||||
2.2360679774997894e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.7320508075688774e+00
|
||||
1.7320508075688774e+00
|
||||
1.0000000000000000e+00
|
||||
1.7320508075688774e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.7320508075688772e+00
|
||||
1.7320508075688772e+00
|
||||
1.0000000000000000e+00
|
||||
1.7320508075688772e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.7320508075688776e+00
|
||||
1.7320508075688776e+00
|
||||
1.0000000000000000e+00
|
||||
1.7320508075688776e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
1.7320508075688774e+00
|
||||
1.7320508075688774e+00
|
||||
1.0000000000000000e+00
|
||||
1.7320508075688774e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
2.2360679774997898e+00
|
||||
2.2360679774997898e+00
|
||||
2.2360679774997898e+00
|
||||
3.8729833462074170e+00
|
||||
2.2360679774997898e+00
|
||||
1.0000000000000000e+00
|
||||
2.2360679774997898e+00
|
||||
2.2360679774997898e+00
|
||||
1.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
2.2360679774997902e+00
|
||||
2.2360679774997898e+00
|
||||
2.2360679774997902e+00
|
||||
3.8729833462074170e+00
|
||||
2.2360679774997898e+00
|
||||
1.0000000000000002e+00
|
||||
2.2360679774997902e+00
|
||||
2.2360679774997902e+00
|
||||
1.0000000000000000e+00
|
1223
share/qmckl/test_data/chbrclf/basis.txt
Normal file
1223
share/qmckl/test_data/chbrclf/basis.txt
Normal file
File diff suppressed because it is too large
Load Diff
4
share/qmckl/test_data/chbrclf/electron.txt
Normal file
4
share/qmckl/test_data/chbrclf/electron.txt
Normal file
@ -0,0 +1,4 @@
|
||||
electron_up_num_isSet 1
|
||||
electron_up_num 34
|
||||
electron_dn_num_isSet 1
|
||||
electron_dn_num 34
|
11
share/qmckl/test_data/chbrclf/metadata.txt
Normal file
11
share/qmckl/test_data/chbrclf/metadata.txt
Normal file
@ -0,0 +1,11 @@
|
||||
rank_metadata_code 0
|
||||
rank_metadata_author 0
|
||||
metadata_code_num_isSet 0
|
||||
metadata_author_num_isSet 0
|
||||
len_metadata_package_version 6
|
||||
metadata_package_version
|
||||
0.3.0
|
||||
len_metadata_description 0
|
||||
metadata_description
|
||||
metadata_code
|
||||
metadata_author
|
58926
share/qmckl/test_data/chbrclf/mo.txt
Normal file
58926
share/qmckl/test_data/chbrclf/mo.txt
Normal file
File diff suppressed because it is too large
Load Diff
39
share/qmckl/test_data/chbrclf/nucleus.txt
Normal file
39
share/qmckl/test_data/chbrclf/nucleus.txt
Normal file
@ -0,0 +1,39 @@
|
||||
rank_nucleus_charge 1
|
||||
dims_nucleus_charge 0 5
|
||||
rank_nucleus_coord 2
|
||||
dims_nucleus_coord 0 5
|
||||
dims_nucleus_coord 1 3
|
||||
rank_nucleus_label 1
|
||||
dims_nucleus_label 0 5
|
||||
nucleus_num_isSet 1
|
||||
nucleus_num 5
|
||||
len_nucleus_point_group 0
|
||||
nucleus_point_group
|
||||
nucleus_charge
|
||||
6.0000000000000000e+00
|
||||
1.0000000000000000e+00
|
||||
9.0000000000000000e+00
|
||||
1.7000000000000000e+01
|
||||
3.5000000000000000e+01
|
||||
nucleus_coord
|
||||
1.0962433534584579e+00
|
||||
8.9070540169738155e-01
|
||||
7.7770922802588915e-01
|
||||
1.1684592373426630e+00
|
||||
1.1256607200533930e+00
|
||||
2.8333703148293430e+00
|
||||
1.4870972977121319e+00
|
||||
3.1196524844787969e+00
|
||||
-3.8554381384115000e-01
|
||||
3.4976638499838888e+00
|
||||
-1.3029208100731819e+00
|
||||
-1.2722203194390641e-01
|
||||
-2.3025745920813350e+00
|
||||
-3.5420270605050352e-01
|
||||
-5.3341299343176142e-02
|
||||
nucleus_label
|
||||
C
|
||||
H
|
||||
F
|
||||
Cl
|
||||
Br
|
@ -36,10 +36,17 @@ do
|
||||
exported=${i%.org}.exported
|
||||
exported=$(dirname $exported)/.$(basename $exported)
|
||||
NOW=$(date +"%m%d%H%M.%S")
|
||||
extract_doc ${i} > $exported
|
||||
extract_doc ${i} &> $exported
|
||||
rc=$?
|
||||
|
||||
# Make log file older than the exported files
|
||||
touch -t ${NOW} $exported
|
||||
|
||||
# Fail if tangling failed
|
||||
if [[ $rc -ne 0 ]] ; then
|
||||
cat $exported
|
||||
exit rc
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
|
@ -134,7 +134,7 @@ def main():
|
||||
DEPS[fo] += [f90, "$(src_qmckl_fo)"]
|
||||
else:
|
||||
DEPS[fo] = [f90, "$(src_qmckl_fo)"]
|
||||
|
||||
|
||||
if "(eval fh_func)" in grep:
|
||||
FH_FUNC_FILES += [fh_func]
|
||||
|
||||
@ -151,7 +151,7 @@ def main():
|
||||
else:
|
||||
DEPS[fh_type] = [tangled]
|
||||
|
||||
|
||||
|
||||
if "(eval c_test)" in grep:
|
||||
C_TEST_FILES += [c_test]
|
||||
|
||||
@ -164,7 +164,7 @@ def main():
|
||||
TESTS[c_test_x] += [c_test, "$(qmckl_h)"]
|
||||
else:
|
||||
TESTS[c_test_x] = [c_test, "$(qmckl_h)"]
|
||||
|
||||
|
||||
if "(eval f_test)" in grep:
|
||||
F_TEST_FILES += [f_test]
|
||||
|
||||
@ -181,20 +181,20 @@ def main():
|
||||
output = ["",
|
||||
"## Source files",
|
||||
"",
|
||||
"ORG_FILES="+" ".join(ORG_FILES),
|
||||
"ORG_FILES="+" ".join(ORG_FILES),
|
||||
"TANGLED_FILES="+" ".join(TANGLED_FILES),
|
||||
"EXPORTED_FILES="+" ".join(EXPORTED_FILES),
|
||||
"C_FILES="+" ".join(C_FILES),
|
||||
"F_FILES="+" ".join(F_FILES),
|
||||
"C_O_FILES="+" ".join(C_O_FILES),
|
||||
"FH_FUNC_FILES="+" ".join(FH_FUNC_FILES),
|
||||
"FH_TYPE_FILES="+" ".join(FH_TYPE_FILES),
|
||||
"H_FUNC_FILES="+" ".join(H_FUNC_FILES),
|
||||
"H_TYPE_FILES="+" ".join(H_TYPE_FILES),
|
||||
"H_PRIVATE_FUNC_FILES="+" ".join(H_PRIVATE_FUNC_FILES),
|
||||
"H_PRIVATE_TYPE_FILES="+" ".join(H_PRIVATE_TYPE_FILES),
|
||||
"C_TEST_FILES="+" ".join(C_TEST_FILES),
|
||||
"F_TEST_FILES="+" ".join(F_TEST_FILES),
|
||||
"EXPORTED_FILES="+" ".join(EXPORTED_FILES),
|
||||
"C_FILES="+" ".join(C_FILES),
|
||||
"F_FILES="+" ".join(F_FILES),
|
||||
"C_O_FILES="+" ".join(C_O_FILES),
|
||||
"FH_FUNC_FILES="+" ".join(FH_FUNC_FILES),
|
||||
"FH_TYPE_FILES="+" ".join(FH_TYPE_FILES),
|
||||
"H_FUNC_FILES="+" ".join(H_FUNC_FILES),
|
||||
"H_TYPE_FILES="+" ".join(H_TYPE_FILES),
|
||||
"H_PRIVATE_FUNC_FILES="+" ".join(H_PRIVATE_FUNC_FILES),
|
||||
"H_PRIVATE_TYPE_FILES="+" ".join(H_PRIVATE_TYPE_FILES),
|
||||
"C_TEST_FILES="+" ".join(C_TEST_FILES),
|
||||
"F_TEST_FILES="+" ".join(F_TEST_FILES),
|
||||
"TESTS="+" ".join(TESTS.keys()).replace("$(srcdir)/",""),
|
||||
"HTML_FILES="+" ".join(HTML.values()),
|
||||
"TEXT_FILES="+" ".join(TEXT.values()),
|
||||
@ -234,10 +234,17 @@ def main():
|
||||
prefix = "tests_" + f.rsplit("/",1)[-1]
|
||||
output += [ prefix + "_SOURCES = " + \
|
||||
" ".join(TESTS[f]).replace("$(srcdir)",""),
|
||||
prefix + "_LDADD = src/libqmckl.la",
|
||||
prefix + "_LDADD = src/libqmckl.la",
|
||||
prefix + "_LDFLAGS = -no-install",
|
||||
"" ]
|
||||
|
||||
tmp = "EXTRA_DIST += "
|
||||
for dir in glob("share/qmckl/test_data/*"):
|
||||
for f in glob("%s/*"%(dir)):
|
||||
tmp += " \\\n "+f
|
||||
tmp += "\n"
|
||||
output += tmp.split("\n")
|
||||
|
||||
output+= ["",
|
||||
"## Documentation",
|
||||
"",
|
||||
|
18
tools/ci_install.sh
Executable file
18
tools/ci_install.sh
Executable file
@ -0,0 +1,18 @@
|
||||
#!/bin/bash
|
||||
|
||||
# This scripts is meant to be used by Verificarlo CI to automatically install
|
||||
# the library dependencies and build it with Verificarlo with vfc_probes support
|
||||
# enabled.
|
||||
|
||||
./autogen.sh
|
||||
QMCKL_DEVEL=1 ./configure --prefix=$PWD/_install \
|
||||
--enable-silent-rules --enable-maintainer-mode --enable-vfc_ci --host=x86_64 \
|
||||
CC="verificarlo-f" FC="verificarlo-f"
|
||||
|
||||
make all
|
||||
# Here we build the test suite, but expect it to fail because it is run without
|
||||
# specifying VFC_BACKENDS. However, the generated executables will be reused
|
||||
# individually by the CI.
|
||||
make check
|
||||
|
||||
exit 0
|
141
tools/qmckl_probes.c
Normal file
141
tools/qmckl_probes.c
Normal file
@ -0,0 +1,141 @@
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#ifdef VFC_CI
|
||||
#include <vfc_probes.h>
|
||||
vfc_probes probes;
|
||||
#endif
|
||||
|
||||
|
||||
// QMCkl is a wrapper to Verificarlo's vfc_probes system. The goal of QMCkl
|
||||
// probes isto simplify the use of vfc_probes, and to provide functions that
|
||||
// can be called either wit or without vfc_ci support by using #ifndef
|
||||
// statements :
|
||||
//
|
||||
// - when vfc_ci is disabled, qmckl_probes functions will either return false
|
||||
// (no error) or perform a check based on a reference value
|
||||
// - when vfc_ci is enabled, qmckl_probe functions will simply encapsulate
|
||||
// calls to vfc_probe
|
||||
//
|
||||
// Moreover, one does not have to worry about the life cycle of the probes
|
||||
// structure, as it is automatically created, dumped and freed by this wrapper.
|
||||
//
|
||||
// vfc_ci support can be enabled by using the following configure command :
|
||||
// QMCKL_DEVEL=1 ./configure --prefix=$PWD/_install --enable-silent-rules
|
||||
// --enable-maintainer-mode CC=verificarlo-f FC=verificarlo-f --host=x86_64
|
||||
//
|
||||
// Finally, this wrapper also comes with a Fortran interface (in its dedicated
|
||||
// file).
|
||||
//
|
||||
// To learn more about Verificarlo CI :
|
||||
// https://github.com/verificarlo/verificarlo/blob/master/doc/06-Postprocessing.md#verificarlo-ci
|
||||
|
||||
|
||||
// Automatically initialize the vfc_probe object if VFC_CI is defined
|
||||
#ifdef VFC_CI
|
||||
void __attribute__((constructor)) qmckl_init_probes(){
|
||||
probes = vfc_init_probes();
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
// Standard probe, without check
|
||||
// - if VFC_CI is defined, place a standard probe
|
||||
// - if VFC_CI is undefined, return false (no error)
|
||||
bool qmckl_probe(
|
||||
char * testName,
|
||||
char * varName,
|
||||
double value
|
||||
) {
|
||||
#ifdef VFC_CI
|
||||
return vfc_probe(&probes, testName, varName, value);
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
// Probe with absolute check
|
||||
// - if VFC_CI is defined, place a probe with an absolute check
|
||||
// - if VFC_CI is undefined, perform an absolute check based on target value
|
||||
// and accuracy
|
||||
bool qmckl_probe_check(
|
||||
char * testName,
|
||||
char * varName,
|
||||
double value,
|
||||
double expectedValue,
|
||||
double accuracyTarget
|
||||
) {
|
||||
#ifdef VFC_CI
|
||||
return vfc_probe_check(&probes, testName, varName, value, accuracyTarget);
|
||||
#else
|
||||
return !(abs(value - expectedValue) < accuracyTarget);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
// Probe with relative check
|
||||
// - if VFC_CI is defined, place a probe with a relative check
|
||||
// - if VFC_CI is undefined, perform a relative check based on target value
|
||||
// and accuracy
|
||||
bool qmckl_probe_check_relative (
|
||||
char * testName,
|
||||
char * varName,
|
||||
double value,
|
||||
double expectedValue,
|
||||
double accuracyTarget
|
||||
) {
|
||||
#ifdef VFC_CI
|
||||
return vfc_probe_check_relative(&probes, testName, varName, value, accuracyTarget);
|
||||
#else
|
||||
return !(abs(value - expectedValue) / abs(expectedValue) < accuracyTarget);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
// Automatically delete and dump the vfc_probe object if VFC_CI is defined
|
||||
#ifdef VFC_CI
|
||||
void __attribute__((destructor)) qmckl_dump_probes(){
|
||||
vfc_dump_probes(&probes);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
// Fortran wrappers
|
||||
|
||||
bool qmckl_probe_f(
|
||||
char * testName,
|
||||
char * varName,
|
||||
double * value
|
||||
) {
|
||||
return qmckl_probe(testName, varName, *value);
|
||||
}
|
||||
|
||||
|
||||
bool qmckl_probe_check_f(
|
||||
char * testName,
|
||||
char * varName,
|
||||
double * value,
|
||||
double * expectedValue,
|
||||
double * accuracyTarget
|
||||
) {
|
||||
return qmckl_probe_check(
|
||||
testName, varName,
|
||||
*value, *expectedValue, *accuracyTarget
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
bool qmckl_probe_check_relative_f(
|
||||
char * testName,
|
||||
char * varName,
|
||||
double * value,
|
||||
double * expectedValue,
|
||||
double * accuracyTarget
|
||||
) {
|
||||
return qmckl_probe_check_relative(
|
||||
testName, varName,
|
||||
*value, *expectedValue, *accuracyTarget
|
||||
);
|
||||
}
|
65
tools/qmckl_probes.h
Normal file
65
tools/qmckl_probes.h
Normal file
@ -0,0 +1,65 @@
|
||||
#include <stdbool.h>
|
||||
|
||||
|
||||
#ifdef VFC_CI
|
||||
#include <vfc_probes.h>
|
||||
extern vfc_probes * probes;
|
||||
#endif
|
||||
|
||||
// Wrappers to Verificarlo functions
|
||||
|
||||
#ifdef VFC_CI
|
||||
void qmckl_init_probes() __attribute__((constructor));
|
||||
#endif
|
||||
|
||||
bool qmckl_probe(
|
||||
char * testName,
|
||||
char * varName,
|
||||
double value
|
||||
);
|
||||
|
||||
bool qmckl_probe_check(
|
||||
char * testName,
|
||||
char * varName,
|
||||
double value,
|
||||
double expectedValue,
|
||||
double accuracyTarget
|
||||
);
|
||||
|
||||
bool qmckl_probe_check_relative(
|
||||
char * testName,
|
||||
char * varName,
|
||||
double value,
|
||||
double expectedValue,
|
||||
double accuracyTarget
|
||||
);
|
||||
|
||||
#ifdef VFC_CI
|
||||
void qmckl_dump_probes() __attribute__((destructor));
|
||||
#endif
|
||||
|
||||
|
||||
// Fortran wrappers
|
||||
|
||||
bool qmckl_probe_f(
|
||||
char * testName,
|
||||
char * varName,
|
||||
double * value
|
||||
);
|
||||
|
||||
bool qmckl_probe_check_f(
|
||||
char * testName,
|
||||
char * varName,
|
||||
double * value,
|
||||
double * expectedValue,
|
||||
double * accuracyTarget
|
||||
);
|
||||
|
||||
|
||||
bool qmckl_probe_check_relative_f(
|
||||
char * testName,
|
||||
char * varName,
|
||||
double * value,
|
||||
double * expectedValue,
|
||||
double * accuracyTarget
|
||||
);
|
49
tools/qmckl_probes_f.f90
Normal file
49
tools/qmckl_probes_f.f90
Normal file
@ -0,0 +1,49 @@
|
||||
module qmckl_probes_f
|
||||
interface
|
||||
logical(c_bool) function qmckl_probe &
|
||||
(testName, varName, val) &
|
||||
bind(C, name="qmckl_probe_f")
|
||||
|
||||
use, intrinsic :: iso_c_binding
|
||||
import
|
||||
implicit none
|
||||
|
||||
character(C_CHAR), dimension(*) :: testName
|
||||
character(C_CHAR), dimension(*) :: varName
|
||||
|
||||
real(C_DOUBLE) :: val
|
||||
end function qmckl_probe
|
||||
|
||||
logical(c_bool) function qmckl_probe_check &
|
||||
(testName, varName, val, expectedValue, accuracyTarget) &
|
||||
bind(C, name="qmckl_probe_check_f")
|
||||
|
||||
use, intrinsic :: iso_c_binding
|
||||
import
|
||||
implicit none
|
||||
|
||||
character(C_CHAR), dimension(*) :: testName
|
||||
character(C_CHAR), dimension(*) :: varName
|
||||
|
||||
real(C_DOUBLE) :: val
|
||||
real(C_DOUBLE) :: expectedValue
|
||||
real(C_DOUBLE) :: accuracyTarget
|
||||
end function qmckl_probe_check
|
||||
|
||||
logical(c_bool) function qmckl_probe_check_relative &
|
||||
(testName, varName, val, expectedValue, accuracyTarget) &
|
||||
bind(C, name="qmckl_probe_check_relative_f")
|
||||
|
||||
use, intrinsic :: iso_c_binding
|
||||
import
|
||||
implicit none
|
||||
|
||||
character(C_CHAR), dimension(*) :: testName
|
||||
character(C_CHAR), dimension(*) :: varName
|
||||
|
||||
real(C_DOUBLE) :: val
|
||||
real(C_DOUBLE) :: expectedValue
|
||||
real(C_DOUBLE) :: accuracyTarget
|
||||
end function qmckl_probe_check_relative
|
||||
end interface
|
||||
end module qmckl_probes_f
|
@ -35,8 +35,13 @@ do
|
||||
tangled=${i%.org}.tangled
|
||||
tangled=$(dirname $tangled)/.$(basename $tangled)
|
||||
NOW=$(date +"%m%d%H%M.%S")
|
||||
tangle ${i} > $tangled
|
||||
|
||||
tangle ${i} &> $tangled
|
||||
rc=$?
|
||||
# Make log file older than the tangled files
|
||||
touch -t ${NOW} $tangled
|
||||
# Fail if tangling failed
|
||||
if [[ $rc -ne 0 ]] ; then
|
||||
cat $tangled
|
||||
exit rc
|
||||
fi
|
||||
done
|
||||
|
19
vfc_tests_config.json
Normal file
19
vfc_tests_config.json
Normal file
@ -0,0 +1,19 @@
|
||||
{
|
||||
"make_command": "tools/ci_install.sh",
|
||||
"executables": [
|
||||
{
|
||||
"executable": "tests/test_qmckl_distance",
|
||||
"vfc_backends": [{
|
||||
"name": "libinterflop_mca.so",
|
||||
"repetitions": 25
|
||||
}]
|
||||
},
|
||||
{
|
||||
"executable": "tests/test_qmckl_ao",
|
||||
"vfc_backends": [{
|
||||
"name": "libinterflop_mca.so",
|
||||
"repetitions": 25
|
||||
}]
|
||||
}
|
||||
]
|
||||
}
|
Loading…
Reference in New Issue
Block a user