GrimmeDFTD3

class GrimmeDFTD3(global_scale_factor_6=None, damping_factor_6=None, global_scale_factor_8=None, damping_factor_8=None, maximum_neighbour_distance=None, include_three_body_term=None, exchange_correlation=None)

Class for determining the Grimme DFT-D3 dispersion correction of the energy, forces, and stress.

Parameters:
  • global_scale_factor_6 (float) – The global scale factor for the 6th order pole.
    Default: Selected based on the exchange-correlation functional.

  • damping_factor_6 (float) – The damping factor for the 6th order pole.
    Default: Selected based on the exchange-correlation functional.

  • global_scale_factor_8 (float) – The global scale factor for the 8th order pole.
    Default: Selected based on the exchange-correlation functional.

  • damping_factor_8 (float) – The damping factor for the 8th order pole.
    Default: Selected based on the exchange-correlation functional.

  • maximum_neighbour_distance (PhysicalQuantity of type length) – The maximum interaction distance to consider.
    Default: 30.0 * Angstrom

  • include_three_body_term (bool) – If True, the three-body term is included.
    Default: False

  • exchange_correlation (ExchangeCorrelation) – The exchange-correlation functional for selecting the Grimme DFT-D3 parameters. Should be one of GGA.BLYP, SGGA.BLYP, NCGGA.BLYP, SOGGA.BLYP, GGA.PBE, SGGA.PBE, NCGGA.PBE, SOGGA.PBE, GGA.RPBE, SGGA.RPBE, NCGGA.RPBE, SOGGA.RPBE, HybridGGA.HSE06, HybridSGGA.HSE06, HybridNCGGA.HSE06, HybridSOGGA.HSE06, HybridGGA.PBE0, HybridSGGA.PBE0, HybridNCGGA.PBE0, HybridSOGGA.PBE0, HybridGGA.B3LYP, HybridSGGA.B3LYP, HybridNCGGA.B3LYP or HybridSOGGA.B3LYP.
    Default: GGA.PBE

dampingFactor6()
Returns:

The damping factor for the 6th order pole.

Return type:

float

dampingFactor8()
Returns:

The damping factor for the 8th order pole.

Return type:

float

exchangeCorrelation()
Returns:

The exchange-correlation functional for selecting default Grimme DFT-D3 parameters.

Return type:

ExchangeCorrelation

globalScaleFactor6()
Returns:

The global scale factor for the 6th order pole.

Return type:

float

globalScaleFactor8()
Returns:

The global scale factor for the 8th order pole.

Return type:

float

includeThreeBodyTerm()
Returns:

If True, the three-body term is included.

Return type:

bool

maximumNeighbourDistance()
Returns:

The neighbour cut off distance.

Return type:

PhysicalQuantity of type length

setDampingFactor6(damping_factor)

Set the damping factor for the 6th order pole.

Parameters:

damping_factor (float) – The damping factor for the 6th order pole.

setDampingFactor8(damping_factor)

Set the damping factor for the 8th order pole.

Parameters:

damping_factor (float) – The damping factor for the 8th order pole.

setMaximumNeighbourDistance(maximum_neighbour_distance)

Set the neighbour cut off distance.

Parameters:

maximum_neighbour_distance (PhysicalQuantity of type length) – The neighbour cut off distance.

uniqueString()

Return a unique string representing the state of the object.

Usage Examples

Extend an LCAOCalculator with the DFT-D3 semiempirical dispersion correction by Grimme an co-workers [1]:

# Grimme DFT-D3
correction_extension = GrimmeDFTD3(exchange_correlation=GGA.RPBE)

# Apply correction to calculator
calculator = LCAOCalculator(
    exchange_correlation=GGA.RPBE,
    correction_extension=correction_extension,
    )

# Grimme DFT-D3. Note that we disable the three-body
# term since it's computationally very expensive.
correction_extension = GrimmeDFTD3(
    include_three_body_term=False,
    exchange_correlation=GGA.RPBE,
    )

# Apply correction to calculator
calculator = LCAOCalculator(
    exchange_correlation=GGA.RPBE,
    correction_extension=correction_extension,
    )

Notes

The default scaling and damping parameters used by the GrimmeDFTD3 object are those optimized for the exchange-correlation functional given to the object, see Table 29. For PBE, BLYP, and rPBE, the appropriate parameters are automatically set. For other functionals, the scaling and damping parameters should be manually specified.

Attention

The DFT-D3 method contains both two-body and three-body terms. The three-body term can be prohibitively expensive to compute for bulk systems, although it typically contributes no more than 5–10% of the total dispersion energy. It is therefore disabled by default. Note also that the calculation of forces and stress can be computationally very expensive with the DFT-D3 method, even if the three-body term has been disabled. Therefore, for such calculations it is recommended to use the GrimmeDFTD2 method instead.

Table 29 Scaling parameters \(s_6\) and \(s_8\), and damping parameters \(d_6\) and \(d_8\), for the DFT-D3 method.

Functional

scaling_parameter_6

damping_parameter_6

scaling_parameter_8

damping_parameter_8

PBE

1.0

1.217

0.7220

1.0

BLYP

1.0

1.094

1.6820

1.0

revPBE

1.0

0.923

1.0100

1.0

PBEsol

1.0

1.345

0.6120

1.0

rPBE

1.0

0.872

0.5140

1.0

B3LYP

1.0

1.261

1.7030

1.0

PBE0

1.0

1.287

0.9280

1.0