2024-06-29 01:15:47 +02:00
|
|
|
|
2024-08-02 21:16:27 +02:00
|
|
|
module cutc_module
|
2024-06-29 01:15:47 +02:00
|
|
|
|
2024-08-01 10:05:47 +02:00
|
|
|
use, intrinsic :: iso_c_binding
|
2024-06-29 01:15:47 +02:00
|
|
|
|
|
|
|
implicit none
|
|
|
|
|
|
|
|
interface
|
|
|
|
|
2024-08-01 10:05:47 +02:00
|
|
|
! ---
|
2024-06-29 01:15:47 +02:00
|
|
|
|
2024-08-13 10:57:44 +02:00
|
|
|
subroutine cutc_int(nxBlocks, nyBlocks, nzBlocks, &
|
|
|
|
blockxSize, blockySize, blockzSize, &
|
|
|
|
n_grid1, n_grid2, n_ao, n_nuc, size_bh, &
|
|
|
|
r1, wr1, r2, wr2, rn, &
|
|
|
|
aos_data1, aos_data2, &
|
|
|
|
c_bh, m_bh, n_bh, o_bh, &
|
|
|
|
int2_grad1_u12_ao, int_2e_ao) bind(C, name = "cutc_int")
|
2024-06-29 01:15:47 +02:00
|
|
|
|
2024-08-01 10:05:47 +02:00
|
|
|
import c_int, c_double, c_ptr
|
2024-08-02 21:16:27 +02:00
|
|
|
integer(c_int), intent(in), value :: nxBlocks, blockxSize
|
|
|
|
integer(c_int), intent(in), value :: nyBlocks, blockySize
|
|
|
|
integer(c_int), intent(in), value :: nzBlocks, blockzSize
|
2024-08-01 10:05:47 +02:00
|
|
|
integer(c_int), intent(in), value :: n_grid1, n_grid2
|
|
|
|
integer(c_int), intent(in), value :: n_ao
|
|
|
|
integer(c_int), intent(in), value :: n_nuc
|
|
|
|
integer(c_int), intent(in), value :: size_bh
|
2024-08-02 21:16:27 +02:00
|
|
|
real(c_double), intent(in) :: r1(3,n_grid1), wr1(n_grid1)
|
|
|
|
real(c_double), intent(in) :: r2(3,n_grid2), wr2(n_grid2)
|
|
|
|
real(c_double), intent(in) :: rn(3,n_nuc)
|
2024-08-01 10:05:47 +02:00
|
|
|
real(c_double), intent(in) :: aos_data1(n_grid1,n_ao,4)
|
|
|
|
real(c_double), intent(in) :: aos_data2(n_grid2,n_ao,4)
|
|
|
|
real(c_double), intent(in) :: c_bh(size_bh,n_nuc)
|
2024-06-29 01:15:47 +02:00
|
|
|
integer(c_int), intent(in) :: m_bh(size_bh,n_nuc)
|
|
|
|
integer(c_int), intent(in) :: n_bh(size_bh,n_nuc)
|
|
|
|
integer(c_int), intent(in) :: o_bh(size_bh,n_nuc)
|
2024-08-04 11:58:19 +02:00
|
|
|
real(c_double), intent(out) :: int2_grad1_u12_ao(n_ao,n_ao,n_grid1,3)
|
2024-08-01 10:05:47 +02:00
|
|
|
real(c_double), intent(out) :: int_2e_ao(n_ao,n_ao,n_ao,n_ao)
|
|
|
|
|
2024-08-13 10:57:44 +02:00
|
|
|
end subroutine cutc_int
|
2024-08-01 10:05:47 +02:00
|
|
|
|
|
|
|
! ---
|
|
|
|
|
2024-08-13 10:57:44 +02:00
|
|
|
subroutine cutc_no(n_grid1, n_mo, ne_a, ne_b, &
|
|
|
|
wr1, mos_l_in_r, mos_r_in_r, int2_grad1_u12, &
|
|
|
|
no_2e, no_1e, no_0e) bind(C, name = "cutc_no")
|
|
|
|
|
|
|
|
import c_int, c_double, c_ptr
|
|
|
|
|
|
|
|
integer(c_int), intent(in), value :: n_grid1
|
|
|
|
integer(c_int), intent(in), value :: n_mo
|
|
|
|
integer(c_int), intent(in), value :: ne_a
|
|
|
|
integer(c_int), intent(in), value :: ne_b
|
|
|
|
real(c_double), intent(in) :: wr1(n_grid1)
|
|
|
|
real(c_double), intent(in) :: mos_l_in_r(n_grid1,n_mo)
|
|
|
|
real(c_double), intent(in) :: mos_r_in_r(n_grid1,n_mo)
|
|
|
|
real(c_double), intent(in) :: int2_grad1_u12(n_grid1,3,n_mo,n_mo)
|
|
|
|
real(c_double), intent(out) :: no_2e(n_mo,n_mo,n_mo,n_mo)
|
|
|
|
real(c_double), intent(out) :: no_1e(n_mo,n_mo)
|
|
|
|
real(c_double), intent(out) :: no_0e(1)
|
|
|
|
|
|
|
|
end subroutine cutc_no
|
|
|
|
|
|
|
|
! ---
|
|
|
|
|
2024-06-29 01:15:47 +02:00
|
|
|
end interface
|
|
|
|
|
2024-08-02 21:16:27 +02:00
|
|
|
end module cutc_module
|
2024-06-29 01:15:47 +02:00
|
|
|
|
|
|
|
|