This is a key program of the package and its task is twofold: first, to perform
conversion from basis set functions (AOs) into Natural Atomic Orbitals (NAOs), and second,
to analyze the electronic structure in terms if localized property-optimized orbitals (LPOs)
to reveal the bonding pattern.
When NAOs 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:
[Atoms]
section)[GTO]
section)[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 the -ignorefock
, i.e., disabling conversion of Fock matrix
into NAO basis, which was present in JANPA versions prior to 2.02 has now became a default behaviour.
In case if for some reason the Fock matrix analysis is still needed, the option -doFock
should be used instead.
Note: the following information describes only the charge/population analysis (NPA) part of input. For bonding
analysis available in JANPA v.2.00 and later, see CLPO example.
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:
max|norm2-1|
should be small)|norm2-1|
should be small)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 (D) matrices have been obtained, the program computes
occupancy matrix (P = S.D.S) and turns to the construction of Natural
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 = S.D.S) in NAO basis
(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).