Born effective charges
The Born effective charge (or dynamical charge) tensor $Z^*$ measures how the force on an ion responds to an electric field, or equivalently how the polarization responds to displacing that ion. It governs the infrared activity of vibrational modes and the LO-TO splitting in polar crystals.
Definition and conventions
For atom $\alpha$, the Born effective charges are defined as
$$ Z^{*}_{\alpha,ij} = \frac{\partial F_{\alpha,j}}{\partial \mathcal{E}_i} = \frac{\partial P_i}{\partial R_{\alpha,j}} \,\! $$
The two expressions are equal because both are the same mixed second derivative of the total energy, $-\partial^2 E / \partial \mathcal{E}_i \partial R_{\alpha,j}$, using $F_{\alpha,j} = -\partial E/\partial R_{\alpha,j}$ and $P_i = -\partial E/\partial \mathcal{E}_i$. Octopus implements both forms, in different calculation modes.
The ionic contribution $Z^{\rm val}_\alpha \delta_{ij}$, where $Z^{\rm val}$ is the pseudopotential valence charge, is included in the printed values. Consequently $Z^*$ is close to $Z^{\rm val}$ for a strongly ionic site and close to zero for a non-polar one. The tensor is generally not symmetric for an individual atom; only the sum over atoms is constrained (see the sum rule below). Site symmetry may nonetheless force it to be diagonal, for instance for an atom sitting on a site with the full point-group symmetry.
Running a calculation
Born charges are always a by-product of another CalculationMode; there is no dedicated mode. There are three possible routes.
Sternheimer response to an electric field
This evaluates $\partial F/\partial \mathcal{E}$ from the linear-response orbitals. This is based on perturbation theory and solves the Sternheimer equation. It requires the following input lines:
CalculationMode = em_resp
ExperimentalFeatures = yes
EMCalcBornCharges = yes
The result is written for every requested frequency, so with a nonzero EMFreqs this gives frequency-dependent Born charges. For a periodic system a previous CalculationMode = kdotp run is required. Therefore, in order to obtain Born effective charges in solids, on needs to perform a ground-state calculation, then a k.p calculation, and then the em_resp calculation. See more details about Sternheimer in the corresponding tutorial.
Finite electric field
The same derivative taken by central finite differences of the self-consistent forces, $[F(+\mathcal{E})-F(-\mathcal{E})]/2\mathcal{E}$, with the field magnitude given by EMStaticElectricField. This approach only works for non-periodic systems, and only produces the static Born effective charges.
CalculationMode = em_resp
ResponseMethod = finite_differences
ExperimentalFeatures = yes
EMCalcBornCharges = yes
This route uses the complete self-consistent force in a finite-difference approach. It is correspondingly sensitive to the convergence of the forces: an underconverged grid shows up as a spurious violation of the site symmetry of the tensor.
Vibrational modes
This mode evaluates $\partial P/\partial R$ from the response to an ionic displacement, and is obtained together with the infrared intensities. It is restricted to finite systems at the moment.
CalculationMode = vib_modes
CalcInfrared = yes
RestartFixedOccupations = no
CalcInfrared is true by default, so a plain vib_modes run already produces Born charges.
Output
The different approaches produces the same file, but in different folders, see below:
| Approach | File |
|---|---|
| Sternheimer electric field | em_resp/freq_<w>/born_charges |
| Finite field | em_resp_fd/born_charges |
| Vibrational modes | vib_modes/born_charges |
Values are in units of the elementary charge $|e|$, as the header line of the file states.
Output example
For a water molecule, em_resp/freq_0.0000/born_charges looks like
# (Frequency-dependent) Born effective charge tensors
Index: 1 Label: O Ionic charge: 6.0000
-0.103454 0.000000 0.000000
-0.000000 -0.287739 -0.000000
-0.000000 -0.000000 0.068631
Isotropic average -0.107520
Index: 2 Label: H Ionic charge: 1.0000
0.078244 0.067442 -0.000000
-0.026180 0.177700 0.000000
0.000000 0.000000 0.094361
Isotropic average 0.116768
...
# Discrepancy of Born effective charges from acoustic sum rule before correction, per atom
0.017678 0.000000 0.000000
-0.000000 0.022553 0.000000
-0.000000 -0.000000 0.085785
Isotropic average 0.042005
One block per atom: the row index is the field direction, the column index the force direction, followed by the isotropic average $\frac13 \sum_i Z^{*}_{ii}$. The oxygen tensor is diagonal here because that atom lies on the $C_2$ axis, while the hydrogen tensor is not symmetric.
If the response is complex, i.e. for a finite EMEta, or for complex states, each atom block is instead split into Real: and Imaginary: sub-blocks, and a second section headed # Magnitude and phase follows, with the phase in radians.
The CalcInfrared route additionally writes vib_modes/infrared , containing the Born charges projected onto the normal modes. The frequency is in cm$^{-1}$ and, since the normal modes are dimensionless eigenvectors, the remaining columns are again charges in units of $|e|$.
Acoustic sum rule
Charge neutrality and translational invariance require
$$ \sum_{\alpha} Z^{*}_{\alpha,ij} = Z_{\rm tot}\, \delta_{ij} \,\! $$
with $Z_{\rm tot}$ the net charge of the system, so zero for a neutral one. The calculated charges only satisfy this in the limit of a converged calculation, and the residual is a useful convergence diagnostic: it is reported in every born_charges
file under # Discrepancy ..., as a per-atom tensor.
By default BornChargeSumRuleCorrection is true, and the discrepancy is subtracted in equal parts from every atom before the tensors are written. The printed tensors are therefore the corrected ones, whereas the printed discrepancy is the violation measured before the correction.
This correction can mask a genuine problem, since it removes exactly the part of the error that is common to all atoms. When validating a calculation, or when the discrepancy is not small compared to the charges themselves, set
BornChargeSumRuleCorrection = no
and converge the raw values instead. Sum-rule violations are typically caused by too coarse a Spacing, too small a box in the finite directions, or too sparse a KPointsGrid in the periodic ones.
For a periodic system the $k$-point sampling is usually the limiting factor. As an illustration, bulk silicon in the 8-atom cubic cell has $Z^*=0$ by symmetry, and the calculated value approaches it as $-1.07$, $-0.33$, $-0.04$, $+0.01$ for a $2^3$, $3^3$, $4^3$, $5^3$ grid, almost independently of the spacing. A $2\times2\times2$ grid is therefore far too coarse for Born charges even where it is adequate for the ground state.
Limitations
- The two EMCalcBornCharges routes are flagged experimental and require ExperimentalFeatures =
yes. - Non-linear core corrections are not implemented in either linear-response route. Only the finite-field route supports them.
- DFT+U is not supported by the linear-response electric-field route.
- LDA and GGA functionals are supported. Meta-GGAs, hybrids and SIC are not available with Sternheimer linear response, and the second-order kernel behind EMHyperpol is still LDA-only.
- Linear-response
vib_modesis implemented for finite systems only, so $\partial P/\partial R$ is not available for solids. - For periodic systems the electric-field route requires a preceding
kdotpcalculation.