input(1)
π input(1) β bestie's guide to initializing your files before a Psi run π
General Commands Manual β¨ so this whole thing lives in the input(1) corner of your man pages, mwah π
πΈ NAME πΈ
input β initializes files prior to a run of Psi π«Ά
β¨ DESCRIPTION β¨
okay so listen. input is the preliminary program, the little pre-game ritual before the real thing π§ it reads all your input data for the molecule β geometry, basis set, etc. β and then it generates a working file which is the actual starting point of each calculation. main character energy, truly.
real talk though, it has limits and you need to know them:
- it can handle a total of 100 atoms and 1500 unique primitive gaussian functions π€
- it limits the use of symmetry point groups to D2h and its subgroups β that's just the vibe, no cap.
π REFERENCES π
citing your sources is self care, periodt π
For STO basis sets:
- W. J. Hehre, R. F. Stewart and J.A. Pople, J. Chem. Phys. 51 (1969) 2657.
- W. J. Hehre, R. Ditchfield, R. F. Stewart and J.A. Pople, J. Chem. Phys. 52 (1970) 2769.
For DZ and the old TZ basis sets:
- S. Huzinaga, J. Chem. Phys. 42 (1965) 1293.
- T. H. Dunning, J. Chem. Phys. 53 (1970) 2823.
For DZP basis sets:
for Li and Be;
- A. J. Thakkar, T. Koga, M. Saito, R. E. Hoffmeyer, Inter. J. Quant. Chem. Symp. 27 (1993) 343.
for Na and Mg;
- S. Huzinaga, Approximate Atomic Wavefunction II, Dept. of Chem. Report, Univ. of Alberta, Edmonton, Alberta, Canada, 1971.
For the Rydberg and negative ion basis sets:
- T. H. Dunning, Jr. and P. J. Hay, in Modern Theoretical Chemistry, Volume 3, Ed. H. F. Schaefer III, Plenum Press, NY, 1977.
For the new TZ basis sets:
- T. H. Dunning, J. Chem. Phys. 55, (1971) 716.
- A. D. McLean and G. S. Chandler, J. Chem. Phys., 72 (1980) 5639.
For the general contracted basis sets:
- T. H. Dunning Jr., J. Chem. Phys. 90, (1989).
- F. B. van Duijneveldt, IBM Res. Rep. RJ 945 (1971).
For the Wachters basis sets:
- A. J. H. Wachters, J. Chem. Phys. 52, (1970) 1033.
For the cc-pVXZ (X=D,T,Q) basis sets for hydrogen and the first row atoms B-Ne:
- T.H. Dunning, Jr., J. Chem. Phys. 90, 1007 (1989).
For the aug-cc-pVXZ (X=D,T,Q) basis sets for H and B-Ne:
- R.A. Kendall, T.H. Dunning, Jr., and R.J. Harrison, J. Chem. Phys. 96, 6796 (1992).
For the cc-pVXZ and aug-cc-pVXZ (X=D,T,Q) sets for the second row atoms Al-Ar:
- D.E. Woon and T.H. Dunning, Jr., J. Chem. Phys. 98, 1358 (1993).
For the cc-pVXZ (X=D,T,Q) basis sets for helium; cc-pV5Z and aug-cc-pV5Z basis sets for H, B-Ne, and Al-Ar:
- D.E. Woon, K.A. Peterson, and T.H. Dunning, Jr. (unpublished).
For the cc-pVXZ and aug-cc-pVXZ (X=D,T,Q) basis sets for lithium, beryllium, and sodium; cc-pV5Z and aug-cc-pV5Z basis sets for beryllium:
- D.E. Woon and T.H. Dunning, Jr. (unpublished).
Also see
- R. Poirier, R. Kari and I. G. Csizmadia, "Handbook of Gaussian Basis Sets" Phys. Sci. Data 24 (Elsevier, 1985), and references therein.
π INPUT FORMAT π
so besides the standard command-line options that every single Psi 3 module supports, input also gets these extra lil command-line arguments π
--keep_chkptβ this one makesinputkeep the checkpoint file and possibly overwrite the info inside it. by default?inputdeletes the checkpoint file and makes a brand new one π so yeah, this flag is the "pls don't erase my stuff" option.--chkptgeomβ makesinputread the geometry from the checkpoint file instead of from the input file. convenient, ngl.--chkptmosβ makesINPUTtry to recover molecular orbitals from a previous calculation that got archived in the checkpoint file. if it finds them, the occupied MOs get projected onto the new basis. the virtual space gets filled up by the virtual MOs you get from diagonalizing the core Hamiltonian β even if the new and old basis sets are identical. this won't affect the subsequent SCF procedure in any way, but bestie, keep it in mind π--noprojectβ stops the projection of MOs onto the new basis. super useful when you pair it with the previous option π«Ά--noreorientβ stops the molecule from being reoriented to the reference inertia frame before the point group gets determined.--nocomshiftβ stops the shift of the molecule's center of mass to the origin before the point group gets determined.--savemosβ makesINPUTtry to recover molecular orbitals from a previous calculation archived in the checkpoint file. if found, the SCF eigenvector and other info gets stored to file 42 β¨ (yes, the answer to everything)
the input program goes digging through the default keyword path β first INPUT and then DEFAULT β looking for these keywords:
LABEL= string β a descriptive label for the calculation. there is no default.NORMBASIS= boolean β ifNORMBASIS=YES, the molecular orbital coefficients of the occupied orbitals are given in terms of normalized contracted basis functions. this should always be true. the default is true. πPRIMNORM= boolean β ifPRIMNORM=YES, the contraction coefficients of theD,F, andGprimitive functions that you input should be the ones corresponding to the normalizedD(XX),F(XXX)andG(XXXX)primitives. all the basis sets that ship with Psi require this to be true. the default is true.SUBGROUP= string β the subgroup to be used in the calculation. here's the mapping, memorize it bestie:- for the C1 point group use string =
C1 - for Cs use
CS - for Ci use
CI - for C2 use
C2 - for C2h use
C2H - for C2v use
C2V - for D2 use
D2
- for the C1 point group use string =
there is no default.
UNIQUE_AXIS= string β this keyword says which axis in the original coordinate system (like, before the principal axis reorientation) should be the unique axis in the subgroup spec. example: if you wanna run a calculation on a D2h molecule in C2v symmetry, you gotta say which of the three C2 axes is the unique axis. there's no default.UNITS= string β if string isBOHR, theGEOMETRYarray is in bohr. if string isANGSTROM, theGEOMETRYarray is in angstoms. the default isBOHR.GEOMETRY= array β the array is a vector of cartesian coordinates of EACH atom. every element of this vector is another vector shaped like( atom_name x y z ). there is no default.ZMAT= array β the array is a Z-matrix for the molecule. each element of this vector is another vector in the general form( atom_name atom1 bond_distance atom2 valence_angle atom3 torsional_angle ). the first three atoms don't require all of the parameters to be specified. there is no default.PUREAM= boolean β if boolean isTRUE, then shells with pure angular momentum get used. so aDshell has five functions, anFshell has seven functions, aGshell has nine functions, etc. the default is false.BASIS= string/string_vector β if the basis set is given as a single string, the same basis set is used for all atoms. but you can specify the basis set for EACH atom in a one-dimensional string vector β user be careful though, because only basis sets for unique atoms get read from the vector π basis set for each element type can be specified analogously, except each element of the basis set vector has to be a vector with two things in it: element name and basis set name. there is no default.BASIS_FILE= string β names an alternate file to search for basis set information. you can use either an absolute path to the file or a path relative to the current directory. if the string ends in"/"(so only a directory is specified) then the default file name"basis.dat"gets appended. πNO_REORIENT= boolean β this keyword is a hack π it gives the user more control in certain situations where reorientation into the principal frame leaves some symmetry elements undetected. when set toTRUE, the program skips this reorientation step. then the user becomes responsible for providing an initial orientation that's oriented properly so all symmetry elements get detected. this can be tricky with Z-matrices, hence only experts should use this keyword.KEEP_REF_FRAME= boolean β when this keyword is set to true, Psi keeps track of the original coordinate frame, i.e. the coordinate frame right after the center of mass shift and before the reorientation into the principal frame. that frame is called the reference frame and, in general, it's different from the canonical coordinate frame adopted at the end of the input run and used for computations by all Psi modules programs from then on. so the info about the reference frame needs to be stored in the checkpoint file, in case Psi modules (like CINTS) need to transform their frame-dependent results (like forces on the nuclei) back into the original reference frame so external programs can use them. this keyword becomes useful in finite difference computations where changes in point group may cause the molecule to reorient β whenKEEP_REF_FRAMEis set toTRUE, all gradients in FILE11 get printed in the same coordinate frame πPRINT= integer β controls how much info gets printed out. the bigger the number, the more info. default (PRINT = 1) should be enough for routine use.
π¦ BASIS SETS π¦
the input program searches through the BASIS keyword path for the basis set info. here's the order it goes in, bestie:
- it first searches through the user's file
- then searches through a file in the working directory (if one exists)
- then through a user specified basis file specified by the
BASIS_FILEkeyword (if any) - and finally, it searches through the file in the Psi library directory
the name of the basis set it's searching for is obtained by appending the atom name to the basis name with a ':' inbetween. the format of the basis set info is best understood by looking in the file π (iykyk)
π STANDARD BASIS SETS π
Psi can use use standard basis sets which are provided in a file named in the Psi library directory. many of the basis set names contain nonalphanumeric characters. these names must be surrounded by ". π
STOβ gets you the STO-3G basis set, which is available for hydrogen-argon. Little heads up though bestie: the STO-3G basis sets for sodium-argon contain a D function. πDZβ gets the double zeta (DZ) basis set, which is(4s/2s)for hydrogen,(9s5p/4s2p)for boron-fluorine, and(11s7p/6s4p)for aluminum-chlorine. β¨(4S/2S)β gets a DZ basis set for hydrogen.(9S5P/4S2P)β gets a DZ basis set for boron-fluorine.(11S7P/6S4P)β gets a DZ basis set for aluminum-chlorine.DZP-OLDβ this one is a DZ basis set with a shell of polarization functions added on top. The exponents of those functions are the old value, iykyk. It's available for hydrogen, boron-fluorine, and aluminum-chlorine.TZ-OLDβ the old triple zeta (TZ) basis set, which is(4s/3s)for hydrogen,(9s5p/5s3p)for boron-fluorine, and(11s7p/7s5p)for aluminum-chlorine. Just so you know, the TZ basis set is triple zeta in the valence only.
π¨ This basis is provided for verification of old results; do not use it. Like, genuinely, don't. Not the vibe.
TZP-OLDβ the old TZ basis set with the old polarization functions added. It's available for hydrogen, boron-fluorine, and aluminum-chlorine.
π¨ This basis is provided for verification of old results; do not use it. Periodt.
(5S/3S)β gets a TZ basis set for hydrogen.(10S6P/5S3P)β gets a TZ basis set for boron-neon. And remember: the TZ basis set is triple zeta in the valence only.(12S9P/6S5P)β gets a TZ basis set for sodium-argon. Same deal, the TZ basis set is triple zeta in the valence only.1P_POLARIZATIONβ gets you one set of polarization functions for hydrogen.1D_POLARIZATIONβ gets you one set of polarization functions for boron-fluorine and aluminum-chlorine.2P_POLARIZATIONβ gets you two sets of polarization functions for hydrogen.2D_POLARIZATIONβ gets you two sets of polarization functions for boron-fluorine and aluminum-chlorine.1D_POLARIZATIONβ okay so this name shows up again in the list, and this time it gets you a set of second polarization functions for hydrogen. Not a typo, it's just listed twice. π1F_POLARIZATIONβ gets you a set of second polarization functions for boron-fluorine and aluminum-chlorine.DZPβ this one's a whole combo meal π: a(4S/2S)basis with a"1P_POLARIZATION"function for hydrogen, a(9S5P/4S2P)basis with a"1D_POLARIZATION"function for lithium-flourine, a(11S5P/7S2P)plus two even-tempered p functions for sodium and magnesium, and a(11S7P/6S4P)basis with a"1D_POLARIZATION"function for aluminium-chlorine.TZ2Pβ gets a(5S/3S)basis with"2P_POLARIZATION"functions for hydrogen, a(10S6P/5S3P)basis with"2D_POLARIZATION"functions for boron-flourine, and a(12S9P/6S5P)basis with"2D_POLARIZATION"functions for aluminium-chlorine. β¨DZ_DIFβ gets a DZ basis with a diffuse s for hydrogen, and a diffuse s and diffuse p for boron-flourine, and aluminum-chlorine.TZ_DIFβ gets a TZ basis with a diffuse s for hydrogen, and a diffuse s and diffuse p for boron-flourine, and aluminum-chlorine.DZP_DIFβ gets the DZP basis with a diffuse s for hydrogen, and a diffuse s and diffuse p for boron-flourine, and aluminum-chlorine.TZ2P_DIFβ gets the TZ2P basis with a diffuse s for hydrogen, and a diffuse s and diffuse p for boron-flourine, and aluminum-chlorine.TZ2PFβ gets the TZ2P basis and adds"1D_POLARIZATION"for hydrogen and"1F_POLARIZATION"for boron-flourine, and aluminum-chlorine.TZ2PDβ gets the TZ2PF basis set for hydrogen.TZ2PF_DIFβ gets a TZ2PF basis and adds the appropriate s diffuse functions for hydrogen and s and p diffuse functions for boron-flourine, and aluminum-chlorine.CCPVDZβ gets the segmentally contracted correlation consistent basis setcc-pVDZ, which is(4s1p/2s1p)for hydrogen and helium,(9s4p1d/3s2p1d)for lithium - neon, and(12s8p1d/4s3p1d)for sodium and aluminum - argon.CCPVTZβ gets the segmentally contracted correlation consistent basis setcc-pVTZ, which is(5s2p1d/3s2p1d)for hydrogen and helium,(10s5p2d1f/4s3p2d1f)for lithium - neon, and(15s9p2d1f/5s4p2d1f)for sodium and aluminum - argon.CCPVQZβ gets the segmentally contracted correlation consistent basis setcc-pVQZ, which is(6s3p2d1f/4s3p2d1f)for hydrogen and helium,(12s6p3d2f1g/5s4p3d2f1g)for lithium - neon, and(16s11p3d2f1g/6s5p3d2f1g)for sodium and aluminum - argon.CCPV5Zβ gets the segmentally contracted correlation consistent basis setcc-pV5Z, which is(8s4p3d2f1g/5s4p3d2f1g)for hydrogen and helium,(14s8p4d3f2g1h/6s5p4d3f2g1h)for beryllium - neon, and(20s12p4d3f2g1h/7s6p4d3f2g1h)for aluminum - argon.
π PLEASE NOTE: The correlation consistent basis sets cc-pVXZ (X = D, T, Q, 5) are designed for use with pure angular momentum functions.
AUGCCPVDZβ gets the correlation consistent basis setaug-cc-pVDZ, which is thecc-pVDZbasis set augmented with optimized diffuse functions. This is a diffuse(1s1p)set for hydrogen and helium, and a diffuse(1s1p1d)set for lithium - neon, sodium, and aluminum - argon.AUGCCPVTZβ gets the correlation consistent basis setaug-cc-pVTZ, which is thecc-pVTZbasis set augmented with optimized diffuse functions. This is a diffuse(1s1p1d)set for hydrogen and helium, and a diffuse(1s1p1d1f)set for lithium - neon, sodium, and aluminum - argon.AUGCCPVQZβ gets the correlation consistent basis setaug-cc-pVQZ, which is thecc-pVQZbasis set augmented with optimized diffuse functions. This is a diffuse(1s1p1d1f)set for hydrogen and helium, and a diffuse(1s1p1d1f1g)set for lithium - neon, sodium, and aluminum - argon.AUGCCPV5Zβ gets the correlation consistent basis setaug-cc-pV5Z, which is thecc-pV5Zbasis set augmented with optimized diffuse functions. This is a diffuse(1s1p1d1f1g)set for hydrogen and helium, and a diffuse(1s1p1d1f1g1h)set for beryllium - neon and aluminum - argon.
GCVDZβ a general contracted basis set for hydrogen, for which it is(4s)/[2s], and for boron-neon, for which it is(9s4p)/[3s2p].GCVTZβ a general contracted basis set for hydrogen, for which it is(5s)/[3s], and for boron-neon, for which it is(10s5p)/[4s3p].GCVQZβ a general contracted basis set for hydrogen, for which it is(6s)/[4s], and for boron-neon, for which it is(12s6p)/[5s4p].GCV1Pβ gets you one P polarization shell for hydrogen (for use withGCVDZ).GCV2Pβ gets you two P polarization shells for hydrogen (for use withGCVTZ).GCV3Pβ gets you three P polarization shells for hydrogen (for use withGCVQZ).GCV1Dβ gets you one D polarization shell for hydrogen (for use withGCVTZ) and boron-neon (for use withGCVDZ).GCV2Dβ gets you two D polarization shells for hydrogen (for use withGCVQZ) and boron-neon (for use withGCVTZ).GCV3Dβ gets you three D polarization shells for boron-neon (for use withGCVQZ).GCV1Fβ gets you one F polarization shell for hydrogen (for use withGCVQZ) and boron-neon (for use withGCVTZ).GCV2Fβ gets you two F polarization shells for boron-neon (for use withGCVQZ).GCV1Gβ gets you one G polarization shell for boron-neon (for use withGCVQZ).GCV1DPUREβ this isGCV1Dwith pure angular momentum explicitly turned on. β¨GCV2DPUREβ this isGCV2Dwith pure angular momentum explicitly turned on. π¦GCV3DPUREβ it'sGCV3Dbut with pure angular momentum explicitly turned on, periodt.GCV1FPUREβGCV1F, pure angular momentum explicitly turned on. same energy, different flavor πGCV2FPUREβGCV2F, pure angular momentum explicitly turned on.GCV1GPUREβGCV1G, pure angular momentum explicitly turned on.GCVDZPβ a general contracted basis set: for hydrogen it's (4s1p)/[2s1p], and for boron-neon it's (9s4p1d)/[3s2p1d]. she's serving structure β¨GCVTZPβ general contracted again: hydrogen gets (5s2p1d)/[3s2p1d], boron-neon gets (10s5p2d1f)/[4s3p2d1f].GCVQZPβ general contracted, big sister edition: hydrogen is (6s3p2d1f)/[4s3p2d1f], and boron-neon is (12s6p3d2f1g)/[5s4p3d2f1g].DUNNING_RYDBERG_3Sβ this one grabs you a Rydberg shell for boron-fluorine.DUNNING_RYDBERG_3Pβ Rydberg shell, boron-fluorine, again but P this time.DUNNING_RYDBERG_3Dβ Rydberg shell for boron-fluorine and aluminum-chlorine.DUNNING_RYDBERG_4Sβ Rydberg shell for boron-fluorine and aluminum-chlorine.DUNNING_RYDBERG_4Pβ Rydberg shell for boron-fluorine and aluminum-chlorine.DUNNING_RYDBERG_4Dβ Rydberg shell for boron-fluorine.DUNNING_NEGATIVE_ION_2Pβ this one gets a diffuse shell for boron-fluorine and aluminum-chlorine.WACHTERSβ this gets a (14s11p6d/10s8p3d) basis set for potassium, and scandium-zinc.321Gβ a 3-21G basis set for hydrogen-argon.631Gβ a 6-31G basis set for hydrogen-argon.6311Gβ a 6-311G basis set for hydrogen-neon.631GSTβ a 6-31G* basis set for hydrogen-argon.631PGSβ a 6-31+G* basis set for hydrogen-argon.6311PPGSSβ a 6-311++G** basis set for hydrogen-neon.PLUSSβ a diffuse S (Pople) for hydrogen-argon.PLUSPβ a diffuse P (Pople) for hydrogen-argon.
β¨ EXAMPLE β¨
okay bestie, here's an actual water molecule living her best life:
default: (
)
input: (
basis = dzp
geometry = ((o 0.0 0.00000000 0.00000000)
(h 0.0 -1.49495900 0.99859206)
(h 0.0 1.49495900 0.99859206))
)
and this next one? literally the same input, just spelled different β same vibes, same result:
default: (
)
input: (
basis = ( (o dzp)
(h dzp) )
geometry = ((oxygen 0.0 0.00000000 0.00000000)
(hydrogen 0.0 -1.49495900 0.99859206)
(hydrogen 0.0 1.49495900 0.99859206))
)
and here's what a Z-matrix specification looks like, for when you wanna be fancy with your coordinates:
default: (
)
input: (
basis = ( (oxygen ccpv6z)
(hydrogen ccpv5z) )
zmat = ((x)
(o 1 1.0)
(h 2 0.995 1 127.75)
(h 2 0.995 1 127.75 3 180.0)
)
)
π BASIS SET EXAMPLE π
so you can drop these lines straight into an input file to redefine the hydrogen DZP basis set. and listen β double quotes are mandatory when a basis set name has special characters in it, no skipping that π
basis: (
% definition for hydrogen's DZP basis:
hydrogen:dzp = (
% inserts hydrogen:dz:
(get "DZ")
% uses pbasis.dat for polarization:
(get "DUNNING_POLARIZATION")
)
% definition for hydrogen's DZ basis:
hydrogen:dz = (
% inserts hydrogen:"HUZINAGA-DUNNING_(9S/4S)":
(get "HUZINAGA-DUNNING_(9S/4S)")
)
% definition for hydrogen's (9s/4s) basis:
hydrogen:"HUZINAGA-DUNNING_(9S/4S)" = (
(S ( 19.2406 0.032828)
( 2.8992 0.231208)
( 0.6534 0.817238))
(S ( 0.1776 1.0))
)
)
π¦ FILES SUBSECTION EXAMPLE π¦
want a whole alternate location for your basis set info? say less. these lines go in an input file and do exactly that. and again β double quotes when a string has special characters in it. non-negotiable π«Ά
input: (
basis = (mydzp mydzp mydzp)
geometry = ((o 0.0 0.00000000 0.00000000)
(h 0.0 -1.49495900 0.99859206)
(h 0.0 1.49495900 0.99859206))
% I like to keep everything in my chem applications
% sub directory.
% Basis set is in
% /home/general/user/chem/my_very_own.basis
basis_file = "/home/general/user/chem/my_very_own.basis"
)
and the second flavor β this one keeps every basis set in its own little directory, main character energy:
input: (
basis_file = "/home/general/user/basis/dzp_plus_diff/"
% I like to keep everything in it's own directory.
% Basis set is in
% /home/general/user/basis/dzp_plus_diff/basis.dat
basis = dzpdiff
geometry = ((o 0.0 0.00000000 0.00000000)
(h 0.0 -1.49495900 0.99859206)
(h 0.0 1.49495900 0.99859206) )
)
π LAST THINGS π
credits time, because we always give credit π«Ά
this program was written by Edward F. Valeev, Dr. Justin T. Fermann, and Timothy J. Van Huis. the authors wanna send a huge thank you to Dr. T. Daniel Crawford and Rollin A. King for the help. and if anything is broken, or you hit a problem? email it over to evaleev@schroedinger.ccqc.uga.edu β they wanna know.
heads up: any problems go to that email, bestie. don't just suffer in silence π
and that's the whole page, start to finish π
this was Psi Release 3, page input(1) β go forth and build your basis sets, you've got this ππ
π¦ 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