Frozen atoms move during optimization

Not sure if this is expected behavior so I thought I would reach out here-

I have been running some constrained DFT calculations with QChem 6.2.1 and find that the positions of fixed atoms are moving over the course of Cartesian optimization. The xyz differences are not in the precision of the last digit. This doesn’t appear to be rigid body translation of the whole structure, since the RMSD between 2 structures (minimized with different constraints but the same frozen atoms) is not the same across all atoms.

The result is that there are some subtle deviations on the order of 0.001 A between runs where I expect almost all of the structure to be totally frozen. I understand these changes are not chemically significant, but I’ve not come across this before and I don’t know if it might produce uncontrolled error accumulation, e.g. when building averaged structures for workflows like pyPCET or comparative inputs for different levels of theory.

Is this just unavoidable numerical error, grid related, or a feature of how frozen atoms are handled…?

I will probably proceed by averaging the “frozen but slightly different structures”.

a sample input:

$molecule
1 2
C       -8.034434410      0.193233320      3.207319150
H       -8.459432040      0.869768250      2.551803970
C       -6.739701680      0.224691640      3.650398410
H       -6.016653880      0.919929360      3.388180890
C       -6.579229250     -0.808738930      4.492763300
H       -5.705062510     -1.051379230      4.994285060
C       -7.774162840     -1.482129900      4.573064690
H       -7.961686350     -2.314780380      5.154046390
C       -8.685242270     -0.833000450      3.808053610
H       -9.685567170     -1.092995740      3.681949300
C       -5.886511950     -3.082692730      2.205530650
H       -5.319534420     -3.703921150      2.884427870
C       -7.241586190     -3.317989920      1.820517260
H       -7.873586770     -4.131756220      2.164363930
C       -7.609579760     -2.300067620      0.915256600
H       -8.576041320     -2.194331480      0.430122590
C       -6.480846290     -1.439633650      0.742339730
H       -6.456979860     -0.577723390      0.091697210
C       -5.369625130     -1.959424740      1.489085990
C       -4.024313160     -1.418340230      1.556168800
C       -3.683719740     -0.221566400      0.910659620
H       -4.440384980      0.336470820      0.372209830
C       -2.383528190      0.261018250      0.921510160
H       -2.157547400      1.174713470      0.391211100
C       -1.360813590     -0.443833980      1.570230520
C       -1.690442230     -1.611056450      2.257249930
H       -0.930043910     -2.170781010      2.786032950
C       -2.996867210     -2.083981820      2.245471630
H       -3.210872270     -3.009495330      2.763771200
Co      -7.052224680     -1.486211420      2.684885560
N        0.000000000      0.000000000      1.437689860
C        1.032847090     -0.867305260      2.022728080
H        0.904503450     -1.889918880      1.651663080
H        2.009453510     -0.477465490      1.715145400
H        0.968698300     -0.858843360      3.117045950
C        0.276962860      1.398858650      1.684597090
H       -0.383067840      1.973450610      1.075095530
H        0.130267230      1.628697380      2.703437380
H        1.312470340      1.614695110      1.431943110
H        0.173180214     -0.242289455      0.317372124
C       -1.609870720     -1.700838380     -1.672289000
C       -0.901099230     -2.585846540     -0.877730360
C       -2.894397240     -2.048293920     -2.053688180
H        0.106590300     -2.353931110     -0.606877380
H       -3.465028490     -1.385971960     -2.654929830
C       -1.462697600     -3.754649390     -0.480999720
C       -3.454642760     -3.211257090     -1.637298260
H       -0.895861740     -4.430519570      0.112116320
H       -4.455000300     -3.449732570     -1.927483830
C       -2.745240330     -4.072753350     -0.847665540
H       -3.183434590     -4.989910390     -0.532556700
C       -1.020957890     -0.470036130     -2.039868730
O        0.000000000      0.000000000     -1.437689860
C       -1.566969070      0.351721070     -3.120348760
H       -2.411883670      0.938218420     -2.803109550
H       -0.843156050      1.059609950     -3.461500510
H       -1.877386480     -0.277981870     -3.922864340
$end

$rem
METHOD       TPSS
MEM_TOTAL    400000
JOBTYPE      opt
BASIS        def2-svp
XC_GRID      2	SG-2
SCF_CONVERGENCE 8
MAX_SCF_CYCLES 100
SOLVENT_METHOD   smd
DFT_D        D4
CDFT         true
CDFT_THRESH  8
NO_REORIENT  true
POINT_GROUP_SYMMETRY false
INTEGRAL_SYMMETRY    false
MOLDEN_FORMAT   TRUE
$end

$smx
solvent THF
$end

$opt
FIXED
1:39 XYZ
41:57 XYZ
ENDFIXED
$end

$cdft
-1.0
1 1 40
1.0
1 1 40 s
$end

first iteration shows frozen atoms moving:

----------------------------------------------------------------
             Standard Nuclear Orientation (Angstroms)
    I     Atom           X                Y                Z
 ----------------------------------------------------------------
    1      C      -8.0343820332     0.1930131042     3.2070242457
    2      H      -8.4593796632     0.8695480342     2.5515090657
    3      C      -6.7396493032     0.2244714242     3.6501035057
    4      H      -6.0166015032     0.9197091442     3.3878859857
...

Direct comparison of two coordinate outputs looks like an identical rigid body translation of all the non-moving atoms. by delta(x,y,z) = (0.00303, 0.00123, 0.0016) angstroms.

Not sure why Chemcraft indicated the RMSDs of the atoms were different, most likely an issue on the Chemcraft side or related to some internal definition. The coordinates of the frozen atoms still fluctuate slightly at every step.

I have not seen this before. Fixed atom constraints proceed by literally zeroing out components of the Cartesian gradient vector for the specified atoms, so one would assume the atoms wouldn’t move. It’s true that DFT quadrature grids are not strictly rotationally invariant but SG-2 is pretty good in that respect. On the other hand, C-DFT can sometimes be a bit more grid sensitive than normal DFT. If I have questions about C-DFT, I set XC_GRID = 000099000590 to get a EML(99,590) grid.

1 Like