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