COPSS 0.3.0

COPSS (Continuum Particle Simulation Software) is an open source software for continuum-particle simulations. The package is designed to be easy to use, extensible, and scalable. It currently includes three modules, COPSS-Hydrodynamics to solve hydrodynamic interactions in colloidal suspensions, COPSS-Polarization to solve electrostatic interactions in heterogeneous dielectric media, and COPSS-CMA-ES to inversely solve for charges on dielectric particles from particle trajectories.


COPSS-CMA-ES solves for charges on dielectric particles from a given set of particle trajectories. It is based on the Covariance Matrix Adaption Evolutionary Strategy (CMA-ES) and the force field for electrostatic interactions between polarizable dielectric particles. CMA-ES is used to minimize the difference between simulated trajectory and the target trajectory, and inversely calcualte charges on individual particles. The simulated trajectory is calculated by LAMMPS coupled with the polarizable force field at every CMA-ES generation. COPSS is coupled with LAMMPS and an external CMA-ES library libcmaes to solve this inverse problem.


COPSS-CMA-ES is written using libcmaes and LAMMPS as libraries. Before compiling COPSS-CMA-ES, you need to install LAMMPS and libcmaes.

0. System environment prep

You should have the following software loaded or compiled

  • CMAKE (version 2.8.12 or later)
  • GCC (version 4.8.4 or later)
  • PYTHON (python 2)
  • OPENMPI (version 1.10.4 or later) or MVAPICH (version mvapich2 2.2b or later)

1. Install libcmaes

  • Install libcmaes by following instructions in 'Build' section at its website

2. Install LAMMPS as a library

  • Go to, and download fix_colloidImage.cpp and fix_colloidImage.h

  • Download LAMMPS, and put fix_colloidImage.cpp and fix_colloidImage.h in folder your_path_to_lammps/src

  • Compile LAMMPS as a static library by typing make mode=lib mpi, and as a shared library by typing make mode=shlib mpi

3. Edit your bashrc file

  • Add dynamic linking path in your .bashrc file by adding the line below, for example,

export LD_LIBRARY_PATH=$MPI_HOME/lib:$MPI_HOME/lib/openmpi:/home/xikai/Softwares/libcmaes/build/lib:/home/xikai/Softwares/lammps-16Feb16/src:$LD_LIBRARY_PATH

3. Compile COPSS-CMA-ES

  • Compile the code in CMA-ES/src folder in this repository using the command below

mpic++ -fopenmp -std=gnu++11 -I/usr/include/eigen3/ -I/home/xikai/Softwares/libcmaes/build/include/libcmaes/ -I/home/xikai/Softwares/lammps-16Feb16/src -L/home/xikai/Softwares/libcmaes/build/lib/ -L/home/xikai/Softwares/lammps-16Feb16/src/ -o run_inverse inverse_design.C -lcmaes -llammps_mpi

4. Run the program

  • Run the optimization code by, for example, typing the followings in CMA-ES/cmaes-10particles folder




Our method paper has details on the tests of this code: Evolutionary strategy for inverse charge measurements of dielectric particles



  • The codes are open-source and distributed under the GNU GPL license, and may not be used for any commercial or for-profit purposes without our permission.

Release history of COPSS

  • 0.3.0 (Release COPSS-CMA-ES module)

  • 0.2.0 (Release COPSS-Hydrodynamics module)

  • 0.1.0 (Release COPSS-Polarization module)