Hi,
I am trying to optimize a molecular geometry with a frozen dihedral angle, followed by a single point calculation with a different basis set.
I am having issues with SCF iterations not converging even with 500 iterations (version 1.4rc1). Arguably, this is supposed to be the least stable dihedral angle, but I would still expect to see convergence after so many steps.
I am new to Psi4, so any suggestions on how to speed up convergence without sacrificing the accuracy of the optimized geometry would be greatly appreciated. (Any tips on code structure and best practices are also welcomed!)
########################################
# psi4 geom opt (dih frozen) + single point
memory 16gb
output = "dya_dihopt_90.xyz"
molecule mol {
-1 1
C -1.3937896155 3.0966558410 1.0276271778
H -0.6225352571 3.8705799378 0.8263085072
H -1.8801137017 3.2978861067 2.0055499873
H -2.1426632555 3.0918251396 0.2075645621
C -0.6938262919 1.7401286650 1.0808824724
O 0.1821548150 1.6333594441 1.9581167193
N -1.0165443331 0.7341617072 0.2260347984
H -1.9851216571 0.7540146759 -0.1083681735
C -0.2494082570 -0.3254379510 -0.2755146060
C -1.0580106470 -1.5029721819 -0.8149577632
O -2.1397549006 -1.3464712522 -1.3432879903
N -0.3949707029 -2.6928664602 -0.5650024689
H 0.5712592690 -2.5348089921 -0.2837334513
C -0.6969797407 -4.1470025556 -0.5913067815
H -1.0286276045 -4.7361158680 -1.4729394712
H -1.4754883079 -4.4450581300 0.1013927874
H 0.1337606939 -4.7722873491 -0.2853089633
C 2.0468536756 0.8611324541 -0.2755146060
O 2.3669874959 1.2955173579 -1.4104679013
O 2.4230684526 1.3457961933 0.8493379139
C 1.1257917430 -0.3254379510 -0.2755146060
H 1.6321481209 -1.2893323943 -0.2755146060
}
# Fixing dihedral term
dihedral_string = "9 21 18 20"
set optking {
frozen_dihedral = $dihedral_string
}
########################################
# Geometry Optimization
basis {
assign 6-31+G*
}
set {
scf_type df
g_convergence gau
geom_maxiter 500
maxiter 500
# if convergence is an issue,
# uncomment the next 2 lines:
soscf true
soscf_max_iter 35
}
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))