mirror of
https://github.com/LCPQ/quantum_package
synced 2025-01-10 21:18:29 +01:00
Minor changes
This commit is contained in:
parent
99bfb591e1
commit
bca504aebd
@ -47,8 +47,8 @@ program full_ci
|
|||||||
print *, 'N_det = ', N_det
|
print *, 'N_det = ', N_det
|
||||||
print *, 'N_states = ', N_states
|
print *, 'N_states = ', N_states
|
||||||
print *, 'PT2 = ', pt2
|
print *, 'PT2 = ', pt2
|
||||||
print *, 'E = ', CI_energy
|
print *, 'E = ', CI_energy(1:N_states)
|
||||||
print *, 'E+PT2 = ', CI_energy+pt2
|
print *, 'E+PT2 = ', CI_energy(1:N_states)+pt2(1:N_states)
|
||||||
print *, '-----'
|
print *, '-----'
|
||||||
call ezfio_set_cas_sd_energy(CI_energy(1))
|
call ezfio_set_cas_sd_energy(CI_energy(1))
|
||||||
enddo
|
enddo
|
||||||
@ -64,8 +64,8 @@ program full_ci
|
|||||||
print *, 'N_det = ', N_det
|
print *, 'N_det = ', N_det
|
||||||
print *, 'N_states = ', N_states
|
print *, 'N_states = ', N_states
|
||||||
print *, 'PT2 = ', pt2
|
print *, 'PT2 = ', pt2
|
||||||
print *, 'E = ', CI_energy
|
print *, 'E = ', CI_energy(1:N_states)
|
||||||
print *, 'E+PT2 = ', CI_energy+pt2
|
print *, 'E+PT2 = ', CI_energy(1:N_states)+pt2(1:N_states)
|
||||||
print *, '-----'
|
print *, '-----'
|
||||||
call ezfio_set_cas_sd_energy_pt2(CI_energy(1)+pt2(1))
|
call ezfio_set_cas_sd_energy_pt2(CI_energy(1)+pt2(1))
|
||||||
endif
|
endif
|
||||||
|
@ -686,12 +686,12 @@ END_PROVIDER
|
|||||||
|
|
||||||
nex = hh_shortcut(hh_shortcut(0)+1)-1
|
nex = hh_shortcut(hh_shortcut(0)+1)-1
|
||||||
print *, "TI", nex, N_det_non_ref
|
print *, "TI", nex, N_det_non_ref
|
||||||
allocate(A_ind(N_det_ref+1, nex), A_val(N_det_ref+1, nex))
|
allocate(A_ind(0:N_det_ref+1, nex), A_val(N_det_ref+1, nex))
|
||||||
allocate(AtA_ind(N_det_ref * nex), AtA_val(N_det_ref * nex)) !!!!! MAY BE TOO SMALL ? !!!!!!!!
|
allocate(AtA_ind(N_det_ref * nex), AtA_val(N_det_ref * nex)) !!!!! MAY BE TOO SMALL ? !!!!!!!!
|
||||||
allocate(x(nex), AtB(nex))
|
allocate(x(nex), AtB(nex))
|
||||||
allocate(A_val_mwen(nex), A_ind_mwen(nex))
|
allocate(A_val_mwen(nex), A_ind_mwen(nex))
|
||||||
allocate(N_col(nex), col_shortcut(nex))
|
allocate(N_col(nex), col_shortcut(nex))
|
||||||
allocate (x_new(nex))
|
allocate(x_new(nex))
|
||||||
|
|
||||||
do s = 1, N_states
|
do s = 1, N_states
|
||||||
|
|
||||||
@ -740,6 +740,7 @@ END_PROVIDER
|
|||||||
A_ind(wk, pp) = i
|
A_ind(wk, pp) = i
|
||||||
end if
|
end if
|
||||||
end do
|
end do
|
||||||
|
A_ind(0,pp) = wk
|
||||||
end do
|
end do
|
||||||
end do
|
end do
|
||||||
!$OMP END DO
|
!$OMP END DO
|
||||||
@ -748,32 +749,32 @@ END_PROVIDER
|
|||||||
|
|
||||||
AtB = 0d0
|
AtB = 0d0
|
||||||
AtA_size = 0
|
AtA_size = 0
|
||||||
wk = 0
|
|
||||||
col_shortcut = 0
|
col_shortcut = 0
|
||||||
N_col = 0
|
N_col = 0
|
||||||
!$OMP PARALLEL DO schedule(dynamic, 100) default(none) shared(k, psi_non_ref_coef, A_ind, A_val, x, N_det_ref, nex, N_det_non_ref)&
|
!$OMP PARALLEL default(none) shared(k, psi_non_ref_coef, A_ind, A_val, x, N_det_ref, nex, N_det_non_ref)&
|
||||||
!$OMP private(at_row, a_col, t, i, r1, r2, wk, A_ind_mwen, A_val_mwen)&
|
!$OMP private(at_row, a_col, t, i, r1, r2, wk, A_ind_mwen, A_val_mwen)&
|
||||||
!$OMP shared(col_shortcut, N_col, AtB, AtA_size, AtA_val, AtA_ind, s)
|
!$OMP shared(col_shortcut, N_col, AtB, AtA_size, AtA_val, AtA_ind, s)
|
||||||
|
!$OMP DO schedule(dynamic, 100)
|
||||||
do at_row = 1, nex
|
do at_row = 1, nex
|
||||||
wk = 0
|
wk = 0
|
||||||
if(mod(at_row, 10000) == 0) print *, "AtA", at_row, "/", nex
|
if(mod(at_row, 10000) == 0) print *, "AtA", at_row, "/", nex
|
||||||
do i=1,N_det_ref
|
do i=1,A_ind(0,at_row)
|
||||||
if(A_ind(i, at_row) == 0) exit
|
|
||||||
AtB(at_row) = AtB(at_row) + psi_non_ref_coef(A_ind(i, at_row), s) * A_val(i, at_row)
|
AtB(at_row) = AtB(at_row) + psi_non_ref_coef(A_ind(i, at_row), s) * A_val(i, at_row)
|
||||||
end do
|
end do
|
||||||
|
|
||||||
do a_col = 1, nex
|
do a_col = 1, nex
|
||||||
t = 0d0
|
t = 0d0
|
||||||
r1 = 1
|
r1 = 1
|
||||||
r2 = 1
|
r2 = 1
|
||||||
do while ((A_ind(r1, at_row) /= 0).and.(A_ind(r2, a_col) /= 0))
|
do while ((A_ind(r1, at_row) /= 0).and.(A_ind(r2, a_col) /= 0))
|
||||||
if(A_ind(r1, at_row) < A_ind(r2, a_col)) then
|
if(A_ind(r1, at_row) < A_ind(r2, a_col)) then
|
||||||
r1 += 1
|
r1 = r1+1
|
||||||
else if(A_ind(r1, at_row) > A_ind(r2, a_col)) then
|
else if(A_ind(r1, at_row) > A_ind(r2, a_col)) then
|
||||||
r2 += 1
|
r2 = r2+1
|
||||||
else
|
else
|
||||||
t = t - A_val(r1, at_row) * A_val(r2, a_col)
|
t = t - A_val(r1, at_row) * A_val(r2, a_col)
|
||||||
r1 += 1
|
r1 = r1+1
|
||||||
r2 += 1
|
r2 = r2+1
|
||||||
end if
|
end if
|
||||||
end do
|
end do
|
||||||
|
|
||||||
@ -791,12 +792,20 @@ END_PROVIDER
|
|||||||
!$OMP CRITICAL
|
!$OMP CRITICAL
|
||||||
col_shortcut(at_row) = AtA_size+1
|
col_shortcut(at_row) = AtA_size+1
|
||||||
N_col(at_row) = wk
|
N_col(at_row) = wk
|
||||||
AtA_ind(AtA_size+1:AtA_size+wk) = A_ind_mwen(:wk)
|
if (AtA_size+wk > size(AtA_ind,1)) then
|
||||||
AtA_val(AtA_size+1:AtA_size+wk) = A_val_mwen(:wk)
|
print *, AtA_size+wk , size(AtA_ind,1)
|
||||||
|
stop 'too small'
|
||||||
|
endif
|
||||||
|
do i=1,wk
|
||||||
|
AtA_ind(AtA_size+i) = A_ind_mwen(i)
|
||||||
|
AtA_val(AtA_size+i) = A_val_mwen(i)
|
||||||
|
enddo
|
||||||
AtA_size += wk
|
AtA_size += wk
|
||||||
!$OMP END CRITICAL
|
!$OMP END CRITICAL
|
||||||
end if
|
end if
|
||||||
end do
|
end do
|
||||||
|
!$OMP END DO
|
||||||
|
!$OMP END PARALLEL
|
||||||
|
|
||||||
if(AtA_size > size(AtA_val)) stop "SIZA"
|
if(AtA_size > size(AtA_val)) stop "SIZA"
|
||||||
print *, "ATA SIZE", ata_size
|
print *, "ATA SIZE", ata_size
|
||||||
|
Loading…
Reference in New Issue
Block a user