![]()
About
FQSolver is a C++ code for computing electrostatic quantities from a quantum-mechanical density stored in CUBE format.
It currently supports three main tasks:
- Integration of electron density from a CUBE file
- Computation of electrostatic potential and electric field at solvent sites
- Computation of solvent charges through the Fluctuating Charges approach (FQ)
Solvent geometries can be provided as:
- XYZ files for potential and electric-field computations
- PDB files, with residue/group and atom-name filters, for FQ charges, potential, and electric-field computations
FQSolver is designed for high-performance calculations using OpenMP and BLAS/LAPACK linear algebra routines.
Theoretical Framework
All quantities in FQSolver are expressed internally in atomic units.
Given a solute electron density $\rho(\mathbf{r})$, FQSolver can compute the electrostatic potential at solvent coordinates $\mathbf{R}_i$:
$$ V(\mathbf{R}_i) = \int d\mathbf{r} \ \frac{\rho(\mathbf{r})}{|\mathbf{R}_i - \mathbf{r}|} $$
and the corresponding electric field:
$$ \mathbf{E}(\mathbf{R}_i) = -\nabla V(\mathbf{R}_i) $$
For FQ calculations, solvent charges are obtained by solving a linear system based on the Fluctuating Charges model. The FQ implementation follows the approach and parametrization described in:
Tommaso Giovannini, Alessandra Puglisi, Matteo Ambrosetti, and Chiara Cappelli,
Journal of Chemical Theory and Computation2019, 15 (4), 2233-2245.
DOI: 10.1021/acs.jctc.8b01149
The FQ linear system has the block structure:
$$ \left(\begin{array}{cc} T^{qq} & C^T \ C & 0 \end{array}\right) \left(\begin{array}{c} q \ \lambda \end{array}\right) {}={} \left(\begin{array}{c} -V - \chi \ Q \end{array}\right) $$
where:
- $T^{qq}$ is the charge-charge interaction matrix
- $C$ imposes charge conservation constraints per solvent molecule
- $q$ are the fluctuating charges
- $\lambda$ are Lagrange multipliers
- $V$ is the electrostatic potential at solvent sites
- $\chi$ is the atom-type electronegativity parameter
- $Q$ is the molecular charge constraint
At present, the implemented FQ parametrization is:
giovannini
and the implemented FQ interaction kernel is:
gaus
Features
- CUBE Density Integration: integrates quantum-mechanical electron densities stored in CUBE format.
- Electrostatic Potential Computation: evaluates the solute-density electrostatic potential at solvent coordinates.
- Electric Field Computation: evaluates electric fields at solvent coordinates.
- XYZ Solvent Parsing: reads solvent sites from XYZ files for potential and field calculations.
- PDB Solvent Parsing: reads solvent sites from PDB files using residue/group and atom-name filters.
- Fluctuating Charges: computes solvent charges through the FQ approach.
- Parallel Execution: uses OpenMP for parallel computation and BLAS/LAPACK for linear algebra.
- Automated Tests: includes a CTest-based test suite with a generated parallel test runner.
Installation
FQSolver requires:
- CMake 3.10 or higher
- C++20-compatible compiler
- BLAS/LAPACK libraries