Compare commits

...

5 Commits

8 changed files with 142 additions and 151 deletions

View File

@ -233,7 +233,7 @@ qmckl_exit_code qmckl_get_ao_basis_$V$ ( const qmckl_context context,
interface
integer(c_int32_t) function qmckl_set_ao_basis_$V$ (context, $V$) &
bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
integer (c_int64_t) , intent(in) , value :: context
@ -244,7 +244,7 @@ end interface
interface
integer(c_int32_t) function qmckl_get_ao_basis_$V$ (context, $V$) &
bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
integer (c_int64_t) , intent(in) , value :: context
@ -269,7 +269,7 @@ qmckl_exit_code qmckl_get_ao_basis_$V$ ( const qmckl_context context,
interface
integer(c_int32_t) function qmckl_set_ao_basis_$V$ (context, &
$V$, size_max) bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
integer (c_int64_t) , intent(in) , value :: context
@ -281,7 +281,7 @@ end interface
interface
integer(c_int32_t) function qmckl_get_ao_basis_$V$ (context, &
$V$, size_max) bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
integer (c_int64_t) , intent(in) , value :: context
@ -1214,7 +1214,7 @@ qmckl_set_ao_basis_cartesian (qmckl_context context,
interface
integer(c_int32_t) function qmckl_set_ao_basis_type (context, &
basis_type) bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
integer (c_int64_t) , intent(in) , value :: context
@ -1225,7 +1225,7 @@ end interface
interface
integer(c_int32_t) function qmckl_set_ao_basis_shell_num(context, &
num) bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
integer (c_int64_t) , intent(in) , value :: context
@ -1236,7 +1236,7 @@ end interface
interface
integer(c_int32_t) function qmckl_set_ao_basis_prim_num(context, &
num) bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
integer (c_int64_t) , intent(in) , value :: context
@ -1247,7 +1247,7 @@ end interface
interface
integer(c_int32_t) function qmckl_set_ao_basis_nucleus_index(context, &
idx, size_max) bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
integer (c_int64_t) , intent(in) , value :: context
@ -1259,7 +1259,7 @@ end interface
interface
integer(c_int32_t) function qmckl_set_ao_basis_nucleus_shell_num(context, &
shell_num, size_max) bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
integer (c_int64_t) , intent(in) , value :: context
@ -1271,7 +1271,7 @@ end interface
interface
integer(c_int32_t) function qmckl_set_ao_basis_shell_ang_mom(context, &
shell_ang_mom, size_max) bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
integer (c_int64_t) , intent(in) , value :: context
@ -1283,7 +1283,7 @@ end interface
interface
integer(c_int32_t) function qmckl_set_ao_basis_shell_prim_num(context, &
shell_prim_num, size_max) bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
integer (c_int64_t) , intent(in) , value :: context
@ -1295,7 +1295,7 @@ end interface
interface
integer(c_int32_t) function qmckl_set_ao_basis_shell_prim_index(context, &
shell_prim_index, size_max) bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
integer (c_int64_t) , intent(in) , value :: context
@ -1307,7 +1307,7 @@ end interface
interface
integer(c_int32_t) function qmckl_set_ao_basis_shell_factor(context, &
shell_factor, size_max) bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
integer (c_int64_t) , intent(in) , value :: context
@ -1319,7 +1319,7 @@ end interface
interface
integer(c_int32_t) function qmckl_set_ao_basis_exponent(context, &
exponent, size_max) bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
integer (c_int64_t) , intent(in) , value :: context
@ -1331,7 +1331,7 @@ end interface
interface
integer(c_int32_t) function qmckl_set_ao_basis_coefficient(context, &
coefficient, size_max) bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
integer (c_int64_t) , intent(in) , value :: context
@ -1343,7 +1343,7 @@ end interface
interface
integer(c_int32_t) function qmckl_set_ao_basis_prim_factor(context, &
prim_factor, size_max) bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
integer (c_int64_t) , intent(in) , value :: context
@ -1355,7 +1355,7 @@ end interface
interface
integer(c_int32_t) function qmckl_set_ao_basis_ao_num(context, &
num) bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
integer (c_int64_t) , intent(in) , value :: context
@ -1366,7 +1366,7 @@ end interface
interface
integer(c_int32_t) function qmckl_set_ao_basis_cartesian(context, &
cartesian) bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
integer (c_int64_t) , intent(in) , value :: context
@ -1377,7 +1377,7 @@ end interface
interface
integer(c_int32_t) function qmckl_set_ao_basis_ao_factor(context, &
ao_factor, size_max) bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
integer (c_int64_t) , intent(in) , value :: context
@ -2129,7 +2129,7 @@ bool qmckl_ao_basis_provided(const qmckl_context context) {
interface
integer(c_int32_t) function qmckl_get_ao_basis_type (context, &
basis_type) bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
integer (c_int64_t) , intent(in) , value :: context
@ -2140,7 +2140,7 @@ end interface
interface
integer(c_int32_t) function qmckl_get_ao_basis_shell_num(context, &
num) bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
integer (c_int64_t) , intent(in) , value :: context
@ -2151,7 +2151,7 @@ end interface
interface
integer(c_int32_t) function qmckl_get_ao_basis_prim_num(context, &
num) bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
integer (c_int64_t) , intent(in) , value :: context
@ -2162,7 +2162,7 @@ end interface
interface
integer(c_int32_t) function qmckl_get_ao_basis_nucleus_shell_num(context, &
shell_num, size_max) bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
integer (c_int64_t) , intent(in) , value :: context
@ -2174,7 +2174,7 @@ end interface
interface
integer(c_int32_t) function qmckl_get_ao_basis_nucleus_index(context, &
idx, size_max) bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
integer (c_int64_t) , intent(in) , value :: context
@ -2186,7 +2186,7 @@ end interface
interface
integer(c_int32_t) function qmckl_get_ao_basis_shell_ang_mom(context, &
shell_ang_mom, size_max) bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
integer (c_int64_t) , intent(in) , value :: context
@ -2198,7 +2198,7 @@ end interface
interface
integer(c_int32_t) function qmckl_get_ao_basis_shell_prim_num(context, &
shell_prim_num, size_max) bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
integer (c_int64_t) , intent(in) , value :: context
@ -2210,7 +2210,7 @@ end interface
interface
integer(c_int32_t) function qmckl_get_ao_basis_shell_prim_index(context, &
shell_prim_index, size_max) bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
integer (c_int64_t) , intent(in) , value :: context
@ -2222,7 +2222,7 @@ end interface
interface
integer(c_int32_t) function qmckl_get_ao_basis_shell_factor(context, &
shell_factor, size_max) bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
integer (c_int64_t) , intent(in) , value :: context
@ -2234,7 +2234,7 @@ end interface
interface
integer(c_int32_t) function qmckl_get_ao_basis_exponent(context, &
exponent, size_max) bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
integer (c_int64_t) , intent(in) , value :: context
@ -2246,7 +2246,7 @@ end interface
interface
integer(c_int32_t) function qmckl_get_ao_basis_coefficient(context, &
coefficient, size_max) bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
integer (c_int64_t) , intent(in) , value :: context
@ -2258,7 +2258,7 @@ end interface
interface
integer(c_int32_t) function qmckl_get_ao_basis_prim_factor(context, &
prim_factor, size_max) bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
integer (c_int64_t) , intent(in) , value :: context
@ -2270,7 +2270,7 @@ end interface
interface
integer(c_int32_t) function qmckl_get_ao_basis_ao_num(context, &
num) bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
integer (c_int64_t) , intent(in) , value :: context
@ -2281,7 +2281,7 @@ end interface
interface
integer(c_int32_t) function qmckl_get_ao_basis_cartesian(context, &
cartesian) bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
integer (c_int64_t) , intent(in) , value :: context
@ -2292,7 +2292,7 @@ end interface
interface
integer(c_int32_t) function qmckl_get_ao_basis_ao_factor(context, &
ao_factor, size_max) bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
integer (c_int64_t) , intent(in) , value :: context
@ -3018,7 +3018,7 @@ qmckl_get_ao_basis_primitive_vgl (qmckl_context context,
integer(c_int32_t) function qmckl_get_ao_basis_primitive_vgl &
(context, primitive_vgl, size_max) &
bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
@ -3079,7 +3079,7 @@ qmckl_get_ao_basis_shell_vgl (qmckl_context context,
integer(c_int32_t) function qmckl_get_ao_basis_shell_vgl &
(context, shell_vgl, size_max) &
bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
@ -3141,7 +3141,7 @@ qmckl_get_ao_basis_ao_vgl (qmckl_context context,
interface
integer(c_int32_t) function qmckl_get_ao_basis_ao_vgl (context, &
ao_vgl, size_max) bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
integer (c_int64_t) , intent(in) , value :: context
@ -3207,7 +3207,7 @@ qmckl_get_ao_basis_ao_vgl_inplace (qmckl_context context,
interface
integer(c_int32_t) function qmckl_get_ao_basis_ao_vgl_inplace (context, &
ao_vgl, size_max) bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
integer (c_int64_t) , intent(in) , value :: context
@ -3268,7 +3268,7 @@ qmckl_get_ao_basis_ao_value (qmckl_context context,
interface
integer(c_int32_t) function qmckl_get_ao_basis_ao_value (context, &
ao_value, size_max) bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
integer (c_int64_t) , intent(in) , value :: context
@ -3334,7 +3334,7 @@ qmckl_get_ao_basis_ao_value_inplace (qmckl_context context,
interface
integer(c_int32_t) function qmckl_get_ao_basis_ao_value_inplace (context, &
ao_value, size_max) bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
integer (c_int64_t) , intent(in) , value :: context
@ -3395,15 +3395,14 @@ qmckl_ao_gaussian_vgl(const qmckl_context context,
#+begin_src f90 :tangle (eval f)
function qmckl_ao_gaussian_vgl(context, X, R, n, A, VGL, ldv) &
bind(C) result(info)
use, intrinsic :: iso_c_binding
use qmckl_constants
implicit none
integer (qmckl_context) , intent(in) , value :: context
real (c_double) , intent(in) :: X(3), R(3)
integer (c_int64_t) , intent(in) , value :: n
integer (c_int64_t) , intent(in) , value :: ldv
real (c_double) , intent(in) :: A(n)
real (c_double) , intent(out) :: VGL(ldv,5)
integer (c_int64_t) , intent(in) , value :: ldv
integer (qmckl_exit_code) :: info
integer*8 :: i,j
@ -3462,7 +3461,6 @@ end function qmckl_ao_gaussian_vgl
interface
function qmckl_ao_gaussian_vgl(context, &
X, R, n, A, VGL, ldv) bind(C) result(info)
use, intrinsic :: iso_c_binding
use qmckl_constants
integer (qmckl_context) , intent(in) , value :: context
integer (c_int64_t) , intent(in) , value :: ldv
@ -3607,8 +3605,6 @@ function qmckl_compute_ao_basis_primitive_gaussian_vgl &
(context, prim_num, point_num, nucl_num, nucleus_prim_index, coord, nucl_coord, expo, primitive_vgl) &
bind(C) result(info)
use, intrinsic :: iso_c_binding
use qmckl_constants
use qmckl, only: qmckl_get_numprec_precision
@ -3912,7 +3908,6 @@ function qmckl_compute_ao_basis_shell_gaussian_vgl( &
expo, coef_normalized, shell_vgl) &
bind(C) result(info)
use, intrinsic :: iso_c_binding
use qmckl_constants
use qmckl, only: qmckl_get_numprec_precision
@ -4277,17 +4272,15 @@ print ( "[1][4][26] : %25.15e"% lf(a,x,y))
#+begin_src f90 :tangle (eval f)
function qmckl_ao_power(context, n, X, LMAX, P, ldp) &
bind(C) result(info)
use, intrinsic :: iso_c_binding
use qmckl_constants
implicit none
integer (qmckl_context), intent(in) , value :: context
integer (c_int64_t) , intent(in) , value :: n
integer (c_int64_t) , intent(in) , value :: ldp
real (c_double ) , intent(in) :: X(n)
integer (c_int32_t) , intent(in) :: LMAX(n)
real (c_double ) , intent(out) :: P(ldp,n)
integer (c_int64_t) , intent(in) , value :: ldp
integer(qmckl_exit_code) :: info
integer(c_int64_t) :: i,k
@ -4333,16 +4326,16 @@ end function qmckl_ao_power
integer(qmckl_exit_code) function qmckl_ao_power &
(context, n, X, LMAX, P, ldp) &
bind(C)
use, intrinsic :: iso_c_binding
use :: qmckl_constants
import
implicit none
integer (qmckl_context), intent(in) , value :: context
integer (c_int64_t) , intent(in) , value :: n
integer (c_int64_t) , intent(in) , value :: ldp
real (c_double ) , intent(in) :: X(n)
integer (c_int32_t) , intent(in) :: LMAX(n)
real (c_double ) , intent(out) :: P(ldp,n)
integer (c_int64_t) , intent(in) , value :: ldp
end function qmckl_ao_power
end interface
@ -4531,7 +4524,6 @@ qmckl_ao_polynomial_vgl (const qmckl_context context,
function qmckl_ao_polynomial_vgl_doc (context, &
X, R, lmax, n, L, ldl, VGL, ldv) &
bind(C) result(info)
use, intrinsic :: iso_c_binding
use qmckl_constants
implicit none
@ -4540,10 +4532,10 @@ function qmckl_ao_polynomial_vgl_doc (context, &
real (c_double ) , intent(in) :: R(3)
integer (c_int32_t) , intent(in) , value :: lmax
integer (c_int64_t) , intent(inout) :: n
integer (c_int32_t) , intent(out) :: L(ldl,(lmax+1)*(lmax+2)*(lmax+3)/6)
integer (c_int64_t) , intent(in) , value :: ldl
real (c_double ) , intent(out) :: VGL(ldv,(lmax+1)*(lmax+2)*(lmax+3)/6)
integer (c_int64_t) , intent(in) , value :: ldv
integer (c_int32_t) , intent(out) :: L(ldl,(lmax+1)*(lmax+2)*(lmax+3)/6)
real (c_double ) , intent(out) :: VGL(ldv,(lmax+1)*(lmax+2)*(lmax+3)/6)
integer(qmckl_exit_code) :: info
@ -4670,7 +4662,7 @@ end function qmckl_ao_polynomial_vgl_doc
integer(qmckl_exit_code) function qmckl_ao_polynomial_vgl_doc &
(context, X, R, lmax, n, L, ldl, VGL, ldv) &
bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
@ -4679,10 +4671,10 @@ end function qmckl_ao_polynomial_vgl_doc
real (c_double ) , intent(in) :: R(3)
integer (c_int32_t) , intent(in) , value :: lmax
integer (c_int64_t) , intent(inout) :: n
integer (c_int32_t) , intent(out) :: L(ldl,n)
integer (c_int64_t) , intent(in) , value :: ldl
real (c_double ) , intent(out) :: VGL(ldv,n)
integer (c_int64_t) , intent(in) , value :: ldv
integer (c_int32_t) , intent(out) :: L(ldl,n)
real (c_double ) , intent(out) :: VGL(ldv,n)
end function qmckl_ao_polynomial_vgl_doc
end interface
@ -4696,7 +4688,7 @@ end function qmckl_ao_polynomial_vgl_doc
integer(qmckl_exit_code) function qmckl_ao_polynomial_vgl &
(context, X, R, lmax, n, L, ldl, VGL, ldv) &
bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
@ -4704,11 +4696,11 @@ end function qmckl_ao_polynomial_vgl_doc
real (c_double ) , intent(in) :: X(3)
real (c_double ) , intent(in) :: R(3)
integer (c_int32_t) , intent(in) , value :: lmax
integer (c_int64_t) , intent(inout) :: n
integer (c_int32_t) , intent(out) :: L(ldl,n)
integer (c_int64_t) , intent(inout) :: n
integer (c_int64_t) , intent(in) , value :: ldl
real (c_double ) , intent(out) :: VGL(ldv,n)
integer (c_int64_t) , intent(in) , value :: ldv
integer (c_int32_t) , intent(out) :: L(ldl,n)
real (c_double ) , intent(out) :: VGL(ldv,n)
end function qmckl_ao_polynomial_vgl
end interface
@ -4787,7 +4779,6 @@ qmckl_ao_polynomial_transp_vgl (const qmckl_context context,
function qmckl_ao_polynomial_transp_vgl_doc (context, &
X, R, lmax, n, L, ldl, VGL, ldv) &
bind(C) result(info)
use, intrinsic :: iso_c_binding
use qmckl_constants
implicit none
@ -4797,10 +4788,10 @@ function qmckl_ao_polynomial_transp_vgl_doc (context, &
real (c_double ) , intent(in) :: R(3)
integer (c_int32_t) , intent(in) , value :: lmax
integer (c_int64_t) , intent(inout) :: n
integer (c_int32_t) , intent(out) :: L(ldl,(lmax+1)*(lmax+2)*(lmax+3)/6)
integer (c_int64_t) , intent(in) , value :: ldl
real (c_double ) , intent(out) :: VGL(ldv,5)
integer (c_int64_t) , intent(in) , value :: ldv
integer (c_int32_t) , intent(out) :: L(ldl,(lmax+1)*(lmax+2)*(lmax+3)/6)
real (c_double ) , intent(out) :: VGL(ldv,5)
integer(qmckl_exit_code) :: info
@ -5217,7 +5208,7 @@ qmckl_ao_polynomial_transp_vgl_hpc (const qmckl_context context,
integer(qmckl_exit_code) function qmckl_ao_polynomial_transp_vgl &
(context, X, R, lmax, n, L, ldl, VGL, ldv) &
bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
import
implicit none
@ -5226,10 +5217,10 @@ qmckl_ao_polynomial_transp_vgl_hpc (const qmckl_context context,
real (c_double ) , intent(in) :: R(3)
integer (c_int32_t) , intent(in) , value :: lmax
integer (c_int64_t) , intent(inout) :: n
integer (c_int32_t) , intent(out) :: L(ldl,n)
integer (c_int64_t) , intent(in) , value :: ldl
real (c_double ) , intent(out) :: VGL(ldv,5)
integer (c_int64_t) , intent(in) , value :: ldv
integer (c_int32_t) , intent(out) :: L(ldl,n)
real (c_double ) , intent(out) :: VGL(ldv,5)
end function qmckl_ao_polynomial_transp_vgl
end interface
@ -5409,7 +5400,6 @@ function qmckl_compute_nucleus_range_gaussian(context, &
nucleus_max_ang_mom, shell_prim_index, shell_prim_num, shell_ang_mom, &
ao_factor, expo, coef_normalized, nucleus_range) &
bind(C) result(info)
use, intrinsic :: iso_c_binding
use qmckl_constants
use qmckl, only: qmckl_ao_polynomial_vgl, qmckl_get_numprec_precision
implicit none
@ -5570,7 +5560,6 @@ function qmckl_compute_ao_value_doc(context, &
nucleus_range, nucleus_max_ang_mom, shell_ang_mom, &
ao_factor, shell_vgl, ao_value) &
bind(C) result(info)
use, intrinsic :: iso_c_binding
use qmckl_constants
use qmckl, only: qmckl_ao_polynomial_vgl, qmckl_get_numprec_precision
implicit none
@ -6360,7 +6349,6 @@ function qmckl_compute_ao_vgl_doc(context, &
nucleus_range, nucleus_max_ang_mom, shell_ang_mom, &
ao_factor, shell_vgl, ao_vgl) &
bind(C) result(info)
use, intrinsic :: iso_c_binding
use qmckl_constants
use qmckl, only : qmckl_ao_polynomial_vgl, qmckl_get_numprec_precision
implicit none
@ -6879,8 +6867,8 @@ qmckl_compute_ao_vgl_hpc_gaussian (
}
break;
}
} else {
/*
} else {
for (int64_t il=0 ; il<n ; ++il) {
ao_vgl_1[il] = 0.0;
ao_vgl_2[il] = 0.0;

View File

@ -979,7 +979,6 @@ double* qmckl_alloc_double_of_tensor(const qmckl_context context,
function qmckl_dgemm(context, TransA, TransB, &
m, n, k, alpha, A, LDA, B, LDB, beta, C, LDC) &
bind(C) result(info)
use, intrinsic :: iso_c_binding
use qmckl_constants
#ifdef HAVE_LIBQMCKLDGEMM
use qmckl_dgemm_tiled_module
@ -992,13 +991,13 @@ function qmckl_dgemm(context, TransA, TransB, &
integer (c_int64_t) , intent(in) , value :: n
integer (c_int64_t) , intent(in) , value :: k
real (c_double ) , intent(in) , value :: alpha
real (c_double ) , intent(in) :: A(lda,*)
integer (c_int64_t) , intent(in) , value :: lda
real (c_double ) , intent(in) :: B(ldb,*)
integer (c_int64_t) , intent(in) , value :: ldb
real (c_double ) , intent(in) , value :: beta
real (c_double ) , intent(out) :: C(ldc,*)
integer (c_int64_t) , intent(in) , value :: ldc
real (c_double ) , intent(in) , value :: beta
real (c_double ) , intent(in) :: A(lda,*)
real (c_double ) , intent(in) :: B(ldb,*)
real (c_double ) , intent(out) :: C(ldc,*)
integer(qmckl_exit_code) :: info
#ifdef HAVE_LIBQMCKLDGEMM
@ -1115,13 +1114,13 @@ end function qmckl_dgemm
integer (c_int64_t) , intent(in) , value :: n
integer (c_int64_t) , intent(in) , value :: k
real (c_double ) , intent(in) , value :: alpha
real (c_double ) , intent(in) :: A(lda,*)
integer (c_int64_t) , intent(in) , value :: lda
real (c_double ) , intent(in) :: B(ldb,*)
integer (c_int64_t) , intent(in) , value :: ldb
real (c_double ) , intent(in) , value :: beta
real (c_double ) , intent(out) :: C(ldc,*)
integer (c_int64_t) , intent(in) , value :: ldc
real (c_double ) , intent(in) :: A(lda,*)
real (c_double ) , intent(in) :: B(ldb,*)
real (c_double ) , intent(out) :: C(ldc,*)
end function qmckl_dgemm
end interface
@ -1274,7 +1273,6 @@ printf("qmckl_dgemm ok\n");
function qmckl_dgemm_safe(context, TransA, TransB, &
m, n, k, alpha, A, size_A, LDA, B, size_B, LDB, beta, C, size_C, LDC) &
result(info) bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
implicit none
integer (qmckl_context), intent(in) , value :: context
@ -1284,16 +1282,16 @@ function qmckl_dgemm_safe(context, TransA, TransB, &
integer (c_int64_t) , intent(in) , value :: n
integer (c_int64_t) , intent(in) , value :: k
real (c_double ) , intent(in) , value :: alpha
real (c_double ) , intent(in) :: A(lda,*)
integer (c_int64_t) , intent(in) , value :: size_A
integer (c_int64_t) , intent(in) , value :: lda
real (c_double ) , intent(in) :: B(ldb,*)
integer (c_int64_t) , intent(in) , value :: size_B
integer (c_int64_t) , intent(in) , value :: ldb
real (c_double ) , intent(in) , value :: beta
real (c_double ) , intent(out) :: C(ldc,*)
integer (c_int64_t) , intent(in) , value :: size_C
integer (c_int64_t) , intent(in) , value :: ldc
real (c_double ) , intent(in) :: A(lda,*)
real (c_double ) , intent(in) :: B(ldb,*)
real (c_double ) , intent(out) :: C(ldc,*)
integer(qmckl_exit_code) :: info
info = QMCKL_SUCCESS
@ -1375,16 +1373,16 @@ end function qmckl_dgemm_safe
integer (c_int64_t) , intent(in) , value :: n
integer (c_int64_t) , intent(in) , value :: k
real (c_double ) , intent(in) , value :: alpha
real (c_double ) , intent(in) :: A(lda,*)
integer (c_int64_t) , intent(in) , value :: size_max_A
integer (c_int64_t) , intent(in) , value :: lda
real (c_double ) , intent(in) :: B(ldb,*)
integer (c_int64_t) , intent(in) , value :: size_max_B
integer (c_int64_t) , intent(in) , value :: ldb
real (c_double ) , intent(in) , value :: beta
real (c_double ) , intent(out) :: C(ldc,*)
integer (c_int64_t) , intent(in) , value :: size_max_C
integer (c_int64_t) , intent(in) , value :: ldc
real (c_double ) , intent(in) :: A(lda,*)
real (c_double ) , intent(in) :: B(ldb,*)
real (c_double ) , intent(out) :: C(ldc,*)
end function qmckl_dgemm_safe
end interface
@ -1704,16 +1702,15 @@ print(C.T)
function qmckl_adjugate(context, n, A, LDA, B, ldb, det_l) &
result(info) bind(C)
use qmckl_constants
use, intrinsic :: iso_c_binding
implicit none
integer (qmckl_context), intent(in) , value :: context
integer (c_int64_t) , intent(in) , value :: n
real (c_double ) , intent(in) :: A(lda,*)
integer (c_int64_t) , intent(in) , value :: lda
real (c_double ) , intent(out) :: B(ldb,*)
integer (c_int64_t) , intent(in) , value :: ldb
real (c_double ) , intent(inout) :: det_l
real (c_double ) , intent(in) :: A(lda,*)
real (c_double ) , intent(out) :: B(ldb,*)
integer(qmckl_exit_code) :: info
info = QMCKL_SUCCESS
@ -1760,10 +1757,10 @@ end function qmckl_adjugate
#+begin_src f90 :tangle (eval f) :exports none
subroutine adjugate2(A,LDA,B,LDB,na,det_l)
implicit none
double precision, intent(in) :: A (LDA,na)
double precision, intent(out) :: B (LDA,na)
integer*8, intent(in) :: LDA, LDB
integer*8, intent(in) :: na
double precision, intent(in) :: A (LDA,na)
double precision, intent(out) :: B (LDB,na)
double precision, intent(inout) :: det_l
double precision :: C(2,2)
@ -1779,10 +1776,10 @@ end subroutine adjugate2
subroutine adjugate3(a,LDA,B,LDB,na,det_l)
implicit none
double precision, intent(in) :: A (LDA,na)
double precision, intent(out) :: B (LDA,na)
integer*8, intent(in) :: LDA, LDB
integer*8, intent(in) :: na
double precision, intent(in) :: A (LDA,na)
double precision, intent(out) :: B (LDB,na)
double precision, intent(inout) :: det_l
double precision :: C(4,3)
@ -1803,10 +1800,10 @@ end subroutine adjugate3
subroutine adjugate4(a,LDA,B,LDB,na,det_l)
implicit none
double precision, intent(in) :: A (LDA,na)
double precision, intent(out) :: B (LDA,na)
integer*8, intent(in) :: LDA, LDB
integer*8, intent(in) :: na
double precision, intent(in) :: A (LDA,na)
double precision, intent(out) :: B (LDB,na)
double precision, intent(inout) :: det_l
double precision :: C(4,4)
@ -1833,10 +1830,10 @@ end subroutine adjugate4
subroutine adjugate5(A,LDA,B,LDB,na,det_l)
implicit none
double precision, intent(in) :: A (LDA,na)
double precision, intent(out) :: B (LDA,na)
integer*8, intent(in) :: LDA, LDB
integer*8, intent(in) :: na
double precision, intent(in) :: A (LDA,na)
double precision, intent(out) :: B (LDB,na)
double precision, intent(inout) :: det_l
double precision :: C(8,5)
@ -1873,10 +1870,10 @@ end subroutine adjugate5
subroutine cofactor2(a,LDA,b,LDB,na,det_l)
implicit none
double precision, intent(in) :: A (LDA,na)
double precision, intent(out) :: B (LDA,na)
integer*8, intent(in) :: LDA, LDB
integer*8 :: na
double precision, intent(in) :: A (LDA,na)
double precision, intent(out) :: B (LDB,na)
double precision :: det_l
det_l = a(1,1)*a(2,2) - a(1,2)*a(2,1)
@ -1888,10 +1885,10 @@ end subroutine cofactor2
subroutine cofactor3(a,LDA,b,LDB,na,det_l)
implicit none
double precision, intent(in) :: A (LDA,na)
double precision, intent(out) :: B (LDA,na)
integer*8, intent(in) :: LDA, LDB
integer*8, intent(in) :: na
double precision, intent(in) :: A (LDA,na)
double precision, intent(out) :: B (LDB,na)
double precision, intent(inout) :: det_l
integer :: i
@ -1915,10 +1912,10 @@ end subroutine cofactor3
subroutine cofactor4(a,LDA,b,LDB,na,det_l)
implicit none
double precision, intent(in) :: A (LDA,na)
double precision, intent(out) :: B (LDA,na)
integer*8, intent(in) :: LDA, LDB
integer*8, intent(in) :: na
double precision, intent(in) :: A (LDA,na)
double precision, intent(out) :: B (LDB,na)
double precision, intent(inout) :: det_l
integer :: i,j
det_l = a(1,1)*(a(2,2)*(a(3,3)*a(4,4)-a(3,4)*a(4,3)) &
@ -1958,10 +1955,10 @@ end subroutine cofactor4
subroutine cofactor5(A,LDA,B,LDB,na,det_l)
implicit none
double precision, intent(in) :: A (LDA,na)
double precision, intent(out) :: B (LDA,na)
integer*8, intent(in) :: LDA, LDB
integer*8, intent(in) :: na
double precision, intent(in) :: A (LDA,na)
double precision, intent(out) :: B (LDB,na)
double precision, intent(inout) :: det_l
integer :: i,j
@ -2150,11 +2147,11 @@ end
integer (qmckl_context), intent(in) , value :: context
integer (c_int64_t) , intent(in) , value :: n
real (c_double ) , intent(in) :: A(lda,*)
integer (c_int64_t) , intent(in) , value :: lda
real (c_double ) , intent(out) :: B(ldb,*)
integer (c_int64_t) , intent(in) , value :: ldb
real (c_double ) , intent(inout) :: det_l
real (c_double ) , intent(in) :: A(lda,*)
real (c_double ) , intent(out) :: B(ldb,*)
end function qmckl_adjugate
end interface
@ -2166,11 +2163,11 @@ subroutine adjugate_general(context, na, A, LDA, B, LDB, det_l)
use qmckl
implicit none
integer(qmckl_context), intent(in) :: context
double precision, intent(in) :: A (LDA,na)
integer*8, intent(in) :: LDA
double precision, intent(out) :: B (LDB,na)
integer*8, intent(in) :: LDB
integer*8, intent(in) :: na
double precision, intent(in) :: A (LDA,na)
double precision, intent(out) :: B (LDB,na)
double precision, intent(inout) :: det_l
double precision :: work(LDA*max(na,64))
@ -2567,7 +2564,6 @@ printf("qmckl_adjugate ok\n");
function qmckl_adjugate_safe(context, &
na, A, size_A, LDA, B, size_B, LDB, det_l) &
result(info) bind(C)
use, intrinsic :: iso_c_binding
use qmckl_constants
use qmckl, only: qmckl_adjugate
@ -2575,13 +2571,13 @@ function qmckl_adjugate_safe(context, &
integer (qmckl_context), intent(in) , value :: context
integer (c_int64_t) , intent(in) , value :: na
real (c_double ) , intent(in) :: A(lda,*)
integer (c_int64_t) , intent(in) , value :: size_A
integer (c_int64_t) , intent(in) , value :: lda
real (c_double ) , intent(out) :: B(ldb,*)
integer (c_int64_t) , intent(in) , value :: size_B
integer (c_int64_t) , intent(in) , value :: ldb
real (c_double ) , intent(inout) :: det_l
real (c_double ) , intent(in) :: A(lda,*)
real (c_double ) , intent(out) :: B(ldb,*)
integer(qmckl_exit_code) :: info
@ -2628,13 +2624,13 @@ end function qmckl_adjugate_safe
integer (qmckl_context), intent(in) , value :: context
integer (c_int64_t) , intent(in) , value :: n
real (c_double ) , intent(in) :: A(lda,*)
integer (c_int64_t) , intent(in) , value :: size_max_A
integer (c_int64_t) , intent(in) , value :: lda
real (c_double ) , intent(out) :: B(ldb,*)
integer (c_int64_t) , intent(in) , value :: size_max_B
integer (c_int64_t) , intent(in) , value :: ldb
real (c_double ) , intent(inout) :: det_l
real (c_double ) , intent(in) :: A(lda,*)
real (c_double ) , intent(out) :: B(ldb,*)
end function qmckl_adjugate_safe
end interface

View File

@ -222,7 +222,6 @@ qmckl_context_touch(const qmckl_context context)
qmckl_context_struct* const ctx = (qmckl_context_struct*) context;
// ctx->electron.walker_old = ctx->electron.walker;
ctx->date += 1UL;
ctx->point.date = ctx-> date;
return QMCKL_SUCCESS;

View File

@ -93,7 +93,6 @@ int main() {
function qmckl_distance_sq(context, transa, transb, m, n, &
A, LDA, B, LDB, C, LDC) &
bind(C) result(info)
use, intrinsic :: iso_c_binding
use qmckl_constants
implicit none
@ -103,12 +102,12 @@ function qmckl_distance_sq(context, transa, transb, m, n, &
character(c_char) , intent(in) , value :: transb
integer (c_int64_t) , intent(in) , value :: m
integer (c_int64_t) , intent(in) , value :: n
real (c_double ) , intent(in) :: A(lda,*)
integer (c_int64_t) , intent(in) , value :: lda
real (c_double ) , intent(in) :: B(ldb,*)
integer (c_int64_t) , intent(in) , value :: ldb
real (c_double ) , intent(out) :: C(ldc,n)
integer (c_int64_t) , intent(in) , value :: ldc
real (c_double ) , intent(in) :: A(lda,*)
real (c_double ) , intent(in) :: B(ldb,*)
real (c_double ) , intent(out) :: C(ldc,n)
integer(qmckl_exit_code) :: info
@ -248,12 +247,12 @@ end function qmckl_distance_sq
character(c_char ) , intent(in) , value :: transb
integer (c_int64_t) , intent(in) , value :: m
integer (c_int64_t) , intent(in) , value :: n
real (c_double ) , intent(in) :: A(lda,*)
integer (c_int64_t) , intent(in) , value :: lda
real (c_double ) , intent(in) :: B(ldb,*)
integer (c_int64_t) , intent(in) , value :: ldb
real (c_double ) , intent(out) :: C(ldc,n)
integer (c_int64_t) , intent(in) , value :: ldc
real (c_double ) , intent(in) :: A(lda,*)
real (c_double ) , intent(in) :: B(ldb,*)
real (c_double ) , intent(out) :: C(ldc,n)
end function qmckl_distance_sq
end interface
@ -470,7 +469,6 @@ end function test_qmckl_distance_sq
function qmckl_distance(context, transa, transb, m, n, &
A, LDA, B, LDB, C, LDC) &
bind(C) result(info)
use, intrinsic :: iso_c_binding
use qmckl_constants
implicit none
integer(qmckl_context), intent(in), value :: context
@ -478,12 +476,12 @@ function qmckl_distance(context, transa, transb, m, n, &
character(c_char) , intent(in) , value :: transb
integer (c_int64_t) , intent(in) , value :: m
integer (c_int64_t) , intent(in) , value :: n
real (c_double ) , intent(in) :: A(lda,*)
integer (c_int64_t) , intent(in) , value :: lda
real (c_double ) , intent(in) :: B(ldb,*)
integer (c_int64_t) , intent(in) , value :: ldb
real (c_double ) , intent(out) :: C(ldc,n)
integer (c_int64_t) , intent(in) , value :: ldc
real (c_double ) , intent(in) :: A(lda,*)
real (c_double ) , intent(in) :: B(ldb,*)
real (c_double ) , intent(out) :: C(ldc,n)
integer (qmckl_exit_code) :: info
integer*8 :: i,j
@ -629,12 +627,12 @@ end function qmckl_distance
character(c_char ) , intent(in) , value :: transb
integer (c_int64_t) , intent(in) , value :: m
integer (c_int64_t) , intent(in) , value :: n
real (c_double ) , intent(in) :: A(lda,*)
integer (c_int64_t) , intent(in) , value :: lda
real (c_double ) , intent(in) :: B(ldb,*)
integer (c_int64_t) , intent(in) , value :: ldb
real (c_double ) , intent(out) :: C(ldc,n)
integer (c_int64_t) , intent(in) , value :: ldc
real (c_double ) , intent(in) :: A(lda,*)
real (c_double ) , intent(in) :: B(ldb,*)
real (c_double ) , intent(out) :: C(ldc,n)
end function qmckl_distance
end interface
@ -866,7 +864,6 @@ end function test_qmckl_dist
function qmckl_distance_rescaled(context, transa, transb, m, n, &
A, LDA, B, LDB, C, LDC, rescale_factor_kappa) &
bind(C) result(info)
use, intrinsic :: iso_c_binding
use qmckl_constants
implicit none
integer (qmckl_context), intent(in) , value :: context
@ -874,13 +871,13 @@ function qmckl_distance_rescaled(context, transa, transb, m, n, &
character(c_char ) , intent(in) , value :: transb
integer (c_int64_t) , intent(in) , value :: m
integer (c_int64_t) , intent(in) , value :: n
real (c_double ) , intent(in) :: A(lda,*)
integer (c_int64_t) , intent(in) , value :: lda
real (c_double ) , intent(in) :: B(ldb,*)
integer (c_int64_t) , intent(in) , value :: ldb
real (c_double ) , intent(out) :: C(ldc,n)
integer (c_int64_t) , intent(in) , value :: ldc
real (c_double ) , intent(in) , value :: rescale_factor_kappa
real (c_double ) , intent(in) :: A(lda,*)
real (c_double ) , intent(in) :: B(ldb,*)
real (c_double ) , intent(out) :: C(ldc,n)
integer(qmckl_exit_code) :: info
integer*8 :: i,j
@ -1034,13 +1031,13 @@ end function qmckl_distance_rescaled
character(c_char ) , intent(in) , value :: transb
integer (c_int64_t) , intent(in) , value :: m
integer (c_int64_t) , intent(in) , value :: n
real (c_double ) , intent(in) :: A(lda,*)
integer (c_int64_t) , intent(in) , value :: lda
real (c_double ) , intent(in) :: B(ldb,*)
integer (c_int64_t) , intent(in) , value :: ldb
real (c_double ) , intent(out) :: C(ldc,n)
integer (c_int64_t) , intent(in) , value :: ldc
real (c_double ) , intent(in) , value :: rescale_factor_kappa
real (c_double ) , intent(in) :: A(lda,*)
real (c_double ) , intent(in) :: B(ldb,*)
real (c_double ) , intent(out) :: C(ldc,n)
end function qmckl_distance_rescaled
end interface
@ -1332,7 +1329,6 @@ function qmckl_distance_rescaled_gl(context, transa, transb, m, n, &
A, LDA, B, LDB, C, LDC, rescale_factor_kappa) &
bind(C) result(info)
use qmckl_constants
use, intrinsic :: iso_c_binding
implicit none
integer(qmckl_exit_code) :: info
@ -1341,13 +1337,13 @@ function qmckl_distance_rescaled_gl(context, transa, transb, m, n, &
character(c_char ) , intent(in) , value :: transb
integer (c_int64_t) , intent(in) , value :: m
integer (c_int64_t) , intent(in) , value :: n
real (c_double ) , intent(in) :: A(lda,*)
integer (c_int64_t) , intent(in) , value :: lda
real (c_double ) , intent(in) :: B(ldb,*)
integer (c_int64_t) , intent(in) , value :: ldb
real (c_double ) , intent(out) :: C(4,ldc,n)
integer (c_int64_t) , intent(in) , value :: ldc
real (c_double ) , intent(in) , value :: rescale_factor_kappa
real (c_double ) , intent(in) :: A(lda,*)
real (c_double ) , intent(in) :: B(ldb,*)
real (c_double ) , intent(out) :: C(4,ldc,n)
integer*8 :: i,j
real*8 :: x, y, z, dist, dist_inv
@ -1516,13 +1512,13 @@ end function qmckl_distance_rescaled_gl
character(c_char ) , intent(in) , value :: transb
integer (c_int64_t) , intent(in) , value :: m
integer (c_int64_t) , intent(in) , value :: n
real (c_double ) , intent(in) :: A(lda,*)
integer (c_int64_t) , intent(in) , value :: lda
real (c_double ) , intent(in) :: B(ldb,*)
integer (c_int64_t) , intent(in) , value :: ldb
real (c_double ) , intent(out) :: C(4,ldc,n)
integer (c_int64_t) , intent(in) , value :: ldc
real (c_double ) , intent(in) , value :: rescale_factor_kappa
real (c_double ) , intent(in) :: A(lda,*)
real (c_double ) , intent(in) :: B(ldb,*)
real (c_double ) , intent(out) :: C(4,ldc,n)
end function qmckl_distance_rescaled_gl
end interface

View File

@ -334,6 +334,10 @@ qmckl_set_electron_coord(qmckl_context context,
ctx->electron.walker.num = walk_num;
memcpy(&(ctx->electron.walker.point), &(ctx->point), sizeof(qmckl_point_struct));
// If it is the first time we set the electrons, we set also walkers_old.
if (ctx->electron.walker_old.num == 0) {
qmckl_set_electron_coord(context, transp, walk_num, coord, size_max);
}
return QMCKL_SUCCESS;
}

View File

@ -6610,7 +6610,6 @@ integer function qmckl_compute_jastrow_champ_factor_een_rescaled_e_gl_f( &
! Prepare table of exponentiated distances raised to appropriate power
do nw = 1, walk_num
een_rescaled_e_gl(:,:,:,:,nw) = 0.d0
do j = 1, elec_num
do i = 1, j-1
rij_inv = 1.0d0 / ee_distance(i, j, nw)
@ -6631,7 +6630,9 @@ integer function qmckl_compute_jastrow_champ_factor_een_rescaled_e_gl_f( &
end do
end do
! prepare the actual een table
! Not necessary: should be set to zero by qmckl_malloc
! een_rescaled_e_gl(:,:,:,0,nw) = 0.d0
do l = 1, cord_num
kappa_l = - dble(l) * rescale_factor_ee
do j = 1, elec_num
@ -6804,6 +6805,16 @@ qmckl_exit_code qmckl_compute_jastrow_champ_factor_een_rescaled_e_gl_hpc (
}
}
for (int64_t j = 0; j < elec_num; ++j) {
double* restrict eegl = &een_rescaled_e_gl[ elec_num * 4 * (j + elec_num * (cord_num + 1) * nw)];
#ifdef HAVE_OPENMP
#pragma omp simd
#endif
for (int64_t i = 0; i < 4*elec_num; ++i) {
eegl[i] = 0.0;
}
}
for (int64_t l = 1; l <= cord_num; ++l) {
double kappa_l = - (double)l * rescale_factor_ee;
for (int64_t j = 0; j < elec_num; ++j) {
@ -7152,8 +7163,6 @@ integer function qmckl_compute_een_rescaled_n_f( &
return
endif
! Prepare table of exponentiated distances raised to appropriate power
een_rescaled_n = 0.0d0
do nw = 1, walk_num
! prepare the actual een table

View File

@ -89,7 +89,6 @@ cat << EOF >> ${qmckl_f}
end module qmckl_constants
module qmckl
use, intrinsic :: iso_c_binding
use qmckl_constants
EOF

View File

@ -181,7 +181,7 @@ results = [ f"{rettyp_c} function {fname} &"
, f" ({args}) &"
, " bind(C) result(info)"
, ""
, " use, intrinsic :: iso_c_binding"
, " use qmckl_constants"
, " implicit none"
, ""
]
@ -234,7 +234,7 @@ results = [ f"interface"
, f" {rettyp_c} function {fname} &"
, f" ({args}) &"
, " bind(C)"
, " use, intrinsic :: iso_c_binding"
, " use qmckl_constants"
, " import"
, " implicit none"
, ""
@ -283,7 +283,7 @@ results = [ f"interface"
, f" {rettyp_c} function {fname} &"
, f" ({args}) &"
, " bind(C)"
, " use, intrinsic :: iso_c_binding"
, " use qmckl_constants"
, " import"
, " implicit none"
, ""