1
0
mirror of https://github.com/TREX-CoE/qmckl.git synced 2024-12-23 04:44:03 +01:00

Added variables and doc for derivatives of ee_distance_rescaled. #17

This commit is contained in:
vijay gopal chilkuri 2021-06-01 10:31:26 +05:30
parent 86634c373e
commit 59f284d765

View File

@ -63,25 +63,27 @@ int main() {
The following data stored in the context:
| ~uninitialized~ | int32_t | Keeps bit set for uninitialized data |
| ~num~ | int64_t | Total number of electrons |
| ~up_num~ | int64_t | Number of up-spin electrons |
| ~down_num~ | int64_t | Number of down-spin electrons |
| ~walk_num~ | int64_t | Number of walkers |
| ~rescale_factor_kappa_ee~ | double | The distance scaling factor |
| ~rescale_factor_kappa_en~ | double | The distance scaling factor |
| ~provided~ | bool | If true, ~electron~ is valid |
| ~coord_new~ | double[walk_num][3][num] | New set of electron coordinates |
| ~coord_old~ | double[walk_num][3][num] | Old set of electron coordinates |
| ~coord_new_date~ | uint64_t | Last modification date of the coordinates |
| ~ee_distance~ | double[walk_num][num][num] | Electron-electron distances |
| ~ee_distance_date~ | uint64_t | Last modification date of the electron-electron distances |
| ~en_distance~ | double[walk_num][nucl_num][num] | Electron-nucleus distances |
| ~en_distance_date~ | uint64_t | Last modification date of the electron-electron distances |
| ~ee_distance_rescaled~ | double[walk_num][num][num] | Electron-electron distances |
| ~ee_distance_rescaled_date~ | uint64_t | Last modification date of the electron-electron distances |
| ~en_distance_rescaled~ | double[walk_num][nucl_num][num] | Electron-nucleus distances |
| ~en_distance_rescaled_date~ | uint64_t | Last modification date of the electron-electron distances |
| ~uninitialized~ | int32_t | Keeps bit set for uninitialized data |
| ~num~ | int64_t | Total number of electrons |
| ~up_num~ | int64_t | Number of up-spin electrons |
| ~down_num~ | int64_t | Number of down-spin electrons |
| ~walk_num~ | int64_t | Number of walkers |
| ~rescale_factor_kappa_ee~ | double | The distance scaling factor |
| ~rescale_factor_kappa_en~ | double | The distance scaling factor |
| ~provided~ | bool | If true, ~electron~ is valid |
| ~coord_new~ | double[walk_num][3][num] | New set of electron coordinates |
| ~coord_old~ | double[walk_num][3][num] | Old set of electron coordinates |
| ~coord_new_date~ | uint64_t | Last modification date of the coordinates |
| ~ee_distance~ | double[walk_num][num][num] | Electron-electron distances |
| ~ee_distance_date~ | uint64_t | Last modification date of the electron-electron distances |
| ~en_distance~ | double[walk_num][nucl_num][num] | Electron-nucleus distances |
| ~en_distance_date~ | uint64_t | Last modification date of the electron-electron distances |
| ~ee_distance_rescaled~ | double[walk_num][num][num] | Electron-electron rescaled distances |
| ~ee_distance_rescaled_date~ | uint64_t | Last modification date of the electron-electron distances |
| ~ee_distance_rescaled_deriv_e~ | double[walk_num][4][num][num] | Electron-electron rescaled distances derivatives |
| ~ee_distance_rescaled_deriv_e_date~ | uint64_t | Last modification date of the electron-electron distance derivatives |
| ~en_distance_rescaled~ | double[walk_num][nucl_num][num] | Electron-nucleus distances |
| ~en_distance_rescaled_date~ | uint64_t | Last modification date of the electron-electron distances |
** Data structure
@ -97,12 +99,14 @@ typedef struct qmckl_electron_struct {
int64_t ee_distance_date;
int64_t en_distance_date;
int64_t ee_distance_rescaled_date;
int64_t ee_distance_rescaled_deriv_e_date;
int64_t en_distance_rescaled_date;
double* coord_new;
double* coord_old;
double* ee_distance;
double* en_distance;
double* ee_distance_rescaled;
double* ee_distance_rescaled_deriv_e;
double* en_distance_rescaled;
int32_t uninitialized;
bool provided;
@ -1103,12 +1107,12 @@ qmckl_exit_code qmckl_provide_ee_distance_rescaled(qmckl_context context)
:END:
#+NAME: qmckl_ee_distance_rescaled_args
| qmckl_context | context | in | Global state |
| int64_t | elec_num | in | Number of electrons |
| double | rescale_factor_kappa_ee | in | Factor to rescale ee distances |
| int64_t | walk_num | in | Number of walkers |
| double | coord[walk_num][3][elec_num] | in | Electron coordinates |
| double | ee_distance[walk_num][elec_num][elec_num] | out | Electron-electron distances |
| qmckl_context | context | in | Global state |
| int64_t | elec_num | in | Number of electrons |
| double | rescale_factor_kappa_ee | in | Factor to rescale ee distances |
| int64_t | walk_num | in | Number of walkers |
| double | coord[walk_num][3][elec_num] | in | Electron coordinates |
| double | ee_distance[walk_num][elec_num][elec_num] | out | Electron-electron rescaled distances |
#+begin_src f90 :comments org :tangle (eval f) :noweb yes
integer function qmckl_compute_ee_distance_rescaled_f(context, elec_num, rescale_factor_kappa_ee, walk_num, &
@ -1245,6 +1249,16 @@ rc = qmckl_get_electron_ee_distance_rescaled(context, ee_distance);
#+end_src
** Electron-electron rescaled distance gradients and laplacian with respect to electron coords
The rescaled distances which is given as $R = (1 - \exp{-\kappa r})/\kappa$
needs to be perturbed with respect to the electorn and nuclear coordinates.
This data is stored in the ~ee_distance_rescaled_deriv_e~ tensor. The
The first three elements of this three index tensor ~[4][num][num]~ gives the
derivatives in the x, y, and z directions $dx, dy, dz$ and the last index
gives the Laplacian $\partial x^2 + \partial y^2 + \partial z^2$.
** Electron-nucleus distances
*** Get
@ -1615,7 +1629,7 @@ qmckl_exit_code qmckl_provide_en_distance_rescaled(qmckl_context context)
| qmckl_context | context | in | Global state |
| int64_t | elec_num | in | Number of electrons |
| int64_t | nucl_num | in | Number of nuclei |
| double | rescale_factor_kappa_en | in | The factor for rescaled distances |
| double | rescale_factor_kappa_en | in | The factor for rescaled distances |
| int64_t | walk_num | in | Number of walkers |
| double | elec_coord[walk_num][3][elec_num] | in | Electron coordinates |
| double | nucl_coord[3][elec_num] | in | Nuclear coordinates |