1
0
mirror of https://github.com/TREX-CoE/qmckl.git synced 2025-01-03 10:06:09 +01:00

Total value of the Jastrow

This commit is contained in:
Anthony Scemama 2023-03-30 18:17:33 +02:00
parent 0c136ab950
commit 0c35d11165

View File

@ -156,10 +156,8 @@ int main() {
| ~factor_en_deriv_e_date~ | ~uint64_t~ | out | Keep track of the date for the en derivative |
| ~factor_een_deriv_e~ | ~double[4][nelec][walker.num]~ | out | Derivative of the Jastrow factor: electron-electron-nucleus part |
| ~factor_een_deriv_e_date~ | ~uint64_t~ | out | Keep track of the date for the een derivative |
| ~vgl~ | ~double[walk_num][5]~ | out | Value, gradient and Laplacian of the Jastrow factor |
| ~vgl_date~ | ~uint64_t~ | out | Keep track of the date |
computed data:
Computed data:
| Variable | Type | In/Out |
|-------------------------------------+-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------|
@ -189,6 +187,10 @@ int main() {
| ~een_rescaled_e_deriv_e_date~ | ~uint64_t~ | Keep track of the date of creation |
| ~een_rescaled_n_deriv_e~ | ~double[walker.num][cord_num+1][nucl_num][4][elec_num]~ | The electron-electron rescaled distances raised to the powers defined by cord derivatives wrt electrons |
| ~een_rescaled_n_deriv_e_date~ | ~uint64_t~ | Keep track of the date of creation |
| ~value~ | ~double[walk_num]~ | out | Value of the Jastrow factor |
| ~value_date~ | ~uint64_t~ | out | Keep track of the date |
| ~gl~ | ~double[walk_num][4][elec_num]~ | out | Gradient and Laplacian of the Jastrow factor |
| ~value_date~ | ~uint64_t~ | out | Keep track of the date |
#+NAME: jastrow_data
#+BEGIN_SRC python :results none :exports none
@ -371,7 +373,8 @@ typedef struct qmckl_jastrow_champ_struct{
double * restrict factor_en_deriv_e;
double * restrict rescale_factor_en;
double * restrict tmp_c;
double * restrict vgl;
double * restrict value;
double * restrict gl;
int64_t aord_num;
int64_t bord_num;
int64_t cord_num;
@ -398,7 +401,8 @@ typedef struct qmckl_jastrow_champ_struct{
uint64_t factor_en_deriv_e_date;
uint64_t lkpm_combined_index_date;
uint64_t tmp_c_date;
uint64_t vgl_date;
uint64_t value_date;
uint64_t gl_date;
double rescale_factor_ee;
int32_t uninitialized;
bool provided;
@ -2251,7 +2255,7 @@ qmckl_exit_code qmckl_provide_jastrow_champ_factor_ee(qmckl_context context)
#+NAME: qmckl_factor_ee_args
| Variable | Type | In/Out | Description |
|------------------------+----------------------------------------+--------+-----------------------------|
|------------------------+----------------------------------------+--------+---------------------------------|
| ~context~ | ~qmckl_context~ | in | Global state |
| ~walk_num~ | ~int64_t~ | in | Number of walkers |
| ~elec_num~ | ~int64_t~ | in | Number of electrons |
@ -2259,8 +2263,8 @@ qmckl_exit_code qmckl_provide_jastrow_champ_factor_ee(qmckl_context context)
| ~bord_num~ | ~int64_t~ | in | Number of coefficients |
| ~b_vector~ | ~double[bord_num+1]~ | in | List of coefficients |
| ~ee_distance_rescaled~ | ~double[walk_num][elec_num][elec_num]~ | in | Electron-electron distances |
| ~asymp_jasb~ | ~double[2]~ | in | Electron-electron distances |
| ~factor_ee~ | ~double[walk_num]~ | out | Electron-electron distances |
| ~asymp_jasb~ | ~double[2]~ | in | Asymptotic value of the Jastrow |
| ~factor_ee~ | ~double[walk_num]~ | out | $f_{ee}$ |
# #+CALL: generate_c_interface(table=qmckl_factor_ee_args,rettyp=get_value("CRetType"),fname=get_value("Name"))
@ -2373,7 +2377,6 @@ qmckl_exit_code qmckl_compute_factor_ee_doc (
double* const factor_ee );
#+end_src
#+begin_src c :comments org :tangle (eval h_private_func) :noweb yes :exports none
qmckl_exit_code qmckl_compute_factor_ee_hpc (
const qmckl_context context,
@ -3029,7 +3032,6 @@ integer(c_int32_t) function qmckl_compute_factor_ee_deriv_e_doc &
**** Test
#+begin_src python :results output :exports none :noweb yes
import numpy as np
@ -4109,7 +4111,7 @@ qmckl_exit_code qmckl_provide_jastrow_champ_factor_en(qmckl_context context)
**** Compute
:PROPERTIES:
:Name: qmckl_compute_factor_en
:Name: qmckl_compute_factor_en_doc
:CRetType: qmckl_exit_code
:FRetType: qmckl_exit_code
:END:
@ -4120,9 +4122,9 @@ qmckl_exit_code qmckl_provide_jastrow_champ_factor_en(qmckl_context context)
| ~context~ | ~qmckl_context~ | in | Global state |
| ~walk_num~ | ~int64_t~ | in | Number of walkers |
| ~elec_num~ | ~int64_t~ | in | Number of electrons |
| ~nucl_num~ | ~int64_t~ | in | Number of nucleii |
| ~nucl_num~ | ~int64_t~ | in | Number of nuclei |
| ~type_nucl_num~ | ~int64_t~ | in | Number of unique nuclei |
| ~type_nucl_vector~ | ~int64_t[nucl_num]~ | in | IDs of unique nucleii |
| ~type_nucl_vector~ | ~int64_t[nucl_num]~ | in | IDs of unique nuclei |
| ~aord_num~ | ~int64_t~ | in | Number of coefficients |
| ~a_vector~ | ~double[aord_num+1][type_nucl_num]~ | in | List of coefficients |
| ~en_distance_rescaled~ | ~double[walk_num][nucl_num][elec_num]~ | in | Electron-nucleus distances |
@ -4130,7 +4132,7 @@ qmckl_exit_code qmckl_provide_jastrow_champ_factor_en(qmckl_context context)
| ~factor_en~ | ~double[walk_num]~ | out | Electron-nucleus jastrow |
#+begin_src f90 :comments org :tangle (eval f) :noweb yes
integer function qmckl_compute_factor_en_f( &
integer function qmckl_compute_factor_en_doc_f( &
context, walk_num, elec_num, nucl_num, type_nucl_num, &
type_nucl_vector, aord_num, a_vector, &
en_distance_rescaled, asymp_jasa, factor_en) &
@ -4194,15 +4196,14 @@ integer function qmckl_compute_factor_en_f( &
end do
end do
end function qmckl_compute_factor_en_f
end function qmckl_compute_factor_en_doc_f
#+end_src
#+CALL: generate_c_interface(table=qmckl_factor_en_args,rettyp=get_value("CRetType"),fname=get_value("Name"))
#+RESULTS:
#+begin_src f90 :tangle (eval f) :comments org :exports none
integer(c_int32_t) function qmckl_compute_factor_en &
integer(c_int32_t) function qmckl_compute_factor_en_doc &
(context, &
walk_num, &
elec_num, &
@ -4231,8 +4232,8 @@ end function qmckl_compute_factor_en_f
real (c_double ) , intent(in) :: asymp_jasa(type_nucl_num)
real (c_double ) , intent(out) :: factor_en(walk_num)
integer(c_int32_t), external :: qmckl_compute_factor_en_f
info = qmckl_compute_factor_en_f &
integer(c_int32_t), external :: qmckl_compute_factor_en_doc_f
info = qmckl_compute_factor_en_doc_f &
(context, &
walk_num, &
elec_num, &
@ -4245,7 +4246,7 @@ end function qmckl_compute_factor_en_f
asymp_jasa, &
factor_en)
end function qmckl_compute_factor_en
end function qmckl_compute_factor_en_doc
#+end_src
#+begin_src c :comments org :tangle (eval c) :noweb yes
@ -4340,7 +4341,20 @@ qmckl_exit_code qmckl_compute_factor_en (
#+RESULTS:
#+begin_src c :tangle (eval h_func) :comments org
qmckl_exit_code qmckl_compute_factor_en (
qmckl_exit_code qmckl_compute_factor_en (
const qmckl_context context,
const int64_t walk_num,
const int64_t elec_num,
const int64_t nucl_num,
const int64_t type_nucl_num,
const int64_t* type_nucl_vector,
const int64_t aord_num,
const double* a_vector,
const double* en_distance_rescaled,
const double* asymp_jasa,
double* const factor_en );
qmckl_exit_code qmckl_compute_factor_en_doc (
const qmckl_context context,
const int64_t walk_num,
const int64_t elec_num,
@ -4354,6 +4368,31 @@ qmckl_exit_code qmckl_compute_factor_en (
double* const factor_en );
#+end_src
#+begin_src c :tangle (eval c) :comments org
qmckl_exit_code qmckl_compute_factor_en (
const qmckl_context context,
const int64_t walk_num,
const int64_t elec_num,
const int64_t nucl_num,
const int64_t type_nucl_num,
const int64_t* type_nucl_vector,
const int64_t aord_num,
const double* a_vector,
const double* en_distance_rescaled,
const double* asymp_jasa,
double* const factor_en )
{
#ifdef HAVE_HPC
return qmckl_compute_factor_en_doc (context, walk_num, elec_num, nucl_num, type_nucl_num,
type_nucl_vector, aord_num, a_vector, en_distance_rescaled,
asymp_jasa, factor_en );
#else
return qmckl_compute_factor_en_doc (context, walk_num, elec_num, nucl_num, type_nucl_num,
type_nucl_vector, aord_num, a_vector, en_distance_rescaled,
asymp_jasa, factor_en );
#endif
}
#+end_src
**** Test
#+begin_src python :results output :exports none :noweb yes
import numpy as np
@ -4544,9 +4583,9 @@ qmckl_exit_code qmckl_provide_jastrow_champ_factor_en_deriv_e(qmckl_context cont
| ~context~ | ~qmckl_context~ | in | Global state |
| ~walk_num~ | ~int64_t~ | in | Number of walkers |
| ~elec_num~ | ~int64_t~ | in | Number of electrons |
| ~nucl_num~ | ~int64_t~ | in | Number of nucleii |
| ~nucl_num~ | ~int64_t~ | in | Number of nuclei |
| ~type_nucl_num~ | ~int64_t~ | in | Number of unique nuclei |
| ~type_nucl_vector~ | ~int64_t[nucl_num]~ | in | IDs of unique nucleii |
| ~type_nucl_vector~ | ~int64_t[nucl_num]~ | in | IDs of unique nuclei |
| ~aord_num~ | ~int64_t~ | in | Number of coefficients |
| ~a_vector~ | ~double[aord_num+1][type_nucl_num]~ | in | List of coefficients |
| ~en_distance_rescaled~ | ~double[walk_num][nucl_num][elec_num]~ | in | Electron-nucleus distances |
@ -7900,7 +7939,7 @@ qmckl_exit_code qmckl_compute_lkpm_combined_index (
| ~context~ | ~qmckl_context~ | in | Global state |
| ~cord_num~ | ~int64_t~ | in | Order of polynomials |
| ~elec_num~ | ~int64_t~ | in | Number of electrons |
| ~nucl_num~ | ~int64_t~ | in | Number of nucleii |
| ~nucl_num~ | ~int64_t~ | in | Number of nuclei |
| ~walk_num~ | ~int64_t~ | in | Number of walkers |
| ~een_rescaled_e~ | ~double[walk_num][0:cord_num][elec_num][elec_num]~ | in | Electron-electron rescaled factor |
| ~een_rescaled_n~ | ~double[walk_num][0:cord_num][nucl_num][elec_num]~ | in | Electron-nucleus rescaled factor |
@ -8173,7 +8212,7 @@ qmckl_exit_code qmckl_compute_tmp_c_hpc (const qmckl_context context,
| ~context~ | ~qmckl_context~ | in | Global state |
| ~cord_num~ | ~int64_t~ | in | Order of polynomials |
| ~elec_num~ | ~int64_t~ | in | Number of electrons |
| ~nucl_num~ | ~int64_t~ | in | Number of nucleii |
| ~nucl_num~ | ~int64_t~ | in | Number of nuclei |
| ~walk_num~ | ~int64_t~ | in | Number of walkers |
| ~een_rescaled_e_deriv_e~ | ~double[walk_num][0:cord_num][elec_num][4][elec_num]~ | in | Electron-electron rescaled factor derivatives |
| ~een_rescaled_n~ | ~double[walk_num][0:cord_num][nucl_num][elec_num]~ | in | Electron-nucleus rescaled factor |
@ -8653,7 +8692,7 @@ qmckl_exit_code qmckl_provide_factor_een(qmckl_context context)
| ~context~ | ~qmckl_context~ | in | Global state |
| ~walk_num~ | ~int64_t~ | in | Number of walkers |
| ~elec_num~ | ~int64_t~ | in | Number of electrons |
| ~nucl_num~ | ~int64_t~ | in | Number of nucleii |
| ~nucl_num~ | ~int64_t~ | in | Number of nuclei |
| ~cord_num~ | ~int64_t~ | in | order of polynomials |
| ~dim_c_vector~ | ~int64_t~ | in | dimension of full coefficient vector |
| ~c_vector_full~ | ~double[dim_c_vector][nucl_num]~ | in | full coefficient vector |
@ -8809,28 +8848,28 @@ end function qmckl_compute_factor_een_naive_f
**** Compute
:PROPERTIES:
:Name: qmckl_compute_factor_een
:Name: qmckl_compute_factor_een_doc
:CRetType: qmckl_exit_code
:FRetType: qmckl_exit_code
:END:
#+NAME: qmckl_factor_een_args
| Variable | Type | In/Out | Description |
|-----------------------+------------------------------------------------------------------+---------------------------------+--------------------------------------|
|-----------------------+------------------------------------------------------------------+--------+--------------------------------------|
| ~context~ | ~qmckl_context~ | in | Global state |
| ~walk_num~ | ~int64_t~ | in | Number of walkers |
| ~elec_num~ | ~int64_t~ | in | Number of electrons |
| ~nucl_num~ | ~int64_t~ | in | Number of nucleii |
| ~nucl_num~ | ~int64_t~ | in | Number of nuclei |
| ~cord_num~ | ~int64_t~ | in | order of polynomials |
| ~dim_c_vector~ | ~int64_t~ | in | dimension of full coefficient vector |
| ~c_vector_full~ | ~double[dim_c_vector][nucl_num]~ | in | full coefficient vector |
| ~lkpm_combined_index~ | ~int64_t[4][dim_c_vector]~ | in | combined indices |
| ~tmp_c~ | ~double[walk_num][0:cord_num-1][0:cord_num][nucl_num][elec_num]~ | vector of non-zero coefficients | |
| ~een_rescaled_n~ | ~double[walk_num][0:cord_num][nucl_num][elec_num]~ | in | Electron-nucleus rescaled factor |
| ~tmp_c~ | ~double[walk_num][0:cord_num-1][0:cord_num][nucl_num][elec_num]~ | in | vector of non-zero coefficients |
| ~een_rescaled_n~ | ~double[walk_num][0:cord_num][nucl_num][elec_num]~ | in | Electron-nucleus rescaled distances |
| ~factor_een~ | ~double[walk_num]~ | out | Electron-nucleus jastrow |
#+begin_src f90 :comments org :tangle (eval f) :noweb yes
integer function qmckl_compute_factor_een_f( &
integer function qmckl_compute_factor_een_doc_f( &
context, walk_num, elec_num, nucl_num, cord_num, &
dim_c_vector, c_vector_full, lkpm_combined_index, &
tmp_c, een_rescaled_n, factor_een) &
@ -8897,14 +8936,27 @@ integer function qmckl_compute_factor_een_f( &
end do
end do
end function qmckl_compute_factor_een_f
end function qmckl_compute_factor_een_doc_f
#+end_src
# #+CALL: generate_c_header(table=qmckl_factor_een_args,rettyp=get_value("CRetType"),fname=get_value("Name"))
# #+CALL: generate_c_header(table=qmckl_factor_een_args,rettyp=qmckl_exit_code),fname=get_value("Name"))
#+begin_src c :comments org :tangle (eval h_private_func) :noweb yes :exports none
qmckl_exit_code qmckl_compute_factor_een (
const qmckl_context context,
qmckl_exit_code
qmckl_compute_factor_een_doc (const qmckl_context context,
const int64_t walk_num,
const int64_t elec_num,
const int64_t nucl_num,
const int64_t cord_num,
const int64_t dim_c_vector,
const double* c_vector_full,
const int64_t* lkpm_combined_index,
const double* een_rescaled_e,
const double* een_rescaled_n,
double* const factor_een );
qmckl_exit_code
qmckl_compute_factor_een (const qmckl_context context,
const int64_t walk_num,
const int64_t elec_num,
const int64_t nucl_num,
@ -8917,11 +8969,36 @@ end function qmckl_compute_factor_een_f
double* const factor_een );
#+end_src
#+CALL: generate_c_interface(table=qmckl_factor_een_args,rettyp=get_value("CRetType"),fname=get_value("Name"))
#+begin_src c :comments org :tangle (eval c) :noweb yes :exports none
qmckl_exit_code
qmckl_compute_factor_een (const qmckl_context context,
const int64_t walk_num,
const int64_t elec_num,
const int64_t nucl_num,
const int64_t cord_num,
const int64_t dim_c_vector,
const double* c_vector_full,
const int64_t* lkpm_combined_index,
const double* een_rescaled_e,
const double* een_rescaled_n,
double* const factor_een )
{
#ifdef HAVE_HPC
return qmckl_compute_factor_een_doc (context, walk_num, elec_num, nucl_num, cord_num, dim_c_vector,
c_vector_full, lkpm_combined_index, een_rescaled_e, een_rescaled_n,
factor_een );
#else
return qmckl_compute_factor_een_doc (context, walk_num, elec_num, nucl_num, cord_num, dim_c_vector,
c_vector_full, lkpm_combined_index, een_rescaled_e, een_rescaled_n,
factor_een );
#endif
}
#+end_src
#+CALL: generate_c_interface(table=qmckl_factor_een_args,rettyp=get_value("CRetType"),fname="qmckl_compute_factor_een_doc"))
#+RESULTS:
#+begin_src f90 :tangle (eval f) :comments org :exports none
integer(c_int32_t) function qmckl_compute_factor_een &
integer(c_int32_t) function qmckl_compute_factor_een_doc &
(context, &
walk_num, &
elec_num, &
@ -8930,7 +9007,7 @@ end function qmckl_compute_factor_een_f
dim_c_vector, &
c_vector_full, &
lkpm_combined_index, &
een_rescaled_e, &
tmp_c, &
een_rescaled_n, &
factor_een) &
bind(C) result(info)
@ -8946,12 +9023,12 @@ end function qmckl_compute_factor_een_f
integer (c_int64_t) , intent(in) , value :: dim_c_vector
real (c_double ) , intent(in) :: c_vector_full(nucl_num,dim_c_vector)
integer (c_int64_t) , intent(in) :: lkpm_combined_index(dim_c_vector,4)
real (c_double ) , intent(in) :: een_rescaled_e(0:cord_num,elec_num,elec_num,walk_num)
real (c_double ) , intent(in) :: tmp_c(elec_num,nucl_num,0:cord_num,0:cord_num-1,walk_num)
real (c_double ) , intent(in) :: een_rescaled_n(elec_num,nucl_num,0:cord_num,walk_num)
real (c_double ) , intent(out) :: factor_een(walk_num)
integer(c_int32_t), external :: qmckl_compute_factor_een_f
info = qmckl_compute_factor_een_f &
integer(c_int32_t), external :: qmckl_compute_factor_een_doc_f
info = qmckl_compute_factor_een_doc_f &
(context, &
walk_num, &
elec_num, &
@ -8960,13 +9037,14 @@ end function qmckl_compute_factor_een_f
dim_c_vector, &
c_vector_full, &
lkpm_combined_index, &
een_rescaled_e, &
tmp_c, &
een_rescaled_n, &
factor_een)
end function qmckl_compute_factor_een
end function qmckl_compute_factor_een_doc
#+end_src
**** Test
#+begin_src python :results output :exports none :noweb yes
import numpy as np
@ -9177,7 +9255,7 @@ qmckl_exit_code qmckl_provide_factor_een_deriv_e(qmckl_context context)
| ~context~ | ~qmckl_context~ | in | Global state |
| ~walk_num~ | ~int64_t~ | in | Number of walkers |
| ~elec_num~ | ~int64_t~ | in | Number of electrons |
| ~nucl_num~ | ~int64_t~ | in | Number of nucleii |
| ~nucl_num~ | ~int64_t~ | in | Number of nuclei |
| ~cord_num~ | ~int64_t~ | in | order of polynomials |
| ~dim_c_vector~ | ~int64_t~ | in | dimension of full coefficient vector |
| ~c_vector_full~ | ~double[dim_c_vector][nucl_num]~ | in | full coefficient vector |
@ -9374,7 +9452,7 @@ end function qmckl_compute_factor_een_deriv_e_naive_f
| ~context~ | ~qmckl_context~ | in | Global state |
| ~walk_num~ | ~int64_t~ | in | Number of walkers |
| ~elec_num~ | ~int64_t~ | in | Number of electrons |
| ~nucl_num~ | ~int64_t~ | in | Number of nucleii |
| ~nucl_num~ | ~int64_t~ | in | Number of nuclei |
| ~cord_num~ | ~int64_t~ | in | order of polynomials |
| ~dim_c_vector~ | ~int64_t~ | in | dimension of full coefficient vector |
| ~c_vector_full~ | ~double[dim_c_vector][nucl_num]~ | in | full coefficient vector |
@ -9614,10 +9692,280 @@ rc = qmckl_get_jastrow_champ_factor_een_deriv_e(context, &(factor_een_deriv_e[0]
assert(fabs(factor_een_deriv_e[0][0][0] + 0.0005481671107226865) < 1e-12);
#+end_src
** Jastrow VGL functions
** Total Jastrow value
:PROPERTIES:
:Name: qmckl_compute_jastrow_champ_value_doc
:CRetType: qmckl_exit_code
:FRetType: qmckl_exit_code
:END:
Values, gradient and Laplacian of the total Jastrow factor.
Value of the total Jastrow factor.
*** Reference version
#+NAME: qmckl_jastrow_champ_value_args
| Variable | Type | In/Out | Description |
|------------------------+------------------------------------------------------------------+--------+-----------------------------------------|
| ~context~ | ~qmckl_context~ | in | Global state |
| ~walk_num~ | ~int64_t~ | in | Number of walkers |
| ~elec_num~ | ~int64_t~ | in | Number of electrons |
| ~up_num~ | ~int64_t~ | in | Number of $\alpha$ electrons |
| ~nucl_num~ | ~int64_t~ | in | Number of nuclei |
| ~type_nucl_num~ | ~int64_t~ | in | Number of unique nuclei |
| ~type_nucl_vector~ | ~int64_t[nucl_num]~ | in | IDs of unique nuclei |
| ~dim_c_vector~ | ~int64_t~ | in | Dimension of full coefficient vector |
| ~aord_num~ | ~int64_t~ | in | Number of $a$ coefficients |
| ~bord_num~ | ~int64_t~ | in | Number of $b$ coefficients |
| ~cord_num~ | ~int64_t~ | in | Order of polynomials |
| ~a_vector~ | ~double[aord_num+1][type_nucl_num]~ | in | List of coefficients for $a$ parameters |
| ~b_vector~ | ~double[bord_num+1]~ | in | List of coefficients for $b$ parameters |
| ~c_vector_full~ | ~double[dim_c_vector][nucl_num]~ | in | Full coefficient vector |
| ~lkpm_combined_index~ | ~int64_t[4][dim_c_vector]~ | in | Combined indices |
| ~tmp_c~ | ~double[walk_num][0:cord_num-1][0:cord_num][nucl_num][elec_num]~ | in | Vector of non-zero coefficients |
| ~ee_distance_rescaled~ | ~double[walk_num][elec_num][elec_num]~ | in | Electron-electron distances |
| ~en_distance_rescaled~ | ~double[walk_num][nucl_num][elec_num]~ | in | Electron-nucleus distances |
| ~een_rescaled_n~ | ~double[walk_num][0:cord_num][nucl_num][elec_num]~ | in | Electron-nucleus rescaled distances |
| ~asymp_jasa~ | ~double[type_nucl_num]~ | in | Type of nuclei |
| ~asymp_jasb~ | ~double[2]~ | in | Asymptotic value of the Jastrow |
| ~factor_ee~ | ~double[walk_num]~ | out | $f_{ee}$ |
#+begin_src f90 :comments org :tangle (eval f) :noweb yes
integer function qmckl_compute_jastrow_champ_value_doc_f(context, &
walk_num, elec_num, up_num, nucl_num, type_nucl_num, type_nucl_vector, &
dim_c_vector, aord_num, bord_num, cord_num, a_vector, b_vector, &
c_vector_full, lkpm_combined_index, tmp_c, ee_distance_rescaled, &
en_distance_rescaled, een_rescaled_n, asymp_jasa, asymp_jasb, &
val) &
result(info)
use qmckl
implicit none
integer(qmckl_context), intent(in) :: context
integer*8 , intent(in) :: walk_num, elec_num, up_num, nucl_num
integer*8 , intent(in) :: type_nucl_num, dim_c_vector
integer*8 , intent(in) :: type_nucl_vector(nucl_num)
integer*8 , intent(in) :: aord_num, bord_num, cord_num
double precision , intent(in) :: a_vector(type_nucl_num, aord_num + 1)
double precision , intent(in) :: b_vector(bord_num + 1)
double precision , intent(in) :: c_vector_full(nucl_num, dim_c_vector)
integer*8 , intent(in) :: lkpm_combined_index(dim_c_vector,4)
double precision , intent(in) :: tmp_c(elec_num, nucl_num,0:cord_num, 0:cord_num-1, walk_num)
double precision , intent(in) :: ee_distance_rescaled(elec_num, elec_num, walk_num)
double precision , intent(in) :: en_distance_rescaled(elec_num, nucl_num, walk_num)
double precision , intent(in) :: een_rescaled_n(elec_num, nucl_num, 0:cord_num, walk_num)
double precision , intent(in) :: asymp_jasa(type_nucl_num), asymp_jasb(2)
double precision , intent(out) :: val(walk_num)
integer :: iwalk
double precision, allocatable :: v(:), gl(:,:,:)
integer, external :: qmckl_compute_factor_ee_doc_f
integer, external :: qmckl_compute_factor_en_doc_f
integer, external :: qmckl_compute_factor_een_doc_f
allocate(v(walk_num))
info = qmckl_compute_factor_ee_doc_f(context, walk_num, elec_num, up_num, bord_num, &
b_vector, ee_distance_rescaled, asymp_jasb, val)
if (info /= QMCKL_SUCCESS) return
info = qmckl_compute_factor_en_doc_f(context, walk_num, elec_num, nucl_num, type_nucl_num, &
type_nucl_vector, aord_num, a_vector, en_distance_rescaled, asymp_jasa, v)
if (info /= QMCKL_SUCCESS) return
val(1:walk_num) = val(1:walk_num) + v(1:walk_num)
info = qmckl_compute_factor_een_doc_f(context, walk_num, elec_num, nucl_num, cord_num, &
dim_c_vector, c_vector_full, lkpm_combined_index, tmp_c, een_rescaled_n, v)
if (info /= QMCKL_SUCCESS) return
val(1:walk_num) = val(1:walk_num) + v(1:walk_num)
deallocate(v,gl)
end function qmckl_compute_jastrow_champ_value_doc_f
#+end_src
#+CALL: generate_private_c_header(table=qmckl_jastrow_champ_value_args,rettyp="qmckl_exit_code",fname="qmckl_compute_jastrow_champ_value_doc")
#+RESULTS:
#+begin_src c :tangle (eval h_private_func) :comments org
qmckl_exit_code qmckl_compute_jastrow_champ_value_doc (
const qmckl_context context,
const int64_t walk_num,
const int64_t elec_num,
const int64_t up_num,
const int64_t nucl_num,
const int64_t type_nucl_num,
const int64_t* type_nucl_vector,
const int64_t dim_c_vector,
const int64_t aord_num,
const int64_t bord_num,
const int64_t cord_num,
const double* a_vector,
const double* b_vector,
const double* c_vector_full,
const int64_t* lkpm_combined_index,
const double* tmp_c,
const double* ee_distance_rescaled,
const double* en_distance_rescaled,
const double* een_rescaled_n,
const double* asymp_jasa,
const double* asymp_jasb,
double* const factor_ee );
#+end_src
#+CALL: generate_private_c_header(table=qmckl_jastrow_champ_value_args,rettyp="qmckl_exit_code",fname="qmckl_compute_jastrow_champ_value")
#+RESULTS:
#+begin_src c :tangle (eval h_private_func) :comments org
qmckl_exit_code qmckl_compute_jastrow_champ_value (
const qmckl_context context,
const int64_t walk_num,
const int64_t elec_num,
const int64_t up_num,
const int64_t nucl_num,
const int64_t type_nucl_num,
const int64_t* type_nucl_vector,
const int64_t dim_c_vector,
const int64_t aord_num,
const int64_t bord_num,
const int64_t cord_num,
const double* a_vector,
const double* b_vector,
const double* c_vector_full,
const int64_t* lkpm_combined_index,
const double* tmp_c,
const double* ee_distance_rescaled,
const double* en_distance_rescaled,
const double* een_rescaled_n,
const double* asymp_jasa,
const double* asymp_jasb,
double* const factor_ee );
#+end_src
#+CALL: generate_c_interface(table=qmckl_jastrow_champ_value_args,rettyp=get_value("CRetType"),fname=get_value("Name"))
#+RESULTS:
#+begin_src f90 :tangle (eval f) :comments org :exports none
integer(c_int32_t) function qmckl_compute_jastrow_champ_value_doc &
(context, &
walk_num, &
elec_num, &
up_num, &
nucl_num, &
type_nucl_num, &
type_nucl_vector, &
dim_c_vector, &
aord_num, &
bord_num, &
cord_num, &
a_vector, &
b_vector, &
c_vector_full, &
lkpm_combined_index, &
tmp_c, &
ee_distance_rescaled, &
en_distance_rescaled, &
een_rescaled_n, &
asymp_jasa, &
asymp_jasb, &
factor_ee) &
bind(C) result(info)
use, intrinsic :: iso_c_binding
implicit none
integer (c_int64_t) , intent(in) , value :: context
integer (c_int64_t) , intent(in) , value :: walk_num
integer (c_int64_t) , intent(in) , value :: elec_num
integer (c_int64_t) , intent(in) , value :: up_num
integer (c_int64_t) , intent(in) , value :: nucl_num
integer (c_int64_t) , intent(in) , value :: type_nucl_num
integer (c_int64_t) , intent(in) :: type_nucl_vector(nucl_num)
integer (c_int64_t) , intent(in) , value :: dim_c_vector
integer (c_int64_t) , intent(in) , value :: aord_num
integer (c_int64_t) , intent(in) , value :: bord_num
integer (c_int64_t) , intent(in) , value :: cord_num
real (c_double ) , intent(in) :: a_vector(type_nucl_num,aord_num+1)
real (c_double ) , intent(in) :: b_vector(bord_num+1)
real (c_double ) , intent(in) :: c_vector_full(nucl_num,dim_c_vector)
integer (c_int64_t) , intent(in) :: lkpm_combined_index(dim_c_vector,4)
real (c_double ) , intent(in) :: tmp_c(elec_num,nucl_num,0:cord_num,0:cord_num-1,walk_num)
real (c_double ) , intent(in) :: ee_distance_rescaled(elec_num,elec_num,walk_num)
real (c_double ) , intent(in) :: en_distance_rescaled(elec_num,nucl_num,walk_num)
real (c_double ) , intent(in) :: een_rescaled_n(elec_num,nucl_num,0:cord_num,walk_num)
real (c_double ) , intent(in) :: asymp_jasa(type_nucl_num)
real (c_double ) , intent(in) :: asymp_jasb(2)
real (c_double ) , intent(out) :: factor_ee(walk_num)
integer(c_int32_t), external :: qmckl_compute_jastrow_champ_value_doc_f
info = qmckl_compute_jastrow_champ_value_doc_f &
(context, &
walk_num, &
elec_num, &
up_num, &
nucl_num, &
type_nucl_num, &
type_nucl_vector, &
dim_c_vector, &
aord_num, &
bord_num, &
cord_num, &
a_vector, &
b_vector, &
c_vector_full, &
lkpm_combined_index, &
tmp_c, &
ee_distance_rescaled, &
en_distance_rescaled, &
een_rescaled_n, &
asymp_jasa, &
asymp_jasb, &
factor_ee)
end function qmckl_compute_jastrow_champ_value_doc
#+end_src
#+begin_src c :tangle (eval c) :comments org
qmckl_exit_code qmckl_compute_jastrow_champ_value (
const qmckl_context context,
const int64_t walk_num,
const int64_t elec_num,
const int64_t up_num,
const int64_t nucl_num,
const int64_t type_nucl_num,
const int64_t* type_nucl_vector,
const int64_t dim_c_vector,
const int64_t aord_num,
const int64_t bord_num,
const int64_t cord_num,
const double* a_vector,
const double* b_vector,
const double* c_vector_full,
const int64_t* lkpm_combined_index,
const double* tmp_c,
const double* ee_distance_rescaled,
const double* en_distance_rescaled,
const double* een_rescaled_n,
const double* asymp_jasa,
const double* asymp_jasb,
double* const val)
{
#ifdef HAVE_HPC
return qmckl_compute_jastrow_champ_value_doc (context, walk_num, elec_num, up_num, nucl_num,
type_nucl_num, type_nucl_vector, dim_c_vector, aord_num, bord_num,
cord_num, a_vector, b_vector, c_vector_full, lkpm_combined_index,
tmp_c, ee_distance_rescaled, en_distance_rescaled, een_rescaled_n,
asymp_jasa, asymp_jasb, val);
#else
return qmckl_compute_jastrow_champ_value_doc (context, walk_num, elec_num, up_num, nucl_num,
type_nucl_num, type_nucl_vector, dim_c_vector, aord_num, bord_num,
cord_num, a_vector, b_vector, c_vector_full, lkpm_combined_index,
tmp_c, ee_distance_rescaled, en_distance_rescaled, een_rescaled_n,
asymp_jasa, asymp_jasb, val);
#endif
}
#+end_src
* End of files :noexport:
#+begin_src c :tangle (eval h_private_type)