mirror of
https://github.com/QuantumPackage/qp2.git
synced 2024-11-03 20:53:54 +01:00
Comments in selection
This commit is contained in:
parent
0aa10ac979
commit
667ad773f9
12
TODO
12
TODO
@ -57,4 +57,14 @@ Doc: plugins et qp_plugins
|
|||||||
|
|
||||||
Ajouter les symetries dans devel
|
Ajouter les symetries dans devel
|
||||||
|
|
||||||
Compiler ezfio avec openmp
|
|
||||||
|
|
||||||
|
|
||||||
|
IMPORTANT:
|
||||||
|
|
||||||
|
Davidson Diagonalization
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
Not enough memory: aborting in davidson_diag_hjj_sjj
|
||||||
|
|
||||||
|
|
||||||
|
2
ocaml/.gitignore
vendored
2
ocaml/.gitignore
vendored
@ -9,6 +9,7 @@ Input_ao_two_e_erf_ints.ml
|
|||||||
Input_ao_two_e_ints.ml
|
Input_ao_two_e_ints.ml
|
||||||
Input_auto_generated.ml
|
Input_auto_generated.ml
|
||||||
Input_becke_numerical_grid.ml
|
Input_becke_numerical_grid.ml
|
||||||
|
Input_champ.ml
|
||||||
Input_davidson.ml
|
Input_davidson.ml
|
||||||
Input_density_for_dft.ml
|
Input_density_for_dft.ml
|
||||||
Input_determinants.ml
|
Input_determinants.ml
|
||||||
@ -21,6 +22,7 @@ Input_nuclei.ml
|
|||||||
Input_perturbation.ml
|
Input_perturbation.ml
|
||||||
Input_pseudo.ml
|
Input_pseudo.ml
|
||||||
Input_scf_utils.ml
|
Input_scf_utils.ml
|
||||||
|
Input_variance.ml
|
||||||
qp_create_ezfio
|
qp_create_ezfio
|
||||||
qp_create_ezfio.native
|
qp_create_ezfio.native
|
||||||
qp_edit
|
qp_edit
|
||||||
|
@ -609,6 +609,12 @@ BEGIN_PROVIDER[ double precision, pt2_u, (N_det_generators)]
|
|||||||
BEGIN_PROVIDER[ integer, pt2_J, (N_det_generators)]
|
BEGIN_PROVIDER[ integer, pt2_J, (N_det_generators)]
|
||||||
&BEGIN_PROVIDER[ integer, pt2_R, (N_det_generators)]
|
&BEGIN_PROVIDER[ integer, pt2_R, (N_det_generators)]
|
||||||
implicit none
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! pt2_J contains the list of generators after ordering them according to the
|
||||||
|
! Monte Carlo sampling.
|
||||||
|
!
|
||||||
|
! pt2_R(i) is the number of combs drawn when determinant i is computed.
|
||||||
|
END_DOC
|
||||||
integer :: N_c, N_j
|
integer :: N_c, N_j
|
||||||
integer :: U, t, i
|
integer :: U, t, i
|
||||||
double precision :: v
|
double precision :: v
|
||||||
|
@ -286,7 +286,11 @@ subroutine select_singles_and_doubles(i_generator,hole_mask,particle_mask,fock_d
|
|||||||
end if
|
end if
|
||||||
end do
|
end do
|
||||||
deallocate(indices)
|
deallocate(indices)
|
||||||
|
|
||||||
|
! !$OMP CRITICAL
|
||||||
|
! print *, 'Step1: ', i_generator, preinteresting(0)
|
||||||
|
! !$OMP END CRITICAL
|
||||||
|
|
||||||
allocate(banned(mo_num, mo_num,2), bannedOrb(mo_num, 2))
|
allocate(banned(mo_num, mo_num,2), bannedOrb(mo_num, 2))
|
||||||
allocate (mat(N_states, mo_num, mo_num))
|
allocate (mat(N_states, mo_num, mo_num))
|
||||||
maskInd = -1
|
maskInd = -1
|
||||||
@ -485,6 +489,9 @@ subroutine select_singles_and_doubles(i_generator,hole_mask,particle_mask,fock_d
|
|||||||
|
|
||||||
call spot_isinwf(mask, fullminilist, i_generator, fullinteresting(0), banned, fullMatch, fullinteresting)
|
call spot_isinwf(mask, fullminilist, i_generator, fullinteresting(0), banned, fullMatch, fullinteresting)
|
||||||
if(fullMatch) cycle
|
if(fullMatch) cycle
|
||||||
|
! !$OMP CRITICAL
|
||||||
|
! print *, 'Step3: ', i_generator, h1, interesting(0)
|
||||||
|
! !$OMP END CRITICAL
|
||||||
|
|
||||||
call splash_pq(mask, sp, minilist, i_generator, interesting(0), bannedOrb, banned, mat, interesting)
|
call splash_pq(mask, sp, minilist, i_generator, interesting(0), bannedOrb, banned, mat, interesting)
|
||||||
|
|
||||||
@ -623,6 +630,11 @@ end
|
|||||||
subroutine splash_pq(mask, sp, det, i_gen, N_sel, bannedOrb, banned, mat, interesting)
|
subroutine splash_pq(mask, sp, det, i_gen, N_sel, bannedOrb, banned, mat, interesting)
|
||||||
use bitmasks
|
use bitmasks
|
||||||
implicit none
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! Computes the contributions A(r,s) by
|
||||||
|
! comparing the external determinant to all the internal determinants det(i).
|
||||||
|
! an applying two particles (r,s) to the mask.
|
||||||
|
END_DOC
|
||||||
|
|
||||||
integer, intent(in) :: sp, i_gen, N_sel
|
integer, intent(in) :: sp, i_gen, N_sel
|
||||||
integer, intent(in) :: interesting(0:N_sel)
|
integer, intent(in) :: interesting(0:N_sel)
|
||||||
@ -1198,6 +1210,10 @@ end
|
|||||||
subroutine spot_isinwf(mask, det, i_gen, N, banned, fullMatch, interesting)
|
subroutine spot_isinwf(mask, det, i_gen, N, banned, fullMatch, interesting)
|
||||||
use bitmasks
|
use bitmasks
|
||||||
implicit none
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! Identify the determinants in det which are in the internal space. These are
|
||||||
|
! the determinants that can be produced by creating two particles on the mask.
|
||||||
|
END_DOC
|
||||||
|
|
||||||
integer, intent(in) :: i_gen, N
|
integer, intent(in) :: i_gen, N
|
||||||
integer, intent(in) :: interesting(0:N)
|
integer, intent(in) :: interesting(0:N)
|
||||||
@ -1217,16 +1233,19 @@ subroutine spot_isinwf(mask, det, i_gen, N, banned, fullMatch, interesting)
|
|||||||
end do
|
end do
|
||||||
|
|
||||||
genl : do i=1, N
|
genl : do i=1, N
|
||||||
|
! If det(i) can't be generated by the mask, cycle
|
||||||
do j=1, N_int
|
do j=1, N_int
|
||||||
if(iand(det(j,1,i), mask(j,1)) /= mask(j, 1)) cycle genl
|
if(iand(det(j,1,i), mask(j,1)) /= mask(j, 1)) cycle genl
|
||||||
if(iand(det(j,2,i), mask(j,2)) /= mask(j, 2)) cycle genl
|
if(iand(det(j,2,i), mask(j,2)) /= mask(j, 2)) cycle genl
|
||||||
end do
|
end do
|
||||||
|
|
||||||
|
! If det(i) < det(i_gen), it hs already been considered
|
||||||
if(interesting(i) < i_gen) then
|
if(interesting(i) < i_gen) then
|
||||||
fullMatch = .true.
|
fullMatch = .true.
|
||||||
return
|
return
|
||||||
end if
|
end if
|
||||||
|
|
||||||
|
! Identify the particles
|
||||||
do j=1, N_int
|
do j=1, N_int
|
||||||
myMask(j, 1) = iand(det(j, 1, i), negMask(j, 1))
|
myMask(j, 1) = iand(det(j, 1, i), negMask(j, 1))
|
||||||
myMask(j, 2) = iand(det(j, 2, i), negMask(j, 2))
|
myMask(j, 2) = iand(det(j, 2, i), negMask(j, 2))
|
||||||
|
@ -29,7 +29,7 @@ subroutine run_stochastic_cipsi
|
|||||||
pt2 = -huge(1.e0)
|
pt2 = -huge(1.e0)
|
||||||
rpt2 = -huge(1.e0)
|
rpt2 = -huge(1.e0)
|
||||||
norm = 0.d0
|
norm = 0.d0
|
||||||
variance = 0.d0
|
variance = huge(1.e0)
|
||||||
|
|
||||||
if (s2_eig) then
|
if (s2_eig) then
|
||||||
call make_s2_eigenfunction
|
call make_s2_eigenfunction
|
||||||
|
@ -90,7 +90,7 @@ subroutine ZMQ_selection(N_in, pt2, variance, norm)
|
|||||||
mem = 8.d0 * N_det * (N_int * 2.d0 * 3.d0 + 3.d0 + 5.d0) / (1024.d0**3)
|
mem = 8.d0 * N_det * (N_int * 2.d0 * 3.d0 + 3.d0 + 5.d0) / (1024.d0**3)
|
||||||
call write_double(6,mem,'Estimated memory/thread (Gb)')
|
call write_double(6,mem,'Estimated memory/thread (Gb)')
|
||||||
if (qp_max_mem > 0) then
|
if (qp_max_mem > 0) then
|
||||||
nproc_target = max(1,int(dble(qp_max_mem)/mem))
|
nproc_target = max(1,int(dble(qp_max_mem)/(0.1d0 + mem)))
|
||||||
nproc_target = min(nproc_target,nproc)
|
nproc_target = min(nproc_target,nproc)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -20,9 +20,15 @@ subroutine save_iterations(e_, pt2_,n_)
|
|||||||
END_DOC
|
END_DOC
|
||||||
integer, intent(in) :: n_
|
integer, intent(in) :: n_
|
||||||
double precision, intent(in) :: e_(N_states), pt2_(N_states)
|
double precision, intent(in) :: e_(N_states), pt2_(N_states)
|
||||||
|
integer :: i
|
||||||
|
|
||||||
if (N_iter > 100) then
|
if (N_iter == 101) then
|
||||||
return
|
do i=2,N_iter-1
|
||||||
|
energy_iterations(1:N_states,N_iter-1) = energy_iterations(1:N_states,N_iter)
|
||||||
|
pt2_iterations(1:N_states,N_iter-1) = pt2_iterations(1:N_states,N_iter)
|
||||||
|
enddo
|
||||||
|
N_iter = N_iter-1
|
||||||
|
TOUCH N_iter
|
||||||
endif
|
endif
|
||||||
|
|
||||||
energy_iterations(1:N_states,N_iter) = e_(1:N_states)
|
energy_iterations(1:N_states,N_iter) = e_(1:N_states)
|
||||||
|
Loading…
Reference in New Issue
Block a user