diff --git a/org/qmckl_ao.org b/org/qmckl_ao.org index 0b43b4c..28fbe9b 100644 --- a/org/qmckl_ao.org +++ b/org/qmckl_ao.org @@ -117,7 +117,7 @@ int main() { | ~ao_shell~ | ~[ao_num]~ | For each AO, specify to which shell it belongs | Computed data: - + |--------------------------+----------------------------+-----------------------------------------------------------------------------------------------| | ~coefficient_normalized~ | ~[prim_num]~ | Normalized primitive coefficients | | ~nucleus_prim_index~ | ~[nucl_num]~ | Index of the first primitive for each nucleus | @@ -193,7 +193,7 @@ prim_factor = [ 1.0006253235944540e+01, 2.4169531573445120e+00, 7.96109248497664 typedef struct qmckl_ao_basis_struct { int64_t shell_num; int64_t prim_num; - int64_t ao_num; + int64_t ao_num; int64_t * nucleus_index; int64_t * nucleus_shell_num; int32_t * shell_ang_mom; @@ -230,10 +230,10 @@ typedef struct qmckl_ao_basis_struct { Some values are initialized by default, and are not concerned by this mechanism. - #+begin_src c :comments org :tangle (eval h_private_func) + #+begin_src c :comments org :tangle (eval h_private_func) qmckl_exit_code qmckl_init_ao_basis(qmckl_context context); #+end_src - + #+begin_src c :comments org :tangle (eval c) qmckl_exit_code qmckl_init_ao_basis(qmckl_context context) { @@ -252,7 +252,7 @@ qmckl_exit_code qmckl_init_ao_basis(qmckl_context context) { return QMCKL_SUCCESS; } #+end_src - + ** Access functions In the following functions, when an array is passed as an argument @@ -380,7 +380,7 @@ qmckl_get_ao_basis_prim_num (const qmckl_context context, } #+end_src - + #+begin_src c :comments org :tangle (eval h_func) :exports none qmckl_exit_code qmckl_get_ao_basis_nucleus_shell_num (const qmckl_context context, @@ -1098,7 +1098,6 @@ qmckl_exit_code qmckl_set_ao_basis_prim_num(qmckl_context context, const int64_ #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none qmckl_exit_code qmckl_set_ao_basis_nucleus_shell_num(qmckl_context context, const int64_t* nucleus_shell_num) { <> - qmckl_exit_code rc = QMCKL_FAILURE; int32_t mask = 1 << 3; @@ -1112,7 +1111,7 @@ qmckl_exit_code qmckl_set_ao_basis_nucleus_shell_num(qmckl_context context, con } if (ctx->ao_basis.nucleus_shell_num != NULL) { - rc = qmckl_free(context, ctx->ao_basis.nucleus_shell_num); + qmckl_exit_code rc = qmckl_free(context, ctx->ao_basis.nucleus_shell_num); if (rc != QMCKL_SUCCESS) { return qmckl_failwith( context, rc, "qmckl_set_ao_basis_nucleus_shell_num", @@ -1142,7 +1141,6 @@ qmckl_exit_code qmckl_set_ao_basis_nucleus_shell_num(qmckl_context context, con #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none qmckl_exit_code qmckl_set_ao_basis_nucleus_index(qmckl_context context, const int64_t* nucleus_index) { <> - qmckl_exit_code rc = QMCKL_FAILURE; int32_t mask = 1 << 4; @@ -1156,7 +1154,7 @@ qmckl_exit_code qmckl_set_ao_basis_nucleus_index(qmckl_context context, const i } if (ctx->ao_basis.nucleus_index != NULL) { - rc = qmckl_free(context, ctx->ao_basis.nucleus_index); + qmckl_exit_code rc = qmckl_free(context, ctx->ao_basis.nucleus_index); if (rc != QMCKL_SUCCESS) { return qmckl_failwith( context, rc, "qmckl_set_ao_basis_nucleus_index", @@ -1186,7 +1184,6 @@ qmckl_exit_code qmckl_set_ao_basis_nucleus_index(qmckl_context context, const i #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none qmckl_exit_code qmckl_set_ao_basis_shell_ang_mom(qmckl_context context, const int32_t* shell_ang_mom) { <> - qmckl_exit_code rc = QMCKL_FAILURE; int32_t mask = 1 << 5; @@ -1200,7 +1197,7 @@ qmckl_exit_code qmckl_set_ao_basis_shell_ang_mom(qmckl_context context, const i } if (ctx->ao_basis.shell_ang_mom != NULL) { - rc = qmckl_free(context, ctx->ao_basis.shell_ang_mom); + qmckl_exit_code rc = qmckl_free(context, ctx->ao_basis.shell_ang_mom); if (rc != QMCKL_SUCCESS) { return qmckl_failwith( context, rc, "qmckl_set_ao_basis_shell_ang_mom", @@ -1231,7 +1228,6 @@ qmckl_exit_code qmckl_set_ao_basis_shell_ang_mom(qmckl_context context, const i #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none qmckl_exit_code qmckl_set_ao_basis_shell_prim_num(qmckl_context context, const int64_t* shell_prim_num) { <> - qmckl_exit_code rc = QMCKL_FAILURE; int32_t mask = 1 << 6; @@ -1245,7 +1241,7 @@ qmckl_exit_code qmckl_set_ao_basis_shell_prim_num(qmckl_context context, const } if (ctx->ao_basis.shell_prim_num != NULL) { - rc = qmckl_free(context, ctx->ao_basis.shell_prim_num); + qmckl_exit_code rc = qmckl_free(context, ctx->ao_basis.shell_prim_num); if (rc != QMCKL_SUCCESS) { return qmckl_failwith( context, rc, "qmckl_set_ao_basis_shell_prim_num", @@ -1276,7 +1272,6 @@ qmckl_exit_code qmckl_set_ao_basis_shell_prim_num(qmckl_context context, const #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none qmckl_exit_code qmckl_set_ao_basis_shell_prim_index(qmckl_context context, const int64_t* shell_prim_index) { <> - qmckl_exit_code rc = QMCKL_FAILURE; int32_t mask = 1 << 7; @@ -1290,7 +1285,7 @@ qmckl_exit_code qmckl_set_ao_basis_shell_prim_index(qmckl_context context, cons } if (ctx->ao_basis.shell_prim_index != NULL) { - rc = qmckl_free(context, ctx->ao_basis.shell_prim_index); + qmckl_exit_code rc = qmckl_free(context, ctx->ao_basis.shell_prim_index); if (rc != QMCKL_SUCCESS) { return qmckl_failwith( context, rc, "qmckl_set_ao_basis_shell_prim_index", @@ -1320,7 +1315,6 @@ qmckl_exit_code qmckl_set_ao_basis_shell_prim_index(qmckl_context context, cons #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none qmckl_exit_code qmckl_set_ao_basis_shell_factor(qmckl_context context, const double* shell_factor) { <> - qmckl_exit_code rc = QMCKL_FAILURE; int32_t mask = 1 << 8; @@ -1335,7 +1329,7 @@ qmckl_exit_code qmckl_set_ao_basis_shell_factor(qmckl_context context, const do if (ctx->ao_basis.shell_factor != NULL) { - rc = qmckl_free(context, ctx->ao_basis.shell_factor); + qmckl_exit_code rc = qmckl_free(context, ctx->ao_basis.shell_factor); if (rc != QMCKL_SUCCESS) { return qmckl_failwith( context, rc, "qmckl_set_ao_basis_shell_factor", @@ -1365,7 +1359,6 @@ qmckl_exit_code qmckl_set_ao_basis_shell_factor(qmckl_context context, const do #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none qmckl_exit_code qmckl_set_ao_basis_exponent(qmckl_context context, const double* exponent) { <> - qmckl_exit_code rc = QMCKL_FAILURE; int32_t mask = 1 << 9; @@ -1379,7 +1372,7 @@ qmckl_exit_code qmckl_set_ao_basis_exponent(qmckl_context context, const double } if (ctx->ao_basis.exponent != NULL) { - rc = qmckl_free(context, ctx->ao_basis.exponent); + qmckl_exit_code rc = qmckl_free(context, ctx->ao_basis.exponent); if (rc != QMCKL_SUCCESS) { return qmckl_failwith( context, rc, "qmckl_set_ao_basis_exponent", @@ -1409,7 +1402,6 @@ qmckl_exit_code qmckl_set_ao_basis_exponent(qmckl_context context, const double #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none qmckl_exit_code qmckl_set_ao_basis_coefficient(qmckl_context context, const double* coefficient) { <> - qmckl_exit_code rc = QMCKL_FAILURE; int32_t mask = 1 << 10; @@ -1423,7 +1415,7 @@ qmckl_exit_code qmckl_set_ao_basis_coefficient(qmckl_context context, const dou } if (ctx->ao_basis.coefficient != NULL) { - rc = qmckl_free(context, ctx->ao_basis.coefficient); + qmckl_exit_code rc = qmckl_free(context, ctx->ao_basis.coefficient); if (rc != QMCKL_SUCCESS) { return qmckl_failwith( context, rc, "qmckl_set_ao_basis_coefficient", @@ -1453,7 +1445,6 @@ qmckl_exit_code qmckl_set_ao_basis_coefficient(qmckl_context context, const dou #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none qmckl_exit_code qmckl_set_ao_basis_prim_factor(qmckl_context context, const double* prim_factor) { <> - qmckl_exit_code rc = QMCKL_FAILURE; int32_t mask = 1 << 11; @@ -1468,7 +1459,7 @@ qmckl_exit_code qmckl_set_ao_basis_prim_factor(qmckl_context context, const dou if (ctx->ao_basis.prim_factor != NULL) { - rc = qmckl_free(context, ctx->ao_basis.prim_factor); + qmckl_exit_code rc = qmckl_free(context, ctx->ao_basis.prim_factor); if (rc != QMCKL_SUCCESS) { return qmckl_failwith( context, rc, "qmckl_set_ao_basis_prim_factor", @@ -1531,7 +1522,6 @@ qmckl_exit_code qmckl_set_ao_basis_ao_num(qmckl_context context, const int64_t #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none qmckl_exit_code qmckl_set_ao_basis_ao_factor(qmckl_context context, const double* ao_factor) { <> - qmckl_exit_code rc = QMCKL_FAILURE; int32_t mask = 1 << 13; @@ -1546,7 +1536,7 @@ qmckl_exit_code qmckl_set_ao_basis_ao_factor(qmckl_context context, const doubl if (ctx->ao_basis.ao_factor != NULL) { - rc = qmckl_free(context, ctx->ao_basis.ao_factor); + qmckl_exit_code rc = qmckl_free(context, ctx->ao_basis.ao_factor); if (rc != QMCKL_SUCCESS) { return qmckl_failwith( context, rc, "qmckl_set_ao_basis_ao_factor", @@ -1607,9 +1597,8 @@ qmckl_exit_code qmckl_finalize_basis(qmckl_context context) { assert (ctx != NULL); int64_t nucl_num = 0; - qmckl_exit_code rc = QMCKL_FAILURE; - rc = qmckl_get_nucleus_num(context, &nucl_num); + qmckl_exit_code rc = qmckl_get_nucleus_num(context, &nucl_num); if (rc != QMCKL_SUCCESS) return rc; /* nucleus_prim_index */ @@ -1632,7 +1621,7 @@ qmckl_exit_code qmckl_finalize_basis(qmckl_context context) { } ctx->ao_basis.nucleus_prim_index[nucl_num] = ctx->ao_basis.prim_num; } - + /* Normalize coefficients */ { @@ -1652,34 +1641,34 @@ qmckl_exit_code qmckl_finalize_basis(qmckl_context context) { for (int64_t iprim=ctx->ao_basis.shell_prim_index[ishell] ; iprim < ctx->ao_basis.shell_prim_index[ishell]+ctx->ao_basis.shell_prim_num[ishell] ; ++iprim) { - ctx->ao_basis.coefficient_normalized[iprim] = + ctx->ao_basis.coefficient_normalized[iprim] = ctx->ao_basis.coefficient[iprim] * ctx->ao_basis.prim_factor[iprim] * ctx->ao_basis.shell_factor[ishell]; } } } - + /* Find max angular momentum on each nucleus */ { qmckl_memory_info_struct mem_info = qmckl_memory_info_struct_zero; mem_info.size = ctx->nucleus.num * sizeof(int32_t); - + ctx->ao_basis.nucleus_max_ang_mom = (int32_t *) qmckl_malloc(context, mem_info); - + if (ctx->ao_basis.nucleus_max_ang_mom == NULL) { return qmckl_failwith( context, QMCKL_ALLOCATION_FAILED, "ao_basis.nucleus_max_ang_mom", NULL); } - + for (int64_t inucl=0 ; inucl < nucl_num ; ++inucl) { ctx->ao_basis.nucleus_max_ang_mom[inucl] = 0; for (int64_t ishell=ctx->ao_basis.nucleus_index[inucl] ; ishell < ctx->ao_basis.nucleus_index[inucl] + ctx->ao_basis.nucleus_shell_num[inucl] ; ++ishell) { - ctx->ao_basis.nucleus_max_ang_mom[inucl] = + ctx->ao_basis.nucleus_max_ang_mom[inucl] = ctx->ao_basis.nucleus_max_ang_mom[inucl] > ctx->ao_basis.shell_ang_mom[ishell] ? ctx->ao_basis.nucleus_max_ang_mom[inucl] : ctx->ao_basis.shell_ang_mom[ishell] ; } @@ -1711,7 +1700,7 @@ qmckl_exit_code qmckl_finalize_basis(qmckl_context context) { iprim < ctx->ao_basis.shell_prim_index[ishell] + ctx->ao_basis.shell_prim_num[ishell] ; ++iprim) { double range = 1./ctx->ao_basis.exponent[iprim]; - ctx->ao_basis.nucleus_range[inucl] = + ctx->ao_basis.nucleus_range[inucl] = ctx->ao_basis.nucleus_range[inucl] > range ? ctx->ao_basis.nucleus_range[inucl] : range; } @@ -1723,10 +1712,10 @@ qmckl_exit_code qmckl_finalize_basis(qmckl_context context) { return QMCKL_SUCCESS; } #+end_src - + ** Fortran interfaces - #+begin_src f90 :tangle (eval fh_func) :comments org :exports none + #+begin_src f90 :tangle (eval fh_func) :comments org :exports none interface integer(c_int32_t) function qmckl_set_ao_basis_type (context, t) & bind(C) @@ -2076,7 +2065,7 @@ rc = qmckl_get_ao_basis_ao_num(context, &ao_num_test); assert(ao_num == ao_num_test); ao_factor_test = (double*) malloc ( ao_num * sizeof(double)); -rc = qmckl_get_ao_basis_ao_factor (context, ao_factor_test, ao_num); +rc = qmckl_get_ao_basis_ao_factor (context, ao_factor_test, ao_num); assert (rc == QMCKL_SUCCESS); for (int64_t i=0 ; i < ao_num ; ++i) { @@ -2084,9 +2073,9 @@ for (int64_t i=0 ; i < ao_num ; ++i) { } #+end_src - + * Radial part - + ** TODO Helper functions to accelerate calculations ** General functions for Gaussian basis functions @@ -2311,7 +2300,7 @@ qmckl_exit_code qmckl_get_ao_basis_primitive_vgl(qmckl_context context, double* #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none qmckl_exit_code qmckl_get_ao_basis_primitive_vgl(qmckl_context context, double* const primitive_vgl) { - + if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) { return QMCKL_NULL_CONTEXT; } @@ -2354,7 +2343,7 @@ qmckl_exit_code qmckl_provide_ao_basis_primitive_vgl(qmckl_context context) "qmckl_ao_basis_primitive_vgl", NULL); } - + /* Compute if necessary */ if (ctx->electron.coord_new_date > ctx->ao_basis.primitive_vgl_date) { @@ -2375,7 +2364,7 @@ qmckl_exit_code qmckl_provide_ao_basis_primitive_vgl(qmckl_context context) ctx->ao_basis.primitive_vgl = primitive_vgl; } - qmckl_exit_code rc; + qmckl_exit_code rc; if (ctx->ao_basis.type == 'G') { rc = qmckl_compute_ao_basis_primitive_gaussian_vgl(context, ctx->ao_basis.prim_num, @@ -2391,7 +2380,7 @@ qmckl_exit_code qmckl_provide_ao_basis_primitive_vgl(qmckl_context context) QMCKL_FAILURE, "compute_ao_basis_primitive_vgl", "Not yet implemented"); - } + } if (rc != QMCKL_SUCCESS) { return rc; } @@ -2420,7 +2409,7 @@ qmckl_exit_code qmckl_provide_ao_basis_primitive_vgl(qmckl_context context) | double | nucl_coord[3][elec_num] | in | Nuclear coordinates | | double | expo[prim_num] | in | Exponents of the primitives | | double | primitive_vgl[5][elec_num][prim_num] | out | Value, gradients and Laplacian of the primitives | - + #+begin_src f90 :comments org :tangle (eval f) :noweb yes integer function qmckl_compute_ao_basis_primitive_gaussian_vgl_f(context, & prim_num, elec_num, nucl_num, & @@ -2450,9 +2439,9 @@ integer function qmckl_compute_ao_basis_primitive_gaussian_vgl_f(context, & ! C is zero-based, so shift bounds by one do iprim = nucleus_prim_index(inucl)+1, nucleus_prim_index(inucl+1) do ielec = 1, elec_num - x = elec_coord(ielec,1) - nucl_coord(inucl,1) - y = elec_coord(ielec,2) - nucl_coord(inucl,2) - z = elec_coord(ielec,3) - nucl_coord(inucl,3) + x = elec_coord(ielec,1) - nucl_coord(inucl,1) + y = elec_coord(ielec,2) - nucl_coord(inucl,2) + z = elec_coord(ielec,3) - nucl_coord(inucl,3) r2 = x*x + y*y + z*z ar2 = expo(iprim)*r2 @@ -2462,7 +2451,7 @@ integer function qmckl_compute_ao_basis_primitive_gaussian_vgl_f(context, & two_a = -2.d0 * expo(iprim) * v primitive_vgl(iprim, ielec, 1) = v - primitive_vgl(iprim, ielec, 2) = two_a * x + primitive_vgl(iprim, ielec, 2) = two_a * x primitive_vgl(iprim, ielec, 3) = two_a * y primitive_vgl(iprim, ielec, 4) = two_a * z primitive_vgl(iprim, ielec, 5) = two_a * (3.d0 - 2.d0*ar2) @@ -2535,7 +2524,7 @@ qmckl_exit_code qmckl_compute_ao_basis_primitive_gaussian_vgl( import numpy as np def f(a,x,y): - return np.exp( -a*(np.linalg.norm(x-y))**2 ) + return np.exp( -a*(np.linalg.norm(x-y))**2 ) def df(a,x,y,n): h0 = 1.e-6 @@ -2587,7 +2576,7 @@ int64_t elec_up_num = chbrclf_elec_up_num; int64_t elec_dn_num = chbrclf_elec_dn_num; double* elec_coord = &(chbrclf_elec_coord[0][0][0]); -rc = qmckl_set_electron_num (context, elec_up_num, elec_dn_num); +rc = qmckl_set_electron_num (context, elec_up_num, elec_dn_num); assert (rc == QMCKL_SUCCESS); rc = qmckl_set_electron_walk_num (context, walk_num); @@ -2595,7 +2584,7 @@ assert (rc == QMCKL_SUCCESS); assert(qmckl_electron_provided(context)); -rc = qmckl_set_electron_coord (context, 'N', elec_coord); +rc = qmckl_set_electron_coord (context, 'N', elec_coord); assert(rc == QMCKL_SUCCESS); @@ -2610,7 +2599,7 @@ assert( fabs(prim_vgl[1][26][7] - (-7.5014974095310560E-004)) < 1.e-14 ); assert( fabs(prim_vgl[2][26][7] - (-3.8250692897610380E-003)) < 1.e-14 ); assert( fabs(prim_vgl[3][26][7] - ( 3.4950559194080275E-003)) < 1.e-14 ); assert( fabs(prim_vgl[4][26][7] - ( 2.0392163767356572E-002)) < 1.e-14 ); - + } @@ -2625,11 +2614,11 @@ assert( fabs(prim_vgl[4][26][7] - ( 2.0392163767356572E-002)) < 1.e-14 ); k=0; for (j=0 ; jelectron.coord_new_date > ctx->ao_basis.shell_vgl_date) { @@ -2740,7 +2729,7 @@ qmckl_exit_code qmckl_provide_ao_basis_shell_vgl(qmckl_context context) ctx->ao_basis.shell_vgl = shell_vgl; } - qmckl_exit_code rc; + qmckl_exit_code rc; if (ctx->ao_basis.type == 'G') { rc = qmckl_compute_ao_basis_shell_gaussian_vgl(context, ctx->ao_basis.prim_num, @@ -2761,7 +2750,7 @@ qmckl_exit_code qmckl_provide_ao_basis_shell_vgl(qmckl_context context) QMCKL_FAILURE, "compute_ao_basis_shell_vgl", "Not yet implemented"); - } + } if (rc != QMCKL_SUCCESS) { return rc; } @@ -2795,7 +2784,7 @@ qmckl_exit_code qmckl_provide_ao_basis_shell_vgl(qmckl_context context) | ~double~ | ~expo[prim_num]~ | in | Exponents of the primitives | | ~double~ | ~coef_normalized[prim_num]~ | in | Coefficients of the primitives | | ~double~ | ~shell_vgl[5][elec_num][shell_num]~ | out | Value, gradients and Laplacian of the shells | - + #+begin_src f90 :comments org :tangle (eval f) :noweb yes integer function qmckl_compute_ao_basis_shell_gaussian_vgl_f(context, & prim_num, shell_num, elec_num, nucl_num, & @@ -2832,9 +2821,9 @@ integer function qmckl_compute_ao_basis_shell_gaussian_vgl_f(context, & do ielec = 1, elec_num - x = elec_coord(ielec,1) - nucl_coord(inucl,1) - y = elec_coord(ielec,2) - nucl_coord(inucl,2) - z = elec_coord(ielec,3) - nucl_coord(inucl,3) + x = elec_coord(ielec,1) - nucl_coord(inucl,1) + y = elec_coord(ielec,2) - nucl_coord(inucl,2) + z = elec_coord(ielec,3) - nucl_coord(inucl,3) r2 = x*x + y*y + z*z @@ -2861,13 +2850,13 @@ integer function qmckl_compute_ao_basis_shell_gaussian_vgl_f(context, & shell_vgl(ishell, ielec, 1) + v shell_vgl(ishell, ielec, 2) = & - shell_vgl(ishell, ielec, 2) + two_a * x + shell_vgl(ishell, ielec, 2) + two_a * x shell_vgl(ishell, ielec, 3) = & - shell_vgl(ishell, ielec, 3) + two_a * y + shell_vgl(ishell, ielec, 3) + two_a * y shell_vgl(ishell, ielec, 4) = & - shell_vgl(ishell, ielec, 4) + two_a * z + shell_vgl(ishell, ielec, 4) + two_a * z shell_vgl(ishell, ielec, 5) = & shell_vgl(ishell, ielec, 5) + two_a * (3.d0 - 2.d0*ar2) @@ -2900,7 +2889,7 @@ end function qmckl_compute_ao_basis_shell_gaussian_vgl_f const double* nucl_coord, const double* expo, const double* coef_normalized, - double* const shell_vgl ); + double* const shell_vgl ); #+end_src #+CALL: generate_c_interface(table=qmckl_ao_basis_shell_gaussian_vgl_args,rettyp=get_value("CRetType"),fname="qmckl_compute_ao_basis_shell_gaussian_vgl")) @@ -2966,7 +2955,7 @@ end function qmckl_compute_ao_basis_shell_gaussian_vgl_f import numpy as np def f(a,x,y): - return np.sum( [c * np.exp( -b*(np.linalg.norm(x-y))**2) for b,c in a] ) + return np.sum( [c * np.exp( -b*(np.linalg.norm(x-y))**2) for b,c in a] ) def df(a,x,y,n): h0 = 1.e-6 @@ -3030,7 +3019,7 @@ int64_t elec_up_num = chbrclf_elec_up_num; int64_t elec_dn_num = chbrclf_elec_dn_num; double* elec_coord = &(chbrclf_elec_coord[0][0][0]); -rc = qmckl_set_electron_num (context, elec_up_num, elec_dn_num); +rc = qmckl_set_electron_num (context, elec_up_num, elec_dn_num); assert (rc == QMCKL_SUCCESS); rc = qmckl_set_electron_walk_num (context, walk_num); @@ -3038,7 +3027,7 @@ assert (rc == QMCKL_SUCCESS); assert(qmckl_electron_provided(context)); -rc = qmckl_set_electron_coord (context, 'N', elec_coord); +rc = qmckl_set_electron_coord (context, 'N', elec_coord); assert(rc == QMCKL_SUCCESS); @@ -3052,15 +3041,15 @@ printf(" shell_vgl[1][1][26] %25.15e\n", shell_vgl[1][26][1]); printf(" shell_vgl[1][2][26] %25.15e\n", shell_vgl[2][26][1]); printf(" shell_vgl[1][3][26] %25.15e\n", shell_vgl[3][26][1]); printf(" shell_vgl[1][4][26] %25.15e\n", shell_vgl[4][26][1]); - + assert( fabs(shell_vgl[0][26][1] - ( 3.564393437193868e-02)) < 1.e-14 ); assert( fabs(shell_vgl[1][26][1] - (-6.030177987072189e-03)) < 1.e-14 ); assert( fabs(shell_vgl[2][26][1] - (-3.074832579537582e-02)) < 1.e-14 ); assert( fabs(shell_vgl[3][26][1] - ( 2.809546963519935e-02)) < 1.e-14 ); assert( fabs(shell_vgl[4][26][1] - ( 1.896046117183968e-02)) < 1.e-14 ); - -} - + +} + #+end_src * Polynomial part @@ -3122,7 +3111,7 @@ assert( fabs(shell_vgl[4][26][1] - ( 1.896046117183968e-02)) < 1.e-14 ); const double* X, const int32_t* LMAX, double* const P, - const int64_t ldp ); + const int64_t ldp ); #+end_src *** Source @@ -3661,7 +3650,7 @@ qmckl_exit_code qmckl_get_ao_vgl(qmckl_context context, double* const ao_vgl); #+begin_src c :comments org :tangle (eval c) :noweb yes :exports none qmckl_exit_code qmckl_get_ao_vgl(qmckl_context context, double* const ao_vgl) { - + if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) { return QMCKL_NULL_CONTEXT; } @@ -3725,7 +3714,7 @@ qmckl_exit_code qmckl_provide_ao_vgl(qmckl_context context) "qmckl_electron", NULL); } - + /* Compute if necessary */ if (ctx->electron.coord_new_date > ctx->ao_basis.ao_vgl_date) { @@ -3802,7 +3791,7 @@ qmckl_exit_code qmckl_provide_ao_vgl(qmckl_context context) | ~double~ | ~ao_factor[ao_num]~ | in | Normalization factor of the AOs | | ~double~ | ~shell_vgl[5][elec_num][shell_num]~ | in | Value, gradients and Laplacian of the shells | | ~double~ | ~ao_vgl[5][elec_num][ao_num]~ | out | Value, gradients and Laplacian of the AOs | - + #+begin_src f90 :comments org :tangle (eval f) :noweb yes integer function qmckl_compute_ao_vgl_f(context, & ao_num, shell_num, elec_num, nucl_num, & @@ -3944,7 +3933,7 @@ end function qmckl_compute_ao_vgl_f const int32_t* shell_ang_mom, const double* ao_factor, const double* shell_vgl, - double* const ao_vgl ); + double* const ao_vgl ); #+end_src #+CALL: generate_c_interface(table=qmckl_ao_vgl_args,rettyp=get_value("CRetType"),fname="qmckl_compute_ao_vgl")) @@ -4014,7 +4003,7 @@ import numpy as np from math import sqrt def f(a,x,y): - return np.sum( [c * np.exp( -b*(np.linalg.norm(x-y))**2) for b,c in a] ) + return np.sum( [c * np.exp( -b*(np.linalg.norm(x-y))**2) for b,c in a] ) def df(a,x,y,n): h0 = 1.e-6 @@ -4052,7 +4041,7 @@ norm = sqrt(3.) print ( "[0][26][219] : %25.15e"%(f(a,x,y) * (x[0] - y[0])**2) ) print ( "[1][26][219] : %25.15e"%(df(a,x,y,1)* (x[0] - y[0]) * (x[1] - y[1]) + 2.*f(a,x,y) * (x[0] - y[0])) ) -print ( "[0][26][220] : %25.15e"%(norm*f(a,x,y) * (x[0] - y[0]) * (x[1] - y[1]) )) +print ( "[0][26][220] : %25.15e"%(norm*f(a,x,y) * (x[0] - y[0]) * (x[1] - y[1]) )) print ( "[1][26][220] : %25.15e"%(norm*df(a,x,y,1)* (x[0] - y[0]) * (x[1] - y[1]) + norm*f(a,x,y) * (x[1] - y[1])) ) print ( "[0][26][221] : %25.15e"%(norm*f(a,x,y) * (x[0] - y[0]) * (x[2] - y[2])) ) @@ -4098,7 +4087,7 @@ int64_t elec_up_num = chbrclf_elec_up_num; int64_t elec_dn_num = chbrclf_elec_dn_num; double* elec_coord = &(chbrclf_elec_coord[0][0][0]); -rc = qmckl_set_electron_num (context, elec_up_num, elec_dn_num); +rc = qmckl_set_electron_num (context, elec_up_num, elec_dn_num); assert (rc == QMCKL_SUCCESS); rc = qmckl_set_electron_walk_num (context, walk_num); @@ -4106,7 +4095,7 @@ assert (rc == QMCKL_SUCCESS); assert(qmckl_electron_provided(context)); -rc = qmckl_set_electron_coord (context, 'N', elec_coord); +rc = qmckl_set_electron_coord (context, 'N', elec_coord); assert(rc == QMCKL_SUCCESS); @@ -4142,8 +4131,8 @@ assert( fabs(ao_vgl[0][26][223] - (-4.021908374204471e-09)) < 1.e-14 ); assert( fabs(ao_vgl[1][26][223] - ( 2.154644255710413e-08)) < 1.e-14 ); assert( fabs(ao_vgl[0][26][224] - ( 7.175045873560788e-10)) < 1.e-14 ); assert( fabs(ao_vgl[1][26][224] - (-3.843864637762753e-09)) < 1.e-14 ); -} - +} + #+end_src * End of files :noexport: