There are several ways to do partial optimization (freeze coordinates) in Gaussian.
- One of them is to add “ModRedundant” to Opt or Geom keyword and to write
F1
F2
F3
...
after coordinate section. “F” here means freeze, and integer stands for atom number.
- Another one is to add “ReadOpt” to Opt keyword and to add
noatoms atoms=1-4
after Cartesians. This will exclude the first four atoms from optimization. BTW, you definitely should read the section about “ReadOptimize” option if you haven’t before.
- The third one is using a freeze-code. I came across this method in the post at ResearchGate portal. The idea is simple: you add 0 (or nothing) between an atom symbol and its coordinates if the position of the atom should be optimized, and -1 if you want to freeze it.
C 0 1.5841970000 -2.9056620000 0.0000300000
C -1 3.2294750000 0.7041530000 0.0001550000
The first atom in the example will be included in the optimization and the second will be frozen.
Just that simple!
And something more: if you restart your optimization from .chk file, freezing will be preserved. Enjoy!
P.S. Also check Dr. Barroso’s post on the topic.
This post was adopted and updated from my old blog.
Thanks for linking to my page!
Thank you but that’s not what I would like to do. I want to freeze one particular coordinate, i.e. a dihedral angle; say I want to keep D1 constant during optimization of this hydronium:
B1 0.97026220
B2 0.96964597
B3 0.96000000
A1 120.00000000
A2 120.00000000
D1 -179.37111574
Typing an F after the numerical value for D1 doesn’t do it; the variable still gets optimized (and changed)? Many thanks, Peter
I do not use z-matrices often, but as I understand from the Gaussian manual, you can just separate the variables you want to freeze with a blank line. I found an example here:
# RHF/STO-3G opt=z-mat
title : methanol
0 1
C
H 1 R1
H 1 R1 2 A1
H 1 R1 2 A1 3 D1
O 1 R2 2 A1 3 -D1
H 5 R3 1 A2 2 D2
R1 1.083
R2 1.44
A1 109.47122
D1 120.0
R3 0.96
A2 104.48
D2 180.0
R1, R2, A1 and D1 will be allowed to vary whereas R3, A2 and D2 won't be.
As the manual says, you can also separate the frozen variables by the following line:
Constants:
Hope this helps.