NAME
psi3 - master execution driver for the PSI programs
DESCRIPTION
The program psi3 reads your input deck, determines what type of calculation you
are trying to perform, and runs the appropriate programs. psi3 reads the file
/usr/local/psi3/share/psi.dat by default. This file contains macros for some
standard calculations. Psi is very flexible, however, and anything in the
psi.dat file can be overriden by the user. Thus, all that is written below
should be taken with a grain of salt. Experimentation is the best way to learn
the psi3 command, and nothing that is written here should be taken as gospel.
A good place to look for syntax is in the psi.dat file. Hopefully this man
page and the psi.dat file should tell you all you need to know to get started.
input.dat
psi.dat
COMMAND-LINE OPTIONS
The following command-line arguments are available:
-i or
-f
.nr )E 0
This flag is used to specify the input file name, e.g. psi3 -i h2o.in where
h2o.in is the name of input file. By default, psi3 and PSI modules that it
calls will look for input.dat .
-o
.nr )E 0
This flag is used to specify the output file name, e.g. psi3 -o h2o.out where
h2o.in is the name of output file. By default, psi3 and PSI modules that it
calls will look for output.dat .
-p
.nr )E 0
This flag is used to specify the PSI file prefix, e.g. psi3 -p h2o.dzp where
h2o.dzp is the prefix that will be used for all PSI files. By default, psi3
and PSI modules that it calls will use psi for the file prefix. Hence, the
checkpoint file is by default called psi.32 .
--noinput or
-n
.nr )E 0
This tells psi3 driver not to run input program. This flag is useful for
scripting and debugging.
--check or
-c
.nr )E 0
This tells psi3 driver to check the input and print out the list of programs
which would be executed. Equivalent to setting
CHECK=TRUE in the input
file.
--messy or
-m
.nr )E 0
This tells psi3 driver not to run cleanup program psiclean . Usually, the
cleanup program is invoked via the $done macro defined in psi.dat . This flag
is useful for scripting and debugging.
INPUT FORMAT
The psi3 program searches through the default keyword path (first PSI and then
DEFAULT) for the following keywords:
JOBTYPE = string
.nr )E 0
This tells the psi3 driver program what kind of calculation you want to run.
Acceptable choices are: SP (for a single-point energy computation), OPT (for
an optimization, either using gradients or energies), FREQ (for harmonic
vibrational frequencies), FC (for force constants by finite differences of
internal coordinates ), SYMM_FC (for force constants by finite differences of
internal coordinates, symmetric modes only), DISP (for a series of
single-points at different displaced geometries), DBOC (to compute the
Diagonal Born-Oppenheimer Correction [DBOC] to electronic energy). The default
is
SP.
WFN = string
.nr )E 0
This is the type of wavefunction which is ultimately desired. As of this
writing, acceptable values for WFN are SCF, MP2, CCSD, CCSD_T, DETCI, CASSCF,
and RASSCF. Having WFN defined as anything else is not necessarily bad, but
don't expect psi3 to be able to figure out what to do. If you have a
non-standard WFN, then it would probably be best to provide an EXEC section
(see below). There is no default.
REFERENCE = string
.nr )E 0
This specifies the reference wavefunction desired. It can be one of RHF (for a
closed shell spin-restricted Hartree-Fock), ROHF (for an open-shell
spin-restricted Hartree-Fock), UHF (for an open-shell spin-unrestricted
Hartree-Fock), or TWOCON (for a two configuration singlet). The default is
RHF.
DERTYPE = string
.nr )E 0
This specifies the order of derivative that is to eventually be done. The
default is
NONE.
OPT = boolean
.nr )E 0
Set this equal to true if you are performing a geometry optimization. The
default is false. Note: This is an old keyword which is now obsolete; it has
been replaced by the
JOBTYPE keyword.
NOPT = integer
.nr )E 0
This gives the maximum number of iterations if OPT is true. The default is 1.
DISP = boolean
.nr )E 0
Set this equal to true if you are performing a finite displacements. The default
is false. Note: This is an old keyword which is now obsolete; it has been
replaced by the
JOBTYPE keyword.
NDISP = integer
.nr )E 0
This gives the maximum number of displacements if DISP is true. The default is
1.
NCASITER = integer
.nr )E 0
This gives the maximum number of CASSCF iterations if WFN = CASSCF. The default
is 1.
CHECK = boolean
.nr )E 0
If this is true, then psi3 will parse your input deck, and print out the
sequence of commands to be executed. The default is false.
EXEC = string_vector
.nr )E 0
The EXEC vector contains a list of commands to be executed by
psi3.
Explicit commands can be entered in double quotes, or preset variables can be
entered using the convention $
variable (see examples below). Thus if
you want to run ints at some point, you could have
psi: (
exec = (
...
"ints"
...
)
)
or
psi: (
ints = "ints"
exec = (
...
$ints
...
)
)
in your input.
LOOP CONTROL
Loop control is handled via the "repeat" and "end" built-in
commands. The syntax is
repeat
n [commands to be executed] end
where
n is the number of times to repeat the loop. An inspection of the
psi.dat file will show that this is how geometry optimizations and finite
displacements are performed; in these cases
n is set equal to NOPT or
NDISP.
EXAMPLES
Let's say you want to do an scf geometry optimization. Your psi3 input could
then be:
default: (
jobtype = opt
wfn = scf
dertype = first
reference = rhf
nopt = 5
...
)
What
psi3 would do with this is look in psi.dat or your input for a
variable called SCFCLOSEDFIRSTOPT (you see,
psi catenates the values
(roughly) for WFN, REFERENCE, DERTYPE, and OPT/DISP, in approximately that
order (case doesn't matter)), and then executes the commands defined in the
SCFCLOSEDFIRSTOPT vector. Got it?
So now, let's say you want to run a program "myscf" instead of
whatever scf
psi3 thinks you should run. What you would do is put the
line
scf = "myscf"
in your input.
Okay, one last example, then you're on your own. I want to run
proper
after
deriv in my scf gradient. I would have several ways to do this.
1) Brute force
.nr )E 0
default: (
exec = (
repeat 5
"cints"
"cscf"
$deriv % this is defined in psi.dat as "cints --deriv1"
"oeprop"
$geomupdate % this is defined in psi.dat
end
$done
)
)
2) Elegant
.nr )E 0
default: (
SCFFirst = ($ints $scf $deriv $oeprop)
)
3) Obscure
.nr )E 0
default: (
deriv = ("cints --deriv1" "oeprop")
)
And there are others. The only limit is your own tortured imagination.
Like I said, the best way to find out what
psi3 can do is to look in
psi.dat, and to play around for awhile. The CHECK option is very useful for
this. Good luck!