mirror of
https://github.com/TREX-CoE/qmckl.git
synced 2024-12-23 04:44:03 +01:00
Added AO_factor to AOs
This commit is contained in:
parent
75a93d12c6
commit
cdf92e2464
@ -3188,7 +3188,7 @@ end function test_qmckl_ao_polynomial_vgl
|
|||||||
|
|
||||||
* Combining radial and polynomial parts
|
* Combining radial and polynomial parts
|
||||||
|
|
||||||
*** TODO Get
|
*** Get
|
||||||
|
|
||||||
#+begin_src c :comments org :tangle (eval h_func) :noweb yes
|
#+begin_src c :comments org :tangle (eval h_func) :noweb yes
|
||||||
qmckl_exit_code qmckl_get_ao_vgl(qmckl_context context, double* const ao_vgl);
|
qmckl_exit_code qmckl_get_ao_vgl(qmckl_context context, double* const ao_vgl);
|
||||||
@ -3230,7 +3230,7 @@ qmckl_exit_code qmckl_get_ao_vgl(qmckl_context context, double* const ao_vgl) {
|
|||||||
end interface
|
end interface
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
*** TODO Provide
|
*** Provide
|
||||||
|
|
||||||
#+begin_src c :comments org :tangle (eval h_private_func) :noweb yes :exports none
|
#+begin_src c :comments org :tangle (eval h_private_func) :noweb yes :exports none
|
||||||
qmckl_exit_code qmckl_provide_ao_vgl(qmckl_context context);
|
qmckl_exit_code qmckl_provide_ao_vgl(qmckl_context context);
|
||||||
@ -3302,6 +3302,7 @@ qmckl_exit_code qmckl_provide_ao_vgl(qmckl_context context)
|
|||||||
ctx->ao_basis.nucleus_range,
|
ctx->ao_basis.nucleus_range,
|
||||||
ctx->ao_basis.nucleus_max_ang_mom,
|
ctx->ao_basis.nucleus_max_ang_mom,
|
||||||
ctx->ao_basis.shell_ang_mom,
|
ctx->ao_basis.shell_ang_mom,
|
||||||
|
ctx->ao_basis.ao_factor,
|
||||||
ctx->ao_basis.shell_vgl,
|
ctx->ao_basis.shell_vgl,
|
||||||
ctx->ao_basis.ao_vgl);
|
ctx->ao_basis.ao_vgl);
|
||||||
if (rc != QMCKL_SUCCESS) {
|
if (rc != QMCKL_SUCCESS) {
|
||||||
@ -3315,7 +3316,7 @@ qmckl_exit_code qmckl_provide_ao_vgl(qmckl_context context)
|
|||||||
}
|
}
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
*** TODO Compute
|
*** Compute
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:Name: qmckl_compute_ao_vgl
|
:Name: qmckl_compute_ao_vgl
|
||||||
:CRetType: qmckl_exit_code
|
:CRetType: qmckl_exit_code
|
||||||
@ -3336,6 +3337,7 @@ qmckl_exit_code qmckl_provide_ao_vgl(qmckl_context context)
|
|||||||
| ~double~ | ~nucleus_range[nucl_num]~ | in | Range beyond which all is zero |
|
| ~double~ | ~nucleus_range[nucl_num]~ | in | Range beyond which all is zero |
|
||||||
| ~int32_t~ | ~nucleus_max_ang_mom[nucl_num]~ | in | Maximum angular momentum per nucleus |
|
| ~int32_t~ | ~nucleus_max_ang_mom[nucl_num]~ | in | Maximum angular momentum per nucleus |
|
||||||
| ~int32_t~ | ~shell_ang_mom[shell_num]~ | in | Angular momentum of each shell |
|
| ~int32_t~ | ~shell_ang_mom[shell_num]~ | in | Angular momentum of each shell |
|
||||||
|
| ~double~ | ~ao_factor[ao_num]~ | in | Normalization factor of the AOs |
|
||||||
| ~double~ | ~shell_vgl[5][walk_num][elec_num][shell_num]~ | in | Value, gradients and Laplacian of the shells |
|
| ~double~ | ~shell_vgl[5][walk_num][elec_num][shell_num]~ | in | Value, gradients and Laplacian of the shells |
|
||||||
| ~double~ | ~ao_vgl[5][walk_num][elec_num][ao_num]~ | out | Value, gradients and Laplacian of the AOs |
|
| ~double~ | ~ao_vgl[5][walk_num][elec_num][ao_num]~ | out | Value, gradients and Laplacian of the AOs |
|
||||||
|
|
||||||
@ -3344,7 +3346,7 @@ integer function qmckl_compute_ao_vgl_f(context, &
|
|||||||
ao_num, shell_num, elec_num, nucl_num, walk_num, &
|
ao_num, shell_num, elec_num, nucl_num, walk_num, &
|
||||||
elec_coord, nucl_coord, nucleus_index, nucleus_shell_num, &
|
elec_coord, nucl_coord, nucleus_index, nucleus_shell_num, &
|
||||||
nucleus_range, nucleus_max_ang_mom, shell_ang_mom, &
|
nucleus_range, nucleus_max_ang_mom, shell_ang_mom, &
|
||||||
shell_vgl, ao_vgl) &
|
ao_factor, shell_vgl, ao_vgl) &
|
||||||
result(info)
|
result(info)
|
||||||
use qmckl
|
use qmckl
|
||||||
implicit none
|
implicit none
|
||||||
@ -3361,6 +3363,7 @@ integer function qmckl_compute_ao_vgl_f(context, &
|
|||||||
double precision , intent(in) :: nucleus_range(nucl_num)
|
double precision , intent(in) :: nucleus_range(nucl_num)
|
||||||
integer , intent(in) :: nucleus_max_ang_mom(nucl_num)
|
integer , intent(in) :: nucleus_max_ang_mom(nucl_num)
|
||||||
integer , intent(in) :: shell_ang_mom(shell_num)
|
integer , intent(in) :: shell_ang_mom(shell_num)
|
||||||
|
double precision , intent(in) :: ao_factor(ao_num)
|
||||||
double precision , intent(in) :: shell_vgl(shell_num,elec_num,walk_num,5)
|
double precision , intent(in) :: shell_vgl(shell_num,elec_num,walk_num,5)
|
||||||
double precision , intent(out) :: ao_vgl(ao_num,elec_num,walk_num,5)
|
double precision , intent(out) :: ao_vgl(ao_num,elec_num,walk_num,5)
|
||||||
|
|
||||||
@ -3422,32 +3425,36 @@ integer function qmckl_compute_ao_vgl_f(context, &
|
|||||||
do il = lstart(l), lstart(l+1)-1
|
do il = lstart(l), lstart(l+1)-1
|
||||||
! Value
|
! Value
|
||||||
ao_vgl(k,ielec,iwalk,1) = &
|
ao_vgl(k,ielec,iwalk,1) = &
|
||||||
poly_vgl(1,il) * shell_vgl(ishell,ielec,iwalk,1)
|
poly_vgl(1,il) * shell_vgl(ishell,ielec,iwalk,1) * ao_factor(k)
|
||||||
|
|
||||||
! Grad_x
|
! Grad_x
|
||||||
ao_vgl(k,ielec,iwalk,2) = &
|
ao_vgl(k,ielec,iwalk,2) = ( &
|
||||||
poly_vgl(2,il) * shell_vgl(ishell,ielec,iwalk,1) + &
|
poly_vgl(2,il) * shell_vgl(ishell,ielec,iwalk,1) + &
|
||||||
poly_vgl(1,il) * shell_vgl(ishell,ielec,iwalk,2)
|
poly_vgl(1,il) * shell_vgl(ishell,ielec,iwalk,2) &
|
||||||
|
) * ao_factor(k)
|
||||||
|
|
||||||
! Grad_y
|
! Grad_y
|
||||||
ao_vgl(k,ielec,iwalk,3) = &
|
ao_vgl(k,ielec,iwalk,3) = ( &
|
||||||
poly_vgl(3,il) * shell_vgl(ishell,ielec,iwalk,1) + &
|
poly_vgl(3,il) * shell_vgl(ishell,ielec,iwalk,1) + &
|
||||||
poly_vgl(1,il) * shell_vgl(ishell,ielec,iwalk,3)
|
poly_vgl(1,il) * shell_vgl(ishell,ielec,iwalk,3) &
|
||||||
|
) * ao_factor(k)
|
||||||
|
|
||||||
! Grad_z
|
! Grad_z
|
||||||
ao_vgl(k,ielec,iwalk,4) = &
|
ao_vgl(k,ielec,iwalk,4) = ( &
|
||||||
poly_vgl(4,il) * shell_vgl(ishell,ielec,iwalk,1) + &
|
poly_vgl(4,il) * shell_vgl(ishell,ielec,iwalk,1) + &
|
||||||
poly_vgl(1,il) * shell_vgl(ishell,ielec,iwalk,4)
|
poly_vgl(1,il) * shell_vgl(ishell,ielec,iwalk,4) &
|
||||||
|
) * ao_factor(k)
|
||||||
|
|
||||||
! Lapl_z
|
! Lapl_z
|
||||||
ao_vgl(k,ielec,iwalk,5) = &
|
ao_vgl(k,ielec,iwalk,5) = ( &
|
||||||
poly_vgl(5,il) * shell_vgl(ishell,ielec,iwalk,1) + &
|
poly_vgl(5,il) * shell_vgl(ishell,ielec,iwalk,1) + &
|
||||||
poly_vgl(1,il) * shell_vgl(ishell,ielec,iwalk,5) + &
|
poly_vgl(1,il) * shell_vgl(ishell,ielec,iwalk,5) + &
|
||||||
2.d0 * ( &
|
2.d0 * ( &
|
||||||
poly_vgl(2,il) * shell_vgl(ishell,ielec,iwalk,2) + &
|
poly_vgl(2,il) * shell_vgl(ishell,ielec,iwalk,2) + &
|
||||||
poly_vgl(3,il) * shell_vgl(ishell,ielec,iwalk,3) + &
|
poly_vgl(3,il) * shell_vgl(ishell,ielec,iwalk,3) + &
|
||||||
poly_vgl(4,il) * shell_vgl(ishell,ielec,iwalk,4) )
|
poly_vgl(4,il) * shell_vgl(ishell,ielec,iwalk,4) ) &
|
||||||
|
) * ao_factor(k)
|
||||||
|
|
||||||
k = k+1
|
k = k+1
|
||||||
end do
|
end do
|
||||||
end do
|
end do
|
||||||
@ -3477,6 +3484,7 @@ end function qmckl_compute_ao_vgl_f
|
|||||||
const double* nucleus_range,
|
const double* nucleus_range,
|
||||||
const int32_t* nucleus_max_ang_mom,
|
const int32_t* nucleus_max_ang_mom,
|
||||||
const int32_t* shell_ang_mom,
|
const int32_t* shell_ang_mom,
|
||||||
|
const double* ao_factor,
|
||||||
const double* shell_vgl,
|
const double* shell_vgl,
|
||||||
double* const ao_vgl );
|
double* const ao_vgl );
|
||||||
#+end_src
|
#+end_src
|
||||||
@ -3499,6 +3507,7 @@ end function qmckl_compute_ao_vgl_f
|
|||||||
nucleus_range, &
|
nucleus_range, &
|
||||||
nucleus_max_ang_mom, &
|
nucleus_max_ang_mom, &
|
||||||
shell_ang_mom, &
|
shell_ang_mom, &
|
||||||
|
ao_factor, &
|
||||||
shell_vgl, &
|
shell_vgl, &
|
||||||
ao_vgl) &
|
ao_vgl) &
|
||||||
bind(C) result(info)
|
bind(C) result(info)
|
||||||
@ -3519,6 +3528,7 @@ end function qmckl_compute_ao_vgl_f
|
|||||||
real (c_double ) , intent(in) :: nucleus_range(nucl_num)
|
real (c_double ) , intent(in) :: nucleus_range(nucl_num)
|
||||||
integer (c_int32_t) , intent(in) :: nucleus_max_ang_mom(nucl_num)
|
integer (c_int32_t) , intent(in) :: nucleus_max_ang_mom(nucl_num)
|
||||||
integer (c_int32_t) , intent(in) :: shell_ang_mom(shell_num)
|
integer (c_int32_t) , intent(in) :: shell_ang_mom(shell_num)
|
||||||
|
real (c_double ) , intent(in) :: ao_factor(ao_num)
|
||||||
real (c_double ) , intent(in) :: shell_vgl(shell_num,elec_num,walk_num,5)
|
real (c_double ) , intent(in) :: shell_vgl(shell_num,elec_num,walk_num,5)
|
||||||
real (c_double ) , intent(out) :: ao_vgl(ao_num,elec_num,walk_num,5)
|
real (c_double ) , intent(out) :: ao_vgl(ao_num,elec_num,walk_num,5)
|
||||||
|
|
||||||
@ -3537,6 +3547,7 @@ end function qmckl_compute_ao_vgl_f
|
|||||||
nucleus_range, &
|
nucleus_range, &
|
||||||
nucleus_max_ang_mom, &
|
nucleus_max_ang_mom, &
|
||||||
shell_ang_mom, &
|
shell_ang_mom, &
|
||||||
|
ao_factor, &
|
||||||
shell_vgl, &
|
shell_vgl, &
|
||||||
ao_vgl)
|
ao_vgl)
|
||||||
|
|
||||||
@ -3617,7 +3628,7 @@ print ( "[1][0][26][224] : %25.15e"%(df(a,x,y,1)* (x[2] - y[2]) * (x[2] - y[2]))
|
|||||||
[1][0][26][224] : -3.843880138733679e-09
|
[1][0][26][224] : -3.843880138733679e-09
|
||||||
#+end_example
|
#+end_example
|
||||||
|
|
||||||
*** TODO Test
|
*** Test
|
||||||
|
|
||||||
#+begin_src c :tangle (eval c_test) :exports none
|
#+begin_src c :tangle (eval c_test) :exports none
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user