grimme-lab / xtb

Semiempirical Extended Tight-Binding Program Package
https://xtb-docs.readthedocs.io/
GNU Lesser General Public License v3.0
566 stars 142 forks source link

Thermochemistry Calculations with GFN2 #297

Closed rmw83 closed 4 years ago

rmw83 commented 4 years ago

Describe the bug

To Reproduce Steps to reproduce the behaviour:

  1. Load xTB version 6.3.1.
  2. Start xtb with a hessian (--hess) flag for thermochemistry calculations with additional input (--input thermo.inp) to adjust the temperature to 300 K. The structure has been previously optimized so only a single-point calculation is performed.

Please provide all input and output file such that we confirm your report. (Attached here) thermo.zip

Expected behaviour N/A

Additional context N/A

awvwgk commented 4 years ago

For all translational and rotational partition function the standard textbook expressions are implemented, the vibrational partition function is described here: https://doi.org/10.1002/chem.201200497

Not sure if this is answering your question.

rmw83 commented 4 years ago

Specifically, please refer to this block from the GFN2 output:

------------------------------------------------------------------------

   temp. (K)  partition function   enthalpy   heat capacity  entropy
                                   cal/mol     cal/K/mol   cal/K/mol   J/K/mol
 300.00  VIB   466.                 3252.628     15.858     22.662
         ROT  0.579E+05              894.267      2.981     24.775
         INT  0.270E+08             4146.895     18.839     47.437
         TR   0.255E+28             1490.445      4.968     41.638
         TOT                        5637.3402    23.8067    89.0754   372.6916

       T/K    H(0)-H(T)+PV         H(T)/Eh          T*S/Eh         G(T)/Eh
   ------------------------------------------------------------------------
    300.00    0.898367E-02    0.134278E-01    0.425852E-01   -0.291574E-01
   ------------------------------------------------------------------------

Moving forward...

I am interested in calculating the enthalpy correction term [ZPE + finite temperature + PV] from GFN2. The ZPE is written explicitly furthur in the output, not shown here. The finite temperature contributions are from assessing the rotational, translational, and vibrational (specifically to correct the ZPE) modes of the molecule. For PV, work done is typically equal to kT for an idael gas, but here PV is referred as a correction term (i think?) for the difference between H(0) and H(T). However, I am not sure what this value means, where it comes from, or if it refers to PV in this context.

EDIT

What is 'INT' from the output and how is it calculated as well?

awvwgk commented 4 years ago

The “INT” contribution (meaning internal) describes the partition function of the internal degrees of freedom, which in this case is the total of the vibrational and rotational partition function.

The H(0) – H(T) + PV output is calculated as H(T) – ZPE and not used for anything except this printout. So for enthalpy corrections you are probably looking for the H(T) output here.

rmw83 commented 4 years ago

Thank you very much.

One last question, how is H(0) defined then? I thought it was the total energy before the enthalpy correction, but that doesn't align with the mathematics shown above. In other words... it appears as though H(T) might have two meanings in the output, one to signify the difference between enthalpy corrected and original energies, and another to signify the enthalpy corrected energy itself.

awvwgk commented 4 years ago

H(0) is given relative to H(T) to avoid defining/calculating it, but this is kinda not-an-answer to your question. So no, it [H(T)] does not have two different meanings here, but maybe one odd representation.

Also note, that at this point none of the thermostatistical contributions actually contains the total energy, the total enthalpy is given only in a later printout.