Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"Promolecule tricks" #16

Open
PaulWAyers opened this issue Jan 23, 2019 · 3 comments
Open

"Promolecule tricks" #16

PaulWAyers opened this issue Jan 23, 2019 · 3 comments
Assignees
Labels
help wanted Extra attention is needed

Comments

@PaulWAyers
Copy link
Member

Using the "promolecule tricks" that Ali & Derrick developed for regional and whole-molecule integration of various functions.

@PaulWAyers
Copy link
Member Author

We should use "promolecular tricks" not only for molecular integration but also for Poisson solving.

@PaulWAyers
Copy link
Member Author

We may need to use a different pruned grid for Poisson solving. Probably we need to use more spherical points at long range (though we can still prune at short range I think).

@PaulWAyers PaulWAyers self-assigned this May 4, 2023
@PaulWAyers
Copy link
Member Author

PaulWAyers commented May 6, 2023

I migrated discussions from the "team" to a new (private) discussions repository. I put a key document there.
https://github.com/orgs/theochem/discussions/1

The basic idea is that for any given molecular property density, $p_{\text{molecule}}$, you decompose it as a sum of atomic property densities, $p_A$. The atomic contributions can be done with AtomDB using the basis-set-fits in BFit. Using basis-set fits ensures that the atomic contributions can be obtained analytically.

Then, given a linear operator on the property density, one writes:

$$ L[p_{\text{molecule}}] = \sum_{A=1}^{N_{\text{atoms}}} L[p_A] + L\left[p_{\text{molecule}} - \sum_{A=1}^{N_{\text{atoms}}} p_A\right] $$

This is useful when the atomic linear operator, $L[p_A]$, can be evaluated analytically. This means that the burden on the numerical integration/interpolation/differentiation/differential-equations-solving on the grid is less, since one is only having to compute the correction to the (often very good) promolecular approximation.

There are a few special cases of interest, most of which are dealt with in the discussion, and many of which are lower priority for now (and maybe forever). Note that matrix elements occurring in DFT can be addressed in this way, because

$$ \braket{\chi_i | v_{xc;molecule} | \chi_j} = \sum_{A=1}^{N_{\text{atoms}}} \braket{\chi_i | v_{xc;A} | \chi_j} + \braket{\chi_i | v_{xc;molecule} - \sum_{A=1}^{N_{\text{atoms}}}v_{xc;A} | \chi_j} $$

where (in Gaussian basis sets) the atomic matrix elements are analytic (and very sparse).

For atomic partitioning of properties, a similar trick can be performed. The integral we need is slightly different, however:

$$ P_A = \int w_A(\mathbf{r}) p_{\text{molecule}}(\mathbf{r}) d \mathbf{r} = \int p_{A}(\mathbf{r}) d \mathbf{r} + \int w_A(\mathbf{r}) p_{\text{molecule}}(\mathbf{r}) - p_{A}(\mathbf{r}) d \mathbf{r} $$

The numerical integral is small here, as long as the expected relation $w_A(\mathbf{r}) p_{\text{molecule}}(\mathbf{r}) \approx p_{A}(\mathbf{r})$ holds.

My opinion is that the first "generic" promolecular trick should be performed in grid itself. The second trick should be relegated to mean-field since it directly relates to acquiring matrix elements in DFT. The third trick should be relegated to denspart since it directly relates to molecular partitioning. Your thoughts, @Ali-Tehrani ?

Obviously other "special cases" may well appear in other packages.

@FarnazH FarnazH added the help wanted Extra attention is needed label Nov 17, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

2 participants