Libra: An open-source "Methodology Discovery" Library


Overview of the code


Number
Library name
Dependencies
Intent
1
libmmath
2, Eigen (optional)
mathematical operations and functions
2
libio
none
direct interface between Python objects and C/C++ code, XML data read/write
3
libcontext
1,2
XML read/write of arbitrary C/C++ and Python objects. Functionality of constructing XML structures from Python
4
libcell
1
handling simulation unit cell partitioning: creation of Verlet or neighbor list, PBC operations
5
libpot
1,4
collection of interatomic interaction potentials, model potentials, etc.
6
libcalculators
1
general functions for computing properties such as Fermi energy, electronic energy, density matrix, creation of electronic excitation objects, etc. Note, these functions are general enough so they rely only on the simplest data types
7
libqchem
1
low-level operations for quantum-chemical calculations: orbitals objects, basis creation, molecular integrals and their derivatives
8
libhamiltonian
1, 2, 4, 5, 6, 7
model and atomistic (quantum and classical MM) Hamiltonians – both types are unified to have a common interface
9
libdyn
1, 10
integrators for classical and quantum propagation, also includes thermostats and barostats, as well as ensembles of quantum-classical systems.
10
libchemobjects
1, 9
data types to represent chemical objects – atoms, fragments, molecules and to perform analysis and manipulations on them
11
libconverters
1, 9, 10
set of functions to convert between the data types defined in different modules (e.g. between dynamical classes and chemobject classes).
12
libscripts
1, 8, 9, 10
Higher-level protocol for some complex simulations, but with all the details hidden from users. This is where the new methodologies tested in Python scripts can be collected before they are refactored across the entire library.