psi3(1)
β¨ psi3 β bestie edition β¨
okay so this is the manual page for psi3, aka the master execution driver for the PSI programs. it's giving main character energy for your whole quantum chemistry workflow, and honestly? iconic. π
πΈ NAME πΈ
psi3 β the master execution driver for the PSI programs. no cap, this is the one that runs the whole show. π
π¦ DESCRIPTION π¦
so here's the vibe: psi3 reads your input deck, figures out what type of calculation you're trying to perform, and then runs the appropriate programs. like a little manager with a clipboard. πβ¨
by default, psi3 reads the file /usr/local/psi3/share/psi.dat. that file contains macros for some standard calculations.
but here's the thing bestie β Psi is very flexible. anything in the psi.dat file can be overridden by the user. so literally everything written below should be taken with a grain of salt. π§
experimentation is the best way to learn the psi3 command, and nothing written here should be taken as gospel. fr fr.
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. you got this. π«Ά
π COMMAND-LINE OPTIONS π
the following command-line arguments are available:
-ior-fβ this flag specifies the input file name, e.g.psi3 -i h2o.inwhereh2o.inis the name of the input file. by default,psi3and the PSI modules that it calls will look forinput.dat. π-oβ this flag specifies the output file name, e.g.psi3 -o h2o.outwhereh2o.inis the name of the output file. by default,psi3and the PSI modules that it calls will look foroutput.dat. π-pβ this flag specifies the PSI file prefix, e.g.psi3 -p h2o.dzpwhereh2o.dzpis the prefix that will be used for all PSI files. by default,psi3and the PSI modules that it calls will usepsifor the file prefix. hence, the checkpoint file is by default calledpsi.32. ποΈ--noinputor-nβ this tells thepsi3driver not to run the input program. this flag is useful for scripting and debugging. π οΈ--checkor-cβ this tells thepsi3driver to check the input and print out the list of programs which would be executed. equivalent to settingCHECK=TRUEin the input file. π--messyor-mβ this tells thepsi3driver not to run the cleanup programpsiclean. usually, the cleanup program is invoked via the$donemacro defined inpsi.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β this tells thepsi3driver 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 isSP. βWFN = stringβ this is the type of wavefunction which is ultimately desired. as of this writing, acceptable values forWFNareSCF,MP2,CCSD,CCSD_T,DETCI,CASSCF, andRASSCF. havingWFNdefined as anything else is not necessarily bad, but don't expectpsi3to be able to figure out what to do. if you have a non-standardWFN, then it would probably be best to provide anEXECsection (see below). there is no default. πREFERENCE = stringβ this specifies the reference wavefunction desired. it can be one ofRHF(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), orTWOCON(for a two configuration singlet). the default isRHF. πDERTYPE = stringβ this specifies the order of derivative that is to eventually be done. the default isNONE. πOPT = booleanβ 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 theJOBTYPEkeyword. πNOPT = integerβ this gives the maximum number of iterations ifOPTis true. the default is1.DISP = booleanβ set this equal to true if you are performing finite displacements. the default is false. note: this is an old keyword which is now obsolete; it has been replaced by theJOBTYPEkeyword. πNDISP = integerβ this gives the maximum number of displacements ifDISPis true. the default is1.NCASITER = integerβ this gives the maximum number of CASSCF iterations ifWFN = CASSCF. the default is1.CHECK = booleanβ if this is true, thenpsi3will parse your input deck, and print out the sequence of commands to be executed. the default is false. βEXEC = string_vectorβ theEXECvector contains a list of commands to be executed bypsi3. explicit commands can be entered in double quotes, or preset variables can be entered using the convention$variable(see examples below). so if you want to runintsat 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. slay. π
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.
- Brute force
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
)
)
- Elegant
default: (
SCFFirst = ($ints $scf $deriv $oeprop)
)
- Obscure
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! π
and that's a wrap, bestie!! π«Ά this little gem is from the 25 August, 2003 era β yeah, vintage, we love a classic β and it's rocking the psi3(1) manual-page energy, version and date and all. go forth and compute. πβ¨πΈ
π¦ where this page comes from
- debian bookworm: psi3 3.4.0-6+b3
- ubuntu jammy: psi3 3.4.0-6ubuntu1
- ubuntu noble: psi3 3.4.0-6ubuntu1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms