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

Draft: QMCkl #85

Draft
wants to merge 65 commits into
base: devel
Choose a base branch
from
Draft

Draft: QMCkl #85

wants to merge 65 commits into from

Conversation

addman2
Copy link
Collaborator

@addman2 addman2 commented Jan 19, 2024

I am not a fan of a big changes but this is a big one. Many things are intertwined and was hard to deliver them separately.

  1. Makefun.f90 was (partly) refactored. Now separate orbital are stored indevel_tools/makefun_factory. executing construct.py one can build makefun.
  2. Each refactored orbital has now a header that looks like this:
  1   ! s orbital
  2   !
  3   ! - angmom = 0
  4   ! - type = Gaussian
  5   ! - normalized = yes
  6   ! - angtype = spherical
  7   ! - npar = 1
  8   ! - multiplicity = 1
  9   !
 10   ! = N * R
 11   !
 12   ! where N is the normalization constant
 13   ! N = (2*alpha/pi)**(3/4)
 14   !
 15   ! and R is the radial part
 16   ! R = exp(-alpha*r**2)
 17   !

Consisting of title line 1. Parameters out of which only angmom, npar and multiciplity are necessary (lines 3 -8). Continued by any doc string (lines 10 onwards). These headers than can be used for generating documentation.
3. New test added for makefun testing:

  • index updates
  • calculating solo values
  • calculating values for pseudo averaging
  • calculating gradients and laplacian

Here is a sample output:

4: ######################################
4: Checking orbital index  97
4:
4: Test: index movement
4: indorb   =  36 OK
4: indshell =  36 OK
4: indpar   =   1 OK
4:
4: Test: single value
4: tests/failed =   3/  0
4:
4: Test: single value gradient and laplacian
4: tests/failed =   4/  0
4:
4: Test: calculate values for pseudo average
4: tests/failed =   1/  0
4:
4:
4: Result = T
4:
4: ######################################
4: Checking orbital index  98
4:
4: Test: index movement
4: indorb   =  45 OK
4: indshell =  45 OK
4: indpar   =   1 OK
4:
4: Test: single value
4: tests/failed =   3/  0
4:
4: Test: single value gradient and laplacian
4: tests/failed =   4/  0
4:
4: Test: calculate values for pseudo average
4: tests/failed =   1/  0
4:
4:
4: Result = T
4:
4: ######################################
  1. Added implementation of Cartesian orbitals with indexes 90 - 99, representing s, p, d, ..., m. This is important for QMCkl, because this library cannot do AD so there is no backwards algorithm. So I added cartesians to makefun and generated new makefun_b (with tapenade 3.3). The idea is to then QMCKkl in every place where is placable speeding up the calculation. Turbo is compilable with both QMCkl and QMCkl_gpu, but I am changing the implementation so QMCkl it self will not work now. Hopefully today it will be.

@addman2 addman2 added enhancement New feature or request refactoring Refactoring code labels Jan 19, 2024
@addman2 addman2 marked this pull request as draft January 19, 2024 10:17
@addman2 addman2 self-assigned this Jan 29, 2024
@kousuke-nakano
Copy link
Collaborator

Dear @addman2, hi! I wonder if I could merge this pull-request. Is it still in progress?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request refactoring Refactoring code
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants