# Definition of the B3LYP functional in common QC programs

I wanted to use custom functionals with Gaussian and came up with some interesting definitions of the B3LYP functional within Gaussian, Orca and Turbomole, ...

$$\small\begin{array}{lcccccc} \hline & \text{Gaussian} & \text{ORCA} & \text{Turbomole} & \text{NWChem} & \text{Molpro} & \text{GAMESS(US)}\\ \hline \text{HF} & 0.2 & 0.2 & 0.2 & 0.2 & 0.2 & 0.2\\ \text{Slater} & 0.8 & 0.8 & 0.8 & 0.8 & \color{red}{0.08} & 0.8\\ \text{Becke} & 0.72 & 0.72 & 0.72 & 0.72 & 0.72 & 0.72\\ \text{VWN-x} & {\color{red}1} & {\color{red}{1}} & 0.19 & 0.19 & 0.19 & 0.19\\ \text{LYP} & 0.81 & 0.81 & 0.81 & 0.81 & 0.81 & 0.81\\ \hline \end{array}$$

It seems to be clear, that all programs define it somehow similar, but there are also some points that made me curious about the definitions. Let's start with the overall structure of this functional:

$$\text{XC-Functional}=a E_x^\text{local}+(1-a)E_x^\text{HF}+b E_x^\text{non-local}+c E_c^\text{non-local}+(1-c) E_c^\text{local}$$

The Gaussian documentation for DFT inputs specifies how one could change the amounts of each "sub-functional" by using the IOp-Statements through:

IOp(3/76=mmmmmnnnnn) IOp(3/77=mmmmmnnnnn) IOp(3/78=mmmmmnnnnn)


Where mmmmm and nnnnn will get divided by 10000 and 3/76=$P_1P_2$, 3/77=$P_3P_4$ and 3/88=$P_5P_6$. Those $P_{1,..,6}$ values are part of the following equation, which is a modified version of the equation above.

$$\text{XC-Functional}=P_2 E_X^\text{HF} + P_1 \left(P_4 E_X^\text{Slater} + P_3\Delta E_x^\text{non-local}\right) + P_6 E_C^\text{local} + P_5 \Delta E_C^\text{non-local}$$

Combining both, this yields: $P_1 = \{1,0\}$, $P_2 = 1-a$, $P_3 = b$, $P_4 = a$, $P_5 = c$ and $P_6 = 1-c$.

Now looking at Gaussian and ORCA, they both use 100% VWN and 81% of LYP, which should actually be combined to give 100% (instead of 181%) as is done by all other mentioned programs through using 19% VWN and 81% LYP.

It seems, that I am lacking some important information to understand that definitions in both, Gaussian and ORCA, and I hope seriously, that someone can enlighten me.

PS My discussion with Martin came up with the possibility, namely that there might be some missing brackets in the second equation, giving the following:

$$\text{XC-Functional}=P_2 E_X^\text{HF} + P_1 \left(P_4 E_X^\text{Slater} + P_3\Delta E_x^\text{non-local}\right) + P_6 \mathbf{{\color{red}(}}(1-P_5)E_C^\text{local} + P_5 \Delta E_C^\text{non-local}\mathbf{{\color{red})}}$$

Appendix: Information from the program output or the documentary

• Gaussian 09 Rev. A.02 output

IExCor=  402 DFT=T Ex=B+HF Corr=LYP ExCW=0 ScaHFX=  0.200000

• ORCA 3.0.3 output

Fraction HF Exchange ScalHFX         ....  0.200000
Scaling of DF-GGA-X  ScalDFX         ....  0.720000
Scaling of DF-GGA-C  ScalDFC         ....  0.810000
Scaling of DF-LDA-C  ScalLDAC        ....  1.000000
Perturbative correction              ....  0.000000
NL short-range parameter             ....  4.800000

• Turbomole 7 define

 b3-lyp          | HYB  | 0.8S+0.72B88   | 0.19VWN(V)     | 1-3,5,6,10
|      | +0.2HF         | +0.81LYP       |
b3-lyp_Gaussian | HYB  | 0.8S+0.72B88   | 0.19VWN(III)   | 1-3,5,6,10
|      | +0.2HF         | +0.81LYP       |

• NWChem
• Molpro

B3LYP   EXACT:B88:DIRAC:LYP:VWN5    0.2:0.72:0.08:0.81:0.19


the 0.08 is probably a typo

• GAMESS(US)
• ORCA can perform both B3LYP and B3LYP/G, the first corresponding to the TurboMole implementation and the second corresponding to the Gaussian implementation. Oct 21, 2015 at 15:07
• @Jonathon In ORCA B3LYP vs B3LYP/G only changes the VWN from VWN-5 to VWN-3 and does not change sth about the amount of VWN, like what you can see from my appended Turbomole information. Oct 21, 2015 at 15:20
• I just checked the outputs and it looks like you are right, I guess the manual is wrong then. I will file a bug report for them to fix the wording. Oct 21, 2015 at 15:25
• It's one of the real annoyances of B3LYP as a functional... Dec 25, 2016 at 13:49
• Tangentially related to the question: ORCA, Turbomole, Molpro and GAMESS(US) are now all interfaced to Libxc (along with ~30 other programs), which provides common and portable implementations of ~600 density functionals including several variants of B3LYP. If you want to implement a custom density functional, this is quite simple to do in Libxc. Moreover, e.g. Psi4 and PySCF which are both open-source/free-software packages for Gaussian-basis quantum chemistry allow you to define and customize the exchange-correlation functional in the input file, making it easy to use custom functionals with May 7, 2021 at 0:59

As to what you identified as a typo in Molpro -- It may be that B88 was shoe-horned into the more mainstream definition of GGAs, which can be loosely worded as "a multiplicative correction to the LDA energy" (the energy density, actually). Becke, on the other hand, described the B88 functional originally as an additive correction ($\Delta E$). NWChem makes the distinction explicit in the keyword nonlocal, see the manual section on exchange-correlation potentials. So for Molpro, the exchange accounting should read: $0.2+0.72+0.08=1$, whereas the others use: $0.2+0.8=1$ and keep the $0.72$ implicit.