Alex and I have had a conversation by email about Hessian calculations using state averaged CASSCF while making use of symmetry. Alex asked if I could post the conversation on the forum, upon that others might benefit from it. The conversation started with me reporting something which I believed to be a bug:
I believe I have found a bug in Firefly v7.1.G. Currently, Iím investigating the excited states of a molecule that has C2 symmetry, by means of CASSCF. The MCSCF part of my input file looks like this:
$MCSCF CISTEP=ALDET MAXIT=400 ISTATE=1 NTRACK=3 $END $DET GROUP=C2 ISTSYM=1 NCORE=45 NACT=10 NELS=10 NSTATE=10 ITERMX=400 WSTATE(1)=1,1,1 ISPIN=0 NSTGSS=70 $END
When I use these settings for a geometry optimization, all is fine. I can even do a vibrational analysis at the end of the optimization using the $STATPT HSSEND =.T. keyword. However, when I try to do the vibrational analysis separately by means of $CONTRL RUNTYP=HESSIAN, the symmetry group ($DET GROUP=C2) is ignored and assumed to be of the C1 type. From the output file:
-------------------------------------------------- AMES LABORATORY DETERMINANTAL FULL CI PROGRAM WRITTEN BY JOE IVANIC AND KLAUS RUEDENBERG -------------------------------------------------- THE POINT GROUP = C1 THE STATE SYMMETRY = A
It makes no sense that separate vibrational analysis canít make use of the C2 symmetry while a vibrational analysis following a geometry optimization can, unless Iím missing something of course. Could you please comment on my findings?
Thank you in advance.
This is not a bug at all. As Hessian is calculated semi-numerically, the displaced geometries are not symmetric. Thus, the symmetry is turned off at this stage. The same is true for hssend part of calculations, however, one just does not get the detailed printout during this stage. †
Note, as symmetry is turned off during hessian calculation, you should be careful to ensure that the averaging is over the same roots as during geometry optimization (which does use symmetry), and the target state is the same.In general, I would not recommend to use hssend=.t. for MCSCF/CI runs with symmetry, but rather to split job into two
parts - optimization and hessian. While calculating hessian, one should check the ordering of states in C1 group and in some cases change wstate array or even istate accordingly.
Hope this helps.
This is a big help, as it might explain why Iíve been having problems with HSSEND=.T. during symmetry-enabled MCSCF runs (optimization goes fine, but the subsequent Hessian calculation shows problematic SCF convergence). I will refrain from using HSSEND (as well as $STATPT HESS=CALC) in future calculations and split the jobs as you suggested.
It does leave me with a question however. You say that during a semi-numerical Hessian calculation, the displaced geometries are not symmetric, and symmetry should be disabled. Does this mean that I should merely set $DET GROUP=C1, or do I also have to change the point group in $DATA from CN 2 to C1? Iím assuming the former, as Hessian calculations on this molecule with DFT using the CN 2 point group always went fine.
Thank you very much for your help.
Actually, you do not need to do anything special, as symmetry will be automatically disabled by the relevant parts of the code. However, if you specify symmetry, it still will be used to displace only symmetry unique atoms, while if you completely disable it, all atoms will be displaced and hence, this is computationally less efficient.
I hope this will be of help to anyone doing similar calculations.