PC GAMESS/Firefly NTO generation

CASSCF calculations of excited states benefit from the use of Natural 
Transition orbitals. In particular, SA-CASSCF requires state-averaged NTOs. 
They can be generated from a CIS calculation by the following procedure.

How to construct state-averaged Natural Transition Orbitals from CIS calculation

1. Run the calculation with the header as in sample_cisnos.inp

2. Cut $VEC and $CISVEC groups from the resulting *.dat file 
  (these groups are consecutive, so it is easier to remove $DATA 
  group from *.dat to leave only $VEC and $CISVEC). Concatenate 
  these to the end of the *.inp file

3. In the *.inp file uncomment runtyp=prop, 
   $GUESS GUESS=moread norb= $END, 
   $GUESS ASIS=.t. $END, 
   $CISPRP=.t. istate=- RDCISV=.t., 
   $CISPRP istate=- $END 

4. Run this file, it takes a couple of minutes (just to read the input 
   and write the output). The *.dat file now contains $VEC group 
   preceded by a string CIS NATURAL ORBITALS without specified state. 
   This means that the orbitals are averaged over the specified number of states.

5. Remove old $VEC+$CISVEC from the *.inp file and concatenate the 
   new $VEC. These are the target CIS-averaged NTOs, and we are going 
   to visualize them.

6. In the *.inp file replace cityp=cis by cityp=none or just comment cityp=cis, 
   uncomment $guess prtmo=.t. $end

7. Run again (it takes a couple of minutes) and open the output with Chemcraft. 
   Don't look at the "orbital energies", because they are nonsense. 
   You need the frontier orbitals: If you like their shape, use them for 
   further CASSCF calculation. If not, go to step 1, change the number of 
   states to average and run again.


!  runtyp=prop
 fstint=.t. gencon=.t. d5=.t. $END
 $smp load=0 call64=.t. $end
 $p2p p2p=.t. dlb=.t. mixed=.t. $end
 $trans mptran=2 dirtrf=.t. aoints=dist altpar=.t. mode=112 $end
 $SCF DIRSCF=.TRUE. nconv=6 $END
! $GUESS GUESS=moread norb= $END
! $guess prtmo=.t. $end
! $guess asis=.t. $end
 $CIS NSTATE= mult=1 NDAVIT=100 
! Minus sing in ISTATE here means averaging over ISTATE states
!  cisprp=.t. ISTATE=- RDCISV=.t.
! $cisprp ISTATE=- $end 

Last updated: September 29, 2020