I'm trying to write a program to calculate fixed-point Hartree-Fock level energies of molecules (for my amusement) and everything makes sense but this. I've been agonizing over this for almost 3 hours now. I've tried pretty much every Google search I can think of (mostly returning results that were either too vague or without enough detail) and looked in almost every book/ebook I own (pretty much always too vague). Any help whatsoever would be extremely appreciated.

As far as I understand, an STO-NG contracted Gaussian basis function has the following form:

$$\phi_{\mu}^{\textrm{CGF}}(\vec{r}) = \sum_{p}^{N_{\textrm{PGF}}} d_{p\mu} (x-X_A)^{i_{p\mu}} (y-Y_A)^{j_{p\mu}} (z-Z_A)^{k_{p\mu}} e^{-\alpha_{p\mu}|\vec{r}-\vec{R_{A}}|^{2}}$$

where the contraction coefficients, $d_{k\mu}$ and exponents, $\alpha_{k\mu}$ are chosen such that $\phi_{\mu}$ provides the 'best fit' to a Slater-type orbital having a Slater exponent $\zeta$, $\vec{R_{A}}=(X_A,Y_A,Z_A)$ is a fixed reference centre (usually a nucleus) and $l_{p\mu} = i_{p\mu} + j_{p\mu} + k_{p\mu}$ defines the angular momentum of the primitive Gaussian function:

$$\phi_{p\mu}^{\textrm{PGF}} = (x-X_A)^{i_{p\mu}} (y-Y_A)^{j_{p\mu}} (z-Z_A)^{k_{p\mu}} e^{-\alpha_{p\mu}|\vec{r}-\vec{R_{A}}|^{2}}.$$

I'm having problems interpreting data files documenting contraction coefficients and exponents for various basis sets.

For example, please consider the following snippet from the Gaussian 94 STO-3G basis set file documenting contraction parameters for Carbon:

C     0 
S   3   1.00
     71.6168370              0.15432897       
     13.0450960              0.53532814       
      3.5305122              0.44463454       
SP   3   1.00
      2.9412494             -0.09996723             0.15591627       
      0.6834831              0.39951283             0.60768372       
      0.2222899              0.70011547             0.39195739       

I have read in various places that there are enough coefficients here to describe 5 contracted functions, but I see only enough for 3 maximum (if the exponents are the same, but the coefficients change between 2S and 2P). I'd be eternally grateful if someone could explain for me, precisely how one would determine the following information from such a basis set data file:

1) Which EXACT basis functions appear within each contracted function?

2) How many contracted Gaussian basis functions there are?

If possible, would you be able to do the same for the following snippet, again for Carbon, Gaussian 94, but this time for the more complicated 6-31++G** basis set?:

C     0 
S   6   1.00
   3047.5249000              0.0018347        
    457.3695100              0.0140373        
    103.9486900              0.0688426        
     29.2101550              0.2321844        
      9.2866630              0.4679413        
      3.1639270              0.3623120        
SP   3   1.00
      7.8682724             -0.1193324              0.0689991        
      1.8812885             -0.1608542              0.3164240        
      0.5442493              1.1434564              0.7443083        
SP   1   1.00
      0.1687144              1.0000000              1.0000000        
SP   1   1.00
      0.0438000              1.0000000              1.0000000        
D   1   1.00
      0.8000000              1.0000000        
  • 1
    $\begingroup$ Have you had a look at the original publication? Maybe it is easier to find the coefficients described in there. For the STO-nG family it should be described by Pople et. al.. Little information is gained on wikipedia. $\endgroup$ Aug 21, 2014 at 3:29
  • $\begingroup$ Thank-you for your reply, Martin. The thing is, I can't access the paper (I graduated last year) and I've checked out the Wikipedia article, but again, it's really quite qualitative and very vague with the specifics. $\endgroup$ Aug 21, 2014 at 3:32
  • $\begingroup$ Thank-you for the paper! I've wasted so much time googling around in the hopes that someone had uploaded it. A quick flick through seems to suggest that the researchers were dealing in spherical Gaussians, but I will enjoy the read nonetheless and I'm sure all of the information will be useful. $\endgroup$ Aug 21, 2014 at 4:29
  • 1
    $\begingroup$ I agree, a paper like this should be open access. I hope it helps you - all implementations were based on this one, so it must be possible somehow. $\endgroup$ Aug 21, 2014 at 5:10
  • 1
    $\begingroup$ In case someone will come by this question, here's a nice short write up on this topic tau.ac.il/~ephraim/Appendix_1.pdf $\endgroup$
    – user34137
    Aug 25, 2016 at 16:14

2 Answers 2


Take a look at the carbon STO-3G first. It means for each AO, you form it with three Gaussians. For carbon, you have a 1S, 2S and (three) 2P. 5 functions when finished.

The top line says you are defining the basis for carbon; no big deal.

Next line says you are creating an S shell, with three primitives, with a 1x scale factor.

Then you list your three rows of primitives.

The first column is the Gaussian exponent. The next column is the S expansion coefficient. These are the three Gaussians that make up your 1S "Slater" atomic orbital.

In the next section, you define SP. What this is, and I quote from the Gaussian website now: "Note that 2SP requests the best least-squares fit simultaneously to S and P slater orbitals and is not equivalent to separately specifying the best S and the best P expansions."

S and P (and all higher angular momenta, actually) can be related by a recursion relationship. It's an efficient way of computing integrals. I believe the Obara-Saika recursion takes advantage of this, though in Gaussian the integrals are formed using the PRISM algorithm.

The first column is the exponent for your Gaussian, the second column is the S expansion coefficient, and the third column is the P expansion coefficient. They just share the same exponent. Thus you have 4 + 1 (from before) = 5 AOs total formed with three primitives each.

To jump ahead to your last example, the pattern simply continues. The first section gives six primitives to form one 1S (the 6 in 6-311++G**). The second section gives three Gaussians for you valence S and P, the third section is one Gaussian for valence SP. This is the 31 in 6-31++G**. You have a split valence description, one with three primitives, one with a single primitive.

The next section is the diffuse function, hence the really small exponent in the first column. This is the ++ part of the 6-31++G**. The small exponent gives a really wide spreading Gaussian. Helpful for describing electronic activity far from the nucleus. (It's helpful to compare with the huge exponents in the first section, which gives really tight functions that describe the core electrons).

Finally, you have the D functions which are polarization functions. Carbon doesn't have a D valence shell, but we include them to describe polarization of electronic density in molecules.

Note that depending on your program, you either have 5D AOs or 6D AOs. This is the difference between spherical and cartesian representations, and is more of a computational trick than anything else. Gaussian uses 5D by default, except in some cases.


The tab sections Input, Examples and Basis Function Overview of Gen in Gaussian's online manual present, in tandem, a summary guide to what the various parameters listed in the question are and what the way they are ordered implies.

Under the Input section, there is helpful text next to Defining a shell., which also has a useful pseudo-code block listing the order of the variables for defining a custom basis set:

IType   NGauss   Sc    Shell descriptor line: shell type, 
                        number primitive gaussians, and scale factor.
α1   d                Primitive gaussian specification: 
α2   d                  exponent and contraction coefficient.


αN   d                There are a total of NGauss >primitive gaussian lines.

I wanted to add the above as a comment as I don't think it is a direct answer to the question, but rather something useful that supplements the answer by jjgoings above.

  • $\begingroup$ That would be too long for a comment anyway. $\endgroup$ Jun 25, 2020 at 11:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.