diff --git a/org/qmckl_electron.org b/org/qmckl_electron.org index 0f47ff9..9795324 100644 --- a/org/qmckl_electron.org +++ b/org/qmckl_electron.org @@ -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 |