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
    ScaDFX=  0.800000  0.720000  1.000000  0.810000
  • 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

  • $\begingroup$ ORCA can perform both B3LYP and B3LYP/G, the first corresponding to the TurboMole implementation and the second corresponding to the Gaussian implementation. $\endgroup$
    – Jonathon
    Commented Oct 21, 2015 at 15:07
  • $\begingroup$ @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. $\endgroup$ Commented Oct 21, 2015 at 15:20
  • $\begingroup$ 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. $\endgroup$
    – Jonathon
    Commented Oct 21, 2015 at 15:25
  • 1
    $\begingroup$ It's one of the real annoyances of B3LYP as a functional... $\endgroup$ Commented Dec 25, 2016 at 13:49
  • 1
    $\begingroup$ 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 $\endgroup$ Commented May 7, 2021 at 0:59

1 Answer 1


As a former contributor to Orca who had access to Turbomole sources before that, I can say with confidence that the internal definitions of B3LYP and B3LYP_gaussian are consistent among them and Gaussian (where available). So no calculations should go wrong.

While I cannot speak for Gaussian, for Orca I am certain that the ScalLDAC parameter is badly printed here (and not relevant for many of the newer functionals).

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.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.