Geometry optimization fails due to changing comp. point group


As a testcase I am checking optimization of CH4 molecule with DFT and different basis sets.
Strangely, for def2-qz* bases the optimizatoin fails with the symmetry error. The code complains that the symmetry is changed. The end of output is

    Molecular point group: cs
    Full point group: Td
    Geometry (in Angstrom), charge = 0, multiplicity = 1:

    H             1    1.095343
    H             1    1.095343      2         TDA
    H             1    1.095343      2         TDA      3  120.000000
    H             1    1.095343      2         TDA      4  120.000000

    TDA       =  109.4712211043
Traceback (most recent call last):
  File "", line 12, in <module>
    e,wfn = psi4.optimize("PBE",molecule=geom, return_wfn="yes")
  File ".../psi4conda/lib/python2.7/site-packages/psi4/driver/", line 1098, in optimize
    (current_sym, initial_sym))
psi4.driver.p4util.exceptions.ValidationError: Point group changed! (cs <-- c2v) You should restart using the last geometry in the output, after carefully making sure all symmetry-dependent input, such as DOCC, is correct.

which seems perfectly correct to me, except the error and the fact that code thinks that best subgroup of Td is Cs.

How is this possible?
Other bases I tried are Ok.

psi4 1.2.1 (conda)

I am using python driver, the input is

    import psi4
    mol_string = """
         H 1 %f
         H 1 %f 2 TDA
         H 1 %f 2 TDA 3 120
         H 1 %f 2 TDA 4 120
    mol = lambda x: mol_string%(x,x,x,x)
    psi4.set_options({"BASIS": "def2-qzvppd", "scf_type": "df"})
    geom = psi4.geometry(mol(1.106))
    e,wfn = psi4.optimize("PBE",molecule=geom, return_wfn="yes")
    print("Total energy = %f"%e)
    dist_mat = wfn.molecule().distance_matrix().to_array()*psi4.constants.bohr2angstroms
    print("C-H distance = %f Angstrom"%(dist_mat[0,1]))


I cleaned up your post. You can enclose text in triple backticks (the ` character) so it appears formatted like code.

What do you mean by “other bases I tried”? Other basis sets?

In terms of why this is happening, my intuition is that somehow, the molecular symmetry elements aren’t aligned with the coordinate system. I can investigate more when I know what you mean by “other bases”.


Thank you for our reply. Yes, I mean other basis sets.
At least with STO-3G, cc-pvtz, 6-311pg_2df_2pd_, 6-311ppg_3df_3pd_, aug-cc-pvqz, def2-svp, def2-tzvp the code works as I expect.


Thanks for the bug report. I’ve added it to our list. Unfortunately, my initial diagnosis looks spot on. There’s some tiny noise in the computation causing the molecule to no longer be oriented along the symmetry axes. Without that orientation, which is crucial for the molecular point group determination but irrelevant for the full point group determination, our symmetry adaptation won’t be right.

I don’t know when we will have time to get this one solved, sadly.

Let me know if I can do anything else.


This is fixed in the developer version of Psi4. Once we have the next conda package, you can use the developer version to run this job without problems. The version you’re looking for will probably be a beta version on 1.3.

I’ll post here when it’s ready. I’m not sure when that will be.


It’s taken a while, but we have the developer version of Psi4 on conda!

Follow the instructions for Linux -> Conda -> Nightly here. If those work, mark a post here as closing the issue, so we know the problem is solved. If not, let us know what the new problem is.


nestoklon confirmed the issue is fixed, so I’m going to mark this topic as solved, as well.