mirror of
https://github.com/TREX-CoE/qmckl.git
synced 2024-08-18 11:21:44 +02:00
commit
e39a27db08
@ -52,7 +52,7 @@ test_qmckl_f = tests/qmckl_f.f90
|
|||||||
test_qmckl_fo = tests/qmckl_f.o
|
test_qmckl_fo = tests/qmckl_f.o
|
||||||
src_qmckl_f = src/qmckl_f.f90
|
src_qmckl_f = src/qmckl_f.f90
|
||||||
src_qmckl_fo = src/qmckl_f.o
|
src_qmckl_fo = src/qmckl_f.o
|
||||||
header_tests = tests/chbrclf.h
|
header_tests = tests/chbrclf.h tests/n2.h
|
||||||
|
|
||||||
fortrandir = $(datadir)/$(PACKAGE_NAME)/fortran/
|
fortrandir = $(datadir)/$(PACKAGE_NAME)/fortran/
|
||||||
dist_fortran_DATA = $(qmckl_f)
|
dist_fortran_DATA = $(qmckl_f)
|
||||||
@ -157,6 +157,7 @@ $(htmlize_el):
|
|||||||
|
|
||||||
tests/chbrclf.h: $(qmckl_h)
|
tests/chbrclf.h: $(qmckl_h)
|
||||||
|
|
||||||
|
tests/n2.h: $(qmckl_h)
|
||||||
|
|
||||||
generated.mk: $(ORG_FILES)
|
generated.mk: $(ORG_FILES)
|
||||||
$(PYTHON) $(srcdir)/tools/build_makefile.py
|
$(PYTHON) $(srcdir)/tools/build_makefile.py
|
||||||
|
15
configure.ac
15
configure.ac
@ -98,7 +98,6 @@ AC_CHECK_LIB([pthread], [pthread_create])
|
|||||||
# CFLAGS="${CFLAGS} ${OPENMP_CFLAGS}"
|
# CFLAGS="${CFLAGS} ${OPENMP_CFLAGS}"
|
||||||
#fi
|
#fi
|
||||||
|
|
||||||
|
|
||||||
## BLAS
|
## BLAS
|
||||||
#AX_BLAS([], [AC_MSG_ERROR([BLAS was not found.])])
|
#AX_BLAS([], [AC_MSG_ERROR([BLAS was not found.])])
|
||||||
|
|
||||||
@ -221,13 +220,13 @@ ${PACKAGE_NAME} Version ${PACKAGE_VERSION} ${QMCKL_DEVEL}
|
|||||||
|
|
||||||
Prefix: '${prefix}'.
|
Prefix: '${prefix}'.
|
||||||
|
|
||||||
CC..........: ${CC}
|
CC..............: ${CC}
|
||||||
CPPFLAGS....: ${CPPFLAGS}
|
CPPFLAGS........: ${CPPFLAGS}
|
||||||
CFLAGS......: ${CFLAGS}
|
CFLAGS..........: ${CFLAGS}
|
||||||
FC..........: ${FC}
|
FC..............: ${FC}
|
||||||
FCLAGS......: ${FCFLAGS}
|
FCLAGS..........: ${FCFLAGS}
|
||||||
LDFLAGS:....: ${LDFLAGS}
|
LDFLAGS:........: ${LDFLAGS}
|
||||||
LIBS........: ${LIBS}
|
LIBS............: ${LIBS}
|
||||||
|
|
||||||
Package features:
|
Package features:
|
||||||
${ARGS}
|
${ARGS}
|
||||||
|
@ -1922,6 +1922,13 @@ qmckl_exit_code qmckl_provide_ao_basis_shell_vgl(qmckl_context context)
|
|||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!(ctx->electron.provided)) {
|
||||||
|
return qmckl_failwith( context,
|
||||||
|
QMCKL_NOT_PROVIDED,
|
||||||
|
"qmckl_electron",
|
||||||
|
NULL);
|
||||||
|
}
|
||||||
|
|
||||||
/* Compute if necessary */
|
/* Compute if necessary */
|
||||||
if (ctx->electron.coord_new_date > ctx->ao_basis.shell_vgl_date) {
|
if (ctx->electron.coord_new_date > ctx->ao_basis.shell_vgl_date) {
|
||||||
|
|
||||||
|
@ -31,6 +31,7 @@ int main() {
|
|||||||
#include "qmckl_nucleus_private_type.h"
|
#include "qmckl_nucleus_private_type.h"
|
||||||
#include "qmckl_electron_private_type.h"
|
#include "qmckl_electron_private_type.h"
|
||||||
#include "qmckl_ao_private_type.h"
|
#include "qmckl_ao_private_type.h"
|
||||||
|
#include "qmckl_jastrow_private_type.h"
|
||||||
#include "qmckl_nucleus_private_func.h"
|
#include "qmckl_nucleus_private_func.h"
|
||||||
#include "qmckl_electron_private_func.h"
|
#include "qmckl_electron_private_func.h"
|
||||||
#include "qmckl_ao_private_func.h"
|
#include "qmckl_ao_private_func.h"
|
||||||
@ -118,6 +119,7 @@ typedef struct qmckl_context_struct {
|
|||||||
qmckl_nucleus_struct nucleus;
|
qmckl_nucleus_struct nucleus;
|
||||||
qmckl_electron_struct electron;
|
qmckl_electron_struct electron;
|
||||||
qmckl_ao_basis_struct ao_basis;
|
qmckl_ao_basis_struct ao_basis;
|
||||||
|
qmckl_jastrow_struct jastrow;
|
||||||
|
|
||||||
/* To be implemented:
|
/* To be implemented:
|
||||||
qmckl_mo_struct mo;
|
qmckl_mo_struct mo;
|
||||||
|
@ -923,7 +923,7 @@ integer function qmckl_distance_rescaled_f(context, transa, transb, m, n, &
|
|||||||
|
|
||||||
if (transb == 'N' .or. transb == 'n') then
|
if (transb == 'N' .or. transb == 'n') then
|
||||||
continue
|
continue
|
||||||
else if (transa == 'T' .or. transa == 't') then
|
else if (transb == 'T' .or. transb == 't') then
|
||||||
transab = transab + 2
|
transab = transab + 2
|
||||||
else
|
else
|
||||||
transab = -100
|
transab = -100
|
||||||
|
@ -63,30 +63,29 @@ int main() {
|
|||||||
|
|
||||||
The following data stored in the context:
|
The following data stored in the context:
|
||||||
|
|
||||||
| ~uninitialized~ | ~int32_t~ | Keeps bit set for uninitialized data |
|
| ~uninitialized~ | ~int32_t~ | Keeps bit set for uninitialized data |
|
||||||
| ~num~ | ~int64_t~ | Total number of electrons |
|
| ~num~ | ~int64_t~ | Total number of electrons |
|
||||||
| ~up_num~ | ~int64_t~ | Number of up-spin electrons |
|
| ~up_num~ | ~int64_t~ | Number of up-spin electrons |
|
||||||
| ~down_num~ | ~int64_t~ | Number of down-spin electrons |
|
| ~down_num~ | ~int64_t~ | Number of down-spin electrons |
|
||||||
| ~walk_num~ | ~int64_t~ | Number of walkers |
|
| ~walk_num~ | ~int64_t~ | Number of walkers |
|
||||||
| ~rescale_factor_kappa_ee~ | ~double~ | The distance scaling factor |
|
| ~rescale_factor_kappa_ee~ | ~double~ | The distance scaling factor |
|
||||||
| ~rescale_factor_kappa_en~ | ~double~ | The distance scaling factor |
|
| ~rescale_factor_kappa_en~ | ~double~ | The distance scaling factor |
|
||||||
| ~provided~ | ~bool~ | If true, ~electron~ is valid |
|
| ~provided~ | ~bool~ | If true, ~electron~ is valid |
|
||||||
| ~coord_new~ | ~double[walk_num][3][num]~ | New set of electron coordinates |
|
| ~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_old~ | ~double[walk_num][3][num]~ | Old set of electron coordinates |
|
||||||
| ~coord_new_date~ | ~uint64_t~ | Last modification date of the coordinates |
|
| ~coord_new_date~ | ~uint64_t~ | Last modification date of the coordinates |
|
||||||
| ~ee_distance~ | ~double[walk_num][num][num]~ | Electron-electron distances |
|
| ~ee_distance~ | ~double[walk_num][num][num]~ | Electron-electron distances |
|
||||||
| ~ee_distance_date~ | ~uint64_t~ | Last modification date of the 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~ | ~double[walk_num][nucl_num][num]~ | Electron-nucleus distances |
|
||||||
| ~en_distance_date~ | ~uint64_t~ | Last modification date of the electron-electron 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~ | ~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_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~ | ~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 |
|
| ~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~ | ~double[walk_num][nucl_num][num]~ | Electron-nucleus distances |
|
||||||
| ~en_distance_rescaled_date~ | ~uint64_t~ | Last modification date of the electron-electron distances |
|
| ~en_distance_rescaled_date~ | ~uint64_t~ | Last modification date of the electron-electron distances |
|
||||||
| ~en_distance_rescaled_deriv_e~ | ~double[walk_num][4][num][num]~ | Electron-electron rescaled distances derivatives |
|
| ~en_distance_rescaled_deriv_e~ | ~double[walk_num][4][nucl_num][num]~ | Electron-electron rescaled distances derivatives |
|
||||||
| ~en_distance_rescaled_deriv_e_date~ | ~uint64_t~ | Last modification date of the electron-electron distance derivatives |
|
| ~en_distance_rescaled_deriv_e_date~ | ~uint64_t~ | Last modification date of the electron-electron distance derivatives |
|
||||||
|
|
||||||
|
|
||||||
** Data structure
|
** Data structure
|
||||||
|
|
||||||
@ -1566,7 +1565,6 @@ rc = qmckl_get_electron_ee_distance_rescaled_deriv_e(context, ee_distance_rescal
|
|||||||
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
|
||||||
** Electron-nucleus distances
|
** Electron-nucleus distances
|
||||||
|
|
||||||
*** Get
|
*** Get
|
||||||
@ -2140,7 +2138,7 @@ assert(fabs(en_distance_rescaled[1][0][1] - 0.9584331688679852) < 1.e-12);
|
|||||||
The rescaled distances which is given as $R = (1 - \exp{-\kappa r})/\kappa$
|
The rescaled distances which is given as $R = (1 - \exp{-\kappa r})/\kappa$
|
||||||
needs to be perturbed with respect to the nuclear coordinates.
|
needs to be perturbed with respect to the nuclear coordinates.
|
||||||
This data is stored in the ~en_distance_rescaled_deriv_e~ tensor. The
|
This data is stored in the ~en_distance_rescaled_deriv_e~ tensor. The
|
||||||
The first three elements of this three index tensor ~[4][num][num]~ gives the
|
The first three elements of this three index tensor ~[4][nucl_num][elec_num]~ gives the
|
||||||
derivatives in the x, y, and z directions $dx, dy, dz$ and the last index
|
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$.
|
gives the Laplacian $\partial x^2 + \partial y^2 + \partial z^2$.
|
||||||
|
|
||||||
|
5509
org/qmckl_jastrow.org
Normal file
5509
org/qmckl_jastrow.org
Normal file
File diff suppressed because it is too large
Load Diff
@ -1013,3 +1013,159 @@ double chbrclf_elec_coord[chbrclf_walk_num][chbrclf_elec_num][3] = { {
|
|||||||
|
|
||||||
|
|
||||||
#+END_src
|
#+END_src
|
||||||
|
|
||||||
|
|
||||||
|
* N2
|
||||||
|
|
||||||
|
This test is mainly for the Jastrow factor and was supplied by
|
||||||
|
Ramon Panades Baruetta. The coordinates and Jastrow coefficients
|
||||||
|
have been taken from his fork of IRPJast. The core electrons are
|
||||||
|
treated by pseudopotentials thus excluded from the actual calculation.
|
||||||
|
|
||||||
|
| Number of atoms | 2 |
|
||||||
|
| Number of alpha electrons | 5 |
|
||||||
|
| Number of beta electrons | 5 |
|
||||||
|
| Number of core electrons | 4 |
|
||||||
|
|
||||||
|
** XYZ coordinates
|
||||||
|
|
||||||
|
#+BEGIN_example
|
||||||
|
2
|
||||||
|
N2
|
||||||
|
N 0.000000 0.000000 0.000000
|
||||||
|
N 0.000000 0.000000 2.059801
|
||||||
|
#+END_example
|
||||||
|
|
||||||
|
Nuclear coordinates are stored in atomic units in transposed format.
|
||||||
|
|
||||||
|
#+begin_src c :tangle ../tests/n2.h
|
||||||
|
#define n2_nucl_num ((int64_t) 2)
|
||||||
|
|
||||||
|
double n2_charge[n2_nucl_num] = { 5., 5.};
|
||||||
|
|
||||||
|
double n2_nucl_coord[3][n2_nucl_num] =
|
||||||
|
{ {0.000000, 0.000000 },
|
||||||
|
{0.000000, 0.000000 },
|
||||||
|
{0.000000, 2.059801 } };
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Electron coordinates
|
||||||
|
|
||||||
|
|
||||||
|
Electron coordinates are stored in atomic units in normal format.
|
||||||
|
|
||||||
|
#+begin_src c :tangle ../tests/n2.h
|
||||||
|
#define n2_elec_up_num ((int64_t) 5)
|
||||||
|
#define n2_elec_dn_num ((int64_t) 5)
|
||||||
|
#define n2_elec_num ((int64_t) 10)
|
||||||
|
#define n2_walk_num ((int64_t) 1)
|
||||||
|
|
||||||
|
double n2_elec_coord[n2_walk_num][n2_elec_num][3] = { {
|
||||||
|
{-0.250655104764153 , 0.503070975550133 , -0.166554344502303},
|
||||||
|
{-0.587812193472177 , -0.128751981129274 , 0.187773606533075},
|
||||||
|
{ 1.61335569047166 , -0.615556732874863 , -1.43165470979934 },
|
||||||
|
{-4.901239896295210E-003 , -1.120440036458986E-002 , 1.99761909330422 },
|
||||||
|
{ 0.766647499681200 , -0.293515395797937 , 3.66454589201239 },
|
||||||
|
{-0.127732483187947 , -0.138975497694196 , -8.669850480215846E-002},
|
||||||
|
{-0.232271834949124 , -1.059321673434182E-002 , -0.504862241464867},
|
||||||
|
{ 1.09360863531826 , -2.036103063808752E-003 , -2.702796910818986E-002},
|
||||||
|
{-0.108090166832043 , 0.189161729653261 , 2.15398313919894},
|
||||||
|
{ 0.397978144318712 , -0.254277292595981 , 2.54553335476344}}};
|
||||||
|
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Jastrow related data
|
||||||
|
|
||||||
|
This test is mainly for the Jastrow factor and was supplied by
|
||||||
|
Ramon Panades Baruetta.
|
||||||
|
|
||||||
|
#+begin_src c :tangle ../tests/n2.h
|
||||||
|
/* Jastrow related */
|
||||||
|
|
||||||
|
#define n2_type_nucl_num ((int64_t) 1)
|
||||||
|
#define n2_aord_num ((int64_t) 5)
|
||||||
|
#define n2_bord_num ((int64_t) 5)
|
||||||
|
#define n2_cord_num ((int64_t) 23)
|
||||||
|
#define n2_dim_cord_vec ((int64_t) 23)
|
||||||
|
|
||||||
|
int64_t n2_type_nucl_vector[n2_nucl_num] = {
|
||||||
|
1,
|
||||||
|
1};
|
||||||
|
|
||||||
|
double n2_aord_vector[n2_aord_num + 1][n2_type_nucl_num] = {
|
||||||
|
{ 0. },
|
||||||
|
{ 0. },
|
||||||
|
{-0.380512},
|
||||||
|
{-0.157996},
|
||||||
|
{-0.031558},
|
||||||
|
{ 0.021512}};
|
||||||
|
|
||||||
|
double n2_bord_vector[n2_bord_num + 1] = {
|
||||||
|
0.5 ,
|
||||||
|
0.15366 ,
|
||||||
|
0.0672262 ,
|
||||||
|
0.02157 ,
|
||||||
|
0.0073096 ,
|
||||||
|
0.002866 };
|
||||||
|
|
||||||
|
double n2_cord_vector[n2_cord_num][n2_type_nucl_num] = {
|
||||||
|
{ 5.717020e-01},
|
||||||
|
{-5.142530e-01},
|
||||||
|
{-5.130430e-01},
|
||||||
|
{ 9.486000e-03},
|
||||||
|
{-4.205000e-03},
|
||||||
|
{ 4.263258e-01},
|
||||||
|
{ 8.288150e-02},
|
||||||
|
{ 5.118600e-03},
|
||||||
|
{-2.997800e-03},
|
||||||
|
{-5.270400e-03},
|
||||||
|
{-7.500000e-05},
|
||||||
|
{-8.301650e-02},
|
||||||
|
{ 1.454340e-02},
|
||||||
|
{ 5.143510e-02},
|
||||||
|
{ 9.250000e-04},
|
||||||
|
{-4.099100e-03},
|
||||||
|
{ 4.327600e-03},
|
||||||
|
{-1.654470e-03},
|
||||||
|
{ 2.614000e-03},
|
||||||
|
{-1.477000e-03},
|
||||||
|
{-1.137000e-03},
|
||||||
|
{-4.010475e-02},
|
||||||
|
{ 6.106710e-03}};
|
||||||
|
|
||||||
|
double n2_cord_vector_full[n2_dim_cord_vec][n2_nucl_num] = {
|
||||||
|
{ 5.717020e-01, 5.717020e-01},
|
||||||
|
{-5.142530e-01, -5.142530e-01},
|
||||||
|
{-5.130430e-01, -5.130430e-01},
|
||||||
|
{ 9.486000e-03, 9.486000e-03},
|
||||||
|
{-4.205000e-03, -4.205000e-03},
|
||||||
|
{ 4.263258e-01, 4.263258e-01},
|
||||||
|
{ 8.288150e-02, 8.288150e-02},
|
||||||
|
{ 5.118600e-03, 5.118600e-03},
|
||||||
|
{-2.997800e-03, -2.997800e-03},
|
||||||
|
{-5.270400e-03, -5.270400e-03},
|
||||||
|
{-7.500000e-05, -7.500000e-05},
|
||||||
|
{-8.301650e-02, -8.301650e-02},
|
||||||
|
{ 1.454340e-02, 1.454340e-02},
|
||||||
|
{ 5.143510e-02, 5.143510e-02},
|
||||||
|
{ 9.250000e-04, 9.250000e-04},
|
||||||
|
{-4.099100e-03, -4.099100e-03},
|
||||||
|
{ 4.327600e-03, 4.327600e-03},
|
||||||
|
{-1.654470e-03, -1.654470e-03},
|
||||||
|
{ 2.614000e-03, 2.614000e-03},
|
||||||
|
{-1.477000e-03, -1.477000e-03},
|
||||||
|
{-1.137000e-03, -1.137000e-03},
|
||||||
|
{-4.010475e-02, -4.010475e-02},
|
||||||
|
{ 6.106710e-03, 6.106710e-03}};
|
||||||
|
|
||||||
|
double n2_lkpm_of_cindex[4][n2_dim_cord_vec] = {
|
||||||
|
{1, 1, 2, 0, 0, 0, 2, 1, 1, 2, 3, 0, 2, 1, 3, 0, 0, 1, 3, 1, 1, 0, 3},
|
||||||
|
{1, 1, 3, 4, 0, 2, 2, 4, 0, 0, 2, 4, 1, 3, 1, 4, 0, 1, 1, 4, 1, 2, 0},
|
||||||
|
{4, 1, 0, 0, 4, 2, 1, 4, 5, 0, 2, 3, 5, 0, 0, 3, 5, 1, 3, 2, 5, 0, 1},
|
||||||
|
{2, 5, 1, 4, 1, 5, 0, 2, 1, 5, 1, 0, 1, 5, 2, 3, 0, 5, 1, 1, 0, 5, 2}};
|
||||||
|
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
|
||||||
|
# -*- mode: org -*-
|
||||||
|
# vim: syntax=c
|
||||||
|
@ -6,6 +6,7 @@ qmckl_numprec.org
|
|||||||
qmckl_nucleus.org
|
qmckl_nucleus.org
|
||||||
qmckl_electron.org
|
qmckl_electron.org
|
||||||
qmckl_ao.org
|
qmckl_ao.org
|
||||||
|
qmckl_jastrow.org
|
||||||
qmckl_distance.org
|
qmckl_distance.org
|
||||||
qmckl_utils.org
|
qmckl_utils.org
|
||||||
qmckl_tests.org
|
qmckl_tests.org
|
||||||
|
@ -124,8 +124,7 @@ for d in parse_table(table):
|
|||||||
results += [ f" {const}{c_type} {name}" ]
|
results += [ f" {const}{c_type} {name}" ]
|
||||||
|
|
||||||
results=',\n'.join(results)
|
results=',\n'.join(results)
|
||||||
template = f"""{rettyp} {fname} (
|
template = f"""{rettyp} {fname} (\n{results} ); """
|
||||||
{results} ); """
|
|
||||||
return template
|
return template
|
||||||
|
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
@ -259,3 +258,4 @@ return results
|
|||||||
#+begin_src f90 :tangle (eval fh_func) :comments org :exports none
|
#+begin_src f90 :tangle (eval fh_func) :comments org :exports none
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user