FIXED_DIHEDRAL is not a valid option

Hi all,

I could not find a similar error so I am opened one. I am trying to run a geometry optimization with a fixed dihedral, followed by a single point energy calculation. I have a fresh install of psi4 (v1.7+6ce35a5 + python 3.8, both via conda). However, when I run the following line:

psi4 -i input.in -o output.out -n 8 --memory 16gb

I get the following error:

Error: option FIXED_DIHEDRAL is not contained in the list of available options.

My input file looks like this:

########################################
# psi4 geom opt (dih frozen) + single point

memory 16gb

output = "psi4_etha_0.xyz"

molecule mol {
0 1
C      1.0433548252     0.0312125123    -0.0005155246
H     -0.0498067967    -0.1685358705    -0.0007656358
H      1.4866314077    -0.4439239186    -0.9019882542
H      1.4864366042    -0.4451190006     0.9004229503
C      1.3142277048     1.5391153386     0.0005151539
H      0.3589310913     2.1068379644     0.0007896234
H      1.8953679886     1.8314628011    -0.9004357710
H      1.8951737650     1.8302655349     0.9019777986
}

# Fixing dihedral term
dihedral_string = "2 1 5 6  0"

set optking {
  fixed_dihedral = $dihedral_string
}
########################################
# Geometry Optimization

basis {
  assign 6-31+G*
}

set {
  guess sad
  scf_type df
  g_convergence gau_tight
}

psi4.optimize("mp2")

mol.save_xyz_file(output, False)

########################################
# Single-point energy calculation
basis {

  assign O aug-cc-pVQZ
  assign N aug-cc-pVQZ
  assign H aug-cc-pVQZ
  assign C aug-cc-pVQZ
  assign P aug-cc-pVQZ
  assign S aug-cc-pVQZ

}

set guess sad
set scf_type df

e = energy("mp2")
econv = e * psi_hartree2kcalmol
psi4.print_out("E [kcal/mol]: %10.6f\n" % (econv))

I mostly use Gaussian so I am a bit new to Psi4. Any inputs or corrections would be greatly appreciated.
Thanks!

This keyword was changed. Try ranged_dihedral.

Thanks @jmisiewicz . It worked perfectly.

Just for reference, my dihedral setup is now:

# Fixing dihedral term
dihedral_string = "2 1 5 6   0 0"

set optking {
  ranged_dihedral = $dihedral_string
}

Is it ok to set upper and lower bounds to the same value?

Routing you to @AlexanderH, but if it seems to be working, then it’s probably working.

Thanks @jmisiewicz . Just to update this thread, I was having some issues with convergence for some dihedral values, even though I was starting with the torsion at the desired angle. In that case, I opted to just use “frozen_dihedral” instead, which resulted in much more stable calculations.

For reference, the modified section looked like:

# Fixing dihedral term
dihedral_string = "2  1  5  6"

set optking {
  frozen_dihedral  = $dihedral_string
}

Very good. Yes, “frozen_” designates that the initial value will never change and is a cleaner algorithm. If you can build a structure that has the value you want, then use it.

The “fixed_” was recently subsumed into “ranged_” as @jmisiewicz said, but @AlexanderH could say better how much this has been tested - but that’s necessarily a more complex and less robust process.