fmm (c46b2)

Fast Multipole Method (FMM) for Nonbond Interactions

The CHARMM is interfaced to the EXAFMM library for nonbond
interactions, both Van der Waals and electrostatic. The FMM library is
in active development but the CHARMM interface is part of the standard
EXAFMM development and is more or less final, so one can optionally
link CHARMM to the EXAFMM library obtained from github. The details of
the EXAFMM library are explained in the following reference:
R. Yokota, Journal of Algorithms & Computational Technology, Vol 7,
No.3, pp 301-324, 2013 (

* Description | Description of the OVERLAP commands.
* Usage | How to use the OVERLAP method.
* Installation | Installation of the OVERLAP method
* Performance | Performance Issues


The interface is based on the GRAPE interface because it uses the same
parameter data layout for efficiency reasons. So the GRAPE interface
provides all the necessary data to perform FMM calculations. All the
interface code is thus in the grape.src file.

To initialize the method use:

grape 0 fmm

keywords in any of the nonbond specifications: energy, dyna, nbond,


just add the 'grape 0 fmm' to any of the non-bond specification

There are no extra options to the command yet. We are still
working on the best recommended parameters for the numerical precision
and runtime efficiency.


The EXAFMM library needs to be installed prior to compile CHARMM.
In order to install the library perform the following commands in
arbitrary directory, say cd ~/charmm/exafmm :

git clone

We tested commit 5d99073a08cc7f6d11e52ec78457b768d4bb6d3f so the
following will make it ready for CHARMM compile:

git checkout 5d99073a08cc7f6d11e52ec78457b768d4bb6d3f

cd exafmm
./configure --enable-assert --enable-mpi --enable-openmp --enable-avx --with-tbb CXXFLAGS=-O3
cd wrappers
make charmm_mpi

This is for the maximum performance. One can leave out any or all of
the following:
--enable-openmp --enable-avx --with-tbb

then the CHARMM compile command is the following:

before using the cmake to compile CHARMM with EXAFMM library the
following is needed

export EXAFMM=~/charmm/exafmm/exafmm/wrappers

Standard CHARMM cmake or configure procedure to compile CHARMM.

The main purpose of the EXAFMM interface in CHARMM is the
performance. The method is promising to scale on the future exaflops
machines, thus the exa- in the name of the library. It can take
advantage of the existing and future massively parallel machines
including accelerated hardware (gpu, xeon phi, etc)