But I find that natural orbitals are not copied from cas_wfn into scf_wfn. How to make a successful copy?
Or, is there any more elegant way to achieve this?
Thank you very much.
Thanks for your quick response. Yes, this was valid in PSI4 1.3.2, and I did not need to copy orbitals since fchk() can be used for detci at that time.
What I want is the CASSCF natural orbitals to be written in Alpha MO coefficients in a .fch(k) file. I donβt need the occupation numbers and CASSCF density.
You say, βI find that natural orbitals are not copied from cas_wfn into scf_wfn.β They should be copied. How do you know this? Do you know this by looking at the FCHK file, or by looking at the cas_wfn object?
I know this by visualizing orbitals in FCHK file. I find that the orbitals in newly generated .fch file are the same as the CASSCF initial orbitals I provided (initial orbitals are read in and stored in scf_wfn.Ca). An example is attached:
00-h2o_cc-pVDZ_1.5_uhf_gvb4_CASSCF.inp is just the PSI4 input file. 00-h2o_cc-pVDZ_1.5_uhf_gvb4_CASSCF.out is the output. 00-h2o_cc-pVDZ_1.5_uhf_uno_asrot2gvb4_s.A file contains the CASSCF initial orbitals. 00-h2o_cc-pVDZ_1.5_uhf_uno_asrot2gvb4_s.fch is the original .fch file which holds CASSCF initial orbitals. The *.A file is actually generated via fch2psi 00-h2o_cc-pVDZ_1.5_uhf_uno_asrot2gvb4_s.fch.
After running this example, a file named 00-h2o_cc-pVDZ_1.5_uhf_gvb4_CASSCF_NO.fch will be generated. I find that orbitals in this newly generated .fch file are the same as those orbitals in original .fch file. I know this is not normal or correct because I can use other quantum chemistry packages to produce correct CASSCF natural orbitals. Besides, one can utilize his/her chemical intuition that CASSCF natural orbitals are delocalized (but my provided initial orbitals are localized).
Thanks for your patience.
h2o_cc-pVDZ_1.5.zip.dat (24.2 KB)
(You need to remove the suffix .dat and then unzip the compressed package.)
I see the problem. When you write scf_wfn.Ca = cas_scf.Ca, you are not changing the orbitals. You are changing the function that Psi uses on the Python-side to determine what the orbitals are. To actually change the orbitals, try scf_wfn.Ca().copy(cas_wfn.Ca()). That gives me much more reasonable results when I try it. This is why it is so important to include input files!
Iβll make an issue about improving FCHK support for FCI. The underlying problem is some inconsistency across various Psi methods, which is something Iβm dealing with, but itβs slow-going.