Periodic Boundary Conditions
TeraChem can perform periodic electronic-structure calculations on three-dimensional (bulk) systems using periodic Gaussian basis functions and Ewald summation for the long-range Coulomb interaction. Both Hartree–Fock and DFT are supported, for single-point energies and analytic gradients.
Γ-point only
Periodic calculations are evaluated at the Γ point of the Brillouin zone — there is no k-point sampling. Converge properties with respect to system size by enlarging the simulation cell (supercells) rather than by sampling k-points. Only 3D periodicity is implemented; 1D (chains) and 2D (slabs) are not currently supported.
Activating a periodic calculation
Two things are required: the keyword periodic yes, and a unit cell defined on
the comment line of the coordinate file.
DFT additionally requires the periodic integral/grid engine, enabled with
dftbox yes (see Methods below). Hartree–Fock works
with periodic yes alone.
Specifying the unit cell
The unit cell is given on the second line (the comment line) of the XYZ coordinate file, in the format
where a b c are the cell-edge lengths in Ångström and alpha beta gamma are
the cell angles in degrees. The angles are optional and default to 90°. The
dimension token must be 3D.
For example, the conventional cubic cell of diamond (8 carbons):
8
3D 3.56679 3.56679 3.56679 90 90 90
C 0.0000000 0.0000000 0.0000000
C 0.0000000 1.7833950 1.7833950
C 1.7833950 1.7833950 0.0000000
C 1.7833950 0.0000000 1.7833950
C 2.6750925 0.8916975 2.6750925
C 0.8916975 0.8916975 0.8916975
C 0.8916975 2.6750925 2.6750925
C 2.6750925 2.6750925 0.8916975
A monoclinic cell simply supplies the non-trivial angle, e.g. a benzene crystal
cell: 3D 5.5220 5.4396 7.6726 90 110.55 90.
Atomic positions are Cartesian (in Ångström) by default. To give them as
fractional coordinates of the cell instead, add fractional_xyz yes to the
input; TeraChem then converts them to Cartesian internally using the cell
vectors.
Quick start
A minimal periodic Hartree–Fock single point:
method hf
run energy
basis 6-31g
coordinates benzene.xyz # cell on the comment line: "3D a b c ..."
charge 0
spinmult 1
periodic yes
guess sad
precision mixed
threall 1.0e-14
purify no
end
Example 1: periodic Hartree–Fock energy
method hf
run energy
basis 6-31g
coordinates benzene.xyz
charge 0
spinmult 1
periodic yes
guess sad
precision mixed
threall 1.0e-14
purify no
timings yes
end
Example 2: periodic DFT gradient with dispersion
Periodic DFT requires dftbox yes. Empirical dispersion corrections
(dftd) work in the periodic setting, including the three-body
Axilrod–Teller–Muto term (dftd_atm):
method blyp
run gradient
basis 6-31g
coordinates benzene.xyz
dftbox yes
dftgrid 3
dftd d3-bj
dftd_atm yes
dftd_print yes
charge 0
spinmult 1
periodic yes
guess sad
precision mixed
threall 1.0e-14
purify no
end
Methods and run types
| Setting | Notes |
|---|---|
method hf |
Periodic Hartree–Fock. No dftbox needed. |
method <functional> + dftbox yes |
Periodic DFT. The dftbox engine provides the periodic integrals and grid. |
run energy |
Periodic single-point energy. |
run gradient |
Analytic nuclear gradient (enables geometry optimization and Born–Oppenheimer MD on the periodic energy). |
dftd <model> |
Empirical dispersion (e.g. d3-bj), including dftd_atm three-body term. |
Integration grids (DFT)
Periodic DFT exchange–correlation can be integrated on either grid:
- Molecular (atom-centered) grid — the default, selected with the usual
dftgrid Nkeyword. This is the grid used in Examples above; its construction is documented under Integration Grids. - Uniform real-space grid — request a regular grid spanning the cell with either an explicit size or a target density:
periodic_uniform_grid_size 100,100,100 # nx,ny,nz grid points
# or
periodic_uniform_grid_density 40000 # points per unit cell volume
method blyp
run energy
basis 6-31g
coordinates diamond.xyz
dftbox yes
periodic yes
periodic_uniform_grid_size 100,100,100
charge 0
spinmult 1
guess sad
precision double
threall 1.0e-14
purify no
end
Range separation and Ewald summation
The Coulomb interaction is split into a short-ranged real-space part and a long-ranged reciprocal-space part controlled by the Ewald parameter \(\omega\).
By default (\(\omega\) not specified) TeraChem chooses \(\omega\) automatically to balance the computational cost of the two lattice sums:
where \(V\) is the unit-cell volume (in atomic units, bohr³), giving \(\omega\) in bohr⁻¹. This comes from approximating the number of lattice points inside the real-space cutoff (\(r_\text{real}\approx 1/\omega\)) as \(r_\text{real}^3/V\) and inside the reciprocal-space cutoff (\(r_\text{recip}\approx 2\omega\)) as \(r_\text{recip}^3 V/(8\pi^3)\), then minimizing the weighted sum \(w\,n_\text{real} + n_\text{recip}\) over \(\omega\) (with the real-space term weighted \(w=2\)), which yields \(\omega^6 = w\pi^3/V^2\).
A larger \(\omega\) shifts work into the reciprocal-space sum; a smaller \(\omega\)
into the real-space sum. Override the automatic value with periodic_omega
only for accuracy/timing studies:
Lattice-sum cutoffs
The summations over periodic images are truncated using drop tolerances
(smaller = tighter = more images retained). These rarely need changing; the
defaults are 1.0e-14.
| Keyword | Default | Description |
|---|---|---|
periodic_orbital_cutoff |
1.0e-14 | Tolerance for including periodic images of the Gaussian basis functions |
periodic_ewald_cutoff_real |
1.0e-14 | Tolerance for the real-space Ewald lattice sum |
periodic_ewald_cutoff_reciprocal |
1.0e-14 | Tolerance for the reciprocal-space Ewald lattice sum |
periodic_cutoff_all |
— | Convenience keyword: sets all three cutoffs above to the same value |
Summary of keywords
| Keyword | Type | Default | Description |
|---|---|---|---|
periodic |
bool | no | Master switch — activate 3D periodic boundary conditions |
fractional_xyz |
bool | no | Interpret atomic coordinates as fractional cell coordinates |
dftbox |
bool | no | Required for periodic DFT (periodic integrals and grid) |
periodic_omega |
float | automatic | Ewald range-separation parameter \(\omega\) (bohr⁻¹); see formula above |
periodic_uniform_grid_size |
3×int | — | Uniform real-space grid dimensions nx,ny,nz (DFT) |
periodic_uniform_grid_density |
float | — | Uniform real-space grid density (points per cell volume; DFT) |
periodic_orbital_cutoff |
float | 1.0e-14 | Basis-function image cutoff tolerance |
periodic_ewald_cutoff_real |
float | 1.0e-14 | Real-space Ewald cutoff tolerance |
periodic_ewald_cutoff_reciprocal |
float | 1.0e-14 | Reciprocal-space Ewald cutoff tolerance |
periodic_cutoff_all |
float | — | Set all three image/Ewald cutoffs at once |
The unit cell itself is not an input keyword — it is read from the comment line of the coordinate file (see Specifying the unit cell).
Limitations
- 3D periodicity only — 1D and 2D systems are not supported.
- Γ-point only — no k-point sampling; use supercells to approach the bulk limit.
- Periodic DFT requires
dftbox yes.