# Is there a free package with robust CASSCF functionality?

Among free software packages, which one has robust CASSCF functionality? The FCI solver can be implemented in either way, e.g., direct solver, DMRG, etc.

• How do you define "free"? As in free coffee or free speech or both? If we are talking about latter, then ORCA may not the choice because it is not open source. – Y. Zhai May 7 '20 at 7:59
• GAMESS can do some pretty decent MCSCF (example input). I don't have time to answer properly, so if anyone wants to extend on that, be my guest. – Martin - マーチン May 7 '20 at 10:07

## OpenMOLCAS

I'm surprised that the other two answers were given without yet any mention of OpenMOLCAS yet!
There is a recent paper[1] about it for which I happen to be one of the many co-authors.

MOLCAS has the quality of a commercial software like MOLPRO, since it was a commercial software that people paid big money for since the 1980s, but recently an open source branch called OpenMOLCAS was made freely available.

Furthermore, (Open)MOLCAS is the only program with CAS in its name, suggesting that it caters well to CASSCF calculations. Indeed, it originated in the 1980s in the group of Björn Roos, and Roos in fact described the CASSCF method in the year 1980 and later in the same decade developed the CASPT2 method.

CASSCF, RASSCF, and GASSCF are all implemented well in OpenMOLCAS, as it is used mainly by people who specialize in active-space calculations.

References

• A developer of openmolcas told me that they can use Docker containers. So this might be an easy solution to get started on your own cluster. – Cody Aldaz May 5 '20 at 23:08
• It seems like you need the magic CLI command (thanks to S.V.): \$docker run -v$PWD:/home/ steabert/openmolcas /home/molcas.input – Alessio Valentini Jun 11 '20 at 19:45
• @AlessioValentini Welcome to the site! We are only 1 month old, so this is the best time to join us! I should have actually advertised on the MOLCAS facebook group earlier. – Nike Dattani Jun 11 '20 at 19:48
• There is also AutoCAS as a tool for OpenMOLCAS that help with the selection of the active space. – Kexanone Mar 13 at 18:58

## ORCA

ORCA (forum). It is fully featured, efficient, and free for academics. The input is straightforward:

# CASSCF(2,4) example from the manual,
# section 8.1.7.2, page 108

! TZVPP TightSCF

%casscf
nel 2
norb 4
end

* xyz 0 1
Be 0 0 0
*


Some resources for CASSCF:

## PySCF

Personally I would use pyscf, its not the most efficient or user friendly but it's free.

• The active space solver in PySCF can also be easily customized: instead of string-based CI, one can use DMRG, coupled-cluster, etc. – Susi Lehtola May 17 '20 at 18:07
• PySCF is surprisingly efficient in my experience... Depends what you're comparing to, I guess. One of the main aspects is it supports general contractions, so it's blazing fast for heavier elements compared to codes that don't... – Susi Lehtola May 17 '20 at 18:08

## NWChem

NWChem is a commonly use quantum chemistry software package with CASSCF included.

NWChem is free, as in both free coffee and free speech. It is under ECL-2.0.

It is written in FORTRAN (in case you want to do some development).

## BAGEL

The code is available through GitHub[1] and has been described in WIRES.[2]

The main advantages of BAGEL is that it has better memory and parallelization than MOLPRO. For example, MOLPRO (not Free) is restricted to 32 active orbitals. While not a problem for CASSCF, this will severely affect your ability to do CASPT2 calculations. (they have fixed this problem in 2012 and it requires the use of rs2c keyword)

I should warn, however, that the developers specifically say

BAGEL is intended for use in parallel environments with a large amount
of distributed memory (e.g., hence there is no disk interface). We are NOT going to optimize BAGEL for a stand-alone workstation.

This is good news if you are working on a cluster since that means your calculation will run faster, but is bad news if you're working on a smaller scale.

References

1. Project on GitHub: https://github.com/nubakery/bagel
2. Shiozaki, T. BAGEL: Brilliantly Advanced General Electronic‐structure Library. WIREs Comput. Mol. Sci. 2018, 8 (1). DOI: 10.1002/wcms.1331.
• +1. I wonder though, what is meant by "While not a problem for CASSCF, this will severely affect your ability to do CASPT2 calculations" ? What is severely affected in MOLPRO here? It is certainly possible to include hundreds of orbitals in a MOLPRO caspt2 calculation as long as the active space has no more than 32 orbitals. Also, I wonder if you could elaborate a bit on how BAGEL is better for memory and parallelization? Does BAGEL really require less RAM, or is it just the fact that it's been tested for a larger number of distributed nodes than MOLPRO has? – Nike Dattani May 9 '20 at 22:33
• Finally, I didn't know about BAGEL's ability for non-adiabatic couplings: for this, what exactly is it that BAGEL can do? – Nike Dattani May 9 '20 at 22:33
• a 32 orbital active space is too computationally demanding in general, so it's never an issue. However, when doing the correlated CASPT2 calculation MOLPRO considers closed orbitals "active" as a perturbation not just the "active space". So it crashes if there is more than 32 "active" orbitals. It's quite confusing. I'm 99% sure this is not a problem in BAGEL because it's not written using the same outdated coding/memory practices. – Cody Aldaz May 9 '20 at 23:08
• There is no limit on the number of closed orbitals in the rs2c and mrcic programs in MOLPRO 2012 and later (see the answer by Shamasundar here: molpro.net/pipermail/molpro-user/2017-June/006959.html). I wouldn't say that this is due to outdated coding/memory practices not used in BAGEL though. In my experience, MOLPRO is about as efficient as it can get for most routines including integrals, HF, coupled cluster, and CASSCF/CASPT2. That thread I sent you says a bit about why they chose to use 32 as the cut-off for the older routines: it just seems to be a choice they felt was right. – Nike Dattani May 9 '20 at 23:30
• I see, one needs to use the RS2C and MRCIC, keywords – Cody Aldaz May 14 '20 at 15:25

## Columbus

Columbus is an alternative package for CASSCF and other multireference methods. There is a free and open-source distribution. It is a bit old fashioned but still widely used.