mirror of
https://github.com/TREX-CoE/qmckl.git
synced 2024-06-30 00:44:52 +02: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
|
run: ./autogen.sh
|
||||||
|
|
||||||
- name: ./configure
|
- 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
|
- name: make
|
||||||
run: make -j 8 html
|
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:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- name: install dependencies
|
|
||||||
|
- name: Install dependencies
|
||||||
run: sudo apt-get install emacs autoconf libhdf5-dev
|
run: sudo apt-get install emacs autoconf libhdf5-dev
|
||||||
- name: install trexio
|
|
||||||
|
- name: Install trexio
|
||||||
run: |
|
run: |
|
||||||
wget https://github.com/TREX-CoE/trexio/releases/download/v1.0/trexio-1.0.0.tar.gz
|
export VERSION=1.1.0
|
||||||
tar -zxf trexio-1.0.0.tar.gz
|
wget https://github.com/TREX-CoE/trexio/releases/download/v${VERSION}/trexio-${VERSION}.tar.gz
|
||||||
cd trexio-1.0.0
|
tar -zxf trexio-${VERSION}.tar.gz
|
||||||
./configure
|
cd trexio-${VERSION}
|
||||||
|
./configure --prefix=/usr
|
||||||
make -j 8
|
make -j 8
|
||||||
sudo make install
|
sudo make install
|
||||||
- name: Run test
|
|
||||||
|
- name: Build
|
||||||
run: |
|
run: |
|
||||||
./autogen.sh
|
./autogen.sh
|
||||||
QMCKL_DEVEL=1 ./configure --enable-silent-rules --enable-maintainer-mode --enable-debug
|
QMCKL_DEVEL=1 ./configure --enable-silent-rules --enable-maintainer-mode --enable-debug
|
||||||
make -j 8
|
make -j 8
|
||||||
|
|
||||||
|
- name: Run test
|
||||||
|
run: |
|
||||||
make -j check
|
make -j check
|
||||||
make distcheck
|
|
||||||
- name: Archive test log file
|
- name: Archive test log file
|
||||||
|
if: failure()
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
name: test-suite.log
|
name: test-report
|
||||||
path: test-suite.log
|
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:
|
# x86_macos:
|
||||||
#
|
#
|
||||||
# runs-on: macos-latest
|
# 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
|
# 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
|
# tar -zxf trexio-1.0.0.tar.gz
|
||||||
# cd trexio-1.0.0
|
# cd trexio-1.0.0
|
||||||
# ./configure
|
# ./configure
|
||||||
# make -j 8
|
# make -j 8
|
||||||
# sudo make install
|
# sudo make install
|
||||||
# - name: Run test
|
# - name: Run test
|
||||||
# run: |
|
# run: |
|
||||||
# ./autogen.sh
|
# ./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
|
config.sub
|
||||||
configure
|
configure
|
||||||
generated.mk
|
generated.mk
|
||||||
|
.vfcwrapper.o
|
||||||
|
libtool
|
||||||
m4/libtool.m4
|
m4/libtool.m4
|
||||||
m4/ltoptions.m4
|
m4/ltoptions.m4
|
||||||
m4/ltsugar.m4
|
m4/ltsugar.m4
|
||||||
|
@ -20,6 +22,7 @@ m4/ltversion.m4
|
||||||
m4/lt~obsolete.m4
|
m4/lt~obsolete.m4
|
||||||
qmckl-*.tar.gz
|
qmckl-*.tar.gz
|
||||||
qmckl.mod
|
qmckl.mod
|
||||||
|
qmckl_probes_f.mod
|
||||||
qmckl.pc
|
qmckl.pc
|
||||||
stamp-h1
|
stamp-h1
|
||||||
tools/compile
|
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
|
# 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.
|
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
|
||||||
ACLOCAL_AMFLAGS = -I m4
|
ACLOCAL_AMFLAGS = -I m4
|
||||||
|
|
||||||
VERSION_MAJOR = @VERSION_MAJOR@
|
VERSION_MAJOR = @VERSION_MAJOR@
|
||||||
|
@ -38,7 +37,7 @@ VERSION_MINOR = @VERSION_MINOR@
|
||||||
VERSION_PATCH = @VERSION_PATCH@
|
VERSION_PATCH = @VERSION_PATCH@
|
||||||
|
|
||||||
SUBDIRS =
|
SUBDIRS =
|
||||||
CLEANFILES = qmckl.mod
|
CLEANFILES = qmckl.mod qmckl_verificarlo_f.mod
|
||||||
EXTRA_DIST =
|
EXTRA_DIST =
|
||||||
|
|
||||||
pkgconfigdir = $(libdir)/pkgconfig
|
pkgconfigdir = $(libdir)/pkgconfig
|
||||||
|
@ -54,19 +53,23 @@ src_qmckl_f = src/qmckl_f.f90
|
||||||
src_qmckl_fo = src/qmckl_f.o
|
src_qmckl_fo = src/qmckl_f.o
|
||||||
header_tests = tests/chbrclf.h tests/n2.h
|
header_tests = tests/chbrclf.h tests/n2.h
|
||||||
|
|
||||||
fortrandir = $(datadir)/$(PACKAGE_NAME)/fortran/
|
|
||||||
|
fortrandir = $(datadir)/qmckl/fortran/
|
||||||
|
|
||||||
dist_fortran_DATA = $(qmckl_f)
|
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
|
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)
|
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
|
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
|
include generated.mk
|
||||||
|
|
||||||
|
@ -105,6 +108,11 @@ doc: html text
|
||||||
|
|
||||||
if QMCKL_DEVEL
|
if QMCKL_DEVEL
|
||||||
|
|
||||||
|
|
||||||
|
if VFC_CI
|
||||||
|
AM_LDFLAGS=-lvfc_probes -lvfc_probes_f
|
||||||
|
endif
|
||||||
|
|
||||||
dist_src_DATA = $(ORG_FILES) $(TANGLED_FILES) $(EXPORTED_FILES)
|
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)
|
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)
|
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 += \
|
EXTRA_DIST += \
|
||||||
tools/build_doc.sh \
|
$(srcdir)/tools/build_doc.sh \
|
||||||
tools/build_makefile.py \
|
$(srcdir)/tools/build_makefile.py \
|
||||||
tools/build_qmckl_f.sh \
|
$(srcdir)/tools/build_qmckl_f.sh \
|
||||||
tools/build_qmckl_h.sh \
|
$(srcdir)/tools/build_qmckl_h.sh \
|
||||||
tools/config_doc.el \
|
$(srcdir)/tools/config_doc.el \
|
||||||
tools/config_tangle.el \
|
$(srcdir)/tools/config_tangle.el \
|
||||||
tools/init.el \
|
$(srcdir)/tools/init.el \
|
||||||
tools/install_htmlize.sh \
|
$(srcdir)/tools/install_htmlize.sh \
|
||||||
tools/lib.org \
|
$(srcdir)/tools/lib.org \
|
||||||
tools/tangle.sh \
|
$(srcdir)/tools/tangle.sh \
|
||||||
tools/theme.setup
|
$(srcdir)/tools/theme.setup
|
||||||
|
|
||||||
|
|
||||||
## Silent
|
## Silent
|
||||||
|
@ -134,7 +142,7 @@ export_verbose_0 = @echo " DOC $@";
|
||||||
|
|
||||||
tangle_verbose = $(tangle_verbose_@AM_V@)
|
tangle_verbose = $(tangle_verbose_@AM_V@)
|
||||||
tangle_verbose_ = $(tangle_verbose_@AM_DEFAULT_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_V@)
|
||||||
cat_h_verbose_ = $(cat_h_verbose_@AM_DEFAULT_V@)
|
cat_h_verbose_ = $(cat_h_verbose_@AM_DEFAULT_V@)
|
||||||
|
@ -156,14 +164,14 @@ $(htmlize_el):
|
||||||
$(srcdir)/tools/install_htmlize.sh $(htmlize_el)
|
$(srcdir)/tools/install_htmlize.sh $(htmlize_el)
|
||||||
|
|
||||||
tests/chbrclf.h: $(qmckl_h)
|
tests/chbrclf.h: $(qmckl_h)
|
||||||
|
|
||||||
tests/n2.h: $(qmckl_h)
|
tests/n2.h: $(qmckl_h)
|
||||||
|
|
||||||
generated.mk: $(ORG_FILES)
|
generated.mk: $(ORG_FILES)
|
||||||
$(PYTHON) $(srcdir)/tools/build_makefile.py
|
$(PYTHON) $(srcdir)/tools/build_makefile.py
|
||||||
|
|
||||||
cppcheck: cppcheck.out
|
cppcheck: cppcheck.out
|
||||||
|
|
||||||
cppcheck.out: $(qmckl_h)
|
cppcheck.out: $(qmckl_h)
|
||||||
cd src/ && \
|
cd src/ && \
|
||||||
cppcheck --addon=cert -q --error-exitcode=0 \
|
cppcheck --addon=cert -q --error-exitcode=0 \
|
||||||
|
@ -173,7 +181,6 @@ cppcheck.out: $(qmckl_h)
|
||||||
--language=c --std=c99 -rp --platform=unix64 \
|
--language=c --std=c99 -rp --platform=unix64 \
|
||||||
-I../include *.c *.h 2>../$@
|
-I../include *.c *.h 2>../$@
|
||||||
|
|
||||||
|
|
||||||
.PHONY: cppcheck
|
.PHONY: cppcheck
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
17
README.md
17
README.md
|
@ -46,6 +46,23 @@ sudo make install
|
||||||
sudo make installcheck
|
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)
|
![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
|
# QMCkl - Quantum Monte Carlo kernel library
|
||||||
#
|
#
|
||||||
# BSD 3-Clause License
|
# BSD 3-Clause License
|
||||||
#
|
#
|
||||||
# Copyright (c) 2020, TREX Center of Excellence
|
# Copyright (c) 2020, TREX Center of Excellence
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
# Redistribution and use in source and binary forms, with or without
|
# Redistribution and use in source and binary forms, with or without
|
||||||
# modification, are permitted provided that the following conditions are met:
|
# modification, are permitted provided that the following conditions are met:
|
||||||
#
|
#
|
||||||
# 1. Redistributions of source code must retain the above copyright notice, this
|
# 1. Redistributions of source code must retain the above copyright notice, this
|
||||||
# list of conditions and the following disclaimer.
|
# list of conditions and the following disclaimer.
|
||||||
#
|
#
|
||||||
# 2. Redistributions in binary form must reproduce the above copyright notice,
|
# 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
# this list of conditions and the following disclaimer in the documentation
|
# this list of conditions and the following disclaimer in the documentation
|
||||||
# and/or other materials provided with the distribution.
|
# and/or other materials provided with the distribution.
|
||||||
#
|
#
|
||||||
# 3. Neither the name of the copyright holder nor the names of its
|
# 3. Neither the name of the copyright holder nor the names of its
|
||||||
# contributors may be used to endorse or promote products derived from
|
# contributors may be used to endorse or promote products derived from
|
||||||
# this software without specific prior written permission.
|
# this software without specific prior written permission.
|
||||||
#
|
#
|
||||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
# 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_MAJOR=`echo ${PACKAGE_VERSION} | cut -d. -f1`
|
||||||
VERSION_MINOR=`echo ${PACKAGE_VERSION} | cut -d. -f2`
|
VERSION_MINOR=`echo ${PACKAGE_VERSION} | cut -d. -f2`
|
||||||
VERSION_PATCH=`echo ${PACKAGE_VERSION} | cut -d. -f3 | cut -d- -f1`
|
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_MAJOR], [$VERSION_MAJOR], [major version])
|
||||||
AC_DEFINE_UNQUOTED(QMCKL_VERSION_MINOR, [$VERSION_MINOR], [minor 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_PATCH], [$VERSION_PATCH], [patch version])
|
||||||
AC_SUBST([VERSION_MAJOR])
|
AC_SUBST([VERSION_MAJOR])
|
||||||
AC_SUBST([VERSION_MINOR])
|
AC_SUBST([VERSION_MINOR])
|
||||||
AC_SUBST([VERSION_PATCH])
|
AC_SUBST([VERSION_PATCH])
|
||||||
|
@ -92,12 +92,30 @@ AC_CHECK_LIB([pthread], [pthread_create])
|
||||||
# OpenMP
|
# OpenMP
|
||||||
#AC_ARG_WITH(openmp, [AC_HELP_STRING([--with-openmp],[enable OpenMP])], with_omp=$withval, with_omp=no)
|
#AC_ARG_WITH(openmp, [AC_HELP_STRING([--with-openmp],[enable OpenMP])], with_omp=$withval, with_omp=no)
|
||||||
#if test "x$with_omp" = xyes; then
|
#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([],
|
# AX_OPENMP([],
|
||||||
# [AC_MSG_ERROR([Could not find OpenMP flags; configure with --without-openmp])])
|
# [AC_MSG_ERROR([Could not find OpenMP flags; configure with --without-openmp])])
|
||||||
# CFLAGS="${CFLAGS} ${OPENMP_CFLAGS}"
|
# CFLAGS="${CFLAGS} ${OPENMP_CFLAGS}"
|
||||||
#fi
|
#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
|
## BLAS
|
||||||
#AX_BLAS([], [AC_MSG_ERROR([BLAS was not found.])])
|
#AX_BLAS([], [AC_MSG_ERROR([BLAS was not found.])])
|
||||||
|
|
||||||
|
@ -167,7 +185,7 @@ AC_TYPE_UINT64_T
|
||||||
# Checks for library functions.
|
# Checks for library functions.
|
||||||
|
|
||||||
## qmckl
|
## qmckl
|
||||||
AC_FUNC_MALLOC
|
# AC_FUNC_MALLOC
|
||||||
AC_CHECK_FUNCS([memset strerror])
|
AC_CHECK_FUNCS([memset strerror])
|
||||||
|
|
||||||
# Development mode
|
# Development mode
|
||||||
|
@ -196,11 +214,35 @@ if test "x${QMCKL_DEVEL}" != "x"; then
|
||||||
|
|
||||||
fi
|
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
|
#PKG-CONFIG
|
||||||
#mkl-dynamic-lp64-seq
|
#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_LIBS])
|
||||||
AC_SUBST([PKG_CFLAGS])
|
AC_SUBST([PKG_CFLAGS])
|
||||||
AC_SUBST([HAS_CPPCHECK])
|
AC_SUBST([HAS_CPPCHECK])
|
||||||
|
@ -237,4 +279,3 @@ where the optional <target> is:
|
||||||
check - run tests
|
check - run tests
|
||||||
install - install ${PACKAGE_NAME}
|
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
|
#+end_src
|
||||||
|
|
||||||
#+RESULTS: toc
|
#+RESULTS: toc
|
||||||
| qmckl.org | #+TITLE | Introduction | |
|
| qmckl.org | #+TITLE | Introduction | | |
|
||||||
| qmckl_error.org | #+TITLE | Error | handling |
|
| qmckl_error.org | #+TITLE | Error | handling | |
|
||||||
| qmckl_context.org | #+TITLE | Context | |
|
| qmckl_context.org | #+TITLE | Context | | |
|
||||||
| qmckl_memory.org | #+TITLE | Memory | management |
|
| qmckl_memory.org | #+TITLE | Memory | management | |
|
||||||
| qmckl_numprec.org | #+TITLE | Numerical | precision |
|
| qmckl_numprec.org | #+TITLE | Numerical | precision | |
|
||||||
| qmckl_electron.org | #+TITLE | Electrons | |
|
| qmckl_distance.org | #+TITLE | Inter-particle | distances | |
|
||||||
| qmckl_ao.org | #+TITLE | Atomic | Orbitals |
|
| qmckl_nucleus.org | #+TITLE | Nucleus | | |
|
||||||
| qmckl_distance.org | #+TITLE | Inter-particle | distances |
|
| 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
|
#+begin_src python :var data=toc :exports results :results raw
|
||||||
result = []
|
result = []
|
||||||
|
@ -40,20 +49,30 @@ return '\n'.join(result)
|
||||||
- [[./qmckl_context.html][Context]]
|
- [[./qmckl_context.html][Context]]
|
||||||
- [[./qmckl_memory.html][Memory management]]
|
- [[./qmckl_memory.html][Memory management]]
|
||||||
- [[./qmckl_numprec.html][Numerical precision]]
|
- [[./qmckl_numprec.html][Numerical precision]]
|
||||||
|
- [[./qmckl_distance.html][Inter-particle distances]]
|
||||||
|
- [[./qmckl_nucleus.html][Nucleus]]
|
||||||
- [[./qmckl_electron.html][Electrons]]
|
- [[./qmckl_electron.html][Electrons]]
|
||||||
- [[./qmckl_ao.html][Atomic Orbitals]]
|
- [[./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
|
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 main kernels of Quantum Monte Carlo
|
||||||
implementation of the library, we focus on the definition of the API
|
methods.
|
||||||
and the tests, and on a /pedagogical/ presentation of the
|
In this particular implementation of the library, we focus on the
|
||||||
algorithms. We expect the HPC experts to use this repository as a
|
definition of the API and the tests, and on a /pedagogical/
|
||||||
reference for re-writing optimized libraries.
|
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
|
The source code of the library is available at
|
||||||
https://github.com/trex-coe/qmckl
|
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=
|
functions will use the precision specified in the =context=
|
||||||
variable.
|
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
|
** Algorithms
|
||||||
|
|
||||||
Reducing the scaling of an algorithm usually implies also reducing
|
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
|
algorithms are better adapted than linear scaling algorithms. As
|
||||||
QMCkl is a general purpose library, multiple algorithms should be
|
QMCkl is a general purpose library, multiple algorithms should be
|
||||||
implemented adapted to different problem sizes.
|
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~
|
** ~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.
|
TODO: Add description about the external library dependence.
|
||||||
|
|
||||||
#+NAME: qmckl_dgemm_args
|
#+NAME: qmckl_dgemm_args
|
||||||
|
@ -41,7 +42,7 @@ int main() {
|
||||||
| double | beta | in | Array containing the $n \times m$ matrix $B$ |
|
| double | beta | in | Array containing the $n \times m$ matrix $B$ |
|
||||||
| double | C[][ldc] | out | 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~ |
|
| int64_t | ldc | in | Leading dimension of array ~B~ |
|
||||||
|
|
||||||
*** Requirements
|
*** Requirements
|
||||||
|
|
||||||
- ~context~ is not ~QMCKL_NULL_CONTEXT~
|
- ~context~ is not ~QMCKL_NULL_CONTEXT~
|
||||||
|
@ -75,7 +76,7 @@ int main() {
|
||||||
const int64_t ldb,
|
const int64_t ldb,
|
||||||
const double beta,
|
const double beta,
|
||||||
double* const C,
|
double* const C,
|
||||||
const int64_t ldc );
|
const int64_t ldc );
|
||||||
#+END_src
|
#+END_src
|
||||||
|
|
||||||
|
|
||||||
|
@ -145,27 +146,39 @@ integer function qmckl_dgemm_f(context, TransA, TransB, m, n, k, alpha, A, LDA,
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if (LDA_2 .ne. m) then
|
if (LDA_2 /= m) then
|
||||||
info = QMCKL_INVALID_ARG_9
|
info = QMCKL_INVALID_ARG_9
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if (LDB_2 .ne. k) then
|
if (LDB_2 /= k) then
|
||||||
info = QMCKL_INVALID_ARG_10
|
info = QMCKL_INVALID_ARG_10
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if (LDC .ne. m) then
|
if (LDC /= m) then
|
||||||
info = QMCKL_INVALID_ARG_13
|
info = QMCKL_INVALID_ARG_13
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if (TransA) then
|
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
|
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
|
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
|
endif
|
||||||
end function qmckl_dgemm_f
|
end function qmckl_dgemm_f
|
||||||
#+end_src
|
#+end_src
|
||||||
|
@ -251,7 +264,7 @@ integer(qmckl_exit_code) function test_qmckl_dgemm(context) bind(C)
|
||||||
double precision :: x, alpha, beta
|
double precision :: x, alpha, beta
|
||||||
|
|
||||||
TransA = .False.
|
TransA = .False.
|
||||||
TransB = .False.
|
TransB = .False.
|
||||||
m = 1_8
|
m = 1_8
|
||||||
k = 4_8
|
k = 4_8
|
||||||
n = 6_8
|
n = 6_8
|
||||||
|
@ -302,7 +315,7 @@ integer(qmckl_exit_code) function test_qmckl_dgemm(context) bind(C)
|
||||||
deallocate(A,B,C,D)
|
deallocate(A,B,C,D)
|
||||||
end function test_qmckl_dgemm
|
end function test_qmckl_dgemm
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src c :comments link :tangle (eval c_test)
|
#+begin_src c :comments link :tangle (eval c_test)
|
||||||
qmckl_exit_code test_qmckl_dgemm(qmckl_context context);
|
qmckl_exit_code test_qmckl_dgemm(qmckl_context context);
|
||||||
assert(QMCKL_SUCCESS == test_qmckl_dgemm(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
|
#+begin_src c :comments link :tangle (eval c_test) :noweb yes
|
||||||
#include "qmckl.h"
|
#include "qmckl.h"
|
||||||
#include "assert.h"
|
#include "assert.h"
|
||||||
|
#include <stdio.h>
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
@ -19,6 +20,7 @@ int main() {
|
||||||
qmckl_context context;
|
qmckl_context context;
|
||||||
context = qmckl_context_create();
|
context = qmckl_context_create();
|
||||||
|
|
||||||
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Squared distance
|
* Squared distance
|
||||||
|
@ -282,10 +284,17 @@ end function qmckl_distance_sq_f
|
||||||
|
|
||||||
*** Test :noexport:
|
*** Test :noexport:
|
||||||
#+begin_src f90 :tangle (eval f_test)
|
#+begin_src f90 :tangle (eval f_test)
|
||||||
|
|
||||||
integer(qmckl_exit_code) function test_qmckl_distance_sq(context) bind(C)
|
integer(qmckl_exit_code) function test_qmckl_distance_sq(context) bind(C)
|
||||||
|
|
||||||
use qmckl
|
use qmckl
|
||||||
|
use qmckl_verificarlo_f
|
||||||
|
use iso_c_binding
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
|
||||||
integer(qmckl_context), intent(in), value :: context
|
integer(qmckl_context), intent(in), value :: context
|
||||||
|
logical(C_BOOL) :: vfc_err
|
||||||
|
|
||||||
double precision, allocatable :: A(:,:), B(:,:), C(:,:)
|
double precision, allocatable :: A(:,:), B(:,:), C(:,:)
|
||||||
integer*8 :: m, n, LDA, LDB, LDC
|
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
|
LDC = 5
|
||||||
|
|
||||||
allocate( A(LDA,m), B(LDB,n), C(LDC,n) )
|
allocate( A(LDA,m), B(LDB,n), C(LDC,n) )
|
||||||
|
|
||||||
do j=1,m
|
do j=1,m
|
||||||
do i=1,m
|
do i=1,m
|
||||||
A(i,j) = -10.d0 + dble(i+j)
|
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 = &
|
test_qmckl_distance_sq = &
|
||||||
qmckl_distance_sq(context, 'X', 't', m, n, A, LDA, B, LDB, C, LDC)
|
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
|
if (test_qmckl_distance_sq == 0) return
|
||||||
|
|
||||||
|
|
||||||
test_qmckl_distance_sq = &
|
test_qmckl_distance_sq = &
|
||||||
qmckl_distance_sq(context, 't', 'X', m, n, A, LDA, B, LDB, C, LDC)
|
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
|
if (test_qmckl_distance_sq == 0) return
|
||||||
|
|
||||||
|
|
||||||
test_qmckl_distance_sq = &
|
test_qmckl_distance_sq = &
|
||||||
qmckl_distance_sq(context, 'T', 't', m, n, A, LDA, B, LDB, C, LDC)
|
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
|
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 + &
|
x = (A(i,1)-B(j,1))**2 + &
|
||||||
(A(i,2)-B(j,2))**2 + &
|
(A(i,2)-B(j,2))**2 + &
|
||||||
(A(i,3)-B(j,3))**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
|
||||||
end do
|
end do
|
||||||
|
|
||||||
test_qmckl_distance_sq = &
|
test_qmckl_distance_sq = &
|
||||||
qmckl_distance_sq(context, 'n', 'T', m, n, A, LDA, B, LDB, C, LDC)
|
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
|
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 + &
|
x = (A(1,i)-B(j,1))**2 + &
|
||||||
(A(2,i)-B(j,2))**2 + &
|
(A(2,i)-B(j,2))**2 + &
|
||||||
(A(3,i)-B(j,3))**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
|
||||||
end do
|
end do
|
||||||
|
|
||||||
test_qmckl_distance_sq = &
|
test_qmckl_distance_sq = &
|
||||||
qmckl_distance_sq(context, 'T', 'n', m, n, A, LDA, B, LDB, C, LDC)
|
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
|
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 + &
|
x = (A(i,1)-B(1,j))**2 + &
|
||||||
(A(i,2)-B(2,j))**2 + &
|
(A(i,2)-B(2,j))**2 + &
|
||||||
(A(i,3)-B(3,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
|
||||||
end do
|
end do
|
||||||
|
|
||||||
test_qmckl_distance_sq = &
|
test_qmckl_distance_sq = &
|
||||||
qmckl_distance_sq(context, 'n', 'N', m, n, A, LDA, B, LDB, C, LDC)
|
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
|
test_qmckl_distance_sq = QMCKL_FAILURE
|
||||||
|
|
||||||
|
@ -392,8 +418,8 @@ end function test_qmckl_distance_sq
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src c :comments link :tangle (eval c_test)
|
#+begin_src c :comments link :tangle (eval c_test)
|
||||||
qmckl_exit_code test_qmckl_distance_sq(qmckl_context context);
|
qmckl_exit_code test_qmckl_distance_sq(qmckl_context context);
|
||||||
assert(test_qmckl_distance_sq(context) == QMCKL_SUCCESS);
|
assert(test_qmckl_distance_sq(context) == QMCKL_SUCCESS);
|
||||||
#+end_src
|
#+end_src
|
||||||
* Distance
|
* Distance
|
||||||
|
|
||||||
|
@ -690,10 +716,17 @@ end function qmckl_distance_f
|
||||||
|
|
||||||
*** Test :noexport:
|
*** Test :noexport:
|
||||||
#+begin_src f90 :tangle (eval f_test)
|
#+begin_src f90 :tangle (eval f_test)
|
||||||
|
|
||||||
integer(qmckl_exit_code) function test_qmckl_dist(context) bind(C)
|
integer(qmckl_exit_code) function test_qmckl_dist(context) bind(C)
|
||||||
|
|
||||||
use qmckl
|
use qmckl
|
||||||
|
use qmckl_verificarlo_f
|
||||||
|
use iso_c_binding
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
|
||||||
integer(qmckl_context), intent(in), value :: context
|
integer(qmckl_context), intent(in), value :: context
|
||||||
|
logical(C_BOOL) :: vfc_err
|
||||||
|
|
||||||
double precision, allocatable :: A(:,:), B(:,:), C(:,:)
|
double precision, allocatable :: A(:,:), B(:,:), C(:,:)
|
||||||
integer*8 :: m, n, LDA, LDB, LDC
|
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 = &
|
test_qmckl_dist = &
|
||||||
qmckl_distance(context, 'X', 't', m, n, A, LDA, B, LDB, C, LDC)
|
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
|
if (test_qmckl_dist == 0) return
|
||||||
|
|
||||||
test_qmckl_dist = &
|
test_qmckl_dist = &
|
||||||
qmckl_distance(context, 't', 'X', m, n, A, LDA, B, LDB, C, LDC)
|
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
|
if (test_qmckl_dist == 0) return
|
||||||
|
|
||||||
test_qmckl_dist = &
|
test_qmckl_dist = &
|
||||||
qmckl_distance(context, 'T', 't', m, n, A, LDA, B, LDB, C, LDC)
|
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
|
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 + &
|
x = dsqrt((A(i,1)-B(j,1))**2 + &
|
||||||
(A(i,2)-B(j,2))**2 + &
|
(A(i,2)-B(j,2))**2 + &
|
||||||
(A(i,3)-B(j,3))**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
|
||||||
end do
|
end do
|
||||||
|
|
||||||
test_qmckl_dist = &
|
test_qmckl_dist = &
|
||||||
qmckl_distance(context, 'n', 'T', m, n, A, LDA, B, LDB, C, LDC)
|
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
|
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 + &
|
x = dsqrt((A(1,i)-B(j,1))**2 + &
|
||||||
(A(2,i)-B(j,2))**2 + &
|
(A(2,i)-B(j,2))**2 + &
|
||||||
(A(3,i)-B(j,3))**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
|
||||||
end do
|
end do
|
||||||
|
|
||||||
test_qmckl_dist = &
|
test_qmckl_dist = &
|
||||||
qmckl_distance(context, 'T', 'n', m, n, A, LDA, B, LDB, C, LDC)
|
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
|
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 + &
|
x = dsqrt((A(i,1)-B(1,j))**2 + &
|
||||||
(A(i,2)-B(2,j))**2 + &
|
(A(i,2)-B(2,j))**2 + &
|
||||||
(A(i,3)-B(3,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
|
||||||
end do
|
end do
|
||||||
|
|
||||||
test_qmckl_dist = &
|
test_qmckl_dist = &
|
||||||
qmckl_distance(context, 'n', 'N', m, n, A, LDA, B, LDB, C, LDC)
|
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
|
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 + &
|
x = dsqrt((A(1,i)-B(1,j))**2 + &
|
||||||
(A(2,i)-B(2,j))**2 + &
|
(A(2,i)-B(2,j))**2 + &
|
||||||
(A(3,i)-B(3,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
|
||||||
end do
|
end do
|
||||||
|
|
||||||
|
@ -800,8 +857,8 @@ end function test_qmckl_dist
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src c :comments link :tangle (eval c_test)
|
#+begin_src c :comments link :tangle (eval c_test)
|
||||||
qmckl_exit_code test_qmckl_dist(qmckl_context context);
|
qmckl_exit_code test_qmckl_dist(qmckl_context context);
|
||||||
assert(test_qmckl_dist(context) == QMCKL_SUCCESS);
|
assert(test_qmckl_dist(context) == QMCKL_SUCCESS);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Rescaled Distance
|
* Rescaled Distance
|
||||||
|
@ -1114,12 +1171,12 @@ end function qmckl_distance_rescaled_f
|
||||||
:FRetType: qmckl_exit_code
|
:FRetType: qmckl_exit_code
|
||||||
:END:
|
: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.
|
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
|
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.
|
contains the gradient vector and the last index is the laplacian.
|
||||||
|
|
||||||
|
|
||||||
\[
|
\[
|
||||||
C_{ij} = \left( 1 - \exp{-\kappa C_{ij}}\right)/\kappa
|
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)
|
\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:
|
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}
|
\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:
|
as follows:
|
||||||
|
|
||||||
\[
|
\[
|
||||||
|
@ -1462,7 +1519,9 @@ end function qmckl_distance_rescaled_deriv_e_f
|
||||||
* End of files :noexport:
|
* End of files :noexport:
|
||||||
|
|
||||||
#+begin_src c :comments link :tangle (eval c_test)
|
#+begin_src c :comments link :tangle (eval c_test)
|
||||||
|
|
||||||
assert (qmckl_context_destroy(context) == QMCKL_SUCCESS);
|
assert (qmckl_context_destroy(context) == QMCKL_SUCCESS);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,11 @@ up-spin and down-spin electrons, and the electron coordinates.
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#+end_src
|
#+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
|
#+begin_src c :tangle (eval c_test) :noweb yes
|
||||||
#include "qmckl.h"
|
#include "qmckl.h"
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
@ -2408,6 +2413,10 @@ assert (rc == QMCKL_SUCCESS);
|
||||||
#endif
|
#endif
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src c :tangle (eval h_private_func)
|
||||||
|
#endif
|
||||||
|
#+end_src
|
||||||
|
|
||||||
*** Test
|
*** Test
|
||||||
#+begin_src c :tangle (eval c_test)
|
#+begin_src c :tangle (eval c_test)
|
||||||
if (qmckl_context_destroy(context) != QMCKL_SUCCESS)
|
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;
|
qmckl_context_struct* const ctx = (qmckl_context_struct* const) context;
|
||||||
assert (ctx != NULL); /* Impossible because the context is valid. */
|
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(function_name, ctx->error.function, QMCKL_MAX_FUN_LEN-1);
|
||||||
strncpy(message , ctx->error.message , QMCKL_MAX_MSG_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;
|
(*exit_code) = ctx->error.exit_code;
|
||||||
}
|
}
|
||||||
qmckl_unlock(context);
|
qmckl_unlock(context);
|
||||||
|
|
|
@ -13,6 +13,11 @@ these factors along with their derivatives.
|
||||||
#+end_src
|
#+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)
|
#+begin_src c :tangle (eval h_private_type)
|
||||||
#ifndef QMCKL_JASTROW_HPT
|
#ifndef QMCKL_JASTROW_HPT
|
||||||
#define QMCKL_JASTROW_HPT
|
#define QMCKL_JASTROW_HPT
|
||||||
|
@ -5469,6 +5474,10 @@ assert(fabs(factor_een_deriv_e[0][0] + 0.0005481671107226865) < 1e-12);
|
||||||
#endif
|
#endif
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src c :tangle (eval h_private_func)
|
||||||
|
#endif
|
||||||
|
#+end_src
|
||||||
|
|
||||||
*** Test
|
*** Test
|
||||||
#+begin_src c :tangle (eval c_test)
|
#+begin_src c :tangle (eval c_test)
|
||||||
rc = qmckl_context_destroy(context);
|
rc = qmckl_context_destroy(context);
|
||||||
|
|
|
@ -41,6 +41,11 @@ int main() {
|
||||||
#+end_src
|
#+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
|
#+begin_src c :tangle (eval h_private_type) :noweb yes
|
||||||
#ifndef QMCKL_MEMORY_HPT
|
#ifndef QMCKL_MEMORY_HPT
|
||||||
#define QMCKL_MEMORY_HPT
|
#define QMCKL_MEMORY_HPT
|
||||||
|
@ -273,6 +278,11 @@ assert(rc == QMCKL_SUCCESS);
|
||||||
|
|
||||||
* End of files :noexport:
|
* 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)
|
#+begin_src c :comments org :tangle (eval h_private_type)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
228
org/qmckl_mo.org
228
org/qmckl_mo.org
|
@ -21,6 +21,11 @@ function to calculate the MOs.
|
||||||
#+end_src
|
#+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)
|
#+begin_src c :tangle (eval h_private_type)
|
||||||
#ifndef QMCKL_MO_HPT
|
#ifndef QMCKL_MO_HPT
|
||||||
#define QMCKL_MO_HPT
|
#define QMCKL_MO_HPT
|
||||||
|
@ -78,18 +83,17 @@ int main() {
|
||||||
|
|
||||||
The following arrays are stored in the context:
|
The following arrays are stored in the context:
|
||||||
|
|
||||||
|---------------------+--------------------+--------------------------------------------------------------|
|
|---------------+--------------------+----------------------|
|
||||||
| ~type~ | | Gaussian (~'G'~) or Slater (~'S'~) |
|
| ~mo_num~ | | Number of MOs |
|
||||||
| ~mo_num~ | | Number of MOs |
|
| ~coefficient~ | ~[mo_num][ao_num]~ | Orbital coefficients |
|
||||||
| ~coefficient~ | ~[mo_num, ao_num]~ | Orbital coefficients |
|
|
||||||
|
|
||||||
Computed data:
|
Computed data:
|
||||||
|
|
||||||
|---------------+-----------------------------------+----------------------------------------------------------------------------------------|
|
|---------------+-------------------------+----------------------------------------------------------------------------------------|
|
||||||
|---------------+-----------------------------------+----------------------------------------------------------------------------------------|
|
|---------------+-------------------------+----------------------------------------------------------------------------------------|
|
||||||
| ~mo_vgl~ | ~[5][elec_num][mo_num]~ | Value, gradients, Laplacian of the MOs at electron positions |
|
| ~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
|
** Data structure
|
||||||
|
|
||||||
|
@ -103,7 +107,6 @@ typedef struct qmckl_mo_basis_struct {
|
||||||
|
|
||||||
int32_t uninitialized;
|
int32_t uninitialized;
|
||||||
bool provided;
|
bool provided;
|
||||||
char type;
|
|
||||||
} qmckl_mo_basis_struct;
|
} qmckl_mo_basis_struct;
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
@ -115,33 +118,24 @@ typedef struct qmckl_mo_basis_struct {
|
||||||
this mechanism.
|
this mechanism.
|
||||||
|
|
||||||
** Access functions
|
** Access functions
|
||||||
|
|
||||||
#+begin_src c :comments org :tangle (eval h_private_func) :exports none
|
#+begin_src c :comments org :tangle (eval h_func) :exports none
|
||||||
char qmckl_get_mo_basis_type (const qmckl_context context);
|
qmckl_exit_code
|
||||||
int64_t qmckl_get_mo_basis_mo_num (const qmckl_context context);
|
qmckl_get_mo_basis_mo_num (const qmckl_context context,
|
||||||
double* qmckl_get_mo_basis_coefficient (const qmckl_context context);
|
int64_t* mo_num);
|
||||||
#+end_src
|
#+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
|
#+begin_src c :comments org :tangle (eval c) :noweb yes :exports none
|
||||||
char qmckl_get_mo_basis_type (const qmckl_context context) {
|
qmckl_exit_code
|
||||||
|
qmckl_get_mo_basis_mo_num (const qmckl_context context,
|
||||||
if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) {
|
int64_t* mo_num)
|
||||||
return (char) 0;
|
{
|
||||||
|
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;
|
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;
|
int32_t mask = 1;
|
||||||
|
|
||||||
if ( (ctx->mo_basis.uninitialized & mask) != 0) {
|
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);
|
assert (ctx->mo_basis.mo_num > (int64_t) 0);
|
||||||
return ctx->mo_basis.type;
|
,*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) {
|
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;
|
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;
|
int32_t mask = 1 << 1;
|
||||||
|
|
||||||
if ( (ctx->mo_basis.uninitialized & mask) != 0) {
|
if ( (ctx->ao_basis.uninitialized & mask) != 0) {
|
||||||
return (int64_t) 0;
|
return qmckl_failwith( context,
|
||||||
|
QMCKL_NOT_PROVIDED,
|
||||||
|
"qmckl_get_mo_basis_coefficient",
|
||||||
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
assert (ctx->mo_basis.mo_num > (int64_t) 0);
|
if (coefficient == NULL) {
|
||||||
return ctx->mo_basis.mo_num;
|
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) {
|
bool qmckl_mo_basis_provided(const qmckl_context context) {
|
||||||
|
|
||||||
if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) {
|
if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) {
|
||||||
|
@ -196,12 +240,11 @@ bool qmckl_mo_basis_provided(const qmckl_context context) {
|
||||||
called.
|
called.
|
||||||
|
|
||||||
#+begin_src c :comments org :tangle (eval h_func)
|
#+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_mo_num (qmckl_context context, const int64_t mo_num);
|
||||||
qmckl_exit_code qmckl_set_mo_basis_coefficient (qmckl_context context, const double * coefficient);
|
qmckl_exit_code qmckl_set_mo_basis_coefficient (qmckl_context context, const double * coefficient);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+NAME:pre2
|
#+NAME:pre
|
||||||
#+begin_src c :exports none
|
#+begin_src c :exports none
|
||||||
if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) {
|
if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) {
|
||||||
return 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;
|
qmckl_context_struct* const ctx = (qmckl_context_struct* const) context;
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+NAME:post2
|
#+NAME:post
|
||||||
#+begin_src c :exports none
|
#+begin_src c :exports none
|
||||||
ctx->mo_basis.uninitialized &= ~mask;
|
ctx->mo_basis.uninitialized &= ~mask;
|
||||||
ctx->mo_basis.provided = (ctx->mo_basis.uninitialized == 0);
|
ctx->mo_basis.provided = (ctx->mo_basis.uninitialized == 0);
|
||||||
|
@ -223,24 +266,8 @@ return QMCKL_SUCCESS;
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src c :comments org :tangle (eval c) :noweb yes :exports none
|
#+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) {
|
qmckl_exit_code qmckl_set_mo_basis_mo_num(qmckl_context context, const int64_t mo_num) {
|
||||||
<<pre2>>
|
<<pre>>
|
||||||
|
|
||||||
if (mo_num <= 0) {
|
if (mo_num <= 0) {
|
||||||
return qmckl_failwith( context,
|
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");
|
"mo_num <= 0");
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t mask = 1 << 1;
|
int32_t mask = 1 ;
|
||||||
ctx->mo_basis.mo_num = mo_num;
|
ctx->mo_basis.mo_num = mo_num;
|
||||||
|
|
||||||
<<post2>>
|
<<post>>
|
||||||
}
|
}
|
||||||
|
|
||||||
qmckl_exit_code qmckl_set_mo_basis_coefficient(qmckl_context context, const double* coefficient) {
|
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) {
|
if (ctx->mo_basis.coefficient != NULL) {
|
||||||
qmckl_exit_code rc = qmckl_free(context, ctx->mo_basis.coefficient);
|
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;
|
ctx->mo_basis.coefficient = new_array;
|
||||||
|
|
||||||
<<post2>>
|
<<post>>
|
||||||
}
|
}
|
||||||
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
@ -398,20 +425,13 @@ qmckl_exit_code qmckl_provide_mo_vgl(qmckl_context context)
|
||||||
}
|
}
|
||||||
|
|
||||||
qmckl_exit_code rc;
|
qmckl_exit_code rc;
|
||||||
if (ctx->mo_basis.type == 'G') {
|
rc = qmckl_compute_mo_basis_vgl(context,
|
||||||
rc = qmckl_compute_mo_basis_gaussian_vgl(context,
|
ctx->ao_basis.ao_num,
|
||||||
ctx->ao_basis.ao_num,
|
ctx->mo_basis.mo_num,
|
||||||
ctx->mo_basis.mo_num,
|
ctx->electron.num,
|
||||||
ctx->electron.num,
|
ctx->mo_basis.coefficient,
|
||||||
ctx->mo_basis.coefficient,
|
ctx->ao_basis.ao_vgl,
|
||||||
ctx->ao_basis.ao_vgl,
|
ctx->mo_basis.mo_vgl);
|
||||||
ctx->mo_basis.mo_vgl);
|
|
||||||
} else {
|
|
||||||
return qmckl_failwith( context,
|
|
||||||
QMCKL_FAILURE,
|
|
||||||
"compute_mo_basis_vgl",
|
|
||||||
"Not yet implemented");
|
|
||||||
}
|
|
||||||
if (rc != QMCKL_SUCCESS) {
|
if (rc != QMCKL_SUCCESS) {
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
@ -425,22 +445,22 @@ qmckl_exit_code qmckl_provide_mo_vgl(qmckl_context context)
|
||||||
|
|
||||||
*** Compute
|
*** Compute
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:Name: qmckl_compute_mo_basis_gaussian_vgl
|
:Name: qmckl_compute_mo_basis_vgl
|
||||||
:CRetType: qmckl_exit_code
|
:CRetType: qmckl_exit_code
|
||||||
:FRetType: qmckl_exit_code
|
:FRetType: qmckl_exit_code
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
#+NAME: qmckl_mo_basis_gaussian_vgl_args
|
#+NAME: qmckl_mo_basis_gaussian_vgl_args
|
||||||
| ~qmckl_context~ | ~context~ | in | Global state |
|
| ~qmckl_context~ | ~context~ | in | Global state |
|
||||||
| ~int64_t~ | ~ao_num~ | in | Number of AOs |
|
| ~int64_t~ | ~ao_num~ | in | Number of AOs |
|
||||||
| ~int64_t~ | ~mo_num~ | in | Number of MOs |
|
| ~int64_t~ | ~mo_num~ | in | Number of MOs |
|
||||||
| ~int64_t~ | ~elec_num~ | in | Number of electrons |
|
| ~int64_t~ | ~elec_num~ | in | Number of electrons |
|
||||||
| ~double~ | ~coef_normalized[mo_num][ao_num]~ | in | AO to MO transformation matrix |
|
| ~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~ | ~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 |
|
| ~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
|
#+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, &
|
ao_num, mo_num, elec_num, &
|
||||||
coef_normalized, ao_vgl, mo_vgl) &
|
coef_normalized, ao_vgl, mo_vgl) &
|
||||||
result(info)
|
result(info)
|
||||||
|
@ -528,14 +548,14 @@ integer function qmckl_compute_mo_basis_gaussian_vgl_f(context, &
|
||||||
info = QMCKL_FAILURE
|
info = QMCKL_FAILURE
|
||||||
end if
|
end if
|
||||||
|
|
||||||
end function qmckl_compute_mo_basis_gaussian_vgl_f
|
end function qmckl_compute_mo_basis_vgl_f
|
||||||
#+end_src
|
#+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:
|
#+RESULTS:
|
||||||
#+begin_src c :tangle (eval h_func) :comments org
|
#+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 qmckl_context context,
|
||||||
const int64_t ao_num,
|
const int64_t ao_num,
|
||||||
const int64_t mo_num,
|
const int64_t mo_num,
|
||||||
|
@ -546,11 +566,11 @@ end function qmckl_compute_mo_basis_gaussian_vgl_f
|
||||||
#+end_src
|
#+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:
|
#+RESULTS:
|
||||||
#+begin_src f90 :tangle (eval f) :comments org :exports none
|
#+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) &
|
(context, ao_num, mo_num, elec_num, coef_normalized, ao_vgl, mo_vgl) &
|
||||||
bind(C) result(info)
|
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(in) :: ao_vgl(ao_num,elec_num,5)
|
||||||
real (c_double ) , intent(out) :: mo_vgl(mo_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
|
integer(c_int32_t), external :: qmckl_compute_mo_basis_vgl_f
|
||||||
info = qmckl_compute_mo_basis_gaussian_vgl_f &
|
info = qmckl_compute_mo_basis_vgl_f &
|
||||||
(context, ao_num, mo_num, elec_num, coef_normalized, ao_vgl, mo_vgl)
|
(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
|
#+end_src
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
*** Test
|
*** Test
|
||||||
|
|
||||||
#+begin_src python :results output :exports none
|
#+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);
|
assert (rc == QMCKL_SUCCESS);
|
||||||
|
|
||||||
/* Set up MO data */
|
/* Set up MO data */
|
||||||
rc = qmckl_set_mo_basis_type(context, typ);
|
|
||||||
assert (rc == QMCKL_SUCCESS);
|
|
||||||
|
|
||||||
const int64_t mo_num = chbrclf_mo_num;
|
const int64_t mo_num = chbrclf_mo_num;
|
||||||
rc = qmckl_set_mo_basis_mo_num(context, mo_num);
|
rc = qmckl_set_mo_basis_mo_num(context, mo_num);
|
||||||
assert (rc == QMCKL_SUCCESS);
|
assert (rc == QMCKL_SUCCESS);
|
||||||
|
@ -827,13 +842,16 @@ printf("\n");
|
||||||
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
|
||||||
* End of files :noexport:
|
* End of files :noexport:
|
||||||
|
|
||||||
#+begin_src c :tangle (eval h_private_type)
|
#+begin_src c :tangle (eval h_private_type)
|
||||||
#endif
|
#endif
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src c :tangle (eval h_private_func)
|
||||||
|
#endif
|
||||||
|
#+end_src
|
||||||
|
|
||||||
*** Test
|
*** Test
|
||||||
#+begin_src c :tangle (eval c_test)
|
#+begin_src c :tangle (eval c_test)
|
||||||
rc = qmckl_context_destroy(context);
|
rc = qmckl_context_destroy(context);
|
||||||
|
|
|
@ -10,6 +10,11 @@ All the data relative to the molecular geometry is described here.
|
||||||
#+end_src
|
#+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)
|
#+begin_src c :tangle (eval h_private_type)
|
||||||
#ifndef QMCKL_NUCLEUS_HPT
|
#ifndef QMCKL_NUCLEUS_HPT
|
||||||
#define QMCKL_NUCLEUS_HPT
|
#define QMCKL_NUCLEUS_HPT
|
||||||
|
@ -1138,6 +1143,10 @@ assert(rep - 318.2309879436158 < 1.e-10);
|
||||||
#endif
|
#endif
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src c :tangle (eval h_private_func)
|
||||||
|
#endif
|
||||||
|
#+end_src
|
||||||
|
|
||||||
*** Test
|
*** Test
|
||||||
#+begin_src c :tangle (eval c_test)
|
#+begin_src c :tangle (eval c_test)
|
||||||
if (qmckl_context_destroy(context) != QMCKL_SUCCESS)
|
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
|
#+BEGIN_example
|
||||||
2
|
2
|
||||||
N2
|
N2
|
||||||
N 0.000000 0.000000 0.000000
|
N 0.000000 0.000000 0.00
|
||||||
N 0.000000 0.000000 2.059801
|
N 0.000000 0.000000 1.09
|
||||||
#+END_example
|
#+END_example
|
||||||
|
|
||||||
Nuclear coordinates are stored in atomic units in transposed format.
|
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_context.org
|
||||||
qmckl_memory.org
|
qmckl_memory.org
|
||||||
qmckl_numprec.org
|
qmckl_numprec.org
|
||||||
|
qmckl_distance.org
|
||||||
qmckl_nucleus.org
|
qmckl_nucleus.org
|
||||||
qmckl_electron.org
|
qmckl_electron.org
|
||||||
qmckl_ao.org
|
qmckl_ao.org
|
||||||
qmckl_mo.org
|
qmckl_mo.org
|
||||||
qmckl_jastrow.org
|
qmckl_jastrow.org
|
||||||
qmckl_sherman_morrison_woodbury.org
|
qmckl_sherman_morrison_woodbury.org
|
||||||
qmckl_distance.org
|
|
||||||
qmckl_utils.org
|
qmckl_utils.org
|
||||||
qmckl_blas.org
|
qmckl_blas.org
|
||||||
|
qmckl_trexio.org
|
||||||
|
qmckl_verificarlo.org
|
||||||
qmckl_tests.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=${i%.org}.exported
|
||||||
exported=$(dirname $exported)/.$(basename $exported)
|
exported=$(dirname $exported)/.$(basename $exported)
|
||||||
NOW=$(date +"%m%d%H%M.%S")
|
NOW=$(date +"%m%d%H%M.%S")
|
||||||
extract_doc ${i} > $exported
|
extract_doc ${i} &> $exported
|
||||||
|
rc=$?
|
||||||
|
|
||||||
# Make log file older than the exported files
|
# Make log file older than the exported files
|
||||||
touch -t ${NOW} $exported
|
touch -t ${NOW} $exported
|
||||||
|
|
||||||
|
# Fail if tangling failed
|
||||||
|
if [[ $rc -ne 0 ]] ; then
|
||||||
|
cat $exported
|
||||||
|
exit rc
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -134,7 +134,7 @@ def main():
|
||||||
DEPS[fo] += [f90, "$(src_qmckl_fo)"]
|
DEPS[fo] += [f90, "$(src_qmckl_fo)"]
|
||||||
else:
|
else:
|
||||||
DEPS[fo] = [f90, "$(src_qmckl_fo)"]
|
DEPS[fo] = [f90, "$(src_qmckl_fo)"]
|
||||||
|
|
||||||
if "(eval fh_func)" in grep:
|
if "(eval fh_func)" in grep:
|
||||||
FH_FUNC_FILES += [fh_func]
|
FH_FUNC_FILES += [fh_func]
|
||||||
|
|
||||||
|
@ -151,7 +151,7 @@ def main():
|
||||||
else:
|
else:
|
||||||
DEPS[fh_type] = [tangled]
|
DEPS[fh_type] = [tangled]
|
||||||
|
|
||||||
|
|
||||||
if "(eval c_test)" in grep:
|
if "(eval c_test)" in grep:
|
||||||
C_TEST_FILES += [c_test]
|
C_TEST_FILES += [c_test]
|
||||||
|
|
||||||
|
@ -164,7 +164,7 @@ def main():
|
||||||
TESTS[c_test_x] += [c_test, "$(qmckl_h)"]
|
TESTS[c_test_x] += [c_test, "$(qmckl_h)"]
|
||||||
else:
|
else:
|
||||||
TESTS[c_test_x] = [c_test, "$(qmckl_h)"]
|
TESTS[c_test_x] = [c_test, "$(qmckl_h)"]
|
||||||
|
|
||||||
if "(eval f_test)" in grep:
|
if "(eval f_test)" in grep:
|
||||||
F_TEST_FILES += [f_test]
|
F_TEST_FILES += [f_test]
|
||||||
|
|
||||||
|
@ -181,20 +181,20 @@ def main():
|
||||||
output = ["",
|
output = ["",
|
||||||
"## Source files",
|
"## Source files",
|
||||||
"",
|
"",
|
||||||
"ORG_FILES="+" ".join(ORG_FILES),
|
"ORG_FILES="+" ".join(ORG_FILES),
|
||||||
"TANGLED_FILES="+" ".join(TANGLED_FILES),
|
"TANGLED_FILES="+" ".join(TANGLED_FILES),
|
||||||
"EXPORTED_FILES="+" ".join(EXPORTED_FILES),
|
"EXPORTED_FILES="+" ".join(EXPORTED_FILES),
|
||||||
"C_FILES="+" ".join(C_FILES),
|
"C_FILES="+" ".join(C_FILES),
|
||||||
"F_FILES="+" ".join(F_FILES),
|
"F_FILES="+" ".join(F_FILES),
|
||||||
"C_O_FILES="+" ".join(C_O_FILES),
|
"C_O_FILES="+" ".join(C_O_FILES),
|
||||||
"FH_FUNC_FILES="+" ".join(FH_FUNC_FILES),
|
"FH_FUNC_FILES="+" ".join(FH_FUNC_FILES),
|
||||||
"FH_TYPE_FILES="+" ".join(FH_TYPE_FILES),
|
"FH_TYPE_FILES="+" ".join(FH_TYPE_FILES),
|
||||||
"H_FUNC_FILES="+" ".join(H_FUNC_FILES),
|
"H_FUNC_FILES="+" ".join(H_FUNC_FILES),
|
||||||
"H_TYPE_FILES="+" ".join(H_TYPE_FILES),
|
"H_TYPE_FILES="+" ".join(H_TYPE_FILES),
|
||||||
"H_PRIVATE_FUNC_FILES="+" ".join(H_PRIVATE_FUNC_FILES),
|
"H_PRIVATE_FUNC_FILES="+" ".join(H_PRIVATE_FUNC_FILES),
|
||||||
"H_PRIVATE_TYPE_FILES="+" ".join(H_PRIVATE_TYPE_FILES),
|
"H_PRIVATE_TYPE_FILES="+" ".join(H_PRIVATE_TYPE_FILES),
|
||||||
"C_TEST_FILES="+" ".join(C_TEST_FILES),
|
"C_TEST_FILES="+" ".join(C_TEST_FILES),
|
||||||
"F_TEST_FILES="+" ".join(F_TEST_FILES),
|
"F_TEST_FILES="+" ".join(F_TEST_FILES),
|
||||||
"TESTS="+" ".join(TESTS.keys()).replace("$(srcdir)/",""),
|
"TESTS="+" ".join(TESTS.keys()).replace("$(srcdir)/",""),
|
||||||
"HTML_FILES="+" ".join(HTML.values()),
|
"HTML_FILES="+" ".join(HTML.values()),
|
||||||
"TEXT_FILES="+" ".join(TEXT.values()),
|
"TEXT_FILES="+" ".join(TEXT.values()),
|
||||||
|
@ -234,10 +234,17 @@ def main():
|
||||||
prefix = "tests_" + f.rsplit("/",1)[-1]
|
prefix = "tests_" + f.rsplit("/",1)[-1]
|
||||||
output += [ prefix + "_SOURCES = " + \
|
output += [ prefix + "_SOURCES = " + \
|
||||||
" ".join(TESTS[f]).replace("$(srcdir)",""),
|
" ".join(TESTS[f]).replace("$(srcdir)",""),
|
||||||
prefix + "_LDADD = src/libqmckl.la",
|
prefix + "_LDADD = src/libqmckl.la",
|
||||||
prefix + "_LDFLAGS = -no-install",
|
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+= ["",
|
output+= ["",
|
||||||
"## Documentation",
|
"## 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=${i%.org}.tangled
|
||||||
tangled=$(dirname $tangled)/.$(basename $tangled)
|
tangled=$(dirname $tangled)/.$(basename $tangled)
|
||||||
NOW=$(date +"%m%d%H%M.%S")
|
NOW=$(date +"%m%d%H%M.%S")
|
||||||
tangle ${i} > $tangled
|
tangle ${i} &> $tangled
|
||||||
|
rc=$?
|
||||||
# Make log file older than the tangled files
|
# Make log file older than the tangled files
|
||||||
touch -t ${NOW} $tangled
|
touch -t ${NOW} $tangled
|
||||||
|
# Fail if tangling failed
|
||||||
|
if [[ $rc -ne 0 ]] ; then
|
||||||
|
cat $tangled
|
||||||
|
exit rc
|
||||||
|
fi
|
||||||
done
|
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