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 staticallyopenblas-system
: Finds and links existing OpenBLAS in the systemnetlib-static
: Downloads, builds LAPACK, and links staticallynetlib-system
: Finds and links existing LAPACK in the systemintel-mkl-static
: Finds and links existing static Intel MKL in the system, or downloads and links statically if not foundintel-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 analysedpython
: 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 theopenblas-static
andqchem
featuresfull
: Enables thestandard
andintegrals
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) oropenssl-devel
(Rocky/Fedora/RHEL)pkg-config
(Debian/Ubuntu) orpkgconfig
(Rocky/Fedora/RHEL)
-
Feature-specific:
Feature | Dependencies | Notes |
---|---|---|
openblas-static | make , gcc , gfortran | Builds OpenBLAS and links statically (see ndarray-linalg documentation) |
openblas-system |
| Finds and links existing OpenBLAS in the system (see ndarray-linalg documentation) |
netlib-static | make , gfortran | Builds LAPACK and links statically (see ndarray-linalg documentation) |
netlib-system |
| Finds and links existing LAPACK in the system (see ndarray-linalg documentation) |
intel-mkl-static |
| 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 |
| Finds and links existing shared Intel MKL in the system (see ndarray-linalg documentation) |
qchem | cmake , gcc | Builds the HDF5 C library and links statically |
integrals |
| Installs the TLS framework required for reqwest |
python | Python, which is best managed via Anaconda | Installs 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.