NOTE that readopt WORKS in G09 rev. B and rev. D. It DOESN'T work in G09 rev. A.
readopt is a whole lot easier to use than popt.
Original post:
For various reasons I want to be able to freeze some atoms while including other in my optimisation using gaussion 09. Readopt (http://www.gaussian.com/g_tech/g_ur/k_opt.htm) sounded like a good idea.
The problem
I can't get this to work:
%nprocshared=6
%Chk=reduced_solvate.chk
#P ub3lyp/lanl2dz 6D 10F opt=ReadOptimize Punch=(MO) Pop=()
reduced_solvate
3 2 ! charge and multiplicity
Cr 10.0000 10.0000 10.1100
O 10.0000 10.0000 12.1300
H 10.0000 10.8000 12.7000
H 10.0000 9.20000 12.7000
O 10.0000 7.84000 10.0000
H 10.0000 7.15000 10.6900
[..]
H 6.32536 3.63314 12.3506
H 8.48233 15.9732 5.80567
noatoms atoms=1-19
readopt and rdopt don't work either -- they all give 'syntax error' (C64 flashback!)
QPErr --- A syntax error was detected in the input line.
#P ub3lyp/lanl2dz 6D 10F ReadOptimize Pu
'
Last state="GCL"
The solution:
I didn't come up with this: http://ccl.net/cgi-bin/ccl/message-new?2012+04+24+002+raw
Anyway, you can use popt but it takes a bit more preparation of the coordinates.
You can convert an .xyz file quickly by using:
cat molecule.xyz | gawk '{print $1,"-1",$2,$3,$4}'>popt_molecule.xyz
Change 0 to -1 for the atoms you want to optimise.
%nprocshared=6
%Chk=popt_solvate.chk
#Popt ub3lyp/lanl2dz 6D 10F Punch=(MO) scf=(maxcycle=1024)
reduced_solvate popt
3 2 ! charge and multiplicity
Cr 0 10.0000 10.0000 10.1100
O 0 10.0000 10.0000 12.1300
H 0 10.0000 10.8000 12.7000
H 0 10.0000 9.20000 12.7000
O 0 10.0000 7.84000 10.0000
H 0 10.0000 7.15000 10.6900
[..]
H -1 3.62686 7.14993 12.8142
H -1 5.12696 15.5239 9.01700
H -1 6.32536 3.63314 12.3506
H -1 8.48233 15.9732 5.80567