Charge Decomposition Analysis

The Charge Decomposition Analysis (CDA) as developed by Gernot Frenking et al. is used to study the donor-acceptor interactions of a molecule in terms of two user-specified fragments.

The CDA class available from cclib.method performs this analysis:

from cclib.parser import ccopen from cclib.method import CDA

molecule = ccopen("molecule.log") frag1 = ccopen("fragment1.log") frag2 = ccopen("fragment2.log")


 * 1) if using CDA from an interactive session, it's best
 * 2) to parse the files at the same time in case they aren't
 * 3) parsed immediately---go get a drink!

m = molecule.parse f1 = frag1.parse f2 = frag2.parse

cda = CDA(m) cda.calculate([f1, f2])

After calculate finishes, there should be the donations, bdonations (back donation), and repulsions attributes to the cda instance. These attributes are simply lists of 1-dimensional Numeric arrays corresponding to the restricted or alpha/beta molecular orbitals of the entire molecule. Additionally, the CDA method involves transforming the atomic basis functions of the molecule into a basis using the molecular orbitals of the fragments so the attributes mocoeffs and fooverlaps are created and can be used in population analyses such as Mulliken or C-squared (see Fragment Analysis for more details).

There is also a script provided by cclib that performs the CDA from a command-line:

$ cda molecule.log fragment1.log fragment2.log Charge decomposition analysis of molecule.log

MO#     d       b       r - 1: -0.000  -0.000  -0.000   2:  -0.000   0.002   0.000   3:  -0.001  -0.000   0.000   4:  -0.001  -0.026  -0.006   5:  -0.006   0.082   0.230   6:  -0.040   0.075   0.214   7:   0.001  -0.001   0.022   8:   0.001  -0.001   0.022   9:   0.054   0.342  -0.740  10:   0.087  -0.001  -0.039  11:   0.087  -0.001  -0.039 -- HOMO - LUMO gap -- 12:  0.000   0.000   0.000  13:   0.000   0.000   0.000

......