Skip to main content

Module corrections

Module corrections 

Source
Expand description

Optional corrections to the static potential: local exchange and correlation-polarization (issue #91, step 3 of the Mott elastic model).

Both are off by default. They need the atomic electron density rho(r), which a ScreenedPotential does not provide, so the density is a separate, explicit input (ElectronDensity). For the analytic potentials of this module the density is the one that generates the potential through Poisson’s equation (Salvat, Martinez, Mayol & Parellada, Phys. Rev. A 36, 467 (1987), doi:10.1103/PhysRevA.36.467, Eqs. (2) and (12)); it is never inferred from an arbitrary user potential.

§Sources

The model is the one of F. Salvat, Phys. Rev. A 68, 012708 (2003), doi:10.1103/PhysRevA.68.012708, Sec. II (read in the open copy of the University of Barcelona repository, diposit.ub.edu). That paper is the published account of the optical-model potential that the ELSEPA paper (Salvat, Jablonski & Powell, Comput. Phys. Commun. 165, 157 (2005)) uses; the ELSEPA paper itself is closed access and was not opened, and no ELSEPA code was read (Tier C).

  • Exchange, Furness & McCarthy, J. Phys. B 6, 2280 (1973), doi:10.1088/0022-3700/6/11/021, as written in Salvat (2003) Eq. (2) (and identically in Jablonski, Salvat & Powell, J. Phys. Chem. Ref. Data 33, 409 (2004), Eq. (15)), in hartree atomic units:

    V_ex(r) = 1/2 [E - V_st(r)] - 1/2 { [E - V_st(r)]^2 + 4 pi rho(r) }^(1/2)

    with E the kinetic energy of the projectile and V_st the static potential energy. The equation number in the 1973 paper itself is not cited: that paper is closed access (IOP subscription; Unpaywall lists only a metadata record), so only the two secondary accounts above were read. We evaluate the algebraically identical form -2 pi rho / (D + sqrt(D^2 + 4 pi rho)), D = E - V_st >= 0, which avoids the cancellation of the printed form when 4 pi rho << D^2 (high energy, outer atom). V_ex <= 0 everywhere and V_ex = 0 where rho = 0. Salvat (2003) quotes Bransden et al. (1976) that it is accurate above about 1 hartree.

  • Correlation-polarization, Salvat (2003) Eqs. (3)-(7) and (9):

    • long-range polarization (Buckingham) V_pol = -alpha_p/(2 (r^2 + d^2)^2), Eq. (3), with d^4 = (1/2) alpha_p Z^(-1/3) b_pol^2 (bohr units), Eq. (4), and Seltzer’s empirical b_pol^2 = (E - 50 eV)/(16 eV), Eq. (5) (proposed for E >= 100 eV);
    • the local-density correlation potential of Perdew & Zunger, Phys. Rev. B 23, 5048 (1981), in the parametrization printed as Salvat (2003) Eqs. (6)-(7), with r_s = (3/(4 pi rho))^(1/3): V_co = 0.0311 ln r_s - 0.0584 + 0.00133 r_s ln r_s - 0.0084 r_s for r_s < 1 and V_co = -beta_0 (1 + 7/6 beta_1 r_s^(1/2) + 4/3 beta_2 r_s)/(1 + beta_1 r_s^(1/2) + beta_2 r_s)^2 for r_s >= 1, beta_0 = 0.1423, beta_1 = 1.0529, beta_2 = 0.3334. Sign of Eq. (7a). Salvat prints Eq. (7a) with an overall minus sign in front of the bracket. With that sign the two branches jump from +0.0668 to -0.0668 hartree at r_s = 1 and the high-density correlation potential would be repulsive. We use the sign that makes the branches continuous (tested), which is also the sign of the same Perdew-Zunger expression A ln r_s + (B - A/3) + (2/3) C r_s ln r_s + (1/3)(2D - C) r_s with A = 0.0311, B = -0.048, C = 0.002, D = -0.0116 as reproduced (citing Perdew & Zunger) on the Delta Science Institute DFT course page https://www.dsedu.org/courses/dft/xc, read 2026-10-07. The 1981 paper itself was not opened (APS bot challenge; Unpaywall’s link is the publisher PDF);
    • the join, Eq. (9): V_cp = max(V_co, V_pol) for r < r_cp and V_cp = V_pol for r >= r_cp, where r_cp is the outer radius at which V_co and V_pol cross.

§Numerical choices (ours, not from the papers)

  • Finding r_cp. V_co - V_pol is sampled on a geometric grid (ratio 1.01) from JOIN_SCAN_FLOOR to the outer radius and the outermost sign change is refined by bisection. Two crossings closer than one grid ratio would be missed. If V_co > V_pol on the whole grid the crossing lies below the floor (V_co diverges only logarithmically at the nucleus); then Eq. (9) is V_pol on the whole grid and r_cp is reported as None. If V_co < V_pol at the outer radius, the outer crossing lies beyond it and construction fails.
  • Outer radius. The r^-4 tail is integrated out to CorrelationPolarization::outer_radius and set to zero beyond it (a breakpoint and the matching radius). The neglected tail is not covered by the |r V| < threshold rule of ScreenedPotential::matching_radius, which would put the matching radius at thousands of bohr; its effect is measured by the convergence tests instead (doubling the outer radius). The matching radius of the corrected potential is the larger of the outer radius and the default scan applied to V_st + V_ex (both <= 0, so no cancellation can stop the scan early).
  • Start radius. With the polarization tail, partial waves of l up to about k times the outer radius have their turning points where the potential is not negligible. The step-1 start rule is not accurate there (measured: errors up to 0.25 rad at l ~ 1250, Cu, 10 keV, 100 bohr), so the solver uses a WKB start criterion instead. Since #131 it does so for every potential, corrected or not.

Structs§

CorrectedPotential
The static potential plus the selected corrections, at one kinetic energy (the exchange and the polarization cutoff depend on it). Build the solver with CorrectedPotential::solver so the solver energy cannot differ from the one the potential was built for.
CorrectionMetadata
Which corrections a result includes. The default reports both off.
Corrections
Which corrections to add to the static potential. The default is none.
CorrelationPolarization
Inputs of the correlation-polarization correction.
CorrelationPolarizationInfo
Metadata of the correlation-polarization correction.
ExchangeInfo
Metadata of the exchange correction.

Enums§

PolarizationCutoff
How the cutoff d of the polarization potential is set (Salvat 2003 Eqs. (4)-(5)).

Constants§

CORRELATION_POLARIZATION_MODEL
Model identifier recorded in the metadata when correlation-polarization is on.
DEFAULT_OUTER_RADIUS
Default outer radius of the polarization tail, bohr (see the module docs).
EXCHANGE_MODEL
Model identifier recorded in the metadata when exchange is on.
JOIN_SCAN_FLOOR
Lower end of the grid on which the join radius r_cp is searched, bohr.

Traits§

ElectronDensity
Atomic electron density, the input the corrections need beyond the potential.

Functions§

correlation_potential
Perdew-Zunger correlation potential, Salvat (2003) Eqs. (6)-(7) (sign of (7a) as discussed in the module docs), hartree, for density rho (bohr^-3). Zero for rho <= 0 (the r_s -> infinity limit).
exchange_potential
Furness-McCarthy exchange potential, Salvat (2003) Eq. (2), hartree, for local kinetic-energy argument d = E - V_st (hartree) and density rho (bohr^-3), in the cancellation-free form of the module docs.
solve_corrected
solve with optional corrections. With both off this is solve on pot (bit-identical results, metadata reporting both off); otherwise the corrected potential is built at energy_ev and solved at the same energy, and the result’s ElasticResult::corrections records the choices.