Skip to content

dfpt input variables

This document lists and provides the description of the name (keywords) of the dfpt input variables to be used in the input file for the abinit executable.

asr

Mnemonics: Acoustic Sum Rule
Mentioned in topic(s): topic_DFPT, topic_Phonons
Variable type: integer
Dimensions: scalar
Default value: 1
Added in version: before_v9

Test list (click to open). Moderately used, [68/1245] in all abinit tests, [0/159] in abinit tutorials

Set the treatment of the Acoustic Sum Rule (ASR) in phonon calculations in the ABINIT code. Same values as the corresponding ANADDB variable asr@anaddb. Please switch to this description.

Using anaddb is indeed the recommended approach if you want to analyze the breaking of the sum rules. Running different DFPT calculations from scratch just to change asr is indeed a waste of time as you can compute the DDB only once and then use anaddb.

Anyhow, this input variable is used in different contexts in ABINIT, in addition of being used in ANADDB : optdriver=1 (phonon calculations), optdriver=7 (electron-phonon calculations) and optdriver=10 (longwave calculations). For optdriver=1, it does not modify the self-consistent calculations, neither the DDB generation, but only the echo in the main output file of the dynamical matrix, and the subsequent echo of the phonon frequencies at Gamma, TO and LO parts.

See also the variables chneut and chneut@anaddb, that govern the imposition of the charge neutrality sum rule.

bdeigrf

Mnemonics: BanD for second-order EIGenvalues from Response-Function
Mentioned in topic(s): topic_TDepES
Variable type: integer
Dimensions: scalar
Default value: -1
Only relevant if: ieig2rf in [1,2,3,4,5]
Added in version: before_v9

Test list (click to open). Moderately used, [15/1245] in all abinit tests, [0/159] in abinit tutorials

The variable bdeigrf is the maximum number of bands for which the second- order eigenvalues must be calculated: the full number of bands is still used during the computation of these corrections.

If bdeigrf is set to -1, the code will automatically set bdeigrf equal to nband.

chneut

Mnemonics: CHarge NEUTrality treatment
Mentioned in topic(s): topic_Phonons
Variable type: integer
Dimensions: scalar
Default value: 1
Added in version: before_v9

Test list (click to open). Moderately used, [69/1245] in all abinit tests, [0/159] in abinit tutorials

Set the treatment of the Charge Neutrality requirement for the effective charges in the ABINIT code. Same values as the corresponding ANADDB variable chneut@anaddb. Please switch to this description. Note however the different default value in abinit (1) and anaddb (0).

Using anaddb is indeed the recommended approach if you want to analyze the breaking of the sum rules. Running different DFPT calculations from scratch just to change chneut is indeed a waste of time as you can compute the DDB only once and then use anaddb.

Anyhow, this input variable is used in different contexts in ABINIT, in addition of being used in ANADDB : optdriver=1 (phonon calculations), optdriver=7 (electron-phonon calculations) and optdriver=10 (longwave calculations). For optdriver=1, it does not modify the self-consistent calculations, neither the DDB generation, but only the echo in the main output file of the Born effective charge, and the subsequent echo of the phonon frequencies at Gamma, LO part only.

See also the variables asr and asr@anaddb, that govern the imposition of the acoustic sum rule.

d3e_pert1_atpol

Mnemonics: 3rd Derivative of Energy, mixed PERTurbation 1: limits of ATomic POLarisations
Mentioned in topic(s): topic_nonlinear
Variable type: integer
Dimensions: (2)
Default value: [1, ‘natom’]
Only relevant if: optdriver == 5 (non-linear response computations)
Added in version: before_v9

Test list (click to open). Rarely used, [5/1245] in all abinit tests, [2/159] in abinit tutorials

Controls the range of atoms for which displacements will be considered in non-linear computations (using the 2n+1 theorem), for the 1st perturbation. May take values from 1 to natom, with d3e_pert1_atpol (1)<= d3e_pert1_atpol (2). See rfatpol for additional details.

d3e_pert1_dir

Mnemonics: 3rd Derivative of Energy, mixed PERTurbation 1: DIRections
Mentioned in topic(s): topic_nonlinear
Variable type: integer
Dimensions: (3)
Default value: [1, 1, 1]
Only relevant if: optdriver == 5 (non-linear response computations)
Added in version: before_v9

Test list (click to open). Rarely used, [3/1245] in all abinit tests, [0/159] in abinit tutorials

Gives the directions to be considered in non-linear computations (using the 2n+1 theorem), for the 1st perturbation. The three elements corresponds to the three primitive vectors, either in real space (atomic displacement), or in reciprocal space (electric field perturbation). See rfdir for additional details.

d3e_pert1_elfd

Mnemonics: 3rd Derivative of Energy, mixed PERTurbation 1: ELectric FielD
Mentioned in topic(s): topic_nonlinear
Variable type: integer
Dimensions: scalar
Default value: 0
Only relevant if: optdriver == 5 (non-linear response computations)
Added in version: before_v9

Test list (click to open). Moderately used, [23/1245] in all abinit tests, [2/159] in abinit tutorials

Turns on electric field perturbation in non-linear computation, as 1st perturbation. Actually, such calculations requires first the non-self- consistent calculation of derivatives with respect to k, independently of the electric field perturbation itself. See rfelfd for additional details.

d3e_pert1_phon

Mnemonics: 3rd Derivative of Energy, mixed PERTurbation 1: PHONons
Mentioned in topic(s): topic_nonlinear
Variable type: integer
Dimensions: scalar
Default value: 0
Only relevant if: optdriver == 5 (non-linear response computations)
Added in version: before_v9

Test list (click to open). Moderately used, [23/1245] in all abinit tests, [2/159] in abinit tutorials

Turns on atomic displacement perturbation in non-linear computation, as 1st perturbation. See rfphon for additional details.

d3e_pert2_atpol

Mnemonics: 3rd Derivative of Energy, mixed PERTurbation 2: limits of ATomic POLarisations
Mentioned in topic(s): topic_nonlinear
Variable type: integer
Dimensions: (2)
Default value: [1, ‘natom’]
Only relevant if: optdriver == 5 (non-linear response computations)
Added in version: before_v9

Test list (click to open). Rarely used, [1/1245] in all abinit tests, [0/159] in abinit tutorials

Controls the range of atoms for which displacements will be considered in non- linear computations (using the 2n+1 theorem), for the 2nd perturbation. May take values from 1 to natom, with d3e_pert2_atpol (1) <= d3e_pert2_atpol (2). See rfatpol for additional details.

d3e_pert2_dir

Mnemonics: 3rd Derivative of Energy, mixed PERTurbation 2: DIRections
Mentioned in topic(s): topic_nonlinear
Variable type: integer
Dimensions: (3)
Default value: [0, 0, 0]
Only relevant if: optdriver == 5 (non-linear response computations)
Added in version: before_v9

Test list (click to open). Rarely used, [3/1245] in all abinit tests, [0/159] in abinit tutorials

Gives the directions to be considered in non-linear computations (using the 2n+1 theorem), for the 2nd perturbation. The three elements corresponds to the three primitive vectors, either in real space (atomic displacement), or in reciprocal space (electric field perturbation). See rfdir for additional details.

d3e_pert2_elfd

Mnemonics: 3rd Derivative of Energy, mixed PERTurbation 2: ELectric FielD
Mentioned in topic(s): topic_nonlinear
Variable type: integer
Dimensions: scalar
Default value: 0
Only relevant if: optdriver == 5 (non-linear response computations)
Added in version: before_v9

Test list (click to open). Moderately used, [23/1245] in all abinit tests, [2/159] in abinit tutorials

Turns on electric field perturbation in non-linear computation, as 2nd perturbation. Actually, such calculations requires first the non-self- consistent calculation of derivatives with respect to k, independently of the electric field perturbation itself. See rfelfd for additional details.

d3e_pert2_phon

Mnemonics: 3rd Derivative of Energy, mixed PERTurbation 2: PHONons
Mentioned in topic(s): topic_nonlinear
Variable type: integer
Dimensions: scalar
Default value: 0
Only relevant if: optdriver == 5 (non-linear response computations)
Added in version: before_v9

Test list (click to open). Rarely used, [1/1245] in all abinit tests, [0/159] in abinit tutorials

Turns on atomic displacement perturbation in non-linear computation, as 2nd perturbation. See rfphon for additional details.

d3e_pert3_atpol

Mnemonics: 3rd Derivative of Energy, mixed PERTurbation 3: limits of ATomic POLarisations
Mentioned in topic(s): topic_nonlinear
Variable type: integer
Dimensions: (2)
Default value: [1, ‘natom’]
Only relevant if: optdriver == 5 (non-linear response computations)
Added in version: before_v9

Test list (click to open). Rarely used, [1/1245] in all abinit tests, [0/159] in abinit tutorials

Controls the range of atoms for which displacements will be considered in non- linear computations (using the 2n+1 theorem), for the 3rd perturbation. May take values from 1 to natom, with d3e_pert3_atpol (1)<= d3e_pert3_atpol (2). See rfatpol for additional details.

d3e_pert3_dir

Mnemonics: 3rd Derivative of Energy, mixed PERTurbation 3: DIRections
Mentioned in topic(s): topic_nonlinear
Variable type: integer
Dimensions: (3)
Default value: [0, 0, 0]
Only relevant if: optdriver == 5 (non-linear response computations)
Added in version: before_v9

Test list (click to open). Rarely used, [3/1245] in all abinit tests, [0/159] in abinit tutorials

Gives the directions to be considered in non-linear computations (using the 2n+1 theorem), for the 3rd perturbation. The three elements corresponds to the three primitive vectors, either in real space (atomic displacement), or in reciprocal space (electric field perturbation). See rfdir for additional details.

d3e_pert3_elfd

Mnemonics: 3rd Derivative of Energy, mixed PERTurbation 3: ELectric FielD
Mentioned in topic(s): topic_nonlinear
Variable type: integer
Dimensions: scalar
Default value: 0
Only relevant if: optdriver == 5 (non-linear response computations)
Added in version: before_v9

Test list (click to open). Moderately used, [23/1245] in all abinit tests, [2/159] in abinit tutorials

Turns on electric field perturbation in non-linear computation, as 3rd perturbation. Actually, such calculations requires first the non-self- consistent calculation of derivatives with respect to k, independently of the electric field perturbation itself. See rfelfd for additional details.

d3e_pert3_phon

Mnemonics: 3rd Derivative of Energy, mixed PERTurbation 3: PHONons
Mentioned in topic(s): topic_nonlinear
Variable type: integer
Dimensions: scalar
Default value: 0
Only relevant if: optdriver == 5 (non-linear response computations)
Added in version: before_v9

Test list (click to open). Rarely used, [1/1245] in all abinit tests, [0/159] in abinit tutorials

Turns on atomic displacement perturbation in non-linear computation, as 3rd perturbation. See rfphon for additional details.

dfpt_sciss

Mnemonics: DFPT SCISSor operator
Characteristics: ENERGY
Mentioned in topic(s): topic_DFPT
Variable type: real
Dimensions: scalar
Default value: 0
Added in version: before_v9

Test list (click to open). Rarely used, [1/1245] in all abinit tests, [0/159] in abinit tutorials

It is the value of the “scissors operator” [Levine1989], the shift of conduction band eigenvalues, used in response function calculations. Can be specified in Ha (the default), Ry, eV or Kelvin, since ecut has the ENERGY characteristics (1 Ha = 27.2113845 eV). Typical use is for response to electric field (rfelfd = 3), but NOT for d/dk (rfelfd = 2) and phonon responses.

efmas

Mnemonics: EFfective MASs
Mentioned in topic(s): topic_EffectiveMass
Variable type: integer
Dimensions: scalar
Default value: 0
Added in version: before_v9

Test list (click to open). Rarely used, [8/1245] in all abinit tests, [0/159] in abinit tutorials

Turns on effective mass tensor calculations. Such calculations requires the non-self-consistent calculation of derivatives with respect to k, in the same dataset. It must therefore be used with rfelfd = 2 (or 1).

  • 0 → no effective mass tensor calculation
  • 1 → effective mass tensor calculation

Note

At the present time, both norm-conserving (NC) and PAW calculations are supported. Also, for PAW calculations only, nspinor == 2 and pawspnorb == 1 (i.e. spin-orbit (SO) calculations) is supported. NC SO calculations are NOT currently supported. Also, for both NC and PAW, nspden /= 1 and nsppol /= 1 are NOT supported.

efmas_bands

Mnemonics: EFfective MASs, BANDS to be treated.
Mentioned in topic(s): topic_EffectiveMass
Variable type: integer
Dimensions: (2,nkpt)
Default value: The full range of band available in the calculation for each k-point.
Only relevant if: efmas == 1
Added in version: before_v9

Test list (click to open). Rarely used, [8/1245] in all abinit tests, [0/159] in abinit tutorials

This variable controls the range of bands for which the effective mass is to be calculated. If a band is degenerate, all other bands of the degenerate group will automatically be treated, even if they were not part of the user specified range.

efmas_calc_dirs

Mnemonics: EFfective MASs, CALCulate along DIRectionS
Mentioned in topic(s): topic_EffectiveMass
Variable type: integer
Dimensions: scalar
Default value: 0
Only relevant if: efmas == 1
Added in version: before_v9

Test list (click to open). Rarely used, [7/1245] in all abinit tests, [0/159] in abinit tutorials

Allows the user to calculate the scalar effective mass of all bands specified by efmas_bands along specific directions in reciprocal space. This is particularly useful when considering degenerate bands, which are usually warped, and thus cannot have their dispersion (hessian) and effective mass expressed as a tensor. This allows the user to see the more complex angular behavior of effective masses in these cases, for instance.

When efmas_calc_dirs == 0, no directions are read from the input file (using efmas_dirs) and the effective masses along the 3 cartesian directions are output by default.

When efmas_calc_dirs == 1, 2 or 3, efmas_n_dirs directions are read from efmas_dirs, assuming cartesian, reduced or angular (\theta,\phi) coordinates, respectively. In the case efmas_calc_dirs == 3, 2 real values per directions are read, whereas 3 real values are read in the two other cases.

efmas_deg

Mnemonics: EFfective MASs, activate DEGenerate formalism
Mentioned in topic(s): topic_EffectiveMass
Variable type: integer
Dimensions: scalar
Default value: 1
Only relevant if: efmas > 0
Added in version: before_v9

Test list (click to open). Rarely used, [1/1245] in all abinit tests, [0/159] in abinit tutorials

Activate (==1) or not (==0) the treatment of degenerate bands (criterion efmas_deg_tol is used to determine whether bands are degenerate). Also compute the transport equivalent effective mass (see [Mecholsky2014]).

efmas = 0 should only be used for testing purposes.

efmas_deg_tol

Mnemonics: EFfective MASs, DEGeneracy TOLerance
Mentioned in topic(s): topic_EffectiveMass
Variable type: real
Dimensions: scalar
Default value: 1e-05
Only relevant if: efmas_deg == 1
Added in version: before_v9

Test list (click to open). Rarely used, [1/1245] in all abinit tests, [0/159] in abinit tutorials

Energy difference below which 2 bands are considered degenerate (and treated using the formalism activated with efmas_deg == 1). efmas_deg_tol has the ENERGY characteristics.

efmas_dim

Mnemonics: EFfective MASs, DIMension of the effective mass tensor
Mentioned in topic(s): topic_EffectiveMass
Variable type: integer
Dimensions: scalar
Default value: 3
Only relevant if: efmas == 1
Added in version: before_v9

Test list (click to open). Rarely used, [1/1245] in all abinit tests, [0/159] in abinit tutorials

For 2D or 1D systems, the band dispersion goes to 0 perpendicular to the system, which causes the inverse effective mass to be singular, i.e. the effective mass to be NaN. This keyword circumvents the problem by eliminating the troublesome dimensions from the inverse effective mass.

In 2D, the Z axis is ignored and, in 1D, the Z and Y axis are ignored.

Also, note that in the 2D degenerate case, a subtlety arises: the ‘transport equivalent’ effective mass does not determine the scale of the transport tensors (conductivity and others). Therefore, for this specific case, the factor by which these transport tensors should be scaled once determined from the ‘transport equivalent’ effective mass tensor is output separately on the line immediately after the effective mass.

efmas_dirs

Mnemonics: EFfective MASs, DIRectionS to be calculated
Mentioned in topic(s): topic_EffectiveMass
Variable type: real
Dimensions: (3 or 2,efmas_n_dirs)
Default value: 0
Only relevant if: efmas_calc_dirs > 0
Added in version: before_v9

Test list (click to open). Rarely used, [7/1245] in all abinit tests, [0/159] in abinit tutorials

List of efmas_n_dirs directions to be considered according to the value of efmas_calc_dirs. The directions are specified by 3 real values if efmas_calc_dirs == 1 or 2 and by 2 real values if efmas_calc_dirs == 3.

efmas_n_dirs

Mnemonics: EFfective MASs, Number of DIRectionS
Mentioned in topic(s): topic_EffectiveMass
Variable type: integer
Dimensions: scalar
Default value: 0
Only relevant if: efmas_calc_dirs > 0
Added in version: before_v9

Test list (click to open). Rarely used, [7/1245] in all abinit tests, [0/159] in abinit tutorials

Number of directions in efmas_dirs, to be considered according to efmas_calc_dirs.

efmas_ntheta

Mnemonics: EFfective MASs, Number of points for integration w/r to THETA
Mentioned in topic(s): topic_EffectiveMass
Variable type: integer
Dimensions: scalar
Default value: 1000
Only relevant if: efmas == 1 and efmas_bands == (degenerate band index)
Added in version: before_v9

Test list (click to open). Rarely used, [8/1245] in all abinit tests, [0/159] in abinit tutorials

When a band is degenerate, the usual definition of effective mass becomes invalid. However, it is still possible to define a ‘transport equivalent mass tensor’ that reproduces the contribution of the band to the conductivity tensor. To obtain this tensor, an integration over the solid sphere is required. The angular variables are sampled using efmas_ntheta points for the theta coordinate, and twice efmas_ntheta points for the phi coordinate. The default value gives a tensor accurate to the 4th decimal in Ge.

elph2_imagden

Mnemonics: ELectron-PHonon interaction at 2nd order: IMAGinary shift of the DENominator
Characteristics: ENERGY
Mentioned in topic(s): topic_TDepES
Variable type: real
Dimensions: scalar
Default value: 0.0
Only relevant if: ieig2rf != 0
Added in version: before_v9

Test list (click to open). Moderately used, [19/1245] in all abinit tests, [4/159] in abinit tutorials

The variable elph2_imagden determines the imaginary shift of the denominator of the sum-over-states in the perturbation, (e_{nk}-e_{n'k'}+i elph2_imagden ). One should use a width comparable with the Debye frequency or the maximum phonon frequency. Can be specified in Ha (the default), Ry, eV or Kelvin, since ecut has the ENERGY characteristics (1 Ha = 27.2113845 eV).

esmear

Mnemonics: Eigenvalue SMEARing
Characteristics: ENERGY
Mentioned in topic(s): topic_TDepES
Variable type: real
Dimensions: scalar
Default value: 0.01
Only relevant if: smdelta != 0
Added in version: before_v9

Test list (click to open). Rarely used, [1/1245] in all abinit tests, [0/159] in abinit tutorials

The variable esmear determines the width of the functions approximating the delta function, \delta(e_{nk}-e_{n'k'}), present in the expression of the lifetimes. One should use a width comparable with the Debye frequency or the maximum phonon frequency. Can be specified in Ha (the default), Ry, eV or Kelvin, since ecut has the ENERGY characteristics (1 Ha = 27.2113845 eV).

ffnl_lw

Mnemonics: NonLocal Form Factors in LongWave calculation
Characteristics: DEVELOP
Mentioned in topic(s): topic_longwave
Variable type: integer
Dimensions: scalar
Default value: 0
Added in version: v9.9

Test list (click to open). Rarely used, [1/1245] in all abinit tests, [0/159] in abinit tutorials

In a longwave calculation, the nonlocal form factors and their derivatives are by default computed for all k points and atom types at an initial step and then specifically used for each type of perturbation. Depending on the calculation parameters –in particular for dense k-point grids, large ecut and pseudopotentials with large l and n values– such approach might lead to high virtual memory usage.

With ffnl_lw = 1 the form factors and derivatives are instead calculated on-the-fly for each type of perturbation and k point when they are required. This option saves virtual memory but makes the computation of spatial-dispersion tensors slower.

frzfermi

Mnemonics: FReeZe FERMI energy
Mentioned in topic(s): topic_DFPT
Variable type: integer
Dimensions: scalar
Default value: 0
Added in version: before_v9

Test list (click to open). Rarely used, [3/1245] in all abinit tests, [0/159] in abinit tutorials

Can be used to suppress artificially the first-order change of Fermi energy, in case of Response Function calculation for metals at Q=0. If the input variable frzfermi is set to 1, this contribution is suppressed, even though this is incorrect.

ieig2rf

Mnemonics: Integer for second-order EIGenvalues from Response-Function
Mentioned in topic(s): topic_TDepES
Variable type: integer
Dimensions: scalar
Default value: 0
Added in version: before_v9

Test list (click to open). Moderately used, [26/1245] in all abinit tests, [4/159] in abinit tutorials

If ieig2rf is greater than 0, the code will produce a file, named with the suffix _EIGR2D, containing the second-order electronic eigenvalues for the perturbation. These files are used in the calculation of the thermal correction to the electronic eigenvalues.

  • If ieig2rf is set to 1, the second-order electronic eigenvalues will be calculated from the DFPT method (Sternheimer).

  • If ieig2rf is set to 2, the second-order electronic eigenvalues will be calculated from the Allen-Cardona method (sum over states).

  • If ieig2rf is set to 3, the second-order electronic eigenvalues will be calculated from the DFPT method (sum over states) but using a different part of the code. This is equivalent to ieig2rf = 1 [debuging].

  • If ieig2rf is set to 4, the second-order electronic eigenvalues will be calculated from the dynamical DFPT method (Sternheimer). The code will generate _EIGR2D.nc files that contain the electron-phonon matrix element squared on the space orthogonal to the active space. The code will also produce _FAN.nc files that contain the electron-phonon matrix elements squared.

  • If ieig2rf is set to 5, the second-order electronic eigenvalues will be calculated from the dynamical DFPT method (Sternheimer). The code will generate _EIGR2D.nc files that contain the electron-phonon matrix element square on the space orthogonal to the active space. The code will also produce _GKK.nc files that contain electron-phonon matrix elements. This option is preferable for large system to ieig2rf = 4 as the GKK files take much less disk space and memory (but run a little bit slower).

Note

ieig2rf = 4 and 5 can only be used if Abinit is compiled with NETCDF support.

Related variables: bdeigrf, elph2_imagden, getgam_eig2nkq, smdelta

ixcrot

Mnemonics: Index of the XC ROTation method used to calculate first-order exchange-correlation potential in non-collinear DFPT calculations
Mentioned in topic(s): topic_DFPT, topic_xc
Variable type: integer
Dimensions: scalar
Default value: 1
Added in version: before_v9

Test list (click to open). Rarely used, [12/1245] in all abinit tests, [0/159] in abinit tutorials

Method of calculation of the 1st order XC potential in non-collinear DFPT calculations. The possible values 1,2 and 3 correspond to the following methods:

  • If ixcrot=1, the spinor rotation matrix U at each FFT point is not calculated explicitly. Instead the needed expressions involving U are derived based on the general properties of the U matrix.
  • If ixcrot=2, U is computed explicitly
  • If ixcrot=3, the brute force evaluation of the 1st order XC potential as a functional derivative is used. Rotation matrices are not computed.

In theory, all methods give identical results. However, due to different implementation approaches, the round-off errors can lead to slight differences intermediate and final results obtained using methods 1,2 and 3. The choice of the method can also affect the convergence. For more details, see [Ricci2019] or [Gonze2020]. WARNING: in [Ricci2019], the meaning of ixcrot =2 or 3 is inverted with respect to the implementation. On the contrary, the implemention and [Gonze2020] agree. More explicitly, the method refered to as method 1’ in [Ricci2019] is ixcrot =2, and method refereed to as method 2 in [Ricci2019] is ixcrot =3.

Note

For non-zero perturbation wavevector (qpt/=0), only the ixcrot =3 implementation is currently available. The code will stop with the default ixcrot value for non-zero perturbation wavevector. The user should then set ixcrot =3 and restart.

lw_flexo

Mnemonics: LongWave calculation of FLEXOelectricity related spatial dispersion tensors
Characteristics: DEVELOP
Mentioned in topic(s): topic_longwave
Variable type: integer
Dimensions: scalar
Default value: 0
Only relevant if: optdriver = 10
Added in version: v9

Test list (click to open). Rarely used, [3/1245] in all abinit tests, [1/159] in abinit tutorials

Used to run the calculation of spatial dispersion tensorial quantities needed to build the bulk flexoelectric tensor (the clamped-ion flexoelectric tensor is directly calculated by abinit whereas the mixed and lattice-mediated ones are obtained through a postprocessing anaddb calculation, see flexoflag@anaddb).

This requires the precalculation of the ground-state wave-functions and density, as well as response functions and densities to a set of perturbations as specified below. The number of linear-response calculations to be explicitly precomputed can be reduced via symmetry arguments selecting the appropiate value of the prepalw variable.

  • 0 → No flexoelectric spatial dispersion tensors are calculated.
  • 1 → Four tensors required to build all the contributions to the bulk flexoelectric tensor are calculated. Requires precomputed linear response functions and densities: ddk, d2_dkdk, electric field, atomic displacement and strain.
  • 2 → Clamped-ion flexoelectric tensor is calculated. Requires precomputed linear response functions and densities: ddk, d2_dkdk, electric field and strain.
  • 3 → Two tensors required to build the mixed flexoelectric tensor are calculated: the first moment of polarization response to an atomic displacement and the first moment of the IFCs. Related quantities that can be derived from these two tensors are also printed: dynamical quadrupoles, clamped-ion piezoelectric tensor and piezoelectric force response tensor. Requires precomputed linear response functions and densities: ddk, d2_dkdk, electric field and atomic displacement.
  • 4 → Two tensors required to build the lattice-mediated flexoelectric tensor are calculated: the first moment of the IFCs and the first moment of the piezoelectric force response tensor. Related quantities that can be derived from these two tensors are also printed: piezoelectric force response tensor and clamped-ion elastic tensor. Requires precomputed linear response functions and densities: ddk, atomic displacement and strain.

lw_natopt

Mnemonics: LongWave calculation of NATural OPTical activity tensor
Characteristics: DEVELOP
Mentioned in topic(s): topic_longwave
Variable type: integer
Dimensions: scalar
Default value: 0
Only relevant if: optdriver = 10
Added in version: v9

Test list (click to open). Rarely used, [1/1245] in all abinit tests, [1/159] in abinit tutorials

Used to run natural optical activity tensor calculation.

  • 0 → No natural optical activity tensor is calculated.
  • 1 → Natural optical activity tensor is calculated.

This requires the precalculation of the ground-state wave functions and density as well as response functions and densities to the following perturbations: ddk, d2_dkdk, electric fields. The number of linear-response calculations to be explicitly precomputed can be reduced via symmetry arguments selecting the appropriate value of the prepalw variable.

lw_qdrpl

Mnemonics: LongWave calculation of dynamical QuaDRuPoLes tensor
Characteristics: DEVELOP
Mentioned in topic(s): topic_longwave
Variable type: integer
Dimensions: scalar
Default value: 0
Only relevant if: optdriver = 10
Added in version: v9

Test list (click to open). Rarely used, [4/1245] in all abinit tests, [1/159] in abinit tutorials

Used to run dynamical quadrupoles tensor calculation (e.g., needed to include dipole-quadrupole and/or quadrupole-quadrupole electrostatic interactions in the anaddb calculation of phonons. See dipquad@anaddb and quadquad@anaddb).

  • 0 → No dynamical quadrupoles are calculated
  • 1 → Dynamical quadrupoles are calculated. Related quantities that can be derived from the dynamical quadrupoles are also printed: the first moment of the polarization response to an atomic displacement and the clamped-ion piezoelectric tensor.

This requires the precalculation of the ground-state wave functions and density as well as response functions and densities to the following perturbations: ddk, d2_dkdk, atomic displacements and electric fields. The number of linear-response calculations to be explicitly precomputed can be reduced via symmetry arguments selecting the appropiate value of the prepalw variable.

nonlinear_info

Mnemonics: Output NON-LINEAR INFOrmation
Mentioned in topic(s): topic_nonlinear
Variable type: integer
Dimensions: scalar
Default value: 0
Only relevant if: optdriver == 5 and usepead == 0, or rf2_dkdk/=0 or rf2_dkde/=0
Added in version: before_v9

Test list (click to open). Rarely used, [11/1245] in all abinit tests, [0/159] in abinit tutorials

Control the output of the non-linear implementation (only when usepead == 0). The default value, nonlinear_info == 0 does nothing. If nonlinear_info == 1, different contributions of 3rd derivatives of the energy are written in the output file (non time consuming).

Higher values activate some internal tests for checking the implementation correctness (time consuming, not useable in parallel). If nonlinear_info == 2, same effect than 1 and tests are done in non-linear (optdriver==5 and usepead == 0). If nonlinear_info == 3, same effect than 1 and tests are done in rf2_init (rf2_dkdk/=0 or rf2_dkde/=0). If nonlinear_info == 4, same effect than 1 and tests are done in both non-linear and rf2_init. A line containining “NOT PASSED” (and other information) is added to the output file for each test that does not pass, otherwise nothing is printed. However, more information concerning the tests is always printed in the standard output file.

orbmag

Mnemonics: ORBital MAGnetization
Characteristics: DEVELOP
Mentioned in topic(s): topic_NMR, topic_MagField
Variable type: integer
Dimensions: scalar
Default value: 0
Only relevant if: %usepaw == 1; usexcnhat == 0; paral_atom == 0; paral_kgb == 0; (kptopt == 3 or kptopt == 0)
Added in version: before_v9

Test list (click to open). Rarely used, [9/1245] in all abinit tests, [1/159] in abinit tutorials

Compute quantities related to orbital magnetic moment. Typically used in the presence of a nonzero nuclear magnetic dipole moment, see nucdipmom, to compute the nuclear magnetic shielding as measured in NMR. orbmag is parallelized over k points only. The implementation follows the theory outlined in [Zwanziger2023]. The computed results are returned in the standard output file, search for “Orbital magnetic moment”. This calculation requires both the ground state and DDK wavefunctions (see rfddk or berryopt). The preferred way to use orbmag is at the end of a DFPT DDK calculation. Alternatively, it can be called in a ground state calculation if berryopt -2 has also been called, to generate discretized DDK wavefunctions. This latter method works only on a mesh of kpoints, while the DFPT version works for both a mesh and for a single k point (as encountered in studying an atom or molecule in a box, or a pariticularly large unit cell). Note that convergence with kpt mesh is much faster using the DFPT approach, and the berryopt approach is not recommended unless a very specific ground state feature is also needed.

  • orbmag = 1: Compute orbital magnetization and Chern vector
  • orbmag = 2: Same as orbmag 1 but also print out values of each term making up total orbital magnetic moment and a band-by-band decomposition.

prepalw

Mnemonics: PREPAre LongWave calculation
Characteristics: DEVELOP
Mentioned in topic(s): topic_longwave
Variable type: integer
Dimensions: scalar
Default value: 0
Added in version: v9

Test list (click to open). Rarely used, [8/1245] in all abinit tests, [3/159] in abinit tutorials

The computation of spatial-dispersion quantities from the longwave DFPT approach requires the first-order wavefunctions and densities obtained from a linear response calculation. The standard approach in a linear response calculation is:

  • compute only the irreducible perturbations;
  • use symmetries to reduce the number of k-points for the k-point integration.

This approach cannot be applied, presently (v9.x), if the first-order wavefunctions are to be used to compute spatial dispersion properties. During the linear response calculation, in order to prepare a longwave calculation, one should use prepalw /= 0 in order to force ABINIT to keep the full number of k-points in half the BZ (kptopt=2), or the full BZ (kptopt=3). Different options can then be used to set the reducible perturbations that are enforced to be explicitly calculated:

  • 1 → Activates the calculation of perturbations required to build spatial- dispersion tensors which depend on strain. It is therefore the option to choose if one intends to run subsequent longwave calculations with lw_flexo = 1, 2, or 4.

  • 2 → Activates the calculation of perturbations required to build spatial- dispersion tensors which combine electric field and atomic displacement perturbations. It is therefore the option to choose if one intends to run subsequent longwave calculations with lw_qdrpl = 1.

  • 3 → Activates the calculation of perturbations required to build spatial- dispersion tensors which combine electric field and atomic displacement perturbations as well as two atomic displacements. It is therefore the option to choose if one intends to run subsequent longwave calculations with lw_flexo = 3.

  • 4 → Activates the calculation of perturbations required to build spatial- dispersion tensors which combine two electric field perturbations. It is therefore the option to choose if one intends to run subsequent longwave calculations with lw_natopt = 1.

prepanl

Mnemonics: PREPAre Non-Linear response calculation
Mentioned in topic(s): topic_nonlinear
Variable type: integer
Dimensions: scalar
Default value: 0
Added in version: before_v9

Test list (click to open). Moderately used, [24/1245] in all abinit tests, [2/159] in abinit tutorials

The computation of third-order derivatives from the 2n+1 theorem requires the first-order wavefunctions and densities obtained from a linear response calculation. The standard approach in a linear response calculation is:

  • compute only the irreducible perturbations;
  • use symmetries to reduce the number of k-points for the k-point integration.

This approach cannot be applied, presently (v4.1), if the first-order wavefunctions are to be used to compute third-order derivatives. First, for electric fields, the code needs the derivatives along the three directions. Still, in case of phonons, only the irreducible perturbations are required. Second, for both electric fields and phonons, the wavefunctions must be available in half the BZ (kptopt=2), or the full BZ (kptopt=3). During the linear response calculation, in order to prepare a non-linear calculation, one should put prepanl to 1 in order to force ABINIT to compute the electric field perturbation along the three directions explicitly, and to keep the full number of k-points.

In the case of a 2nd derivative of wavefunction (rf2_dkdk or rf2_dkde), prepanl == 1 can be used in order to skip directions of perturbations that will not be used by the non-linear routine (see rf2_dkdk for more details).

prepgkk

Mnemonics: PREPAre GKK calculation
Mentioned in topic(s): topic_ElPhonInt
Variable type: integer
Dimensions: scalar
Default value: 0
Added in version: before_v9

Test list (click to open). Rarely used, [5/1245] in all abinit tests, [1/159] in abinit tutorials

The calculation of electron-phonon coupling quantities requires the presence of all the perturbations (all atoms in all directions) for the chosen set of (irreducible) q-points. To impose this and prevent ABINIT from using symmetry to reduce the number of perturbations, set prepgkk to 1. Use in conjunction with prtgkk.

prtbbb

Mnemonics: PRinT Band-By-Band decomposition
Mentioned in topic(s): topic_printing, topic_Output
Variable type: integer
Dimensions: scalar
Default value: 0
Added in version: before_v9

Test list (click to open). Rarely used, [1/1245] in all abinit tests, [0/159] in abinit tutorials

If prtbbb is 1, print the band-by-band decomposition of Born effective charges and localization tensor, in case they are computed. See [Ghosez2000].

prtefmas

Mnemonics: PRint EFfective MASs data
Mentioned in topic(s): topic_printing, topic_EffectiveMass
Variable type: integer
Dimensions: scalar
Default value: 1
Only relevant if: efmas == 1
Added in version: before_v9

Test list (click to open). Rarely used, [4/1245] in all abinit tests, [0/159] in abinit tutorials

If 1, at the end of an effective mass calculation (efmas = 1), create a file *_EFMAS, that contains the generalized second-order k-derivatives, see Eq.(66) in [Laflamme2016], in view of further processing.

prtfull1wf

Mnemonics: PRinT FULL 1st-order WaveFunction
Mentioned in topic(s): topic_DFPT
Variable type: integer
Dimensions: scalar
Default value: 0
Added in version: before_v9

Test list (click to open). Rarely used, [1/1245] in all abinit tests, [0/159] in abinit tutorials

If set to 1, the output _1WF files will contain the full 1st-order wavefunctions, for both valence and conduction bands. Otherwise, the _1WF files are not really 1st-order perturbed wavefunctions, but merely a set of perturbed wavefunctions that yield the correct perturbed density. This is used when one expect to perform post-processing of the 1st-order wavefunctions.

rf2_dkde

Mnemonics: Response Function: mixed 2nd Derivative of wavefunctions with respect to K and electric field
Mentioned in topic(s): topic_DFPT
Variable type: integer
Dimensions: scalar
Default value: 0
Added in version: before_v9

Test list (click to open). Rarely used, [10/1245] in all abinit tests, [1/159] in abinit tutorials

If is equal to 1, activates computation of mixed second derivatives of wavefunctions with respect to wavevector and electric field (ipert = natom+11 is activated). This is not strictly a response function but is a needed auxiliary quantity in the calculations of 3rd-order derivatives of the energy (non-linear response) if usepead == 0. The directions for the derivatives are determined by rf2_pert1_dir, rf2_pert2_dir and prepanl in the same way than rf2_dkdk.

rf2_dkdk

Mnemonics: Response Function: 2nd Derivative of wavefunctions with respect to K
Mentioned in topic(s): topic_DFPT
Variable type: integer
Dimensions: scalar
Default value: 0
Added in version: before_v9

Test list (click to open). Moderately used, [18/1245] in all abinit tests, [4/159] in abinit tutorials

If is equal to 1, activates computation of second derivatives of wavefunctions with respect to wavevectors (ipert = natom+10 is activated). This is not strictly a response function but is a needed auxiliary quantity in the calculations of 3rd-order derivatives of the energy (non-linear response) if usepead == 0. The directions for the derivatives are determined by rf2_pert1_dir and rf2_pert2_dir and prepanl as the following:

The computation of the 2nd derivative of wavefunction with respect to “lambda_1” and “lambda_2” is computed if if rf2_pert1_dir[idir1] AND rf2_pert2_dir[idir2] are equal to 1, where “idir1” (“idir2”) is direction of the perturbation “lambda_1” (“lambda_2”). If ALL directions are activated (default behavior) AND prepanl == 1, then the code automatically selects only the directions that will be used by the non-linear routine (optdriver == 5) using crystal symmetries.

Since v9.x this variable also activates the computation of the response to a vector potential in the long-wavelength limit. At first order in the momentum, the perturbation and response can be split into symmetric plus antisymmetric parts, see Refs. [Royo2019] and [Zabalo2022]. The symmetric part, activated with rf2_dkdk == 1, corresponds to the aforementioned second derivatives of wavefunctions with respect to wavevectors. The antisymmetric part, activated with rf2_dkdk == 2, gives the response to a uniform orbital magnetic field, as defined in Ref. [Essin2010]. The total, symmetric plus antisymmetric, response is activated with rf2_dkdk == 3.

The response function to a long-wavelength vector potential is a crucial ingredient to compute some of the spatial-dispersion quantities available in the longwave driver. In particular, those that involve the gradient of an electric field: the clamped-ion flexoelectric tensor, the first moment of the polarization response to an atomic displacement and the natural optical activity tensor.

rf2_pert1_dir

Mnemonics: Response Function (2nd order Sternheimer equation): 1st PERTurbation DIRection
Mentioned in topic(s): topic_DFPT
Variable type: integer
Dimensions: (3)
Default value: [1, 1, 1]
Added in version: before_v9

Test list (click to open). Rarely used, [1/1245] in all abinit tests, [0/159] in abinit tutorials

Gives the directions of the 1st perturbation to be considered when solving the 2nd order Sternheimer equation. The three elements corresponds to the three primitive vectors, either in real space (phonon calculations), or in reciprocal space (\,d/ \,d k, homogeneous electric field, homogeneous magnetic field calculations). If equal to 1, the 2nd order wavefunctions, as defined by rf2_dkdk or rf2_dkde, are computed for the corresponding direction. If 0, this direction is not considered. See rf2_dkdk for more details.

rf2_pert2_dir

Mnemonics: Response Function (2nd order Sternheimer equation): 2nd PERTurbation DIRection
Mentioned in topic(s): topic_DFPT
Variable type: integer
Dimensions: (3)
Default value: [1, 1, 1]
Added in version: before_v9

Test list (click to open). Rarely used, [1/1245] in all abinit tests, [0/159] in abinit tutorials

Gives the directions of the 2nd perturbation to be considered when solving the 2nd order Sternheimer equation. The three elements corresponds to the three primitive vectors, either in real space (phonon calculations), or in reciprocal space (\,d/ \,d k, homogeneous electric field, homogeneous magnetic field calculations). If equal to 1, the 2nd order wavefunctions, as defined by rf2_dkdk or rf2_dkde, are computed for the corresponding direction. If 0, this direction is not considered. See rf2_dkdk for more details.

rfatpol

Mnemonics: Response Function: ATomic POLarisation
Mentioned in topic(s): topic_DFPT, topic_Elastic, topic_Phonons
Variable type: integer
Dimensions: (2)
Default value: [1, ‘natom’]
Added in version: before_v9

Test list (click to open). Moderately used, [81/1245] in all abinit tests, [4/159] in abinit tutorials

Control the range of atoms for which displacements will be considered in phonon calculations (atomic polarizations). These values are only relevant to phonon response function calculations. May take values from 1 to natom, with rfatpol (1)<= rfatpol (2). The atoms to be moved will be defined by the do-loop variable iatpol:

  • do iatpol= rfatpol (1), rfatpol (2)

For the calculation of a full dynamical matrix, use rfatpol (1)=1 and rfatpol (2)=natom, together with rfdir 1 1 1, both being the default values. For selected elements of the dynamical matrix, use different values of rfatpol and/or rfdir. The name ‘iatpol’ is used for the part of the internal variable ipert when it runs from 1 to natom. The internal variable ipert can also assume values larger than natom, denoting perturbations of electric field or stress type (see the DFPT help file).

As a side technical information, the value rfatpol (1)=-1 is admitted, and transformed immediately to rfatpol (1)=1, while rfatpol (2)=-1 is transformed to rfatpol (2)=natom, while the default input values are actually rfatpol =-1 .

rfddk

Mnemonics: Response Function with respect to Derivative with respect to K
Mentioned in topic(s): topic_DFPT
Variable type: integer
Dimensions: scalar
Default value: 0
Added in version: before_v9

Test list (click to open). Moderately used, [21/1245] in all abinit tests, [3/159] in abinit tutorials

Activates computation of derivatives of ground state wavefunctions with respect to wavevectors. This is not strictly a response function but is a needed auxiliary quantity in the electric field calculations (see rfelfd) and orbital magnetism calculations (see orbmag). The directions for the derivatives are determined by rfdir.

  • 0 → no derivative calculation
  • 1 → calculation of first derivatives of wavefunctions with respect to k points (\,d/ \,d k calculation). The exact same functionality is provided by rfelfd = 2.

rfdir

Mnemonics: Response Function: DIRections
Mentioned in topic(s): topic_DFPT, topic_Elastic, topic_Phonons
Variable type: integer
Dimensions: (3)
Default value: [1, 1, 1]
Added in version: before_v9

Test list (click to open). Moderately used, [172/1245] in all abinit tests, [9/159] in abinit tutorials

Gives the directions to be considered for response function calculations (also for the Berry phase computation of the polarization, see the berryopt input variable). The three elements corresponds to the three primitive vectors, either in real space (phonon calculations), or in reciprocal space (\,d/ \,d k, homogeneous electric field, homogeneous magnetic field calculations). So, they generate a basis for the generation of the dynamical matrix or the macroscopic dielectric tensor or magnetic susceptibility and magnetic shielding, or the effective charge tensors. If equal to 1, response functions, as defined by rfdir , rfddk, rfelfd, rfphon, rfstrs, rfmagn, rfatpol, and possibly other response-function activating input variables, but also berryopt are to be computed for the corresponding direction. If 0, this direction should not be considered.

rfelfd

Mnemonics: Response Function with respect to the ELectric FielD
Mentioned in topic(s): topic_EffectiveMass, topic_DFPT
Variable type: integer
Dimensions: scalar
Default value: 0
Added in version: before_v9

Test list (click to open). Moderately used, [117/1245] in all abinit tests, [15/159] in abinit tutorials

Turns on electric field response function calculations. Actually, such calculations requires first the non-self-consistent calculation of derivatives with respect to k, independently of the electric field perturbation itself.

  • 0 → no electric field perturbation
  • 1 → full calculation, with first the derivative of ground-state wavefunction with respect to k (\,d / \,d k calculation), by a non-self-consistent calculation, then the generation of the first-order response to an homogeneous electric field
  • 2 → only the derivative of ground-state wavefunctions with respect to k
  • 3 → only the generation of the first-order response to the electric field, assuming that the data on derivative of ground-state wavefunction with respect to k is available on disk.

Note

Because the tolerances to be used for derivatives or homogeneous electric field are different, one often does the calculation of derivatives in a separate dataset, followed by calculation of electric field response as well as phonon. The options 2 and 3 proves useful in that context; also, in case a scissor shift is to be used, it is usually not applied for the \,d / \,d k response [Levine1989]).

rfmagn

Mnemonics: Response Function with respect to MAGNetic B-field perturbation
Mentioned in topic(s): topic_DFPT
Variable type: integer
Dimensions: scalar
Default value: 0
Added in version: before_v9

Test list (click to open). Rarely used, [4/1245] in all abinit tests, [0/159] in abinit tutorials

rfmagn allows one to run response function calculations with respect to external magnetic field if set to 1. Currently, orbital magnetism is not taken into account and the perturbing potential has Zeeman form. For more details, see [Ricci2019].

rfmeth

Mnemonics: Response Function METHod
Mentioned in topic(s): topic_DFPT
Variable type: integer
Dimensions: scalar
Default value: 1
Added in version: before_v9

Test list (click to open). Rarely used, [2/1245] in all abinit tests, [0/159] in abinit tutorials

Selects method used in response function calculations. Presently, only abs( rfmeth ) = 1 is allowed. This corresponds to storing matrix elements of the 2DTE computed using non-stationary expressions, instead of stationary ones.

The difference between positive and negative values is rather technical. Very often, the symmetries can be used in such a way that some matrix elements can be proven to be zero even without doing any computation. Positive values of rfmeth activate this use of symmetries, while it is denied when rfmeth is negative. There is an indirect additional outcome of this, as a symmetrization of the whole 2DTE is sometimes rendered possible when the additional knowledge of the zero matrix elements is available. Thus, the results obtained for positive and negative values of rfmeth might slightly differ for non-zero elements of the 2DTE, if they are computed in both cases.

rfphon

Mnemonics: Response Function with respect to PHONons
Mentioned in topic(s): topic_DFPT
Variable type: integer
Dimensions: scalar
Default value: 0
Added in version: before_v9

Test list (click to open). Moderately used, [197/1245] in all abinit tests, [19/159] in abinit tutorials

It must be equal to 1 to run phonon response function calculations.

rfstrs

Mnemonics: Response Function with respect to STRainS
Mentioned in topic(s): topic_DFPT, topic_Elastic
Variable type: integer
Dimensions: scalar
Default value: 0
Added in version: before_v9

Test list (click to open). Moderately used, [30/1245] in all abinit tests, [7/159] in abinit tutorials

Used to run strain response-function calculations (e.g. needed to get elastic constants). Define, with rfdir, the set of perturbations.

  • 0 → no strain perturbation
  • 1 → only uniaxial strain(s) (ipert=natom+3 is activated)
  • 2 → only shear strain(s) (ipert=natom+4 is activated)
  • 3 → both uniaxial and shear strain(s) (both ipert=natom+3 and ipert=natom+4 are activated)

See the possible restrictions on the use of strain perturbations, in the respfn help file.

rfstrs_ref

Mnemonics: Response Function with respect to STRainS with the energy REFerence at the average electrostatic potential
Mentioned in topic(s): topic_longwave
Variable type: integer
Dimensions: scalar
Default value: 0
Added in version: v9

Test list (click to open). Rarely used, [3/1245] in all abinit tests, [1/159] in abinit tutorials

If equal to 1 and rfstrs /= 0 the strain response-function calculations are performed with the reference energy placed at the average electrostatic potential. The later is the reference adopted in the longwave driver. Since v9.x, rfstrs_ref = 1 is warned if prepalw/=0 because first-order energies are no longer recomputed by the longwave driver but read from the precalculated 1WF files.

Strain first-order energies calculated with rfstrs_ref = 1 are useful, for instance, in the calculation of absolute deformation potentials [Stengel2015].

rfuser

Mnemonics: Response Function, USER-defined
Mentioned in topic(s): topic_DFPT
Variable type: integer
Dimensions: scalar
Default value: 0
Added in version: before_v9

Test list (click to open). Rarely used, [0/1245] in all abinit tests, [0/159] in abinit tutorials

Available to the developers, to activate the use of ipert=natom+6 and ipert=natom+7, two sets of perturbations that the developers can define.

  • 0 → no computations for ipert=natom+6 or ipert=natom+7
  • 1 → response with respect to perturbation natom+6 will be computed
  • 2 → response with respect to perturbation natom+7 will be computed
  • 3 → responses with respect to perturbations natom+6 and natom+7 will be computed

Important

In order to define and use correctly the new perturbations, the developer might have to include code lines or additional routines at the level of the following routines: dfpt_cgwf.F90, dfpt_dyout.F90, dfpt_symph.F90, dfpt_dyout.F90, dfpt_etot.F90, littlegroup_pert.F90, dfpt_looppert.F90, dfpt_mkcor.F90, dfpt_nstdy.F90, dfpt_nstwf.F90, respfn.F90, dfpt_scfcv.F90, irreducible_set_pert.F90, dfpt_vloca.F90, dfpt_vtorho.F90, dfpt_vtowfk.F90. In these routines, the developer should pay a particular attention to the rfpert array, defined in the routine respfn (in m_respfn_driver.F90), as well as to the ipert local variable.

smdelta

Mnemonics: SMeared DELTA function
Mentioned in topic(s): topic_TDepES
Variable type: integer
Dimensions: scalar
Default value: 0
Added in version: before_v9

Test list (click to open). Moderately used, [26/1245] in all abinit tests, [4/159] in abinit tutorials

When smdelta in non-zero, it will trigger the calculation of the imaginary part of the second-order electronic eigenvalues, which can be related to the electronic lifetimes. The delta function is evaluated using:

  • when smdelta == 1, Fermi-Dirac smearing: \frac{0.25}{(cosh(\frac{x}{2.0}))^2}
  • when smdelta == 2, Cold smearing by Marzari using the parameter a=-0.5634 (minimization of the bump): \frac{e^{-x^2}}{\sqrt{\pi}}\left(1.5+x(-a\ 1.5+x(-1.0+a\ x))\right)
  • when smdelta == 3, Cold smearing by Marzari using the parameter a=-0.8165 (monotonic function in the tail): as 2 but different a
  • when smdelta == 4, Smearing of Methfessel and Paxton ([Methfessel1989]) with Hermite polynomial of degree 2, corresponding to “Cold smearing” of N. Marzari with a=0 (so, same smeared delta function as smdelta=2, with different a).
  • when smdelta == 5, Gaussian smearing: \frac{e^{-x^2}}{\sqrt{\pi}}

td_maxene

Mnemonics: Time-Dependent dft: MAXimal kohn-sham ENErgy difference
Mentioned in topic(s): topic_TDDFT
Variable type: real
Dimensions: scalar
Default value: 0.0
Added in version: before_v9

Test list (click to open). Rarely used, [1/1245] in all abinit tests, [0/159] in abinit tutorials

The Matrix to be diagonalized in the Casida framework (see [Casida1995]) is a NxN matrix, where, by default, N is the product of the number of occupied states by the number of unoccupied states. The input variable td_maxene allows one to diminish N: it selects only the pairs of occupied and unoccupied states for which the Kohn-Sham energy difference is less than td_maxene . The default value 0.0 means that all pairs are taken into account. See td_mexcit for an alternative way to decrease N.

td_mexcit

Mnemonics: Time-Dependent dft: Maximal number of EXCITations
Mentioned in topic(s): topic_TDDFT
Variable type: real
Dimensions: scalar
Default value: 0
Added in version: before_v9

Test list (click to open). Rarely used, [1/1245] in all abinit tests, [0/159] in abinit tutorials

The Matrix to be diagonalized in the Casida framework (see [Casida1995]) is a NxN matrix, where, by default, N is the product of the number of occupied states by the number of unoccupied states. The input variable td_mexcit allows one to diminish N: it selects the first td_mexcit pairs of occupied and unoccupied states, ordered with respect to increasing Kohn-Sham energy difference. However, when td_mexcit is zero, all pairs are allowed. See td_maxene for an alternative way to decrease N.

tim1rev

Mnemonics: TIMe 1st order REVersal
Characteristics: DEVELOP
Mentioned in topic(s): topic_DFPT
Variable type: integer
Dimensions: scalar
Default value: 0
Added in version: before_v9

Test list (click to open). Rarely used, [3/1245] in all abinit tests, [0/159] in abinit tutorials

Allowed values are 0 or 1.

If tim1rev is equal to 1, the Sternheimer equation is solved simultaneously at +q and -q perturbation wavevectors. The first order potential at -q is taken to be equal to the Hermitian conjugate of the first order potential at +q. The wavefunctions from both +q and -q are then combined to generate the first order density. Relevant in the case of magnetic field perturbation (but will be relevant also in case of non-zero frequency DFPT, when implemented).

usepead

Mnemonics: USE of PEAD formalism
Mentioned in topic(s): topic_nonlinear
Variable type: integer
Dimensions: scalar
Default value: 1
Only relevant if: optdriver == 5 (non-linear response computations)
Added in version: before_v9

Test list (click to open). Rarely used, [10/1245] in all abinit tests, [1/159] in abinit tutorials

Determine which non-linear implementation is used. If usepead =1, the Perturbation Expansion After Discretization formalism is used, as in [Veithen2005]. In that method, the electric field is treated numerically, i.e the k-space gradient operator appearing in the expression of the electric field potential is discretized (see Eq.7 and 10 of [Veithen2005]). If usepead =0, the electric field is treated analytically, leading to a better k-points convergence. Furthermore, the current implementation is compatible with PAW pseudopentials, while usepead =1 is not. The drawback of the analytical method is one has to solve a second order Sternheimer equation before actually computing third derivatives of the energy, using rf2_dkdk and rf2_dkde. This is not the most time-consumming part though. Look at the inputs of related tests in the testsuite to see examples of the workflow.