mirror of
https://github.com/TREX-CoE/trexio.git
synced 2024-12-23 04:43:57 +01:00
Merge branch 'master' of https://github.com/joguenzl/trexio
This commit is contained in:
commit
2cb925c1f5
35
.github/workflows/actions.yml
vendored
35
.github/workflows/actions.yml
vendored
@ -20,7 +20,7 @@ jobs:
|
|||||||
message: ${{ steps.commit_message.outputs.message }}
|
message: ${{ steps.commit_message.outputs.message }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout the repo
|
- name: Checkout the repo
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@e2f20e631ae6d7dd3b768f56a5d2af784dd54791
|
||||||
# Gets the correct commit message for pull request
|
# Gets the correct commit message for pull request
|
||||||
with:
|
with:
|
||||||
ref: ${{ github.event.pull_request.head.sha }}
|
ref: ${{ github.event.pull_request.head.sha }}
|
||||||
@ -31,15 +31,13 @@ jobs:
|
|||||||
COMMIT_MSG=$(git log --no-merges -1 --oneline)
|
COMMIT_MSG=$(git log --no-merges -1 --oneline)
|
||||||
echo "::set-output name=message::$COMMIT_MSG"
|
echo "::set-output name=message::$COMMIT_MSG"
|
||||||
|
|
||||||
|
|
||||||
trexio_ubuntu:
|
trexio_ubuntu:
|
||||||
|
|
||||||
runs-on: ubuntu-20.04
|
|
||||||
name: x86 Ubuntu 20.04
|
name: x86 Ubuntu 20.04
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
needs: get_commit_message
|
needs: get_commit_message
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@e2f20e631ae6d7dd3b768f56a5d2af784dd54791
|
||||||
|
|
||||||
- name: install dependencies
|
- name: install dependencies
|
||||||
run: |
|
run: |
|
||||||
@ -84,7 +82,7 @@ jobs:
|
|||||||
if: >-
|
if: >-
|
||||||
contains(needs.get_commit_message.outputs.message, '[wheel build]') ||
|
contains(needs.get_commit_message.outputs.message, '[wheel build]') ||
|
||||||
github.event_name == 'release'
|
github.event_name == 'release'
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@82c141cc518b40d92cc801eee768e7aafc9c2fa2
|
||||||
with:
|
with:
|
||||||
name: pytrexio-source
|
name: pytrexio-source
|
||||||
path: ./trexio-*.tar.gz
|
path: ./trexio-*.tar.gz
|
||||||
@ -114,29 +112,38 @@ jobs:
|
|||||||
run: make maintainer-clean
|
run: make maintainer-clean
|
||||||
|
|
||||||
trexio_macos:
|
trexio_macos:
|
||||||
|
name: x86 MacOS 12
|
||||||
runs-on: macos-11
|
runs-on: macos-12
|
||||||
name: x86 MacOS 11
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@e2f20e631ae6d7dd3b768f56a5d2af784dd54791
|
||||||
|
|
||||||
- name: install dependencies
|
- name: install dependencies
|
||||||
run: |
|
run: |
|
||||||
brew install emacs
|
brew install emacs
|
||||||
brew install hdf5
|
brew install hdf5@1.12
|
||||||
brew install automake
|
brew install automake
|
||||||
|
brew --prefix hdf5
|
||||||
|
|
||||||
- name: configure with autotools
|
- name: configure with autotools
|
||||||
run: |
|
run: |
|
||||||
./autogen.sh
|
./autogen.sh
|
||||||
./configure FC=gfortran-10 --enable-silent-rules
|
./configure FC=gfortran-12 --enable-silent-rules
|
||||||
|
|
||||||
- name: compile TREXIO
|
- name: compile TREXIO
|
||||||
run: make -j 2
|
run: make -j3
|
||||||
|
|
||||||
- name: check TREXIO
|
- name: check TREXIO
|
||||||
run: make check
|
run: make -j3 check
|
||||||
|
|
||||||
|
- name: compile Python API
|
||||||
|
run: |
|
||||||
|
export H5_CFLAGS="-I$(brew --prefix hdf5)/include"
|
||||||
|
export H5_LDFLAGS="-L$(brew --prefix hdf5)/lib"
|
||||||
|
make python-install
|
||||||
|
|
||||||
|
- name: test Python API
|
||||||
|
run: make python-test
|
||||||
|
|
||||||
- name: Archive test log file
|
- name: Archive test log file
|
||||||
if: failure()
|
if: failure()
|
||||||
|
37
.github/workflows/build-wheels.yml
vendored
37
.github/workflows/build-wheels.yml
vendored
@ -21,7 +21,7 @@ jobs:
|
|||||||
message: ${{ steps.commit_message.outputs.message }}
|
message: ${{ steps.commit_message.outputs.message }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout the repo
|
- name: Checkout the repo
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
# Gets the correct commit message for pull request
|
# Gets the correct commit message for pull request
|
||||||
with:
|
with:
|
||||||
ref: ${{ github.event.pull_request.head.sha }}
|
ref: ${{ github.event.pull_request.head.sha }}
|
||||||
@ -42,14 +42,14 @@ jobs:
|
|||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
manylinux_tag: [2010_x86_64, 2014_x86_64, 2_24_x86_64]
|
manylinux_tag: [2014_x86_64, 2_24_x86_64]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout the branch
|
- name: Checkout the branch
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: Set up Python
|
- name: Set up Python
|
||||||
uses: actions/setup-python@v1
|
uses: actions/setup-python@v4
|
||||||
with:
|
with:
|
||||||
python-version: '3.9'
|
python-version: '3.9'
|
||||||
|
|
||||||
@ -103,22 +103,14 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
os: [macos-10.15]
|
os: [macos-12]
|
||||||
python-version: ['3.6', '3.7', '3.8', '3.9', '3.10']
|
python-version: ['3.7', '3.8', '3.9', '3.10', '3.11']
|
||||||
# TODO: normally, one could include macos-11 and the OS list above but the produced wheels receive an error upon installation:
|
|
||||||
# ERROR: trexio-1.1.0-cp39-cp39-macosx_11_0_x86_64.whl is not a supported wheel on this platform.
|
|
||||||
# This happens even with the MACOSX_DEPLOYMENT_TARGET trick. Perhaps it can be solved by configuring the build system
|
|
||||||
# to produce the wheels for MacOS-11 from the very beginning
|
|
||||||
#exclude:
|
|
||||||
# - os: macos-11
|
|
||||||
env:
|
|
||||||
H5_LDFLAGS: '-L/usr/local/Cellar/hdf5/1.12.1/lib'
|
|
||||||
H5_CFLAGS: '-I/usr/local/Cellar/hdf5/1.12.1/include'
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: Set up Python
|
- name: Set up Python
|
||||||
uses: actions/setup-python@v2
|
uses: actions/setup-python@v4
|
||||||
with:
|
with:
|
||||||
python-version: ${{ matrix.python-version }}
|
python-version: ${{ matrix.python-version }}
|
||||||
|
|
||||||
@ -128,11 +120,6 @@ jobs:
|
|||||||
- name: Install HDF5
|
- name: Install HDF5
|
||||||
run: brew install hdf5@1.12
|
run: brew install hdf5@1.12
|
||||||
|
|
||||||
# This step is needed to produce wheels with the correct platform tag for MacOS-11 (Big Sur)
|
|
||||||
#- name: Set MACOSX_DEPLOYMENT_TARGET environment variable
|
|
||||||
# if: ${{ matrix.os == 'macos-11' }}
|
|
||||||
# run: echo "MACOSX_DEPLOYMENT_TARGET=11.0" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: Compute the PYTREXIO_VERSION environment variable
|
- name: Compute the PYTREXIO_VERSION environment variable
|
||||||
run: echo "PYTREXIO_VERSION=$(grep __version__ python/pytrexio/_version.py | cut -d\ -f3 | tr -d '"')" >> $GITHUB_ENV
|
run: echo "PYTREXIO_VERSION=$(grep __version__ python/pytrexio/_version.py | cut -d\ -f3 | tr -d '"')" >> $GITHUB_ENV
|
||||||
|
|
||||||
@ -158,6 +145,8 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
mkdir wheelhouse/
|
mkdir wheelhouse/
|
||||||
cd trexio-${{ env.PYTREXIO_VERSION }}/
|
cd trexio-${{ env.PYTREXIO_VERSION }}/
|
||||||
|
export H5_CFLAGS="-I$(brew --prefix hdf5)/include"
|
||||||
|
export H5_LDFLAGS="-L$(brew --prefix hdf5)/lib"
|
||||||
python -m build --wheel --outdir=./
|
python -m build --wheel --outdir=./
|
||||||
delocate-wheel trexio-*.whl
|
delocate-wheel trexio-*.whl
|
||||||
mv trexio-*.whl ../wheelhouse/
|
mv trexio-*.whl ../wheelhouse/
|
||||||
@ -186,10 +175,10 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout the branch
|
- name: Checkout the branch
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: Set up Python
|
- name: Set up Python
|
||||||
uses: actions/setup-python@v1
|
uses: actions/setup-python@v4
|
||||||
with:
|
with:
|
||||||
python-version: '3.9'
|
python-version: '3.9'
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ cmake_minimum_required(VERSION 3.16)
|
|||||||
|
|
||||||
# Initialize the CMake project.
|
# Initialize the CMake project.
|
||||||
project(Trexio
|
project(Trexio
|
||||||
VERSION 2.3.0
|
VERSION 2.3.1
|
||||||
DESCRIPTION "TREX I/O library"
|
DESCRIPTION "TREX I/O library"
|
||||||
LANGUAGES C Fortran
|
LANGUAGES C Fortran
|
||||||
)
|
)
|
||||||
|
28
README.md
28
README.md
@ -22,8 +22,8 @@ TREX library for efficient I/O.
|
|||||||
2. `gzip -cd trexio-<version>.tar.gz | tar xvf -`
|
2. `gzip -cd trexio-<version>.tar.gz | tar xvf -`
|
||||||
3. `cd trexio-<version>`
|
3. `cd trexio-<version>`
|
||||||
4. `./configure`
|
4. `./configure`
|
||||||
5. `make`
|
5. ```make -j`getconf _NPROCESSORS_ONLN` ```
|
||||||
6. `make check`
|
6. ```make -j`getconf _NPROCESSORS_ONLN` check```
|
||||||
7. `sudo make install`
|
7. `sudo make install`
|
||||||
|
|
||||||
|
|
||||||
@ -45,8 +45,8 @@ TREX library for efficient I/O.
|
|||||||
2. `cd trexio`
|
2. `cd trexio`
|
||||||
3. `./autogen.sh`
|
3. `./autogen.sh`
|
||||||
4. `./configure`
|
4. `./configure`
|
||||||
5. `make`
|
5. ```make -j`getconf _NPROCESSORS_ONLN` ```
|
||||||
6. `make check`
|
6. ```make -j`getconf _NPROCESSORS_ONLN` check```
|
||||||
7. `sudo make install`
|
7. `sudo make install`
|
||||||
|
|
||||||
## Installation procedure for CMake users (from the tarball or GitHub repo clone):
|
## Installation procedure for CMake users (from the tarball or GitHub repo clone):
|
||||||
@ -56,8 +56,8 @@ The aforementioned instructions rely on [Autotools](https://www.gnu.org/software
|
|||||||
|
|
||||||
1. `cmake -S. -Bbuild`
|
1. `cmake -S. -Bbuild`
|
||||||
2. `cd build`
|
2. `cd build`
|
||||||
3. `make`
|
3. ```make -j`getconf _NPROCESSORS_ONLN` ```
|
||||||
4. `ctest` (or `make test`)
|
4. ```ctest -j`getconf _NPROCESSORS_ONLN` ```
|
||||||
5. `sudo make install`
|
5. `sudo make install`
|
||||||
|
|
||||||
**Note: on systems with no `sudo` access, one can add `-DCMAKE_INSTALL_PREFIX=build` as an argument to the `cmake` command so that `make install/uninstall` can be run without `sudo` privileges.**
|
**Note: on systems with no `sudo` access, one can add `-DCMAKE_INSTALL_PREFIX=build` as an argument to the `cmake` command so that `make install/uninstall` can be run without `sudo` privileges.**
|
||||||
@ -73,7 +73,7 @@ The official releases of TREXIO `>2.0.0` are also available via the `conda-forge
|
|||||||
The pre-compiled stable binaries of `trexio` can be installed as follows:
|
The pre-compiled stable binaries of `trexio` can be installed as follows:
|
||||||
|
|
||||||
```
|
```
|
||||||
conda install trexio -c conda-forge
|
conda install -c conda-forge trexio
|
||||||
```
|
```
|
||||||
|
|
||||||
More details can be found in the corresponding [trexio-feedstock](https://github.com/conda-forge/trexio-feedstock).
|
More details can be found in the corresponding [trexio-feedstock](https://github.com/conda-forge/trexio-feedstock).
|
||||||
@ -88,7 +88,7 @@ Schema file contains the manifest specification for the `trexio` package.
|
|||||||
It can be installed as follows:
|
It can be installed as follows:
|
||||||
|
|
||||||
```
|
```
|
||||||
guix package --cores=<n_cores> --install-from-file=trexio.scm
|
guix package --cores=`getconf _NPROCESSORS_ONLN` --install-from-file=trexio.scm
|
||||||
```
|
```
|
||||||
|
|
||||||
## Installation procedure for Spack users
|
## Installation procedure for Spack users
|
||||||
@ -100,7 +100,7 @@ file contains the Spack specifications required to build different variants of `
|
|||||||
It can be installed as follows
|
It can be installed as follows
|
||||||
|
|
||||||
```
|
```
|
||||||
spack install --jobs <n_cores> trexio
|
spack install --jobs `getconf _NPROCESSORS_ONLN` trexio
|
||||||
```
|
```
|
||||||
|
|
||||||
## Installation procedure for Debian/Ubuntu users
|
## Installation procedure for Debian/Ubuntu users
|
||||||
@ -127,14 +127,14 @@ To build TREXIO without HDF5 back end, append `--without-hdf5` option to `config
|
|||||||
## Linking to your program
|
## Linking to your program
|
||||||
|
|
||||||
The `make install` command takes care of installing the TREXIO shared library on the user machine.
|
The `make install` command takes care of installing the TREXIO shared library on the user machine.
|
||||||
Once installed, add `-ltrexio` to the list of compiler options.
|
After installation, append `-ltrexio` to the list of compiler (`$LIBS`) options.
|
||||||
|
|
||||||
In some cases (e.g. when using custom `prefix` during configuration), the TREXIO library might end up installed in a directory, which is absent in the default `$LIBRARY_PATH`.
|
In some cases (e.g. when using custom installation prefix during configuration), the TREXIO library might end up installed in a directory, which is absent in the default `$LD_LIBRARY_PATH`.
|
||||||
In order to link the program against TREXIO, the search paths can be modified as follows:
|
In order to link the program against TREXIO, the search path can be modified as follows:
|
||||||
|
|
||||||
`export LIBRARY_PATH=$LIBRARY_PATH:<path_to_trexio>/lib`
|
`export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<path_to_trexio>/lib`
|
||||||
|
|
||||||
(same holds for `$LD_LIBRARY_PATH`). The `<path_to_trexio>` has to be replaced by the prefix used during the installation.
|
where the `<path_to_trexio>` has to be replaced by the prefix used during the installation.
|
||||||
|
|
||||||
If your project relies on CMake build system, feel free to use the
|
If your project relies on CMake build system, feel free to use the
|
||||||
[FindTREXIO.cmake](https://github.com/TREX-CoE/trexio/blob/master/cmake/FindTREXIO.cmake)
|
[FindTREXIO.cmake](https://github.com/TREX-CoE/trexio/blob/master/cmake/FindTREXIO.cmake)
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
# Process this file with autoconf to produce a configure script.
|
# Process this file with autoconf to produce a configure script.
|
||||||
|
|
||||||
AC_PREREQ([2.69])
|
AC_PREREQ([2.69])
|
||||||
AC_INIT([trexio],[2.3.0],[https://github.com/TREX-CoE/trexio/issues])
|
AC_INIT([trexio],[2.3.1],[https://github.com/TREX-CoE/trexio/issues])
|
||||||
|
|
||||||
AC_CONFIG_SRCDIR([Makefile.in])
|
AC_CONFIG_SRCDIR([Makefile.in])
|
||||||
AC_CONFIG_HEADERS([include/config.h])
|
AC_CONFIG_HEADERS([include/config.h])
|
||||||
|
@ -200,7 +200,7 @@ program print_energy
|
|||||||
#+begin_src f90
|
#+begin_src f90
|
||||||
call getarg(1, filename)
|
call getarg(1, filename)
|
||||||
|
|
||||||
f = trexio_open (filename, 'r', TREXIO_HDF5, rc)
|
f = trexio_open (filename, 'r', TREXIO_AUTO, rc)
|
||||||
if (rc /= TREXIO_SUCCESS) then
|
if (rc /= TREXIO_SUCCESS) then
|
||||||
call trexio_string_of_error(rc, err_msg)
|
call trexio_string_of_error(rc, err_msg)
|
||||||
print *, 'Error opening TREXIO file: '//trim(err_msg)
|
print *, 'Error opening TREXIO file: '//trim(err_msg)
|
||||||
@ -410,6 +410,139 @@ program print_energy
|
|||||||
end program
|
end program
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
** Python
|
||||||
|
:PROPERTIES:
|
||||||
|
:header-args: :tangle print_energy.py
|
||||||
|
:END:
|
||||||
|
|
||||||
|
#+begin_src python
|
||||||
|
import sys
|
||||||
|
import trexio
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
|
BUFSIZE = 100000
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
This program computes the energy as:
|
||||||
|
|
||||||
|
\[
|
||||||
|
E = E_{\text{NN}} + \sum_{ij} \gamma_{ij}\, \langle j | h | i \rangle\,
|
||||||
|
+\, \frac{1}{2} \sum_{ijkl} \Gamma_{ijkl}\, \langle k l | i j
|
||||||
|
\rangle\; \textrm{ with } \; 0 < i,j,k,l \le n
|
||||||
|
\]
|
||||||
|
One needs to read from the TREXIO file:
|
||||||
|
|
||||||
|
- $n$ :: The number of molecular orbitals
|
||||||
|
- $E_{\text{NN}}$ :: The nuclear repulsion energy
|
||||||
|
- $\gamma_{ij}$ :: The one-body reduced density matrix
|
||||||
|
- $\langle j |h| i \rangle$ :: The one-electron Hamiltonian integrals
|
||||||
|
- $\Gamma_{ijkl}$ :: The two-body reduced density matrix
|
||||||
|
- $\langle k l | i j \rangle$ :: The electron repulsion integrals
|
||||||
|
|
||||||
|
*** Obtain the name of the TREXIO file from the command line, and open it for reading
|
||||||
|
|
||||||
|
#+begin_src python
|
||||||
|
filename = sys.argv[1]
|
||||||
|
f = trexio.File(filename, 'r', trexio.TREXIO_AUTO)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
*** Read the nuclear repulsion energy
|
||||||
|
|
||||||
|
#+begin_src python
|
||||||
|
E_nn = trexio.read_nucleus_repulsion(f)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
*** Read the number of molecular orbitals
|
||||||
|
|
||||||
|
#+begin_src python
|
||||||
|
n = trexio.read_mo_num(f)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
*** Read one-electron quantities
|
||||||
|
|
||||||
|
#+begin_src python
|
||||||
|
if not trexio.has_mo_1e_int_core_hamiltonian(f):
|
||||||
|
print("No core hamiltonian in file")
|
||||||
|
sys.exit(-1)
|
||||||
|
|
||||||
|
h0 = trexio.read_mo_1e_int_core_hamiltonian(f)
|
||||||
|
|
||||||
|
if not trexio.has_rdm_1e(f):
|
||||||
|
print("No 1e RDM in file")
|
||||||
|
sys.exit(-1)
|
||||||
|
|
||||||
|
D = trexio.read_rdm_1e(f)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
*** Read two-electron quantities
|
||||||
|
|
||||||
|
**** Electron repulsion integrals
|
||||||
|
|
||||||
|
#+begin_src python
|
||||||
|
if not trexio.has_mo_2e_int_eri(f):
|
||||||
|
print("No electron repulsion integrals in file")
|
||||||
|
sys.exit(-1)
|
||||||
|
|
||||||
|
size_max = trexio.read_mo_2e_int_eri_size(f)
|
||||||
|
|
||||||
|
offset = 0
|
||||||
|
icount = BUFSIZE
|
||||||
|
feof = False
|
||||||
|
W = np.zeros( (n,n,n,n) )
|
||||||
|
while not feof:
|
||||||
|
buffer_index, buffer_values, icount, feof = trexio.read_mo_2e_int_eri(f, offset, icount)
|
||||||
|
for m in range(icount):
|
||||||
|
i, j, k, l = buffer_index[m]
|
||||||
|
W[i,j,k,l] = buffer_values[m]
|
||||||
|
W[k,j,i,l] = buffer_values[m]
|
||||||
|
W[i,l,k,j] = buffer_values[m]
|
||||||
|
W[k,l,i,j] = buffer_values[m]
|
||||||
|
W[j,i,l,k] = buffer_values[m]
|
||||||
|
W[j,k,l,i] = buffer_values[m]
|
||||||
|
W[l,i,j,k] = buffer_values[m]
|
||||||
|
W[l,k,j,i] = buffer_values[m]
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
**** Reduced density matrix
|
||||||
|
|
||||||
|
#+begin_src python
|
||||||
|
if not trexio.has_rdm_2e(f):
|
||||||
|
print("No two-body density matrix in file")
|
||||||
|
|
||||||
|
offset = 0
|
||||||
|
icount = BUFSIZE
|
||||||
|
feof = False
|
||||||
|
G = np.zeros( (n,n,n,n) )
|
||||||
|
while not feof:
|
||||||
|
buffer_index, buffer_values, icount, feof = trexio.read_rdm_2e(f, offset, icount)
|
||||||
|
for m in range(icount):
|
||||||
|
i, j, k, l = buffer_index[m]
|
||||||
|
G[i,j,k,l] = buffer_values[m]
|
||||||
|
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
*** Compute the energy
|
||||||
|
|
||||||
|
When the orbitals are real, we can use
|
||||||
|
\begin{eqnarray*}
|
||||||
|
E &=& E_{\text{NN}} + \sum_{ij} \gamma_{ij}\, \langle j | h | i \rangle\,
|
||||||
|
+\, \frac{1}{2} \sum_{ijkl} \Gamma_{ijkl}\, \langle k l | i j
|
||||||
|
\rangle \\
|
||||||
|
&=& E_{\text{NN}} + \sum_{ij} \gamma_{ij}\, \langle i | h | j \rangle\,
|
||||||
|
+\, \frac{1}{2} \sum_{ijkl} \Gamma_{ijkl}\, \langle i j | k l
|
||||||
|
\rangle \\
|
||||||
|
\end{eqnarray*}
|
||||||
|
|
||||||
|
#+begin_src python
|
||||||
|
G = np.reshape(G, (n*n, n*n) )
|
||||||
|
W = np.reshape(W, (n*n, n*n) )
|
||||||
|
E = E_nn
|
||||||
|
E += 0.5*sum( [ np.dot(G[:,l], W[:,l]) for l in range(n*n) ] )
|
||||||
|
E += sum( [ np.dot(D[:,l], h0[:,l]) for l in range(n) ] )
|
||||||
|
|
||||||
|
print (f"Energy: {E}")
|
||||||
|
#+end_src
|
||||||
|
|
||||||
* Reading determinants
|
* Reading determinants
|
||||||
|
|
||||||
** Fortran
|
** Fortran
|
||||||
|
@ -1 +1 @@
|
|||||||
__version__ = "1.3.0"
|
__version__ = "1.3.2"
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
setuptools>=42
|
setuptools>=42
|
||||||
pkgconfig
|
pkgconfig
|
||||||
numpy<1.23.0
|
numpy<1.24.0
|
||||||
numpy>=1.17.3
|
numpy>=1.17.3
|
||||||
|
@ -66,7 +66,7 @@ option(ENABLE_HDF5 "Enable HDF5 support" ON)
|
|||||||
|
|
||||||
if(ENABLE_HDF5)
|
if(ENABLE_HDF5)
|
||||||
# Try to detect HDF5 installation using built-in FindHDF5.cmake macro.
|
# Try to detect HDF5 installation using built-in FindHDF5.cmake macro.
|
||||||
find_package(HDF5 REQUIRED COMPONENTS C HL)
|
find_package(HDF5 REQUIRED COMPONENTS C)
|
||||||
|
|
||||||
if(HDF5_FOUND)
|
if(HDF5_FOUND)
|
||||||
message(STATUS "HDF5 version :: ${HDF5_VERSION}")
|
message(STATUS "HDF5 version :: ${HDF5_VERSION}")
|
||||||
@ -87,9 +87,7 @@ if(ENABLE_HDF5)
|
|||||||
# - include directories with HDF5 header files
|
# - include directories with HDF5 header files
|
||||||
target_include_directories(trexio PRIVATE ${HDF5_C_INCLUDE_DIRS})
|
target_include_directories(trexio PRIVATE ${HDF5_C_INCLUDE_DIRS})
|
||||||
# - link to HDF5 C libraries
|
# - link to HDF5 C libraries
|
||||||
target_link_libraries(trexio PRIVATE
|
target_link_libraries(trexio PRIVATE ${HDF5_C_LIBRARIES})
|
||||||
${HDF5_C_HL_LIBRARIES}
|
|
||||||
${HDF5_C_LIBRARIES})
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Private headers have to be listed as sources, otherwise they are installed
|
# Private headers have to be listed as sources, otherwise they are installed
|
||||||
|
@ -34,14 +34,14 @@
|
|||||||
num variable is modified by address
|
num variable is modified by address
|
||||||
*/
|
*/
|
||||||
/* Return num variables as part of the output tuple */
|
/* Return num variables as part of the output tuple */
|
||||||
%apply int *OUTPUT { int32_t* const num};
|
%apply int32_t *OUTPUT { int32_t* const num};
|
||||||
%apply int *OUTPUT { int64_t* const num};
|
%apply int64_t *OUTPUT { int64_t* const num};
|
||||||
%apply int *OUTPUT { int32_t* const num_up};
|
%apply int32_t *OUTPUT { int32_t* const num_up};
|
||||||
%apply int *OUTPUT { int32_t* const num_dn};
|
%apply int32_t *OUTPUT { int32_t* const num_dn};
|
||||||
%apply int *OUTPUT { int64_t* const num_up};
|
%apply int64_t *OUTPUT { int64_t* const num_up};
|
||||||
%apply int *OUTPUT { int64_t* const num_dn};
|
%apply int64_t *OUTPUT { int64_t* const num_dn};
|
||||||
%apply float *OUTPUT { float* const num};
|
%apply float *OUTPUT { float* const num};
|
||||||
%apply float *OUTPUT { double* const num};
|
%apply double *OUTPUT { double* const num};
|
||||||
/* Return TREXIO exit code from trexio_open as part of the output tuple */
|
/* Return TREXIO exit code from trexio_open as part of the output tuple */
|
||||||
%apply int *OUTPUT { trexio_exit_code* const rc_open};
|
%apply int *OUTPUT { trexio_exit_code* const rc_open};
|
||||||
/* Return number of sparse data points stored in the file as part of the output tuple */
|
/* Return number of sparse data points stored in the file as part of the output tuple */
|
||||||
|
@ -145,10 +145,10 @@ trexio_text_inquire (const char* file_name)
|
|||||||
if (file_exists) {
|
if (file_exists) {
|
||||||
|
|
||||||
bool is_a_directory = false;
|
bool is_a_directory = false;
|
||||||
#ifdef S_IFDIR
|
#if defined(S_IFDIR)
|
||||||
is_a_directory = st.st_mode & S_IFDIR;
|
is_a_directory = st.st_mode & S_IFDIR;
|
||||||
#elif S_ISDIR
|
#elif defined(S_ISDIR)
|
||||||
is_a_directory = S_ISDIR(s.st_mode);
|
is_a_directory = S_ISDIR(st.st_mode);
|
||||||
#else
|
#else
|
||||||
printf("Some important macros are missing for directory handling.\n");
|
printf("Some important macros are missing for directory handling.\n");
|
||||||
return TREXIO_FAILURE;
|
return TREXIO_FAILURE;
|
||||||
@ -162,6 +162,29 @@ trexio_text_inquire (const char* file_name)
|
|||||||
}
|
}
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
On non-POSIX file systems, the function ~mkdtemp~ might is not defined.
|
||||||
|
In that case, we define an alternate one, which is not as safe as the original one.
|
||||||
|
|
||||||
|
#+begin_src c :tangle basic_text.c
|
||||||
|
#if defined _POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 200809L
|
||||||
|
#else
|
||||||
|
|
||||||
|
char* mkdtemp(char* template) {
|
||||||
|
char* dir = NULL;
|
||||||
|
dir = tmpnam(dir);
|
||||||
|
if (dir == NULL) return NULL;
|
||||||
|
|
||||||
|
if (mkdir(dir, S_IRWXU | S_IRWXG | S_IRWXO) != 0) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
strcpy(template, dir);
|
||||||
|
return template;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
#+end_src
|
||||||
|
|
||||||
#+begin_src c :tangle basic_text.c
|
#+begin_src c :tangle basic_text.c
|
||||||
trexio_exit_code
|
trexio_exit_code
|
||||||
trexio_text_init (trexio_t* const file)
|
trexio_text_init (trexio_t* const file)
|
||||||
|
@ -60,8 +60,22 @@
|
|||||||
"1n9n1gbk5hgvg73am991xrv7ap002rz719a3nvh8m8ff9x10qd76"
|
"1n9n1gbk5hgvg73am991xrv7ap002rz719a3nvh8m8ff9x10qd76"
|
||||||
))))))
|
))))))
|
||||||
|
|
||||||
|
(define-public trexio-2.3
|
||||||
|
(package/inherit trexio-2.0
|
||||||
|
(version "2.3.0")
|
||||||
|
(source (origin
|
||||||
|
(method url-fetch)
|
||||||
|
(uri (string-append "https://github.com/TREX-CoE/trexio/releases/download/v" version
|
||||||
|
"/trexio-" version
|
||||||
|
".tar.gz"))
|
||||||
|
(sha256
|
||||||
|
(base32
|
||||||
|
;; the hash below is produced by guix download <url>
|
||||||
|
"183wljg1avsia2pf2wb59s2i2qw6y19qfw164ffy1g024b6362ii"
|
||||||
|
))))))
|
||||||
|
|
||||||
(define-public trexio
|
(define-public trexio
|
||||||
;; Default version of TREXIO.
|
;; Default version of TREXIO.
|
||||||
trexio-2.2)
|
trexio-2.3)
|
||||||
|
|
||||||
trexio
|
trexio
|
||||||
|
Loading…
Reference in New Issue
Block a user