Sometimes you just need to optimize some fragment or moiety of your molecule for a number of reasons -whether because of its size, your current interest, or to skew the progress of a previous optimization- or maybe you want just some kind of atoms to have their positions optimized. I usually optimize hydrogen atoms when working with crystallographic files but that for some reason I want to preserve the rest of the molecule as refined, in order to keep it under a crystalline field of sorts.
Asking Gaussian to optimize some of the atoms in your molecule requires you to make a list albeit the logic behind it is not quite straightforward to me. This list is invoked by the ReadOptimize keyword in the route section and it includes all atoms by default, you can then further tell G09 which atoms are to be included or excluded from the optimization.
So, for example you want to optimize all atoms EXCEPT hydrogens, then your input should bear the ReadOptimize keyword in the route section and then, at the end of the molecule specification, the following line:
If you wish to selectively add some atoms to the list while excluding others, here’s an example:
atoms=C H S notatoms=5-8
This list adds, and therefore optimizes, all carbon, hydrogen and sulfur atoms, except atoms 5, 6, 7 and 8, should they be any of the previous elements in the C H S list.
The way I selectively optimize hydrogen atoms is by erasing all atoms from the list -using the noatoms instruction- and then selecting which are to be included in the list -with atoms=H-, but I haven’t tried it with only selecting hydrogen atoms from the start, as in atoms=H
I probably get very confused because I learned to do this with the now obsolete ReadFreeze keyword; now it sometimes may seem to me like I’m using double negatives or something – please do not optimize all atoms except if they are hydrogen atoms. You can include numbers, ranks or symbols in this list as a final line of your input file.
Common errors (by common I mean I’ve got them):
Lets look at the end of an input I just was working with:
> AtmSel: Line=”P 0″
> Maximum list size exceeded in AddBin.
> Error termination via Lnk1e in…
AtmSel is the routine which reads the atoms list and I was using a pseudopotential on phosphorous atoms, I placed the atoms list at the end of the file but it should be placed right after the coordinates and the connectivity matrix, should there be one, and thus before any external basis set or pseudopotential or any other specification to be read by Gaussian.
As a sort of test you can use the instruction:
%kjob l103 %chk=myfile.chk ...
at the Link0 section (where your checkpoint is defined). This will kill the job after the link 103 is finished, thus you will only get a list of what parameters were frozen and which were active. Then, if things look ok, you can run the job without the %kjob l103 instruction and get it done.
As usual I hope this helps. Thanks for reading except to those who didn’t read it except for the parts they did read.
Hi Ph.D. Joaquin Barroso
while I research about using popt=Z=matrix keyword in Gaussian, I receive a message on my email contains this topic. That is ok, but I have a system of N2 on MgO surface and want to calculate energy at a one particular distance between CM of N2 and Mg atom. all atoms are fixed by putting a letter f in front of values of bonds and angles in input file, here, should I use a popt keyword in route section?
The calculated energy with using popt was different without one. Why?
any notes will be greatness for me.
thanks in advance
Is just optimizing the hydrogen atoms usually better practice when I am comparing energy values from optimizations of similar compounds (say, same ligand but the transition metal is different)? Also, do you optimize portions of the crystal that may have had disorder or parts you may have added to the molecule (i.e. moieties not in the crystal).
Thanks so much!
I am relatively new to gaussian and your blogs help me alot.
Sir, I am performing partial optimization using gassview v5. After placing my molecules (2 water molecule and one chlorine atom) I opened redundant coordinates from edit menu. And there I added my molecule which I want to freeze ( both oxygen atom). For this I selected to freeze Cartesian ordinates of both oxygen atom.
But after this when I am optimizing the geometries, oxygen atom forms bond with the chlorine atom (which I don’t want) . I just want to check the behaviour of two water molecules if chlorine is present .
Kindly help me. Thanks for your patience.
I was trying the same example but I’m getting error ” “WANTED AN INTEGER AS INPUT. FOUND A STRING AS INPUT. noatoms atoms=2-5″” . So I changed 2-5 to 2 even after that I am getting ther error. I also tried using ModRedudant but still the same result . I am using gaussian 09. I have also use the the same with and without checkpoint. Also, I have tried using “atom” and “atoms”. But every time error is same.
As usual, this blog is fantastic!
I just did a partial optimisation (relaxation) of H atoms for a distortion-interaction analysis.
The opt=readopt keyword worked well with the final line noatoms atoms=n,m; this being done in Gaussian16 Rev.C1
Hi Joaquin. Thank you very much for this entry. I’m working with an ice cluster, and I’m only interested in one face. That’s the face I initially optimized while keeping the rest of the atoms frozen using this option. Now I want to perform the corresponding freq calculation to be sure of the minimum. Does this option work too with respect to freq calculations?, or do I have to extract the face or portion of my cluster to perform the freq calc. Thanks!