-
Notifications
You must be signed in to change notification settings - Fork 9
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
Include tabulated Hartree-Fock wave functions for atoms #71
base: master
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How long does this take to compile? Also, were the heavy-element calculations performed with point- or finite-nuclear models?
~SlaterTypeAtomicShell() {}; | ||
|
||
/// Evaluates the basis functions | ||
std::vector<double> evaluate_basis_functions(double r) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Returning std::vector
is an anti-pattern, we should always expose the capability to populate preallocated memory. I'd probably opt to have something like gau2grid
for Slaters, but of course with a lot less logic / having the ability to trigger fast code paths for spherically averaged functions
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK, I've exposed the capabilities at least partly. Have a look
Required for #60 |
The code is now in |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Re source vs header, I could go either way. I think were approaching enough performance-critical functionality that we may have to abandon header-only, or at least we should expose the option to precompile
@susilehtola Refresh my memory - what's left here? Decisions on source organization? Functionality? My only concern about checking in what's here is that, by itself, it's not terribly interesting, but when its combined with e.g. a weight partitioning scheme, then its in scope. Might need to be merged with #70 or at least held off until that's checked in and added when we add an atomic partitioning that needs it. |
In addition to use in the Delley partitioning, #60, atomic densities are also needed for the adaptive Molpro grid, wavefunction91/GauXC#51. Atomic densities could also be useful for the adaptive determination of atomic radial grids, since the quadrature error is atom and functional dependent, and the quadrature errors are similar for HF and SCF wave functions; one would then only have to define an energy threshold. It could also be useful to port the code I currently have in https://github.com/JFurness1/AtomicOrbitals to C++ because running the total energy convergence plots we introduced in J. Chem. Phys. 157, 174114 (2022) takes a while in Python... These features would just require writing a Libxc interface, which could be compiled as an optional binary. What do you think? |
@susilehtola Do you mean to move this kind of database / evaluator functionality to the |
AtomicOrbitals is a pure Python package. I was thinking of including the evaluator here as an optional binary, but that code can of course live somewhere else like a new project. However, the atomic wave functions should be in IntegratorXX since we need them for several planned features! |
OK, now the code should be working. I get the same energies with the C++ implementation as with AtomicOrbitals. Now the question is how do you want to interface this into the atomic partitioning generation. Also, I guess some tests should be added. |
ae8c510
to
c775a66
Compare
Description
Atomic densities are necessary for certain algorithms.
One possibility, used in some codes is to use Slater atomic densities, which are empirical exponential fits of the observed electron density. However, I have not found up-to-date data for such an implementation, but it can be added later.
A perhaps better alternative is to use Slater-type orbital wave functions from the literature, which should be relatively accurate. This PR is meant to include these tabulations in a reasonable fashion.