5
$\begingroup$

I am working on a C++ project that entails reading FCIDUMP files and feeding it into some post-HF calculation. For practical reasons, it is more preferable to stick with the native FCIDUMP format of MolPro, which is that for any listed $[ij\vert kl]$, $i\geq j$, $k\geq l$, and $i\geq k$. As far as my understanding goes, this format allows one to expand the symmetric terms without worrying about clashing with other listed terms. That is, any symmetric term associated with $[ij\vert kl]$ (e.g. $[kl\vert ij]$) is guaranteed to be different from any other term $[i'j'\vert k'l']$ in the list. However, since I have no access for MolPro for now, I can only resort to open source software such as PySCF and Psi4 by calling their FCIDUMP modules(pyscf.tools.fcidump.from_scf() for example). But it appears that PySCF's (and Psi4's) FCIDUMP format is not the same MolPro: it only ensures $i\geq j$ and $k\geq l$. My questions is, is it possible to make PySCF's FCIDUMP output adhere to the native MolPro format? For sure, one can write a script to make things look the same at the end of the day, but I just want to save the hassle. S

As Dr. Dattani suggests, I shall demonstrate below how they differ. First, here is how the native MolPro format looks like

    0.4901530798812482E+00   1   1   1   1
    0.3851086116668512E-15   2   1   1   1
    0.1357703691573445E+00   2   1   2   1
    0.4346387940927313E+00   2   2   1   1
    0.5551115123125783E-16   2   2   2   1
    0.4151840574104080E+00   2   2   2   2
   -0.2794639519798636E-14   3   1   1   1
    0.7348327890437402E-01   3   1   2   1
   -0.2386979502944087E-14   3   1   2   2
    0.8287363963878831E-01   3   1   3   1
    ...

Meanwhile, pyscf gives something like this

    0.6502249619014371    1    1    1    1
    0.4337148338929643    1    1    2    2
    0.1672559053568855    1    1    3    1
    0.5319758870034718    1    1    3    3
    0.1433508560769139    1    1    4    2
    0.6633892094879649    1    1    4    4
    0.07999383652881964    2    1    2    1
   -0.0193772995125534    2    1    3    2
    0.07934608168082659    2    1    4    1
    0.08312052663122392    2    1    4    3
    0.4337148338929642    2    2    1    1
    0.38578316658518    2    2    2    2
    0.04998352966944281    2    2    3    1
    0.3812871041018909    2    2    3    3
    0.05473143994188186    2    2    4    2
    0.4424236810822116    2    2    4    4

Notice that terms with $i<k$ are listed in the second example, which is not the case in the first. The PySCF code used is also given below

from pyscf import gto,scf
from pyscf.tools import fcidump

mol = gto.M(atom = 'C 0 0 0; C 0 0 1.2', basis = '6-31g', symmetry=True)

# RHF
rhf_obj = scf.RHF(mol)
rhf_obj.kernel()

fcidump.from_scf(rhf_obj,filename="c2_rhf.fcidump",molpro_orbsym=fcidump.MOLPRO_ORBSYM)
```
$\endgroup$
4
  • $\begingroup$ +1 but can you please send us an example of a PySCF calculation that does not work with an FCIDUMP file that is created by Molpro? $\endgroup$ Feb 24 at 19:40
  • $\begingroup$ @NikeDattani Thank you for you reply Dr. Dattani. I have polished the question with more examples. In fact, it is the output format of pyscf.tools.fcidump module that concerns me. But have made it more clearly written. $\endgroup$
    – Izzy Vang
    Feb 25 at 14:40
  • $\begingroup$ Thank you Izzy! Can you please try to enforce D2h symmetry for this C2 molecule in PySCF? Molpro will automatically be using D2h symmetry for a C2 molecule, so there will be fewer numbers listed in the FCIDUMP. $\endgroup$ Feb 25 at 15:31
  • $\begingroup$ In principle this should be rather straightforward, since Peter Knowles, the person who developed the FCIDUMP format and is also a lead author of Molpro, has released an open source C++ library for handling FCIDUMP files. The library is available at bitbucket.org/pjknowles/fcidump/src/master Perhaps PySCF and Psi4 would be willing to switch to using Knowles' implementation? $\endgroup$ Feb 25 at 16:34

0

You must log in to answer this question.

Browse other questions tagged .