MRChemSoft / mrchem

MultiResolution Chemistry
GNU Lesser General Public License v3.0
27 stars 21 forks source link

0-th iteration with SCRF too strict #426

Closed Gabrielgerez closed 1 year ago

Gabrielgerez commented 1 year ago

When running SCRF the first iteration which projects the initial guess seems to have a threshold that is too strict. Here is an example of one that does not converge after 100 iterations.

===========================================================================
                        Building Reaction operator
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Density type            : total 
 Dynamic threshold       : On 
 KAIN solver             : 20 
 Max iterations          : 100 
 Method                  : SCRF 
 Optimizer               : Potential 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Precision                                  (rel)              1.00000e-03
 Threshold                                  (abs)              1.00000e-03
---------------------------------------------------------------------------
 Vacuum density                  13784 nds         0.60 GB        0.72 sec
 Vacuum potential                 2432 nds       108.21 MB        2.08 sec
 Initial gamma                    3176 nds       141.31 MB        5.50 sec
---------------------------------------------------------------------------
 Iter   1 :             2.196758530112e+02    3.626727e+02        4.99 sec
 Iter   2 :             4.679320433418e+02    6.874664e+02        5.15 sec
 Iter   3 :             8.263997463217e+02    1.294211e+03        5.01 sec
 Iter   4 :             2.655720467267e+01    8.049723e+00        5.40 sec
 Iter   5 :             1.030256419038e+01    2.155165e+01        5.59 sec
 Iter   6 :             3.098211891729e+01    4.880650e+01        5.37 sec
 Iter   7 :             7.499579895954e+00    2.033435e+01        5.84 sec
 Iter   8 :             1.960000044342e+02    2.480395e+02        5.08 sec
 Iter   9 :             4.486188153090e+02    6.445786e+02        5.02 sec
 Iter  10 :             1.030512040959e+02    1.195099e+02        5.17 sec
 Iter  11 :             3.488574654537e+01    2.303960e+01        5.41 sec
 Iter  12 :             2.812954329676e+01    4.222994e+01        5.51 sec
 Iter  13 :             3.304039412952e+01    3.722655e+01        5.49 sec
 Iter  14 :             1.439359183594e+01    7.837565e+00        5.87 sec
 Iter  15 :             1.136985881411e+01    2.753831e+00        6.67 sec
 Iter  16 :             9.283217156744e+00    9.124336e+00        6.84 sec
 Iter  17 :             2.542207649474e+01    2.947444e+01        7.09 sec
 Iter  18 :             5.640923420287e+00    2.751902e+00        6.93 sec
 Iter  19 :             5.272678161037e+00    2.827733e+00        7.12 sec
 Iter  20 :             4.564466352792e+00    3.941905e+00        7.66 sec
 Iter  21 :             6.010616694267e+00    8.248777e-01        7.88 sec
 Iter  22 :             4.442435721218e+00    4.149117e+00        8.39 sec
 Iter  23 :             6.225781832649e+00    5.236836e-01        8.69 sec
 Iter  24 :             6.191675258721e+00    2.540126e-01        9.16 sec
 Iter  25 :             5.925971656411e+00    9.070624e-01        9.66 sec
 Iter  26 :             6.109764377631e+00    1.877640e-01       10.20 sec
 Iter  27 :             5.995463451170e+00    3.408096e-01       10.70 sec
 Iter  28 :             5.350976811882e+00    1.159556e+00       10.80 sec
 Iter  29 :             6.015389464055e+00    9.257384e-02       10.83 sec
 Iter  30 :             5.917118477349e+00    2.077597e-01       10.84 sec
 Iter  31 :             5.972306711035e+00    9.097246e-02       10.80 sec
 Iter  32 :             6.014759040826e+00    3.755338e-02       10.83 sec
 Iter  33 :             6.313158159822e+00    4.736398e-01       10.82 sec
 Iter  34 :             5.887115778127e+00    2.430934e-01       10.82 sec
 Iter  35 :             5.879764172428e+00    1.872053e-01       10.82 sec
 Iter  36 :             6.070690954360e+00    9.388961e-02       10.80 sec
 Iter  37 :             5.966167329214e+00    8.503860e-02       11.10 sec
 Iter  38 :             6.028196895515e+00    5.022143e-02       11.14 sec
 Iter  39 :             5.999505927990e+00    1.230961e-02       11.16 sec
 Iter  40 :             6.051463714085e+00    9.070491e-02       11.14 sec
 Iter  41 :             6.039720060109e+00    8.194793e-02       11.15 sec
 Iter  42 :             6.015975166109e+00    1.914341e-02       11.16 sec
 Iter  43 :             5.748027358132e+00    4.293463e-01       11.14 sec
 Iter  44 :             5.813795188188e+00    2.562110e-01       11.14 sec
 Iter  45 :             6.010342690406e+00    2.984303e-02       11.22 sec
 Iter  46 :             5.995773994159e+00    8.648955e-03       11.20 sec
 Iter  47 :             7.497842515022e+00    3.160823e+00       11.10 sec
 Iter  48 :             6.055780850895e+00    7.194213e-02       11.16 sec
 Iter  49 :             5.996534587046e+00    1.431887e-02       11.15 sec
 Iter  50 :             6.003775070352e+00    9.195359e-03       11.16 sec
 Iter  51 :             5.990946307171e+00    2.485983e-02       11.17 sec
 Iter  52 :             6.031885290134e+00    2.986914e-02       11.18 sec
 Iter  53 :             5.979506508540e+00    5.026604e-02       11.17 sec
 Iter  54 :             5.551210495842e+00    7.720689e-01       11.17 sec
 Iter  55 :             5.960801042265e+00    7.204732e-02       11.26 sec
 Iter  56 :             5.985925876412e+00    3.229952e-02       11.30 sec
 Iter  57 :             6.016386206098e+00    1.346824e-02       11.30 sec
 Iter  58 :             6.003444207062e+00    7.977556e-03       11.27 sec
 Iter  59 :             6.009526824060e+00    4.499022e-03       11.35 sec
 Iter  60 :             5.995274197918e+00    1.728328e-02       11.30 sec
 Iter  61 :             6.016091902417e+00    1.590753e-02       11.28 sec
 Iter  62 :             6.006765828625e+00    2.898617e-03       11.33 sec
 Iter  63 :             6.017344057698e+00    1.698055e-02       11.32 sec
 Iter  64 :             5.988775877242e+00    3.373529e-02       11.28 sec
 Iter  65 :             6.014190020907e+00    1.300706e-02       11.28 sec
 Iter  66 :             6.016720414142e+00    1.134262e-02       11.26 sec
 Iter  67 :             6.021465745830e+00    2.036954e-02       11.31 sec
 Iter  68 :             6.010670220292e+00    4.544774e-03       11.29 sec
 Iter  69 :             6.011708605070e+00    3.131871e-03       11.31 sec
 Iter  70 :             6.010988644103e+00    6.292263e-03       11.32 sec
 Iter  71 :             6.013357443146e+00    7.961676e-03       11.27 sec
 Iter  72 :             6.010804396055e+00    4.924944e-03       11.36 sec
 Iter  73 :             6.010737438250e+00    2.497534e-03       11.38 sec
 Iter  74 :             6.007280879971e+00    4.018973e-03       11.41 sec
 Iter  75 :             6.011259242317e+00    2.600920e-03       11.38 sec
 Iter  76 :             6.007442794283e+00    3.535192e-03       11.37 sec
 Iter  77 :             6.011453275767e+00    6.934437e-03       11.37 sec
 Iter  78 :             6.006798805134e+00    3.888817e-03       11.31 sec
 Iter  79 :             6.008053047460e+00    2.850944e-03       11.32 sec
 Iter  80 :             6.009135899951e+00    2.091183e-03       11.33 sec
 Iter  81 :             6.010456850052e+00    2.614412e-03       11.33 sec
 Iter  82 :             6.008082547037e+00    2.471680e-03       11.38 sec
 Iter  83 :             6.010040958315e+00    3.055909e-03       11.32 sec
 Iter  84 :             6.008118582033e+00    2.113627e-03       11.35 sec
 Iter  85 :             6.008119127558e+00    2.531220e-03       11.34 sec
 Iter  86 :             6.014623540733e+00    9.962428e-03       11.31 sec
 Iter  87 :             5.998992729591e+00    1.718864e-02       11.30 sec
 Iter  88 :             6.006724105794e+00    3.676443e-03       11.36 sec
 Iter  89 :             6.008345503728e+00    1.980599e-03       11.38 sec
 Iter  90 :             6.010207238728e+00    2.630062e-03       11.33 sec
 Iter  91 :             6.009694501145e+00    2.375492e-03       11.31 sec
 Iter  92 :             6.007807853212e+00    2.513228e-03       11.35 sec
 Iter  93 :             6.008782935792e+00    1.863966e-03       11.31 sec
 Iter  94 :             6.010495394412e+00    2.894800e-03       11.31 sec
 Iter  95 :             6.009801872357e+00    2.237781e-03       11.34 sec
 Iter  96 :             6.008807939291e+00    1.982189e-03       11.34 sec
 Iter  97 :             6.009020374999e+00    1.853308e-03       11.35 sec
 Iter  98 :             6.011153744985e+00    3.397538e-03       11.42 sec
 Iter  99 :             6.009296269184e+00    1.984286e-03       11.87 sec
 Iter 100 :             6.009290646711e+00    1.869301e-03       11.30 sec
---------------------------------------------------------------------------
 Reaction potential               1104 nds        49.12 MB       16.69 min
---------------------------------------------------------------------------
                         Wall time: 1.00997e+03 sec
===========================================================================

we should set precision at 1/10world_prec and threshold to 10world_prec have at least a warning for when it does not converge before max_iter.

stigrj commented 1 year ago

I think there's an easy and "unsurprising" solution to this. We already have the dynamic_thrs input parameter, so if this is set to true we should start with the minimum precision for iter 0, if false it should be set to world_prec. This seems kind of obvious to me now, so I don't know why I didn't do it like this in the first place...