Dispersion: 3-body terms#
Implementation of the 3-body Axilrod-Teller-Muto dispersion terms.
- class tad_dftd4.dispersion.threebody.ATM(*, damping_fn=<tad_dftd4.damping.functions.ZeroDamping object>, charge_dependent=False)[source]#
D4’s Axilrod-Teller-Muto dispersion term. - C9 coefficients are approximated from C6 coefficients - Becke–Johnson cutoff radii (a1 * sqrt(3.0 * r4r2) + a2) - zero damping
\[\begin{split}E_\text{disp}^{(3), \text{ATM}} &= \sum_\text{ABC} E^{\text{ABC}} f_\text{damp}\left(\overline{R}_\text{ABC}\right) \\ E^{\text{ABC}} &= \dfrac{C^{\text{ABC}}_9 \left(3 \cos\theta_\text{A} \cos\theta_\text{B} \cos\theta_\text{C} + 1 \right)} {\left(r_\text{AB} r_\text{BC} r_\text{AC} \right)^3} \\ f_\text{damp} &= \dfrac{1}{1+ 6 \left(\overline{R}_\text{ABC}\right)^{-16}}\end{split}\]- calculate(numbers, positions, param, cn, model, q, r4r2, rvdw, cutoff)[source]#
Evaluate the energy for the dispersion term.
- tad_dftd4.dispersion.threebody.get_atm_dispersion(numbers, positions, c9, radii, cutoff, damping_function=<tad_dftd4.damping.functions.ZeroDamping object>, s9=1.0, alp=16.0)[source]#
Axilrod-Teller-Muto dispersion term.
- Parameters:
numbers (Tensor) – Atomic numbers for all atoms in the system of shape
(..., nat).positions (Tensor) – Cartesian coordinates of all atoms (shape:
(..., nat, 3)).c9 (Tensor) – Atomic C9 dispersion coefficients.
radii (Tensor) – Pairwise critical radii for all atom pairs (shape:
(..., nat, nat)).cutoff (Tensor) – Real-space cutoff.
damping_function (Damping, optional) – Damping function to use. Defaults to
zero_damping().s9 (Tensor, optional) – Scaling for dispersion coefficients. Defaults to
1.0.alp (Tensor, optional) – Exponent of zero damping function. Defaults to
14.0.
- Returns:
Atom-resolved ATM dispersion energy.
- Return type:
Tensor
- Parameters: