Skip to content

Semi Contracted Mode #92

@ilfreddy

Description

@ilfreddy

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions