CASSCF Notes
Note for using CASSCF methods.
General Workflow
- Decide a input initial orbital (MO or UNO or GVB orbital)
- Select a active space base on the fractional occupancy of the initial orbital (The active space is inital orbital depended)
- Do CASSCF:
- Take active space and inital guess orbitals
- optimize casscf orbital (canonical)
- result in Natural Orbital
- Analyze and rationalize the fractional occupancy of the corresponding orbital
Active Space Selection
UNO-CAS method
calculate natural orbitals with UHF and natural orbitals with fractional occupancy (e.g., between 0.02 and 1.98) constitute the active space.
GVB method
Use GVB orbital’s occupation to determine the active space and serve as initial guess, which converge faster. especially for metal systems. In most cases it gives smaller active space and results in lower energy.
The GVB orbital can be constituted by pairing UNO
Software Practice
GAUSSIAN
http://sobereva.com/264
https://cloud.tencent.com/developer/article/1690190
DETERMINE Active Space (UNO)
- #P UHF/BasisSet guess=mix
- #P HF/BasisSet guess=(naturalorbitals,read,save,only)
CASSCF
sometimes need to use guess=alter and indexes at the end of the file to indicate the correct orbital.
- #p cas(6,6)/BS guess=(read,alter) geom=allcheck
…
19,17 - energy is found after
EIGENVALUE
. (Containing solvation if SMD applied)
MOKIT
https://gitlab.com/jxzou/mokit/-/blob/master/doc/MOKIT_manual.pdf
GVB CAS method:
https://pubs.acs.org/doi/10.1021/acs.jpca.0c05216
The automr module autometicaly determining the workflow and the active space based on the input gjf file.
See syntax of gjfs for automr in the manual.automr in.gjf > out.out
- workflow: UHF(UNO) -> GVB -> CASSCF
- Need to install pyscf and gamess
- Need to modify GAMESS (see Manual 4.4.9)
- if use ist != 0 than fchk is needed.
Environment Settings Runing on Hoffman2
sub.cmd >folded > # >>> conda initialize >>>
> # !! Contents within this block are managed by 'conda init' !!
> __conda_setup="$('/u/home/s/shaoqz/project-houk/bin/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
> if [ $? -eq 0 ]; then
> eval "$__conda_setup"
> else
> if [ -f "/u/home/s/shaoqz/project-houk/bin/anaconda3/etc/profile.d/conda.sh" ]; then
> . "/u/home/s/shaoqz/project-houk/bin/anaconda3/etc/profile.d/conda.sh"
> else
> export PATH="/u/home/s/shaoqz/project-houk/bin/anaconda3/bin:$PATH"
> fi
> fi
> unset __conda_setup
> # <<< conda initialize <<<
> # load gaussian
> . /u/local/Modules/default/init/modules.sh
> module load gaussian/g16_sse4
> export GAUSS_SCRDIR=$TMPDIR
> export GAUSS_EXEDIR=$g16root/g16/bsd:$g16root/g16 #need to redirect the EXEDIR
> module li
> # load mokit
> export MOKIT_ROOT=/u/home/s/shaoqz/project-houk/bin/mokit
> export PATH=$MOKIT_ROOT/bin:$PATH
> export PYTHONPATH=$MOKIT_ROOT/lib:$PYTHONPATH
> # load gamess
> export PATH=$PATH:/u/project/houk/shaoqz/bin/gamess
> export GMS=/u/project/houk/shaoqz/bin/gamess
>
Analysis
Compare different initial orbital and active space
SCF energy can only be compared when active space is in the same size. Low energy means better solution.
e.g.: UNO-CAS(5,5) vs GVB-CAS(1,1) is invalid. Even though CAS are determined to be so by UNO and GVB.
Based on natural orbitals
Most CASSCF results are presented by NO and their fractional occupancy. Most analysis do wavefunction analysis base on these NO. (like a better wavefunction)
e.g.: Radical coupling: The occupancy of the bonding and antibonding orbital shows the weight of diradical.
Based on CASSCF orbitals
Determine configuration coefficients (ratio)
do population analysis for each configuration (understand its chemical meaning)
Problem: chemical meaning of configurations are often ambiguous. Most software do not export casscf orbitals.
Software support:
- cidump module with pyscf: https://github.com/hebrewsnabla/pyscf_addon/blob/main/cidump.py
- Gaussian output: Only provide the combination coefficient of the slater determinant. Hard to build a specific configuration.
You can always converge with pyscf first and provide to orca or gaussian.
Misc
CASSCF vs UCASSCF
Most CASSCF practice use one set of orbital and fractional occupation of the orbital. (like UNO-CAS and GVB-CAS) Only pyscf support UCASSCF treating alpha and beta orbital, but just for develop use.
Radical systems are oftwn treat with UNO method or UNO-GVB method to make the CASSCF initial orbital. And result in natural orbital.