FQSolver

FQSolver

QM/MM solvent-effects code for electrostatic potentials, electric fields, and fluctuating charges from CUBE densities

Impact: High-performance C++ software to compute electrostatic potentials/fields at solvent sites and solvent charges through the Fluctuating Charges approach.

Tags: C++ QM/MM OpenMP

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

← Back to all software