The data to be stored in a MOLDEN file is the reduced one-particle density matrix (1-RDM) or molecular orbital (MO) data. This implies that to produce MOLDEN file one should have:
a) molecular geometry,
b) basis set information,
c) coefficients of expansion of molecular orbitals over basis functions,
d) other properties of MOs (their energy and occupation numbers).
What NwChem can produce without its source code being ‘hacked’ is:
log file (typically with extension .out)
A text file in a human-readable format which contains main results of calculations.
With a default settings this file contains molecular geometry with acceptable accuracy and a basis set information. The latter, however, is printed in such a way that all contraction coefficients have only 7 significant digits, which might be not enough!
movecs file (typically with extension .movecs)
A binary file containing an information about molecular orbital expansion coefficients, their energies and occupation numbers. By default this file is being written to the permanent directory (permanent_dir
) of NwChem.
To make this file readable, NwChem distribution has an utility called mov2asc; see root dir of NwChem source tar.gz file → contrib → mov2asc → mov2asc.F .
mov2asc
utility has rather simple calling convention:
./mov2asc 999 file.movecs file.txt
where 999 stands for ‘Guess_NBF’ – a value, which ‘must be at least as large as the NBF (number of basis functions?) in the file to be translated.’ (see mov2asc.F) , file.movecs is a name of movecs file and the last argument, file.txt, is a name of a human-readable (ascii) representation of movecs file to be creared.
Clearly, what should the converter do in order to produce MOLDEN file, is to combine MO data from the acsii (text) version of movecs file with geometry and basis set information taken from the log file. And this is what nwchem2molden program actually does.
assuming that it uses 'pure' spherical harmonics
Therefore, additional used of molden2molden
program with -cart2pure
option might be necessary.
The next feature is that NwChem prints basis sets in its logfile in the same form as they appear in the basis set library of the program. The latter is just the same as on the Basis Set Exchange database. It should be noted however, that by no means all basis functions in this database are normalized by unity! At the same time, MO expansion coefficients are printed assuming that unity-normalized basis functions have been used. Therefore, nwchem2molden
internally re-normalizes all basis functions to make them unity-normalized before printing a basis set into the MOLDEN file.
NwChem uses slightly different sign convention for pure spherical harmonics rather than MOLDEN does.
E.g.,
ang(n,Af5) =-x*(cf(5)*z*z-cf(4)*(x*x+y*y)) v.s. F(+1) = x*(2*z^2-0.5*y^2-0.5*x^2)/SQRT(10) ang(n,Ad4) =-cd(1)*x*z v.s. D(+1) = XZ
nwchem2molden
accounts this for.
In addition to that MOLDEN file and NwChem use different normalization rules for printing basis sets:
NwChem assumes that each primitive gaussian is taken to be unity-normalized (e.g., ), while
MOLDEN assumes using exponent functions without any kind of pre-factor.
Therefore, 11 P 8.06410000E-01 1.000000
line is OK for NwChem-style of writing basis sets, but not for MOLDEN-style.
It is also important that NwChem can use both ‘cartesian’ and ‘pure’ spherical harmonics in its basis sets. When using carterian ones, it might happen (especially for large systems) that several basis functions will be nearly linearly dependent. By default NwChem will try to eliminate linear (quasi-)dependency in this case, which will lead to different number of MOs and basis functions. nwchem2molden will warn user about this like
WARNING: the number of orbitals is less than the number of basis functions
It might be helpful, however, to forbid NwChem eliminating linearly (quasi-)dependent basis functions by adding the following line to the job input file:
set lindep:n_dep 0
This will prevent any linear dependent basis functions from being projected out.
It should be noted that nwchem produces movecs files for SCF-type (i.e., Hartree-Fock and DFT) calculations only. In this case it contains true orbital energies, and occupations numbers can be equal to 2.0 (for occupied orbitals) or 0.0 (for virtual orbitals) only.
Natural orbitals information can be extracted from NwChem results for non-SCF-type calculations in the case of using MP2 method by requesting gradient calculation
task mp2 gradient
or geometry optimization (which also requires calculating gradients)
task mp2 optimize
In both cases, NwChem will create a .mp2nos
file which can be used for its mov2asc
utility
as in the scf case. Clearly, no orbital energies (and hence no Fock matrix) can be available
in this case.