This is a central program of the package and its task is to perform

conversion from basis set functions (AOs) into Natural Atomic Orbitals (NAOs).

When these orbitals are prepared, density matrix is converted into their basis

and its diagonal elements are used for Natural Population Analysis (NPA), while

off-diagonal elements are used for Wiberg-Mayer bond indexes calculation.

Janpa uses MOLDEM-compatible files in the 'extended' format (used to represent

all possible results of Cartesian-to-pure conversion of basis functions).

To be used as an input files for JANPA, MOLDEN files should have three essential components:

- Geometry description (
`[Atoms]`

section) - Basis set description (
`[GTO]`

section) - Molecular orbital (MO) or natural orbital (NO) information (
`[MO]`

section(s))

Some basic information about MOLDEN format can be found on the web-page of

MOLDEN program.

You must have Java Runtime Environment installed on your system (details).

Then, simply type in the command line

java -jar janpa.jar INPUTFILE.molden

or

java -jar janpa.jar -i INPUTFILE.molden [options]

where `INPUTFILE.molden`

is a suitable MOLDEN file, and `[options]`

can contain multiple

options.

Run

java -jar janpa.jar

to get an information about the possible options.

Note also that strictly speaking an `-ignorefock`

(disabling conversion of Fock matrix

into NAO basis) option should be used for analyzing MOLDEN files obtained by ANY method

except for Hartree-Fock. However, in practice, NPA analysis is often applied for

density matrices obtained within DFT Kohn-Sham formalism and corresponding to an

'auxiliary' non-interacting system rather than for the real one. So, although physically

not correct, Fock matrix transformation CAN technically be performed for DFT methods as

well and it is up to user whether to use `-ignorefock`

in this case.

Janpa prints lots of information... Here we'd like to give some comments on the most

essential output.

It begins with a copyright note

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * janpa: A cross-platform open-source implementation of NPA with Java * * A part of JANPA package, http://janpa.sourceforge.net * * Version: 1.01 (10-08-2014) * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * (c) Tymofii Nikolaienko, 2014 If any results obtained with this program are published, or for any other reasons, please, cite this work as: T.Yu.Nikolaienko, L.A.Bulavin, D.M.Hovorun; Comput.Theor.Chem.(2014) submitted.

followed by the list of the values of *all* available program options.

Then a 'statistical' information about input MOLDEN file is printed:

Loading MOLDEN from socl2_avtz.molden Basis functions are spherical: true Total number of basis functions: 196 Total number of different contractions (radial parts): 62 Highest angular momentum: f (Lmax = 3) Total number of MO: 196 Data loaded successfully Number of basis functions: 196; number of molecular orbitals: 196

After this, the program computes the overlap and the density matrices based

ob the data from input MOLDEN file.

Building overlap matrix S... Checking whether the basis functions are unity-normalized... Maximum deviation of the basis function norm2 from unity: BFN 0 (0-based num.), max|norm2-1| = 2.545E-10 Checking for the eigenvalues (linear (in)dependency) of the basis function overlap matrix... The smallest eigenvalue of the basis function overlap matrix: 2.343E-04 Checking whether the orbitals are unity-normalized... Checking MO overlap matrix... Maximum of MO |norm2-1|: 1.348E-08 (MO 177) Maximum absolute value of off-diagonal MO overlap element: 4.163E-08 (< MO 19 | MO 119 >) First-order reduced density matrix is OK.

The last message is **very important** since different programs can produce a variety of

MOLDEN-semi-compatible files (which differ by basis functions normalization, MO/NO sing

convention etc.). Therefore, the user should check whether:

- the basis functions are unity-normalized (
`max|norm2-1|`

should be small) - the orbitals are unity-normalized (
`|norm2-1|`

should be small) - the orbitals are orthogonal (
`Maximum absolute value of off-diagonal MO overlap element`

should be small)

It is also desirable that all basis functions were strongly linearly independent (`The smallest eigenvalue of the basis function overlap matrix`

should **not** be very small).

If and only if all these criteria are met (within some internal thresholds), the program says that `First-order reduced density matrix is OK.`

In order to finally assure that everything is OK with input data, the program integrates

electron density, computes the total number of electrons and uses it to compute total

charge (with the sum of nuclei charges included):

Building density matrix D... done. Building D.S... done. Total number of electrons: 58.000000 Sum of electrons charges and the nuclei charges: -0.00000

The last value is typically known *a priori* and hence can be used as the final test.

Next, Mulliken and Lowdin charges are calculated:

Performing Mulliken and Lowdin population analyses... Atom Mulliken Lowdin Mulliken Lowdin Population Population Charge Charge S1 14.97209 16.31109 1.02791 -0.31109 O2 8.64775 8.22236 -0.64775 -0.22236 Cl3 17.19008 16.73327 -0.19008 0.26673 Cl4 17.19008 16.73327 -0.19008 0.26673

Typically, quantum chemistry packages provide corresponding values in their log files,

so comparison of the values reported by Janpa with the charges provided by the

quantum chemistry packages may serve as a final, irrefutable test for the input data

correctness.

After the overlap (** S**) and the density (

occupancy matrix (

Atomic Orbitals (NAOs)

Building S.D.S... done. Inverting MO -> AO matrix... * * * Creating NAOs

Here is a sample log for this process:

STEP 1. Produce PNAOs Total number of natural functions produced: 196 Sorting PNAOs... STEP 2. Split PNAOs into NMB / NRB sets Number of basis functions in teh Natural Minimal Basis (NMB) set for each center: center 1: 3 of s | 6 of p | 0 of d | 0 of f | 0 of g | center 2: 2 of s | 3 of p | 0 of d | 0 of f | 0 of g | center 3: 3 of s | 6 of p | 0 of d | 0 of f | 0 of g | center 4: 3 of s | 6 of p | 0 of d | 0 of f | 0 of g | In total: NMB set has 32 functions, NRB set has 164 functions; Trace of the PNAO overlap matrix: 196.0000000 (should be equal to 196, the total number of PNAOs) The trace of SDS matrix in PNAO basis = 81.96920311379503 STEP 3. Weighted orthogonalization of NMB PNAOs min weight of NMB PNAO = 1.4989370377039963 STEP 4. Schmidt orthogonalization of NRBs to new NMBs STEP 5. Intracenter naturalization of new NRBs Total number of natural functions produced: 164 STEP 6. Weighted orthogonalization of naturalized NRBs Maximum weight of NRB function = 5.63616E-02 min weight = 2.098183703670974E-5 |S_NRB - 1| = 4.66684E-12 (Should be VERY close to zero!) STEP 7. Final Intracenter Natural Transformation withing the full set of functions Total number of natural functions produced: 196 SQRT{ SUM[(NaoOverlap_ij - delta_ij)^2] } = 4.43e-12 (should be VERY close to zero) max_offdiag = 1.22e-12 (should be VERY close to zero) * * *

This process is nominally divided into 7 steps as described in the paper on the JANPA package.

A good check for correctness of the resulting NAOs obtained is the difference between

the NAO overlap matrix and the unitary matrix:

SQRT{ SUM[(NaoOverlap_ij - delta_ij)^2] } = 4.43e-12 (should be VERY close to zero) max_offdiag = 1.22e-12 (should be VERY close to zero)

Both these values should be VERY close to zero (they would be exactly zeros if there were

no machine-precision round-off errors).

When NAOs have are constructed, occupancy matrix is transformed to their basis and

its diagonal elements are used as NAO occupancies:

Final NAO occupancies and leading AO terms: NAO # Name Occupancy Leading term 1 A1*: R1*s(0) 0.0000037 (-23.99)*BF[6 = A1: R6*s(0)] 2 A1*: R2*s(0) 0.0008128 (9.45)*BF[6 = A1: R6*s(0)] 3 A1*: R3*s(0) 0.0157569 (9.66)*BF[5 = A1: R5*s(0)] 4 A1: R4*s(0) 1.6950100 (0.76)*BF[3 = A1: R3*s(0)] 5 A1: R5*s(0) 1.9997043 (0.91)*BF[2 = A1: R2*s(0)] 6 A1: R6*s(0) 1.9999993 (-0.99)*BF[1 = A1: R1*s(0)] 7 A1*: R7*p(0) 0.0000392 (8.72)*BF[16 = A1: R10*p(0)] ..... 195 A4*: R62*f(3) 0.0003041 (-1.37)*BF[163 = A4: R56*p(1)] 196 A4*: R62*f(-3) 0.0003469 (1.72)*BF[151 = A4: R51*s(0)] trace = 58.00000000042941

In this table `Name`

is constructed as follows: `AtomID`

`[*]:`

`Rn*L(m)`

where AtomID is

an identifier of the atom, `*`

indicated that this NAO belongs to Natural Rydberg Basis (NRB)

(or to Natural Minimal Basis, NMB, if no asterisk is printed), `n`

is the identifier of the

'radial part' used by this NAO, and `L`

and 'm' have a meaning of (quasi) L and m numbers

of (quasi) spherical harmonics (see discussion in the paper).

Note that the value of `trace`

should be equal to the total number of electrons in the system

(within the machine round-off precision).

The final section of the output looks like this:

Final electron populations and NPA charges: Center Nuclear Electron NMB NPA charge population population charge S1 16.0 14.7363703 14.5871856 1.2636297002 O2 8.0 8.8104279 8.7477705 -0.8104279015 Cl3 17.0 17.2266005 17.2061604 -0.2266005193 Cl4 17.0 17.2266013 17.2061613 -0.2266012799

In such a form the program reports `Electron Population`

the total occupancy of all NAOs belonging to a certain `Center`

(a positively charged nucleus of a molecule) and separates a contribution from its Natural Minimal Basis (NMB) NAOs. NPA charge is then obtained as *Z*-`Electron Population`

where *Z* is the charge of atomic center.

Similarly, the total occupancy of a given center can be separated into a contributions from NAOs with definite 'angular momentum' (more precisely, '*l* property' - see original paper on JANPA)

Angular momentum contributions of the total atomic population: Cntr s p d f g S1 5.7112870 8.9108826 0.1097300 0.0044707 0.0000000 O2 3.8304332 4.9268546 0.0486490 0.0044912 0.0000000 Cl3 5.9506344 11.2589993 0.0154799 0.0014869 0.0000000 Cl4 5.9506347 11.2589999 0.0154799 0.0014869 0.0000000

Another type of useful information which can be obtained using NAOs are so called 'bond indexes'. They are calculated from the elements of occupancy matrix (** P** =

(for details see an original paper of Wiberg and/or a review by I.Mayer)

Wiberg-Mayer bond indexes: 3.1181 1.4587 0.8297 0.8297 1.4587 1.8542 0.1977 0.1977 0.8297 0.1977 1.0910 0.0636 0.8297 0.1977 0.0636 1.0910

This matrix is symmetric. Its rows/columns are numbered in the same way as atomic centers are.

Diagonal elements are the sums of all but the diagonal elements of a given row (or column) and

can be considered as the 'valence' of the given atomic center (~3, ~2, ~1 and ~1 for S, O, Cl and Cl in

the above example).