Crate qsym2

source ·
Expand description

§QSym²: A Program for Quantum Symbolic Symmetry

QSym² is a program for Quantum Symbolic Symmetry analysis of quantum-chemical calculations written in Rust with the following capabilities:

  • on-the-fly generation of symbolic character tables,
  • analysis of degeneracy and symmetry breaking effects in Abelian and non-Abelian groups,
  • analysis of symmetry in external magnetic and electric fields,
  • inclusion of antiunitary symmetry based on corepresentation theory, and
  • inclusion of double-valued representations and corepresentations via explicit spin rotations

for the following targets:

  • Slater determinants,
  • molecular orbitals,
  • multi-determinantal wavefunctions obtained via non-orthogonal configuration interaction,
  • real-space functions defined on a grid,
  • electron densities, and
  • vibrational coordinates.

QSym² has been integrated with QUEST and its complementary GUI, QuestView. QSym² can also work with Q-Chem HDF5 archive files and Orca output files.

The main website for QSym² can be found here.

QSym² is hosted on GitLab. Please submit an issue there if you’ve encountered anything that is unclear or that you feel needs improving.

This documentation details the public API of the qsym2 crate.

§Help and support

Developmental and programming issues with the crate qsym2 can be reported on GitLab. For scientific enquiries such as how to run the program QSym² for a particular quantum-chemical calculation or how to interpret the results of QSym², please join the dedicated Slack workspace using this invite link.

§Getting started

To use QSym² in your Rust project, simply add this crate to your project’s Cargo.toml. The available features defined by this crate are:

§Linear algebra backend

There are six features defining six different ways a linear algebra backend can be configured for QSym². These are inherited from the ndarray-linalg crate. One (and only one) of these must be enabled:

  • openblas-static: Downloads, builds OpenBLAS, and links statically
  • openblas-system: Finds and links existing OpenBLAS in the system
  • netlib-static: Downloads, builds LAPACK, and links statically
  • netlib-system: Finds and links existing LAPACK in the system
  • intel-mkl-static: Finds and links existing static Intel MKL in the system, or downloads and links statically if not found
  • intel-mkl-system: Finds and links existing shared Intel MKL in the system

If the *-static backends give rise to numerical problems, please try installing the linear algebra backends directly (either via your system’s package manager or by compiling from source) and then using the corresponding *-system backends.

§Interfaces

  • qchem: Enables Q-Chem’s HDF5 archive files to be read in and analysed
  • python: Enables the Python bindings for several core functionalities

§Integrals

  • integrals: Enables the computation of $n$-centre overlap integrals and $n$-centre overlap integral derivatives within QSym²

§Composite

  • standard: Enables the openblas-static and qchem features
  • full: Enables the standard and integrals features

§Developmental

  • sandbox: Enables experimental features that are still being actively developed

§Dependencies

The compilation of QSym² requires the following:

  • Common:

    • libssl-dev (Debian/Ubuntu) or openssl-devel (Rocky/Fedora/RHEL)
    • pkg-config (Debian/Ubuntu) or pkgconfig (Rocky/Fedora/RHEL)
  • Feature-specific:

FeatureDependenciesNotes
openblas-staticmake, gcc, gfortranBuilds OpenBLAS and links statically (see ndarray-linalg documentation)
openblas-system
  • libopenblas-dev (Debian/Ubuntu)
  • openblas-devel (Rocky/Fedora/RHEL)
Finds and links existing OpenBLAS in the system (see ndarray-linalg documentation)
netlib-staticmake, gfortranBuilds LAPACK and links statically (see ndarray-linalg documentation)
netlib-system
  • liblapack-dev (Debian/Ubuntu)
  • lapack-devel (Rocky/Fedora/RHEL)
Finds and links existing LAPACK in the system (see ndarray-linalg documentation)
intel-mkl-static
  • pkg-config (Debian/Ubuntu)
  • pkgconfig (Rocky/Fedora/RHEL)
Finds and links existing static Intel MKL in the system, or downloads and links statically if not found (see ndarray-linalg documentation)
intel-mkl-system
  • pkg-config (Debian/Ubuntu)
  • pkgconfig (Rocky/Fedora/RHEL)
Finds and links existing shared Intel MKL in the system (see ndarray-linalg documentation)
qchemcmake, gccBuilds the HDF5 C library and links statically
integrals
  • libssl-dev (Debian/Ubuntu)
  • openssl-devel (Rocky/Fedora/RHEL)
Installs the TLS framework required for reqwest
pythonPython, which is best managed via AnacondaInstalls the Python bindings for core functionalities of QSym²

§Examples and usage

For most items (structs, enums, functions, and traits), their usages are illustrated in test functions. For more explanation, please consult this documentation.

For usage of the compiled qsym2 binary or Python library, please consult the README.md file on GitLab and the documentations on QSym²’s website.

§License

GNU Lesser General Public License v3.0.

§Authors and acknowledgement

QSym² has been developed and maintained by Dr Bang C. Huynh at the University of Nottingham, UK since July 2022 with scientific support from Prof. Andrew M. Wibowo-Teale and Dr Meilani Wibowo-Teale and financial support from the ERC grant under the topDFT project.

The logo for QSym², which is a stylised stellated octahedron, was designed with artistic support from Mr Thinh Nguyen.

Modules§

  • Symmetry analysis via representation and corepresentation theories.
  • Angular momentum conversion and transformation.
  • Helper items to assist the working of QSym².
  • Basis functions.
  • Binding implementations to expose QSym² to other languages.
  • Symbolic computation and management of character tables.
  • Drivers to carry out QSym² functionalities.
  • Abstract group structures.
  • Gaussian atomic-orbital integral evaluations.
  • Interfaces between QSym² with other software.
  • QSym² I/O operations.
  • Permutations as elements in symmetric groups.
  • Rotational symmetry based on moments of inertia.
  • Targets for symmetry analysis via representation and corepresentation theories.
  • Molecular symmetry.
  • Targets for symmetry analysis via representation and corepresentation theories.