Interface to CPPE by M. Scheurer

Code author: Maximilian Scheurer

Section author: Maximilian Scheurer

Module: Keywords, PSI Variables

PSI4 contains code to interface to the CPPE library developed by M. Scheurer. The CPPE library requires no additional licence, downloads, or configuration. The library allows for calculations in solution with the polarizable embedding model (PE), an explicit, fragment-based solvent model [Olsen:2010:3721].

For a general tutorial on how to prepare/perform PE calculations, read the tutorial review.



  • CPPE is available as a conda package for Linux and macOS (and Windows, through the Ubuntu shell).

  • If using the PSI4 binary, CPPE has already been installed alongside.

  • If using PSI4 built from source, and anaconda or miniconda has already been installed (instructions at Quick Installation), CPPE can be obtained through conda install cppe -c psi4. Then enable it as a feature with ENABLE_cppe, hint its location with cppe_DIR, and rebuild PSI4 to detect CPPE and activate dependent code.

  • To remove a conda installation, conda remove cppe.


  • If using PSI4 built from source and you want CPPE built from from source also, enable it as a feature with ENABLE_cppe, and let the build system fetch and build it and activate dependent code.

Using the polarizable embedding model

The inclusion of a PE description of the solvent into your calculation is achieved by setting PE true in your input file.


At present, PE can only be used for energy calculations with SCF wavefunctions and CC wavefunctions in the PTE approximation [Cammi:2009:164104]. All ERI algorithms (PK, OUT_OF_CORE, DIRECT, DF, CD) are supported.


linear response calculations (static polarisabilities, TD-SCF) are supported for RHF/UHF if available.


The CPPE library cannot exploit molecular point group symmetry.

A typical input for a Hartree–Fock calculation with PE would look like the following:

molecule pna {
    C          8.64800        1.07500       -1.71100
    C          9.48200        0.43000       -0.80800
    C          9.39600        0.75000        0.53800
    C          8.48200        1.71200        0.99500
    C          7.65300        2.34500        0.05500
    C          7.73200        2.03100       -1.29200
    H         10.18300       -0.30900       -1.16400
    H         10.04400        0.25200        1.24700
    H          6.94200        3.08900        0.38900
    H          7.09700        2.51500       -2.01800
    N          8.40100        2.02500        2.32500
    N          8.73400        0.74100       -3.12900
    O          7.98000        1.33100       -3.90100
    O          9.55600       -0.11000       -3.46600
    H          7.74900        2.71100        2.65200
    H          8.99100        1.57500        2.99500
    symmetry c1

set {
 basis sto-3g
 pe true
 e_convergence 10
 d_convergence 10
 scf_type pk

set pe {
 potfile pna_6w.pot

scf_energy, wfn = energy('scf', return_wfn=True)

The corresponding potential file pna_6w.pot can be downloaded here.

Keywords for CPPE


PE boolean for polarizable embedding module


Name of the potential file OR contents of potential file to be written anonymously on-the-fly.

  • Type: string

  • Default: potfile.pot


Make polarizabilities isotropic


Threshold for induced moments convergence


Maximum number of iterations for induced moments

  • Type: integer

  • Default: 50


Activate border options for sites in proximity to the QM/MM border


border type, either remove or redistribute moments/polarizabilities

  • Type: string

  • Possible Values: REMOVE, REDIST

  • Default: REMOVE


number of neighbor sites to redistribute to. The default (-1) redistributes to all sites which are not in the border region

  • Type: integer

  • Default: -1


order from which moments are removed, e.g., if set to 1 (default), only charges are redistributed and all higher order moments are removed

  • Type: integer

  • Default: 1


minimum radius from QM atoms to MM sites to be taken into account for removal/redistribution

  • Type: double

  • Default: 2.2


unit of BORDER_RMIN, default is atomic units (AU)

  • Type: string

  • Possible Values: AU, AA

  • Default: AU


redistribute polarizabilities? If false, polarizabilities are removed (default)

How to configure CPPE for building Psi4

Role and Dependencies

  • Role — In PSI4, CPPE is a library that provides additional quantum chemical capabilities (explicit solvation modeling).

  • Downstream Dependencies — PSI4 (\(\Leftarrow\) optional) CPPE

  • Upstream Dependencies — CPPE

CMake Variables

  • ENABLE_cppe — CMake variable toggling whether Psi4 builds with CPPE

  • cppe_DIR — CMake variable to specify where pre-built CPPE can be found. Set to installation directory containing share/cmake/cppe/cppeConfig.cmake


  1. Build bundled

>>> cmake -DENABLE_cppe=ON
  1. Build without CPPE

>>> cmake