How to properly do a CASSCF calculation?

Dear developers and Psi4 users,

I am an experience user of CASSCF in both Molcas and Molpro, but I am totally new with Psi4. I have two general questions:

  • How to specify an active orbital? In Molcas or Molpro, it is possible to rotate orbitals to obtain a desired active space. I didn’t find anything similar in Psi4.
  • How to save and restart a CASSCFcalculation (for example checkpoint fine or Molden file?)? CASSCF is not black box and restart functionality (and rotate orbitals) is essential.

Kind regards.
Thomas

Hi Thomas,
The current CASSCF code is not fully fleshed out in terms of functionality. There is a large update coming in the next month or so that will add most of what you are looking for in addition to augmented Hessian and quadratically convergent updates.

The CI page covers space specification here. Where you can build up your active space my selecting frozen/restricted doubly occupied, active, ect. See tests/casscf-sp/ as well.

You can export to a molden file using examples from this page.

If I understand it correctly you want the ability to read in orbitals from a molden file?

Hello,

Thank you for your answer. Probably I will wait for the next large update.

Hey Daniel,

When you are making new updates to CASSCF, could you enhance the printing for CASSCF? I think by default, we should print orbital energies, occupations, and CI coeffcients. When running CASSCF calculations, all of these features are essential to make sure the calculation actually “worked”. Please take this in consideration when making the updates.

Kevin Hannon

What do you mean by MCSCF orbital energies? Also, the CI coefficients are printed, is there something wrong with the current printing?

No, CI coefficients printing is fine.

I was just saying what are some things that should be printed once a CASSCF calculation is finished. I was thinking we should have a SCF style printing for the orbital energies. Not sure how you can get this from CASSCF (maybe diagonalize IF + AF or just IF). There is probably some leeway in defining MCSCF orbital energies.

I’ve already added some natural orbital printing, so if you want the code for that, I can send it too you. I borrowed the same printing style for SCF orbital energies to display the NOS and their corresponding symmetry.

Probably has to be AF + IF at the very least. You miss a lot of important TPDM information though.

I’ll look into it.

Hmm, I’m not sure if I buy the utility of MCSCF “orbital energies.” Yes, you could diagonalize various types of effective Fock matrices, but I would worry the average user would read more into these than they actually convey.

We certainly could think about printing NO occupations by default, since it’s trivial to build the active space OPDM.

Oh, to the original point of this thread, I agree with the idea that it would be nice to (1) be able to rotate orbitals in a Wavefunction object (this is occasionally useful for power users who know what they’re doing… be able to, say, swap columns 5 and 6 of the C matrix, etc.), and (2) pass in arbitrary orbitals (from whatever source) into an MCSCF as guess orbitals, including orbitals saved to some external checkpoint file.