Designing Basis Set Normalization
This section contains notes on how normalization is represented in Chemist’s basis set component.
Warning
References were added by AI and have not been human verified. Please report errors.
What is Normalization?
An atomic orbital (AO), \(\mu\), is said to be normalized if:
AO Basis Set Background builds a Cartesian AO in three layers: primitive Gaussians \(\chi_p\) combine into a contracted Gaussian \(G\), which is then paired with a Cartesian polynomial to give \(\mu_{ijk}\). Each layer introduces something which is not normalized, and correspondingly each layer contributes one factor to the overall constant. Writing those factors separately,
where \(\ell = i + j + k\). The three factors are developed below 1,2.
Primitive normalization
The innermost factor scales a single primitive so that, paired with the polynomial, it has unit norm:
Note this factor sits inside the sum, because it differs from primitive to primitive. It is therefore not something which can be pulled out in front of the contraction; folding it in to the contraction coefficients changes the weights of the primitives. The coefficients are said to be “weight normalized.”
Contracted Gaussian normalization
Normalizing each primitive does not normalize their sum, because distinct primitives are not orthogonal. The contracted Gaussian therefore needs its own factor,
where \(S_{pq}\) is the overlap of the two already normalized primitives. Because they are normalized, \(S_{pp} = 1\), so this factor measures nothing but the non-orthogonality between distinct primitives. It is a single scalar in front of the sum, and it depends on the whole contraction at once.
Cartesian AO normalization
The two factors so far depend on \(\ell\) but not on how the angular momentum is distributed among the axes. That distribution matters, and the remaining factor accounts for it:
By construction \(N^{AO}_{ijk} = 1\) when all the angular momentum sits on one axis, i.e., for \(z^\ell\) and its permutations, and it is larger otherwise. For a \(d\) shell it is \(\sqrt{3}\) for \(d_{xy}\) against \(1\) for \(d_{zz}\), which is not a difference one can neglect.
This is the only one of the three factors which distinguishes the components of a shell, and it is the one which is usually dropped. Since the components of a shell are typically stored implicitly, there is nowhere natural to put a per-component constant, so the common practice is to stop after \(N^{\chi}\) and \(N^{G}\) and let the single-axis component stand in for the whole shell. Doing so leaves every other component short by a factor of \(N^{AO}_{ijk}\).
Spherical shells do not have this problem because the Cartesian-to-spherical transformation coefficients 4 have \(N^{AO}_{ijk}\) built into them, and so they assume they are being handed Cartesian AOs that are only normalized up to \(N^{G}\).
Why does Chemist need to own this?
Chemist’s philosophy is to be self-describing. Since the parameters will enter chemist without a description, Chemist must be the one that establishes the convention and records it.
Normalization Considerations
Topics in this section were considered in designing how normalization is represented and ultimately were addressed by the design.
- Raw parameters are preserved
Normalizing by rewriting the stored coefficients destroys what the user supplied.
The parameters a user provided should be recoverable unchanged.
Normalization constants should be computed from those parameters on demand rather than folded into them at construction.
Folding normalization in is still useful for handing data to an external library, but that should produce a new object rather than mutating the original.
- Angular momentum in primitive
The primitive normalization factor depends on \(\ell\) therefore the primitive must store it.
- One source of truth
Consumers should not each re-derive the normalization mathematics.
Each factor should be implemented once.
Both \(N^{\chi} N^{G}\), which integral libraries expect, and the full product including \(N^{AO}_{ijk}\), which real-space evaluation requires, should come from that one implementation, so that the two cannot drift apart.
- Consumers stop at different layers
Following from One source of truth, the two consumers of normalization want different numbers.
Code evaluating an AO at a point in space needs the full product, \(N^{AO}_{ijk}\) included.
Code interfacing with integral libraries needs the product stopped after \(N^{G}\), since those libraries apply one scalar per shell and their Cartesian-to-spherical coefficients already carry \(N^{AO}_{ijk}\).
Both must be available, and it must be unambiguous which is which.
Out of Scope
Topics in this section were considered, but do not play a role in the current design.
- General contractions
The design assumes segmented contractions, in which each contracted Gaussian has its own primitives. Normalization of general contractions, where several contractions share a primitive set, is deferred along with general contractions themselves.
- Effective core potentials
ECPs carry their own conventions and are not represented.
- Non-Gaussian basis functions
The normalization constants above are specific to Gaussians. Slater orbitals and numerical orbitals would need their own.
- Orthonormalization
AOs are non-orthonormal by default and most code assumes this. We’re not going to worry about orthonormalizing the basis set.
Summary
- Raw parameters are preserved
Constants are computed on demand from the stored parameters. Converting between conventions produces a new object rather than mutating an existing one.
- Angular momentum in primitive
The primitive normalization factor depends on \(\ell\) therefore the primitive must store it.
- One source of truth
The formulas are implemented once as free functions over the parameters they depend on, and every class-level accessor delegates to them.
- Consumers stop at different layers
AOShellreports \(N^{\chi} N^{G}\);AOcompletes the product with \(N^{AO}_{ijk}\). The two consumers want the same product truncated at different points, not two different calculations.
Further Reading
The closed-form normalization constants, and the integral machinery they belong to, are derived in Gill’s review 2 and, in a more recent and freely available treatment, by Fermann and Valeev 1. Helgaker, Jørgensen, and Olsen 3 cover the same ground at textbook length, including the solid harmonics. For the Cartesian-to-spherical transformation specifically, and the normalization convention embedded in its coefficients, see Schlegel and Frisch 4.
Justin T. Fermann and Edward F. Valeev. Fundamentals of molecular integrals evaluation. 2020. URL: https://arxiv.org/abs/2007.12057, arXiv:2007.12057.
Peter M. W. Gill. Molecular integrals over Gaussian basis functions. Advances in Quantum Chemistry, 25:141–205, 1994.
Trygve Helgaker, Poul Jørgensen, and Jeppe Olsen. Molecular Electronic-Structure Theory. Wiley, 2000.
H. B. Schlegel and M. J. Frisch. Transformation between Cartesian and pure spherical harmonic Gaussians. International Journal of Quantum Chemistry, 54:83–87, 1995. doi:10.1002/qua.560540202.