Basis Pointers¶
Basis pointer files (formerly called bfinfo files) provide the mapping between atomic orbitals and the radial basis functions stored in the numerical basis files. They specify how to construct atomic orbitals from radial shells and angular momentum functions, enabling CHAMP to build molecular orbitals from the atomic basis.
Overview¶
The basis pointer file acts as an instruction manual for assembling atomic orbitals:
- Maps radial shells to angular momentum components
- Defines the number and type of atomic orbitals per atom
- Links atomic orbitals to columns in the radial grid files
- Organizes basis functions by angular momentum quantum numbers
Key Concepts¶
- Atomic orbital (AO): A single-atom basis function with specific angular character
- Radial shell: A radial basis function from the
.basisfile - Angular momentum index: Specifies real solid harmonics \(S_l^m\)
- Column mapping: Links AOs to specific columns in the radial basis file
File Format¶
Basis pointer files are stored in the pool/ directory and are automatically generated by the trex2champ converter.
File Structure¶
# Format of the new basis information file champ_v3
# num_ao_per_center, n(s), n(p), n(d), n(f), n(g)
# Index of Slm (Range 1 to 35)
# Index of column from numerical basis file
qmc_bf_info 1
54 4 4 3 2 0
1 1 1 1 2 3 4 2 3 4 2 3 4 2 3 4 5 6 7 8 9 10 5 6 7 8 9 10 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 11 12 13 14 15 16 17 18 19 20
1 2 3 4 5 5 5 6 6 6 7 7 7 8 8 8 9 9 9 9 9 9 10 10 10 10 10 10 11 11 11 11 11 11 12 12 12 12 12 12 12 12 12 12 13 13 13 13 13 13 13 13 13 13
35 4 3 2 1 0
1 1 1 1 2 3 4 2 3 4 2 3 4 5 6 7 8 9 10 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 2 3 4 5 5 5 6 6 6 7 7 7 8 8 8 8 8 8 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10
end
Format Specification¶
Header line: Format identifier
Identifies this as a basis pointer file in CHAMP v3 format.For each unique atom type: Three consecutive lines
Line 1: Angular momentum composition
Format:num_ao_per_center n(s) n(p) n(d) n(f) n(g)
num_ao_per_center= 54: Total number of atomic orbitals for this atomn(s)= 4: Number of s-type radial shells (l=0)n(p)= 4: Number of p-type radial shells (l=1)n(d)= 3: Number of d-type radial shells (l=2)n(f)= 2: Number of f-type radial shells (l=3)n(g)= 0: Number of g-type radial shells (l=4)
Total AOs = n(s)×1 + n(p)×3 + n(d)×6 + n(f)×10 + n(g)×15 = 4×1 + 4×3 + 3×6 + 2×10 + 0×15 = 54
Line 2: Angular momentum indices
The AOs can be expressed using real solid harmonics or polynomials in Cartesian coordinates. In the case of real solid harmonics, the AOs are ordered as (\(0, 1, -1, 2, -2, \dots\)). In the case of polynomials, the canonical (or alphabetical) ordering is used:
| Index | Orbital | Components |
|---|---|---|
| 1 | s | \(1\) |
| 2-4 | p | \(x, y, z\) |
| 5-10 | d | \(x^2, xy, xz, y^2, yz, z^2\) |
| 11-20 | f | \(x^3, x^2y, x^2z, xy^2, xyz, xz^2, y^3, y^2z, yz^2, z^3\) |
| 21-35 | g | \(x^4, x^3y, x^3z, x^2y^2, x^2yz, x^2z^2, xy^3, xy^2z, xyz^2, xz^3, y^4, y^3z, y^2z^2, yz^3, z^4\) |
The sequence maps each AO to its angular component.
Line 3: Radial shell column indices
Each number specifies which column (radial shell) from the .basis file to use for the corresponding AO:
- Column indices start at 1 (after the radius column)
- Multiple AOs can share the same radial shell (different angular components)
- The length of this line equals
num_ao_per_center
Final line:
Examples¶
Example 1: Hydrogen Atom (Simple)¶
Basis pointer file (basis_pointers):
Explanation:
- Line 1:
5 2 1 0 0 0 - 5 total AOs
- 2 s-type shells (1s, 2s)
- 1 p-type shell (2p)
-
No d, f, or g shells
-
Line 2:
1 1 2 3 4 - AOs 1-2: s-type (index 1)
- AO 3: px (index 2)
- AO 4: py (index 3)
-
AO 5: pz (index 4)
-
Line 3:
1 2 3 3 3 - AO 1: uses radial shell 1 (1s)
- AO 2: uses radial shell 2 (2s)
- AO 3: uses radial shell 3 (2p with different angular parts)
Example 2: Carbon Atom (BFD-Da Basis)¶
Basis pointer file:
qmc_bf_info 1
18 3 3 1 0 0
1 1 1 2 3 4 2 3 4 2 3 4 5 6 7 8 9 10
1 2 3 4 4 4 5 5 5 6 6 6 7 7 7 7 7 7
end
Explanation:
- 18 atomic orbitals total
- 3 s-shells: 1s, 2s and 3s
- 3 p-shells: 2p, 3p and 4p (or polarization p)
- 1 d-shell: 3d (polarization)
Angular momentum breakdown:
- 3 s-orbitals (indices 1)
- 6 p-orbitals (indices 2, 3, 4)
- 5 d-orbitals (indices 5, 6, 7, 8, 9)
Radial shell mapping:
- Columns 1-3: s-type radials
- Columns 4-6: p-type radials
- Column 7: d-type radials
Example 3: Water Molecule¶
Geometry: O, H, H (two unique atom types)
Basis pointer file:
qmc_bf_info 1
14 2 2 1 0 0
1 1 2 3 4 2 3 4 5 6 7 8 9 10
1 2 3 3 3 4 4 4 5 5 5 5 5 5
5 2 1 0 0 0
1 1 2 3 4
1 2 3 3 3
end
Explanation:
First atom type (Oxygen):
- 14 AOs: 2 s-shells + 2 p-shells + 1 d-shell
- s-orbitals use radial columns 1, 2
- p-orbitals use radial columns 3, 4
- d-orbitals use radial column 5
Second atom type (Hydrogen):
- 5 AOs: 2 s-shells + 1 p-shell
- s-orbitals use radial columns 1, 2
- p-orbitals use radial column 3
Example 4: Heavy Element with f-functions¶
Transition metal with extended basis:
qmc_bf_info 1
35 4 3 2 1 0
1 1 1 1 2 3 4 2 3 4 2 3 4 5 6 7 8 9 10 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 2 3 4 5 5 5 6 6 6 7 7 7 8 8 8 8 8 8 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10
end
Explanation:
- 35 total AOs
- 4 s-shells, 3 p-shells, 2 d-shells, 1 f-shell
- f-orbitals use indices 10-20
- Radial columns 1-10 used for all shells
Angular Momentum Indexing¶
Cartesian Gaussian Polynomials¶
CHAMP uses Cartesian Gaussian polynomials with canonical (alphabetical) ordering:
s-orbitals (\(l=0\)): - Index 1: \(1\) (s)
p-orbitals (\(l=1\)): - Indices 2-4: \(x, y, z\) (px, py, pz)
d-orbitals (\(l=2\)): - Indices 5-10: \(x^2, xy, xz, y^2, yz, z^2\) (dxx, dxy, dxz, dyy, dyz, dzz)
f-orbitals (\(l=3\)): - Indices 11-20: \(x^3, x^2y, x^2z, xy^2, xyz, xz^2, y^3, y^2z, yz^2, z^3\)
g-orbitals (\(l=4\)): - Indices 21-35: 15 functions (\(x^4\) to \(z^4\))
Counting Atomic Orbitals¶
Total AOs per atom using Cartesian components:
where \(n(l)\) is the number of radial shells for angular momentum \(l\) and the term \(\frac{(l+1)(l+2)}{2}\) represents the number of Cartesian components (\(N_{cart}\)).
| Shell | l | Components (\(N_{cart}\)) |
|---|---|---|
| s | 0 | 1 |
| p | 1 | 3 |
| d | 2 | 6 |
| f | 3 | 10 |
| g | 4 | 15 |
Loading Basis Pointers in CHAMP¶
The basis pointer file is loaded automatically when you specify the basis set:
%module general
title 'VMC calculation'
pool './pool/'
basis 'BFD-T'
%endmodule
load trexio $pool/molecule.hdf5
CHAMP looks for basis_pointers file in the pool/ directory.
Explicit Loading¶
You can also load the file explicitly:
Generating Basis Pointer Files¶
Automatic Generation¶
The trex2champ converter creates basis pointer files automatically:
#!/bin/bash
python trex2champ.py \
--trex molecule.hdf5 \
--basis_prefix "cc-VDZ" \
--geom \
--basis
This generates:
- basis_pointers file in correct format
- Consistent with basis set files and molecular orbitals
- Properly ordered for all atom types
Verification¶
Check that the basis pointer file:
- Matches atom types: One set of 3 lines per unique atom
- Consistent AO counts: Sum of angular components equals total AOs
- Valid angular indices: All indices in range 1-35
- Valid column indices: Don't exceed number of radial shells in
.basisfile
Best Practices¶
File Organization¶
- Keep
basis_pointersin thepool/directory - Use
trex2champfor cross checking.
Verification Checklist¶
- Total AO count matches angular momentum breakdown
- Column indices are within range for basis files
- Angular momentum indices are valid (1-35)
- Number of atom type entries matches geometry
- Atom type ordering matches geometry file
Debugging Strategy¶
- Check basis pointer format line by line
- Verify against basis set file structure
- Count AOs manually and compare
- Test with simple systems first
- Use
trex2champoutput as reference
Related Topics¶
- Basis Sets - Radial grid files that pointers reference
- Molecular Orbitals - Built from atomic orbitals
- TREXIO Files - Source of basis set information
- Preparation Workflow - Complete input preparation
Atom Type Consistency
Each unique atom type in your geometry must have a corresponding set of three lines in the basis pointer file. The ordering must match the atom type ordering in your geometry and other input files.