xcfun icon indicating copy to clipboard operation
xcfun copied to clipboard

Semi Contracted Mode

Open ilfreddy opened this issue 6 years ago • 0 comments

This is a brief summary of the discussion @bast and me have had about the XC_CONTRACTED mode of XCFun and how it is used, for future reference, and what we need to improve it.

When doing response calculation, one needs to separate the different contributions BEFORE contracting with the overlap matrix. For GGA functionals this means that one needs four different calls to XCFun: one for each of the density variables n, nx, ny, and nz. MRChem or any other real-space code has a similar problem, because it needs the potential (or its derivatives for response calculations). In the contracted mode this is the only way of getting the right answer now, because all derivatives are contracted and it is only by setting one of the density variables to one and all the others to zero that one can single out each contribution (@bast checked Dirac and confirmed that XCFun is indeed called four times, and it would be eight for open-shell systems).

What we actually need is a semi-contracted mode where all contractions but one are performed and then all four (or more for open shell, metaGGA...) are recovered with one single call of XCFun.

The way XCFun is used now is suboptimal, because all derivatives are still computed, but most of them discarded at each run.

ilfreddy avatar Feb 08 '19 11:02 ilfreddy