input(1)

πŸ“¦
version 3.4.0 Β· 2 versions
, in debian bookworm, ubuntu jammy, ubuntu noble

πŸ’– 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:

  1. W. J. Hehre, R. F. Stewart and J.A. Pople, J. Chem. Phys. 51 (1969) 2657.
  2. 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:

  1. S. Huzinaga, J. Chem. Phys. 42 (1965) 1293.
  2. T. H. Dunning, J. Chem. Phys. 53 (1970) 2823.

For DZP basis sets:

for Li and Be;

  1. A. J. Thakkar, T. Koga, M. Saito, R. E. Hoffmeyer, Inter. J. Quant. Chem. Symp. 27 (1993) 343.

for Na and Mg;

  1. 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:

  1. 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:

  1. T. H. Dunning, J. Chem. Phys. 55, (1971) 716.
  2. A. D. McLean and G. S. Chandler, J. Chem. Phys., 72 (1980) 5639.

For the general contracted basis sets:

  1. T. H. Dunning Jr., J. Chem. Phys. 90, (1989).
  2. F. B. van Duijneveldt, IBM Res. Rep. RJ 945 (1971).

For the Wachters basis sets:

  1. 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:

  1. 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:

  1. 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:

  1. 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:

  1. 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:

  1. D.E. Woon and T.H. Dunning, Jr. (unpublished).

Also see

  1. 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 makes input keep the checkpoint file and possibly overwrite the info inside it. by default? input deletes the checkpoint file and makes a brand new one πŸ’€ so yeah, this flag is the "pls don't erase my stuff" option.
  • --chkptgeom β€” makes input read the geometry from the checkpoint file instead of from the input file. convenient, ngl.
  • --chkptmos β€” makes INPUT try 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 β€” makes INPUT try 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 β€” if NORMBASIS=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 β€” if PRIMNORM=YES, the contraction coefficients of the D, F, and G primitive functions that you input should be the ones corresponding to the normalized D(XX), F(XXX) and G(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

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 is BOHR, the GEOMETRY array is in bohr. if string is ANGSTROM, the GEOMETRY array is in angstoms. the default is BOHR.
  • 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 is TRUE, then shells with pure angular momentum get used. so a D shell has five functions, an F shell has seven functions, a G shell 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 to TRUE, 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 β€” when KEEP_REF_FRAME is set to TRUE, 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:

  1. it first searches through the user's file
  2. then searches through a file in the working directory (if one exists)
  3. then through a user specified basis file specified by the BASIS_FILE keyword (if any)
  4. 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 set cc-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 set cc-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 set cc-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 set cc-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 set aug-cc-pVDZ, which is the cc-pVDZ basis 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 set aug-cc-pVTZ, which is the cc-pVTZ basis 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 set aug-cc-pVQZ, which is the cc-pVQZ basis 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 set aug-cc-pV5Z, which is the cc-pV5Z basis 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 with GCVDZ).
  • GCV2P β€” gets you two P polarization shells for hydrogen (for use with GCVTZ).
  • GCV3P β€” gets you three P polarization shells for hydrogen (for use with GCVQZ).
  • GCV1D β€” gets you one D polarization shell for hydrogen (for use with GCVTZ) and boron-neon (for use with GCVDZ).
  • GCV2D β€” gets you two D polarization shells for hydrogen (for use with GCVQZ) and boron-neon (for use with GCVTZ).
  • GCV3D β€” gets you three D polarization shells for boron-neon (for use with GCVQZ).
  • GCV1F β€” gets you one F polarization shell for hydrogen (for use with GCVQZ) and boron-neon (for use with GCVTZ).
  • GCV2F β€” gets you two F polarization shells for boron-neon (for use with GCVQZ).
  • GCV1G β€” gets you one G polarization shell for boron-neon (for use with GCVQZ).
  • GCV1DPURE β€” this is GCV1D with pure angular momentum explicitly turned on. ✨
  • GCV2DPURE β€” this is GCV2D with pure angular momentum explicitly turned on. πŸ¦‹
  • GCV3DPURE β€” it's GCV3D but 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