mirror of
https://github.com/TREX-CoE/qmckl.git
synced 2024-09-27 20:11:51 +02:00
Fixed dimensions in tests. #41
This commit is contained in:
parent
713be68c2b
commit
1efd6183d5
@ -424,7 +424,8 @@ qmckl_exit_code qmckl_set_determinant_mo_index_alpha(qmckl_context context, con
|
||||
}
|
||||
|
||||
qmckl_memory_info_struct mem_info = qmckl_memory_info_struct_zero;
|
||||
mem_info.size = ctx->det.walk_num * ctx->det.det_num_alpha * ctx->electron.up_num * sizeof(int64_t);
|
||||
mem_info.size = ctx->det.walk_num * ctx->det.det_num_alpha *
|
||||
ctx->electron.up_num * sizeof(int64_t);
|
||||
int64_t* new_array = (int64_t*) qmckl_malloc(context, mem_info);
|
||||
if (new_array == NULL) {
|
||||
return qmckl_failwith( context,
|
||||
@ -455,7 +456,8 @@ qmckl_exit_code qmckl_set_determinant_mo_index_beta(qmckl_context context, cons
|
||||
}
|
||||
|
||||
qmckl_memory_info_struct mem_info = qmckl_memory_info_struct_zero;
|
||||
mem_info.size = ctx->det.walk_num * ctx->det.det_num_beta * ctx->electron.down_num * sizeof(int64_t);
|
||||
mem_info.size = ctx->det.walk_num * ctx->det.det_num_beta *
|
||||
ctx->electron.down_num * sizeof(int64_t);
|
||||
int64_t* new_array = (int64_t*) qmckl_malloc(context, mem_info);
|
||||
if (new_array == NULL) {
|
||||
return qmckl_failwith( context,
|
||||
@ -520,11 +522,12 @@ qmckl_exit_code qmckl_get_det_vgl_alpha(qmckl_context context, double * const de
|
||||
rc = qmckl_provide_det_vgl_alpha(context);
|
||||
if (rc != QMCKL_SUCCESS) return rc;
|
||||
|
||||
//qmckl_context_struct* const ctx = (qmckl_context_struct* const) context;
|
||||
//assert (ctx != NULL);
|
||||
qmckl_context_struct* const ctx = (qmckl_context_struct* const) context;
|
||||
assert (ctx != NULL);
|
||||
|
||||
//size_t sze = ctx->det.det_num_alpha * ctx->det.walk_num * ctx->electron.up_num * ctx->electron.up_num;
|
||||
//memcpy(det_vgl_alpha, ctx->det.det_vgl_alpha, sze * sizeof(double));
|
||||
size_t sze = 5 * ctx->det.det_num_alpha * ctx->det.walk_num *
|
||||
ctx->electron.up_num * ctx->electron.up_num * sizeof(double);
|
||||
memcpy(det_vgl_alpha, ctx->det.det_vgl_alpha, sze);
|
||||
|
||||
return QMCKL_SUCCESS;
|
||||
}
|
||||
@ -549,8 +552,9 @@ qmckl_exit_code qmckl_get_det_vgl_beta(qmckl_context context, double * const det
|
||||
qmckl_context_struct* const ctx = (qmckl_context_struct* const) context;
|
||||
assert (ctx != NULL);
|
||||
|
||||
size_t sze = ctx->det.det_num_beta * ctx->det.walk_num * ctx->electron.down_num * ctx->electron.down_num;
|
||||
memcpy(det_vgl_beta, ctx->det.det_vgl_beta, sze * sizeof(double));
|
||||
size_t sze = 5 * ctx->det.det_num_beta * ctx->det.walk_num *
|
||||
ctx->electron.down_num * ctx->electron.down_num * sizeof(double);
|
||||
memcpy(det_vgl_beta, ctx->det.det_vgl_beta, sze);
|
||||
|
||||
return QMCKL_SUCCESS;
|
||||
}
|
||||
@ -764,7 +768,7 @@ qmckl_exit_code qmckl_provide_det_vgl_beta(qmckl_context context) {
|
||||
| ~int64_t~ | ~elec_num~ | in | Number of electrons |
|
||||
| ~int64_t~ | ~mo_index_alpha[det_num_alpha][walk_num][alpha_num]~ | in | MO indices for electrons |
|
||||
| ~int64_t~ | ~mo_num~ | in | Number of MOs |
|
||||
| ~double~ | ~mo_vgl[5][walk_num][elec_num][mo_num]~ | in | Value, gradients and Laplacian of the MOs |
|
||||
| ~double~ | ~mo_vgl[5][elec_num][mo_num]~ | in | Value, gradients and Laplacian of the MOs |
|
||||
| ~double~ | ~det_vgl_alpha[det_num_alpha][walk_num][5][alpha_num][alpha_num]~ | out | Value, gradients and Laplacian of the Det |
|
||||
|
||||
#+begin_src f90 :comments org :tangle (eval f) :noweb yes
|
||||
@ -782,7 +786,7 @@ integer function qmckl_compute_det_vgl_alpha_f(context, &
|
||||
integer*8, intent(in) :: elec_num
|
||||
integer*8, intent(in) :: mo_num
|
||||
integer*8, intent(in) :: mo_index_alpha(alpha_num, walk_num, det_num_alpha)
|
||||
double precision, intent(in) :: mo_vgl(mo_num, elec_num, walk_num, 5)
|
||||
double precision, intent(in) :: mo_vgl(mo_num, elec_num, 5)
|
||||
double precision, intent(inout) :: det_vgl_alpha(alpha_num, alpha_num, 5, walk_num, det_num_alpha)
|
||||
integer*8 :: idet, iwalk, ielec, mo_id, imo
|
||||
|
||||
@ -808,20 +812,20 @@ integer function qmckl_compute_det_vgl_alpha_f(context, &
|
||||
do ielec = 1, alpha_num
|
||||
do imo = 1, alpha_num
|
||||
mo_id = mo_index_alpha(imo,iwalk,idet)
|
||||
!! Value
|
||||
det_vgl_alpha(imo, ielec, 1, iwalk, idet) = 1.0d0!mo_vgl(mo_id, ielec, iwalk, 1)
|
||||
! Value
|
||||
det_vgl_alpha(imo, ielec, 1, iwalk, idet) = mo_vgl(mo_id, ielec, 1)
|
||||
|
||||
!! Grad_x
|
||||
!det_vgl_alpha(imo, ielec, 2, iwalk, idet) = mo_vgl(mo_id, ielec, iwalk, 2)
|
||||
! Grad_x
|
||||
det_vgl_alpha(imo, ielec, 2, iwalk, idet) = mo_vgl(mo_id, ielec, 2)
|
||||
|
||||
!! Grad_y
|
||||
!det_vgl_alpha(imo, ielec, 3, iwalk, idet) = mo_vgl(mo_id, ielec, iwalk, 3)
|
||||
! Grad_y
|
||||
det_vgl_alpha(imo, ielec, 3, iwalk, idet) = mo_vgl(mo_id, ielec, 3)
|
||||
|
||||
!! Grad_z
|
||||
!det_vgl_alpha(imo, ielec, 4, iwalk, idet) = mo_vgl(mo_id, ielec, iwalk, 4)
|
||||
! Grad_z
|
||||
det_vgl_alpha(imo, ielec, 4, iwalk, idet) = mo_vgl(mo_id, ielec, 4)
|
||||
|
||||
!! Lap
|
||||
!det_vgl_alpha(imo, ielec, 5, iwalk, idet) = mo_vgl(mo_id, ielec, iwalk, 5)
|
||||
! Lap
|
||||
det_vgl_alpha(imo, ielec, 5, iwalk, idet) = mo_vgl(mo_id, ielec, 5)
|
||||
end do
|
||||
end do
|
||||
end do
|
||||
@ -875,7 +879,7 @@ end function qmckl_compute_det_vgl_alpha_f
|
||||
integer (c_int64_t) , intent(in) , value :: elec_num
|
||||
integer (c_int64_t) , intent(in) :: mo_index_alpha(alpha_num,walk_num,det_num_alpha)
|
||||
integer (c_int64_t) , intent(in) , value :: mo_num
|
||||
real (c_double ) , intent(in) :: mo_vgl(mo_num,elec_num,walk_num,5)
|
||||
real (c_double ) , intent(in) :: mo_vgl(mo_num,elec_num,5)
|
||||
real (c_double ) , intent(out) :: det_vgl_alpha(alpha_num,alpha_num,5,walk_num,det_num_alpha)
|
||||
|
||||
integer(c_int32_t), external :: qmckl_compute_det_vgl_alpha_f
|
||||
@ -910,7 +914,7 @@ end function qmckl_compute_det_vgl_alpha_f
|
||||
| ~int64_t~ | ~elec_num~ | in | Number of electrons |
|
||||
| ~int64_t~ | ~mo_index_beta[det_num_beta][walk_num][beta_num]~ | in | Number of electrons |
|
||||
| ~int64_t~ | ~mo_num~ | in | Number of MOs |
|
||||
| ~double~ | ~mo_vgl[5][walk_num][elec_num][mo_num]~ | in | Value, gradients and Laplacian of the MOs |
|
||||
| ~double~ | ~mo_vgl[5][elec_num][mo_num]~ | in | Value, gradients and Laplacian of the MOs |
|
||||
| ~double~ | ~det_vgl_beta[det_num_beta][walk_num][5][beta_num][beta_num]~ | out | Value, gradients and Laplacian of the Det |
|
||||
|
||||
#+begin_src f90 :comments org :tangle (eval f) :noweb yes
|
||||
@ -928,7 +932,7 @@ integer function qmckl_compute_det_vgl_beta_f(context, &
|
||||
integer*8, intent(in) :: elec_num
|
||||
integer*8, intent(in) :: mo_num
|
||||
integer*8, intent(in) :: mo_index_beta(beta_num,walk_num,det_num_beta)
|
||||
double precision, intent(in) :: mo_vgl(mo_num, elec_num, walk_num, 5)
|
||||
double precision, intent(in) :: mo_vgl(mo_num, elec_num, 5)
|
||||
double precision, intent(inout) :: det_vgl_beta(beta_num, beta_num, 5, walk_num, det_num_beta)
|
||||
integer*8 :: idet, iwalk, ielec, mo_id, imo
|
||||
|
||||
@ -955,19 +959,19 @@ integer function qmckl_compute_det_vgl_beta_f(context, &
|
||||
do imo = 1, beta_num
|
||||
mo_id = mo_index_beta(imo, iwalk, idet)
|
||||
! Value
|
||||
det_vgl_beta(imo, ielec, 1, iwalk, idet) = mo_vgl(mo_id, alpha_num + ielec, iwalk, 1)
|
||||
det_vgl_beta(imo, ielec, 1, iwalk, idet) = mo_vgl(mo_id, alpha_num + ielec, 1)
|
||||
|
||||
! Grad_x
|
||||
det_vgl_beta(imo, ielec, 2, iwalk, idet) = mo_vgl(mo_id, alpha_num + ielec, iwalk, 2)
|
||||
det_vgl_beta(imo, ielec, 2, iwalk, idet) = mo_vgl(mo_id, alpha_num + ielec, 2)
|
||||
|
||||
! Grad_y
|
||||
det_vgl_beta(imo, ielec, 3, iwalk, idet) = mo_vgl(mo_id, alpha_num + ielec, iwalk, 3)
|
||||
det_vgl_beta(imo, ielec, 3, iwalk, idet) = mo_vgl(mo_id, alpha_num + ielec, 3)
|
||||
|
||||
! Grad_z
|
||||
det_vgl_beta(imo, ielec, 4, iwalk, idet) = mo_vgl(mo_id, alpha_num + ielec, iwalk, 4)
|
||||
det_vgl_beta(imo, ielec, 4, iwalk, idet) = mo_vgl(mo_id, alpha_num + ielec, 4)
|
||||
|
||||
! Lap
|
||||
det_vgl_beta(imo, ielec, 5, iwalk, idet) = mo_vgl(mo_id, alpha_num + ielec, iwalk, 5)
|
||||
det_vgl_beta(imo, ielec, 5, iwalk, idet) = mo_vgl(mo_id, alpha_num + ielec, 5)
|
||||
end do
|
||||
end do
|
||||
end do
|
||||
@ -1021,7 +1025,7 @@ end function qmckl_compute_det_vgl_beta_f
|
||||
integer (c_int64_t) , intent(in) , value :: elec_num
|
||||
integer (c_int64_t) , intent(in) :: mo_index_beta(beta_num,walk_num,det_num_beta)
|
||||
integer (c_int64_t) , intent(in) , value :: mo_num
|
||||
real (c_double ) , intent(in) :: mo_vgl(mo_num,elec_num,walk_num,5)
|
||||
real (c_double ) , intent(in) :: mo_vgl(mo_num,elec_num,5)
|
||||
real (c_double ) , intent(out) :: det_vgl_beta(beta_num,beta_num,5,walk_num,det_num_beta)
|
||||
|
||||
integer(c_int32_t), external :: qmckl_compute_det_vgl_beta_f
|
||||
@ -1043,7 +1047,7 @@ end function qmckl_compute_det_vgl_beta_f
|
||||
*** Test
|
||||
|
||||
#+begin_src c :tangle (eval c_test) :exports none
|
||||
{
|
||||
|
||||
#define walk_num chbrclf_walk_num
|
||||
#define elec_num chbrclf_elec_num
|
||||
#define shell_num chbrclf_shell_num
|
||||
@ -1175,8 +1179,8 @@ assert (rc == QMCKL_SUCCESS);
|
||||
|
||||
/* Set up determinant data */
|
||||
|
||||
const int64_t det_num_alpha = 2;
|
||||
const int64_t det_num_beta = 2;
|
||||
const int64_t det_num_alpha = 1;
|
||||
const int64_t det_num_beta = 1;
|
||||
int64_t mo_index_alpha[det_num_alpha][walk_num][elec_up_num];
|
||||
int64_t mo_index_beta[det_num_alpha][walk_num][elec_dn_num];
|
||||
|
||||
@ -1184,11 +1188,11 @@ int i, j, k;
|
||||
for(k = 0; k < det_num_alpha; ++k)
|
||||
for(i = 0; i < walk_num; ++i)
|
||||
for(j = 0; j < elec_up_num; ++j)
|
||||
mo_index_alpha[k][i][j] = j;
|
||||
mo_index_alpha[k][i][j] = j + 1;
|
||||
for(k = 0; k < det_num_beta; ++k)
|
||||
for(i = 0; i < walk_num; ++i)
|
||||
for(j = 0; j < elec_up_num; ++j)
|
||||
mo_index_beta[k][i][j] = j;
|
||||
mo_index_beta[k][i][j] = j + 1;
|
||||
|
||||
rc = qmckl_set_determinant_type (context, typ);
|
||||
assert(rc == QMCKL_SUCCESS);
|
||||
@ -1208,12 +1212,10 @@ assert (rc == QMCKL_SUCCESS);
|
||||
rc = qmckl_set_determinant_mo_index_beta (context, &(mo_index_beta[0][0][0]));
|
||||
assert (rc == QMCKL_SUCCESS);
|
||||
|
||||
// Get alpha determinant
|
||||
// Get slater-determinant
|
||||
|
||||
double det_vgl_alpha[det_num_alpha][walk_num][5][elec_up_num][elec_up_num];
|
||||
double det_vgl_beta[det_num_beta][walk_num][5][elec_dn_num][elec_dn_num];
|
||||
double det_inv_matrix_alpha[det_num_alpha][walk_num][5][elec_up_num][elec_up_num];
|
||||
double det_inv_matrix_beta[det_num_beta][walk_num][5][elec_dn_num][elec_dn_num];
|
||||
|
||||
rc = qmckl_get_det_vgl_alpha(context, &(det_vgl_alpha[0][0][0][0][0]));
|
||||
assert (rc == QMCKL_SUCCESS);
|
||||
@ -1221,14 +1223,6 @@ assert (rc == QMCKL_SUCCESS);
|
||||
rc = qmckl_get_det_vgl_beta(context, &(det_vgl_beta[0][0][0][0][0]));
|
||||
assert (rc == QMCKL_SUCCESS);
|
||||
|
||||
rc = qmckl_get_det_inv_matrix_alpha(context, &(det_inv_matrix_alpha[0][0][0][0][0]));
|
||||
assert (rc == QMCKL_SUCCESS);
|
||||
|
||||
rc = qmckl_get_det_inv_matrix_beta(context, &(det_inv_matrix_beta[0][0][0][0][0]));
|
||||
assert (rc == QMCKL_SUCCESS);
|
||||
|
||||
}
|
||||
|
||||
#+end_src
|
||||
|
||||
** Inverse of Determinant matrix
|
||||
@ -1785,6 +1779,19 @@ end function qmckl_compute_det_inv_matrix_beta_f
|
||||
|
||||
|
||||
*** Test
|
||||
#+begin_src c :tangle (eval c_test) :exports none
|
||||
// Get adjoint of the slater-determinant
|
||||
|
||||
double det_inv_matrix_alpha[det_num_alpha][walk_num][5][elec_up_num][elec_up_num];
|
||||
double det_inv_matrix_beta[det_num_beta][walk_num][5][elec_dn_num][elec_dn_num];
|
||||
|
||||
rc = qmckl_get_det_inv_matrix_alpha(context, &(det_inv_matrix_alpha[0][0][0][0][0]));
|
||||
assert (rc == QMCKL_SUCCESS);
|
||||
|
||||
rc = qmckl_get_det_inv_matrix_beta(context, &(det_inv_matrix_beta[0][0][0][0][0]));
|
||||
assert (rc == QMCKL_SUCCESS);
|
||||
|
||||
#+end_src
|
||||
|
||||
* End of files :noexport:
|
||||
|
||||
|
@ -518,6 +518,202 @@ end function qmckl_compute_kinetic_energy_f
|
||||
#+end_src
|
||||
|
||||
*** Test
|
||||
#+begin_src c :tangle (eval c_test) :exports none
|
||||
|
||||
#define walk_num chbrclf_walk_num
|
||||
#define elec_num chbrclf_elec_num
|
||||
#define shell_num chbrclf_shell_num
|
||||
#define ao_num chbrclf_ao_num
|
||||
|
||||
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]);
|
||||
const int64_t nucl_num = chbrclf_nucl_num;
|
||||
const double* nucl_charge = chbrclf_charge;
|
||||
const double* nucl_coord = &(chbrclf_nucl_coord[0][0]);
|
||||
|
||||
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);
|
||||
assert (rc == QMCKL_SUCCESS);
|
||||
|
||||
assert(qmckl_electron_provided(context));
|
||||
|
||||
rc = qmckl_set_electron_coord (context, 'N', elec_coord);
|
||||
assert(rc == QMCKL_SUCCESS);
|
||||
|
||||
rc = qmckl_set_nucleus_num (context, nucl_num);
|
||||
assert(rc == QMCKL_SUCCESS);
|
||||
|
||||
rc = qmckl_set_nucleus_coord (context, 'T', &(nucl_coord[0]));
|
||||
assert(rc == QMCKL_SUCCESS);
|
||||
|
||||
rc = qmckl_set_nucleus_charge(context, nucl_charge);
|
||||
assert(rc == QMCKL_SUCCESS);
|
||||
|
||||
assert(qmckl_nucleus_provided(context));
|
||||
|
||||
const int64_t * nucleus_index = &(chbrclf_basis_nucleus_index[0]);
|
||||
const int64_t * nucleus_shell_num = &(chbrclf_basis_nucleus_shell_num[0]);
|
||||
const int32_t * shell_ang_mom = &(chbrclf_basis_shell_ang_mom[0]);
|
||||
const int64_t * shell_prim_num = &(chbrclf_basis_shell_prim_num[0]);
|
||||
const int64_t * shell_prim_index = &(chbrclf_basis_shell_prim_index[0]);
|
||||
const double * shell_factor = &(chbrclf_basis_shell_factor[0]);
|
||||
const double * exponent = &(chbrclf_basis_exponent[0]);
|
||||
const double * coefficient = &(chbrclf_basis_coefficient[0]);
|
||||
const double * prim_factor = &(chbrclf_basis_prim_factor[0]);
|
||||
const double * ao_factor = &(chbrclf_basis_ao_factor[0]);
|
||||
|
||||
const char typ = 'G';
|
||||
|
||||
assert(!qmckl_ao_basis_provided(context));
|
||||
|
||||
rc = qmckl_set_ao_basis_type (context, typ);
|
||||
assert(rc == QMCKL_SUCCESS);
|
||||
assert(!qmckl_ao_basis_provided(context));
|
||||
|
||||
rc = qmckl_set_ao_basis_shell_num (context, chbrclf_shell_num);
|
||||
assert(rc == QMCKL_SUCCESS);
|
||||
assert(!qmckl_ao_basis_provided(context));
|
||||
|
||||
rc = qmckl_set_ao_basis_prim_num (context, chbrclf_prim_num);
|
||||
assert(rc == QMCKL_SUCCESS);
|
||||
assert(!qmckl_ao_basis_provided(context));
|
||||
|
||||
rc = qmckl_set_ao_basis_nucleus_index (context, nucleus_index);
|
||||
assert(rc == QMCKL_SUCCESS);
|
||||
assert(!qmckl_ao_basis_provided(context));
|
||||
|
||||
rc = qmckl_set_ao_basis_nucleus_shell_num (context, nucleus_shell_num);
|
||||
assert(rc == QMCKL_SUCCESS);
|
||||
assert(!qmckl_ao_basis_provided(context));
|
||||
|
||||
rc = qmckl_set_ao_basis_shell_ang_mom (context, shell_ang_mom);
|
||||
assert(rc == QMCKL_SUCCESS);
|
||||
assert(!qmckl_ao_basis_provided(context));
|
||||
|
||||
rc = qmckl_set_ao_basis_shell_factor (context, shell_factor);
|
||||
assert(rc == QMCKL_SUCCESS);
|
||||
assert(!qmckl_ao_basis_provided(context));
|
||||
|
||||
rc = qmckl_set_ao_basis_shell_prim_num (context, shell_prim_num);
|
||||
assert(rc == QMCKL_SUCCESS);
|
||||
assert(!qmckl_ao_basis_provided(context));
|
||||
|
||||
rc = qmckl_set_ao_basis_shell_prim_index (context, shell_prim_index);
|
||||
assert(rc == QMCKL_SUCCESS);
|
||||
assert(!qmckl_ao_basis_provided(context));
|
||||
|
||||
rc = qmckl_set_ao_basis_exponent (context, exponent);
|
||||
assert(rc == QMCKL_SUCCESS);
|
||||
assert(!qmckl_ao_basis_provided(context));
|
||||
|
||||
rc = qmckl_set_ao_basis_coefficient (context, coefficient);
|
||||
assert(rc == QMCKL_SUCCESS);
|
||||
assert(!qmckl_ao_basis_provided(context));
|
||||
|
||||
rc = qmckl_set_ao_basis_prim_factor (context, prim_factor);
|
||||
assert(rc == QMCKL_SUCCESS);
|
||||
|
||||
rc = qmckl_set_ao_basis_ao_num(context, chbrclf_ao_num);
|
||||
assert(rc == QMCKL_SUCCESS);
|
||||
|
||||
rc = qmckl_set_ao_basis_ao_factor (context, ao_factor);
|
||||
assert(rc == QMCKL_SUCCESS);
|
||||
|
||||
assert(qmckl_ao_basis_provided(context));
|
||||
|
||||
|
||||
double ao_vgl[5][walk_num][elec_num][chbrclf_ao_num];
|
||||
|
||||
rc = qmckl_get_ao_vgl(context, &(ao_vgl[0][0][0][0]));
|
||||
assert (rc == QMCKL_SUCCESS);
|
||||
|
||||
/* Set up MO data */
|
||||
rc = qmckl_set_mo_basis_type(context, typ);
|
||||
assert (rc == QMCKL_SUCCESS);
|
||||
|
||||
const int64_t mo_num = chbrclf_mo_num;
|
||||
rc = qmckl_set_mo_basis_mo_num(context, mo_num);
|
||||
assert (rc == QMCKL_SUCCESS);
|
||||
|
||||
const double * mo_coefficient = &(chbrclf_mo_coef[0]);
|
||||
|
||||
rc = qmckl_set_mo_basis_coefficient(context, mo_coefficient);
|
||||
assert (rc == QMCKL_SUCCESS);
|
||||
|
||||
assert(qmckl_mo_basis_provided(context));
|
||||
|
||||
double mo_vgl[5][elec_num][chbrclf_mo_num];
|
||||
rc = qmckl_get_mo_basis_vgl(context, &(mo_vgl[0][0][0]));
|
||||
assert (rc == QMCKL_SUCCESS);
|
||||
|
||||
/* Set up determinant data */
|
||||
|
||||
const int64_t det_num_alpha = 1;
|
||||
const int64_t det_num_beta = 1;
|
||||
int64_t mo_index_alpha[det_num_alpha][walk_num][elec_up_num];
|
||||
int64_t mo_index_beta[det_num_alpha][walk_num][elec_dn_num];
|
||||
|
||||
int i, j, k;
|
||||
for(k = 0; k < det_num_alpha; ++k)
|
||||
for(i = 0; i < walk_num; ++i)
|
||||
for(j = 0; j < elec_up_num; ++j)
|
||||
mo_index_alpha[k][i][j] = j + 1;
|
||||
for(k = 0; k < det_num_beta; ++k)
|
||||
for(i = 0; i < walk_num; ++i)
|
||||
for(j = 0; j < elec_up_num; ++j)
|
||||
mo_index_beta[k][i][j] = j + 1;
|
||||
|
||||
rc = qmckl_set_determinant_type (context, typ);
|
||||
assert(rc == QMCKL_SUCCESS);
|
||||
|
||||
rc = qmckl_set_determinant_walk_num (context, walk_num);
|
||||
assert (rc == QMCKL_SUCCESS);
|
||||
|
||||
rc = qmckl_set_determinant_det_num_alpha (context, det_num_alpha);
|
||||
assert (rc == QMCKL_SUCCESS);
|
||||
|
||||
rc = qmckl_set_determinant_det_num_beta (context, det_num_beta);
|
||||
assert (rc == QMCKL_SUCCESS);
|
||||
|
||||
rc = qmckl_set_determinant_mo_index_alpha (context, &(mo_index_alpha[0][0][0]));
|
||||
assert (rc == QMCKL_SUCCESS);
|
||||
|
||||
rc = qmckl_set_determinant_mo_index_beta (context, &(mo_index_beta[0][0][0]));
|
||||
assert (rc == QMCKL_SUCCESS);
|
||||
|
||||
// Get alpha determinant
|
||||
|
||||
double det_vgl_alpha[det_num_alpha][walk_num][5][elec_up_num][elec_up_num];
|
||||
double det_vgl_beta[det_num_beta][walk_num][5][elec_dn_num][elec_dn_num];
|
||||
|
||||
rc = qmckl_get_det_vgl_alpha(context, &(det_vgl_alpha[0][0][0][0][0]));
|
||||
assert (rc == QMCKL_SUCCESS);
|
||||
|
||||
rc = qmckl_get_det_vgl_beta(context, &(det_vgl_beta[0][0][0][0][0]));
|
||||
assert (rc == QMCKL_SUCCESS);
|
||||
|
||||
// Get adjoint of the slater-determinant
|
||||
|
||||
double det_inv_matrix_alpha[det_num_alpha][walk_num][5][elec_up_num][elec_up_num];
|
||||
double det_inv_matrix_beta[det_num_beta][walk_num][5][elec_dn_num][elec_dn_num];
|
||||
|
||||
rc = qmckl_get_det_inv_matrix_alpha(context, &(det_inv_matrix_alpha[0][0][0][0][0]));
|
||||
assert (rc == QMCKL_SUCCESS);
|
||||
|
||||
rc = qmckl_get_det_inv_matrix_beta(context, &(det_inv_matrix_beta[0][0][0][0][0]));
|
||||
assert (rc == QMCKL_SUCCESS);
|
||||
|
||||
// Calculate the Kinetic energy
|
||||
|
||||
double kinetic_energy[walk_num];
|
||||
|
||||
rc = qmckl_get_kinetic_energy(context, &(kinetic_energy[0]));
|
||||
assert (rc == QMCKL_SUCCESS);
|
||||
|
||||
#+end_src
|
||||
|
||||
** Potential energy
|
||||
:PROPERTIES:
|
||||
@ -783,6 +979,16 @@ end function qmckl_compute_potential_energy_f
|
||||
#+end_src
|
||||
|
||||
*** Test
|
||||
#+begin_src c :tangle (eval c_test) :exports none
|
||||
// Calculate the Potential energy
|
||||
|
||||
double potential_energy[walk_num];
|
||||
|
||||
rc = qmckl_get_potential_energy(context, &(potential_energy[0]));
|
||||
assert (rc == QMCKL_SUCCESS);
|
||||
|
||||
#+end_src
|
||||
|
||||
** Local energy
|
||||
:PROPERTIES:
|
||||
:Name: qmckl_compute_local_energy
|
||||
@ -1012,6 +1218,16 @@ end function qmckl_compute_local_energy_f
|
||||
#+end_src
|
||||
|
||||
*** Test
|
||||
#+begin_src c :tangle (eval c_test) :exports none
|
||||
// Calculate the Local energy
|
||||
|
||||
double local_energy[walk_num];
|
||||
|
||||
rc = qmckl_get_local_energy(context, &(local_energy[0]));
|
||||
assert (rc == QMCKL_SUCCESS);
|
||||
|
||||
#+end_src
|
||||
|
||||
** Drift vector
|
||||
:PROPERTIES:
|
||||
:Name: qmckl_compute_drift_vector
|
||||
@ -1354,6 +1570,15 @@ end function qmckl_compute_drift_vector_f
|
||||
#+end_src
|
||||
|
||||
*** Test
|
||||
#+begin_src c :tangle (eval c_test) :exports none
|
||||
// Calculate the Drift vector
|
||||
|
||||
double drift_vector[walk_num][3];
|
||||
|
||||
rc = qmckl_get_drift_vector(context, &(drift_vector[0][0]));
|
||||
assert (rc == QMCKL_SUCCESS);
|
||||
|
||||
#+end_src
|
||||
* End of files :noexport:
|
||||
|
||||
#+begin_src c :tangle (eval h_private_type)
|
||||
|
Loading…
Reference in New Issue
Block a user