Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Potential bug in sad.cc: definition of pseudo-orbitals #3137

Open
susilehtola opened this issue Feb 24, 2024 · 1 comment · May be fixed by #3138
Open

Potential bug in sad.cc: definition of pseudo-orbitals #3137

susilehtola opened this issue Feb 24, 2024 · 1 comment · May be fixed by #3138

Comments

@susilehtola
Copy link
Member

As a result of in-person collaboration on #3136 with @loriab in Lausanne, I noticed a bug in the SAD code:

C_DSCAL(nbf, occ->get(i), &Coccp[0][i], nocc);

The pseudo-orbitals should be obtained by multiplying the orbital with the square root of their occupation to reproduce the correct density matrix C occ C^T.

@susilehtola susilehtola linked a pull request Feb 24, 2024 that will close this issue
9 tasks
@susilehtola susilehtola changed the title Bug in sad.cc: Potential bug in sad.cc: definition of pseudo-orbitals Feb 24, 2024
@susilehtola
Copy link
Member Author

I am reviewing a paper related to some calculations on transition metal complexes, and I noticed a pretty significant difference in the convergence for these systems. With the fix, I get decent convergence

  ==> Iterations <==

                           Total Energy        Delta E     RMS |[F,P]|

   @DF-UKS iter SAD: -1560.62324919175876   -1.56062e+03   0.00000e+00 
   @DF-UKS iter   1: -1504.03705732702224    5.65862e+01   3.11225e-02 ADIIS/DIIS
   @DF-UKS iter   2: -1487.30385546810771    1.67332e+01   4.19089e-02 ADIIS/DIIS
   @DF-UKS iter   3: -1595.07318567437824   -1.07769e+02   1.91720e-02 ADIIS/DIIS
   @DF-UKS iter   4: -1564.30445668282618    3.07687e+01   3.31275e-02 ADIIS/DIIS
   @DF-UKS iter   5: -1603.11290614082509   -3.88084e+01   1.87126e-02 ADIIS/DIIS
   @DF-UKS iter   6: -1602.92895467184917    1.83951e-01   1.71826e-02 ADIIS/DIIS
   @DF-UKS iter   7: -1614.51158717592830   -1.15826e+01   1.03141e-02 ADIIS/DIIS
   @DF-UKS iter   8: -1616.83699931720344   -2.32541e+00   6.19589e-03 ADIIS/DIIS
   @DF-UKS iter   9: -1616.50013867709094    3.36861e-01   6.18683e-03 ADIIS/DIIS
   @DF-UKS iter  10: -1617.89286983906686   -1.39273e+00   3.54362e-03 ADIIS/DIIS
   @DF-UKS iter  11: -1618.25105941096376   -3.58190e-01   1.44948e-03 ADIIS/DIIS
   @DF-UKS iter  12: -1618.30666617824772   -5.56068e-02   8.16936e-04 ADIIS/DIIS
   @DF-UKS iter  13: -1618.32906595120630   -2.23998e-02   3.05210e-04 ADIIS/DIIS
   @DF-UKS iter  14: -1618.33209488701596   -3.02894e-03   1.11579e-04 ADIIS/DIIS
   @DF-UKS iter  15: -1618.33246925032131   -3.74363e-04   5.16022e-05 DIIS
   @DF-UKS iter  16: -1618.33255204306215   -8.27927e-05   2.40611e-05 DIIS
   @DF-UKS iter  17: -1618.33257421168014   -2.21686e-05   6.92474e-06 DIIS
   @DF-UKS iter  18: -1618.33257596491853   -1.75324e-06   3.51398e-06 DIIS
   @DF-UKS iter  19: -1618.33257648667177   -5.21753e-07   1.67910e-06 DIIS
   @DF-UKS iter  20: -1618.33257663986774   -1.53196e-07   9.10475e-07 DIIS
  Energy and wave function converged.

while the original code is just not getting anywhere

  ==> Iterations <==

                           Total Energy        Delta E     RMS |[F,P]|

   @DF-UKS iter SAD: -1617.72517858542346   -1.61773e+03   0.00000e+00 
   @DF-UKS iter   1: -1609.10793037762460    8.61725e+00   1.56461e-02 ADIIS/DIIS
   @DF-UKS iter   2: -1513.75875168526773    9.53492e+01   2.55145e-02 ADIIS/DIIS
   @DF-UKS iter   3: -1593.19511863655589   -7.94364e+01   2.00404e-02 ADIIS/DIIS
   @DF-UKS iter   4: -1609.55961522174721   -1.63645e+01   1.54082e-02 ADIIS/DIIS
   @DF-UKS iter   5: -1608.66721055388211    8.92405e-01   1.58428e-02 ADIIS/DIIS
   @DF-UKS iter   6: -1606.15983763646909    2.50737e+00   1.65518e-02 ADIIS/DIIS
   @DF-UKS iter   7: -1609.08727763024035   -2.92744e+00   1.55973e-02 ADIIS/DIIS
   @DF-UKS iter   8: -1609.36600587362682   -2.78728e-01   1.55155e-02 ADIIS/DIIS
   @DF-UKS iter   9: -1609.42810677829789   -6.21009e-02   1.54740e-02 ADIIS/DIIS
   @DF-UKS iter  10: -1609.36720577250594    6.09010e-02   1.54956e-02 ADIIS/DIIS
   @DF-UKS iter  11: -1609.31568466585577    5.15211e-02   1.55009e-02 ADIIS/DIIS
   @DF-UKS iter  12: -1609.30063403912891    1.50506e-02   1.55077e-02 ADIIS/DIIS
   @DF-UKS iter  13: -1527.66650270045170    8.16341e+01   2.90613e-02 ADIIS/DIIS
   @DF-UKS iter  14: -1608.45288430336177   -8.07864e+01   1.18744e-02 ADIIS/DIIS
   @DF-UKS iter  15: -1601.39968775254283    7.05320e+00   1.96825e-02 ADIIS/DIIS
   @DF-UKS iter  16: -1604.25783345373975   -2.85815e+00   1.82468e-02 ADIIS/DIIS
   @DF-UKS iter  17: -1604.35375096768189   -9.59175e-02   1.82299e-02 ADIIS/DIIS
   @DF-UKS iter  18: -1604.46416506021910   -1.10414e-01   1.82114e-02 ADIIS/DIIS
   @DF-UKS iter  19: -1604.87104774399745   -4.06883e-01   1.80646e-02 ADIIS/DIIS
   @DF-UKS iter  20: -1605.36296572024708   -4.91918e-01   1.78738e-02 ADIIS/DIIS
   @DF-UKS iter  21: -1605.21271265448399    1.50253e-01   1.79687e-02 ADIIS/DIIS
   @DF-UKS iter  22: -1605.32208908144617   -1.09376e-01   1.78762e-02 ADIIS/DIIS
   @DF-UKS iter  23: -1605.38683041012337   -6.47413e-02   1.77564e-02 ADIIS/DIIS
   @DF-UKS iter  24: -1607.38948195613216   -2.00265e+00   1.66294e-02 ADIIS/DIIS
   @DF-UKS iter  25: -1544.68166869104630    6.27078e+01   2.96057e-02 ADIIS/DIIS
   @DF-UKS iter  26: -1611.59998215809651   -6.69183e+01   1.04967e-02 ADIIS/DIIS
   @DF-UKS iter  27: -1603.00625348084031    8.59373e+00   1.84978e-02 ADIIS/DIIS
   @DF-UKS iter  28: -1607.56861129563708   -4.56236e+00   1.65129e-02 ADIIS/DIIS
   @DF-UKS iter  29: -1606.81781765124879    7.50794e-01   1.67698e-02 ADIIS/DIIS
   @DF-UKS iter  30: -1606.99834129558417   -1.80524e-01   1.67072e-02 ADIIS/DIIS
   @DF-UKS iter  31: -1607.08260984585536   -8.42686e-02   1.66894e-02 ADIIS/DIIS
   @DF-UKS iter  32: -1607.58286184252984   -5.00252e-01   1.65159e-02 ADIIS/DIIS
   @DF-UKS iter  33: -1607.70620441187043   -1.23343e-01   1.64398e-02 ADIIS/DIIS
   @DF-UKS iter  34: -1605.56325997292583    2.14294e+00   1.71910e-02 ADIIS/DIIS
   @DF-UKS iter  35: -1607.90865339963125   -2.34539e+00   1.62901e-02 ADIIS/DIIS
   @DF-UKS iter  36: -1608.37146962394900   -4.62816e-01   1.58499e-02 ADIIS/DIIS
   @DF-UKS iter  37: -1538.01524722871704    7.03562e+01   2.83451e-02 ADIIS/DIIS
   @DF-UKS iter  38: -1610.54833564802016   -7.25331e+01   1.13618e-02 ADIIS/DIIS
   @DF-UKS iter  39: -1596.77669596901296    1.37716e+01   2.07815e-02 ADIIS/DIIS
   @DF-UKS iter  40: -1604.53912793051700   -7.76243e+00   1.78260e-02 ADIIS/DIIS
   @DF-UKS iter  41: -1604.81907070201123   -2.79943e-01   1.76279e-02 ADIIS/DIIS
   @DF-UKS iter  42: -1604.86786864575606   -4.87979e-02   1.76137e-02 ADIIS/DIIS
   @DF-UKS iter  43: -1604.90762558223810   -3.97569e-02   1.75873e-02 ADIIS/DIIS
   @DF-UKS iter  44: -1604.90538587014748    2.23971e-03   1.75574e-02 ADIIS/DIIS
   @DF-UKS iter  45: -1604.63787785075419    2.67508e-01   1.77088e-02 ADIIS/DIIS
   @DF-UKS iter  46: -1604.67410013746530   -3.62223e-02   1.77062e-02 ADIIS/DIIS
   @DF-UKS iter  47: -1607.23461484716836   -2.56051e+00   1.66343e-02 ADIIS/DIIS
   @DF-UKS iter  48: -1605.16752155545578    2.06709e+00   1.65743e-02 ADIIS/DIIS
   @DF-UKS iter  49: -1523.95407824039512    8.12134e+01   3.29428e-02 ADIIS/DIIS
   @DF-UKS iter  50: -1608.78229393915694   -8.48282e+01   1.12286e-02 ADIIS/DIIS
   @DF-UKS iter  51: -1603.07523065508371    5.70706e+00   1.87357e-02 ADIIS/DIIS
   @DF-UKS iter  52: -1606.01923323360234   -2.94400e+00   1.73721e-02 ADIIS/DIIS
   @DF-UKS iter  53: -1606.18768911205666   -1.68456e-01   1.72566e-02 ADIIS/DIIS
   @DF-UKS iter  54: -1606.18356892529187    4.12019e-03   1.72582e-02 ADIIS/DIIS
   @DF-UKS iter  55: -1606.29299121615145   -1.09422e-01   1.72045e-02 ADIIS/DIIS
   @DF-UKS iter  56: -1606.33849960487714   -4.55084e-02   1.71926e-02 ADIIS/DIIS

I will try to run analogous calculations also with the OpenOrbitalOptimizer SAD guess of #3136, which is a further improvement.

However, these calculations were easy to converge with the STO-3G basis guess....

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant