mirror of
https://github.com/TREX-CoE/qmckl.git
synced 2024-12-23 04:44:03 +01:00
Added interfaces and fortran versions and fixed return for smw2s. #25
This commit is contained in:
parent
159fb149a4
commit
d2eb9f5a5d
@ -1042,9 +1042,34 @@ unless the last original update causes a singular Slater-matrix.
|
|||||||
|
|
||||||
#+CALL: generate_c_header(table=qmckl_sherman_morrison_smw2s_args,rettyp=get_value("CRetType"),fname=get_value("Name"))
|
#+CALL: generate_c_header(table=qmckl_sherman_morrison_smw2s_args,rettyp=get_value("CRetType"),fname=get_value("Name"))
|
||||||
|
|
||||||
|
#+RESULTS:
|
||||||
|
#+begin_src c :tangle (eval h_func) :comments org
|
||||||
|
qmckl_exit_code qmckl_sherman_morrison_smw2s_c (
|
||||||
|
const qmckl_context context,
|
||||||
|
const uint64_t Dim,
|
||||||
|
const uint64_t N_updates,
|
||||||
|
const double* Updates,
|
||||||
|
const uint64_t* Updates_index,
|
||||||
|
double* Slater_inv );
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
|
||||||
*** Source Fortran
|
*** Source Fortran
|
||||||
|
|
||||||
|
#+begin_src f90 :tangle (eval f)
|
||||||
|
integer function qmckl_sherman_morrison_smw2s_f(context, Slater_inv, Dim, N_updates, &
|
||||||
|
Updates, Updates_index) result(info)
|
||||||
|
use qmckl
|
||||||
|
implicit none
|
||||||
|
integer(qmckl_context) , intent(in) :: context
|
||||||
|
integer*8 , intent(in), value :: Dim, N_updates
|
||||||
|
integer*8 , intent(in) :: Updates_index(N_updates)
|
||||||
|
real*8 , intent(in) :: Updates(N_updates*Dim)
|
||||||
|
real*8 , intent(inout) :: Slater_inv(Dim*Dim)
|
||||||
|
info = qmckl_sherman_morrison_smw2s (context, Dim, N_updates, Updates, Updates_index, Slater_inv)
|
||||||
|
end function qmckl_sherman_morrison_smw2s_f
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
|
||||||
*** Source C
|
*** Source C
|
||||||
|
|
||||||
@ -1103,6 +1128,7 @@ qmckl_exit_code qmckl_sherman_morrison_smw2s_c(const qmckl_context context,
|
|||||||
if (later > 0) {
|
if (later > 0) {
|
||||||
rc = qmckl_sherman_morrison_splitting_c(local_context, Dim, later, later_updates, later_index, Slater_inv);
|
rc = qmckl_sherman_morrison_splitting_c(local_context, Dim, later, later_updates, later_index, Slater_inv);
|
||||||
}
|
}
|
||||||
|
return QMCKL_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
#+end_src
|
#+end_src
|
||||||
@ -1113,8 +1139,52 @@ qmckl_exit_code qmckl_sherman_morrison_smw2s_c(const qmckl_context context,
|
|||||||
|
|
||||||
#+CALL: generate_c_interface(table=qmckl_sherman_morrison_smw2s_args,rettyp=get_value("FRetType"),fname=get_value("Name"))
|
#+CALL: generate_c_interface(table=qmckl_sherman_morrison_smw2s_args,rettyp=get_value("FRetType"),fname=get_value("Name"))
|
||||||
|
|
||||||
|
#+RESULTS:
|
||||||
|
#+begin_src f90 :tangle (eval f) :comments org :exports none
|
||||||
|
integer(c_int32_t) function qmckl_sherman_morrison_smw2s &
|
||||||
|
(context, Dim, N_updates, Updates, Updates_index, Slater_inv) &
|
||||||
|
bind(C) result(info)
|
||||||
|
|
||||||
|
use, intrinsic :: iso_c_binding
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
integer (c_int64_t) , intent(in) , value :: context
|
||||||
|
integer (c_int64_t) , intent(in) , value :: Dim
|
||||||
|
integer (c_int64_t) , intent(in) , value :: N_updates
|
||||||
|
real (c_double ) , intent(in) :: Updates(N_updates*Dim)
|
||||||
|
integer (c_int64_t) , intent(in) :: Updates_index(N_updates)
|
||||||
|
real (c_double ) , intent(inout) :: Slater_inv(Dim*Dim)
|
||||||
|
|
||||||
|
integer(c_int32_t), external :: qmckl_sherman_morrison_smw2s_c
|
||||||
|
info = qmckl_sherman_morrison_smw2s_c &
|
||||||
|
(context, Dim, N_updates, Updates, Updates_index, Slater_inv)
|
||||||
|
|
||||||
|
end function qmckl_sherman_morrison_smw2s
|
||||||
|
#+end_src
|
||||||
|
|
||||||
#+CALL: generate_f_interface(table=qmckl_sherman_morrison_smw2s_args,rettyp=get_value("FRetType"),fname=get_value("Name"))
|
#+CALL: generate_f_interface(table=qmckl_sherman_morrison_smw2s_args,rettyp=get_value("FRetType"),fname=get_value("Name"))
|
||||||
|
|
||||||
|
#+RESULTS:
|
||||||
|
#+begin_src f90 :tangle (eval fh_func) :comments org :exports none
|
||||||
|
interface
|
||||||
|
integer(c_int32_t) function qmckl_sherman_morrison_smw2s &
|
||||||
|
(context, Dim, N_updates, Updates, Updates_index, Slater_inv) &
|
||||||
|
bind(C)
|
||||||
|
use, intrinsic :: iso_c_binding
|
||||||
|
import
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
integer (c_int64_t) , intent(in) , value :: context
|
||||||
|
integer (c_int64_t) , intent(in) , value :: Dim
|
||||||
|
integer (c_int64_t) , intent(in) , value :: N_updates
|
||||||
|
real (c_double ) , intent(in) :: Updates(N_updates*Dim)
|
||||||
|
integer (c_int64_t) , intent(in) :: Updates_index(N_updates)
|
||||||
|
real (c_double ) , intent(inout) :: Slater_inv(Dim*Dim)
|
||||||
|
|
||||||
|
end function qmckl_sherman_morrison_smw2s
|
||||||
|
end interface
|
||||||
|
#+end_src
|
||||||
|
|
||||||
*** Test :noexport:
|
*** Test :noexport:
|
||||||
|
|
||||||
[TODO: FMJC] Write tests for the Sherman-Morrison part.
|
[TODO: FMJC] Write tests for the Sherman-Morrison part.
|
||||||
@ -1176,9 +1246,35 @@ unless the last original update causes a singular Slater-matrix.
|
|||||||
|
|
||||||
#+CALL: generate_c_header(table=qmckl_sherman_morrison_smw32s_args,rettyp=get_value("CRetType"),fname=get_value("Name"))
|
#+CALL: generate_c_header(table=qmckl_sherman_morrison_smw32s_args,rettyp=get_value("CRetType"),fname=get_value("Name"))
|
||||||
|
|
||||||
|
#+RESULTS:
|
||||||
|
#+begin_src c :tangle (eval h_func) :comments org
|
||||||
|
qmckl_exit_code qmckl_sherman_morrison_smw32s_c (
|
||||||
|
const qmckl_context context,
|
||||||
|
const uint64_t Dim,
|
||||||
|
const uint64_t N_updates,
|
||||||
|
const double* Updates,
|
||||||
|
const uint64_t* Updates_index,
|
||||||
|
double* Slater_inv );
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
|
||||||
*** Source Fortran
|
*** Source Fortran
|
||||||
|
|
||||||
|
#+begin_src f90 :tangle (eval f)
|
||||||
|
integer function qmckl_sherman_morrison_smw32s_f(context, Slater_inv, Dim, N_updates, &
|
||||||
|
Updates, Updates_index) result(info)
|
||||||
|
use qmckl
|
||||||
|
implicit none
|
||||||
|
integer(qmckl_context) , intent(in) :: context
|
||||||
|
integer*8 , intent(in), value :: Dim, N_updates
|
||||||
|
integer*8 , intent(in) :: Updates_index(N_updates)
|
||||||
|
real*8 , intent(in) :: Updates(N_updates*Dim)
|
||||||
|
real*8 , intent(inout) :: Slater_inv(Dim*Dim)
|
||||||
|
!logical, external :: qmckl_sherman_morrison_f
|
||||||
|
info = qmckl_sherman_morrison_smw32s(context, Dim, N_updates, Updates, Updates_index, Slater_inv)
|
||||||
|
end function qmckl_sherman_morrison_smw32s_f
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
|
||||||
*** Source C
|
*** Source C
|
||||||
|
|
||||||
@ -1259,8 +1355,52 @@ qmckl_exit_code qmckl_sherman_morrison_smw32s_c(const qmckl_context context,
|
|||||||
|
|
||||||
#+CALL: generate_c_interface(table=qmckl_sherman_morrison_smw32s_args,rettyp=get_value("FRetType"),fname=get_value("Name"))
|
#+CALL: generate_c_interface(table=qmckl_sherman_morrison_smw32s_args,rettyp=get_value("FRetType"),fname=get_value("Name"))
|
||||||
|
|
||||||
|
#+RESULTS:
|
||||||
|
#+begin_src f90 :tangle (eval f) :comments org :exports none
|
||||||
|
integer(c_int32_t) function qmckl_sherman_morrison_smw32s &
|
||||||
|
(context, Dim, N_updates, Updates, Updates_index, Slater_inv) &
|
||||||
|
bind(C) result(info)
|
||||||
|
|
||||||
|
use, intrinsic :: iso_c_binding
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
integer (c_int64_t) , intent(in) , value :: context
|
||||||
|
integer (c_int64_t) , intent(in) , value :: Dim
|
||||||
|
integer (c_int64_t) , intent(in) , value :: N_updates
|
||||||
|
real (c_double ) , intent(in) :: Updates(N_updates*Dim)
|
||||||
|
integer (c_int64_t) , intent(in) :: Updates_index(N_updates)
|
||||||
|
real (c_double ) , intent(inout) :: Slater_inv(Dim*Dim)
|
||||||
|
|
||||||
|
integer(c_int32_t), external :: qmckl_sherman_morrison_smw32s_c
|
||||||
|
info = qmckl_sherman_morrison_smw32s_c &
|
||||||
|
(context, Dim, N_updates, Updates, Updates_index, Slater_inv)
|
||||||
|
|
||||||
|
end function qmckl_sherman_morrison_smw32s
|
||||||
|
#+end_src
|
||||||
|
|
||||||
#+CALL: generate_f_interface(table=qmckl_sherman_morrison_smw32s_args,rettyp=get_value("FRetType"),fname=get_value("Name"))
|
#+CALL: generate_f_interface(table=qmckl_sherman_morrison_smw32s_args,rettyp=get_value("FRetType"),fname=get_value("Name"))
|
||||||
|
|
||||||
|
#+RESULTS:
|
||||||
|
#+begin_src f90 :tangle (eval fh_func) :comments org :exports none
|
||||||
|
interface
|
||||||
|
integer(c_int32_t) function qmckl_sherman_morrison_smw32s &
|
||||||
|
(context, Dim, N_updates, Updates, Updates_index, Slater_inv) &
|
||||||
|
bind(C)
|
||||||
|
use, intrinsic :: iso_c_binding
|
||||||
|
import
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
integer (c_int64_t) , intent(in) , value :: context
|
||||||
|
integer (c_int64_t) , intent(in) , value :: Dim
|
||||||
|
integer (c_int64_t) , intent(in) , value :: N_updates
|
||||||
|
real (c_double ) , intent(in) :: Updates(N_updates*Dim)
|
||||||
|
integer (c_int64_t) , intent(in) :: Updates_index(N_updates)
|
||||||
|
real (c_double ) , intent(inout) :: Slater_inv(Dim*Dim)
|
||||||
|
|
||||||
|
end function qmckl_sherman_morrison_smw32s
|
||||||
|
end interface
|
||||||
|
#+end_src
|
||||||
|
|
||||||
*** Test :noexport:
|
*** Test :noexport:
|
||||||
|
|
||||||
[TODO: FMJC] Write tests for the Sherman-Morrison part.
|
[TODO: FMJC] Write tests for the Sherman-Morrison part.
|
||||||
|
Loading…
Reference in New Issue
Block a user