10
0
mirror of https://github.com/LCPQ/quantum_package synced 2024-07-31 17:44:23 +02:00
quantum_package/src/Davidson/u0Hu0.irp.f

443 lines
14 KiB
Fortran
Raw Normal View History

2017-04-19 12:24:09 +02:00
subroutine u_0_H_u_0(e_0,u_0,n,keys_tmp,Nint,N_st,sze)
2017-04-17 01:36:16 +02:00
use bitmasks
implicit none
BEGIN_DOC
! Computes e_0 = <u_0|H|u_0>/<u_0|u_0>
!
! n : number of determinants
!
END_DOC
2017-04-19 12:24:09 +02:00
integer, intent(in) :: n,Nint, N_st, sze
2017-04-17 01:36:16 +02:00
double precision, intent(out) :: e_0(N_st)
2017-04-19 12:24:09 +02:00
double precision, intent(inout):: u_0(sze,N_st)
2017-04-17 01:36:16 +02:00
integer(bit_kind),intent(in) :: keys_tmp(Nint,2,n)
double precision, allocatable :: v_0(:,:), s_0(:,:)
double precision :: u_dot_u,u_dot_v,diag_H_mat_elem
integer :: i,j
2017-04-19 12:24:09 +02:00
allocate (v_0(sze,N_st),s_0(sze,N_st))
call H_S2_u_0_nstates_openmp(v_0,s_0,u_0,N_st,sze)
2017-04-17 01:36:16 +02:00
do i=1,N_st
e_0(i) = u_dot_v(v_0(1,i),u_0(1,i),n)/u_dot_u(u_0(1,i),n)
enddo
deallocate (s_0, v_0)
end
BEGIN_PROVIDER [ double precision, psi_energy, (N_states) ]
implicit none
BEGIN_DOC
! Energy of the current wave function
END_DOC
call u_0_H_u_0(psi_energy,psi_coef,N_det,psi_det,N_int,N_states,psi_det_size)
END_PROVIDER
2017-04-19 12:24:09 +02:00
subroutine H_S2_u_0_nstates_openmp(v_0,s_0,u_0,N_st,sze)
2017-04-01 00:14:09 +02:00
use bitmasks
implicit none
BEGIN_DOC
! Computes v_0 = H|u_0> and s_0 = S^2 |u_0>
!
2017-04-14 15:04:29 +02:00
! Assumes that the determinants are in psi_det
2017-04-16 22:23:11 +02:00
!
! istart, iend, ishift, istep are used in ZMQ parallelization.
2017-04-01 00:14:09 +02:00
END_DOC
2017-04-19 12:24:09 +02:00
integer, intent(in) :: N_st,sze
double precision, intent(inout) :: v_0(sze,N_st), s_0(sze,N_st), u_0(sze,N_st)
2017-04-14 15:04:29 +02:00
integer :: k
2017-04-16 22:23:11 +02:00
double precision, allocatable :: u_t(:,:)
!DIR$ ATTRIBUTES ALIGN : $IRP_ALIGN :: u_t
allocate(u_t(N_st,N_det))
2017-04-14 15:04:29 +02:00
do k=1,N_st
call dset_order(u_0(1,k),psi_bilinear_matrix_order,N_det)
enddo
2017-04-16 22:23:11 +02:00
v_0 = 0.d0
s_0 = 0.d0
call dtranspose( &
u_0, &
size(u_0, 1), &
u_t, &
size(u_t, 1), &
N_det, N_st)
2017-04-19 12:24:09 +02:00
call H_S2_u_0_nstates_openmp_work(v_0,s_0,u_t,N_st,sze,1,N_det,0,1)
2017-04-16 22:23:11 +02:00
deallocate(u_t)
2017-04-14 15:04:29 +02:00
do k=1,N_st
call dset_order(v_0(1,k),psi_bilinear_matrix_order_reverse,N_det)
call dset_order(s_0(1,k),psi_bilinear_matrix_order_reverse,N_det)
call dset_order(u_0(1,k),psi_bilinear_matrix_order_reverse,N_det)
enddo
end
2017-04-16 22:23:11 +02:00
2017-04-19 12:24:09 +02:00
subroutine H_S2_u_0_nstates_openmp_work(v_0,s_0,u_t,N_st,sze,istart,iend,ishift,istep)
2017-04-14 15:04:29 +02:00
use bitmasks
implicit none
BEGIN_DOC
! Computes v_0 = H|u_0> and s_0 = S^2 |u_0>
2017-04-16 22:23:11 +02:00
!
! Default should be 1,N_det,0,1
2017-04-14 15:04:29 +02:00
END_DOC
2017-04-19 12:24:09 +02:00
integer, intent(in) :: N_st,sze,istart,iend,ishift,istep
2017-04-16 22:23:11 +02:00
double precision, intent(in) :: u_t(N_st,N_det)
2017-04-19 12:24:09 +02:00
double precision, intent(out) :: v_0(sze,N_st), s_0(sze,N_st)
2017-04-01 00:14:09 +02:00
2017-04-19 19:45:18 +02:00
PROVIDE ref_bitmask_energy N_int
2017-04-01 00:14:09 +02:00
2017-04-19 12:49:11 +02:00
select case (N_int)
case (1)
call H_S2_u_0_nstates_openmp_work_1(v_0,s_0,u_t,N_st,sze,istart,iend,ishift,istep)
case (2)
call H_S2_u_0_nstates_openmp_work_2(v_0,s_0,u_t,N_st,sze,istart,iend,ishift,istep)
case (3)
call H_S2_u_0_nstates_openmp_work_3(v_0,s_0,u_t,N_st,sze,istart,iend,ishift,istep)
case (4)
call H_S2_u_0_nstates_openmp_work_4(v_0,s_0,u_t,N_st,sze,istart,iend,ishift,istep)
case default
call H_S2_u_0_nstates_openmp_work_N_int(v_0,s_0,u_t,N_st,sze,istart,iend,ishift,istep)
end select
end
BEGIN_TEMPLATE
subroutine H_S2_u_0_nstates_openmp_work_$N_int(v_0,s_0,u_t,N_st,sze,istart,iend,ishift,istep)
use bitmasks
implicit none
BEGIN_DOC
! Computes v_0 = H|u_0> and s_0 = S^2 |u_0>
!
! Default should be 1,N_det,0,1
END_DOC
integer, intent(in) :: N_st,sze,istart,iend,ishift,istep
double precision, intent(in) :: u_t(N_st,N_det)
double precision, intent(out) :: v_0(sze,N_st), s_0(sze,N_st)
2017-04-14 12:04:21 +02:00
double precision :: hij, sij
integer :: i,j,k,l
2017-04-01 00:14:09 +02:00
integer :: k_a, k_b, l_a, l_b, m_a, m_b
2017-04-14 11:09:55 +02:00
integer :: istate
2017-04-01 00:14:09 +02:00
integer :: krow, kcol, krow_b, kcol_b
integer :: lrow, lcol
integer :: mrow, mcol
2017-04-19 12:49:11 +02:00
integer(bit_kind) :: spindet($N_int)
integer(bit_kind) :: tmp_det($N_int,2)
integer(bit_kind) :: tmp_det2($N_int,2)
integer(bit_kind) :: tmp_det3($N_int,2)
2017-04-01 00:14:09 +02:00
integer(bit_kind), allocatable :: buffer(:,:)
2017-04-18 17:50:49 +02:00
integer :: n_doubles
integer, allocatable :: doubles(:)
2017-04-16 22:23:11 +02:00
integer, allocatable :: singles_a(:)
2017-04-18 14:52:23 +02:00
integer, allocatable :: singles_b(:)
2017-04-01 00:14:09 +02:00
integer, allocatable :: idx(:), idx0(:)
2017-04-18 14:52:23 +02:00
integer :: maxab, n_singles_a, n_singles_b, kcol_prev, nmax
2017-04-18 00:01:31 +02:00
integer*8 :: k8
2017-04-16 22:23:11 +02:00
double precision, allocatable :: v_t(:,:), s_t(:,:)
!DIR$ ATTRIBUTES ALIGN : $IRP_ALIGN :: v_t, s_t
2017-04-01 00:14:09 +02:00
2017-04-14 18:11:02 +02:00
maxab = max(N_det_alpha_unique, N_det_beta_unique)+1
2017-04-16 22:23:11 +02:00
allocate(idx0(maxab))
2017-04-01 00:14:09 +02:00
2017-04-14 11:18:13 +02:00
do i=1,maxab
idx0(i) = i
enddo
! Prepare the array of all alpha single excitations
! -------------------------------------------------
2017-04-19 19:45:18 +02:00
PROVIDE N_int
2017-04-14 16:40:12 +02:00
!$OMP PARALLEL DEFAULT(NONE) &
!$OMP SHARED(psi_bilinear_matrix_rows, N_det, &
!$OMP psi_bilinear_matrix_columns, &
!$OMP psi_det_alpha_unique, psi_det_beta_unique, &
!$OMP n_det_alpha_unique, n_det_beta_unique, N_int, &
!$OMP psi_bilinear_matrix_transp_rows, &
!$OMP psi_bilinear_matrix_transp_columns, &
!$OMP psi_bilinear_matrix_transp_order, N_st, &
!$OMP psi_bilinear_matrix_order_transp_reverse, &
2017-04-18 00:01:31 +02:00
!$OMP psi_bilinear_matrix_columns_loc, &
2017-04-19 19:45:18 +02:00
!$OMP istart, iend, istep, &
2017-04-16 22:23:11 +02:00
!$OMP ishift, idx0, u_t, maxab, v_0, s_0) &
2017-04-14 16:40:12 +02:00
!$OMP PRIVATE(krow, kcol, tmp_det, spindet, k_a, k_b, i, &
2017-04-18 15:27:26 +02:00
!$OMP lcol, lrow, l_a, l_b, nmax, &
2017-04-18 17:50:49 +02:00
!$OMP buffer, doubles, n_doubles, &
2017-04-16 22:23:11 +02:00
!$OMP tmp_det2, hij, sij, idx, l, kcol_prev, v_t, &
2017-04-18 14:52:23 +02:00
!$OMP singles_a, n_singles_a, singles_b, &
!$OMP n_singles_b, s_t, k8)
2017-04-14 16:40:12 +02:00
! Alpha/Beta double excitations
! =============================
2017-04-19 12:49:11 +02:00
allocate( buffer($N_int,maxab), &
2017-04-16 22:23:11 +02:00
singles_a(maxab), &
2017-04-18 14:52:23 +02:00
singles_b(maxab), &
2017-04-14 18:11:02 +02:00
doubles(maxab), &
idx(maxab), &
2017-04-18 15:27:26 +02:00
v_t(N_st,N_det), s_t(N_st,N_det))
2017-04-14 16:40:12 +02:00
kcol_prev=-1
2017-04-14 18:11:02 +02:00
v_t = 0.d0
s_t = 0.d0
2017-04-19 12:49:11 +02:00
!$OMP DO SCHEDULE(dynamic,64)
2017-04-16 22:23:11 +02:00
do k_a=istart+ishift,iend,istep
2017-04-14 16:40:12 +02:00
krow = psi_bilinear_matrix_rows(k_a)
kcol = psi_bilinear_matrix_columns(k_a)
2017-04-19 12:49:11 +02:00
tmp_det(1:$N_int,1) = psi_det_alpha_unique(1:$N_int, krow)
tmp_det(1:$N_int,2) = psi_det_beta_unique (1:$N_int, kcol)
2017-04-14 16:40:12 +02:00
if (kcol /= kcol_prev) then
2017-04-19 12:49:11 +02:00
call get_all_spin_singles_$N_int( &
psi_det_beta_unique(1,kcol+1), idx0(kcol+1), &
tmp_det(1,2), N_det_beta_unique-kcol, &
2017-04-18 14:52:23 +02:00
singles_b, n_singles_b)
2017-04-14 16:40:12 +02:00
endif
kcol_prev = kcol
2017-04-18 14:52:23 +02:00
! Loop over singly excited beta columns > current column
! ------------------------------------------------------
2017-04-14 16:40:12 +02:00
2017-04-18 14:52:23 +02:00
do i=1,n_singles_b
lcol = singles_b(i)
2017-04-14 16:40:12 +02:00
2017-04-19 12:49:11 +02:00
tmp_det2(1:$N_int,2) = psi_det_beta_unique(1:$N_int, lcol)
2017-04-14 16:40:12 +02:00
l_a = psi_bilinear_matrix_columns_loc(lcol)
2017-04-18 14:52:23 +02:00
nmax = psi_bilinear_matrix_columns_loc(lcol+1) - l_a
do j=1,nmax
lrow = psi_bilinear_matrix_rows(l_a)
2017-04-19 12:49:11 +02:00
buffer(1:$N_int,j) = psi_det_alpha_unique(1:$N_int, lrow)
2017-04-18 14:52:23 +02:00
idx(j) = l_a
l_a = l_a+1
enddo
j = j-1
2017-04-19 12:49:11 +02:00
call get_all_spin_singles_$N_int( &
buffer, idx, tmp_det(1,1), j, &
2017-04-18 14:52:23 +02:00
singles_a, n_singles_a )
2017-04-16 01:28:35 +02:00
! Loop over alpha singles
! -----------------------
2017-04-18 14:52:23 +02:00
do k = 1,n_singles_a
l_a = singles_a(k)
lrow = psi_bilinear_matrix_rows(l_a)
2017-04-19 12:49:11 +02:00
tmp_det2(1:$N_int,1) = psi_det_alpha_unique(1:$N_int, lrow)
call i_H_j_double_alpha_beta(tmp_det,tmp_det2,$N_int,hij)
call get_s2(tmp_det,tmp_det2,$N_int,sij)
2017-04-15 01:06:09 +02:00
do l=1,N_st
v_t(l,k_a) = v_t(l,k_a) + hij * u_t(l,l_a)
2017-04-16 02:37:33 +02:00
s_t(l,k_a) = s_t(l,k_a) + sij * u_t(l,l_a)
2017-04-19 12:08:17 +02:00
v_t(l,l_a) = v_t(l,l_a) + hij * u_t(l,k_a)
2017-04-15 01:06:09 +02:00
s_t(l,l_a) = s_t(l,l_a) + sij * u_t(l,k_a)
enddo
enddo
2017-04-18 14:52:23 +02:00
2017-04-16 22:23:11 +02:00
enddo
2017-04-14 11:18:13 +02:00
enddo
2017-04-19 12:08:17 +02:00
!$OMP END DO
2017-04-14 11:18:13 +02:00
2017-04-19 12:49:11 +02:00
!$OMP DO SCHEDULE(dynamic,64)
2017-04-16 22:23:11 +02:00
do k_a=istart+ishift,iend,istep
2017-04-16 01:28:35 +02:00
2017-04-16 22:23:11 +02:00
! Single and double alpha excitations
! ===================================
2017-04-16 01:28:35 +02:00
2017-04-01 00:14:09 +02:00
! Initial determinant is at k_a in alpha-major representation
! -----------------------------------------------------------------------
krow = psi_bilinear_matrix_rows(k_a)
kcol = psi_bilinear_matrix_columns(k_a)
2017-04-19 12:49:11 +02:00
tmp_det(1:$N_int,1) = psi_det_alpha_unique(1:$N_int, krow)
tmp_det(1:$N_int,2) = psi_det_beta_unique (1:$N_int, kcol)
2017-04-01 00:14:09 +02:00
! Initial determinant is at k_b in beta-major representation
! ----------------------------------------------------------------------
2017-04-14 15:04:29 +02:00
k_b = psi_bilinear_matrix_order_transp_reverse(k_a)
2017-04-02 16:42:32 +02:00
2017-04-19 12:49:11 +02:00
spindet(1:$N_int) = tmp_det(1:$N_int,1)
2017-04-01 00:14:09 +02:00
! Loop inside the beta column to gather all the connected alphas
2017-04-16 01:28:35 +02:00
l_a = k_a+1
nmax = min(N_det_alpha_unique, N_det - l_a)
do i=1,nmax
lcol = psi_bilinear_matrix_columns(l_a)
if (lcol /= kcol) exit
2017-04-01 00:14:09 +02:00
lrow = psi_bilinear_matrix_rows(l_a)
2017-04-19 12:49:11 +02:00
buffer(1:$N_int,i) = psi_det_alpha_unique(1:$N_int, lrow)
2017-04-15 01:06:09 +02:00
idx(i) = l_a
2017-04-14 11:09:55 +02:00
l_a = l_a+1
2017-04-01 00:14:09 +02:00
enddo
i = i-1
2017-04-19 12:49:11 +02:00
call get_all_spin_singles_and_doubles_$N_int( &
buffer, idx, spindet, i, &
2017-04-18 17:50:49 +02:00
singles_a, doubles, n_singles_a, n_doubles )
2017-04-01 00:14:09 +02:00
! Compute Hij for all alpha singles
! ----------------------------------
2017-04-19 12:49:11 +02:00
tmp_det2(1:$N_int,2) = psi_det_beta_unique (1:$N_int, kcol)
2017-04-18 17:50:49 +02:00
do i=1,n_singles_a
l_a = singles_a(i)
2017-04-15 01:06:09 +02:00
lrow = psi_bilinear_matrix_rows(l_a)
2017-04-19 12:49:11 +02:00
tmp_det2(1:$N_int,1) = psi_det_alpha_unique(1:$N_int, lrow)
call i_H_j_mono_spin( tmp_det, tmp_det2, $N_int, 1, hij)
2017-04-14 12:04:21 +02:00
do l=1,N_st
2017-04-14 15:41:35 +02:00
v_t(l,l_a) = v_t(l,l_a) + hij * u_t(l,k_a)
v_t(l,k_a) = v_t(l,k_a) + hij * u_t(l,l_a)
2017-04-14 12:04:21 +02:00
! single => sij = 0
enddo
2017-04-01 00:14:09 +02:00
enddo
2017-04-15 01:06:09 +02:00
2017-04-01 00:14:09 +02:00
! Compute Hij for all alpha doubles
! ----------------------------------
do i=1,n_doubles
2017-04-15 01:06:09 +02:00
l_a = doubles(i)
lrow = psi_bilinear_matrix_rows(l_a)
2017-04-19 12:49:11 +02:00
call i_H_j_double_spin( tmp_det(1,1), psi_det_alpha_unique(1, lrow), $N_int, hij)
2017-04-14 12:04:21 +02:00
do l=1,N_st
2017-04-14 15:41:35 +02:00
v_t(l,l_a) = v_t(l,l_a) + hij * u_t(l,k_a)
v_t(l,k_a) = v_t(l,k_a) + hij * u_t(l,l_a)
2017-04-15 01:06:09 +02:00
! same spin => sij = 0
2017-04-14 12:04:21 +02:00
enddo
2017-04-01 00:14:09 +02:00
enddo
2017-04-16 01:28:35 +02:00
2017-04-16 22:23:11 +02:00
! Single and double beta excitations
! ==================================
2017-04-16 01:28:35 +02:00
2017-04-16 22:23:11 +02:00
! Initial determinant is at k_a in alpha-major representation
2017-04-16 01:28:35 +02:00
! -----------------------------------------------------------------------
2017-04-01 00:14:09 +02:00
2017-04-16 22:23:11 +02:00
krow = psi_bilinear_matrix_rows(k_a)
kcol = psi_bilinear_matrix_columns(k_a)
2017-04-01 00:14:09 +02:00
2017-04-19 12:49:11 +02:00
tmp_det(1:$N_int,1) = psi_det_alpha_unique(1:$N_int, krow)
tmp_det(1:$N_int,2) = psi_det_beta_unique (1:$N_int, kcol)
2017-04-01 00:14:09 +02:00
2017-04-19 12:49:11 +02:00
spindet(1:$N_int) = tmp_det(1:$N_int,2)
2017-04-16 22:23:11 +02:00
! Initial determinant is at k_b in beta-major representation
! -----------------------------------------------------------------------
k_b = psi_bilinear_matrix_order_transp_reverse(k_a)
2017-04-01 00:14:09 +02:00
! Loop inside the alpha row to gather all the connected betas
2017-04-16 01:28:35 +02:00
l_b = k_b+1
nmax = min(N_det_beta_unique, N_det - l_b)
do i=1,nmax
lrow = psi_bilinear_matrix_transp_rows(l_b)
if (lrow /= krow) exit
2017-04-01 00:14:09 +02:00
lcol = psi_bilinear_matrix_transp_columns(l_b)
2017-04-19 12:49:11 +02:00
buffer(1:$N_int,i) = psi_det_beta_unique(1:$N_int, lcol)
2017-04-15 01:06:09 +02:00
idx(i) = l_b
2017-04-14 11:09:55 +02:00
l_b = l_b+1
2017-04-01 00:14:09 +02:00
enddo
i = i-1
2017-04-15 01:06:09 +02:00
2017-04-19 12:49:11 +02:00
call get_all_spin_singles_and_doubles_$N_int( &
buffer, idx, spindet, i, &
2017-04-18 17:50:49 +02:00
singles_b, doubles, n_singles_b, n_doubles )
2017-04-01 00:14:09 +02:00
! Compute Hij for all beta singles
! ----------------------------------
2017-04-19 12:49:11 +02:00
tmp_det2(1:$N_int,1) = psi_det_alpha_unique(1:$N_int, krow)
2017-04-18 17:50:49 +02:00
do i=1,n_singles_b
l_b = singles_b(i)
2017-04-15 01:06:09 +02:00
lcol = psi_bilinear_matrix_transp_columns(l_b)
2017-04-19 12:49:11 +02:00
tmp_det2(1:$N_int,2) = psi_det_beta_unique (1:$N_int, lcol)
call i_H_j_mono_spin( tmp_det, tmp_det2, $N_int, 2, hij)
2017-04-15 01:06:09 +02:00
l_a = psi_bilinear_matrix_transp_order(l_b)
2017-04-14 12:04:21 +02:00
do l=1,N_st
2017-04-14 15:41:35 +02:00
v_t(l,l_a) = v_t(l,l_a) + hij * u_t(l,k_a)
v_t(l,k_a) = v_t(l,k_a) + hij * u_t(l,l_a)
2017-04-14 12:04:21 +02:00
! single => sij = 0
enddo
2017-04-01 00:14:09 +02:00
enddo
! Compute Hij for all beta doubles
! ----------------------------------
do i=1,n_doubles
2017-04-15 01:06:09 +02:00
l_b = doubles(i)
lcol = psi_bilinear_matrix_transp_columns(l_b)
2017-04-19 12:49:11 +02:00
call i_H_j_double_spin( tmp_det(1,2), psi_det_beta_unique(1, lcol), $N_int, hij)
2017-04-02 16:42:32 +02:00
l_a = psi_bilinear_matrix_transp_order(l_b)
2017-04-14 12:04:21 +02:00
do l=1,N_st
2017-04-14 15:41:35 +02:00
v_t(l,l_a) = v_t(l,l_a) + hij * u_t(l,k_a)
v_t(l,k_a) = v_t(l,k_a) + hij * u_t(l,l_a)
2017-04-14 12:04:21 +02:00
! same spin => sij = 0
enddo
2017-04-01 00:14:09 +02:00
enddo
2017-04-15 01:06:09 +02:00
2017-04-16 01:28:35 +02:00
2017-04-16 22:23:11 +02:00
! Diagonal contribution
! =====================
2017-04-15 01:06:09 +02:00
2017-04-16 01:28:35 +02:00
! Initial determinant is at k_a in alpha-major representation
! -----------------------------------------------------------------------
krow = psi_bilinear_matrix_rows(k_a)
kcol = psi_bilinear_matrix_columns(k_a)
2017-04-19 12:49:11 +02:00
tmp_det(1:$N_int,1) = psi_det_alpha_unique(1:$N_int, krow)
tmp_det(1:$N_int,2) = psi_det_beta_unique (1:$N_int, kcol)
2017-04-16 01:28:35 +02:00
2017-04-15 01:06:09 +02:00
double precision, external :: diag_H_mat_elem, diag_S_mat_elem
2017-04-19 12:49:11 +02:00
hij = diag_H_mat_elem(tmp_det,$N_int)
sij = diag_S_mat_elem(tmp_det,$N_int)
2017-04-15 01:06:09 +02:00
do l=1,N_st
v_t(l,k_a) = v_t(l,k_a) + hij * u_t(l,k_a)
s_t(l,k_a) = s_t(l,k_a) + sij * u_t(l,k_a)
enddo
2017-04-01 00:14:09 +02:00
end do
2017-04-16 01:28:35 +02:00
!$OMP END DO NOWAIT
2017-04-18 17:50:49 +02:00
deallocate(buffer, singles_a, singles_b, doubles, idx)
2017-04-14 15:04:29 +02:00
2017-04-14 18:11:02 +02:00
!$OMP CRITICAL
do l=1,N_st
do i=1, N_det
v_0(i,l) = v_0(i,l) + v_t(l,i)
s_0(i,l) = s_0(i,l) + s_t(l,i)
enddo
enddo
!$OMP END CRITICAL
2017-04-18 17:50:49 +02:00
deallocate(v_t, s_t)
2017-04-14 15:41:35 +02:00
2017-04-14 18:16:31 +02:00
!$OMP BARRIER
2017-04-14 18:11:02 +02:00
!$OMP END PARALLEL
2017-04-14 11:09:55 +02:00
2017-04-01 00:14:09 +02:00
end
2017-04-19 12:49:11 +02:00
SUBST [ N_int ]
1;;
2;;
3;;
4;;
N_int;;
2017-04-01 00:14:09 +02:00
2017-04-19 12:49:11 +02:00
END_TEMPLATE
2017-04-01 00:14:09 +02:00