Help Understanding ValidationError

Hello all,

I’m running PSI4 (1.4rc3.dev1) as a Python module and I’m performing geometry optimization on a list of about 100 molecules. However, about halfway through the list, I keep getting a geometry related ValidationError.

Attached below are screenshots of the error message I’m getting and the final geometry that was displayed in the output file.

What exactly is causing this error and how can I prevent it ?

Thanks in advance.

I assume that you’re not familiar with point groups. I’ll give a condensed background of that before applying it to your particular molecule.

A given molecular geometry possesses a set of symmetry operations: for example, formaldehyde is in a plane, and you can reflect it along the plane. Based on the symmetry operations of a particular geometry, we say the molecular geometry has a point group.

You can ask “what do these symmetry operation do to an orbital”? The result is that you can split up your orbitals into new orbitals so that the symmetry group acts on them with one of a finite number of patterns. For example, the original geometry you used has only the reflection-plane symmetry, so there are only two patterns: reflection causes the orbital to be + itself or - itself. Based on the pattern, we say the orbital belongs to a particular irreducible representation.

This is useful for two reasons. First, it gives a way to say an integral will be zero before actually doing the integral via the “vanishing integral rule”. Second, it gives us a way to specify orbital occupation: there are so-many orbitals belonging to this irreducible representation, so-many belonging to that, and so forth. This is especially useful if you are a spectroscopist.

Therefore, when Psi does a computation, its default behavior is to exploit point group symmetry as much as it can.

Now, like I said at the start, the point group/set-of-available-symmetries depends on the molecular geometry. In your computation, the point group changes. If you look at your starting geometry, it’s not symmetric to 180 degree rotation along the C=O bond, like it should be. During the course of your optimization, you get to a geometry which does have that symmetry.* Because of that, there isn’t a good way to automatically use the new symmetry without breaking user expectations.

So you have two options:

  1. Prevent Psi from using any symmetry whatsoever by including symmetry c1 in your geometry specification. This will make formaldehyde run slower, but if you’re doing a database of organic molecules, most of them won’t possess any symmetry, so you likely won’t notice the speed difference.
  2. Restart the optimization from a geometry with the full symmetry of formaldehyde, like the one that the optimizer gives you just before the error.

* = The new symmetry is called C2v and has four patterns where the old one has two. Each pattern asks: does the orbital take a + or - sign upon reflecting through the plane of the molecule? what about upon rotating 180 degrees along the C=O bond? Where you can work with the H 1s orbitals to answer the first question, to answer the second question, you need to take combinations of the two H 1s orbitals. You can add them to each other or subtract them from each other, almost like a bonding and antibonding combination.

1 Like

Thanks so much for your thorough explanation!

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.