1
0
mirror of https://github.com/TREX-CoE/trexio.git synced 2024-12-22 20:35:44 +01:00
Go to file
2022-01-25 11:13:32 +01:00
.github/workflows [wheel build] publish the Python API 1.1.0 on PyPI 2022-01-07 19:40:52 +01:00
cmake move FindTREXIO and cmake_uninstall modules in cmake directory 2021-11-17 11:02:35 +01:00
docker [wheel build] test GitHub actions 2022-01-07 11:03:00 +01:00
docs Update README 2021-10-13 14:24:54 +02:00
include add GIT_HASH and TREXIO_USER_NAME variables to CMake 2022-01-20 14:56:10 +01:00
lib add gitignore 2021-04-30 16:21:13 +02:00
m4 add Autoconf macro for SWIG 2021-08-20 15:20:09 +03:00
pkgconfig Improve HDF5 in configure 2021-06-03 01:25:20 +02:00
python Merge branch 'master' into add-unsafe-open-mode 2022-01-24 18:25:52 +01:00
src add metadata_unsafe attribute to trex.json; write it upon first unsafe trexio_open 2022-01-25 11:13:32 +01:00
tests Merge branch 'master' into add-unsafe-open-mode 2022-01-24 18:25:52 +01:00
tools [WIP] add delete_group functions to the generator 2022-01-24 10:10:45 +01:00
.gitignore gitignore editor swap/backup files, suggested build directory, build byproducts 2022-01-18 14:14:27 +00:00
.gitmodules return org-html-themes submodule 2021-09-24 09:46:42 +02:00
AUTHORS Typo 2021-06-02 10:44:03 +02:00
autogen.sh Modernize configure.ac 2021-11-17 14:16:55 +01:00
ChangeLog adapt README and ChangeLog 2021-10-25 11:40:07 +02:00
CMakeLists.txt [CMake] add minor support for pthreads and stdint 2022-01-20 17:32:01 +01:00
configure.ac [pre-release] upgrade versions and produce wheels for CPython 3.10 2021-12-27 16:26:17 +01:00
COPYING Automake done. Need to improve tests 2021-05-28 13:36:39 +02:00
examples.org Document RDM 2022-01-10 10:26:48 +01:00
INSTALL Automake done. Need to improve tests 2021-05-28 13:36:39 +02:00
LICENSE Initial commit 2021-01-18 15:48:36 +01:00
Makefile.am add unit tests for delete_group functionality 2022-01-24 10:12:44 +01:00
NEWS Automake done. Need to improve tests 2021-05-28 13:36:39 +02:00
README Automake done. Need to improve tests 2021-05-28 13:36:39 +02:00
README.md README.md: added a bit more compilation help 2022-01-18 14:38:48 +00:00
trex.org add metadata_unsafe attribute to trex.json; write it upon first unsafe trexio_open 2022-01-25 11:13:32 +01:00

TREXIO

build GitHub release (latest by date)

TREX library for efficient I/O.

Minimal requirements (for users):

  • Autotools (autoconf >= 2.69, automake >= 1.11, libtool >= 2.2) or CMake (>= 3.16)
  • C compiler (gcc/icc/clang)
  • Fortran compiler (gfortran/ifort)
  • HDF5 library (>= 1.8) [optional, recommended for high performance]

Installation procedure from the tarball (for users):

  1. Download the trexio-<version>.tar.gz file
  2. gzip -cd trexio-<version>.tar.gz | tar xvf -
  3. cd trexio-<version>
  4. ./configure
  5. make
  6. make check
  7. sudo make install

Note: on systems with no sudo access, one can replace ./configure with ./configure prefix=${PWD}/build in order to execute make install/uninstall commands without sudo privileges.

Note: when linking against an MPI-enabled HDF5 library one usually has to specify the MPI wrapper for the C compiler by adding, e.g., CC=mpicc to the ./configure command.

Additional requirements (for developers):

  • python3 (>= 3.6)
  • Emacs (>= 26.0)
  • SWIG (>= 4.0)

Installation procedure from the GitHub repo clone (for developers):

  1. git clone https://github.com/TREX-CoE/trexio.git
  2. cd trexio
  3. ./autogen.sh
  4. ./configure
  5. make
  6. make check
  7. sudo make install

Installation procedure for CMake users (from the tarball or GitHub repo clone):

The aforementioned instructions rely on Autotools build system. CMake users can achieve the same with the following steps (an example of out-of-source build):

  1. cmake -S. -Bbuild
  2. cd build
  3. make
  4. ctest (or make test)
  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: when linking against an MPI-enabled HDF5 library one usually has to specify the MPI wrapper for the C compiler by adding, e.g., -DCMAKE_C_COMPILER=mpicc to the cmake command.

Compilation without the HDF5 library

By default, the configuration step proceeds to search for the HDF5 library. This search can be disabled if HDF5 is not present/installable on the user machine. To build TREXIO without HDF5 back end, append --without-hdf5 option to configure script or -DENABLE_HDF5=OFF option to cmake. For example,

  • ./configure --without-hdf5
  • cmake -S. -Bbuild -DENABLE_HDF5=OFF

Linking to your program

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.

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 order to link the program against TREXIO, the search paths can be modified as follows:

export LIBRARY_PATH=$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.

If your project relies on CMake build system, feel free to use the FindTREXIO.cmake module to find and link TREXIO library automatically.

In Fortran applications, make sure that the trexio_f.f90 module file is included in the source tree. You might have to manually copy it into your program source directory. The trexio_f.f90 module file can be found in the include/ directory of the TREXIO source code distribution.

Note: there is no need to include trexio.h header file during compilation of Fortran programs. Only the installed library and the Fortran module file are required.

Naming convention

The primary TREXIO API is composed of the following functions:

  • trexio_open
  • trexio_write_[group]_[variable]
  • trexio_read_[group]_[variable]
  • trexio_has_[group]_[variable]
  • trexio_close

where [group] and [variable] substitutions correspond to the contents of the trex.json configuration file (for more details, see the corresponding documentation page). For example, consider the coord variable (array), which belongs to the nucleus group. The TREXIO user can write or read it using trexio_write_nucleus_coord or trexio_read_nucleus_coord functions, respectively.

Note: the [variable] names have to be unique only within the corresponding parent [group]. There is no naming conflict when, for example, num variable exists both in the nucleus group (i.e. the number of nuclei) and in the mo group (i.e. the number of molecular orbitals). These quantities can be accessed using the corresponding trexio_[has|read|write]_nucleus_num and trexio_[has|read|write]_mo_num, respectively.

Python API

PyPI version

For more details regarding the installation and usage of the TREXIO Python API, see this page.

Tutorial

TREXIO tutorials in Jupyter notebook format can be found in the corresponding GitHub repository or on Binder.

For example, the tutorial covering TREXIO basics using benzene molecule as an example can be viewed and executed online by clicking on this badge: Binder

Documentation

Documentation generated from TREXIO org-mode files.

Miscellaneous

Note: The code should be compliant with the C99 CERT C coding standard. This can be checked with the cppcheck tool.


European flag TREX: Targeting Real Chemical Accuracy at the Exascale project has received funding from the European Unions Horizon 2020 - Research and Innovation program - under grant agreement no. 952165. The content of this document does not represent the opinion of the European Union, and the European Union is not responsible for any use that might be made of such content.