Convergence assumed when restarting with altered bq block


Click here for full thread
Clicked A Few Times
Hi,

I've run into a problem with NWChem 6.3 when restarting a calculation having changed the coordinates in a bq block. In this case NWChem wrongly assumes that the SCF is converged and doesn't perform any calculation.

Running the following inputs in succession reproduces the problem:

title "bq"
start nwchem
geometry print units bohr nocenter noautoz
symmetry c1 tol 0.0
zn 0.00000000000000 0.00000000000000 0.00000000000000
end
bq units au
force force.dat
3.77945332702064 0.00000000000000 0.00000000000000 1.7544100000
0.00000000000000 3.77945332702064 0.00000000000000 2.0000000000
3.77945332702064 3.77945332702064 0.00000000000000 1.7544100000
3.77955332700930 0.00000000000000 0.00000000000000 -3.7544100000
3.77955332700930 3.77945332702064 0.00000000000000 -3.7544100000
end
basis print
Zn library 3-21g
end
charge 0
task scf gradient


title "bq2"
restart nwchem
geometry print units bohr nocenter noautoz
symmetry c1 tol 0.0
zn 0.00000000000000 0.00000000000000 0.00000000000000
end
bq units au
force force.dat
-1.77945332702064 0.00000000000000 1.00000000000000 3.7544100000
2.00000000000000 3.77945332702064 0.00000000000000 2.0000000000
-3.77945332702064 3.77945332702064 0.10000000000000 1.7544100000
-4.73438431265977 -0.0351280747192 0.00000000000000 -3.7544100000
-5.73402714291460 3.81558680667045 1.00000000000000 -3.7544100000
end
charge 0
task scf gradient


In the second calculation the message "The SCF is already converged" is printed and no calculation is performed.

I've traced the problem back to the function movecs_converged in ddscf/vectors.F, which appears to check that a bq block exists but not whether the coordinates or charges inside it have changed.

I've found a workaround which is to add the line "set scf:converged false" in the second input, but it would be preferable I think for the code itself to check for changes to the bq block.

Tom