Difference between revisions of "CamCASP/Programming/7"

From CUC3
Jump to navigation Jump to search
import>Am592
import>Am592
Line 64: Line 64:
   
 
Timings: it's slower than the previous method (using AUX-ALDAX), but only by a minute.
 
Timings: it's slower than the previous method (using AUX-ALDAX), but only by a minute.
  +
--[[User:am592|alston]] 15:57, 26 April 2010 (BST)
 
  +
Completed the Cartesian aux basis calculation:
  +
DF-(ALDAX(DF)+CHF) kernel:
  +
<pre>
  +
42.614128 0.000000 0.000000
  +
0.000000 79.929958 0.000000
  +
0.000000 0.000000 79.930117
  +
Isotropic polarizability: 67.49140129
  +
Anisotropic polarizability: 37.31590957
  +
</pre>
  +
Error here is 1.1%. More than the spherical aux case. This is strange. Well, anyway, the error is still small. So the residual error in the calculation must be from the DF or ALDAX approximations.
  +
 
--[[User:am592|alston]] 19:31, 26 April 2010 (BST)
   
 
==Water==
 
==Water==

Revision as of 18:31, 26 April 2010

CamCASP => Programming => Propagator

The new propagator module (in CamCASP 5.5-dev) can create the propagator in the LDAX approximation very efficiently. Construction scales as <math>O(N^4)</math>. Further, the kernel integrals are calculated with <math>O(N^3)</math> scaling (one power for grid points and two powers for auxiliary basis functions). So the new propagator can be calculated very efficiently. But the ALDAX approximation in the kernel results in significant errors in the polarizabilities and (probably dispersion energies).

As a temporary measure we could calculate the hybrid ADALX+CHF (not ALDA - I still don't have the VWN correlation functional programmed, but this is not a large error) by back transforming the kernel using the DF solution. So we go from a two-index object to a four-index object, then form the full propagator, and then transform back to a two-index density-fitted propagator. This is a round-about way, but should work and will still benefit from the efficiency gains in evaluating the kernel integrals.

Kernel Notation

  • AUX-ALDA : ALDA kernel constructed directly in auxiliary basis.
  • AUX-ALDAX : ALDAX exchange-only LDA kernel constructed directly in auxiliary basis.
  • DF-(ALDA+CHF) : Hybrid ALDA+CHF kernel constructed in main basis, and then reduced in size using density-fitting.
  • DF-(ALDAX(DF)+CHF) : As above, but with exchange-only ALDAX kernel calculated from AUX-ALDAX and converted into an ov x ov object using the DF solution matrix.

Examples

Benzene

  • Basis: Sadlej
  • Old timings obtained using different processor (AMD), so using pyridine/sadlej timings (note: smaller basis set!):
    • DALTON: Kernel integrals: 3.3 hours
    • CamCASP: (properties) 2.5 hours
  • New timings (AUX-ALDAX kernel):
    • Kernel: 6.5 minutes
    • CamCASP (only total polarizabilities): 12 minutes

Not quite a good comparison, but you get the idea. The new propagator is very very fast.

Accuracy is poor. ALDAX is just not good enough for <math>\pi</math>-conjugated systems. Here are the dipole-dipole polarizabilities:

DF-(ALDA+CHF) kernel:

    43.247483     0.000000     0.000000
     0.000000    80.710408     0.000000
     0.000000     0.000000    80.713103
    Isotropic polarizability:    68.22366473
  Anisotropic polarizability:    37.46427266

AUX-ALDAX kernel:

 Order:    1 by    1
    39.035569     0.000000     0.000000
     0.000000    70.478442     0.000000
     0.000000     0.000000    70.487565
    Isotropic polarizability:    60.00052553
  Anisotropic polarizability:    31.44743535

That's a 12% error.

I've now made the new kernel integral routines accessible from the old densfit_prop.F90 module. This is a temporary work-around to allow us to use the hybrid Hessians. Here's what I get for benzene:

DF-(ALDAX(DF)+CHF) kernel:

    42.787209     0.000000     0.000000
     0.000000    80.353396     0.000000
     0.000000     0.000000    79.887600
    Isotropic polarizability:    67.67606832
  Anisotropic polarizability:    37.33546875

The error is now 0.8%. There still is a difference for these reasons (I think):

  1. I have constructed the ov x ov kernel integrals using the expression <math>H = D K D^T</math> where <math>D</math> is the OV density-fitting solution matrix and <math>K</math> is the kernel calculated in the auxiliary basis.
  2. The kernel integral is calculated in the ALDAX approximation. I still do not have the contribution from the correlation functional.
  3. The auxiliary basis uses Spherical GTOs.

It's hard to say which is the dominant source of error. But the total error is quite small now, so perhaps we can live with this for now.

Timings: it's slower than the previous method (using AUX-ALDAX), but only by a minute.

Completed the Cartesian aux basis calculation: DF-(ALDAX(DF)+CHF) kernel:

    42.614128     0.000000     0.000000
     0.000000    79.929958     0.000000
     0.000000     0.000000    79.930117
    Isotropic polarizability:    67.49140129
  Anisotropic polarizability:    37.31590957

Error here is 1.1%. More than the spherical aux case. This is strange. Well, anyway, the error is still small. So the residual error in the calculation must be from the DF or ALDAX approximations.

--alston 19:31, 26 April 2010 (BST)

Water

Basis: aug-cc-pVTZ Aux: aux-aug-cc-pVTZ Cartesian GTOs XC-Func: PBE0 Here is the dipole-dipole polarizability using the DF-(ALDA+CHF), DF-(ALDAX(DF)+CHF) and AUX-ALDAX kernels.

DF-(ALDA+CHF):

     9.391882     0.000000     0.000000
     0.000000    10.034214     0.000000
     0.000000     0.000000     8.750848
    Isotropic polarizability:     9.39231483
  Anisotropic polarizability:     1.11142748

DF-(ALDAX(DF)+CHF):

     9.259201    -0.000000     0.000000
    -0.000000     9.901715     0.000000
     0.000000     0.000000     8.617225
    Isotropic polarizability:     9.25938032
  Anisotropic polarizability:     1.11240073

AUX-ALDAX:

     8.227020    -0.000000     0.000000
    -0.000000     8.808915     0.000000
     0.000000     0.000000     7.683247
    Isotropic polarizability:     8.23972716
  Anisotropic polarizability:     0.97504333

Once again large (12.2%) errors with the AUX-ALDAX kernel but far better agreement (1.4%) with the DF-(ALDAX(DF)+CHF) kernel. --alston 19:00, 26 April 2010 (BST)

Helium dimer

Basis: aTZ/MC+ Geom: R = 5.6 a.u. Here's a comparison of interaction energies from the original method (ALDA+CHF kernel using DALTON, Cartesian auxiliary basis) and the new method (DF-(ALDAX+CHF) kernel using CamCASP, spherical auxiliary basis):

Energy-units cm-1
           elst  exch    disp2C     ind2C    exind2C  exdisp2C   Eint(2)  
 Original -1.27  8.88  -15.684454 -0.216497  0.179052  0.449355 -7.657907  
 New      -1.22  8.88  -15.417550 -0.464630  0.383947  0.441358 -7.390518  

There is a large change in the induction energies because of the use of spherical GTOs in the auxiliary basis - this energy is very sensitive to the accuracy of the density fitting. There is an error of 1.7% in the dispersion energy.